From 5f6e424d3bfd6a67665d274ccc3badcef6aa7cc1 Mon Sep 17 00:00:00 2001 From: Fazana <52551480+FazanaJ@users.noreply.github.com> Date: Sat, 21 May 2022 20:14:57 +0100 Subject: [PATCH] started identifying sound ID's I already know this PR is gonna be the actual mother of all PR's --- asm/non_matchings/game_text/func_800C2D6C.s | 2 +- asm/non_matchings/game_text/func_800C38B4.s | 2 +- asm/non_matchings/game_ui/func_800A277C.s | 4 +- asm/non_matchings/game_ui/func_800A7B68.s | 6 +- asm/non_matchings/game_ui/func_800ADCBC.s | 4 +- asm/non_matchings/menu/func_80094688.s | 2 +- asm/non_matchings/objects/func_8001EFA4.s | 4 +- asm/non_matchings/objects/func_8001F460.s | 4 +- asm/non_matchings/objects/func_8002125C.s | 2 +- asm/non_matchings/racer/func_80046524.s | 10 +- asm/non_matchings/racer/func_80048C7C.s | 2 +- asm/non_matchings/racer/func_80049794.s | 16 +- asm/non_matchings/racer/func_8004CC20.s | 2 +- asm/non_matchings/racer/func_8004DE38.s | 6 +- asm/non_matchings/racer/func_8004F7F4.s | 4 +- asm/non_matchings/racer/func_80050A28.s | 8 +- asm/non_matchings/racer/func_80053E9C.s | 6 +- asm/non_matchings/racer/func_8005492C.s | 2 +- asm/non_matchings/racer/func_80054FD0.s | 2 +- asm/non_matchings/racer/func_80055EC0.s | 12 +- asm/non_matchings/racer/update_camera_car.s | 2 +- asm/non_matchings/racer/update_camera_plane.s | 2 +- .../unknown_032760/func_8003E694.s | 2 +- .../unknown_032760/func_8003F2E8.s | 4 +- .../unknown_032760/obj_loop_banana.s | 2 +- .../unknown_032760/obj_loop_goldenballoon.s | 2 +- include/sound_ids.h | 557 ++++++++++++++++++ include/structs.h | 3 +- src/audio.c | 4 +- src/audio.h | 4 +- src/game.c | 12 +- src/game_text.c | 2 +- src/menu.c | 6 +- src/object_functions.c | 100 ++-- src/objects.c | 2 +- src/objects.h | 2 +- src/racer.c | 59 +- src/racer.h | 11 +- 38 files changed, 728 insertions(+), 148 deletions(-) create mode 100644 include/sound_ids.h diff --git a/asm/non_matchings/game_text/func_800C2D6C.s b/asm/non_matchings/game_text/func_800C2D6C.s index 851e0302..a760ccc4 100644 --- a/asm/non_matchings/game_text/func_800C2D6C.s +++ b/asm/non_matchings/game_text/func_800C2D6C.s @@ -39,7 +39,7 @@ glabel func_800C2D6C /* 0C39FC 800C2DFC 00000000 */ nop /* 0C3A00 800C2E00 03370019 */ multu $t9, $s7 /* 0C3A04 800C2E04 00002012 */ mflo $a0 -/* 0C3A08 800C2E08 0C00322D */ jal set_timer_region_adjusted +/* 0C3A08 800C2E08 0C00322D */ jal normalise_time /* 0C3A0C 800C2E0C 00000000 */ nop /* 0C3A10 800C2E10 8E280000 */ lw $t0, ($s1) /* 0C3A14 800C2E14 A6820000 */ sh $v0, ($s4) diff --git a/asm/non_matchings/game_text/func_800C38B4.s b/asm/non_matchings/game_text/func_800C38B4.s index 1da47ef0..74092b8f 100644 --- a/asm/non_matchings/game_text/func_800C38B4.s +++ b/asm/non_matchings/game_text/func_800C38B4.s @@ -189,7 +189,7 @@ glabel L800C3B50 /* 0C4758 800C3B58 15800007 */ bnez $t4, .L800C3B78 /* 0C475C 800C3B5C 00000000 */ nop /* 0C4760 800C3B60 920E0001 */ lbu $t6, 1($s0) -/* 0C4764 800C3B64 0C00322D */ jal set_timer_region_adjusted +/* 0C4764 800C3B64 0C00322D */ jal normalise_time /* 0C4768 800C3B68 A28E0000 */ sb $t6, ($s4) /* 0C476C 800C3B6C 8E6F0000 */ lw $t7, ($s3) /* 0C4770 800C3B70 A2E20000 */ sb $v0, ($s7) diff --git a/asm/non_matchings/game_ui/func_800A277C.s b/asm/non_matchings/game_ui/func_800A277C.s index b5f40aed..a9bc0ffc 100644 --- a/asm/non_matchings/game_ui/func_800A277C.s +++ b/asm/non_matchings/game_ui/func_800A277C.s @@ -344,14 +344,14 @@ glabel func_800A277C /* 0A3824 800A2C24 44093000 */ mfc1 $t1, $f6 /* 0A3828 800A2C28 00000000 */ nop .L800A2C2C: -/* 0A382C 800A2C2C 0C00322D */ jal set_timer_region_adjusted +/* 0A382C 800A2C2C 0C00322D */ jal normalise_time /* 0A3830 800A2C30 AFA900A8 */ sw $t1, 0xa8($sp) /* 0A3834 800A2C34 8FA900A8 */ lw $t1, 0xa8($sp) /* 0A3838 800A2C38 00000000 */ nop /* 0A383C 800A2C3C 0049082A */ slt $at, $v0, $t1 /* 0A3840 800A2C40 10200005 */ beqz $at, .L800A2C58 /* 0A3844 800A2C44 24100444 */ li $s0, 1092 -/* 0A3848 800A2C48 0C00322D */ jal set_timer_region_adjusted +/* 0A3848 800A2C48 0C00322D */ jal normalise_time /* 0A384C 800A2C4C 34048CA0 */ li $a0, 36000 /* 0A3850 800A2C50 00404825 */ move $t1, $v0 /* 0A3854 800A2C54 24100444 */ li $s0, 1092 diff --git a/asm/non_matchings/game_ui/func_800A7B68.s b/asm/non_matchings/game_ui/func_800A7B68.s index bd06abb5..4a33ccf7 100644 --- a/asm/non_matchings/game_ui/func_800A7B68.s +++ b/asm/non_matchings/game_ui/func_800A7B68.s @@ -115,13 +115,13 @@ glabel func_800A7B68 /* 0A8914 800A7D14 00000000 */ nop .L800A7D18: /* 0A8918 800A7D18 34048CA0 */ li $a0, 36000 -/* 0A891C 800A7D1C 0C00322D */ jal set_timer_region_adjusted +/* 0A891C 800A7D1C 0C00322D */ jal normalise_time /* 0A8920 800A7D20 AFA90044 */ sw $t1, 0x44($sp) /* 0A8924 800A7D24 8FA90044 */ lw $t1, 0x44($sp) /* 0A8928 800A7D28 0050082A */ slt $at, $v0, $s0 /* 0A892C 800A7D2C 10200005 */ beqz $at, .L800A7D44 /* 0A8930 800A7D30 34048CA0 */ li $a0, 36000 -/* 0A8934 800A7D34 0C00322D */ jal set_timer_region_adjusted +/* 0A8934 800A7D34 0C00322D */ jal normalise_time /* 0A8938 800A7D38 AFA90044 */ sw $t1, 0x44($sp) /* 0A893C 800A7D3C 8FA90044 */ lw $t1, 0x44($sp) /* 0A8940 800A7D40 00408025 */ move $s0, $v0 @@ -136,7 +136,7 @@ glabel func_800A7B68 /* 0A8960 800A7D60 8FA90044 */ lw $t1, 0x44($sp) /* 0A8964 800A7D64 17000006 */ bnez $t8, .L800A7D80 /* 0A8968 800A7D68 34048CA0 */ li $a0, 36000 -/* 0A896C 800A7D6C 0C00322D */ jal set_timer_region_adjusted +/* 0A896C 800A7D6C 0C00322D */ jal normalise_time /* 0A8970 800A7D70 AFA90044 */ sw $t1, 0x44($sp) /* 0A8974 800A7D74 8FA90044 */ lw $t1, 0x44($sp) /* 0A8978 800A7D78 14500028 */ bne $v0, $s0, .L800A7E1C diff --git a/asm/non_matchings/game_ui/func_800ADCBC.s b/asm/non_matchings/game_ui/func_800ADCBC.s index 7679882b..3e4a2a16 100644 --- a/asm/non_matchings/game_ui/func_800ADCBC.s +++ b/asm/non_matchings/game_ui/func_800ADCBC.s @@ -35,7 +35,7 @@ glabel func_800ADCBC /* 0AE940 800ADD40 01E09025 */ move $s2, $t7 /* 0AE944 800ADD44 AFA3004C */ sw $v1, 0x4c($sp) /* 0AE948 800ADD48 00002012 */ mflo $a0 -/* 0AE94C 800ADD4C 0C00322D */ jal set_timer_region_adjusted +/* 0AE94C 800ADD4C 0C00322D */ jal normalise_time /* 0AE950 800ADD50 00000000 */ nop /* 0AE954 800ADD54 860F0000 */ lh $t7, ($s0) /* 0AE958 800ADD58 8FA3004C */ lw $v1, 0x4c($sp) @@ -47,7 +47,7 @@ glabel func_800ADCBC /* 0AE970 800ADD70 00000000 */ nop /* 0AE974 800ADD74 01AE0019 */ multu $t5, $t6 /* 0AE978 800ADD78 00002012 */ mflo $a0 -/* 0AE97C 800ADD7C 0C00322D */ jal set_timer_region_adjusted +/* 0AE97C 800ADD7C 0C00322D */ jal normalise_time /* 0AE980 800ADD80 00000000 */ nop /* 0AE984 800ADD84 860E0004 */ lh $t6, 4($s0) /* 0AE988 800ADD88 860F0002 */ lh $t7, 2($s0) diff --git a/asm/non_matchings/menu/func_80094688.s b/asm/non_matchings/menu/func_80094688.s index 4a399481..b6bdf812 100644 --- a/asm/non_matchings/menu/func_80094688.s +++ b/asm/non_matchings/menu/func_80094688.s @@ -126,7 +126,7 @@ glabel func_80094688 /* 095458 80094858 31F80040 */ andi $t8, $t7, 0x40 /* 09545C 8009485C 13000005 */ beqz $t8, .L80094874 /* 095460 80094860 00000000 */ nop -/* 095464 80094864 0C00322D */ jal set_timer_region_adjusted +/* 095464 80094864 0C00322D */ jal normalise_time /* 095468 80094868 240400F0 */ li $a0, 240 /* 09546C 8009486C 3C018012 */ lui $at, %hi(gIgnorePlayerInput) # $at, 0x8012 /* 095470 80094870 AC2263C4 */ sw $v0, %lo(gIgnorePlayerInput)($at) diff --git a/asm/non_matchings/objects/func_8001EFA4.s b/asm/non_matchings/objects/func_8001EFA4.s index 1dd95977..2b95a4b6 100644 --- a/asm/non_matchings/objects/func_8001EFA4.s +++ b/asm/non_matchings/objects/func_8001EFA4.s @@ -86,7 +86,7 @@ glabel func_8001EFA4 /* 01FCD4 8001F0D4 46209120 */ cvt.s.d $f4, $f18 /* 01FCD8 8001F0D8 E6040008 */ swc1 $f4, 8($s0) /* 01FCDC 8001F0DC 8624000E */ lh $a0, 0xe($s1) -/* 01FCE0 8001F0E0 0C00322D */ jal set_timer_region_adjusted +/* 01FCE0 8001F0E0 0C00322D */ jal normalise_time /* 01FCE4 8001F0E4 AFA5002C */ sw $a1, 0x2c($sp) /* 01FCE8 8001F0E8 8FA5002C */ lw $a1, 0x2c($sp) /* 01FCEC 8001F0EC A602002A */ sh $v0, 0x2a($s0) @@ -130,7 +130,7 @@ glabel func_8001EFA4 /* 01FD84 8001F184 A20F0034 */ sb $t7, 0x34($s0) /* 01FD88 8001F188 AE40006C */ sw $zero, 0x6c($s2) /* 01FD8C 8001F18C 86240024 */ lh $a0, 0x24($s1) -/* 01FD90 8001F190 0C00322D */ jal set_timer_region_adjusted +/* 01FD90 8001F190 0C00322D */ jal normalise_time /* 01FD94 8001F194 00000000 */ nop /* 01FD98 8001F198 A6020036 */ sh $v0, 0x36($s0) /* 01FD9C 8001F19C 82380026 */ lb $t8, 0x26($s1) diff --git a/asm/non_matchings/objects/func_8001F460.s b/asm/non_matchings/objects/func_8001F460.s index 1411ba61..d237668e 100644 --- a/asm/non_matchings/objects/func_8001F460.s +++ b/asm/non_matchings/objects/func_8001F460.s @@ -269,7 +269,7 @@ glabel func_8001F460 /* 020400 8001F800 321900FF */ andi $t9, $s0, 0xff /* 020404 8001F804 27300384 */ addiu $s0, $t9, 0x384 /* 020408 8001F808 AFA80174 */ sw $t0, 0x174($sp) -/* 02040C 8001F80C 0C00322D */ jal set_timer_region_adjusted +/* 02040C 8001F80C 0C00322D */ jal normalise_time /* 020410 8001F810 24040006 */ li $a0, 6 /* 020414 8001F814 8FA80174 */ lw $t0, 0x174($sp) /* 020418 8001F818 82250002 */ lb $a1, 2($s1) @@ -350,7 +350,7 @@ glabel func_8001F460 .L8001F934: /* 020534 8001F934 A7AF00AA */ sh $t7, 0xaa($sp) .L8001F938: -/* 020538 8001F938 0C00322D */ jal set_timer_region_adjusted +/* 020538 8001F938 0C00322D */ jal normalise_time /* 02053C 8001F93C 24040006 */ li $a0, 6 /* 020540 8001F940 9278003C */ lbu $t8, 0x3c($s3) /* 020544 8001F944 00000000 */ nop diff --git a/asm/non_matchings/objects/func_8002125C.s b/asm/non_matchings/objects/func_8002125C.s index e6b8d532..d747bcd4 100644 --- a/asm/non_matchings/objects/func_8002125C.s +++ b/asm/non_matchings/objects/func_8002125C.s @@ -35,7 +35,7 @@ glabel func_8002125C .L800212D8: /* 021ED8 800212D8 84A40024 */ lh $a0, 0x24($a1) /* 021EDC 800212DC AFA60020 */ sw $a2, 0x20($sp) -/* 021EE0 800212E0 0C00322D */ jal set_timer_region_adjusted +/* 021EE0 800212E0 0C00322D */ jal normalise_time /* 021EE4 800212E4 AFA5001C */ sw $a1, 0x1c($sp) /* 021EE8 800212E8 8FA5001C */ lw $a1, 0x1c($sp) /* 021EEC 800212EC 8FA60020 */ lw $a2, 0x20($sp) diff --git a/asm/non_matchings/racer/func_80046524.s b/asm/non_matchings/racer/func_80046524.s index f9e34efd..e710dccb 100644 --- a/asm/non_matchings/racer/func_80046524.s +++ b/asm/non_matchings/racer/func_80046524.s @@ -464,7 +464,7 @@ glabel func_80046524 /* 047714 80046B14 8E25000C */ lw $a1, 0xc($s1) /* 047718 80046B18 8E260010 */ lw $a2, 0x10($s1) /* 04771C 80046B1C 8E270014 */ lw $a3, 0x14($s1) -/* 047720 80046B20 0C0007AA */ jal func_80001EA8 +/* 047720 80046B20 0C0007AA */ jal play_sound_spatial /* 047724 80046B24 AFA00010 */ sw $zero, 0x10($sp) /* 047728 80046B28 02202025 */ move $a0, $s1 /* 04772C 80046B2C 24050162 */ li $a1, 354 @@ -472,7 +472,7 @@ glabel func_80046524 /* 047734 80046B34 0C015C2E */ jal func_800570B8 /* 047738 80046B38 24070082 */ li $a3, 130 .L80046B3C: -/* 04773C 80046B3C 0C00322D */ jal set_timer_region_adjusted +/* 04773C 80046B3C 0C00322D */ jal normalise_time /* 047740 80046B40 2404002D */ li $a0, 45 /* 047744 80046B44 920B020C */ lbu $t3, 0x20c($s0) /* 047748 80046B48 240A0002 */ li $t2, 2 @@ -1139,7 +1139,7 @@ glabel func_80046524 /* 0480F8 800474F8 240500AF */ li $a1, 175 /* 0480FC 800474FC A3A700AD */ sb $a3, 0xad($sp) /* 048100 80047500 A3A900AF */ sb $t1, 0xaf($sp) -/* 048104 80047504 0C015C12 */ jal func_80057048 +/* 048104 80047504 0C015C12 */ jal racer_play_sound /* 048108 80047508 E7B20104 */ swc1 $f18, 0x104($sp) /* 04810C 8004750C 8E2B0074 */ lw $t3, 0x74($s1) /* 048110 80047510 83A700AD */ lb $a3, 0xad($sp) @@ -1260,7 +1260,7 @@ glabel func_80046524 /* 0482B8 800476B8 24010003 */ li $at, 3 /* 0482BC 800476BC 1521001B */ bne $t1, $at, .L8004772C /* 0482C0 800476C0 2404002D */ li $a0, 45 -/* 0482C4 800476C4 0C00322D */ jal set_timer_region_adjusted +/* 0482C4 800476C4 0C00322D */ jal normalise_time /* 0482C8 800476C8 E7B20104 */ swc1 $f18, 0x104($sp) /* 0482CC 800476CC 920E020C */ lbu $t6, 0x20c($s0) /* 0482D0 800476D0 C7B20104 */ lwc1 $f18, 0x104($sp) @@ -1275,7 +1275,7 @@ glabel func_80046524 .L800476F4: /* 0482F4 800476F4 02202025 */ move $a0, $s1 /* 0482F8 800476F8 24050107 */ li $a1, 263 -/* 0482FC 800476FC 0C015C12 */ jal func_80057048 +/* 0482FC 800476FC 0C015C12 */ jal racer_play_sound /* 048300 80047700 E7B20104 */ swc1 $f18, 0x104($sp) /* 048304 80047704 02202025 */ move $a0, $s1 /* 048308 80047708 24050162 */ li $a1, 354 diff --git a/asm/non_matchings/racer/func_80048C7C.s b/asm/non_matchings/racer/func_80048C7C.s index aab88adb..f48c9f44 100644 --- a/asm/non_matchings/racer/func_80048C7C.s +++ b/asm/non_matchings/racer/func_80048C7C.s @@ -135,7 +135,7 @@ glabel L80048E18 /* 049A3C 80048E3C 462A4400 */ add.d $f16, $f8, $f10 /* 049A40 80048E40 24050139 */ li $a1, 313 /* 049A44 80048E44 462084A0 */ cvt.s.d $f18, $f16 -/* 049A48 80048E48 0C015C12 */ jal func_80057048 +/* 049A48 80048E48 0C015C12 */ jal racer_play_sound /* 049A4C 80048E4C E4920020 */ swc1 $f18, 0x20($a0) .L80048E50: glabel L80048E50 diff --git a/asm/non_matchings/racer/func_80049794.s b/asm/non_matchings/racer/func_80049794.s index 4225d13b..6a6988d9 100644 --- a/asm/non_matchings/racer/func_80049794.s +++ b/asm/non_matchings/racer/func_80049794.s @@ -867,7 +867,7 @@ glabel func_80049794 /* 04AF74 8004A374 2404002D */ li $a0, 45 /* 04AF78 8004A378 E7A10048 */ swc1 $f1, 0x48($sp) /* 04AF7C 8004A37C E7A0004C */ swc1 $f0, 0x4c($sp) -/* 04AF80 8004A380 0C00322D */ jal set_timer_region_adjusted +/* 04AF80 8004A380 0C00322D */ jal normalise_time /* 04AF84 8004A384 E7AE00DC */ swc1 $f14, 0xdc($sp) /* 04AF88 8004A388 9218020C */ lbu $t8, 0x20c($s0) /* 04AF8C 8004A38C C7A10048 */ lwc1 $f1, 0x48($sp) @@ -886,7 +886,7 @@ glabel func_80049794 /* 04AFBC 8004A3BC 24050107 */ li $a1, 263 /* 04AFC0 8004A3C0 E7A10048 */ swc1 $f1, 0x48($sp) /* 04AFC4 8004A3C4 E7A0004C */ swc1 $f0, 0x4c($sp) -/* 04AFC8 8004A3C8 0C015C12 */ jal func_80057048 +/* 04AFC8 8004A3C8 0C015C12 */ jal racer_play_sound /* 04AFCC 8004A3CC E7AE00DC */ swc1 $f14, 0xdc($sp) /* 04AFD0 8004A3D0 02202025 */ move $a0, $s1 /* 04AFD4 8004A3D4 24050162 */ li $a1, 354 @@ -1147,7 +1147,7 @@ glabel func_80049794 /* 04B384 8004A784 8E260010 */ lw $a2, 0x10($s1) /* 04B388 8004A788 8E270014 */ lw $a3, 0x14($s1) /* 04B38C 8004A78C E7AE00DC */ swc1 $f14, 0xdc($sp) -/* 04B390 8004A790 0C0007AA */ jal func_80001EA8 +/* 04B390 8004A790 0C0007AA */ jal play_sound_spatial /* 04B394 8004A794 AFA00010 */ sw $zero, 0x10($sp) /* 04B398 8004A798 02202025 */ move $a0, $s1 /* 04B39C 8004A79C 24050162 */ li $a1, 354 @@ -1158,7 +1158,7 @@ glabel func_80049794 /* 04B3B0 8004A7B0 00000000 */ nop .L8004A7B4: /* 04B3B4 8004A7B4 2404002D */ li $a0, 45 -/* 04B3B8 8004A7B8 0C00322D */ jal set_timer_region_adjusted +/* 04B3B8 8004A7B8 0C00322D */ jal normalise_time /* 04B3BC 8004A7BC E7AE00DC */ swc1 $f14, 0xdc($sp) /* 04B3C0 8004A7C0 920D020C */ lbu $t5, 0x20c($s0) /* 04B3C4 8004A7C4 C7AE00DC */ lwc1 $f14, 0xdc($sp) @@ -1292,7 +1292,7 @@ glabel func_80049794 .L8004A990: /* 04B590 8004A990 02202025 */ move $a0, $s1 /* 04B594 8004A994 2405000C */ li $a1, 12 -/* 04B598 8004A998 0C015C12 */ jal func_80057048 +/* 04B598 8004A998 0C015C12 */ jal racer_play_sound /* 04B59C 8004A99C E7AE00DC */ swc1 $f14, 0xdc($sp) /* 04B5A0 8004A9A0 860F0000 */ lh $t7, ($s0) /* 04B5A4 8004A9A4 C7AE00DC */ lwc1 $f14, 0xdc($sp) @@ -1485,7 +1485,7 @@ glabel func_80049794 /* 04B850 8004AC50 A20001E0 */ sb $zero, 0x1e0($s0) /* 04B854 8004AC54 A6200002 */ sh $zero, 2($s1) /* 04B858 8004AC58 E7AE00DC */ swc1 $f14, 0xdc($sp) -/* 04B85C 8004AC5C 0C00322D */ jal set_timer_region_adjusted +/* 04B85C 8004AC5C 0C00322D */ jal normalise_time /* 04B860 8004AC60 AFA800B8 */ sw $t0, 0xb8($sp) /* 04B864 8004AC64 920B020C */ lbu $t3, 0x20c($s0) /* 04B868 8004AC68 8FA800B8 */ lw $t0, 0xb8($sp) @@ -1532,7 +1532,7 @@ glabel func_80049794 /* 04B8FC 8004ACFC A20001E0 */ sb $zero, 0x1e0($s0) /* 04B900 8004AD00 A6200002 */ sh $zero, 2($s1) /* 04B904 8004AD04 E7AE00DC */ swc1 $f14, 0xdc($sp) -/* 04B908 8004AD08 0C00322D */ jal set_timer_region_adjusted +/* 04B908 8004AD08 0C00322D */ jal normalise_time /* 04B90C 8004AD0C AFA800B8 */ sw $t0, 0xb8($sp) /* 04B910 8004AD10 920E020C */ lbu $t6, 0x20c($s0) /* 04B914 8004AD14 8FA800B8 */ lw $t0, 0xb8($sp) @@ -2523,7 +2523,7 @@ glabel func_80049794 /* 04C780 8004BB80 02202025 */ move $a0, $s1 /* 04C784 8004BB84 11C0000D */ beqz $t6, .L8004BBBC /* 04C788 8004BB88 2405000C */ li $a1, 12 -/* 04C78C 8004BB8C 0C015C12 */ jal func_80057048 +/* 04C78C 8004BB8C 0C015C12 */ jal racer_play_sound /* 04C790 8004BB90 E7AC00EC */ swc1 $f12, 0xec($sp) /* 04C794 8004BB94 86180000 */ lh $t8, ($s0) /* 04C798 8004BB98 C7AC00EC */ lwc1 $f12, 0xec($sp) diff --git a/asm/non_matchings/racer/func_8004CC20.s b/asm/non_matchings/racer/func_8004CC20.s index 39526a75..f05c9057 100644 --- a/asm/non_matchings/racer/func_8004CC20.s +++ b/asm/non_matchings/racer/func_8004CC20.s @@ -33,7 +33,7 @@ glabel func_8004CC20 /* 04D86C 8004CC6C 240E0008 */ li $t6, 8 /* 04D870 8004CC70 A20E01D3 */ sb $t6, 0x1d3($s0) /* 04D874 8004CC74 02202025 */ move $a0, $s1 -/* 04D878 8004CC78 0C015C12 */ jal func_80057048 +/* 04D878 8004CC78 0C015C12 */ jal racer_play_sound /* 04D87C 8004CC7C 24050107 */ li $a1, 263 /* 04D880 8004CC80 820201D3 */ lb $v0, 0x1d3($s0) /* 04D884 8004CC84 00000000 */ nop diff --git a/asm/non_matchings/racer/func_8004DE38.s b/asm/non_matchings/racer/func_8004DE38.s index 72f8f251..7caa8a0e 100644 --- a/asm/non_matchings/racer/func_8004DE38.s +++ b/asm/non_matchings/racer/func_8004DE38.s @@ -782,7 +782,7 @@ glabel func_8004DE38 /* 04F520 8004E920 012B082A */ slt $at, $t1, $t3 /* 04F524 8004E924 10200015 */ beqz $at, .L8004E97C /* 04F528 8004E928 00000000 */ nop -/* 04F52C 8004E92C 0C00322D */ jal set_timer_region_adjusted +/* 04F52C 8004E92C 0C00322D */ jal normalise_time /* 04F530 8004E930 34048CA0 */ li $a0, 36000 /* 04F534 8004E934 820D0194 */ lb $t5, 0x194($s0) /* 04F538 8004E938 8FA500B4 */ lw $a1, 0xb4($sp) @@ -796,7 +796,7 @@ glabel func_8004DE38 /* 04F558 8004E958 10000008 */ b .L8004E97C /* 04F55C 8004E95C AC6F0128 */ sw $t7, 0x128($v1) .L8004E960: -/* 04F560 8004E960 0C00322D */ jal set_timer_region_adjusted +/* 04F560 8004E960 0C00322D */ jal normalise_time /* 04F564 8004E964 34048CA0 */ li $a0, 36000 /* 04F568 8004E968 82080194 */ lb $t0, 0x194($s0) /* 04F56C 8004E96C 00000000 */ nop @@ -1747,7 +1747,7 @@ glabel L8004ED88 /* 0502F8 8004F6F8 8E25000C */ lw $a1, 0xc($s1) /* 0502FC 8004F6FC 8E260010 */ lw $a2, 0x10($s1) /* 050300 8004F700 8E270014 */ lw $a3, 0x14($s1) -/* 050304 8004F704 0C0007AA */ jal func_80001EA8 +/* 050304 8004F704 0C0007AA */ jal play_sound_spatial /* 050308 8004F708 AFA00010 */ sw $zero, 0x10($sp) /* 05030C 8004F70C A600020E */ sh $zero, 0x20e($s0) .L8004F710: diff --git a/asm/non_matchings/racer/func_8004F7F4.s b/asm/non_matchings/racer/func_8004F7F4.s index d26a00f2..7521b62f 100644 --- a/asm/non_matchings/racer/func_8004F7F4.s +++ b/asm/non_matchings/racer/func_8004F7F4.s @@ -197,7 +197,7 @@ glabel func_8004F7F4 /* 05068C 8004FA8C 00000000 */ nop /* 050690 8004FA90 45000009 */ bc1f .L8004FAB8 /* 050694 8004FA94 00000000 */ nop -/* 050698 8004FA98 0C015C12 */ jal func_80057048 +/* 050698 8004FA98 0C015C12 */ jal racer_play_sound /* 05069C 8004FA9C 2405001C */ li $a1, 28 /* 0506A0 8004FAA0 821901E6 */ lb $t9, 0x1e6($s0) /* 0506A4 8004FAA4 3C068012 */ lui $a2, %hi(gCurrentStickX) # $a2, 0x8012 @@ -522,7 +522,7 @@ glabel func_8004F7F4 /* 050B2C 8004FF2C 8E25000C */ lw $a1, 0xc($s1) /* 050B30 8004FF30 8E260010 */ lw $a2, 0x10($s1) /* 050B34 8004FF34 8E270014 */ lw $a3, 0x14($s1) -/* 050B38 8004FF38 0C0007AA */ jal func_80001EA8 +/* 050B38 8004FF38 0C0007AA */ jal play_sound_spatial /* 050B3C 8004FF3C AFAF0010 */ sw $t7, 0x10($sp) /* 050B40 8004FF40 3C048012 */ lui $a0, %hi(D_8011D550) # $a0, 0x8012 /* 050B44 8004FF44 3C068012 */ lui $a2, %hi(D_8011D553) # $a2, 0x8012 diff --git a/asm/non_matchings/racer/func_80050A28.s b/asm/non_matchings/racer/func_80050A28.s index 19353cca..592f8044 100644 --- a/asm/non_matchings/racer/func_80050A28.s +++ b/asm/non_matchings/racer/func_80050A28.s @@ -573,7 +573,7 @@ glabel func_80050A28 /* 051DBC 800511BC 8D05000C */ lw $a1, 0xc($t0) /* 051DC0 800511C0 8D060010 */ lw $a2, 0x10($t0) /* 051DC4 800511C4 8D070014 */ lw $a3, 0x14($t0) -/* 051DC8 800511C8 0C0007AA */ jal func_80001EA8 +/* 051DC8 800511C8 0C0007AA */ jal play_sound_spatial /* 051DCC 800511CC AFAF0010 */ sw $t7, 0x10($sp) /* 051DD0 800511D0 10000007 */ b .L800511F0 /* 051DD4 800511D4 8E020014 */ lw $v0, 0x14($s0) @@ -1049,7 +1049,7 @@ glabel func_80050A28 /* 0524AC 800518AC A20D01EF */ sb $t5, 0x1ef($s0) /* 0524B0 800518B0 8FA40078 */ lw $a0, 0x78($sp) /* 0524B4 800518B4 E7AE0044 */ swc1 $f14, 0x44($sp) -/* 0524B8 800518B8 0C015C12 */ jal func_80057048 +/* 0524B8 800518B8 0C015C12 */ jal racer_play_sound /* 0524BC 800518BC AFA90064 */ sw $t1, 0x64($sp) /* 0524C0 800518C0 8FA90064 */ lw $t1, 0x64($sp) /* 0524C4 800518C4 C7AE0044 */ lwc1 $f14, 0x44($sp) @@ -1062,13 +1062,13 @@ glabel func_80050A28 /* 0524DC 800518DC 1521001B */ bne $t1, $at, .L8005194C /* 0524E0 800518E0 2404002D */ li $a0, 45 /* 0524E4 800518E4 AFA90064 */ sw $t1, 0x64($sp) -/* 0524E8 800518E8 0C00322D */ jal set_timer_region_adjusted +/* 0524E8 800518E8 0C00322D */ jal normalise_time /* 0524EC 800518EC E7AE0044 */ swc1 $f14, 0x44($sp) /* 0524F0 800518F0 240F0002 */ li $t7, 2 /* 0524F4 800518F4 A20201D3 */ sb $v0, 0x1d3($s0) /* 0524F8 800518F8 A20F0203 */ sb $t7, 0x203($s0) /* 0524FC 800518FC 8FA40078 */ lw $a0, 0x78($sp) -/* 052500 80051900 0C015C12 */ jal func_80057048 +/* 052500 80051900 0C015C12 */ jal racer_play_sound /* 052504 80051904 24050107 */ li $a1, 263 /* 052508 80051908 8FA40078 */ lw $a0, 0x78($sp) /* 05250C 8005190C 24050162 */ li $a1, 354 diff --git a/asm/non_matchings/racer/func_80053E9C.s b/asm/non_matchings/racer/func_80053E9C.s index fb5d6c41..c01ee348 100644 --- a/asm/non_matchings/racer/func_80053E9C.s +++ b/asm/non_matchings/racer/func_80053E9C.s @@ -39,7 +39,7 @@ glabel func_80053E9C /* 054B00 80053F00 24050140 */ li $a1, 320 /* 054B04 80053F04 05000007 */ bltz $t0, .L80053F24 /* 054B08 80053F08 00000000 */ nop -/* 054B0C 80053F0C 0C015C12 */ jal func_80057048 +/* 054B0C 80053F0C 0C015C12 */ jal racer_play_sound /* 054B10 80053F10 AFA40028 */ sw $a0, 0x28($sp) /* 054B14 80053F14 8FA40028 */ lw $a0, 0x28($sp) /* 054B18 80053F18 10000003 */ b .L80053F28 @@ -142,7 +142,7 @@ glabel L8005406C /* 054C70 80054070 24091002 */ li $t1, 4098 /* 054C74 80054074 A20801DB */ sb $t0, 0x1db($s0) /* 054C78 80054078 A60901A2 */ sh $t1, 0x1a2($s0) -/* 054C7C 8005407C 0C015C12 */ jal func_80057048 +/* 054C7C 8005407C 0C015C12 */ jal racer_play_sound /* 054C80 80054080 2405013B */ li $a1, 315 /* 054C84 80054084 1000001E */ b .L80054100 /* 054C88 80054088 A2000187 */ sb $zero, 0x187($s0) @@ -175,7 +175,7 @@ glabel L800540C4 /* 054CE8 800540E8 46249180 */ add.d $f6, $f18, $f4 /* 054CEC 800540EC 24050139 */ li $a1, 313 /* 054CF0 800540F0 46203220 */ cvt.s.d $f8, $f6 -/* 054CF4 800540F4 0C015C12 */ jal func_80057048 +/* 054CF4 800540F4 0C015C12 */ jal racer_play_sound /* 054CF8 800540F8 E4880020 */ swc1 $f8, 0x20($a0) .L800540FC: glabel L800540FC diff --git a/asm/non_matchings/racer/func_8005492C.s b/asm/non_matchings/racer/func_8005492C.s index 1d5e4283..aceb27d6 100644 --- a/asm/non_matchings/racer/func_8005492C.s +++ b/asm/non_matchings/racer/func_8005492C.s @@ -183,7 +183,7 @@ glabel func_8005492C /* 055778 80054B78 AFA5004C */ sw $a1, 0x4c($sp) /* 05577C 80054B7C AFA70048 */ sw $a3, 0x48($sp) /* 055780 80054B80 E7A00028 */ swc1 $f0, 0x28($sp) -/* 055784 80054B84 0C00322D */ jal set_timer_region_adjusted +/* 055784 80054B84 0C00322D */ jal normalise_time /* 055788 80054B88 E7A20030 */ swc1 $f2, 0x30($sp) /* 05578C 80054B8C 8FA5004C */ lw $a1, 0x4c($sp) /* 055790 80054B90 8FA70048 */ lw $a3, 0x48($sp) diff --git a/asm/non_matchings/racer/func_80054FD0.s b/asm/non_matchings/racer/func_80054FD0.s index 6ed49ce0..ed3afd92 100644 --- a/asm/non_matchings/racer/func_80054FD0.s +++ b/asm/non_matchings/racer/func_80054FD0.s @@ -346,7 +346,7 @@ glabel func_80054FD0 /* 0560E8 800554E8 0C015C2E */ jal func_800570B8 /* 0560EC 800554EC AFA9018C */ sw $t1, 0x18c($sp) /* 0560F0 800554F0 02202025 */ move $a0, $s1 -/* 0560F4 800554F4 0C015C12 */ jal func_80057048 +/* 0560F4 800554F4 0C015C12 */ jal racer_play_sound /* 0560F8 800554F8 2405000C */ li $a1, 12 /* 0560FC 800554FC 8FA9018C */ lw $t1, 0x18c($sp) /* 056100 80055500 44808000 */ mtc1 $zero, $f16 diff --git a/asm/non_matchings/racer/func_80055EC0.s b/asm/non_matchings/racer/func_80055EC0.s index 84a3da79..1b877618 100644 --- a/asm/non_matchings/racer/func_80055EC0.s +++ b/asm/non_matchings/racer/func_80055EC0.s @@ -373,21 +373,21 @@ glabel L800563EC /* 056FF4 800563F4 2401000F */ li $at, 15 /* 056FF8 800563F8 1501000D */ bne $t0, $at, .L80056430 /* 056FFC 800563FC 00000000 */ nop -/* 057000 80056400 0C00322D */ jal set_timer_region_adjusted +/* 057000 80056400 0C00322D */ jal normalise_time /* 057004 80056404 2404004B */ li $a0, 75 /* 057008 80056408 240D0002 */ li $t5, 2 /* 05700C 8005640C A20D0203 */ sb $t5, 0x203($s0) /* 057010 80056410 1000000B */ b .L80056440 /* 057014 80056414 A20201D3 */ sb $v0, 0x1d3($s0) .L80056418: -/* 057018 80056418 0C00322D */ jal set_timer_region_adjusted +/* 057018 80056418 0C00322D */ jal normalise_time /* 05701C 8005641C 24040037 */ li $a0, 55 /* 057020 80056420 240E0001 */ li $t6, 1 /* 057024 80056424 A20E0203 */ sb $t6, 0x203($s0) /* 057028 80056428 10000005 */ b .L80056440 /* 05702C 8005642C A20201D3 */ sb $v0, 0x1d3($s0) .L80056430: -/* 057030 80056430 0C00322D */ jal set_timer_region_adjusted +/* 057030 80056430 0C00322D */ jal normalise_time /* 057034 80056434 24040023 */ li $a0, 35 /* 057038 80056438 A20201D3 */ sb $v0, 0x1d3($s0) /* 05703C 8005643C A2000203 */ sb $zero, 0x203($s0) @@ -406,7 +406,7 @@ glabel L800563EC /* 057068 80056468 1721000B */ bne $t9, $at, .L80056498 /* 05706C 8005646C 8FA40088 */ lw $a0, 0x88($sp) /* 057070 80056470 8FA40088 */ lw $a0, 0x88($sp) -/* 057074 80056474 0C015C12 */ jal func_80057048 +/* 057074 80056474 0C015C12 */ jal racer_play_sound /* 057078 80056478 24050232 */ li $a1, 562 /* 05707C 8005647C 8FA40088 */ lw $a0, 0x88($sp) /* 057080 80056480 24050233 */ li $a1, 563 @@ -416,7 +416,7 @@ glabel L800563EC /* 057090 80056490 820B0173 */ lb $t3, 0x173($s0) /* 057094 80056494 8FA40088 */ lw $a0, 0x88($sp) .L80056498: -/* 057098 80056498 0C015C12 */ jal func_80057048 +/* 057098 80056498 0C015C12 */ jal racer_play_sound /* 05709C 8005649C 24050021 */ li $a1, 33 /* 0570A0 800564A0 820B0173 */ lb $t3, 0x173($s0) .L800564A4: @@ -721,7 +721,7 @@ glabel L80056884 /* 0574F0 800568F0 8D260010 */ lw $a2, 0x10($t1) /* 0574F4 800568F4 8D270014 */ lw $a3, 0x14($t1) /* 0574F8 800568F8 26190218 */ addiu $t9, $s0, 0x218 -/* 0574FC 800568FC 0C0007AA */ jal func_80001EA8 +/* 0574FC 800568FC 0C0007AA */ jal play_sound_spatial /* 057500 80056900 AFB90010 */ sw $t9, 0x10($sp) .L80056904: /* 057504 80056904 82020173 */ lb $v0, 0x173($s0) diff --git a/asm/non_matchings/racer/update_camera_car.s b/asm/non_matchings/racer/update_camera_car.s index 3a53bcb5..caa9f30d 100644 --- a/asm/non_matchings/racer/update_camera_car.s +++ b/asm/non_matchings/racer/update_camera_car.s @@ -260,7 +260,7 @@ glabel update_camera_car /* 05916C 8005856C 24040024 */ li $a0, 36 /* 059170 80058570 AFA70070 */ sw $a3, 0x70($sp) /* 059174 80058574 E7B00054 */ swc1 $f16, 0x54($sp) -/* 059178 80058578 0C00322D */ jal set_timer_region_adjusted +/* 059178 80058578 0C00322D */ jal normalise_time /* 05917C 8005857C E7B20050 */ swc1 $f18, 0x50($sp) /* 059180 80058580 8FA70070 */ lw $a3, 0x70($sp) /* 059184 80058584 3C088012 */ lui $t0, %hi(gCameraObject) # $t0, 0x8012 diff --git a/asm/non_matchings/racer/update_camera_plane.s b/asm/non_matchings/racer/update_camera_plane.s index e231a235..8e80fd67 100644 --- a/asm/non_matchings/racer/update_camera_plane.s +++ b/asm/non_matchings/racer/update_camera_plane.s @@ -354,7 +354,7 @@ glabel update_camera_plane /* 04D374 8004C774 24040024 */ li $a0, 36 /* 04D378 8004C778 AFA70058 */ sw $a3, 0x58($sp) /* 04D37C 8004C77C E7AE0034 */ swc1 $f14, 0x34($sp) -/* 04D380 8004C780 0C00322D */ jal set_timer_region_adjusted +/* 04D380 8004C780 0C00322D */ jal normalise_time /* 04D384 8004C784 E7B20030 */ swc1 $f18, 0x30($sp) /* 04D388 8004C788 8FA70058 */ lw $a3, 0x58($sp) /* 04D38C 8004C78C 3C088012 */ lui $t0, %hi(gCameraObject) # $t0, 0x8012 diff --git a/asm/non_matchings/unknown_032760/func_8003E694.s b/asm/non_matchings/unknown_032760/func_8003E694.s index d06f072a..66a88382 100644 --- a/asm/non_matchings/unknown_032760/func_8003E694.s +++ b/asm/non_matchings/unknown_032760/func_8003E694.s @@ -224,7 +224,7 @@ glabel func_8003E694 /* 03F5D4 8003E9D4 00402825 */ move $a1, $v0 /* 03F5D8 8003E9D8 144E000C */ bne $v0, $t6, .L8003EA0C /* 03F5DC 8003E9DC 240401C2 */ li $a0, 450 -/* 03F5E0 8003E9E0 0C00322D */ jal set_timer_region_adjusted +/* 03F5E0 8003E9E0 0C00322D */ jal normalise_time /* 03F5E4 8003E9E4 AFA200E4 */ sw $v0, 0xe4($sp) /* 03F5E8 8003E9E8 8E030078 */ lw $v1, 0x78($s0) /* 03F5EC 8003E9EC 8FA500E4 */ lw $a1, 0xe4($sp) diff --git a/asm/non_matchings/unknown_032760/func_8003F2E8.s b/asm/non_matchings/unknown_032760/func_8003F2E8.s index 627ea928..c1f592c6 100644 --- a/asm/non_matchings/unknown_032760/func_8003F2E8.s +++ b/asm/non_matchings/unknown_032760/func_8003F2E8.s @@ -437,7 +437,7 @@ glabel func_8003F2E8 /* 040524 8003F924 1498000D */ bne $a0, $t8, .L8003F95C /* 040528 8003F928 240401C2 */ li $a0, 450 /* 04052C 8003F92C AFA50048 */ sw $a1, 0x48($sp) -/* 040530 8003F930 0C00322D */ jal set_timer_region_adjusted +/* 040530 8003F930 0C00322D */ jal normalise_time /* 040534 8003F934 AFA80038 */ sw $t0, 0x38($sp) /* 040538 8003F938 8FA80038 */ lw $t0, 0x38($sp) /* 04053C 8003F93C 8FA50048 */ lw $a1, 0x48($sp) @@ -597,7 +597,7 @@ glabel func_8003F2E8 /* 04077C 8003FB7C 1020002D */ beqz $at, .L8003FC34 /* 040780 8003FB80 AD0F0000 */ sw $t7, ($t0) /* 040784 8003FB84 2404FAD8 */ li $a0, -1320 -/* 040788 8003FB88 0C00322D */ jal set_timer_region_adjusted +/* 040788 8003FB88 0C00322D */ jal normalise_time /* 04078C 8003FB8C AFA80038 */ sw $t0, 0x38($sp) /* 040790 8003FB90 8FA80038 */ lw $t0, 0x38($sp) /* 040794 8003FB94 8FAC0040 */ lw $t4, 0x40($sp) diff --git a/asm/non_matchings/unknown_032760/obj_loop_banana.s b/asm/non_matchings/unknown_032760/obj_loop_banana.s index 116cdf1d..929afab6 100644 --- a/asm/non_matchings/unknown_032760/obj_loop_banana.s +++ b/asm/non_matchings/unknown_032760/obj_loop_banana.s @@ -372,7 +372,7 @@ glabel obj_loop_banana /* 03E704 8003DB04 01602025 */ move $a0, $t3 /* 03E708 8003DB08 AFA90030 */ sw $t1, 0x30($sp) /* 03E70C 8003DB0C AFA80068 */ sw $t0, 0x68($sp) -/* 03E710 8003DB10 0C0007AA */ jal func_80001EA8 +/* 03E710 8003DB10 0C0007AA */ jal play_sound_spatial /* 03E714 8003DB14 AFA00010 */ sw $zero, 0x10($sp) /* 03E718 8003DB18 8FA80068 */ lw $t0, 0x68($sp) /* 03E71C 8003DB1C 8FA90030 */ lw $t1, 0x30($sp) diff --git a/asm/non_matchings/unknown_032760/obj_loop_goldenballoon.s b/asm/non_matchings/unknown_032760/obj_loop_goldenballoon.s index 0089d37a..0f6e85f2 100644 --- a/asm/non_matchings/unknown_032760/obj_loop_goldenballoon.s +++ b/asm/non_matchings/unknown_032760/obj_loop_goldenballoon.s @@ -142,7 +142,7 @@ glabel obj_loop_goldenballoon /* 03C2BC 8003B6BC 8E270014 */ lw $a3, 0x14($s1) /* 03C2C0 8003B6C0 8E260010 */ lw $a2, 0x10($s1) /* 03C2C4 8003B6C4 8E25000C */ lw $a1, 0xc($s1) -/* 03C2C8 8003B6C8 0C0007AA */ jal func_80001EA8 +/* 03C2C8 8003B6C8 0C0007AA */ jal play_sound_spatial /* 03C2CC 8003B6CC AFA00010 */ sw $zero, 0x10($sp) /* 03C2D0 8003B6D0 862B0006 */ lh $t3, 6($s1) /* 03C2D4 8003B6D4 24090010 */ li $t1, 16 diff --git a/include/sound_ids.h b/include/sound_ids.h new file mode 100644 index 00000000..d5addb88 --- /dev/null +++ b/include/sound_ids.h @@ -0,0 +1,557 @@ +#ifndef SOUND_IDS_H +#define SOUND_IDS_H + +// Anything I've labelled as UNK, without a comment, is something I didn't get an audible sound from. +enum SoundID { + SOUND_UNK0, + SOUND_CAR_SLIDE, + SOUND_CAR_SLIDE2, // Not sure what this is for. I thought it was for the brakes originally, but there's clearly a brake + SOUND_INTRO_PLANE, + SOUND_INTRO_KIDS, + SOUND_UNK5, // Sounds like something sifting, idk. + SOUND_UNK6, // Same thing, but faster + SOUND_UNK7, + SOUND_UNK8, + SOUND_STOMP, + SOUND_UNK10, + SOUND_UNK11, + SOUND_CRASH, + SOUND_CRASH2, // Not the same as the last, sounds like a cymbal or something. + SOUND_BALLOON_POP, + SOUND_PLOP, // Dropping a landmine + SOUND_UNK16, + SOUND_EXPLOSION, + SOUND_NYOOM, // Firing a rocket. + SOUND_UNK19, + SOUND_UNK20, + SOUND_UNK21, + SOUND_WHOOSH1, // The hud flying in on a race start. + SOUND_EXPLOSION2, // Not sure what this one's for. + SOUND_VOICE_TT_GET_READY, + SOUND_VOICE_TT_GO, + SOUND_UNK26, + SOUND_UNK27, + SOUND_CAR_BRAKE, + SOUND_UNK_29, + SOUND_UNK_30, + SOUND_UNK_31, + SOUND_UNK_32, + SOUND_NITRO_BOOST, + SOUND_SELECT, + SOUND_VOICE_TAJ_CUTSCENE_0, // "Woah there!" + SOUND_VOICE_TAJ_CUTSCENE_1, // "Hello, friend." + SOUND_VOICE_TAJ_WAHEY, + SOUND_VOICE_TAJ_HOHO, + SOUND_LIGHTNING, + SOUND_VOICE_TAJ_WOAH, + SOUND_VOICE_TAJ_HINT, // "I've got something special for you." + SOUND_UNK42, // Sounds like a wave or something, not sure. + SOUND_RIBBIT, // :frog: + SOUND_SPLOOSH, + SOUND_VOICE_TAJ_WINNER, // "You won first prize!" + SOUND_VOICE_CONKER_YEHAHA, + SOUND_VOICE_TIMBER_WOW, + SOUND_WHOOSH2, // This is a transition before a Taj Tech Tip. + SOUND_WHOOSH3, // Don't remember what this is but I know it's used somewhere. + SOUND_VOICE_TAJ_BALLOON, // "This is for you." + SOUND_UNK51, // Some softer gong thing maybe? + SOUND_TWINKLE, // Sounds like a lower, slower version of SOUND_SELECT + SOUND_VOICE_WIZPIG_LAUGH, + SOUND_NYOOM_HIGH, // High pitched nyoom. + SOUND_UNK55, // I cannot describe tbis. uhh, a car coming past? really I can't say + SOUND_VOICE_TT_RADIO, // "Okay control" remind me to find the subtitles for this lol. It's the rocket. + SOUND_DOOR_CLOSE, + SOUND_VOICE_TT_THREE, + SOUND_VOICE_TT_TWO, + SOUND_VOICE_BUMPER_OHNO, + SOUND_VOICE_TIPTUP_WAH, + SOUND_VOICE_TT_ONE, + SOUND_VOICE_TT_BLASTOFF, + SOUND_ROCKET_LAUNCH, + SOUND_UNK65, // Sounds like an explosion sort. Likely related to the rocket. + SOUND_VOICE_DIDDY_LAUGH, + SOUND_VOICE_BANJO_GUHHUH, + SOUND_VOICE_DIDDY_LAUGH2, + SOUND_VOICE_PIPSY_LAUGH, + SOUND_VOICE_TIMBER_YEAH, + SOUND_VOICE_KRUNCH_HOHOO, + SOUND_VOICE_WIZPIG_LAUGH_SHORT, + SOUND_VOICE_TAJ_CUTSCENE2, // "I am the genie of the island." + SOUND_VOICE_PIPSY_YEHAW, + SOUND_VOICE_TAJ_CUTSCENE3, // "I'm here to help you." + SOUND_VOICE_TAJ_CUTSCENE4, // "Good luck!" + SOUND_VOICE_DIDDY_LAUGH_LOW, // Same as his regular laugh but lower pitch + SOUND_VOICE_UNK78, + SOUND_VOICE_UNK79, + SOUND_VOICE_UNK80, // "Yippee, lets party!" + SOUND_VOICE_WIZPIG_LAUGH2, + SOUND_VOICE_WIZPIG_LAUGH3, + SOUND_VOICE_WIZPIG_ENDING, // "Sorry to break the party worms, but I had to say goodbyte!" + SOUND_VOICE_WIZPIG_UNK0, // "Well lookie here, it's the little worm!" + SOUND_UNK85, // Sounds like some future something + SOUND_VOICE_WIZPIG_SEEYA, // "See ya later, worms!" + SOUND_VOICE_WIZPIG_LAUGH4, + SOUND_VOICE_BLUEY_REMATCH1, // "Fantastic!" + SOUND_VOICE_BLUEY_REMATCH2, // "If you can beat me again..." + SOUND_VOICE_BLUEY_REMATCH3, // "I'll give you a special prize" + SOUND_UNK91, // Might be the hovercraft engine. + SOUND_UNK92, // Might be the car engine. + SOUND_TING_LOW, + SOUND_TING_HIGH, + SOUND_BOOST_LEVEL3, + SOUND_UNK96, // Also not sure + SOUND_UNK97, // Sounds like an earthquake, goes on for absolutely ever, but not a continuous sound. + SOUND_ELECTRIC_BUZZ, // Bzzzz! + SOUND_UNK99, // sounds kind of like lightning but not 100% sure + SOUND_UNK100, + SOUND_UNK101, + SOUND_VOICE_TT_WRONG_WAY, + SOUND_VOICE_TT_NONONO, + SOUND_MENU_BACK, + SOUND_MENU_BACK2, // Appears to be exactly the same as the previous to my tonedeaf ears. + SOUND_UNK106, // Same thing as the previous but with an inverse wave. + SOUND_VOICE_WIZPIG_ENCOUNTER, // "You can't beat me!" + SOUND_VOICE_WIZPIG_DEFEAT, // "Gragh, no! No!" + SOUND_VOICE_WIZPIG_GROAN, + SOUND_VOICE_WIZPIG_SCREAM, + SOUND_ZAP, + SOUND_ZAP2, + SOUND_ZAP3, + SOUND_VOICE_WIZPIG_SCREAM2, + SOUND_VOICE_KRUNCH_LAUGH, + SOUND_UNK116, // More lightning? + SOUND_VOICE_WIZPIG_SCREAM3, + SOUND_VOICE_DRUMSTUCK_BWAK, // Chicken noises intensify. + SOUND_VOICE_BLUEY_GOODBYE, // "Goodbye, Kid!" + SOUND_VOICE_BANJO_YAHOO, + SOUND_VOICE_BLUEY_SILVERCOINS2, // "Collect all the silver coins from the snow world" + SOUND_CAR_REV, // Selecting the car in the menu, and the initial revs at the start. + SOUND_UNK123, + SOUND_UNK124, + SOUND_UNK125, + SOUND_UNK126, + SOUND_UNK127, + SOUND_UNK128, + SOUND_UNK129, + SOUND_UNK130, + SOUND_UNK131, + SOUND_UNK132, + SOUND_VOICE_BLUEY_TROPHY_CHALLENGE, // "Now try the trophy challenge" + SOUND_VOICE_BLUEY_AMULET, // "You've won a piece of the amulet" + SOUND_VOICE_KRUNCH_SELECT, // "My name's Krunch" + SOUND_VOICE_BUMPER_SELECT, // "My name's Bumper" + SOUND_VOICE_TIPTUP_SELECT, // "Hey, it's Tiptup" + SOUND_VOICE_CONKER_SELECT, // "I'm Conker" + SOUND_VOICE_TIMBER_SELECT, // "Timber" + SOUND_VOICE_BANJO_SELECT, // "I'm Banjo" + SOUND_VOICE_DRUMSTICK_SELECT, // "My name's Drumstick" + SOUND_VOICE_PIPSY_SELECT, // "I'm Pipsy" + SOUND_VOICE_TT_SELECT, // I'm T.T + SOUND_VOICE_DIDDY_SELECT, // "I'm Diddy" + SOUND_VOICE_BLUEY_RETRY, // "You can come back, whenever you're ready" + SOUND_VOICE_BLUEY_NEVERMIND, // "Ah, nevermind kid." + SOUND_VOICE_KRUNCH_EHH, + SOUND_VOICE_BUMPER_UHH, + SOUND_VOICE_TIPTUP_AHH, + SOUND_VOICE_CONKER_AHH, + SOUND_VOICE_TIMBER_RAGH, + SOUND_VOICE_BANJO_WOAH, + SOUND_VOICE_DRUMSTICK_WAH, + SOUND_VOICE_PIPSY_UHOH, + SOUND_VOICE_TT_WOAH, + SOUND_VOICE_DIDDY_WOAH, + SOUND_VOICE_BLUEY_SILVERCOINS3, // "Collect 8 from each level and win" + SOUND_VOICE_BLUEY_SILVERCOINS4, // "Then come back and see me" + SOUND_SHIELD, + SOUND_COLLECT_ITEM, + SOUND_COLLECT_ITEM_TIER2, + SOUND_COLLECT_ITEM_TIER3, + SOUND_VOICE_TRICKY_WOAH, + SOUND_VOICE_TRICKY_WOAH2, // Same as the last + SOUND_VOICE_TRICKY_HM, + SOUND_VOICE_TRICKY_HMMM, + SOUND_VOICE_BLUEY_EH, + SOUND_VOICE_BLUEY_OHNO, + SOUND_FLUTTERING, // idk + SOUND_PLANE_ENGINE, + SOUND_BOING, + SOUND_STOMP2, + SOUND_STOMP3, + SOUND_BOUNCE, + SOUND_UNK175, // sounds just like UNK5 + SOUND_FOOTSTEP, + SOUND_UNK177, // Very low pitch something + SOUND_MENU_PICK, + SOUND_VOICE_WIZPIG_LAUGH_SHORT2, + SOUND_VOICE_WIZPIG_LAUGH_SHORT3, + SOUND_VOICE_WIZPIG_HA, + SOUND_VOICE_WIZPIG_H2, + SOUND_VOICE_BLUEY_HAHA, + SOUND_VOICE_BLUEY_HAHA2, + SOUND_VOICE_BLUEY_SILVERCOINS1, // "Now try my new challenge" + SOUND_VOICE_TRICKY_ENCOUNTER1, // "Now I challenge you to a race" + SOUND_VOICE_TRICKY_SILVERCOINS1, // "Now try my new challenge" + SOUND_VOICE_TRICKY_SILVERCOINS2, // "Collect all the silver coins from the dino domain." + SOUND_VOICE_TRICKY_GOODTRY, // "Good one, kid" + SOUND_VOICE_TRICKY_NEVERMIND, // "Maybe next time." + SOUND_VOICE_TRICKY_RETRY, // "Come back whenever you're ready." + SOUND_VOICE_TRICKY_SILVERCOINS6, // "Then come back and see me" + SOUND_VOICE_TRICKY_TROPHY1, // "Well done kid" + SOUND_VOICE_TRICKY_TROPHY2, // "You've earned a piece of the amulet" + SOUND_VOICE_TRICKY_TROPHY3, // "Now try the trophy challenge" + SOUND_VOICE_TRICKY_TROPHY4, // "See ya later" + SOUND_VOICE_TRICKY_SILVERCOINS4, // "You must find 8 from each level" + SOUND_VOICE_TRICKY_SILVERCOINS5, // "and win" + SOUND_VOICE_TRICKY_REMATCH1, // "Fantastic" + SOUND_VOICE_TRICKY_REMATCH2, // "If you can beat me again" + SOUND_VOICE_TRICKY_REMATCH3, // "I'll give you a special prize" + SOUND_VOICE_SMOKEY_ENCOUNTER1, // "Hahahaha!" + SOUND_VOICE_SMOKEY_ENCOUNTER2, // "Now I challenge you to a race!" + SOUND_VOICE_SMOKEY_SILVERCOINS1, // "Now try my new challenge" + SOUND_VOICE_SMOKEY_SILVERCOINS2, // "Collect all the silver coins from my world" + SOUND_VOICE_SMOKEY_GOODTRY, // "Excellent" + SOUND_VOICE_SMOKEY_SILVERCOINS3, // "You must find 8 from each level and win" + SOUND_VOICE_SMOKEY_SILVERCOINS4, // "Then come back and see me" + SOUND_UNK209, + SOUND_VOICE_SMOKEY_BADLUCK, // "Bad luck" + SOUND_VOICE_SMOKEY_RETRY, // "Try again whenever you're ready" + SOUND_VOICE_SMOKEY_TROPHY1, // "You have earned a piece of the amulet" + SOUND_VOICE_SMOKEY_TROPHY2, // "Now try the trophy challenge" + SOUND_VOICE_SMOKEY_TROPHY3, // "Goodbye" + SOUND_VOICE_SMOKEY_REMATCH2, // "If you can beat me again" + SOUND_VOICE_SMOKEY_REMATCH3, // "I'll give you a special prize" + SOUND_VOICE_BUBBLER_ENCOUNTER1, // "Well done!" + SOUND_VOICE_BUBBLER_ENCOUNTER2, // "Now I challenge you to a race!" + SOUND_VOICE_BUBBLER_SILVERCOINS1, // "Try my new challenge" + SOUND_VOICE_BUBBLER_SILVERCOINS2, // "Collect all the silver coins from my world." + SOUND_VOICE_BUBBLER_SILVERCOINS3, // "Find 8 from each level and win" + SOUND_VOICE_BUBBLER_BADLUCK, // "Tough luck, kid" + SOUND_VOICE_BUBBLER_BADLUCK2, // "Maybe next time" + SOUND_VOICE_BUBBLER_RETRY, // "Come back whenever you're ready" + SOUND_VOICE_BUBBLER_TROPHY1, // "Well done, shrimp" + SOUND_VOICE_BUBBLER_TROPHY2, // "You have earned a piece of the amulet" + SOUND_VOICE_BUBBLER_TROPHY3, // "Now try the trophy challenge" + SOUND_VOICE_BUBBLER_TROPHY4, // "Goodbye" + SOUND_VOICE_BUBBLER_REMATCH2, // "If you can beat me again" + SOUND_VOICE_BUBBLER_REMATCH3, // "I'll give you a special prize" + SOUND_VOICE_BUBBLER_SILVERCOINS4, // "Then return to me" + SOUND_VOICE_BUBBLER_HAHA, + SOUND_VOICE_BLUEY_ENCOUNTER1, // "Well done" + SOUND_VOICE_BLUEY_ENCOUNTER2, // "Now I challenge you to a race" + SOUND_MENU_PICK2, + SOUND_MENU_PICK3, + SOUND_UNK237, + SOUND_UNK238, + SOUND_SELECT2, + SOUND_VOICE_TRICKY_WOAH3, + SOUND_VOICE_TRICKY_WOAH4, + SOUND_VOICE_SMOKEY_EH, + SOUND_VOICE_SMOKEY_HEH, + SOUND_VOICE_BLUEY_EH2, + SOUND_VOICE_BLUEY_OHNO2, + SOUND_VOICE_TRICKY_LAUGH, + SOUND_VOICE_TRICKY_LAUGH2, + SOUND_VOICE_SMOKEY_HAH, + SOUND_VOICE_SMOKEY_LAUGH, + SOUND_VOICE_BLUEY_HAHA3, + SOUND_VOICE_BLUEY_HAHA4, + SOUND_UNK252, + SOUND_CROWD, + SOUND_MENU_PICK4, + SOUND_UNK255, + SOUND_VOICE_TT_LAP2, + SOUND_VOICE_TT_FINAL_LAP, + SOUND_VOICE_TT_FINISH, + SOUND_UNK259, // Sounds like car engines driving past + SOUND_UNK260, // Continuous sound, not sure what it is + SOUND_VOICE_TT_DIDDY_KONG_RACING, // title drop + SOUND_VOICE_TT_PRESS_START, + SOUND_ZIP_PAD_BOOST, + SOUND_UNK264, + SOUND_UNK265, + SOUND_UNK266, + SOUND_STOMP4, + SOUND_STOMP5, + SOUND_INTRO_KIDS2, + SOUND_INTRO_PLANE2, + SOUND_VOICE_TAJ_HELLO, // "Hello, friend" + SOUND_WHOOSH4, + SOUND_VOICE_TAJ_BYE, // "Byebye for now" + SOUND_VOICE_TAJ_ALAKAZOOM, + SOUND_CYMBAL, + SOUND_SELECT3, + SOUND_VOICE_TT_ANCIENT_LAKE, + SOUND_VOICE_TT_BOULDER_CANYON, + SOUND_VOICE_TT_CRESCENT_ISLAND, + SOUND_VOICE_TT_DARKMOON_CAVERNS, + SOUND_VOICE_TT_EVERFROST_PEAK, + SOUND_VOICE_TT_FOSSIL_CANYON, + SOUND_VOICE_TT_FROSTY_VILLAGE, + SOUND_VOICE_TT_GREENWOOD_VILLAGE, + SOUND_VOICE_TT_HOT_TOP_VOLCANO, + SOUND_VOICE_TT_HAUNTED_WOODS, + SOUND_VOICE_TT_JUNGLE_FALLS, + SOUND_VOICE_TT_PIRATE_LAGOON, + SOUND_VOICE_TT_SNOWBALL_VALLEY, + SOUND_VOICE_TT_SPACEDUST_VALLEY, + SOUND_VOICE_TT_SPACEPORT_ALPHA, + SOUND_VOICE_TT_TREASURE_CAVES, + SOUND_VOICE_TT_STAR_CITY, + SOUND_VOICE_TT_WALRUS_COVE, + SOUND_VOICE_TT_WINDMILL_PLAINS, + SOUND_VOICE_TT_DINO_DOMAIN, + SOUND_VOICE_TT_DRAGON_FOREST, + SOUND_VOICE_TT_FUTURE_FUN_LAND, + SOUND_VOICE_TT_ICICLE_PYRAMID, + SOUND_VOICE_TT_SHIVER_ISLAND, + SOUND_VOICE_TT_SNOWFLAKE_MOUNTAIN, + SOUND_VOICE_TT_SMOKEY_CASTLE, + SOUND_VOICE_TT_TROPHY_RACE, + SOUND_VOICE_TT_WHALE_BAY, + SOUND_CAR_REV2, + SOUND_VOICE_TT_SNORE, + SOUND_LASER_GUN, + SOUND_NYOOM2, + SOUND_NYOOM3, + SOUND_HOMING_ROCKET, + SOUND_INCOMING_ROCKET, + SOUND_BOUNCE2, + SOUND_WHEE, + SOUND_MAGNET_HUM, + SOUND_TYRE_SCREECH, + SOUND_TWANG, + SOUND_UNK317, // Unsure + SOUND_VOICE_TT_POWERUP, + SOUND_SPLOINK, + SOUND_PLOP2, + SOUND_VOICE_TT_INTRO, // "Hi there, I'm T.T!" + SOUND_VOICE_TT_SEE_YOU, // "See you there" + SOUND_VOICE_TT_OK, + SOUND_VOICE_TT_LAP_RECORD, + SOUND_VOICE_TT_RACE_RECORD, + SOUND_UNK326, + SOUND_VOICE_TT_GO_FOR_IT, + SOUND_VOICE_TT_KEEP_GOING, + SOUND_VOICE_TT_YOU_CAN_DO_THIS, + SOUND_UNK330, + SOUND_VOICE_TT_OH_NO, + SOUND_VOICE_TT_TOO_BAD, + SOUND_VOICE_TT_UNLUCKY, + SOUND_VOICE_TT_NOT_AGAIN, + SOUND_TING_HIGHER, // Even higher than high. + SOUND_TING_HIGHEST, // Truly the tingiest ting of them all. + SOUND_SPLOINK2, + SOUND_BUBBLE, // The sound of pure rage, embodied. + SOUND_VOICE_TT_DARKWATER_BEACH, + SOUND_VOICE_TT_FIRE_MOUNTAIN, + SOUND_POP, + SOUND_HORN1, + SOUND_HORN2, + SOUND_HORN3, + SOUND_HORN4, + SOUND_HORN5, + SOUND_HORN6, + SOUND_HORN7, + SOUND_HORN8, + SOUND_HORN9, + SOUND_HORN10, + SOUND_UNK352, + SOUND_UNK353, + SOUND_VOICE_KRUNCH_BAA, + SOUND_VOICE_BUMPER_YOW, + SOUND_VOICE_TIPTUP_OW, + SOUND_VOICE_CONKER_YOWOW, + SOUND_VOICE_TIMBER_YEAH2, + SOUND_VOICE_BANJO_YAHOO2, + SOUND_VOICE_DRUMSTICK_WEH, + SOUND_VOICE_PIPSY_YAHOO, + SOUND_VOICE_TT_WAHEY, + SOUND_VOICE_DIDDY_HOOHOO, + SOUND_UNK364, + SOUND_UNK365, + SOUND_VOICE_KRUNCH_HAHA, + SOUND_VOICE_BUMPER_YEAH, + SOUND_VOICE_TIPTIP_WOHOAH, + SOUND_VOICE_CONKER_HEHE, + SOUND_VOICE_TIMBER_YIPPEE, + SOUND_VOICE_BANJO_WOAH2, + SOUND_VOICE_DRUMSTICK_BWAK2, + SOUND_VOICE_PIPSY_YIPPEE, + SOUND_VOICE_TT_HOHO, + SOUND_VOICE_DIDDY_HAHA, + SOUND_UNK376, + SOUND_UNK377, + SOUND_VOICE_KRUNCH_HEY, + SOUND_VOICE_BUMPER_WOOHOO, + SOUND_VOICE_TIPTUP_WOW, + SOUND_VOICE_CONKER_HEEHEE, + SOUND_VOICE_TIMBER_WOAH, + SOUND_VOICE_BANJO_WAHOY, + SOUND_VOICE_DRUMSTICK_WAH2, + SOUND_VOICE_PIPSY_YOW, + SOUND_VOICE_TT_WAHEE, + SOUND_VOICE_DIDDY_LAUGH3, + SOUND_UNK388, + SOUND_UNK389, + SOUND_VOICE_KRUNCH_HAHA2, + SOUND_VOICE_BUMPER_HOHO, + SOUND_VOICE_TIPTUP_HAHA, + SOUND_VOICE_CONKER_LAUGH, + SOUND_VOICE_TIMBER_LAUGH, + SOUND_VOICE_BANJO_HAHOO, + SOUND_VOICE_DRUMSTICK_BWAK3, + SOUND_VOICE_PIPSY_WAHOO, + SOUND_VOICE_TT_HEHE, + SOUND_VOICE_DIDDY_HEHEHAHA, + SOUND_UNK400, + SOUND_UNK401, + SOUND_VOICE_VOICE_KRUNCH_HAHA2, + SOUND_VOICE_BUMPER_LAUGH, + SOUND_VOICE_TIPTUP_LAUGH, + SOUND_VOICE_CONKER_WOOPDEEDOO, + SOUND_VOICE_TIMBER_LAUGH2, + SOUND_VOICE_BANJO_HOHO, + SOUND_VOICE_DRUMSTICK_BWAH, + SOUND_VOICE_PIPSY_HEHE, + SOUND_VOICE_TT_YIPPEE, + SOUND_VOICE_DIDDY_WOOHOO, + SOUND_UNK412, + SOUND_UNK413, + SOUND_VOICE_KRUNCH_LAUGH2, + SOUND_VOICE_BUMPER_WOOHOO2, + SOUND_VOICE_TIPTUP_HOHO, + SOUND_VOICE_CONKER_YEHAHA2, + SOUND_VOICE_TIMBER_COOL, + SOUND_VOICE_BANJO_HAHOO2, + SOUND_VOICE_DRUMSTICK_BWAK4, + SOUND_VOICE_PIPSY_LAUGH2, + SOUND_VOICE_TT_YAHOO, + SOUND_VOICE_DIDDY_YEE, + SOUND_UNK424, + SOUND_UNK425, + SOUND_VOICE_KRUNCH_LAUGH3, + SOUND_VOICE_BUMPER_LAUGH2, + SOUND_VOICE_TIPTUP_YEAH, + SOUND_VOICE_CONKER_YOO, + SOUND_VOICE_TIMBER_WOW2, + SOUND_VOICE_BANJO_GUHHUH2, + SOUND_VOICE_DRUMSTICK_BWAK5, + SOUND_VOICE_PIPSY_EEKEEK, + SOUND_VOICE_TT_WAHEY2, + SOUND_VOICE_DIDDY_HEHEHAHA2, + SOUND_UNK436, + SOUND_UNK437, + SOUND_VOICE_KRUNCH_HOHOO2, + SOUND_VOICE_BUMPER_WAHEY, + SOUND_VOICE_TIPTUP_HAHAHO, + SOUND_VOICE_CONKER_WOO, + SOUND_VOICE_TIMBER_RAGH2, + SOUND_VOICE_BANJO_YAHOO3, + SOUND_VOICE_DRUMSTICK_BWAK6, + SOUND_VOICE_PIPSY_EEK, + SOUND_VOICE_TT_HEHOO, + SOUND_VOICE_DIDDY_WOHOHA, + SOUND_UNK448, + SOUND_UNK449, + SOUND_VOICE_KRUNCH_ACK, + SOUND_VOICE_BUMPER_OHNO2, + SOUND_VOICE_TIPTUP_HEY, + SOUND_VOICE_CONKER_ACK, + SOUND_VOICE_TIMBER_WAH, + SOUND_VOICE_BANJO_GUHHUH3, + SOUND_VOICE_DRUMSTICK_BWAH2, + SOUND_VOICE_PIPSY_UHOH2, + SOUND_VOICE_TT_OW, + SOUND_VOICE_DIDDY_EEK, + SOUND_UNK460, + SOUND_UNK461, + SOUND_VOICE_KRUNCH_ARGH, + SOUND_VOICE_BUMPER_UH2, + SOUND_VOICE_TIPTUP_OW2, + SOUND_VOICE_CONKER_YOO2, + SOUND_VOICE_TIMBER_UHOH, + SOUND_VOICE_BANJO_WOAH3, + SOUND_VOICE_DRUMSTICK_AGH, + SOUND_VOICE_PIPSY_OW, + SOUND_VOICE_TT_OW2, + SOUND_VOICE_DIDDY_OOH, + SOUND_UNK472, + SOUND_UNK473, + SOUND_VOICE_KRUNCH_HEY2, + SOUND_VOICE_BUMPER_YOW2, + SOUND_VOICE_TIPTUP_WOW2, + SOUND_VOICE_CONKER_YOO3, + SOUND_VOICE_TIMBER_UHUH, + SOUND_VOICE_BANJO_WOAH4, + SOUND_VOICE_DRUMSTICK_BWAH3, + SOUND_VOICE_PIPSY_OOH, + SOUND_VOICE_TT_WOAH2, + SOUND_VOICE_DIDDY_OOH2, + SOUND_UNK484, + SOUND_UNK485, + SOUND_VOICE_KRUNCH_AH, + SOUND_VOICE_BUMPER_UH3, + SOUND_VOICE_TIPTUP_OW3, + SOUND_VOICE_CONKER_AHH2, + SOUND_VOICE_TIMBER_UHOH2, + SOUND_VOICE_BANJO_HOHO2, + SOUND_VOICE_DRUMSTICK_BWAK7, + SOUND_VOICE_PIPSY_OW2, + SOUND_VOICE_TT_OW3, + SOUND_VOICE_DIDDY_NARGH, + SOUND_UNK496, + SOUND_UNK497, + SOUND_VOICE_KRUNCH_HOHOO3, + SOUND_VOICE_BUMPER_OW, + SOUND_VOICE_TIPTUP_AHH2, + SOUND_VOICE_CONKER_YOO4, + SOUND_VOICE_TIMBER_RAGH3, + SOUND_VOICE_BANJO_AWW, + SOUND_VOICE_DRUMSTICK_AGH2, + SOUND_VOICE_PIPSY_EEKEEK2, + SOUND_VOICE_TT_HAHOW, + SOUND_VOICE_DIDDY_HEY, + SOUND_UNK508, + SOUND_UNK509, + SOUND_VOICE_KRUNCH_BAH, + SOUND_VOICE_BUMPER_WOAH, + SOUND_VOICE_TIPTUP_AHH3, + SOUND_VOICE_CONKER_YOO5, + SOUND_VOICE_TIMBER_WOW3, + SOUND_VOICE_BANJO_DOH, + SOUND_VOICE_DRUMSTICK_BWAK8, + SOUND_VOICE_PIPSY_YOW2, + SOUND_VOICE_TT_OOH, + SOUND_VOICE_DIDDY_WOAH2, + SOUND_UNK520, + SOUND_UNK521, + SOUND_VOICE_KRUNCH_EHH2, + SOUND_VOICE_BUMPER_YOW3, + SOUND_VOICE_TIPTUP_WATCHOUT, + SOUND_VOICE_CONKER_ACK2, + SOUND_VOICE_TIMBER_AH, + SOUND_VOICE_BANJO_OW, + SOUND_VOICE_DRUMSTICK_WAH3, + SOUND_VOICE_PIPSY_UHOH3, + SOUND_UNK530, + SOUND_VOICE_DIDDY_OW, + SOUND_UNK532, + SOUND_UNK533, + SOUND_VOICE_KRUNCH_HEY3, + SOUND_VOICE_BUMPER_OOH, + SOUND_VOICE_TIPTUP_HOHO2, + SOUND_VOICE_CONKER_YOO6, + SOUND_VOICE_TIMBER_RAGH4, + SOUND_VOICE_BANJO_OW2, + SOUND_VOICE_DRUMSTICK_BOK, + SOUND_VOICE_PIPSY_EEKEEK3, + SOUND_VOICE_TT_WOAH3, + SOUND_VOICE_DIDDY_OW2, + SOUND_VOICE_BLUEY_REMATCH4, // "If you can beat me again..." + SOUND_VOICE_BLUEY_TROPHY2, // "Goodbye kid" + + NUM_SOUND_IDS +}; + + +#endif diff --git a/include/structs.h b/include/structs.h index 3e02ca53..8a5da742 100644 --- a/include/structs.h +++ b/include/structs.h @@ -5,6 +5,7 @@ #include "types.h" #include "enums.h" +#include "sound_ids.h" /* Size: 0x20 bytes */ typedef struct MenuElement { @@ -942,7 +943,7 @@ typedef struct Object_Racer { /* 0x1C9 */ u8 unk1C9; /* 0x1CA */ s8 unk1CA; /* 0x1CB */ u8 unk1CB; - /* 0x1CC */ s8 unk1CC; + /* 0x1CC */ s8 aiSkill; /* 0x1CD */ u8 unk1CD; /* 0x1CE */ u8 unk1CE; /* 0x1CF */ s8 unk1CF; diff --git a/src/audio.c b/src/audio.c index fca72d12..13aa6bf7 100644 --- a/src/audio.c +++ b/src/audio.c @@ -673,12 +673,12 @@ u16 func_80001CB8(u16 arg0) { //Play Sound effect? GLOBAL_ASM("asm/non_matchings/audio/func_80001D04.s") -void func_80001EA8(u16 arg0, f32 x, f32 y, f32 z, s32 **arg4) { +void play_sound_spatial(u16 soundID, f32 x, f32 y, f32 z, s32 **arg4) { if (arg4 == NULL) { arg4 = &D_80115F84; } - func_80001D04(arg0, arg4); + func_80001D04(soundID, arg4); if (*arg4 != NULL) { func_80009B7C(*arg4, x, y, z); diff --git a/src/audio.h b/src/audio.h index ebbad97f..82304126 100644 --- a/src/audio.h +++ b/src/audio.h @@ -116,7 +116,7 @@ void play_sound(u8 arg0); u32 func_80001C08(void); void func_80001C5C(u16 arg0); u16 func_80001CB8(u16 arg0); -void func_80001EA8(u16 arg0, f32 x, f32 y, f32 z, s32 **arg4); +void play_sound_spatial(u16 soundID, f32 x, f32 y, f32 z, s32 **arg4); void func_80001F14(u16 sndIndx, u32 *arg1); u16 ALBankFile_80115D14_GetSoundCount(void); u8 ALSeqFile_80115CF8_GetSeqCount(void); @@ -129,7 +129,7 @@ void func_80002570(ALSeqPlayer *seqp); void func_80002608(u8 arg0); u8 func_80002630(void); -void func_80001D04(u16, s32*); //Non matching. +void func_80001D04(u16 soundID, s32*); //Non matching. void func_8000232C(ALSeqPlayer *seqp, void *ptr, u8 *arg2, ALCSeq *seq); //Non Matching f32 func_800015F8(void); //Non Matching void func_80001FB8(u16 arg0); //Non Matching diff --git a/src/game.c b/src/game.c index 0c6aaf28..b1b6adf2 100644 --- a/src/game.c +++ b/src/game.c @@ -191,7 +191,7 @@ void func_8006A6B0(void) { s32 checksumCount; u8 *sp44; s32 temp2; - + sp44 = allocate_from_main_pool_safe(sizeof(LevelHeader), 0xFFFF00FF); gTempAssetTable = load_asset_section_from_rom(ASSET_LEVEL_HEADERS_TABLE); i = 0; @@ -234,15 +234,15 @@ void func_8006A6B0(void) { } free_from_memory_pool(gTempAssetTable); free_from_memory_pool(sp44); - + gTempAssetTable = load_asset_section_from_rom(ASSET_LEVEL_NAMES_TABLE); - + for (i = 0; gTempAssetTable[i] != (-1); i++){} i--; - + temp = gTempAssetTable[i]; temp -= gTempAssetTable[0]; - + gLevelNames = allocate_from_main_pool_safe(i * sizeof(s32), 0xFFFF00FF); D_800DD310 = allocate_from_main_pool_safe(temp, 0xFFFF00FF); load_asset_to_address(ASSET_LEVEL_NAMES, D_800DD310, 0, temp); @@ -250,7 +250,7 @@ void func_8006A6B0(void) { gLevelNames[count] = &D_800DD310[gTempAssetTable[count]]; } free_from_memory_pool(gTempAssetTable); - + checksumCount = 0; for (i = 0; i < gFunc80068158Length; i++) { checksumCount += ((u8 *) (&func_80068158))[i]; diff --git a/src/game_text.c b/src/game_text.c index 651fa484..45eaadb3 100644 --- a/src/game_text.c +++ b/src/game_text.c @@ -190,7 +190,7 @@ void func_800C3440(s32 arg0) { if (D_8012A786 != 0) { D_8012A785 -= arg0; while (D_8012A785 < 0) { - D_8012A785 += set_timer_region_adjusted(0x3C); + D_8012A785 += normalise_time(0x3C); D_8012A786--; } if (D_8012A786 <= 0) { diff --git a/src/menu.c b/src/menu.c index f3a19c2e..5aa5ec3b 100644 --- a/src/menu.c +++ b/src/menu.c @@ -5227,20 +5227,20 @@ void func_80094C14(s32 arg0) { D_801263D8 += arg0; switch (D_800DF460) { case 0: - if (set_timer_region_adjusted(0xF0) < D_801263D8) { + if (normalise_time(0xF0) < D_801263D8) { set_music_fade_timer(-0x100); D_800DF460 = 1; } break; case 1: - if (set_timer_region_adjusted(0x12C) < D_801263D8) { + if (normalise_time(0x12C) < D_801263D8) { set_music_player_voice_limit(0x18); play_music(0x18); set_music_fade_timer(0x100); } break; } - if (set_timer_region_adjusted(0x12C) < D_801263D8) { + if (normalise_time(0x12C) < D_801263D8) { D_801263D8 = -1; } } diff --git a/src/object_functions.c b/src/object_functions.c index aed8b17c..10c19643 100644 --- a/src/object_functions.c +++ b/src/object_functions.c @@ -110,7 +110,7 @@ VertexPosition D_800DCB28[6] = { { 0, 0, -32 }, { 64, 0, 32 }, { 64, 0, -32 }, -}; +}; /*******************************/ @@ -155,14 +155,14 @@ void obj_init_scenery(Object *obj, LevelObjectEntry_Scenery *entry) { void obj_loop_scenery(Object *obj, s32 speed) { Object78_80033DD0 *obj78; s32 temp_v0; - + if (obj->unk4C != NULL) { obj78 = &obj->unk78; if (obj->unk7C.half.upper > 0) { obj78->unk4 -= speed; } if ((obj->unk4C->unk14 & 0x40) && ((s32) obj78->unk4 <= 0)) { - func_80009558(316, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); + func_80009558(SOUND_TWANG, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); obj78->unk0 = (s32*) obj->unk4C->unk0; obj78->unk6 = 1820; obj78->unk4 = 10; @@ -213,10 +213,10 @@ void func_80011570(Object*, f32, f32, f32); void func_8003FC44(f32, f32, f32, s32, s32, f32, s32); s16 arctan2_f(f32, f32); s32 func_8002AD08(f32, f32**, s32); -void func_80001D04(u16, s32 *); -void func_8000488C(s32); -void func_800AFC3C(Object *, s32); -void gParticlePtrList_addObject(Object *); +void func_80001D04(u16, s32 *); +void func_8000488C(s32); +void func_800AFC3C(Object *, s32); +void gParticlePtrList_addObject(Object *); void obj_loop_fireball_octoweapon(Object *obj, s32 speed) { Object *obj78; @@ -230,12 +230,12 @@ void obj_loop_fireball_octoweapon(Object *obj, s32 speed) { f32 sp4C[7]; obj78 = (Object*)obj->unk78; - + sp7C = speed; if (osTvType == TV_TYPE_PAL) { sp7C *= 1.2; } - + if ((obj->behaviorId == 116) && (obj->unk7C.word < 0)) { obj->segment.trans.x_position = 0.0f; obj->segment.trans.y_position = 0.0f; @@ -327,7 +327,7 @@ void obj_loop_fireball_octoweapon(Object *obj, s32 speed) { if (temp != 0) { func_8000488C(temp); } - func_80009558(341, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, 0); + func_80009558(SOUND_POP, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, 0); gParticlePtrList_addObject(obj); } } @@ -382,7 +382,7 @@ void obj_loop_laserbolt(Object *obj, s32 speed) { f32 sp3C; s32 sp38; // Boolean - + sp4F = FALSE; sp5C = speed; if (osTvType == TV_TYPE_PAL) { @@ -406,13 +406,13 @@ void obj_loop_laserbolt(Object *obj, s32 speed) { func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position - 36.0f, obj->segment.trans.z_position, 44, 0, 0.2, 0); sp4F = TRUE; } - + if (obj->unk78 > 0) { obj->unk78 -= speed; } else { sp4F = TRUE; } - + if (obj->unk4C->unk13 < 80) { obj4C_obj = (Object*)obj->unk4C->unk0; if (obj4C_obj && (obj4C_obj->behaviorId == 1)) { @@ -568,11 +568,11 @@ void obj_loop_trophycab(Object *obj, s32 speed) { f32 xDiff; f32 zDiff; s32 new_var2; - + settings = get_settings(); curLevelHeader = get_current_level_header(); obj64 = &obj->unk64->trophy_cabinet; - + // Show trophy inside the cabinet if (obj->unk7C.word == 0) { raceType = curLevelHeader->race_type; @@ -592,31 +592,31 @@ void obj_loop_trophycab(Object *obj, s32 speed) { } } } - + ((Object_54_80034E9C *) obj->unk54)->unk2C = 0.612f; ((Object_54_80034E9C *) obj->unk54)->unk28 = 0.0f; - + playerObj = get_object_struct(0); if (playerObj) { xDiff = obj->segment.trans.x_position - playerObj->segment.trans.x_position; zDiff = playerObj->segment.trans.z_position - obj->segment.trans.z_position; sqrtf((xDiff * xDiff) + (zDiff * zDiff)); // Distance on X & Z axes. Not used? - + new_var2 = settings->bosses; /** - * Future Fun Land doesn't have a boss rematch, so this OR is needed so that - * trophy race becomes avaliable after all the balloons have been collected. + * Future Fun Land doesn't have a boss rematch, so this OR is needed so that + * trophy race becomes avaliable after all the balloons have been collected. */ - new_var2 |= 0x800; - + new_var2 |= 0x800; + // Check if all the balloons have been collected. isTrophyRaceAvaliable = (settings->balloonsPtr[settings->worldId] < 8) ^ 1; if (isTrophyRaceAvaliable) { // Check if the boss rematch has been beaten. isTrophyRaceAvaliable = ((1 << (settings->worldId + 6)) & new_var2) != 0; } - + // Hit detection between cabinet & player? if ((((obj->unk78 == 0) && (!func_800C3400())) && obj->unk5C->unk100) && (obj64->unk4 == 0)) { // A hit has been detected at this point. @@ -744,7 +744,7 @@ void obj_loop_rocketsignpost(Object *obj, UNUSED s32 speed) { if (obj4C->unk13 < 0xC8) { if (playerObj == obj4C->unk0) { // Detect if the player honks or slams into the signpost. - if ((get_buttons_pressed_from_player(0) & Z_TRIG) || playerObj == obj->unk5C->unk100) { + if ((get_buttons_pressed_from_player(0) & Z_TRIG) || playerObj == obj->unk5C->unk100) { func_8006F29C(); } } @@ -847,7 +847,7 @@ void obj_init_groundzipper(Object *arg0, LevelObjectEntry_GroundZipper *entry) { void obj_loop_groundzipper(Object *obj, UNUSED s32 speed) { Object *curRacerObj; - Object_Racer *racerObj64; + Object_Racer *racer; f32 xDiff; f32 yDiff; s32 numObjects; @@ -862,22 +862,22 @@ void obj_loop_groundzipper(Object *obj, UNUSED s32 speed) { racerObjs = get_object_struct_array(&numObjects); for (i = 0; i < numObjects; i++) { curRacerObj = racerObjs[i]; - racerObj64 = &curRacerObj->unk64->racer; - if ((racerObj64->boostTimer < 15) && (racerObj64->unk1E2 != 0)) { + racer = &curRacerObj->unk64->racer; + if ((racer->boostTimer < 15) && (racer->unk1E2 != 0)) { xDiff = curRacerObj->segment.trans.x_position - obj->segment.trans.x_position; yDiff = curRacerObj->segment.trans.y_position - obj->segment.trans.y_position; zDiff = curRacerObj->segment.trans.z_position - obj->segment.trans.z_position; if ((s32) sqrtf((xDiff * xDiff) + (yDiff * yDiff) + (zDiff * zDiff)) < obj->unk78) { - if (racerObj64->playerIndex != -1) { - func_80001EA8(263, curRacerObj->segment.trans.x_position, curRacerObj->segment.trans.y_position, curRacerObj->segment.trans.z_position, NULL); + if (racer->playerIndex != PLAYER_COMPUTER) { + play_sound_spatial(SOUND_ZIP_PAD_BOOST, curRacerObj->segment.trans.x_position, curRacerObj->segment.trans.y_position, curRacerObj->segment.trans.z_position, NULL); } - racerObj64->boostTimer = set_timer_region_adjusted(45); - racerObj64->boostType = BOOST_LARGE; - if (racerObj64->throttleReleased) { - racerObj64->boostType |= BOOST_SMALL_FAST; + racer->boostTimer = normalise_time(45); + racer->boostType = BOOST_LARGE; + if (racer->throttleReleased) { + racer->boostType |= BOOST_SMALL_FAST; } - if (racerObj64->raceStatus == STATUS_RACING) { - func_80072348(racerObj64->playerIndex, 8); + if (racer->raceStatus == STATUS_RACING) { + func_80072348(racer->playerIndex, 8); } } } @@ -1085,7 +1085,7 @@ void obj_loop_animator(Object* obj, s32 speed) { s32 maxSpeed; obj64 = &obj->unk64->animator; - + temp = obj64->xSpeedFactor * speed; obj64->xSpeed += temp << 4; sp20 = obj64->xSpeed >> 4; @@ -1201,7 +1201,7 @@ void obj_init_animation(Object *obj, LevelObjectEntry_Animation *entry, s32 arg2 func_8001F23C(obj, entry); } obj64 = &obj->unk64->animation; - if (obj->unk64 != 0) { + if (obj->unk64 != 0) { func_8001EFA4(obj, obj64); if (entry->order != 0 || obj64->unk4A != entry->objectIdToSpawn) { gParticlePtrList_addObject(obj64); @@ -1696,7 +1696,7 @@ void obj_init_bonus(Object *obj, LevelObjectEntry_Bonus *entry) { void obj_loop_bonus(Object *obj, UNUSED s32 speed) { Object *racerObj; - Object_Racer *racerObj64; + Object_Racer *racer; s32 numberOfRacers; f32 xDiff; f32 yDiff; @@ -1714,7 +1714,7 @@ void obj_loop_bonus(Object *obj, UNUSED s32 speed) { racerObjects = get_object_struct_array(&numberOfRacers); for (i = 0; i < numberOfRacers; i++) { racerObj = racerObjects[i]; - racerObj64 = &racerObj->unk64->racer; + racer = &racerObj->unk64->racer; yDiff = racerObj->segment.trans.y_position - obj->segment.trans.y_position; if ((yDiff < halfDist) && (-halfDist < yDiff)) { xDiff = racerObj->segment.trans.x_position - obj->segment.trans.x_position; @@ -1722,10 +1722,10 @@ void obj_loop_bonus(Object *obj, UNUSED s32 speed) { if ((sqrtf((xDiff * xDiff) + (yDiff * yDiff) + (zDiff * zDiff)) < dist)) { f32 temp = (obj64->unk0 * racerObj->segment.trans.x_position) + (obj64->unk8 * racerObj->segment.trans.z_position) + obj64->unkC; if (temp < 0.0f) { - if ((s32) racerObj64->bananas < 10) { - racerObj64->bananas = 10; - func_80009558(34, racerObj->segment.trans.x_position, racerObj->segment.trans.y_position, racerObj->segment.trans.z_position, 4, NULL); - func_80001EA8(racerObj64->characterId + 123, racerObj->segment.trans.x_position, racerObj->segment.trans.y_position, racerObj->segment.trans.z_position, NULL); + if ((s32) racer->bananas < 10) { + racer->bananas = 10; + func_80009558(SOUND_SELECT, racerObj->segment.trans.x_position, racerObj->segment.trans.y_position, racerObj->segment.trans.z_position, 4, NULL); + play_sound_spatial(racer->characterId + SOUND_UNK123, racerObj->segment.trans.x_position, racerObj->segment.trans.y_position, racerObj->segment.trans.z_position, NULL); } } } @@ -1825,7 +1825,7 @@ void obj_loop_goldenballoon(Object *obj, s32 speed) { settings->balloonsPtr[0]++; } settings->courseFlagsPtr[settings->courseId] |= flag; - func_80001EA8(573, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, NULL); + play_sound_spatial(573, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, NULL); obj->unk7C.word = 16; obj->unk74 = 2; obj->segment.trans.unk6 |= 0x4000; @@ -2249,7 +2249,7 @@ void obj_init_weapon(Object *obj, UNUSED LevelObjectEntry_Weapon *entry) { obj->unk4C->unk11 = 0; obj->unk4C->unk10 = 0x18; obj->unk4C->unk12 = 0; - obj->unk78 = set_timer_region_adjusted(0x1E0); + obj->unk78 = normalise_time(0x1E0); obj->unk7C.word = 0; } @@ -2327,11 +2327,11 @@ void obj_init_audio(Object *obj, LevelObjectEntry_Audio *entry) { obj64->unk8 = 0; if (ALBankFile_80115D14_GetSoundDecayTime(obj64->unk0)) { func_8000974C(obj64->unk0, entry->common.x, entry->common.y, entry->common.z, - 9, obj64->unk5, obj64->unk4, obj64->unk2, obj64->unkC, + 9, obj64->unk5, obj64->unk4, obj64->unk2, obj64->unkC, obj64->unk6, obj64->unkD, &obj64->unk8); } else { - func_8000974C(obj64->unk0, entry->common.x, entry->common.y, entry->common.z, - 10, obj64->unk5, obj64->unk4, obj64->unk2, obj64->unkC, + func_8000974C(obj64->unk0, entry->common.x, entry->common.y, entry->common.z, + 10, obj64->unk5, obj64->unk4, obj64->unk2, obj64->unkC, obj64->unk6, obj64->unkD, &obj64->unk8); } gParticlePtrList_addObject(obj); @@ -2556,7 +2556,7 @@ void obj_init_butterfly(Object *obj, LevelObjectEntry_Butterfly *entry, s32 arg2 } else { obj64->texture = (TextureHeader*)obj->unk68[0]; } - + if (obj64->texture) { uMask = (obj64->texture->width - 1) << 5; vMask = (obj64->texture->height - 1) << 5; @@ -2691,7 +2691,7 @@ void obj_init_frog(Object *obj, LevelObjectEntry_Frog *entry) { if (obj64->unk15) { obj->segment.unk3A = 1; /** - * Don't spawn the chicken frog if drumstick is already unlocked, or + * Don't spawn the chicken frog if drumstick is already unlocked, or * if the player hasn't completed the trophy races yet. */ if (is_drumstick_unlocked() || (get_settings()->trophies & 0xFF) != 0xFF) { diff --git a/src/objects.c b/src/objects.c index fafb0a83..235ca9bd 100644 --- a/src/objects.c +++ b/src/objects.c @@ -487,7 +487,7 @@ void func_8000C844(s32 arg0) { * Since PAL runs at 50Hz, it therefore will reduce the timer to 5/6 to match, keeping * it consistent with non PAL timers, running 60Hz. */ -s32 set_timer_region_adjusted(s32 timer) { +s32 normalise_time(s32 timer) { if (osTvType != TV_TYPE_PAL || timer < 0) { return timer; } else { diff --git a/src/objects.h b/src/objects.h index 412d3a05..d180afff 100644 --- a/src/objects.h +++ b/src/objects.h @@ -130,7 +130,7 @@ Object *func_8000BF44(s32 arg0); void func_8000BF8C(void); void func_8000C460(void); void func_8000C604(void); -s32 set_timer_region_adjusted(s32 timer); +s32 normalise_time(s32 timer); void func_8000CBC0(void); s32 func_8000CC20(u32 *arg0); u32 func_8000E0B0(void); diff --git a/src/racer.c b/src/racer.c index 2caae07f..0b06a434 100644 --- a/src/racer.c +++ b/src/racer.c @@ -178,7 +178,7 @@ s8 D_8011D581; s8 D_8011D582; s8 D_8011D583; s8 D_8011D584; -s8 D_8011D585; +s8 gStartBoostTime; s16 D_8011D586; s8 D_8011D588[4]; s8 D_8011D58C[4]; @@ -452,7 +452,7 @@ void update_camera_hovercraft(f32 updateRate, Object *obj, Object_Racer *racer) } phi_f14 += baseSpeed * 30.0f; if (gRaceStartTimer == 0) { - if (set_timer_region_adjusted(36) < racer->boostTimer) { + if (normalise_time(36) < racer->boostTimer) { phi_f14 = -30.0f; } else if (racer->boostTimer > 0) { phi_f14 = 180.0f; @@ -719,7 +719,7 @@ void update_camera_plane(f32 updateRate, Object* obj, Object_Racer* racer) { phi_f14 -= tempVel; } if (!gRaceStartTimer) { - if (set_timer_region_adjusted(36) < racer->boostTimer) { + if (normalise_time(36) < racer->boostTimer) { phi_f14 = -30.0f; } else if (racer->boostTimer > 0) { phi_f14 = 180.0f; @@ -1000,7 +1000,7 @@ void obj_init_racer(Object *obj, LevelObjectEntry_CharacterFlag *racer) { if (1); if (1); // Also critical to match. func_80043ECC(0, NULL, 0); D_8011D583 = i; - D_8011D585 = 0; + gStartBoostTime = 0; tempObj->unk20A = 0; } @@ -1612,17 +1612,20 @@ void play_char_horn_sound(Object *obj, Object_Racer *racer) { func_800570B8(obj, 0x162, 8, 0x82); } else { // Play character's horn sound - func_80057048(obj, racer->characterId + 0x156); + racer_play_sound(obj, racer->characterId + SOUND_HORN1); } } GLOBAL_ASM("asm/non_matchings/racer/func_8005698C.s") GLOBAL_ASM("asm/non_matchings/racer/func_80056E2C.s") -void func_80057048(Object *obj, s32 arg1) { +/** + * Play a spatial sound, emitting from the position of the racer object. + */ +void racer_play_sound(Object *obj, s32 soundID) { Object_Racer *racer = &obj->unk64->racer; if (D_8011D55C != -1 && racer->unk108 == 0) { - func_80001EA8(arg1, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, NULL); + play_sound_spatial(soundID, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, NULL); } } @@ -1659,6 +1662,8 @@ void func_800570B8(Object *obj, s32 arg1, s32 arg2, s32 arg3) { } } +//s32 soundID = 545; + /** * This function dictates the base top speed of a racer. * During the race start sequence it hardsets it to 0 so you don't go anywhere. @@ -1692,45 +1697,53 @@ f32 handle_racer_top_speed(Object *obj, Object_Racer *racer) { if (timer < 0) { timer = -timer; } - if ((gCurrentCarInput & Z_TRIG)) { if (timer < 2) { timer = 0; } } - timer2 = 24 - timer; - racer->boostTimer = set_timer_region_adjusted(timer2 >> 1); + racer->boostTimer = normalise_time(timer2 >> 1); if (timer2 == 24) { - func_80057048(obj, 34); - racer->boostTimer = set_timer_region_adjusted(20); + racer_play_sound(obj, SOUND_SELECT); + racer->boostTimer = normalise_time(20); } - if (racer->boostTimer < set_timer_region_adjusted(20)) { + if (racer->boostTimer < normalise_time(20)) { racer->boostType = BOOST_SMALL; - } else if (racer->boostTimer < set_timer_region_adjusted(35)) { + } else if (racer->boostTimer < normalise_time(35)) { racer->boostType = BOOST_MEDIUM; } else { racer->boostType = BOOST_LARGE; } racer->boost_sound |= BOOST_RACE_START; D_8011D560 = 7; - D_8011D585 = racer->boostTimer; + gStartBoostTime = racer->boostTimer; } - if ((racer->playerIndex == PLAYER_COMPUTER) && (!racer->unk1CC || (racer->unk1CC == 1 && D_8011D585))) { - if (D_8011D585) { - racer->boostTimer = D_8011D585; + // For the AI, expert AI will match the players start, and master AI will get a good start always. + if ((racer->playerIndex == PLAYER_COMPUTER) && (racer->aiSkill == AI_MASTER || (racer->aiSkill == AI_EXPERT && gStartBoostTime))) { + if (gStartBoostTime) { + racer->boostTimer = gStartBoostTime; } else { - racer->boostTimer = set_timer_region_adjusted(5); + racer->boostTimer = normalise_time(5); } - if (racer->boostTimer < set_timer_region_adjusted(20)) { + if (racer->boostTimer < normalise_time(20)) { racer->boostType = BOOST_SMALL; - } else if (racer->boostTimer < set_timer_region_adjusted(35)) { + } else if (racer->boostTimer < normalise_time(35)) { racer->boostType = BOOST_MEDIUM; } else { racer->boostType = BOOST_LARGE; } } } + /*render_printf("%d", soundID); + if (gActivePlayerButtonPress & L_TRIG) + { + racer_play_sound(obj, soundID); + } + if (gActivePlayerButtonPress & L_JPAD) + soundID --; + if (gActivePlayerButtonPress & R_JPAD) + soundID ++;*/ if (racer->boostTimer && !gRaceStartTimer && timer3 && racer->raceStatus == STATUS_RACING) { func_80072348(racer->playerIndex, 6); } @@ -1741,7 +1754,7 @@ f32 handle_racer_top_speed(Object *obj, Object_Racer *racer) { if (racer->boost_sound & BOOST_RACE_START) { racer->boost_sound &= ~BOOST_RACE_START; func_800570B8(obj, 354, 8, 130); - func_80057048(obj, 33); + racer_play_sound(obj, SOUND_NITRO_BOOST); } } @@ -2054,7 +2067,7 @@ void update_camera_car(f32 updateRate, Object *obj, Object_Racer *racer) { baseDistance += baseSpeed * 30.0f; } if (gRaceStartTimer == 0) { - if (set_timer_region_adjusted(0x24) < racer->boostTimer) { + if (normalise_time(0x24) < racer->boostTimer) { baseDistance = -30.0f; } else if (racer->boostTimer > 0) { baseDistance = 180.0f; diff --git a/src/racer.h b/src/racer.h index 92fd574e..b90d9d57 100644 --- a/src/racer.h +++ b/src/racer.h @@ -31,6 +31,7 @@ typedef enum BoostSound { BOOST_UNK2 } BoostSound; +// boost types suffixed with _FAST are the ones you get from releasing the throttle. typedef enum BoostType { BOOST_SMALL, BOOST_MEDIUM, @@ -41,6 +42,14 @@ typedef enum BoostType { BOOST_LARGE_FAST, } BoostType; +typedef enum AISkill { + AI_MASTER, + AI_EXPERT, + AI_HARD, + AI_MEDIUM, + AI_EASY +} AISkill; + typedef struct ObjectCamera { /* 0x0014 */ ObjectTransform trans; /* 0x0018 */ f32 unk18; @@ -192,7 +201,7 @@ void handle_car_steering(Object_Racer *racer); void func_800535C4(unk800535C4 *arg0, unk800535C4_2 *arg1); void handle_car_velocity_control(Object_Racer *racer); void play_char_horn_sound(Object *obj, Object_Racer *racer); -void func_80057048(Object *obj, s32 arg1); +void racer_play_sound(Object *obj, s32 soundID); void func_800570A4(Object *obj, s32 arg1, s32 arg2); void func_800575EC(Object *obj, Object_Racer *racer); void func_800579B0(Object_Racer *racer, s32 arg1, f32 updateRate);