diff --git a/asm/non_matchings/code/audio_load/func_800E4198.s b/asm/non_matchings/code/audio_load/func_800E4198.s deleted file mode 100644 index 94e1d234df..0000000000 --- a/asm/non_matchings/code/audio_load/func_800E4198.s +++ /dev/null @@ -1,277 +0,0 @@ -glabel func_800E4198 -/* B5B338 800E4198 27BDFF98 */ addiu $sp, $sp, -0x68 -/* B5B33C 800E419C AFB30030 */ sw $s3, 0x30($sp) -/* B5B340 800E41A0 3C138017 */ lui $s3, %hi(gAudioContext) # $s3, 0x8017 -/* B5B344 800E41A4 2673F180 */ addiu $s3, %lo(gAudioContext) # addiu $s3, $s3, -0xe80 -/* B5B348 800E41A8 8E6E176C */ lw $t6, 0x176c($s3) -/* B5B34C 800E41AC AFB50038 */ sw $s5, 0x38($sp) -/* B5B350 800E41B0 AFB2002C */ sw $s2, 0x2c($sp) -/* B5B354 800E41B4 00C09025 */ move $s2, $a2 -/* B5B358 800E41B8 00E0A825 */ move $s5, $a3 -/* B5B35C 800E41BC AFBF0044 */ sw $ra, 0x44($sp) -/* B5B360 800E41C0 AFB70040 */ sw $s7, 0x40($sp) -/* B5B364 800E41C4 AFB6003C */ sw $s6, 0x3c($sp) -/* B5B368 800E41C8 AFB40034 */ sw $s4, 0x34($sp) -/* B5B36C 800E41CC AFB10028 */ sw $s1, 0x28($sp) -/* B5B370 800E41D0 AFB00024 */ sw $s0, 0x24($sp) -/* B5B374 800E41D4 11C00003 */ beqz $t6, .L800E41E4 -/* B5B378 800E41D8 00001025 */ move $v0, $zero -/* B5B37C 800E41DC 10000003 */ b .L800E41EC -/* B5B380 800E41E0 24020001 */ li $v0, 1 -.L800E41E4: -/* B5B384 800E41E4 3C018017 */ lui $at, %hi(D_8016B780) # $at, 0x8017 -/* B5B388 800E41E8 AC20B780 */ sw $zero, %lo(D_8016B780)($at) -.L800E41EC: -/* B5B38C 800E41EC AE601768 */ sw $zero, 0x1768($s3) -/* B5B390 800E41F0 02403025 */ move $a2, $s2 -/* B5B394 800E41F4 0C038A0F */ jal func_800E283C -/* B5B398 800E41F8 AFA2004C */ sw $v0, 0x4c($sp) -/* B5B39C 800E41FC 8E641768 */ lw $a0, 0x1768($s3) -/* B5B3A0 800E4200 00002825 */ move $a1, $zero -/* B5B3A4 800E4204 0000A025 */ move $s4, $zero -/* B5B3A8 800E4208 18800011 */ blez $a0, .L800E4250 -/* B5B3AC 800E420C 3C0F8017 */ lui $t7, %hi(gAudioContext) -/* B5B3B0 800E4210 25E2F180 */ addiu $v0, $t7, %lo(gAudioContext) -/* B5B3B4 800E4214 0004C080 */ sll $t8, $a0, 2 -/* B5B3B8 800E4218 03023021 */ addu $a2, $t8, $v0 -/* B5B3BC 800E421C 2403FFF0 */ li $v1, -16 -.L800E4220: -/* B5B3C0 800E4220 8C590B68 */ lw $t9, 0xb68($v0) -/* B5B3C4 800E4224 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff -/* B5B3C8 800E4228 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* B5B3CC 800E422C 8F2A0000 */ lw $t2, ($t9) -/* B5B3D0 800E4230 24420004 */ addiu $v0, $v0, 4 -/* B5B3D4 800E4234 01415824 */ and $t3, $t2, $at -/* B5B3D8 800E4238 256C000F */ addiu $t4, $t3, 0xf -/* B5B3DC 800E423C 0046082B */ sltu $at, $v0, $a2 -/* B5B3E0 800E4240 01836824 */ and $t5, $t4, $v1 -/* B5B3E4 800E4244 1420FFF6 */ bnez $at, .L800E4220 -/* B5B3E8 800E4248 00AD2821 */ addu $a1, $a1, $t5 -/* B5B3EC 800E424C 0000A025 */ move $s4, $zero -.L800E4250: -/* B5B3F0 800E4250 188000A7 */ blez $a0, .L800E44F0 -/* B5B3F4 800E4254 24170001 */ li $s7, 1 -/* B5B3F8 800E4258 24160003 */ li $s6, 3 -/* B5B3FC 800E425C 8E6E176C */ lw $t6, 0x176c($s3) -.L800E4260: -/* B5B400 800E4260 24010078 */ li $at, 120 -/* B5B404 800E4264 0014C080 */ sll $t8, $s4, 2 -/* B5B408 800E4268 11C100A1 */ beq $t6, $at, .L800E44F0 -/* B5B40C 800E426C 02787821 */ addu $t7, $s3, $t8 -/* B5B410 800E4270 8DF00B68 */ lw $s0, 0xb68($t7) -/* B5B414 800E4274 12A00005 */ beqz $s5, .L800E428C -/* B5B418 800E4278 00008825 */ move $s1, $zero -/* B5B41C 800E427C 52B7002D */ beql $s5, $s7, .L800E4334 -/* B5B420 800E4280 8E030000 */ lw $v1, ($s0) -/* B5B424 800E4284 10000052 */ b .L800E43D0 -/* B5B428 800E4288 00000000 */ nop -.L800E428C: -/* B5B42C 800E428C 8E030000 */ lw $v1, ($s0) -/* B5B430 800E4290 8E590010 */ lw $t9, 0x10($s2) -/* B5B434 800E4294 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff -/* B5B438 800E4298 00031100 */ sll $v0, $v1, 4 -/* B5B43C 800E429C 00021782 */ srl $v0, $v0, 0x1e -/* B5B440 800E42A0 1722000A */ bne $t9, $v0, .L800E42CC -/* B5B444 800E42A4 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* B5B448 800E42A8 8E450000 */ lw $a1, ($s2) -/* B5B44C 800E42AC 8E060004 */ lw $a2, 4($s0) -/* B5B450 800E42B0 00023E00 */ sll $a3, $v0, 0x18 -/* B5B454 800E42B4 00073E03 */ sra $a3, $a3, 0x18 -/* B5B458 800E42B8 AFB70010 */ sw $s7, 0x10($sp) -/* B5B45C 800E42BC 0C038171 */ jal func_800E05C4 -/* B5B460 800E42C0 00612024 */ and $a0, $v1, $at -/* B5B464 800E42C4 10000042 */ b .L800E43D0 -/* B5B468 800E42C8 00408825 */ move $s1, $v0 -.L800E42CC: -/* B5B46C 800E42CC 8E4A0014 */ lw $t2, 0x14($s2) -/* B5B470 800E42D0 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff -/* B5B474 800E42D4 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* B5B478 800E42D8 15420009 */ bne $t2, $v0, .L800E4300 -/* B5B47C 800E42DC 00612024 */ and $a0, $v1, $at -/* B5B480 800E42E0 8E450004 */ lw $a1, 4($s2) -/* B5B484 800E42E4 8E060004 */ lw $a2, 4($s0) -/* B5B488 800E42E8 00023E00 */ sll $a3, $v0, 0x18 -/* B5B48C 800E42EC 00073E03 */ sra $a3, $a3, 0x18 -/* B5B490 800E42F0 0C038171 */ jal func_800E05C4 -/* B5B494 800E42F4 AFB70010 */ sw $s7, 0x10($sp) -/* B5B498 800E42F8 10000035 */ b .L800E43D0 -/* B5B49C 800E42FC 00408825 */ move $s1, $v0 -.L800E4300: -/* B5B4A0 800E4300 16C20033 */ bne $s6, $v0, .L800E43D0 -/* B5B4A4 800E4304 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff -/* B5B4A8 800E4308 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* B5B4AC 800E430C 8E060004 */ lw $a2, 4($s0) -/* B5B4B0 800E4310 00023E00 */ sll $a3, $v0, 0x18 -/* B5B4B4 800E4314 00073E03 */ sra $a3, $a3, 0x18 -/* B5B4B8 800E4318 AFB70010 */ sw $s7, 0x10($sp) -/* B5B4BC 800E431C 00612024 */ and $a0, $v1, $at -/* B5B4C0 800E4320 0C038171 */ jal func_800E05C4 -/* B5B4C4 800E4324 240500FE */ li $a1, 254 -/* B5B4C8 800E4328 10000029 */ b .L800E43D0 -/* B5B4CC 800E432C 00408825 */ move $s1, $v0 -/* B5B4D0 800E4330 8E030000 */ lw $v1, ($s0) -.L800E4334: -/* B5B4D4 800E4334 8E4B0010 */ lw $t3, 0x10($s2) -/* B5B4D8 800E4338 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff -/* B5B4DC 800E433C 00031100 */ sll $v0, $v1, 4 -/* B5B4E0 800E4340 00021782 */ srl $v0, $v0, 0x1e -/* B5B4E4 800E4344 1562000A */ bne $t3, $v0, .L800E4370 -/* B5B4E8 800E4348 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* B5B4EC 800E434C 8E450000 */ lw $a1, ($s2) -/* B5B4F0 800E4350 8E060004 */ lw $a2, 4($s0) -/* B5B4F4 800E4354 00023E00 */ sll $a3, $v0, 0x18 -/* B5B4F8 800E4358 00073E03 */ sra $a3, $a3, 0x18 -/* B5B4FC 800E435C AFA00010 */ sw $zero, 0x10($sp) -/* B5B500 800E4360 0C038171 */ jal func_800E05C4 -/* B5B504 800E4364 00612024 */ and $a0, $v1, $at -/* B5B508 800E4368 10000019 */ b .L800E43D0 -/* B5B50C 800E436C 00408825 */ move $s1, $v0 -.L800E4370: -/* B5B510 800E4370 8E4C0014 */ lw $t4, 0x14($s2) -/* B5B514 800E4374 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff -/* B5B518 800E4378 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* B5B51C 800E437C 15820009 */ bne $t4, $v0, .L800E43A4 -/* B5B520 800E4380 00612024 */ and $a0, $v1, $at -/* B5B524 800E4384 8E450004 */ lw $a1, 4($s2) -/* B5B528 800E4388 8E060004 */ lw $a2, 4($s0) -/* B5B52C 800E438C 00023E00 */ sll $a3, $v0, 0x18 -/* B5B530 800E4390 00073E03 */ sra $a3, $a3, 0x18 -/* B5B534 800E4394 0C038171 */ jal func_800E05C4 -/* B5B538 800E4398 AFA00010 */ sw $zero, 0x10($sp) -/* B5B53C 800E439C 1000000C */ b .L800E43D0 -/* B5B540 800E43A0 00408825 */ move $s1, $v0 -.L800E43A4: -/* B5B544 800E43A4 16C2000A */ bne $s6, $v0, .L800E43D0 -/* B5B548 800E43A8 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff -/* B5B54C 800E43AC 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* B5B550 800E43B0 8E060004 */ lw $a2, 4($s0) -/* B5B554 800E43B4 00023E00 */ sll $a3, $v0, 0x18 -/* B5B558 800E43B8 00073E03 */ sra $a3, $a3, 0x18 -/* B5B55C 800E43BC AFA00010 */ sw $zero, 0x10($sp) -/* B5B560 800E43C0 00612024 */ and $a0, $v1, $at -/* B5B564 800E43C4 0C038171 */ jal func_800E05C4 -/* B5B568 800E43C8 240500FE */ li $a1, 254 -/* B5B56C 800E43CC 00408825 */ move $s1, $v0 -.L800E43D0: -/* B5B570 800E43D0 16200003 */ bnez $s1, .L800E43E0 -/* B5B574 800E43D4 00000000 */ nop -/* B5B578 800E43D8 10000041 */ b .L800E44E0 -/* B5B57C 800E43DC 8E641768 */ lw $a0, 0x1768($s3) -.L800E43E0: -/* B5B580 800E43E0 52A00006 */ beql $s5, $zero, .L800E43FC -/* B5B584 800E43E4 8E030000 */ lw $v1, ($s0) -/* B5B588 800E43E8 52B70023 */ beql $s5, $s7, .L800E4478 -/* B5B58C 800E43EC 8E6A176C */ lw $t2, 0x176c($s3) -/* B5B590 800E43F0 1000003B */ b .L800E44E0 -/* B5B594 800E43F4 8E641768 */ lw $a0, 0x1768($s3) -/* B5B598 800E43F8 8E030000 */ lw $v1, ($s0) -.L800E43FC: -/* B5B59C 800E43FC 24010001 */ li $at, 1 -/* B5B5A0 800E4400 02202825 */ move $a1, $s1 -/* B5B5A4 800E4404 00031100 */ sll $v0, $v1, 4 -/* B5B5A8 800E4408 00021782 */ srl $v0, $v0, 0x1e -/* B5B5AC 800E440C 1441000E */ bne $v0, $at, .L800E4448 -/* B5B5B0 800E4410 00403825 */ move $a3, $v0 -/* B5B5B4 800E4414 8E6D2838 */ lw $t5, 0x2838($s3) -/* B5B5B8 800E4418 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff -/* B5B5BC 800E441C 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* B5B5C0 800E4420 00613024 */ and $a2, $v1, $at -/* B5B5C4 800E4424 8E040004 */ lw $a0, 4($s0) -/* B5B5C8 800E4428 02202825 */ move $a1, $s1 -/* B5B5CC 800E442C 0C038AF3 */ jal func_800E2BCC -/* B5B5D0 800E4430 85A70002 */ lh $a3, 2($t5) -/* B5B5D4 800E4434 920E0000 */ lbu $t6, ($s0) -/* B5B5D8 800E4438 AE110004 */ sw $s1, 4($s0) -/* B5B5DC 800E443C 31D8FFF3 */ andi $t8, $t6, 0xfff3 -/* B5B5E0 800E4440 1000000A */ b .L800E446C -/* B5B5E4 800E4444 A2180000 */ sb $t8, ($s0) -.L800E4448: -/* B5B5E8 800E4448 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff -/* B5B5EC 800E444C 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* B5B5F0 800E4450 00613024 */ and $a2, $v1, $at -/* B5B5F4 800E4454 0C038AAA */ jal Audio_DMAFastCopy -/* B5B5F8 800E4458 8E040004 */ lw $a0, 4($s0) -/* B5B5FC 800E445C 920F0000 */ lbu $t7, ($s0) -/* B5B600 800E4460 AE110004 */ sw $s1, 4($s0) -/* B5B604 800E4464 31F9FFF3 */ andi $t9, $t7, 0xfff3 -/* B5B608 800E4468 A2190000 */ sb $t9, ($s0) -.L800E446C: -/* B5B60C 800E446C 1000001C */ b .L800E44E0 -/* B5B610 800E4470 8E641768 */ lw $a0, 0x1768($s3) -/* B5B614 800E4474 8E6A176C */ lw $t2, 0x176c($s3) -.L800E4478: -/* B5B618 800E4478 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff -/* B5B61C 800E447C 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* B5B620 800E4480 000A5880 */ sll $t3, $t2, 2 -/* B5B624 800E4484 016A5821 */ addu $t3, $t3, $t2 -/* B5B628 800E4488 000B5880 */ sll $t3, $t3, 2 -/* B5B62C 800E448C 026B1021 */ addu $v0, $s3, $t3 -/* B5B630 800E4490 AC500D6C */ sw $s0, 0xd6c($v0) -/* B5B634 800E4494 AC510D70 */ sw $s1, 0xd70($v0) -/* B5B638 800E4498 8E6C176C */ lw $t4, 0x176c($s3) -/* B5B63C 800E449C AC400D78 */ sw $zero, 0xd78($v0) -/* B5B640 800E44A0 24420D68 */ addiu $v0, $v0, 0xd68 -/* B5B644 800E44A4 000C6E00 */ sll $t5, $t4, 0x18 -/* B5B648 800E44A8 01A17025 */ or $t6, $t5, $at -/* B5B64C 800E44AC AC4E000C */ sw $t6, 0xc($v0) -/* B5B650 800E44B0 8E030000 */ lw $v1, ($s0) -/* B5B654 800E44B4 8E180004 */ lw $t8, 4($s0) -/* B5B658 800E44B8 00617824 */ and $t7, $v1, $at -/* B5B65C 800E44BC 00035100 */ sll $t2, $v1, 4 -/* B5B660 800E44C0 000A5F82 */ srl $t3, $t2, 0x1e -/* B5B664 800E44C4 030FC821 */ addu $t9, $t8, $t7 -/* B5B668 800E44C8 032B6021 */ addu $t4, $t9, $t3 -/* B5B66C 800E44CC AC4C0000 */ sw $t4, ($v0) -/* B5B670 800E44D0 8E6D176C */ lw $t5, 0x176c($s3) -/* B5B674 800E44D4 8E641768 */ lw $a0, 0x1768($s3) -/* B5B678 800E44D8 25AE0001 */ addiu $t6, $t5, 1 -/* B5B67C 800E44DC AE6E176C */ sw $t6, 0x176c($s3) -.L800E44E0: -/* B5B680 800E44E0 26940001 */ addiu $s4, $s4, 1 -/* B5B684 800E44E4 0284082A */ slt $at, $s4, $a0 -/* B5B688 800E44E8 5420FF5D */ bnezl $at, .L800E4260 -/* B5B68C 800E44EC 8E6E176C */ lw $t6, 0x176c($s3) -.L800E44F0: -/* B5B690 800E44F0 8E69176C */ lw $t1, 0x176c($s3) -/* B5B694 800E44F4 AE601768 */ sw $zero, 0x1768($s3) -/* B5B698 800E44F8 8FB8004C */ lw $t8, 0x4c($sp) -/* B5B69C 800E44FC 5120001A */ beql $t1, $zero, .L800E4568 -/* B5B6A0 800E4500 8FBF0044 */ lw $ra, 0x44($sp) -/* B5B6A4 800E4504 17000017 */ bnez $t8, .L800E4564 -/* B5B6A8 800E4508 00097880 */ sll $t7, $t1, 2 -/* B5B6AC 800E450C 01E97821 */ addu $t7, $t7, $t1 -/* B5B6B0 800E4510 000F7880 */ sll $t7, $t7, 2 -/* B5B6B4 800E4514 026F1021 */ addu $v0, $s3, $t7 -/* B5B6B8 800E4518 8C500D58 */ lw $s0, 0xd58($v0) -/* B5B6BC 800E451C 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff -/* B5B6C0 800E4520 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* B5B6C4 800E4524 8E030000 */ lw $v1, ($s0) -/* B5B6C8 800E4528 8C450D5C */ lw $a1, 0xd5c($v0) -/* B5B6CC 800E452C 3C0A8017 */ lui $t2, %hi(gAudioContext+0x1e78) # $t2, 0x8017 -/* B5B6D0 800E4530 00613024 */ and $a2, $v1, $at -/* B5B6D4 800E4534 00064302 */ srl $t0, $a2, 0xc -/* B5B6D8 800E4538 8E040004 */ lw $a0, 4($s0) -/* B5B6DC 800E453C 25080001 */ addiu $t0, $t0, 1 -/* B5B6E0 800E4540 254A0FF8 */ addiu $t2, %lo(gAudioContext+0x1e78) # addiu $t2, $t2, 0xff8 -/* B5B6E4 800E4544 AFAA0014 */ sw $t2, 0x14($sp) -/* B5B6E8 800E4548 AFA80010 */ sw $t0, 0x10($sp) -/* B5B6EC 800E454C 8C590D60 */ lw $t9, 0xd60($v0) -/* B5B6F0 800E4550 00033900 */ sll $a3, $v1, 4 -/* B5B6F4 800E4554 24420D54 */ addiu $v0, $v0, 0xd54 -/* B5B6F8 800E4558 00073F82 */ srl $a3, $a3, 0x1e -/* B5B6FC 800E455C 0C038EB2 */ jal Audio_InitAsyncReq -/* B5B700 800E4560 AFB90018 */ sw $t9, 0x18($sp) -.L800E4564: -/* B5B704 800E4564 8FBF0044 */ lw $ra, 0x44($sp) -.L800E4568: -/* B5B708 800E4568 8FB00024 */ lw $s0, 0x24($sp) -/* B5B70C 800E456C 8FB10028 */ lw $s1, 0x28($sp) -/* B5B710 800E4570 8FB2002C */ lw $s2, 0x2c($sp) -/* B5B714 800E4574 8FB30030 */ lw $s3, 0x30($sp) -/* B5B718 800E4578 8FB40034 */ lw $s4, 0x34($sp) -/* B5B71C 800E457C 8FB50038 */ lw $s5, 0x38($sp) -/* B5B720 800E4580 8FB6003C */ lw $s6, 0x3c($sp) -/* B5B724 800E4584 8FB70040 */ lw $s7, 0x40($sp) -/* B5B728 800E4588 03E00008 */ jr $ra -/* B5B72C 800E458C 27BD0068 */ addiu $sp, $sp, 0x68 - diff --git a/asm/non_matchings/code/audio_load/func_800E4918.s b/asm/non_matchings/code/audio_load/func_800E4918.s index 86fc6a7855..9cd4a055f5 100644 --- a/asm/non_matchings/code/audio_load/func_800E4918.s +++ b/asm/non_matchings/code/audio_load/func_800E4918.s @@ -222,7 +222,7 @@ glabel func_800E4918 /* B5BDD0 800E4C30 00613024 */ and $a2, $v1, $at /* B5BDD4 800E4C34 8E040004 */ lw $a0, 4($s0) /* B5BDD8 800E4C38 02202825 */ move $a1, $s1 -/* B5BDDC 800E4C3C 0C038AF3 */ jal func_800E2BCC +/* B5BDDC 800E4C3C 0C038AF3 */ jal Audio_NoopCopy /* B5BDE0 800E4C40 85470002 */ lh $a3, 2($t2) /* B5BDE4 800E4C44 920C0000 */ lbu $t4, ($s0) /* B5BDE8 800E4C48 AE110004 */ sw $s1, 4($s0) diff --git a/include/variables.h b/include/variables.h index 065ea614e4..d982598116 100644 --- a/include/variables.h +++ b/include/variables.h @@ -3161,7 +3161,6 @@ extern FaultThreadStruct gFaultStruct; //extern ? D_8016B6B5; //extern ? D_8016B6B8; extern OSMesgQueue D_8016B6E0; -//extern u32 D_8016B780; //extern ? D_8016B7A8; //extern ? D_8016B7AC; //extern ? D_8016B7B0; diff --git a/include/z64audio.h b/include/z64audio.h index d998e977f2..bd08293cbc 100644 --- a/include/z64audio.h +++ b/include/z64audio.h @@ -823,13 +823,13 @@ typedef struct { } SampleDmaReq; // size = 0x10 typedef struct { - s32 unk_00; - s32 unk_04; - s32 unk_08; - s32 unk_0C; - u32 unk_10; - u32 unk_14; -} RelocInfo; + /* 0x00 */ s32 index1; + /* 0x04 */ s32 index2; + /* 0x08 */ s32 baseAddr1; + /* 0x0C */ s32 baseAddr2; + /* 0x10 */ u32 medium1; // medium1 + /* 0x14 */ u32 medium2; // medium2 +} RelocInfo; // size = 0x18 typedef enum { /* 0 */ SEQUENCE_TABLE, diff --git a/src/code/audio_load.c b/src/code/audio_load.c index f905ba89a1..6012c43933 100644 --- a/src/code/audio_load.c +++ b/src/code/audio_load.c @@ -19,7 +19,7 @@ u32 Audio_GetTableIndex(s32 tableType, u32 tableIdx); void* func_800E27A4(s32 tableType, s32 id); void* Audio_GetLoadTable(s32 tableType); void Audio_DMAFastCopy(u32 devAddr, u8* addr, u32 size, s32 handleType); -void func_800E2BCC(u32 devAddr, u8* addr, u32 size, s32 handleType); +void Audio_NoopCopy(u32 devAddr, u8* addr, u32 size, s32 handleType); s32 Audio_DMA(OSIoMesg* mesg, u32 priority, s32 direction, u32 devAddr, void* ramAddr, u32 size, OSMesgQueue* reqQueue, s32 handleType, const char* dmaFuncType); void* Audio_AsyncLoadInner(s32 tableType, s32 arg1, s32 arg2, s32 arg3, OSMesgQueue* retQueue); @@ -38,7 +38,8 @@ void func_800E38F8(s32 arg0, s32 arg1, s32 arg2, s32 arg3); OSMesgQueue D_8016B6E0; OSMesg D_8016B6F8[0x10]; s8* D_8016B738[0x12]; -u32 D_8016B780[8]; +s32 D_8016B780; +s32 sAudioLoadPad[4]; void func_800E11F0(void) { u32 i; @@ -365,7 +366,7 @@ s32 func_800E1C78(AudioBankSample* sample, s32 arg1) { } if (sample->medium == 1) { - func_800E2BCC(sample->sampleAddr, sampleAddr, sample->size, gAudioContext.audioTable->header.unk_02); + Audio_NoopCopy(sample->sampleAddr, sampleAddr, sample->size, gAudioContext.audioTable->header.unk_02); } else { Audio_DMAFastCopy(sample->sampleAddr, sampleAddr, sample->size, sample->medium); } @@ -586,18 +587,18 @@ unk_ldr* func_800E2454(u32 bankId) { unk02 = gAudioContext.ctlEntries[idx].unk_02; unk03 = gAudioContext.ctlEntries[idx].unk_03; - relocInfo.unk_00 = unk02; - relocInfo.unk_04 = unk03; - if (relocInfo.unk_00 != 0xFF) { - relocInfo.unk_08 = func_800E2338(relocInfo.unk_00, &relocInfo.unk_10, 0); + relocInfo.index1 = unk02; + relocInfo.index2 = unk03; + if (relocInfo.index1 != 0xFF) { + relocInfo.baseAddr1 = func_800E2338(relocInfo.index1, &relocInfo.medium1, 0); } else { - relocInfo.unk_08 = 0; + relocInfo.baseAddr1 = 0; } if (unk03 != 0xFF) { - relocInfo.unk_0C = func_800E2338(unk03, &relocInfo.unk_14, 0); + relocInfo.baseAddr2 = func_800E2338(unk03, &relocInfo.medium2, 0); } else { - relocInfo.unk_0C = 0; + relocInfo.baseAddr2 = 0; } temp_ret = func_800E2558(BANK_TABLE, bankId, &sp38); @@ -664,7 +665,7 @@ u8* func_800E2558(u32 tableType, u32 tableIdx, s32* didAllocate) { *didAllocate = true; if (sp40 == 1) { - func_800E2BCC(romAddr, ret, size, (s16)table->header.unk_02); + Audio_NoopCopy(romAddr, ret, size, (s16)table->header.unk_02); } else { Audio_DMAFastCopy(romAddr, ret, size, sp40); } @@ -838,7 +839,7 @@ void Audio_DMAFastCopy(u32 devAddr, u8* addr, u32 size, s32 handleType) { } } -void func_800E2BCC(u32 devAddr, u8* addr, u32 size, s32 handleType) { +void Audio_NoopCopy(u32 devAddr, u8* addr, u32 size, s32 handleType) { } s32 (*sDmaHandler)(OSPiHandle* handle, OSIoMesg* mb, s32 direction) = osEPiStartDma; @@ -1429,10 +1430,10 @@ void Audio_AsyncReqDone(AsyncLoadReq* loadReq) { b2 = ASYNC_B2(retMsg); t1 = gAudioContext.ctlEntries[b2].unk_02; t2 = gAudioContext.ctlEntries[b2].unk_03; - sp30.unk_00 = t1; - sp30.unk_04 = t2; - sp30.unk_08 = t1 != 0xFF ? func_800E2318(t1, &sp30.unk_10) : 0; - sp30.unk_0C = t2 != 0xFF ? func_800E2318(t2, &sp30.unk_14) : 0; + sp30.index1 = t1; + sp30.index2 = t2; + sp30.baseAddr1 = t1 != 0xFF ? func_800E2318(t1, &sp30.medium1) : 0; + sp30.baseAddr2 = t2 != 0xFF ? func_800E2318(t2, &sp30.medium2) : 0; Audio_SetBankLoadStatus(b2, ASYNC_B3(retMsg)); func_800E4198(b2, loadReq->unk_04, &sp30, 1); break; @@ -1511,12 +1512,12 @@ void Audio_SampleReloc(AudioBankSound* sound, u32 arg1, RelocInfo* arg2) { sample->book = RELOC(sample->book, arg1); switch (sample->medium) { case 0: - sample->sampleAddr = RELOC(sample->sampleAddr, arg2->unk_08); - sample->medium = arg2->unk_10; + sample->sampleAddr = RELOC(sample->sampleAddr, arg2->baseAddr1); + sample->medium = arg2->medium1; break; case 1: - sample->sampleAddr = RELOC(sample->sampleAddr, arg2->unk_0C); - sample->medium = arg2->unk_14; + sample->sampleAddr = RELOC(sample->sampleAddr, arg2->baseAddr2); + sample->medium = arg2->medium2; break; case 2: case 3: @@ -1533,7 +1534,99 @@ void Audio_SampleReloc(AudioBankSound* sound, u32 arg1, RelocInfo* arg2) { #undef RELOC -#pragma GLOBAL_ASM("asm/non_matchings/code/audio_load/func_800E4198.s") +void func_800E4198(s32 bankId, unk_ldr* mem, RelocInfo* relocInfo, s32 arg3) { + AudioStruct0D68* item; + AudioStruct0D68* item2; + AudioBankSample* sample; + s32 count; + s32 temp; + u8* addr; + s32 sp4C; + s32 i; + + sp4C = false; + if (gAudioContext.unk_176C != 0) { + sp4C = true; + } else { + D_8016B780 = 0; + } + gAudioContext.unk_1768 = 0; + func_800E283C(bankId, mem, relocInfo); + + count = 0; + for (i = 0; i < gAudioContext.unk_1768; i++) { + count += ALIGN16(gAudioContext.unk_0B68[i]->size); + } + + if (count && count) {} + + for (i = 0; i < gAudioContext.unk_1768; i++) { + if (gAudioContext.unk_176C == 120) { + break; + } + + sample = gAudioContext.unk_0B68[i]; + addr = NULL; + switch (arg3) { + case 0: + if (sample->medium == relocInfo->medium1) { + addr = func_800E05C4(sample->size, relocInfo->index1, sample->sampleAddr, sample->medium, 1); + } else if (sample->medium == relocInfo->medium2) { + addr = func_800E05C4(sample->size, relocInfo->index2, sample->sampleAddr, sample->medium, 1); + } else if (sample->medium == 3) { + addr = func_800E05C4(sample->size, 0xFE, sample->sampleAddr, sample->medium, 1); + } + break; + + case 1: + if (sample->medium == relocInfo->medium1) { + addr = func_800E05C4(sample->size, relocInfo->index1, sample->sampleAddr, sample->medium, 0); + } else if (sample->medium == relocInfo->medium2) { + addr = func_800E05C4(sample->size, relocInfo->index2, sample->sampleAddr, sample->medium, 0); + } else if (sample->medium == 3) { + addr = func_800E05C4(sample->size, 0xFE, sample->sampleAddr, sample->medium, 0); + } + break; + } + if (addr == NULL) { + continue; + } + + switch (arg3) { + case 0: + if (sample->medium == 1) { + Audio_NoopCopy((u32)sample->sampleAddr, addr, sample->size, gAudioContext.audioTable->header.unk_02); + sample->sampleAddr = addr; + sample->medium = 0; + } else { + Audio_DMAFastCopy((u32)sample->sampleAddr, addr, sample->size, sample->medium); + sample->sampleAddr = addr; + sample->medium = 0; + } + if (sample->medium == 3) {} + break; + + case 1: + item = &gAudioContext.unk_0D68[gAudioContext.unk_176C]; + item->sample = sample; + item->ramAddr = addr; + item->encodedInfo = (gAudioContext.unk_176C << 24) | 0xffffff; + item->isFree = false; + item->endAndMediumKey = (u32)sample->sampleAddr + sample->size + sample->medium; + gAudioContext.unk_176C++; + break; + } + } + + gAudioContext.unk_1768 = 0; + if (gAudioContext.unk_176C != 0 && !sp4C) { + item2 = &gAudioContext.unk_0D68[gAudioContext.unk_176C - 1]; + sample = item2->sample; + temp = (sample->size >> 12) + 1; + Audio_InitAsyncReq((u32)sample->sampleAddr, item2->ramAddr, sample->size, sample->medium, temp, + &gAudioContext.unk_1E78, item2->encodedInfo); + } +} s32 func_800E4590(s32 resetStatus) { AudioBankSample* sample; @@ -1665,17 +1758,17 @@ void func_800E4D94(void) { RelocInfo sp4C; if (gAudioContext.unk_2D60[i].poolIndex == 1) { temp_s2 = Audio_GetTableIndex(BANK_TABLE, gAudioContext.unk_2D60[i].id); - sp4C.unk_00 = gAudioContext.ctlEntries[temp_s2].unk_02; - sp4C.unk_04 = gAudioContext.ctlEntries[temp_s2].unk_03; + sp4C.index1 = gAudioContext.ctlEntries[temp_s2].unk_02; + sp4C.index2 = gAudioContext.ctlEntries[temp_s2].unk_03; - if (sp4C.unk_00 != 0xFF) { - sp4C.unk_00 = Audio_GetTableIndex(AUDIO_TABLE, sp4C.unk_00); - sp4C.unk_10 = audioTable->entries[sp4C.unk_00].unk_08; + if (sp4C.index1 != 0xFF) { + sp4C.index1 = Audio_GetTableIndex(AUDIO_TABLE, sp4C.index1); + sp4C.medium1 = audioTable->entries[sp4C.index1].unk_08; } - if (sp4C.unk_04 != 0xFF) { - sp4C.unk_04 = Audio_GetTableIndex(AUDIO_TABLE, sp4C.unk_04); - sp4C.unk_14 = audioTable->entries[sp4C.unk_04].unk_08; + if (sp4C.index2 != 0xFF) { + sp4C.index2 = Audio_GetTableIndex(AUDIO_TABLE, sp4C.index2); + sp4C.medium2 = audioTable->entries[sp4C.index2].unk_08; } func_800E4918(temp_s2, 0, &sp4C); }