From 7acd1cbc20ad7d5632d006de6c2fae322ca5c8c0 Mon Sep 17 00:00:00 2001 From: ChiefFruitcake <96551211+ChiefFruitcake@users.noreply.github.com> Date: Thu, 6 Jan 2022 22:32:57 -0500 Subject: [PATCH] More matching in code_800AF9B0 (#131) * Name variables related to selecting a game from the main menu * Match a couple functions requiring jumptable * Match func_800B4728 * Match func_800B536C, func_800B5888, func_800B5AAC, and func_800B5AD8 * Name functions related to loading and validating SaveData * Match func_800B4CB4 * Update selected player defines * Match func_800B5404 * Match func_800B6088 --- .../code_80091750/func_80091B78.s | 2 +- .../code_80091750/func_8009F5E0.s | 12 +- .../code_80091750/func_800A2EB8.s | 8 +- .../code_80091750/func_800A34A8.s | 8 +- .../code_80091750/func_800A9E58.s | 20 +- .../code_80091750/func_800AA2EC.s | 6 +- .../code_800AF9B0/func_800B053C.s | 8 +- .../code_800AF9B0/func_800B1C40.s | 23 - .../code_800AF9B0/func_800B20F4.s | 10 +- .../code_800AF9B0/func_800B28C8.s | 82 -- .../code_800AF9B0/func_800B29D8.s | 176 ++-- .../code_800AF9B0/func_800B4728.s | 68 -- .../code_800AF9B0/func_800B492C.s | 2 +- .../code_800AF9B0/func_800B49E4.s | 13 - .../code_800AF9B0/func_800B4CB4.s | 75 -- .../code_800AF9B0/func_800B4DCC.s | 11 - .../code_800AF9B0/func_800B5020.s | 2 +- .../code_800AF9B0/func_800B5218.s | 2 +- .../code_800AF9B0/func_800B536C.s | 40 - .../code_800AF9B0/func_800B5404.s | 51 -- .../code_800AF9B0/func_800B5888.s | 17 - .../code_800AF9B0/func_800B58C4.s | 37 - .../code_800AF9B0/func_800B5948.s | 6 +- .../code_800AF9B0/func_800B59F4.s | 2 +- .../code_800AF9B0/func_800B5AAC.s | 13 - .../code_800AF9B0/func_800B5AD8.s | 24 - .../code_800AF9B0/func_800B5B94.s | 2 +- .../code_800AF9B0/func_800B5DA4.s | 2 +- .../code_800AF9B0/func_800B6014.s | 2 +- .../code_800AF9B0/func_800B6088.s | 25 - .../code_800AF9B0/func_800B6AF8.s | 2 +- .../code_actors/place_all_item_boxes.s | 4 +- data/data_0DD0A0_0.s | 2 +- data/data_0DD0A0_2.s | 4 +- data/data_0DD0A0_3_0.s | 2 +- include/common_structs.h | 19 +- include/defines.h | 10 + src/code_800029B0.c | 2 +- src/code_80005FD0.c | 22 +- src/code_800431B0.c | 2 +- src/code_8006E9C0.c | 26 +- src/code_80091750.c | 78 +- src/code_80091750.h | 251 +++--- src/code_800AF9B0.c | 841 +++++++----------- src/code_800AF9B0.h | 219 +++-- src/code_80281780.c | 2 +- src/code_80296A50.c | 4 +- 47 files changed, 819 insertions(+), 1420 deletions(-) delete mode 100644 asm/non_matchings/code_800AF9B0/func_800B1C40.s delete mode 100644 asm/non_matchings/code_800AF9B0/func_800B28C8.s delete mode 100644 asm/non_matchings/code_800AF9B0/func_800B4728.s delete mode 100644 asm/non_matchings/code_800AF9B0/func_800B49E4.s delete mode 100644 asm/non_matchings/code_800AF9B0/func_800B4CB4.s delete mode 100644 asm/non_matchings/code_800AF9B0/func_800B4DCC.s delete mode 100644 asm/non_matchings/code_800AF9B0/func_800B536C.s delete mode 100644 asm/non_matchings/code_800AF9B0/func_800B5404.s delete mode 100644 asm/non_matchings/code_800AF9B0/func_800B5888.s delete mode 100644 asm/non_matchings/code_800AF9B0/func_800B58C4.s delete mode 100644 asm/non_matchings/code_800AF9B0/func_800B5AAC.s delete mode 100644 asm/non_matchings/code_800AF9B0/func_800B5AD8.s delete mode 100644 asm/non_matchings/code_800AF9B0/func_800B6088.s diff --git a/asm/non_matchings/code_80091750/func_80091B78.s b/asm/non_matchings/code_80091750/func_80091B78.s index 755bb4b81..dcafad343 100644 --- a/asm/non_matchings/code_80091750/func_80091B78.s +++ b/asm/non_matchings/code_80091750/func_80091B78.s @@ -21,7 +21,7 @@ glabel func_80091B78 /* 0927C4 80091BC4 2484F0B8 */ addiu $a0, %lo(gSIEventMesgQueue) # addiu $a0, $a0, -0xf48 /* 0927C8 80091BC8 10400003 */ beqz $v0, .L80091BD8 /* 0927CC 80091BCC 00000000 */ nop -/* 0927D0 80091BD0 0C02D284 */ jal func_800B4A10 +/* 0927D0 80091BD0 0C02D284 */ jal load_save_data /* 0927D4 80091BD4 00000000 */ nop .L80091BD8: /* 0927D8 80091BD8 0C02475D */ jal func_80091D74 diff --git a/asm/non_matchings/code_80091750/func_8009F5E0.s b/asm/non_matchings/code_80091750/func_8009F5E0.s index 9e51e92d8..fb672395a 100644 --- a/asm/non_matchings/code_80091750/func_8009F5E0.s +++ b/asm/non_matchings/code_80091750/func_8009F5E0.s @@ -597,10 +597,10 @@ glabel L8009FD90 glabel L8009FE9C /* 0A0A9C 8009FE9C 3C028019 */ lui $v0, %hi(D_8018EDF3) # $v0, 0x8019 /* 0A0AA0 8009FEA0 8042EDF3 */ lb $v0, %lo(D_8018EDF3)($v0) -/* 0A0AA4 8009FEA4 3C03800F */ lui $v1, %hi(D_800E86AB) # 0x800f -/* 0A0AA8 8009FEA8 3C06800F */ lui $a2, %hi(D_800E86AD) # 0x800f +/* 0A0AA4 8009FEA4 3C03800F */ lui $v1, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f +/* 0A0AA8 8009FEA8 3C06800F */ lui $a2, %hi(gGameModeSubMenuRowSelectionForNumPlayers) # 0x800f /* 0A0AAC 8009FEAC 00621821 */ addu $v1, $v1, $v0 -/* 0A0AB0 8009FEB0 806386AB */ lb $v1, %lo(D_800E86AB)($v1) # -0x7955($v1) +/* 0A0AB0 8009FEB0 806386AB */ lb $v1, %lo(gGameModeRowSelectionForNumPlayers)($v1) # -0x7955($v1) /* 0A0AB4 8009FEB4 00026880 */ sll $t5, $v0, 2 /* 0A0AB8 8009FEB8 00025880 */ sll $t3, $v0, 2 /* 0A0ABC 8009FEBC 01A26823 */ subu $t5, $t5, $v0 @@ -608,15 +608,15 @@ glabel L8009FE9C /* 0A0AC4 8009FEC4 01625823 */ subu $t3, $t3, $v0 /* 0A0AC8 8009FEC8 00037080 */ sll $t6, $v1, 2 /* 0A0ACC 8009FECC 01AE7821 */ addu $t7, $t5, $t6 -/* 0A0AD0 8009FED0 3C05800F */ lui $a1, %hi(D_800F2B70) # 0x800f +/* 0A0AD0 8009FED0 3C05800F */ lui $a1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0A0AD4 8009FED4 2518FFEE */ addiu $t8, $t0, -0x12 /* 0A0AD8 8009FED8 01636021 */ addu $t4, $t3, $v1 /* 0A0ADC 8009FEDC 00CC3021 */ addu $a2, $a2, $t4 /* 0A0AE0 8009FEE0 00AF2821 */ addu $a1, $a1, $t7 /* 0A0AE4 8009FEE4 2F010008 */ sltiu $at, $t8, 8 -/* 0A0AE8 8009FEE8 80C686AD */ lb $a2, %lo(D_800E86AD)($a2) # -0x7953($a2) +/* 0A0AE8 8009FEE8 80C686AD */ lb $a2, %lo(gGameModeSubMenuRowSelectionForNumPlayers)($a2) # -0x7953($a2) /* 0A0AEC 8009FEEC 10200037 */ beqz $at, .L8009FFCC -/* 0A0AF0 8009FEF0 8CA52B70 */ lw $a1, %lo(D_800F2B70)($a1) # 0x2b70($a1) +/* 0A0AF0 8009FEF0 8CA52B70 */ lw $a1, %lo(gGameModeFromNumPlayersAndRowSelection)($a1) # 0x2b70($a1) /* 0A0AF4 8009FEF4 0018C080 */ sll $t8, $t8, 2 /* 0A0AF8 8009FEF8 3C01800F */ lui $at, %hi(jpt_800F1AD0) /* 0A0AFC 8009FEFC 00380821 */ addu $at, $at, $t8 diff --git a/asm/non_matchings/code_80091750/func_800A2EB8.s b/asm/non_matchings/code_80091750/func_800A2EB8.s index c27678971..20d249a5b 100644 --- a/asm/non_matchings/code_80091750/func_800A2EB8.s +++ b/asm/non_matchings/code_80091750/func_800A2EB8.s @@ -228,15 +228,15 @@ glabel func_800A2EB8 /* 0A3E1C 800A321C 0C024DBB */ jal draw_text /* 0A3E20 800A3220 248400F5 */ addiu $a0, $a0, 0xf5 /* 0A3E24 800A3224 82E20000 */ lb $v0, ($s7) -/* 0A3E28 800A3228 3C0F800F */ lui $t7, %hi(D_800E86AB) # 0x800f -/* 0A3E2C 800A322C 3C19800F */ lui $t9, %hi(D_800E86AD) # 0x800f +/* 0A3E28 800A3228 3C0F800F */ lui $t7, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f +/* 0A3E2C 800A322C 3C19800F */ lui $t9, %hi(gGameModeSubMenuRowSelectionForNumPlayers) # 0x800f /* 0A3E30 800A3230 01E27821 */ addu $t7, $t7, $v0 -/* 0A3E34 800A3234 81EF86AB */ lb $t7, %lo(D_800E86AB)($t7) # -0x7955($t7) +/* 0A3E34 800A3234 81EF86AB */ lb $t7, %lo(gGameModeRowSelectionForNumPlayers)($t7) # -0x7955($t7) /* 0A3E38 800A3238 00027080 */ sll $t6, $v0, 2 /* 0A3E3C 800A323C 01C27023 */ subu $t6, $t6, $v0 /* 0A3E40 800A3240 01CFC021 */ addu $t8, $t6, $t7 /* 0A3E44 800A3244 0338C821 */ addu $t9, $t9, $t8 -/* 0A3E48 800A3248 833986AD */ lb $t9, %lo(D_800E86AD)($t9) # -0x7953($t9) +/* 0A3E48 800A3248 833986AD */ lb $t9, %lo(gGameModeSubMenuRowSelectionForNumPlayers)($t9) # -0x7953($t9) /* 0A3E4C 800A324C 8E8D000C */ lw $t5, 0xc($s4) /* 0A3E50 800A3250 3C01800F */ lui $at, %hi(D_800F1CA0) # $at, 0x800f /* 0A3E54 800A3254 C4201CA0 */ lwc1 $f0, %lo(D_800F1CA0)($at) diff --git a/asm/non_matchings/code_80091750/func_800A34A8.s b/asm/non_matchings/code_80091750/func_800A34A8.s index 935e767e5..242ca1ffb 100644 --- a/asm/non_matchings/code_80091750/func_800A34A8.s +++ b/asm/non_matchings/code_80091750/func_800A34A8.s @@ -333,15 +333,15 @@ glabel func_800A34A8 /* 0A4578 800A3978 248400E6 */ addiu $a0, $a0, 0xe6 /* 0A457C 800A397C 3C028019 */ lui $v0, %hi(D_8018EDF3) # $v0, 0x8019 /* 0A4580 800A3980 8042EDF3 */ lb $v0, %lo(D_8018EDF3)($v0) -/* 0A4584 800A3984 3C09800F */ lui $t1, %hi(D_800E86AB) # 0x800f -/* 0A4588 800A3988 3C0A800F */ lui $t2, %hi(D_800E86AD) # 0x800f +/* 0A4584 800A3984 3C09800F */ lui $t1, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f +/* 0A4588 800A3988 3C0A800F */ lui $t2, %hi(gGameModeSubMenuRowSelectionForNumPlayers) # 0x800f /* 0A458C 800A398C 01224821 */ addu $t1, $t1, $v0 -/* 0A4590 800A3990 812986AB */ lb $t1, %lo(D_800E86AB)($t1) # -0x7955($t1) +/* 0A4590 800A3990 812986AB */ lb $t1, %lo(gGameModeRowSelectionForNumPlayers)($t1) # -0x7955($t1) /* 0A4594 800A3994 0002C880 */ sll $t9, $v0, 2 /* 0A4598 800A3998 0322C823 */ subu $t9, $t9, $v0 /* 0A459C 800A399C 03295821 */ addu $t3, $t9, $t1 /* 0A45A0 800A39A0 014B5021 */ addu $t2, $t2, $t3 -/* 0A45A4 800A39A4 814A86AD */ lb $t2, %lo(D_800E86AD)($t2) # -0x7953($t2) +/* 0A45A4 800A39A4 814A86AD */ lb $t2, %lo(gGameModeSubMenuRowSelectionForNumPlayers)($t2) # -0x7953($t2) /* 0A45A8 800A39A8 8E68000C */ lw $t0, 0xc($s3) /* 0A45AC 800A39AC 3C01800F */ lui $at, %hi(D_800F1CC0) # $at, 0x800f /* 0A45B0 800A39B0 C4201CC0 */ lwc1 $f0, %lo(D_800F1CC0)($at) diff --git a/asm/non_matchings/code_80091750/func_800A9E58.s b/asm/non_matchings/code_80091750/func_800A9E58.s index 1b03095b4..bab58d7d5 100644 --- a/asm/non_matchings/code_80091750/func_800A9E58.s +++ b/asm/non_matchings/code_80091750/func_800A9E58.s @@ -36,21 +36,21 @@ glabel L800A9EBC .L800A9ED4: /* 0AAAD4 800A9ED4 3C028019 */ lui $v0, %hi(D_8018EDF3) # $v0, 0x8019 /* 0AAAD8 800A9ED8 8042EDF3 */ lb $v0, %lo(D_8018EDF3)($v0) -/* 0AAADC 800A9EDC 3C06800F */ lui $a2, %hi(D_800E86AB) # 0x800f +/* 0AAADC 800A9EDC 3C06800F */ lui $a2, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f /* 0AAAE0 800A9EE0 8C830004 */ lw $v1, 4($a0) /* 0AAAE4 800A9EE4 00C23021 */ addu $a2, $a2, $v0 -/* 0AAAE8 800A9EE8 80C686AB */ lb $a2, %lo(D_800E86AB)($a2) # -0x7955($a2) +/* 0AAAE8 800A9EE8 80C686AB */ lb $a2, %lo(gGameModeRowSelectionForNumPlayers)($a2) # -0x7955($a2) /* 0AAAEC 800A9EEC 00025080 */ sll $t2, $v0, 2 /* 0AAAF0 800A9EF0 01425023 */ subu $t2, $t2, $v0 /* 0AAAF4 800A9EF4 000A5080 */ sll $t2, $t2, 2 /* 0AAAF8 800A9EF8 00065880 */ sll $t3, $a2, 2 /* 0AAAFC 800A9EFC 014B6021 */ addu $t4, $t2, $t3 -/* 0AAB00 800A9F00 3C05800F */ lui $a1, %hi(D_800F2B70) # 0x800f +/* 0AAB00 800A9F00 3C05800F */ lui $a1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0AAB04 800A9F04 00AC2821 */ addu $a1, $a1, $t4 /* 0AAB08 800A9F08 8FA70020 */ lw $a3, 0x20($sp) /* 0AAB0C 800A9F0C 8FA8001C */ lw $t0, 0x1c($sp) /* 0AAB10 800A9F10 10600009 */ beqz $v1, .L800A9F38 -/* 0AAB14 800A9F14 8CA52B70 */ lw $a1, %lo(D_800F2B70)($a1) # 0x2b70($a1) +/* 0AAB14 800A9F14 8CA52B70 */ lw $a1, %lo(gGameModeFromNumPlayersAndRowSelection)($a1) # 0x2b70($a1) /* 0AAB18 800A9F18 24010001 */ li $at, 1 /* 0AAB1C 800A9F1C 10610055 */ beq $v1, $at, .L800AA074 /* 0AAB20 800A9F20 3C0A8019 */ lui $t2, %hi(gMainMenuSelectionDepth) # 0x8019 @@ -87,13 +87,13 @@ glabel L800A9F7C /* 0AAB8C 800A9F8C 8FA40030 */ lw $a0, 0x30($sp) /* 0AAB90 800A9F90 8C58000C */ lw $t8, 0xc($v0) /* 0AAB94 800A9F94 3C198019 */ lui $t9, %hi(D_8018EDF3) # $t9, 0x8019 -/* 0AAB98 800A9F98 3C09800F */ lui $t1, %hi(D_800E86AB) # 0x800f +/* 0AAB98 800A9F98 3C09800F */ lui $t1, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f /* 0AAB9C 800A9F9C AC98000C */ sw $t8, 0xc($a0) /* 0AABA0 800A9FA0 8339EDF3 */ lb $t9, %lo(D_8018EDF3)($t9) /* 0AABA4 800A9FA4 8C4B0010 */ lw $t3, 0x10($v0) /* 0AABA8 800A9FA8 240E0001 */ li $t6, 1 /* 0AABAC 800A9FAC 01394821 */ addu $t1, $t1, $t9 -/* 0AABB0 800A9FB0 812986AB */ lb $t1, %lo(D_800E86AB)($t1) # -0x7955($t1) +/* 0AABB0 800A9FB0 812986AB */ lb $t1, %lo(gGameModeRowSelectionForNumPlayers)($t1) # -0x7955($t1) /* 0AABB4 800A9FB4 AC80001C */ sw $zero, 0x1c($a0) /* 0AABB8 800A9FB8 AC8E0004 */ sw $t6, 4($a0) /* 0AABBC 800A9FBC 000950C0 */ sll $t2, $t1, 3 @@ -119,14 +119,14 @@ glabel L800A9FD8 /* 0AAC08 800AA008 846E0000 */ lh $t6, ($v1) /* 0AAC0C 800AA00C 8C4D000C */ lw $t5, 0xc($v0) /* 0AAC10 800AA010 3C198019 */ lui $t9, %hi(D_8018EDF3) # $t9, 0x8019 -/* 0AAC14 800AA014 3C09800F */ lui $t1, %hi(D_800E86AB) # 0x800f +/* 0AAC14 800AA014 3C09800F */ lui $t1, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f /* 0AAC18 800AA018 01AE7821 */ addu $t7, $t5, $t6 /* 0AAC1C 800AA01C AC8F000C */ sw $t7, 0xc($a0) /* 0AAC20 800AA020 8339EDF3 */ lb $t9, %lo(D_8018EDF3)($t9) /* 0AAC24 800AA024 8C4A0010 */ lw $t2, 0x10($v0) /* 0AAC28 800AA028 846C0002 */ lh $t4, 2($v1) /* 0AAC2C 800AA02C 01394821 */ addu $t1, $t1, $t9 -/* 0AAC30 800AA030 812986AB */ lb $t1, %lo(D_800E86AB)($t1) # -0x7955($t1) +/* 0AAC30 800AA030 812986AB */ lb $t1, %lo(gGameModeRowSelectionForNumPlayers)($t1) # -0x7955($t1) /* 0AAC34 800AA034 0009C0C0 */ sll $t8, $t1, 3 /* 0AAC38 800AA038 0309C021 */ addu $t8, $t8, $t1 /* 0AAC3C 800AA03C 0018C040 */ sll $t8, $t8, 1 @@ -256,14 +256,14 @@ glabel L800AA198 /* 0AAE04 800AA204 030A2821 */ addu $a1, $t8, $t2 /* 0AAE08 800AA208 AC85000C */ sw $a1, 0xc($a0) /* 0AAE0C 800AA20C 8C4C0010 */ lw $t4, 0x10($v0) -/* 0AAE10 800AA210 3C0F800F */ lui $t7, %hi(D_800E86AB) # 0x800f +/* 0AAE10 800AA210 3C0F800F */ lui $t7, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f /* 0AAE14 800AA214 018D5821 */ addu $t3, $t4, $t5 /* 0AAE18 800AA218 AC8B0010 */ sw $t3, 0x10($a0) /* 0AAE1C 800AA21C 81CEEDF3 */ lb $t6, %lo(D_8018EDF3)($t6) /* 0AAE20 800AA220 8C580010 */ lw $t8, 0x10($v0) /* 0AAE24 800AA224 84690002 */ lh $t1, 2($v1) /* 0AAE28 800AA228 01EE7821 */ addu $t7, $t7, $t6 -/* 0AAE2C 800AA22C 81EF86AB */ lb $t7, %lo(D_800E86AB)($t7) # -0x7955($t7) +/* 0AAE2C 800AA22C 81EF86AB */ lb $t7, %lo(gGameModeRowSelectionForNumPlayers)($t7) # -0x7955($t7) /* 0AAE30 800AA230 AFA2002C */ sw $v0, 0x2c($sp) /* 0AAE34 800AA234 000FC8C0 */ sll $t9, $t7, 3 /* 0AAE38 800AA238 032FC821 */ addu $t9, $t9, $t7 diff --git a/asm/non_matchings/code_80091750/func_800AA2EC.s b/asm/non_matchings/code_80091750/func_800AA2EC.s index bb6c0a637..e9cd1df13 100644 --- a/asm/non_matchings/code_80091750/func_800AA2EC.s +++ b/asm/non_matchings/code_80091750/func_800AA2EC.s @@ -26,10 +26,10 @@ glabel L800AA334 /* 0AAF44 800AA344 8FBF001C */ lw $ra, 0x1c($sp) /* 0AAF48 800AA348 8042EDF3 */ lb $v0, %lo(D_8018EDF3)($v0) /* 0AAF4C 800AA34C 24010001 */ li $at, 1 -/* 0AAF50 800AA350 3C0B800F */ lui $t3, %hi(D_800E86AB) # 0x800f +/* 0AAF50 800AA350 3C0B800F */ lui $t3, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f /* 0AAF54 800AA354 14410098 */ bne $v0, $at, .L800AA5B8 /* 0AAF58 800AA358 01625821 */ addu $t3, $t3, $v0 -/* 0AAF5C 800AA35C 816B86AB */ lb $t3, %lo(D_800E86AB)($t3) # -0x7955($t3) +/* 0AAF5C 800AA35C 816B86AB */ lb $t3, %lo(gGameModeRowSelectionForNumPlayers)($t3) # -0x7955($t3) /* 0AAF60 800AA360 24010001 */ li $at, 1 /* 0AAF64 800AA364 3C03800F */ lui $v1, %hi(D_800E86F8) # $v1, 0x800f /* 0AAF68 800AA368 15610093 */ bne $t3, $at, .L800AA5B8 @@ -77,7 +77,7 @@ glabel L800AA334 /* 0AB004 800AA404 80780000 */ lb $t8, ($v1) /* 0AB008 800AA408 17000055 */ bnez $t8, .L800AA560 /* 0AB00C 800AA40C 00000000 */ nop -/* 0AB010 800AA410 0C02D6CB */ jal func_800B5B2C +/* 0AB010 800AA410 0C02D6CB */ jal check_for_controller_pak /* 0AB014 800AA414 00002025 */ move $a0, $zero /* 0AB018 800AA418 14400004 */ bnez $v0, .L800AA42C /* 0AB01C 800AA41C 8FA80028 */ lw $t0, 0x28($sp) diff --git a/asm/non_matchings/code_800AF9B0/func_800B053C.s b/asm/non_matchings/code_800AF9B0/func_800B053C.s index 1d84c976d..48b5493c0 100644 --- a/asm/non_matchings/code_800AF9B0/func_800B053C.s +++ b/asm/non_matchings/code_800AF9B0/func_800B053C.s @@ -128,9 +128,9 @@ glabel L800B05E0 /* 0B131C 800B071C 00000000 */ nop /* 0B1320 800B0720 A022ED14 */ sb $v0, %lo(gSaveDataSoundMode)($at) /* 0B1324 800B0724 AFA50020 */ sw $a1, 0x20($sp) -/* 0B1328 800B0728 0C02D19C */ jal func_800B4670 +/* 0B1328 800B0728 0C02D19C */ jal write_save_data_grand_prix_points_and_sound_mode /* 0B132C 800B072C AFA80038 */ sw $t0, 0x38($sp) -/* 0B1330 800B0730 0C02D652 */ jal func_800B5948 +/* 0B1330 800B0730 0C02D652 */ jal update_save_data_backup /* 0B1334 800B0734 00000000 */ nop /* 0B1338 800B0738 3C038019 */ lui $v1, %hi(gSoundMode) # $v1, 0x8019 /* 0B133C 800B073C 2463EDF2 */ addiu $v1, %lo(gSoundMode) # addiu $v1, $v1, -0x120e @@ -159,9 +159,9 @@ glabel L800B05E0 /* 0B1394 800B0794 51420303 */ beql $t2, $v0, .L800B13A4 /* 0B1398 800B0798 8FBF001C */ lw $ra, 0x1c($sp) /* 0B139C 800B079C A022ED14 */ sb $v0, %lo(gSaveDataSoundMode)($at) -/* 0B13A0 800B07A0 0C02D19C */ jal func_800B4670 +/* 0B13A0 800B07A0 0C02D19C */ jal write_save_data_grand_prix_points_and_sound_mode /* 0B13A4 800B07A4 AFA80038 */ sw $t0, 0x38($sp) -/* 0B13A8 800B07A8 0C02D652 */ jal func_800B5948 +/* 0B13A8 800B07A8 0C02D652 */ jal update_save_data_backup /* 0B13AC 800B07AC 00000000 */ nop /* 0B13B0 800B07B0 3C038019 */ lui $v1, %hi(gSoundMode) # $v1, 0x8019 /* 0B13B4 800B07B4 2463EDF2 */ addiu $v1, %lo(gSoundMode) # addiu $v1, $v1, -0x120e diff --git a/asm/non_matchings/code_800AF9B0/func_800B1C40.s b/asm/non_matchings/code_800AF9B0/func_800B1C40.s deleted file mode 100644 index 470c61e1f..000000000 --- a/asm/non_matchings/code_800AF9B0/func_800B1C40.s +++ /dev/null @@ -1,23 +0,0 @@ -glabel func_800B1C40 -/* 0B2840 800B1C40 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0B2844 800B1C44 AFBF0014 */ sw $ra, 0x14($sp) -/* 0B2848 800B1C48 AFA50024 */ sw $a1, 0x24($sp) -/* 0B284C 800B1C4C 948F000C */ lhu $t7, 0xc($a0) -/* 0B2850 800B1C50 948E0006 */ lhu $t6, 6($a0) -/* 0B2854 800B1C54 01CFC025 */ or $t8, $t6, $t7 -/* 0B2858 800B1C58 0C02D148 */ jal func_800B4520 -/* 0B285C 800B1C5C A7B8001E */ sh $t8, 0x1e($sp) -/* 0B2860 800B1C60 14400007 */ bnez $v0, .L800B1C80 -/* 0B2864 800B1C64 97B9001E */ lhu $t9, 0x1e($sp) -/* 0B2868 800B1C68 53200006 */ beql $t9, $zero, .L800B1C84 -/* 0B286C 800B1C6C 8FBF0014 */ lw $ra, 0x14($sp) -/* 0B2870 800B1C70 0C0328E2 */ jal func_800CA388 -/* 0B2874 800B1C74 2404003C */ li $a0, 60 -/* 0B2878 800B1C78 0C027879 */ jal func_8009E1E4 -/* 0B287C 800B1C7C 00000000 */ nop -.L800B1C80: -/* 0B2880 800B1C80 8FBF0014 */ lw $ra, 0x14($sp) -.L800B1C84: -/* 0B2884 800B1C84 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0B2888 800B1C88 03E00008 */ jr $ra -/* 0B288C 800B1C8C 00000000 */ nop diff --git a/asm/non_matchings/code_800AF9B0/func_800B20F4.s b/asm/non_matchings/code_800AF9B0/func_800B20F4.s index 5c1d24106..c0a5c938c 100644 --- a/asm/non_matchings/code_800AF9B0/func_800B20F4.s +++ b/asm/non_matchings/code_800AF9B0/func_800B20F4.s @@ -299,9 +299,9 @@ glabel L800B24DC /* 0B3130 800B2530 00000000 */ nop /* 0B3134 800B2534 920D0000 */ lbu $t5, ($s0) /* 0B3138 800B2538 3C018019 */ lui $at, %hi(gSaveDataSoundMode) # $at, 0x8019 -/* 0B313C 800B253C 0C02D19C */ jal func_800B4670 +/* 0B313C 800B253C 0C02D19C */ jal write_save_data_grand_prix_points_and_sound_mode /* 0B3140 800B2540 A02DED14 */ sb $t5, %lo(gSaveDataSoundMode)($at) -/* 0B3144 800B2544 0C02D652 */ jal func_800B5948 +/* 0B3144 800B2544 0C02D652 */ jal update_save_data_backup /* 0B3148 800B2548 00000000 */ nop /* 0B314C 800B254C 8FA30024 */ lw $v1, 0x24($sp) .L800B2550: @@ -327,7 +327,7 @@ glabel L800B24DC /* 0B3198 800B2598 00000000 */ nop /* 0B319C 800B259C 92080000 */ lbu $t0, ($s0) /* 0B31A0 800B25A0 3C018019 */ lui $at, %hi(gSaveDataSoundMode) # $at, 0x8019 -/* 0B31A4 800B25A4 0C02D19C */ jal func_800B4670 +/* 0B31A4 800B25A4 0C02D19C */ jal write_save_data_grand_prix_points_and_sound_mode /* 0B31A8 800B25A8 A028ED14 */ sb $t0, %lo(gSaveDataSoundMode)($at) /* 0B31AC 800B25AC 8FA30024 */ lw $v1, 0x24($sp) .L800B25B0: @@ -389,7 +389,7 @@ glabel L800B2604 .L800B2678: /* 0B3278 800B2678 13200016 */ beqz $t9, .L800B26D4 /* 0B327C 800B267C 30690200 */ andi $t1, $v1, 0x200 -/* 0B3280 800B2680 0C02D208 */ jal func_800B4820 +/* 0B3280 800B2680 0C02D208 */ jal reset_save_data_grand_prix_points_and_sound_mode /* 0B3284 800B2684 00000000 */ nop /* 0B3288 800B2688 00008025 */ move $s0, $zero /* 0B328C 800B268C 00002825 */ move $a1, $zero @@ -415,7 +415,7 @@ glabel L800B2604 .L800B26D4: /* 0B32D4 800B26D4 11200022 */ beqz $t1, .L800B2760 /* 0B32D8 800B26D8 3C028019 */ lui $v0, %hi(D_8018EDF1) # 0x8019 -/* 0B32DC 800B26DC 0C02D208 */ jal func_800B4820 +/* 0B32DC 800B26DC 0C02D208 */ jal reset_save_data_grand_prix_points_and_sound_mode /* 0B32E0 800B26E0 00000000 */ nop /* 0B32E4 800B26E4 00008025 */ move $s0, $zero /* 0B32E8 800B26E8 00002825 */ move $a1, $zero diff --git a/asm/non_matchings/code_800AF9B0/func_800B28C8.s b/asm/non_matchings/code_800AF9B0/func_800B28C8.s deleted file mode 100644 index e2ace0be6..000000000 --- a/asm/non_matchings/code_800AF9B0/func_800B28C8.s +++ /dev/null @@ -1,82 +0,0 @@ -glabel func_800B28C8 -/* 0B34C8 800B28C8 3C038019 */ lui $v1, %hi(D_8018EDF3) # $v1, 0x8019 -/* 0B34CC 800B28CC 8063EDF3 */ lb $v1, %lo(D_8018EDF3)($v1) -/* 0B34D0 800B28D0 3C04800F */ lui $a0, %hi(D_800E86AB) # 0x800f -/* 0B34D4 800B28D4 3C05800F */ lui $a1, %hi(D_800F2B70) # 0x800f -/* 0B34D8 800B28D8 00832021 */ addu $a0, $a0, $v1 -/* 0B34DC 800B28DC 808486AB */ lb $a0, %lo(D_800E86AB)($a0) # -0x7955($a0) -/* 0B34E0 800B28E0 0003C080 */ sll $t8, $v1, 2 -/* 0B34E4 800B28E4 0303C023 */ subu $t8, $t8, $v1 -/* 0B34E8 800B28E8 0018C080 */ sll $t8, $t8, 2 -/* 0B34EC 800B28EC 0004C880 */ sll $t9, $a0, 2 -/* 0B34F0 800B28F0 03194021 */ addu $t0, $t8, $t9 -/* 0B34F4 800B28F4 00A82821 */ addu $a1, $a1, $t0 -/* 0B34F8 800B28F8 00037080 */ sll $t6, $v1, 2 -/* 0B34FC 800B28FC 8CA52B70 */ lw $a1, %lo(D_800F2B70)($a1) # 0x2b70($a1) -/* 0B3500 800B2900 01C37023 */ subu $t6, $t6, $v1 -/* 0B3504 800B2904 3C02800F */ lui $v0, %hi(D_800E86AD) # 0x800f -/* 0B3508 800B2908 01C47821 */ addu $t7, $t6, $a0 -/* 0B350C 800B290C 004F1021 */ addu $v0, $v0, $t7 -/* 0B3510 800B2910 10A0000B */ beqz $a1, .L800B2940 -/* 0B3514 800B2914 804286AD */ lb $v0, %lo(D_800E86AD)($v0) # -0x7953($v0) -/* 0B3518 800B2918 24030001 */ li $v1, 1 -/* 0B351C 800B291C 10A30026 */ beq $a1, $v1, .L800B29B8 -/* 0B3520 800B2920 3C01800E */ lui $at, %hi(gCCSelection) # 0x800e -/* 0B3524 800B2924 24010002 */ li $at, 2 -/* 0B3528 800B2928 10A10012 */ beq $a1, $at, .L800B2974 -/* 0B352C 800B292C 24010003 */ li $at, 3 -/* 0B3530 800B2930 10A1001C */ beq $a1, $at, .L800B29A4 -/* 0B3534 800B2934 00000000 */ nop -/* 0B3538 800B2938 03E00008 */ jr $ra -/* 0B353C 800B293C 00000000 */ nop - -.L800B2940: -/* 0B3540 800B2940 3C01800E */ lui $at, %hi(gCCSelection) # $at, 0x800e -/* 0B3544 800B2944 AC22C548 */ sw $v0, %lo(gCCSelection)($at) -/* 0B3548 800B2948 24030001 */ li $v1, 1 -/* 0B354C 800B294C 3C01800E */ lui $at, %hi(D_800DC648) # $at, 0x800e -/* 0B3550 800B2950 A423C648 */ sh $v1, %lo(D_800DC648)($at) -/* 0B3554 800B2954 24010003 */ li $at, 3 -/* 0B3558 800B2958 14410003 */ bne $v0, $at, .L800B2968 -/* 0B355C 800B295C 3C01800E */ lui $at, %hi(gIsMirrorMode) # 0x800e -/* 0B3560 800B2960 03E00008 */ jr $ra -/* 0B3564 800B2964 AC23C604 */ sw $v1, %lo(gIsMirrorMode)($at) # -0x39fc($at) - -.L800B2968: -/* 0B3568 800B2968 3C01800E */ lui $at, %hi(gIsMirrorMode) # 0x800e -/* 0B356C 800B296C 03E00008 */ jr $ra -/* 0B3570 800B2970 AC20C604 */ sw $zero, %lo(gIsMirrorMode)($at) # -0x39fc($at) - -.L800B2974: -/* 0B3574 800B2974 3C01800E */ lui $at, %hi(gCCSelection) # $at, 0x800e -/* 0B3578 800B2978 AC22C548 */ sw $v0, %lo(gCCSelection)($at) -/* 0B357C 800B297C 3C01800E */ lui $at, %hi(D_800DC648) # $at, 0x800e -/* 0B3580 800B2980 A423C648 */ sh $v1, %lo(D_800DC648)($at) -/* 0B3584 800B2984 24010003 */ li $at, 3 -/* 0B3588 800B2988 14410003 */ bne $v0, $at, .L800B2998 -/* 0B358C 800B298C 3C01800E */ lui $at, %hi(gIsMirrorMode) # 0x800e -/* 0B3590 800B2990 03E00008 */ jr $ra -/* 0B3594 800B2994 AC23C604 */ sw $v1, %lo(gIsMirrorMode)($at) # -0x39fc($at) - -.L800B2998: -/* 0B3598 800B2998 3C01800E */ lui $at, %hi(gIsMirrorMode) # 0x800e -/* 0B359C 800B299C 03E00008 */ jr $ra -/* 0B35A0 800B29A0 AC20C604 */ sw $zero, %lo(gIsMirrorMode)($at) # -0x39fc($at) - -.L800B29A4: -/* 0B35A4 800B29A4 3C01800E */ lui $at, %hi(D_800DC648) # $at, 0x800e -/* 0B35A8 800B29A8 A423C648 */ sh $v1, %lo(D_800DC648)($at) -/* 0B35AC 800B29AC 3C01800E */ lui $at, %hi(gIsMirrorMode) # 0x800e -/* 0B35B0 800B29B0 03E00008 */ jr $ra -/* 0B35B4 800B29B4 AC20C604 */ sw $zero, %lo(gIsMirrorMode)($at) # -0x39fc($at) - -.L800B29B8: -/* 0B35B8 800B29B8 AC23C548 */ sw $v1, %lo(gCCSelection)($at) # -0x3ab8($at) -/* 0B35BC 800B29BC 3C01800E */ lui $at, %hi(gIsMirrorMode) # $at, 0x800e -/* 0B35C0 800B29C0 AC20C604 */ sw $zero, %lo(gIsMirrorMode)($at) -/* 0B35C4 800B29C4 3C01800E */ lui $at, %hi(D_800DC648) # $at, 0x800e -/* 0B35C8 800B29C8 10400001 */ beqz $v0, .L800B29D0 -/* 0B35CC 800B29CC A420C648 */ sh $zero, %lo(D_800DC648)($at) -.L800B29D0: -/* 0B35D0 800B29D0 03E00008 */ jr $ra -/* 0B35D4 800B29D4 00000000 */ nop diff --git a/asm/non_matchings/code_800AF9B0/func_800B29D8.s b/asm/non_matchings/code_800AF9B0/func_800B29D8.s index 8e5cb7ce0..f71a939aa 100644 --- a/asm/non_matchings/code_800AF9B0/func_800B29D8.s +++ b/asm/non_matchings/code_800AF9B0/func_800B29D8.s @@ -41,10 +41,10 @@ glabel func_800B29D8 glabel L800B2A6C /* 0B366C 800B2A6C 3C0D8019 */ lui $t5, %hi(D_8018EDF3) # $t5, 0x8019 /* 0B3670 800B2A70 81ADEDF3 */ lb $t5, %lo(D_8018EDF3)($t5) -/* 0B3674 800B2A74 3C0F800F */ lui $t7, %hi(D_800E86AB) # 0x800f -/* 0B3678 800B2A78 3C03800F */ lui $v1, %hi(D_800F2B70) # 0x800f +/* 0B3674 800B2A74 3C0F800F */ lui $t7, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f +/* 0B3678 800B2A78 3C03800F */ lui $v1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0B367C 800B2A7C 01ED7821 */ addu $t7, $t7, $t5 -/* 0B3680 800B2A80 81EF86AB */ lb $t7, %lo(D_800E86AB)($t7) # -0x7955($t7) +/* 0B3680 800B2A80 81EF86AB */ lb $t7, %lo(gGameModeRowSelectionForNumPlayers)($t7) # -0x7955($t7) /* 0B3684 800B2A84 000D7080 */ sll $t6, $t5, 2 /* 0B3688 800B2A88 01CD7023 */ subu $t6, $t6, $t5 /* 0B368C 800B2A8C 000E7080 */ sll $t6, $t6, 2 @@ -52,7 +52,7 @@ glabel L800B2A6C /* 0B3694 800B2A94 01D8C821 */ addu $t9, $t6, $t8 /* 0B3698 800B2A98 00791821 */ addu $v1, $v1, $t9 /* 0B369C 800B2A9C 1000028C */ b .L800B34D0 -/* 0B36A0 800B2AA0 8C632B70 */ lw $v1, %lo(D_800F2B70)($v1) # 0x2b70($v1) +/* 0B36A0 800B2AA0 8C632B70 */ lw $v1, %lo(gGameModeFromNumPlayersAndRowSelection)($v1) # 0x2b70($v1) glabel L800B2AA4 /* 0B36A4 800B2AA4 30690100 */ andi $t1, $v1, 0x100 /* 0B36A8 800B2AA8 11200010 */ beqz $t1, .L800B2AEC @@ -136,10 +136,10 @@ glabel L800B2AA4 /* 0B37C4 800B2BC4 34848002 */ ori $a0, (0x49008002 & 0xFFFF) # ori $a0, $a0, 0x8002 /* 0B37C8 800B2BC8 3C0F8019 */ lui $t7, %hi(D_8018EDF3) # $t7, 0x8019 /* 0B37CC 800B2BCC 81EFEDF3 */ lb $t7, %lo(D_8018EDF3)($t7) -/* 0B37D0 800B2BD0 3C18800F */ lui $t8, %hi(D_800E86AB) # 0x800f -/* 0B37D4 800B2BD4 3C03800F */ lui $v1, %hi(D_800F2B70) # 0x800f +/* 0B37D0 800B2BD0 3C18800F */ lui $t8, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f +/* 0B37D4 800B2BD4 3C03800F */ lui $v1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0B37D8 800B2BD8 030FC021 */ addu $t8, $t8, $t7 -/* 0B37DC 800B2BDC 831886AB */ lb $t8, %lo(D_800E86AB)($t8) # -0x7955($t8) +/* 0B37DC 800B2BDC 831886AB */ lb $t8, %lo(gGameModeRowSelectionForNumPlayers)($t8) # -0x7955($t8) /* 0B37E0 800B2BE0 000F7080 */ sll $t6, $t7, 2 /* 0B37E4 800B2BE4 01CF7023 */ subu $t6, $t6, $t7 /* 0B37E8 800B2BE8 000E7080 */ sll $t6, $t6, 2 @@ -147,7 +147,7 @@ glabel L800B2AA4 /* 0B37F0 800B2BF0 01D94821 */ addu $t1, $t6, $t9 /* 0B37F4 800B2BF4 00691821 */ addu $v1, $v1, $t1 /* 0B37F8 800B2BF8 10000235 */ b .L800B34D0 -/* 0B37FC 800B2BFC 8C632B70 */ lw $v1, %lo(D_800F2B70)($v1) # 0x2b70($v1) +/* 0B37FC 800B2BFC 8C632B70 */ lw $v1, %lo(gGameModeFromNumPlayersAndRowSelection)($v1) # 0x2b70($v1) .L800B2C00: /* 0B3800 800B2C00 11400015 */ beqz $t2, .L800B2C58 /* 0B3804 800B2C04 30D90020 */ andi $t9, $a2, 0x20 @@ -159,10 +159,10 @@ glabel L800B2AA4 /* 0B381C 800B2C1C 34848001 */ ori $a0, (0x49008001 & 0xFFFF) # ori $a0, $a0, 0x8001 /* 0B3820 800B2C20 3C0C8019 */ lui $t4, %hi(D_8018EDF3) # $t4, 0x8019 /* 0B3824 800B2C24 818CEDF3 */ lb $t4, %lo(D_8018EDF3)($t4) -/* 0B3828 800B2C28 3C0F800F */ lui $t7, %hi(D_800E86AB) # 0x800f -/* 0B382C 800B2C2C 3C03800F */ lui $v1, %hi(D_800F2B70) # 0x800f +/* 0B3828 800B2C28 3C0F800F */ lui $t7, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f +/* 0B382C 800B2C2C 3C03800F */ lui $v1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0B3830 800B2C30 01EC7821 */ addu $t7, $t7, $t4 -/* 0B3834 800B2C34 81EF86AB */ lb $t7, %lo(D_800E86AB)($t7) # -0x7955($t7) +/* 0B3834 800B2C34 81EF86AB */ lb $t7, %lo(gGameModeRowSelectionForNumPlayers)($t7) # -0x7955($t7) /* 0B3838 800B2C38 000C6880 */ sll $t5, $t4, 2 /* 0B383C 800B2C3C 01AC6823 */ subu $t5, $t5, $t4 /* 0B3840 800B2C40 000D6880 */ sll $t5, $t5, 2 @@ -170,7 +170,7 @@ glabel L800B2AA4 /* 0B3848 800B2C48 01B87021 */ addu $t6, $t5, $t8 /* 0B384C 800B2C4C 006E1821 */ addu $v1, $v1, $t6 /* 0B3850 800B2C50 1000021F */ b .L800B34D0 -/* 0B3854 800B2C54 8C632B70 */ lw $v1, %lo(D_800F2B70)($v1) # 0x2b70($v1) +/* 0B3854 800B2C54 8C632B70 */ lw $v1, %lo(gGameModeFromNumPlayersAndRowSelection)($v1) # 0x2b70($v1) .L800B2C58: /* 0B3858 800B2C58 13200014 */ beqz $t9, .L800B2CAC /* 0B385C 800B2C5C 30CD0010 */ andi $t5, $a2, 0x10 @@ -181,10 +181,10 @@ glabel L800B2AA4 /* 0B3870 800B2C70 34849010 */ ori $a0, (0x49009010 & 0xFFFF) # ori $a0, $a0, 0x9010 /* 0B3874 800B2C74 3C098019 */ lui $t1, %hi(D_8018EDF3) # $t1, 0x8019 /* 0B3878 800B2C78 8129EDF3 */ lb $t1, %lo(D_8018EDF3)($t1) -/* 0B387C 800B2C7C 3C0B800F */ lui $t3, %hi(D_800E86AB) # 0x800f -/* 0B3880 800B2C80 3C03800F */ lui $v1, %hi(D_800F2B70) # 0x800f +/* 0B387C 800B2C7C 3C0B800F */ lui $t3, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f +/* 0B3880 800B2C80 3C03800F */ lui $v1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0B3884 800B2C84 01695821 */ addu $t3, $t3, $t1 -/* 0B3888 800B2C88 816B86AB */ lb $t3, %lo(D_800E86AB)($t3) # -0x7955($t3) +/* 0B3888 800B2C88 816B86AB */ lb $t3, %lo(gGameModeRowSelectionForNumPlayers)($t3) # -0x7955($t3) /* 0B388C 800B2C8C 00095080 */ sll $t2, $t1, 2 /* 0B3890 800B2C90 01495023 */ subu $t2, $t2, $t1 /* 0B3894 800B2C94 000A5080 */ sll $t2, $t2, 2 @@ -192,7 +192,7 @@ glabel L800B2AA4 /* 0B389C 800B2C9C 014C7821 */ addu $t7, $t2, $t4 /* 0B38A0 800B2CA0 006F1821 */ addu $v1, $v1, $t7 /* 0B38A4 800B2CA4 1000020A */ b .L800B34D0 -/* 0B38A8 800B2CA8 8C632B70 */ lw $v1, %lo(D_800F2B70)($v1) # 0x2b70($v1) +/* 0B38A8 800B2CA8 8C632B70 */ lw $v1, %lo(gGameModeFromNumPlayersAndRowSelection)($v1) # 0x2b70($v1) .L800B2CAC: /* 0B38AC 800B2CAC 11A00015 */ beqz $t5, .L800B2D04 /* 0B38B0 800B2CB0 00026080 */ sll $t4, $v0, 2 @@ -204,10 +204,10 @@ glabel L800B2AA4 /* 0B38C8 800B2CC8 34849011 */ ori $a0, (0x49009011 & 0xFFFF) # ori $a0, $a0, 0x9011 /* 0B38CC 800B2CCC 3C0E8019 */ lui $t6, %hi(D_8018EDF3) # $t6, 0x8019 /* 0B38D0 800B2CD0 81CEEDF3 */ lb $t6, %lo(D_8018EDF3)($t6) -/* 0B38D4 800B2CD4 3C09800F */ lui $t1, %hi(D_800E86AB) # 0x800f -/* 0B38D8 800B2CD8 3C03800F */ lui $v1, %hi(D_800F2B70) # 0x800f +/* 0B38D4 800B2CD4 3C09800F */ lui $t1, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f +/* 0B38D8 800B2CD8 3C03800F */ lui $v1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0B38DC 800B2CDC 012E4821 */ addu $t1, $t1, $t6 -/* 0B38E0 800B2CE0 812986AB */ lb $t1, %lo(D_800E86AB)($t1) # -0x7955($t1) +/* 0B38E0 800B2CE0 812986AB */ lb $t1, %lo(gGameModeRowSelectionForNumPlayers)($t1) # -0x7955($t1) /* 0B38E4 800B2CE4 000EC880 */ sll $t9, $t6, 2 /* 0B38E8 800B2CE8 032EC823 */ subu $t9, $t9, $t6 /* 0B38EC 800B2CEC 0019C880 */ sll $t9, $t9, 2 @@ -215,19 +215,19 @@ glabel L800B2AA4 /* 0B38F4 800B2CF4 032B5021 */ addu $t2, $t9, $t3 /* 0B38F8 800B2CF8 006A1821 */ addu $v1, $v1, $t2 /* 0B38FC 800B2CFC 100001F4 */ b .L800B34D0 -/* 0B3900 800B2D00 8C632B70 */ lw $v1, %lo(D_800F2B70)($v1) # 0x2b70($v1) +/* 0B3900 800B2D00 8C632B70 */ lw $v1, %lo(gGameModeFromNumPlayersAndRowSelection)($v1) # 0x2b70($v1) .L800B2D04: -/* 0B3904 800B2D04 3C0F800F */ lui $t7, %hi(D_800E86AB) # 0x800f +/* 0B3904 800B2D04 3C0F800F */ lui $t7, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f /* 0B3908 800B2D08 01E27821 */ addu $t7, $t7, $v0 -/* 0B390C 800B2D0C 81EF86AB */ lb $t7, %lo(D_800E86AB)($t7) # -0x7955($t7) +/* 0B390C 800B2D0C 81EF86AB */ lb $t7, %lo(gGameModeRowSelectionForNumPlayers)($t7) # -0x7955($t7) /* 0B3910 800B2D10 01826023 */ subu $t4, $t4, $v0 /* 0B3914 800B2D14 000C6080 */ sll $t4, $t4, 2 /* 0B3918 800B2D18 000F6880 */ sll $t5, $t7, 2 /* 0B391C 800B2D1C 018DC021 */ addu $t8, $t4, $t5 -/* 0B3920 800B2D20 3C03800F */ lui $v1, %hi(D_800F2B70) # 0x800f +/* 0B3920 800B2D20 3C03800F */ lui $v1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0B3924 800B2D24 00781821 */ addu $v1, $v1, $t8 /* 0B3928 800B2D28 100001E9 */ b .L800B34D0 -/* 0B392C 800B2D2C 8C632B70 */ lw $v1, %lo(D_800F2B70)($v1) # 0x2b70($v1) +/* 0B392C 800B2D2C 8C632B70 */ lw $v1, %lo(gGameModeFromNumPlayersAndRowSelection)($v1) # 0x2b70($v1) glabel L800B2D30 /* 0B3930 800B2D30 306E0400 */ andi $t6, $v1, 0x400 /* 0B3934 800B2D34 11C00017 */ beqz $t6, .L800B2D94 @@ -287,10 +287,10 @@ glabel L800B2D30 /* 0B3A00 800B2E00 34848002 */ ori $a0, (0x49008002 & 0xFFFF) # ori $a0, $a0, 0x8002 /* 0B3A04 800B2E04 3C0E8019 */ lui $t6, %hi(D_8018EDF3) # $t6, 0x8019 /* 0B3A08 800B2E08 81CEEDF3 */ lb $t6, %lo(D_8018EDF3)($t6) -/* 0B3A0C 800B2E0C 3C19800F */ lui $t9, %hi(D_800E86AB) # 0x800f -/* 0B3A10 800B2E10 3C03800F */ lui $v1, %hi(D_800F2B70) # 0x800f +/* 0B3A0C 800B2E0C 3C19800F */ lui $t9, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f +/* 0B3A10 800B2E10 3C03800F */ lui $v1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0B3A14 800B2E14 032EC821 */ addu $t9, $t9, $t6 -/* 0B3A18 800B2E18 833986AB */ lb $t9, %lo(D_800E86AB)($t9) # -0x7955($t9) +/* 0B3A18 800B2E18 833986AB */ lb $t9, %lo(gGameModeRowSelectionForNumPlayers)($t9) # -0x7955($t9) /* 0B3A1C 800B2E1C 000E4880 */ sll $t1, $t6, 2 /* 0B3A20 800B2E20 012E4823 */ subu $t1, $t1, $t6 /* 0B3A24 800B2E24 00094880 */ sll $t1, $t1, 2 @@ -298,22 +298,22 @@ glabel L800B2D30 /* 0B3A2C 800B2E2C 012B5021 */ addu $t2, $t1, $t3 /* 0B3A30 800B2E30 006A1821 */ addu $v1, $v1, $t2 /* 0B3A34 800B2E34 100001A6 */ b .L800B34D0 -/* 0B3A38 800B2E38 8C632B70 */ lw $v1, %lo(D_800F2B70)($v1) # 0x2b70($v1) +/* 0B3A38 800B2E38 8C632B70 */ lw $v1, %lo(gGameModeFromNumPlayersAndRowSelection)($v1) # 0x2b70($v1) .L800B2E3C: /* 0B3A3C 800B2E3C 8042EDF3 */ lb $v0, %lo(D_8018EDF3)($v0) -/* 0B3A40 800B2E40 3C04800F */ lui $a0, %hi(D_800E86AB) # 0x800f +/* 0B3A40 800B2E40 3C04800F */ lui $a0, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f /* 0B3A44 800B2E44 30CF8000 */ andi $t7, $a2, 0x8000 /* 0B3A48 800B2E48 00822021 */ addu $a0, $a0, $v0 /* 0B3A4C 800B2E4C 11E0003F */ beqz $t7, .L800B2F4C -/* 0B3A50 800B2E50 808486AB */ lb $a0, %lo(D_800E86AB)($a0) # -0x7955($a0) +/* 0B3A50 800B2E50 808486AB */ lb $a0, %lo(gGameModeRowSelectionForNumPlayers)($a0) # -0x7955($a0) /* 0B3A54 800B2E54 00026080 */ sll $t4, $v0, 2 /* 0B3A58 800B2E58 01826023 */ subu $t4, $t4, $v0 /* 0B3A5C 800B2E5C 000C6080 */ sll $t4, $t4, 2 /* 0B3A60 800B2E60 00046880 */ sll $t5, $a0, 2 /* 0B3A64 800B2E64 018DC021 */ addu $t8, $t4, $t5 -/* 0B3A68 800B2E68 3C03800F */ lui $v1, %hi(D_800F2B70) # 0x800f +/* 0B3A68 800B2E68 3C03800F */ lui $v1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0B3A6C 800B2E6C 00781821 */ addu $v1, $v1, $t8 -/* 0B3A70 800B2E70 8C632B70 */ lw $v1, %lo(D_800F2B70)($v1) # 0x2b70($v1) +/* 0B3A70 800B2E70 8C632B70 */ lw $v1, %lo(gGameModeFromNumPlayersAndRowSelection)($v1) # 0x2b70($v1) /* 0B3A74 800B2E74 3C044900 */ lui $a0, (0x4900900A >> 16) # lui $a0, 0x4900 /* 0B3A78 800B2E78 24190005 */ li $t9, 5 /* 0B3A7C 800B2E7C 1060000D */ beqz $v1, .L800B2EB4 @@ -359,10 +359,10 @@ glabel L800B2D30 /* 0B3B08 800B2F08 00000000 */ nop /* 0B3B0C 800B2F0C 3C0F8019 */ lui $t7, %hi(D_8018EDF3) # $t7, 0x8019 /* 0B3B10 800B2F10 81EFEDF3 */ lb $t7, %lo(D_8018EDF3)($t7) -/* 0B3B14 800B2F14 3C0D800F */ lui $t5, %hi(D_800E86AB) # 0x800f -/* 0B3B18 800B2F18 3C03800F */ lui $v1, %hi(D_800F2B70) # 0x800f +/* 0B3B14 800B2F14 3C0D800F */ lui $t5, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f +/* 0B3B18 800B2F18 3C03800F */ lui $v1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0B3B1C 800B2F1C 01AF6821 */ addu $t5, $t5, $t7 -/* 0B3B20 800B2F20 81AD86AB */ lb $t5, %lo(D_800E86AB)($t5) # -0x7955($t5) +/* 0B3B20 800B2F20 81AD86AB */ lb $t5, %lo(gGameModeRowSelectionForNumPlayers)($t5) # -0x7955($t5) /* 0B3B24 800B2F24 000F6080 */ sll $t4, $t7, 2 /* 0B3B28 800B2F28 018F6023 */ subu $t4, $t4, $t7 /* 0B3B2C 800B2F2C 000C6080 */ sll $t4, $t4, 2 @@ -372,17 +372,17 @@ glabel L800B2D30 /* 0B3B3C 800B2F3C 006E1821 */ addu $v1, $v1, $t6 /* 0B3B40 800B2F40 AC20EE00 */ sw $zero, %lo(gMenuTimingCounter)($at) /* 0B3B44 800B2F44 10000162 */ b .L800B34D0 -/* 0B3B48 800B2F48 8C632B70 */ lw $v1, %lo(D_800F2B70)($v1) # 0x2b70($v1) +/* 0B3B48 800B2F48 8C632B70 */ lw $v1, %lo(gGameModeFromNumPlayersAndRowSelection)($v1) # 0x2b70($v1) .L800B2F4C: /* 0B3B4C 800B2F4C 0002C880 */ sll $t9, $v0, 2 /* 0B3B50 800B2F50 0322C823 */ subu $t9, $t9, $v0 /* 0B3B54 800B2F54 0019C880 */ sll $t9, $t9, 2 /* 0B3B58 800B2F58 00044880 */ sll $t1, $a0, 2 /* 0B3B5C 800B2F5C 03295821 */ addu $t3, $t9, $t1 -/* 0B3B60 800B2F60 3C03800F */ lui $v1, %hi(D_800F2B70) # 0x800f +/* 0B3B60 800B2F60 3C03800F */ lui $v1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0B3B64 800B2F64 006B1821 */ addu $v1, $v1, $t3 /* 0B3B68 800B2F68 10000159 */ b .L800B34D0 -/* 0B3B6C 800B2F6C 8C632B70 */ lw $v1, %lo(D_800F2B70)($v1) # 0x2b70($v1) +/* 0B3B6C 800B2F6C 8C632B70 */ lw $v1, %lo(gGameModeFromNumPlayersAndRowSelection)($v1) # 0x2b70($v1) glabel L800B2F70 /* 0B3B70 800B2F70 14A00023 */ bnez $a1, .L800B3000 /* 0B3B74 800B2F74 00603025 */ move $a2, $v1 @@ -401,17 +401,17 @@ glabel L800B2F70 /* 0B3BA8 800B2FA8 00000000 */ nop .L800B2FAC: /* 0B3BAC 800B2FAC 8042EDF3 */ lb $v0, %lo(D_8018EDF3)($v0) -/* 0B3BB0 800B2FB0 3C18800F */ lui $t8, %hi(D_800E86AB) # 0x800f -/* 0B3BB4 800B2FB4 3C03800F */ lui $v1, %hi(D_800F2B70) # 0x800f +/* 0B3BB0 800B2FB0 3C18800F */ lui $t8, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f +/* 0B3BB4 800B2FB4 3C03800F */ lui $v1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0B3BB8 800B2FB8 0302C021 */ addu $t8, $t8, $v0 -/* 0B3BBC 800B2FBC 831886AB */ lb $t8, %lo(D_800E86AB)($t8) # -0x7955($t8) +/* 0B3BBC 800B2FBC 831886AB */ lb $t8, %lo(gGameModeRowSelectionForNumPlayers)($t8) # -0x7955($t8) /* 0B3BC0 800B2FC0 00026080 */ sll $t4, $v0, 2 /* 0B3BC4 800B2FC4 01826023 */ subu $t4, $t4, $v0 /* 0B3BC8 800B2FC8 000C6080 */ sll $t4, $t4, 2 /* 0B3BCC 800B2FCC 00187080 */ sll $t6, $t8, 2 /* 0B3BD0 800B2FD0 018EC821 */ addu $t9, $t4, $t6 /* 0B3BD4 800B2FD4 00791821 */ addu $v1, $v1, $t9 -/* 0B3BD8 800B2FD8 8C632B70 */ lw $v1, %lo(D_800F2B70)($v1) # 0x2b70($v1) +/* 0B3BD8 800B2FD8 8C632B70 */ lw $v1, %lo(gGameModeFromNumPlayersAndRowSelection)($v1) # 0x2b70($v1) /* 0B3BDC 800B2FDC 3C044900 */ lui $a0, (0x4900900E >> 16) # lui $a0, 0x4900 /* 0B3BE0 800B2FE0 24010002 */ li $at, 2 /* 0B3BE4 800B2FE4 10600003 */ beqz $v1, .L800B2FF4 @@ -425,10 +425,10 @@ glabel L800B2F70 .L800B3000: /* 0B3C00 800B3000 3C028019 */ lui $v0, %hi(D_8018EDF3) # $v0, 0x8019 /* 0B3C04 800B3004 8042EDF3 */ lb $v0, %lo(D_8018EDF3)($v0) -/* 0B3C08 800B3008 3C0B800F */ lui $t3, %hi(D_800E86AB) # 0x800f +/* 0B3C08 800B3008 3C0B800F */ lui $t3, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f /* 0B3C0C 800B300C 3C0F800F */ lui $t7, %hi(D_800E86B0) # $t7, 0x800f /* 0B3C10 800B3010 01625821 */ addu $t3, $t3, $v0 -/* 0B3C14 800B3014 816B86AB */ lb $t3, %lo(D_800E86AB)($t3) # -0x7955($t3) +/* 0B3C14 800B3014 816B86AB */ lb $t3, %lo(gGameModeRowSelectionForNumPlayers)($t3) # -0x7955($t3) /* 0B3C18 800B3018 00024880 */ sll $t1, $v0, 2 /* 0B3C1C 800B301C 01224823 */ subu $t1, $t1, $v0 /* 0B3C20 800B3020 25EF86B0 */ addiu $t7, %lo(D_800E86B0) # addiu $t7, $t7, -0x7950 @@ -463,10 +463,10 @@ glabel L800B2F70 /* 0B3C90 800B3090 8FA6001C */ lw $a2, 0x1c($sp) /* 0B3C94 800B3094 3C028019 */ lui $v0, %hi(D_8018EDF3) # $v0, 0x8019 /* 0B3C98 800B3098 8042EDF3 */ lb $v0, %lo(D_8018EDF3)($v0) -/* 0B3C9C 800B309C 3C04800F */ lui $a0, %hi(D_800E86AB) # 0x800f +/* 0B3C9C 800B309C 3C04800F */ lui $a0, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f /* 0B3CA0 800B30A0 3C09800F */ lui $t1, %hi(D_800F2B6D) # 0x800f /* 0B3CA4 800B30A4 00822021 */ addu $a0, $a0, $v0 -/* 0B3CA8 800B30A8 808486AB */ lb $a0, %lo(D_800E86AB)($a0) # -0x7955($a0) +/* 0B3CA8 800B30A8 808486AB */ lb $a0, %lo(gGameModeRowSelectionForNumPlayers)($a0) # -0x7955($a0) /* 0B3CAC 800B30AC 00027080 */ sll $t6, $v0, 2 /* 0B3CB0 800B30B0 01C27023 */ subu $t6, $t6, $v0 /* 0B3CB4 800B30B4 01C4C821 */ addu $t9, $t6, $a0 @@ -480,10 +480,10 @@ glabel L800B2F70 .L800B30D4: /* 0B3CD4 800B30D4 3C028019 */ lui $v0, %hi(D_8018EDF3) # $v0, 0x8019 /* 0B3CD8 800B30D8 8042EDF3 */ lb $v0, %lo(D_8018EDF3)($v0) -/* 0B3CDC 800B30DC 3C04800F */ lui $a0, %hi(D_800E86AB) # 0x800f +/* 0B3CDC 800B30DC 3C04800F */ lui $a0, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f /* 0B3CE0 800B30E0 3C0F800F */ lui $t7, %hi(D_800F2B61) # 0x800f /* 0B3CE4 800B30E4 00822021 */ addu $a0, $a0, $v0 -/* 0B3CE8 800B30E8 808486AB */ lb $a0, %lo(D_800E86AB)($a0) # -0x7955($a0) +/* 0B3CE8 800B30E8 808486AB */ lb $a0, %lo(gGameModeRowSelectionForNumPlayers)($a0) # -0x7955($a0) /* 0B3CEC 800B30EC 00025880 */ sll $t3, $v0, 2 /* 0B3CF0 800B30F0 01625823 */ subu $t3, $t3, $v0 /* 0B3CF4 800B30F4 01645021 */ addu $t2, $t3, $a0 @@ -513,10 +513,10 @@ glabel L800B2F70 .L800B3150: /* 0B3D50 800B3150 3C028019 */ lui $v0, %hi(D_8018EDF3) # $v0, 0x8019 /* 0B3D54 800B3154 8042EDF3 */ lb $v0, %lo(D_8018EDF3)($v0) -/* 0B3D58 800B3158 3C04800F */ lui $a0, %hi(D_800E86AB) # 0x800f -/* 0B3D5C 800B315C 3C05800F */ lui $a1, %hi(D_800E86AD) # 0x800f +/* 0B3D58 800B3158 3C04800F */ lui $a0, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f +/* 0B3D5C 800B315C 3C05800F */ lui $a1, %hi(gGameModeSubMenuRowSelectionForNumPlayers) # 0x800f /* 0B3D60 800B3160 00822021 */ addu $a0, $a0, $v0 -/* 0B3D64 800B3164 808486AB */ lb $a0, %lo(D_800E86AB)($a0) # -0x7955($a0) +/* 0B3D64 800B3164 808486AB */ lb $a0, %lo(gGameModeRowSelectionForNumPlayers)($a0) # -0x7955($a0) /* 0B3D68 800B3168 00024880 */ sll $t1, $v0, 2 /* 0B3D6C 800B316C 01224823 */ subu $t1, $t1, $v0 /* 0B3D70 800B3170 01245821 */ addu $t3, $t1, $a0 @@ -525,7 +525,7 @@ glabel L800B2F70 /* 0B3D7C 800B317C 30CA4000 */ andi $t2, $a2, 0x4000 /* 0B3D80 800B3180 2508EDED */ addiu $t0, %lo(gMainMenuSelectionDepth) # addiu $t0, $t0, -0x1213 /* 0B3D84 800B3184 11400015 */ beqz $t2, .L800B31DC -/* 0B3D88 800B3188 80A586AD */ lb $a1, %lo(D_800E86AD)($a1) # -0x7953($a1) +/* 0B3D88 800B3188 80A586AD */ lb $a1, %lo(gGameModeSubMenuRowSelectionForNumPlayers)($a1) # -0x7953($a1) /* 0B3D8C 800B318C 240F0004 */ li $t7, 4 /* 0B3D90 800B3190 0C02D12B */ jal func_800B44AC /* 0B3D94 800B3194 A10F0000 */ sb $t7, ($t0) @@ -534,10 +534,10 @@ glabel L800B2F70 /* 0B3DA0 800B31A0 34848002 */ ori $a0, (0x49008002 & 0xFFFF) # ori $a0, $a0, 0x8002 /* 0B3DA4 800B31A4 3C0D8019 */ lui $t5, %hi(D_8018EDF3) # $t5, 0x8019 /* 0B3DA8 800B31A8 81ADEDF3 */ lb $t5, %lo(D_8018EDF3)($t5) -/* 0B3DAC 800B31AC 3C0C800F */ lui $t4, %hi(D_800E86AB) # 0x800f -/* 0B3DB0 800B31B0 3C03800F */ lui $v1, %hi(D_800F2B70) # 0x800f +/* 0B3DAC 800B31AC 3C0C800F */ lui $t4, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f +/* 0B3DB0 800B31B0 3C03800F */ lui $v1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0B3DB4 800B31B4 018D6021 */ addu $t4, $t4, $t5 -/* 0B3DB8 800B31B8 818C86AB */ lb $t4, %lo(D_800E86AB)($t4) # -0x7955($t4) +/* 0B3DB8 800B31B8 818C86AB */ lb $t4, %lo(gGameModeRowSelectionForNumPlayers)($t4) # -0x7955($t4) /* 0B3DBC 800B31BC 000DC080 */ sll $t8, $t5, 2 /* 0B3DC0 800B31C0 030DC023 */ subu $t8, $t8, $t5 /* 0B3DC4 800B31C4 0018C080 */ sll $t8, $t8, 2 @@ -545,7 +545,7 @@ glabel L800B2F70 /* 0B3DCC 800B31CC 030EC821 */ addu $t9, $t8, $t6 /* 0B3DD0 800B31D0 00791821 */ addu $v1, $v1, $t9 /* 0B3DD4 800B31D4 100000BE */ b .L800B34D0 -/* 0B3DD8 800B31D8 8C632B70 */ lw $v1, %lo(D_800F2B70)($v1) # 0x2b70($v1) +/* 0B3DD8 800B31D8 8C632B70 */ lw $v1, %lo(gGameModeFromNumPlayersAndRowSelection)($v1) # 0x2b70($v1) .L800B31DC: /* 0B3DDC 800B31DC 30C98000 */ andi $t1, $a2, 0x8000 /* 0B3DE0 800B31E0 1120002C */ beqz $t1, .L800B3294 @@ -557,9 +557,9 @@ glabel L800B2F70 /* 0B3DF8 800B31F8 24070001 */ li $a3, 1 /* 0B3DFC 800B31FC 8FA50028 */ lw $a1, 0x28($sp) /* 0B3E00 800B3200 14E2000E */ bne $a3, $v0, .L800B323C -/* 0B3E04 800B3204 3C0B800F */ lui $t3, %hi(D_800E86AB) # 0x800f +/* 0B3E04 800B3204 3C0B800F */ lui $t3, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f /* 0B3E08 800B3208 01625821 */ addu $t3, $t3, $v0 -/* 0B3E0C 800B320C 816B86AB */ lb $t3, %lo(D_800E86AB)($t3) # -0x7955($t3) +/* 0B3E0C 800B320C 816B86AB */ lb $t3, %lo(gGameModeRowSelectionForNumPlayers)($t3) # -0x7955($t3) /* 0B3E10 800B3210 54EB000B */ bnel $a3, $t3, .L800B3240 /* 0B3E14 800B3214 240A0006 */ li $t2, 6 /* 0B3E18 800B3218 54A70009 */ bnel $a1, $a3, .L800B3240 @@ -584,10 +584,10 @@ glabel L800B2F70 .L800B325C: /* 0B3E5C 800B325C 3C0F8019 */ lui $t7, %hi(D_8018EDF3) # $t7, 0x8019 /* 0B3E60 800B3260 81EFEDF3 */ lb $t7, %lo(D_8018EDF3)($t7) -/* 0B3E64 800B3264 3C0C800F */ lui $t4, %hi(D_800E86AB) # 0x800f -/* 0B3E68 800B3268 3C03800F */ lui $v1, %hi(D_800F2B70) # 0x800f +/* 0B3E64 800B3264 3C0C800F */ lui $t4, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f +/* 0B3E68 800B3268 3C03800F */ lui $v1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0B3E6C 800B326C 018F6021 */ addu $t4, $t4, $t7 -/* 0B3E70 800B3270 818C86AB */ lb $t4, %lo(D_800E86AB)($t4) # -0x7955($t4) +/* 0B3E70 800B3270 818C86AB */ lb $t4, %lo(gGameModeRowSelectionForNumPlayers)($t4) # -0x7955($t4) /* 0B3E74 800B3274 000F6880 */ sll $t5, $t7, 2 /* 0B3E78 800B3278 01AF6823 */ subu $t5, $t5, $t7 /* 0B3E7C 800B327C 000D6880 */ sll $t5, $t5, 2 @@ -595,16 +595,16 @@ glabel L800B2F70 /* 0B3E84 800B3284 01B87021 */ addu $t6, $t5, $t8 /* 0B3E88 800B3288 006E1821 */ addu $v1, $v1, $t6 /* 0B3E8C 800B328C 10000090 */ b .L800B34D0 -/* 0B3E90 800B3290 8C632B70 */ lw $v1, %lo(D_800F2B70)($v1) # 0x2b70($v1) +/* 0B3E90 800B3290 8C632B70 */ lw $v1, %lo(gGameModeFromNumPlayersAndRowSelection)($v1) # 0x2b70($v1) .L800B3294: /* 0B3E94 800B3294 0322C823 */ subu $t9, $t9, $v0 /* 0B3E98 800B3298 0019C880 */ sll $t9, $t9, 2 /* 0B3E9C 800B329C 00044880 */ sll $t1, $a0, 2 /* 0B3EA0 800B32A0 03295821 */ addu $t3, $t9, $t1 -/* 0B3EA4 800B32A4 3C03800F */ lui $v1, %hi(D_800F2B70) # 0x800f +/* 0B3EA4 800B32A4 3C03800F */ lui $v1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0B3EA8 800B32A8 006B1821 */ addu $v1, $v1, $t3 /* 0B3EAC 800B32AC 10000088 */ b .L800B34D0 -/* 0B3EB0 800B32B0 8C632B70 */ lw $v1, %lo(D_800F2B70)($v1) # 0x2b70($v1) +/* 0B3EB0 800B32B0 8C632B70 */ lw $v1, %lo(gGameModeFromNumPlayersAndRowSelection)($v1) # 0x2b70($v1) glabel L800B32B4 /* 0B3EB4 800B32B4 14A00014 */ bnez $a1, .L800B3308 /* 0B3EB8 800B32B8 00603025 */ move $a2, $v1 @@ -635,17 +635,17 @@ glabel L800B32B4 /* 0B3F10 800B3310 30D98000 */ andi $t9, $a2, 0x8000 /* 0B3F14 800B3314 3C028019 */ lui $v0, %hi(D_8018EDF3) # $v0, 0x8019 /* 0B3F18 800B3318 8042EDF3 */ lb $v0, %lo(D_8018EDF3)($v0) -/* 0B3F1C 800B331C 3C0E800F */ lui $t6, %hi(D_800E86AB) # 0x800f -/* 0B3F20 800B3320 3C03800F */ lui $v1, %hi(D_800F2B70) # 0x800f +/* 0B3F1C 800B331C 3C0E800F */ lui $t6, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f +/* 0B3F20 800B3320 3C03800F */ lui $v1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0B3F24 800B3324 01C27021 */ addu $t6, $t6, $v0 -/* 0B3F28 800B3328 81CE86AB */ lb $t6, %lo(D_800E86AB)($t6) # -0x7955($t6) +/* 0B3F28 800B3328 81CE86AB */ lb $t6, %lo(gGameModeRowSelectionForNumPlayers)($t6) # -0x7955($t6) /* 0B3F2C 800B332C 0002C080 */ sll $t8, $v0, 2 /* 0B3F30 800B3330 0302C023 */ subu $t8, $t8, $v0 /* 0B3F34 800B3334 0018C080 */ sll $t8, $t8, 2 /* 0B3F38 800B3338 000EC880 */ sll $t9, $t6, 2 /* 0B3F3C 800B333C 03194821 */ addu $t1, $t8, $t9 /* 0B3F40 800B3340 00691821 */ addu $v1, $v1, $t1 -/* 0B3F44 800B3344 8C632B70 */ lw $v1, %lo(D_800F2B70)($v1) # 0x2b70($v1) +/* 0B3F44 800B3344 8C632B70 */ lw $v1, %lo(gGameModeFromNumPlayersAndRowSelection)($v1) # 0x2b70($v1) /* 0B3F48 800B3348 24070001 */ li $a3, 1 /* 0B3F4C 800B334C 240B0005 */ li $t3, 5 /* 0B3F50 800B3350 10600009 */ beqz $v1, .L800B3378 @@ -671,10 +671,10 @@ glabel L800B32B4 /* 0B3F94 800B3394 34848002 */ ori $a0, (0x49008002 & 0xFFFF) # ori $a0, $a0, 0x8002 /* 0B3F98 800B3398 3C0F8019 */ lui $t7, %hi(D_8018EDF3) # $t7, 0x8019 /* 0B3F9C 800B339C 81EFEDF3 */ lb $t7, %lo(D_8018EDF3)($t7) -/* 0B3FA0 800B33A0 3C0D800F */ lui $t5, %hi(D_800E86AB) # 0x800f -/* 0B3FA4 800B33A4 3C03800F */ lui $v1, %hi(D_800F2B70) # 0x800f +/* 0B3FA0 800B33A0 3C0D800F */ lui $t5, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f +/* 0B3FA4 800B33A4 3C03800F */ lui $v1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0B3FA8 800B33A8 01AF6821 */ addu $t5, $t5, $t7 -/* 0B3FAC 800B33AC 81AD86AB */ lb $t5, %lo(D_800E86AB)($t5) # -0x7955($t5) +/* 0B3FAC 800B33AC 81AD86AB */ lb $t5, %lo(gGameModeRowSelectionForNumPlayers)($t5) # -0x7955($t5) /* 0B3FB0 800B33B0 000F6080 */ sll $t4, $t7, 2 /* 0B3FB4 800B33B4 018F6023 */ subu $t4, $t4, $t7 /* 0B3FB8 800B33B8 000C6080 */ sll $t4, $t4, 2 @@ -684,7 +684,7 @@ glabel L800B32B4 /* 0B3FC8 800B33C8 00781821 */ addu $v1, $v1, $t8 /* 0B3FCC 800B33CC AC20EE00 */ sw $zero, %lo(gMenuTimingCounter)($at) /* 0B3FD0 800B33D0 1000003F */ b .L800B34D0 -/* 0B3FD4 800B33D4 8C632B70 */ lw $v1, %lo(D_800F2B70)($v1) # 0x2b70($v1) +/* 0B3FD4 800B33D4 8C632B70 */ lw $v1, %lo(gGameModeFromNumPlayersAndRowSelection)($v1) # 0x2b70($v1) .L800B33D8: /* 0B3FD8 800B33D8 13200016 */ beqz $t9, .L800B3434 /* 0B3FDC 800B33DC 3C0C8019 */ lui $t4, %hi(D_8018EDF3) # $t4, 0x8019 @@ -697,10 +697,10 @@ glabel L800B32B4 /* 0B3FF8 800B33F8 00000000 */ nop /* 0B3FFC 800B33FC 3C098019 */ lui $t1, %hi(D_8018EDF3) # $t1, 0x8019 /* 0B4000 800B3400 8129EDF3 */ lb $t1, %lo(D_8018EDF3)($t1) -/* 0B4004 800B3404 3C0A800F */ lui $t2, %hi(D_800E86AB) # 0x800f -/* 0B4008 800B3408 3C03800F */ lui $v1, %hi(D_800F2B70) # 0x800f +/* 0B4004 800B3404 3C0A800F */ lui $t2, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f +/* 0B4008 800B3408 3C03800F */ lui $v1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0B400C 800B340C 01495021 */ addu $t2, $t2, $t1 -/* 0B4010 800B3410 814A86AB */ lb $t2, %lo(D_800E86AB)($t2) # -0x7955($t2) +/* 0B4010 800B3410 814A86AB */ lb $t2, %lo(gGameModeRowSelectionForNumPlayers)($t2) # -0x7955($t2) /* 0B4014 800B3414 00095880 */ sll $t3, $t1, 2 /* 0B4018 800B3418 01695823 */ subu $t3, $t3, $t1 /* 0B401C 800B341C 000B5880 */ sll $t3, $t3, 2 @@ -708,13 +708,13 @@ glabel L800B32B4 /* 0B4024 800B3424 016F6821 */ addu $t5, $t3, $t7 /* 0B4028 800B3428 006D1821 */ addu $v1, $v1, $t5 /* 0B402C 800B342C 10000028 */ b .L800B34D0 -/* 0B4030 800B3430 8C632B70 */ lw $v1, %lo(D_800F2B70)($v1) # 0x2b70($v1) +/* 0B4030 800B3430 8C632B70 */ lw $v1, %lo(gGameModeFromNumPlayersAndRowSelection)($v1) # 0x2b70($v1) .L800B3434: /* 0B4034 800B3434 818CEDF3 */ lb $t4, %lo(D_8018EDF3)($t4) -/* 0B4038 800B3438 3C18800F */ lui $t8, %hi(D_800E86AB) # 0x800f -/* 0B403C 800B343C 3C03800F */ lui $v1, %hi(D_800F2B70) # 0x800f +/* 0B4038 800B3438 3C18800F */ lui $t8, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f +/* 0B403C 800B343C 3C03800F */ lui $v1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0B4040 800B3440 030CC021 */ addu $t8, $t8, $t4 -/* 0B4044 800B3444 831886AB */ lb $t8, %lo(D_800E86AB)($t8) # -0x7955($t8) +/* 0B4044 800B3444 831886AB */ lb $t8, %lo(gGameModeRowSelectionForNumPlayers)($t8) # -0x7955($t8) /* 0B4048 800B3448 000C7080 */ sll $t6, $t4, 2 /* 0B404C 800B344C 01CC7023 */ subu $t6, $t6, $t4 /* 0B4050 800B3450 000E7080 */ sll $t6, $t6, 2 @@ -722,14 +722,14 @@ glabel L800B32B4 /* 0B4058 800B3458 01D94821 */ addu $t1, $t6, $t9 /* 0B405C 800B345C 00691821 */ addu $v1, $v1, $t1 /* 0B4060 800B3460 1000001B */ b .L800B34D0 -/* 0B4064 800B3464 8C632B70 */ lw $v1, %lo(D_800F2B70)($v1) # 0x2b70($v1) +/* 0B4064 800B3464 8C632B70 */ lw $v1, %lo(gGameModeFromNumPlayersAndRowSelection)($v1) # 0x2b70($v1) glabel L800B3468 /* 0B4068 800B3468 3C0A8019 */ lui $t2, %hi(D_8018EDF3) # $t2, 0x8019 /* 0B406C 800B346C 814AEDF3 */ lb $t2, %lo(D_8018EDF3)($t2) -/* 0B4070 800B3470 3C0F800F */ lui $t7, %hi(D_800E86AB) # 0x800f -/* 0B4074 800B3474 3C03800F */ lui $v1, %hi(D_800F2B70) # 0x800f +/* 0B4070 800B3470 3C0F800F */ lui $t7, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f +/* 0B4074 800B3474 3C03800F */ lui $v1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0B4078 800B3478 01EA7821 */ addu $t7, $t7, $t2 -/* 0B407C 800B347C 81EF86AB */ lb $t7, %lo(D_800E86AB)($t7) # -0x7955($t7) +/* 0B407C 800B347C 81EF86AB */ lb $t7, %lo(gGameModeRowSelectionForNumPlayers)($t7) # -0x7955($t7) /* 0B4080 800B3480 000A5880 */ sll $t3, $t2, 2 /* 0B4084 800B3484 016A5823 */ subu $t3, $t3, $t2 /* 0B4088 800B3488 000B5880 */ sll $t3, $t3, 2 @@ -737,20 +737,20 @@ glabel L800B3468 /* 0B4090 800B3490 016D6021 */ addu $t4, $t3, $t5 /* 0B4094 800B3494 006C1821 */ addu $v1, $v1, $t4 /* 0B4098 800B3498 1000000D */ b .L800B34D0 -/* 0B409C 800B349C 8C632B70 */ lw $v1, %lo(D_800F2B70)($v1) # 0x2b70($v1) +/* 0B409C 800B349C 8C632B70 */ lw $v1, %lo(gGameModeFromNumPlayersAndRowSelection)($v1) # 0x2b70($v1) .L800B34A0: /* 0B40A0 800B34A0 8318EDF3 */ lb $t8, %lo(D_8018EDF3)($t8) # -0x120d($t8) -/* 0B40A4 800B34A4 3C19800F */ lui $t9, %hi(D_800E86AB) # 0x800f -/* 0B40A8 800B34A8 3C03800F */ lui $v1, %hi(D_800F2B70) # 0x800f +/* 0B40A4 800B34A4 3C19800F */ lui $t9, %hi(gGameModeRowSelectionForNumPlayers) # 0x800f +/* 0B40A8 800B34A8 3C03800F */ lui $v1, %hi(gGameModeFromNumPlayersAndRowSelection) # 0x800f /* 0B40AC 800B34AC 0338C821 */ addu $t9, $t9, $t8 -/* 0B40B0 800B34B0 833986AB */ lb $t9, %lo(D_800E86AB)($t9) # -0x7955($t9) +/* 0B40B0 800B34B0 833986AB */ lb $t9, %lo(gGameModeRowSelectionForNumPlayers)($t9) # -0x7955($t9) /* 0B40B4 800B34B4 00187080 */ sll $t6, $t8, 2 /* 0B40B8 800B34B8 01D87023 */ subu $t6, $t6, $t8 /* 0B40BC 800B34BC 000E7080 */ sll $t6, $t6, 2 /* 0B40C0 800B34C0 00194880 */ sll $t1, $t9, 2 /* 0B40C4 800B34C4 01C95021 */ addu $t2, $t6, $t1 /* 0B40C8 800B34C8 006A1821 */ addu $v1, $v1, $t2 -/* 0B40CC 800B34CC 8C632B70 */ lw $v1, %lo(D_800F2B70)($v1) # 0x2b70($v1) +/* 0B40CC 800B34CC 8C632B70 */ lw $v1, %lo(gGameModeFromNumPlayersAndRowSelection)($v1) # 0x2b70($v1) .L800B34D0: /* 0B40D0 800B34D0 3C01800E */ lui $at, %hi(gModeSelection) # $at, 0x800e /* 0B40D4 800B34D4 AC23C53C */ sw $v1, %lo(gModeSelection)($at) diff --git a/asm/non_matchings/code_800AF9B0/func_800B4728.s b/asm/non_matchings/code_800AF9B0/func_800B4728.s deleted file mode 100644 index cde9b9ca8..000000000 --- a/asm/non_matchings/code_800AF9B0/func_800B4728.s +++ /dev/null @@ -1,68 +0,0 @@ -glabel func_800B4728 -/* 0B5328 800B4728 00807025 */ move $t6, $a0 -/* 0B532C 800B472C 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0B5330 800B4730 3C0A8019 */ lui $t2, %hi(D_8018EB90) # $t2, 0x8019 -/* 0B5334 800B4734 254AEB90 */ addiu $t2, %lo(D_8018EB90) # addiu $t2, $t2, -0x1470 -/* 0B5338 800B4738 AFBF0014 */ sw $ra, 0x14($sp) -/* 0B533C 800B473C AFA40028 */ sw $a0, 0x28($sp) -/* 0B5340 800B4740 00003025 */ move $a2, $zero -/* 0B5344 800B4744 05C10003 */ bgez $t6, .L800B4754 -/* 0B5348 800B4748 000E7883 */ sra $t7, $t6, 2 -/* 0B534C 800B474C 25C10003 */ addiu $at, $t6, 3 -/* 0B5350 800B4750 00017883 */ sra $t7, $at, 2 -.L800B4754: -/* 0B5354 800B4754 000FC080 */ sll $t8, $t7, 2 -/* 0B5358 800B4758 030FC023 */ subu $t8, $t8, $t7 -/* 0B535C 800B475C 0018C140 */ sll $t8, $t8, 5 -/* 0B5360 800B4760 05C10004 */ bgez $t6, .L800B4774 -/* 0B5364 800B4764 31D90003 */ andi $t9, $t6, 3 -/* 0B5368 800B4768 13200002 */ beqz $t9, .L800B4774 -/* 0B536C 800B476C 00000000 */ nop -/* 0B5370 800B4770 2739FFFC */ addiu $t9, $t9, -4 -.L800B4774: -/* 0B5374 800B4774 00194080 */ sll $t0, $t9, 2 -/* 0B5378 800B4778 01194023 */ subu $t0, $t0, $t9 -/* 0B537C 800B477C 000840C0 */ sll $t0, $t0, 3 -/* 0B5380 800B4780 03084821 */ addu $t1, $t8, $t0 -/* 0B5384 800B4784 012A3821 */ addu $a3, $t1, $t2 -/* 0B5388 800B4788 24050003 */ li $a1, 3 -/* 0B538C 800B478C 00065880 */ sll $t3, $a2, 2 -.L800B4790: -/* 0B5390 800B4790 01665823 */ subu $t3, $t3, $a2 -/* 0B5394 800B4794 3C03800F */ lui $v1, %hi(D_800F2E60) # $v1, 0x800f -/* 0B5398 800B4798 24632E60 */ addiu $v1, %lo(D_800F2E60) # addiu $v1, $v1, 0x2e60 -/* 0B539C 800B479C 00EB2021 */ addu $a0, $a3, $t3 -/* 0B53A0 800B47A0 00001025 */ move $v0, $zero -.L800B47A4: -/* 0B53A4 800B47A4 906C0000 */ lbu $t4, ($v1) -/* 0B53A8 800B47A8 00826821 */ addu $t5, $a0, $v0 -/* 0B53AC 800B47AC 24420001 */ addiu $v0, $v0, 1 -/* 0B53B0 800B47B0 24630001 */ addiu $v1, $v1, 1 -/* 0B53B4 800B47B4 1445FFFB */ bne $v0, $a1, .L800B47A4 -/* 0B53B8 800B47B8 A1AC0000 */ sb $t4, ($t5) -/* 0B53BC 800B47BC 24C60001 */ addiu $a2, $a2, 1 -/* 0B53C0 800B47C0 28C10005 */ slti $at, $a2, 5 -/* 0B53C4 800B47C4 5420FFF2 */ bnel $at, $zero, .L800B4790 -/* 0B53C8 800B47C8 00065880 */ sll $t3, $a2, 2 -/* 0B53CC 800B47CC 3C02800F */ lui $v0, %hi(D_800F2E60) # $v0, 0x800f -/* 0B53D0 800B47D0 24422E60 */ addiu $v0, %lo(D_800F2E60) # addiu $v0, $v0, 0x2e60 -/* 0B53D4 800B47D4 00003025 */ move $a2, $zero -.L800B47D8: -/* 0B53D8 800B47D8 904F0000 */ lbu $t7, ($v0) -/* 0B53DC 800B47DC 00E67021 */ addu $t6, $a3, $a2 -/* 0B53E0 800B47E0 24C60001 */ addiu $a2, $a2, 1 -/* 0B53E4 800B47E4 24420001 */ addiu $v0, $v0, 1 -/* 0B53E8 800B47E8 14C5FFFB */ bne $a2, $a1, .L800B47D8 -/* 0B53EC 800B47EC A1CF000F */ sb $t7, 0xf($t6) -/* 0B53F0 800B47F0 A0E00012 */ sb $zero, 0x12($a3) -/* 0B53F4 800B47F4 AFA70018 */ sw $a3, 0x18($sp) -/* 0B53F8 800B47F8 0C02D21D */ jal func_800B4874 -/* 0B53FC 800B47FC 8FA40028 */ lw $a0, 0x28($sp) -/* 0B5400 800B4800 8FA70018 */ lw $a3, 0x18($sp) -/* 0B5404 800B4804 A0E20017 */ sb $v0, 0x17($a3) -/* 0B5408 800B4808 0C02D178 */ jal func_800B45E0 -/* 0B540C 800B480C 8FA40028 */ lw $a0, 0x28($sp) -/* 0B5410 800B4810 8FBF0014 */ lw $ra, 0x14($sp) -/* 0B5414 800B4814 27BD0028 */ addiu $sp, $sp, 0x28 -/* 0B5418 800B4818 03E00008 */ jr $ra -/* 0B541C 800B481C 00000000 */ nop diff --git a/asm/non_matchings/code_800AF9B0/func_800B492C.s b/asm/non_matchings/code_800AF9B0/func_800B492C.s index 114d3aaa7..7e00a851e 100644 --- a/asm/non_matchings/code_800AF9B0/func_800B492C.s +++ b/asm/non_matchings/code_800AF9B0/func_800B492C.s @@ -1,4 +1,4 @@ -glabel func_800B492C +glabel compute_save_data_checksum_1 /* 0B552C 800B492C 3C0E8019 */ lui $t6, %hi(D_8018ED10) # $t6, 0x8019 /* 0B5530 800B4930 24020001 */ li $v0, 1 /* 0B5534 800B4934 25CEED10 */ addiu $t6, %lo(D_8018ED10) # addiu $t6, $t6, -0x12f0 diff --git a/asm/non_matchings/code_800AF9B0/func_800B49E4.s b/asm/non_matchings/code_800AF9B0/func_800B49E4.s deleted file mode 100644 index 1c1c60bf1..000000000 --- a/asm/non_matchings/code_800AF9B0/func_800B49E4.s +++ /dev/null @@ -1,13 +0,0 @@ -glabel func_800B49E4 -/* 0B55E4 800B49E4 3C038019 */ lui $v1, %hi(D_8018ED16) # $v1, 0x8019 -/* 0B55E8 800B49E8 9063ED16 */ lbu $v1, %lo(D_8018ED16)($v1) -/* 0B55EC 800B49EC 2463005A */ addiu $v1, $v1, 0x5a -/* 0B55F0 800B49F0 04610004 */ bgez $v1, .L800B4A04 -/* 0B55F4 800B49F4 306200FF */ andi $v0, $v1, 0xff -/* 0B55F8 800B49F8 10400002 */ beqz $v0, .L800B4A04 -/* 0B55FC 800B49FC 00000000 */ nop -/* 0B5600 800B4A00 2442FF00 */ addiu $v0, $v0, -0x100 -.L800B4A04: -/* 0B5604 800B4A04 304E00FF */ andi $t6, $v0, 0xff -/* 0B5608 800B4A08 03E00008 */ jr $ra -/* 0B560C 800B4A0C 01C01025 */ move $v0, $t6 diff --git a/asm/non_matchings/code_800AF9B0/func_800B4CB4.s b/asm/non_matchings/code_800AF9B0/func_800B4CB4.s deleted file mode 100644 index 79872b9f3..000000000 --- a/asm/non_matchings/code_800AF9B0/func_800B4CB4.s +++ /dev/null @@ -1,75 +0,0 @@ -glabel func_800B4CB4 -/* 0B58B4 800B4CB4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0B58B8 800B4CB8 AFBF0014 */ sw $ra, 0x14($sp) -/* 0B58BC 800B4CBC 0C02D24B */ jal func_800B492C -/* 0B58C0 800B4CC0 00000000 */ nop -/* 0B58C4 800B4CC4 3C0E8019 */ lui $t6, %hi(D_8018ED16) # $t6, 0x8019 -/* 0B58C8 800B4CC8 91CEED16 */ lbu $t6, %lo(D_8018ED16)($t6) -/* 0B58CC 800B4CCC 15C20007 */ bne $t6, $v0, .L800B4CEC -/* 0B58D0 800B4CD0 00000000 */ nop -/* 0B58D4 800B4CD4 0C02D279 */ jal func_800B49E4 -/* 0B58D8 800B4CD8 00000000 */ nop -/* 0B58DC 800B4CDC 3C0F8019 */ lui $t7, %hi(D_8018ED17) # $t7, 0x8019 -/* 0B58E0 800B4CE0 91EFED17 */ lbu $t7, %lo(D_8018ED17)($t7) -/* 0B58E4 800B4CE4 11E2002F */ beq $t7, $v0, .L800B4DA4 -/* 0B58E8 800B4CE8 00000000 */ nop -.L800B4CEC: -/* 0B58EC 800B4CEC 0C02D208 */ jal func_800B4820 -/* 0B58F0 800B4CF0 00000000 */ nop -/* 0B58F4 800B4CF4 0C02D6B6 */ jal func_800B5AD8 -/* 0B58F8 800B4CF8 00000000 */ nop -/* 0B58FC 800B4CFC 14400025 */ bnez $v0, .L800B4D94 -/* 0B5900 800B4D00 3C188019 */ lui $t8, %hi(D_8018ED88) # $t8, 0x8019 -/* 0B5904 800B4D04 9318ED88 */ lbu $t8, %lo(D_8018ED88)($t8) -/* 0B5908 800B4D08 3C018019 */ lui $at, %hi(D_8018ED10) # $at, 0x8019 -/* 0B590C 800B4D0C 3C198019 */ lui $t9, %hi(D_8018ED89) # $t9, 0x8019 -/* 0B5910 800B4D10 A038ED10 */ sb $t8, %lo(D_8018ED10)($at) -/* 0B5914 800B4D14 9339ED89 */ lbu $t9, %lo(D_8018ED89)($t9) -/* 0B5918 800B4D18 3C018019 */ lui $at, %hi(D_8018ED11) # $at, 0x8019 -/* 0B591C 800B4D1C 3C088019 */ lui $t0, %hi(D_8018ED8A) # $t0, 0x8019 -/* 0B5920 800B4D20 A039ED11 */ sb $t9, %lo(D_8018ED11)($at) -/* 0B5924 800B4D24 9108ED8A */ lbu $t0, %lo(D_8018ED8A)($t0) -/* 0B5928 800B4D28 3C018019 */ lui $at, %hi(D_8018ED12) # $at, 0x8019 -/* 0B592C 800B4D2C 3C098019 */ lui $t1, %hi(D_8018ED8B) # $t1, 0x8019 -/* 0B5930 800B4D30 A028ED12 */ sb $t0, %lo(D_8018ED12)($at) -/* 0B5934 800B4D34 9129ED8B */ lbu $t1, %lo(D_8018ED8B)($t1) -/* 0B5938 800B4D38 3C018019 */ lui $at, %hi(D_8018ED13) # $at, 0x8019 -/* 0B593C 800B4D3C 3C0A8019 */ lui $t2, %hi(gSaveDataSoundModeBackup) # $t2, 0x8019 -/* 0B5940 800B4D40 A029ED13 */ sb $t1, %lo(D_8018ED13)($at) -/* 0B5944 800B4D44 914AED8C */ lbu $t2, %lo(gSaveDataSoundModeBackup)($t2) -/* 0B5948 800B4D48 3C018019 */ lui $at, %hi(gSaveDataSoundMode) # $at, 0x8019 -/* 0B594C 800B4D4C 0C02D67D */ jal func_800B59F4 -/* 0B5950 800B4D50 A02AED14 */ sb $t2, %lo(gSaveDataSoundMode)($at) -/* 0B5954 800B4D54 3C018019 */ lui $at, %hi(D_8018ED16) # $at, 0x8019 -/* 0B5958 800B4D58 0C02D6AB */ jal func_800B5AAC -/* 0B595C 800B4D5C A022ED16 */ sb $v0, %lo(D_8018ED16)($at) -/* 0B5960 800B4D60 3C068019 */ lui $a2, %hi(D_8018ED10) # $a2, 0x8019 -/* 0B5964 800B4D64 3C0B8019 */ lui $t3, %hi(D_8018EB90) # $t3, 0x8019 -/* 0B5968 800B4D68 24C6ED10 */ addiu $a2, %lo(D_8018ED10) # addiu $a2, $a2, -0x12f0 -/* 0B596C 800B4D6C 256BEB90 */ addiu $t3, %lo(D_8018EB90) # addiu $t3, $t3, -0x1470 -/* 0B5970 800B4D70 00CB2823 */ subu $a1, $a2, $t3 -/* 0B5974 800B4D74 3C018019 */ lui $at, %hi(D_8018ED17) # $at, 0x8019 -/* 0B5978 800B4D78 000560C2 */ srl $t4, $a1, 3 -/* 0B597C 800B4D7C 3C048015 */ lui $a0, %hi(gSIEventMesgQueue) # $a0, 0x8015 -/* 0B5980 800B4D80 A022ED17 */ sb $v0, %lo(D_8018ED17)($at) -/* 0B5984 800B4D84 2484F0B8 */ addiu $a0, %lo(gSIEventMesgQueue) # addiu $a0, $a0, -0xf48 -/* 0B5988 800B4D88 318500FF */ andi $a1, $t4, 0xff -/* 0B598C 800B4D8C 0C034014 */ jal osEepromLongWrite -/* 0B5990 800B4D90 24070008 */ li $a3, 8 -.L800B4D94: -/* 0B5994 800B4D94 0C02D652 */ jal func_800B5948 -/* 0B5998 800B4D98 00000000 */ nop -/* 0B599C 800B4D9C 10000008 */ b .L800B4DC0 -/* 0B59A0 800B4DA0 8FBF0014 */ lw $ra, 0x14($sp) -.L800B4DA4: -/* 0B59A4 800B4DA4 0C02D6B6 */ jal func_800B5AD8 -/* 0B59A8 800B4DA8 00000000 */ nop -/* 0B59AC 800B4DAC 50400004 */ beql $v0, $zero, .L800B4DC0 -/* 0B59B0 800B4DB0 8FBF0014 */ lw $ra, 0x14($sp) -/* 0B59B4 800B4DB4 0C02D652 */ jal func_800B5948 -/* 0B59B8 800B4DB8 00000000 */ nop -/* 0B59BC 800B4DBC 8FBF0014 */ lw $ra, 0x14($sp) -.L800B4DC0: -/* 0B59C0 800B4DC0 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0B59C4 800B4DC4 03E00008 */ jr $ra -/* 0B59C8 800B4DC8 00000000 */ nop diff --git a/asm/non_matchings/code_800AF9B0/func_800B4DCC.s b/asm/non_matchings/code_800AF9B0/func_800B4DCC.s deleted file mode 100644 index a5ec14f61..000000000 --- a/asm/non_matchings/code_800AF9B0/func_800B4DCC.s +++ /dev/null @@ -1,11 +0,0 @@ -glabel func_800B4DCC -/* 0B59CC 800B4DCC 0005C202 */ srl $t8, $a1, 8 -/* 0B59D0 800B4DD0 00184202 */ srl $t0, $t8, 8 -/* 0B59D4 800B4DD4 30CA0007 */ andi $t2, $a2, 7 -/* 0B59D8 800B4DD8 000A5900 */ sll $t3, $t2, 4 -/* 0B59DC 800B4DDC 3109000F */ andi $t1, $t0, 0xf -/* 0B59E0 800B4DE0 012B6021 */ addu $t4, $t1, $t3 -/* 0B59E4 800B4DE4 A0850000 */ sb $a1, ($a0) -/* 0B59E8 800B4DE8 A0980001 */ sb $t8, 1($a0) -/* 0B59EC 800B4DEC 03E00008 */ jr $ra -/* 0B59F0 800B4DF0 A08C0002 */ sb $t4, 2($a0) diff --git a/asm/non_matchings/code_800AF9B0/func_800B5020.s b/asm/non_matchings/code_800AF9B0/func_800B5020.s index abeb2b230..552e3aebe 100644 --- a/asm/non_matchings/code_800AF9B0/func_800B5020.s +++ b/asm/non_matchings/code_800AF9B0/func_800B5020.s @@ -118,7 +118,7 @@ glabel func_800B5020 .L800B51D0: /* 0B5DD0 800B51D0 00E02025 */ move $a0, $a3 /* 0B5DD4 800B51D4 02A02825 */ move $a1, $s5 -/* 0B5DD8 800B51D8 0C02D373 */ jal func_800B4DCC +/* 0B5DD8 800B51D8 0C02D373 */ jal populate_time_trial_record /* 0B5DDC 800B51DC 8FA60044 */ lw $a2, 0x44($sp) /* 0B5DE0 800B51E0 240B0001 */ li $t3, 1 /* 0B5DE4 800B51E4 A24B0012 */ sb $t3, 0x12($s2) diff --git a/asm/non_matchings/code_800AF9B0/func_800B5218.s b/asm/non_matchings/code_800AF9B0/func_800B5218.s index 04fd53d58..200985638 100644 --- a/asm/non_matchings/code_800AF9B0/func_800B5218.s +++ b/asm/non_matchings/code_800AF9B0/func_800B5218.s @@ -76,7 +76,7 @@ glabel func_800B5218 /* 0B5F2C 800B532C 2444000F */ addiu $a0, $v0, 0xf /* 0B5F30 800B5330 AFA20020 */ sw $v0, 0x20($sp) /* 0B5F34 800B5334 8FA60028 */ lw $a2, 0x28($sp) -/* 0B5F38 800B5338 0C02D373 */ jal func_800B4DCC +/* 0B5F38 800B5338 0C02D373 */ jal populate_time_trial_record /* 0B5F3C 800B533C AFA70024 */ sw $a3, 0x24($sp) /* 0B5F40 800B5340 8FA20020 */ lw $v0, 0x20($sp) /* 0B5F44 800B5344 240D0001 */ li $t5, 1 diff --git a/asm/non_matchings/code_800AF9B0/func_800B536C.s b/asm/non_matchings/code_800AF9B0/func_800B536C.s deleted file mode 100644 index 08b755ac2..000000000 --- a/asm/non_matchings/code_800AF9B0/func_800B536C.s +++ /dev/null @@ -1,40 +0,0 @@ -glabel func_800B536C -/* 0B5F6C 800B536C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0B5F70 800B5370 AFBF0014 */ sw $ra, 0x14($sp) -/* 0B5F74 800B5374 0480001F */ bltz $a0, .L800B53F4 -/* 0B5F78 800B5378 00803025 */ move $a2, $a0 -/* 0B5F7C 800B537C 3C0E800E */ lui $t6, %hi(gCCSelection) # $t6, 0x800e -/* 0B5F80 800B5380 8DCEC548 */ lw $t6, %lo(gCCSelection)($t6) -/* 0B5F84 800B5384 3C188019 */ lui $t8, %hi(D_8018EB90) # $t8, 0x8019 -/* 0B5F88 800B5388 2718EB90 */ addiu $t8, %lo(D_8018EB90) # addiu $t8, $t8, -0x1470 -/* 0B5F8C 800B538C 25CF0180 */ addiu $t7, $t6, 0x180 -/* 0B5F90 800B5390 01F81021 */ addu $v0, $t7, $t8 -/* 0B5F94 800B5394 90450000 */ lbu $a1, ($v0) -/* 0B5F98 800B5398 3C048019 */ lui $a0, %hi(gCupSelection) # $a0, 0x8019 -/* 0B5F9C 800B539C 8084EE09 */ lb $a0, %lo(gCupSelection)($a0) -/* 0B5FA0 800B53A0 AFA60020 */ sw $a2, 0x20($sp) -/* 0B5FA4 800B53A4 0C02D53B */ jal func_800B54EC -/* 0B5FA8 800B53A8 AFA2001C */ sw $v0, 0x1c($sp) -/* 0B5FAC 800B53AC 8FA60020 */ lw $a2, 0x20($sp) -/* 0B5FB0 800B53B0 24190003 */ li $t9, 3 -/* 0B5FB4 800B53B4 28C10003 */ slti $at, $a2, 3 -/* 0B5FB8 800B53B8 1020000E */ beqz $at, .L800B53F4 -/* 0B5FBC 800B53BC 03261823 */ subu $v1, $t9, $a2 -/* 0B5FC0 800B53C0 0043082A */ slt $at, $v0, $v1 -/* 0B5FC4 800B53C4 1020000B */ beqz $at, .L800B53F4 -/* 0B5FC8 800B53C8 3C048019 */ lui $a0, %hi(gCupSelection) # $a0, 0x8019 -/* 0B5FCC 800B53CC 8FA8001C */ lw $t0, 0x1c($sp) -/* 0B5FD0 800B53D0 8084EE09 */ lb $a0, %lo(gCupSelection)($a0) -/* 0B5FD4 800B53D4 00603025 */ move $a2, $v1 -/* 0B5FD8 800B53D8 0C02D542 */ jal func_800B5508 -/* 0B5FDC 800B53DC 91050000 */ lbu $a1, ($t0) -/* 0B5FE0 800B53E0 8FA9001C */ lw $t1, 0x1c($sp) -/* 0B5FE4 800B53E4 0C02D19C */ jal func_800B4670 -/* 0B5FE8 800B53E8 A1220000 */ sb $v0, ($t1) -/* 0B5FEC 800B53EC 0C02D652 */ jal func_800B5948 -/* 0B5FF0 800B53F0 00000000 */ nop -.L800B53F4: -/* 0B5FF4 800B53F4 8FBF0014 */ lw $ra, 0x14($sp) -/* 0B5FF8 800B53F8 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0B5FFC 800B53FC 03E00008 */ jr $ra -/* 0B6000 800B5400 00000000 */ nop diff --git a/asm/non_matchings/code_800AF9B0/func_800B5404.s b/asm/non_matchings/code_800AF9B0/func_800B5404.s deleted file mode 100644 index 282caff7d..000000000 --- a/asm/non_matchings/code_800AF9B0/func_800B5404.s +++ /dev/null @@ -1,51 +0,0 @@ -glabel func_800B5404 -/* 0B6004 800B5404 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 0B6008 800B5408 AFBF0014 */ sw $ra, 0x14($sp) -/* 0B600C 800B540C AFA5003C */ sw $a1, 0x3c($sp) -/* 0B6010 800B5410 04800027 */ bltz $a0, .L800B54B0 -/* 0B6014 800B5414 00803025 */ move $a2, $a0 -/* 0B6018 800B5418 00A07025 */ move $t6, $a1 -/* 0B601C 800B541C 3C188019 */ lui $t8, %hi(D_8018EB90) # $t8, 0x8019 -/* 0B6020 800B5420 2718EB90 */ addiu $t8, %lo(D_8018EB90) # addiu $t8, $t8, -0x1470 -/* 0B6024 800B5424 05C10003 */ bgez $t6, .L800B5434 -/* 0B6028 800B5428 000E2083 */ sra $a0, $t6, 2 -/* 0B602C 800B542C 25C10003 */ addiu $at, $t6, 3 -/* 0B6030 800B5430 00012083 */ sra $a0, $at, 2 -.L800B5434: -/* 0B6034 800B5434 05C10004 */ bgez $t6, .L800B5448 -/* 0B6038 800B5438 31CF0003 */ andi $t7, $t6, 3 -/* 0B603C 800B543C 11E00002 */ beqz $t7, .L800B5448 -/* 0B6040 800B5440 00000000 */ nop -/* 0B6044 800B5444 25EFFFFC */ addiu $t7, $t7, -4 -.L800B5448: -/* 0B6048 800B5448 01F83821 */ addu $a3, $t7, $t8 -/* 0B604C 800B544C 90E50180 */ lbu $a1, 0x180($a3) -/* 0B6050 800B5450 AFA7001C */ sw $a3, 0x1c($sp) -/* 0B6054 800B5454 AFA40020 */ sw $a0, 0x20($sp) -/* 0B6058 800B5458 0C02D53B */ jal func_800B54EC -/* 0B605C 800B545C AFA60038 */ sw $a2, 0x38($sp) -/* 0B6060 800B5460 8FA60038 */ lw $a2, 0x38($sp) -/* 0B6064 800B5464 8FA40020 */ lw $a0, 0x20($sp) -/* 0B6068 800B5468 8FA7001C */ lw $a3, 0x1c($sp) -/* 0B606C 800B546C 28C10003 */ slti $at, $a2, 3 -/* 0B6070 800B5470 1020000F */ beqz $at, .L800B54B0 -/* 0B6074 800B5474 24190003 */ li $t9, 3 -/* 0B6078 800B5478 03261823 */ subu $v1, $t9, $a2 -/* 0B607C 800B547C 0043082A */ slt $at, $v0, $v1 -/* 0B6080 800B5480 1020000B */ beqz $at, .L800B54B0 -/* 0B6084 800B5484 AFA30030 */ sw $v1, 0x30($sp) -/* 0B6088 800B5488 24E30180 */ addiu $v1, $a3, 0x180 -/* 0B608C 800B548C 90650000 */ lbu $a1, ($v1) -/* 0B6090 800B5490 AFA30018 */ sw $v1, 0x18($sp) -/* 0B6094 800B5494 0C02D542 */ jal func_800B5508 -/* 0B6098 800B5498 8FA60030 */ lw $a2, 0x30($sp) -/* 0B609C 800B549C 8FA30018 */ lw $v1, 0x18($sp) -/* 0B60A0 800B54A0 0C02D19C */ jal func_800B4670 -/* 0B60A4 800B54A4 A0620000 */ sb $v0, ($v1) -/* 0B60A8 800B54A8 0C02D652 */ jal func_800B5948 -/* 0B60AC 800B54AC 00000000 */ nop -.L800B54B0: -/* 0B60B0 800B54B0 8FBF0014 */ lw $ra, 0x14($sp) -/* 0B60B4 800B54B4 27BD0038 */ addiu $sp, $sp, 0x38 -/* 0B60B8 800B54B8 03E00008 */ jr $ra -/* 0B60BC 800B54BC 00000000 */ nop diff --git a/asm/non_matchings/code_800AF9B0/func_800B5888.s b/asm/non_matchings/code_800AF9B0/func_800B5888.s deleted file mode 100644 index 8c3fbbe7a..000000000 --- a/asm/non_matchings/code_800AF9B0/func_800B5888.s +++ /dev/null @@ -1,17 +0,0 @@ -glabel func_800B5888 -/* 0B6488 800B5888 000470C0 */ sll $t6, $a0, 3 -/* 0B648C 800B588C 01C47023 */ subu $t6, $t6, $a0 -/* 0B6490 800B5890 000E70C0 */ sll $t6, $t6, 3 -/* 0B6494 800B5894 3C038019 */ lui $v1, %hi(D_8018ED4E) # 0x8019 -/* 0B6498 800B5898 006E1821 */ addu $v1, $v1, $t6 -/* 0B649C 800B589C 9063ED4E */ lbu $v1, %lo(D_8018ED4E)($v1) # -0x12b2($v1) -/* 0B64A0 800B58A0 2463005A */ addiu $v1, $v1, 0x5a -/* 0B64A4 800B58A4 04610004 */ bgez $v1, .L800B58B8 -/* 0B64A8 800B58A8 306200FF */ andi $v0, $v1, 0xff -/* 0B64AC 800B58AC 10400002 */ beqz $v0, .L800B58B8 -/* 0B64B0 800B58B0 00000000 */ nop -/* 0B64B4 800B58B4 2442FF00 */ addiu $v0, $v0, -0x100 -.L800B58B8: -/* 0B64B8 800B58B8 304F00FF */ andi $t7, $v0, 0xff -/* 0B64BC 800B58BC 03E00008 */ jr $ra -/* 0B64C0 800B58C0 01E01025 */ move $v0, $t7 diff --git a/asm/non_matchings/code_800AF9B0/func_800B58C4.s b/asm/non_matchings/code_800AF9B0/func_800B58C4.s deleted file mode 100644 index aa220d468..000000000 --- a/asm/non_matchings/code_800AF9B0/func_800B58C4.s +++ /dev/null @@ -1,37 +0,0 @@ -glabel func_800B58C4 -/* 0B64C4 800B58C4 00802825 */ move $a1, $a0 -/* 0B64C8 800B58C8 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0B64CC 800B58CC AFBF0014 */ sw $ra, 0x14($sp) -/* 0B64D0 800B58D0 04A10003 */ bgez $a1, .L800B58E0 -/* 0B64D4 800B58D4 000520C3 */ sra $a0, $a1, 3 -/* 0B64D8 800B58D8 24A10007 */ addiu $at, $a1, 7 -/* 0B64DC 800B58DC 000120C3 */ sra $a0, $at, 3 -.L800B58E0: -/* 0B64E0 800B58E0 0C02D5E3 */ jal func_800B578C -/* 0B64E4 800B58E4 AFA4001C */ sw $a0, 0x1c($sp) -/* 0B64E8 800B58E8 8FA4001C */ lw $a0, 0x1c($sp) -/* 0B64EC 800B58EC 3C188019 */ lui $t8, %hi(D_8018EB90) # $t8, 0x8019 -/* 0B64F0 800B58F0 2718EB90 */ addiu $t8, %lo(D_8018EB90) # addiu $t8, $t8, -0x1470 -/* 0B64F4 800B58F4 000470C0 */ sll $t6, $a0, 3 -/* 0B64F8 800B58F8 01C47023 */ subu $t6, $t6, $a0 -/* 0B64FC 800B58FC 000E70C0 */ sll $t6, $t6, 3 -/* 0B6500 800B5900 25CF0188 */ addiu $t7, $t6, 0x188 -/* 0B6504 800B5904 01F81821 */ addu $v1, $t7, $t8 -/* 0B6508 800B5908 90790036 */ lbu $t9, 0x36($v1) -/* 0B650C 800B590C 17220007 */ bne $t9, $v0, .L800B592C -/* 0B6510 800B5910 00000000 */ nop -/* 0B6514 800B5914 0C02D622 */ jal func_800B5888 -/* 0B6518 800B5918 AFA30018 */ sw $v1, 0x18($sp) -/* 0B651C 800B591C 8FA30018 */ lw $v1, 0x18($sp) -/* 0B6520 800B5920 90680037 */ lbu $t0, 0x37($v1) -/* 0B6524 800B5924 51020004 */ beql $t0, $v0, .L800B5938 -/* 0B6528 800B5928 00001025 */ move $v0, $zero -.L800B592C: -/* 0B652C 800B592C 10000002 */ b .L800B5938 -/* 0B6530 800B5930 24020001 */ li $v0, 1 -/* 0B6534 800B5934 00001025 */ move $v0, $zero -.L800B5938: -/* 0B6538 800B5938 8FBF0014 */ lw $ra, 0x14($sp) -/* 0B653C 800B593C 27BD0030 */ addiu $sp, $sp, 0x30 -/* 0B6540 800B5940 03E00008 */ jr $ra -/* 0B6544 800B5944 00000000 */ nop diff --git a/asm/non_matchings/code_800AF9B0/func_800B5948.s b/asm/non_matchings/code_800AF9B0/func_800B5948.s index 43d58bc97..b0cee2c55 100644 --- a/asm/non_matchings/code_800AF9B0/func_800B5948.s +++ b/asm/non_matchings/code_800AF9B0/func_800B5948.s @@ -1,4 +1,4 @@ -glabel func_800B5948 +glabel update_save_data_backup /* 0B6548 800B5948 3C0E8019 */ lui $t6, %hi(D_8018ED10) # $t6, 0x8019 /* 0B654C 800B594C 91CEED10 */ lbu $t6, %lo(D_8018ED10)($t6) /* 0B6550 800B5950 3C018019 */ lui $at, %hi(D_8018ED88) # $at, 0x8019 @@ -20,10 +20,10 @@ glabel func_800B5948 /* 0B6590 800B5990 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 0B6594 800B5994 AFBF0014 */ sw $ra, 0x14($sp) /* 0B6598 800B5998 3C018019 */ lui $at, %hi(gSaveDataSoundModeBackup) # $at, 0x8019 -/* 0B659C 800B599C 0C02D67D */ jal func_800B59F4 +/* 0B659C 800B599C 0C02D67D */ jal compute_save_data_checksum_backup_1 /* 0B65A0 800B59A0 A028ED8C */ sb $t0, %lo(gSaveDataSoundModeBackup)($at) /* 0B65A4 800B59A4 3C018019 */ lui $at, %hi(D_8018ED8E) # $at, 0x8019 -/* 0B65A8 800B59A8 0C02D6AB */ jal func_800B5AAC +/* 0B65A8 800B59A8 0C02D6AB */ jal compute_save_data_checksum_backup_2 /* 0B65AC 800B59AC A022ED8E */ sb $v0, %lo(D_8018ED8E)($at) /* 0B65B0 800B59B0 3C068019 */ lui $a2, %hi(D_8018ED88) # $a2, 0x8019 /* 0B65B4 800B59B4 3C098019 */ lui $t1, %hi(D_8018EB90) # $t1, 0x8019 diff --git a/asm/non_matchings/code_800AF9B0/func_800B59F4.s b/asm/non_matchings/code_800AF9B0/func_800B59F4.s index cdff57323..8afad9876 100644 --- a/asm/non_matchings/code_800AF9B0/func_800B59F4.s +++ b/asm/non_matchings/code_800AF9B0/func_800B59F4.s @@ -1,4 +1,4 @@ -glabel func_800B59F4 +glabel compute_save_data_checksum_backup_1 /* 0B65F4 800B59F4 3C0E8019 */ lui $t6, %hi(D_8018ED88) # $t6, 0x8019 /* 0B65F8 800B59F8 24020001 */ li $v0, 1 /* 0B65FC 800B59FC 25CEED88 */ addiu $t6, %lo(D_8018ED88) # addiu $t6, $t6, -0x1278 diff --git a/asm/non_matchings/code_800AF9B0/func_800B5AAC.s b/asm/non_matchings/code_800AF9B0/func_800B5AAC.s deleted file mode 100644 index 5977c0e31..000000000 --- a/asm/non_matchings/code_800AF9B0/func_800B5AAC.s +++ /dev/null @@ -1,13 +0,0 @@ -glabel func_800B5AAC -/* 0B66AC 800B5AAC 3C038019 */ lui $v1, %hi(D_8018ED8E) # $v1, 0x8019 -/* 0B66B0 800B5AB0 9063ED8E */ lbu $v1, %lo(D_8018ED8E)($v1) -/* 0B66B4 800B5AB4 2463005A */ addiu $v1, $v1, 0x5a -/* 0B66B8 800B5AB8 04610004 */ bgez $v1, .L800B5ACC -/* 0B66BC 800B5ABC 306200FF */ andi $v0, $v1, 0xff -/* 0B66C0 800B5AC0 10400002 */ beqz $v0, .L800B5ACC -/* 0B66C4 800B5AC4 00000000 */ nop -/* 0B66C8 800B5AC8 2442FF00 */ addiu $v0, $v0, -0x100 -.L800B5ACC: -/* 0B66CC 800B5ACC 304E00FF */ andi $t6, $v0, 0xff -/* 0B66D0 800B5AD0 03E00008 */ jr $ra -/* 0B66D4 800B5AD4 01C01025 */ move $v0, $t6 diff --git a/asm/non_matchings/code_800AF9B0/func_800B5AD8.s b/asm/non_matchings/code_800AF9B0/func_800B5AD8.s deleted file mode 100644 index f5a662a28..000000000 --- a/asm/non_matchings/code_800AF9B0/func_800B5AD8.s +++ /dev/null @@ -1,24 +0,0 @@ -glabel func_800B5AD8 -/* 0B66D8 800B5AD8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0B66DC 800B5ADC AFBF0014 */ sw $ra, 0x14($sp) -/* 0B66E0 800B5AE0 0C02D67D */ jal func_800B59F4 -/* 0B66E4 800B5AE4 00000000 */ nop -/* 0B66E8 800B5AE8 3C0E8019 */ lui $t6, %hi(D_8018ED8E) # $t6, 0x8019 -/* 0B66EC 800B5AEC 91CEED8E */ lbu $t6, %lo(D_8018ED8E)($t6) -/* 0B66F0 800B5AF0 15C20007 */ bne $t6, $v0, .L800B5B10 -/* 0B66F4 800B5AF4 00000000 */ nop -/* 0B66F8 800B5AF8 0C02D6AB */ jal func_800B5AAC -/* 0B66FC 800B5AFC 00000000 */ nop -/* 0B6700 800B5B00 3C0F8019 */ lui $t7, %hi(D_8018ED8F) # $t7, 0x8019 -/* 0B6704 800B5B04 91EFED8F */ lbu $t7, %lo(D_8018ED8F)($t7) -/* 0B6708 800B5B08 51E20004 */ beql $t7, $v0, .L800B5B1C -/* 0B670C 800B5B0C 00001025 */ move $v0, $zero -.L800B5B10: -/* 0B6710 800B5B10 10000002 */ b .L800B5B1C -/* 0B6714 800B5B14 24020001 */ li $v0, 1 -/* 0B6718 800B5B18 00001025 */ move $v0, $zero -.L800B5B1C: -/* 0B671C 800B5B1C 8FBF0014 */ lw $ra, 0x14($sp) -/* 0B6720 800B5B20 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0B6724 800B5B24 03E00008 */ jr $ra -/* 0B6728 800B5B28 00000000 */ nop diff --git a/asm/non_matchings/code_800AF9B0/func_800B5B94.s b/asm/non_matchings/code_800AF9B0/func_800B5B94.s index 118ce9457..36cf24e95 100644 --- a/asm/non_matchings/code_800AF9B0/func_800B5B94.s +++ b/asm/non_matchings/code_800AF9B0/func_800B5B94.s @@ -42,7 +42,7 @@ glabel func_800B5B94 .L800B5C28: /* 0B6828 800B5C28 14400048 */ bnez $v0, .L800B5D4C /* 0B682C 800B5C2C 00000000 */ nop -/* 0B6830 800B5C30 0C02D6CB */ jal func_800B5B2C +/* 0B6830 800B5C30 0C02D6CB */ jal check_for_controller_pak /* 0B6834 800B5C34 00002025 */ move $a0, $zero /* 0B6838 800B5C38 14400003 */ bnez $v0, .L800B5C48 /* 0B683C 800B5C3C 3C048015 */ lui $a0, %hi(gSIEventMesgQueue) # $a0, 0x8015 diff --git a/asm/non_matchings/code_800AF9B0/func_800B5DA4.s b/asm/non_matchings/code_800AF9B0/func_800B5DA4.s index aab82ee75..9a175f5ba 100644 --- a/asm/non_matchings/code_800AF9B0/func_800B5DA4.s +++ b/asm/non_matchings/code_800AF9B0/func_800B5DA4.s @@ -40,7 +40,7 @@ glabel func_800B5DA4 .L800B5E30: /* 0B6A30 800B5E30 5440003C */ bnel $v0, $zero, .L800B5F24 /* 0B6A34 800B5E34 8FBF001C */ lw $ra, 0x1c($sp) -/* 0B6A38 800B5E38 0C02D6CB */ jal func_800B5B2C +/* 0B6A38 800B5E38 0C02D6CB */ jal check_for_controller_pak /* 0B6A3C 800B5E3C 24040001 */ li $a0, 1 /* 0B6A40 800B5E40 14400003 */ bnez $v0, .L800B5E50 /* 0B6A44 800B5E44 3C048015 */ lui $a0, %hi(gSIEventMesgQueue) # $a0, 0x8015 diff --git a/asm/non_matchings/code_800AF9B0/func_800B6014.s b/asm/non_matchings/code_800AF9B0/func_800B6014.s index 3e4629eca..11852d97e 100644 --- a/asm/non_matchings/code_800AF9B0/func_800B6014.s +++ b/asm/non_matchings/code_800AF9B0/func_800B6014.s @@ -8,7 +8,7 @@ glabel func_800B6014 /* 0B6C2C 800B602C 10000012 */ b .L800B6078 /* 0B6C30 800B6030 2402FFFC */ li $v0, -4 .L800B6034: -/* 0B6C34 800B6034 0C02D6CB */ jal func_800B5B2C +/* 0B6C34 800B6034 0C02D6CB */ jal check_for_controller_pak /* 0B6C38 800B6038 24040001 */ li $a0, 1 /* 0B6C3C 800B603C 1040000D */ beqz $v0, .L800B6074 /* 0B6C40 800B6040 3C048015 */ lui $a0, %hi(gSIEventMesgQueue) # $a0, 0x8015 diff --git a/asm/non_matchings/code_800AF9B0/func_800B6088.s b/asm/non_matchings/code_800AF9B0/func_800B6088.s deleted file mode 100644 index a9774fd79..000000000 --- a/asm/non_matchings/code_800AF9B0/func_800B6088.s +++ /dev/null @@ -1,25 +0,0 @@ -glabel func_800B6088 -/* 0B6C88 800B6088 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0B6C8C 800B608C AFBF001C */ sw $ra, 0x1c($sp) -/* 0B6C90 800B6090 0C02DA0A */ jal func_800B6828 -/* 0B6C94 800B6094 AFA40020 */ sw $a0, 0x20($sp) -/* 0B6C98 800B6098 8FA70020 */ lw $a3, 0x20($sp) -/* 0B6C9C 800B609C 3C0F8019 */ lui $t7, %hi(D_8018EE10) # $t7, 0x8019 -/* 0B6CA0 800B60A0 25EFEE10 */ addiu $t7, %lo(D_8018EE10) # addiu $t7, $t7, -0x11f0 -/* 0B6CA4 800B60A4 000771C0 */ sll $t6, $a3, 7 -/* 0B6CA8 800B60A8 01CF1821 */ addu $v1, $t6, $t7 -/* 0B6CAC 800B60AC A062007F */ sb $v0, 0x7f($v1) -/* 0B6CB0 800B60B0 3C048019 */ lui $a0, %hi(D_8018E868) # $a0, 0x8019 -/* 0B6CB4 800B60B4 3C058019 */ lui $a1, %hi(D_8018EB84) # $a1, 0x8019 -/* 0B6CB8 800B60B8 24180080 */ li $t8, 128 -/* 0B6CBC 800B60BC 01C03825 */ move $a3, $t6 -/* 0B6CC0 800B60C0 AFB80010 */ sw $t8, 0x10($sp) -/* 0B6CC4 800B60C4 8CA5EB84 */ lw $a1, %lo(D_8018EB84)($a1) -/* 0B6CC8 800B60C8 2484E868 */ addiu $a0, %lo(D_8018E868) # addiu $a0, $a0, -0x1798 -/* 0B6CCC 800B60CC AFA30014 */ sw $v1, 0x14($sp) -/* 0B6CD0 800B60D0 0C0340F3 */ jal osPfsReadWriteFile -/* 0B6CD4 800B60D4 24060001 */ li $a2, 1 -/* 0B6CD8 800B60D8 8FBF001C */ lw $ra, 0x1c($sp) -/* 0B6CDC 800B60DC 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0B6CE0 800B60E0 03E00008 */ jr $ra -/* 0B6CE4 800B60E4 00000000 */ nop diff --git a/asm/non_matchings/code_800AF9B0/func_800B6AF8.s b/asm/non_matchings/code_800AF9B0/func_800B6AF8.s index 754331781..4144810b9 100644 --- a/asm/non_matchings/code_800AF9B0/func_800B6AF8.s +++ b/asm/non_matchings/code_800AF9B0/func_800B6AF8.s @@ -1,7 +1,7 @@ glabel func_8800B6AF8 /* 0B76F8 800B6AF8 27BDFFE0 */ addiu $sp, $sp, -0x20 /* 0B76FC 800B6AFC AFBF001C */ sw $ra, 0x1c($sp) -/* 0B7700 800B6B00 0C02D6CB */ jal func_800B5B2C +/* 0B7700 800B6B00 0C02D6CB */ jal check_for_controller_pak /* 0B7704 800B6B04 00002025 */ move $a0, $zero /* 0B7708 800B6B08 10400034 */ beqz $v0, .L800B6BDC /* 0B770C 800B6B0C 3C048015 */ lui $a0, %hi(gSIEventMesgQueue) # $a0, 0x8015 diff --git a/asm/non_matchings/code_actors/place_all_item_boxes.s b/asm/non_matchings/code_actors/place_all_item_boxes.s index 621251320..89d77d157 100644 --- a/asm/non_matchings/code_actors/place_all_item_boxes.s +++ b/asm/non_matchings/code_actors/place_all_item_boxes.s @@ -27,8 +27,8 @@ glabel place_all_item_boxes /* 106EA4 8029D894 F7B60020 */ sdc1 $f22, 0x20($sp) /* 106EA8 8029D898 11010049 */ beq $t0, $at, .L8029D9C0 /* 106EAC 8029D89C F7B40018 */ sdc1 $f20, 0x18($sp) -/* 106EB0 8029D8A0 3C09800E */ lui $t1, %hi(D_800DC648) # $t1, 0x800e -/* 106EB4 8029D8A4 8529C648 */ lh $t1, %lo(D_800DC648)($t1) +/* 106EB0 8029D8A0 3C09800E */ lui $t1, %hi(gPlaceItemBoxes) # $t1, 0x800e +/* 106EB4 8029D8A4 8529C648 */ lh $t1, %lo(gPlaceItemBoxes)($t1) /* 106EB8 8029D8A8 51200046 */ beql $t1, $zero, .L8029D9C4 /* 106EBC 8029D8AC 8FBF004C */ lw $ra, 0x4c($sp) /* 106EC0 8029D8B0 44800000 */ mtc1 $zero, $f0 diff --git a/data/data_0DD0A0_0.s b/data/data_0DD0A0_0.s index 5b502a3a9..02039c70a 100644 --- a/data/data_0DD0A0_0.s +++ b/data/data_0DD0A0_0.s @@ -29,7 +29,7 @@ #glabel gCreditsCourseId #.hword 0x0008, 0x0000 -#glabel D_800DC648 +#glabel gPlaceItemBoxes #.hword 0x0001, 0x0000 #glabel D_800DC64C diff --git a/data/data_0DD0A0_2.s b/data/data_0DD0A0_2.s index f8fb51709..6c70f0ede 100644 --- a/data/data_0DD0A0_2.s +++ b/data/data_0DD0A0_2.s @@ -2291,13 +2291,13 @@ glabel D_800E86A9 .byte 0x01 glabel D_800E86AA .byte 0x02 -glabel D_800E86AB +glabel gGameModeRowSelectionForNumPlayers .byte 0x03 glabel D_800E86AC .byte 0x00 -glabel D_800E86AD +glabel gGameModeSubMenuRowSelectionForNumPlayers .byte 0x00, 0x00, 0x00 glabel D_800E86B0 diff --git a/data/data_0DD0A0_3_0.s b/data/data_0DD0A0_3_0.s index cbe346440..ccc9e19f8 100644 --- a/data/data_0DD0A0_3_0.s +++ b/data/data_0DD0A0_3_0.s @@ -4067,7 +4067,7 @@ glabel D_800F2B61 glabel D_800F2B6D .byte 0x02, 0x00, 0x00 -glabel D_800F2B70 +glabel gGameModeFromNumPlayersAndRowSelection .byte 0x03, 0x01, 0x00, 0x03, 0x03, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 .byte 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00 diff --git a/include/common_structs.h b/include/common_structs.h index a37e98743..f836778cc 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -358,20 +358,19 @@ typedef struct { // Lowest dibit is the Mushroom Cup, 2nd dibit is the Flower Cup, etc u8 grandPrixPoints[4]; u8 soundMode; - // Its unknown what these bytes are used for - u8 unknownBytes[3]; + // It's unknown what the first byte is used for + u8 checksum[3]; // For some reason there's 2 entries covering 4 cups // Instead of 4 entries, one per cup. Or even just one big entry for all 4 cups // Its also unknown why these are here when they're identical to the values found // in allCourseTimeTrialRecords OnlyBestTimeTrialRecords onlyBestTimeTrialRecords[2]; - // Its unknown why these last bytes exist as they appear to be copies of - // of their non-Backup counterparts. - // They could be some form of data coherency. If these don't match the non-Backup - // versions that may indicate corrupt save data? + // If checksum[1] or checksum[2] does not match their expected value, + // the grandPrixPoints and soundMode are reset. Then if the backup data's + // checksums are valid, copy the backup data to the main data. u8 grandPrixPointsBackup[4]; u8 soundModeBackup; - u8 unknownBytesBackup[3]; + u8 checksumBackup[3]; } SaveData; // size = 0x200 typedef struct { @@ -399,6 +398,12 @@ typedef struct { char unk_10[0x10]; } struct_D_8018CE10; // size = 0x20 +typedef struct +{ + // Something related to time trial ghost data? + char unk_00[0x80]; +} struct_8018EE10_entry; + typedef struct { char unk_00[0x920]; } struct_D_802DFB80; // size = 0x920 diff --git a/include/defines.h b/include/defines.h index dda0d50e3..f5679c1ac 100644 --- a/include/defines.h +++ b/include/defines.h @@ -21,6 +21,16 @@ // Compiles to -0x1000 in diff.py #define PLAYER_HUMAN_AND_CPU PLAYER_EXISTS | PLAYER_HUMAN | PLAYER_CPU | PLAYER_START_SEQUENCE +#define ZERO_PLAYERS_SELECTED 0 +#define ONE_PLAYERS_SELECTED 1 +#define TWO_PLAYERS_SELECTED 2 +#define THREE_PLAYERS_SELECTED 3 +#define FOUR_PLAYERS_SELECTED 4 +#define SELECTED_PLAYER_DEFINES_TOTAL 5 + +// 2P Game has Grand Prix, VS, and Battle as available game types +#define MAX_NUM_MAIN_MENU_GAME_TYPES 3 + /** * Options for gModeSelection **/ diff --git a/src/code_800029B0.c b/src/code_800029B0.c index e5af95af2..bff92b9bd 100644 --- a/src/code_800029B0.c +++ b/src/code_800029B0.c @@ -111,7 +111,7 @@ Lights1 D_800DC610[] = { }; static s32 pad = 0x80000000; s16 gCreditsCourseId = COURSE_LUIGI_RACEWAY; -s16 D_800DC648 = 1; +s16 gPlaceItemBoxes = 1; void func_800029B0(void) { switch(D_800DC5A8) { diff --git a/src/code_80005FD0.c b/src/code_80005FD0.c index bfd0f6089..5e18b86b1 100644 --- a/src/code_80005FD0.c +++ b/src/code_80005FD0.c @@ -163,7 +163,7 @@ s32 func_800061DC(void *arg0, f32 arg1, s32 arg2) { if (D_800DC51C == 0) { temp_v0_2 = D_8018EDF3; phi_a0 = gPlayerOne; - if (temp_v0_2 > 0) { + if (temp_v0_2 > ZERO_PLAYERS_SELECTED) { do { temp_a2 = phi_a0->unk_000; phi_v1_2 = phi_v1_5; @@ -2105,7 +2105,7 @@ extern ? gPlayers; phi_v1 = gPlayerPositions; phi_a0_4 = 0; phi_a0_7 = 0; - if (temp_t1_2 > 0) { + if (temp_t1_2 > ZERO_PLAYERS_SELECTED) { sp4 = &gPlayerPositions[temp_t1_2]; do { phi_a0_6 = phi_a0_7; @@ -2598,7 +2598,7 @@ block_25: arg0 = phi_a0_4; func_800065D0(phi_a0_4, arg1, &D_80163448); phi_a0_5 = (bitwise f32) arg0; - if ((gModeSelection == GRAND_PRIX) && (D_8018EDF3 == 2) && (arg0 == 0)) { + if ((gModeSelection == GRAND_PRIX) && (D_8018EDF3 == TWO_PLAYERS_SELECTED) && (arg0 == 0)) { if (D_80164408 < D_8016440C) { D_80163478 = 0; } else { @@ -2725,7 +2725,7 @@ void func_800099EC(s32 arg0, ? arg1) { temp_a0 = D_8018EDF3; phi_s0 = 0; phi_a0 = temp_a0; - if (temp_a0 > 0) { + if (temp_a0 > ZERO_PLAYERS_SELECTED) { phi_s2 = gPlayerPositions; phi_s1 = 0; do { @@ -3108,7 +3108,7 @@ block_63: return; } temp_v0_9 = D_8018EDF3; - if ((temp_v0_9 > 0) && (temp_v0_9 < 3) && (phi_t1_2 == *(&D_80163330 + phi_t0)) && (*(&D_8016334C + phi_t0) < *(gPlayerPositions + sp38))) { + if ((temp_v0_9 > ZERO_PLAYERS_SELECTED) && (temp_v0_9 < THREE_PLAYERS_SELECTED) && (phi_t1_2 == *(&D_80163330 + phi_t0)) && (*(&D_8016334C + phi_t0) < *(gPlayerPositions + sp38))) { temp_t0 = sp38 + &D_80163210; *temp_t0 = D_800ECFB4; phi_t0_2 = temp_t0; @@ -5504,7 +5504,7 @@ void func_8000DF8C(s32 arg0, f32 arg1, s32 arg2, s32 arg3) { temp_v1 = D_8018EDF3; phi_a0 = 0; phi_v1 = temp_v1; - if (temp_v1 > 0) { + if (temp_v1 > ZERO_PLAYERS_SELECTED) { phi_v0 = gPlayers; phi_a2 = 0x80000000; phi_a3 = 5; @@ -6047,10 +6047,10 @@ loop_5: *phi_s1 = random_int(8); phi_a1_2 = 0; phi_a1_5 = 0; - if (temp_a2 < 3) { + if (temp_a2 < THREE_PLAYERS_SELECTED) { phi_v0_2 = gCharacterSelections; - if (temp_a2 > 0) { - if (temp_a2 > 0) { + if (temp_a2 > ZERO_PLAYERS_SELECTED) { + if (temp_a2 > ZERO_PLAYERS_SELECTED) { do { temp_v0_2 = phi_v0_2 + 1; phi_v0_2 = temp_v0_2; @@ -8914,7 +8914,7 @@ void func_800132F4(void) { phi_a1->unk1E = -1; phi_a1->unkC = temp_a2->unk2; phi_v1 += 0xB4; - if (D_8018EDF3 >= 3) { + if (D_8018EDF3 >= THREE_PLAYERS_SELECTED) { phi_a1->unk0 = 0; } else { phi_a1->unk0 = 1; @@ -13117,7 +13117,7 @@ void func_8001A588(s32 arg0, void *arg1, u16 *arg2, s8 arg3, s32 cameraId) { phi_a3 = cameraId; if ((gModeSelection != TIME_TRIALS) && (cameraId == 1) && ((temp_v0_6 = *phi_t0, (temp_v0_6 == 0x104)) || (temp_v0_6 == 0x105))) { phi_v1 = 0; - if (D_8018EDF3 == 2) { + if (D_8018EDF3 == TWO_PLAYERS_SELECTED) { func_8001A518(phi_s0, *(&gPlayerPositions + (phi_s0 * 4)), 1, cameraId); } else { sp44 = phi_s0; diff --git a/src/code_800431B0.c b/src/code_800431B0.c index 6d9fc7782..16f66f07f 100644 --- a/src/code_800431B0.c +++ b/src/code_800431B0.c @@ -7514,7 +7514,7 @@ void func_80052E30(s32 arg0) { D_80183E80.unk0 = 0; D_80183E80.unk2 = 0; D_80183E80.unk4 = 0; - if (D_8018EDF3 == 1) { + if (D_8018EDF3 == ONE_PLAYERS_SELECTED) { phi_s0 = 0; if (gPlayerCountSelection1 > 0) { do { diff --git a/src/code_8006E9C0.c b/src/code_8006E9C0.c index 135eca190..23ed8dc27 100644 --- a/src/code_8006E9C0.c +++ b/src/code_8006E9C0.c @@ -546,17 +546,17 @@ block_26: D_8018D2E0 = D_8018D2B0 - D_8018D2E0; } temp_v0 = D_8018EDF3; - if (temp_v0 == 4) { + if (temp_v0 == FOUR_PLAYERS_SELECTED) { phi_v1->unk0 = 0xA0; phi_t0->unk0 = 0x78; return; } - if (temp_v0 == 3) { + if (temp_v0 == THREE_PLAYERS_SELECTED) { phi_v1->unk0 = 0xEB; phi_t0->unk0 = 0xAF; return; } - if (temp_v0 == 2) { + if (temp_v0 == TWO_PLAYERS_SELECTED) { if (gCurrentCourseId != 0xA) { phi_v1->unk2 = 0x109; phi_v1->unk0 = phi_v1->unk2; @@ -635,7 +635,7 @@ void func_8006F8CC(void) { D_801657E8 = 1; D_80165800.unk0 = D_80165800.unk1; temp_a0 = D_8018EDF3; - if (temp_a0 == 4) { + if (temp_a0 == FOUR_PLAYERS_SELECTED) { if (gModeSelection != BATTLE) { D_801657E4 = 1; D_801657F0 = 1; @@ -646,10 +646,10 @@ void func_8006F8CC(void) { D_801657F8 = 0; D_80165800.unk0 = D_80165800.unk1; } - } else if (temp_a0 == 3) { + } else if (temp_a0 == THREE_PLAYERS_SELECTED) { D_801657E8 = 0; D_801657F8 = 1; - } else if (temp_a0 == 2) { + } else if (temp_a0 == TWO_PLAYERS_SELECTED) { if (gModeSelection != BATTLE) { D_80165800.unk1 = 0; D_801657E4 = 1; @@ -809,10 +809,10 @@ void func_8006FA94(void) { D_80165658.unk0 = 0; temp_ra = D_8018EDF3; D_801658BC = D_801658C6; - if (temp_ra != 1) { - if (temp_ra != 2) { - if (temp_ra != 3) { - if (temp_ra != 4) { + if (temp_ra != ONE_PLAYERS_SELECTED) { + if (temp_ra != TWO_PLAYERS_SELECTED) { + if (temp_ra != THREE_PLAYERS_SELECTED) { + if (temp_ra != FOUR_PLAYERS_SELECTED) { } else { if (gModeSelection == VERSUS) { @@ -1243,7 +1243,7 @@ void func_8007055C(void) { case 5: phi_s4 = 0x19; phi_s0 = 0; - if (D_8018EDF3 == 1) { + if (D_8018EDF3 == ONE_PLAYERS_SELECTED) { phi_s4 = 0x32; } phi_s1 = 0; @@ -1303,7 +1303,7 @@ extern s16 D_80165748; void func_80070714(void) { D_80165730 = 1; - if (D_8018EDF3 == 1) { + if (D_8018EDF3 == ONE_PLAYERS_SELECTED) { D_80165738 = 0x64; D_80165740 = 0x3C; D_80165748 = 0x1E; @@ -1725,7 +1725,7 @@ void func_80070780(void) { if (D_800DC50C != CREDITS_SEQUENCE) { temp_v0_10 = D_8018EDF3; phi_s1_8 = &D_80183EA0; - if ((temp_v0_10 == 1) || ((temp_v0_10 == 2) && (gModeSelection == VERSUS))) { + if ((temp_v0_10 == ONE_PLAYERS_SELECTED) || ((temp_v0_10 == TWO_PLAYERS_SELECTED) && (gModeSelection == VERSUS))) { temp_v0_11 = gCCSelection; if (temp_v0_11 != CC_50) { if (temp_v0_11 != CC_100) { diff --git a/src/code_80091750.c b/src/code_80091750.c index 752299387..7a5960a17 100644 --- a/src/code_80091750.c +++ b/src/code_80091750.c @@ -221,7 +221,7 @@ s32 func_80091D74(); // extern ? func_80094C60(); // extern ? func_800AF9B0(); // extern ? func_800B44BC(); // extern -? func_800B4A10(); // extern +? load_save_data(); // extern ? func_800C97C4(s32); // extern ? func_800C9D0C(s32); // extern extern s8 D_800E852C; @@ -259,7 +259,7 @@ void func_80091B78(void) { D_8018EDF5 = 5; D_8018EDF6 = 0xA; if (osEepromProbe(&gSIEventMesgQueue) != 0) { - func_800B4A10(); + load_save_data(); } if (func_80091D74() != 0) { gMenuSelection = CONTROLLER_PAK_MENU; @@ -6517,7 +6517,7 @@ block_74: gCurrentCourseId = COURSE_MARIO_RACEWAY; gScreenModeSelection = SCREEN_MODE_1P; gPlayerCountSelection1 = 1; - D_8018EDF3 = 1; + D_8018EDF3 = ONE_PLAYERS_SELECTED; gCharacterSelections[0] = MARIO; gModeSelection = GRAND_PRIX; break; @@ -6525,7 +6525,7 @@ block_74: gCurrentCourseId = COURSE_CHOCO_MOUNTAIN; gScreenModeSelection = SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL; gPlayerCountSelection1 = 2; - D_8018EDF3 = 2; + D_8018EDF3 = TWO_PLAYERS_SELECTED; gCharacterSelections[0] = YOSHI; gCharacterSelections[1] = DK; gModeSelection = VERSUS; @@ -6535,7 +6535,7 @@ block_74: gCurrentCourseId = COURSE_KALAMARI_DESERT; gScreenModeSelection = SCREEN_MODE_1P; gPlayerCountSelection1 = 1; - D_8018EDF3 = 1; + D_8018EDF3 = ONE_PLAYERS_SELECTED; gCharacterSelections[0] = LUIGI; gModeSelection = GRAND_PRIX; break; @@ -6543,7 +6543,7 @@ block_74: gCurrentCourseId = COURSE_WARIO_STADIUM; gScreenModeSelection = SCREEN_MODE_3P_4P_SPLITSCREEN; gPlayerCountSelection1 = 3; - D_8018EDF3 = 3; + D_8018EDF3 = THREE_PLAYERS_SELECTED; gCharacterSelections[0] = WARIO; gCharacterSelections[1] = YOSHI; gCharacterSelections[2] = BOWSER; @@ -6554,7 +6554,7 @@ block_74: gCurrentCourseId = COURSE_BOWSER_CASTLE; gScreenModeSelection = SCREEN_MODE_1P; gPlayerCountSelection1 = 1; - D_8018EDF3 = 1; + D_8018EDF3 = ONE_PLAYERS_SELECTED; gCharacterSelections[0] = BOWSER; gModeSelection = GRAND_PRIX; phi_a2 = 2; @@ -6563,7 +6563,7 @@ block_74: gCurrentCourseId = COURSE_SHERBET_LAND; gScreenModeSelection = SCREEN_MODE_3P_4P_SPLITSCREEN; gPlayerCountSelection1 = 4; - D_8018EDF3 = 4; + D_8018EDF3 = FOUR_PLAYERS_SELECTED; gCharacterSelections[0] = MARIO; gCharacterSelections[1] = LUIGI; gCharacterSelections[2] = PEACH; @@ -6651,7 +6651,7 @@ block_74: } else { gModeSelection = BATTLE; if (gPlayerCountSelection1 == 1) { - D_8018EDF3 = 2; + D_8018EDF3 = TWO_PLAYERS_SELECTED; gScreenModeSelection = SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL; gPlayerCountSelection1 = D_8018EDF3; } @@ -8548,10 +8548,10 @@ static ? D_800E824C; /* unable to generate initia static ? D_800E8254; /* unable to generate initializer; const */ static ? D_800E8294; /* unable to generate initializer; const */ static ? gCharacterSelections; /* unable to generate initializer; const */ -static ? D_800E86AB; /* unable to generate initializer; const */ -static ? D_800E86AD; /* unable to generate initializer; const */ +static ? gGameModeRowSelectionForNumPlayers; /* unable to generate initializer; const */ +static ? gGameModeSubMenuRowSelectionForNumPlayers; /* unable to generate initializer; const */ static ? D_800EFD64; /* unable to generate initializer; const */ -static ? D_800F2B70; /* unable to generate initializer; const */ +static ? gGameModeFromNumPlayersAndRowSelection; /* unable to generate initializer; const */ void func_8009F5E0(void *arg0) { s32 spAC; @@ -9018,9 +9018,9 @@ void func_8009F5E0(void *arg0) { case 0x18: /* switch 4 */ case 0x19: /* switch 4 */ temp_v0_11 = D_8018EDF3; - temp_v1_7 = *(&D_800E86AB + temp_v0_11); - temp_a2_7 = *(&D_800E86AD + ((temp_v0_11 * 3) + temp_v1_7)); - temp_a1_4 = *(&D_800F2B70 + ((temp_v0_11 * 0xC) + (temp_v1_7 * 4))); + temp_v1_7 = *(&gGameModeRowSelectionForNumPlayers + temp_v0_11); + temp_a2_7 = *(&gGameModeSubMenuRowSelectionForNumPlayers + ((temp_v0_11 * 3) + temp_v1_7)); + temp_a1_4 = *(&gGameModeFromNumPlayersAndRowSelection + ((temp_v0_11 * 0xC) + (temp_v1_7 * 4))); phi_a2 = temp_a2_7; phi_a2_2 = temp_a2_7; phi_a1 = temp_a1_4; @@ -10349,8 +10349,8 @@ s32 get_string_width(s32); // extern extern s32 D_800DC540; extern ? D_800E7500; extern ? D_800E76CC; -extern ? D_800E86AB; -extern ? D_800E86AD; +extern ? gGameModeRowSelectionForNumPlayers; +extern ? gGameModeSubMenuRowSelectionForNumPlayers; extern ? D_800F0C1C; extern ? D_800F0C24; extern f32 D_800F1C90; @@ -10461,7 +10461,7 @@ void func_800A2EB8(void *arg0) { temp_v0 = D_8018EDF3; temp_f0_4 = D_800F1CA0; // Print CC mode again? - draw_text((temp_s0_2 - arg0->unkC) + 0xF5, arg0->unk10 + 0xE1, *(&D_800E76CC + (*(&D_800E86AD + ((temp_v0 * 3) + *(&D_800E86AB + temp_v0))) * 4)), 0, temp_f0_4, temp_f0_4); + draw_text((temp_s0_2 - arg0->unkC) + 0xF5, arg0->unk10 + 0xE1, *(&D_800E76CC + (*(&gGameModeSubMenuRowSelectionForNumPlayers + ((temp_v0 * 3) + *(&gGameModeRowSelectionForNumPlayers + temp_v0))) * 4)), 0, temp_f0_4, temp_f0_4); } #else GLOBAL_ASM("asm/non_matchings/code_80091750/func_800A2EB8.s") @@ -10541,8 +10541,8 @@ extern ? D_80164478; extern s8 D_8018EDF3; static ? D_800E7500; /* unable to generate initializer; const */ static ? D_800E76CC; /* unable to generate initializer; const */ -static ? D_800E86AB; /* unable to generate initializer; const */ -static ? D_800E86AD; /* unable to generate initializer; const */ +static ? gGameModeRowSelectionForNumPlayers; /* unable to generate initializer; const */ +static ? gGameModeSubMenuRowSelectionForNumPlayers; /* unable to generate initializer; const */ void func_800A34A8(void *arg0) { s8 sp80; @@ -10664,7 +10664,7 @@ void func_800A34A8(void *arg0) { temp_s0_2 = ((get_string_width(*(&D_800E7500 + (gCupSelection * 4))) + 8) * 0.6f) / 2.0f; draw_text((-(((get_string_width(*(&D_800E76CC + (gCCSelection * 4))) + 8) * 0.6f) / 2.0f) - arg0->unkC) + 0xE6, arg0->unk10 + 0xE1, *(&D_800E7500 + (D_800DC540 * 4)), 0, 0.6f, 0.6f); temp_v0 = D_8018EDF3; - draw_text((temp_s0_2 - arg0->unkC) + 0xE6, arg0->unk10 + 0xE1, *(&D_800E76CC + (*(&D_800E86AD + ((temp_v0 * 3) + *(&D_800E86AB + temp_v0))) * 4)), 0, 0.6f, 0.6f); + draw_text((temp_s0_2 - arg0->unkC) + 0xE6, arg0->unk10 + 0xE1, *(&D_800E76CC + (*(&gGameModeSubMenuRowSelectionForNumPlayers + ((temp_v0 * 3) + *(&gGameModeRowSelectionForNumPlayers + temp_v0))) * 4)), 0, 0.6f, 0.6f); } } #else @@ -12176,9 +12176,9 @@ void func_800A638C(void *arg0) { temp_v0_2->unk4 = phi_a1 & 0xFF; temp_v0_2->unk0 = 0xFA000000; temp_a0_2 = D_8018EDF3; - if (temp_a0_2 != 2) { - if (temp_a0_2 != 3) { - if (temp_a0_2 != 4) { + if (temp_a0_2 != TWO_PLAYERS_SELECTED) { + if (temp_a0_2 != THREE_PLAYERS_SELECTED) { + if (temp_a0_2 != FOUR_PLAYERS_SELECTED) { } else { func_800A6CC0(arg0, phi_a1); @@ -12329,7 +12329,7 @@ void func_800A69C8(s32 arg0) { ? *phi_s2; phi_s0 = 0; - if (D_8018EDF3 > 0) { + if (D_8018EDF3 > ZERO_PLAYERS_SELECTED) { temp_f22 = D_800F1F24; phi_s1 = &D_800E7300; phi_s2 = &D_800E7380; @@ -12394,7 +12394,7 @@ void func_800A6BEC(s32 arg0) { temp_v1 = D_8018EDF3; phi_s0 = 0; phi_v1 = temp_v1; - if (temp_v1 > 0) { + if (temp_v1 > ZERO_PLAYERS_SELECTED) { do { temp_v0 = gModeSelection; if (temp_v0 != VERSUS) { @@ -12435,7 +12435,7 @@ void func_800A6CC0(s32 arg0) { temp_v1 = D_8018EDF3; phi_s0 = 0; phi_v1 = temp_v1; - if (temp_v1 > 0) { + if (temp_v1 > ZERO_PLAYERS_SELECTED) { do { temp_v0 = gModeSelection; if (temp_v0 != VERSUS) { @@ -14426,8 +14426,8 @@ GLOBAL_ASM("asm/non_matchings/code_80091750/func_800A9D5C.s") ? func_800A91D8(void *, s32, s32); /* extern */ ? func_800A92E8(void *, s32); /* extern */ static ? D_800E70E8; /* unable to generate initializer; const */ -static ? D_800E86AB; /* unable to generate initializer; const */ -static ? D_800F2B70; /* unable to generate initializer; const */ +static ? gGameModeRowSelectionForNumPlayers; /* unable to generate initializer; const */ +static ? gGameModeFromNumPlayersAndRowSelection; /* unable to generate initializer; const */ void func_800A9E58(void *arg0) { void *sp2C; @@ -14482,8 +14482,8 @@ block_5: } temp_v0 = D_8018EDF3; temp_v1 = arg0->unk4; - temp_a2 = *(&D_800E86AB + temp_v0); - temp_a1 = *(&D_800F2B70 + ((temp_v0 * 0xC) + (temp_a2 * 4))); + temp_a2 = *(&gGameModeRowSelectionForNumPlayers + temp_v0); + temp_a1 = *(&gGameModeFromNumPlayersAndRowSelection + ((temp_v0 * 0xC) + (temp_a2 * 4))); if (temp_v1 != 0) { if (temp_v1 != 1) { if (temp_v1 != 2) { @@ -14504,7 +14504,7 @@ block_5: arg0->unkC = temp_a1_2; arg0->unk10 = temp_v0_2->unk10 + arg0->unk1C; sp2C = temp_v0_2; - func_800A91D8(arg0, temp_a1_2, (*(&D_800E86AB + D_8018EDF3) * 0x12) + temp_v0_2->unk10 + temp_v1_2->unk2); + func_800A91D8(arg0, temp_a1_2, (*(&gGameModeRowSelectionForNumPlayers + D_8018EDF3) * 0x12) + temp_v0_2->unk10 + temp_v1_2->unk2); arg0->unk1C = arg0->unk10 - sp2C->unk10; return; default: /* switch 4 */ @@ -14559,14 +14559,14 @@ block_37: arg0->unkC = temp_v0_4->unkC; arg0->unk1C = 0; arg0->unk4 = 1; - arg0->unk10 = (*(&D_800E86AB + D_8018EDF3) * 0x12) + temp_v0_4->unk10 + 0x41; + arg0->unk10 = (*(&gGameModeRowSelectionForNumPlayers + D_8018EDF3) * 0x12) + temp_v0_4->unk10 + 0x41; return; case CONFIRM_OK_SELECTION_FROM_BACK_OUT: /* switch 2 */ case TIME_TRAILS_DATA_SELECTION_FROM_BACK_OUT: /* switch 2 */ temp_v0_5 = func_800AAE68(arg0, temp_a1, temp_a2); temp_v1_4 = (arg0->unk0 * 8) + -(sp24 * 8) + &D_800E70E8; arg0->unkC = temp_v0_5->unkC + temp_v1_4->unk0; - temp_t5_2 = (*(&D_800E86AB + D_8018EDF3) * 0x12) + temp_v0_5->unk10 + temp_v1_4->unk2; + temp_t5_2 = (*(&gGameModeRowSelectionForNumPlayers + D_8018EDF3) * 0x12) + temp_v0_5->unk10 + temp_v1_4->unk2; arg0->unk10 = temp_t5_2; arg0->unk1C = temp_t5_2 - temp_v0_5->unk10; arg0->unk15 = 1; @@ -14607,7 +14607,7 @@ GLOBAL_ASM("asm/non_matchings/code_80091750/func_800AA280.s") #ifdef MIPS_TO_C //generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -s32 func_800B5B2C(?); /* extern */ +s32 check_for_controller_pak(?); /* extern */ s32 func_800CE720(? *, ? *, ?); /* extern */ s32 osPfsFindFile(? *, u16, s32, ? *, ? *, ? *); /* extern */ s32 osPfsFreeBlocks(? *, s32 *); /* extern */ @@ -14615,7 +14615,7 @@ s32 osPfsNumFiles(? *, s32 *, s32 *); /* extern */ extern ? D_8018E868; extern ? D_8018EB84; extern ? gSIEventMesgQueue; -static ? D_800E86AB; /* unable to generate initializer; const */ +static ? gGameModeRowSelectionForNumPlayers; /* unable to generate initializer; const */ static ? D_800F2E64; /* unable to generate initializer; const */ static ? D_800F2E74; /* unable to generate initializer; const */ u16 D_800E86F0; /* unable to generate initializer; const */ @@ -14641,7 +14641,7 @@ void func_800AA2EC(void *arg0) { case CONFIRM_OK_SELECTION: case CONFIRM_OK_SELECTION_FROM_BACK_OUT: case TIME_TRAILS_DATA_SELECTION_FROM_BACK_OUT: - if ((arg0->unk4 == 0) && (temp_v0 = D_8018EDF3, (temp_v0 == 1)) && (*(&D_800E86AB + temp_v0) == 1)) { + if ((arg0->unk4 == 0) && (temp_v0 = D_8018EDF3, (temp_v0 == 1)) && (*(&gGameModeRowSelectionForNumPlayers + temp_v0) == 1)) { if (D_800E86F8 != 0) { sp20 = 0; temp_v0_2 = osPfsFindFile(&D_8018E868, D_800E86F0, D_800E86F4, &D_800F2E64, &D_800F2E74, &D_8018EB84); @@ -14661,7 +14661,7 @@ block_12: } if (phi_t1 == 0) { if (D_800E86F8 == 0) { - if (func_800B5B2C(0) == 0) { + if (check_for_controller_pak(0) == 0) { arg0->unk4 = 2; return; } @@ -16451,7 +16451,7 @@ void func_800ACC50(void *arg0) { case 0: temp_t8 = temp_a1->unk1C + 3; temp_a1->unk1C = temp_t8; - if ((temp_t8 >= 0x65) && (temp_a1->unk4 = 1, temp_a1->unk1C = 0, phi_s0 = 0, (D_8018EDF3 > 0))) { + if ((temp_t8 >= 0x65) && (temp_a1->unk4 = 1, temp_a1->unk1C = 0, phi_s0 = 0, (D_8018EDF3 > ZERO_PLAYERS_SELECTED))) { do { add_8018D9E0_entry(phi_s0 + 0xB1, 0, 0, 5 - phi_s0); temp_s0 = phi_s0 + 1; diff --git a/src/code_80091750.h b/src/code_80091750.h index 630a93e70..404f2bf48 100644 --- a/src/code_80091750.h +++ b/src/code_80091750.h @@ -1,125 +1,126 @@ -#ifndef CODE_80091750_H -#define CODE_80091750_H - -#include "common_structs.h" - -/* Function Prototypes */ - -f64 exponent_by_squaring(f64, s32); -void swap_values(s32*, s32*); -void func_800921B4(); -void func_800921C0(s32, s32, s32); -void func_80092224(s32, s32, s32); -void func_80092500(); -void func_80092564(); -void func_800925A0(); -void func_80092604(); -void func_80092630(); -void func_8009265C(); -void func_80092C80(); -s32 char_to_glyph_index(char*); -s32 func_80092DF8(); -s32 get_string_width(char*); -void set_text_color(s32); -void func_800930E4(s32, s32, s32*); -Gfx *func_8009BEF0(Gfx*, s32, f32, f32, s32, f32,f32); -void print_text0(s32, s32, char*, s32, f32, f32, s32); -void func_80093324(s32, s32, char*, s32, f32, f32); -void func_80093358(s32, s32, char*, s32, f32, f32); -void print_text1(s32, s32, char*, s32, f32, f32, s32); -void func_800936B8(s32, s32, char*, s32, f32, f32); -void draw_text(s32, s32, char*, s32, f32, f32); -void func_80093720(s32, s32, char*, s32, f32, f32); -void func_80093754(s32, s32, char*, s32, f32, f32); -void print_text2(s32, s32, char*, s32, f32, f32, s32); -void func_800939C8(s32, s32, char*, s32, f32, f32); -void text_draw(s32, s32, char*, s32, f32, f32); -void func_80093E20(); -void func_80093E40(); -Gfx *func_80098C18(Gfx*, s32, s32, s32, s32, s32, s32, u32, s32); -Gfx *draw_box(Gfx*, s32, s32, s32, s32, s32, s32, s32, s32); -Gfx *func_80098FC8(Gfx*, s32, s32, s32, s32); -void func_80099110(); -void func_80099184(s32); -void *segmented_to_virtual(segment_address_t); -void *segmented_to_virtual_dupe(segment_address_t); -void func_80099A94(Mk64_Texture *, s32); -void func_80099E60(Mk64_Texture *, s32, s32); -void func_8009A594(s32, s32, segment_address_t); -void func_8009A640(s32, s32, s32, segment_address_t); -segment_address_t func_8009A878(struct_8018DEE0_entry*); -void func_8009A76C(s32, s32, s32, s32); -void func_8009A7EC(s32, s32, s32, s32, s32); -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); -s32 func_8009C708(s32, struct_8018DEE0_entry *, s32, s32, s32, s32); -void func_8009E1C0(); -void func_8009E208(); -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_800A7258(struct_8018D9E0_entry*); -void func_800A72FC(struct_8018D9E0_entry*); -void func_800A7448(struct_8018D9E0_entry*); -void func_800A75A0(struct_8018D9E0_entry*); -void convert_number_to_ascii(s32, char*); -void write_dashes(char*); -void get_time_record_minutes(s32, char*); -void get_time_record_seconds(s32 , char*); -void get_time_record_centiseconds(s32, char*); -void func_800A86E8(struct_8018D9E0_entry*); -void func_800A8E14(struct_8018D9E0_entry*); -void func_800A8EC0(struct_8018D9E0_entry*); -void func_800A954C(struct_8018D9E0_entry*); -void func_800AADD4(struct_8018D9E0_entry*); -void func_800AAE18(struct_8018D9E0_entry*); -struct_8018D9E0_entry *func_800AAEB4(s32); -struct_8018D9E0_entry *func_800AAEF4(s32); -void func_800AAF94(struct_8018D9E0_entry*, s32); - -/* This is where I'd put my static data, if I had any */ - -extern Mk64_Texture D_0200157C; -extern Mk64_Texture D_02001874; - -extern Gfx D_02004A0C[]; -extern Gfx D_020077A8[]; -extern Gfx D_020077D8[]; -extern Gfx D_02008008[]; -extern Gfx D_02008030[]; -extern Gfx D_02008058[]; - - -extern s16 gGlyphDisplayWidth[]; // D_800EF690 -extern RGBA16 D_800E74A8[5]; -extern char *D_800E7500[9]; -extern char *D_800E7678[]; -extern char *D_800E76CC[4]; -extern char *D_800E76DC[4]; -extern char *D_800E77A8; -extern char *D_800E77AC; -extern char *D_800E77B0; -extern char *D_800E7A88[4]; -extern char *D_800E7A98; -extern char *D_800E7A9C[2]; -extern s32 gGlyphTextureLUT[]; // D_800E7E84 -extern Mk64_Texture_Group *D_800E82B4[5]; -extern s8 D_800E86D0[20]; -extern f32 D_800F1F30; -extern f32 D_800F24A8; -extern f32 D_800F24AC; -extern f32 D_800F24B0; -extern f32 D_800F24B4; -extern f32 D_800F24B8; -extern f64 D_800F24C0; -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 s8 gTextColor; // D_8018E860 -extern s8 D_8018ED91; -extern s8 D_802874F5; - -#endif \ No newline at end of file +#ifndef CODE_80091750_H +#define CODE_80091750_H + +#include "common_structs.h" + +/* Function Prototypes */ + +f64 exponent_by_squaring(f64, s32); +void swap_values(s32*, s32*); +void func_800921B4(); +void func_800921C0(s32, s32, s32); +void func_80092224(s32, s32, s32); +void func_80092500(); +void func_80092564(); +void func_800925A0(); +void func_80092604(); +void func_80092630(); +void func_8009265C(); +void func_80092C80(); +s32 char_to_glyph_index(char*); +s32 func_80092DF8(); +s32 get_string_width(char*); +void set_text_color(s32); +void func_800930E4(s32, s32, s32*); +Gfx *func_8009BEF0(Gfx*, s32, f32, f32, s32, f32,f32); +void print_text0(s32, s32, char*, s32, f32, f32, s32); +void func_80093324(s32, s32, char*, s32, f32, f32); +void func_80093358(s32, s32, char*, s32, f32, f32); +void print_text1(s32, s32, char*, s32, f32, f32, s32); +void func_800936B8(s32, s32, char*, s32, f32, f32); +void draw_text(s32, s32, char*, s32, f32, f32); +void func_80093720(s32, s32, char*, s32, f32, f32); +void func_80093754(s32, s32, char*, s32, f32, f32); +void print_text2(s32, s32, char*, s32, f32, f32, s32); +void func_800939C8(s32, s32, char*, s32, f32, f32); +void text_draw(s32, s32, char*, s32, f32, f32); +void func_80093E20(); +void func_80093E40(); +Gfx *func_80098C18(Gfx*, s32, s32, s32, s32, s32, s32, u32, s32); +Gfx *draw_box(Gfx*, s32, s32, s32, s32, s32, s32, s32, s32); +Gfx *func_80098FC8(Gfx*, s32, s32, s32, s32); +void func_80099110(); +void func_80099184(s32); +void *segmented_to_virtual(segment_address_t); +void *segmented_to_virtual_dupe(segment_address_t); +void func_80099A94(Mk64_Texture *, s32); +void func_80099E60(Mk64_Texture *, s32, s32); +void func_8009A594(s32, s32, segment_address_t); +void func_8009A640(s32, s32, s32, segment_address_t); +segment_address_t func_8009A878(struct_8018DEE0_entry*); +void func_8009A76C(s32, s32, s32, s32); +void func_8009A7EC(s32, s32, s32, s32, s32); +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); +s32 func_8009C708(s32, struct_8018DEE0_entry *, s32, s32, s32, s32); +void func_8009E1C0(); +void func_8009E1E4(void); +void func_8009E208(); +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_800A7258(struct_8018D9E0_entry*); +void func_800A72FC(struct_8018D9E0_entry*); +void func_800A7448(struct_8018D9E0_entry*); +void func_800A75A0(struct_8018D9E0_entry*); +void convert_number_to_ascii(s32, char*); +void write_dashes(char*); +void get_time_record_minutes(s32, char*); +void get_time_record_seconds(s32 , char*); +void get_time_record_centiseconds(s32, char*); +void func_800A86E8(struct_8018D9E0_entry*); +void func_800A8E14(struct_8018D9E0_entry*); +void func_800A8EC0(struct_8018D9E0_entry*); +void func_800A954C(struct_8018D9E0_entry*); +void func_800AADD4(struct_8018D9E0_entry*); +void func_800AAE18(struct_8018D9E0_entry*); +struct_8018D9E0_entry *func_800AAEB4(s32); +struct_8018D9E0_entry *func_800AAEF4(s32); +void func_800AAF94(struct_8018D9E0_entry*, s32); + +/* This is where I'd put my static data, if I had any */ + +extern Mk64_Texture D_0200157C; +extern Mk64_Texture D_02001874; + +extern Gfx D_02004A0C[]; +extern Gfx D_020077A8[]; +extern Gfx D_020077D8[]; +extern Gfx D_02008008[]; +extern Gfx D_02008030[]; +extern Gfx D_02008058[]; + + +extern s16 gGlyphDisplayWidth[]; // D_800EF690 +extern RGBA16 D_800E74A8[5]; +extern char *D_800E7500[9]; +extern char *D_800E7678[]; +extern char *D_800E76CC[4]; +extern char *D_800E76DC[4]; +extern char *D_800E77A8; +extern char *D_800E77AC; +extern char *D_800E77B0; +extern char *D_800E7A88[4]; +extern char *D_800E7A98; +extern char *D_800E7A9C[2]; +extern s32 gGlyphTextureLUT[]; // D_800E7E84 +extern Mk64_Texture_Group *D_800E82B4[5]; +extern s8 D_800E86D0[20]; +extern f32 D_800F1F30; +extern f32 D_800F24A8; +extern f32 D_800F24AC; +extern f32 D_800F24B0; +extern f32 D_800F24B4; +extern f32 D_800F24B8; +extern f64 D_800F24C0; +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 s8 gTextColor; // D_8018E860 +extern s8 D_8018ED91; +extern s8 D_802874F5; + +#endif diff --git a/src/code_800AF9B0.c b/src/code_800AF9B0.c index 0de1cbfe9..b44da0f29 100644 --- a/src/code_800AF9B0.c +++ b/src/code_800AF9B0.c @@ -1,10 +1,8 @@ #include #include #include -#include -#include #include "global.h" -#include "common_structs.h" + #include "code_80091750.h" #include "code_800AF9B0.h" @@ -393,86 +391,61 @@ loop_5: GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B0004.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -? func_8009E1C0(); /* extern */ -? func_800B053C(struct Controller *, s32); /* extern */ -? func_800B13B0(struct Controller *, s32); /* extern */ -? func_800B15AC(struct Controller *, s32); /* extern */ -? func_800B1C40(struct Controller *, s32); /* extern */ -? func_800B1C90(struct Controller *, s32); /* extern */ -? func_800B20F4(struct Controller *, s32); /* extern */ -? func_800B29D8(struct Controller *, s32); /* extern */ -? func_800B3554(struct Controller *, s32); /* extern */ -? func_800B3B58(struct Controller *, s32); /* extern */ -? func_800CA330(?); /* extern */ -? osViSetSpecialFeatures(s32); /* extern */ -? play_sound2(?); /* extern */ +#if NEEDS_RODATA void func_800B0350(void) { - s32 temp_t2_2; - u32 temp_t2; - u32 temp_v0; - s32 phi_s0; + u16 controllerIdx; if (D_800E86A4 == 0) { - phi_s0 = 0; - do { - if ((func_800B4520() == 0) && (gEnableDebugMode != 0) && ((gControllers[phi_s0].buttonPressed & 0x1000) != 0)) { - temp_v0 = gMenuSelection; - if ((temp_v0 != MAIN_MENU) && (temp_v0 != PLAYER_SELECT_MENU)) { - if (temp_v0 == COURSE_SELECT_MENU) { + for (controllerIdx = 0; controllerIdx < 4; controllerIdx++) { + if ((func_800B4520() == 0) && (gEnableDebugMode != 0) && ((gControllers[controllerIdx].buttonPressed & 0x1000) != 0)) { + if ((gMenuSelection != MAIN_MENU) && (gMenuSelection != PLAYER_SELECT_MENU)) { + if (gMenuSelection == COURSE_SELECT_MENU) { func_800CA330(0x19); - goto block_9; } - } else { -block_9: - play_sound2(0x49008016); } + play_sound2(0x49008016); if ((gMenuSelection != CONTROLLER_PAK_MENU) && (gMenuSelection != START_MENU)) { func_8009E1C0(); } } osViSetSpecialFeatures(D_800E86E4); - temp_t2 = gMenuSelection; - switch (temp_t2) { + switch (gMenuSelection) { case OPTIONS_MENU: - func_800B053C(&gControllers[phi_s0], phi_s0 & 0xFFFF); + func_800B053C(&gControllers[controllerIdx], controllerIdx); break; case DATA_MENU: - func_800B13B0(&gControllers[phi_s0], phi_s0 & 0xFFFF); + func_800B13B0(&gControllers[controllerIdx], controllerIdx); break; case COURSE_DATA_MENU: - func_800B15AC(&gControllers[phi_s0], phi_s0 & 0xFFFF); + func_800B15AC(&gControllers[controllerIdx], controllerIdx); break; case LOGO_INTRO_MENU: - func_800B1C40(&gControllers[phi_s0], phi_s0 & 0xFFFF); + func_800B1C40(&gControllers[controllerIdx], controllerIdx); break; case CONTROLLER_PAK_MENU: - if (phi_s0 == 0) { - func_800B1C90(&gControllers[phi_s0], phi_s0 & 0xFFFF); + if (controllerIdx == 0) { + func_800B1C90(&gControllers[controllerIdx], controllerIdx); } break; case START_MENU_FROM_QUIT: case START_MENU: - func_800B20F4(&gControllers[phi_s0], phi_s0 & 0xFFFF); + func_800B20F4(&gControllers[controllerIdx], controllerIdx); break; case MAIN_MENU_FROM_QUIT: case MAIN_MENU: - func_800B29D8(&gControllers[phi_s0], phi_s0 & 0xFFFF); + func_800B29D8(&gControllers[controllerIdx], controllerIdx); break; case PLAYER_SELECT_MENU_FROM_QUIT: case PLAYER_SELECT_MENU: - func_800B3554(&gControllers[phi_s0], phi_s0 & 0xFFFF); + func_800B3554(&gControllers[controllerIdx], controllerIdx); break; case COURSE_SELECT_MENU_FROM_QUIT: case COURSE_SELECT_MENU: - func_800B3B58(&gControllers[phi_s0], phi_s0 & 0xFFFF); + func_800B3B58(&gControllers[controllerIdx], controllerIdx); break; } - temp_t2_2 = (phi_s0 + 1) & 0xFFFF; - phi_s0 = temp_t2_2; - } while (temp_t2_2 < 4); + } } } #else @@ -484,9 +457,9 @@ GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B0350.s") ? func_8009E280(); /* extern */ void *func_800AAEF4(?); /* extern */ ? func_800B44BC(); /* extern */ -? func_800B4670(); /* extern */ +? write_save_data_grand_prix_points_and_sound_mode(); /* extern */ ? func_800B46D0(?, u16); /* extern */ -? func_800B5948(); /* extern */ +? update_save_data_backup(); /* extern */ ? func_800B6088(s32); /* extern */ ? func_800B6708(); /* extern */ ? func_800B6798(); /* extern */ @@ -610,8 +583,8 @@ void func_800B053C(void *arg0, u16 arg1) { gSaveDataSoundMode = gSoundMode; sp20 = phi_a1; sp38 = temp_t0; - func_800B4670(); - func_800B5948(); + write_save_data_grand_prix_points_and_sound_mode(); + update_save_data_backup(); temp_t0->unk4 = gSoundMode; phi_t1 = &D_8018EDEC; } @@ -623,8 +596,8 @@ void func_800B053C(void *arg0, u16 arg1) { if (temp_t0->unk4 != gSoundMode) { gSaveDataSoundMode = gSoundMode; sp38 = temp_t0; - func_800B4670(); - func_800B5948(); + write_save_data_grand_prix_points_and_sound_mode(); + update_save_data_backup(); temp_t0->unk4 = gSoundMode; return; } @@ -1049,7 +1022,7 @@ GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B053C.s") #endif // Handle navigating the data menu interface -void func_800B13B0(struct Controller *controller, s32 arg1) { +void func_800B13B0(struct Controller *controller, UNUSED u16 arg1) { u16 buttonAndStickPress = (controller->buttonPressed | controller->stickPressed); // Make pressing Start have the same effect as pressing A @@ -1381,197 +1354,156 @@ void func_800B15AC(void *arg0, ? arg1) { GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B15AC.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_8009E1E4(); // extern -s32 func_800B4520(); // extern -? func_800CA388(?); // extern +// Handle controller input during the logo screen +void func_800B1C40(struct Controller *arg0, UNUSED u16 arg1) { + u16 sp1E = arg0->buttonPressed | arg0->stickPressed; -void func_800B1C40(void *arg0, ? arg1) { - u16 sp1E; - - sp1E = arg0->unk6 | arg0->unkC; if ((func_800B4520() == 0) && (sp1E != 0)) { func_800CA388(0x3C); func_8009E1E4(); } } -#else -GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B1C40.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -? func_8009E1C0(); /* extern */ -s32 osPfsDeleteFile(? *, u16, s32, void *, void *); /* extern */ -? play_sound2(?); /* extern */ -extern ? D_8018E868; -extern ? D_8018E938; -extern ? D_8018EB38; -static ? D_800E86C6; /* unable to generate initializer; const */ - -void func_800B1C90(void *arg0, s32 arg1) { - u16 sp36; - s32 sp2C; - void *sp20; - s32 temp_t0; - s32 temp_v0; - s8 temp_t9; - void *temp_v1; - - sp36 = arg0->unk6 | arg0->unkC; +#ifdef NEEDS_RODATA +void func_800B1C90(struct Controller* controller, u16 arg1) { + u16 buttonAndStickPress; + OSPfsState* osPfsState; + s32 selectedTableRow; + s8 pad; + + buttonAndStickPress = controller->buttonPressed | controller->stickPressed; if (func_800B4520() == 0) { - temp_t9 = gControllerPakMenuSelection; - switch (temp_t9) { + switch (gControllerPakMenuSelection) { case CONTROLLER_PAK_MENU_SELECT_RECORD: - if ((sp36 & 0x9000) != 0) { + if ((buttonAndStickPress & 0x9000) != 0) { gControllerPakMenuSelection = CONTROLLER_PAK_MENU_TABLE_GAME_DATA; play_sound2(0x49008001); return; } - if ((sp36 & 0x300) != 0) { + if ((buttonAndStickPress & 0x300) != 0) { gControllerPakMenuSelection = CONTROLLER_PAK_MENU_END; play_sound2(0x49008000); return; } - /* Duplicate return node #49. Try simplifying control flow for better match */ - return; + break; case CONTROLLER_PAK_MENU_END: - if ((sp36 & 0x9000) != 0) { + if ((buttonAndStickPress & 0x9000) != 0) { play_sound2(0x49008001); func_8009E1C0(); D_800E86F8 = 0; return; } - if ((sp36 & 0x300) != 0) { + if ((buttonAndStickPress & 0x300) != 0) { gControllerPakMenuSelection = CONTROLLER_PAK_MENU_SELECT_RECORD; play_sound2(0x49008000); return; } - /* Duplicate return node #49. Try simplifying control flow for better match */ - return; + break; case CONTROLLER_PAK_MENU_TABLE_GAME_DATA: - if ((sp36 & 0x9000) != 0) { - if (*(&D_8018EB38 + ((*(&D_800E86C6 + gControllerPakSelectedTableRow) - 1) * 4)) == 0) { + if ((buttonAndStickPress & 0x9000) != 0) { + selectedTableRow = gDisplayedControllerPakTableRows[gControllerPakSelectedTableRow] - 1; + if (D_8018EB38[selectedTableRow] == 0) { gControllerPakMenuSelection = CONTROLLER_PAK_MENU_QUIT; play_sound2(0x49008001); return; } - /* Duplicate return node #49. Try simplifying control flow for better match */ - return; - } - if ((sp36 & 0x4000) != 0) { - if (*D_800E86D0 == 0) { + } else if ((buttonAndStickPress & 0x4000) != 0) { + if (D_800E86D0 == 0) { gControllerPakMenuSelection = CONTROLLER_PAK_MENU_SELECT_RECORD; play_sound2(0x49008002); return; } - /* Duplicate return node #49. Try simplifying control flow for better match */ - return; - } - if ((sp36 & 0x800) != 0) { - if (*D_800E86D0 == 0) { - gControllerPakSelectedTableRow += -1; + } else if ((buttonAndStickPress & 0x800) != 0) { + if (D_800E86D0 == 0) { + --gControllerPakSelectedTableRow; if (gControllerPakSelectedTableRow < 0) { gControllerPakSelectedTableRow = 0; - if (*(&D_800E86C6 + gControllerPakSelectedTableRow) != 1) { - *D_800E86D0 = 2; + if (gDisplayedControllerPakTableRows[gControllerPakSelectedTableRow] != 1) { + D_800E86D0 = 2; play_sound2(0x49008000); return; } - /* Duplicate return node #49. Try simplifying control flow for better match */ - return; - } - play_sound2(0x49008000); - return; - } - /* Duplicate return node #49. Try simplifying control flow for better match */ - return; - } - if (((sp36 & 0x400) != 0) && (*D_800E86D0 == 0)) { - gControllerPakSelectedTableRow += 1; - if (gControllerPakSelectedTableRow >= 5) { - gControllerPakSelectedTableRow = 4; - if (*(&D_800E86C6 + gControllerPakSelectedTableRow) != 0x10) { - *D_800E86D0 = 1; + } else { play_sound2(0x49008000); return; } - /* Duplicate return node #49. Try simplifying control flow for better match */ + } + } else if (((buttonAndStickPress & 0x400) != 0) && (D_800E86D0 == 0)) { + ++gControllerPakSelectedTableRow; + if (gControllerPakSelectedTableRow >= CONTROLLER_PAK_MENU_TABLE_GAME_DATA) { + gControllerPakSelectedTableRow = CONTROLLER_PAK_MENU_QUIT; + if (gDisplayedControllerPakTableRows[gControllerPakSelectedTableRow] != 0x10) { + D_800E86D0 = 1; + play_sound2(0x49008000); + return; + } + } else { + play_sound2(0x49008000); return; } - play_sound2(0x49008000); - return; } - /* Duplicate return node #49. Try simplifying control flow for better match */ - return; + break; case CONTROLLER_PAK_MENU_QUIT: - if ((sp36 & 0xD000) != 0) { + if ((buttonAndStickPress & 0xD000) != 0) { gControllerPakMenuSelection = CONTROLLER_PAK_MENU_TABLE_GAME_DATA; play_sound2(0x49008002); return; } - if ((sp36 & 0x300) != 0) { + if ((buttonAndStickPress & 0x300) != 0) { gControllerPakMenuSelection = CONTROLLER_PAK_MENU_ERASE; play_sound2(0x49008000); return; } - /* Duplicate return node #49. Try simplifying control flow for better match */ - return; + break; case CONTROLLER_PAK_MENU_ERASE: - if ((sp36 & 0x9000) != 0) { + if ((buttonAndStickPress & 0x9000) != 0) { gControllerPakMenuSelection = CONTROLLER_PAK_MENU_GO_TO_ERASING; play_sound2(0x49008001); return; } - if ((sp36 & 0x4000) != 0) { + if ((buttonAndStickPress & 0x4000) != 0) { gControllerPakMenuSelection = CONTROLLER_PAK_MENU_TABLE_GAME_DATA; play_sound2(0x49008002); return; } - if ((sp36 & 0x300) != 0) { + if ((buttonAndStickPress & 0x300) != 0) { gControllerPakMenuSelection = CONTROLLER_PAK_MENU_QUIT; play_sound2(0x49008000); return; } - /* Duplicate return node #49. Try simplifying control flow for better match */ - return; + break; case CONTROLLER_PAK_MENU_GO_TO_ERASING: gControllerPakMenuSelection = CONTROLLER_PAK_MENU_ERASING; return; case CONTROLLER_PAK_MENU_ERASING: - temp_t0 = *(&D_800E86C6 + gControllerPakSelectedTableRow) - 1; - temp_v1 = (temp_t0 << 5) + &D_8018E938; - sp20 = temp_v1; - sp2C = temp_t0; - temp_v0 = osPfsDeleteFile(&D_8018E868, temp_v1->unk8, temp_v1->unk4, temp_v1 + 0xE, temp_v1 + 0xA); - if (temp_v0 != 0) { - if (temp_v0 != PFS_ERR_NOPACK) { - if (temp_v0 != PFS_ERR_NEW_PACK) { - gControllerPakMenuSelection = CONTROLLER_PAK_MENU_ERASE_ERROR_NOT_ERASED; - return; - } - gControllerPakMenuSelection = CONTROLLER_PAK_MENU_ERASE_ERROR_PAK_CHANGED; - return; - } + selectedTableRow = gDisplayedControllerPakTableRows[gControllerPakSelectedTableRow] - 1; + osPfsState = &D_8018E938[selectedTableRow]; + + switch (osPfsDeleteFile(&D_8018E868, osPfsState->company_code, osPfsState->game_code, &osPfsState->game_name, &osPfsState->ext_name)) { + default: + gControllerPakMenuSelection = CONTROLLER_PAK_MENU_ERASE_ERROR_NOT_ERASED; + return; + case 0: + D_8018EB38[selectedTableRow] = -1; + gControllerPakNumPagesFree += (((osPfsState->file_size + 0xFF) >> 8) & 0xFF); + gControllerPakMenuSelection = CONTROLLER_PAK_MENU_TABLE_GAME_DATA; + return; + case PFS_ERR_NOPACK: gControllerPakMenuSelection = CONTROLLER_PAK_MENU_ERASE_ERROR_NO_PAK; return; + case PFS_ERR_NEW_PACK: /* switch 1 */ + gControllerPakMenuSelection = CONTROLLER_PAK_MENU_ERASE_ERROR_PAK_CHANGED; + return; } - *(&D_8018EB38 + (temp_t0 * 4)) = -1; - gControllerPakNumPagesFree = gControllerPakNumPagesFree + (((temp_v1->unk0 + 0xFF) >> 8) & 0xFF); - gControllerPakMenuSelection = CONTROLLER_PAK_MENU_TABLE_GAME_DATA; - return; + break; case CONTROLLER_PAK_MENU_ERASE_ERROR_NOT_ERASED: case CONTROLLER_PAK_MENU_ERASE_ERROR_NO_PAK: case CONTROLLER_PAK_MENU_ERASE_ERROR_PAK_CHANGED: - if ((sp36 & 0x9000) != 0) { + if ((buttonAndStickPress & 0x9000) != 0) { gControllerPakMenuSelection = CONTROLLER_PAK_MENU_TABLE_GAME_DATA; } - /* Duplicate return node #49. Try simplifying control flow for better match */ - return; + break; } - } else { - default: } } #else @@ -1582,10 +1514,10 @@ GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B1C90.s") //generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 ? func_8009E1C0(); /* extern */ ? func_800B44BC(); /* extern */ -? func_800B4670(); /* extern */ -? func_800B4820(); /* extern */ +? write_save_data_grand_prix_points_and_sound_mode(); /* extern */ +? reset_save_data_grand_prix_points_and_sound_mode(); /* extern */ ? func_800B5404(s32, s32); /* extern */ -? func_800B5948(); /* extern */ +? update_save_data_backup(); /* extern */ ? func_800CA330(?); /* extern */ ? play_sound2(?, s32); /* extern */ static ? D_800F2B50; /* unable to generate initializer; const */ @@ -1746,8 +1678,8 @@ void func_800B20F4(void *arg0, s32 arg1) { play_sound2(0x49008000); func_800B44BC(); gSaveDataSoundMode = gSoundMode; - func_800B4670(); - func_800B5948(); + write_save_data_grand_prix_points_and_sound_mode(); + update_save_data_backup(); } } if ((sp2E & 0x200) != 0) { @@ -1760,7 +1692,7 @@ void func_800B20F4(void *arg0, s32 arg1) { play_sound2(0x49008000); func_800B44BC(); gSaveDataSoundMode = gSoundMode; - func_800B4670(); + write_save_data_grand_prix_points_and_sound_mode(); } } if ((sp2E & 0x800) != 0) { @@ -1790,7 +1722,7 @@ void func_800B20F4(void *arg0, s32 arg1) { } while (temp_a1 < 0x10); play_sound2(0x49008001, temp_a1); } else if ((sp2E & 0x20) != 0) { - func_800B4820(); + reset_save_data_grand_prix_points_and_sound_mode(); phi_a1_2 = 0; phi_s0_2 = 0; do { @@ -1801,7 +1733,7 @@ void func_800B20F4(void *arg0, s32 arg1) { } while (temp_a1_2 < 0x10); play_sound2(0x49008001, temp_a1_2); } else if ((sp2E & 0x200) != 0) { - func_800B4820(); + reset_save_data_grand_prix_points_and_sound_mode(); phi_a1_3 = 0; phi_s0_3 = 0; do { @@ -1865,61 +1797,40 @@ void func_800B20F4(void *arg0, s32 arg1) { GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B20F4.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern s16 D_800DC648; -extern ? D_800E86AB; -extern ? D_800E86AD; -extern ? D_800F2B70; - void func_800B28C8(void) { - s32 temp_a1; - s8 temp_a0; - s8 temp_v0; - s8 temp_v1; + // For Grand Prix and Versus, this will be the CC mode selected. For Time Trials, it will + // be whether 'Begin' or 'Data' is selected. Not used for Battle. + s8 temp_v0 = gGameModeSubMenuRowSelectionForNumPlayers[D_8018EDF3][gGameModeRowSelectionForNumPlayers[D_8018EDF3]]; - temp_v1 = D_8018EDF3; - temp_a0 = *(&D_800E86AB + temp_v1); - temp_a1 = *(&D_800F2B70 + ((temp_v1 * 0xC) + (temp_a0 * 4))); - temp_v0 = *(&D_800E86AD + ((temp_v1 * 3) + temp_a0)); - if (temp_a1 != 0) { - if (temp_a1 != 1) { - if (temp_a1 != 2) { - if (temp_a1 != 3) { - return; - } - D_800DC648 = 1; - gIsMirrorMode = 0; - return; - } - gCCSelection = temp_v0; - D_800DC648 = 1; - if (temp_v0 == CC_EXTRA) { - gIsMirrorMode = 1; - return; - } - gIsMirrorMode = 0; - return; - } + // Determine which game mode was selected based on the number of players and the row selected on the main menu + switch (gGameModeFromNumPlayersAndRowSelection[D_8018EDF3][gGameModeRowSelectionForNumPlayers[D_8018EDF3]]) { + case GRAND_PRIX: + gCCSelection = temp_v0; + gPlaceItemBoxes = 1; + gIsMirrorMode = (temp_v0 == CC_EXTRA) ? 1 : 0; + break; + case VERSUS: + gCCSelection = temp_v0; + gPlaceItemBoxes = 1; + gIsMirrorMode = (temp_v0 == CC_EXTRA) ? 1 : 0; + break; + case BATTLE: + gPlaceItemBoxes = 1; + gIsMirrorMode = 0; + break; + case TIME_TRIALS: gCCSelection = CC_100; gIsMirrorMode = 0; - D_800DC648 = 0; - if (temp_v0 != 0) { + gPlaceItemBoxes = 0; + + if ((temp_v0 && temp_v0) && temp_v0) { } - return; + + break; } - gCCSelection = temp_v0; - D_800DC648 = 1; - if (temp_v0 == CC_EXTRA) { - gIsMirrorMode = 1; - return; - } - gIsMirrorMode = 0; } -#else -GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B28C8.s") -#endif + #ifdef MIPS_TO_C //generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 @@ -1931,14 +1842,14 @@ GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B28C8.s") ? func_800B44AC(s8, u16, u16); /* extern */ ? func_800CA330(?); /* extern */ ? play_sound2(?, u16, u16); /* extern */ -static ? D_800E86AB; /* unable to generate initializer; const */ +static ? gGameModeRowSelectionForNumPlayers; /* unable to generate initializer; const */ static ? D_800E86AC; /* unable to generate initializer; const */ -static ? D_800E86AD; /* unable to generate initializer; const */ +static ? gGameModeSubMenuRowSelectionForNumPlayers; /* unable to generate initializer; const */ static ? D_800E86B0; /* unable to generate initializer; const */ static ? D_800F2B5F; /* unable to generate initializer; const */ static ? D_800F2B61; /* unable to generate initializer; const */ static ? D_800F2B6D; /* unable to generate initializer; const */ -static ? D_800F2B70; /* unable to generate initializer; const */ +static ? gGameModeFromNumPlayersAndRowSelection; /* unable to generate initializer; const */ void func_800B29D8(void *arg0, u16 arg1) { u16 sp2E; @@ -2013,7 +1924,7 @@ void func_800B29D8(void *arg0, u16 arg1) { switch (temp_t4) { case BLANK_MAIN_MENU: temp_t5 = D_8018EDF3; - phi_v1_3 = &D_800F2B70 + ((temp_t5 * 0xC) + (*(&D_800E86AB + temp_t5) * 4)); + phi_v1_3 = &gGameModeFromNumPlayersAndRowSelection + ((temp_t5 * 0xC) + (*(&gGameModeRowSelectionForNumPlayers + temp_t5) * 4)); break; case PLAYER_NUM_SELECTION: phi_a2 = phi_v1; @@ -2060,27 +1971,27 @@ void func_800B29D8(void *arg0, u16 arg1) { D_8018EDE0 = 1; play_sound2(0x49008002); temp_t7 = D_8018EDF3; - phi_v1_3 = &D_800F2B70 + ((temp_t7 * 0xC) + (*(&D_800E86AB + temp_t7) * 4)); + phi_v1_3 = &gGameModeFromNumPlayersAndRowSelection + ((temp_t7 * 0xC) + (*(&gGameModeRowSelectionForNumPlayers + temp_t7) * 4)); } else if ((phi_a2 & 0x8000) != 0) { *phi_t0 = GAME_MODE_SELECTION; func_800B44AC(phi_a0); play_sound2(0x49008001); temp_t4_2 = D_8018EDF3; - phi_v1_3 = &D_800F2B70 + ((temp_t4_2 * 0xC) + (*(&D_800E86AB + temp_t4_2) * 4)); + phi_v1_3 = &gGameModeFromNumPlayersAndRowSelection + ((temp_t4_2 * 0xC) + (*(&gGameModeRowSelectionForNumPlayers + temp_t4_2) * 4)); } else if ((phi_a2 & 0x20) != 0) { *phi_t0 = OPTIONS_SELECTION; func_8009E280(phi_a0); play_sound2(0x49009010); temp_t1 = D_8018EDF3; - phi_v1_3 = &D_800F2B70 + ((temp_t1 * 0xC) + (*(&D_800E86AB + temp_t1) * 4)); + phi_v1_3 = &gGameModeFromNumPlayersAndRowSelection + ((temp_t1 * 0xC) + (*(&gGameModeRowSelectionForNumPlayers + temp_t1) * 4)); } else if ((phi_a2 & 0x10) != 0) { *phi_t0 = DATA_SELECTION; func_8009E258(phi_a0); play_sound2(0x49009011); temp_t6 = D_8018EDF3; - phi_v1_3 = &D_800F2B70 + ((temp_t6 * 0xC) + (*(&D_800E86AB + temp_t6) * 4)); + phi_v1_3 = &gGameModeFromNumPlayersAndRowSelection + ((temp_t6 * 0xC) + (*(&gGameModeRowSelectionForNumPlayers + temp_t6) * 4)); } else { - phi_v1_3 = &D_800F2B70 + ((phi_v0 * 0xC) + (*(&D_800E86AB + phi_v0) * 4)); + phi_v1_3 = &gGameModeFromNumPlayersAndRowSelection + ((phi_v0 * 0xC) + (*(&gGameModeRowSelectionForNumPlayers + phi_v0) * 4)); } break; case GAME_MODE_SELECTION: @@ -2112,12 +2023,12 @@ void func_800B29D8(void *arg0, u16 arg1) { func_800B44AC(3); play_sound2(0x49008002); temp_t6_2 = D_8018EDF3; - phi_v1_3 = &D_800F2B70 + ((temp_t6_2 * 0xC) + (*(&D_800E86AB + temp_t6_2) * 4)); + phi_v1_3 = &gGameModeFromNumPlayersAndRowSelection + ((temp_t6_2 * 0xC) + (*(&gGameModeRowSelectionForNumPlayers + temp_t6_2) * 4)); } else { temp_v0_4 = D_8018EDF3; - temp_a0_3 = *(&D_800E86AB + temp_v0_4); + temp_a0_3 = *(&gGameModeRowSelectionForNumPlayers + temp_v0_4); if ((phi_v1 & 0x8000) != 0) { - temp_v1_3 = *(&D_800F2B70 + ((temp_v0_4 * 0xC) + (temp_a0_3 * 4))); + temp_v1_3 = *(&gGameModeFromNumPlayersAndRowSelection + ((temp_v0_4 * 0xC) + (temp_a0_3 * 4))); if (temp_v1_3 != 0) { if (temp_v1_3 != 1) { if (temp_v1_3 != 2) { @@ -2142,20 +2053,20 @@ void func_800B29D8(void *arg0, u16 arg1) { func_800B44AC(); temp_t7_2 = D_8018EDF3; gMenuTimingCounter = 0; - phi_v1_3 = &D_800F2B70 + ((temp_t7_2 * 0xC) + (*(&D_800E86AB + temp_t7_2) * 4)); + phi_v1_3 = &gGameModeFromNumPlayersAndRowSelection + ((temp_t7_2 * 0xC) + (*(&gGameModeRowSelectionForNumPlayers + temp_t7_2) * 4)); } else { - phi_v1_3 = &D_800F2B70 + ((temp_v0_4 * 0xC) + (temp_a0_3 * 4)); + phi_v1_3 = &gGameModeFromNumPlayersAndRowSelection + ((temp_v0_4 * 0xC) + (temp_a0_3 * 4)); } } break; case GAME_MODE_CC_OR_TIME_TRIALS_OPTIONS_SELECTION: case TIME_TRAILS_DATA_SELECTION_FROM_BACK_OUT: - if ((arg1 == 0) && ((temp_t7_3 = gMenuTimingCounter + 1, gMenuTimingCounter = temp_t7_3, (temp_t7_3 == 0x64)) || ((temp_t7_3 % 300) == 0)) && ((temp_v0_5 = D_8018EDF3, temp_v1_4 = *(&D_800F2B70 + ((temp_v0_5 * 0xC) + (*(&D_800E86AB + temp_v0_5) * 4))), (temp_v1_4 == 0)) || (temp_v1_4 == 2))) { + if ((arg1 == 0) && ((temp_t7_3 = gMenuTimingCounter + 1, gMenuTimingCounter = temp_t7_3, (temp_t7_3 == 0x64)) || ((temp_t7_3 % 300) == 0)) && ((temp_v0_5 = D_8018EDF3, temp_v1_4 = *(&gGameModeFromNumPlayersAndRowSelection + ((temp_v0_5 * 0xC) + (*(&gGameModeRowSelectionForNumPlayers + temp_v0_5) * 4))), (temp_v1_4 == 0)) || (temp_v1_4 == 2))) { sp1C = phi_v1; play_sound2(0x4900900E, arg1, phi_v1); } temp_v0_6 = D_8018EDF3; - temp_v1_5 = (temp_v0_6 * 3) + *(&D_800E86AB + temp_v0_6) + &D_800E86B0; + temp_v1_5 = (temp_v0_6 * 3) + *(&gGameModeRowSelectionForNumPlayers + temp_v0_6) + &D_800E86B0; temp_a0_4 = temp_v1_5->unk-3; phi_a1 = temp_a0_4; if (((phi_v1 & 0x800) != 0) && (temp_a0_4 > 0)) { @@ -2173,7 +2084,7 @@ void func_800B29D8(void *arg0, u16 arg1) { phi_v1_2 = sp24; if (func_800B555C() != 0) { temp_v0_7 = D_8018EDF3; - temp_a0_5 = *(&D_800E86AB + temp_v0_7); + temp_a0_5 = *(&gGameModeRowSelectionForNumPlayers + temp_v0_7); phi_v0_2 = temp_v0_7; phi_a0_2 = temp_a0_5; phi_v0_2 = temp_v0_7; @@ -2183,7 +2094,7 @@ void func_800B29D8(void *arg0, u16 arg1) { } } else { temp_v0_8 = D_8018EDF3; - temp_a0_6 = *(&D_800E86AB + temp_v0_8); + temp_a0_6 = *(&gGameModeRowSelectionForNumPlayers + temp_v0_8); phi_v0_2 = temp_v0_8; phi_a0_2 = temp_a0_6; phi_v0_2 = temp_v0_8; @@ -2202,19 +2113,19 @@ block_64: } } temp_v0_9 = D_8018EDF3; - temp_a0_7 = *(&D_800E86AB + temp_v0_9); - temp_a1 = *(&D_800E86AD + ((temp_v0_9 * 3) + temp_a0_7)); + temp_a0_7 = *(&gGameModeRowSelectionForNumPlayers + temp_v0_9); + temp_a1 = *(&gGameModeSubMenuRowSelectionForNumPlayers + ((temp_v0_9 * 3) + temp_a0_7)); if ((phi_v1 & 0x4000) != 0) { gMainMenuSelectionDepth = GAME_MODE_SELECTION; func_800B44AC(temp_a0_7, temp_a1, phi_v1); play_sound2(0x49008002); temp_t5_2 = D_8018EDF3; - phi_v1_3 = &D_800F2B70 + ((temp_t5_2 * 0xC) + (*(&D_800E86AB + temp_t5_2) * 4)); + phi_v1_3 = &gGameModeFromNumPlayersAndRowSelection + ((temp_t5_2 * 0xC) + (*(&gGameModeRowSelectionForNumPlayers + temp_t5_2) * 4)); } else if ((phi_v1 & 0x8000) != 0) { sp28 = temp_a1; func_800B44AC(temp_a0_7, temp_a1, phi_v1); temp_v0_10 = D_8018EDF3; - if ((temp_v0_10 == 1) && (*(&D_800E86AB + temp_v0_10) == 1) && (temp_a1 == 1)) { + if ((temp_v0_10 == 1) && (*(&gGameModeRowSelectionForNumPlayers + temp_v0_10) == 1) && (temp_a1 == 1)) { func_8009E258(); play_sound2(0x49009011); } else { @@ -2223,9 +2134,9 @@ block_64: gMenuTimingCounter = 0; } temp_t7_4 = D_8018EDF3; - phi_v1_3 = &D_800F2B70 + ((temp_t7_4 * 0xC) + (*(&D_800E86AB + temp_t7_4) * 4)); + phi_v1_3 = &gGameModeFromNumPlayersAndRowSelection + ((temp_t7_4 * 0xC) + (*(&gGameModeRowSelectionForNumPlayers + temp_t7_4) * 4)); } else { - phi_v1_3 = &D_800F2B70 + ((temp_v0_9 * 0xC) + (temp_a0_7 * 4)); + phi_v1_3 = &gGameModeFromNumPlayersAndRowSelection + ((temp_v0_9 * 0xC) + (temp_a0_7 * 4)); } break; case CONFIRM_OK_SELECTION: @@ -2236,7 +2147,7 @@ block_64: } if ((phi_v1 & 0x4000) != 0) { temp_v0_11 = D_8018EDF3; - temp_v1_7 = *(&D_800F2B70 + ((temp_v0_11 * 0xC) + (*(&D_800E86AB + temp_v0_11) * 4))); + temp_v1_7 = *(&gGameModeFromNumPlayersAndRowSelection + ((temp_v0_11 * 0xC) + (*(&gGameModeRowSelectionForNumPlayers + temp_v0_11) * 4))); if ((temp_v1_7 != 0) && (temp_v1_7 != 1) && (temp_v1_7 != 2)) { if (temp_v1_7 != 3) { @@ -2249,26 +2160,26 @@ block_64: play_sound2(0x49008002); temp_t7_6 = D_8018EDF3; gMenuTimingCounter = 0; - phi_v1_3 = &D_800F2B70 + ((temp_t7_6 * 0xC) + (*(&D_800E86AB + temp_t7_6) * 4)); + phi_v1_3 = &gGameModeFromNumPlayersAndRowSelection + ((temp_t7_6 * 0xC) + (*(&gGameModeRowSelectionForNumPlayers + temp_t7_6) * 4)); } else if ((phi_v1 & 0x8000) != 0) { func_8009E1C0(); play_sound2(0x49008016); func_800B28C8(); temp_t1_2 = D_8018EDF3; - phi_v1_3 = &D_800F2B70 + ((temp_t1_2 * 0xC) + (*(&D_800E86AB + temp_t1_2) * 4)); + phi_v1_3 = &gGameModeFromNumPlayersAndRowSelection + ((temp_t1_2 * 0xC) + (*(&gGameModeRowSelectionForNumPlayers + temp_t1_2) * 4)); } else { temp_t4_3 = D_8018EDF3; - phi_v1_3 = &D_800F2B70 + ((temp_t4_3 * 0xC) + (*(&D_800E86AB + temp_t4_3) * 4)); + phi_v1_3 = &gGameModeFromNumPlayersAndRowSelection + ((temp_t4_3 * 0xC) + (*(&gGameModeRowSelectionForNumPlayers + temp_t4_3) * 4)); } break; case OPTIONS_SELECTION: case DATA_SELECTION: temp_t2 = D_8018EDF3; - phi_v1_3 = &D_800F2B70 + ((temp_t2 * 0xC) + (*(&D_800E86AB + temp_t2) * 4)); + phi_v1_3 = &gGameModeFromNumPlayersAndRowSelection + ((temp_t2 * 0xC) + (*(&gGameModeRowSelectionForNumPlayers + temp_t2) * 4)); break; default: temp_t8 = D_8018EDF3; - phi_v1_3 = &D_800F2B70 + ((temp_t8 * 0xC) + (*(&D_800E86AB + temp_t8) * 4)); + phi_v1_3 = &gGameModeFromNumPlayersAndRowSelection + ((temp_t8 * 0xC) + (*(&gGameModeRowSelectionForNumPlayers + temp_t8) * 4)); break; } gModeSelection = *phi_v1_3; @@ -2519,12 +2430,12 @@ void func_800B3F74(u32 arg0) { gCupSelection = MUSHROOM_CUP; gCupCourseSelection = CUP_COURSE_ONE; gTimeTrialDataCourseIndex = TIME_TRIAL_DATA_LUIGI_RACEWAY; - if (D_8018EDF3 <= 0) { - D_8018EDF3 = 1; + if (D_8018EDF3 <= ZERO_PLAYERS_SELECTED) { + D_8018EDF3 = ONE_PLAYERS_SELECTED; } phi_a3 = D_8018EDF3; - if (D_8018EDF3 >= 5) { - D_8018EDF3 = 4; + if (D_8018EDF3 >= SELECTED_PLAYER_DEFINES_TOTAL) { + D_8018EDF3 = FOUR_PLAYERS_SELECTED; phi_a3 = D_8018EDF3; } D_8018EDF1 = *(&D_800F2BDF + phi_a3); @@ -2570,7 +2481,7 @@ void func_800B3F74(u32 arg0) { gMainMenuSelectionDepth = PLAYER_NUM_SELECTION; func_800C8EAC(2, &gMainMenuSelectionDepth, 3); temp_v0_3 = gScreenModeSelection; - D_8018EDF3 = 1; + D_8018EDF3 = ONE_PLAYERS_SELECTED; if ((temp_v0_3 >= NUM_SCREEN_MODES) || (temp_v0_3 < SCREEN_MODE_1P)) { gScreenModeSelection = SCREEN_MODE_1P; } @@ -2749,9 +2660,9 @@ void func_800B45E0(s32 arg0) { osEepromLongWrite(&gSIEventMesgQueue, ((u32)courseTimeTrialRecordsPtr - (u32)&D_8018EB90) >> 3, (u8*) courseTimeTrialRecordsPtr, sizeof(CourseTimeTrialRecords)); } -void func_800B4670(void) { - D_8018ED16 = func_800B492C(); - D_8018ED17 = func_800B49E4(); +void write_save_data_grand_prix_points_and_sound_mode(void) { + D_8018ED16 = compute_save_data_checksum_1(); + D_8018ED17 = compute_save_data_checksum_2(); osEepromLongWrite(&gSIEventMesgQueue, (((u32)&D_8018ED10 - (u32)&D_8018EB90) >> 3), (u8*) &D_8018ED10, 8); } @@ -2766,71 +2677,46 @@ void func_800B46D0(void) { temp_s0 = phi_s0 + 1; phi_s0 = temp_s0; } while (phi_s0 != 0x10); - func_800B4820(); - func_800B5948(); + reset_save_data_grand_prix_points_and_sound_mode(); + update_save_data_backup(); } -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_800B45E0(s32); // extern -s8 func_800B4874(s32, s32, s32, void *); // extern -extern u8 D_800F2E60; -extern ? D_8018EB90; - void func_800B4728(s32 arg0) { - void *sp18; s32 temp_a2; - s32 temp_a2_2; s32 temp_v0; - void *temp_a3; - u8 *phi_v1; - s32 phi_a2; - s32 phi_v0; - u8 *phi_v0_2; - s32 phi_a2_2; + CourseTimeTrialRecords* courseTimeTrialRecords; - temp_a3 = ((arg0 / 4) * 0x60) + ((arg0 % 4) * 0x18) + &D_8018EB90; - phi_a2 = 0; - phi_a2_2 = 0; - do { - phi_v1 = &D_800F2E60; - phi_v0 = 0; -loop_2: - temp_v0 = phi_v0 + 1; - *(temp_a3 + (phi_a2 * 3) + phi_v0) = *phi_v1; - phi_v1 += 1; - phi_v0 = temp_v0; - if (temp_v0 != 3) { - goto loop_2; + courseTimeTrialRecords = &D_8018EB90.allCourseTimeTrialRecords \ + .cupRecords[arg0 / 4] \ + .courseRecords[arg0 % 4]; + + for (temp_a2 = 0; temp_a2 < 5; ++temp_a2) + { + for (temp_v0 = 0; temp_v0 < 3; ++temp_v0) + { + courseTimeTrialRecords->records[temp_a2][temp_v0] = D_800F2E60[temp_v0]; } - temp_a2 = phi_a2 + 1; - phi_a2 = temp_a2; - } while (temp_a2 < 5); - phi_v0_2 = &D_800F2E60; - do { - temp_a2_2 = phi_a2_2 + 1; - (temp_a3 + phi_a2_2)->unkF = *phi_v0_2; - phi_v0_2 += 1; - phi_a2_2 = temp_a2_2; - } while (temp_a2_2 != 3); - temp_a3->unk12 = 0; - sp18 = temp_a3; - temp_a3->unk17 = func_800B4874(arg0, 3, temp_a2_2, temp_a3); + } + + for (temp_a2 = 0; temp_a2 < 3; ++temp_a2) + { + courseTimeTrialRecords->records[5][temp_a2] = D_800F2E60[temp_a2]; + } + + courseTimeTrialRecords->unknownBytes[0] = 0; + courseTimeTrialRecords->unknownBytes[5] = func_800B4874(arg0); func_800B45E0(arg0); } -#else -GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B4728.s") -#endif -void func_800B4820(void) { - D_8018ED10[0] = 0; +void reset_save_data_grand_prix_points_and_sound_mode(void) { + D_8018ED10.grandPrixPointsMushroomCup = 0; D_8018ED11 = 0; D_8018ED12 = 0; D_8018ED13 = 0; gSaveDataSoundMode = SOUND_STEREO; gSoundMode = SOUND_STEREO; func_800B44BC(); - func_800B4670(); + write_save_data_grand_prix_points_and_sound_mode(); } s32 func_800B4874(s32 arg0) { @@ -2860,33 +2746,27 @@ s32 func_800B4874(s32 arg0) { #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern u8 D_8018ED10; +extern union GrandPrixPointsUnion D_8018ED10; -s32 func_800B492C(void) { +s32 compute_save_data_checksum_1(void) { void *temp_a0; temp_a0 = &D_8018ED10 + 1; - return ((D_8018ED10 + 1 + ((temp_a0->unk0 + 1) * 2) + 1 + ((temp_a0->unk1 + 1) * 3) + 1 + 1 + ((temp_a0->unk2 + 1) * 4) + 1 + 2 + ((temp_a0->unk3 + 1) * 5) + 1 + 3) % 0x100) & 0xFF; + return ((D_8018ED10.grandPrixPointsMushroomCup + 1 + ((temp_a0->unk0 + 1) * 2) + 1 + ((temp_a0->unk1 + 1) * 3) + 1 + 1 + ((temp_a0->unk2 + 1) * 4) + 1 + 2 + ((temp_a0->unk3 + 1) * 5) + 1 + 3) % 0x100) & 0xFF; } #else GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B492C.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern u8 D_8018ED16; - -s32 func_800B49E4(void) { - return ((D_8018ED16 + 0x5A) % 0x100) & 0xFF; +s32 compute_save_data_checksum_2(void) { + s32 tmp = D_8018ED16 + 90; + return (tmp % 256) & 0xFF; } -#else -GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B49E4.s") -#endif -void func_800B4A10(void) { +void load_save_data(void) { s32 temp_s0; - osEepromLongRead(&gSIEventMesgQueue, 0, (u8*) &D_8018EB90, 0x200); //0x200: sizeof(SaveData)? + osEepromLongRead(&gSIEventMesgQueue, 0, (u8*) &D_8018EB90, sizeof(SaveData)); temp_s0 = 0; while (temp_s0 < 16) // 16: 4 cup records * 4 course records? { @@ -2894,7 +2774,7 @@ void func_800B4A10(void) { ++temp_s0; } - func_800B4CB4(); + validate_save_data(); gSoundMode = gSaveDataSoundMode; if (gSoundMode >= NUM_SOUND_MODES) { @@ -2980,67 +2860,59 @@ void func_800B4A9C(s32 arg0) { GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B4A9C.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_800B4820(); // extern -s32 func_800B492C(); // extern -s32 func_800B49E4(); // extern -? func_800B5948(); // extern -u8 func_800B59F4(); // extern -u8 func_800B5AAC(); // extern -s32 func_800B5AD8(); // extern -extern ? D_8018EB90; -extern u8 D_8018ED10; -extern u8 D_8018ED11; -extern u8 D_8018ED12; -extern u8 D_8018ED13; -extern u8 gSaveDataSoundMode; -extern u8 D_8018ED16; -extern u8 D_8018ED17; -extern u8 D_8018ED88; -extern u8 D_8018ED89; -extern u8 D_8018ED8A; -extern u8 D_8018ED8B; -extern u8 gSaveDataSoundModeBackup; -extern OSMesgQueue gSIEventMesgQueue; +void validate_save_data(void) { + if ((D_8018ED16 != (compute_save_data_checksum_1() & 0xFFFFFFFF)) || (D_8018ED17 != (compute_save_data_checksum_2() & 0xFFFFFFFF))) { + + reset_save_data_grand_prix_points_and_sound_mode(); + + if (validate_save_data_checksum_backup() == 0) { + D_8018ED10.grandPrixPointsMushroomCup = D_8018ED88.grandPrixPointsMushroomCup; + if ((D_8018ED16 && D_8018ED16) && D_8018ED16) + { + } -void func_800B4CB4(void) { - if ((D_8018ED16 != func_800B492C()) || (D_8018ED17 != func_800B49E4())) { - func_800B4820(); - if (func_800B5AD8() == 0) { - D_8018ED10 = D_8018ED88; D_8018ED11 = D_8018ED89; + if ((D_8018ED16 && D_8018ED16) && D_8018ED16) + { + } + D_8018ED12 = D_8018ED8A; + if ((D_8018ED16 && D_8018ED16) && D_8018ED16) + { + } + D_8018ED13 = D_8018ED8B; + if ((D_8018ED16 && D_8018ED16) && D_8018ED16) + { + } + gSaveDataSoundMode = gSaveDataSoundModeBackup; - D_8018ED16 = func_800B59F4(); - D_8018ED17 = func_800B5AAC(); - osEepromLongWrite(&gSIEventMesgQueue, ((&D_8018ED10 - &D_8018EB90) >> 3) & 0xFF, &D_8018ED10, 8); + D_8018ED16 = compute_save_data_checksum_backup_1(); + D_8018ED17 = compute_save_data_checksum_backup_2(); + osEepromLongWrite(&gSIEventMesgQueue, (((u32) &D_8018ED10 - (u32) &D_8018EB90) >> 3), (u8*) &D_8018ED10, 8); } - func_800B5948(); + update_save_data_backup(); return; } - if (func_800B5AD8() != 0) { - func_800B5948(); + + if (validate_save_data_checksum_backup() != 0) { + update_save_data_backup(); } } -#else -GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B4CB4.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800B4DCC(void *arg0, u32 arg1, s32 arg2) { - u32 temp_t8; +void populate_time_trial_record(u8 *timeTrialRecord, u32 time, s32 characterId) +{ + u32 timeRightShift8 = time >> 8; + u32 timeRightShift16 = timeRightShift8 >> 8; + s16 timeRightShift8Duplicate; + u16 timeRightShift16Duplicate; - temp_t8 = arg1 >> 8; - arg0->unk0 = arg1; - arg0->unk1 = temp_t8; - arg0->unk2 = ((temp_t8 >> 8) & 0xF) + ((arg2 & 7) * 0x10); + timeRightShift16Duplicate = timeRightShift16; + + timeTrialRecord[0] = time & 0xFF; + timeTrialRecord[1] = (timeRightShift8Duplicate = timeRightShift8); + timeTrialRecord[2] = (timeRightShift16Duplicate & 0xF) + ((characterId & 7) << 4); } -#else -GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B4DCC.s") -#endif #ifdef NON_MATCHING //generated by mips_to_c commit 99fec197b8c557ea7cc0d78f1b263a0de6e59168 @@ -3094,7 +2966,7 @@ s32 func_800B4FB0(s32 courseIndex) { #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_800B45E0(s32); // extern -? func_800B4DCC(void *, u32, s32, void *); // extern +? populate_time_trial_record(void *, u32, s32, void *); // extern s32 func_800B4DF4(void *); // extern extern ? D_8018EB90; extern s8 gCupSelection; @@ -3190,7 +3062,7 @@ block_10: } while ((phi_s1_2 * 3) != temp_v1); } } - func_800B4DCC(temp_a3, arg0, arg1, temp_a3); + populate_time_trial_record(temp_a3, arg0, arg1, temp_a3); temp_s2->unk12 = 1; func_800B45E0(sp30); return phi_s1_2; @@ -3202,7 +3074,7 @@ GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B5020.s") #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_800B45E0(s32); // extern -? func_800B4DCC(void *, u32, s32, s32); // extern +? populate_time_trial_record(void *, u32, s32, s32); // extern s32 func_800B4F2C(s32, ? *, ? *, s32); // extern extern ? D_8018CA70; extern ? D_8018CA74; @@ -3261,7 +3133,7 @@ s32 func_800B5218(void) { temp_v0_2 = ((sp38 / 4) * 0x60) + ((sp38 % 4) * 0x18) + &D_8018EB90; sp20 = temp_v0_2; sp24 = phi_a3; - func_800B4DCC(temp_v0_2 + 0xF, temp_a1_2, sp28, phi_a3); + populate_time_trial_record(temp_v0_2 + 0xF, temp_a1_2, sp28, phi_a3); temp_v0_2->unk12 = 1; func_800B45E0(sp38); phi_v0_2 = sp24; @@ -3272,84 +3144,49 @@ s32 func_800B5218(void) { GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B5218.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_800B4670(); // extern -s32 func_800B54EC(s8, u8, s32); // extern -u8 func_800B5508(s8, u8, s32); // extern -? func_800B5948(); // extern -extern ? D_8018EB90; -extern s8 gCupSelection; - void func_800B536C(s32 arg0) { - u8 *sp1C; - s32 temp_a2; - s32 temp_v1; - u8 *temp_v0; + u8* points; + u8 tmp; + s32 tmp2; - temp_a2 = arg0; if (arg0 >= 0) { - temp_v0 = gCCSelection + 0x180 + &D_8018EB90; - arg0 = temp_a2; - sp1C = temp_v0; - temp_v1 = 3 - arg0; - if ((arg0 < 3) && (func_800B54EC(gCupSelection, *temp_v0, temp_a2) < temp_v1)) { - *sp1C = func_800B5508(gCupSelection, *sp1C, temp_v1); - func_800B4670(); - func_800B5948(); + points = &D_8018EB90.grandPrixPoints[gCCSelection]; + + tmp = func_800B54EC(gCupSelection, *points); + tmp2 = 3 - arg0; + if ((arg0 < 3) && (tmp < (3-arg0))) { + *points = func_800B5508(gCupSelection, *points, tmp2); + write_save_data_grand_prix_points_and_sound_mode(); + update_save_data_backup(); } } } -#else -GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B536C.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -? func_800B4670(); // extern -s32 func_800B54EC(s32, u8, s32, void *); // extern -u8 func_800B5508(s32, u8, s32, void *); // extern -? func_800B5948(); // extern -extern ? D_8018EB90; - -void func_800B5404(s32 arg0, s32 arg1) { - s32 sp30; - s32 sp20; - void *sp1C; - u8 *sp18; +void func_800B5404(s32 arg0, s32 arg1) +{ + u8 *points; s32 temp_a0; - s32 temp_a2; - s32 temp_v1; - u8 *temp_v1_2; - void *temp_a3; + s32 temp; + int temp2; + UNUSED s32 pad; - temp_a2 = arg0; if (arg0 >= 0) { - temp_a0 = arg1 / 4; - temp_a3 = (arg1 % 4) + &D_8018EB90; - sp1C = temp_a3; - sp20 = temp_a0; - arg0 = temp_a2; - if (arg0 < 3) { - temp_v1 = 3 - arg0; - sp30 = temp_v1; - if (func_800B54EC(temp_a0, temp_a3->unk180, temp_a2, temp_a3) < temp_v1) { - temp_v1_2 = temp_a3 + 0x180; - sp18 = temp_v1_2; - *temp_v1_2 = func_800B5508(temp_a0, *temp_v1_2, sp30, temp_a3); - func_800B4670(); - func_800B5948(); - } + temp2 = arg1 / 4; + points = &D_8018EB90.grandPrixPoints[arg1 % 4]; + temp = func_800B54EC(temp2, *points); + + if ((arg0 < 3) && (temp < (temp_a0 = 3 - arg0))) { + *points = func_800B5508(temp2, *points, temp_a0); + + write_save_data_grand_prix_points_and_sound_mode(); + update_save_data_backup(); } } } -#else -GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B5404.s") -#endif // Get Grand Prix points for a given cup and CC mode u8 func_800B54C0(s32 cup, s32 cc_mode) { - return func_800B54EC(cup, D_8018ED10[cc_mode]); + return func_800B54EC(cup, D_8018ED10.grandPrixPointsArray[cc_mode]); } // Get Grand Prix points scored for a given cup @@ -3378,7 +3215,7 @@ u8 func_800B5508(s32 cup, s32 ccGrandPrixPoints, s32 points_scored) { // Check if all 4 cups have gold cups scored // for a given CC mode s32 func_800B5530(s32 cc_mode) { - if (D_8018ED10[cc_mode] == 0xFF) { + if (D_8018ED10.grandPrixPointsArray[cc_mode] == 0xFF) { return 1; } return 0; @@ -3530,52 +3367,38 @@ loop_2: GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B578C.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern ? D_8018ED4E; - s32 func_800B5888(s32 arg0) { - return ((*(&D_8018ED4E + (arg0 * 0x38)) + 0x5A) % 0x100) & 0xFF; + s32 tmp = ((*(&D_8018ED4E + (arg0 * sizeof(OnlyBestTimeTrialRecords))) + 90)); + return (tmp % 256) & 0xFF; } -#else -GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B5888.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 func_800B578C(s32, s32); // extern -s32 func_800B5888(s32); // extern -extern ? D_8018EB90; +s32 func_800B58C4(s32 arg0) +{ + UNUSED s32 pad1; + OnlyBestTimeTrialRecords *temp_v1; + UNUSED s32 pad2; + UNUSED s32 pad3; -? func_800B58C4(s32 arg0) { - s32 sp1C; - void *sp18; - s32 temp_a0; - void *temp_v1; - - temp_a0 = arg0 / 8; - sp1C = temp_a0; - temp_v1 = (temp_a0 * 0x38) + 0x188 + &D_8018EB90; - if ((temp_v1->unk36 != func_800B578C(temp_a0, arg0)) || (sp18 = temp_v1, (temp_v1->unk37 != func_800B5888(temp_a0)))) { + temp_v1 = &D_8018EB90.onlyBestTimeTrialRecords[arg0 / 8]; + if ((temp_v1->unknownBytes[6] != (func_800B578C(arg0 / 8) ^ 0)) || (temp_v1->unknownBytes[7] != (func_800B5888(arg0 / 8) ^ 0))) + { return 1; } + return 0; } -#else -GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B58C4.s") -#endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s8 func_800B59F4(); // extern -s8 func_800B5AAC(); // extern +s8 compute_save_data_checksum_backup_1(); // extern +s8 compute_save_data_checksum_backup_2(); // extern extern ? D_8018EB90; -extern u8 D_8018ED10; +extern union GrandPrixPointsUnion D_8018ED10; extern u8 D_8018ED11; extern u8 D_8018ED12; extern u8 D_8018ED13; extern u8 gSaveDataSoundMode; -extern u8 D_8018ED88; +extern union GrandPrixPointsUnion D_8018ED88; extern u8 D_8018ED89; extern u8 D_8018ED8A; extern u8 D_8018ED8B; @@ -3584,14 +3407,14 @@ extern s8 D_8018ED8E; extern s8 D_8018ED8F; extern OSMesgQueue gSIEventMesgQueue; -void func_800B5948(void) { - D_8018ED88 = D_8018ED10; +void update_save_data_backup(void) { + D_8018ED88.grandPrixPointsMushroomCup = D_8018ED10.grandPrixPointsMushroomCup; D_8018ED89 = D_8018ED11; D_8018ED8A = D_8018ED12; D_8018ED8B = D_8018ED13; gSaveDataSoundModeBackup = gSaveDataSoundMode; - D_8018ED8E = func_800B59F4(); - D_8018ED8F = func_800B5AAC(); + D_8018ED8E = compute_save_data_checksum_backup_1(); + D_8018ED8F = compute_save_data_checksum_backup_2(); osEepromLongWrite(&gSIEventMesgQueue, ((&D_8018ED88 - &D_8018EB90) >> 3) & 0xFF, &D_8018ED88, 8); } #else @@ -3600,57 +3423,45 @@ GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B5948.s") #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern u8 D_8018ED88; +extern union GrandPrixPointsUnion D_8018ED88; -s32 func_800B59F4(void) { +s32 compute_save_data_checksum_backup_1(void) { void *temp_a0; temp_a0 = &D_8018ED88 + 1; - return ((D_8018ED88 + 1 + ((temp_a0->unk0 + 1) * 2) + 1 + ((temp_a0->unk1 + 1) * 3) + 1 + 1 + ((temp_a0->unk2 + 1) * 4) + 1 + 2 + ((temp_a0->unk3 + 1) * 5) + 1 + 3) % 0x100) & 0xFF; + return ((D_8018ED88.grandPrixPointsMushroomCup + 1 + ((temp_a0->unk0 + 1) * 2) + 1 + ((temp_a0->unk1 + 1) * 3) + 1 + 1 + ((temp_a0->unk2 + 1) * 4) + 1 + 2 + ((temp_a0->unk3 + 1) * 5) + 1 + 3) % 0x100) & 0xFF; } #else GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B59F4.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern u8 D_8018ED8E; - -s32 func_800B5AAC(void) { - return ((D_8018ED8E + 0x5A) % 0x100) & 0xFF; +s32 compute_save_data_checksum_backup_2(void) { + s32 tmp = D_8018ED8E + 90; + return (tmp % 256) & 0xFF; } -#else -GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B5AAC.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 func_800B59F4(); // extern -s32 func_800B5AAC(); // extern -extern u8 D_8018ED8E; -extern u8 D_8018ED8F; - -? func_800B5AD8(void) { - if ((D_8018ED8E != func_800B59F4()) || (D_8018ED8F != func_800B5AAC())) { +s32 validate_save_data_checksum_backup(void) +{ + if ((D_8018ED8E != (compute_save_data_checksum_backup_1() ^ 0)) || (D_8018ED8F != (compute_save_data_checksum_backup_2() ^ 0))) { return 1; } + return 0; } -#else -GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B5AD8.s") -#endif -s32 func_800B5B2C(s32 arg0) { +// Check if controller has a Controller Pak connected. +// Return 1 if it does, otherwise return 0. +s32 check_for_controller_pak(s32 controller) { u8 sp1F; - s32 phi_v0; + UNUSED s32 phi_v0; - if ((arg0 >= 4) || (arg0 < 0)) { + if ((controller >= 4) || (controller < 0)) { return 0; } osPfsIsPlug(&gSIEventMesgQueue, &sp1F); - if ((sp1F & (1 << arg0)) != 0) { + if ((sp1F & (1 << controller)) != 0) { return 1; } @@ -3659,7 +3470,7 @@ s32 func_800B5B2C(s32 arg0) { #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 func_800B5B2C(?); // extern +s32 check_for_controller_pak(s32); // extern s32 func_800CE720(? *, OSPfs *, ?); // extern extern u16 D_800E86F0; extern u32 D_800E86F4; @@ -3702,7 +3513,7 @@ block_8: } block_9: if (phi_v0 == 0) { - if (func_800B5B2C(0) == 0) { + if (check_for_controller_pak(0) == 0) { return 1; } temp_v0_3 = func_800CE720(&gSIEventMesgQueue, &D_8018E868, 0); @@ -3752,7 +3563,7 @@ GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B5B94.s") #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 func_800B5B2C(?); // extern +s32 check_for_controller_pak(?); // extern s32 func_800CE720(? *, OSPfs *, ?); // extern extern u16 D_800E86F0; extern u32 D_800E86F4; @@ -3792,7 +3603,7 @@ block_7: block_8: phi_v0_2 = phi_v0; if (phi_v0 == 0) { - if (func_800B5B2C(1) == 0) { + if (check_for_controller_pak(1) == 0) { return 1; } temp_v0_3 = func_800CE720(&gSIEventMesgQueue, &D_8018E8D0, 1); @@ -3841,7 +3652,7 @@ s32 func_800B5F30(void) { if (D_800E86F8 != 0) { return -4; } - if (func_800B5B2C(0) != 0) { + if (check_for_controller_pak(0) != 0) { sp1C = func_800CE720(&gSIEventMesgQueue, &D_8018E868, 0); if (osPfsNumFiles(&D_8018E868, &D_8018EB78, &D_8018EB7C) != 0) { D_800E86F8 = 0; @@ -3866,7 +3677,7 @@ s32 func_800B6014(void) { if (D_800E86FC != 0) { return -4; } - if (func_800B5B2C(1) != 0) { + if (check_for_controller_pak(1) != 0) { temp_v0 = func_800CE720(&gSIEventMesgQueue, &D_8018E8D0, 1); if (temp_v0 == 0) { D_800E86FC = 1; @@ -3876,25 +3687,15 @@ s32 func_800B6014(void) { return -1; } -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s8 func_800B6828(); // extern -extern OSPfs D_8018E868; -extern s32 D_8018EB84; -extern ? D_8018EE10; - void func_800B6088(s32 arg0) { s32 temp_t6; - u8 *temp_v1; + u8* temp_v1; temp_t6 = arg0 << 7; - temp_v1 = temp_t6 + &D_8018EE10; - temp_v1->unk7F = func_800B6828(); - osPfsReadWriteFile(&D_8018E868, D_8018EB84, 1, temp_t6, 0x80, temp_v1); + 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); } -#else -GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B6088.s") -#endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 @@ -4371,7 +4172,7 @@ GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B69BC.s") #endif s32 func_800B6A68(void) { - s32 pad; + UNUSED s32 pad; s32 sp30; s32 temp_s0; @@ -4390,7 +4191,7 @@ s32 func_800B6A68(void) { #ifdef MIPS_TO_C //generated by mips_to_c commit cc33060578851a93591ed035e96ffd1f15c765f1 -s32 func_800B5B2C(?); /* extern */ +s32 check_for_controller_pak(?); /* extern */ ? func_800B6A68(); /* extern */ s32 func_800CE720(? *, ? *, ?); /* extern */ s32 osPfsFindFile(? *, u16, s32, ? *, ? *, ? *); /* extern */ @@ -4411,7 +4212,7 @@ extern ? gSIEventMesgQueue; UNUSED void func_800B6AF8(void) { s32 temp_t1; - if ((func_800B5B2C(0) != 0) && (func_800CE720(&gSIEventMesgQueue, &D_8018E868, 0) == 0) && (osPfsFindFile(&D_8018E868, D_800E86F0, D_800E86F4, &D_800F2E64, &D_800F2E74, &D_8018EB84) != 0) && (osPfsNumFiles(&D_8018E868, &D_8018EB78, &D_8018EB7C) == 0) && (D_8018EB7C < D_8018EB78) && (osPfsFreeBlocks(&D_8018E868, &gControllerPakNumPagesFree) == 0)) { + if ((check_for_controller_pak(0) != 0) && (func_800CE720(&gSIEventMesgQueue, &D_8018E868, 0) == 0) && (osPfsFindFile(&D_8018E868, D_800E86F0, D_800E86F4, &D_800F2E64, &D_800F2E74, &D_8018EB84) != 0) && (osPfsNumFiles(&D_8018E868, &D_8018EB78, &D_8018EB7C) == 0) && (D_8018EB7C < D_8018EB78) && (osPfsFreeBlocks(&D_8018E868, &gControllerPakNumPagesFree) == 0)) { temp_t1 = (s32) gControllerPakNumPagesFree >> 8; gControllerPakNumPagesFree = temp_t1; if (temp_t1 >= 0x79) { diff --git a/src/code_800AF9B0.h b/src/code_800AF9B0.h index b4720ad10..a42e622db 100644 --- a/src/code_800AF9B0.h +++ b/src/code_800AF9B0.h @@ -1,79 +1,140 @@ -#ifndef CODE_800AF9B0_H -#define CODE_800AF9B0_H - -#include "PR/os.h" -#include "common_structs.h" - -/* Function Prototypes */ - -void func_800AF9B0(); -void func_800B13B0(struct Controller*, s32); -s32 func_800B34E8(s32); -void func_800B3B58(struct Controller*, u16); -void func_800B44AC(); -void func_800B44BC(); -s32 func_800B4520(); -void func_800B45E0(s32); -void func_800B4670(); -void func_800B46D0(); -void func_800B4728(s32); -void func_800B4820(); -s32 func_800B4874(s32); -s32 func_800B492C(); -s32 func_800B49E4(); -void func_800B4A10(); -s32 func_800B4E24(s32); -s32 func_800B4EB4(s32, s32); -s32 func_800B4F2C(); -s32 func_800B4FB0(s32); -u8 func_800B54C0(s32, s32); -u8 func_800B54EC(s32, s32); -u8 func_800B5508(s32, s32, s32); -s32 func_800B5530(s32); -s32 func_800B555C(); -s32 func_800B557C(); -void func_800B559C(s32); -void func_800B5948(); -s32 func_800B5B2C(s32); -s32 func_800B5F30(); -s32 func_800B6014(); -s32 func_800B6A68(); - -// audio/external.c -void play_sound2(s32); -void func_800CA330(s32); - -// memory.c -u32 func_802A7B70(u16); - -/* This is where I'd put my static data, if I had any */ - -extern s32 D_800DC540; -extern u16 D_800E86F0; -extern s32 D_800E86F4; -extern s8 D_800E86F8; -extern s8 D_800E86FC; -extern u8 D_800F2E64; -extern u8 D_800F2E74; -extern s32 D_8018E7A8; -extern s8 D_8018E7B0; -extern OSPfs D_8018E868; -extern OSPfs D_8018E8D0; -extern s32 D_8018EB78; -extern s32 D_8018EB7C; -extern s32 D_8018EB84; -extern u8 D_8018ED10[4]; // Direct reference to the grandPrixPoints section of save data -extern u8 D_8018ED11; -extern u8 D_8018ED12; -extern u8 D_8018ED13; -extern s8 D_8018ED16; -extern s8 D_8018ED17; -extern u32 D_8018EDB8; -extern u32 D_8018EDBC; -extern s8 D_8018EDE5; -extern s8 D_8018EDE6; -extern s8 D_8018EDE7; -extern s8 D_8018EDEC; -extern s8 D_8018EE0A; - -#endif \ No newline at end of file +#ifndef CODE_800AF9B0_H +#define CODE_800AF9B0_H + +#include "PR/os.h" +#include "common_structs.h" +#include + +union GrandPrixPointsUnion +{ + u8 grandPrixPointsArray[4]; + u8 grandPrixPointsMushroomCup; +}; + +/* Function Prototypes */ + +void func_800AF9B0(); +void func_800B053C(struct Controller*, u16); +void func_800B13B0(struct Controller*, u16); +void func_800B15AC(struct Controller*, u16); +void func_800B1C40(struct Controller*, u16); +void func_800B1C90(struct Controller*, u16); +void func_800B20F4(struct Controller*, u16); +void func_800B29D8(struct Controller*, u16); +s32 func_800B34E8(s32); +void func_800B3554(struct Controller*, u16); +void func_800B3B58(struct Controller*, u16); +void func_800B44AC(); +void func_800B44BC(); +s32 func_800B4520(); +void func_800B45E0(s32); +void write_save_data_grand_prix_points_and_sound_mode(); +void func_800B46D0(); +void func_800B4728(s32); +void reset_save_data_grand_prix_points_and_sound_mode(); +s32 func_800B4874(s32); +s32 compute_save_data_checksum_1(); +s32 compute_save_data_checksum_2(); +void func_800B4A10(); +void func_800B4A9C(s32); +void validate_save_data(void); +s32 func_800B4E24(s32); +s32 func_800B4EB4(s32, s32); +s32 func_800B4F2C(); +s32 func_800B4FB0(s32); +u8 func_800B54C0(s32, s32); +u8 func_800B54EC(s32, s32); +u8 func_800B5508(s32, s32, s32); +s32 func_800B5530(s32); +s32 func_800B555C(); +s32 func_800B557C(); +void func_800B559C(s32); +s32 func_800B578C(s32); +s32 func_800B5888(s32); +void update_save_data_backup(); +s32 compute_save_data_checksum_backup_1(void); +s32 compute_save_data_checksum_backup_2(void); +s32 validate_save_data_checksum_backup(); +s32 func_800B5B2C(s32); +s32 func_800B5F30(); +s32 func_800B6014(); +void func_800B69BC(s32); +s32 func_800B6A68(); + +// audio/external.c +void play_sound2(s32); +void func_800CA330(s32); +void func_800CA388(s32); + +// os +s32 func_800CE720(OSMesgQueue*, OSPfs*, s32); + +// memory.c +u32 func_802A7B70(u16); + + +/* This is where I'd put my static data, if I had any */ + +extern u16 gEnableDebugMode; // D_800DC520 +extern s32 gCCSelection; // D_800DC538 +extern s32 gModeSelection; // D_800DC53C +extern s32 D_800DC540; +extern s16 gCurrentCourseId; // D_800DC5A0 +extern s32 gIsMirrorMode; // D_800DC5F4 +extern s16 gPlaceItemBoxes; // D_800DC638 +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; +extern s8 gDisplayedControllerPakTableRows[5]; // D_800E86C6 +extern s32 D_800E86E4; +extern u16 D_800E86F0; +extern s32 D_800E86F4; +extern s8 D_800E86F8; +extern s8 D_800E86FC; +extern s32 gGameModeFromNumPlayersAndRowSelection[SELECTED_PLAYER_DEFINES_TOTAL][MAX_NUM_MAIN_MENU_GAME_TYPES]; // D_800F2B60. 0-4 players, 3 possible game types per player amount +extern s16 gCupCourseOrder[NUM_CUPS][NUM_COURSES_PER_CUP]; // D_800F2BB4 +extern u8 D_800F2E60[]; +extern u8 D_800F2E64; +extern u8 D_800F2E74; +extern OSMesgQueue gSIEventMesgQueue; // D_8014F0B8 +extern s32 D_8018E7A8; +extern s8 D_8018E7B0; +extern OSPfs D_8018E868; +extern OSPfs D_8018E8D0; +extern OSPfsState D_8018E938[]; +extern s32 D_8018EB38[16]; +extern s32 D_8018EB78; +extern s32 D_8018EB7C; +extern s32 D_8018EB84; +extern SaveData D_8018EB90; +extern union GrandPrixPointsUnion D_8018ED10; // Direct reference to the grandPrixPoints section of save data +extern u8 D_8018ED11; +extern u8 D_8018ED12; +extern u8 D_8018ED13; +extern u8 gSaveDataSoundMode; // D_8018ED14 +extern u8 D_8018ED16; // D_8018EB90.checksum[1] +extern u8 D_8018ED17; // D_8018EB90.checksum[2] +extern u8 D_8018ED4E; // D_8018EB90.onlyBestTimeTrialRecords[0].unknownBytes[6] +extern union GrandPrixPointsUnion D_8018ED88; // D_8018EB90.grandPrixPointsBackup[0] +extern u8 D_8018ED89; +extern u8 D_8018ED8A; +extern u8 D_8018ED8B; +extern u8 D_8018ED8E; // D_8018EB90.checksumBackup[1] +extern u8 D_8018ED8F; // D_8018EB90.checksumBackup[2] +extern u32 D_8018EDB8; +extern u32 D_8018EDBC; +extern s8 D_8018EDE5; +extern s8 D_8018EDE6; +extern s8 D_8018EDE7; +extern s8 D_8018EDEC; +extern u8 gSoundMode; // D_8018EDF2 +extern s8 D_8018EDF3; +extern s8 gTimeTrialDataCourseIndex; // D_8018EDF7 +extern s8 gCourseRecordsMenuSelection; // D_8018EDF8 +extern s32 gMenuTimingCounter; // D_8018EE00 +extern s8 gCupSelection; // D_8018EE09 +extern s8 D_8018EE0A; +extern s8 gCupCourseSelection; // D_8018EE0B +extern struct_8018EE10_entry D_8018EE10[]; + +#endif diff --git a/src/code_80281780.c b/src/code_80281780.c index 2533945e2..7c16b1c15 100644 --- a/src/code_80281780.c +++ b/src/code_80281780.c @@ -57,7 +57,7 @@ void func_802818BC(void) { s32 sp1C; s32 temp_v0_2; - if (D_8018EDF3 != 2) { + if (D_8018EDF3 != TWO_PLAYERS_SELECTED) { D_802874D8.unk_1D = func_80281880(0); D_802874D8.unk_1E = gCharacterSelections[0]; return; diff --git a/src/code_80296A50.c b/src/code_80296A50.c index 8b4515cfa..8043a6a20 100644 --- a/src/code_80296A50.c +++ b/src/code_80296A50.c @@ -4348,7 +4348,7 @@ GLOBAL_ASM("asm/non_matchings/code_actors/place_segment_06.s") s16 func_8029EC88(f32 *, s16 *, ? *, ?); // extern ? load_giant_egg(? *, ?, ?, ?); // extern s16 random_u16(); // extern -extern s16 D_800DC648; +extern s16 gPlaceItemBoxes; extern ? D_8015F9B8; extern f32 gCourseDirection; extern ? gSegmentTable; @@ -4376,7 +4376,7 @@ void place_all_item_boxes(u32 arg0) { temp_s0 = *(&gSegmentTable + ((arg0 >> 0x18) * 4)) + (arg0 & 0xFFFFFF) + 0x80000000; phi_s0 = temp_s0; - if ((gModeSelection != TIME_TRIALS) && (D_800DC648 != 0)) { + if ((gModeSelection != TIME_TRIALS) && (gPlaceItemBoxes != 0)) { load_giant_egg(&sp60, 0, 0, 0); temp_v1 = *temp_s0; phi_v1 = temp_v1;