diff --git a/config/GMPE01_00/config.yml b/config/GMPE01_00/config.yml index 4d4d8936..63b0b3c4 100644 --- a/config/GMPE01_00/config.yml +++ b/config/GMPE01_00/config.yml @@ -547,3 +547,21 @@ extract: - symbol: Ascii8x8_1bpp binary: Ascii8x8_1bpp.bin header: Ascii8x8_1bpp.inc +- symbol: coveropen_en + binary: coveropen_en.bin + header: coveropen_en.inc +- symbol: fatalerror_en + binary: fatalerror_en.bin + header: fatalerror_en.inc +- symbol: loading_en + binary: loading_en.bin + header: loading_en.inc +- symbol: nodisc_en + binary: nodisc_en.bin + header: nodisc_en.inc +- symbol: retryerror_en + binary: retryerror_en.bin + header: retryerror_en.inc +- symbol: wrongdisc_en + binary: wrongdisc_en.bin + header: wrongdisc_en.inc diff --git a/config/GMPE01_00/splits.txt b/config/GMPE01_00/splits.txt index 3c8869ec..102e7c88 100644 --- a/config/GMPE01_00/splits.txt +++ b/config/GMPE01_00/splits.txt @@ -295,11 +295,27 @@ game/objsub.c: .text start:0x80057E24 end:0x80058010 .data start:0x80131350 end:0x80132150 .bss start:0x801981E0 end:0x80198410 + .sbss start:0x801D3E80 end:0x801D3EA8 game/flag.c: .text start:0x80058010 end:0x80058228 .bss start:0x80198410 end:0x80198420 +game/saveload.c: + .text start:0x80058228 end:0x8005A6F8 + .data start:0x80132150 end:0x801321F8 + .bss start:0x80198420 end:0x8019C440 + .sdata start:0x801D3640 end:0x801D3658 + .sbss start:0x801D3EA8 end:0x801D3EB8 + .sdata2 start:0x801D5138 end:0x801D5148 + +game/sreset.c: + .text start:0x8005A6F8 end:0x8005B150 + .data start:0x801321F8 end:0x80139798 + .bss start:0x8019C440 end:0x8019D7E0 + .sdata start:0x801D3658 end:0x801D3670 + .sbss start:0x801D3EB8 end:0x801D3ED0 + dolphin/PPCArch.c: .text start:0x800B42F4 end:0x800B439C @@ -441,3 +457,12 @@ Runtime.PPCEABI.H/__init_cpp_exceptions.cpp: .ctors start:0x8011DCC0 end:0x8011DCC4 .dtors start:0x8011DCE0 end:0x8011DCE8 .sdata start:0x801D39B0 end:0x801D39B8 + +Runtime.PPCEABI.H/Gecko_ExceptionPPC.cp: + extab start:0x80005670 end:0x800056E4 + extabindex start:0x80005748 end:0x8000579C + .text start:0x800E2B24 end:0x800E3F5C + .rodata start:0x8011E4D0 end:0x8011E5A0 + .data start:0x8013E218 end:0x8013E300 + .bss start:0x801A72D0 end:0x801A72E0 + .sdata start:0x801D39B8 end:0x801D39C8 diff --git a/config/GMPE01_00/symbols.txt b/config/GMPE01_00/symbols.txt index 7224a5d9..7b6e4499 100644 --- a/config/GMPE01_00/symbols.txt +++ b/config/GMPE01_00/symbols.txt @@ -959,46 +959,46 @@ _CheckFlag = .text:0x80058010; // type:function size:0xA0 _SetFlag = .text:0x800580B0; // type:function size:0xA4 _ClearFlag = .text:0x80058154; // type:function size:0xA4 _InitFlag = .text:0x800581F8; // type:function size:0x30 -fn_80058228 = .text:0x80058228; // type:function size:0x140 -fn_80058368 = .text:0x80058368; // type:function size:0x2B0 -fn_80058618 = .text:0x80058618; // type:function size:0x11C -fn_80058734 = .text:0x80058734; // type:function size:0x84 -fn_800587B8 = .text:0x800587B8; // type:function size:0x4C -fn_80058804 = .text:0x80058804; // type:function size:0x8 -fn_8005880C = .text:0x8005880C; // type:function size:0xC -fn_80058818 = .text:0x80058818; // type:function size:0x40 -fn_80058858 = .text:0x80058858; // type:function size:0x8 -fn_80058860 = .text:0x80058860; // type:function size:0x154 -fn_800589B4 = .text:0x800589B4; // type:function size:0x218 -fn_80058BCC = .text:0x80058BCC; // type:function size:0x254 -fn_80058E20 = .text:0x80058E20; // type:function size:0x8C -fn_80058EAC = .text:0x80058EAC; // type:function size:0x8C -fn_80058F38 = .text:0x80058F38; // type:function size:0x380 -fn_800592B8 = .text:0x800592B8; // type:function size:0xDC -fn_80059394 = .text:0x80059394; // type:function size:0x48 -fn_800593DC = .text:0x800593DC; // type:function size:0x110 -fn_800594EC = .text:0x800594EC; // type:function size:0x38 -fn_80059524 = .text:0x80059524; // type:function size:0x1A0 -fn_800596C4 = .text:0x800596C4; // type:function size:0x184 -fn_80059848 = .text:0x80059848; // type:function size:0x28 -fn_80059870 = .text:0x80059870; // type:function size:0xA0 -fn_80059910 = .text:0x80059910; // type:function size:0x60 -fn_80059970 = .text:0x80059970; // type:function size:0x54 -fn_800599C4 = .text:0x800599C4; // type:function size:0x90 -fn_80059A54 = .text:0x80059A54; // type:function size:0x1D4 -fn_80059C28 = .text:0x80059C28; // type:function size:0x12C -fn_80059D54 = .text:0x80059D54; // type:function size:0x5A8 -fn_8005A2FC = .text:0x8005A2FC; // type:function size:0x3FC -fn_8005A6F8 = .text:0x8005A6F8; // type:function size:0x50 -fn_8005A748 = .text:0x8005A748; // type:function size:0x28 +SLFileOpen = .text:0x80058228; // type:function size:0x140 +SLFileCreate = .text:0x80058368; // type:function size:0x2B0 +SLFileWrite = .text:0x80058618; // type:function size:0x11C +SLFileRead = .text:0x80058734; // type:function size:0x84 +SLFileClose = .text:0x800587B8; // type:function size:0x4C +SLCurSlotNoSet = .text:0x80058804; // type:function size:0x8 +SLCurBoxNoSet = .text:0x8005880C; // type:function size:0xC +SLSaveFlagSet = .text:0x80058818; // type:function size:0x40 +SLSaveFlagGet = .text:0x80058858; // type:function size:0x8 +SLSaveDataMake = .text:0x80058860; // type:function size:0x154 +SLSaveDataInfoSet = .text:0x800589B4; // type:function size:0x218 +SLCommonSet = .text:0x80058BCC; // type:function size:0x254 +SLSaveBoard = .text:0x80058E20; // type:function size:0x8C +SLSaveBoardBackup = .text:0x80058EAC; // type:function size:0x8C +SLSave = .text:0x80058F38; // type:function size:0x380 +SLCreateSaveWin = .text:0x800592B8; // type:function size:0xDC scope:local +SLKillSaveWin = .text:0x80059394; // type:function size:0x48 scope:local +SLLoad = .text:0x800593DC; // type:function size:0x110 +SLLoadGameStat = .text:0x800594EC; // type:function size:0x38 +SLLoadBoard = .text:0x80059524; // type:function size:0x1A0 +SLLoadBoardBackup = .text:0x800596C4; // type:function size:0x184 +SLSerialNoGet = .text:0x80059848; // type:function size:0x28 +SLSerialNoCheck = .text:0x80059870; // type:function size:0xA0 +SLCheckSumCheck = .text:0x80059910; // type:function size:0x60 +SLCheckSumGet = .text:0x80059970; // type:function size:0x54 +SLCheckSumSet = .text:0x800599C4; // type:function size:0x90 +SLStatSet = .text:0x80059A54; // type:function size:0x1D4 +SLCardMount = .text:0x80059C28; // type:function size:0x12C +SLFormat = .text:0x80059D54; // type:function size:0x5A8 +SLMessOut = .text:0x8005A2FC; // type:function size:0x3FC +HuSoftResetButtonCheck = .text:0x8005A6F8; // type:function size:0x50 +HuDvdErrDispIntFunc = .text:0x8005A748; // type:function size:0x28 HuDvdErrDispInit = .text:0x8005A770; // type:function size:0x1F4 -fn_8005A964 = .text:0x8005A964; // type:function size:0xD8 -fn_8005AA3C = .text:0x8005AA3C; // type:function size:0x128 -fn_8005AB64 = .text:0x8005AB64; // type:function size:0x2D0 -fn_8005AE34 = .text:0x8005AE34; // type:function size:0xDC -fn_8005AF10 = .text:0x8005AF10; // type:function size:0xFC -fn_8005B00C = .text:0x8005B00C; // type:function size:0xCC -fn_8005B0D8 = .text:0x8005B0D8; // type:function size:0x78 +ToeThreadFunc = .text:0x8005A964; // type:function size:0xD8 scope:local +ToeDispCheck = .text:0x8005AA3C; // type:function size:0x128 scope:local +_HuDvdErrDispXFB = .text:0x8005AB64; // type:function size:0x2D0 scope:local +HuRestartSystem = .text:0x8005AE34; // type:function size:0xDC +HuSoftResetCheck = .text:0x8005AF10; // type:function size:0xFC scope:local +HuSoftResetCountCheck = .text:0x8005B00C; // type:function size:0xCC scope:local +HuSoftResetPostProc = .text:0x8005B0D8; // type:function size:0x78 scope:local fn_8005B150 = .text:0x8005B150; // type:function size:0x2E0 fn_8005B430 = .text:0x8005B430; // type:function size:0x64 fn_8005B494 = .text:0x8005B494; // type:function size:0x9C @@ -5126,15 +5126,15 @@ lbl_8013219C = .data:0x8013219C; // type:object size:0xC data:string lbl_801321A8 = .data:0x801321A8; // type:object size:0xC data:string lbl_801321B4 = .data:0x801321B4; // type:object size:0xC jumptable_801321C0 = .data:0x801321C0; // type:object size:0x34 scope:local -lbl_801321F8 = .data:0x801321F8; // type:object size:0x10 -lbl_80132208 = .data:0x80132208; // type:object size:0x1384 noreloc -lbl_8013358C = .data:0x8013358C; // type:object size:0x1384 noreloc -lbl_80134910 = .data:0x80134910; // type:object size:0x1384 noreloc -lbl_80135C94 = .data:0x80135C94; // type:object size:0x1384 noreloc -lbl_80137018 = .data:0x80137018; // type:object size:0x1384 noreloc -lbl_8013839C = .data:0x8013839C; // type:object size:0x1384 noreloc +SR_PreRstChk = .data:0x801321F8; // type:object size:0x10 +coveropen_en = .data:0x80132208; // type:object size:0x1384 noreloc +fatalerror_en = .data:0x8013358C; // type:object size:0x1384 noreloc +loading_en = .data:0x80134910; // type:object size:0x1384 noreloc +nodisc_en = .data:0x80135C94; // type:object size:0x1384 noreloc +retryerror_en = .data:0x80137018; // type:object size:0x1384 noreloc +wrongdisc_en = .data:0x8013839C; // type:object size:0x1384 noreloc jumptable_80139720 = .data:0x80139720; // type:object size:0x34 scope:local -lbl_80139754 = .data:0x80139754; // type:object size:0x18 +bmpMes$493 = .data:0x80139754; // type:object size:0x18 scope:local lbl_8013976C = .data:0x8013976C; // type:object size:0x13 data:string lbl_8013977F = .data:0x8013977F; // type:object size:0x19 lbl_80139798 = .data:0x80139798; // type:object size:0x24 @@ -5476,9 +5476,13 @@ GWGameStatBackup = .bss:0x801981E0; // type:object size:0x118 lbl_801982F8 = .bss:0x801982F8; // type:object size:0x100 lbl_801983F8 = .bss:0x801983F8; // type:object size:0x18 _Sys_Flag = .bss:0x80198410; // type:object size:0x10 -lbl_80198420 = .bss:0x80198420; // type:object size:0x20 -lbl_80198440 = .bss:0x80198440; // type:object size:0x4000 -lbl_8019C440 = .bss:0x8019C440; // type:object size:0x13A0 +curFileInfo = .bss:0x80198420; // type:object size:0x20 +saveBuf = .bss:0x80198440; // type:object size:0x4000 align:32 +ToeMessageQueue = .bss:0x8019C440; // type:object size:0x20 scope:local +padStat$377 = .bss:0x8019C460; // type:object size:0x30 scope:local +ToeMessageArray = .bss:0x8019C490; // type:object size:0x40 scope:local +ToeThread = .bss:0x8019C4D0; // type:object size:0x310 scope:local align:8 +ToeThreadStack = .bss:0x8019C7E0; // type:object size:0x1000 scope:local lbl_8019D7E0 = .bss:0x8019D7E0; // type:object size:0xC4 data:byte lbl_8019D8A4 = .bss:0x8019D8A4; // type:object size:0xC4 lbl_8019D968 = .bss:0x8019D968; // type:object size:0x10 @@ -5739,14 +5743,14 @@ lbl_801D3623 = .sdata:0x801D3623; // type:object size:0x8 data:string lbl_801D362B = .sdata:0x801D362B; // type:object size:0x6 data:string lbl_801D3631 = .sdata:0x801D3631; // type:object size:0x7 lbl_801D3638 = .sdata:0x801D3638; // type:object size:0x8 -lbl_801D3640 = .sdata:0x801D3640; // type:object size:0x4 data:4byte +SaveEnableF = .sdata:0x801D3640; // type:object size:0x4 data:4byte lbl_801D3644 = .sdata:0x801D3644; // type:object size:0x2 data:string lbl_801D3646 = .sdata:0x801D3646; // type:object size:0x2 data:string -lbl_801D3648 = .sdata:0x801D3648; // type:object size:0x8 -lbl_801D3650 = .sdata:0x801D3650; // type:object size:0x8 data:4byte -lbl_801D3658 = .sdata:0x801D3658; // type:object size:0x8 data:2byte -lbl_801D3660 = .sdata:0x801D3660; // type:object size:0x1 data:byte -lbl_801D3664 = .sdata:0x801D3664; // type:object size:0xC data:4byte +SlotNameTbl = .sdata:0x801D3648; // type:object size:0x8 scope:local +saveMessWin = .sdata:0x801D3650; // type:object size:0x8 scope:local data:4byte +SR_PushTime = .sdata:0x801D3658; // type:object size:0x8 scope:local data:2byte +SR_ResetPad = .sdata:0x801D3660; // type:object size:0x1 scope:local data:byte +Xfb = .sdata:0x801D3664; // type:object size:0x8 scope:local data:4byte lbl_801D3670 = .sdata:0x801D3670; // type:object size:0x4 data:4byte lbl_801D3674 = .sdata:0x801D3674; // type:object size:0x1 data:byte lbl_801D3675 = .sdata:0x801D3675; // type:object size:0x1 data:byte @@ -5911,8 +5915,8 @@ lbl_801D39A0 = .sdata:0x801D39A0; // type:object size:0x8 lbl_801D39A8 = .sdata:0x801D39A8; // type:object size:0x4 data:4byte lbl_801D39AC = .sdata:0x801D39AC; // type:object size:0x4 data:4byte fragmentID = .sdata:0x801D39B0; // type:object size:0x4 scope:local data:4byte -lbl_801D39B8 = .sdata:0x801D39B8; // type:object size:0x8 -lbl_801D39C0 = .sdata:0x801D39C0; // type:object size:0x8 +__RTTI__Q23std9exception = .sdata:0x801D39B8; // type:object size:0x8 scope:local +__RTTI__Q23std13bad_exception = .sdata:0x801D39C0; // type:object size:0x8 scope:local @wstringBase0 = .sdata:0x801D39C8; // type:object size:0x2 scope:local lbl_801D39D0 = .sdata:0x801D39D0; // type:object size:0x4 data:float lbl_801D39D4 = .sdata:0x801D39D4; // type:object size:0x4 data:float @@ -6219,13 +6223,13 @@ lbl_801D3EAA = .sbss:0x801D3EAA; // type:object size:0x1 data:byte lbl_801D3EAC = .sbss:0x801D3EAC; // type:object size:0x4 lbl_801D3EB0 = .sbss:0x801D3EB0; // type:object size:0x4 data:4byte lbl_801D3EB4 = .sbss:0x801D3EB4; // type:object size:0x4 data:4byte -lbl_801D3EB8 = .sbss:0x801D3EB8; // type:object size:0x4 data:4byte -lbl_801D3EBC = .sbss:0x801D3EBC; // type:object size:0x4 data:4byte -lbl_801D3EC0 = .sbss:0x801D3EC0; // type:object size:0x4 data:4byte -lbl_801D3EC4 = .sbss:0x801D3EC4; // type:object size:0x4 data:4byte -lbl_801D3EC8 = .sbss:0x801D3EC8; // type:object size:0x4 data:4byte -lbl_801D3ECC = .sbss:0x801D3ECC; // type:object size:0x2 data:2byte -lbl_801D3ECE = .sbss:0x801D3ECE; // type:object size:0x2 data:2byte +H_ResetReady = .sbss:0x801D3EB8; // type:object size:0x4 scope:local data:4byte +SR_RestartChk = .sbss:0x801D3EBC; // type:object size:0x4 scope:local data:4byte +SR_ExecReset = .sbss:0x801D3EC0; // type:object size:0x4 data:4byte +trychkBusyWait = .sbss:0x801D3EC4; // type:object size:0x4 scope:local data:4byte +XfbProg = .sbss:0x801D3EC8; // type:object size:0x4 scope:local data:4byte +XfbH = .sbss:0x801D3ECC; // type:object size:0x2 scope:local data:2byte +XfbW = .sbss:0x801D3ECE; // type:object size:0x2 scope:local data:2byte lbl_801D3ED0 = .sbss:0x801D3ED0; // type:object size:0x4 data:4byte lbl_801D3ED4 = .sbss:0x801D3ED4; // type:object size:0x4 data:4byte lbl_801D3ED8 = .sbss:0x801D3ED8; // type:object size:0x4 data:4byte diff --git a/configure.py b/configure.py index 039fee02..e8ae20ef 100755 --- a/configure.py +++ b/configure.py @@ -278,6 +278,8 @@ config.libs = [ Object(NonMatching, "game/thpmain.c"), Object(NonMatching, "game/objsub.c"), Object(NonMatching, "game/flag.c"), + Object(NonMatching, "game/saveload.c"), + Object(NonMatching, "game/sreset.c"), ], }, DolphinLib( @@ -340,6 +342,7 @@ config.libs = [ "objects": [ Object(Matching, "Runtime.PPCEABI.H/global_destructor_chain.c"), Object(Matching, "Runtime.PPCEABI.H/__init_cpp_exceptions.cpp"), + Object(Matching, "Runtime.PPCEABI.H/Gecko_ExceptionPPC.cp"), ], }, { diff --git a/include/dolphin/os/OSThread.h b/include/dolphin/os/OSThread.h index 7464e685..91420e5e 100644 --- a/include/dolphin/os/OSThread.h +++ b/include/dolphin/os/OSThread.h @@ -7,8 +7,6 @@ extern "C" { #endif -#define OS_THREAD_SPECIFIC_MAX 2 - typedef struct OSThread OSThread; typedef struct OSThreadQueue OSThreadQueue; typedef struct OSThreadLink OSThreadLink; @@ -58,8 +56,6 @@ struct OSThread { OSThreadLink linkActive; u8* stackBase; u32* stackEnd; - s32 error; - void* specific[OS_THREAD_SPECIFIC_MAX]; }; enum OS_THREAD_STATE { @@ -98,9 +94,6 @@ OSPriority OSGetThreadPriority(OSThread* thread); void OSSleepThread(OSThreadQueue* queue); void OSWakeupThread(OSThreadQueue* queue); -void* OSGetThreadSpecific(s32 index); -void OSSetThreadSpecific(s32 index, void* ptr); - OSThread* OSSetIdleFunction(OSIdleFunction idleFunction, void* param, void* stack, u32 stackSize); OSThread* OSGetIdleFunction(void); void OSClearStack(u8 val);