From 298195bf924f4864962a9004857707f0f119f747 Mon Sep 17 00:00:00 2001 From: Fazana <52551480+FazanaJ@users.noreply.github.com> Date: Tue, 3 May 2022 17:18:56 +0100 Subject: [PATCH] match func_80045128 --- asm/non_matchings/racer/func_80045128.s | 104 ------------------------ asm/non_matchings/racer/func_800452A0.s | 16 ++-- include/structs.h | 4 +- src/font.h | 4 +- src/game.h | 2 +- src/racer.c | 30 +++++-- 6 files changed, 37 insertions(+), 123 deletions(-) delete mode 100644 asm/non_matchings/racer/func_80045128.s diff --git a/asm/non_matchings/racer/func_80045128.s b/asm/non_matchings/racer/func_80045128.s deleted file mode 100644 index 52d825e6..00000000 --- a/asm/non_matchings/racer/func_80045128.s +++ /dev/null @@ -1,104 +0,0 @@ -glabel func_80045128 -/* 045D28 80045128 8C8E0000 */ lw $t6, ($a0) -/* 045D2C 8004512C 3C018012 */ lui $at, %hi(D_8011D588) # $at, 0x8012 -/* 045D30 80045130 8DC20064 */ lw $v0, 0x64($t6) -/* 045D34 80045134 00801825 */ move $v1, $a0 -/* 045D38 80045138 804F0193 */ lb $t7, 0x193($v0) -/* 045D3C 8004513C 3C198012 */ lui $t9, %hi(D_8011D588) # $t9, 0x8012 -/* 045D40 80045140 A02FD588 */ sb $t7, %lo(D_8011D588)($at) -/* 045D44 80045144 805801CF */ lb $t8, 0x1cf($v0) -/* 045D48 80045148 3C0F8012 */ lui $t7, %hi(D_8011D589) # $t7, 0x8012 -/* 045D4C 8004514C 13000005 */ beqz $t8, .L80045164 -/* 045D50 80045150 3C0A8012 */ lui $t2, %hi(D_8011D588) # $t2, 0x8012 -/* 045D54 80045154 8339D588 */ lb $t9, %lo(D_8011D588)($t9) -/* 045D58 80045158 3C018012 */ lui $at, %hi(D_8011D588) # $at, 0x8012 -/* 045D5C 8004515C 37280040 */ ori $t0, $t9, 0x40 -/* 045D60 80045160 A028D588 */ sb $t0, %lo(D_8011D588)($at) -.L80045164: -/* 045D64 80045164 8C490144 */ lw $t1, 0x144($v0) -/* 045D68 80045168 3C088012 */ lui $t0, %hi(D_8011D589) # $t0, 0x8012 -/* 045D6C 8004516C 11200005 */ beqz $t1, .L80045184 -/* 045D70 80045170 00000000 */ nop -/* 045D74 80045174 814AD588 */ lb $t2, %lo(D_8011D588)($t2) -/* 045D78 80045178 3C018012 */ lui $at, %hi(D_8011D588) # $at, 0x8012 -/* 045D7C 8004517C 354B0080 */ ori $t3, $t2, 0x80 -/* 045D80 80045180 A02BD588 */ sb $t3, %lo(D_8011D588)($at) -.L80045184: -/* 045D84 80045184 8C6C0004 */ lw $t4, 4($v1) -/* 045D88 80045188 3C018012 */ lui $at, %hi(D_8011D589) # $at, 0x8012 -/* 045D8C 8004518C 8D820064 */ lw $v0, 0x64($t4) -/* 045D90 80045190 00000000 */ nop -/* 045D94 80045194 804D0193 */ lb $t5, 0x193($v0) -/* 045D98 80045198 00000000 */ nop -/* 045D9C 8004519C A02DD589 */ sb $t5, %lo(D_8011D589)($at) -/* 045DA0 800451A0 804E01CF */ lb $t6, 0x1cf($v0) -/* 045DA4 800451A4 3C0D8012 */ lui $t5, %hi(D_8011D58A) # $t5, 0x8012 -/* 045DA8 800451A8 11C00005 */ beqz $t6, .L800451C0 -/* 045DAC 800451AC 00000000 */ nop -/* 045DB0 800451B0 81EFD589 */ lb $t7, %lo(D_8011D589)($t7) -/* 045DB4 800451B4 3C018012 */ lui $at, %hi(D_8011D589) # $at, 0x8012 -/* 045DB8 800451B8 35F80040 */ ori $t8, $t7, 0x40 -/* 045DBC 800451BC A038D589 */ sb $t8, %lo(D_8011D589)($at) -.L800451C0: -/* 045DC0 800451C0 8C590144 */ lw $t9, 0x144($v0) -/* 045DC4 800451C4 3C188012 */ lui $t8, %hi(D_8011D58A) # $t8, 0x8012 -/* 045DC8 800451C8 13200005 */ beqz $t9, .L800451E0 -/* 045DCC 800451CC 00000000 */ nop -/* 045DD0 800451D0 8108D589 */ lb $t0, %lo(D_8011D589)($t0) -/* 045DD4 800451D4 3C018012 */ lui $at, %hi(D_8011D589) # $at, 0x8012 -/* 045DD8 800451D8 35090080 */ ori $t1, $t0, 0x80 -/* 045DDC 800451DC A029D589 */ sb $t1, %lo(D_8011D589)($at) -.L800451E0: -/* 045DE0 800451E0 8C6A0008 */ lw $t2, 8($v1) -/* 045DE4 800451E4 3C018012 */ lui $at, %hi(D_8011D58A) # $at, 0x8012 -/* 045DE8 800451E8 8D420064 */ lw $v0, 0x64($t2) -/* 045DEC 800451EC 00000000 */ nop -/* 045DF0 800451F0 804B0193 */ lb $t3, 0x193($v0) -/* 045DF4 800451F4 00000000 */ nop -/* 045DF8 800451F8 A02BD58A */ sb $t3, %lo(D_8011D58A)($at) -/* 045DFC 800451FC 804C01CF */ lb $t4, 0x1cf($v0) -/* 045E00 80045200 3C0B8012 */ lui $t3, %hi(D_8011D58B) # $t3, 0x8012 -/* 045E04 80045204 11800005 */ beqz $t4, .L8004521C -/* 045E08 80045208 00000000 */ nop -/* 045E0C 8004520C 81ADD58A */ lb $t5, %lo(D_8011D58A)($t5) -/* 045E10 80045210 3C018012 */ lui $at, %hi(D_8011D58A) # $at, 0x8012 -/* 045E14 80045214 35AE0040 */ ori $t6, $t5, 0x40 -/* 045E18 80045218 A02ED58A */ sb $t6, %lo(D_8011D58A)($at) -.L8004521C: -/* 045E1C 8004521C 8C4F0144 */ lw $t7, 0x144($v0) -/* 045E20 80045220 3C0E8012 */ lui $t6, %hi(D_8011D58B) # $t6, 0x8012 -/* 045E24 80045224 11E00005 */ beqz $t7, .L8004523C -/* 045E28 80045228 00000000 */ nop -/* 045E2C 8004522C 8318D58A */ lb $t8, %lo(D_8011D58A)($t8) -/* 045E30 80045230 3C018012 */ lui $at, %hi(D_8011D58A) # $at, 0x8012 -/* 045E34 80045234 37190080 */ ori $t9, $t8, 0x80 -/* 045E38 80045238 A039D58A */ sb $t9, %lo(D_8011D58A)($at) -.L8004523C: -/* 045E3C 8004523C 8C68000C */ lw $t0, 0xc($v1) -/* 045E40 80045240 3C018012 */ lui $at, %hi(D_8011D58B) # $at, 0x8012 -/* 045E44 80045244 8D020064 */ lw $v0, 0x64($t0) -/* 045E48 80045248 00000000 */ nop -/* 045E4C 8004524C 80490193 */ lb $t1, 0x193($v0) -/* 045E50 80045250 00000000 */ nop -/* 045E54 80045254 A029D58B */ sb $t1, %lo(D_8011D58B)($at) -/* 045E58 80045258 804A01CF */ lb $t2, 0x1cf($v0) -/* 045E5C 8004525C 00000000 */ nop -/* 045E60 80045260 11400005 */ beqz $t2, .L80045278 -/* 045E64 80045264 00000000 */ nop -/* 045E68 80045268 816BD58B */ lb $t3, %lo(D_8011D58B)($t3) -/* 045E6C 8004526C 3C018012 */ lui $at, %hi(D_8011D58B) # $at, 0x8012 -/* 045E70 80045270 356C0040 */ ori $t4, $t3, 0x40 -/* 045E74 80045274 A02CD58B */ sb $t4, %lo(D_8011D58B)($at) -.L80045278: -/* 045E78 80045278 8C4D0144 */ lw $t5, 0x144($v0) -/* 045E7C 8004527C 00000000 */ nop -/* 045E80 80045280 11A00005 */ beqz $t5, .L80045298 -/* 045E84 80045284 00000000 */ nop -/* 045E88 80045288 81CED58B */ lb $t6, %lo(D_8011D58B)($t6) -/* 045E8C 8004528C 3C018012 */ lui $at, %hi(D_8011D58B) # $at, 0x8012 -/* 045E90 80045290 35CF0080 */ ori $t7, $t6, 0x80 -/* 045E94 80045294 A02FD58B */ sb $t7, %lo(D_8011D58B)($at) -.L80045298: -/* 045E98 80045298 03E00008 */ jr $ra -/* 045E9C 8004529C 00000000 */ nop - diff --git a/asm/non_matchings/racer/func_800452A0.s b/asm/non_matchings/racer/func_800452A0.s index a4c37e53..e0ee62f6 100644 --- a/asm/non_matchings/racer/func_800452A0.s +++ b/asm/non_matchings/racer/func_800452A0.s @@ -79,11 +79,11 @@ glabel func_800452A0 /* 045F9C 8004539C 8FBE0080 */ lw $fp, 0x80($sp) /* 045FA0 800453A0 24170003 */ li $s7, 3 .L800453A4: -/* 045FA4 800453A4 3C058012 */ lui $a1, %hi(D_8011D58B) # $a1, 0x8012 +/* 045FA4 800453A4 3C058012 */ lui $a1, %hi(D_8011D588+3) # $a1, 0x8012 /* 045FA8 800453A8 2411FFFF */ li $s1, -1 /* 045FAC 800453AC 00008025 */ move $s0, $zero /* 045FB0 800453B0 00009025 */ move $s2, $zero -/* 045FB4 800453B4 24A5D58B */ addiu $a1, %lo(D_8011D58B) # addiu $a1, $a1, -0x2a75 +/* 045FB4 800453B4 24A5D58B */ addiu $a1, %lo(D_8011D588+3) # addiu $a1, $a1, -0x2a75 /* 045FB8 800453B8 02E02025 */ move $a0, $s7 /* 045FBC 800453BC 00009825 */ move $s3, $zero .L800453C0: @@ -177,8 +177,8 @@ glabel func_800452A0 /* 0460FC 800454FC 00008825 */ move $s1, $zero .L80045500: /* 046100 80045500 10410007 */ beq $v0, $at, .L80045520 -/* 046104 80045504 3C0C8012 */ lui $t4, %hi(D_8011D589) # $t4, 0x8012 -/* 046108 80045508 818CD589 */ lb $t4, %lo(D_8011D589)($t4) +/* 046104 80045504 3C0C8012 */ lui $t4, %hi(D_8011D588+1) # $t4, 0x8012 +/* 046108 80045508 818CD589 */ lb $t4, %lo(D_8011D588+1)($t4) /* 04610C 8004550C 00000000 */ nop /* 046110 80045510 318D0040 */ andi $t5, $t4, 0x40 /* 046114 80045514 11A00003 */ beqz $t5, .L80045524 @@ -188,8 +188,8 @@ glabel func_800452A0 /* 046120 80045520 24010002 */ li $at, 2 .L80045524: /* 046124 80045524 10410007 */ beq $v0, $at, .L80045544 -/* 046128 80045528 3C0E8012 */ lui $t6, %hi(D_8011D58A) # $t6, 0x8012 -/* 04612C 8004552C 81CED58A */ lb $t6, %lo(D_8011D58A)($t6) +/* 046128 80045528 3C0E8012 */ lui $t6, %hi(D_8011D588+2) # $t6, 0x8012 +/* 04612C 8004552C 81CED58A */ lb $t6, %lo(D_8011D588+2)($t6) /* 046130 80045530 00000000 */ nop /* 046134 80045534 31CF0040 */ andi $t7, $t6, 0x40 /* 046138 80045538 11E00003 */ beqz $t7, .L80045548 @@ -199,8 +199,8 @@ glabel func_800452A0 /* 046144 80045544 24010003 */ li $at, 3 .L80045548: /* 046148 80045548 10410009 */ beq $v0, $at, .L80045570 -/* 04614C 8004554C 3C188012 */ lui $t8, %hi(D_8011D58B) # $t8, 0x8012 -/* 046150 80045550 8318D58B */ lb $t8, %lo(D_8011D58B)($t8) +/* 04614C 8004554C 3C188012 */ lui $t8, %hi(D_8011D588+3) # $t8, 0x8012 +/* 046150 80045550 8318D58B */ lb $t8, %lo(D_8011D588+3)($t8) /* 046154 80045554 00000000 */ nop /* 046158 80045558 33190040 */ andi $t9, $t8, 0x40 /* 04615C 8004555C 13200005 */ beqz $t9, .L80045574 diff --git a/include/structs.h b/include/structs.h index f6b45364..d8c8b3f4 100644 --- a/include/structs.h +++ b/include/structs.h @@ -916,7 +916,7 @@ typedef struct Object_Racer { /* 0x18E */ s16 unk18E; /* 0x190 */ u16 unk190; /* 0x192 */ u8 unk192; - /* 0x193 */ u8 unk193; + /* 0x193 */ s8 unk193; /* 0x194 */ s8 unk194; /* 0x195 */ s8 unk195; /* 0x196 */ s16 unk196; @@ -946,7 +946,7 @@ typedef struct Object_Racer { /* 0x1CC */ u8 unk1CC; /* 0x1CD */ u8 unk1CD; /* 0x1CE */ u8 unk1CE; - /* 0x1CF */ u8 unk1CF; + /* 0x1CF */ s8 unk1CF; /* 0x1D0 */ u8 unk1D0; /* 0x1D1 */ u8 unk1D1; /* 0x1D2 */ u8 unk1D2; diff --git a/src/font.h b/src/font.h index 1c8669ef..5b8bc28d 100644 --- a/src/font.h +++ b/src/font.h @@ -22,7 +22,7 @@ typedef enum TextFonts { FONT_COLOURFUL, FONT_SMALL, FONT_LARGE, - FONT_UNK_FF = 255, + FONT_UNK_FF = 255 } TextFonts; enum DialogueFlags { @@ -31,7 +31,7 @@ enum DialogueFlags { DIALOGUE_BOX_CLOSED = 0x7FFF, DIALOGUE_BOX_OPEN = 0x8000, DIALOGUE_BOX_UNK_02 = 0xBFFF, - DIALOGUE_BOX_UNUSED_02 = 0xFFFE, + DIALOGUE_BOX_UNUSED_02 = 0xFFFE }; /* Size: 0x20 bytes */ diff --git a/src/game.h b/src/game.h index 23ca246e..5b284aa6 100644 --- a/src/game.h +++ b/src/game.h @@ -13,7 +13,7 @@ enum RenderContext { DRAW_UNK_02, DRAW_UNK_03, DRAW_UNK_04, - DRAW_CRASH_SCREEN, + DRAW_CRASH_SCREEN }; /* Size: 6 bytes */ diff --git a/src/racer.c b/src/racer.c index 6d0f9ff6..79342cc8 100644 --- a/src/racer.c +++ b/src/racer.c @@ -172,11 +172,7 @@ s8 D_8011D583; s8 D_8011D584; s8 D_8011D585; s16 D_8011D586; -s8 D_8011D588; -s8 D_8011D589; -s8 D_8011D58A; -s8 D_8011D58B; -s8 D_8011D58B; +s8 D_8011D588[4]; s8 D_8011D58C[4]; GhostHeader *gGhostData[3]; s8 D_8011D59C; @@ -364,7 +360,29 @@ s32 func_80044450(s32 arg0) { } GLOBAL_ASM("asm/non_matchings/racer/func_8004447C.s") -GLOBAL_ASM("asm/non_matchings/racer/func_80045128.s") + +struct TempStruct2 { + Object *unk0[4]; + u8 pad10[0x1BF]; + s32 unk1CF; +}; + +void func_80045128(struct TempStruct2 *header) { + struct Object_Racer *obj; + s32 i; + + for (i = 0; i < 4; i++) { + obj = (struct Object_Racer *) header->unk0[i]->unk64; + D_8011D588[i] = obj->unk193; + if (obj->unk1CF != 0) { + D_8011D588[i] |= 0x40; + } + if (obj->held_obj != 0) { + D_8011D588[i] |= 0x80; + } + } +} + GLOBAL_ASM("asm/non_matchings/racer/func_800452A0.s") GLOBAL_ASM("asm/non_matchings/racer/func_80045C48.s") GLOBAL_ASM("asm/non_matchings/racer/func_80046524.s")