diff --git a/asm/non_matchings/objects/func_800113CC.s b/asm/non_matchings/objects/func_800113CC.s index 74b52a44..cd40074e 100644 --- a/asm/non_matchings/objects/func_800113CC.s +++ b/asm/non_matchings/objects/func_800113CC.s @@ -81,7 +81,7 @@ glabel func_800113CC /* 0120F4 800114F4 8E270014 */ lw $a3, 0x14($s1) /* 0120F8 800114F8 AFA00014 */ sw $zero, 0x14($sp) /* 0120FC 800114FC AFAD0010 */ sw $t5, 0x10($sp) -/* 012100 80011500 0C002556 */ jal func_80009558 +/* 012100 80011500 0C002556 */ jal play_sound_at_position /* 012104 80011504 3044FFFF */ andi $a0, $v0, 0xffff /* 012108 80011508 26030001 */ addiu $v1, $s0, 1 /* 01210C 8001150C 02408025 */ move $s0, $s2 diff --git a/asm/non_matchings/unknown_005740/func_800090C0.s b/asm/non_matchings/unknown_005740/func_800090C0.s deleted file mode 100644 index 6a384af7..00000000 --- a/asm/non_matchings/unknown_005740/func_800090C0.s +++ /dev/null @@ -1,133 +0,0 @@ -glabel func_800090C0 -/* 009CC0 800090C0 460E7482 */ mul.s $f18, $f14, $f14 -/* 009CC4 800090C4 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 009CC8 800090C8 E7AC0028 */ swc1 $f12, 0x28($sp) -/* 009CCC 800090CC C7B00028 */ lwc1 $f16, 0x28($sp) -/* 009CD0 800090D0 AFBF0014 */ sw $ra, 0x14($sp) -/* 009CD4 800090D4 46108402 */ mul.s $f16, $f16, $f16 -/* 009CD8 800090D8 AFA60030 */ sw $a2, 0x30($sp) -/* 009CDC 800090DC E7AE002C */ swc1 $f14, 0x2c($sp) -/* 009CE0 800090E0 0C0326B4 */ jal sqrtf -/* 009CE4 800090E4 46128300 */ add.s $f12, $f16, $f18 -/* 009CE8 800090E8 C7AE002C */ lwc1 $f14, 0x2c($sp) -/* 009CEC 800090EC C7AC0028 */ lwc1 $f12, 0x28($sp) -/* 009CF0 800090F0 0C01C1D4 */ jal arctan2_f -/* 009CF4 800090F4 E7A0001C */ swc1 $f0, 0x1c($sp) -/* 009CF8 800090F8 8FA60030 */ lw $a2, 0x30($sp) -/* 009CFC 800090FC 340EFFFF */ li $t6, 65535 -/* 009D00 80009100 01C21823 */ subu $v1, $t6, $v0 -/* 009D04 80009104 C7A2001C */ lwc1 $f2, 0x1c($sp) -/* 009D08 80009108 0066082A */ slt $at, $v1, $a2 -/* 009D0C 8000910C 1020002F */ beqz $at, .L800091CC -/* 009D10 80009110 00602825 */ move $a1, $v1 -/* 009D14 80009114 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 009D18 80009118 44815000 */ mtc1 $at, $f10 -/* 009D1C 8000911C 00C52023 */ subu $a0, $a2, $a1 -/* 009D20 80009120 460A103E */ c.le.s $f2, $f10 -/* 009D24 80009124 00044C00 */ sll $t1, $a0, 0x10 -/* 009D28 80009128 4500001F */ bc1f .L800091A8 -/* 009D2C 8000912C 00000000 */ nop -/* 009D30 80009130 00C32023 */ subu $a0, $a2, $v1 -/* 009D34 80009134 00047C00 */ sll $t7, $a0, 0x10 -/* 009D38 80009138 000F2403 */ sra $a0, $t7, 0x10 -/* 009D3C 8000913C 0C01C20C */ jal sins -/* 009D40 80009140 E7A2001C */ swc1 $f2, 0x1c($sp) -/* 009D44 80009144 C7A2001C */ lwc1 $f2, 0x1c($sp) -/* 009D48 80009148 04410003 */ bgez $v0, .L80009158 -/* 009D4C 8000914C 0002CA83 */ sra $t9, $v0, 0xa -/* 009D50 80009150 244103FF */ addiu $at, $v0, 0x3ff -/* 009D54 80009154 0001CA83 */ sra $t9, $at, 0xa -.L80009158: -/* 009D58 80009158 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 009D5C 8000915C 44812000 */ mtc1 $at, $f4 -/* 009D60 80009160 44998000 */ mtc1 $t9, $f16 -/* 009D64 80009164 46041182 */ mul.s $f6, $f2, $f4 -/* 009D68 80009168 3C014280 */ li $at, 0x42800000 # 64.000000 -/* 009D6C 8000916C 44815000 */ mtc1 $at, $f10 -/* 009D70 80009170 468084A0 */ cvt.s.w $f18, $f16 -/* 009D74 80009174 46069202 */ mul.s $f8, $f18, $f6 -/* 009D78 80009178 46085401 */ sub.s $f16, $f10, $f8 -/* 009D7C 8000917C 4448F800 */ cfc1 $t0, $31 -/* 009D80 80009180 00000000 */ nop -/* 009D84 80009184 35010003 */ ori $at, $t0, 3 -/* 009D88 80009188 38210002 */ xori $at, $at, 2 -/* 009D8C 8000918C 44C1F800 */ ctc1 $at, $31 -/* 009D90 80009190 00000000 */ nop -/* 009D94 80009194 46008124 */ cvt.w.s $f4, $f16 -/* 009D98 80009198 44032000 */ mfc1 $v1, $f4 -/* 009D9C 8000919C 44C8F800 */ ctc1 $t0, $31 -/* 009DA0 800091A0 10000036 */ b .L8000927C -/* 009DA4 800091A4 00000000 */ nop -.L800091A8: -/* 009DA8 800091A8 0C01C224 */ jal sins_2 -/* 009DAC 800091AC 00092403 */ sra $a0, $t1, 0x10 -/* 009DB0 800091B0 04410003 */ bgez $v0, .L800091C0 -/* 009DB4 800091B4 00025A83 */ sra $t3, $v0, 0xa -/* 009DB8 800091B8 244103FF */ addiu $at, $v0, 0x3ff -/* 009DBC 800091BC 00015A83 */ sra $t3, $at, 0xa -.L800091C0: -/* 009DC0 800091C0 240C0040 */ li $t4, 64 -/* 009DC4 800091C4 1000002D */ b .L8000927C -/* 009DC8 800091C8 018B1823 */ subu $v1, $t4, $t3 -.L800091CC: -/* 009DCC 800091CC 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 009DD0 800091D0 44819000 */ mtc1 $at, $f18 -/* 009DD4 800091D4 00A62023 */ subu $a0, $a1, $a2 -/* 009DD8 800091D8 4612103E */ c.le.s $f2, $f18 -/* 009DDC 800091DC 0004CC00 */ sll $t9, $a0, 0x10 -/* 009DE0 800091E0 4500001F */ bc1f .L80009260 -/* 009DE4 800091E4 00000000 */ nop -/* 009DE8 800091E8 00A62023 */ subu $a0, $a1, $a2 -/* 009DEC 800091EC 00046C00 */ sll $t5, $a0, 0x10 -/* 009DF0 800091F0 000D2403 */ sra $a0, $t5, 0x10 -/* 009DF4 800091F4 0C01C20C */ jal sins -/* 009DF8 800091F8 E7A2001C */ swc1 $f2, 0x1c($sp) -/* 009DFC 800091FC C7A2001C */ lwc1 $f2, 0x1c($sp) -/* 009E00 80009200 04410003 */ bgez $v0, .L80009210 -/* 009E04 80009204 00027A83 */ sra $t7, $v0, 0xa -/* 009E08 80009208 244103FF */ addiu $at, $v0, 0x3ff -/* 009E0C 8000920C 00017A83 */ sra $t7, $at, 0xa -.L80009210: -/* 009E10 80009210 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 009E14 80009214 44814000 */ mtc1 $at, $f8 -/* 009E18 80009218 448F3000 */ mtc1 $t7, $f6 -/* 009E1C 8000921C 46081402 */ mul.s $f16, $f2, $f8 -/* 009E20 80009220 3C014280 */ li $at, 0x42800000 # 64.000000 -/* 009E24 80009224 44819000 */ mtc1 $at, $f18 -/* 009E28 80009228 468032A0 */ cvt.s.w $f10, $f6 -/* 009E2C 8000922C 46105102 */ mul.s $f4, $f10, $f16 -/* 009E30 80009230 46122180 */ add.s $f6, $f4, $f18 -/* 009E34 80009234 4458F800 */ cfc1 $t8, $31 -/* 009E38 80009238 00000000 */ nop -/* 009E3C 8000923C 37010003 */ ori $at, $t8, 3 -/* 009E40 80009240 38210002 */ xori $at, $at, 2 -/* 009E44 80009244 44C1F800 */ ctc1 $at, $31 -/* 009E48 80009248 00000000 */ nop -/* 009E4C 8000924C 46003224 */ cvt.w.s $f8, $f6 -/* 009E50 80009250 44034000 */ mfc1 $v1, $f8 -/* 009E54 80009254 44D8F800 */ ctc1 $t8, $31 -/* 009E58 80009258 10000008 */ b .L8000927C -/* 009E5C 8000925C 00000000 */ nop -.L80009260: -/* 009E60 80009260 0C01C224 */ jal sins_2 -/* 009E64 80009264 00192403 */ sra $a0, $t9, 0x10 -/* 009E68 80009268 04410003 */ bgez $v0, .L80009278 -/* 009E6C 8000926C 00021A83 */ sra $v1, $v0, 0xa -/* 009E70 80009270 244103FF */ addiu $at, $v0, 0x3ff -/* 009E74 80009274 00011A83 */ sra $v1, $at, 0xa -.L80009278: -/* 009E78 80009278 24630040 */ addiu $v1, $v1, 0x40 -.L8000927C: -/* 009E7C 8000927C 0C0270C3 */ jal get_filtered_cheats -/* 009E80 80009280 AFA30020 */ sw $v1, 0x20($sp) -/* 009E84 80009284 8FA30020 */ lw $v1, 0x20($sp) -/* 009E88 80009288 30490004 */ andi $t1, $v0, 4 -/* 009E8C 8000928C 11200002 */ beqz $t1, .L80009298 -/* 009E90 80009290 240A0080 */ li $t2, 128 -/* 009E94 80009294 01431823 */ subu $v1, $t2, $v1 -.L80009298: -/* 009E98 80009298 8FBF0014 */ lw $ra, 0x14($sp) -/* 009E9C 8000929C 27BD0028 */ addiu $sp, $sp, 0x28 -/* 009EA0 800092A0 03E00008 */ jr $ra -/* 009EA4 800092A4 00601025 */ move $v0, $v1 - diff --git a/asm/non_matchings/unknown_005740/func_80009558.s b/asm/non_matchings/unknown_005740/func_80009558.s deleted file mode 100644 index 49aa1b78..00000000 --- a/asm/non_matchings/unknown_005740/func_80009558.s +++ /dev/null @@ -1,38 +0,0 @@ -glabel func_80009558 -/* 00A158 80009558 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 00A15C 8000955C AFA40038 */ sw $a0, 0x38($sp) -/* 00A160 80009560 97AF003A */ lhu $t7, 0x3a($sp) -/* 00A164 80009564 3C0E8012 */ lui $t6, %hi(D_80119C40) # $t6, 0x8012 -/* 00A168 80009568 000FC080 */ sll $t8, $t7, 2 -/* 00A16C 8000956C 8DCE9C40 */ lw $t6, %lo(D_80119C40)($t6) -/* 00A170 80009570 030FC021 */ addu $t8, $t8, $t7 -/* 00A174 80009574 0018C040 */ sll $t8, $t8, 1 -/* 00A178 80009578 93B9004B */ lbu $t9, 0x4b($sp) -/* 00A17C 8000957C AFBF0034 */ sw $ra, 0x34($sp) -/* 00A180 80009580 AFA70044 */ sw $a3, 0x44($sp) -/* 00A184 80009584 01D81021 */ addu $v0, $t6, $t8 -/* 00A188 80009588 94440000 */ lhu $a0, ($v0) -/* 00A18C 8000958C AFB90010 */ sw $t9, 0x10($sp) -/* 00A190 80009590 90480003 */ lbu $t0, 3($v0) -/* 00A194 80009594 44856000 */ mtc1 $a1, $f12 -/* 00A198 80009598 AFA80014 */ sw $t0, 0x14($sp) -/* 00A19C 8000959C 90490002 */ lbu $t1, 2($v0) -/* 00A1A0 800095A0 44867000 */ mtc1 $a2, $f14 -/* 00A1A4 800095A4 AFA90018 */ sw $t1, 0x18($sp) -/* 00A1A8 800095A8 944A0006 */ lhu $t2, 6($v0) -/* 00A1AC 800095AC AFA00020 */ sw $zero, 0x20($sp) -/* 00A1B0 800095B0 AFAA001C */ sw $t2, 0x1c($sp) -/* 00A1B4 800095B4 904B0004 */ lbu $t3, 4($v0) -/* 00A1B8 800095B8 8FAD004C */ lw $t5, 0x4c($sp) -/* 00A1BC 800095BC AFAB0024 */ sw $t3, 0x24($sp) -/* 00A1C0 800095C0 904C0008 */ lbu $t4, 8($v0) -/* 00A1C4 800095C4 44056000 */ mfc1 $a1, $f12 -/* 00A1C8 800095C8 44067000 */ mfc1 $a2, $f14 -/* 00A1CC 800095CC AFAD002C */ sw $t5, 0x2c($sp) -/* 00A1D0 800095D0 0C0025D3 */ jal func_8000974C -/* 00A1D4 800095D4 AFAC0028 */ sw $t4, 0x28($sp) -/* 00A1D8 800095D8 8FBF0034 */ lw $ra, 0x34($sp) -/* 00A1DC 800095DC 27BD0038 */ addiu $sp, $sp, 0x38 -/* 00A1E0 800095E0 03E00008 */ jr $ra -/* 00A1E4 800095E4 00000000 */ nop - diff --git a/asm/non_matchings/unknown_005740/func_800095E8.s b/asm/non_matchings/unknown_005740/func_800095E8.s deleted file mode 100644 index 2a71effa..00000000 --- a/asm/non_matchings/unknown_005740/func_800095E8.s +++ /dev/null @@ -1,65 +0,0 @@ -glabel func_800095E8 -/* 00A1E8 800095E8 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 00A1EC 800095EC 4449F800 */ cfc1 $t1, $31 -/* 00A1F0 800095F0 240A0001 */ li $t2, 1 -/* 00A1F4 800095F4 44CAF800 */ ctc1 $t2, $31 -/* 00A1F8 800095F8 C7A40050 */ lwc1 $f4, 0x50($sp) -/* 00A1FC 800095FC 44856000 */ mtc1 $a1, $f12 -/* 00A200 80009600 460021A4 */ cvt.w.s $f6, $f4 -/* 00A204 80009604 44867000 */ mtc1 $a2, $f14 -/* 00A208 80009608 444AF800 */ cfc1 $t2, $31 -/* 00A20C 8000960C 93AF004B */ lbu $t7, 0x4b($sp) -/* 00A210 80009610 93B9004F */ lbu $t9, 0x4f($sp) -/* 00A214 80009614 AFA40038 */ sw $a0, 0x38($sp) -/* 00A218 80009618 308EFFFF */ andi $t6, $a0, 0xffff -/* 00A21C 8000961C 24180064 */ li $t8, 100 -/* 00A220 80009620 24083A98 */ li $t0, 15000 -/* 00A224 80009624 44056000 */ mfc1 $a1, $f12 -/* 00A228 80009628 44067000 */ mfc1 $a2, $f14 -/* 00A22C 8000962C 314A0078 */ andi $t2, $t2, 0x78 -/* 00A230 80009630 01C02025 */ move $a0, $t6 -/* 00A234 80009634 AFBF0034 */ sw $ra, 0x34($sp) -/* 00A238 80009638 AFA70044 */ sw $a3, 0x44($sp) -/* 00A23C 8000963C AFA8001C */ sw $t0, 0x1c($sp) -/* 00A240 80009640 AFB80014 */ sw $t8, 0x14($sp) -/* 00A244 80009644 AFA00020 */ sw $zero, 0x20($sp) -/* 00A248 80009648 AFAF0010 */ sw $t7, 0x10($sp) -/* 00A24C 8000964C 11400013 */ beqz $t2, .L8000969C -/* 00A250 80009650 AFB90018 */ sw $t9, 0x18($sp) -/* 00A254 80009654 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 00A258 80009658 44813000 */ mtc1 $at, $f6 -/* 00A25C 8000965C 240A0001 */ li $t2, 1 -/* 00A260 80009660 46062181 */ sub.s $f6, $f4, $f6 -/* 00A264 80009664 3C018000 */ lui $at, 0x8000 -/* 00A268 80009668 44CAF800 */ ctc1 $t2, $31 -/* 00A26C 8000966C 00000000 */ nop -/* 00A270 80009670 460031A4 */ cvt.w.s $f6, $f6 -/* 00A274 80009674 444AF800 */ cfc1 $t2, $31 -/* 00A278 80009678 00000000 */ nop -/* 00A27C 8000967C 314A0078 */ andi $t2, $t2, 0x78 -/* 00A280 80009680 15400004 */ bnez $t2, .L80009694 -/* 00A284 80009684 00000000 */ nop -/* 00A288 80009688 440A3000 */ mfc1 $t2, $f6 -/* 00A28C 8000968C 10000007 */ b .L800096AC -/* 00A290 80009690 01415025 */ or $t2, $t2, $at -.L80009694: -/* 00A294 80009694 10000005 */ b .L800096AC -/* 00A298 80009698 240AFFFF */ li $t2, -1 -.L8000969C: -/* 00A29C 8000969C 440A3000 */ mfc1 $t2, $f6 -/* 00A2A0 800096A0 00000000 */ nop -/* 00A2A4 800096A4 0540FFFB */ bltz $t2, .L80009694 -/* 00A2A8 800096A8 00000000 */ nop -.L800096AC: -/* 00A2AC 800096AC 8FAC0054 */ lw $t4, 0x54($sp) -/* 00A2B0 800096B0 44C9F800 */ ctc1 $t1, $31 -/* 00A2B4 800096B4 240B003F */ li $t3, 63 -/* 00A2B8 800096B8 AFAB0028 */ sw $t3, 0x28($sp) -/* 00A2BC 800096BC AFAA0024 */ sw $t2, 0x24($sp) -/* 00A2C0 800096C0 0C0025D3 */ jal func_8000974C -/* 00A2C4 800096C4 AFAC002C */ sw $t4, 0x2c($sp) -/* 00A2C8 800096C8 8FBF0034 */ lw $ra, 0x34($sp) -/* 00A2CC 800096CC 27BD0038 */ addiu $sp, $sp, 0x38 -/* 00A2D0 800096D0 03E00008 */ jr $ra -/* 00A2D4 800096D4 00000000 */ nop - diff --git a/asm/non_matchings/unknown_005740/func_8000974C.s b/asm/non_matchings/unknown_005740/func_8000974C.s deleted file mode 100644 index ffff8598..00000000 --- a/asm/non_matchings/unknown_005740/func_8000974C.s +++ /dev/null @@ -1,93 +0,0 @@ -glabel func_8000974C -/* 00A34C 8000974C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 00A350 80009750 AFA5001C */ sw $a1, 0x1c($sp) -/* 00A354 80009754 8FA50044 */ lw $a1, 0x44($sp) -/* 00A358 80009758 AFBF0014 */ sw $ra, 0x14($sp) -/* 00A35C 8000975C AFA40018 */ sw $a0, 0x18($sp) -/* 00A360 80009760 AFA60020 */ sw $a2, 0x20($sp) -/* 00A364 80009764 10A00009 */ beqz $a1, .L8000978C -/* 00A368 80009768 AFA70024 */ sw $a3, 0x24($sp) -/* 00A36C 8000976C 97A4001A */ lhu $a0, 0x1a($sp) -/* 00A370 80009770 00000000 */ nop -/* 00A374 80009774 348EE000 */ ori $t6, $a0, 0xe000 -/* 00A378 80009778 000E7C00 */ sll $t7, $t6, 0x10 -/* 00A37C 8000977C 0C00916D */ jal func_800245B4 -/* 00A380 80009780 000F2403 */ sra $a0, $t7, 0x10 -/* 00A384 80009784 8FA50044 */ lw $a1, 0x44($sp) -/* 00A388 80009788 00000000 */ nop -.L8000978C: -/* 00A38C 8000978C 3C04800E */ lui $a0, %hi(D_800DC6E0) # $a0, 0x800e -/* 00A390 80009790 2484C6E0 */ addiu $a0, %lo(D_800DC6E0) # addiu $a0, $a0, -0x3920 -/* 00A394 80009794 94990000 */ lhu $t9, ($a0) -/* 00A398 80009798 24010028 */ li $at, 40 -/* 00A39C 8000979C 17210008 */ bne $t9, $at, .L800097C0 -/* 00A3A0 800097A0 3C068012 */ lui $a2, %hi(D_80119C4C) # $a2, 0x8012 -/* 00A3A4 800097A4 10A00002 */ beqz $a1, .L800097B0 -/* 00A3A8 800097A8 00000000 */ nop -/* 00A3AC 800097AC ACA00000 */ sw $zero, ($a1) -.L800097B0: -/* 00A3B0 800097B0 0C00916D */ jal func_800245B4 -/* 00A3B4 800097B4 2404AA55 */ li $a0, -21931 -/* 00A3B8 800097B8 10000037 */ b .L80009898 -/* 00A3BC 800097BC 8FBF0014 */ lw $ra, 0x14($sp) -.L800097C0: -/* 00A3C0 800097C0 24C69C4C */ addiu $a2, %lo(D_80119C4C) # addiu $a2, $a2, -0x63b4 -/* 00A3C4 800097C4 90C30000 */ lbu $v1, ($a2) -/* 00A3C8 800097C8 3C088012 */ lui $t0, %hi(D_80119C50) # $t0, 0x8012 -/* 00A3CC 800097CC 8D089C50 */ lw $t0, %lo(D_80119C50)($t0) -/* 00A3D0 800097D0 00034880 */ sll $t1, $v1, 2 -/* 00A3D4 800097D4 01095021 */ addu $t2, $t0, $t1 -/* 00A3D8 800097D8 8D420000 */ lw $v0, ($t2) -/* 00A3DC 800097DC C7A4001C */ lwc1 $f4, 0x1c($sp) -/* 00A3E0 800097E0 246BFFFF */ addiu $t3, $v1, -1 -/* 00A3E4 800097E4 A0CB0000 */ sb $t3, ($a2) -/* 00A3E8 800097E8 E4440000 */ swc1 $f4, ($v0) -/* 00A3EC 800097EC C7A60020 */ lwc1 $f6, 0x20($sp) -/* 00A3F0 800097F0 3C0A8012 */ lui $t2, %hi(D_80119C44) # $t2, 0x8012 -/* 00A3F4 800097F4 E4460004 */ swc1 $f6, 4($v0) -/* 00A3F8 800097F8 C7A80024 */ lwc1 $f8, 0x24($sp) -/* 00A3FC 800097FC 00000000 */ nop -/* 00A400 80009800 E4480008 */ swc1 $f8, 8($v0) -/* 00A404 80009804 97AC001A */ lhu $t4, 0x1a($sp) -/* 00A408 80009808 00000000 */ nop -/* 00A40C 8000980C A44C000C */ sh $t4, 0xc($v0) -/* 00A410 80009810 93AD002B */ lbu $t5, 0x2b($sp) -/* 00A414 80009814 00000000 */ nop -/* 00A418 80009818 A04D0011 */ sb $t5, 0x11($v0) -/* 00A41C 8000981C 93AE002F */ lbu $t6, 0x2f($sp) -/* 00A420 80009820 00000000 */ nop -/* 00A424 80009824 A04E0010 */ sb $t6, 0x10($v0) -/* 00A428 80009828 93AF0033 */ lbu $t7, 0x33($sp) -/* 00A42C 8000982C 00000000 */ nop -/* 00A430 80009830 A04F000E */ sb $t7, 0xe($v0) -/* 00A434 80009834 93B8003F */ lbu $t8, 0x3f($sp) -/* 00A438 80009838 00000000 */ nop -/* 00A43C 8000983C A058000F */ sb $t8, 0xf($v0) -/* 00A440 80009840 97B90036 */ lhu $t9, 0x36($sp) -/* 00A444 80009844 00000000 */ nop -/* 00A448 80009848 AC590014 */ sw $t9, 0x14($v0) -/* 00A44C 8000984C 93A8003B */ lbu $t0, 0x3b($sp) -/* 00A450 80009850 00000000 */ nop -/* 00A454 80009854 A0480020 */ sb $t0, 0x20($v0) -/* 00A458 80009858 93A90043 */ lbu $t1, 0x43($sp) -/* 00A45C 8000985C A0400022 */ sb $zero, 0x22($v0) -/* 00A460 80009860 AC45001C */ sw $a1, 0x1c($v0) -/* 00A464 80009864 A0490021 */ sb $t1, 0x21($v0) -/* 00A468 80009868 948B0000 */ lhu $t3, ($a0) -/* 00A46C 8000986C 8D4A9C44 */ lw $t2, %lo(D_80119C44)($t2) -/* 00A470 80009870 000B6080 */ sll $t4, $t3, 2 -/* 00A474 80009874 014C6821 */ addu $t5, $t2, $t4 -/* 00A478 80009878 ADA20000 */ sw $v0, ($t5) -/* 00A47C 8000987C 948E0000 */ lhu $t6, ($a0) -/* 00A480 80009880 00000000 */ nop -/* 00A484 80009884 25CF0001 */ addiu $t7, $t6, 1 -/* 00A488 80009888 10A00002 */ beqz $a1, .L80009894 -/* 00A48C 8000988C A48F0000 */ sh $t7, ($a0) -/* 00A490 80009890 ACA20000 */ sw $v0, ($a1) -.L80009894: -/* 00A494 80009894 8FBF0014 */ lw $ra, 0x14($sp) -.L80009898: -/* 00A498 80009898 27BD0018 */ addiu $sp, $sp, 0x18 -/* 00A49C 8000989C 03E00008 */ jr $ra -/* 00A4A0 800098A0 00000000 */ nop - diff --git a/asm/non_matchings/unknown_005740/func_800098A4.s b/asm/non_matchings/unknown_005740/func_800098A4.s deleted file mode 100644 index 7009e27d..00000000 --- a/asm/non_matchings/unknown_005740/func_800098A4.s +++ /dev/null @@ -1,53 +0,0 @@ -glabel func_800098A4 -/* 00A4A4 800098A4 44866000 */ mtc1 $a2, $f12 -/* 00A4A8 800098A8 93A6002F */ lbu $a2, 0x2f($sp) -/* 00A4AC 800098AC AFA40000 */ sw $a0, ($sp) -/* 00A4B0 800098B0 44877000 */ mtc1 $a3, $f14 -/* 00A4B4 800098B4 93A70003 */ lbu $a3, 3($sp) -/* 00A4B8 800098B8 28C10007 */ slti $at, $a2, 7 -/* 00A4BC 800098BC AFA50004 */ sw $a1, 4($sp) -/* 00A4C0 800098C0 10200027 */ beqz $at, .L80009960 -/* 00A4C4 800098C4 30AEFFFF */ andi $t6, $a1, 0xffff -/* 00A4C8 800098C8 93A20033 */ lbu $v0, 0x33($sp) -/* 00A4CC 800098CC 00067880 */ sll $t7, $a2, 2 -/* 00A4D0 800098D0 2841001E */ slti $at, $v0, 0x1e -/* 00A4D4 800098D4 10200022 */ beqz $at, .L80009960 -/* 00A4D8 800098D8 01E67823 */ subu $t7, $t7, $a2 -/* 00A4DC 800098DC 3C188012 */ lui $t8, %hi(D_80119C58) # $t8, 0x8012 -/* 00A4E0 800098E0 0002C880 */ sll $t9, $v0, 2 -/* 00A4E4 800098E4 0322C823 */ subu $t9, $t9, $v0 -/* 00A4E8 800098E8 27189C58 */ addiu $t8, %lo(D_80119C58) # addiu $t8, $t8, -0x63a8 -/* 00A4EC 800098EC 000F79C0 */ sll $t7, $t7, 7 -/* 00A4F0 800098F0 01F81821 */ addu $v1, $t7, $t8 -/* 00A4F4 800098F4 00194080 */ sll $t0, $t9, 2 -/* 00A4F8 800098F8 C7A40010 */ lwc1 $f4, 0x10($sp) -/* 00A4FC 800098FC 00682021 */ addu $a0, $v1, $t0 -/* 00A500 80009900 E48C0004 */ swc1 $f12, 4($a0) -/* 00A504 80009904 E48E0008 */ swc1 $f14, 8($a0) -/* 00A508 80009908 1440000F */ bnez $v0, .L80009948 -/* 00A50C 8000990C E484000C */ swc1 $f4, 0xc($a0) -/* 00A510 80009910 AC6E016C */ sw $t6, 0x16c($v1) -/* 00A514 80009914 97A90026 */ lhu $t1, 0x26($sp) -/* 00A518 80009918 93AA002B */ lbu $t2, 0x2b($sp) -/* 00A51C 8000991C 93AB001B */ lbu $t3, 0x1b($sp) -/* 00A520 80009920 93AC0017 */ lbu $t4, 0x17($sp) -/* 00A524 80009924 93AD001F */ lbu $t5, 0x1f($sp) -/* 00A528 80009928 93AE0023 */ lbu $t6, 0x23($sp) -/* 00A52C 8000992C A0670000 */ sb $a3, ($v1) -/* 00A530 80009930 AC690170 */ sw $t1, 0x170($v1) -/* 00A534 80009934 A06A017D */ sb $t2, 0x17d($v1) -/* 00A538 80009938 A06B0174 */ sb $t3, 0x174($v1) -/* 00A53C 8000993C A06C0175 */ sb $t4, 0x175($v1) -/* 00A540 80009940 A06D0176 */ sb $t5, 0x176($v1) -/* 00A544 80009944 A06E017E */ sb $t6, 0x17e($v1) -.L80009948: -/* 00A548 80009948 806F017C */ lb $t7, 0x17c($v1) -/* 00A54C 8000994C 00000000 */ nop -/* 00A550 80009950 01E2082A */ slt $at, $t7, $v0 -/* 00A554 80009954 10200002 */ beqz $at, .L80009960 -/* 00A558 80009958 00000000 */ nop -/* 00A55C 8000995C A062017C */ sb $v0, 0x17c($v1) -.L80009960: -/* 00A560 80009960 03E00008 */ jr $ra -/* 00A564 80009964 00000000 */ nop - diff --git a/asm/non_matchings/unknown_005740/func_800099EC.s b/asm/non_matchings/unknown_005740/func_800099EC.s deleted file mode 100644 index 825f1c13..00000000 --- a/asm/non_matchings/unknown_005740/func_800099EC.s +++ /dev/null @@ -1,63 +0,0 @@ -.late_rodata -glabel D_800E4F18 -.double -100000.0 - -.text -glabel func_800099EC -/* 00A5EC 800099EC 308E00FF */ andi $t6, $a0, 0xff -/* 00A5F0 800099F0 000E7880 */ sll $t7, $t6, 2 -/* 00A5F4 800099F4 01EE7823 */ subu $t7, $t7, $t6 -/* 00A5F8 800099F8 3C188012 */ lui $t8, %hi(D_80119C58) # $t8, 0x8012 -/* 00A5FC 800099FC 27189C58 */ addiu $t8, %lo(D_80119C58) # addiu $t8, $t8, -0x63a8 -/* 00A600 80009A00 000F79C0 */ sll $t7, $t7, 7 -/* 00A604 80009A04 AFA40000 */ sw $a0, ($sp) -/* 00A608 80009A08 01F81021 */ addu $v0, $t7, $t8 -/* 00A60C 80009A0C 8047017C */ lb $a3, 0x17c($v0) -/* 00A610 80009A10 24030001 */ li $v1, 1 -/* 00A614 80009A14 1CE00003 */ bgtz $a3, .L80009A24 -/* 00A618 80009A18 24460004 */ addiu $a2, $v0, 4 -/* 00A61C 80009A1C 03E00008 */ jr $ra -/* 00A620 80009A20 00001025 */ move $v0, $zero - -.L80009A24: -/* 00A624 80009A24 18E00020 */ blez $a3, .L80009AA8 -/* 00A628 80009A28 00002025 */ move $a0, $zero -/* 00A62C 80009A2C 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 00A630 80009A30 44817000 */ mtc1 $at, $f14 -/* 00A634 80009A34 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 00A638 80009A38 44816000 */ mtc1 $at, $f12 -/* 00A63C 80009A3C 3C01800E */ lui $at, %hi(D_800E4F18 + 4) # $at, 0x800e -/* 00A640 80009A40 C4234F18 */ lwc1 $f3, %lo(D_800E4F18)($at) -/* 00A644 80009A44 C4224F1C */ lwc1 $f2, %lo(D_800E4F18 + 4)($at) -/* 00A648 80009A48 8045017C */ lb $a1, 0x17c($v0) -/* 00A64C 80009A4C 00000000 */ nop -.L80009A50: -/* 00A650 80009A50 C4C00000 */ lwc1 $f0, ($a2) -/* 00A654 80009A54 24840001 */ addiu $a0, $a0, 1 -/* 00A658 80009A58 46000121 */ cvt.d.s $f4, $f0 -/* 00A65C 80009A5C 46241032 */ c.eq.d $f2, $f4 -/* 00A660 80009A60 0085082A */ slt $at, $a0, $a1 -/* 00A664 80009A64 4501000D */ bc1t .L80009A9C -/* 00A668 80009A68 00000000 */ nop -/* 00A66C 80009A6C 460C0180 */ add.s $f6, $f0, $f12 -/* 00A670 80009A70 46003221 */ cvt.d.s $f8, $f6 -/* 00A674 80009A74 46281032 */ c.eq.d $f2, $f8 -/* 00A678 80009A78 00000000 */ nop -/* 00A67C 80009A7C 45010007 */ bc1t .L80009A9C -/* 00A680 80009A80 00000000 */ nop -/* 00A684 80009A84 460E0280 */ add.s $f10, $f0, $f14 -/* 00A688 80009A88 46005421 */ cvt.d.s $f16, $f10 -/* 00A68C 80009A8C 46301032 */ c.eq.d $f2, $f16 -/* 00A690 80009A90 00000000 */ nop -/* 00A694 80009A94 45000002 */ bc1f .L80009AA0 -/* 00A698 80009A98 00000000 */ nop -.L80009A9C: -/* 00A69C 80009A9C 00001825 */ move $v1, $zero -.L80009AA0: -/* 00A6A0 80009AA0 1420FFEB */ bnez $at, .L80009A50 -/* 00A6A4 80009AA4 24C6000C */ addiu $a2, $a2, 0xc -.L80009AA8: -/* 00A6A8 80009AA8 00601025 */ move $v0, $v1 -/* 00A6AC 80009AAC 03E00008 */ jr $ra -/* 00A6B0 80009AB0 00000000 */ nop - diff --git a/asm/non_matchings/unknown_005740/func_8000A2E8.s b/asm/non_matchings/unknown_005740/func_8000A2E8.s deleted file mode 100644 index eea391c9..00000000 --- a/asm/non_matchings/unknown_005740/func_8000A2E8.s +++ /dev/null @@ -1,80 +0,0 @@ -glabel func_8000A2E8 -/* 00AEE8 8000A2E8 3C07800E */ lui $a3, %hi(D_800DC6E0) # $a3, 0x800e -/* 00AEEC 8000A2EC 24E7C6E0 */ addiu $a3, %lo(D_800DC6E0) # addiu $a3, $a3, -0x3920 -/* 00AEF0 8000A2F0 94EE0000 */ lhu $t6, ($a3) -/* 00AEF4 8000A2F4 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 00AEF8 8000A2F8 11C00042 */ beqz $t6, .L8000A404 -/* 00AEFC 8000A2FC AFBF0014 */ sw $ra, 0x14($sp) -/* 00AF00 8000A300 3C0F8012 */ lui $t7, %hi(D_80119C44) # $t7, 0x8012 -/* 00AF04 8000A304 8DEF9C44 */ lw $t7, %lo(D_80119C44)($t7) -/* 00AF08 8000A308 00042880 */ sll $a1, $a0, 2 -/* 00AF0C 8000A30C 01E51821 */ addu $v1, $t7, $a1 -/* 00AF10 8000A310 8C620000 */ lw $v0, ($v1) -/* 00AF14 8000A314 00000000 */ nop -/* 00AF18 8000A318 8C440018 */ lw $a0, 0x18($v0) -/* 00AF1C 8000A31C 00000000 */ nop -/* 00AF20 8000A320 1080000A */ beqz $a0, .L8000A34C -/* 00AF24 8000A324 00000000 */ nop -/* 00AF28 8000A328 0C001223 */ jal func_8000488C -/* 00AF2C 8000A32C AFA5001C */ sw $a1, 0x1c($sp) -/* 00AF30 8000A330 3C188012 */ lui $t8, %hi(D_80119C44) # $t8, 0x8012 -/* 00AF34 8000A334 8F189C44 */ lw $t8, %lo(D_80119C44)($t8) -/* 00AF38 8000A338 8FA5001C */ lw $a1, 0x1c($sp) -/* 00AF3C 8000A33C 3C07800E */ lui $a3, %hi(D_800DC6E0) # $a3, 0x800e -/* 00AF40 8000A340 03051821 */ addu $v1, $t8, $a1 -/* 00AF44 8000A344 8C620000 */ lw $v0, ($v1) -/* 00AF48 8000A348 24E7C6E0 */ addiu $a3, %lo(D_800DC6E0) # addiu $a3, $a3, -0x3920 -.L8000A34C: -/* 00AF4C 8000A34C 8C46001C */ lw $a2, 0x1c($v0) -/* 00AF50 8000A350 3C198012 */ lui $t9, %hi(D_80119C44) # $t9, 0x8012 -/* 00AF54 8000A354 10C00013 */ beqz $a2, .L8000A3A4 -/* 00AF58 8000A358 00000000 */ nop -/* 00AF5C 8000A35C ACC00000 */ sw $zero, ($a2) -/* 00AF60 8000A360 8F399C44 */ lw $t9, %lo(D_80119C44)($t9) -/* 00AF64 8000A364 00000000 */ nop -/* 00AF68 8000A368 03254021 */ addu $t0, $t9, $a1 -/* 00AF6C 8000A36C 8D090000 */ lw $t1, ($t0) -/* 00AF70 8000A370 00000000 */ nop -/* 00AF74 8000A374 9524000C */ lhu $a0, 0xc($t1) -/* 00AF78 8000A378 AFA5001C */ sw $a1, 0x1c($sp) -/* 00AF7C 8000A37C 348A5000 */ ori $t2, $a0, 0x5000 -/* 00AF80 8000A380 000A5C00 */ sll $t3, $t2, 0x10 -/* 00AF84 8000A384 0C00916D */ jal func_800245B4 -/* 00AF88 8000A388 000B2403 */ sra $a0, $t3, 0x10 -/* 00AF8C 8000A38C 3C0D8012 */ lui $t5, %hi(D_80119C44) # $t5, 0x8012 -/* 00AF90 8000A390 8DAD9C44 */ lw $t5, %lo(D_80119C44)($t5) -/* 00AF94 8000A394 8FA5001C */ lw $a1, 0x1c($sp) -/* 00AF98 8000A398 3C07800E */ lui $a3, %hi(D_800DC6E0) # $a3, 0x800e -/* 00AF9C 8000A39C 24E7C6E0 */ addiu $a3, %lo(D_800DC6E0) # addiu $a3, $a3, -0x3920 -/* 00AFA0 8000A3A0 01A51821 */ addu $v1, $t5, $a1 -.L8000A3A4: -/* 00AFA4 8000A3A4 3C048012 */ lui $a0, %hi(D_80119C4C) # $a0, 0x8012 -/* 00AFA8 8000A3A8 24849C4C */ addiu $a0, %lo(D_80119C4C) # addiu $a0, $a0, -0x63b4 -/* 00AFAC 8000A3AC 908E0000 */ lbu $t6, ($a0) -/* 00AFB0 8000A3B0 3C198012 */ lui $t9, %hi(D_80119C50) # $t9, 0x8012 -/* 00AFB4 8000A3B4 25CF0001 */ addiu $t7, $t6, 1 -/* 00AFB8 8000A3B8 A08F0000 */ sb $t7, ($a0) -/* 00AFBC 8000A3BC 8F399C50 */ lw $t9, %lo(D_80119C50)($t9) -/* 00AFC0 8000A3C0 31E800FF */ andi $t0, $t7, 0xff -/* 00AFC4 8000A3C4 8C780000 */ lw $t8, ($v1) -/* 00AFC8 8000A3C8 00084880 */ sll $t1, $t0, 2 -/* 00AFCC 8000A3CC 03295021 */ addu $t2, $t9, $t1 -/* 00AFD0 8000A3D0 AD580000 */ sw $t8, ($t2) -/* 00AFD4 8000A3D4 94EB0000 */ lhu $t3, ($a3) -/* 00AFD8 8000A3D8 3C028012 */ lui $v0, %hi(D_80119C44) # $v0, 0x8012 -/* 00AFDC 8000A3DC 8C429C44 */ lw $v0, %lo(D_80119C44)($v0) -/* 00AFE0 8000A3E0 000B6080 */ sll $t4, $t3, 2 -/* 00AFE4 8000A3E4 004C6821 */ addu $t5, $v0, $t4 -/* 00AFE8 8000A3E8 8DAEFFFC */ lw $t6, -4($t5) -/* 00AFEC 8000A3EC 00457821 */ addu $t7, $v0, $a1 -/* 00AFF0 8000A3F0 ADEE0000 */ sw $t6, ($t7) -/* 00AFF4 8000A3F4 94E80000 */ lhu $t0, ($a3) -/* 00AFF8 8000A3F8 00000000 */ nop -/* 00AFFC 8000A3FC 2519FFFF */ addiu $t9, $t0, -1 -/* 00B000 8000A400 A4F90000 */ sh $t9, ($a3) -.L8000A404: -/* 00B004 8000A404 8FBF0014 */ lw $ra, 0x14($sp) -/* 00B008 8000A408 27BD0020 */ addiu $sp, $sp, 0x20 -/* 00B00C 8000A40C 03E00008 */ jr $ra -/* 00B010 8000A410 00000000 */ nop - diff --git a/asm/non_matchings/unknown_032760/func_8003F2E8.s b/asm/non_matchings/unknown_032760/func_8003F2E8.s index 58bea797..17ca9950 100644 --- a/asm/non_matchings/unknown_032760/func_8003F2E8.s +++ b/asm/non_matchings/unknown_032760/func_8003F2E8.s @@ -324,7 +324,7 @@ glabel func_8003F2E8 /* 040380 8003F780 AFAD0010 */ sw $t5, 0x10($sp) /* 040384 8003F784 AFA80038 */ sw $t0, 0x38($sp) /* 040388 8003F788 AFA00014 */ sw $zero, 0x14($sp) -/* 04038C 8003F78C 0C002556 */ jal func_80009558 +/* 04038C 8003F78C 0C002556 */ jal play_sound_at_position /* 040390 8003F790 24040155 */ li $a0, 341 /* 040394 8003F794 8FA80038 */ lw $t0, 0x38($sp) /* 040398 8003F798 00000000 */ nop @@ -508,7 +508,7 @@ glabel func_8003F2E8 /* 040638 8003FA38 AFA80038 */ sw $t0, 0x38($sp) /* 04063C 8003FA3C AFA00014 */ sw $zero, 0x14($sp) /* 040640 8003FA40 AFAC0010 */ sw $t4, 0x10($sp) -/* 040644 8003FA44 0C002556 */ jal func_80009558 +/* 040644 8003FA44 0C002556 */ jal play_sound_at_position /* 040648 8003FA48 24040155 */ li $a0, 341 /* 04064C 8003FA4C 8FA80038 */ lw $t0, 0x38($sp) /* 040650 8003FA50 8FA90068 */ lw $t1, 0x68($sp) @@ -524,7 +524,7 @@ glabel func_8003F2E8 /* 040674 8003FA74 AFAF0014 */ sw $t7, 0x14($sp) /* 040678 8003FA78 AFAD0010 */ sw $t5, 0x10($sp) /* 04067C 8003FA7C AFA90068 */ sw $t1, 0x68($sp) -/* 040680 8003FA80 0C002556 */ jal func_80009558 +/* 040680 8003FA80 0C002556 */ jal play_sound_at_position /* 040684 8003FA84 AFA80038 */ sw $t0, 0x38($sp) /* 040688 8003FA88 8FA80038 */ lw $t0, 0x38($sp) /* 04068C 8003FA8C 8FA90068 */ lw $t1, 0x68($sp) @@ -624,7 +624,7 @@ glabel func_8003F2E8 /* 0407E4 8003FBE4 240E0004 */ li $t6, 4 /* 0407E8 8003FBE8 AFAE0010 */ sw $t6, 0x10($sp) /* 0407EC 8003FBEC AFA00014 */ sw $zero, 0x14($sp) -/* 0407F0 8003FBF0 0C002556 */ jal func_80009558 +/* 0407F0 8003FBF0 0C002556 */ jal play_sound_at_position /* 0407F4 8003FBF4 24040155 */ li $a0, 341 /* 0407F8 8003FBF8 1000000F */ b .L8003FC38 /* 0407FC 8003FBFC 8FBF002C */ lw $ra, 0x2c($sp) diff --git a/asm/non_matchings/unknown_032760/obj_loop_door.s b/asm/non_matchings/unknown_032760/obj_loop_door.s index bf218492..64848ae9 100644 --- a/asm/non_matchings/unknown_032760/obj_loop_door.s +++ b/asm/non_matchings/unknown_032760/obj_loop_door.s @@ -461,7 +461,7 @@ glabel obj_loop_door /* 03CC10 8003C010 AFB80014 */ sw $t8, 0x14($sp) /* 03CC14 8003C014 AFA90040 */ sw $t1, 0x40($sp) /* 03CC18 8003C018 AFA80044 */ sw $t0, 0x44($sp) -/* 03CC1C 8003C01C 0C002556 */ jal func_80009558 +/* 03CC1C 8003C01C 0C002556 */ jal play_sound_at_position /* 03CC20 8003C020 AFAE0010 */ sw $t6, 0x10($sp) /* 03CC24 8003C024 8FA80044 */ lw $t0, 0x44($sp) /* 03CC28 8003C028 8FA90040 */ lw $t1, 0x40($sp) diff --git a/asm/non_matchings/unknown_032760/obj_loop_weaponballoon.s b/asm/non_matchings/unknown_032760/obj_loop_weaponballoon.s index f1e42500..e1a4a1cd 100644 --- a/asm/non_matchings/unknown_032760/obj_loop_weaponballoon.s +++ b/asm/non_matchings/unknown_032760/obj_loop_weaponballoon.s @@ -234,7 +234,7 @@ glabel obj_loop_weaponballoon /* 03F078 8003E478 8E070014 */ lw $a3, 0x14($s0) /* 03F07C 8003E47C 240F0004 */ li $t7, 4 /* 03F080 8003E480 AFAF0010 */ sw $t7, 0x10($sp) -/* 03F084 8003E484 0C002556 */ jal func_80009558 +/* 03F084 8003E484 0C002556 */ jal play_sound_at_position /* 03F088 8003E488 AFA00014 */ sw $zero, 0x14($sp) /* 03F08C 8003E48C 1000003D */ b .L8003E584 /* 03F090 8003E490 240D0001 */ li $t5, 1 @@ -277,7 +277,7 @@ glabel obj_loop_weaponballoon /* 03F118 8003E518 8E060010 */ lw $a2, 0x10($s0) /* 03F11C 8003E51C 8E070014 */ lw $a3, 0x14($s0) /* 03F120 8003E520 AFA00014 */ sw $zero, 0x14($sp) -/* 03F124 8003E524 0C002556 */ jal func_80009558 +/* 03F124 8003E524 0C002556 */ jal play_sound_at_position /* 03F128 8003E528 AFAA0010 */ sw $t2, 0x10($sp) /* 03F12C 8003E52C 10000015 */ b .L8003E584 /* 03F130 8003E530 240D0001 */ li $t5, 1 diff --git a/include/structs.h b/include/structs.h index 89ea3e62..d715b24c 100644 --- a/include/structs.h +++ b/include/structs.h @@ -1254,7 +1254,7 @@ typedef struct Object_Trigger { } Object_Trigger; typedef struct Object_Audio { - /* 0x00 */ u16 unk0; + /* 0x00 */ u16 soundId; /* 0x02 */ u16 unk2; /* 0x04 */ u8 unk4; /* 0x05 */ u8 unk5; diff --git a/src/audio.c b/src/audio.c index d3b04826..1b7142bd 100644 --- a/src/audio.c +++ b/src/audio.c @@ -29,7 +29,7 @@ s32 D_800DC658 = 0; u8 D_800DC65C = 0; u8 D_800DC660 = 0; UNUSED s32 D_800DC664 = 0; -UNUSED s32 D_800DC668 = 0; // Currently unknown, might be a different type. +UNUSED s32 D_800DC668 = 0; s32 sMusicVolumeMultiplier = 256; // This is never not 256... u8 D_800DC670 = 0; @@ -269,8 +269,7 @@ void set_sndfx_player_voice_limit(u8 voiceLimit) { set_voice_limit(gSndFxPlayer, voiceLimit); } -/* Unused? */ -void func_80000C68(u8 arg0) { +UNUSED void func_80000C68(u8 arg0) { func_80063A90(gMusicPlayer, arg0); } @@ -406,8 +405,7 @@ void musicSetChlVol(u8 chan, u8 vol) { } } -/* Unused?*/ -u8 musicGetChlVol(u8 chan) { +UNUSED u8 musicGetChlVol(u8 chan) { if (chan >= 16) { return 0; } else { @@ -573,8 +571,7 @@ u8 func_80001918(void) { return 0; } -// Unused? -u8 func_80001954(void) { +UNUSED u8 func_80001954(void) { if (D_800DC65C != 0) { return D_800DC65C; } @@ -766,8 +763,7 @@ void func_80002128(unk80115D18 **arg0, s32 *arg1, s32 *arg2) { } } -/* Unused? */ -void func_8000216C(unk80115D1C **arg0, s32 *arg1, s32 *arg2) { +UNUSED void func_8000216C(unk80115D1C **arg0, s32 *arg1, s32 *arg2) { if (arg0 != NULL) { *arg0 = sMusicPool; } diff --git a/src/audio.h b/src/audio.h index 0b3e951c..e5b12205 100644 --- a/src/audio.h +++ b/src/audio.h @@ -24,6 +24,7 @@ typedef struct unk80115D18 { u8 unk9; } unk80115D18; + /* Size: 0x03 bytes */ typedef struct unk80115D1C { u8 unk0; @@ -129,6 +130,5 @@ void func_8000232C(ALSeqPlayer* arg0, void* arg1, u8* arg2, ALCSeq* arg3); void play_sound_global(u16 soundID, s32* soundMask); //Non matching. f32 audio_get_chr_select_anim_frac(void); void func_80009B7C(s32 *arg0, f32 x, f32 y, f32 z); // Non Matching -void func_8000974C(s32, f32, f32, f32, s32, s32, s32, s32, s32, s32, s32, s32 *); #endif diff --git a/src/game.c b/src/game.c index a9ae7c0d..6c067c2b 100644 --- a/src/game.c +++ b/src/game.c @@ -96,7 +96,7 @@ s8 D_800DD390 = 0; s16 gLevelLoadTimer = 0; s8 D_800DD398 = 0; s8 D_800DD39C = 0; -s8 D_800DD3A0 = FALSE; +s8 gDmemInvalid = FALSE; UNUSED s32 D_800DD3A4 = 0; UNUSED s32 D_800DD3A8 = 0; UNUSED s32 D_800DD3AC = 0; @@ -893,7 +893,7 @@ void thread3_main(UNUSED void *unused) { * This includes the memory pool. controllers, video, audio, core assets and more. */ void init_game(void) { - s32 mode; + s32 viMode; init_main_memory_pool(); func_800C6170(); // Initialise gzip decompression related things @@ -905,17 +905,17 @@ void init_game(void) { gLevelDefaultVehicleID = VEHICLE_CAR; if (osTvType == TV_TYPE_PAL) { - mode = 14; + viMode = OS_VI_PAL_LPN1; } else if (osTvType == TV_TYPE_NTSC) { - mode = 0; + viMode = OS_VI_NTSC_LPN1; } else if (osTvType == TV_TYPE_MPAL) { - mode = 28; + viMode = OS_VI_MPAL_LPN1; } - osCreateScheduler(&gMainSched, &gSchedStack[0x400], /*priority*/ 13, (u8) mode, 1); - D_800DD3A0 = FALSE; - if (!func_8006EFB8()) { - D_800DD3A0 = TRUE; + osCreateScheduler(&gMainSched, &gSchedStack[0x400], /*priority*/ 13, viMode, 1); + gDmemInvalid = FALSE; + if (check_dmem_validity() == FALSE) { + gDmemInvalid = TRUE; } init_video(VIDEO_MODE_LOWRES_LPN, &gMainSched); init_PI_mesg_queue(); @@ -994,12 +994,12 @@ void main_game_loop(void) { render_epc_lock_up_display(); sRenderContext = DRAW_CRASH_SCREEN; } - if (D_800DD3A0) { + if (gDmemInvalid) { debugLoopCounter = 0; while (debugLoopCounter != 10000000) { - debugLoopCounter += 1; + debugLoopCounter++; } - if (debugLoopCounter >= 20000001) { // This shouldn't ever be true? + if (debugLoopCounter > 20000000) { // This shouldn't ever be true? render_printf(D_800E7134 /* "BBB\n" */); } } @@ -1955,8 +1955,10 @@ void func_8006ECE0(void) { GLOBAL_ASM("asm/non_matchings/game/func_8006ECFC.s") -s32 func_8006EFB8(void) { - //Could be SP_DMEM_START / CACHERR_EE / SR_FR / M_K0 / LEO_STATUS_BUFFER_MANAGER_INTERRUPT +/** + * Returns FALSE if dmem doesn't begin with a -1. This is checked on every main game loop iteration. + */ +s32 check_dmem_validity(void) { if (IO_READ(SP_DMEM_START) != -1U) { return FALSE; } @@ -2119,8 +2121,6 @@ s32 is_controller_missing(void) { * A false read, meaning you're caught running an illegitimate copy, will force the game to pause when you enter the world. */ s32 check_imem_validity(void) { - /*(SP_STATUS_HALT | SP_STATUS_BROKE | SP_STATUS_DMA_BUSY | SP_STATUS_IO_FULL | SP_STATUS_INTR_BREAK | SP_STATUS_YIELD | - SP_STATUS_YIELDED | SP_STATUS_TASKDONE | SP_STATUS_TASKDONE | SP_STATUS_RSPSIGNAL | SP_STATUS_SIG5))*/ if (IO_READ(SP_IMEM_START) != 0x17D7) { return FALSE; } diff --git a/src/game.h b/src/game.h index 6531f9e1..08ada5e5 100644 --- a/src/game.h +++ b/src/game.h @@ -101,7 +101,7 @@ void func_8006EC48(s32 saveFileIndex); void func_8006ECAC(s32 arg0); void func_8006ECC4(void); void func_8006ECE0(void); -s32 func_8006EFB8(void); +s32 check_dmem_validity(void); void func_8006F140(s32 arg0); void func_8006F20C(void); void func_8006F254(void); diff --git a/src/game_ui.c b/src/game_ui.c index 266d0d62..f8ccbdd3 100644 --- a/src/game_ui.c +++ b/src/game_ui.c @@ -19,6 +19,7 @@ #include "unknown_078050.h" #include "unknown_003260.h" #include "printf.h" +#include "unknown_008C40.h" extern u32 osTvType; diff --git a/src/game_ui.h b/src/game_ui.h index 79457e31..fbe958f0 100644 --- a/src/game_ui.h +++ b/src/game_ui.h @@ -329,7 +329,6 @@ void func_800A277C(s32, Object*, s32); void func_800A6254(Object_64* obj, s32 updateRate); void func_800A6E30(Object_64* obj, s32 updateRate); void func_800A7A60(Object*, Gfx**); -void func_800095E8(s32, f32, f32, f32, s32, s32, f32, s32*); void func_800A0BD4(s32); void func_800A19A4(Object_Racer*, s32 updateRate); void func_800A1E48(s32, s32); diff --git a/src/math_util.h b/src/math_util.h index cb48b2b9..cdc670d6 100644 --- a/src/math_util.h +++ b/src/math_util.h @@ -26,6 +26,7 @@ f32 coss_f(s16 angle); f32 sins_f(s16 angle); s32 coss(s16 angle); s32 sins(s16 angle); +s32 sins_2(s16 angle); void set_rng_seed(s32 num); void save_rng_seed(s32 num); void load_rng_seed(s32 num); diff --git a/src/object_functions.c b/src/object_functions.c index f32f7594..759c1d68 100644 --- a/src/object_functions.c +++ b/src/object_functions.c @@ -166,7 +166,7 @@ void obj_loop_scenery(Object *obj, s32 updateRate) { obj78->unk4 -= updateRate; } if ((obj->interactObj->unk14 & 0x40) && ((s32) obj78->unk4 <= 0)) { - func_80009558(SOUND_TWANG, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); + play_sound_at_position(SOUND_TWANG, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); obj78->unk0 = (s32*) obj->interactObj->obj; obj78->unk6 = 1820; obj78->unk4 = 10; @@ -313,7 +313,7 @@ void obj_loop_fireball_octoweapon(Object *obj, s32 updateRate) { if (temp != 0) { func_8000488C(temp); } - func_80009558(SOUND_POP, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); + play_sound_at_position(SOUND_POP, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); gParticlePtrList_addObject(obj); } } @@ -384,7 +384,7 @@ void obj_loop_lasergun(Object *obj, s32 updateRate) { spawnObj.z = obj->segment.trans.z_position; spawnObj.size = 8; spawnObj.objectID = 0xC6; - func_80009558(SOUND_LASER_GUN, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); + play_sound_at_position(SOUND_LASER_GUN, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); laserBoltObj = spawn_object(&spawnObj, 1); if (laserBoltObj != NULL) { laserBoltObj->segment.unk3C_a.level_entry = NULL; @@ -1605,7 +1605,7 @@ void obj_loop_wizpigship(Object *wizShipObj, s32 updateRate) { newObj->segment.trans.x_rotation = -wizShipObj->segment.trans.x_rotation; newObj->unk78 = 0x3C; guMtxXFMF(laserMtx, 0.0f, 0.0f, -30.0f, &newObj->segment.x_velocity, &newObj->segment.y_velocity, &newObj->segment.z_velocity); - func_80009558(SOUND_LASER_GUN, wizShipObj->segment.trans.x_position, wizShipObj->segment.trans.y_position, wizShipObj->segment.trans.z_position, 4, NULL); + play_sound_at_position(SOUND_LASER_GUN, wizShipObj->segment.trans.x_position, wizShipObj->segment.trans.y_position, wizShipObj->segment.trans.z_position, 4, NULL); } } } @@ -1674,7 +1674,7 @@ void obj_loop_snowball(Object *obj, s32 updateRate) { } if (obj64->unk24 != 0) { if (obj64->soundMask == 0) { - func_80009558(obj64->unk24, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 1, &obj64->soundMask); + play_sound_at_position(obj64->unk24, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 1, &obj64->soundMask); } else { update_spatial_audio_position(obj64->soundMask, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position); } @@ -1991,7 +1991,7 @@ void obj_loop_dino_whale(Object *obj, s32 updateRate) { if (obj->interactObj->distance < 0xFF) { if (obj->unk78 == 0) { obj->unk78 = 0x3C; - func_80009558(SOUND_VOICE_BRONTO_ROAR, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); + play_sound_at_position(SOUND_VOICE_BRONTO_ROAR, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); } } } @@ -2799,7 +2799,7 @@ void obj_loop_bonus(Object *obj, UNUSED s32 updateRate) { if (temp < 0.0f) { 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_at_position(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_UNK_7B, racerObj->segment.trans.x_position, racerObj->segment.trans.y_position, racerObj->segment.trans.z_position, NULL); } } @@ -3071,7 +3071,7 @@ void obj_loop_ttdoor(Object *obj, s32 updateRate) { } if (openDoor) { if (ttDoor->soundMask == NULL) { - func_80009558(SOUND_DOOR_OPEN, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 1, &ttDoor->soundMask); + play_sound_at_position(SOUND_DOOR_OPEN, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 1, &ttDoor->soundMask); } } else { if (ttDoor->soundMask) { @@ -3248,7 +3248,7 @@ void obj_loop_bridge_whaleramp(Object *obj, s32 updateRate) { if (whaleRamp->unk4 == 0) { whaleRamp = whaleRamp; func_8001E36C(entry->unkA, &sp50, &sp4C, &sp48); - func_80009558(SOUND_DRAWBRIDGE_BELL, sp50, sp4C, sp48, 1, &whaleRamp->unk4); + play_sound_at_position(SOUND_DRAWBRIDGE_BELL, sp50, sp4C, sp48, 1, &whaleRamp->unk4); } } else { if (obj->segment.trans.x_rotation < 0) { @@ -3256,7 +3256,7 @@ void obj_loop_bridge_whaleramp(Object *obj, s32 updateRate) { if (whaleRamp->unk4 == 0) { whaleRamp = whaleRamp; func_8001E36C(entry->unkA, &sp44, &sp40, &sp3C); - func_80009558(SOUND_DRAWBRIDGE_BELL, sp44, sp40, sp3C, 1, &whaleRamp->unk4); + play_sound_at_position(SOUND_DRAWBRIDGE_BELL, sp44, sp40, sp3C, 1, &whaleRamp->unk4); } } else { obj->segment.trans.x_rotation = 0; @@ -3615,7 +3615,7 @@ void obj_loop_banana(Object *obj, s32 updateRate) { racer = (Object_Racer *) racerObj->unk64; if ((get_current_level_race_type() != RACETYPE_CHALLENGE_BANANAS) || racer->bananas < 2) { racerPrevUnk180 = racer->unk180; - func_80009558( SOUND_SELECT, racerObj->segment.trans.x_position, racerObj->segment.trans.y_position, racerObj->segment.trans.z_position, 4, &racer->unk180); + play_sound_at_position( SOUND_SELECT, racerObj->segment.trans.x_position, racerObj->segment.trans.y_position, racerObj->segment.trans.z_position, 4, &racer->unk180); if (racerPrevUnk180 != 0) { func_800096F8(racerPrevUnk180); } @@ -3900,7 +3900,7 @@ void obj_loop_weaponballoon(Object *obj, s32 updateRate) { obj->unk7C.word = 0x10; } if (racer->playerIndex == PLAYER_COMPUTER) { - func_80009558(SOUND_BALLOON_POP, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); + play_sound_at_position(SOUND_BALLOON_POP, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); } else { if (levelMask == racer->balloon_level) { if (racer->raceFinished == FALSE) { @@ -3912,7 +3912,7 @@ void obj_loop_weaponballoon(Object *obj, s32 updateRate) { } play_sound_global(SOUND_COLLECT_ITEM + newvar, NULL); } else { - func_80009558(SOUND_BALLOON_POP, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); + play_sound_at_position(SOUND_BALLOON_POP, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); } } } else if (racer->raceFinished == FALSE) { @@ -4155,7 +4155,7 @@ void func_8003F0F8(Object *obj, struct Object_Weapon *weapon, u16 soundID) { if (var_s4) { if (weapon->unk1C == 0) { if (D_8011D4DC < 8) { - func_80009558(soundID, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 1, &weapon->unk1C); + play_sound_at_position(soundID, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 1, &weapon->unk1C); D_8011D4DC += 1; } } else { @@ -4191,7 +4191,7 @@ void func_8003FC44(f32 x, f32 y, f32 z, s32 objectID, s32 arg4, f32 scale, s32 a newObj->segment.trans.scale = newObj->segment.trans.scale * 3.5 * scale; } if (arg4 != 0) { - func_80009558(arg4, x, y, z, 4, NULL); + play_sound_at_position(arg4, x, y, z, 4, NULL); } } @@ -4199,7 +4199,7 @@ void obj_init_audio(Object *obj, LevelObjectEntry_Audio *entry) { Object_Audio *obj64; obj64 = &obj->unk64->audio; - obj64->unk0 = entry->unk8; + obj64->soundId = entry->unk8; obj64->unk2 = entry->unkA; obj64->unkC = entry->unkF; obj64->unk6 = entry->unkE; @@ -4207,12 +4207,12 @@ void obj_init_audio(Object *obj, LevelObjectEntry_Audio *entry) { obj64->unk5 = entry->unkD; obj64->unkD = entry->unk10; obj64->unk8 = 0; - if (ALBankFile_80115D14_GetSoundDecayTime(obj64->unk0)) { - func_8000974C(obj64->unk0, entry->common.x, entry->common.y, entry->common.z, + if (ALBankFile_80115D14_GetSoundDecayTime(obj64->soundId)) { + func_8000974C(obj64->soundId, entry->common.x, entry->common.y, entry->common.z, 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, + func_8000974C(obj64->soundId, entry->common.x, entry->common.y, entry->common.z, 10, obj64->unk5, obj64->unk4, obj64->unk2, obj64->unkC, obj64->unk6, obj64->unkD, &obj64->unk8); } @@ -4666,7 +4666,7 @@ void obj_loop_frog(Object *obj, s32 updateRate) { diffZ = obj->segment.trans.z_position - racerObj->segment.trans.z_position; if (frog->unk19 <= 0 && (diffX * diffX) + (diffY * diffY) + (diffZ * diffZ) < 40.0f * 40.0f) { if (frog->unk15 != 0) { - func_80009558(SOUND_VOICE_DRUMSTICK_POSITIVE2, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); + play_sound_at_position(SOUND_VOICE_DRUMSTICK_POSITIVE2, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); set_eeprom_settings_value(2); set_magic_code_flags(CHEAT_CONTROL_DRUMSTICK); func_8006D8A4(); @@ -4674,7 +4674,7 @@ void obj_loop_frog(Object *obj, s32 updateRate) { break; } else { frog->unk14 = 2; - func_80009558(SOUND_SPLAT, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); + play_sound_at_position(SOUND_SPLAT, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); } } else { frog->unk1C = 72.0f; @@ -4710,9 +4710,9 @@ void obj_loop_frog(Object *obj, s32 updateRate) { frog->unk1A = arctan2_f(diffX, diffZ); } if (frog->unk15 != 0) { - func_80009558(SOUND_VOICE_DRUMSTICK_POSITIVE6, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); + play_sound_at_position(SOUND_VOICE_DRUMSTICK_POSITIVE6, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); } else { - func_80009558(SOUND_RIBBIT, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); + play_sound_at_position(SOUND_RIBBIT, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); } frog->unk14 = 1; frog->unk20 = obj->segment.trans.x_position; @@ -4748,14 +4748,14 @@ void obj_loop_frog(Object *obj, s32 updateRate) { if (frog->unk19 <= 0 && (frog->unk18 < 6 || frog->unk18 >= 27)) { if (func_80016DE8(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 40.0f, 0, (unk80042178 *) &racerObj) != 0) { if (frog->unk15 != 0) { - func_80009558(SOUND_VOICE_DRUMSTICK_POSITIVE2, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); + play_sound_at_position(SOUND_VOICE_DRUMSTICK_POSITIVE2, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); set_eeprom_settings_value(2); set_magic_code_flags(CHEAT_CONTROL_DRUMSTICK); func_8006D8A4(); gParticlePtrList_addObject(obj); } else { frog->unk14 = 2; - func_80009558(SOUND_SPLAT, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); + play_sound_at_position(SOUND_SPLAT, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); } } } @@ -4772,7 +4772,7 @@ void obj_loop_frog(Object *obj, s32 updateRate) { frog->unk16 -= updateRate; if (frog->unk16 < 0) { frog->unk14 = 4; - func_80009558(SOUND_PLOP2, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); + play_sound_at_position(SOUND_PLOP2, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); } break; case 4: diff --git a/src/racer.c b/src/racer.c index daef5c63..fc2c30dc 100644 --- a/src/racer.c +++ b/src/racer.c @@ -2629,7 +2629,7 @@ void update_player_racer(Object *obj, s32 updateRate) { if (tempRacer->shieldSoundMask) { update_spatial_audio_position(tempRacer->shieldSoundMask, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position); } else if (tempRacer->unk118) { - func_80009558(SOUND_SHIELD, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 1, &tempRacer->shieldSoundMask); + play_sound_at_position(SOUND_SHIELD, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 1, &tempRacer->shieldSoundMask); } } else if (tempRacer->shieldSoundMask) { func_800096F8(tempRacer->shieldSoundMask); @@ -2675,7 +2675,7 @@ void update_player_racer(Object *obj, s32 updateRate) { } else { tempRacer->unk210 = 0; if (tempRacer->playerIndex == PLAYER_COMPUTER) { - func_80009558(tempRacer->unk20E, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); + play_sound_at_position(tempRacer->unk20E, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); } else { play_sound_spatial(tempRacer->unk20E, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, NULL); } @@ -4597,7 +4597,7 @@ void handle_racer_items(Object *obj, Object_Racer *racer, UNUSED s32 updateRate) } if (soundID != SOUND_NONE) { if (racer->playerIndex == PLAYER_COMPUTER) { - func_80009558(soundID, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); + play_sound_at_position(soundID, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); } else { if (racer->unk218) { func_8000488C(racer->unk218); @@ -4729,7 +4729,7 @@ void play_random_character_voice(Object *obj, s32 soundID, s32 range, s32 flags) soundIndex = (get_random_number_from_range(0, range - 1) * 12) + soundID; } } - func_80009558(soundIndex, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, &tempRacer->soundMask); + play_sound_at_position(soundIndex, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, &tempRacer->soundMask); tempRacer->lastSoundID = soundIndex; } } @@ -5998,7 +5998,7 @@ void update_AI_racer(Object *obj, Object_Racer *racer, s32 updateRate, f32 updat if (racer->shieldSoundMask) { update_spatial_audio_position(racer->shieldSoundMask, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position); } else if (racer->unk118 != 0) { - func_80009558(SOUND_SHIELD, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 1, &racer->shieldSoundMask); + play_sound_at_position(SOUND_SHIELD, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 1, &racer->shieldSoundMask); } } else { if (racer->shieldSoundMask) { diff --git a/src/unknown_005740.c b/src/unknown_005740.c index a6d1c547..ee5bfe99 100644 --- a/src/unknown_005740.c +++ b/src/unknown_005740.c @@ -5,6 +5,7 @@ #include "types.h" #include "macros.h" +#include "unknown_008C40.h" /************ .data ************/ @@ -19,17 +20,18 @@ s32 D_800DC6D8 = 1; // Currently unknown, might be a different type. s32 D_80119C30[2]; s32 D_80119C38; s32 D_80119C3C; -s32 D_80119C40; -s32 D_80119C44; -s32 **D_80119C48; -s32 D_80119C4C; -s32 D_80119C50[2]; -s32 D_80119C58; //Struct of size in func_8000A184 = 0x180 = 384 bytes -s32 D_80119C5C; //Struct of size in func_8000A184 = 0x180 = 384 bytes Likely the same as above -s32 D_80119C60[670]; -s32 D_8011A6D8; //unk8011A6D8[] -s32 D_8011A6DC; -s32 D_8011A6E0[334]; +unk80115D18 *D_80119C40; // This should be in unknown_008C40? +unk80119C50 **D_80119C44; +unk80119C50 **D_80119C48; //0x24 struct size - 0x5A0 total size - should be 40 elements +u8 D_80119C4C; +unk80119C50 **D_80119C50; +s32 D_80119C54; //Padding? +unk80119C58 **D_80119C58; //Struct of size in func_8000A184 = 0x180 = 384 bytes +unk80119C58 **D_80119C5C; //Struct of size in func_8000A184 = 0x180 = 384 bytes Likely the same as above +f32 D_80119C60[670]; //array size of 672 looks to be required for func_80008174 +unk8011A6D8 *D_8011A6D8; //unk8011A6D8[] +unk8011A6D8 **D_8011A6DC; // Struct of size 0xC0 +f32 D_8011A6E0[334]; s32 D_8011AC18; s32 D_8011AC1C; s16 D_8011AC20[128]; diff --git a/src/unknown_005740.h b/src/unknown_005740.h index 13a00855..c0f6f9e2 100644 --- a/src/unknown_005740.h +++ b/src/unknown_005740.h @@ -3,15 +3,56 @@ #include "types.h" #include "structs.h" +#include "audio.h" + +/* Size: 0x24 / 36 bytes */ +typedef struct unk80119C50 { + /* 0x00 */ f32 x, y, z; + /* 0x0C */ u16 soundId; + /* 0x0E */ u8 unkE; + /* 0x0F */ u8 unkF; + /* 0x10 */ u8 unk10; + /* 0x11 */ u8 unk11; + /* 0x12 */ u8 unk12; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ u32 *soundMask; + /* 0x20 */ u8 unk20; + /* 0x21 */ u8 unk21; + /* 0x22 */ u8 unk22; +} unk80119C50; + + +/* Size: 0x180 / 384 bytes */ +typedef struct unk80119C58 { + union { + /* 0x00 */ f32 unk0_01; + /* 0x00 */ u8 unk0_02; + } unk0; + /* 0x004 */ Vec3f *unk4; + /* 0x008 */ u8 pad9[0x164]; + /* 0x16C */ s32 unk16C; + /* 0x170 */ s32 unk170; + /* 0x174 */ u8 unk174; + /* 0x175 */ u8 unk175; + /* 0x176 */ u8 unk176; + /* 0x177 */ u8 unk177; + /* 0x178 */ s32 unk178; + /* 0x17C */ s8 unk17C; + /* 0x17D */ u8 unk17D; + /* 0x17E */ u8 unk17E; +} unk80119C58; + extern u8 D_800DC6D0; extern s32 D_800DC6D4; extern s32 D_800DC6D8; extern s32 D_800DC6DC; -extern s32 D_800DC6E0; -extern s32 D_80119C40; -extern s32 **D_80119C48; -extern s32 D_80119C50[2]; +extern u16 D_800DC6E0; +extern unk80119C50 **D_80119C48; +extern unk80119C50 **D_80119C44; +extern unk80119C50 **D_80119C50; +extern u8 D_80119C4C; void func_800050D0(Object* obj, u32 buttonsPressed, u32 carInput, s32 updateRate); /* extern */ diff --git a/src/unknown_008C40.c b/src/unknown_008C40.c index 3e4d425a..29b99161 100644 --- a/src/unknown_008C40.c +++ b/src/unknown_008C40.c @@ -9,31 +9,38 @@ #include "memory.h" #include "audio.h" #include "textures_sprites.h" +#include "objects.h" +#include "unknown_003260.h" +#include "unknown_0255E0.h" +#include "math_util.h" /************ .data ************/ -s32 D_800DC6E0 = 0; // Currently unknown, might be a different type. +u16 D_800DC6E0 = 0; /*******************************/ /************ .rodata ************/ -const char D_800E4D00[] = "OUT OF AUDIO POINTS\n"; -const char D_800E4D18[] = "amAudioLineAddVertex: Exceeded maximum number of lines (%d)\n"; -const char D_800E4D58[] = "amAudioLineAddVertex: Exceeded maximum number of line vertices (%d)\n"; -const char D_800E4DA0[] = "amReverbLineAddVertex: Exceeded maximum number of lines (%d)\n"; -const char D_800E4DE0[] = "amReverbLineAddVertex: Exceeded maximum number of line vertices (%d)\n"; +UNUSED const char D_800E4D00[] = "OUT OF AUDIO POINTS\n"; +UNUSED const char D_800E4D18[] = "amAudioLineAddVertex: Exceeded maximum number of lines (%d)\n"; +UNUSED const char D_800E4D58[] = "amAudioLineAddVertex: Exceeded maximum number of line vertices (%d)\n"; +UNUSED const char D_800E4DA0[] = "amReverbLineAddVertex: Exceeded maximum number of lines (%d)\n"; +UNUSED const char D_800E4DE0[] = "amReverbLineAddVertex: Exceeded maximum number of line vertices (%d)\n"; -const char D_800E4E28[] = "Audio line definition error (less than 2 vertices on line %d)\n"; -const char D_800E4E68[] = "Audio line definition error (line=%d, vertex=%d)\n"; -const char D_800E4E9C[] = "Reverb line definition error (less than 2 vertices on line %d)\n"; -const char D_800E4EDC[] = "Reverb line definition error (line=%d, vertex=%d)\n"; +UNUSED const char D_800E4E28[] = "Audio line definition error (less than 2 vertices on line %d)\n"; +UNUSED const char D_800E4E68[] = "Audio line definition error (line=%d, vertex=%d)\n"; +UNUSED const char D_800E4E9C[] = "Reverb line definition error (less than 2 vertices on line %d)\n"; +UNUSED const char D_800E4EDC[] = "Reverb line definition error (line=%d, vertex=%d)\n"; /*********************************/ /************ .bss ************/ extern s8 D_8011AC18; +extern unk80115D18 *D_80119C40; +extern unk80119C58 D_80119C58[]; +extern unk8011A6D8 D_8011A6D8[]; /*******************************/ @@ -75,10 +82,87 @@ void func_80008168(void) { D_8011AC18 = 0; } +#ifdef NON_EQUIVALENT +extern f32 D_80119C60[672]; +extern f32 D_8011A6E0[336];//[7][48]; +extern unk8011A6D8 **D_8011A6DC; +void func_80008174(void) { + s32 i; + s32 j; + + for (D_80119C4C = 0; D_80119C4C < 40; D_80119C4C++) { + D_80119C50[D_80119C4C] = D_80119C48[D_80119C4C]; + } + D_80119C4C--; + + for (i = 0; i < D_800DC6E0; i++) { + D_80119C44[i]->unk12 = 0; + if (D_80119C44[i]->unk18 != NULL) { + func_8000488C(D_80119C44[i]->unk18); + } + } + D_800DC6E0 = 0; + + for (i = 0; i < ARRAY_COUNT(D_80119C60); i++) { + D_80119C58[i].unk16C = 0; + if (D_80119C58[i].unk178 != 0) { + if (D_80119C58[i].unk0.unk0_02 == 0) { + func_8000488C(D_80119C58[i].unk178); + } else if (D_80119C58[i].unk0.unk0_02 == 1) { + func_800018E0(); + } + D_80119C58[i].unk178 = 0; + } + D_80119C58[i].unk17C = -1; + + D_80119C60[i] = -100000.0; + } + + for (i = 0; i < ARRAY_COUNT(D_8011A6E0); i++) { + D_8011A6D8[i].unkB8 = -1; + D_8011A6D8[i].unk0.unk0_01 = 0.0f; + D_8011A6D8[i].unkBC = 0.0f; + D_8011A6DC[i]->unk0.unk0_01 = -100000.0; + D_8011A6E0[i] = -100000.0; + // for (j = 0; j < ARRAY_COUNT(D_8011A6E0[0]); j++) { + // D_8011A6E0[i][j] = -100000.0; + // } + } + + D_8011AC18 = 0; +} +#else GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80008174.s") +#endif + GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80008438.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_800090C0.s") +s32 func_800090C0(f32 arg0, f32 arg1, s32 arg2) { + s32 temp_v1; + s32 ret; + f32 sp1C; + + sp1C = sqrtf((arg0 * arg0) + (arg1 * arg1)); + temp_v1 = 0xFFFF - arctan2_f(arg0, arg1); + + if (temp_v1 < arg2) { + if (sp1C <= 1.0f) { + ret = 64 - ((sins(arg2 - temp_v1) / 1024) * (sp1C * 1)); + } else { + ret = 64 - (sins_2(arg2 - temp_v1) / 1024); + } + } else if (sp1C <= 1.0f) { + ret = (sins(temp_v1 - arg2) / 1024) * (sp1C * 1) + 64; + } else { + ret = (sins_2(temp_v1 - arg2) / 1024) + 64; + } + + if (get_filtered_cheats() & CHEAT_MIRRORED_TRACKS) { + ret = 128 - ret; + } + + return ret; +} //Best I can figure, this measures the distance between XYZ values. s32 func_800092A8(f32 inX, f32 inY, f32 inZ, floatXYZVals *floatXYZ, f32 *outX, f32 *outY, f32 *outZ) { @@ -135,10 +219,19 @@ s32 func_800092A8(f32 inX, f32 inY, f32 inZ, floatXYZVals *floatXYZ, f32 *outX, return ret; } -// Another function related to playing sound. -// Play Sound at position? -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80009558.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_800095E8.s") +/** + * Play Sound at position + */ +void play_sound_at_position(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, u32 *soundMask) { + func_8000974C(D_80119C40[soundId].unk0, x, y, z, arg4, D_80119C40[soundId].unk3, + D_80119C40[soundId].unk2, D_80119C40[soundId].unk6, 0, D_80119C40[soundId].unk4, + D_80119C40[soundId].unk8, soundMask); +} + +void func_800095E8(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, u8 arg5, f32 arg6, u32 *soundMask) { + func_8000974C(soundId, x, y, z, arg4, 100, arg5, 15000, 0, arg6, 0x3F, soundMask); +} + #if 0 // I think this function is used to update the world position of any sound associated with the given soundmask. //This matches, but it breaks update_player_racer @@ -162,10 +255,115 @@ void func_800096F8(s32 arg0) { v0++; } } -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000974C.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_800098A4.s") + +void func_8000974C(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u8 arg8, u8 arg9, u8 argA, u32 *soundMask) { + unk80119C50 *temp_v0; + + if (soundMask != 0) { + func_800245B4(soundId | 0xE000); + } + if (D_800DC6E0 == 40) { + if (soundMask != 0) { + *soundMask = 0; + } + func_800245B4(-0x55AB); + return; + } + temp_v0 = D_80119C50[D_80119C4C--]; + temp_v0->x = x; + temp_v0->y = y; + temp_v0->z = z; + temp_v0->soundId = soundId; + temp_v0->unk11 = arg4; + temp_v0->unk10 = arg5; + temp_v0->unkE = arg6; + temp_v0->unkF = arg9; + temp_v0->unk14 = arg7; + temp_v0->unk20 = arg8; + temp_v0->unk21 = argA; + temp_v0->unk22 = 0; + temp_v0->soundMask = soundMask; + D_80119C44[D_800DC6E0++] = temp_v0; + if (soundMask != 0) { + *soundMask = (u32) temp_v0; + } +} + +void func_800098A4(u8 arg0, u16 soundId, f32 x, f32 y, f32 z, u8 arg5, u8 arg6, + u8 arg7, u8 arg8, u16 arg9, u8 argA, u8 argB, u8 argC) { + Vec3f *temp_a0; + unk80119C58 *temp_v1; + + if ((argB < 7) && (argC < 30)) { + temp_v1 = &D_80119C58[argB]; + temp_a0 = &temp_v1->unk4 + argC * 3; //This can't be right... + temp_a0->x = x; + temp_a0->y = y; + temp_a0->z = z; + if (argC == 0) { + (&D_80119C58[argB])->unk16C = soundId; + (&D_80119C58[argB])->unk0.unk0_02 = arg0; + (&D_80119C58[argB])->unk170 = arg9; + (&D_80119C58[argB])->unk17D = argA; + (&D_80119C58[argB])->unk174 = arg6; + (&D_80119C58[argB])->unk175 = arg5; + (&D_80119C58[argB])->unk176 = arg7; + (&D_80119C58[argB])->unk17E = arg8; + } + if ((&D_80119C58[argB])->unk17C < argC) { + (&D_80119C58[argB])->unk17C = argC; + } + } +} + +#ifdef NON_MATCHING +// single regalloc diff +void func_80009968(f32 x, f32 y, f32 z, u8 arg3, u8 arg4, u8 arg5) { + Vec3f *temp_a1; + unk8011A6D8 *temp_v1; + + if ((arg4 < 7) && (arg5 < 15)) { + temp_v1 = &D_8011A6D8[arg4]; + temp_a1 = (Vec3f *) &temp_v1->unk4 + arg5 * 1; + temp_a1->x = x; + temp_a1->y = y; + temp_a1->z = z; + if (arg5 == 0) { + temp_v1->unk0.unk0_02 = arg3 & 0xFF; + } + if (temp_v1->unkB8 < arg5) { + temp_v1->unkB8 = arg5; + } + } +} +#else GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80009968.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_800099EC.s") +#endif + +s32 func_800099EC(u8 arg0) { + s32 ret; + f32 *var_a2; + f32 temp_f0; + s32 i; + unk80119C58 *temp_v0; + + ret = 1; + temp_v0 = &D_80119C58[arg0]; + var_a2 = (f32 *) &temp_v0->unk4; + if (temp_v0->unk17C <= 0) { + return 0; + } + + for (i = 0; i < temp_v0->unk17C; i++) { + temp_f0 = *var_a2; + if (temp_f0 == -100000.0 || temp_f0 + 1 == -100000.0 || temp_f0 + 2 == -100000.0) { + ret = 0; + } + var_a2 += 3; + } + + return ret; +} s32 func_80009AB4(u8 arg0) { s32 ret; @@ -192,98 +390,177 @@ s32 func_80009AB4(u8 arg0) { return ret; } -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80009B7C.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80009D6C.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000A184.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000A2E8.s") +#ifdef NON_EQUIVALENT +u8 func_80009D6C(unk8011A6D8 *, f32, f32, f32); /* extern */ -typedef struct unk800A414_arg3 { - f32 unk0; - f32 unk4; - f32 unk8; - f32 unkC; - f32 unk10; - f32 unk14; -} unk800A414_arg3; +void func_80009B7C(s32 *soundState, f32 x, f32 y, f32 z) { + s32 j; + f32 outX; + f32 outY; + f32 outZ; + s32 levelSegmentIndex; + f32 *yVals; + s32 distBetween; + s32 numOfYVals; + s32 temp_v0_4; + s32 volume; + s32 var_s6; + s32 i; + s32 k; -void func_8000A414(Gfx **arg0, Vertex **arg1, Triangle **arg2, unk800A414_arg3 *arg3, u8 arg4, u8 arg5, u8 arg6) { - Gfx *sp34; - Vertex *sp30; - Triangle *sp2C; - s16 sp2A; - s16 sp28; - s16 sp26; - s16 sp24; - s16 sp22; - s16 sp20; + levelSegmentIndex = get_level_segment_index_from_position(x, y, z); + volume = 0; + var_s6 = 0x190; + for (i = 0; i < 7; i++) { + if (D_8011A6D8[i].unk0.unk0_02 != 0) { + if (func_80009AB4(i & 0xFF) != 0) { + for (j = 0; j < D_8011A6D8[i].unkB8; j++) { + distBetween = func_800092A8(x, y, z, &D_8011A6D8[i].unk4.unk4_02[j], &outX, &outY, &outZ); + if (distBetween < var_s6) { + numOfYVals = func_8002BAB0(levelSegmentIndex, x, z, yVals); + for (k = 0; k < numOfYVals; k++) { + if (y < yVals[k]) { + var_s6 = distBetween; + temp_v0_4 = func_80009D6C(&D_8011A6D8[i], outX, outY, outZ); + if (volume < temp_v0_4) { + volume = temp_v0_4 & 0xFF; + } + } + } + } + } + } + } + } + if (soundState != NULL) { + func_800049F8((s32) soundState, 0x100, (u32) volume); + } +} +#else +GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80009B7C.s") +#endif +GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80009D6C.s") - sp2A = arg3->unk0; - sp28 = arg3->unk4; - sp26 = arg3->unk8; - sp24 = arg3->unkC; - sp22 = arg3->unk10; - sp20 = arg3->unk14; - sp34 = *arg0; +#ifdef NON_EQUIVALENT +extern unk80119C58 **D_80119C5C; +extern unk8011A6D8 **D_8011A6DC; +void func_8000A184(Gfx **arg0, Vertex **arg1, Triangle **arg2) { + s32 i, j; + + for (i = 0; i < 7; i++) { + if (D_80119C58[i].unk16C != 0) { + for (j = 0; j < D_80119C58[i].unk17C; j++) { + func_8000A414(arg0, arg1, arg2, (floatXYZVals *) &D_80119C5C[i], 0xFF, 0xFF, 0); + } + } + } + + for (i = 0; i < 7; i++) { + if (D_8011A6D8[i].unk0.unk0_02 != 0) { + for (j = 0; j < D_8011A6D8[i].unkB8; j++) { + func_8000A414(arg0, arg1, arg2, (floatXYZVals *) &D_8011A6DC[i], 0xFF, 0xFF, 0); + } + } + } +} +#else +GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000A184.s") +#endif + +void func_8000A2E8(s32 arg0) { + if (D_800DC6E0 != 0) { + if (D_80119C44[arg0]->unk18 != 0) { + func_8000488C(D_80119C44[arg0]->unk18); + } + if (D_80119C44[arg0]->soundMask != 0) { + *D_80119C44[arg0]->soundMask = 0; + func_800245B4(D_80119C44[arg0]->soundId | 0x5000); + } + D_80119C4C++; + D_80119C50[D_80119C4C] = D_80119C44[arg0]; + D_80119C44[arg0] = D_80119C44[D_800DC6E0 - 1]; + D_800DC6E0--; + } +} + +void func_8000A414(Gfx **dlist, Vertex **verts, Triangle **tris, floatXYZVals *arg3, u8 red, u8 green, u8 blue) { + Gfx *temp_dlist; + Vertex *temp_verts; + Triangle *temp_tris; + s16 x1; + s16 y1; + s16 z1; + s16 x2; + s16 y2; + s16 z2; + + x1 = arg3->x1; + y1 = arg3->y1; + z1 = arg3->z1; + x2 = arg3->x2; + y2 = arg3->y2; + z2 = arg3->z2; + temp_dlist = *dlist; - sp30 = *arg1; - sp2C = *arg2; - load_and_set_texture_no_offset(&sp34, NULL, RENDER_NONE); - gSPVertexDKR(sp34++, OS_PHYSICAL_TO_K0(sp30), 4, 0); - gSPPolygon(sp34++, OS_PHYSICAL_TO_K0(sp2C), 2, 0); - sp30[0].x = sp2A; - sp30[0].y = (s16) (sp28 + 5); - sp30[0].z = sp26; - sp30[0].r = arg4; - sp30[0].g = arg5; - sp30[0].b = arg6; - sp30[0].a = 255; - sp30[1].x = sp2A; - sp30[1].y = (s16) (sp28 - 5); - sp30[1].z = sp26; - sp30[1].r = arg4; - sp30[1].g = arg5; - sp30[1].b = arg6; - sp30[1].a = 255; - sp30[2].x = sp24; - sp30[2].y = (s16) (sp22 + 5); - sp30[2].z = sp20; - sp30[2].r = 255; - sp30[2].g = 255; - sp30[2].b = 255; - sp30[2].a = 255; - sp30[3].x = sp24; - sp30[3].y = (s16) (sp22 - 5); - sp30[3].z = sp20; - sp30[3].r = 255; - sp30[3].g = 255; - sp30[3].b = 255; - sp30[3].a = 255; - sp30 += 4; + temp_verts = *verts; + temp_tris = *tris; + load_and_set_texture_no_offset(&temp_dlist, NULL, RENDER_NONE); + gSPVertexDKR(temp_dlist++, OS_PHYSICAL_TO_K0(temp_verts), 4, 0); + gSPPolygon(temp_dlist++, OS_PHYSICAL_TO_K0(temp_tris), 2, 0); + temp_verts[0].x = x1; + temp_verts[0].y = (y1 + 5); + temp_verts[0].z = z1; + temp_verts[0].r = red; + temp_verts[0].g = green; + temp_verts[0].b = blue; + temp_verts[0].a = 255; + temp_verts[1].x = x1; + temp_verts[1].y = (y1 - 5); + temp_verts[1].z = z1; + temp_verts[1].r = red; + temp_verts[1].g = green; + temp_verts[1].b = blue; + temp_verts[1].a = 255; + temp_verts[2].x = x2; + temp_verts[2].y = (y2 + 5); + temp_verts[2].z = z2; + temp_verts[2].r = 255; + temp_verts[2].g = 255; + temp_verts[2].b = 255; + temp_verts[2].a = 255; + temp_verts[3].x = x2; + temp_verts[3].y = (y2 - 5); + temp_verts[3].z = z2; + temp_verts[3].r = 255; + temp_verts[3].g = 255; + temp_verts[3].b = 255; + temp_verts[3].a = 255; + temp_verts += 4; - sp2C[0].flags = 0x40; // 0x40 = Draw backface. - sp2C[0].vi0 = 2; - sp2C[0].vi1 = 1; - sp2C[0].vi2 = 0; - sp2C[0].uv0.u = 0x3E0; - sp2C[0].uv0.v = 0x3E0; - sp2C[0].uv1.u = 0x3E0; - sp2C[0].uv1.v = 0; - sp2C[0].uv2.u = 1; - sp2C[0].uv2.v = 0; - sp2C[1].flags = 0x40; - sp2C[1].vi0 = 3; - sp2C[1].vi1 = 2; - sp2C[1].vi2 = 1; - sp2C[1].uv0.u = 1; - sp2C[1].uv0.v = 0x3E0; - sp2C[1].uv1.u = 0x3E0; - sp2C[1].uv1.v = 0x3E0; - sp2C[1].uv2.u = 1; - sp2C[1].uv2.v = 0; - sp2C += 2; + temp_tris[0].flags = 0x40; // 0x40 = Draw backface. + temp_tris[0].vi0 = 2; + temp_tris[0].vi1 = 1; + temp_tris[0].vi2 = 0; + temp_tris[0].uv0.u = 0x3E0; + temp_tris[0].uv0.v = 0x3E0; + temp_tris[0].uv1.u = 0x3E0; + temp_tris[0].uv1.v = 0; + temp_tris[0].uv2.u = 1; + temp_tris[0].uv2.v = 0; + temp_tris[1].flags = 0x40; + temp_tris[1].vi0 = 3; + temp_tris[1].vi1 = 2; + temp_tris[1].vi2 = 1; + temp_tris[1].uv0.u = 1; + temp_tris[1].uv0.v = 0x3E0; + temp_tris[1].uv1.u = 0x3E0; + temp_tris[1].uv1.v = 0x3E0; + temp_tris[1].uv2.u = 1; + temp_tris[1].uv2.v = 0; + temp_tris += 2; - *arg0 = sp34; - *arg1 = sp30; - *arg2 = sp2C; + *dlist = temp_dlist; + *verts = temp_verts; + *tris = temp_tris; } diff --git a/src/unknown_008C40.h b/src/unknown_008C40.h index 79feafb9..4768edfc 100644 --- a/src/unknown_008C40.h +++ b/src/unknown_008C40.h @@ -4,6 +4,7 @@ #include "types.h" #include "libc/math.h" #include "structs.h" +#include "PR/gbi.h" typedef struct floatXYZVals { f32 x1; @@ -23,31 +24,52 @@ typedef struct unk8011A6D8_04 { /* Size: 0xC0 / 192 bytes - Thought it was a LevelHeader, but that didn't match other usages */ typedef struct unk8011A6D8 { - /* 0x00 */ u8 pad0[0x04]; - /* 0x04 */ unk8011A6D8_04 *unk4; + union { + /* 0x00 */ f32 unk0_01; + /* 0x00 */ s8 unk0_02; + } unk0; + union { + /* 0x04 */ unk8011A6D8_04 *unk4_01; + /* 0x04 */ floatXYZVals *unk4_02; + /* 0x04 */ unk8011A6D8_04 **unk4_03; + /* 0x04 */ Vec3f **unk4_04; + } unk4; /* 0x05 */ u8 pad05[0xB0]; /* 0xB8 */ s8 unkB8; - /* 0xB9 */ u8 padB9[0x07]; + /* 0xB9 */ u8 padB9[0x03]; + /* 0xBC */ f32 unkBC; } unk8011A6D8; -extern unk8011A6D8 D_8011A6D8[]; +typedef struct unk800A414_arg3 { + f32 unk0; + f32 unk4; + f32 unk8; + f32 unkC; + f32 unk10; + f32 unk14; +} unk800A414_arg3; -extern s32 *D_80119C44; void func_80008168(void); void func_800096F8(s32); void func_80008140(void); +void func_8000974C(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u8 arg8, u8 arg9, u8 argA, u32 *soundMask); +void play_sound_at_position(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, u32 *soundMask); +void func_8000A2E8(s32 arg0); +s32 func_800090C0(f32, f32, s32); +void func_800095E8(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, u8 arg5, f32 arg6, u32 *soundMask); +void func_800098A4(u8 arg0, u16 soundId, f32 x, f32 y, f32 z, u8 arg5, u8 arg6, + u8 arg7, u8 arg8, u16 arg9, u8 argA, u8 argB, u8 argC); //void update_spatial_audio_position(Vec3f *arg0, f32 arg1, f32 arg2, f32 arg3); +s32 func_800099EC(u8 arg0); +void func_8000A414(Gfx **dlist, Vertex **verts, Triangle **tris, floatXYZVals *arg3, u8 red, u8 green, u8 blue); s32 func_800092A8(f32 inX, f32 inY, f32 inZ, floatXYZVals *floatXYZ, f32 *outX, f32 *outY, f32 *outZ); -void func_80009558(u16, f32 x, f32 y, f32 z, s32, void *); // Non Matching -void func_80009968(f32, f32, f32, u8, u8, s32); // Non Matching +void func_80009968(f32, f32, f32, u8, u8, u8); // Non Matching void update_spatial_audio_position(s32, f32, f32, f32); //Not accurate, the real one is above but it breaks update_player_racer -void func_8000A2E8(s32); // Non Matching -// Yeah this one seems excessive, and it's Non Matching -void func_800098A4(s32, s32, f32, f32, f32, s32, s32, s32, s32, s32, s32, s32, s32); void func_80008174(void); // Non Matching void func_80008040(void); // Non Matching -s32 func_800090C0(f32, f32, s16); // Non Matching -void func_80008438(Object**, s32, s32); +void func_80008438(Object **arg0, s32 numRacers, s32 updateRate); // Non Matching +void func_80006FC8(Object **arg0, s32 numRacers, ObjectSegment *arg2, u8 arg3, s32 updateRate); // Non Matching +void func_80006BFC(Object *arg0, ObjectSegment *arg1, Object *arg2, s32 updateRate); // Non Matching #endif diff --git a/src/vehicle_smokey.c b/src/vehicle_smokey.c index f5d95bbe..97453ba2 100644 --- a/src/vehicle_smokey.c +++ b/src/vehicle_smokey.c @@ -198,7 +198,7 @@ void update_smokey(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r newvar = 3; } if (sp5C == newvar && newvar + 1 == obj->segment.animFrame >> 4) { - func_80009558(SOUND_UNK_223, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, 0); + play_sound_at_position(SOUND_UNK_223, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, 0); } } if (racer->vehicleIDPrev == 7 && racer->playerIndex == PLAYER_COMPUTER && func_80023568()) { @@ -282,7 +282,7 @@ void func_8005E204(Object *obj, Object_Racer *racer, f32 arg2, s32 objectID, s32 newObj->unk78_obj = temp_s1; newObj->unk7C.word = (s8) temp_s2->animation.y_rotation * 60; newObj->segment.animFrame = get_random_number_from_range(0, 255); - func_80009558(arg4, newObj->segment.trans.x_position, newObj->segment.trans.y_position, newObj->segment.trans.z_position, 4, NULL); + play_sound_at_position(arg4, newObj->segment.trans.x_position, newObj->segment.trans.y_position, newObj->segment.trans.z_position, 4, NULL); } } } else { diff --git a/src/vehicle_tricky.c b/src/vehicle_tricky.c index c3314865..109368f8 100644 --- a/src/vehicle_tricky.c +++ b/src/vehicle_tricky.c @@ -70,7 +70,7 @@ void update_tricky(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r f32 diffX; f32 diffZ; ObjectModel *objModel; - s32 sp40; + s32 tempStartTimer; Object_68 *obj68; s32 sp38; UNUSED s32 pad; @@ -86,26 +86,26 @@ void update_tricky(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r func_80021400(130); racer->raceFinished++; } - sp40 = *startTimer; + tempStartTimer = *startTimer; if (racer->playerIndex == PLAYER_COMPUTER) { if (*startTimer != 100) { *startTimer -= 15; if (*startTimer < 0) { - if (D_8011D5CC == 0) { + if (D_8011D5CC == FALSE) { func_8005CB04(0); racer->boostTimer = 5; } - D_8011D5CC = 1; + D_8011D5CC = TRUE; *startTimer = 0; *input |= A_BUTTON; } else { - D_8011D5CC = 0; + D_8011D5CC = FALSE; } } } func_8004F7F4(updateRate, updateRateF, obj, racer); - *startTimer = sp40; + *startTimer = tempStartTimer; racer->lateral_velocity = 0.0f; racer->headAngle = sp52; obj->segment.unk38.byte.unk3B = sp56; @@ -178,10 +178,10 @@ void update_tricky(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r diffX = firstRacerObj->segment.trans.x_position - obj->segment.trans.x_position; diffZ = firstRacerObj->segment.trans.z_position - obj->segment.trans.z_position; if (sqrtf((diffX * diffX) + (diffZ * diffZ)) < 700.0) { - sp40 = (arctan2_f(diffX, diffZ) - (obj->segment.trans.y_rotation & 0xFFFF)) + 0x8000; - WRAP(sp40, -0x8000, 0x8000); - CLAMP(sp40, -sp38, sp38); - racer->headAngleTarget = sp40; + tempStartTimer = (arctan2_f(diffX, diffZ) - (obj->segment.trans.y_rotation & 0xFFFF)) + 0x8000; + WRAP(tempStartTimer, -0x8000, 0x8000); + CLAMP(tempStartTimer, -sp38, sp38); + racer->headAngleTarget = tempStartTimer; } if (obj->segment.unk38.byte.unk3B == 1) { if ((racer->miscAnimCounter & 0x1F) < 0xA) { @@ -222,7 +222,7 @@ void func_8005CA84(f32 x, f32 y, f32 z, s32 offset) { phi_v1 = 0; } offset += phi_v1; - func_80009558(gBossSoundIDOffset[offset], x, y, z, 4, 0); + play_sound_at_position(gBossSoundIDOffset[offset], x, y, z, 4, 0); } void func_8005CB04(s32 offset) { diff --git a/src/weather.c b/src/weather.c index 050362e6..49b59eab 100644 --- a/src/weather.c +++ b/src/weather.c @@ -569,7 +569,7 @@ void handle_rain_sound(UNUSED s32 updateRate) { if (gWeatherSoundMask) { update_spatial_audio_position(gWeatherSoundMask, xPos, yPos, zPos); } else { - func_80009558(SOUND_RAIN, xPos, yPos, zPos, 1, &gWeatherSoundMask); + play_sound_at_position(SOUND_RAIN, xPos, yPos, zPos, 1, &gWeatherSoundMask); } }