From 8bbb01689963005d1f6559714737e886084a5dc5 Mon Sep 17 00:00:00 2001 From: Rainchus Date: Wed, 29 Nov 2023 13:35:04 -0600 Subject: [PATCH] nearly matching w10Dll --- config/GMPE01_00/rels/w10Dll/splits.txt | 7 +- config/GMPE01_00/rels/w10Dll/symbols.txt | 5 +- configure.py | 2 +- include/REL/w10Dll.h | 2 +- include/common.h | 1 + include/common_structs.h | 5 + src/REL/w10Dll/w10Dll.c | 189 ++--------------------- src/REL/w10Dll/w10Dll2.c | 168 ++++++++++++++++++++ src/REL/w10Dll/w10Dll_init.c | 3 - 9 files changed, 198 insertions(+), 184 deletions(-) diff --git a/config/GMPE01_00/rels/w10Dll/splits.txt b/config/GMPE01_00/rels/w10Dll/splits.txt index 3a0c7c06..f5f55b85 100644 --- a/config/GMPE01_00/rels/w10Dll/splits.txt +++ b/config/GMPE01_00/rels/w10Dll/splits.txt @@ -8,15 +8,14 @@ Sections: REL/w10Dll/w10Dll_init.c: .text start:0x00000000 end:0x000000E0 - .bss start:0x00000000 end:0x00000008 REL/w10Dll/w10Dll.c: - .text start:0x000000E0 end:0x000013A4 + .text start:0x000000E0 end:0x00000D2C .rodata start:0x00000000 end:0x00000048 .data start:0x00000000 end:0x00000098 - .bss start:0x00000008 end:0x00000038 + .bss start:0x00000000 end:0x00000038 REL/w10Dll/w10Dll2.c: - .text start:0x000013A4 end:0x0000206C + .text start:0x00000D2C end:0x0000206C .rodata start:0x00000048 end:0x00000070 .data start:0x00000098 end:0x000002D4 diff --git a/config/GMPE01_00/rels/w10Dll/symbols.txt b/config/GMPE01_00/rels/w10Dll/symbols.txt index 07a59ce4..71fe586c 100644 --- a/config/GMPE01_00/rels/w10Dll/symbols.txt +++ b/config/GMPE01_00/rels/w10Dll/symbols.txt @@ -15,7 +15,7 @@ fn_1_AEC = .text:0x00000AEC; // type:function size:0xB4 fn_1_BA0 = .text:0x00000BA0; // type:function size:0x70 fn_1_C10 = .text:0x00000C10; // type:function size:0x10 fn_1_C20 = .text:0x00000C20; // type:function size:0x10C -fn_1_D2C = .text:0x00000D2C; // type:function size:0x28 +fn_1_D2C = .text:0x00000D2C; // type:function size:0x28 scope:local fn_1_D54 = .text:0x00000D54; // type:function size:0x28 fn_1_D7C = .text:0x00000D7C; // type:function size:0x28 fn_1_DA4 = .text:0x00000DA4; // type:function size:0x28 @@ -102,7 +102,8 @@ lbl_1_data_C6 = .data:0x000000C6; // type:object size:0x42 lbl_1_data_108 = .data:0x00000108; // type:object size:0x150 lbl_1_data_258 = .data:0x00000258; // type:object size:0x50 data:string lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x2C -lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x8 data:4byte +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x2 data:2byte lbl_1_bss_E = .bss:0x0000000E; // type:object size:0x2 data:2byte diff --git a/configure.py b/configure.py index 5aee5a4a..ee431ab4 100755 --- a/configure.py +++ b/configure.py @@ -314,7 +314,7 @@ config.libs = [ "cflags": cflags_rel, "host": False, "objects": [ - Object(Matching, "REL/executor.c"), + Object(Matching, "REL/w10Dll/w10Dll_init.c"), Object(Matching, "REL/w10Dll/w10Dll.c"), Object(Matching, "REL/w10Dll/w10Dll2.c"), ], diff --git a/include/REL/w10Dll.h b/include/REL/w10Dll.h index 0bcd9075..03b56edb 100644 --- a/include/REL/w10Dll.h +++ b/include/REL/w10Dll.h @@ -192,5 +192,5 @@ extern s16 lbl_1_data_32; extern s32 lbl_1_data_54[2]; extern s32 lbl_1_data_5C[2]; extern s32 lbl_1_data_64[2]; -extern s32 lbl_1_data_6C[2]; +extern s32 lbl_1_data_6C[3]; //HACK: should be 2 extern BoardState lbl_8018FCF8; \ No newline at end of file diff --git a/include/common.h b/include/common.h index 9dbd46bf..a77b1cb9 100644 --- a/include/common.h +++ b/include/common.h @@ -7,5 +7,6 @@ #include "functions.h" #include "variables.h" #include "dolphin/mtx/GeoTypes.h" +#include "dolphin/mtx.h" #endif \ No newline at end of file diff --git a/include/common_structs.h b/include/common_structs.h index 073f3133..1fc3eeaf 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -11,6 +11,11 @@ typedef struct om_ovl_his_data { int stat; } omOvlHisData; +typedef struct Vec2f { + f32 x; + f32 y; +} Vec2f; + typedef struct Vec3f { f32 x; f32 y; diff --git a/src/REL/w10Dll/w10Dll.c b/src/REL/w10Dll/w10Dll.c index 722e099c..e65806fb 100644 --- a/src/REL/w10Dll/w10Dll.c +++ b/src/REL/w10Dll/w10Dll.c @@ -10,6 +10,8 @@ s16 lbl_1_bss_10[4]; s16 lbl_1_bss_E; s16 lbl_1_bss_C; void* lbl_1_bss_8; +s32 lbl_1_bss_4_pad; +BoardStateSubStruct* lbl_1_bss_0; //DATA unkw10Dll lbl_1_data_0[1] = { @@ -33,7 +35,6 @@ s32 lbl_1_data_34[] = { 0x006D0000, 0x008A0000, 0x00850000, 0x00110000, 0x000D0000, 0x00810000, -0 }; s32 lbl_1_data_54[2] = { @@ -51,9 +52,11 @@ s32 lbl_1_data_64[2] = { -1 }; -s32 lbl_1_data_6C[2] = { +//HACK: should be just 2 entries but there is 0 padding +s32 lbl_1_data_6C[3] = { 0x0002000E, - -1 + -1, + 0 }; s32 lbl_1_data_78[2] = { @@ -283,6 +286,14 @@ void fn_1_C10(s16 arg0) { lbl_1_bss_1C = arg0; } +const Vec2f lbl_1_rodata_38 = { + 0.2617994f, 0.0f +}; + +const Vec2f lbl_1_rodata_40 = { + 0.2f, 0.0f +}; + void fn_1_C20(void) { Mtx sp20; Vec3f sp14; @@ -297,178 +308,10 @@ void fn_1_C20(void) { Hu3D2Dto3D(&lbl_1_data_80[lbl_1_bss_1C], 1, &sp14); fn_8006F158(lbl_1_bss_1E, &sp14); fn_8005D5C0(&sp8); - PSMTXRotRad(sp20, 'y', 0.2617994f); + PSMTXRotRad(sp20, 'y', lbl_1_rodata_38.x); fn_8006EFBC(lbl_1_bss_1E, sp20); fn_8006F270(lbl_1_bss_1E, sp8.x, 0.0f, 0.0f); - fn_8006F338(lbl_1_bss_1E, 0.2f, 0.2f, 0.2f); + fn_8006F338(lbl_1_bss_1E, lbl_1_rodata_40.x, lbl_1_rodata_40.x, lbl_1_rodata_40.x); HuPrcVSleep(); } -} - -const f32 pad = 0.0f; - -void fn_1_D2C(void) { - fn_1_BA0(0x2E0001); -} - -void fn_1_D54(void) { - fn_1_BA0(0x2E0002); -} - -void fn_1_D7C(void) { - fn_1_BA0(0x2E0003); -} - -void fn_1_DA4(void) { - fn_1_BA0(0x2E0004); -} - -void fn_1_DCC(void) { - fn_1_BA0(0x2E0005); -} - -void fn_1_DF4(void) { - fn_1_BA0(0x2E0006); -} - -void fn_1_E1C(void) { - fn_1_BA0(0x2E0007); -} - -void fn_1_E44(void) { - fn_1_BA0(0x2E0008); - fn_1_BA0(0x2E0009); - fn_8007500C(0); - fn_8006F50C(lbl_1_data_2C, 1); -} - -void fn_1_E94(void) { - fn_1_BA0(0x2E000A); -} - -void fn_1_EBC(void) { - fn_1_BA0(0x2E000B); -} - -void fn_1_EE4(void) { - -} - -void fn_1_EE8(void) { - fn_1_1E3C(0, 0x122, 0x8C); - fn_1_BA0(0x2E000C); - fn_1_BA0(0x2E000D); - fn_1_1FB0(); -} - -void fn_1_F30(void) { - fn_1_1E3C(1, 0x122, 0x8C); - fn_1_BA0(0x2E000E); - fn_1_1FB0(); -} - -void fn_1_F6C(void) { - fn_1_1E3C(2, 0x122, 0x8C); - fn_1_BA0(0x2E000F); - fn_1_1FB0(); - fn_800B4264(0, 0x50, 1); -} - -void fn_1_FB8(void) { - fn_1_1E3C(3, 0x122, 0x8C); - fn_1_BA0(0x2E0010); - fn_1_1FB0(); - fn_1_BA0(0x2E0011); - fn_800B4264(-0x50, 0, 1); -} - -void fn_1_1010(void) { - fn_1_1E3C(4, 0x122, 0x8C); - fn_1_BA0(0x2E0012); - fn_1_1FB0(); - fn_800B4264(0, 0x50, 1); -} - -void fn_1_105C(void) { - fn_1_1E3C(5, 0x122, 0x8C); - fn_1_BA0(0x2E0013); - fn_1_1FB0(); -} - -void fn_1_1098(void) { - fn_1_BA0(0x2E0014); -} - -void fn_1_10C0(void) { - fn_1_BA0(0x2E0015); - fn_800B4264(-0x50, 0, 1); -} - -void fn_1_10F8(void) { - fn_1_1E3C(6, 0x122, 0x8C); - fn_1_BA0(0x2E0016); - fn_1_1FB0(); -} - -void fn_1_1134(void) { - fn_1_1E3C(7, 0x122, 0x8C); - fn_1_BA0(0x2E0017); - fn_1_1FB0(); - fn_80082AAC(1); -} - -void fn_1_1178(void) { - fn_1_BA0(0x2E0018); -} - -void fn_1_11A0(void) { - s32 temp; - - fn_1_BA0(0x2E0019); - temp = fn_800745F0(0, 1); - fn_800B4274(temp, 0); -} - -void fn_1_11EC(void) { - s32 temp; - - fn_1_BA0(0x2E001A); - temp = fn_800745F0(0, 1); - fn_800B4274(temp, 0); - fn_800B42B4(0); -} - -void fn_1_1240(void) { - fn_1_BA0(0x2E001B); - fn_800B4264(0x50, 0, 1); -} - -void fn_1_1278(void) { - fn_1_BA0(0x2E001C); -} - -void fn_1_12A0(void) { - fn_1_BA0(0x2E001D); - fn_80062B74(2, 1); - fn_800B42B4(1); -} - -void fn_1_12DC(void) { - fn_1_BA0(0x2E001E); -} - -void fn_1_1304(void) { - fn_1_BA0(0x2E001F); -} - -void fn_1_132C(void) { - fn_1_BA0(0x2E0020); -} - -void fn_1_1354(void) { - fn_1_BA0(0x2E0021); -} - -void fn_1_137C(void) { - fn_1_BA0(0x2E0022); } \ No newline at end of file diff --git a/src/REL/w10Dll/w10Dll2.c b/src/REL/w10Dll/w10Dll2.c index 5e60bdf4..a6e33d6f 100644 --- a/src/REL/w10Dll/w10Dll2.c +++ b/src/REL/w10Dll/w10Dll2.c @@ -77,6 +77,172 @@ s32 lbl_1_data_2A8[11] = { 0x007B000E }; +void fn_1_D2C(void) { + fn_1_BA0(0x2E0001); +} + +void fn_1_D54(void) { + fn_1_BA0(0x2E0002); +} + +void fn_1_D7C(void) { + fn_1_BA0(0x2E0003); +} + +void fn_1_DA4(void) { + fn_1_BA0(0x2E0004); +} + +void fn_1_DCC(void) { + fn_1_BA0(0x2E0005); +} + +void fn_1_DF4(void) { + fn_1_BA0(0x2E0006); +} + +void fn_1_E1C(void) { + fn_1_BA0(0x2E0007); +} + +void fn_1_E44(void) { + fn_1_BA0(0x2E0008); + fn_1_BA0(0x2E0009); + fn_8007500C(0); + fn_8006F50C(lbl_1_data_2C, 1); +} + +void fn_1_E94(void) { + fn_1_BA0(0x2E000A); +} + +void fn_1_EBC(void) { + fn_1_BA0(0x2E000B); +} + +void fn_1_EE4(void) { + +} + +void fn_1_EE8(void) { + fn_1_1E3C(0, 0x122, 0x8C); + fn_1_BA0(0x2E000C); + fn_1_BA0(0x2E000D); + fn_1_1FB0(); +} + +void fn_1_F30(void) { + fn_1_1E3C(1, 0x122, 0x8C); + fn_1_BA0(0x2E000E); + fn_1_1FB0(); +} + +void fn_1_F6C(void) { + fn_1_1E3C(2, 0x122, 0x8C); + fn_1_BA0(0x2E000F); + fn_1_1FB0(); + fn_800B4264(0, 0x50, 1); +} + +void fn_1_FB8(void) { + fn_1_1E3C(3, 0x122, 0x8C); + fn_1_BA0(0x2E0010); + fn_1_1FB0(); + fn_1_BA0(0x2E0011); + fn_800B4264(-0x50, 0, 1); +} + +void fn_1_1010(void) { + fn_1_1E3C(4, 0x122, 0x8C); + fn_1_BA0(0x2E0012); + fn_1_1FB0(); + fn_800B4264(0, 0x50, 1); +} + +void fn_1_105C(void) { + fn_1_1E3C(5, 0x122, 0x8C); + fn_1_BA0(0x2E0013); + fn_1_1FB0(); +} + +void fn_1_1098(void) { + fn_1_BA0(0x2E0014); +} + +void fn_1_10C0(void) { + fn_1_BA0(0x2E0015); + fn_800B4264(-0x50, 0, 1); +} + +void fn_1_10F8(void) { + fn_1_1E3C(6, 0x122, 0x8C); + fn_1_BA0(0x2E0016); + fn_1_1FB0(); +} + +void fn_1_1134(void) { + fn_1_1E3C(7, 0x122, 0x8C); + fn_1_BA0(0x2E0017); + fn_1_1FB0(); + fn_80082AAC(1); +} + +void fn_1_1178(void) { + fn_1_BA0(0x2E0018); +} + +void fn_1_11A0(void) { + s32 temp; + + fn_1_BA0(0x2E0019); + temp = fn_800745F0(0, 1); + fn_800B4274(temp, 0); +} + +void fn_1_11EC(void) { + s32 temp; + + fn_1_BA0(0x2E001A); + temp = fn_800745F0(0, 1); + fn_800B4274(temp, 0); + fn_800B42B4(0); +} + +void fn_1_1240(void) { + fn_1_BA0(0x2E001B); + fn_800B4264(0x50, 0, 1); +} + +void fn_1_1278(void) { + fn_1_BA0(0x2E001C); +} + +void fn_1_12A0(void) { + fn_1_BA0(0x2E001D); + fn_80062B74(2, 1); + fn_800B42B4(1); +} + +void fn_1_12DC(void) { + fn_1_BA0(0x2E001E); +} + +void fn_1_1304(void) { + fn_1_BA0(0x2E001F); +} + +void fn_1_132C(void) { + fn_1_BA0(0x2E0020); +} + +void fn_1_1354(void) { + fn_1_BA0(0x2E0021); +} + +void fn_1_137C(void) { + fn_1_BA0(0x2E0022); +} + void fn_1_13A4(void) { s32 i; Vec3f sp14; @@ -148,6 +314,8 @@ void fn_1_13A4(void) { } } +const f32 pad = 0.0f; + void fn_1_176C(void) { fn_1_C10(1); fn_1_BA0(0x2E0024); diff --git a/src/REL/w10Dll/w10Dll_init.c b/src/REL/w10Dll/w10Dll_init.c index a0241037..ed4247bb 100644 --- a/src/REL/w10Dll/w10Dll_init.c +++ b/src/REL/w10Dll/w10Dll_init.c @@ -1,8 +1,5 @@ #include "include/REL/w10Dll.h" -//BSS -BoardStateSubStruct* lbl_1_bss_0; - void fn_1_0(void) { fn_8005B150(&fn_1_E0, &fn_1_6D8); }