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:
lepelog
2021-05-03 02:03:24 +02:00
committed by GitHub
parent 3b7364d481
commit 8fd9f2ab5d
360 changed files with 6646 additions and 12699 deletions
+63 -99
View File
@@ -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() {}