From d324dd7f3b6c9f0aaec58a4f73c3b30626a9319e Mon Sep 17 00:00:00 2001 From: Tyler McGavran Date: Sun, 12 Dec 2021 01:14:25 -0500 Subject: [PATCH] Identified some variables related to sound mode (#90) * Identified some variables related to sound mode Signed-off-by: Taggerung --- asm/bss_8001C4D0.s | 6 +- .../code_80091750/func_80095574.s | 8 +- .../code_80091750/func_8009CE1C.s | 4 +- .../code_80091750/func_8009E650.s | 4 +- .../code_80091750/func_800A1FB0.s | 8 +- .../code_800AF9B0/func_800B053C.s | 32 +++--- .../code_800AF9B0/func_800B20F4.s | 16 +-- .../code_800AF9B0/func_800B44BC.s | 4 +- .../code_800AF9B0/func_800B4820.s | 8 +- .../code_800AF9B0/func_800B4A10.s | 8 +- .../code_800AF9B0/func_800B4CB4.s | 8 +- .../code_800AF9B0/func_800B5948.s | 8 +- data/data_0DD0A0_2.s | 4 +- include/common_structs.h | 14 ++- include/defines.h | 12 ++ include/variables.h | 36 +++--- src/code_80091750.c | 14 +-- src/code_800AF9B0.c | 108 ++++++++---------- 18 files changed, 158 insertions(+), 144 deletions(-) diff --git a/asm/bss_8001C4D0.s b/asm/bss_8001C4D0.s index 437545891..1ca50207e 100644 --- a/asm/bss_8001C4D0.s +++ b/asm/bss_8001C4D0.s @@ -1943,7 +1943,7 @@ glabel D_8018ED12 glabel D_8018ED13 .skip 1 -glabel D_8018ED14 +glabel gSaveDataSoundMode .skip 2 glabel D_8018ED16 @@ -1967,7 +1967,7 @@ glabel D_8018ED8A glabel D_8018ED8B .skip 1 -glabel D_8018ED8C +glabel gSaveDataSoundModeBackup .skip 2 glabel D_8018ED8E @@ -2087,7 +2087,7 @@ glabel gPlayerCountSelection2 # 0x8018EDF0 glabel D_8018EDF1 .skip 1 -glabel D_8018EDF2 +glabel gSoundMode .skip 1 glabel D_8018EDF3 diff --git a/asm/non_matchings/code_80091750/func_80095574.s b/asm/non_matchings/code_80091750/func_80095574.s index 7153f9d23..11ce7d3c1 100644 --- a/asm/non_matchings/code_80091750/func_80095574.s +++ b/asm/non_matchings/code_80091750/func_80095574.s @@ -166,13 +166,13 @@ glabel L8009568C /* 0963C8 800957C8 24040050 */ li $a0, 80 /* 0963CC 800957CC 0C015DE9 */ jal debug_print_str2 /* 0963D0 800957D0 2405008C */ li $a1, 140 -/* 0963D4 800957D4 3C0E8019 */ lui $t6, %hi(D_8018EDF2) # $t6, 0x8019 -/* 0963D8 800957D8 91CEEDF2 */ lbu $t6, %lo(D_8018EDF2)($t6) -/* 0963DC 800957DC 3C06800E */ lui $a2, %hi(D_800E7700) +/* 0963D4 800957D4 3C0E8019 */ lui $t6, %hi(gSoundMode) # $t6, 0x8019 +/* 0963D8 800957D8 91CEEDF2 */ lbu $t6, %lo(gSoundMode)($t6) +/* 0963DC 800957DC 3C06800E */ lui $a2, %hi(gDebugSoundModeNames) /* 0963E0 800957E0 240400AA */ li $a0, 170 /* 0963E4 800957E4 000E7880 */ sll $t7, $t6, 2 /* 0963E8 800957E8 00CF3021 */ addu $a2, $a2, $t7 -/* 0963EC 800957EC 8CC67700 */ lw $a2, %lo(D_800E7700)($a2) +/* 0963EC 800957EC 8CC67700 */ lw $a2, %lo(gDebugSoundModeNames)($a2) /* 0963F0 800957F0 0C015DE9 */ jal debug_print_str2 /* 0963F4 800957F4 2405008C */ li $a1, 140 /* 0963F8 800957F8 3C188019 */ lui $t8, %hi(D_8018EDEF) # $t8, 0x8019 diff --git a/asm/non_matchings/code_80091750/func_8009CE1C.s b/asm/non_matchings/code_80091750/func_8009CE1C.s index 5fcd3b464..0a0523829 100644 --- a/asm/non_matchings/code_80091750/func_8009CE1C.s +++ b/asm/non_matchings/code_80091750/func_8009CE1C.s @@ -1,6 +1,6 @@ glabel func_8009CE1C -/* 09DA1C 8009CE1C 3C0E8019 */ lui $t6, %hi(D_8018EDF2) # $t6, 0x8019 -/* 09DA20 8009CE20 91CEEDF2 */ lbu $t6, %lo(D_8018EDF2)($t6) +/* 09DA1C 8009CE1C 3C0E8019 */ lui $t6, %hi(gSoundMode) # $t6, 0x8019 +/* 09DA20 8009CE20 91CEEDF2 */ lbu $t6, %lo(gSoundMode)($t6) /* 09DA24 8009CE24 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 09DA28 8009CE28 24010003 */ li $at, 3 /* 09DA2C 8009CE2C 11C10009 */ beq $t6, $at, .L8009CE54 diff --git a/asm/non_matchings/code_80091750/func_8009E650.s b/asm/non_matchings/code_80091750/func_8009E650.s index 4209ce446..c90bc9d59 100644 --- a/asm/non_matchings/code_80091750/func_8009E650.s +++ b/asm/non_matchings/code_80091750/func_8009E650.s @@ -1003,8 +1003,8 @@ glabel L8009F430 /* 0A00F8 8009F4F8 10000035 */ b .L8009F5D0 /* 0A00FC 8009F4FC A0400084 */ sb $zero, 0x84($v0) glabel L8009F500 -/* 0A0100 8009F500 3C188019 */ lui $t8, %hi(D_8018EDF2) # $t8, 0x8019 -/* 0A0104 8009F504 9318EDF2 */ lbu $t8, %lo(D_8018EDF2)($t8) +/* 0A0100 8009F500 3C188019 */ lui $t8, %hi(gSoundMode) # $t8, 0x8019 +/* 0A0104 8009F504 9318EDF2 */ lbu $t8, %lo(gSoundMode)($t8) /* 0A0108 8009F508 10000031 */ b .L8009F5D0 /* 0A010C 8009F50C AFF80004 */ sw $t8, 4($ra) glabel L8009F510 diff --git a/asm/non_matchings/code_80091750/func_800A1FB0.s b/asm/non_matchings/code_80091750/func_800A1FB0.s index 31138fe1a..ad588d163 100644 --- a/asm/non_matchings/code_80091750/func_800A1FB0.s +++ b/asm/non_matchings/code_80091750/func_800A1FB0.s @@ -77,13 +77,13 @@ glabel L800A2054 /* 0A2CD0 800A20D0 26100023 */ addiu $s0, $s0, 0x23 /* 0A2CD4 800A20D4 0C024C36 */ jal set_text_color /* 0A2CD8 800A20D8 24040001 */ li $a0, 1 -/* 0A2CDC 800A20DC 3C088019 */ lui $t0, %hi(D_8018EDF2) # $t0, 0x8019 -/* 0A2CE0 800A20E0 9108EDF2 */ lbu $t0, %lo(D_8018EDF2)($t0) -/* 0A2CE4 800A20E4 3C06800E */ lui $a2, %hi(D_800E7710) +/* 0A2CDC 800A20DC 3C088019 */ lui $t0, %hi(gSoundMode) # $t0, 0x8019 +/* 0A2CE0 800A20E0 9108EDF2 */ lbu $t0, %lo(gSoundMode)($t0) +/* 0A2CE4 800A20E4 3C06800E */ lui $a2, %hi(gSoundModeNames) /* 0A2CE8 800A20E8 240400E6 */ li $a0, 230 /* 0A2CEC 800A20EC 00084880 */ sll $t1, $t0, 2 /* 0A2CF0 800A20F0 00C93021 */ addu $a2, $a2, $t1 -/* 0A2CF4 800A20F4 8CC67710 */ lw $a2, %lo(D_800E7710)($a2) +/* 0A2CF4 800A20F4 8CC67710 */ lw $a2, %lo(gSoundModeNames)($a2) /* 0A2CF8 800A20F8 24050078 */ li $a1, 120 /* 0A2CFC 800A20FC 00003825 */ move $a3, $zero /* 0A2D00 800A2100 E7B60010 */ swc1 $f22, 0x10($sp) diff --git a/asm/non_matchings/code_800AF9B0/func_800B053C.s b/asm/non_matchings/code_800AF9B0/func_800B053C.s index ef0f940ca..1d84c976d 100644 --- a/asm/non_matchings/code_800AF9B0/func_800B053C.s +++ b/asm/non_matchings/code_800AF9B0/func_800B053C.s @@ -117,23 +117,23 @@ glabel L800B05E0 .L800B06F8: /* 0B12F8 800B06F8 8FAE002C */ lw $t6, 0x2c($sp) .L800B06FC: -/* 0B12FC 800B06FC 3C038019 */ lui $v1, %hi(D_8018EDF2) # $v1, 0x8019 -/* 0B1300 800B0700 2463EDF2 */ addiu $v1, %lo(D_8018EDF2) # addiu $v1, $v1, -0x120e +/* 0B12FC 800B06FC 3C038019 */ lui $v1, %hi(gSoundMode) # $v1, 0x8019 +/* 0B1300 800B0700 2463EDF2 */ addiu $v1, %lo(gSoundMode) # addiu $v1, $v1, -0x120e /* 0B1304 800B0704 11C00014 */ beqz $t6, .L800B0758 /* 0B1308 800B0708 00000000 */ nop /* 0B130C 800B070C 90620000 */ lbu $v0, ($v1) /* 0B1310 800B0710 8D0F0004 */ lw $t7, 4($t0) -/* 0B1314 800B0714 3C018019 */ lui $at, %hi(D_8018ED14) # $at, 0x8019 +/* 0B1314 800B0714 3C018019 */ lui $at, %hi(gSaveDataSoundMode) # $at, 0x8019 /* 0B1318 800B0718 11E2000F */ beq $t7, $v0, .L800B0758 /* 0B131C 800B071C 00000000 */ nop -/* 0B1320 800B0720 A022ED14 */ sb $v0, %lo(D_8018ED14)($at) +/* 0B1320 800B0720 A022ED14 */ sb $v0, %lo(gSaveDataSoundMode)($at) /* 0B1324 800B0724 AFA50020 */ sw $a1, 0x20($sp) /* 0B1328 800B0728 0C02D19C */ jal func_800B4670 /* 0B132C 800B072C AFA80038 */ sw $t0, 0x38($sp) /* 0B1330 800B0730 0C02D652 */ jal func_800B5948 /* 0B1334 800B0734 00000000 */ nop -/* 0B1338 800B0738 3C038019 */ lui $v1, %hi(D_8018EDF2) # $v1, 0x8019 -/* 0B133C 800B073C 2463EDF2 */ addiu $v1, %lo(D_8018EDF2) # addiu $v1, $v1, -0x120e +/* 0B1338 800B0738 3C038019 */ lui $v1, %hi(gSoundMode) # $v1, 0x8019 +/* 0B133C 800B073C 2463EDF2 */ addiu $v1, %lo(gSoundMode) # addiu $v1, $v1, -0x120e /* 0B1340 800B0740 8FA80038 */ lw $t0, 0x38($sp) /* 0B1344 800B0744 90780000 */ lbu $t8, ($v1) /* 0B1348 800B0748 8FA50020 */ lw $a1, 0x20($sp) @@ -141,30 +141,30 @@ glabel L800B05E0 /* 0B1350 800B0750 2529EDEC */ addiu $t1, %lo(D_8018EDEC) # addiu $t1, $t1, -0x1214 /* 0B1354 800B0754 AD180004 */ sw $t8, 4($t0) .L800B0758: -/* 0B1358 800B0758 3C038019 */ lui $v1, %hi(D_8018EDF2) # $v1, 0x8019 +/* 0B1358 800B0758 3C038019 */ lui $v1, %hi(gSoundMode) # $v1, 0x8019 /* 0B135C 800B075C 30B94000 */ andi $t9, $a1, 0x4000 /* 0B1360 800B0760 13200019 */ beqz $t9, .L800B07C8 -/* 0B1364 800B0764 2463EDF2 */ addiu $v1, %lo(D_8018EDF2) # addiu $v1, $v1, -0x120e +/* 0B1364 800B0764 2463EDF2 */ addiu $v1, %lo(gSoundMode) # addiu $v1, $v1, -0x120e /* 0B1368 800B0768 0C0278A0 */ jal func_8009E280 /* 0B136C 800B076C AFA80038 */ sw $t0, 0x38($sp) /* 0B1370 800B0770 3C044900 */ lui $a0, (0x49008002 >> 16) # lui $a0, 0x4900 /* 0B1374 800B0774 0C032384 */ jal play_sound2 /* 0B1378 800B0778 34848002 */ ori $a0, (0x49008002 & 0xFFFF) # ori $a0, $a0, 0x8002 /* 0B137C 800B077C 8FA80038 */ lw $t0, 0x38($sp) -/* 0B1380 800B0780 3C038019 */ lui $v1, %hi(D_8018EDF2) # $v1, 0x8019 -/* 0B1384 800B0784 2463EDF2 */ addiu $v1, %lo(D_8018EDF2) # addiu $v1, $v1, -0x120e +/* 0B1380 800B0780 3C038019 */ lui $v1, %hi(gSoundMode) # $v1, 0x8019 +/* 0B1384 800B0784 2463EDF2 */ addiu $v1, %lo(gSoundMode) # addiu $v1, $v1, -0x120e /* 0B1388 800B0788 90620000 */ lbu $v0, ($v1) /* 0B138C 800B078C 8D0A0004 */ lw $t2, 4($t0) -/* 0B1390 800B0790 3C018019 */ lui $at, %hi(D_8018ED14) # $at, 0x8019 +/* 0B1390 800B0790 3C018019 */ lui $at, %hi(gSaveDataSoundMode) # $at, 0x8019 /* 0B1394 800B0794 51420303 */ beql $t2, $v0, .L800B13A4 /* 0B1398 800B0798 8FBF001C */ lw $ra, 0x1c($sp) -/* 0B139C 800B079C A022ED14 */ sb $v0, %lo(D_8018ED14)($at) +/* 0B139C 800B079C A022ED14 */ sb $v0, %lo(gSaveDataSoundMode)($at) /* 0B13A0 800B07A0 0C02D19C */ jal func_800B4670 /* 0B13A4 800B07A4 AFA80038 */ sw $t0, 0x38($sp) /* 0B13A8 800B07A8 0C02D652 */ jal func_800B5948 /* 0B13AC 800B07AC 00000000 */ nop -/* 0B13B0 800B07B0 3C038019 */ lui $v1, %hi(D_8018EDF2) # $v1, 0x8019 -/* 0B13B4 800B07B4 2463EDF2 */ addiu $v1, %lo(D_8018EDF2) # addiu $v1, $v1, -0x120e +/* 0B13B0 800B07B0 3C038019 */ lui $v1, %hi(gSoundMode) # $v1, 0x8019 +/* 0B13B4 800B07B4 2463EDF2 */ addiu $v1, %lo(gSoundMode) # addiu $v1, $v1, -0x120e /* 0B13B8 800B07B8 8FA80038 */ lw $t0, 0x38($sp) /* 0B13BC 800B07BC 906B0000 */ lbu $t3, ($v1) /* 0B13C0 800B07C0 100002F7 */ b .L800B13A0 @@ -204,8 +204,8 @@ glabel L800B05E0 .L800B0838: /* 0B1438 800B0838 0C02D12F */ jal func_800B44BC /* 0B143C 800B083C 00000000 */ nop -/* 0B1440 800B0840 3C038019 */ lui $v1, %hi(D_8018EDF2) # $v1, 0x8019 -/* 0B1444 800B0844 2463EDF2 */ addiu $v1, %lo(D_8018EDF2) # addiu $v1, $v1, -0x120e +/* 0B1440 800B0840 3C038019 */ lui $v1, %hi(gSoundMode) # $v1, 0x8019 +/* 0B1444 800B0844 2463EDF2 */ addiu $v1, %lo(gSoundMode) # addiu $v1, $v1, -0x120e /* 0B1448 800B0848 90620000 */ lbu $v0, ($v1) /* 0B144C 800B084C 24010001 */ li $at, 1 /* 0B1450 800B0850 3C044900 */ lui $a0, 0x4900 diff --git a/asm/non_matchings/code_800AF9B0/func_800B20F4.s b/asm/non_matchings/code_800AF9B0/func_800B20F4.s index 9a4671309..c64cb26d2 100644 --- a/asm/non_matchings/code_800AF9B0/func_800B20F4.s +++ b/asm/non_matchings/code_800AF9B0/func_800B20F4.s @@ -275,8 +275,8 @@ glabel L800B2414 /* 0B30D8 800B24D8 8042EDF1 */ lb $v0, %lo(D_8018EDF1)($v0) glabel L800B24DC /* 0B30DC 800B24DC 97A3002E */ lhu $v1, 0x2e($sp) -/* 0B30E0 800B24E0 3C108019 */ lui $s0, %hi(D_8018EDF2) # $s0, 0x8019 -/* 0B30E4 800B24E4 2610EDF2 */ addiu $s0, %lo(D_8018EDF2) # addiu $s0, $s0, -0x120e +/* 0B30E0 800B24E0 3C108019 */ lui $s0, %hi(gSoundMode) # $s0, 0x8019 +/* 0B30E4 800B24E4 2610EDF2 */ addiu $s0, %lo(gSoundMode) # addiu $s0, $s0, -0x120e /* 0B30E8 800B24E8 30690100 */ andi $t1, $v1, 0x100 /* 0B30EC 800B24EC 11200018 */ beqz $t1, .L800B2550 /* 0B30F0 800B24F0 00000000 */ nop @@ -298,17 +298,17 @@ glabel L800B24DC /* 0B312C 800B252C 0C02D12F */ jal func_800B44BC /* 0B3130 800B2530 00000000 */ nop /* 0B3134 800B2534 920D0000 */ lbu $t5, ($s0) -/* 0B3138 800B2538 3C018019 */ lui $at, %hi(D_8018ED14) # $at, 0x8019 +/* 0B3138 800B2538 3C018019 */ lui $at, %hi(gSaveDataSoundMode) # $at, 0x8019 /* 0B313C 800B253C 0C02D19C */ jal func_800B4670 -/* 0B3140 800B2540 A02DED14 */ sb $t5, %lo(D_8018ED14)($at) +/* 0B3140 800B2540 A02DED14 */ sb $t5, %lo(gSaveDataSoundMode)($at) /* 0B3144 800B2544 0C02D652 */ jal func_800B5948 /* 0B3148 800B2548 00000000 */ nop /* 0B314C 800B254C 8FA30024 */ lw $v1, 0x24($sp) .L800B2550: -/* 0B3150 800B2550 3C108019 */ lui $s0, %hi(D_8018EDF2) # $s0, 0x8019 +/* 0B3150 800B2550 3C108019 */ lui $s0, %hi(gSoundMode) # $s0, 0x8019 /* 0B3154 800B2554 306E0200 */ andi $t6, $v1, 0x200 /* 0B3158 800B2558 11C00015 */ beqz $t6, .L800B25B0 -/* 0B315C 800B255C 2610EDF2 */ addiu $s0, %lo(D_8018EDF2) # addiu $s0, $s0, -0x120e +/* 0B315C 800B255C 2610EDF2 */ addiu $s0, %lo(gSoundMode) # addiu $s0, $s0, -0x120e /* 0B3160 800B2560 92020000 */ lbu $v0, ($s0) /* 0B3164 800B2564 24010002 */ li $at, 2 /* 0B3168 800B2568 3C044900 */ lui $a0, (0x49008000 >> 16) # lui $a0, 0x4900 @@ -326,9 +326,9 @@ glabel L800B24DC /* 0B3194 800B2594 0C02D12F */ jal func_800B44BC /* 0B3198 800B2598 00000000 */ nop /* 0B319C 800B259C 92080000 */ lbu $t0, ($s0) -/* 0B31A0 800B25A0 3C018019 */ lui $at, %hi(D_8018ED14) # $at, 0x8019 +/* 0B31A0 800B25A0 3C018019 */ lui $at, %hi(gSaveDataSoundMode) # $at, 0x8019 /* 0B31A4 800B25A4 0C02D19C */ jal func_800B4670 -/* 0B31A8 800B25A8 A028ED14 */ sb $t0, %lo(D_8018ED14)($at) +/* 0B31A8 800B25A8 A028ED14 */ sb $t0, %lo(gSaveDataSoundMode)($at) /* 0B31AC 800B25AC 8FA30024 */ lw $v1, 0x24($sp) .L800B25B0: /* 0B31B0 800B25B0 30690800 */ andi $t1, $v1, 0x800 diff --git a/asm/non_matchings/code_800AF9B0/func_800B44BC.s b/asm/non_matchings/code_800AF9B0/func_800B44BC.s index 1895f0595..d7b1d482d 100644 --- a/asm/non_matchings/code_800AF9B0/func_800B44BC.s +++ b/asm/non_matchings/code_800AF9B0/func_800B44BC.s @@ -5,9 +5,9 @@ glabel func_800B44BC /* 0B50C8 800B44C8 25CE2BE4 */ addiu $t6, %lo(D_800F2BE4) # addiu $t6, $t6, 0x2be4 /* 0B50CC 800B44CC 8DC10000 */ lw $at, ($t6) /* 0B50D0 800B44D0 27A50020 */ addiu $a1, $sp, 0x20 -/* 0B50D4 800B44D4 3C038019 */ lui $v1, %hi(D_8018EDF2) # $v1, 0x8019 +/* 0B50D4 800B44D4 3C038019 */ lui $v1, %hi(gSoundMode) # $v1, 0x8019 /* 0B50D8 800B44D8 ACA10000 */ sw $at, ($a1) -/* 0B50DC 800B44DC 9063EDF2 */ lbu $v1, %lo(D_8018EDF2)($v1) +/* 0B50DC 800B44DC 9063EDF2 */ lbu $v1, %lo(gSoundMode)($v1) /* 0B50E0 800B44E0 24010001 */ li $at, 1 /* 0B50E4 800B44E4 10600004 */ beqz $v1, .L800B44F8 /* 0B50E8 800B44E8 00601025 */ move $v0, $v1 diff --git a/asm/non_matchings/code_800AF9B0/func_800B4820.s b/asm/non_matchings/code_800AF9B0/func_800B4820.s index 1dfbf735e..f7c0d83b0 100644 --- a/asm/non_matchings/code_800AF9B0/func_800B4820.s +++ b/asm/non_matchings/code_800AF9B0/func_800B4820.s @@ -7,13 +7,13 @@ glabel func_800B4820 /* 0B5434 800B4834 A020ED12 */ sb $zero, %lo(D_8018ED12)($at) /* 0B5438 800B4838 3C018019 */ lui $at, %hi(D_8018ED13) # $at, 0x8019 /* 0B543C 800B483C A020ED13 */ sb $zero, %lo(D_8018ED13)($at) -/* 0B5440 800B4840 3C018019 */ lui $at, %hi(D_8018ED14) # $at, 0x8019 +/* 0B5440 800B4840 3C018019 */ lui $at, %hi(gSaveDataSoundMode) # $at, 0x8019 /* 0B5444 800B4844 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0B5448 800B4848 A020ED14 */ sb $zero, %lo(D_8018ED14)($at) +/* 0B5448 800B4848 A020ED14 */ sb $zero, %lo(gSaveDataSoundMode)($at) /* 0B544C 800B484C AFBF0014 */ sw $ra, 0x14($sp) -/* 0B5450 800B4850 3C018019 */ lui $at, %hi(D_8018EDF2) # $at, 0x8019 +/* 0B5450 800B4850 3C018019 */ lui $at, %hi(gSoundMode) # $at, 0x8019 /* 0B5454 800B4854 0C02D12F */ jal func_800B44BC -/* 0B5458 800B4858 A020EDF2 */ sb $zero, %lo(D_8018EDF2)($at) +/* 0B5458 800B4858 A020EDF2 */ sb $zero, %lo(gSoundMode)($at) /* 0B545C 800B485C 0C02D19C */ jal func_800B4670 /* 0B5460 800B4860 00000000 */ nop /* 0B5464 800B4864 8FBF0014 */ lw $ra, 0x14($sp) diff --git a/asm/non_matchings/code_800AF9B0/func_800B4A10.s b/asm/non_matchings/code_800AF9B0/func_800B4A10.s index 9d51c33fd..60fed7ede 100644 --- a/asm/non_matchings/code_800AF9B0/func_800B4A10.s +++ b/asm/non_matchings/code_800AF9B0/func_800B4A10.s @@ -20,10 +20,10 @@ glabel func_800B4A10 /* 0B5654 800B4A54 00000000 */ nop /* 0B5658 800B4A58 0C02D32D */ jal func_800B4CB4 /* 0B565C 800B4A5C 00000000 */ nop -/* 0B5660 800B4A60 3C0E8019 */ lui $t6, %hi(D_8018ED14) # $t6, 0x8019 -/* 0B5664 800B4A64 91CEED14 */ lbu $t6, %lo(D_8018ED14)($t6) -/* 0B5668 800B4A68 3C028019 */ lui $v0, %hi(D_8018EDF2) # $v0, 0x8019 -/* 0B566C 800B4A6C 2442EDF2 */ addiu $v0, %lo(D_8018EDF2) # addiu $v0, $v0, -0x120e +/* 0B5660 800B4A60 3C0E8019 */ lui $t6, %hi(gSaveDataSoundMode) # $t6, 0x8019 +/* 0B5664 800B4A64 91CEED14 */ lbu $t6, %lo(gSaveDataSoundMode)($t6) +/* 0B5668 800B4A68 3C028019 */ lui $v0, %hi(gSoundMode) # $v0, 0x8019 +/* 0B566C 800B4A6C 2442EDF2 */ addiu $v0, %lo(gSoundMode) # addiu $v0, $v0, -0x120e /* 0B5670 800B4A70 31CF00FF */ andi $t7, $t6, 0xff /* 0B5674 800B4A74 29E10004 */ slti $at, $t7, 4 /* 0B5678 800B4A78 14200003 */ bnez $at, .L800B4A88 diff --git a/asm/non_matchings/code_800AF9B0/func_800B4CB4.s b/asm/non_matchings/code_800AF9B0/func_800B4CB4.s index 15c13dc73..79872b9f3 100644 --- a/asm/non_matchings/code_800AF9B0/func_800B4CB4.s +++ b/asm/non_matchings/code_800AF9B0/func_800B4CB4.s @@ -34,12 +34,12 @@ glabel func_800B4CB4 /* 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(D_8018ED8C) # $t2, 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(D_8018ED8C)($t2) -/* 0B5948 800B4D48 3C018019 */ lui $at, %hi(D_8018ED14) # $at, 0x8019 +/* 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(D_8018ED14)($at) +/* 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) diff --git a/asm/non_matchings/code_800AF9B0/func_800B5948.s b/asm/non_matchings/code_800AF9B0/func_800B5948.s index efc63909c..43d58bc97 100644 --- a/asm/non_matchings/code_800AF9B0/func_800B5948.s +++ b/asm/non_matchings/code_800AF9B0/func_800B5948.s @@ -14,14 +14,14 @@ glabel func_800B5948 /* 0B6578 800B5978 A038ED8A */ sb $t8, %lo(D_8018ED8A)($at) /* 0B657C 800B597C 9339ED13 */ lbu $t9, %lo(D_8018ED13)($t9) /* 0B6580 800B5980 3C018019 */ lui $at, %hi(D_8018ED8B) # $at, 0x8019 -/* 0B6584 800B5984 3C088019 */ lui $t0, %hi(D_8018ED14) # $t0, 0x8019 +/* 0B6584 800B5984 3C088019 */ lui $t0, %hi(gSaveDataSoundMode) # $t0, 0x8019 /* 0B6588 800B5988 A039ED8B */ sb $t9, %lo(D_8018ED8B)($at) -/* 0B658C 800B598C 9108ED14 */ lbu $t0, %lo(D_8018ED14)($t0) +/* 0B658C 800B598C 9108ED14 */ lbu $t0, %lo(gSaveDataSoundMode)($t0) /* 0B6590 800B5990 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 0B6594 800B5994 AFBF0014 */ sw $ra, 0x14($sp) -/* 0B6598 800B5998 3C018019 */ lui $at, %hi(D_8018ED8C) # $at, 0x8019 +/* 0B6598 800B5998 3C018019 */ lui $at, %hi(gSaveDataSoundModeBackup) # $at, 0x8019 /* 0B659C 800B599C 0C02D67D */ jal func_800B59F4 -/* 0B65A0 800B59A0 A028ED8C */ sb $t0, %lo(D_8018ED8C)($at) +/* 0B65A0 800B59A0 A028ED8C */ sb $t0, %lo(gSaveDataSoundModeBackup)($at) /* 0B65A4 800B59A4 3C018019 */ lui $at, %hi(D_8018ED8E) # $at, 0x8019 /* 0B65A8 800B59A8 0C02D6AB */ jal func_800B5AAC /* 0B65AC 800B59AC A022ED8E */ sb $v0, %lo(D_8018ED8E)($at) diff --git a/data/data_0DD0A0_2.s b/data/data_0DD0A0_2.s index 5a91fcf0c..d2ff0c5d7 100644 --- a/data/data_0DD0A0_2.s +++ b/data/data_0DD0A0_2.s @@ -1775,10 +1775,10 @@ glabel D_800E76EC .word D_800EFE50, D_800EFE54, D_800EFE60, D_800EFE6C .word D_800EFE78 -glabel D_800E7700 +glabel gDebugSoundModeNames .word D_800EFE84, D_800EFE8C, D_800EFE98, D_800EFE9C -glabel D_800E7710 +glabel gSoundModeNames .word D_800EFEA8, D_800EFEB0, D_800EFEBC, D_800EFEC0 glabel D_800E7720 diff --git a/include/common_structs.h b/include/common_structs.h index 3fee80472..383d1e521 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -337,17 +337,21 @@ typedef struct { // 1st place is 3 points, 2nd is 2, etc. // 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 - // They appear related to the Grand Prix points in some capacity but I can't figure out how - u8 unknownBytes1[4]; + u8 unknownBytes[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 what these bytes are used for, they appear to be identical to - // grandPrixPoints and unknownBytes1 - u8 unknownBytes2[8]; + // 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? + u8 grandPrixPointsBackup[4]; + u8 soundModeBackup; + u8 unknownBytesBackup[3]; } SaveData; // size = 0x200 typedef struct { diff --git a/include/defines.h b/include/defines.h index d8a5e7475..2c811224f 100644 --- a/include/defines.h +++ b/include/defines.h @@ -95,4 +95,16 @@ #define TEXT_BLUE_GREEN_RED_CYCLE_1 4 #define TEXT_BLUE_GREEN_RED_CYCLE_2 5 + +/** + * Sound mode options + * Option 2 appears to be unused, as such its probably not + * a valid option +**/ +#define SOUND_STEREO 0 +#define SOUND_HEADPHONES 1 +#define SOUND_UNUSED 2 +#define SOUND_MONO 3 +#define NUM_SOUND_MODES 4 + #endif // DEFINES_H diff --git a/include/variables.h b/include/variables.h index 56ad74871..379cb4bbd 100644 --- a/include/variables.h +++ b/include/variables.h @@ -2,24 +2,32 @@ #define _VARIABLES_H_ #include "global.h" +#include "defines.h" -extern s32 gCCSelection; -extern s8 gCourseSelection; -extern s16 gCurrentCourseId; -extern s8 gCupSelection; -extern s8 gHumanPlayerCount; -extern f32 gKartFrictionTable[]; -extern f32 gKartBoundingBoxTable[]; -extern f32 gKartGravityTable[]; -extern s8 gGPOverallRanks[8]; -extern s32 gModeSelection; -extern s32 gPlayerCountSelection1; +extern s32 gCCSelection; +extern s8 gCourseSelection; +extern char *gCupNames[]; // D_800E7500 +extern s8 gCupSelection; +extern s16 gCurrentCourseId; +extern char *gDebugSoundModeNames[NUM_SOUND_MODES]; // D_800E7700 +extern s16 gGPCurrentRacePlayerIdByRank[8]; // D_80164360 +extern s8 gHumanPlayerCount; +extern f32 gKartFrictionTable[]; +extern f32 gKartBoundingBoxTable[]; +extern f32 gKartGravityTable[]; +extern s8 gGPOverallRanks[8]; +extern s32 gModeSelection; +extern s32 gPlayerCountSelection1; +extern u8 gSaveDataSoundMode; // D_8018ED14 +extern u8 gSaveDataSoundModeBackup; // D_8018ED8C +extern u8 gSoundMode; // D_8018EDF2 +extern char *gSoundModeNames[NUM_SOUND_MODES]; // D_800E7710 // Indexed by Player ID. Track time in seconds since player has last crossed the finish line -extern f32 gTimePlayerLastTouchedFinishLine[8]; // D_8015F898 +extern f32 gTimePlayerLastTouchedFinishLine[8]; // D_8015F898 // Indexed by Player ID. Tracks the percentage of the track has been completed -extern f32 gTrackCompletionPercentByPlayerId[8]; // D_801644D0 +extern f32 gTrackCompletionPercentByPlayerId[8]; // D_801644D0 // Indexed by Rank. Tracks the percentage of the track has been completed -extern f32 gTrackCompletionPercentByRank[8]; // D_80162FD8 +extern f32 gTrackCompletionPercentByRank[8]; // D_80162FD8 extern struct_D_802874D8 D_802874D8; extern s16 D_801650D0[4][8]; diff --git a/src/code_80091750.c b/src/code_80091750.c index f8fb7c867..b68b0a881 100644 --- a/src/code_80091750.c +++ b/src/code_80091750.c @@ -2148,7 +2148,7 @@ static ? D_020076E0; /* unable to generate initia static ? D_800E7614; /* unable to generate initializer; const */ static ? D_800E7688; /* unable to generate initializer; const */ static ? D_800E76EC; /* unable to generate initializer; const */ -static ? D_800E7700; /* unable to generate initializer; const */ +static ? gDebugSoundModeNames; /* unable to generate initializer; const */ s16 gCurrentCourseId; /* unable to generate initializer */ void func_80095574(void) { @@ -2213,7 +2213,7 @@ void func_80095574(void) { debug_print_str2(0x50, 0x82, "player"); debug_print_str2(0xAA, 0x82, *(&D_800E7688 + (D_800E86A8 * 4))); debug_print_str2(0x50, 0x8C, "sound mode"); - debug_print_str2(0xAA, 0x8C, *(&D_800E7700 + (D_8018EDF2 * 4))); + debug_print_str2(0xAA, 0x8C, gDebugSoundModeNames[gSoundMode]); if (D_8018EDEF == 7) { debug_print_str2(0x50, 0x96, "push b to get all goldcup"); } @@ -6456,10 +6456,10 @@ GLOBAL_ASM("asm/non_matchings/code_80091750/func_8009CDFC.s") #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_800C3448(?); // extern -extern u8 D_8018EDF2; +extern u8 gSoundMode; void func_8009CE1C(void) { - if ((D_8018EDF2 != 3) && (gPlayerCountSelection1 >= 2)) { + if ((gSoundMode != 3) && (gPlayerCountSelection1 >= 2)) { func_800C3448(0xE0000002); } } @@ -8358,7 +8358,7 @@ block_63: D_8018EE10.unk84 = 0; return; case 0xF0: /* switch 2 */ - phi_ra->unk4 = D_8018EDF2; + phi_ra->unk4 = gSoundMode; return; case 0xF1: /* switch 2 */ func_800996BC(segmented_to_virtual(&D_02004638, arg3), 0); @@ -9946,7 +9946,7 @@ Gfx *draw_box(Gfx *, ?, ?, ?, s32, s32, s32, s32, s32); /* extern */ ? set_text_color(s32); /* extern */ extern ? D_8018EE10; static ? D_800E75C4; /* unable to generate initializer; const */ -static ? D_800E7710; /* unable to generate initializer; const */ +static ? gSoundModeNames; /* unable to generate initializer; const */ static ? *D_800E7840[2] = { "quit", "erase" }; /* const */ static ? *D_800E7868[4] = { "RETURN TO GAME SELECT", @@ -10076,7 +10076,7 @@ void func_800A1FB0(void *arg0) { phi_s0 += 0x23; } while (temp_s2 != 4); set_text_color(TEXT_GREEN); - draw_text(0xE6, 0x78, *(&D_800E7710 + (D_8018EDF2 * 4)), 0, 1.0f, 1.0f); + draw_text(0xE6, 0x78, gSoundModeNames[gSoundMode], 0, 1.0f, 1.0f); block_98: phi_v1_4 = D_8018EDEC; break; diff --git a/src/code_800AF9B0.c b/src/code_800AF9B0.c index 383964446..e35f3a6db 100644 --- a/src/code_800AF9B0.c +++ b/src/code_800AF9B0.c @@ -607,14 +607,13 @@ void func_800B053C(void *arg0, u16 arg1) { } } if (sp2C != 0) { - temp_v0_2 = D_8018EDF2; - if (temp_t0->unk4 != temp_v0_2) { - D_8018ED14 = temp_v0_2; + if (temp_t0->unk4 != gSoundMode) { + gSaveDataSoundMode = gSoundMode; sp20 = phi_a1; sp38 = temp_t0; func_800B4670(); func_800B5948(); - temp_t0->unk4 = D_8018EDF2; + temp_t0->unk4 = gSoundMode; phi_t1 = &D_8018EDEC; } } @@ -622,13 +621,12 @@ void func_800B053C(void *arg0, u16 arg1) { sp38 = temp_t0; func_8009E280(); play_sound2(0x49008002); - temp_v0_3 = D_8018EDF2; - if (temp_t0->unk4 != temp_v0_3) { - D_8018ED14 = temp_v0_3; + if (temp_t0->unk4 != gSoundMode) { + gSaveDataSoundMode = gSoundMode; sp38 = temp_t0; func_800B4670(); func_800B5948(); - temp_t0->unk4 = D_8018EDF2; + temp_t0->unk4 = gSoundMode; return; } /* Duplicate return node #166. Try simplifying control flow for better match */ @@ -716,29 +714,28 @@ void func_800B053C(void *arg0, u16 arg1) { play_sound2(0x4900FF07); return; } - temp_v0_7 = D_8018EDF2; - if (temp_v0_7 < 3) { - D_8018EDF2 = temp_v0_7 + 1; + if (gSoundMode < SOUND_MONO) { + gSoundMode += 1; } else { - D_8018EDF2 = 0; + gSoundMode = SOUND_STEREO; } - if (D_8018EDF2 == 2) { - D_8018EDF2 = 3; + if (gSoundMode == SOUND_UNUSED) { + gSoundMode = SOUND_MONO; } func_800B44BC(); - temp_v0_8 = D_8018EDF2; - if (temp_v0_8 != 0) { - if (temp_v0_8 != 1) { - if (temp_v0_8 != 3) { - return; - } + switch(gSoundMode){ + case SOUND_STEREO: + play_sound2(0x49008024); + break; + case SOUND_HEADPHONES: + play_sound2(0x49008025); + break; + case SOUND_MONO: play_sound2(0x49008029); - return; - } - play_sound2(0x49008025); - return; + break; + default: + break; } - play_sound2(0x49008024); return; } func_8009E280(); @@ -1768,33 +1765,29 @@ void func_800B20F4(void *arg0, s32 arg1) { break; case 6: if ((sp2E & 0x100) != 0) { - temp_v0_7 = D_8018EDF2; - temp_t2_2 = temp_v0_7 + 1; - if (temp_v0_7 < 3) { - D_8018EDF2 = temp_t2_2; - if ((temp_t2_2 & 0xFF) == 2) { - D_8018EDF2 = 3; + if (gSoundMode < SOUND_MONO) { + gSoundMode += 1; + if ((gSoundMode & 0xFF) == SOUND_UNUSED) { + gSoundMode = SOUND_MONO; } sp24 = sp2E; play_sound2(0x49008000); func_800B44BC(); - D_8018ED14 = D_8018EDF2; + gSaveDataSoundMode = gSoundMode; func_800B4670(); func_800B5948(); } } if ((sp2E & 0x200) != 0) { - temp_v0_8 = D_8018EDF2; - temp_t7 = temp_v0_8 - 1; - if (temp_v0_8 > 0) { - D_8018EDF2 = temp_t7; - if ((temp_t7 & 0xFF) == 2) { - D_8018EDF2 = 1; + if (gSoundMode > SOUND_STEREO) { + gSoundMode -= 1; + if ((gSoundMode & 0xFF) == SOUND_UNUSED) { + gSoundMode = SOUND_HEADPHONES; } sp24 = sp2E; play_sound2(0x49008000); func_800B44BC(); - D_8018ED14 = D_8018EDF2; + gSaveDataSoundMode = gSoundMode; func_800B4670(); } } @@ -2809,15 +2802,13 @@ GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B44AC.s") //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 ? func_800C3448(s32, s32 *); // extern extern s32 D_800F2BE4; -extern u8 D_8018EDF2; +extern u8 gSoundMode; void func_800B44BC(void) { s32 sp20; - u8 temp_v1; sp20 = D_800F2BE4; - temp_v1 = D_8018EDF2; - if ((temp_v1 == 0) || (temp_v1 == 1) || (temp_v1 == 3)) { + if ((gSoundMode == SOUND_STEREO) || (gSoundMode == SOUND_HEADPHONES) || (gSoundMode == SOUND_MONO)) { func_800C3448(*(&sp20 + temp_v1) | 0xE0000000, &sp20); } } @@ -2963,16 +2954,16 @@ extern s8 D_8018ED10; extern s8 D_8018ED11; extern s8 D_8018ED12; extern s8 D_8018ED13; -extern s8 D_8018ED14; -extern s8 D_8018EDF2; +extern s8 gSaveDataSoundMode; +extern s8 gSoundMode; void func_800B4820(void) { D_8018ED10 = 0; D_8018ED11 = 0; D_8018ED12 = 0; D_8018ED13 = 0; - D_8018ED14 = 0; - D_8018EDF2 = 0; + gSaveDataSoundMode = SOUND_STEREO; + gSoundMode = SOUND_STEREO; func_800B44BC(); func_800B4670(); } @@ -3047,8 +3038,8 @@ GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800B49E4.s") ? func_800B4A9C(s32); // extern ? func_800B4CB4(); // extern extern u8 D_8018EB90; -extern u8 D_8018ED14; -extern u8 D_8018EDF2; +extern u8 gSaveDataSoundMode; +extern u8 gSoundMode; extern OSMesgQueue gSIEventMesgQueue; void func_800B4A10(void) { @@ -3064,10 +3055,9 @@ void func_800B4A10(void) { phi_s0 = temp_s0; } while (temp_s0 != 0x10); func_800B4CB4(); - temp_t6 = D_8018ED14; - D_8018EDF2 = temp_t6; - if ((temp_t6 & 0xFF) >= 4) { - D_8018EDF2 = 3; + gSoundMode = gSaveDataSoundMode; + if ((gSaveDataSoundMode & 0xFF) >= NUM_SOUND_OPTIONS) { + gSoundMode = SOUND_MONO; } } #else @@ -3166,14 +3156,14 @@ extern u8 D_8018ED10; extern u8 D_8018ED11; extern u8 D_8018ED12; extern u8 D_8018ED13; -extern u8 D_8018ED14; +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 D_8018ED8C; +extern u8 gSaveDataSoundModeBackup; extern OSMesgQueue gSIEventMesgQueue; void func_800B4CB4(void) { @@ -3184,7 +3174,7 @@ void func_800B4CB4(void) { D_8018ED11 = D_8018ED89; D_8018ED12 = D_8018ED8A; D_8018ED13 = D_8018ED8B; - D_8018ED14 = D_8018ED8C; + gSaveDataSoundMode = gSaveDataSoundModeBackup; D_8018ED16 = func_800B59F4(); D_8018ED17 = func_800B5AAC(); osEepromLongWrite(&gSIEventMesgQueue, ((&D_8018ED10 - &D_8018EB90) >> 3) & 0xFF, &D_8018ED10, 8); @@ -3750,12 +3740,12 @@ extern u8 D_8018ED10; extern u8 D_8018ED11; extern u8 D_8018ED12; extern u8 D_8018ED13; -extern u8 D_8018ED14; +extern u8 gSaveDataSoundMode; extern u8 D_8018ED88; extern u8 D_8018ED89; extern u8 D_8018ED8A; extern u8 D_8018ED8B; -extern u8 D_8018ED8C; +extern u8 gSaveDataSoundModeBackup; extern s8 D_8018ED8E; extern s8 D_8018ED8F; extern OSMesgQueue gSIEventMesgQueue; @@ -3765,7 +3755,7 @@ void func_800B5948(void) { D_8018ED89 = D_8018ED11; D_8018ED8A = D_8018ED12; D_8018ED8B = D_8018ED13; - D_8018ED8C = D_8018ED14; + gSaveDataSoundModeBackup = gSaveDataSoundMode; D_8018ED8E = func_800B59F4(); D_8018ED8F = func_800B5AAC(); osEepromLongWrite(&gSIEventMesgQueue, ((&D_8018ED88 - &D_8018EB90) >> 3) & 0xFF, &D_8018ED88, 8);