From 3e16f215683c2a7d98f51a58fbb262fbd05f435c Mon Sep 17 00:00:00 2001 From: gamemasterplc Date: Wed, 22 Nov 2023 08:59:27 -0600 Subject: [PATCH] Split early translation units --- config/GMPE01_00/splits.txt | 19 +++++ config/GMPE01_00/symbols.txt | 112 ++++++++++++++-------------- configure.py | 3 + src/REL/_minigameDLL/_minigameDLL.c | 2 +- 4 files changed, 79 insertions(+), 57 deletions(-) diff --git a/config/GMPE01_00/splits.txt b/config/GMPE01_00/splits.txt index 4798b47f..4ed757b3 100644 --- a/config/GMPE01_00/splits.txt +++ b/config/GMPE01_00/splits.txt @@ -13,6 +13,25 @@ Sections: .sdata2 type:rodata .sbss2 type:bss +game/main.c: + .text start:0x800057C0 end:0x80005A5C + .data start:0x8011EDE0 end:0x8011EDF0 + .sdata start:0x801D3420 end:0x801D3430 + .sbss start:0x801D3A00 end:0x801D3A58 + .sdata2 start:0x801D4960 end:0x801D4968 + +game/pad.c: + .text start:0x80005A5C end:0x80006478 + .data start:0x8011EDF0 end:0x8011EE00 + .bss start:0x80142800 end:0x80142840 + .sbss start:0x801D3A58 end:0x801D3AE0 + +game/dvd.c: + .text start:0x80006478 end:0x80006E38 + .data start:0x8011EE00 end:0x8011EF58 + .sdata start:0x801D3430 end:0x801D3438 + .sbss start:0x801D3AE0 end:0x801D3AE8 + game/malloc.c: .text start:0x8000A558 end:0x8000A938 .data start:0x80121F50 end:0x80121FC8 diff --git a/config/GMPE01_00/symbols.txt b/config/GMPE01_00/symbols.txt index 146d27ca..37fd31ed 100644 --- a/config/GMPE01_00/symbols.txt +++ b/config/GMPE01_00/symbols.txt @@ -44,27 +44,27 @@ _bss_init_info = .init:0x800055F0; // type:object size:0x20 scope:global data:4b @eti_80005790 = extabindex:0x80005790; // type:object size:0xC scope:local hidden _eti_init_info = extabindex:0x8000579C; // type:object size:0x20 scope:global main = .text:0x800057C0; // type:function size:0x22C scope:global -fn_800059EC = .text:0x800059EC; // type:function size:0x38 -fn_80005A24 = .text:0x80005A24; // type:function size:0xC -fn_80005A30 = .text:0x80005A30; // type:function size:0x2C -fn_80005A5C = .text:0x80005A5C; // type:function size:0xF0 -fn_80005B4C = .text:0x80005B4C; // type:function size:0x168 -fn_80005CB4 = .text:0x80005CB4; // type:function size:0x440 -fn_800060F4 = .text:0x800060F4; // type:function size:0x234 -HuPadRumbleAllStop = .text:0x80006328; // type:function size:0x54 -fn_8000637C = .text:0x8000637C; // type:function size:0x70 -fn_800063EC = .text:0x800063EC; // type:function size:0x70 -fn_8000645C = .text:0x8000645C; // type:function size:0x14 -fn_80006470 = .text:0x80006470; // type:function size:0x8 -fn_80006478 = .text:0x80006478; // type:function size:0xC -fn_80006484 = .text:0x80006484; // type:function size:0x16C -fn_800065F0 = .text:0x800065F0; // type:function size:0x1B4 -fn_800067A4 = .text:0x800067A4; // type:function size:0x170 -fn_80006914 = .text:0x80006914; // type:function size:0x16C -fn_80006A80 = .text:0x80006A80; // type:function size:0x174 -fn_80006BF4 = .text:0x80006BF4; // type:function size:0x150 -fn_80006D44 = .text:0x80006D44; // type:function size:0x38 -fn_80006D7C = .text:0x80006D7C; // type:function size:0xBC +HuSysVWaitSet = .text:0x800059EC; // type:function size:0x38 +HuSysVWaitGet = .text:0x80005A24; // type:function size:0xC +rand8 = .text:0x80005A30; // type:function size:0x2C +HuPadInit = .text:0x80005A5C; // type:function size:0xF0 +HuPadRead = .text:0x80005B4C; // type:function size:0x168 +PadReadVSync = .text:0x80005CB4; // type:function size:0x440 +PadADConv = .text:0x800060F4; // type:function size:0x234 +HuPadRumbleSet = .text:0x80006328; // type:function size:0x54 +HuPadRumbleStop = .text:0x8000637C; // type:function size:0x70 +HuPadRumbleAllStop = .text:0x800063EC; // type:function size:0x70 +HuPadStatGet = .text:0x8000645C; // type:function size:0x14 +HuPadRumbleGet = .text:0x80006470; // type:function size:0x8 +HuDVDReadAsyncCallBack = .text:0x80006478; // type:function size:0xC scope:local +HuDvdDataRead = .text:0x80006484; // type:function size:0x16C +HuDvdDataReadMulti = .text:0x800065F0; // type:function size:0x1B4 +HuDvdDataReadDirect = .text:0x800067A4; // type:function size:0x170 +HuDvdDataFastRead = .text:0x80006914; // type:function size:0x16C +HuDvdDataFastReadNum = .text:0x80006A80; // type:function size:0x174 +HuDvdDataFastReadAsync = .text:0x80006BF4; // type:function size:0x150 +HuDvdDataClose = .text:0x80006D44; // type:function size:0x38 +HuDvdErrorWatch = .text:0x80006D7C; // type:function size:0xBC fn_80006E38 = .text:0x80006E38; // type:function size:0xD0 fn_80006F08 = .text:0x80006F08; // type:function size:0x74 fn_80006F7C = .text:0x80006F7C; // type:function size:0x64 @@ -4688,8 +4688,8 @@ lbl_8011EBB8 = .rodata:0x8011EBB8; // type:object size:0x88 lbl_8011EC40 = .rodata:0x8011EC40; // type:object size:0x88 data:byte lbl_8011ECC8 = .rodata:0x8011ECC8; // type:object size:0x100 lbl_8011EDE0 = .data:0x8011EDE0; // type:object size:0x10 data:string -lbl_8011EDF0 = .data:0x8011EDF0; // type:object size:0x10 -lbl_8011EE00 = .data:0x8011EE00; // type:object size:0x124 +chanTbl = .data:0x8011EDF0; // type:object size:0x10 +correctDiskID = .data:0x8011EE00; // type:object size:0x124 scope:local jumptable_8011EF24 = .data:0x8011EF24; // type:object size:0x34 scope:local lbl_8011EF58 = .data:0x8011EF58; // type:object size:0x11 data:string lbl_8011EF69 = .data:0x8011EF69; // type:object size:0x11 data:string @@ -5351,8 +5351,8 @@ lbl_801405E0 = .data:0x801405E0; // type:object size:0x19E0 lbl_80141FC0 = .data:0x80141FC0; // type:object size:0x10 lbl_80141FD0 = .data:0x80141FD0; // type:object size:0x20 lbl_80141FF0 = .data:0x80141FF0; // type:object size:0x800 -PadStatErrOld = .bss:0x80142800; // type:object size:0x10 -RumbleData = .bss:0x80142810; // type:object size:0x30 +padStatErrOld = .bss:0x80142800; // type:object size:0x10 +rumbleData = .bss:0x80142810; // type:object size:0x30 ReadDataStat = .bss:0x80142840; // type:object size:0x2E00 data:4byte TextBuffer = .bss:0x80145640; // type:object size:0x400 lbl_80145A40 = .bss:0x80145A40; // type:object size:0x40 @@ -5614,7 +5614,7 @@ se = .bss:0x801D32D8; // type:object size:0xE8 data:4byte StreamInfo = .bss:0x801D33C0; // type:object size:0x60 data:4byte lbl_801D3420 = .sdata:0x801D3420; // type:object size:0x5 data:string lbl_801D3425 = .sdata:0x801D3425; // type:object size:0x7 -lbl_801D342C = .sdata:0x801D342C; // type:object size:0x4 data:4byte +rnd_seed = .sdata:0x801D342C; // type:object size:0x4 data:4byte lbl_801D3430 = .sdata:0x801D3430; // type:object size:0x6 data:string lbl_801D3436 = .sdata:0x801D3436; // type:object size:0x2 data:string lbl_801D3438 = .sdata:0x801D3438; // type:object size:0x7 data:string @@ -5910,36 +5910,36 @@ lbl_801D3A48 = .sbss:0x801D3A48; // type:object size:0x4 lbl_801D3A4C = .sbss:0x801D3A4C; // type:object size:0x4 lbl_801D3A50 = .sbss:0x801D3A50; // type:object size:0x4 lbl_801D3A54 = .sbss:0x801D3A54; // type:object size:0x4 data:4byte -lbl_801D3A58 = .sbss:0x801D3A58; // type:object size:0x4 data:4byte -lbl_801D3A5C = .sbss:0x801D3A5C; // type:object size:0x4 data:4byte -lbl_801D3A60 = .sbss:0x801D3A60; // type:object size:0x4 -lbl_801D3A64 = .sbss:0x801D3A64; // type:object size:0x4 -lbl_801D3A68 = .sbss:0x801D3A68; // type:object size:0x4 -lbl_801D3A6C = .sbss:0x801D3A6C; // type:object size:0x4 -lbl_801D3A70 = .sbss:0x801D3A70; // type:object size:0x4 -lbl_801D3A74 = .sbss:0x801D3A74; // type:object size:0x4 -lbl_801D3A78 = .sbss:0x801D3A78; // type:object size:0x4 -lbl_801D3A7C = .sbss:0x801D3A7C; // type:object size:0x4 -lbl_801D3A80 = .sbss:0x801D3A80; // type:object size:0x4 -lbl_801D3A84 = .sbss:0x801D3A84; // type:object size:0x4 -lbl_801D3A88 = .sbss:0x801D3A88; // type:object size:0x4 -lbl_801D3A8C = .sbss:0x801D3A8C; // type:object size:0x8 -lbl_801D3A94 = .sbss:0x801D3A94; // type:object size:0x8 -lbl_801D3A9C = .sbss:0x801D3A9C; // type:object size:0x8 -lbl_801D3AA4 = .sbss:0x801D3AA4; // type:object size:0x4 -lbl_801D3AA8 = .sbss:0x801D3AA8; // type:object size:0x4 -lbl_801D3AAC = .sbss:0x801D3AAC; // type:object size:0x4 -lbl_801D3AB0 = .sbss:0x801D3AB0; // type:object size:0x4 -lbl_801D3AB4 = .sbss:0x801D3AB4; // type:object size:0x4 -lbl_801D3AB8 = .sbss:0x801D3AB8; // type:object size:0x4 -lbl_801D3ABC = .sbss:0x801D3ABC; // type:object size:0x4 -lbl_801D3AC0 = .sbss:0x801D3AC0; // type:object size:0x4 -lbl_801D3AC4 = .sbss:0x801D3AC4; // type:object size:0x4 -lbl_801D3AC8 = .sbss:0x801D3AC8; // type:object size:0x8 -lbl_801D3AD0 = .sbss:0x801D3AD0; // type:object size:0x8 data:2byte -lbl_801D3AD8 = .sbss:0x801D3AD8; // type:object size:0x8 -lbl_801D3AE0 = .sbss:0x801D3AE0; // type:object size:0x4 data:4byte -lbl_801D3AE4 = .sbss:0x801D3AE4; // type:object size:0x4 data:4byte +VCounter = .sbss:0x801D3A58; // type:object size:0x4 data:4byte +RumbleBit = .sbss:0x801D3A5C; // type:object size:0x4 scope:local data:4byte +_PadErr = .sbss:0x801D3A60; // type:object size:0x4 scope:local +_PadDStkRepOld = .sbss:0x801D3A64; // type:object size:0x4 scope:local +_PadDStkRepCnt = .sbss:0x801D3A68; // type:object size:0x4 scope:local +_PadDStkRep = .sbss:0x801D3A6C; // type:object size:0x4 scope:local +_PadDStk = .sbss:0x801D3A70; // type:object size:0x4 scope:local +_PadTrigR = .sbss:0x801D3A74; // type:object size:0x4 scope:local +_PadTrigL = .sbss:0x801D3A78; // type:object size:0x4 scope:local +_PadSubStkY = .sbss:0x801D3A7C; // type:object size:0x4 scope:local +_PadSubStkX = .sbss:0x801D3A80; // type:object size:0x4 scope:local +_PadStkY = .sbss:0x801D3A84; // type:object size:0x4 scope:local +_PadStkX = .sbss:0x801D3A88; // type:object size:0x4 scope:local +_PadRepCnt = .sbss:0x801D3A8C; // type:object size:0x8 scope:local +_PadBtnDown = .sbss:0x801D3A94; // type:object size:0x8 scope:local +_PadBtn = .sbss:0x801D3A9C; // type:object size:0x8 scope:local +HuPadErr = .sbss:0x801D3AA4; // type:object size:0x4 +HuPadDStkRep = .sbss:0x801D3AA8; // type:object size:0x4 +HuPadDStk = .sbss:0x801D3AAC; // type:object size:0x4 +HuPadTrigR = .sbss:0x801D3AB0; // type:object size:0x4 +HuPadTrigL = .sbss:0x801D3AB4; // type:object size:0x4 +HuPadSubStkY = .sbss:0x801D3AB8; // type:object size:0x4 +HuPadSubStkX = .sbss:0x801D3ABC; // type:object size:0x4 +HuPadStkY = .sbss:0x801D3AC0; // type:object size:0x4 +HuPadStkX = .sbss:0x801D3AC4; // type:object size:0x4 +HuPadBtnRep = .sbss:0x801D3AC8; // type:object size:0x8 +HuPadBtnDown = .sbss:0x801D3AD0; // type:object size:0x8 data:2byte +HuPadBtn = .sbss:0x801D3AD8; // type:object size:0x8 +beforeDvdStatus = .sbss:0x801D3AE0; // type:object size:0x4 scope:local data:4byte +CallBackStatus = .sbss:0x801D3AE4; // type:object size:0x4 scope:local data:4byte lbl_801D3AE8 = .sbss:0x801D3AE8; // type:object size:0x4 data:4byte lbl_801D3AEC = .sbss:0x801D3AEC; // type:object size:0x4 data:4byte lbl_801D3AF0 = .sbss:0x801D3AF0; // type:object size:0x8 data:4byte diff --git a/configure.py b/configure.py index 7a49715c..b65c75ae 100755 --- a/configure.py +++ b/configure.py @@ -222,6 +222,9 @@ config.libs = [ "cflags": cflags_game, "host": False, "objects": [ + Object(NonMatching, "game/main.c"), + Object(NonMatching, "game/pad.c"), + Object(NonMatching, "game/dvd.c"), Object(Matching, "game/malloc.c"), Object(Matching, "game/memory.c"), Object(NonMatching, "game/sprman.c"), diff --git a/src/REL/_minigameDLL/_minigameDLL.c b/src/REL/_minigameDLL/_minigameDLL.c index 2a62228c..065b263a 100644 --- a/src/REL/_minigameDLL/_minigameDLL.c +++ b/src/REL/_minigameDLL/_minigameDLL.c @@ -6,5 +6,5 @@ void ModuleProlog(void) { } unsigned char fn_1_CC(void) { - return fn_80005A30(); + return rand8(); } \ No newline at end of file