mirror of
https://github.com/doldecomp/sms.git
synced 2026-11-07 09:06:00 -10:00
ROM matching improvements (#384)
* fix: match JDRResolution * fix: match MSL __exception * fix: match MSL dolphin_trk * fix: JDRResolution formatting * fix: match OS __start * fix: match OS/OS.c * fix: match OS/OSThread.c
This commit is contained in:
1 parent
7e390c4687
commit
f8a1365914
10 files changed
+168
-76
No files matched your search
+7
-6
@@ -174,6 +174,7 @@ config.asflags = [
|
||||
f"-I {msl_include}/MSL_C/MSL_Common",
|
||||
f"-I {msl_include}/MSL_C++/MSL_Common",
|
||||
f"-I build/{config.version}/include",
|
||||
f"--defsym VERSION_{config.version}=1",
|
||||
f"--defsym BUILD_VERSION={version_num}",
|
||||
]
|
||||
config.ldflags = [
|
||||
@@ -429,7 +430,7 @@ config.libs = [
|
||||
Object(Matching, "JSystem/JDrama/JDRNameRefGen.cpp"),
|
||||
Object(Matching, "JSystem/JDrama/JDRPlacement.cpp"),
|
||||
Object(MatchingFor("GMSJ01", "GMSP01", "GMSE01", "GMSP01_NX"), "JSystem/JDrama/JDRRenderMode.cpp"),
|
||||
Object(MatchingFor("GMSJ01", "GMSP01", "GMSE01", "GMSP01_NX"), "JSystem/JDrama/JDRResolution.cpp"),
|
||||
Object(Matching, "JSystem/JDrama/JDRResolution.cpp"),
|
||||
Object(Matching, "JSystem/JDrama/JDRScreen.cpp"),
|
||||
Object(NonMatching, "JSystem/JDrama/JDRSmJ3DAct.cpp"),
|
||||
Object(Matching, "JSystem/JDrama/JDRSmJ3DScn.cpp"),
|
||||
@@ -659,8 +660,8 @@ config.libs = [
|
||||
Object(Matching, "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Processor/ppc/Generic/flush_cache.c"),
|
||||
Object(Matching, "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Portable/mem_TRK.c"),
|
||||
Object(Matching, "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Processor/ppc/Generic/targimpl.c"),
|
||||
Object(MatchingFor("GMSJ01"), "TRK_MINNOW_DOLPHIN/__exception.s"),
|
||||
Object(MatchingFor("GMSJ01", "GMSP01"), "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Os/dolphin/dolphin_trk.c"),
|
||||
Object(Matching, "TRK_MINNOW_DOLPHIN/__exception.s"),
|
||||
Object(Matching, "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Os/dolphin/dolphin_trk.c"),
|
||||
Object(Matching, "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Processor/ppc/Generic/mpc_7xx_603e.c"),
|
||||
Object(Matching, "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Portable/main_TRK.c"),
|
||||
Object(Matching, "TRK_MINNOW_DOLPHIN/debugger/embedded/MetroTRK/Os/dolphin/dolphin_trk_glue.c"),
|
||||
@@ -674,7 +675,7 @@ config.libs = [
|
||||
Object(Matching, "dolphin/db/db.c"),
|
||||
]),
|
||||
DolphinLib("os", [
|
||||
Object(MatchingFor("GMSJ01", "GMSP01"), "dolphin/os/OS.c"),
|
||||
Object(Matching, "dolphin/os/OS.c"),
|
||||
Object(Matching, "dolphin/os/OSAlarm.c"),
|
||||
Object(Matching, "dolphin/os/OSAlloc.c"),
|
||||
Object(Matching, "dolphin/os/OSArena.c"),
|
||||
@@ -694,9 +695,9 @@ config.libs = [
|
||||
Object(Matching, "dolphin/os/OSRtc.c"),
|
||||
Object(Matching, "dolphin/os/OSStopwatch.c"),
|
||||
Object(Matching, "dolphin/os/OSSync.c"),
|
||||
Object(MatchingFor("GMSJ01", "GMSP01"), "dolphin/os/OSThread.c"),
|
||||
Object(Matching, "dolphin/os/OSThread.c"),
|
||||
Object(Matching, "dolphin/os/OSTime.c"),
|
||||
Object(MatchingFor("GMSJ01", "GMSP01"), "dolphin/os/__start.c"),
|
||||
Object(Matching, "dolphin/os/__start.c"),
|
||||
Object(Matching, "dolphin/os/__ppc_eabi_init.cpp"),
|
||||
]),
|
||||
DolphinLibUnpatched("mtx", [
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
|
||||
namespace JDrama {
|
||||
|
||||
#if defined(VERSION_GMSP01) || defined(VERSION_GMSP01_NX)
|
||||
#if defined(VERSION_GMSJ01_01) || defined(VERSION_GMSP01) \
|
||||
|| defined(VERSION_GMSP01_NX)
|
||||
u16 GetVIWidthMax(u32 tvFormat);
|
||||
u16 GetVIHeightMax(u32 tvFormat);
|
||||
#else
|
||||
|
||||
@@ -74,7 +74,8 @@ void JDrama::CalcRenderModeXFBHeight(GXRenderModeObj* rmo, u16 param_2)
|
||||
|
||||
void JDrama::CalcRenderModeVIXOrigin(GXRenderModeObj* rmo)
|
||||
{
|
||||
#if defined(VERSION_GMSP01) || defined(VERSION_GMSP01_NX)
|
||||
#if defined(VERSION_GMSJ01_01) || defined(VERSION_GMSP01) \
|
||||
|| defined(VERSION_GMSP01_NX)
|
||||
rmo->viXOrigin = (GetVIWidthMax(rmo->viTVmode >> 2) - rmo->viWidth) / 2;
|
||||
#else
|
||||
rmo->viXOrigin = (GetVIWidthMax() - rmo->viWidth) / 2;
|
||||
@@ -83,7 +84,8 @@ void JDrama::CalcRenderModeVIXOrigin(GXRenderModeObj* rmo)
|
||||
|
||||
void JDrama::CalcRenderModeVIYOrigin(GXRenderModeObj* rmo)
|
||||
{
|
||||
#if defined(VERSION_GMSP01) || defined(VERSION_GMSP01_NX)
|
||||
#if defined(VERSION_GMSJ01_01) || defined(VERSION_GMSP01) \
|
||||
|| defined(VERSION_GMSP01_NX)
|
||||
rmo->viYOrigin = (GetVIHeightMax(rmo->viTVmode >> 2) - rmo->viHeight) / 2;
|
||||
#else
|
||||
rmo->viYOrigin = (GetVIHeightMax() - rmo->viHeight) / 2;
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
#include <JSystem/JDrama/JDRResolution.hpp>
|
||||
#include <dolphin/vi.h>
|
||||
|
||||
#if defined(VERSION_GMSP01) || defined(VERSION_GMSP01_NX)
|
||||
#if defined(VERSION_GMSJ01_01) || defined(VERSION_GMSP01) \
|
||||
|| defined(VERSION_GMSP01_NX)
|
||||
u16 JDrama::GetVIWidthMax(u32 tvFormat)
|
||||
#else
|
||||
u16 JDrama::GetVIWidthMax()
|
||||
#endif
|
||||
{
|
||||
#if !(defined(VERSION_GMSP01) || defined(VERSION_GMSP01_NX))
|
||||
#if !(defined(VERSION_GMSJ01_01) || defined(VERSION_GMSP01) \
|
||||
|| defined(VERSION_GMSP01_NX))
|
||||
const u32 tvFormat = VIGetTvFormat();
|
||||
#endif
|
||||
switch (tvFormat) {
|
||||
@@ -23,13 +25,15 @@ u16 JDrama::GetVIWidthMax()
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(VERSION_GMSP01) || defined(VERSION_GMSP01_NX)
|
||||
#if defined(VERSION_GMSJ01_01) || defined(VERSION_GMSP01) \
|
||||
|| defined(VERSION_GMSP01_NX)
|
||||
u16 JDrama::GetVIHeightMax(u32 tvFormat)
|
||||
#else
|
||||
u16 JDrama::GetVIHeightMax()
|
||||
#endif
|
||||
{
|
||||
#if !(defined(VERSION_GMSP01) || defined(VERSION_GMSP01_NX))
|
||||
#if !(defined(VERSION_GMSJ01_01) || defined(VERSION_GMSP01) \
|
||||
|| defined(VERSION_GMSP01_NX))
|
||||
const u32 tvFormat = VIGetTvFormat();
|
||||
#endif
|
||||
switch (tvFormat) {
|
||||
|
||||
@@ -5,6 +5,31 @@
|
||||
.section .init, "ax"
|
||||
.balign 4
|
||||
|
||||
.ifdef VERSION_GMSJ01
|
||||
.equ OS_EXCEPTION_VECTOR_HI, 0x8008
|
||||
.equ OS_EXCEPTION_VECTOR_LO, 0xadd8
|
||||
.endif
|
||||
|
||||
.ifdef VERSION_GMSJ01_01
|
||||
.equ OS_EXCEPTION_VECTOR_HI, 0x8031
|
||||
.equ OS_EXCEPTION_VECTOR_LO, 0xfdb8
|
||||
.endif
|
||||
|
||||
.ifdef VERSION_GMSE01
|
||||
.equ OS_EXCEPTION_VECTOR_HI, 0x8034
|
||||
.equ OS_EXCEPTION_VECTOR_LO, 0x04b8
|
||||
.endif
|
||||
|
||||
.ifdef VERSION_GMSP01
|
||||
.equ OS_EXCEPTION_VECTOR_HI, 0x8033
|
||||
.equ OS_EXCEPTION_VECTOR_LO, 0x8638
|
||||
.endif
|
||||
|
||||
.ifdef VERSION_GMSP01_NX
|
||||
.equ OS_EXCEPTION_VECTOR_HI, 0x8033
|
||||
.equ OS_EXCEPTION_VECTOR_LO, 0x6ff8
|
||||
.endif
|
||||
|
||||
# .init:0x0 | 0x80003298 | size: 0x0
|
||||
.sym gTRKInterruptVectorTable, global
|
||||
.4byte 0x4D657472 /* invalid */
|
||||
@@ -150,8 +175,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0x200
|
||||
rfi
|
||||
@@ -208,8 +233,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0x300
|
||||
rfi
|
||||
@@ -272,8 +297,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0x400
|
||||
rfi
|
||||
@@ -336,8 +361,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0x500
|
||||
rfi
|
||||
@@ -400,8 +425,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0x600
|
||||
rfi
|
||||
@@ -464,8 +489,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0x700
|
||||
rfi
|
||||
@@ -528,8 +553,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0x800
|
||||
rfi
|
||||
@@ -592,8 +617,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0x900
|
||||
rfi
|
||||
@@ -784,8 +809,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0xc00
|
||||
rfi
|
||||
@@ -848,8 +873,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0xd00
|
||||
rfi
|
||||
@@ -912,8 +937,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0xe00
|
||||
rfi
|
||||
@@ -984,8 +1009,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0xf20
|
||||
rfi
|
||||
@@ -999,8 +1024,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0xf00
|
||||
rfi
|
||||
@@ -1058,8 +1083,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0x1000
|
||||
rfi
|
||||
@@ -1123,8 +1148,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0x1100
|
||||
rfi
|
||||
@@ -1189,8 +1214,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0x1200
|
||||
rfi
|
||||
@@ -1239,8 +1264,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0x1300
|
||||
rfi
|
||||
@@ -1306,8 +1331,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0x1400
|
||||
rfi
|
||||
@@ -1434,8 +1459,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0x1600
|
||||
rfi
|
||||
@@ -1498,8 +1523,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0x1700
|
||||
rfi
|
||||
@@ -1818,8 +1843,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0x1c00
|
||||
rfi
|
||||
@@ -1882,8 +1907,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0x1d00
|
||||
rfi
|
||||
@@ -1946,8 +1971,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0x1e00
|
||||
rfi
|
||||
@@ -2010,8 +2035,8 @@
|
||||
mfmsr r3
|
||||
ori r3, r3, 0x30
|
||||
mtsrr1 r3
|
||||
lis r3, 0x8008
|
||||
ori r3, r3, 0xadd8
|
||||
lis r3, OS_EXCEPTION_VECTOR_HI
|
||||
ori r3, r3, OS_EXCEPTION_VECTOR_LO
|
||||
mtsrr0 r3
|
||||
li r3, 0x1f00
|
||||
rfi
|
||||
|
||||
@@ -64,12 +64,23 @@ asm void InitMetroTRK()
|
||||
mtspr 0x3f2, r0
|
||||
mtspr 0x3f5, r0
|
||||
//Restore stack pointer
|
||||
#if defined(VERSION_GMSP01) || defined(VERSION_GMSP01_NX)
|
||||
lis r1, 0x80420D48@h
|
||||
ori r1, r1, 0x80420D48@l
|
||||
#else
|
||||
#if defined(VERSION_GMSJ01)
|
||||
lis r1, 0x80426008@h
|
||||
ori r1, r1, 0x80426008@l
|
||||
#elif defined(VERSION_GMSJ01_01)
|
||||
lis r1, 0x8041A518@h
|
||||
ori r1, r1, 0x8041A518@l
|
||||
#elif defined(VERSION_GMSE01)
|
||||
lis r1, 0x804297E8@h
|
||||
ori r1, r1, 0x804297E8@l
|
||||
#elif defined(VERSION_GMSP01)
|
||||
lis r1, 0x80420D48@h
|
||||
ori r1, r1, 0x80420D48@l
|
||||
#elif defined(VERSION_GMSP01_NX)
|
||||
lis r1, 0x8041E2F0@h
|
||||
ori r1, r1, 0x8041E2F0@l
|
||||
#else
|
||||
#error "Unhandled ROM"
|
||||
#endif
|
||||
mr r3, r5
|
||||
bl InitMetroTRKCommTable //Initialize comm table
|
||||
|
||||
@@ -26,7 +26,11 @@ extern void OSResetSystem(BOOL reset, u32 resetCode, BOOL forceMenu);
|
||||
__declspec(section ".init") extern void __check_pad3(void);
|
||||
__declspec(section ".init") extern void __start(void);
|
||||
__declspec(section ".init") extern void __init_registers(void);
|
||||
#if defined(VERSION_GMSJ01) || defined(VERSION_GMSP01)
|
||||
__declspec(section ".init") extern void __init_data(void);
|
||||
#else
|
||||
__declspec(section ".init") extern void __init_data_80005380(void);
|
||||
#endif
|
||||
|
||||
__declspec(section ".init") extern char _stack_addr[];
|
||||
__declspec(section ".init") extern char _SDA_BASE_[];
|
||||
|
||||
@@ -24,13 +24,25 @@ void EnableMetroTRKInterrupts(void);
|
||||
|
||||
extern unsigned long __DVDLongFileNameFlag;
|
||||
extern unsigned long __PADSpec;
|
||||
#if defined(VERSION_GMSP01) || defined(VERSION_GMSP01_NX)
|
||||
extern unsigned char __ArenaLo[] AT_ADDRESS(0x80420D60);
|
||||
extern char _stack_addr[] AT_ADDRESS(0x8041ED48);
|
||||
#else
|
||||
#if defined(VERSION_GMSJ01)
|
||||
extern unsigned char __ArenaLo[] AT_ADDRESS(0x80426020);
|
||||
extern char _stack_addr[] AT_ADDRESS(0x80424008);
|
||||
#elif defined(VERSION_GMSJ01_01)
|
||||
extern unsigned char __ArenaLo[] AT_ADDRESS(0x8041A520);
|
||||
extern char _stack_addr[] AT_ADDRESS(0x80418518);
|
||||
#elif defined(VERSION_GMSE01)
|
||||
extern unsigned char __ArenaLo[] AT_ADDRESS(0x80429800);
|
||||
extern char _stack_addr[] AT_ADDRESS(0x804277E8);
|
||||
#elif defined(VERSION_GMSP01)
|
||||
extern unsigned char __ArenaLo[] AT_ADDRESS(0x80420D60);
|
||||
extern char _stack_addr[] AT_ADDRESS(0x8041ED48);
|
||||
#elif defined(VERSION_GMSP01_NX)
|
||||
extern unsigned char __ArenaLo[] AT_ADDRESS(0x8041E300);
|
||||
extern char _stack_addr[] AT_ADDRESS(0x8041C2F0);
|
||||
#else
|
||||
#error "Unhandled ROM"
|
||||
#endif
|
||||
|
||||
extern unsigned char __ArenaHi[];
|
||||
|
||||
// dummy entry points to the OS Exception vector
|
||||
|
||||
@@ -70,12 +70,23 @@
|
||||
} while (0);
|
||||
|
||||
// which header should these go in?
|
||||
#if defined(VERSION_GMSP01) || defined(VERSION_GMSP01_NX)
|
||||
extern char _stack_addr[] AT_ADDRESS(0x8041ED48);
|
||||
extern unsigned char _stack_end[] AT_ADDRESS(0x8040ED44);
|
||||
#else
|
||||
#if defined(VERSION_GMSJ01)
|
||||
extern char _stack_addr[] AT_ADDRESS(0x80424008);
|
||||
extern unsigned char _stack_end[] AT_ADDRESS(0x80414004);
|
||||
#elif defined(VERSION_GMSJ01_01)
|
||||
extern char _stack_addr[] AT_ADDRESS(0x80418518);
|
||||
extern unsigned char _stack_end[] AT_ADDRESS(0x80408518);
|
||||
#elif defined(VERSION_GMSE01)
|
||||
extern char _stack_addr[] AT_ADDRESS(0x804277E8);
|
||||
extern unsigned char _stack_end[] AT_ADDRESS(0x804177E4);
|
||||
#elif defined(VERSION_GMSP01)
|
||||
extern char _stack_addr[] AT_ADDRESS(0x8041ED48);
|
||||
extern unsigned char _stack_end[] AT_ADDRESS(0x8040ED44);
|
||||
#elif defined(VERSION_GMSP01_NX)
|
||||
extern char _stack_addr[] AT_ADDRESS(0x8041C2F0);
|
||||
extern unsigned char _stack_end[] AT_ADDRESS(0x8040C2EC);
|
||||
#else
|
||||
#error "Unhandled ROM"
|
||||
#endif
|
||||
|
||||
// .bss
|
||||
|
||||
@@ -15,11 +15,20 @@
|
||||
|
||||
extern void InitMetroTRK();
|
||||
|
||||
#if defined(VERSION_GMSP01) || defined(VERSION_GMSP01_NX)
|
||||
__declspec(section ".init") extern char _stack_addr[] AT_ADDRESS(0x8041ED48);
|
||||
#else
|
||||
#if defined(VERSION_GMSJ01)
|
||||
__declspec(section ".init") extern char _stack_addr[] AT_ADDRESS(0x80424008);
|
||||
#elif defined(VERSION_GMSJ01_01)
|
||||
__declspec(section ".init") extern char _stack_addr[] AT_ADDRESS(0x80418518);
|
||||
#elif defined(VERSION_GMSE01)
|
||||
__declspec(section ".init") extern char _stack_addr[] AT_ADDRESS(0x804277E8);
|
||||
#elif defined(VERSION_GMSP01)
|
||||
__declspec(section ".init") extern char _stack_addr[] AT_ADDRESS(0x8041ED48);
|
||||
#elif defined(VERSION_GMSP01_NX)
|
||||
__declspec(section ".init") extern char _stack_addr[] AT_ADDRESS(0x8041C2F0);
|
||||
#else
|
||||
#error "Unhandled ROM"
|
||||
#endif
|
||||
|
||||
__declspec(section ".init") extern char _SDA_BASE_[];
|
||||
__declspec(section ".init") extern char _SDA2_BASE_[];
|
||||
|
||||
@@ -41,7 +50,11 @@ extern int main(int argc, char* argv[]);
|
||||
extern void exit(int);
|
||||
|
||||
__declspec(section ".init") static void __init_registers(void);
|
||||
#if defined(VERSION_GMSJ01) || defined(VERSION_GMSP01)
|
||||
__declspec(section ".init") static void __init_data(void);
|
||||
#else
|
||||
__declspec(section ".init") void __init_data_80005380(void);
|
||||
#endif
|
||||
|
||||
__declspec(section ".init") static void __check_pad3(void)
|
||||
{
|
||||
@@ -60,7 +73,11 @@ __declspec(section ".init") __declspec(weak) asm void __start(void)
|
||||
stwu r1, -8(r1)
|
||||
stw r0, 4(r1)
|
||||
stw r0, 0(r1)
|
||||
#if defined(VERSION_GMSJ01) || defined(VERSION_GMSP01)
|
||||
bl __init_data
|
||||
#else
|
||||
bl __init_data_80005380
|
||||
#endif
|
||||
li r0, 0
|
||||
lis r6, EXCEPTIONMASK_ADDR@ha
|
||||
addi r6, r6, EXCEPTIONMASK_ADDR@l
|
||||
@@ -186,7 +203,11 @@ asm static void __init_registers(void)
|
||||
#endif // clang-format on
|
||||
}
|
||||
|
||||
#if defined(VERSION_GMSJ01) || defined(VERSION_GMSP01)
|
||||
static void __init_data(void)
|
||||
#else
|
||||
void __init_data_80005380(void)
|
||||
#endif
|
||||
{
|
||||
__rom_copy_info* dci;
|
||||
__bss_init_info* bii;
|
||||
|
||||
Reference in new issue
Block a user