diff --git a/include/functions.h b/include/functions.h index 29797dc..8eefa7a 100644 --- a/include/functions.h +++ b/include/functions.h @@ -11,7 +11,6 @@ // TODO: Assign these to a .c file f32 func_global_asm_80612790(s16 arg0); f32 func_global_asm_80612794(s16 arg0); -void func_global_asm_8061C464(Actor *arg0, Actor *arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9, f32 arg10); void func_global_asm_806A36F4(void); u8 func_global_asm_806E770C(void); void func_global_asm_8073243C(void); @@ -69,12 +68,12 @@ void func_dk64_boot_80002750(void); // TODO: func_dk64_boot_800029EC has no documented signature u8 *strcpy(u8 *dest, u8 const *src); // TODO: func_dk64_boot_80002A64 has no documented signature -// TODO: func_dk64_boot_80002ABC has no documented signature but has been matched +u8 *func_dk64_boot_80002ABC(u8 *str, u8 *arg1); // TODO: func_dk64_boot_80002B0C has no documented signature // TODO: func_dk64_boot_80002BB8 has no documented signature -// TODO: func_dk64_boot_80002C74 has no documented signature but has been matched +s32 func_dk64_boot_80002C74(u8 *str, u8 *arg1); // TODO: func_dk64_boot_80002CE8 has no documented signature -// TODO: func_dk64_boot_80002D60 has no documented signature but has been matched +u8 *func_dk64_boot_80002D60(u8 *str, u8 *ptr); // TODO: func_dk64_boot_80002DE4 has no documented signature void *memset(void *dest, s32 val, u32 len); u8 *strchr(u8 const *str, s32 c); @@ -99,16 +98,16 @@ s32 func_dk64_boot_80005070(u32 frequency); //s32 osAiSetFrequency(u32 frequency void func_dk64_boot_800055D0(void); // dk64_boot/ll.c -// TODO: __ull_rshift has no documented signature but has been matched -// TODO: __ull_rem has no documented signature but has been matched +u64 __ull_rshift(u64 arg0, u64 arg1); +u64 __ull_rem(u64 arg0, u64 arg1); u64 __ull_div(u64, u64); -// TODO: __ll_lshift has no documented signature but has been matched -// TODO: __ll_rem has no documented signature but has been matched -// TODO: __ll_div has no documented signature but has been matched +s64 __ll_lshift(u64 arg0, u64 arg1); +s64 __ll_rem(u64 arg0, u64 arg1); +s64 __ll_div(s64 arg0, s64 arg1); u64 __ll_mul(u64, u64); -// TODO: __ull_divremi has no documented signature but has been matched -// TODO: __ll_mod has no documented signature but has been matched -// TODO: __ll_rshift has no documented signature but has been matched +void __ull_divremi(u64 *div, u64 *rem, u64 arg2, u16 arg3); +s64 __ll_mod(s64 arg0, s64 arg1); +s64 __ll_rshift(s64 arg0, s64 arg1); s32 func_dk64_boot_80005A70(void); // dk64_boot/io/contreaddata.c @@ -315,7 +314,7 @@ u8 func_global_asm_8060A900(void); void func_global_asm_8060AA04(void); // TODO: func_global_asm_8060AA58 has no documented signature u8 func_global_asm_8060AB38(s32 arg0); -// TODO: func_global_asm_8060AB48 has no documented signature but has been matched +void func_global_asm_8060AB48(OSContPad *arg0); u8 func_global_asm_8060AC28(void); // TODO: func_global_asm_8060AC34 has no documented signature // TODO: func_global_asm_8060AC7C has no documented signature @@ -371,7 +370,7 @@ void func_global_asm_8060DEA8(void); void func_global_asm_8060DEC8(void); // saveTheGame() void func_global_asm_8060E128(s32 arg0); void func_global_asm_8060E1A8(void); -u8* getFlagBlockAddress(u8 flagType); // TODO: Can we use the FlagTypes enum? Needs to be a u8 to match +u8 *getFlagBlockAddress(u8 flagType); // TODO: Can we use the FlagTypes enum? Needs to be a u8 to match u8 func_global_asm_8060E3B0(u16 arg0, u8 arg1); void func_global_asm_8060E430(u16 arg0, u8 arg1, u8 arg2); @@ -560,8 +559,8 @@ s32 func_global_asm_80615B84(Actor *arg0); s32 func_global_asm_80615BDC(Actor *arg0); s32 func_global_asm_80615C34(Actor *arg0); s32 func_global_asm_80615CE4(Actor *arg0); -// TODO: func_global_asm_80615DA4 has no documented signature -// TODO: func_global_asm_80615E74 has no documented signature +s32 func_global_asm_80615DA4(Actor *arg0); +s32 func_global_asm_80615E74(Actor *arg0); s32 func_global_asm_80615FA0(Actor *arg0); s32 func_global_asm_8061600C(Actor *arg0); // TODO: func_global_asm_8061607C has no documented signature @@ -675,7 +674,7 @@ void func_global_asm_8061C2D8(Actor *camera, s32 arg1); void func_global_asm_8061C2F0(Actor *camera, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, u8 arg7); void func_global_asm_8061C39C(Actor *camera); void func_global_asm_8061C458(Actor *camera, s32 arg1); -// TODO: func_global_asm_8061C464 has no documented signature +void func_global_asm_8061C464(Actor *arg0, Actor *arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9, f32 arg10); void func_global_asm_8061C518(Actor *arg0, Actor *arg1, u8 arg2, s16 arg3, s16 arg4, s16 arg5, s16 arg6, s16 arg7, s16 arg8, s16 arg9, f32 argA); void func_global_asm_8061C600(Actor *arg0, Actor *arg1, u8 arg2, s16 arg3, s16 arg4, s16 arg5, s16 arg6, s16 arg7, s16 arg8, s16 arg9, f32 argA); void func_global_asm_8061C6A8(Actor *arg0, Actor *arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9, f32 arg10); @@ -3618,13 +3617,13 @@ void func_global_asm_8071F8E4(Struct80717D84 *arg0, u8 *arg1); // global_asm/code_126260.c // TODO: func_global_asm_80721560 has no documented signature -// TODO: func_global_asm_807215AC has no documented signature but has been matched -// TODO: func_global_asm_807215D0 has no documented signature but has been matched -// TODO: func_global_asm_807215EC has no documented signature but has been matched +void func_global_asm_807215AC(s8 arg0, s8 arg1, s8 arg2); +void func_global_asm_807215D0(s8 arg0, s8 arg1); +void func_global_asm_807215EC(void); // TODO: func_global_asm_8072167C has no documented signature void addActorRecolor(Actor *actor, s16 x, s16 y, s16 z, u8 alpha, u8 red, u8 green, u8 blue, u8); // TODO: func_global_asm_80721814 has no documented signature -// TODO: func_global_asm_80722280 has no documented signature +void func_global_asm_80722280(void); // TODO: func_global_asm_80722294 has no documented signature // global_asm/code_127B00.c diff --git a/progress/progress.global_asm.csv b/progress/progress.global_asm.csv index 222faa1..ca1e882 100644 --- a/progress/progress.global_asm.csv +++ b/progress/progress.global_asm.csv @@ -141,7 +141,7 @@ us,asm,func_global_asm_8069A7C8,940,no us,asm,func_global_asm_80714A28,16,yes us,asm,func_global_asm_80711BD0,960,no us,asm,func_global_asm_80600340,172,yes -us,asm,func_global_asm_80615E74,300,no +us,asm,func_global_asm_80615E74,300,yes us,asm,func_global_asm_80653684,384,yes us,asm,func_global_asm_8060BCA0,520,yes us,asm,func_global_asm_8060DEA8,32,yes @@ -2200,7 +2200,7 @@ us,asm,func_global_asm_8064216C,152,yes us,asm,func_global_asm_8067BC88,32,yes us,asm,func_global_asm_806960A4,1232,yes us,asm,func_global_asm_80670F04,160,yes -us,asm,func_global_asm_80615DA4,208,no +us,asm,func_global_asm_80615DA4,208,yes us,asm,func_global_asm_806A8158,4044,no us,asm,func_global_asm_806A7B04,36,yes us,asm,func_global_asm_8070943C,40,yes diff --git a/progress/progress.total.csv b/progress/progress.total.csv index e0b50c4..8fd3789 100644 --- a/progress/progress.total.csv +++ b/progress/progress.total.csv @@ -141,7 +141,7 @@ us,asm,func_global_asm_8069A7C8,940,no us,asm,func_global_asm_80714A28,16,yes us,asm,func_global_asm_80711BD0,960,no us,asm,func_global_asm_80600340,172,yes -us,asm,func_global_asm_80615E74,300,no +us,asm,func_global_asm_80615E74,300,yes us,asm,func_global_asm_80653684,384,yes us,asm,func_global_asm_8060BCA0,520,yes us,asm,func_global_asm_8060DEA8,32,yes @@ -2200,7 +2200,7 @@ us,asm,func_global_asm_8064216C,152,yes us,asm,func_global_asm_8067BC88,32,yes us,asm,func_global_asm_806960A4,1232,yes us,asm,func_global_asm_80670F04,160,yes -us,asm,func_global_asm_80615DA4,208,no +us,asm,func_global_asm_80615DA4,208,yes us,asm,func_global_asm_806A8158,4044,no us,asm,func_global_asm_806A7B04,36,yes us,asm,func_global_asm_8070943C,40,yes diff --git a/progress/progress_global_asm.svg b/progress/progress_global_asm.svg index 3188ab2..e5e10e2 100644 --- a/progress/progress_global_asm.svg +++ b/progress/progress_global_asm.svg @@ -17,7 +17,7 @@ global_asm - 36.3456% - 36.3456% + 36.3868% + 36.3868% diff --git a/progress/progress_total.svg b/progress/progress_total.svg index b7e4cac..97deb84 100644 --- a/progress/progress_total.svg +++ b/progress/progress_total.svg @@ -17,7 +17,7 @@ Donkey Kong 64 (US) - 38.6799% - 38.6799% + 38.7107% + 38.7107% diff --git a/src/dk64_boot/dk64_boot_30E0.c b/src/dk64_boot/dk64_boot_30E0.c index b908863..5eea735 100644 --- a/src/dk64_boot/dk64_boot_30E0.c +++ b/src/dk64_boot/dk64_boot_30E0.c @@ -28,10 +28,10 @@ void func_dk64_boot_800024E0(u8 **arg0, s32 *arg1, void *arg2) { } } +// very close, just missing a few sltu instructions #pragma GLOBAL_ASM("asm/nonmatchings/dk64_boot/dk64_boot_30E0/func_dk64_boot_800025A4.s") /* -// very close, just missing a few sltu instructions extern s32 D_dk64_boot_8000EEE4; extern s32 D_dk64_boot_80013ACC; extern s32 D_dk64_boot_80013AEC; diff --git a/src/global_asm/code_0.c b/src/global_asm/code_0.c index 53a1433..f610981 100644 --- a/src/global_asm/code_0.c +++ b/src/global_asm/code_0.c @@ -75,8 +75,6 @@ void func_global_asm_8060B140(s32, s32*, s32*, s32, s32, s32, s32); void func_global_asm_80712A40(void); void func_global_asm_80605510(void); -void func_global_asm_807215EC(); - void func_global_asm_80650E20(s32* arg0); void func_global_asm_806886E0(s32* arg0, s32 arg1, s32 arg2); diff --git a/src/global_asm/code_119370.c b/src/global_asm/code_119370.c index 2fabf2e..3e6292a 100644 --- a/src/global_asm/code_119370.c +++ b/src/global_asm/code_119370.c @@ -3,6 +3,7 @@ extern Struct80717D84 *D_minecart_80028C30; +extern s32 D_global_asm_8071FB54; extern s32 D_global_asm_8071FEF4; extern s32 D_global_asm_8071FFA0; // TODO: Datatype @@ -11,41 +12,48 @@ extern u8 D_global_asm_8074450C; extern u8 D_global_asm_80750AB4; extern s16 D_global_asm_807502D0; +extern f32 D_global_asm_80755674; +extern f32 D_global_asm_80755678; + +// .rodata +extern f64 D_global_asm_8075E6D0; +extern f64 D_global_asm_8075E6D8; +extern f64 D_global_asm_8075E6E0; +extern f64 D_global_asm_8075E6E8; +extern f64 D_global_asm_8075E6F0; +extern f64 D_global_asm_8075E6F8; +extern f64 D_global_asm_8075E700; +extern f64 D_global_asm_8075E708; +extern f64 D_global_asm_8075E710; +extern f64 D_global_asm_8075E718; +extern f64 D_global_asm_8075E720; extern f32 D_global_asm_8075E728; extern f32 D_global_asm_8075E72C; extern f32 D_global_asm_8075E730; extern f64 D_global_asm_8075E738; extern f64 D_global_asm_8075E740; -extern f64 D_global_asm_8075E888; -extern f64 D_global_asm_8075E890; -extern f64 D_global_asm_8075E898; -extern f32 D_global_asm_8075E8A0; -extern f64 D_global_asm_8075E8A8; -extern f64 D_global_asm_8075EA70; -extern f64 D_global_asm_8075EA78; -extern f32 D_global_asm_8075EA80; -extern f64 D_global_asm_8075EA88; -extern f32 D_global_asm_8075EA90; -extern f64 D_global_asm_8075EA98; -extern f64 D_global_asm_8075EAA0; -extern f64 D_global_asm_8075EAB8; -extern f64 D_global_asm_8075EAC0; -extern f64 D_global_asm_8075EAC8; - -extern f64 D_global_asm_8075EAD8; - -extern f64 D_global_asm_8075E6D0; -extern f64 D_global_asm_8075E6D8; - -extern f64 D_global_asm_8075E708; -extern f64 D_global_asm_8075E710; -extern f64 D_global_asm_8075E718; -extern f64 D_global_asm_8075E720; +extern f64 D_global_asm_8075E748; +extern f64 D_global_asm_8075E750; extern f64 D_global_asm_8075E770; extern f64 D_global_asm_8075E778; extern f64 D_global_asm_8075E780; +extern f32 D_global_asm_8075E840; +extern f32 D_global_asm_8075E844; +extern f64 D_global_asm_8075E848; +extern f64 D_global_asm_8075E850; +extern f64 D_global_asm_8075E858; +extern f64 D_global_asm_8075E860; +extern f64 D_global_asm_8075E868; +extern f64 D_global_asm_8075E870; +extern f64 D_global_asm_8075E878; +extern f64 D_global_asm_8075E880; +extern f64 D_global_asm_8075E888; +extern f64 D_global_asm_8075E890; +extern f64 D_global_asm_8075E898; +extern f32 D_global_asm_8075E8A0; +extern f64 D_global_asm_8075E8A8; extern f32 D_global_asm_8075E8B0; extern f32 D_global_asm_8075E8B4; extern f64 D_global_asm_8075E8B8; @@ -55,19 +63,44 @@ extern f64 D_global_asm_8075E8D0; extern f32 D_global_asm_8075E8D8; extern f32 D_global_asm_8075E8DC; extern f32 D_global_asm_8075E8E0; - +extern f64 D_global_asm_8075E8E8; +extern f64 D_global_asm_8075E8F0; extern f64 D_global_asm_8075E8F8; - +extern f64 D_global_asm_8075E900; +extern f64 D_global_asm_8075E908; +extern f64 D_global_asm_8075E910; +extern f64 D_global_asm_8075E930; +extern f64 D_global_asm_8075E938; +extern f64 D_global_asm_8075E940; +extern f64 D_global_asm_8075E948; extern f32 D_global_asm_8075E950; extern f32 D_global_asm_8075E954; extern f32 D_global_asm_8075E958; extern f32 D_global_asm_8075E95C; extern f32 D_global_asm_8075E960; extern f32 D_global_asm_8075E964; +extern f32 D_global_asm_8075E968; +extern f64 D_global_asm_8075E970; extern f32 D_global_asm_8075E978; extern f64 D_global_asm_8075E980; +extern f64 D_global_asm_8075E988; extern f64 D_global_asm_8075E990; extern f32 D_global_asm_8075E998; +extern f64 D_global_asm_8075E9A0; +extern f64 D_global_asm_8075E9A8; +extern f64 D_global_asm_8075E9B0; +extern f64 D_global_asm_8075E9B8; +extern f64 D_global_asm_8075E9C8; +extern f64 D_global_asm_8075E9D0; +extern f32 D_global_asm_8075E9E8; +extern f64 D_global_asm_8075E9F0; +extern f64 D_global_asm_8075E9F8; +extern f64 D_global_asm_8075EA00; +extern f64 D_global_asm_8075EA08; +extern f32 D_global_asm_8075EA10; +extern f64 D_global_asm_8075EA18; +extern f32 D_global_asm_8075EA20; +extern f32 D_global_asm_8075EA24; extern f32 D_global_asm_8075EA28; extern f32 D_global_asm_8075EA2C; extern f64 D_global_asm_8075EA30; @@ -75,6 +108,28 @@ extern f32 D_global_asm_8075EA38; extern f64 D_global_asm_8075EA40; extern f64 D_global_asm_8075EA48; extern f32 D_global_asm_8075EA50; +extern f64 D_global_asm_8075EA58; +extern f64 D_global_asm_8075EA60; +extern f32 D_global_asm_8075EA68; +extern f32 D_global_asm_8075EA6C; +extern f64 D_global_asm_8075EA70; +extern f64 D_global_asm_8075EA78; +extern f32 D_global_asm_8075EA80; +extern f64 D_global_asm_8075EA88; +extern f32 D_global_asm_8075EA90; +extern f64 D_global_asm_8075EA98; +extern f64 D_global_asm_8075EAA0; +extern f32 D_global_asm_8075EAA8; +extern f64 D_global_asm_8075EAB0; +extern f64 D_global_asm_8075EAB8; +extern f64 D_global_asm_8075EAC0; +extern f64 D_global_asm_8075EAC8; +extern f64 D_global_asm_8075EAD0; +extern f64 D_global_asm_8075EAD8; +extern f32 D_global_asm_8075EAE0; +extern f64 D_global_asm_8075EAE8; +extern f64 D_global_asm_8075EAF0; +extern f64 D_global_asm_8075EAF8; extern Struct807FDB00 *D_global_asm_807FDB00; extern Struct807FDB04 *D_global_asm_807FDB04; @@ -558,12 +613,6 @@ void func_global_asm_8071720C(Struct80717D84 *arg0, s32 arg1) { #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_119370/func_global_asm_80717404.s") -extern f64 D_global_asm_8075E6E0; -extern f64 D_global_asm_8075E6E8; -extern f64 D_global_asm_8075E6F0; -extern f64 D_global_asm_8075E6F8; -extern f64 D_global_asm_8075E700; - /* void func_global_asm_80717404(Struct80717D84 *arg0, s32 arg1) { f64 sp28; @@ -821,8 +870,6 @@ void func_global_asm_80718188(Struct80717D84 *arg0, s8 *arg1) { // rodata #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_119370/func_global_asm_8071827C.s") -extern f64 D_global_asm_8075E748; - /* void func_global_asm_8071827C(Struct80717D84 *arg0, s32 arg1) { f32 sp70[4][4]; @@ -879,8 +926,6 @@ void func_global_asm_80718380(Struct80717D84 *arg0, s8 *arg1) { // rodata #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_119370/func_global_asm_807184F4.s") -extern f64 D_global_asm_8075E750; - typedef struct { f32 unk0; f32 unk4; @@ -967,10 +1012,6 @@ void func_global_asm_807189BC(Struct80717D84 *arg0, s8 *arg1) { // rodata #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_119370/func_global_asm_807195D4.s") -extern f32 D_global_asm_8075E840; -extern f32 D_global_asm_8075E844; -extern f64 D_global_asm_8075E848; - typedef struct { f32 unk0; f32 unk4; @@ -1009,14 +1050,6 @@ void func_global_asm_807195D4(Struct80717D84 *arg0, s32 arg1) { // rodata #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_119370/func_global_asm_807197B4.s") -extern f64 D_global_asm_8075E850; -extern f64 D_global_asm_8075E858; -extern f64 D_global_asm_8075E860; -extern f64 D_global_asm_8075E868; -extern f64 D_global_asm_8075E870; -extern f64 D_global_asm_8075E878; -extern f64 D_global_asm_8075E880; - typedef struct { s32 unk0; f32 unk4; @@ -1151,8 +1184,6 @@ void func_global_asm_80719EF4(Struct80717D84 *arg0, s32 arg1) { arg0->unk344 += 1.0f; } -extern f64 D_global_asm_8075E8E8; - void func_global_asm_8071A038(Struct80717D84 *arg0, s32 arg1) { f32 sp78[4][4]; f32 sp38[4][4]; @@ -1183,11 +1214,9 @@ void func_global_asm_8071A038(Struct80717D84 *arg0, s32 arg1) { arg0->unk32C = 3; } -// regalloc +// regalloc, rodata #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_119370/func_global_asm_8071A1E4.s") -extern f64 D_global_asm_8075E8F0; - typedef struct { f32 unk0; f32 unk4; @@ -1261,13 +1290,12 @@ void func_global_asm_8071A440(Struct80717D84 *arg0, s32 arg1) { } } +// TODO: Close, rodata #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_119370/func_global_asm_8071A674.s") extern Struct80717D84 *D_8002FBB0; -extern f64 D_global_asm_8075E900; /* -// TODO: Close... void func_global_asm_8071A674(Struct80717D84 *arg0, s32 arg1) { f32 var_f0; Struct80717D84 **var_v0; @@ -1288,9 +1316,6 @@ void func_global_asm_8071A674(Struct80717D84 *arg0, s32 arg1) { } */ -extern f64 D_global_asm_8075E908; -extern f64 D_global_asm_8075E910; - void func_global_asm_8071A8B0(Struct80717D84 *arg0, s32 arg1) { f32 var_f0; f32 var_f16; @@ -1330,11 +1355,6 @@ void func_global_asm_8071AADC(Struct80717D84 *arg0, s32 arg1) { #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_119370/func_global_asm_8071ABDC.s") -extern f64 D_global_asm_8075E930; -extern f64 D_global_asm_8075E938; -extern f64 D_global_asm_8075E940; -extern f64 D_global_asm_8075E948; - void func_global_asm_8071AF30(Struct80717D84 *arg0, s8 *arg1) { f32 sp78[4][4]; f32 sp38[4][4]; @@ -1382,9 +1402,6 @@ void func_global_asm_8071B24C(Struct80717D84 *arg0, s32 arg1) { arg0->unk348 += (D_global_asm_8075E964 * func_global_asm_80612790(arg0->unk35C)); } -extern f32 D_global_asm_8075E968; -extern f64 D_global_asm_8075E970; - void func_global_asm_8071B2EC(Struct80717D84 *arg0, s32 arg1) { f32 sp24; Struct80717D84_unk384_8071B2EC *var_v1; @@ -1422,11 +1439,9 @@ void func_global_asm_8071B44C(Struct80717D84 *arg0, s32 arg1) { arg0->unk348 += (temp_f6 * func_global_asm_80612790(arg0->unk35C)); } -// Matrix stuff +// Matrix stuff, rodata #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_119370/func_global_asm_8071B520.s") -extern f64 D_global_asm_8075E988; - /* void func_global_asm_8071B520(Struct80717D84 *arg0, s32 arg1) { f32 sp80[4][4]; @@ -1527,8 +1542,6 @@ void func_global_asm_8071B8EC(Struct80717D84 *arg0, s8 *arg1) { } } -extern f64 D_global_asm_8075E9A0; - typedef struct { f32 unk0; f32 unk4; @@ -1585,9 +1598,6 @@ void func_global_asm_8071BC80(Struct80717D84 *arg0, s32 arg1) { arg0->unk348 += var_v0->unk8; } -extern f64 D_global_asm_8075E9A8; -extern f64 D_global_asm_8075E9B0; - typedef struct { u8 unk0; u8 unk1; @@ -1674,9 +1684,6 @@ void func_global_asm_8071C004(Struct80717D84 *arg0, s8 *arg1) { } } -extern f64 D_global_asm_8075E9B8; -extern s32 D_global_asm_8071FB54; - void func_global_asm_8071C24C(Struct80717D84 *arg0, u8 *arg1) { s32 pad; f32 y; @@ -1753,8 +1760,6 @@ void func_global_asm_8071C620(Struct80717D84 *arg0, s32 arg1) { // rodata #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_119370/func_global_asm_8071C818.s") -extern f64 D_global_asm_8075E9C8; - void func_global_asm_8071C818(Struct80717D84 *arg0, s8 *arg1); /* @@ -1777,8 +1782,6 @@ void func_global_asm_8071C818(Struct80717D84 *arg0, s8 *arg1) { } */ -extern f64 D_global_asm_8075E9D0; - void func_global_asm_8071C914(Struct80717D84 *arg0, s32 arg1) { f32 sp70[4][4]; f32 sp30[4][4]; @@ -1839,11 +1842,6 @@ void func_global_asm_8071D260(Struct80717D84 *arg0, s8 *arg1) { } } -extern f32 D_global_asm_8075E9E8; -extern f64 D_global_asm_8075E9F0; -extern f64 D_global_asm_8075E9F8; -extern f64 D_global_asm_8075EA00; - typedef struct { f32 unk0; f32 unk4; @@ -1902,8 +1900,6 @@ void func_global_asm_8071D28C(Struct80717D84 *arg0, s8 *arg1) { } } -extern f64 D_global_asm_8075EA08; - void func_global_asm_8071D5BC(Struct80717D84 *arg0, s8 *arg1) { f32 sp80[4][4]; f32 sp40[4][4]; @@ -1933,9 +1929,6 @@ void func_global_asm_8071D5BC(Struct80717D84 *arg0, s8 *arg1) { arg0->unk32C = 3; } -extern f32 D_global_asm_80755674; -extern f32 D_global_asm_80755678; - typedef struct { f32 unk0; f32 unk4; @@ -1969,14 +1962,9 @@ void func_global_asm_8071D784(Struct80717D84 *arg0, s8 *arg1) { } } -// close +// close, rodata #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_119370/func_global_asm_8071D94C.s") -extern f32 D_global_asm_8075EA10; -extern f64 D_global_asm_8075EA18; -extern f32 D_global_asm_8075EA20; -extern f32 D_global_asm_8075EA24; - void func_global_asm_8071D94C(Actor *arg0, Struct80717D84 *arg1, s8 *arg2); /* @@ -2173,11 +2161,6 @@ void func_global_asm_8071E1C8(Struct80717D84 *arg0, s8 *arg1) { // rodata, regalloc #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_119370/func_global_asm_8071E3EC.s") -extern f64 D_global_asm_8075EA58; -extern f64 D_global_asm_8075EA60; -extern f32 D_global_asm_8075EA68; -extern f32 D_global_asm_8075EA6C; - /* void func_global_asm_8071E3EC(Struct80717D84 *arg0, s8 *arg1) { f32 *var_v1; @@ -2350,9 +2333,6 @@ void func_global_asm_8071EEA4(Struct80717D84 *arg0, s32 arg1) { arg0->unk364 = (arg0->unk35C / 100.0) + 1.0; } -extern f32 D_global_asm_8075EAA8; -extern f64 D_global_asm_8075EAB0; - typedef struct { f32 unk0; f32 unk4; @@ -2469,8 +2449,6 @@ void func_global_asm_8071F2F8(Struct80717D84 *arg0, s32 arg1) { // rodata, regalloc #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_119370/func_global_asm_8071F3C0.s") -extern f64 D_global_asm_8075EAD0; - /* void func_global_asm_8071F3C0(Struct80717D84 *arg0, s32 arg1) { f32 *var_v1; @@ -2530,11 +2508,6 @@ void func_global_asm_8071F660(Struct80717D84 *arg0, s32 arg1) { arg0->unk32C = 2; } -extern f32 D_global_asm_8075EAE0; -extern f64 D_global_asm_8075EAE8; -extern f64 D_global_asm_8075EAF0; -extern f64 D_global_asm_8075EAF8; - typedef struct { f32 unk0; f32 unk4; diff --git a/src/global_asm/code_126260.c b/src/global_asm/code_126260.c index 5b3d0a1..8ae4fd3 100644 --- a/src/global_asm/code_126260.c +++ b/src/global_asm/code_126260.c @@ -49,8 +49,6 @@ void func_global_asm_80721560(s16 arg0, s16 arg1, s16 arg2, u8 arg3, u8 arg4, u8 D_807FDB80 = arg5; } - - void func_global_asm_807215AC(s8 arg0, s8 arg1, s8 arg2) { D_807FDB60.unkB = arg0; D_807FDB60.unkC = arg1; diff --git a/src/global_asm/code_16A20.c b/src/global_asm/code_16A20.c index f2c2587..a2d5dc9 100644 --- a/src/global_asm/code_16A20.c +++ b/src/global_asm/code_16A20.c @@ -1,11 +1,42 @@ #include #include "functions.h" - +// close, regalloc #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_16A20/func_global_asm_80611D20.s") +extern u16 D_global_asm_80746A50[]; +extern u16 D_global_asm_80746ACC[]; +extern u16 D_global_asm_80746B4C[]; + s32 func_global_asm_80611D20(s32); +/* +s32 func_global_asm_80611D20(s32 arg0) { + u16 *var_a2; + s32 var_a1; + s32 var_v1; + s32 i; + + if (arg0 >= 0x7FE0) { + var_v1 = 7; + var_a1 = 3; + var_a2 = &D_global_asm_80746B4C; + arg0 -= 0x7FE0; + } else if (arg0 >= 0x7800) { + var_v1 = 0x1F; + var_a1 = 5; + var_a2 = &D_global_asm_80746ACC; + arg0 -= 0x7800; + } else { + var_v1 = 0x1FF; + var_a1 = 9; + var_a2 = &D_global_asm_80746A50; + } + i = arg0 >> var_a1; + return var_a2[i] - (((var_a2[i] - var_a2[i + 1]) * (arg0 & var_v1)) >> var_a1); +} +*/ + u16 func_global_asm_80611DA0(s16 arg0) { s32 temp_a1; diff --git a/src/global_asm/code_17540.c b/src/global_asm/code_17540.c index 1a0e793..b52d0bf 100644 --- a/src/global_asm/code_17540.c +++ b/src/global_asm/code_17540.c @@ -1,19 +1,57 @@ #include #include "functions.h" +typedef struct { + f32 x; + f32 y; + f32 z; + f32 temp; +} Vector3F; +// close #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_17540/func_global_asm_80612840.s") +/* +void *func_global_asm_80612840(Vector3F *arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6) { + Vector3F sp4; + + sp4.x = arg1 - arg4; + sp4.y = arg2 - arg5; + sp4.z = arg3 - arg6; + *arg0 = sp4; + return arg0; +} +*/ + #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_17540/func_global_asm_806128A8.s") #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_17540/func_global_asm_80612910.s") #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_17540/func_global_asm_80612970.s") +// stack #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_17540/func_global_asm_80612A14.s") +/* +f32 func_global_asm_80612A14(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5) { + return (arg0 * arg3) + (arg1 * arg4) + (arg2 * arg5); +} +*/ + +// close, stack #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_17540/func_global_asm_80612A54.s") +/* +Vector3F *func_global_asm_80612A54(Vector3F *arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6) { + Vector3F sp4; + + sp4.x = (arg2 * arg6) - (arg3 * arg5); + sp4.y = (arg3 * arg4) - (arg1 * arg6); + sp4.z = (arg1 * arg5) - (arg2 * arg4); + *arg0 = sp4; + return arg0; +} +*/ void func_global_asm_80612AD8(f32 *arg0, f32 arg1, f32 arg2, f32 arg3) { arg0[0] = arg1; diff --git a/src/global_asm/code_17800.c b/src/global_asm/code_17800.c index ad4e070..31b929c 100644 --- a/src/global_asm/code_17800.c +++ b/src/global_asm/code_17800.c @@ -69,6 +69,7 @@ void func_global_asm_80612CA0(f32 (*arg0)[4], f32 arg1) { arg0[1][1] = sp20; } +// TODO: HASM? #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_17800/func_global_asm_80612D10.s") #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_17800/func_global_asm_80612D1C.s") diff --git a/src/global_asm/code_17B90.c b/src/global_asm/code_17B90.c index 0c1cbf8..59001ed 100644 --- a/src/global_asm/code_17B90.c +++ b/src/global_asm/code_17B90.c @@ -1,6 +1,14 @@ #include #include "functions.h" +void func_global_asm_80613BA0(Actor *, s16, f32, f32); +void func_global_asm_80613CA8(Actor *, s16, f32, f32); +void func_global_asm_80614014(Actor *, u16, f32, u8); +void func_global_asm_80613FB0(Actor *, u16, f32, u8); +void func_global_asm_80614644(Actor *, AnimationStateUnk0 *, f32); + +extern u8 *D_807F5AF0; +extern u16 *D_807FBB54; #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_17B90/func_global_asm_80612E90.s") @@ -143,8 +151,6 @@ void func_global_asm_80614D48(Actor *arg0, f32 arg1, f32 arg2) { #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_17B90/func_global_asm_80614D90.s") -extern u16 *D_807FBB54; - void playAnimation(Actor *arg0, s32 arg1) { s32 offset = (arg1 * 7) + (arg0->unk58 - 2); playActorAnimation(arg0, D_807FBB54[offset]); @@ -152,8 +158,6 @@ void playAnimation(Actor *arg0, s32 arg1) { #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_17B90/playActorAnimation.s") -extern u8 *D_807F5AF0; - void func_global_asm_80614F28(u8 *arg0) { // getAnimationArg8 *arg0 = *D_807F5AF0++; @@ -467,12 +471,6 @@ s32 func_global_asm_8061594C(Actor *arg0) { return 1; } -void func_global_asm_80613BA0(Actor *, s16, f32, f32); -void func_global_asm_80613CA8(Actor *, s16, f32, f32); -void func_global_asm_80614014(Actor *, u16, f32, u8); -void func_global_asm_80613FB0(Actor *, u16, f32, u8); -void func_global_asm_80614644(Actor *, AnimationStateUnk0 *, f32); - s32 func_global_asm_8061599C(Actor *arg0) { s16 sp1E; @@ -535,7 +533,7 @@ s32 func_global_asm_80615B84(Actor *arg0) { s16 sp1E; f32 sp18; - D_807F5AF0 += 1; + D_807F5AF0++; func_global_asm_80614F4C(&sp1E); func_global_asm_80614FD8(&sp18); func_global_asm_80613AF8(arg0, sp1E, 0.0f, sp18); @@ -582,7 +580,7 @@ s32 func_global_asm_80615CE4(Actor *arg0) { } else { var_a1 = arg0->animation_state->unk0; } - D_807F5AF0 += 1; + D_807F5AF0++; func_global_asm_80614F28(&sp27); func_global_asm_80614644(arg0, var_a1, D_global_asm_80746D5C); if (D_global_asm_80746D5C != 0) { @@ -593,9 +591,63 @@ s32 func_global_asm_80615CE4(Actor *arg0) { return 1; } -#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_17B90/func_global_asm_80615DA4.s") +s32 func_global_asm_80615DA4(Actor *arg0) { + u8 sp27; + AnimationStateUnk0 *sp20; -#pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_17B90/func_global_asm_80615E74.s") + if (arg0->animation_state->unk84 != 0) { + sp20 = arg0->animation_state->unk4; + } else { + sp20 = arg0->animation_state->unk0; + } + D_807F5AF0++; + func_global_asm_80614F28(&sp27); + sp20->unk1E = sp20->unkC; + sp20->unk20 = sp27; + sp20->unk1C |= 8; + if (sp20->unkC < sp20->unk4) { + sp20->unk8 = sp20->unk4 - sp20->unkC; + } else { + sp20->unk8 = -(sp20->unk4 - sp20->unkC); + } + sp20->unkE = sp27; + arg0->animation_state->unk78 |= 0x20; + return 1; +} + +s32 func_global_asm_80615E74(Actor *arg0) { + u8 sp2F; + u8 sp2E; + AnimationStateUnk0 *sp28; + ActorAnimationState *aaS; + + aaS = arg0->animation_state; + if (aaS->unk84 != 0) { + sp28 = aaS->unk4; + } else { + sp28 = aaS->unk0; + } + D_807F5AF0++; + func_global_asm_80614F28(&sp2F); + func_global_asm_80614F28(&sp2E); + if (sp28->unkC == sp2F) { + sp28->unk1E = sp28->unkC; + sp28->unk20 = sp2E; + sp28->unk1C |= 8; + if (sp28->unkC < sp28->unk4) { + sp28->unk8 = sp28->unk4 - sp28->unkC; + } else { + sp28->unk8 = -(sp28->unk4 - sp28->unkC); + } + sp28->unkE = sp2E; + arg0->animation_state->unk78 |= 0x20; + } else { + sp28->unkC = (sp28->unkC + sp2E) - sp2F; + sp28->unkE = (sp28->unkE + sp2E) - sp2F; + sp28->unk4 = sp28->unk4 + (sp2E - sp2F); + } + return 1; +} s32 func_global_asm_80615FA0(Actor *arg0) { s16 sp26; diff --git a/src/global_asm/code_6AF80.c b/src/global_asm/code_6AF80.c index 5708228..9427f7a 100644 --- a/src/global_asm/code_6AF80.c +++ b/src/global_asm/code_6AF80.c @@ -1363,8 +1363,6 @@ void func_global_asm_8066B4AC(s32 arg0, s32 arg1, s32 arg2) { // stack #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_6AF80/func_global_asm_8066B4D4.s") -s32 __ull_rshift(s32, s32, f32, s32); - /* // TODO: Pretty close, s16/u16 and stack nonsense s32 func_global_asm_8066B4D4(s32 arg0, s32 arg1, s32 *arg2, s32 *arg3) { diff --git a/src/global_asm/code_F600.c b/src/global_asm/code_F600.c index e3f36cf..17fb782 100644 --- a/src/global_asm/code_F600.c +++ b/src/global_asm/code_F600.c @@ -94,7 +94,7 @@ u8 func_global_asm_8060AB38(s32 arg0) { return D_global_asm_807ECDFC[arg0]; } -void func_global_asm_8060AB48(OSContPad * arg0) { +void func_global_asm_8060AB48(OSContPad *arg0) { s32 i, j; j = 0; @@ -128,8 +128,6 @@ void func_global_asm_8060AC34(OSContPad *arg0) { #pragma GLOBAL_ASM("asm/nonmatchings/global_asm/code_F600/func_global_asm_8060AC7C.s") - - /* void func_global_asm_806F3E0C(OSContPad *, OSContPad *); void func_global_asm_80712944(OSContPad *); diff --git a/tools/smoosh_functions_h.py b/tools/smoosh_functions_h.py index f941929..aebc431 100755 --- a/tools/smoosh_functions_h.py +++ b/tools/smoosh_functions_h.py @@ -2,7 +2,6 @@ orphanFunctionsWithSignatures = [ "func_global_asm_80612790", "func_global_asm_80612794", - "func_global_asm_8061C464", "func_global_asm_806A36F4", "func_global_asm_806E770C", "func_global_asm_8073243C",