From 65e7fc87df84a606103b4fc07ae48f0cf8f690ad Mon Sep 17 00:00:00 2001 From: Tyler McGavran Date: Thu, 13 Jan 2022 00:13:01 -0500 Subject: [PATCH] Match a variety functions (#136) * Match func_800A4B38 * Match func_800A6034 * Change type of "blue" argument This allows the function's type signature to look the same as the other box drawing function. * Match func_800AC300 * Matched func_800AAEF4 * Matched func_800AAF30 and func_800AAF70 Signed-off-by: Taggerung --- .../code_80091750/func_800A4B38.s | 43 ----- .../code_80091750/func_800A6034.s | 75 -------- .../code_80091750/func_800AAEF4.s | 19 -- .../code_80091750/func_800AAF30.s | 30 ---- .../code_80091750/func_800AC300.s | 11 -- include/variables.h | 8 +- src/code_800029B0.c | 2 +- src/code_80091750.c | 170 ++++++------------ src/code_80091750.h | 34 +++- 9 files changed, 85 insertions(+), 307 deletions(-) delete mode 100644 asm/non_matchings/code_80091750/func_800A4B38.s delete mode 100644 asm/non_matchings/code_80091750/func_800A6034.s delete mode 100644 asm/non_matchings/code_80091750/func_800AAEF4.s delete mode 100644 asm/non_matchings/code_80091750/func_800AAF30.s delete mode 100644 asm/non_matchings/code_80091750/func_800AC300.s diff --git a/asm/non_matchings/code_80091750/func_800A4B38.s b/asm/non_matchings/code_80091750/func_800A4B38.s deleted file mode 100644 index 287daaff6..000000000 --- a/asm/non_matchings/code_80091750/func_800A4B38.s +++ /dev/null @@ -1,43 +0,0 @@ -glabel func_800A4B38 -/* 0A5738 800A4B38 3C0E800E */ lui $t6, %hi(D_800DC5FC) # $t6, 0x800e -/* 0A573C 800A4B3C 95CEC5FC */ lhu $t6, %lo(D_800DC5FC)($t6) -/* 0A5740 800A4B40 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0A5744 800A4B44 AFBF0014 */ sw $ra, 0x14($sp) -/* 0A5748 800A4B48 11C0001B */ beqz $t6, .L800A4BB8 -/* 0A574C 800A4B4C 3C02800E */ lui $v0, %hi(gModeSelection) # $v0, 0x800e -/* 0A5750 800A4B50 8C42C53C */ lw $v0, %lo(gModeSelection)($v0) -/* 0A5754 800A4B54 24010001 */ li $at, 1 -/* 0A5758 800A4B58 10400011 */ beqz $v0, .L800A4BA0 -/* 0A575C 800A4B5C 00000000 */ nop -/* 0A5760 800A4B60 10410007 */ beq $v0, $at, .L800A4B80 -/* 0A5764 800A4B64 24010002 */ li $at, 2 -/* 0A5768 800A4B68 10410009 */ beq $v0, $at, .L800A4B90 -/* 0A576C 800A4B6C 24010003 */ li $at, 3 -/* 0A5770 800A4B70 1041000F */ beq $v0, $at, .L800A4BB0 -/* 0A5774 800A4B74 00000000 */ nop -/* 0A5778 800A4B78 10000010 */ b .L800A4BBC -/* 0A577C 800A4B7C 8FBF0014 */ lw $ra, 0x14($sp) -.L800A4B80: -/* 0A5780 800A4B80 0C0292F2 */ jal func_800A4BC8 -/* 0A5784 800A4B84 00000000 */ nop -/* 0A5788 800A4B88 1000000C */ b .L800A4BBC -/* 0A578C 800A4B8C 8FBF0014 */ lw $ra, 0x14($sp) -.L800A4B90: -/* 0A5790 800A4B90 0C0293BE */ jal func_800A4EF8 -/* 0A5794 800A4B94 00000000 */ nop -/* 0A5798 800A4B98 10000008 */ b .L800A4BBC -/* 0A579C 800A4B9C 8FBF0014 */ lw $ra, 0x14($sp) -.L800A4BA0: -/* 0A57A0 800A4BA0 0C029421 */ jal func_800A5084 -/* 0A57A4 800A4BA4 00000000 */ nop -/* 0A57A8 800A4BA8 10000004 */ b .L800A4BBC -/* 0A57AC 800A4BAC 8FBF0014 */ lw $ra, 0x14($sp) -.L800A4BB0: -/* 0A57B0 800A4BB0 0C0294D8 */ jal func_800A5360 -/* 0A57B4 800A4BB4 00000000 */ nop -.L800A4BB8: -/* 0A57B8 800A4BB8 8FBF0014 */ lw $ra, 0x14($sp) -.L800A4BBC: -/* 0A57BC 800A4BBC 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0A57C0 800A4BC0 03E00008 */ jr $ra -/* 0A57C4 800A4BC4 00000000 */ nop diff --git a/asm/non_matchings/code_80091750/func_800A6034.s b/asm/non_matchings/code_80091750/func_800A6034.s deleted file mode 100644 index d393bfd1d..000000000 --- a/asm/non_matchings/code_80091750/func_800A6034.s +++ /dev/null @@ -1,75 +0,0 @@ -glabel func_800A6034 -/* 0A6C34 800A6034 3C0E8016 */ lui $t6, %hi(D_801657E8) # $t6, 0x8016 -/* 0A6C38 800A6038 81CE57E8 */ lb $t6, %lo(D_801657E8)($t6) -/* 0A6C3C 800A603C 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0A6C40 800A6040 AFB00020 */ sw $s0, 0x20($sp) -/* 0A6C44 800A6044 24010001 */ li $at, 1 -/* 0A6C48 800A6048 00808025 */ move $s0, $a0 -/* 0A6C4C 800A604C 11C1003C */ beq $t6, $at, .L800A6140 -/* 0A6C50 800A6050 AFBF0024 */ sw $ra, 0x24($sp) -/* 0A6C54 800A6054 3C058015 */ lui $a1, %hi(gDisplayListHead) # $a1, 0x8015 -/* 0A6C58 800A6058 24A50298 */ addiu $a1, %lo(gDisplayListHead) # addiu $a1, $a1, 0x298 -/* 0A6C5C 800A605C 8CA30000 */ lw $v1, ($a1) -/* 0A6C60 800A6060 3C18FA00 */ lui $t8, 0xfa00 -/* 0A6C64 800A6064 3C09800E */ lui $t1, %hi(D_800DC540) # $t1, 0x800e -/* 0A6C68 800A6068 246F0008 */ addiu $t7, $v1, 8 -/* 0A6C6C 800A606C ACAF0000 */ sw $t7, ($a1) -/* 0A6C70 800A6070 AC780000 */ sw $t8, ($v1) -/* 0A6C74 800A6074 8C99001C */ lw $t9, 0x1c($a0) -/* 0A6C78 800A6078 3C0B800E */ lui $t3, %hi(D_800E7500) -/* 0A6C7C 800A607C 24040005 */ li $a0, 5 -/* 0A6C80 800A6080 332800FF */ andi $t0, $t9, 0xff -/* 0A6C84 800A6084 AC680004 */ sw $t0, 4($v1) -/* 0A6C88 800A6088 8D29C540 */ lw $t1, %lo(D_800DC540)($t1) -/* 0A6C8C 800A608C 00095080 */ sll $t2, $t1, 2 -/* 0A6C90 800A6090 016A5821 */ addu $t3, $t3, $t2 -/* 0A6C94 800A6094 8D6B7500 */ lw $t3, %lo(D_800E7500)($t3) -/* 0A6C98 800A6098 0C024C36 */ jal set_text_color -/* 0A6C9C 800A609C AFAB002C */ sw $t3, 0x2c($sp) -/* 0A6CA0 800A60A0 3C01800F */ lui $at, %hi(D_800F1F04) # $at, 0x800f -/* 0A6CA4 800A60A4 C4241F04 */ lwc1 $f4, %lo(D_800F1F04)($at) -/* 0A6CA8 800A60A8 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0A6CAC 800A60AC 44813000 */ mtc1 $at, $f6 -/* 0A6CB0 800A60B0 8E04000C */ lw $a0, 0xc($s0) -/* 0A6CB4 800A60B4 8E050010 */ lw $a1, 0x10($s0) -/* 0A6CB8 800A60B8 8FA6002C */ lw $a2, 0x2c($sp) -/* 0A6CBC 800A60BC 00003825 */ move $a3, $zero -/* 0A6CC0 800A60C0 E7A40010 */ swc1 $f4, 0x10($sp) -/* 0A6CC4 800A60C4 E7A60014 */ swc1 $f6, 0x14($sp) -/* 0A6CC8 800A60C8 24840041 */ addiu $a0, $a0, 0x41 -/* 0A6CCC 800A60CC 0C024DD5 */ jal func_80093754 -/* 0A6CD0 800A60D0 24A500A0 */ addiu $a1, $a1, 0xa0 -/* 0A6CD4 800A60D4 3C02800E */ lui $v0, %hi(gCurrentCourseId) # $v0, 0x800e -/* 0A6CD8 800A60D8 8442C5A0 */ lh $v0, %lo(gCurrentCourseId)($v0) -/* 0A6CDC 800A60DC 3C0D800E */ lui $t5, %hi(D_800E7524) -/* 0A6CE0 800A60E0 00026080 */ sll $t4, $v0, 2 -/* 0A6CE4 800A60E4 01AC6821 */ addu $t5, $t5, $t4 -/* 0A6CE8 800A60E8 8DAD7524 */ lw $t5, %lo(D_800E7524)($t5) -/* 0A6CEC 800A60EC AFAD002C */ sw $t5, 0x2c($sp) -/* 0A6CF0 800A60F0 04410004 */ bgez $v0, .L800A6104 -/* 0A6CF4 800A60F4 30440003 */ andi $a0, $v0, 3 -/* 0A6CF8 800A60F8 10800002 */ beqz $a0, .L800A6104 -/* 0A6CFC 800A60FC 00000000 */ nop -/* 0A6D00 800A6100 2484FFFC */ addiu $a0, $a0, -4 -.L800A6104: -/* 0A6D04 800A6104 0C024C36 */ jal set_text_color -/* 0A6D08 800A6108 00000000 */ nop -/* 0A6D0C 800A610C 3C01800F */ lui $at, %hi(D_800F1F08) # $at, 0x800f -/* 0A6D10 800A6110 C4281F08 */ lwc1 $f8, %lo(D_800F1F08)($at) -/* 0A6D14 800A6114 3C01800F */ lui $at, %hi(D_800F1F0C) # $at, 0x800f -/* 0A6D18 800A6118 C42A1F0C */ lwc1 $f10, %lo(D_800F1F0C)($at) -/* 0A6D1C 800A611C 8E04000C */ lw $a0, 0xc($s0) -/* 0A6D20 800A6120 8E050010 */ lw $a1, 0x10($s0) -/* 0A6D24 800A6124 8FA6002C */ lw $a2, 0x2c($sp) -/* 0A6D28 800A6128 00003825 */ move $a3, $zero -/* 0A6D2C 800A612C E7A80010 */ swc1 $f8, 0x10($sp) -/* 0A6D30 800A6130 E7AA0014 */ swc1 $f10, 0x14($sp) -/* 0A6D34 800A6134 24840041 */ addiu $a0, $a0, 0x41 -/* 0A6D38 800A6138 0C024DD5 */ jal func_80093754 -/* 0A6D3C 800A613C 24A500C3 */ addiu $a1, $a1, 0xc3 -.L800A6140: -/* 0A6D40 800A6140 8FBF0024 */ lw $ra, 0x24($sp) -/* 0A6D44 800A6144 8FB00020 */ lw $s0, 0x20($sp) -/* 0A6D48 800A6148 27BD0030 */ addiu $sp, $sp, 0x30 -/* 0A6D4C 800A614C 03E00008 */ jr $ra -/* 0A6D50 800A6150 00000000 */ nop diff --git a/asm/non_matchings/code_80091750/func_800AAEF4.s b/asm/non_matchings/code_80091750/func_800AAEF4.s deleted file mode 100644 index 3dfa87d31..000000000 --- a/asm/non_matchings/code_80091750/func_800AAEF4.s +++ /dev/null @@ -1,19 +0,0 @@ -glabel func_800AAEF4 -/* 0ABAF4 800AAEF4 3C038019 */ lui $v1, %hi(D_8018D9E0) # $v1, 0x8019 -/* 0ABAF8 800AAEF8 3C028019 */ lui $v0, %hi(D_8018DEE0) # $v0, 0x8019 -/* 0ABAFC 800AAEFC 2463D9E0 */ addiu $v1, %lo(D_8018D9E0) # addiu $v1, $v1, -0x2620 -/* 0ABB00 800AAF00 2442DEE0 */ addiu $v0, %lo(D_8018DEE0) # addiu $v0, $v0, -0x2120 -/* 0ABB04 800AAF04 8C6E0000 */ lw $t6, ($v1) -.L800AAF08: -/* 0ABB08 800AAF08 108E0007 */ beq $a0, $t6, .L800AAF28 -/* 0ABB0C 800AAF0C 00000000 */ nop -/* 0ABB10 800AAF10 24630028 */ addiu $v1, $v1, 0x28 -/* 0ABB14 800AAF14 0043082B */ sltu $at, $v0, $v1 -/* 0ABB18 800AAF18 5020FFFB */ beql $at, $zero, .L800AAF08 -/* 0ABB1C 800AAF1C 8C6E0000 */ lw $t6, ($v1) -.L800AAF20: -/* 0ABB20 800AAF20 1000FFFF */ b .L800AAF20 -/* 0ABB24 800AAF24 00000000 */ nop -.L800AAF28: -/* 0ABB28 800AAF28 03E00008 */ jr $ra -/* 0ABB2C 800AAF2C 00601025 */ move $v0, $v1 diff --git a/asm/non_matchings/code_80091750/func_800AAF30.s b/asm/non_matchings/code_80091750/func_800AAF30.s deleted file mode 100644 index dc9c51215..000000000 --- a/asm/non_matchings/code_80091750/func_800AAF30.s +++ /dev/null @@ -1,30 +0,0 @@ -glabel func_800AAF30 -/* 0ABB30 800AAF30 3C038019 */ lui $v1, %hi(D_8018D9E0) # $v1, 0x8019 -/* 0ABB34 800AAF34 3C028019 */ lui $v0, %hi(D_8018DEE0) # $v0, 0x8019 -/* 0ABB38 800AAF38 2463D9E0 */ addiu $v1, %lo(D_8018D9E0) # addiu $v1, $v1, -0x2620 -/* 0ABB3C 800AAF3C 2442DEE0 */ addiu $v0, %lo(D_8018DEE0) # addiu $v0, $v0, -0x2120 -/* 0ABB40 800AAF40 8C6E0000 */ lw $t6, ($v1) -.L800AAF44: -/* 0ABB44 800AAF44 508E0008 */ beql $a0, $t6, .L800AAF68 -/* 0ABB48 800AAF48 00601025 */ move $v0, $v1 -/* 0ABB4C 800AAF4C 24630028 */ addiu $v1, $v1, 0x28 -/* 0ABB50 800AAF50 0043082B */ sltu $at, $v0, $v1 -/* 0ABB54 800AAF54 5020FFFB */ beql $at, $zero, .L800AAF44 -/* 0ABB58 800AAF58 8C6E0000 */ lw $t6, ($v1) -/* 0ABB5C 800AAF5C 03E00008 */ jr $ra -/* 0ABB60 800AAF60 00001025 */ move $v0, $zero - -/* 0ABB64 800AAF64 00601025 */ move $v0, $v1 -.L800AAF68: -/* 0ABB68 800AAF68 03E00008 */ jr $ra -/* 0ABB6C 800AAF6C 00000000 */ nop - -/* 0ABB70 800AAF70 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0ABB74 800AAF74 AFBF0014 */ sw $ra, 0x14($sp) -/* 0ABB78 800AAF78 0C02ABAD */ jal func_800AAEB4 -/* 0ABB7C 800AAF7C 00000000 */ nop -/* 0ABB80 800AAF80 8FBF0014 */ lw $ra, 0x14($sp) -/* 0ABB84 800AAF84 8C420004 */ lw $v0, 4($v0) -/* 0ABB88 800AAF88 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0ABB8C 800AAF8C 03E00008 */ jr $ra -/* 0ABB90 800AAF90 00000000 */ nop diff --git a/asm/non_matchings/code_80091750/func_800AC300.s b/asm/non_matchings/code_80091750/func_800AC300.s deleted file mode 100644 index 5dad28275..000000000 --- a/asm/non_matchings/code_80091750/func_800AC300.s +++ /dev/null @@ -1,11 +0,0 @@ -glabel func_800AC300 -/* 0ACF00 800AC300 8C8E001C */ lw $t6, 0x1c($a0) -/* 0ACF04 800AC304 8C980020 */ lw $t8, 0x20($a0) -/* 0ACF08 800AC308 25CF0001 */ addiu $t7, $t6, 1 -/* 0ACF0C 800AC30C 030F082A */ slt $at, $t8, $t7 -/* 0ACF10 800AC310 10200002 */ beqz $at, .L800AC31C -/* 0ACF14 800AC314 AC8F001C */ sw $t7, 0x1c($a0) -/* 0ACF18 800AC318 AC800000 */ sw $zero, ($a0) -.L800AC31C: -/* 0ACF1C 800AC31C 03E00008 */ jr $ra -/* 0ACF20 800AC320 00000000 */ nop diff --git a/include/variables.h b/include/variables.h index 8dd26f945..5a2c27585 100644 --- a/include/variables.h +++ b/include/variables.h @@ -100,9 +100,11 @@ extern Vp D_802B8880[]; extern Gfx D_0D0077A0[]; +extern s32 D_800DC50C; extern u16 D_800DC51C; extern s32 D_800DC52C; -extern s32 D_800DC50C; +extern s32 D_800DC540; +extern u16 D_800DC5FC; extern u16 D_8015F890; @@ -112,9 +114,9 @@ extern s32 D_80162DE0; extern s32 D_80162DE4; extern s32 D_80162DE8; -extern s32 D_80164A28; extern f32 D_80164510[]; extern s16* D_80164550; +extern s32 D_80164A28; extern s16 D_80164AF0; extern s16 D_80165020[]; @@ -160,6 +162,8 @@ extern s16 D_8016557E; extern s16 D_80165580; extern s16 D_80165582; +extern s8 D_801657E8; + extern s8 D_801658FE; extern s32 D_8018D120; diff --git a/src/code_800029B0.c b/src/code_800029B0.c index bff92b9bd..2f8097ede 100644 --- a/src/code_800029B0.c +++ b/src/code_800029B0.c @@ -93,7 +93,7 @@ struct UnkStruct_800DC5EC *D_800DC5EC = &D_8015F480[0]; struct UnkStruct_800DC5EC *D_800DC5F0 = &D_8015F480[1]; struct UnkStruct_800DC5EC *D_800DC5F4 = &D_8015F480[2]; struct UnkStruct_800DC5EC *D_800DC5F8 = &D_8015F480[3]; -s16 D_800DC5FC = 0; +u16 D_800DC5FC = 0; u8 *D_800DC600 = &osAppNmiBuffer[0]; s32 gIsMirrorMode = 0; f32 D_800DC608 = 1.0f; diff --git a/src/code_80091750.c b/src/code_80091750.c index d5d79122f..259c2b0d2 100644 --- a/src/code_80091750.c +++ b/src/code_80091750.c @@ -3824,7 +3824,7 @@ void *func_800987D0(void *arg0, u32 arg1, u32 arg2, u32 arg3, u32 arg4, s32 arg5 GLOBAL_ASM("asm/non_matchings/code_80091750/func_800987D0.s") #endif -Gfx *func_80098C18(Gfx *displayListHead, s32 ulx, s32 uly, s32 lrx, s32 lry, s32 red, s32 green, u32 blue, s32 alpha) { +Gfx *func_80098C18(Gfx *displayListHead, s32 ulx, s32 uly, s32 lrx, s32 lry, s32 red, s32 green, s32 blue, s32 alpha) { red &= 0xFF; green &= 0xFF; blue &= 0xFF; @@ -3854,7 +3854,7 @@ Gfx *func_80098C18(Gfx *displayListHead, s32 ulx, s32 uly, s32 lrx, s32 lry, s32 lry = 0xEF; } gSPDisplayList(displayListHead++, D_02008030); - gDPSetFillColor(displayListHead++, (GPACK_RGBA5551(red, green, blue, alpha) << 0x10 | GPACK_RGBA5551(red, green, blue, alpha))); + gDPSetFillColor(displayListHead++, (GPACK_RGBA5551(red, green, (u32)blue, alpha) << 0x10 | GPACK_RGBA5551(red, green, (u32)blue, alpha))); gDPFillRectangle(displayListHead++, ulx, uly, lrx, lry); gSPDisplayList(displayListHead++, D_02008058); return displayListHead; @@ -11021,41 +11021,24 @@ void func_800A4A24(void *arg0) { GLOBAL_ASM("asm/non_matchings/code_80091750/func_800A4A24.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_800A4BC8(); // extern -? func_800A4EF8(); // extern -? func_800A5084(); // extern -? func_800A5360(); // extern -extern u16 D_800DC5FC; - -void func_800A4B38(void) { - s32 temp_v0; - +void func_800A4B38(struct_8018D9E0_entry *arg0) { if (D_800DC5FC != 0) { - temp_v0 = gModeSelection; - if (temp_v0 != GRAND_PRIX) { - if (temp_v0 != TIME_TRIALS) { - if (temp_v0 != VERSUS) { - if (temp_v0 != BATTLE) { - return; - } - func_800A5360(); - // Duplicate return node #10. Try simplifying control flow for better match - return; - } - func_800A4EF8(); - return; - } - func_800A4BC8(); - return; + switch (gModeSelection) { + case TIME_TRIALS: + func_800A4BC8(arg0); + break; + case VERSUS: + func_800A4EF8(arg0); + break; + case GRAND_PRIX: + func_800A5084(arg0); + break; + case BATTLE: + func_800A5360(arg0); + break; } - func_800A5084(); } } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_800A4B38.s") -#endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 @@ -11693,41 +11676,19 @@ block_42: GLOBAL_ASM("asm/non_matchings/code_80091750/func_800A5738.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_80093754(s32, s32, s32, ?, f32, f32); // extern -? set_text_color(s32, void **); // extern -extern s32 D_800DC540; -extern ? D_800E7500; -extern ? D_800E7524; -extern f32 D_800F1F04; -extern f32 D_800F1F08; -extern f32 D_800F1F0C; -extern s8 D_801657E8; -extern void *gDisplayListHead; - -void func_800A6034(void *arg0) { - s32 sp2C; - s16 temp_v0; - void *temp_v1; +void func_800A6034(struct_8018D9E0_entry *arg0) { + char *text; if (D_801657E8 != 1) { - temp_v1 = gDisplayListHead; - gDisplayListHead = temp_v1 + 8; - temp_v1->unk0 = 0xFA000000; - temp_v1->unk4 = arg0->unk1C & 0xFF; - sp2C = *(&D_800E7500 + (D_800DC540 * 4)); + gDPSetPrimColor(gDisplayListHead++, 0, 0, 0x00, 0x00, 0x00, arg0->unk1C); + text = D_800E7500[D_800DC540]; set_text_color(TEXT_BLUE_GREEN_RED_CYCLE_2); - func_80093754(arg0->unkC + 0x41, arg0->unk10 + 0xA0, sp2C, 0, D_800F1F04, 1.0f); - temp_v0 = gCurrentCourseId; - sp2C = *(&D_800E7524 + (temp_v0 * 4)); - set_text_color(temp_v0 % 4); - func_80093754(arg0->unkC + 0x41, arg0->unk10 + 0xC3, sp2C, 0, D_800F1F08, D_800F1F0C); + func_80093754(arg0->column + 0x41, arg0->row + 0xA0, text, 0, D_800F1F04, 1.0f); + text = D_800E7524[gCurrentCourseId]; + set_text_color((s32) gCurrentCourseId % 4); + func_80093754(arg0->column + 0x41, arg0->row + 0xC3, text, 0, D_800F1F08, D_800F1F0C); } } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_800A6034.s") -#endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 @@ -14803,56 +14764,38 @@ loop_3: GLOBAL_ASM("asm/non_matchings/code_80091750/func_800AAEB4.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern s32 D_8018D9E0; -extern ? D_8018DEE0; - -s32 *func_800AAEF4(s32 arg0) { - s32 *temp_v1; - s32 *phi_v1; - - phi_v1 = &D_8018D9E0; -loop_1: - if (arg0 != *phi_v1) { - temp_v1 = phi_v1 + 0x28; - phi_v1 = temp_v1; - if (&D_8018DEE0 < temp_v1) { -loop_3: - goto loop_3; +struct_8018D9E0_entry *func_800AAEF4(s32 arg0) { + struct_8018D9E0_entry *entry = D_8018D9E0; + for (; !(entry > (&D_8018D9E0[D_8018D9E0_SIZE])); entry++) { + if (entry->type == arg0) { + goto escape; } - goto loop_1; } - return phi_v1; + + // I don't know why they'd want a function that could potentially hard lock the game... + while(1); +escape: + return entry; } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_800AAEF4.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern s32 D_8018D9E0; -extern ? D_8018DEE0; - -s32 *func_800AAF30(s32 arg0) { - s32 *temp_v1; - s32 *phi_v1; - - phi_v1 = &D_8018D9E0; -loop_1: - if (arg0 != *phi_v1) { - temp_v1 = phi_v1 + 0x28; - phi_v1 = temp_v1; - if (&D_8018DEE0 < temp_v1) { - return NULL; +struct_8018D9E0_entry *func_800AAF30(s32 arg0) { + struct_8018D9E0_entry *entry = D_8018D9E0; + for (; !(entry > (&D_8018D9E0[D_8018D9E0_SIZE])); entry++) { + if (entry->type == arg0) { + goto escape; } - goto loop_1; } - return phi_v1; + + return NULL; +escape: + return entry; +} + +s32 func_800AAF70(s32 arg0) { + struct_8018D9E0_entry *temp; + temp = func_800AAEB4(arg0); + return temp->unk4; } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_800AAF30.s") -#endif void func_800AAF94(struct_8018D9E0_entry *arg0, s32 arg1) { struct_8018D9E0_entry *temp_v0; @@ -15616,20 +15559,11 @@ block_5: GLOBAL_ASM("asm/non_matchings/code_80091750/func_800ABF68.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800AC300(void *arg0) { - s32 temp_t7; - - temp_t7 = arg0->unk1C + 1; - arg0->unk1C = temp_t7; - if (arg0->unk20 < temp_t7) { - arg0->unk0 = 0; +void func_800AC300(struct_8018D9E0_entry *arg0) { + if (arg0->unk20 < ++arg0->unk1C) { + arg0->type = 0; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_800AC300.s") -#endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 diff --git a/src/code_80091750.h b/src/code_80091750.h index ea57ed5ae..07a21d87b 100644 --- a/src/code_80091750.h +++ b/src/code_80091750.h @@ -48,7 +48,7 @@ void func_800947B4(struct GfxPool*, s32); void func_80094A64(Mtx*); void func_80094C60(); void func_80095574(); -Gfx *func_80098C18(Gfx*, s32, s32, s32, s32, s32, s32, u32, s32); +Gfx *func_80098C18(Gfx*, s32, s32, s32, s32, s32, s32, s32, s32); Gfx *draw_box(Gfx*, s32, s32, s32, s32, s32, s32, s32, s32); Gfx *func_80098FC8(Gfx*, s32, s32, s32, s32); void func_80099110(); @@ -62,14 +62,12 @@ void func_80099AEC(); void func_80099E54(); void func_80099E60(Mk64_Texture *, s32, s32); void func_80099EC4(); +void func_80099A70(); void func_8009A594(s32, s32, segment_address_t); void func_8009A640(s32, s32, s32, segment_address_t); -void func_80099A70(); -segment_address_t func_8009A878(struct_8018DEE0_entry*); -void func_800A54EC(); void func_8009A76C(s32, s32, s32, s32); void func_8009A7EC(s32, s32, s32, s32, s32); -void func_800A8250(); +segment_address_t func_8009A878(struct_8018DEE0_entry*); void func_8009A944(struct_8018DEE0_entry*, s32); Gfx *func_8009BA74(Gfx *, Mk64_Texture*, s32, s32); s32 func_8009C434(s32, struct_8018DEE0_entry*, s32, s32, s32); @@ -81,6 +79,13 @@ void func_8009E258(); void func_800A0AD0(struct_8018D9E0_entry*); void func_800A11D0(struct_8018D9E0_entry*, s32, s32); void func_800A1924(struct_8018D9E0_entry*); +void func_800A4B38(struct_8018D9E0_entry*); +void func_800A4BC8(struct_8018D9E0_entry*); +void func_800A4EF8(struct_8018D9E0_entry*); +void func_800A5084(struct_8018D9E0_entry*); +void func_800A5360(struct_8018D9E0_entry*); +void func_800A54EC(); +void func_800A6034(struct_8018D9E0_entry*); void func_800A7258(struct_8018D9E0_entry*); void func_800A72FC(struct_8018D9E0_entry*); void func_800A7448(struct_8018D9E0_entry*); @@ -91,6 +96,7 @@ void get_time_record_minutes(s32, char*); void get_time_record_seconds(s32 , char*); void get_time_record_centiseconds(s32, char*); void func_800A8230(); +void func_800A8250(); void func_800A86E8(struct_8018D9E0_entry*); void func_800A8E14(struct_8018D9E0_entry*); void func_800A8EC0(struct_8018D9E0_entry*); @@ -99,11 +105,19 @@ void func_800AADD4(struct_8018D9E0_entry*); void func_800AAE18(struct_8018D9E0_entry*); struct_8018D9E0_entry *func_800AAEB4(s32); struct_8018D9E0_entry *func_800AAEF4(s32); +struct_8018D9E0_entry *func_800AAF30(s32); +s32 func_800AAF70(s32); void func_800AAF94(struct_8018D9E0_entry*, s32); // code_80057C60.c void func_80057CE4(); +/* File specific defines */ + +#define D_8018D9E0_SIZE 0x20 +#define D_8018DEE0_SIZE 0x10 +#define D_8018E118_SIZE 0xC8 + /* This is where I'd put my static data, if I had any */ extern Mk64_Texture D_0200157C; @@ -127,6 +141,7 @@ extern Gfx D_06009410[]; extern s16 gGlyphDisplayWidth[]; // D_800EF690 extern RGBA16 D_800E74A8[5]; extern char *D_800E7500[9]; +extern char *D_800E7524[]; extern char *D_800E7678[]; extern char *D_800E76CC[4]; extern char *D_800E76DC[4]; @@ -141,6 +156,9 @@ extern Mk64_Texture_Group *D_800E82B4[5]; extern f32 D_800E8530; extern f32 D_800E8534; extern s8 D_800E86D0[20]; +extern f32 D_800F1F04; +extern f32 D_800F1F08; +extern f32 D_800F1F0C; extern f32 D_800F1F30; extern f32 D_800F24A8; extern f32 D_800F24AC; @@ -150,9 +168,9 @@ extern f32 D_800F24B8; extern f64 D_800F24C0; extern s32 D_80165754; extern s8 D_8018D9D9; -extern struct_8018D9E0_entry D_8018D9E0[32]; // D_8018D9E0 -extern struct_8018DEE0_entry D_8018DEE0[16]; // D_8018DEE0 -extern struct_8018E118_entry D_8018E118[200]; // D_8018E118 +extern struct_8018D9E0_entry D_8018D9E0[D_8018D9E0_SIZE]; // D_8018D9E0 +extern struct_8018DEE0_entry D_8018DEE0[D_8018DEE0_SIZE]; // D_8018DEE0 +extern struct_8018E118_entry D_8018E118[D_8018E118_SIZE]; // D_8018E118 extern s8 gTextColor; // D_8018E860 extern s8 D_8018ED91; extern s32 D_8018E850;