From bc99dedb8bc0d8a1f6fed20e36ed60a3ed70b01b Mon Sep 17 00:00:00 2001 From: ChiefFruitcake <96551211+ChiefFruitcake@users.noreply.github.com> Date: Sun, 9 Jan 2022 21:24:30 -0500 Subject: [PATCH] code_800AF9B0 - ghost data (#133) * Match functions related to struct at D_8018EE10 * Remove asm for matched functions * Match func_800B64EC, func_800B6708, and func_800B6798 * Match func_80091EE4. Fix unused variable warnings in code_80091750.c * Name some of the fields in struct_8018EE10_entry --- .../code_80091750/func_80091EE4.s | 53 ----- .../code_800AF9B0/func_800B6348.s | 26 --- .../code_800AF9B0/func_800B639C.s | 26 --- .../code_800AF9B0/func_800B63F0.s | 69 ------ .../code_800AF9B0/func_800B64EC.s | 73 ------ .../code_800AF9B0/func_800B6708.s | 39 ---- .../code_800AF9B0/func_800B6798.s | 39 ---- include/common_structs.h | 10 +- src/code_80091750.c | 47 ++-- src/code_800AF9B0.c | 219 ++++++------------ src/code_800AF9B0.h | 15 ++ 11 files changed, 111 insertions(+), 505 deletions(-) delete mode 100644 asm/non_matchings/code_80091750/func_80091EE4.s delete mode 100644 asm/non_matchings/code_800AF9B0/func_800B6348.s delete mode 100644 asm/non_matchings/code_800AF9B0/func_800B639C.s delete mode 100644 asm/non_matchings/code_800AF9B0/func_800B63F0.s delete mode 100644 asm/non_matchings/code_800AF9B0/func_800B64EC.s delete mode 100644 asm/non_matchings/code_800AF9B0/func_800B6708.s delete mode 100644 asm/non_matchings/code_800AF9B0/func_800B6798.s diff --git a/asm/non_matchings/code_80091750/func_80091EE4.s b/asm/non_matchings/code_80091750/func_80091EE4.s deleted file mode 100644 index f09c6d2be..000000000 --- a/asm/non_matchings/code_80091750/func_80091EE4.s +++ /dev/null @@ -1,53 +0,0 @@ -glabel func_80091EE4 -/* 092AE4 80091EE4 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 092AE8 80091EE8 AFBF0024 */ sw $ra, 0x24($sp) -/* 092AEC 80091EEC 3C01800F */ lui $at, %hi(D_800E86F8) # $at, 0x800f -/* 092AF0 80091EF0 AFB30020 */ sw $s3, 0x20($sp) -/* 092AF4 80091EF4 AFB2001C */ sw $s2, 0x1c($sp) -/* 092AF8 80091EF8 AFB10018 */ sw $s1, 0x18($sp) -/* 092AFC 80091EFC AFB00014 */ sw $s0, 0x14($sp) -/* 092B00 80091F00 0C02D7CC */ jal func_800B5F30 -/* 092B04 80091F04 A02086F8 */ sb $zero, %lo(D_800E86F8)($at) -/* 092B08 80091F08 3C138019 */ lui $s3, %hi(D_8018EDFB) # $s3, 0x8019 -/* 092B0C 80091F0C 2673EDFB */ addiu $s3, %lo(D_8018EDFB) # addiu $s3, $s3, -0x1205 -/* 092B10 80091F10 826E0000 */ lb $t6, ($s3) -/* 092B14 80091F14 51C0001D */ beql $t6, $zero, .L80091F8C -/* 092B18 80091F18 8FBF0024 */ lw $ra, 0x24($sp) -/* 092B1C 80091F1C 1440001A */ bnez $v0, .L80091F88 -/* 092B20 80091F20 3C0F8019 */ lui $t7, %hi(gCupSelection) # $t7, 0x8019 -/* 092B24 80091F24 81EFEE09 */ lb $t7, %lo(gCupSelection)($t7) -/* 092B28 80091F28 3C198019 */ lui $t9, %hi(gCupCourseSelection) # $t9, 0x8019 -/* 092B2C 80091F2C 8339EE0B */ lb $t9, %lo(gCupCourseSelection)($t9) -/* 092B30 80091F30 000FC080 */ sll $t8, $t7, 2 -/* 092B34 80091F34 0C02D9C2 */ jal func_800B6708 -/* 092B38 80091F38 03199021 */ addu $s2, $t8, $t9 -/* 092B3C 80091F3C 3C118019 */ lui $s1, %hi(D_8018EE10) # $s1, 0x8019 -/* 092B40 80091F40 2631EE10 */ addiu $s1, %lo(D_8018EE10) # addiu $s1, $s1, -0x11f0 -/* 092B44 80091F44 00008025 */ move $s0, $zero -/* 092B48 80091F48 001041C0 */ sll $t0, $s0, 7 -.L80091F4C: -/* 092B4C 80091F4C 02281021 */ addu $v0, $s1, $t0 -/* 092B50 80091F50 90490004 */ lbu $t1, 4($v0) -/* 092B54 80091F54 51200009 */ beql $t1, $zero, .L80091F7C -/* 092B58 80091F58 26100001 */ addiu $s0, $s0, 1 -/* 092B5C 80091F5C 804A0005 */ lb $t2, 5($v0) -/* 092B60 80091F60 564A0006 */ bnel $s2, $t2, .L80091F7C -/* 092B64 80091F64 26100001 */ addiu $s0, $s0, 1 -/* 092B68 80091F68 0C02D93B */ jal func_800B64EC -/* 092B6C 80091F6C 02002025 */ move $a0, $s0 -/* 092B70 80091F70 24100002 */ li $s0, 2 -/* 092B74 80091F74 A2600000 */ sb $zero, ($s3) -/* 092B78 80091F78 26100001 */ addiu $s0, $s0, 1 -.L80091F7C: -/* 092B7C 80091F7C 2A010002 */ slti $at, $s0, 2 -/* 092B80 80091F80 5420FFF2 */ bnel $at, $zero, .L80091F4C -/* 092B84 80091F84 001041C0 */ sll $t0, $s0, 7 -.L80091F88: -/* 092B88 80091F88 8FBF0024 */ lw $ra, 0x24($sp) -.L80091F8C: -/* 092B8C 80091F8C 8FB00014 */ lw $s0, 0x14($sp) -/* 092B90 80091F90 8FB10018 */ lw $s1, 0x18($sp) -/* 092B94 80091F94 8FB2001C */ lw $s2, 0x1c($sp) -/* 092B98 80091F98 8FB30020 */ lw $s3, 0x20($sp) -/* 092B9C 80091F9C 03E00008 */ jr $ra -/* 092BA0 80091FA0 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/non_matchings/code_800AF9B0/func_800B6348.s b/asm/non_matchings/code_800AF9B0/func_800B6348.s deleted file mode 100644 index ef268e5c5..000000000 --- a/asm/non_matchings/code_800AF9B0/func_800B6348.s +++ /dev/null @@ -1,26 +0,0 @@ -glabel func_800B6348 -/* 0B6F48 800B6348 3C028019 */ lui $v0, %hi(D_8018EE10) # $v0, 0x8019 -/* 0B6F4C 800B634C 2442EE10 */ addiu $v0, %lo(D_8018EE10) # addiu $v0, $v0, -0x11f0 -/* 0B6F50 800B6350 904E0004 */ lbu $t6, 4($v0) -/* 0B6F54 800B6354 51C00007 */ beql $t6, $zero, .L800B6374 -/* 0B6F58 800B6358 90580084 */ lbu $t8, 0x84($v0) -/* 0B6F5C 800B635C 804F0005 */ lb $t7, 5($v0) -/* 0B6F60 800B6360 548F0004 */ bnel $a0, $t7, .L800B6374 -/* 0B6F64 800B6364 90580084 */ lbu $t8, 0x84($v0) -/* 0B6F68 800B6368 03E00008 */ jr $ra -/* 0B6F6C 800B636C 00001025 */ move $v0, $zero - -/* 0B6F70 800B6370 90580084 */ lbu $t8, 0x84($v0) -.L800B6374: -/* 0B6F74 800B6374 53000007 */ beql $t8, $zero, .L800B6394 -/* 0B6F78 800B6378 00001025 */ move $v0, $zero -/* 0B6F7C 800B637C 80590085 */ lb $t9, 0x85($v0) -/* 0B6F80 800B6380 54990004 */ bnel $a0, $t9, .L800B6394 -/* 0B6F84 800B6384 00001025 */ move $v0, $zero -/* 0B6F88 800B6388 03E00008 */ jr $ra -/* 0B6F8C 800B638C 24020001 */ li $v0, 1 - -/* 0B6F90 800B6390 00001025 */ move $v0, $zero -.L800B6394: -/* 0B6F94 800B6394 03E00008 */ jr $ra -/* 0B6F98 800B6398 00000000 */ nop diff --git a/asm/non_matchings/code_800AF9B0/func_800B639C.s b/asm/non_matchings/code_800AF9B0/func_800B639C.s deleted file mode 100644 index c71c19814..000000000 --- a/asm/non_matchings/code_800AF9B0/func_800B639C.s +++ /dev/null @@ -1,26 +0,0 @@ -glabel func_800B639C -/* 0B6F9C 800B639C 3C028019 */ lui $v0, %hi(D_8018EE10) # $v0, 0x8019 -/* 0B6FA0 800B63A0 2442EE10 */ addiu $v0, %lo(D_8018EE10) # addiu $v0, $v0, -0x11f0 -/* 0B6FA4 800B63A4 904E0004 */ lbu $t6, 4($v0) -/* 0B6FA8 800B63A8 51C00007 */ beql $t6, $zero, .L800B63C8 -/* 0B6FAC 800B63AC 90580084 */ lbu $t8, 0x84($v0) -/* 0B6FB0 800B63B0 804F0005 */ lb $t7, 5($v0) -/* 0B6FB4 800B63B4 548F0004 */ bnel $a0, $t7, .L800B63C8 -/* 0B6FB8 800B63B8 90580084 */ lbu $t8, 0x84($v0) -/* 0B6FBC 800B63BC 03E00008 */ jr $ra -/* 0B6FC0 800B63C0 00001025 */ move $v0, $zero - -/* 0B6FC4 800B63C4 90580084 */ lbu $t8, 0x84($v0) -.L800B63C8: -/* 0B6FC8 800B63C8 53000007 */ beql $t8, $zero, .L800B63E8 -/* 0B6FCC 800B63CC 2402FFFF */ li $v0, -1 -/* 0B6FD0 800B63D0 80590085 */ lb $t9, 0x85($v0) -/* 0B6FD4 800B63D4 54990004 */ bnel $a0, $t9, .L800B63E8 -/* 0B6FD8 800B63D8 2402FFFF */ li $v0, -1 -/* 0B6FDC 800B63DC 03E00008 */ jr $ra -/* 0B6FE0 800B63E0 24020001 */ li $v0, 1 - -/* 0B6FE4 800B63E4 2402FFFF */ li $v0, -1 -.L800B63E8: -/* 0B6FE8 800B63E8 03E00008 */ jr $ra -/* 0B6FEC 800B63EC 00000000 */ nop diff --git a/asm/non_matchings/code_800AF9B0/func_800B63F0.s b/asm/non_matchings/code_800AF9B0/func_800B63F0.s deleted file mode 100644 index 1de8ac71a..000000000 --- a/asm/non_matchings/code_800AF9B0/func_800B63F0.s +++ /dev/null @@ -1,69 +0,0 @@ -glabel func_800B63F0 -/* 0B6FF0 800B63F0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0B6FF4 800B63F4 AFBF0024 */ sw $ra, 0x24($sp) -/* 0B6FF8 800B63F8 AFB00014 */ sw $s0, 0x14($sp) -/* 0B6FFC 800B63FC 00808025 */ move $s0, $a0 -/* 0B7000 800B6400 AFB30020 */ sw $s3, 0x20($sp) -/* 0B7004 800B6404 AFB2001C */ sw $s2, 0x1c($sp) -/* 0B7008 800B6408 0C001471 */ jal func_800051C4 -/* 0B700C 800B640C AFB10018 */ sw $s1, 0x18($sp) -/* 0B7010 800B6410 240E0001 */ li $t6, 1 -/* 0B7014 800B6414 3C018016 */ lui $at, %hi(D_80162DD6) # $at, 0x8016 -/* 0B7018 800B6418 3C04800E */ lui $a0, %hi(gPlayerThree) # $a0, 0x800e -/* 0B701C 800B641C A42E2DD6 */ sh $t6, %lo(D_80162DD6)($at) -/* 0B7020 800B6420 0C0016BA */ jal func_80005AE8 -/* 0B7024 800B6424 8C84C4E4 */ lw $a0, %lo(gPlayerThree)($a0) -/* 0B7028 800B6428 3C188019 */ lui $t8, %hi(D_8018EE10) # $t8, 0x8019 -/* 0B702C 800B642C 3C198019 */ lui $t9, %hi(gCupSelection) # $t9, 0x8019 -/* 0B7030 800B6430 8339EE09 */ lb $t9, %lo(gCupSelection)($t9) -/* 0B7034 800B6434 2718EE10 */ addiu $t8, %lo(D_8018EE10) # addiu $t8, $t8, -0x11f0 -/* 0B7038 800B6438 001079C0 */ sll $t7, $s0, 7 -/* 0B703C 800B643C 3C098019 */ lui $t1, %hi(gCupCourseSelection) # $t1, 0x8019 -/* 0B7040 800B6440 8129EE0B */ lb $t1, %lo(gCupCourseSelection)($t1) -/* 0B7044 800B6444 01F81021 */ addu $v0, $t7, $t8 -/* 0B7048 800B6448 804B0005 */ lb $t3, 5($v0) -/* 0B704C 800B644C 00194080 */ sll $t0, $t9, 2 -/* 0B7050 800B6450 01095021 */ addu $t2, $t0, $t1 -/* 0B7054 800B6454 114B0003 */ beq $t2, $t3, .L800B6464 -/* 0B7058 800B6458 00009825 */ move $s3, $zero -/* 0B705C 800B645C 1000001B */ b .L800B64CC -/* 0B7060 800B6460 24130002 */ li $s3, 2 -.L800B6464: -/* 0B7064 800B6464 3C0C8016 */ lui $t4, %hi(D_80162DFC) # $t4, 0x8016 -/* 0B7068 800B6468 8D8C2DFC */ lw $t4, %lo(D_80162DFC)($t4) -/* 0B706C 800B646C 8C4D0000 */ lw $t5, ($v0) -/* 0B7070 800B6470 3C0E8016 */ lui $t6, %hi(D_80162DE0) # $t6, 0x8016 -/* 0B7074 800B6474 118D0003 */ beq $t4, $t5, .L800B6484 -/* 0B7078 800B6478 00000000 */ nop -/* 0B707C 800B647C 10000013 */ b .L800B64CC -/* 0B7080 800B6480 24130003 */ li $s3, 3 -.L800B6484: -/* 0B7084 800B6484 8DCE2DE0 */ lw $t6, %lo(D_80162DE0)($t6) -/* 0B7088 800B6488 904F0006 */ lbu $t7, 6($v0) -/* 0B708C 800B648C 00008025 */ move $s0, $zero -/* 0B7090 800B6490 00408825 */ move $s1, $v0 -/* 0B7094 800B6494 11CF0003 */ beq $t6, $t7, .L800B64A4 -/* 0B7098 800B6498 2412003C */ li $s2, 60 -/* 0B709C 800B649C 1000000B */ b .L800B64CC -/* 0B70A0 800B64A0 24130004 */ li $s3, 4 -.L800B64A4: -/* 0B70A4 800B64A4 0C02D83A */ jal func_800B60E8 -/* 0B70A8 800B64A8 02002025 */ move $a0, $s0 -/* 0B70AC 800B64AC 92380007 */ lbu $t8, 7($s1) -/* 0B70B0 800B64B0 26100001 */ addiu $s0, $s0, 1 -/* 0B70B4 800B64B4 13020003 */ beq $t8, $v0, .L800B64C4 -/* 0B70B8 800B64B8 00000000 */ nop -/* 0B70BC 800B64BC 10000003 */ b .L800B64CC -/* 0B70C0 800B64C0 24130001 */ li $s3, 1 -.L800B64C4: -/* 0B70C4 800B64C4 1612FFF7 */ bne $s0, $s2, .L800B64A4 -/* 0B70C8 800B64C8 26310001 */ addiu $s1, $s1, 1 -.L800B64CC: -/* 0B70CC 800B64CC 8FBF0024 */ lw $ra, 0x24($sp) -/* 0B70D0 800B64D0 02601025 */ move $v0, $s3 -/* 0B70D4 800B64D4 8FB30020 */ lw $s3, 0x20($sp) -/* 0B70D8 800B64D8 8FB00014 */ lw $s0, 0x14($sp) -/* 0B70DC 800B64DC 8FB10018 */ lw $s1, 0x18($sp) -/* 0B70E0 800B64E0 8FB2001C */ lw $s2, 0x1c($sp) -/* 0B70E4 800B64E4 03E00008 */ jr $ra -/* 0B70E8 800B64E8 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/non_matchings/code_800AF9B0/func_800B64EC.s b/asm/non_matchings/code_800AF9B0/func_800B64EC.s deleted file mode 100644 index 4cd52477c..000000000 --- a/asm/non_matchings/code_800AF9B0/func_800B64EC.s +++ /dev/null @@ -1,73 +0,0 @@ -glabel func_800B64EC -/* 0B70EC 800B64EC 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 0B70F0 800B64F0 AFB20024 */ sw $s2, 0x24($sp) -/* 0B70F4 800B64F4 00809025 */ move $s2, $a0 -/* 0B70F8 800B64F8 AFBF002C */ sw $ra, 0x2c($sp) -/* 0B70FC 800B64FC AFB30028 */ sw $s3, 0x28($sp) -/* 0B7100 800B6500 AFB10020 */ sw $s1, 0x20($sp) -/* 0B7104 800B6504 10800006 */ beqz $a0, .L800B6520 -/* 0B7108 800B6508 AFB0001C */ sw $s0, 0x1c($sp) -/* 0B710C 800B650C 24010001 */ li $at, 1 -/* 0B7110 800B6510 50810004 */ beql $a0, $at, .L800B6524 -/* 0B7114 800B6514 00123900 */ sll $a3, $s2, 4 -/* 0B7118 800B6518 1000002F */ b .L800B65D8 -/* 0B711C 800B651C 2402FFFF */ li $v0, -1 -.L800B6520: -/* 0B7120 800B6520 00123900 */ sll $a3, $s2, 4 -.L800B6524: -/* 0B7124 800B6524 3C0F800E */ lui $t7, %hi(D_800DC714) # $t7, 0x800e -/* 0B7128 800B6528 8DEFC714 */ lw $t7, %lo(D_800DC714)($t7) -/* 0B712C 800B652C 00F23823 */ subu $a3, $a3, $s2 -/* 0B7130 800B6530 00073A80 */ sll $a3, $a3, 0xa -/* 0B7134 800B6534 3C048019 */ lui $a0, %hi(D_8018E868) # $a0, 0x8019 -/* 0B7138 800B6538 3C058019 */ lui $a1, %hi(D_8018EB84) # $a1, 0x8019 -/* 0B713C 800B653C 240E3C00 */ li $t6, 15360 -/* 0B7140 800B6540 AFAE0010 */ sw $t6, 0x10($sp) -/* 0B7144 800B6544 8CA5EB84 */ lw $a1, %lo(D_8018EB84)($a1) -/* 0B7148 800B6548 2484E868 */ addiu $a0, %lo(D_8018E868) # addiu $a0, $a0, -0x1798 -/* 0B714C 800B654C 24E70100 */ addiu $a3, $a3, 0x100 -/* 0B7150 800B6550 00003025 */ move $a2, $zero -/* 0B7154 800B6554 0C0340F3 */ jal osPfsReadWriteFile -/* 0B7158 800B6558 AFAF0014 */ sw $t7, 0x14($sp) -/* 0B715C 800B655C 1440001D */ bnez $v0, .L800B65D4 -/* 0B7160 800B6560 AFA20030 */ sw $v0, 0x30($sp) -/* 0B7164 800B6564 3C198019 */ lui $t9, %hi(D_8018EE10) # $t9, 0x8019 -/* 0B7168 800B6568 2739EE10 */ addiu $t9, %lo(D_8018EE10) # addiu $t9, $t9, -0x11f0 -/* 0B716C 800B656C 0012C1C0 */ sll $t8, $s2, 7 -/* 0B7170 800B6570 03199821 */ addu $s3, $t8, $t9 -/* 0B7174 800B6574 02608825 */ move $s1, $s3 -/* 0B7178 800B6578 2412003C */ li $s2, 60 -/* 0B717C 800B657C 00008025 */ move $s0, $zero -.L800B6580: -/* 0B7180 800B6580 0C02D83A */ jal func_800B60E8 -/* 0B7184 800B6584 02002025 */ move $a0, $s0 -/* 0B7188 800B6588 92280007 */ lbu $t0, 7($s1) -/* 0B718C 800B658C 26100001 */ addiu $s0, $s0, 1 -/* 0B7190 800B6590 11020004 */ beq $t0, $v0, .L800B65A4 -/* 0B7194 800B6594 00000000 */ nop -/* 0B7198 800B6598 A2600004 */ sb $zero, 4($s3) -/* 0B719C 800B659C 1000000E */ b .L800B65D8 -/* 0B71A0 800B65A0 2402FFFE */ li $v0, -2 -.L800B65A4: -/* 0B71A4 800B65A4 1612FFF6 */ bne $s0, $s2, .L800B6580 -/* 0B71A8 800B65A8 26310001 */ addiu $s1, $s1, 1 -/* 0B71AC 800B65AC 0C00148B */ jal func_8000522C -/* 0B71B0 800B65B0 00000000 */ nop -/* 0B71B4 800B65B4 3C018016 */ lui $at, %hi(D_80162DD4) # $at, 0x8016 -/* 0B71B8 800B65B8 A4202DD4 */ sh $zero, %lo(D_80162DD4)($at) -/* 0B71BC 800B65BC 92690006 */ lbu $t1, 6($s3) -/* 0B71C0 800B65C0 3C018016 */ lui $at, %hi(D_80162DE0) # $at, 0x8016 -/* 0B71C4 800B65C4 AC292DE0 */ sw $t1, %lo(D_80162DE0)($at) -/* 0B71C8 800B65C8 8E6A0000 */ lw $t2, ($s3) -/* 0B71CC 800B65CC 3C018016 */ lui $at, %hi(D_80162DFC) # $at, 0x8016 -/* 0B71D0 800B65D0 AC2A2DFC */ sw $t2, %lo(D_80162DFC)($at) -.L800B65D4: -/* 0B71D4 800B65D4 8FA20030 */ lw $v0, 0x30($sp) -.L800B65D8: -/* 0B71D8 800B65D8 8FBF002C */ lw $ra, 0x2c($sp) -/* 0B71DC 800B65DC 8FB0001C */ lw $s0, 0x1c($sp) -/* 0B71E0 800B65E0 8FB10020 */ lw $s1, 0x20($sp) -/* 0B71E4 800B65E4 8FB20024 */ lw $s2, 0x24($sp) -/* 0B71E8 800B65E8 8FB30028 */ lw $s3, 0x28($sp) -/* 0B71EC 800B65EC 03E00008 */ jr $ra -/* 0B71F0 800B65F0 27BD0038 */ addiu $sp, $sp, 0x38 diff --git a/asm/non_matchings/code_800AF9B0/func_800B6708.s b/asm/non_matchings/code_800AF9B0/func_800B6708.s deleted file mode 100644 index 122c78972..000000000 --- a/asm/non_matchings/code_800AF9B0/func_800B6708.s +++ /dev/null @@ -1,39 +0,0 @@ -glabel func_800B6708 -/* 0B7308 800B6708 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0B730C 800B670C 3C0F8019 */ lui $t7, %hi(D_8018EE10) # $t7, 0x8019 -/* 0B7310 800B6710 AFBF002C */ sw $ra, 0x2c($sp) -/* 0B7314 800B6714 25EFEE10 */ addiu $t7, %lo(D_8018EE10) # addiu $t7, $t7, -0x11f0 -/* 0B7318 800B6718 3C048019 */ lui $a0, %hi(D_8018E868) # $a0, 0x8019 -/* 0B731C 800B671C 3C058019 */ lui $a1, %hi(D_8018EB84) # $a1, 0x8019 -/* 0B7320 800B6720 240E0100 */ li $t6, 256 -/* 0B7324 800B6724 AFB20028 */ sw $s2, 0x28($sp) -/* 0B7328 800B6728 AFB10024 */ sw $s1, 0x24($sp) -/* 0B732C 800B672C AFB00020 */ sw $s0, 0x20($sp) -/* 0B7330 800B6730 AFAE0010 */ sw $t6, 0x10($sp) -/* 0B7334 800B6734 8CA5EB84 */ lw $a1, %lo(D_8018EB84)($a1) -/* 0B7338 800B6738 2484E868 */ addiu $a0, %lo(D_8018E868) # addiu $a0, $a0, -0x1798 -/* 0B733C 800B673C AFAF0014 */ sw $t7, 0x14($sp) -/* 0B7340 800B6740 00003025 */ move $a2, $zero -/* 0B7344 800B6744 0C0340F3 */ jal osPfsReadWriteFile -/* 0B7348 800B6748 00003825 */ move $a3, $zero -/* 0B734C 800B674C 3C118019 */ lui $s1, %hi(D_8018EE10) # $s1, 0x8019 -/* 0B7350 800B6750 2631EE10 */ addiu $s1, %lo(D_8018EE10) # addiu $s1, $s1, -0x11f0 -/* 0B7354 800B6754 00008025 */ move $s0, $zero -/* 0B7358 800B6758 24120002 */ li $s2, 2 -.L800B675C: -/* 0B735C 800B675C 0C02DA0A */ jal func_800B6828 -/* 0B7360 800B6760 02002025 */ move $a0, $s0 -/* 0B7364 800B6764 9238007F */ lbu $t8, 0x7f($s1) -/* 0B7368 800B6768 26100001 */ addiu $s0, $s0, 1 -/* 0B736C 800B676C 13020002 */ beq $t8, $v0, .L800B6778 -/* 0B7370 800B6770 00000000 */ nop -/* 0B7374 800B6774 A2200004 */ sb $zero, 4($s1) -.L800B6778: -/* 0B7378 800B6778 1612FFF8 */ bne $s0, $s2, .L800B675C -/* 0B737C 800B677C 26310080 */ addiu $s1, $s1, 0x80 -/* 0B7380 800B6780 8FBF002C */ lw $ra, 0x2c($sp) -/* 0B7384 800B6784 8FB00020 */ lw $s0, 0x20($sp) -/* 0B7388 800B6788 8FB10024 */ lw $s1, 0x24($sp) -/* 0B738C 800B678C 8FB20028 */ lw $s2, 0x28($sp) -/* 0B7390 800B6790 03E00008 */ jr $ra -/* 0B7394 800B6794 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/asm/non_matchings/code_800AF9B0/func_800B6798.s b/asm/non_matchings/code_800AF9B0/func_800B6798.s deleted file mode 100644 index e77770436..000000000 --- a/asm/non_matchings/code_800AF9B0/func_800B6798.s +++ /dev/null @@ -1,39 +0,0 @@ -glabel func_800B6798 -/* 0B7398 800B6798 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0B739C 800B679C AFB20028 */ sw $s2, 0x28($sp) -/* 0B73A0 800B67A0 3C128019 */ lui $s2, %hi(D_8018D9C0) # $s2, 0x8019 -/* 0B73A4 800B67A4 8E52D9C0 */ lw $s2, %lo(D_8018D9C0)($s2) -/* 0B73A8 800B67A8 AFBF002C */ sw $ra, 0x2c($sp) -/* 0B73AC 800B67AC 3C048019 */ lui $a0, %hi(D_8018E8D0) # $a0, 0x8019 -/* 0B73B0 800B67B0 3C058019 */ lui $a1, %hi(D_8018EB88) # $a1, 0x8019 -/* 0B73B4 800B67B4 240E0100 */ li $t6, 256 -/* 0B73B8 800B67B8 AFB10024 */ sw $s1, 0x24($sp) -/* 0B73BC 800B67BC AFB00020 */ sw $s0, 0x20($sp) -/* 0B73C0 800B67C0 AFAE0010 */ sw $t6, 0x10($sp) -/* 0B73C4 800B67C4 8CA5EB88 */ lw $a1, %lo(D_8018EB88)($a1) -/* 0B73C8 800B67C8 2484E8D0 */ addiu $a0, %lo(D_8018E8D0) # addiu $a0, $a0, -0x1730 -/* 0B73CC 800B67CC 00003025 */ move $a2, $zero -/* 0B73D0 800B67D0 00003825 */ move $a3, $zero -/* 0B73D4 800B67D4 0C0340F3 */ jal osPfsReadWriteFile -/* 0B73D8 800B67D8 AFB20014 */ sw $s2, 0x14($sp) -/* 0B73DC 800B67DC 00008025 */ move $s0, $zero -/* 0B73E0 800B67E0 24110002 */ li $s1, 2 -.L800B67E4: -/* 0B73E4 800B67E4 0C02DA3D */ jal func_800B68F4 -/* 0B73E8 800B67E8 02002025 */ move $a0, $s0 -/* 0B73EC 800B67EC 001079C0 */ sll $t7, $s0, 7 -/* 0B73F0 800B67F0 024F1821 */ addu $v1, $s2, $t7 -/* 0B73F4 800B67F4 9078007F */ lbu $t8, 0x7f($v1) -/* 0B73F8 800B67F8 26100001 */ addiu $s0, $s0, 1 -/* 0B73FC 800B67FC 13020002 */ beq $t8, $v0, .L800B6808 -/* 0B7400 800B6800 00000000 */ nop -/* 0B7404 800B6804 A0600004 */ sb $zero, 4($v1) -.L800B6808: -/* 0B7408 800B6808 1611FFF6 */ bne $s0, $s1, .L800B67E4 -/* 0B740C 800B680C 00000000 */ nop -/* 0B7410 800B6810 8FBF002C */ lw $ra, 0x2c($sp) -/* 0B7414 800B6814 8FB00020 */ lw $s0, 0x20($sp) -/* 0B7418 800B6818 8FB10024 */ lw $s1, 0x24($sp) -/* 0B741C 800B681C 8FB20028 */ lw $s2, 0x28($sp) -/* 0B7420 800B6820 03E00008 */ jr $ra -/* 0B7424 800B6824 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/include/common_structs.h b/include/common_structs.h index f836778cc..e7a252d6f 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -401,8 +401,14 @@ typedef struct { typedef struct { // Something related to time trial ghost data? - char unk_00[0x80]; -} struct_8018EE10_entry; + /* 0x00 */ s32 unk_00; + /* 0x04 */ u8 ghostDataSaved; + /* 0x05 */ s8 courseIndex; + /* 0x06 */ u8 characterId; + /* 0x07 */ u8 unk_07; + /* 0x08 */ s8 unk_08[0x77]; + /* 0x7F */ u8 checksum; +} struct_8018EE10_entry; // size = 0x80 typedef struct { char unk_00[0x920]; diff --git a/src/code_80091750.c b/src/code_80091750.c index 7a5960a17..f49aefb3a 100644 --- a/src/code_80091750.c +++ b/src/code_80091750.c @@ -371,44 +371,27 @@ extern OSMesgQueue gSIEventMesgQueue; GLOBAL_ASM("asm/non_matchings/code_80091750/func_80091D74.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 func_800B5F30(); // extern -? func_800B64EC(s32); // extern -? func_800B6708(); // extern -extern s8 D_800E86F8; -extern s8 D_8018EDFB; -extern ? D_8018EE10; -extern s8 gCupSelection; - void func_80091EE4(void) { s32 temp_s0; s32 temp_s2; - void *temp_v0; - s32 phi_s0; - s32 phi_s0_2; + s32 tmp; D_800E86F8 = 0; - if ((D_8018EDFB != 0) && (func_800B5F30() == 0)) { + tmp = func_800B5F30(); + + if ((D_8018EDFB != 0) && (tmp == 0)) { temp_s2 = (gCupSelection * 4) + gCupCourseSelection; func_800B6708(); - phi_s0 = 0; - do { - temp_v0 = &D_8018EE10 + (phi_s0 << 7); - phi_s0_2 = phi_s0; - if ((temp_v0->unk4 != 0) && (temp_s2 == temp_v0->unk5)) { - func_800B64EC(phi_s0); + + for (temp_s0 = 0; temp_s0 < 2; ++temp_s0) { + if ((D_8018EE10[temp_s0].ghostDataSaved != 0) && (temp_s2 == D_8018EE10[temp_s0].courseIndex)) { + func_800B64EC(temp_s0); + temp_s0 = 2; D_8018EDFB = 0; - phi_s0_2 = 2; } - temp_s0 = phi_s0_2 + 1; - phi_s0 = temp_s0; - } while (temp_s0 < 2); + } } } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_80091EE4.s") -#endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 @@ -9232,7 +9215,7 @@ void func_800A09E0(struct_8018D9E0_entry *arg0) { GLOBAL_ASM("asm/non_matchings/code_80091750/func_800A09E0.s") #endif -void func_800A0AD0(struct_8018D9E0_entry *unused) { +void func_800A0AD0(UNUSED struct_8018D9E0_entry *unused) { struct_8018D9E0_entry *temp_t1; // Find struct_8018D9E0_entry with a type/id of 0xDA temp_t1 = func_800AAEF4(0xDA); @@ -12619,7 +12602,7 @@ void func_800A7258(struct_8018D9E0_entry *arg0) { // Podium scene, top line void func_800A72FC(struct_8018D9E0_entry *arg0) { - s32 pad; + UNUSED s32 pad; s32 cupNameLength = (((f32) get_string_width(D_800E7500[gCupSelection]) * 1) + 10) / 2; s32 ccNameLength = (((f32) get_string_width(D_800E76CC[gCCSelection]) * 1) + 10) / 2; @@ -12630,7 +12613,7 @@ void func_800A72FC(struct_8018D9E0_entry *arg0) { } void func_800A7448(struct_8018D9E0_entry *arg0) { - s32 pad; + UNUSED s32 pad; s32 sp40; s32 sp3C; s32 thing = D_802874F5; @@ -12648,7 +12631,7 @@ void func_800A7448(struct_8018D9E0_entry *arg0) { } void func_800A75A0(struct_8018D9E0_entry *arg0) { - s32 pad; + UNUSED s32 pad; s32 topThree; if (D_802874F5 < 3) { @@ -13676,7 +13659,7 @@ void func_800A8CA4(void *arg0) { GLOBAL_ASM("asm/non_matchings/code_80091750/func_800A8CA4.s") #endif -void func_800A8E14(struct_8018D9E0_entry *unused) { +void func_800A8E14(UNUSED struct_8018D9E0_entry *unused) { set_text_color(TEXT_YELLOW); draw_text(0x98, 0x44, D_800E77A8, 0, 1.0f, 1.0f); func_80093324(0x17, 0x58, D_800E77AC, 0, D_800F24A8, D_800F24AC); diff --git a/src/code_800AF9B0.c b/src/code_800AF9B0.c index b44da0f29..c915f263e 100644 --- a/src/code_800AF9B0.c +++ b/src/code_800AF9B0.c @@ -3687,14 +3687,12 @@ s32 func_800B6014(void) { return -1; } -void func_800B6088(s32 arg0) { - s32 temp_t6; - u8* temp_v1; +s32 func_800B6088(s32 arg0) { + struct_8018EE10_entry* temp_v1; - temp_t6 = arg0 << 7; - temp_v1 = (u8*) &D_8018EE10 + temp_t6; - temp_v1[0x7F] = func_800B6828(); // compute checksum? - osPfsReadWriteFile(&D_8018E868, D_8018EB84, PFS_WRITE, temp_t6, sizeof(struct_8018EE10_entry), temp_v1); + temp_v1 = &D_8018EE10[arg0]; + temp_v1->checksum = func_800B6828(arg0); + return osPfsReadWriteFile(&D_8018E868, D_8018EB84, PFS_WRITE, arg0 * 0x80 /* 0x80 == sizeof(struct_8018EE10_entry) */, sizeof(struct_8018EE10_entry), (u8*) temp_v1); } #ifdef MIPS_TO_C @@ -3826,141 +3824,97 @@ s32 func_800B6178(s32 arg0) { GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B6178.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern ? D_8018EE10; - -? func_800B6348(s32 arg0) { - if ((D_8018EE10.unk4 != 0) && (arg0 == D_8018EE10.unk5)) { +s32 func_800B6348(s32 arg0) { + if ((D_8018EE10[0].ghostDataSaved != 0) && (arg0 == D_8018EE10[0].courseIndex)) { return 0; } - if ((D_8018EE10.unk84 != 0) && (arg0 == D_8018EE10.unk85)) { + if ((D_8018EE10[1].ghostDataSaved != 0) && (arg0 == D_8018EE10[1].courseIndex)) { return 1; } return 0; } -#else -GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B6348.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern ? D_8018EE10; - -? func_800B639C(s32 arg0) { - if ((D_8018EE10.unk4 != 0) && (arg0 == D_8018EE10.unk5)) { +s32 func_800B639C(s32 arg0) { + if ((D_8018EE10[0].ghostDataSaved != 0) && (arg0 == D_8018EE10[0].courseIndex)) { return 0; } - if ((D_8018EE10.unk84 != 0) && (arg0 == D_8018EE10.unk85)) { + if ((D_8018EE10[1].ghostDataSaved != 0) && (arg0 == D_8018EE10[1].courseIndex)) { return 1; } return -1; } -#else -GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B639C.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_800051C4(); // extern -? func_80005AE8(Player *); // extern -s32 func_800B60E8(s32); // extern -extern s16 D_80162DD6; -extern s32 D_80162DFC; -extern ? D_8018EE10; -extern s8 gCupSelection; - -? func_800B63F0(s32 arg0) { +s32 func_800B63F0(s32 arg0) { s32 temp_s0; - void *temp_v0; - s32 phi_s0; - void *phi_s1; - ? phi_s3; + u8* phi_s1; + s32 phi_s3; func_800051C4(); D_80162DD6 = 1; func_80005AE8(gPlayerThree); - temp_v0 = (arg0 << 7) + &D_8018EE10; + phi_s3 = 0; - if (((gCupSelection * 4) + gCupCourseSelection) != temp_v0->unk5) { + if (((gCupSelection * 4) + gCupCourseSelection) != D_8018EE10[arg0].courseIndex) { phi_s3 = 2; - } else if (D_80162DFC != temp_v0->unk0) { + } else if (D_80162DFC != D_8018EE10[arg0].unk_00) { phi_s3 = 3; } else { - phi_s0 = 0; - phi_s1 = temp_v0; - if (D_80162DE0 != temp_v0->unk6) { + if (D_80162DE0 != (u8) D_8018EE10[arg0].characterId) { phi_s3 = 4; } else { -loop_6: - temp_s0 = phi_s0 + 1; - phi_s0 = temp_s0; - if (phi_s1->unk7 != func_800B60E8(phi_s0)) { - phi_s3 = 1; - } else { - phi_s1 += 1; - if (temp_s0 != 0x3C) { - goto loop_6; + temp_s0 = 0; + phi_s1 = (u8*) &D_8018EE10[arg0]; + + while (temp_s0 < 0x3C) + { + if (phi_s1[7] != func_800B60E8(temp_s0)) { + phi_s3 = 1; + break; } + + ++phi_s1; + ++temp_s0; } } } + return phi_s3; } -#else -GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B63F0.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_8000522C(); // extern -s32 func_800B60E8(s32); // extern -extern u8 *D_800DC714; -extern s32 D_80162DFC; -extern OSPfs D_8018E868; -extern s32 D_8018EB84; -extern ? D_8018EE10; s32 func_800B64EC(s32 arg0) { - s32 sp30; s32 temp_s0; s32 temp_v0; - void *temp_s3; - s32 phi_s0; - void *phi_s1; + u8 *phi_s1; - if ((arg0 != 0) && (arg0 != 1)) { + if ((arg0 != 0) && (arg0 != 1)) + { return -1; } - temp_v0 = osPfsReadWriteFile(&D_8018E868, D_8018EB84, 0, (arg0 * 0x3C00) + 0x100, 0x3C00, D_800DC714); - sp30 = temp_v0; - if (temp_v0 == 0) { - temp_s3 = (arg0 << 7) + &D_8018EE10; - phi_s0 = 0; - phi_s1 = temp_s3; -loop_5: - temp_s0 = phi_s0 + 1; - phi_s0 = temp_s0; - if (phi_s1->unk7 != func_800B60E8(phi_s0)) { - temp_s3->unk4 = 0; - return -2; + + temp_v0 = osPfsReadWriteFile(&D_8018E868, D_8018EB84, PFS_READ, (arg0 * 0x3C00) + 0x100, 0x3C00, (u8 *) D_800DC714); + if (temp_v0 == 0) + { + phi_s1 = (u8 *) &D_8018EE10[arg0]; temp_s0 = 0; while (1) { + + if (phi_s1[7] != func_800B60E8(temp_s0)) { + D_8018EE10[arg0].ghostDataSaved = 0; + return -2; + } + + ++phi_s1; + if ((++temp_s0) == 0x3C) { + func_8000522C(); + D_80162DD4[0] = 0; + D_80162DE0 = (s32) D_8018EE10[arg0].characterId; + D_80162DFC = D_8018EE10[arg0].unk_00; + break; + } } - phi_s1 += 1; - if (temp_s0 == 0x3C) { - func_8000522C(); - *D_80162DD4 = 0; - D_80162DE0 = temp_s3->unk6; - D_80162DFC = temp_s3->unk0; - goto block_9; - } - goto loop_5; + } -block_9: - return sp30; + + return temp_v0; } -#else -GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B64EC.s") -#endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 @@ -4012,62 +3966,35 @@ block_9: GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B65F4.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 func_800B6828(s32); // extern -extern OSPfs D_8018E868; -extern s32 D_8018EB84; -extern u8 D_8018EE10; - void func_800B6708(void) { s32 temp_s0; - s32 phi_s0; - u8 *phi_s1; - osPfsReadWriteFile(&D_8018E868, D_8018EB84, 0, 0, 0x100, &D_8018EE10); - phi_s0 = 0; - phi_s1 = &D_8018EE10; - do { - temp_s0 = phi_s0 + 1; - phi_s0 = temp_s0; - if (phi_s1->unk7F != func_800B6828(phi_s0)) { - phi_s1->unk4 = 0; + osPfsReadWriteFile(&D_8018E868, D_8018EB84, PFS_READ, 0, 0x100 /* 2*sizeof(struct_8018EE10_entry) ? */, (u8*) &D_8018EE10); + + for (temp_s0 = 0; temp_s0 < 2; ++temp_s0) { + if (D_8018EE10[temp_s0].checksum != func_800B6828(temp_s0)) { + D_8018EE10[temp_s0].ghostDataSaved = 0; } - phi_s1 += 0x80; - } while (temp_s0 != 2); + } } -#else -GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B6708.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 func_800B68F4(s32); // extern -extern u8 *D_8018D9C0; -extern OSPfs D_8018E8D0; -extern s32 D_8018EB88; void func_800B6798(void) { s32 temp_s0; - u8 *temp_s2; - void *temp_v1; - s32 phi_s0; + u8* tmp; + + tmp = (u8*) D_8018D9C0; - temp_s2 = D_8018D9C0; - osPfsReadWriteFile(&D_8018E8D0, D_8018EB88, 0, 0, 0x100, temp_s2); - phi_s0 = 0; - do { - temp_v1 = temp_s2 + (phi_s0 << 7); - temp_s0 = phi_s0 + 1; - phi_s0 = temp_s0; - if (temp_v1->unk7F != func_800B68F4(phi_s0)) { - temp_v1->unk4 = 0; + osPfsReadWriteFile(&D_8018E8D0, D_8018EB88, PFS_READ, 0, 0x100 /* 2*sizeof(struct_8018EE10_entry) ? */, tmp); + + for (temp_s0 = 0; temp_s0 < 2; ++temp_s0) { + // if (D_8018D9C0[temp_s0]->checksum != func_800B68F4(temp_s0)) { + // D_8018D9C0[temp_s0]->ghostDataSaved = 0; + // } + if ( ((struct_8018EE10_entry*) (tmp + (temp_s0 << 7)))->checksum != func_800B68F4(temp_s0)) { + ((struct_8018EE10_entry*) (tmp + (temp_s0 << 7)))->ghostDataSaved = 0; } - } while (temp_s0 != 2); + } } -#else -GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B6798.s") -#endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 diff --git a/src/code_800AF9B0.h b/src/code_800AF9B0.h index a42e622db..535298cb6 100644 --- a/src/code_800AF9B0.h +++ b/src/code_800AF9B0.h @@ -58,9 +58,17 @@ s32 validate_save_data_checksum_backup(); s32 func_800B5B2C(s32); s32 func_800B5F30(); s32 func_800B6014(); +u8 func_800B60E8(s32); +u8 func_800B6828(s32); +u8 func_800B68F4(s32); void func_800B69BC(s32); s32 func_800B6A68(); +// staff_ghosts.c +s32 func_800051C4(); +void func_8000522C(); +void func_80005AE8(Player*); + // audio/external.c void play_sound2(s32); void func_800CA330(s32); @@ -82,6 +90,7 @@ extern s32 D_800DC540; extern s16 gCurrentCourseId; // D_800DC5A0 extern s32 gIsMirrorMode; // D_800DC5F4 extern s16 gPlaceItemBoxes; // D_800DC638 +extern u32* D_800DC714; extern s8 gGameModeRowSelectionForNumPlayers[SELECTED_PLAYER_DEFINES_TOTAL]; // D_800E869B. 0-4 players, game type row selected for each player amoun extern s8 gGameModeSubMenuRowSelectionForNumPlayers[SELECTED_PLAYER_DEFINES_TOTAL][MAX_NUM_MAIN_MENU_GAME_TYPES]; // D_800E869D. 0-4 players, 3 possible game types per player amouunt extern s32 D_800E86A4; @@ -97,6 +106,10 @@ extern u8 D_800F2E60[]; extern u8 D_800F2E64; extern u8 D_800F2E74; extern OSMesgQueue gSIEventMesgQueue; // D_8014F0B8 +extern u16 D_80162DD6; +extern s32 D_80162DE0; +extern s32 D_80162DFC; +extern struct_8018EE10_entry* D_8018D9C0; extern s32 D_8018E7A8; extern s8 D_8018E7B0; extern OSPfs D_8018E868; @@ -106,6 +119,7 @@ extern s32 D_8018EB38[16]; extern s32 D_8018EB78; extern s32 D_8018EB7C; extern s32 D_8018EB84; +extern s32 D_8018EB88; extern SaveData D_8018EB90; extern union GrandPrixPointsUnion D_8018ED10; // Direct reference to the grandPrixPoints section of save data extern u8 D_8018ED11; @@ -131,6 +145,7 @@ extern u8 gSoundMode; // D_8018EDF2 extern s8 D_8018EDF3; extern s8 gTimeTrialDataCourseIndex; // D_8018EDF7 extern s8 gCourseRecordsMenuSelection; // D_8018EDF8 +extern s8 D_8018EDFB; extern s32 gMenuTimingCounter; // D_8018EE00 extern s8 gCupSelection; // D_8018EE09 extern s8 D_8018EE0A;