mirror of
https://github.com/zeldaret/tp
synced 2026-07-07 14:13:27 -04:00
Copy JKernel (#126)
* start JSystem * JKRAram and JUTGamePad * started heap and thread * more JKernel * mostly finished JKernel * delete unused asm * JKRFileFinder * delete unused asm and match findNextFile * format * fix mtx_vec
This commit is contained in:
@@ -4,35 +4,10 @@
|
||||
//
|
||||
|
||||
#include "JSystem/JKernel/JKRFileFinder.h"
|
||||
#include "JSystem/JKernel/JKRArchive.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct JKRFileFinder {
|
||||
/* 802D4910 */ ~JKRFileFinder();
|
||||
};
|
||||
|
||||
struct JKRDvdFinder {
|
||||
/* 802D4770 */ JKRDvdFinder(char const*);
|
||||
/* 802D47F4 */ ~JKRDvdFinder();
|
||||
/* 802D4874 */ void findNextFile();
|
||||
};
|
||||
|
||||
struct JKRArchive {
|
||||
struct SDirEntry {};
|
||||
|
||||
/* 802D5AC0 */ void getDirEntry(JKRArchive::SDirEntry*, u32) const;
|
||||
};
|
||||
|
||||
struct JKRArcFinder {
|
||||
/* 802D4638 */ JKRArcFinder(JKRArchive*, s32, s32);
|
||||
/* 802D46C4 */ void findNextFile();
|
||||
/* 802D4958 */ ~JKRArcFinder();
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
@@ -44,6 +19,8 @@ extern "C" void __dt__12JKRDvdFinderFv();
|
||||
extern "C" void findNextFile__12JKRDvdFinderFv();
|
||||
extern "C" void __dt__13JKRFileFinderFv();
|
||||
extern "C" void __dt__12JKRArcFinderFv();
|
||||
extern "C" void* __vt__12JKRDvdFinder;
|
||||
extern "C" void* __vt__13JKRFileFinder;
|
||||
|
||||
//
|
||||
// External References:
|
||||
@@ -51,70 +28,56 @@ extern "C" void __dt__12JKRArcFinderFv();
|
||||
|
||||
extern "C" void __dl__FPv();
|
||||
extern "C" void getDirEntry__10JKRArchiveCFPQ210JKRArchive9SDirEntryUl();
|
||||
extern "C" void DVDOpenDir();
|
||||
extern "C" void DVDReadDir();
|
||||
extern "C" bool DVDCloseDir();
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803CC208-803CC218 029328 0010+00 2/2 0/0 0/0 .data __vt__12JKRDvdFinder */
|
||||
SECTION_DATA extern void* __vt__12JKRDvdFinder[4] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)__dt__12JKRDvdFinderFv,
|
||||
(void*)findNextFile__12JKRDvdFinderFv,
|
||||
};
|
||||
|
||||
/* 803CC218-803CC228 029338 0010+00 2/2 0/0 0/0 .data __vt__12JKRArcFinder */
|
||||
SECTION_DATA extern void* __vt__12JKRArcFinder[4] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)__dt__12JKRArcFinderFv,
|
||||
(void*)findNextFile__12JKRArcFinderFv,
|
||||
};
|
||||
|
||||
/* 803CC228-803CC238 029348 0010+00 5/5 0/0 0/0 .data __vt__13JKRFileFinder */
|
||||
SECTION_DATA extern void* __vt__13JKRFileFinder[4] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)__dt__13JKRFileFinderFv,
|
||||
(void*)NULL,
|
||||
};
|
||||
|
||||
/* 802D4638-802D46C4 2CEF78 008C+00 0/0 1/1 0/0 .text __ct__12JKRArcFinderFP10JKRArchivell */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm JKRArcFinder::JKRArcFinder(JKRArchive* param_0, s32 param_1, s32 param_2) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JKernel/JKRFileFinder/__ct__12JKRArcFinderFP10JKRArchivell.s"
|
||||
JKRArcFinder::JKRArcFinder(JKRArchive* archive, s32 startIndex, s32 numEntries) : JKRFileFinder() {
|
||||
mArchive = archive;
|
||||
mIsAvailable = numEntries > 0;
|
||||
mStartIndex = startIndex;
|
||||
mEndIndex = startIndex + numEntries - 1;
|
||||
mNextIndex = mStartIndex;
|
||||
findNextFile();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802D46C4-802D4770 2CF004 00AC+00 1/0 0/0 0/0 .text findNextFile__12JKRArcFinderFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JKRArcFinder::findNextFile() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JKernel/JKRFileFinder/findNextFile__12JKRArcFinderFv.s"
|
||||
bool JKRArcFinder::findNextFile(void) {
|
||||
JKRArchive::SDirEntry entry;
|
||||
|
||||
if (mIsAvailable) {
|
||||
mIsAvailable = !(mNextIndex > mEndIndex);
|
||||
if (mIsAvailable) {
|
||||
mIsAvailable = mArchive->getDirEntry(&entry, mNextIndex);
|
||||
mEntryName = entry.name;
|
||||
mEntryFileIndex = mNextIndex;
|
||||
mEntryId = entry.other.id;
|
||||
mEntryTypeFlags = entry.other.flags;
|
||||
mIsFileOrDirectory = (mEntryTypeFlags >> 1) & 1;
|
||||
mNextIndex++;
|
||||
}
|
||||
}
|
||||
return mIsAvailable;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802D4770-802D47F4 2CF0B0 0084+00 0/0 1/1 0/0 .text __ct__12JKRDvdFinderFPCc */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm JKRDvdFinder::JKRDvdFinder(char const* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JKernel/JKRFileFinder/__ct__12JKRDvdFinderFPCc.s"
|
||||
JKRDvdFinder::JKRDvdFinder(const char* directory) : JKRFileFinder() {
|
||||
mDvdIsOpen = DVDOpenDir(directory, &mDvdDirectory);
|
||||
mIsAvailable = mDvdIsOpen;
|
||||
findNextFile();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802D47F4-802D4874 2CF134 0080+00 1/0 0/0 0/0 .text __dt__12JKRDvdFinderFv */
|
||||
// JKRFileFinder::~JKRFileFinder is not inlined
|
||||
#ifdef NONMATCHING
|
||||
JKRDvdFinder::~JKRDvdFinder() {
|
||||
if (mDvdIsOpen) {
|
||||
DVDCloseDir(&mDvdDirectory);
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -123,33 +86,34 @@ asm JKRDvdFinder::~JKRDvdFinder() {
|
||||
#include "asm/JSystem/JKernel/JKRFileFinder/__dt__12JKRDvdFinderFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 802D4874-802D4910 2CF1B4 009C+00 1/0 0/0 0/0 .text findNextFile__12JKRDvdFinderFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JKRDvdFinder::findNextFile() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JKernel/JKRFileFinder/findNextFile__12JKRDvdFinderFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
bool JKRDvdFinder::findNextFile(void) {
|
||||
if (mIsAvailable) {
|
||||
DVDDirectoryEntry directoryEntry;
|
||||
mIsAvailable = DVDReadDir(&mDvdDirectory, &directoryEntry);
|
||||
|
||||
/* 802D4910-802D4958 2CF250 0048+00 1/0 0/0 0/0 .text __dt__13JKRFileFinderFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm JKRFileFinder::~JKRFileFinder() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JKernel/JKRFileFinder/__dt__13JKRFileFinderFv.s"
|
||||
if (mIsAvailable) {
|
||||
mIsFileOrDirectory = directoryEntry.is_directory != 0;
|
||||
mEntryName = directoryEntry.name;
|
||||
mEntryFileIndex = directoryEntry.entry_number;
|
||||
mEntryId = 0;
|
||||
|
||||
// only matches with enum
|
||||
// TODO: placeholder
|
||||
enum EntryTypeFlags {
|
||||
EntryTypeFlags1 = 1,
|
||||
EntryTypeFlags2 = 2,
|
||||
};
|
||||
mEntryTypeFlags = mIsFileOrDirectory ? EntryTypeFlags2 : EntryTypeFlags1;
|
||||
}
|
||||
}
|
||||
|
||||
return mIsAvailable;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
inline JKRFileFinder::~JKRFileFinder() {}
|
||||
|
||||
/* 802D4958-802D49B4 2CF298 005C+00 1/0 0/0 0/0 .text __dt__12JKRArcFinderFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm JKRArcFinder::~JKRArcFinder() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JKernel/JKRFileFinder/__dt__12JKRArcFinderFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
inline JKRArcFinder::~JKRArcFinder() {}
|
||||
|
||||
Reference in New Issue
Block a user