diff --git a/config/GMPE01_00/rels/w10Dll/splits.txt b/config/GMPE01_00/rels/w10Dll/splits.txt index 531cd645..abdad7bb 100644 --- a/config/GMPE01_00/rels/w10Dll/splits.txt +++ b/config/GMPE01_00/rels/w10Dll/splits.txt @@ -5,3 +5,16 @@ Sections: .rodata type:rodata align:8 .data type:data align:8 .bss type:bss align:8 + +REL/w10Dll/w10Dll_init.c: + .text start:0x00000000 end:0x000000E0 + +REL/w10Dll/w10Dll.c: + .text start:0x000000E0 end:0x000013A4 + .rodata start:0x00000000 end:0x00000018 + .data start:0x00000000 end:0x000002D4 + .bss start:0x00000000 end:0x00000038 + +REL/w10Dll/w10Dll2.c: + .text start:0x000013A4 end:0x0000206C + .rodata start:0x00000058 end:0x00000070 diff --git a/config/GMPE01_00/rels/w10Dll/symbols.txt b/config/GMPE01_00/rels/w10Dll/symbols.txt index adffb709..07a59ce4 100644 --- a/config/GMPE01_00/rels/w10Dll/symbols.txt +++ b/config/GMPE01_00/rels/w10Dll/symbols.txt @@ -84,7 +84,7 @@ lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_data_0 = .data:0x00000000; // type:object size:0x28 +lbl_1_data_0 = .data:0x00000000; // type:object size:0x28 data:float lbl_1_data_28 = .data:0x00000028; // type:object size:0x2 data:2byte lbl_1_data_2A = .data:0x0000002A; // type:object size:0x2 data:2byte lbl_1_data_2C = .data:0x0000002C; // type:object size:0x2 data:2byte @@ -96,7 +96,7 @@ lbl_1_data_5C = .data:0x0000005C; // type:object size:0x8 lbl_1_data_64 = .data:0x00000064; // type:object size:0x8 lbl_1_data_6C = .data:0x0000006C; // type:object size:0xC lbl_1_data_78 = .data:0x00000078; // type:object size:0x8 -lbl_1_data_80 = .data:0x00000080; // type:object size:0x18 +lbl_1_data_80 = .data:0x00000080; // type:object size:0x18 data:float lbl_1_data_98 = .data:0x00000098; // type:object size:0x2E data:string lbl_1_data_C6 = .data:0x000000C6; // type:object size:0x42 lbl_1_data_108 = .data:0x00000108; // type:object size:0x150 diff --git a/configure.py b/configure.py index a636ef6f..5aee5a4a 100755 --- a/configure.py +++ b/configure.py @@ -308,6 +308,17 @@ config.libs = [ Object(Matching, "REL/subchrselDll/subchrselDll.c"), ], }, + { + "lib": "w10Dll", + "mw_version": config.linker_version, + "cflags": cflags_rel, + "host": False, + "objects": [ + Object(Matching, "REL/executor.c"), + Object(Matching, "REL/w10Dll/w10Dll.c"), + Object(Matching, "REL/w10Dll/w10Dll2.c"), + ], + }, ] if args.mode == "configure": diff --git a/include/REL/w10Dll.h b/include/REL/w10Dll.h new file mode 100644 index 00000000..9314d902 --- /dev/null +++ b/include/REL/w10Dll.h @@ -0,0 +1,195 @@ +#include "common.h" +#include "REL/executor.h" + +#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) + +s16 HuWinCreate(float x, float y, s16 w, s16 h, s16 frame); + +typedef struct unkw10Dll { + Vec3f unk0; + Vec3f unk0C; + Vec3f unk18; + s32 unk24; +} unkw10Dll; //sizeof 0x28 + +typedef struct w10DllUnk01 { + u8 unk0; + f32 unk4; + f32 unk8; + f32 unkC; + f32 unk10; +} w10DllUnk01; //sizeof ? + +typedef struct w10DllUnk02 { + char unk00[0x5C]; + w10DllUnk01* unk5C; +} w10DllUnk02; //sizeof ? + +typedef struct w10DllUnk03 { + s16 unk0; + s16 unk2; + s16 unk4; +} w10DllUnk03; + +typedef struct w10DllUnk04 { + s16 unk0; + s16 unk2; + void (*unk4)(); +} w10DllUnk04; + +//this belongs to m456Dll +w10DllUnk02** fn_8002FAC0(Process*, s32); + +void espDispOn(s16); +void espPosSet(s16, f32, f32); +void espScaleSet(s16, f32, f32); +void fn_1_C10(s32); +void fn_8005D8E8(void); +void fn_8005DB6C(s16, Vec3f*, s32, f32, f32, s32); +void fn_8005E0C0(void); +void fn_80074210(s32, s32, Vec3f*); +void fn_8007A360(s32); +void fn_8007F894(void); +void fn_80083F84(void); +void fn_800884F4(s32); +void fn_800A4C88(void); +void fn_800A6B10(void); +extern s16 lbl_1_bss_20; +extern s16 lbl_1_bss_22[]; +void espScaleSet(s16, f32, f32); +extern s16 lbl_1_bss_20; +s16 espEntry(s32, s32, s32); +void espDispOff(s16); +void fn_8008853C(s32); +extern s32 lbl_801A52E8; +void fn_800B42B4(s32); +void fn_80082AAC(s32); +void fn_800B4264(s32, s32, s32); +void fn_1_1FB0(void); +void fn_1_1E3C(s16, s16, s16); +void fn_8007500C(s32); +void fn_1_BA0(s32); +void fn_8006F0D4(s32, f32); +f32 fn_8006F128(s32); +f64 fmod(f32, f64); +void fn_1_C20(void); +void fn_8006F61C(s16, s32); +void fn_800B42BC(s16); +void Hu3DModelLightInfoSet(s32, s32); +s32 fn_8006DBD4(s16); +void fn_8005B150(void*, void*); +void fn_1_6D8(void); +void fn_1_E0(void); +void fn_8006F2E8(s32, Vec3f*); +void HuWinMesSet(s16, s32); +void fn_1_1D68(void); +void fn_1_1DEC(void); +void fn_1_AEC(void); +void HuWinKill(s16); +void HuWinPriSet(s16, s32); +void HuWinMesPalSet(s16, s32, s32, s32, s32); +void HuWinMesSpeedSet(s16, s32); +void HuWinMesMaxSizeGet(s32, f32*, ...); +void fn_8005D10C(void*, void*); +s16 fn_8006D9A4(s32, void*, s32); +void fn_8006DB90(s16); +void fn_8006DDE8(s16, f32); +void fn_8006E2B8(s16, s32, s32); +void fn_8006E878(s16, f32); +void fn_8006F158(s16, void*); +void fn_8006F1A8(s16, f32, f32, f32); +s32 fn_8006F220(s16 arg0, Vec3f* arg1); +void fn_8006F50C(s16, s32); +void fn_80073FF4(void*); +void fn_80073FFC(void*); +void fn_80074004(void*); +s32 fn_800745F0(s32, s32); +void fn_800772EC(s32); +void fn_80077A3C(void); +void fn_80077AAC(s16); +void fn_8007A83C(s16); +void fn_80083EDC(s16); +void fn_800A4F6C(s16); +void fn_800B3FD8(void*); +void fn_800B4274(s32, s32); +int fn_1_1AAC(s16, s32); +void fn_1_8C0(void); +void fn_1_904(void); +void fn_1_908(void); +s32 fn_1_90C(void); +void fn_1_91C(void); +void Hu3D2Dto3D(Vec3f*, s32, Vec3f*); +void fn_8005D5C0(Vec3f*); +void fn_8006F338(s16, f32, f32, f32); +s32 fn_8005B6A8(void); +void fn_8006EFBC(s16, Mtx); +void fn_8006F270(s16, f32, f32, f32); +void espKill(s16); +void fn_1_13A4(void); +void fn_1_176C(void); +void fn_1_179C(void); +void fn_1_17F4(void); +void fn_1_1834(void); +void fn_1_18BC(void); +void fn_1_1908(void); +void fn_1_1930(void); +void fn_1_1958(void); +void fn_1_D2C(void); +void fn_1_D54(void); +void fn_1_D7C(void); +void fn_1_DA4(void); +void fn_1_DCC(void); +void fn_1_DF4(void); +void fn_1_E1C(void); +void fn_1_E44(void); +void fn_1_E94(void); +void fn_1_EBC(void); +void fn_1_EE4(void); +void fn_1_EE8(void); +void fn_1_F30(void); +void fn_1_F6C(void); +void fn_1_FB8(void); +void fn_1_1010(void); +void fn_1_105C(void); +void fn_1_1098(void); +void fn_1_10C0(void); +void fn_1_10F8(void); +void fn_1_1134(void); +void fn_1_1178(void); +void fn_1_11A0(void); +void fn_1_11EC(void); +void fn_1_1240(void); +void fn_1_1278(void); +void fn_1_12A0(void); +void fn_1_12DC(void); +void fn_1_1304(void); +void fn_1_132C(void); +void fn_1_1354(void); +void fn_1_137C(void); + +extern w10DllUnk04 lbl_1_data_108[42]; +extern w10DllUnk03 lbl_1_data_C6[]; +extern Vec3f lbl_1_data_80[]; +extern Process* lbl_1_bss_18; +extern s16 lbl_1_bss_1C; +extern s16 lbl_1_bss_1E; +extern s32 lbl_1_data_78[2]; +extern BoardStateSubStruct* lbl_1_bss_0; +extern s16 lbl_1_bss_10[4]; //could be incorrect size +extern void* lbl_1_bss_8; //unknown type +extern s16 lbl_1_bss_C; +extern s16 lbl_1_bss_E; +extern unkw10Dll lbl_1_data_0[1]; +extern s16 lbl_1_bss_22[11]; +extern s32 lbl_1_data_2A8[11]; +extern s16 lbl_1_data_28; +extern s16 lbl_1_data_2A; +extern s16 lbl_1_data_2C; +extern s16 lbl_1_data_2E; +extern s16 lbl_1_data_30; +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 BoardState lbl_8018FCF8; \ No newline at end of file diff --git a/include/variables.h b/include/variables.h index e667599b..a2c884cf 100644 --- a/include/variables.h +++ b/include/variables.h @@ -43,5 +43,6 @@ extern s16 omSysExitReq; extern s16 omdispinfo; extern char omSysPauseEnableFlag; extern OverlayID omprevovl; +extern Player gPlayerData[4]; #endif diff --git a/src/REL/bootDll/bootDll.c b/src/REL/bootDll/bootDll.c index 653dacfc..0f32e06b 100644 --- a/src/REL/bootDll/bootDll.c +++ b/src/REL/bootDll/bootDll.c @@ -76,7 +76,7 @@ void fn_8000F038(s16, s32, s32); s16 fn_800204D0(s32); void fn_80021228(s16, s32); void fn_80022420(s16, s32); -void fn_80023828(s16, s32); +void Hu3DModelLightInfoSet(s16, s32); extern s16 lbl_1_bss_6; extern temp2 lbl_1_bss_8; extern f32 lbl_1_rodata_48; @@ -103,7 +103,7 @@ void fn_1_2100(void) { fn_80021228(temp_r3_3, 1); fn_80021228(temp_r3_3, 0x40000001); fn_80022420(temp_r3_3, 1); - fn_80023828(temp_r3_3, 1); + Hu3DModelLightInfoSet(temp_r3_3, 1); lbl_1_bss_6 = fn_8000E0F8(4); fn_80008364(0x740008, 0x10000000, 2); temp_r3 = fn_8000DD24(); diff --git a/src/REL/w10Dll/w10Dll.c b/src/REL/w10Dll/w10Dll.c index 1e3f54d5..66787050 100644 --- a/src/REL/w10Dll/w10Dll.c +++ b/src/REL/w10Dll/w10Dll.c @@ -1,176 +1,151 @@ -#include "common.h" -#include "REL/executor.h" +#include "include/REL/w10Dll.h" -#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) +//BSS +BoardStateSubStruct* lbl_1_bss_0; +s32 lbl_1_bss_4_pad; +void* lbl_1_bss_8; +s16 lbl_1_bss_C; +s16 lbl_1_bss_E; +s16 lbl_1_bss_10[4]; +Process* lbl_1_bss_18; +s16 lbl_1_bss_1C; +s16 lbl_1_bss_1E; +s16 lbl_1_bss_20; +s16 lbl_1_bss_22[11]; -s16 HuWinCreate(float x, float y, s16 w, s16 h, s16 frame); -typedef struct unkw10Dll { - char unk0[0x0C]; - Vec3f unk0C; - Vec3f unk18; - s32 unk24; -} unkw10Dll; //sizeof 0x28 +//DATA +unkw10Dll lbl_1_data_0[1] = { + 3300.0f, 100.0f, -900.0f, + 0.0f, 0.0f, 0.0f, + 1.0f, 1.0f, 1.0f, + 0x007B0003 +}; -typedef struct w10DllUnk01 { - u8 unk0; - f32 unk4; - f32 unk8; - f32 unkC; - f32 unk10; -} w10DllUnk01; //sizeof ? -typedef struct w10DllUnk02 { - char unk00[0x5C]; - w10DllUnk01* unk5C; -} w10DllUnk02; //sizeof ? +s16 lbl_1_data_28 = -1; +s16 lbl_1_data_2A = -1; +s16 lbl_1_data_2C = -1; +s16 lbl_1_data_2E = -1; +s16 lbl_1_data_30 = -1; +s16 lbl_1_data_32 = -1; -//this belongs to m456Dll -w10DllUnk02** fn_8002FAC0(Process*, s32); +//unused? +s16 lbl_1_data_34[] = { +0x005F, 0x0000, 0x001A, 0x0000, +0x006D, 0x0000, 0x008A, 0x0000, +0x0085, 0x0000, 0x0011, 0x0000, +0x000D, 0x0000, 0x0081, 0x0000 +}; -void espDispOn(s16); -void espPosSet(s16, f32, f32); -void espScaleSet(s16, f32, f32); -void fn_1_C10(s32); /* extern */ -void fn_8005D8E8(void); /* extern */ -void fn_8005DB6C(s16, Vec3f*, s32, f32, f32, s32); /* extern */ -void fn_8005E0C0(void); /* extern */ -void fn_80074210(s32, s32, Vec3f*); /* extern */ -void fn_8007A360(s32); /* extern */ -void fn_8007F894(void); /* extern */ -void fn_80083F84(void); /* extern */ -void fn_800884F4(s32); /* extern */ -void fn_800A4C88(void); /* extern */ -void fn_800A6B10(void); /* extern */ -extern f32 lbl_1_rodata_48; -extern f32 lbl_1_rodata_4C; -extern f32 lbl_1_rodata_50; //3200.0f; -extern f32 lbl_1_rodata_54; //-1.0f -extern s16 lbl_1_bss_20; -extern s16 lbl_1_bss_22[]; -extern f32 lbl_1_rodata_58; -extern f32 lbl_1_rodata_5C; -extern f32 lbl_1_rodata_60; -void fn_8003FD10(s16, f32, f32); -extern s16 lbl_1_bss_20; -extern f32 lbl_1_rodata_5C; -extern f32 lbl_1_rodata_60; -s16 fn_8003F958(s32, s32, s32); -void fn_8003FBEC(s16); -void fn_8008853C(s32); -extern s32 lbl_801A52E8; -void fn_800B42B4(s32); -void fn_80082AAC(s32); -void fn_800B4264(s32, s32, s32); -void fn_1_1FB0(void); -void fn_1_1E3C(s16, s16, s16); -void fn_8007500C(s32); -void fn_1_BA0(s32); -void fn_8006F0D4(s32, f32); -f32 fn_8006F128(s32); -f64 fmod(f32, f64); -void fn_1_C20(void); -void fn_8006F61C(s16, s32); -void fn_800B42BC(s16); -void fn_80023828(s32, s32); -s32 fn_8006DBD4(s16); -void fn_8005B150(void*, void*); -void fn_1_6D8(void); -void fn_1_E0(void); -void fn_8006F2E8(s32, Vec3f*); -void HuWinMesSet(s16, s32); -void fn_1_1D68(void); -void fn_1_1DEC(void); -void fn_1_AEC(void); -void fn_80042848(s16); -void fn_80045BF4(s16, s32); -void fn_80045D7C(s16, s32, s32, s32, s32); -void fn_80045E84(s16, s32); -void fn_80046F04(s32, f32*, ...); -void fn_8005D10C(void*, void*); -s16 fn_8006D9A4(s32, void*, s32); -void fn_8006DB90(s16); -void fn_8006DDE8(s16, f32); -void fn_8006E2B8(s16, s32, s32); -void fn_8006E878(s16, f32); -void fn_8006F158(s16, void*); -void fn_8006F1A8(s16, f32, f32, f32); -s32 fn_8006F220(s16 arg0, Vec3f* arg1); -void fn_8006F50C(s16, s32); -void fn_80073FF4(void*); -void fn_80073FFC(void*); -void fn_80074004(void*); -s32 fn_800745F0(s32, s32); -void fn_800772EC(s32); -void fn_80077A3C(void); -void fn_80077AAC(s16); -void fn_8007A83C(s16); -void fn_80083EDC(s16); -void fn_800A4F6C(s16); -void fn_800B3FD8(void*); -void fn_800B4274(s32, s32); -void fn_1_1AAC(void); -void fn_1_8C0(void); -void fn_1_904(void); -void fn_1_908(void); -s32 fn_1_90C(void); -void fn_1_91C(void); -void Hu3D2Dto3D(Vec3f*, s32, Vec3f*); -void fn_8005D5C0(Vec3f*); -void fn_8006F338(s16, f32, f32, f32); -s32 fn_8005B6A8(void); -void fn_8006EFBC(s16, Mtx); -void fn_8006F270(s16, f32, f32, f32); -void fn_8003FB08(s16); -extern Vec3f lbl_1_data_80[]; -extern f32 lbl_1_rodata_38; -extern f32 lbl_1_rodata_3C; -extern f32 lbl_1_rodata_40; -extern Process* lbl_1_bss_18; -extern s16 lbl_1_bss_1C; -extern s16 lbl_1_bss_1E; -extern s32 lbl_1_data_78; //no idea on the type of this -extern f64 lbl_1_rodata_28; -extern f32 lbl_1_rodata_30; -extern f32 lbl_1_rodata_34; -extern BoardStateSubStruct* lbl_1_bss_0; -extern s16 lbl_1_bss_10[12]; //could be incorrect size -extern void* lbl_1_bss_8; //unknown type -extern s16 lbl_1_bss_C; -extern s16 lbl_1_bss_E; -extern unkw10Dll lbl_1_data_0[1]; -extern s16 lbl_1_bss_22[11]; -extern s32 lbl_1_data_2A8[11]; -extern s16 lbl_1_data_28; -extern s16 lbl_1_data_2A; -extern s16 lbl_1_data_2C; -extern s16 lbl_1_data_2E; -extern s16 lbl_1_data_30; -extern s16 lbl_1_data_32; -extern s32 lbl_1_data_54; //unknown type -extern s32 lbl_1_data_5C; //unknown type -extern s32 lbl_1_data_64; //unknown type -extern s32 lbl_1_data_6C; //unknown type -extern f32 lbl_1_rodata_10; -extern f32 lbl_1_rodata_14; -extern f32 lbl_1_rodata_18; -extern f32 lbl_1_rodata_1C; -extern BoardState lbl_8018FCF8; +s32 lbl_1_data_54[2] = { + 0x007B0012, + -1 +}; -/* -void fn_1_0(void) { - fn_8005B150(&fn_1_E0, &fn_1_6D8); -} -*/ +s32 lbl_1_data_5C[2] = { + 0x00020009, + -1 +}; + +s32 lbl_1_data_64[2] = { + 0x00020018, + -1 +}; + +s32 lbl_1_data_6C[2] = { + 0x0002000E, + -1 +}; + +s32 lbl_1_data_78[2] = { + 0x007B0010, + -1 +}; + +Vec3f lbl_1_data_80[2] = { + {70.0f, 355.0f, 200.f}, + {70.0f, 175.0f, 200.f}, +}; + +w10DllUnk03 lbl_1_data_C6[11] = { +1, -1, -1, +2, -1, -1, +4, -1, -1, +5, -1, -1, +5, -1, -1, +4, -1, -1, +1, -1, -1, +3, -1, -1, +2, -1, -1, +4, -1, -1, +5, 6, -1, +}; + +w10DllUnk04 lbl_1_data_108[42] = { +{0x0000, 0000, fn_1_D2C}, +{0x0001, 0000, fn_1_D54}, +{0x0002, 0000, fn_1_D7C}, +{0x0003, 0000, fn_1_DA4}, +{0x0003, 0000, fn_1_DCC}, +{0x0003, 0000, fn_1_DF4}, +{0x0003, 0000, fn_1_E1C}, +{0x0004, 0000, fn_1_E44}, +{0x0005, 0000, fn_1_E94}, +{0x0006, 0000, fn_1_EBC}, +{0x0007, 0000, fn_1_EE4}, +{0x000A, 0000, fn_1_EE8}, +{0x000B, 0000, fn_1_F30}, +{0x0010, 0000, fn_1_F6C}, +{0x0011, 0000, fn_1_FB8}, +{0x000C, 0000, fn_1_1010}, +{0x000D, 0000, fn_1_105C}, +{0x000E, 0000, fn_1_1098}, +{0x000E, 0000, fn_1_10C0}, +{0x000F, 0000, fn_1_10F8}, +{0x0012, 0000, fn_1_1134}, +{0x0014, 0000, fn_1_1178}, +{0x0015, 0000, fn_1_11A0}, +{0x0016, 0000, fn_1_11EC}, +{0x0005, 0000, fn_1_1240}, +{0x0017, 0000, fn_1_1278}, +{0x0007, 0000, fn_1_12A0}, +{0x0005, 0000, fn_1_12DC}, +{0x0017, 0000, fn_1_1304}, +{0x0018, 0000, fn_1_132C}, +{0x0019, 0000, fn_1_1354}, +{0x0008, 0000, fn_1_137C}, +{0x0009, 0000, fn_1_13A4}, +{0x001A, 0000, fn_1_176C}, +{0x001B, 0000, fn_1_179C}, +{0x001B, 0000, fn_1_17F4}, +{0x001B, 0000, fn_1_1834}, +{0x001B, 0000, fn_1_18BC}, +{0x001C, 0000, fn_1_1908}, +{0x001C, 0000, fn_1_1930}, +{0x001C, 0000, fn_1_1958}, +{-1, 0, 0}, +}; + +s32 lbl_1_data_2A8[11] = { +0x007B0004, +0x007B0005, +0x007B0006, +0x007B0007, +0x007B0008, +0x007B0009, +0x007B000A, +0x007B000B, +0x007B000C, +0x007B000D, +0x007B000E +}; // function is probably global. only inlined in rels? -/* inline s32 get_current_board(void) { return lbl_8018FCF8.unk08 & 0x1F; } -*/ -/* void fn_1_E0(void) { f32 sp10; f32 spC; @@ -194,25 +169,25 @@ void fn_1_E0(void) { temp = fn_800745F0(0, 1); fn_800B4274(temp, 1); lbl_1_data_28 = fn_8006D9A4(0x7B0001, NULL, 0); - fn_8006DDE8(lbl_1_data_28, lbl_1_rodata_10); - fn_8006F1A8(lbl_1_data_28, lbl_1_rodata_14, lbl_1_rodata_14, lbl_1_rodata_14); + fn_8006DDE8(lbl_1_data_28, -1.0f); + fn_8006F1A8(lbl_1_data_28, 0.0f, 0.0f, 0.0f); fn_8006E2B8(lbl_1_data_28, 0, 0x40000001); - fn_8006E878(lbl_1_data_28, lbl_1_rodata_18); + fn_8006E878(lbl_1_data_28, 1.0f); lbl_1_data_2A = fn_8006D9A4(0x7B0002, NULL, 0); - fn_8006DDE8(lbl_1_data_2A, lbl_1_rodata_10); - fn_8006F1A8(lbl_1_data_2A, lbl_1_rodata_14, lbl_1_rodata_14, lbl_1_rodata_14); + fn_8006DDE8(lbl_1_data_2A, -1.0f); + fn_8006F1A8(lbl_1_data_2A, 0.0f, 0.0f, 0.0f); fn_8006E2B8(lbl_1_data_2A, 0, 0x40000001); - lbl_1_data_2C = fn_8006D9A4(0x7B0011, &lbl_1_data_54, 0); - fn_8006F1A8(lbl_1_data_2C, lbl_1_rodata_14, lbl_1_rodata_14, lbl_1_rodata_14); + lbl_1_data_2C = fn_8006D9A4(0x7B0011, lbl_1_data_54, 0); + fn_8006F1A8(lbl_1_data_2C, 0.0f, 0.0f, 0.0f); fn_8006E2B8(lbl_1_data_2C, 1, 0x40000001); - lbl_1_data_2E = fn_8006D9A4(0x20005, &lbl_1_data_5C, 0); + lbl_1_data_2E = fn_8006D9A4(0x20005, lbl_1_data_5C, 0); fn_8006E2B8(lbl_1_data_2E, 1, 0x40000001); - lbl_1_data_32 = fn_8006D9A4(0x20012, &lbl_1_data_64, 0); + lbl_1_data_32 = fn_8006D9A4(0x20012, lbl_1_data_64, 0); fn_8006E2B8(lbl_1_data_32, 1, 0x40000001); - lbl_1_data_30 = fn_8006D9A4(0x2000D, &lbl_1_data_6C, 0); + lbl_1_data_30 = fn_8006D9A4(0x2000D, lbl_1_data_6C, 0); fn_8006E2B8(lbl_1_data_30, 1, 0x40000001); fn_8005D10C(&fn_1_8C0, &fn_1_904); - for (i = 0; i < 1; i++) { + for (i = 0; i < ARRAY_COUNT(lbl_1_data_0); i++) { temp_r30 = &lbl_1_data_0[i]; if (temp_r30->unk24 != -1) { lbl_1_bss_8 = NULL; @@ -236,16 +211,14 @@ void fn_1_E0(void) { fn_800A4F6C(lbl_1_data_32); fn_80077AAC(lbl_1_data_2E); fn_8007A83C(lbl_1_data_30); - fn_80046F04(1, &spC, 0x2E003A); - lbl_1_bss_E = HuWinCreate(lbl_1_rodata_1C, lbl_1_rodata_20, spC, sp10, 1); + HuWinMesMaxSizeGet(1, &spC, 0x2E003A); + lbl_1_bss_E = HuWinCreate(-10000.0f, 390.0f, spC, sp10, 1); HuWinMesSet(lbl_1_bss_E, 0x2E003A); - fn_80045E84(lbl_1_bss_E, 0); - fn_80045BF4(lbl_1_bss_E, 1); - fn_80045D7C(lbl_1_bss_E, 7, 0, 0, 0); + HuWinMesSpeedSet(lbl_1_bss_E, 0); + HuWinPriSet(lbl_1_bss_E, 1); + HuWinMesPalSet(lbl_1_bss_E, 7, 0, 0, 0); } -*/ -/* void fn_1_6D8(void) { s32 i; for (i = 0; i < 1; i++) { @@ -280,50 +253,34 @@ void fn_1_6D8(void) { } fn_8006DB90(lbl_1_bss_0->unk8); fn_1_1DEC(); - fn_80042848(lbl_1_bss_E); + HuWinKill(lbl_1_bss_E); fn_80077A3C(); } -*/ -/* void fn_1_8C0(void) { s32 temp = fn_8006DBD4(lbl_1_data_28); - fn_80023828(temp, 1); + Hu3DModelLightInfoSet(temp, 1); } -*/ -/* void fn_1_904(void) { } -*/ -/* void fn_1_908(void) { } -*/ -/* s32 fn_1_90C(void) { return 0; } -*/ -/* void fn_1_914(void) { } -*/ -/* void fn_1_918(void) { } -*/ -/* void fn_1_91C(void) { } -*/ -/* s32 fn_1_920(s32 arg0, f32 arg8, f32 arg9) { s32 var_r31; f32 var_f29; @@ -331,34 +288,34 @@ s32 fn_1_920(s32 arg0, f32 arg8, f32 arg9) { var_r31 = 0; var_f31 = fn_8006F128(arg0); - arg8 = fmod(arg8, lbl_1_rodata_28); - if (var_f31 < lbl_1_rodata_14) { - var_f31 += lbl_1_rodata_30; + arg8 = fmod(arg8, 360.0); + if (var_f31 < 0.0f) { + var_f31 += 360.0f; } - if (arg8 < lbl_1_rodata_14) { - arg8 += lbl_1_rodata_30; + if (arg8 < 0.0f) { + arg8 += 360.0f; } if (var_f31 != arg8) { var_f29 = arg8 - var_f31; - if (var_f29 < lbl_1_rodata_14) { - var_f29 += lbl_1_rodata_30; + if (var_f29 < 0.0f) { + var_f29 += 360.0f; } - if (var_f29 < lbl_1_rodata_34) { + if (var_f29 < 180.0f) { if (var_f29 > arg9) { var_f31 = var_f31 + arg9; } else { var_f31 = arg8; } - } else if ((lbl_1_rodata_30 - var_f29) > arg9) { + } else if ((360.0f - var_f29) > arg9) { var_f31 = var_f31 - arg9; } else { var_f31 = arg8; } - if (var_f31 < lbl_1_rodata_14) { - var_f31 += lbl_1_rodata_30; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; } - if (var_f31 >= lbl_1_rodata_30) { - var_f31 -= lbl_1_rodata_30; + if (var_f31 >= 360.0f) { + var_f31 -= 360.0f; } fn_8006F0D4(arg0, var_f31); } else { @@ -366,9 +323,7 @@ s32 fn_1_920(s32 arg0, f32 arg8, f32 arg9) { } return var_r31; } -*/ -/* void fn_1_AEC(void) { lbl_1_bss_1C = 0; lbl_1_bss_1E = fn_8006D9A4(0x7B000F, &lbl_1_data_78, 0); @@ -377,9 +332,7 @@ void fn_1_AEC(void) { fn_8006F61C(lbl_1_bss_1E, 6); lbl_1_bss_18 = HuPrcCreate(fn_1_C20, 0x1FFF, 0x1800, 0); } -*/ -/* void fn_1_BA0(s32 arg0) { s32 var_r31; @@ -395,15 +348,11 @@ void fn_1_BA0(s32 arg0) { BoardMessWait(); BoardMessKill(); } -*/ -/* -void fn_1_C10(void) { +void fn_1_C10(s32 arg0) { HuPrcEnd(); } -*/ -/* void fn_1_C20(void) { Mtx sp20; Vec3f sp14; @@ -418,111 +367,81 @@ 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', lbl_1_rodata_38); + PSMTXRotRad(sp20, 'y', 0.2617994f); fn_8006EFBC(lbl_1_bss_1E, sp20); - fn_8006F270(lbl_1_bss_1E, sp8.x, lbl_1_rodata_3C, lbl_1_rodata_3C); - fn_8006F338(lbl_1_bss_1E, lbl_1_rodata_40, lbl_1_rodata_40, lbl_1_rodata_40); + fn_8006F270(lbl_1_bss_1E, sp8.x, 0.0f, 0.0f); + fn_8006F338(lbl_1_bss_1E, 0.2f, 0.2f, 0.2f); HuPrcVSleep(); } } -*/ -/* 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); @@ -530,62 +449,46 @@ void fn_1_FB8(void) { 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; @@ -593,9 +496,7 @@ void fn_1_11A0(void) { temp = fn_800745F0(0, 1); fn_800B4274(temp, 0); } -*/ -/* void fn_1_11EC(void) { s32 temp; @@ -604,342 +505,38 @@ void fn_1_11EC(void) { 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; - Vec3f sp8; - s32 temp_r3_2; - - fn_1_BA0(0x2E0023); - for (i = 0; i < 4; i++) { - gPlayerData[i].flags.unk0 = 1; - } - fn_800A4C88(); - fn_800884F4(0); - fn_1_C10(0); - fn_1_BA0(0x2E002B); - sp8.x = lbl_1_rodata_48; - sp8.y = sp8.z = lbl_1_rodata_4C; - temp_r3_2 = fn_800745F0(0, 0x80000); - fn_80074210(0, temp_r3_2, &sp14); - fn_8006F158(lbl_1_bss_0->unk8, &sp14); - fn_8005DB6C(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E); - fn_8005E0C0(); - fn_1_BA0(0x2E002C); - fn_8007A360(temp_r3_2); - fn_8005DB6C(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E); - fn_8005E0C0(); - temp_r3_2 = fn_800745F0(0, 0x10000000); - fn_80074210(0, temp_r3_2, &sp14); - fn_8006F158(lbl_1_bss_0->unk8, &sp14); - fn_8005DB6C(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E); - fn_8005E0C0(); - fn_1_BA0(0x2E002E); - fn_8007F894(); - fn_8005DB6C(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E); - fn_8005E0C0(); - temp_r3_2 = fn_800745F0(0, 0x08000000); - fn_80074210(0, temp_r3_2, &sp14); - fn_8006F158(lbl_1_bss_0->unk8, &sp14); - fn_8005DB6C(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E); - fn_8005E0C0(); - fn_1_BA0(0x2E0030); - fn_800A6B10(); - fn_8005DB6C(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E); - fn_8005E0C0(); - fn_1_BA0(0x2E0032); - fn_80083F84(); - fn_8005D8E8(); - fn_8005E0C0(); - fn_1_BA0(0x2E0033); - fn_1_BA0(0x2E0034); - fn_1_1E3C(8, 0x122, 0x8C); - fn_1_BA0(0x2E0035); - fn_1_1FB0(); - fn_1_1E3C(9, 0x122, 0x8C); - fn_1_BA0(0x2E0036); - fn_1_1FB0(); - fn_1_1E3C(0xA, 0x122, 0x8C); - fn_1_BA0(0x2E0037); - fn_1_1FB0(); - fn_1_BA0(0x2E0038); - fn_1_BA0(0x2E0039); - if (lbl_1_bss_C == 0) { - lbl_1_bss_C = 1; - fn_80070EE8(0, 0x1F3); - fn_8005B5FC(); - } - fn_800B3FD8(NULL); - while (1) { - HuPrcVSleep(); - } -} -*/ - -/* -void fn_1_176C(void) { - fn_1_C10(1); - fn_1_BA0(0x2E0024); -} -*/ - -/* -void fn_1_179C(void) { - fn_1_BA0(0x2E0025); - gPlayerData[1].flags.unk0 = 2; - gPlayerData[3].flags.unk0 = 2; -} -*/ - -/* -void fn_1_17F4(void) { - fn_1_BA0(0x2E0026); - gPlayerData[0].flags.unk0 = 2; -} -*/ - -/* -void fn_1_1834(void) { - fn_1_BA0(0x2E0027); - gPlayerData[0].flags.unk0 = 1; - gPlayerData[1].flags.unk0 = 1; - gPlayerData[2].flags.unk0 = 1; - gPlayerData[3].flags.unk0 = 2; -} -*/ - -/* -void fn_1_18BC(void) { - fn_1_BA0(0x2E0028); - fn_1_BA0(0x2E0029); - lbl_801A52E8 = 0; - fn_8008853C(0); -} -*/ - -/* -void fn_1_1908(void) { - fn_1_BA0(0x2E002D); -} -*/ - -/* -void fn_1_1930(void) { - fn_1_BA0(0x2E002F); -} -*/ - -/* -void fn_1_1958(void) { - fn_1_BA0(0x2E0031); -} -*/ - -/* -void fn_1_1980(void) { - -} -*/ - -/* -void fn_1_1984(void) { - s32 contPortIndex; - s32 i; - - if (lbl_1_bss_C == 0) { - if (fn_80041600() != 0) { - HuWinDispOff(lbl_1_bss_E); - return; - } - HuWinDispOn(lbl_1_bss_E); - if (fn_8005B6A8() != 0) { - return; - } - for (i = 0; i < ARRAY_COUNT(gPlayerData); i++) { - contPortIndex = gPlayerData[i].controllerPort; - if (contPortIndex == -1) { - continue; - } - if (HuPadStatGet(contPortIndex) == 0 && HuPadBtnDown[contPortIndex] & 0x1000) { - break; - } - } - if (i != 4) { - lbl_1_bss_C = 1; - OSReport("@@@@@@@@@@@@@@ Tutorial Exit @@@@@@@@@@@@@@\n\000"); - fn_80070EE8(0, 0x1F3); - fn_8005B5FC(); - fn_800B3FD8(NULL); - } - } -} -*/ - -/* -int fn_1_1AAC(s16 arg0, s32 arg1) { - s32 i; - // s32 contPortIndex; - - //sp10 = arg1; - if (arg0 == 0x1E) { - if (lbl_1_bss_C == 0) { - if (fn_80041600() != 0) { - HuWinDispOff(lbl_1_bss_E); - } else { - HuWinDispOn(lbl_1_bss_E); - if (fn_8005B6A8() == 0) { - s32 contPortIndex; - for (i = 0; i < ARRAY_COUNT(gPlayerData); i++) { - contPortIndex = gPlayerData[i].controllerPort; - if (contPortIndex == -1) { - continue; - } - if (HuPadStatGet(contPortIndex) == 0 && HuPadBtnDown[contPortIndex] & 0x1000) { - break; - } - } - if (i != 4) { - lbl_1_bss_C = 1; - OSReport("@@@@@@@@@@@@@@ Tutorial Exit @@@@@@@@@@@@@@\n\000"); - fn_80070EE8(0, 0x1F3); - fn_8005B5FC(); - fn_800B3FD8(NULL); - } - } - } - } - return; - } - if (arg0 != 0x1D) { - OSReport("Tutorial Hook P0:%d P1:%d P2:%d P3:%d SCEN:%d CUE:%d PRM:%d DICE:%d MSG:%d\n", - (gPlayerData[0].characterID >> 5) & 1, (gPlayerData[1].characterID >> 5) & 1, - (gPlayerData[2].characterID >> 5) & 1, (gPlayerData[3].characterID >> 5) & 1, - lbl_1_bss_0->unk0, arg0, arg1, lbl_1_bss_0->unk4, lbl_1_bss_0->unk6); - if (lbl_1_data_108[lbl_1_bss_0->unk0].unk0 != -1) { - if (arg0 == 5) { - fn_8008831C(&lbl_1_data_C6[lbl_1_bss_0->unk4++]); - } - if (arg0 == lbl_1_data_108[lbl_1_bss_0->unk0].unk0) { - void (*temp_r3_3)() = lbl_1_data_108[lbl_1_bss_0->unk0++].unk4; - temp_r3_3(); - } - } - } -} -*/ - -/* -void fn_1_1D68(void) { - s32 temp_r4; - s32 temp_r5; - s32 i; - - for (i = 0; i < 11; i++) { - lbl_1_bss_22[i] = fn_8003F958(lbl_1_data_2A8[i], 0, 0); - fn_8003FBEC(lbl_1_bss_22[i]); - } -} -*/ - -/* -void fn_1_1DEC(void) { - s32 i; - - for (i = 0; i < 11; i++) { - fn_8003FB08(lbl_1_bss_22[i]); - } -} -*/ - -/* -void fn_1_1E3C(s16 arg0, s16 arg1, s16 arg2) { - f32 var_f31; - f32 var_f30; - u32 i; - - lbl_1_bss_20 = lbl_1_bss_22[arg0]; - espPosSet(lbl_1_bss_20, arg1, arg2); - var_f31 = lbl_1_rodata_58; - var_f30 = lbl_1_rodata_58; - espDispOn(lbl_1_bss_20); - for (i = 0; i < 15; i++) { - var_f31 += lbl_1_rodata_5C; - var_f30 += lbl_1_rodata_5C; - espScaleSet(lbl_1_bss_20, var_f31, var_f30); - HuPrcVSleep(); - } - espScaleSet(lbl_1_bss_20, lbl_1_rodata_60, lbl_1_rodata_60); -} -*/ - -/* -void fn_1_1FB0(void) { - f32 var_f31; - f32 var_f30; - u32 i; - - var_f31 = lbl_1_rodata_60; - var_f30 = lbl_1_rodata_60; - for (i = 0; i < 15; i++) { - var_f31 -= lbl_1_rodata_5C; - var_f30 -= lbl_1_rodata_5C; - fn_8003FD10(lbl_1_bss_20, var_f31, var_f30); - HuPrcVSleep(); - } - fn_8003FBEC(lbl_1_bss_20); -} -*/ \ No newline at end of file diff --git a/src/REL/w10Dll/w10Dll2.c b/src/REL/w10Dll/w10Dll2.c new file mode 100644 index 00000000..3b345602 --- /dev/null +++ b/src/REL/w10Dll/w10Dll2.c @@ -0,0 +1,253 @@ +#include "include/REL/w10Dll.h" + +void fn_1_13A4(void) { + s32 i; + Vec3f sp14; + Vec3f sp8; + s32 temp_r3_2; + + fn_1_BA0(0x2E0023); + for (i = 0; i < 4; i++) { + gPlayerData[i].flags.unk0 = 1; + } + fn_800A4C88(); + fn_800884F4(0); + fn_1_C10(0); + fn_1_BA0(0x2E002B); + sp8.x = -33.0f; + sp8.y = sp8.z = 0.0f; + temp_r3_2 = fn_800745F0(0, 0x80000); + fn_80074210(0, temp_r3_2, &sp14); + fn_8006F158(lbl_1_bss_0->unk8, &sp14); + fn_8005DB6C(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E); + fn_8005E0C0(); + fn_1_BA0(0x2E002C); + fn_8007A360(temp_r3_2); + fn_8005DB6C(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E); + fn_8005E0C0(); + temp_r3_2 = fn_800745F0(0, 0x10000000); + fn_80074210(0, temp_r3_2, &sp14); + fn_8006F158(lbl_1_bss_0->unk8, &sp14); + fn_8005DB6C(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E); + fn_8005E0C0(); + fn_1_BA0(0x2E002E); + fn_8007F894(); + fn_8005DB6C(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E); + fn_8005E0C0(); + temp_r3_2 = fn_800745F0(0, 0x08000000); + fn_80074210(0, temp_r3_2, &sp14); + fn_8006F158(lbl_1_bss_0->unk8, &sp14); + fn_8005DB6C(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E); + fn_8005E0C0(); + fn_1_BA0(0x2E0030); + fn_800A6B10(); + fn_8005DB6C(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E); + fn_8005E0C0(); + fn_1_BA0(0x2E0032); + fn_80083F84(); + fn_8005D8E8(); + fn_8005E0C0(); + fn_1_BA0(0x2E0033); + fn_1_BA0(0x2E0034); + fn_1_1E3C(8, 0x122, 0x8C); + fn_1_BA0(0x2E0035); + fn_1_1FB0(); + fn_1_1E3C(9, 0x122, 0x8C); + fn_1_BA0(0x2E0036); + fn_1_1FB0(); + fn_1_1E3C(0xA, 0x122, 0x8C); + fn_1_BA0(0x2E0037); + fn_1_1FB0(); + fn_1_BA0(0x2E0038); + fn_1_BA0(0x2E0039); + if (lbl_1_bss_C == 0) { + lbl_1_bss_C = 1; + fn_80070EE8(0, 0x1F3); + fn_8005B5FC(); + } + fn_800B3FD8(NULL); + while (1) { + HuPrcVSleep(); + } +} + +void fn_1_176C(void) { + fn_1_C10(1); + fn_1_BA0(0x2E0024); +} + +void fn_1_179C(void) { + fn_1_BA0(0x2E0025); + gPlayerData[1].flags.unk0 = 2; + gPlayerData[3].flags.unk0 = 2; +} + +void fn_1_17F4(void) { + fn_1_BA0(0x2E0026); + gPlayerData[0].flags.unk0 = 2; +} + +void fn_1_1834(void) { + fn_1_BA0(0x2E0027); + gPlayerData[0].flags.unk0 = 1; + gPlayerData[1].flags.unk0 = 1; + gPlayerData[2].flags.unk0 = 1; + gPlayerData[3].flags.unk0 = 2; +} + +void fn_1_18BC(void) { + fn_1_BA0(0x2E0028); + fn_1_BA0(0x2E0029); + lbl_801A52E8 = 0; + fn_8008853C(0); +} + +void fn_1_1908(void) { + fn_1_BA0(0x2E002D); +} + +void fn_1_1930(void) { + fn_1_BA0(0x2E002F); +} + +void fn_1_1958(void) { + fn_1_BA0(0x2E0031); +} + +void fn_1_1980(void) { + +} + +void fn_1_1984(void) { + s32 contPortIndex; + s32 i; + + if (lbl_1_bss_C == 0) { + if (fn_80041600() != 0) { + HuWinDispOff(lbl_1_bss_E); + return; + } + HuWinDispOn(lbl_1_bss_E); + if (fn_8005B6A8() != 0) { + return; + } + for (i = 0; i < ARRAY_COUNT(gPlayerData); i++) { + contPortIndex = gPlayerData[i].controllerPort; + if (contPortIndex == -1) { + continue; + } + if (HuPadStatGet(contPortIndex) == 0 && HuPadBtnDown[contPortIndex] & 0x1000) { + break; + } + } + if (i != 4) { + lbl_1_bss_C = 1; + OSReport("@@@@@@@@@@@@@@ Tutorial Exit @@@@@@@@@@@@@@\n\000"); + fn_80070EE8(0, 0x1F3); + fn_8005B5FC(); + fn_800B3FD8(NULL); + } + } +} + +int fn_1_1AAC(s16 arg0, s32 arg1) { + s32 i; + if (arg0 == 0x1E) { + if (lbl_1_bss_C == 0) { + if (fn_80041600() != 0) { + HuWinDispOff(lbl_1_bss_E); + } else { + HuWinDispOn(lbl_1_bss_E); + if (fn_8005B6A8() == 0) { + s32 contPortIndex; + for (i = 0; i < ARRAY_COUNT(gPlayerData); i++) { + contPortIndex = gPlayerData[i].controllerPort; + if (contPortIndex == -1) { + continue; + } + if (HuPadStatGet(contPortIndex) == 0 && HuPadBtnDown[contPortIndex] & 0x1000) { + break; + } + } + if (i != 4) { + lbl_1_bss_C = 1; + OSReport("@@@@@@@@@@@@@@ Tutorial Exit @@@@@@@@@@@@@@\n\000"); + fn_80070EE8(0, 0x1F3); + fn_8005B5FC(); + fn_800B3FD8(NULL); + } + } + } + } + return; + } + if (arg0 != 0x1D) { + OSReport("Tutorial Hook P0:%d P1:%d P2:%d P3:%d SCEN:%d CUE:%d PRM:%d DICE:%d MSG:%d\n", + (gPlayerData[0].characterID >> 5) & 1, (gPlayerData[1].characterID >> 5) & 1, + (gPlayerData[2].characterID >> 5) & 1, (gPlayerData[3].characterID >> 5) & 1, + lbl_1_bss_0->unk0, arg0, arg1, lbl_1_bss_0->unk4, lbl_1_bss_0->unk6); + if (lbl_1_data_108[lbl_1_bss_0->unk0].unk0 != -1) { + if (arg0 == 5) { + fn_8008831C(&lbl_1_data_C6[lbl_1_bss_0->unk4++]); + } + if (arg0 == lbl_1_data_108[lbl_1_bss_0->unk0].unk0) { + void (*temp_r3_3)() = lbl_1_data_108[lbl_1_bss_0->unk0++].unk4; + temp_r3_3(); + } + } + } +} + +void fn_1_1D68(void) { + s32 temp_r4; + s32 temp_r5; + s32 i; + + for (i = 0; i < 11; i++) { + lbl_1_bss_22[i] = espEntry(lbl_1_data_2A8[i], 0, 0); + espDispOff(lbl_1_bss_22[i]); + } +} + +void fn_1_1DEC(void) { + s32 i; + + for (i = 0; i < 11; i++) { + espKill(lbl_1_bss_22[i]); + } +} + +void fn_1_1E3C(s16 arg0, s16 arg1, s16 arg2) { + f32 var_f31; + f32 var_f30; + u32 i; + + lbl_1_bss_20 = lbl_1_bss_22[arg0]; + espPosSet(lbl_1_bss_20, arg1, arg2); + var_f31 = 0.0f; + var_f30 = 0.0f; + espDispOn(lbl_1_bss_20); + for (i = 0; i < 15; i++) { + var_f31 += 0.06666667f; + var_f30 += 0.06666667f; + espScaleSet(lbl_1_bss_20, var_f31, var_f30); + HuPrcVSleep(); + } + espScaleSet(lbl_1_bss_20, 1.0f, 1.0f); +} + +void fn_1_1FB0(void) { + f32 var_f31; + f32 var_f30; + u32 i; + + var_f31 = 1.0f; + var_f30 = 1.0f; + for (i = 0; i < 15; i++) { + var_f31 -= 0.06666667f; + var_f30 -= 0.06666667f; + espScaleSet(lbl_1_bss_20, var_f31, var_f30); + HuPrcVSleep(); + } + espDispOff(lbl_1_bss_20); +} diff --git a/src/REL/w10Dll/w10Dll_init.c b/src/REL/w10Dll/w10Dll_init.c new file mode 100644 index 00000000..ed4247bb --- /dev/null +++ b/src/REL/w10Dll/w10Dll_init.c @@ -0,0 +1,23 @@ +#include "include/REL/w10Dll.h" + +void fn_1_0(void) { + fn_8005B150(&fn_1_E0, &fn_1_6D8); +} + +int _prolog(void) { + const VoidFunc* ctors = _ctors; + while (*ctors != 0) { + (**ctors)(); + ctors++; + } + fn_8005B150(&fn_1_E0, &fn_1_6D8); + return 0; +} + +void _epilog(void) { + const VoidFunc* dtors = _dtors; + while (*dtors != 0) { + (**dtors)(); + dtors++; + } +} \ No newline at end of file