summaryrefslogtreecommitdiff
path: root/libs/JSystem/JKernel/JKRDvdFile.cpp
diff options
context:
space:
mode:
authorJonathan Wase <jonathan@familjenwase.se>2021-01-04 03:26:25 +0100
committerGitHub <noreply@github.com>2021-01-03 21:26:25 -0500
commit5217a4189e0697995e9de0130fa6bfda0146f2f5 (patch)
tree41b073c30c4eb3525080062bc821e757e620ab8e /libs/JSystem/JKernel/JKRDvdFile.cpp
parent409257b111085cf9503e6bcfd0358455271bc901 (diff)
JKernel cleanup and DVD types (#59)
* JKRDecomp OK * JKRFile and JKRDvdFile cleanup * more DVD stuff and cleanup JKRDvdFile more * formatting * JKRHeap cleanup * formatting * JKRDisposer cleanup * JKRAramBlock and JKRAramHeap cleanup * fix merge error * fixed comments * forgot to save file... * fix DVDCBcallback Co-authored-by: Julgodis <>
Diffstat (limited to 'libs/JSystem/JKernel/JKRDvdFile.cpp')
-rw-r--r--libs/JSystem/JKernel/JKRDvdFile.cpp121
1 files changed, 52 insertions, 69 deletions
diff --git a/libs/JSystem/JKernel/JKRDvdFile.cpp b/libs/JSystem/JKernel/JKRDvdFile.cpp
index 18489a6f89..ce571abc64 100644
--- a/libs/JSystem/JKernel/JKRDvdFile.cpp
+++ b/libs/JSystem/JKernel/JKRDvdFile.cpp
@@ -2,14 +2,15 @@
#include "global.h"
JKRDvdFile::JKRDvdFile() : JKRFile(), mDvdLink(this) {
- this->initiate();
+ initiate();
}
+// end of fuctions is weird. instructions which should have been optimized out.
#ifdef NONMATCHING
-JKRDvdFile::JKRDvdFile(char const* param_1) : JKRFile(), mDvdLink(this) {
- this->initiate();
- bool result = this->open(param_1);
- this->mIsAvailable = result;
+JKRDvdFile::JKRDvdFile(const char* name) : JKRFile(), mDvdLink(this) {
+ initiate();
+ bool result = open(name);
+ mIsAvailable = result;
}
#else
asm JKRDvdFile::JKRDvdFile(char const*) {
@@ -20,9 +21,9 @@ asm JKRDvdFile::JKRDvdFile(char const*) {
#ifdef NONMATHCING
JKRDvdFile::JKRDvdFile(long param_1) : JKRFile(), mDvdLink(this) {
- this->initiate();
- bool result = this->open(param_1);
- this->mIsAvailable = result;
+ initiate();
+ bool result = open(param_1);
+ mIsAvailable = result;
}
#else
asm JKRDvdFile::JKRDvdFile(long) {
@@ -31,60 +32,49 @@ asm JKRDvdFile::JKRDvdFile(long) {
}
#endif
-#ifndef NONMATCHING
JKRDvdFile::~JKRDvdFile() {
- this->close();
+ close();
}
-#else
-asm JKRDvdFile::~JKRDvdFile() {
- nofralloc
-#include "JSystem/JKernel/JKRDvdFile/asm/func_802D9748.s"
-}
-#endif
-// #include "JSystem/JKernel/JKRDvdFile/asm/func_802D97E4.s"
void JKRDvdFile::initiate(void) {
- this->mDvdFile = this;
- OSInitMutex(&this->mMutex1);
- OSInitMutex(&this->mMutex2);
- OSInitMessageQueue(&this->mQueue2, this->mMessages2, 1);
- OSInitMessageQueue(&this->mQueue1, this->mMessages1, 1);
- this->mOSThread = NULL;
- this->field_0x50 = 0;
- this->field_0x58 = 0;
-}
-
-// #include "JSystem/JKernel/JKRDvdFile/asm/func_802D9850.s"
-bool JKRDvdFile::open(char const* param_1) {
- if (!this->mIsAvailable) {
- this->mIsAvailable = DVDOpen(param_1, &this->file_info);
- if (this->mIsAvailable) {
- lbl_8043436C.append(&this->mDvdLink);
- this->getStatus();
+ mDvdFile = this;
+ OSInitMutex(&mMutex1);
+ OSInitMutex(&mMutex2);
+ OSInitMessageQueue(&mMessageQueue2, &mMessage2, 1);
+ OSInitMessageQueue(&mMessageQueue1, &mMessage1, 1);
+ mOSThread = NULL;
+ field_0x50 = 0;
+ field_0x58 = 0;
+}
+
+bool JKRDvdFile::open(const char* param_1) {
+ if (!mIsAvailable) {
+ mIsAvailable = DVDOpen(param_1, &mFileInfo);
+ if (mIsAvailable) {
+ lbl_8043436C.append(&mDvdLink);
+ getStatus();
}
}
- return this->mIsAvailable;
+ return mIsAvailable;
}
-// #include "JSystem/JKernel/JKRDvdFile/asm/func_802D98C4.s"
bool JKRDvdFile::open(long param_1) {
- if (!this->mIsAvailable) {
- this->mIsAvailable = DVDFastOpen(param_1, &this->file_info);
- if (this->mIsAvailable) {
- lbl_8043436C.append(&this->mDvdLink);
- this->getStatus();
+ if (!mIsAvailable) {
+ mIsAvailable = DVDFastOpen(param_1, &mFileInfo);
+ if (mIsAvailable) {
+ lbl_8043436C.append(&mDvdLink);
+ getStatus();
}
}
- return this->mIsAvailable;
+ return mIsAvailable;
}
-// #include "JSystem/JKernel/JKRDvdFile/asm/func_802D9938.s"
void JKRDvdFile::close() {
- if (this->mIsAvailable) {
- s32 result = DVDClose(&this->file_info);
+ if (mIsAvailable) {
+ s32 result = DVDClose(&mFileInfo);
if (result != 0) {
- this->mIsAvailable = false;
- lbl_8043436C.remove(&this->mDvdLink);
+ mIsAvailable = false;
+ lbl_8043436C.remove(&mDvdLink);
} else {
const char* filename = lbl_8039D260; // "JKRDvdFile.cpp"
const char* format = lbl_8039D260 + 0x0F; // "%s"
@@ -94,56 +84,49 @@ void JKRDvdFile::close() {
}
}
-#define JUT_ASSERT(CONDITION)
-
-//#include "JSystem/JKernel/JKRDvdFile/asm/func_802D99B4.s"
s32 JKRDvdFile::readData(void* param_1, long length, long param_3) {
JUT_ASSERT((length & 0x1f) == 0);
- OSLockMutex(&this->mMutex1);
- if (this->mOSThread) {
- OSUnlockMutex(&this->mMutex1);
+ OSLockMutex(&mMutex1);
+ if (mOSThread) {
+ OSUnlockMutex(&mMutex1);
return -1;
}
- this->mOSThread = OSGetCurrentThread();
+ mOSThread = OSGetCurrentThread();
s32 result = -1;
s32 readAsyncResult =
- DVDReadAsyncPrio(&this->file_info, param_1, length, param_3, JKRDvdFile::doneProcess, 2);
+ DVDReadAsyncPrio(&mFileInfo, param_1, length, param_3, JKRDvdFile::doneProcess, 2);
if (readAsyncResult) {
- result = this->sync();
+ result = sync();
}
- this->mOSThread = NULL;
- OSUnlockMutex(&this->mMutex1);
+ mOSThread = NULL;
+ OSUnlockMutex(&mMutex1);
return result;
}
-// #include "JSystem/JKernel/JKRDvdFile/asm/func_802D9A68.s"
-s32 JKRDvdFile::writeData(void const*, long, long) {
+s32 JKRDvdFile::writeData(const void*, long, long) {
return -1;
}
-// #include "JSystem/JKernel/JKRDvdFile/asm/func_802D9A70.s"
s32 JKRDvdFile::sync(void) {
OSMessage message;
- OSLockMutex(&this->mMutex1);
- OSReceiveMessage(&this->mQueue2, &message, 1);
- this->mOSThread = NULL;
- OSUnlockMutex(&this->mMutex1);
+ OSLockMutex(&mMutex1);
+ OSReceiveMessage(&mMessageQueue2, &message, 1);
+ mOSThread = NULL;
+ OSUnlockMutex(&mMutex1);
return (int)message;
}
-// #include "JSystem/JKernel/JKRDvdFile/asm/func_802D9AC4.s"
void JKRDvdFile::doneProcess(long id, DVDFileInfo* fileInfo) {
// fileInfo->field_0x3c looks like some kind of user pointer?
JKRDvdFile* dvdFile = *(JKRDvdFile**)((u8*)fileInfo + 0x3c);
- OSSendMessage(&dvdFile->mQueue2, (OSMessage)id, 0);
+ OSSendMessage(&dvdFile->mMessageQueue2, (OSMessage)id, OS_MESSAGE_NON_BLOCKING);
}
-// #include "JSystem/JKernel/JKRDvdFile/asm/func_802D9AF8.s"
s32 JKRDvdFile::getFileSize(void) const {
- return this->file_info.length;
+ return mFileInfo.length;
}