audio load.c decomp (#176)

This commit is contained in:
MegaMech
2022-04-17 00:11:40 -06:00
committed by GitHub
parent 13a11f0ffa
commit e4e5f91be5
54 changed files with 2038 additions and 2764 deletions
+1 -1
View File
@@ -9,7 +9,7 @@ glabel D_803AFBD0
glabel D_803AFBD8
.skip 16
glabel D_803AFBE8
glabel gNotesAndBuffersPool
.skip 48
glabel D_803AFC18
+15 -15
View File
@@ -99,13 +99,13 @@ glabel D_803B5FE8
glabel D_803B5FF8
.skip 16
glabel D_803B6008
glabel gCurrAudioFrameDmaQueue
.skip 24
glabel D_803B6020
glabel gCurrAudioFrameDmaMesgBufs
.skip 256
glabel D_803B6120
glabel gCurrAudioFrameDmaIoMesgBufs
.skip 1536
glabel D_803B6720
@@ -117,34 +117,34 @@ glabel D_803B6738
glabel D_803B6740
.skip 24
glabel D_803B6758
glabel sSampleDmas
.skip 1792
glabel D_803B6E58
glabel gSampleDmaNumListItems
.skip 4
glabel D_803B6E5C
glabel sSampleDmaListSize1
.skip 4
glabel D_803B6E60
.skip 8
glabel D_803B6E68
glabel sSampleDmaReuseQueue1
.skip 256
glabel D_803B6F68
glabel sSampleDmaReuseQueue2
.skip 256
glabel D_803B7068
glabel sSampleDmaReuseQueueTail1
.skip 1
glabel D_803B7069
glabel sSampleDmaReuseQueueTail2
.skip 1
glabel D_803B706A
glabel sSampleDmaReuseQueueHead1
.skip 1
glabel D_803B706B
glabel sSampleDmaReuseQueueHead2
.skip 1
glabel D_803B706C
@@ -165,7 +165,7 @@ glabel D_803B707C
glabel D_803B7080
.skip 8
glabel D_803B7088
glabel gAudioBufferParameters
.skip 24
glabel D_803B70A0
@@ -180,7 +180,7 @@ glabel D_803B70A8
glabel D_803B70AC
.skip 4
glabel D_803B70B0
glabel gMaxSimultaneousNotes
.skip 4
glabel D_803B70B4
@@ -192,7 +192,7 @@ glabel D_803B70B6
glabel D_803B70B8
.skip 4
glabel D_803B70BC
glabel gCurrAudioFrameDmaCount
.skip 4
glabel D_803B70C0
@@ -61,8 +61,8 @@ glabel L800BE638
/* 0BF2A4 800BE6A4 A08E0001 */ sb $t6, 1($a0)
.L800BE6A8:
/* 0BF2A8 800BE6A8 14200019 */ bnez $at, .L800BE710
/* 0BF2AC 800BE6AC 3C03803B */ lui $v1, %hi(D_803B7088) # $v1, 0x803b
/* 0BF2B0 800BE6B0 24637088 */ addiu $v1, %lo(D_803B7088) # addiu $v1, $v1, 0x7088
/* 0BF2AC 800BE6AC 3C03803B */ lui $v1, %hi(gAudioBufferParameters) # $v1, 0x803b
/* 0BF2B0 800BE6B0 24637088 */ addiu $v1, %lo(gAudioBufferParameters) # addiu $v1, $v1, 0x7088
/* 0BF2B4 800BE6B4 846F000C */ lh $t7, 0xc($v1)
/* 0BF2B8 800BE6B8 84790000 */ lh $t9, ($v1)
/* 0BF2BC 800BE6BC 00CF0019 */ multu $a2, $t7
+4 -4
View File
@@ -1,7 +1,7 @@
glabel func_800B8EA8
/* 0B9AA8 800B8EA8 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 0B9AAC 800B8EAC 3C02803B */ lui $v0, %hi(D_803B70B0) # $v0, 0x803b
/* 0B9AB0 800B8EB0 8C4270B0 */ lw $v0, %lo(D_803B70B0)($v0)
/* 0B9AAC 800B8EAC 3C02803B */ lui $v0, %hi(gMaxSimultaneousNotes) # $v0, 0x803b
/* 0B9AB0 800B8EB0 8C4270B0 */ lw $v0, %lo(gMaxSimultaneousNotes)($v0)
/* 0B9AB4 800B8EB4 AFB50028 */ sw $s5, 0x28($sp)
/* 0B9AB8 800B8EB8 AFB2001C */ sw $s2, 0x1c($sp)
/* 0B9ABC 800B8EBC 0080A825 */ move $s5, $a0
@@ -43,8 +43,8 @@ glabel func_800B8EA8
/* 0B9B44 800B8F44 02802025 */ move $a0, $s4
/* 0B9B48 800B8F48 0C02FC01 */ jal func_800BF004
/* 0B9B4C 800B8F4C 02002825 */ move $a1, $s0
/* 0B9B50 800B8F50 3C02803B */ lui $v0, %hi(D_803B70B0) # $v0, 0x803b
/* 0B9B54 800B8F54 8C4270B0 */ lw $v0, %lo(D_803B70B0)($v0)
/* 0B9B50 800B8F50 3C02803B */ lui $v0, %hi(gMaxSimultaneousNotes) # $v0, 0x803b
/* 0B9B54 800B8F54 8C4270B0 */ lw $v0, %lo(gMaxSimultaneousNotes)($v0)
/* 0B9B58 800B8F58 26520001 */ addiu $s2, $s2, 1
.L800B8F5C:
/* 0B9B5C 800B8F5C 0242082A */ slt $at, $s2, $v0
+4 -4
View File
@@ -7,18 +7,18 @@ glabel func_800B914C
/* 0B9D60 800B9160 8FAF0018 */ lw $t7, 0x18($sp)
/* 0B9D64 800B9164 AFBF0014 */ sw $ra, 0x14($sp)
/* 0B9D68 800B9168 AC8E0004 */ sw $t6, 4($a0)
/* 0B9D6C 800B916C 0C02E3FF */ jal func_800B8FFC
/* 0B9D6C 800B916C 0C02E3FF */ jal soundAlloc
/* 0B9D70 800B9170 8DE50000 */ lw $a1, ($t7)
/* 0B9D74 800B9174 8FB80018 */ lw $t8, 0x18($sp)
/* 0B9D78 800B9178 3C04803B */ lui $a0, %hi(D_803AFBE8) # $a0, 0x803b
/* 0B9D7C 800B917C 2484FBE8 */ addiu $a0, %lo(D_803AFBE8) # addiu $a0, $a0, -0x418
/* 0B9D78 800B9178 3C04803B */ lui $a0, %hi(gNotesAndBuffersPool) # $a0, 0x803b
/* 0B9D7C 800B917C 2484FBE8 */ addiu $a0, %lo(gNotesAndBuffersPool) # addiu $a0, $a0, -0x418
/* 0B9D80 800B9180 00402825 */ move $a1, $v0
/* 0B9D84 800B9184 0C02E41F */ jal func_800B907C
/* 0B9D88 800B9188 8F060000 */ lw $a2, ($t8)
/* 0B9D8C 800B918C 8FB90018 */ lw $t9, 0x18($sp)
/* 0B9D90 800B9190 3C04803B */ lui $a0, %hi(gLeftVolRampings) # $a0, 0x803b
/* 0B9D94 800B9194 2484FBC8 */ addiu $a0, %lo(gLeftVolRampings) # addiu $a0, $a0, -0x438
/* 0B9D98 800B9198 0C02E3FF */ jal func_800B8FFC
/* 0B9D98 800B9198 0C02E3FF */ jal soundAlloc
/* 0B9D9C 800B919C 8F25000C */ lw $a1, 0xc($t9)
/* 0B9DA0 800B91A0 8FA80018 */ lw $t0, 0x18($sp)
/* 0B9DA4 800B91A4 3C04803B */ lui $a0, %hi(D_803AFC18) # $a0, 0x803b
+2 -2
View File
@@ -7,7 +7,7 @@ glabel func_800B91C8
/* 0B9DDC 800B91DC 8FAF0018 */ lw $t7, 0x18($sp)
/* 0B9DE0 800B91E0 AFBF0014 */ sw $ra, 0x14($sp)
/* 0B9DE4 800B91E4 AC8E0004 */ sw $t6, 4($a0)
/* 0B9DE8 800B91E8 0C02E3FF */ jal func_800B8FFC
/* 0B9DE8 800B91E8 0C02E3FF */ jal soundAlloc
/* 0B9DEC 800B91EC 8DE50000 */ lw $a1, ($t7)
/* 0B9DF0 800B91F0 8FB80018 */ lw $t8, 0x18($sp)
/* 0B9DF4 800B91F4 3C04803B */ lui $a0, %hi(D_803AFC28) # $a0, 0x803b
@@ -18,7 +18,7 @@ glabel func_800B91C8
/* 0B9E08 800B9208 8FB90018 */ lw $t9, 0x18($sp)
/* 0B9E0C 800B920C 3C04803B */ lui $a0, %hi(D_803AFC18) # $a0, 0x803b
/* 0B9E10 800B9210 2484FC18 */ addiu $a0, %lo(D_803AFC18) # addiu $a0, $a0, -0x3e8
/* 0B9E14 800B9214 0C02E3FF */ jal func_800B8FFC
/* 0B9E14 800B9214 0C02E3FF */ jal soundAlloc
/* 0B9E18 800B9218 8F250004 */ lw $a1, 4($t9)
/* 0B9E1C 800B921C 8FA80018 */ lw $t0, 0x18($sp)
/* 0B9E20 800B9220 3C04803B */ lui $a0, %hi(D_803AFC38) # $a0, 0x803b
+3 -3
View File
@@ -7,7 +7,7 @@ glabel func_800B9244
/* 0B9E58 800B9258 8C8E0000 */ lw $t6, ($a0)
/* 0B9E5C 800B925C AFBF001C */ sw $ra, 0x1c($sp)
/* 0B9E60 800B9260 AC8E0004 */ sw $t6, 4($a0)
/* 0B9E64 800B9264 0C02E3FF */ jal func_800B8FFC
/* 0B9E64 800B9264 0C02E3FF */ jal soundAlloc
/* 0B9E68 800B9268 8E050000 */ lw $a1, ($s0)
/* 0B9E6C 800B926C 3C04803B */ lui $a0, %hi(D_803AFC4C) # $a0, 0x803b
/* 0B9E70 800B9270 2484FC4C */ addiu $a0, %lo(D_803AFC4C) # addiu $a0, $a0, -0x3b4
@@ -16,7 +16,7 @@ glabel func_800B9244
/* 0B9E7C 800B927C 8E060000 */ lw $a2, ($s0)
/* 0B9E80 800B9280 3C04803B */ lui $a0, %hi(D_803AFC28) # $a0, 0x803b
/* 0B9E84 800B9284 2484FC28 */ addiu $a0, %lo(D_803AFC28) # addiu $a0, $a0, -0x3d8
/* 0B9E88 800B9288 0C02E3FF */ jal func_800B8FFC
/* 0B9E88 800B9288 0C02E3FF */ jal soundAlloc
/* 0B9E8C 800B928C 8E050004 */ lw $a1, 4($s0)
/* 0B9E90 800B9290 3C04803B */ lui $a0, %hi(D_803AFE1C) # $a0, 0x803b
/* 0B9E94 800B9294 2484FE1C */ addiu $a0, %lo(D_803AFE1C) # addiu $a0, $a0, -0x1e4
@@ -25,7 +25,7 @@ glabel func_800B9244
/* 0B9EA0 800B92A0 8E060004 */ lw $a2, 4($s0)
/* 0B9EA4 800B92A4 3C04803B */ lui $a0, %hi(D_803AFC28) # $a0, 0x803b
/* 0B9EA8 800B92A8 2484FC28 */ addiu $a0, %lo(D_803AFC28) # addiu $a0, $a0, -0x3d8
/* 0B9EAC 800B92AC 0C02E3FF */ jal func_800B8FFC
/* 0B9EAC 800B92AC 0C02E3FF */ jal soundAlloc
/* 0B9EB0 800B92B0 8E050008 */ lw $a1, 8($s0)
/* 0B9EB4 800B92B4 3C04803B */ lui $a0, %hi(D_803AFFEC) # $a0, 0x803b
/* 0B9EB8 800B92B8 2484FFEC */ addiu $a0, %lo(D_803AFFEC) # addiu $a0, $a0, -0x14
+3 -3
View File
@@ -7,7 +7,7 @@ glabel func_800B9300
/* 0B9F14 800B9314 8C8E0000 */ lw $t6, ($a0)
/* 0B9F18 800B9318 AFBF001C */ sw $ra, 0x1c($sp)
/* 0B9F1C 800B931C AC8E0004 */ sw $t6, 4($a0)
/* 0B9F20 800B9320 0C02E3FF */ jal func_800B8FFC
/* 0B9F20 800B9320 0C02E3FF */ jal soundAlloc
/* 0B9F24 800B9324 8E050000 */ lw $a1, ($s0)
/* 0B9F28 800B9328 3C04803B */ lui $a0, %hi(D_803AFDE0) # $a0, 0x803b
/* 0B9F2C 800B932C 2484FDE0 */ addiu $a0, %lo(D_803AFDE0) # addiu $a0, $a0, -0x220
@@ -16,7 +16,7 @@ glabel func_800B9300
/* 0B9F38 800B9338 8E060000 */ lw $a2, ($s0)
/* 0B9F3C 800B933C 3C04803B */ lui $a0, %hi(D_803AFC38) # $a0, 0x803b
/* 0B9F40 800B9340 2484FC38 */ addiu $a0, %lo(D_803AFC38) # addiu $a0, $a0, -0x3c8
/* 0B9F44 800B9344 0C02E3FF */ jal func_800B8FFC
/* 0B9F44 800B9344 0C02E3FF */ jal soundAlloc
/* 0B9F48 800B9348 8E050004 */ lw $a1, 4($s0)
/* 0B9F4C 800B934C 3C04803B */ lui $a0, %hi(D_803AFFB0) # $a0, 0x803b
/* 0B9F50 800B9350 2484FFB0 */ addiu $a0, %lo(D_803AFFB0) # addiu $a0, $a0, -0x50
@@ -25,7 +25,7 @@ glabel func_800B9300
/* 0B9F5C 800B935C 8E060004 */ lw $a2, 4($s0)
/* 0B9F60 800B9360 3C04803B */ lui $a0, %hi(D_803AFC38) # $a0, 0x803b
/* 0B9F64 800B9364 2484FC38 */ addiu $a0, %lo(D_803AFC38) # addiu $a0, $a0, -0x3c8
/* 0B9F68 800B9368 0C02E3FF */ jal func_800B8FFC
/* 0B9F68 800B9368 0C02E3FF */ jal soundAlloc
/* 0B9F6C 800B936C 8E050008 */ lw $a1, 8($s0)
/* 0B9F70 800B9370 3C04803B */ lui $a0, %hi(D_803B0180) # $a0, 0x803b
/* 0B9F74 800B9374 24840180 */ addiu $a0, %lo(D_803B0180) # addiu $a0, $a0, 0x180
+9 -9
View File
@@ -68,8 +68,8 @@ glabel func_800B93BC
/* 0BA0A4 800B94A4 AFB90020 */ sw $t9, 0x20($sp)
/* 0BA0A8 800B94A8 24040004 */ li $a0, 4
/* 0BA0AC 800B94AC 1489001A */ bne $a0, $t1, .L800B9518
/* 0BA0B0 800B94B0 3C05803B */ lui $a1, %hi(D_803B70B0) # $a1, 0x803b
/* 0BA0B4 800B94B4 8CA570B0 */ lw $a1, %lo(D_803B70B0)($a1)
/* 0BA0B0 800B94B0 3C05803B */ lui $a1, %hi(gMaxSimultaneousNotes) # $a1, 0x803b
/* 0BA0B4 800B94B4 8CA570B0 */ lw $a1, %lo(gMaxSimultaneousNotes)($a1)
/* 0BA0B8 800B94B8 00001825 */ move $v1, $zero
/* 0BA0BC 800B94BC 3C02803B */ lui $v0, %hi(D_803B1508) # $v0, 0x803b
/* 0BA0C0 800B94C0 18A0000D */ blez $a1, .L800B94F8
@@ -99,8 +99,8 @@ glabel func_800B93BC
/* 0BA114 800B9514 A04E0000 */ sb $t6, ($v0)
.L800B9518:
/* 0BA118 800B9518 148A001E */ bne $a0, $t2, .L800B9594
/* 0BA11C 800B951C 3C05803B */ lui $a1, %hi(D_803B70B0) # $a1, 0x803b
/* 0BA120 800B9520 8CA570B0 */ lw $a1, %lo(D_803B70B0)($a1)
/* 0BA11C 800B951C 3C05803B */ lui $a1, %hi(gMaxSimultaneousNotes) # $a1, 0x803b
/* 0BA120 800B9520 8CA570B0 */ lw $a1, %lo(gMaxSimultaneousNotes)($a1)
/* 0BA124 800B9524 00001825 */ move $v1, $zero
/* 0BA128 800B9528 3C02803B */ lui $v0, %hi(D_803B1508) # $v0, 0x803b
/* 0BA12C 800B952C 18A0000E */ blez $a1, .L800B9568
@@ -224,8 +224,8 @@ glabel func_800B93BC
/* 0BA2C0 800B96C0 558F0032 */ bnel $t4, $t7, .L800B978C
/* 0BA2C4 800B96C4 8CE20000 */ lw $v0, ($a3)
/* 0BA2C8 800B96C8 150B0017 */ bne $t0, $t3, .L800B9728
/* 0BA2CC 800B96CC 3C05803B */ lui $a1, %hi(D_803B70B0) # $a1, 0x803b
/* 0BA2D0 800B96D0 8CA570B0 */ lw $a1, %lo(D_803B70B0)($a1)
/* 0BA2CC 800B96CC 3C05803B */ lui $a1, %hi(gMaxSimultaneousNotes) # $a1, 0x803b
/* 0BA2D0 800B96D0 8CA570B0 */ lw $a1, %lo(gMaxSimultaneousNotes)($a1)
/* 0BA2D4 800B96D4 00001825 */ move $v1, $zero
/* 0BA2D8 800B96D8 3C02803B */ lui $v0, %hi(D_803B1508) # $v0, 0x803b
/* 0BA2DC 800B96DC 18A0000E */ blez $a1, .L800B9718
@@ -252,8 +252,8 @@ glabel func_800B93BC
/* 0BA324 800B9724 ACE00000 */ sw $zero, ($a3)
.L800B9728:
/* 0BA328 800B9728 15090017 */ bne $t0, $t1, .L800B9788
/* 0BA32C 800B972C 3C05803B */ lui $a1, %hi(D_803B70B0) # $a1, 0x803b
/* 0BA330 800B9730 8CA570B0 */ lw $a1, %lo(D_803B70B0)($a1)
/* 0BA32C 800B972C 3C05803B */ lui $a1, %hi(gMaxSimultaneousNotes) # $a1, 0x803b
/* 0BA330 800B9730 8CA570B0 */ lw $a1, %lo(gMaxSimultaneousNotes)($a1)
/* 0BA334 800B9734 00001825 */ move $v1, $zero
/* 0BA338 800B9738 3C02803B */ lui $v0, %hi(D_803B1508) # $v0, 0x803b
/* 0BA33C 800B973C 18A0000E */ blez $a1, .L800B9778
@@ -445,7 +445,7 @@ glabel func_800B93BC
/* 0BA5CC 800B99CC 01CF0019 */ multu $t6, $t7
/* 0BA5D0 800B99D0 AFA7005C */ sw $a3, 0x5c($sp)
/* 0BA5D4 800B99D4 00002812 */ mflo $a1
/* 0BA5D8 800B99D8 0C02E3FF */ jal func_800B8FFC
/* 0BA5D8 800B99D8 0C02E3FF */ jal soundAlloc
/* 0BA5DC 800B99DC 00000000 */ nop
/* 0BA5E0 800B99E0 8E180000 */ lw $t8, ($s0)
/* 0BA5E4 800B99E4 240D000C */ li $t5, 12
+6 -6
View File
@@ -39,7 +39,7 @@ glabel L800BA094
/* 0BAC94 800BA094 3C08803B */ lui $t0, %hi(D_803B0504) # $t0, 0x803b
/* 0BAC98 800BA098 25080504 */ addiu $t0, %lo(D_803B0504) # addiu $t0, $t0, 0x504
/* 0BAC9C 800BA09C 8D020000 */ lw $v0, ($t0)
/* 0BACA0 800BA0A0 3C06803B */ lui $a2, %hi(D_803B70B0) # $a2, 0x803b
/* 0BACA0 800BA0A0 3C06803B */ lui $a2, %hi(gMaxSimultaneousNotes) # $a2, 0x803b
/* 0BACA4 800BA0A4 10400005 */ beqz $v0, .L800BA0BC
/* 0BACA8 800BA0A8 2449FFFF */ addiu $t1, $v0, -1
/* 0BACAC 800BA0AC 0C02E7EE */ jal func_800B9FB8
@@ -47,14 +47,14 @@ glabel L800BA094
/* 0BACB4 800BA0B4 1000005A */ b .L800BA220
/* 0BACB8 800BA0B8 924E0000 */ lbu $t6, ($s2)
.L800BA0BC:
/* 0BACBC 800BA0BC 8CC670B0 */ lw $a2, %lo(D_803B70B0)($a2)
/* 0BACBC 800BA0BC 8CC670B0 */ lw $a2, %lo(gMaxSimultaneousNotes)($a2)
/* 0BACC0 800BA0C0 00002025 */ move $a0, $zero
/* 0BACC4 800BA0C4 00001825 */ move $v1, $zero
/* 0BACC8 800BA0C8 18C0001A */ blez $a2, .L800BA134
/* 0BACCC 800BA0CC 3C07803B */ lui $a3, %hi(D_803B7088) # $a3, 0x803b
/* 0BACCC 800BA0CC 3C07803B */ lui $a3, %hi(gAudioBufferParameters) # $a3, 0x803b
/* 0BACD0 800BA0D0 3C05803B */ lui $a1, %hi(D_803B1508) # $a1, 0x803b
/* 0BACD4 800BA0D4 24A51508 */ addiu $a1, %lo(D_803B1508) # addiu $a1, $a1, 0x1508
/* 0BACD8 800BA0D8 24E77088 */ addiu $a3, %lo(D_803B7088) # addiu $a3, $a3, 0x7088
/* 0BACD8 800BA0D8 24E77088 */ addiu $a3, %lo(gAudioBufferParameters) # addiu $a3, $a3, 0x7088
.L800BA0DC:
/* 0BACDC 800BA0DC 8CAA0000 */ lw $t2, ($a1)
/* 0BACE0 800BA0E0 24840001 */ addiu $a0, $a0, 1
@@ -67,14 +67,14 @@ glabel L800BA094
/* 0BACFC 800BA0FC 51A0000B */ beql $t5, $zero, .L800BA12C
/* 0BAD00 800BA100 0086082A */ slt $at, $a0, $a2
/* 0BAD04 800BA104 C4E40018 */ lwc1 $f4, 0x18($a3)
/* 0BAD08 800BA108 3C06803B */ lui $a2, %hi(D_803B70B0) # $a2, 0x803b
/* 0BAD08 800BA108 3C06803B */ lui $a2, %hi(gMaxSimultaneousNotes) # $a2, 0x803b
/* 0BAD0C 800BA10C E4440068 */ swc1 $f4, 0x68($v0)
/* 0BAD10 800BA110 8CAE0000 */ lw $t6, ($a1)
/* 0BAD14 800BA114 01C31021 */ addu $v0, $t6, $v1
/* 0BAD18 800BA118 904F0058 */ lbu $t7, 0x58($v0)
/* 0BAD1C 800BA11C 35F80010 */ ori $t8, $t7, 0x10
/* 0BAD20 800BA120 A0580058 */ sb $t8, 0x58($v0)
/* 0BAD24 800BA124 8CC670B0 */ lw $a2, %lo(D_803B70B0)($a2)
/* 0BAD24 800BA124 8CC670B0 */ lw $a2, %lo(gMaxSimultaneousNotes)($a2)
/* 0BAD28 800BA128 0086082A */ slt $at, $a0, $a2
.L800BA12C:
/* 0BAD2C 800BA12C 1420FFEB */ bnez $at, .L800BA0DC
+25 -25
View File
@@ -8,7 +8,7 @@ glabel func_800BA250
/* 0BAE68 800BA268 01EE7821 */ addu $t7, $t7, $t6
/* 0BAE6C 800BA26C 000F78C0 */ sll $t7, $t7, 3
/* 0BAE70 800BA270 2718A4D8 */ addiu $t8, %lo(D_800EA4D8) # addiu $t8, $t8, -0x5b28
/* 0BAE74 800BA274 3C01803B */ lui $at, %hi(D_803B6E58) # $at, 0x803b
/* 0BAE74 800BA274 3C01803B */ lui $at, %hi(gSampleDmaNumListItems) # $at, 0x803b
/* 0BAE78 800BA278 AFBF003C */ sw $ra, 0x3c($sp)
/* 0BAE7C 800BA27C AFBE0038 */ sw $fp, 0x38($sp)
/* 0BAE80 800BA280 AFB70034 */ sw $s7, 0x34($sp)
@@ -19,10 +19,10 @@ glabel func_800BA250
/* 0BAE94 800BA294 AFB1001C */ sw $s1, 0x1c($sp)
/* 0BAE98 800BA298 AFB00018 */ sw $s0, 0x18($sp)
/* 0BAE9C 800BA29C 01F8B021 */ addu $s6, $t7, $t8
/* 0BAEA0 800BA2A0 AC206E58 */ sw $zero, %lo(D_803B6E58)($at)
/* 0BAEA0 800BA2A0 AC206E58 */ sw $zero, %lo(gSampleDmaNumListItems)($at)
/* 0BAEA4 800BA2A4 8ED90000 */ lw $t9, ($s6)
/* 0BAEA8 800BA2A8 3C14803B */ lui $s4, %hi(D_803B7088) # $s4, 0x803b
/* 0BAEAC 800BA2AC 26947088 */ addiu $s4, %lo(D_803B7088) # addiu $s4, $s4, 0x7088
/* 0BAEA8 800BA2A8 3C14803B */ lui $s4, %hi(gAudioBufferParameters) # $s4, 0x803b
/* 0BAEAC 800BA2AC 26947088 */ addiu $s4, %lo(gAudioBufferParameters) # addiu $s4, $s4, 0x7088
/* 0BAEB0 800BA2B0 A6990002 */ sh $t9, 2($s4)
/* 0BAEB4 800BA2B4 0C0343E0 */ jal osAiSetFrequency
/* 0BAEB8 800BA2B8 3324FFFF */ andi $a0, $t9, 0xffff
@@ -30,8 +30,8 @@ glabel func_800BA250
/* 0BAEC0 800BA2C0 3C0D803B */ lui $t5, %hi(D_803B717C) # $t5, 0x803b
/* 0BAEC4 800BA2C4 8DAD717C */ lw $t5, %lo(D_803B717C)($t5)
/* 0BAEC8 800BA2C8 96870002 */ lhu $a3, 2($s4)
/* 0BAECC 800BA2CC 3C0C803B */ lui $t4, %hi(D_803B70B0) # $t4, 0x803b
/* 0BAED0 800BA2D0 258C70B0 */ addiu $t4, %lo(D_803B70B0) # addiu $t4, $t4, 0x70b0
/* 0BAECC 800BA2CC 3C0C803B */ lui $t4, %hi(gMaxSimultaneousNotes) # $t4, 0x803b
/* 0BAED0 800BA2D0 258C70B0 */ addiu $t4, %lo(gMaxSimultaneousNotes) # addiu $t4, $t4, 0x70b0
/* 0BAED4 800BA2D4 00ED001A */ div $zero, $a3, $t5
/* 0BAED8 800BA2D8 00007012 */ mflo $t6
/* 0BAEDC 800BA2DC 25CF000F */ addiu $t7, $t6, 0xf
@@ -227,28 +227,28 @@ glabel func_800BA250
/* 0BB1B8 800BA5B8 AC8D0008 */ sw $t5, 8($a0)
/* 0BB1BC 800BA5BC 0C02E378 */ jal func_800B8DE0
/* 0BB1C0 800BA5C0 00000000 */ nop
/* 0BB1C4 800BA5C4 3C05803B */ lui $a1, %hi(D_803B70B0) # $a1, 0x803b
/* 0BB1C8 800BA5C8 8CA570B0 */ lw $a1, %lo(D_803B70B0)($a1)
/* 0BB1CC 800BA5CC 3C13803B */ lui $s3, %hi(D_803AFBE8) # $s3, 0x803b
/* 0BB1D0 800BA5D0 2673FBE8 */ addiu $s3, %lo(D_803AFBE8) # addiu $s3, $s3, -0x418
/* 0BB1C4 800BA5C4 3C05803B */ lui $a1, %hi(gMaxSimultaneousNotes) # $a1, 0x803b
/* 0BB1C8 800BA5C8 8CA570B0 */ lw $a1, %lo(gMaxSimultaneousNotes)($a1)
/* 0BB1CC 800BA5CC 3C13803B */ lui $s3, %hi(gNotesAndBuffersPool) # $s3, 0x803b
/* 0BB1D0 800BA5D0 2673FBE8 */ addiu $s3, %lo(gNotesAndBuffersPool) # addiu $s3, $s3, -0x418
/* 0BB1D4 800BA5D4 00057880 */ sll $t7, $a1, 2
/* 0BB1D8 800BA5D8 01E57823 */ subu $t7, $t7, $a1
/* 0BB1DC 800BA5DC 000F2980 */ sll $a1, $t7, 6
/* 0BB1E0 800BA5E0 0C02E3FF */ jal func_800B8FFC
/* 0BB1E0 800BA5E0 0C02E3FF */ jal soundAlloc
/* 0BB1E4 800BA5E4 02602025 */ move $a0, $s3
/* 0BB1E8 800BA5E8 3C01803B */ lui $at, %hi(D_803B1508) # $at, 0x803b
/* 0BB1EC 800BA5EC 0C02F74D */ jal func_800BDD34
/* 0BB1F0 800BA5F0 AC221508 */ sw $v0, %lo(D_803B1508)($at)
/* 0BB1F4 800BA5F4 0C02F4DA */ jal func_800BD368
/* 0BB1F8 800BA5F8 00000000 */ nop
/* 0BB1FC 800BA5FC 3C18803B */ lui $t8, %hi(D_803B70B0) # $t8, 0x803b
/* 0BB200 800BA600 8F1870B0 */ lw $t8, %lo(D_803B70B0)($t8)
/* 0BB1FC 800BA5FC 3C18803B */ lui $t8, %hi(gMaxSimultaneousNotes) # $t8, 0x803b
/* 0BB200 800BA600 8F1870B0 */ lw $t8, %lo(gMaxSimultaneousNotes)($t8)
/* 0BB204 800BA604 868E000C */ lh $t6, 0xc($s4)
/* 0BB208 800BA608 02602025 */ move $a0, $s3
/* 0BB20C 800BA60C 01D80019 */ multu $t6, $t8
/* 0BB210 800BA610 00002812 */ mflo $a1
/* 0BB214 800BA614 0005C900 */ sll $t9, $a1, 4
/* 0BB218 800BA618 0C02E3FF */ jal func_800B8FFC
/* 0BB218 800BA618 0C02E3FF */ jal soundAlloc
/* 0BB21C 800BA61C 03202825 */ move $a1, $t9
/* 0BB220 800BA620 3C01803B */ lui $at, %hi(gNoteSubsEu) # $at, 0x803b
/* 0BB224 800BA624 3C10803B */ lui $s0, %hi(D_803B70C8) # $s0, 0x803b
@@ -260,7 +260,7 @@ glabel func_800BA250
/* 0BB238 800BA638 8E450000 */ lw $a1, ($s2)
/* 0BB23C 800BA63C 02602025 */ move $a0, $s3
/* 0BB240 800BA640 000568C0 */ sll $t5, $a1, 3
/* 0BB244 800BA644 0C02E3FF */ jal func_800B8FFC
/* 0BB244 800BA644 0C02E3FF */ jal soundAlloc
/* 0BB248 800BA648 01A02825 */ move $a1, $t5
/* 0BB24C 800BA64C 26100004 */ addiu $s0, $s0, 4
/* 0BB250 800BA650 1611FFF9 */ bne $s0, $s1, .L800BA638
@@ -299,13 +299,13 @@ glabel func_800BA250
/* 0BB2CC 800BA6CC 94580002 */ lhu $t8, 2($v0)
/* 0BB2D0 800BA6D0 A25E0001 */ sb $fp, 1($s2)
/* 0BB2D4 800BA6D4 03202825 */ move $a1, $t9
/* 0BB2D8 800BA6D8 0C02E3FF */ jal func_800B8FFC
/* 0BB2D8 800BA6D8 0C02E3FF */ jal soundAlloc
/* 0BB2DC 800BA6DC A6580008 */ sh $t8, 8($s2)
/* 0BB2E0 800BA6E0 96450006 */ lhu $a1, 6($s2)
/* 0BB2E4 800BA6E4 AE420018 */ sw $v0, 0x18($s2)
/* 0BB2E8 800BA6E8 02602025 */ move $a0, $s3
/* 0BB2EC 800BA6EC 00056840 */ sll $t5, $a1, 1
/* 0BB2F0 800BA6F0 0C02E3FF */ jal func_800B8FFC
/* 0BB2F0 800BA6F0 0C02E3FF */ jal soundAlloc
/* 0BB2F4 800BA6F4 01A02825 */ move $a1, $t5
/* 0BB2F8 800BA6F8 92430004 */ lbu $v1, 4($s2)
/* 0BB2FC 800BA6FC 964F0006 */ lhu $t7, 6($s2)
@@ -337,19 +337,19 @@ glabel func_800BA250
/* 0BB35C 800BA75C A64D000A */ sh $t5, 0xa($s2)
/* 0BB360 800BA760 02602025 */ move $a0, $s3
/* 0BB364 800BA764 24050020 */ li $a1, 32
/* 0BB368 800BA768 0C02E3FF */ jal func_800B8FFC
/* 0BB368 800BA768 0C02E3FF */ jal soundAlloc
/* 0BB36C 800BA76C 00008825 */ move $s1, $zero
/* 0BB370 800BA770 AE420020 */ sw $v0, 0x20($s2)
/* 0BB374 800BA774 02602025 */ move $a0, $s3
/* 0BB378 800BA778 0C02E3FF */ jal func_800B8FFC
/* 0BB378 800BA778 0C02E3FF */ jal soundAlloc
/* 0BB37C 800BA77C 24050020 */ li $a1, 32
/* 0BB380 800BA780 AE420024 */ sw $v0, 0x24($s2)
/* 0BB384 800BA784 02602025 */ move $a0, $s3
/* 0BB388 800BA788 0C02E3FF */ jal func_800B8FFC
/* 0BB388 800BA788 0C02E3FF */ jal soundAlloc
/* 0BB38C 800BA78C 24050020 */ li $a1, 32
/* 0BB390 800BA790 AE420028 */ sw $v0, 0x28($s2)
/* 0BB394 800BA794 02602025 */ move $a0, $s3
/* 0BB398 800BA798 0C02E3FF */ jal func_800B8FFC
/* 0BB398 800BA798 0C02E3FF */ jal soundAlloc
/* 0BB39C 800BA79C 24050020 */ li $a1, 32
/* 0BB3A0 800BA7A0 868F000C */ lh $t7, 0xc($s4)
/* 0BB3A4 800BA7A4 AE42002C */ sw $v0, 0x2c($s2)
@@ -358,13 +358,13 @@ glabel func_800BA250
/* 0BB3B0 800BA7B0 02408025 */ move $s0, $s2
/* 0BB3B4 800BA7B4 02602025 */ move $a0, $s3
.L800BA7B8:
/* 0BB3B8 800BA7B8 0C02E3FF */ jal func_800B8FFC
/* 0BB3B8 800BA7B8 0C02E3FF */ jal soundAlloc
/* 0BB3BC 800BA7BC 24050300 */ li $a1, 768
/* 0BB3C0 800BA7C0 244E0180 */ addiu $t6, $v0, 0x180
/* 0BB3C4 800BA7C4 AE020034 */ sw $v0, 0x34($s0)
/* 0BB3C8 800BA7C8 AE0E0038 */ sw $t6, 0x38($s0)
/* 0BB3CC 800BA7CC 02602025 */ move $a0, $s3
/* 0BB3D0 800BA7D0 0C02E3FF */ jal func_800B8FFC
/* 0BB3D0 800BA7D0 0C02E3FF */ jal soundAlloc
/* 0BB3D4 800BA7D4 24050300 */ li $a1, 768
/* 0BB3D8 800BA7D8 24580180 */ addiu $t8, $v0, 0x180
/* 0BB3DC 800BA7DC AE020098 */ sw $v0, 0x98($s0)
@@ -384,9 +384,9 @@ glabel func_800BA250
/* 0BB40C 800BA80C 5420FFA5 */ bnel $at, $zero, .L800BA6A4
/* 0BB410 800BA810 8ED80008 */ lw $t8, 8($s6)
.L800BA814:
/* 0BB414 800BA814 3C04803B */ lui $a0, %hi(D_803B70B0) # $a0, 0x803b
/* 0BB414 800BA814 3C04803B */ lui $a0, %hi(gMaxSimultaneousNotes) # $a0, 0x803b
/* 0BB418 800BA818 0C02EC0C */ jal func_800BB030
/* 0BB41C 800BA81C 8C8470B0 */ lw $a0, %lo(D_803B70B0)($a0)
/* 0BB41C 800BA81C 8C8470B0 */ lw $a0, %lo(gMaxSimultaneousNotes)($a0)
/* 0BB420 800BA820 0C033624 */ jal osWritebackDCacheAll
/* 0BB424 800BA824 00000000 */ nop
/* 0BB428 800BA828 8FBF003C */ lw $ra, 0x3c($sp)
+2 -2
View File
@@ -81,7 +81,7 @@ glabel func_800BA858
.L800BA968:
/* 0BB568 800BA968 AFA50034 */ sw $a1, 0x34($sp)
/* 0BB56C 800BA96C AFA60038 */ sw $a2, 0x38($sp)
/* 0BB570 800BA970 0C02E3FF */ jal func_800B8FFC
/* 0BB570 800BA970 0C02E3FF */ jal soundAlloc
/* 0BB574 800BA974 AFA70030 */ sw $a3, 0x30($sp)
/* 0BB578 800BA978 8FA60038 */ lw $a2, 0x38($sp)
/* 0BB57C 800BA97C 3C0D803B */ lui $t5, %hi(D_803B01B8) # $t5, 0x803b
@@ -96,7 +96,7 @@ glabel func_800BA858
/* 0BB5A0 800BA9A0 00E02025 */ move $a0, $a3
/* 0BB5A4 800BA9A4 00402825 */ move $a1, $v0
/* 0BB5A8 800BA9A8 8FA60034 */ lw $a2, 0x34($sp)
/* 0BB5AC 800BA9AC 0C02EAA0 */ jal func_800BAA80
/* 0BB5AC 800BA9AC 0C02EAA0 */ jal audio_dma_copy_immediate
/* 0BB5B0 800BA9B0 AFA30020 */ sw $v1, 0x20($sp)
/* 0BB5B4 800BA9B4 8FA30020 */ lw $v1, 0x20($sp)
/* 0BB5B8 800BA9B8 8FAE0034 */ lw $t6, 0x34($sp)
@@ -1,4 +1,4 @@
glabel func_800B8FFC
glabel soundAlloc
/* 0B9BFC 800B8FFC 8C860004 */ lw $a2, 4($a0)
/* 0B9C00 800B9000 8C8F0000 */ lw $t7, ($a0)
/* 0B9C04 800B9004 8C980008 */ lw $t8, 8($a0)
+23 -23
View File
@@ -118,17 +118,17 @@ glabel audio_init
/* 0BCE84 800BC284 24846720 */ addiu $a0, %lo(D_803B6720) # addiu $a0, $a0, 0x6720
/* 0BCE88 800BC288 0C033358 */ jal osCreateMesgQueue
/* 0BCE8C 800BC28C 24060001 */ li $a2, 1
/* 0BCE90 800BC290 3C04803B */ lui $a0, %hi(D_803B6008) # $a0, 0x803b
/* 0BCE94 800BC294 3C05803B */ lui $a1, %hi(D_803B6020) # $a1, 0x803b
/* 0BCE98 800BC298 24A56020 */ addiu $a1, %lo(D_803B6020) # addiu $a1, $a1, 0x6020
/* 0BCE9C 800BC29C 24846008 */ addiu $a0, %lo(D_803B6008) # addiu $a0, $a0, 0x6008
/* 0BCE90 800BC290 3C04803B */ lui $a0, %hi(gCurrAudioFrameDmaQueue) # $a0, 0x803b
/* 0BCE94 800BC294 3C05803B */ lui $a1, %hi(gCurrAudioFrameDmaMesgBufs) # $a1, 0x803b
/* 0BCE98 800BC298 24A56020 */ addiu $a1, %lo(gCurrAudioFrameDmaMesgBufs) # addiu $a1, $a1, 0x6020
/* 0BCE9C 800BC29C 24846008 */ addiu $a0, %lo(gCurrAudioFrameDmaQueue) # addiu $a0, $a0, 0x6008
/* 0BCEA0 800BC2A0 0C033358 */ jal osCreateMesgQueue
/* 0BCEA4 800BC2A4 24060040 */ li $a2, 64
/* 0BCEA8 800BC2A8 3C01803B */ lui $at, %hi(D_803B70BC) # $at, 0x803b
/* 0BCEAC 800BC2AC AC2070BC */ sw $zero, %lo(D_803B70BC)($at)
/* 0BCEB0 800BC2B0 3C01803B */ lui $at, %hi(D_803B6E58) # $at, 0x803b
/* 0BCEA8 800BC2A8 3C01803B */ lui $at, %hi(gCurrAudioFrameDmaCount) # $at, 0x803b
/* 0BCEAC 800BC2AC AC2070BC */ sw $zero, %lo(gCurrAudioFrameDmaCount)($at)
/* 0BCEB0 800BC2B0 3C01803B */ lui $at, %hi(gSampleDmaNumListItems) # $at, 0x803b
/* 0BCEB4 800BC2B4 3C04800F */ lui $a0, %hi(D_800EA5D4) # $a0, 0x800f
/* 0BCEB8 800BC2B8 AC206E58 */ sw $zero, %lo(D_803B6E58)($at)
/* 0BCEB8 800BC2B8 AC206E58 */ sw $zero, %lo(gSampleDmaNumListItems)($at)
/* 0BCEBC 800BC2BC 0C02E43C */ jal func_800B90F0
/* 0BCEC0 800BC2C0 8C84A5D4 */ lw $a0, %lo(D_800EA5D4)($a0)
/* 0BCEC4 800BC2C4 3C06803B */ lui $a2, %hi(D_803B7180) # $a2, 0x803b
@@ -141,7 +141,7 @@ glabel audio_init
/* 0BCEE0 800BC2E0 02802025 */ move $a0, $s4
.L800BC2E4:
/* 0BCEE4 800BC2E4 24050A00 */ li $a1, 2560
/* 0BCEE8 800BC2E8 0C02E3FF */ jal func_800B8FFC
/* 0BCEE8 800BC2E8 0C02E3FF */ jal soundAlloc
/* 0BCEEC 800BC2EC AFA6003C */ sw $a2, 0x3c($sp)
/* 0BCEF0 800BC2F0 8FA6003C */ lw $a2, 0x3c($sp)
/* 0BCEF4 800BC2F4 00001825 */ move $v1, $zero
@@ -180,7 +180,7 @@ glabel audio_init
/* 0BCF74 800BC374 AE350000 */ sw $s5, ($s1)
/* 0BCF78 800BC378 02A02825 */ move $a1, $s5
/* 0BCF7C 800BC37C 02402025 */ move $a0, $s2
/* 0BCF80 800BC380 0C02EAA0 */ jal func_800BAA80
/* 0BCF80 800BC380 0C02EAA0 */ jal audio_dma_copy_immediate
/* 0BCF84 800BC384 24060010 */ li $a2, 16
/* 0BCF88 800BC388 8E280000 */ lw $t0, ($s1)
/* 0BCF8C 800BC38C 3C02803B */ lui $v0, %hi(D_803B707C) # $v0, 0x803b
@@ -194,12 +194,12 @@ glabel audio_init
/* 0BCFAC 800BC3AC 26100013 */ addiu $s0, $s0, 0x13
/* 0BCFB0 800BC3B0 02012824 */ and $a1, $s0, $at
/* 0BCFB4 800BC3B4 00A08025 */ move $s0, $a1
/* 0BCFB8 800BC3B8 0C02E3FF */ jal func_800B8FFC
/* 0BCFB8 800BC3B8 0C02E3FF */ jal soundAlloc
/* 0BCFBC 800BC3BC A4490000 */ sh $t1, ($v0)
/* 0BCFC0 800BC3C0 AE220000 */ sw $v0, ($s1)
/* 0BCFC4 800BC3C4 02402025 */ move $a0, $s2
/* 0BCFC8 800BC3C8 00402825 */ move $a1, $v0
/* 0BCFCC 800BC3CC 0C02EAA0 */ jal func_800BAA80
/* 0BCFCC 800BC3CC 0C02EAA0 */ jal audio_dma_copy_immediate
/* 0BCFD0 800BC3D0 02003025 */ move $a2, $s0
/* 0BCFD4 800BC3D4 8E240000 */ lw $a0, ($s1)
/* 0BCFD8 800BC3D8 0C02ED0F */ jal func_800BB43C
@@ -211,7 +211,7 @@ glabel audio_init
/* 0BCFF0 800BC3F0 AE550000 */ sw $s5, ($s2)
/* 0BCFF4 800BC3F4 02202025 */ move $a0, $s1
/* 0BCFF8 800BC3F8 02A02825 */ move $a1, $s5
/* 0BCFFC 800BC3FC 0C02EAA0 */ jal func_800BAA80
/* 0BCFFC 800BC3FC 0C02EAA0 */ jal audio_dma_copy_immediate
/* 0BD000 800BC400 24060010 */ li $a2, 16
/* 0BD004 800BC404 8E4C0000 */ lw $t4, ($s2)
/* 0BD008 800BC408 2401FFF0 */ li $at, -16
@@ -220,12 +220,12 @@ glabel audio_init
/* 0BD014 800BC414 001380C0 */ sll $s0, $s3, 3
/* 0BD018 800BC418 26100013 */ addiu $s0, $s0, 0x13
/* 0BD01C 800BC41C 02012824 */ and $a1, $s0, $at
/* 0BD020 800BC420 0C02E3FF */ jal func_800B8FFC
/* 0BD020 800BC420 0C02E3FF */ jal soundAlloc
/* 0BD024 800BC424 00A08025 */ move $s0, $a1
/* 0BD028 800BC428 AE420000 */ sw $v0, ($s2)
/* 0BD02C 800BC42C 02202025 */ move $a0, $s1
/* 0BD030 800BC430 00402825 */ move $a1, $v0
/* 0BD034 800BC434 0C02EAA0 */ jal func_800BAA80
/* 0BD034 800BC434 0C02EAA0 */ jal audio_dma_copy_immediate
/* 0BD038 800BC438 02003025 */ move $a2, $s0
/* 0BD03C 800BC43C 8E440000 */ lw $a0, ($s2)
/* 0BD040 800BC440 0C02ED0F */ jal func_800BB43C
@@ -233,7 +233,7 @@ glabel audio_init
/* 0BD048 800BC448 00132880 */ sll $a1, $s3, 2
/* 0BD04C 800BC44C 00B32823 */ subu $a1, $a1, $s3
/* 0BD050 800BC450 00052880 */ sll $a1, $a1, 2
/* 0BD054 800BC454 0C02E3FF */ jal func_800B8FFC
/* 0BD054 800BC454 0C02E3FF */ jal soundAlloc
/* 0BD058 800BC458 02802025 */ move $a0, $s4
/* 0BD05C 800BC45C 3C07803B */ lui $a3, %hi(D_803B7080) # $a3, 0x803b
/* 0BD060 800BC460 24E77080 */ addiu $a3, %lo(D_803B7080) # addiu $a3, $a3, 0x7080
@@ -248,7 +248,7 @@ glabel audio_init
/* 0BD080 800BC480 24060010 */ li $a2, 16
/* 0BD084 800BC484 01D17821 */ addu $t7, $t6, $s1
/* 0BD088 800BC488 8DE40004 */ lw $a0, 4($t7)
/* 0BD08C 800BC48C 0C02EAA0 */ jal func_800BAA80
/* 0BD08C 800BC48C 0C02EAA0 */ jal audio_dma_copy_immediate
/* 0BD090 800BC490 AFA3008C */ sw $v1, 0x8c($sp)
/* 0BD094 800BC494 3C07803B */ lui $a3, %hi(D_803B7080) # $a3, 0x803b
/* 0BD098 800BC498 24E77080 */ addiu $a3, %lo(D_803B7080) # addiu $a3, $a3, 0x7080
@@ -273,7 +273,7 @@ glabel audio_init
/* 0BD0E0 800BC4E0 AE350000 */ sw $s5, ($s1)
/* 0BD0E4 800BC4E4 02402025 */ move $a0, $s2
/* 0BD0E8 800BC4E8 02A02825 */ move $a1, $s5
/* 0BD0EC 800BC4EC 0C02EAA0 */ jal func_800BAA80
/* 0BD0EC 800BC4EC 0C02EAA0 */ jal audio_dma_copy_immediate
/* 0BD0F0 800BC4F0 24060010 */ li $a2, 16
/* 0BD0F4 800BC4F4 8E2C0000 */ lw $t4, ($s1)
/* 0BD0F8 800BC4F8 2401FFF0 */ li $at, -16
@@ -283,18 +283,18 @@ glabel audio_init
/* 0BD108 800BC508 01A08025 */ move $s0, $t5
/* 0BD10C 800BC50C 26100013 */ addiu $s0, $s0, 0x13
/* 0BD110 800BC510 02012824 */ and $a1, $s0, $at
/* 0BD114 800BC514 0C02E3FF */ jal func_800B8FFC
/* 0BD114 800BC514 0C02E3FF */ jal soundAlloc
/* 0BD118 800BC518 00A08025 */ move $s0, $a1
/* 0BD11C 800BC51C AE220000 */ sw $v0, ($s1)
/* 0BD120 800BC520 02402025 */ move $a0, $s2
/* 0BD124 800BC524 00402825 */ move $a1, $v0
/* 0BD128 800BC528 0C02EAA0 */ jal func_800BAA80
/* 0BD128 800BC528 0C02EAA0 */ jal audio_dma_copy_immediate
/* 0BD12C 800BC52C 02003025 */ move $a2, $s0
/* 0BD130 800BC530 8E240000 */ lw $a0, ($s1)
/* 0BD134 800BC534 0C02ED0F */ jal func_800BB43C
/* 0BD138 800BC538 02402825 */ move $a1, $s2
/* 0BD13C 800BC53C 02802025 */ move $a0, $s4
/* 0BD140 800BC540 0C02E3FF */ jal func_800B8FFC
/* 0BD140 800BC540 0C02E3FF */ jal soundAlloc
/* 0BD144 800BC544 24050100 */ li $a1, 256
/* 0BD148 800BC548 3C03803B */ lui $v1, %hi(D_803B7078) # $v1, 0x803b
/* 0BD14C 800BC54C 24637078 */ addiu $v1, %lo(D_803B7078) # addiu $v1, $v1, 0x7078
@@ -302,12 +302,12 @@ glabel audio_init
/* 0BD154 800BC554 AC620000 */ sw $v0, ($v1)
/* 0BD158 800BC558 248490E0 */ addiu $a0, %lo(_instrument_setsSegmentRomStart) # addiu $a0, $a0, -0x6f20
/* 0BD15C 800BC55C 00402825 */ move $a1, $v0
/* 0BD160 800BC560 0C02EAA0 */ jal func_800BAA80
/* 0BD160 800BC560 0C02EAA0 */ jal audio_dma_copy_immediate
/* 0BD164 800BC564 24060100 */ li $a2, 256
/* 0BD168 800BC568 3C10800F */ lui $s0, %hi(D_800EA5D8) # $s0, 0x800f
/* 0BD16C 800BC56C 2610A5D8 */ addiu $s0, %lo(D_800EA5D8) # addiu $s0, $s0, -0x5a28
/* 0BD170 800BC570 8E050000 */ lw $a1, ($s0)
/* 0BD174 800BC574 0C02E3FF */ jal func_800B8FFC
/* 0BD174 800BC574 0C02E3FF */ jal soundAlloc
/* 0BD178 800BC578 02802025 */ move $a0, $s4
/* 0BD17C 800BC57C 3C04803B */ lui $a0, %hi(D_803B01B8) # $a0, 0x803b
/* 0BD180 800BC580 248401B8 */ addiu $a0, %lo(D_803B01B8) # addiu $a0, $a0, 0x1b8
@@ -1,31 +0,0 @@
glabel func_800BAA80
/* 0BB680 800BAA80 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 0BB684 800BAA84 AFA40028 */ sw $a0, 0x28($sp)
/* 0BB688 800BAA88 AFBF0024 */ sw $ra, 0x24($sp)
/* 0BB68C 800BAA8C AFA5002C */ sw $a1, 0x2c($sp)
/* 0BB690 800BAA90 00A02025 */ move $a0, $a1
/* 0BB694 800BAA94 AFA60030 */ sw $a2, 0x30($sp)
/* 0BB698 800BAA98 0C0336E0 */ jal osInvalDCache
/* 0BB69C 800BAA9C 00C02825 */ move $a1, $a2
/* 0BB6A0 800BAAA0 8FAE002C */ lw $t6, 0x2c($sp)
/* 0BB6A4 800BAAA4 8FAF0030 */ lw $t7, 0x30($sp)
/* 0BB6A8 800BAAA8 3C18803B */ lui $t8, %hi(D_803B6720) # $t8, 0x803b
/* 0BB6AC 800BAAAC 27186720 */ addiu $t8, %lo(D_803B6720) # addiu $t8, $t8, 0x6720
/* 0BB6B0 800BAAB0 3C04803B */ lui $a0, %hi(D_803B6740) # $a0, 0x803b
/* 0BB6B4 800BAAB4 24846740 */ addiu $a0, %lo(D_803B6740) # addiu $a0, $a0, 0x6740
/* 0BB6B8 800BAAB8 AFB80018 */ sw $t8, 0x18($sp)
/* 0BB6BC 800BAABC 24050001 */ li $a1, 1
/* 0BB6C0 800BAAC0 00003025 */ move $a2, $zero
/* 0BB6C4 800BAAC4 8FA70028 */ lw $a3, 0x28($sp)
/* 0BB6C8 800BAAC8 AFAE0010 */ sw $t6, 0x10($sp)
/* 0BB6CC 800BAACC 0C03370C */ jal osPiStartDma
/* 0BB6D0 800BAAD0 AFAF0014 */ sw $t7, 0x14($sp)
/* 0BB6D4 800BAAD4 3C04803B */ lui $a0, %hi(D_803B6720) # $a0, 0x803b
/* 0BB6D8 800BAAD8 24846720 */ addiu $a0, %lo(D_803B6720) # addiu $a0, $a0, 0x6720
/* 0BB6DC 800BAADC 00002825 */ move $a1, $zero
/* 0BB6E0 800BAAE0 0C0335D4 */ jal osRecvMesg
/* 0BB6E4 800BAAE4 24060001 */ li $a2, 1
/* 0BB6E8 800BAAE8 8FBF0024 */ lw $ra, 0x24($sp)
/* 0BB6EC 800BAAEC 27BD0028 */ addiu $sp, $sp, 0x28
/* 0BB6F0 800BAAF0 03E00008 */ jr $ra
/* 0BB6F4 800BAAF4 00000000 */ nop
@@ -1,25 +0,0 @@
glabel func_800BAAF8
/* 0BB6F8 800BAAF8 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 0BB6FC 800BAAFC AFA40028 */ sw $a0, 0x28($sp)
/* 0BB700 800BAB00 AFBF0024 */ sw $ra, 0x24($sp)
/* 0BB704 800BAB04 AFA5002C */ sw $a1, 0x2c($sp)
/* 0BB708 800BAB08 00A02025 */ move $a0, $a1
/* 0BB70C 800BAB0C AFA60030 */ sw $a2, 0x30($sp)
/* 0BB710 800BAB10 AFA70034 */ sw $a3, 0x34($sp)
/* 0BB714 800BAB14 0C0336E0 */ jal osInvalDCache
/* 0BB718 800BAB18 00C02825 */ move $a1, $a2
/* 0BB71C 800BAB1C 8FAE002C */ lw $t6, 0x2c($sp)
/* 0BB720 800BAB20 8FAF0030 */ lw $t7, 0x30($sp)
/* 0BB724 800BAB24 8FB80034 */ lw $t8, 0x34($sp)
/* 0BB728 800BAB28 8FA40038 */ lw $a0, 0x38($sp)
/* 0BB72C 800BAB2C 00002825 */ move $a1, $zero
/* 0BB730 800BAB30 00003025 */ move $a2, $zero
/* 0BB734 800BAB34 8FA70028 */ lw $a3, 0x28($sp)
/* 0BB738 800BAB38 AFAE0010 */ sw $t6, 0x10($sp)
/* 0BB73C 800BAB3C AFAF0014 */ sw $t7, 0x14($sp)
/* 0BB740 800BAB40 0C03370C */ jal osPiStartDma
/* 0BB744 800BAB44 AFB80018 */ sw $t8, 0x18($sp)
/* 0BB748 800BAB48 8FBF0024 */ lw $ra, 0x24($sp)
/* 0BB74C 800BAB4C 27BD0028 */ addiu $sp, $sp, 0x28
/* 0BB750 800BAB50 03E00008 */ jr $ra
/* 0BB754 800BAB54 00000000 */ nop
@@ -1,45 +0,0 @@
glabel func_800BAB58
/* 0BB758 800BAB58 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 0BB75C 800BAB5C AFBF002C */ sw $ra, 0x2c($sp)
/* 0BB760 800BAB60 AFB00028 */ sw $s0, 0x28($sp)
/* 0BB764 800BAB64 AFA40030 */ sw $a0, 0x30($sp)
/* 0BB768 800BAB68 AFA50034 */ sw $a1, 0x34($sp)
/* 0BB76C 800BAB6C AFA7003C */ sw $a3, 0x3c($sp)
/* 0BB770 800BAB70 8CC20000 */ lw $v0, ($a2)
/* 0BB774 800BAB74 28411000 */ slti $at, $v0, 0x1000
/* 0BB778 800BAB78 14200003 */ bnez $at, .L800BAB88
/* 0BB77C 800BAB7C 00408025 */ move $s0, $v0
/* 0BB780 800BAB80 10000001 */ b .L800BAB88
/* 0BB784 800BAB84 24101000 */ li $s0, 4096
.L800BAB88:
/* 0BB788 800BAB88 00507023 */ subu $t6, $v0, $s0
/* 0BB78C 800BAB8C ACCE0000 */ sw $t6, ($a2)
/* 0BB790 800BAB90 8FAF0034 */ lw $t7, 0x34($sp)
/* 0BB794 800BAB94 02002825 */ move $a1, $s0
/* 0BB798 800BAB98 0C0336E0 */ jal osInvalDCache
/* 0BB79C 800BAB9C 8DE40000 */ lw $a0, ($t7)
/* 0BB7A0 800BABA0 8FB80030 */ lw $t8, 0x30($sp)
/* 0BB7A4 800BABA4 8FB90034 */ lw $t9, 0x34($sp)
/* 0BB7A8 800BABA8 8FA9003C */ lw $t1, 0x3c($sp)
/* 0BB7AC 800BABAC 8F070000 */ lw $a3, ($t8)
/* 0BB7B0 800BABB0 8F280000 */ lw $t0, ($t9)
/* 0BB7B4 800BABB4 AFB00014 */ sw $s0, 0x14($sp)
/* 0BB7B8 800BABB8 8FA40040 */ lw $a0, 0x40($sp)
/* 0BB7BC 800BABBC 00002825 */ move $a1, $zero
/* 0BB7C0 800BABC0 00003025 */ move $a2, $zero
/* 0BB7C4 800BABC4 AFA90018 */ sw $t1, 0x18($sp)
/* 0BB7C8 800BABC8 0C03370C */ jal osPiStartDma
/* 0BB7CC 800BABCC AFA80010 */ sw $t0, 0x10($sp)
/* 0BB7D0 800BABD0 8FA30030 */ lw $v1, 0x30($sp)
/* 0BB7D4 800BABD4 8FA20034 */ lw $v0, 0x34($sp)
/* 0BB7D8 800BABD8 8C6A0000 */ lw $t2, ($v1)
/* 0BB7DC 800BABDC 01505821 */ addu $t3, $t2, $s0
/* 0BB7E0 800BABE0 AC6B0000 */ sw $t3, ($v1)
/* 0BB7E4 800BABE4 8C4C0000 */ lw $t4, ($v0)
/* 0BB7E8 800BABE8 01906821 */ addu $t5, $t4, $s0
/* 0BB7EC 800BABEC AC4D0000 */ sw $t5, ($v0)
/* 0BB7F0 800BABF0 8FBF002C */ lw $ra, 0x2c($sp)
/* 0BB7F4 800BABF4 8FB00028 */ lw $s0, 0x28($sp)
/* 0BB7F8 800BABF8 27BD0030 */ addiu $sp, $sp, 0x30
/* 0BB7FC 800BABFC 03E00008 */ jr $ra
/* 0BB800 800BAC00 00000000 */ nop
@@ -1,73 +0,0 @@
glabel func_800BAC04
/* 0BB804 800BAC04 3C05803B */ lui $a1, %hi(D_803B6E5C) # $a1, 0x803b
/* 0BB808 800BAC08 24A56E5C */ addiu $a1, %lo(D_803B6E5C) # addiu $a1, $a1, 0x6e5c
/* 0BB80C 800BAC0C 8CA30000 */ lw $v1, ($a1)
/* 0BB810 800BAC10 3C04803B */ lui $a0, %hi(D_803B6758) # $a0, 0x803b
/* 0BB814 800BAC14 24846758 */ addiu $a0, %lo(D_803B6758) # addiu $a0, $a0, 0x6758
/* 0BB818 800BAC18 10600018 */ beqz $v1, .L800BAC7C
/* 0BB81C 800BAC1C 00001025 */ move $v0, $zero
/* 0BB820 800BAC20 3C07803B */ lui $a3, %hi(D_803B6E68) # $a3, 0x803b
/* 0BB824 800BAC24 3C06803B */ lui $a2, %hi(D_803B706A) # $a2, 0x803b
/* 0BB828 800BAC28 24C6706A */ addiu $a2, %lo(D_803B706A) # addiu $a2, $a2, 0x706a
/* 0BB82C 800BAC2C 24E76E68 */ addiu $a3, %lo(D_803B6E68) # addiu $a3, $a3, 0x6e68
/* 0BB830 800BAC30 9083000E */ lbu $v1, 0xe($a0)
.L800BAC34:
/* 0BB834 800BAC34 1060000B */ beqz $v1, .L800BAC64
/* 0BB838 800BAC38 246EFFFF */ addiu $t6, $v1, -1
/* 0BB83C 800BAC3C 31CF00FF */ andi $t7, $t6, 0xff
/* 0BB840 800BAC40 15E00008 */ bnez $t7, .L800BAC64
/* 0BB844 800BAC44 A08E000E */ sb $t6, 0xe($a0)
/* 0BB848 800BAC48 90C30000 */ lbu $v1, ($a2)
/* 0BB84C 800BAC4C 90D80000 */ lbu $t8, ($a2)
/* 0BB850 800BAC50 00E3C821 */ addu $t9, $a3, $v1
/* 0BB854 800BAC54 A3220000 */ sb $v0, ($t9)
/* 0BB858 800BAC58 24680001 */ addiu $t0, $v1, 1
/* 0BB85C 800BAC5C A0C80000 */ sb $t0, ($a2)
/* 0BB860 800BAC60 A098000D */ sb $t8, 0xd($a0)
.L800BAC64:
/* 0BB864 800BAC64 8CA30000 */ lw $v1, ($a1)
/* 0BB868 800BAC68 24420001 */ addiu $v0, $v0, 1
/* 0BB86C 800BAC6C 24840010 */ addiu $a0, $a0, 0x10
/* 0BB870 800BAC70 0043082B */ sltu $at, $v0, $v1
/* 0BB874 800BAC74 5420FFEF */ bnel $at, $zero, .L800BAC34
/* 0BB878 800BAC78 9083000E */ lbu $v1, 0xe($a0)
.L800BAC7C:
/* 0BB87C 800BAC7C 3C05803B */ lui $a1, %hi(D_803B6E58) # $a1, 0x803b
/* 0BB880 800BAC80 24A56E58 */ addiu $a1, %lo(D_803B6E58) # addiu $a1, $a1, 0x6e58
/* 0BB884 800BAC84 8CA90000 */ lw $t1, ($a1)
/* 0BB888 800BAC88 00601025 */ move $v0, $v1
/* 0BB88C 800BAC8C 00035100 */ sll $t2, $v1, 4
/* 0BB890 800BAC90 0069082B */ sltu $at, $v1, $t1
/* 0BB894 800BAC94 1020001A */ beqz $at, .L800BAD00
/* 0BB898 800BAC98 3C0B803B */ lui $t3, %hi(D_803B6758) # $t3, 0x803b
/* 0BB89C 800BAC9C 256B6758 */ addiu $t3, %lo(D_803B6758) # addiu $t3, $t3, 0x6758
/* 0BB8A0 800BACA0 3C07803B */ lui $a3, %hi(D_803B6F68) # $a3, 0x803b
/* 0BB8A4 800BACA4 3C06803B */ lui $a2, %hi(D_803B706B) # $a2, 0x803b
/* 0BB8A8 800BACA8 24C6706B */ addiu $a2, %lo(D_803B706B) # addiu $a2, $a2, 0x706b
/* 0BB8AC 800BACAC 24E76F68 */ addiu $a3, %lo(D_803B6F68) # addiu $a3, $a3, 0x6f68
/* 0BB8B0 800BACB0 014B2021 */ addu $a0, $t2, $t3
/* 0BB8B4 800BACB4 9083000E */ lbu $v1, 0xe($a0)
.L800BACB8:
/* 0BB8B8 800BACB8 1060000B */ beqz $v1, .L800BACE8
/* 0BB8BC 800BACBC 246CFFFF */ addiu $t4, $v1, -1
/* 0BB8C0 800BACC0 318D00FF */ andi $t5, $t4, 0xff
/* 0BB8C4 800BACC4 15A00008 */ bnez $t5, .L800BACE8
/* 0BB8C8 800BACC8 A08C000E */ sb $t4, 0xe($a0)
/* 0BB8CC 800BACCC 90C30000 */ lbu $v1, ($a2)
/* 0BB8D0 800BACD0 90CE0000 */ lbu $t6, ($a2)
/* 0BB8D4 800BACD4 00E37821 */ addu $t7, $a3, $v1
/* 0BB8D8 800BACD8 A1E20000 */ sb $v0, ($t7)
/* 0BB8DC 800BACDC 24780001 */ addiu $t8, $v1, 1
/* 0BB8E0 800BACE0 A0D80000 */ sb $t8, ($a2)
/* 0BB8E4 800BACE4 A08E000D */ sb $t6, 0xd($a0)
.L800BACE8:
/* 0BB8E8 800BACE8 8CB90000 */ lw $t9, ($a1)
/* 0BB8EC 800BACEC 24420001 */ addiu $v0, $v0, 1
/* 0BB8F0 800BACF0 24840010 */ addiu $a0, $a0, 0x10
/* 0BB8F4 800BACF4 0059082B */ sltu $at, $v0, $t9
/* 0BB8F8 800BACF8 5420FFEF */ bnel $at, $zero, .L800BACB8
/* 0BB8FC 800BACFC 9083000E */ lbu $v1, 0xe($a0)
.L800BAD00:
/* 0BB900 800BAD00 3C01803B */ lui $at, %hi(D_803B6E60)
/* 0BB904 800BAD04 03E00008 */ jr $ra
/* 0BB908 800BAD08 AC206E60 */ sw $zero, %lo(D_803B6E60)($at)
+42 -42
View File
@@ -8,20 +8,20 @@ glabel func_800BAD0C
/* 0BB924 800BAD24 AFA70054 */ sw $a3, 0x54($sp)
/* 0BB928 800BAD28 14C00008 */ bnez $a2, .L800BAD4C
/* 0BB92C 800BAD2C 00005825 */ move $t3, $zero
/* 0BB930 800BAD30 3C05803B */ lui $a1, %hi(D_803B6E5C) # $a1, 0x803b
/* 0BB934 800BAD34 8CA56E5C */ lw $a1, %lo(D_803B6E5C)($a1)
/* 0BB930 800BAD30 3C05803B */ lui $a1, %hi(sSampleDmaListSize1) # $a1, 0x803b
/* 0BB934 800BAD34 8CA56E5C */ lw $a1, %lo(sSampleDmaListSize1)($a1)
/* 0BB938 800BAD38 90E20000 */ lbu $v0, ($a3)
/* 0BB93C 800BAD3C 00001825 */ move $v1, $zero
/* 0BB940 800BAD40 0045082B */ sltu $at, $v0, $a1
/* 0BB944 800BAD44 14200055 */ bnez $at, .L800BAE9C
/* 0BB948 800BAD48 00026900 */ sll $t5, $v0, 4
.L800BAD4C:
/* 0BB94C 800BAD4C 3C03803B */ lui $v1, %hi(D_803B6E5C) # $v1, 0x803b
/* 0BB950 800BAD50 3C05803B */ lui $a1, %hi(D_803B6E58) # $a1, 0x803b
/* 0BB954 800BAD54 8CA56E58 */ lw $a1, %lo(D_803B6E58)($a1)
/* 0BB958 800BAD58 8C636E5C */ lw $v1, %lo(D_803B6E5C)($v1)
/* 0BB95C 800BAD5C 3C18803B */ lui $t8, %hi(D_803B6758) # $t8, 0x803b
/* 0BB960 800BAD60 27186758 */ addiu $t8, %lo(D_803B6758) # addiu $t8, $t8, 0x6758
/* 0BB94C 800BAD4C 3C03803B */ lui $v1, %hi(sSampleDmaListSize1) # $v1, 0x803b
/* 0BB950 800BAD50 3C05803B */ lui $a1, %hi(gSampleDmaNumListItems) # $a1, 0x803b
/* 0BB954 800BAD54 8CA56E58 */ lw $a1, %lo(gSampleDmaNumListItems)($a1)
/* 0BB958 800BAD58 8C636E5C */ lw $v1, %lo(sSampleDmaListSize1)($v1)
/* 0BB95C 800BAD5C 3C18803B */ lui $t8, %hi(sSampleDmas) # $t8, 0x803b
/* 0BB960 800BAD60 27186758 */ addiu $t8, %lo(sSampleDmas) # addiu $t8, $t8, 0x6758
/* 0BB964 800BAD64 0065082B */ sltu $at, $v1, $a1
/* 0BB968 800BAD68 10200034 */ beqz $at, .L800BAE3C
/* 0BB96C 800BAD6C 00037900 */ sll $t7, $v1, 4
@@ -38,26 +38,26 @@ glabel func_800BAD0C
/* 0BB994 800BAD94 54200025 */ bnel $at, $zero, .L800BAE2C
/* 0BB998 800BAD98 24630001 */ addiu $v1, $v1, 1
/* 0BB99C 800BAD9C 908F000E */ lbu $t7, 0xe($a0)
/* 0BB9A0 800BADA0 3C09803B */ lui $t1, %hi(D_803B7069) # $t1, 0x803b
/* 0BB9A4 800BADA4 25297069 */ addiu $t1, %lo(D_803B7069) # addiu $t1, $t1, 0x7069
/* 0BB9A0 800BADA0 3C09803B */ lui $t1, %hi(sSampleDmaReuseQueueTail2) # $t1, 0x803b
/* 0BB9A4 800BADA4 25297069 */ addiu $t1, %lo(sSampleDmaReuseQueueTail2) # addiu $t1, $t1, 0x7069
/* 0BB9A8 800BADA8 15E00016 */ bnez $t7, .L800BAE04
/* 0BB9AC 800BADAC 3C18803B */ lui $t8, %hi(D_803B706B) # $t8, 0x803b
/* 0BB9AC 800BADAC 3C18803B */ lui $t8, %hi(sSampleDmaReuseQueueHead2) # $t8, 0x803b
/* 0BB9B0 800BADB0 91250000 */ lbu $a1, ($t1)
/* 0BB9B4 800BADB4 9318706B */ lbu $t8, %lo(D_803B706B)($t8)
/* 0BB9B4 800BADB4 9318706B */ lbu $t8, %lo(sSampleDmaReuseQueueHead2)($t8)
/* 0BB9B8 800BADB8 53050013 */ beql $t8, $a1, .L800BAE08
/* 0BB9BC 800BADBC 8FB80054 */ lw $t8, 0x54($sp)
/* 0BB9C0 800BADC0 9087000D */ lbu $a3, 0xd($a0)
/* 0BB9C4 800BADC4 3C0C803B */ lui $t4, %hi(D_803B6F68) # $t4, 0x803b
/* 0BB9C8 800BADC8 258C6F68 */ addiu $t4, %lo(D_803B6F68) # addiu $t4, $t4, 0x6f68
/* 0BB9C4 800BADC4 3C0C803B */ lui $t4, %hi(sSampleDmaReuseQueue2) # $t4, 0x803b
/* 0BB9C8 800BADC8 258C6F68 */ addiu $t4, %lo(sSampleDmaReuseQueue2) # addiu $t4, $t4, 0x6f68
/* 0BB9CC 800BADCC 10A7000B */ beq $a1, $a3, .L800BADFC
/* 0BB9D0 800BADD0 01851021 */ addu $v0, $t4, $a1
/* 0BB9D4 800BADD4 90590000 */ lbu $t9, ($v0)
/* 0BB9D8 800BADD8 01876821 */ addu $t5, $t4, $a3
/* 0BB9DC 800BADDC 3C06803B */ lui $a2, %hi(D_803B6758) # $a2, 0x803b
/* 0BB9DC 800BADDC 3C06803B */ lui $a2, %hi(sSampleDmas) # $a2, 0x803b
/* 0BB9E0 800BADE0 A1B90000 */ sb $t9, ($t5)
/* 0BB9E4 800BADE4 904F0000 */ lbu $t7, ($v0)
/* 0BB9E8 800BADE8 908E000D */ lbu $t6, 0xd($a0)
/* 0BB9EC 800BADEC 24C66758 */ addiu $a2, %lo(D_803B6758) # addiu $a2, $a2, 0x6758
/* 0BB9EC 800BADEC 24C66758 */ addiu $a2, %lo(sSampleDmas) # addiu $a2, $a2, 0x6758
/* 0BB9F0 800BADF0 000FC100 */ sll $t8, $t7, 4
/* 0BB9F4 800BADF4 00D8C821 */ addu $t9, $a2, $t8
/* 0BB9F8 800BADF8 A32E000D */ sb $t6, 0xd($t9)
@@ -82,21 +82,21 @@ glabel func_800BAD0C
/* 0BBA34 800BAE34 24840010 */ addiu $a0, $a0, 0x10
/* 0BBA38 800BAE38 AFA80040 */ sw $t0, 0x40($sp)
.L800BAE3C:
/* 0BBA3C 800BAE3C 3C09803B */ lui $t1, %hi(D_803B7069) # $t1, 0x803b
/* 0BBA40 800BAE40 25297069 */ addiu $t1, %lo(D_803B7069) # addiu $t1, $t1, 0x7069
/* 0BBA44 800BAE44 3C0F803B */ lui $t7, %hi(D_803B706B) # $t7, 0x803b
/* 0BBA48 800BAE48 91EF706B */ lbu $t7, %lo(D_803B706B)($t7)
/* 0BBA3C 800BAE3C 3C09803B */ lui $t1, %hi(sSampleDmaReuseQueueTail2) # $t1, 0x803b
/* 0BBA40 800BAE40 25297069 */ addiu $t1, %lo(sSampleDmaReuseQueueTail2) # addiu $t1, $t1, 0x7069
/* 0BBA44 800BAE44 3C0F803B */ lui $t7, %hi(sSampleDmaReuseQueueHead2) # $t7, 0x803b
/* 0BBA48 800BAE48 91EF706B */ lbu $t7, %lo(sSampleDmaReuseQueueHead2)($t7)
/* 0BBA4C 800BAE4C 91250000 */ lbu $a1, ($t1)
/* 0BBA50 800BAE50 8FA80040 */ lw $t0, 0x40($sp)
/* 0BBA54 800BAE54 11E5000E */ beq $t7, $a1, .L800BAE90
/* 0BBA58 800BAE58 00000000 */ nop
/* 0BBA5C 800BAE5C 10C0000C */ beqz $a2, .L800BAE90
/* 0BBA60 800BAE60 3C0C803B */ lui $t4, %hi(D_803B6F68) # $t4, 0x803b
/* 0BBA64 800BAE64 258C6F68 */ addiu $t4, %lo(D_803B6F68) # addiu $t4, $t4, 0x6f68
/* 0BBA60 800BAE60 3C0C803B */ lui $t4, %hi(sSampleDmaReuseQueue2) # $t4, 0x803b
/* 0BBA64 800BAE64 258C6F68 */ addiu $t4, %lo(sSampleDmaReuseQueue2) # addiu $t4, $t4, 0x6f68
/* 0BBA68 800BAE68 0185C021 */ addu $t8, $t4, $a1
/* 0BBA6C 800BAE6C 930A0000 */ lbu $t2, ($t8)
/* 0BBA70 800BAE70 3C06803B */ lui $a2, %hi(D_803B6758) # $a2, 0x803b
/* 0BBA74 800BAE74 24C66758 */ addiu $a2, %lo(D_803B6758) # addiu $a2, $a2, 0x6758
/* 0BBA70 800BAE70 3C06803B */ lui $a2, %hi(sSampleDmas) # $a2, 0x803b
/* 0BBA74 800BAE74 24C66758 */ addiu $a2, %lo(sSampleDmas) # addiu $a2, $a2, 0x6758
/* 0BBA78 800BAE78 24AE0001 */ addiu $t6, $a1, 1
/* 0BBA7C 800BAE7C 000AC900 */ sll $t9, $t2, 4
/* 0BBA80 800BAE80 A12E0000 */ sb $t6, ($t1)
@@ -104,12 +104,12 @@ glabel func_800BAD0C
/* 0BBA88 800BAE88 240B0001 */ li $t3, 1
/* 0BBA8C 800BAE8C AFAA0030 */ sw $t2, 0x30($sp)
.L800BAE90:
/* 0BBA90 800BAE90 3C06803B */ lui $a2, %hi(D_803B6758) # $a2, 0x803b
/* 0BBA90 800BAE90 3C06803B */ lui $a2, %hi(sSampleDmas) # $a2, 0x803b
/* 0BBA94 800BAE94 1000002F */ b .L800BAF54
/* 0BBA98 800BAE98 24C66758 */ addiu $a2, %lo(D_803B6758) # addiu $a2, $a2, 0x6758
/* 0BBA98 800BAE98 24C66758 */ addiu $a2, %lo(sSampleDmas) # addiu $a2, $a2, 0x6758
.L800BAE9C:
/* 0BBA9C 800BAE9C 3C06803B */ lui $a2, %hi(D_803B6758) # $a2, 0x803b
/* 0BBAA0 800BAEA0 24C66758 */ addiu $a2, %lo(D_803B6758) # addiu $a2, $a2, 0x6758
/* 0BBA9C 800BAE9C 3C06803B */ lui $a2, %hi(sSampleDmas) # $a2, 0x803b
/* 0BBAA0 800BAEA0 24C66758 */ addiu $a2, %lo(sSampleDmas) # addiu $a2, $a2, 0x6758
/* 0BBAA4 800BAEA4 10A0002B */ beqz $a1, .L800BAF54
/* 0BBAA8 800BAEA8 00CD4021 */ addu $t0, $a2, $t5
.L800BAEAC:
@@ -125,14 +125,14 @@ glabel func_800BAD0C
/* 0BBAD0 800BAED0 5420001E */ bnel $at, $zero, .L800BAF4C
/* 0BBAD4 800BAED4 0065082B */ sltu $at, $v1, $a1
/* 0BBAD8 800BAED8 910E000E */ lbu $t6, 0xe($t0)
/* 0BBADC 800BAEDC 3C05803B */ lui $a1, %hi(D_803B7068) # $a1, 0x803b
/* 0BBAE0 800BAEE0 24A57068 */ addiu $a1, %lo(D_803B7068) # addiu $a1, $a1, 0x7068
/* 0BBADC 800BAEDC 3C05803B */ lui $a1, %hi(sSampleDmaReuseQueueTail1) # $a1, 0x803b
/* 0BBAE0 800BAEE0 24A57068 */ addiu $a1, %lo(sSampleDmaReuseQueueTail1) # addiu $a1, $a1, 0x7068
/* 0BBAE4 800BAEE4 55C00013 */ bnel $t6, $zero, .L800BAF34
/* 0BBAE8 800BAEE8 8D0E0000 */ lw $t6, ($t0)
/* 0BBAEC 800BAEEC 90A30000 */ lbu $v1, ($a1)
/* 0BBAF0 800BAEF0 9104000D */ lbu $a0, 0xd($t0)
/* 0BBAF4 800BAEF4 3C07803B */ lui $a3, %hi(D_803B6E68) # $a3, 0x803b
/* 0BBAF8 800BAEF8 24E76E68 */ addiu $a3, %lo(D_803B6E68) # addiu $a3, $a3, 0x6e68
/* 0BBAF4 800BAEF4 3C07803B */ lui $a3, %hi(sSampleDmaReuseQueue1) # $a3, 0x803b
/* 0BBAF8 800BAEF8 24E76E68 */ addiu $a3, %lo(sSampleDmaReuseQueue1) # addiu $a3, $a3, 0x6e68
/* 0BBAFC 800BAEFC 10640009 */ beq $v1, $a0, .L800BAF24
/* 0BBB00 800BAF00 00E31021 */ addu $v0, $a3, $v1
/* 0BBB04 800BAF04 90590000 */ lbu $t9, ($v0)
@@ -161,11 +161,11 @@ glabel func_800BAD0C
.L800BAF54:
/* 0BBB54 800BAF54 1560000C */ bnez $t3, .L800BAF88
/* 0BBB58 800BAF58 8FAA0030 */ lw $t2, 0x30($sp)
/* 0BBB5C 800BAF5C 3C05803B */ lui $a1, %hi(D_803B7068) # $a1, 0x803b
/* 0BBB60 800BAF60 24A57068 */ addiu $a1, %lo(D_803B7068) # addiu $a1, $a1, 0x7068
/* 0BBB5C 800BAF5C 3C05803B */ lui $a1, %hi(sSampleDmaReuseQueueTail1) # $a1, 0x803b
/* 0BBB60 800BAF60 24A57068 */ addiu $a1, %lo(sSampleDmaReuseQueueTail1) # addiu $a1, $a1, 0x7068
/* 0BBB64 800BAF64 90A30000 */ lbu $v1, ($a1)
/* 0BBB68 800BAF68 3C07803B */ lui $a3, %hi(D_803B6E68) # $a3, 0x803b
/* 0BBB6C 800BAF6C 24E76E68 */ addiu $a3, %lo(D_803B6E68) # addiu $a3, $a3, 0x6e68
/* 0BBB68 800BAF68 3C07803B */ lui $a3, %hi(sSampleDmaReuseQueue1) # $a3, 0x803b
/* 0BBB6C 800BAF6C 24E76E68 */ addiu $a3, %lo(sSampleDmaReuseQueue1) # addiu $a3, $a3, 0x6e68
/* 0BBB70 800BAF70 00E36821 */ addu $t5, $a3, $v1
/* 0BBB74 800BAF74 91AA0000 */ lbu $t2, ($t5)
/* 0BBB78 800BAF78 24780001 */ addiu $t8, $v1, 1
@@ -175,22 +175,22 @@ glabel func_800BAD0C
.L800BAF88:
/* 0BBB88 800BAF88 9502000A */ lhu $v0, 0xa($t0)
/* 0BBB8C 800BAF8C 2401FFF0 */ li $at, -16
/* 0BBB90 800BAF90 3C09803B */ lui $t1, %hi(D_803B70BC) # $t1, 0x803b
/* 0BBB90 800BAF90 3C09803B */ lui $t1, %hi(gCurrAudioFrameDmaCount) # $t1, 0x803b
/* 0BBB94 800BAF94 240F0002 */ li $t7, 2
/* 0BBB98 800BAF98 02218024 */ and $s0, $s1, $at
/* 0BBB9C 800BAF9C 252970BC */ addiu $t1, %lo(D_803B70BC) # addiu $t1, $t1, 0x70bc
/* 0BBB9C 800BAF9C 252970BC */ addiu $t1, %lo(gCurrAudioFrameDmaCount) # addiu $t1, $t1, 0x70bc
/* 0BBBA0 800BAFA0 A10F000E */ sb $t7, 0xe($t0)
/* 0BBBA4 800BAFA4 AD100004 */ sw $s0, 4($t0)
/* 0BBBA8 800BAFA8 A5020008 */ sh $v0, 8($t0)
/* 0BBBAC 800BAFAC 8D230000 */ lw $v1, ($t1)
/* 0BBBB0 800BAFB0 8D180000 */ lw $t8, ($t0)
/* 0BBBB4 800BAFB4 3C0D803B */ lui $t5, %hi(D_803B6120) # $t5, 0x803b
/* 0BBBB4 800BAFB4 3C0D803B */ lui $t5, %hi(gCurrAudioFrameDmaIoMesgBufs) # $t5, 0x803b
/* 0BBBB8 800BAFB8 0003C880 */ sll $t9, $v1, 2
/* 0BBBBC 800BAFBC 3C0E803B */ lui $t6, %hi(D_803B6008) # $t6, 0x803b
/* 0BBBBC 800BAFBC 3C0E803B */ lui $t6, %hi(gCurrAudioFrameDmaQueue) # $t6, 0x803b
/* 0BBBC0 800BAFC0 0323C823 */ subu $t9, $t9, $v1
/* 0BBBC4 800BAFC4 0019C8C0 */ sll $t9, $t9, 3
/* 0BBBC8 800BAFC8 25CE6008 */ addiu $t6, %lo(D_803B6008) # addiu $t6, $t6, 0x6008
/* 0BBBCC 800BAFCC 25AD6120 */ addiu $t5, %lo(D_803B6120) # addiu $t5, $t5, 0x6120
/* 0BBBC8 800BAFC8 25CE6008 */ addiu $t6, %lo(gCurrAudioFrameDmaQueue) # addiu $t6, $t6, 0x6008
/* 0BBBCC 800BAFCC 25AD6120 */ addiu $t5, %lo(gCurrAudioFrameDmaIoMesgBufs) # addiu $t5, $t5, 0x6120
/* 0BBBD0 800BAFD0 246F0001 */ addiu $t7, $v1, 1
/* 0BBBD4 800BAFD4 AD2F0000 */ sw $t7, ($t1)
/* 0BBBD8 800BAFD8 032D2021 */ addu $a0, $t9, $t5
@@ -1,196 +0,0 @@
glabel func_800BB030
/* 0BBC30 800BB030 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 0BBC34 800BB034 AFB50028 */ sw $s5, 0x28($sp)
/* 0BBC38 800BB038 3C15803B */ lui $s5, %hi(D_803B70B0) # $s5, 0x803b
/* 0BBC3C 800BB03C 26B570B0 */ addiu $s5, %lo(D_803B70B0) # addiu $s5, $s5, 0x70b0
/* 0BBC40 800BB040 AFA40038 */ sw $a0, 0x38($sp)
/* 0BBC44 800BB044 8EA40000 */ lw $a0, ($s5)
/* 0BBC48 800BB048 AFB2001C */ sw $s2, 0x1c($sp)
/* 0BBC4C 800BB04C 24120003 */ li $s2, 3
/* 0BBC50 800BB050 00920019 */ multu $a0, $s2
/* 0BBC54 800BB054 AFB30020 */ sw $s3, 0x20($sp)
/* 0BBC58 800BB058 3C13803B */ lui $s3, %hi(D_803B7088) # $s3, 0x803b
/* 0BBC5C 800BB05C 26737088 */ addiu $s3, %lo(D_803B7088) # addiu $s3, $s3, 0x7088
/* 0BBC60 800BB060 86780000 */ lh $t8, ($s3)
/* 0BBC64 800BB064 AFB40024 */ sw $s4, 0x24($sp)
/* 0BBC68 800BB068 3C14803B */ lui $s4, %hi(D_803B70A8) # $s4, 0x803b
/* 0BBC6C 800BB06C AFB70030 */ sw $s7, 0x30($sp)
/* 0BBC70 800BB070 AFB6002C */ sw $s6, 0x2c($sp)
/* 0BBC74 800BB074 AFB10018 */ sw $s1, 0x18($sp)
/* 0BBC78 800BB078 00007812 */ mflo $t7
/* 0BBC7C 800BB07C 269470A8 */ addiu $s4, %lo(D_803B70A8) # addiu $s4, $s4, 0x70a8
/* 0BBC80 800BB080 AFB00014 */ sw $s0, 0x14($sp)
/* 0BBC84 800BB084 01F80019 */ multu $t7, $t8
/* 0BBC88 800BB088 240E05A0 */ li $t6, 1440
/* 0BBC8C 800BB08C 3C11803B */ lui $s1, %hi(D_803B6E58) # $s1, 0x803b
/* 0BBC90 800BB090 3C16803B */ lui $s6, %hi(D_803AFBE8) # $s6, 0x803b
/* 0BBC94 800BB094 3C17803B */ lui $s7, %hi(D_803B6758) # $s7, 0x803b
/* 0BBC98 800BB098 AFBF0034 */ sw $ra, 0x34($sp)
/* 0BBC9C 800BB09C AE8E0000 */ sw $t6, ($s4)
/* 0BBCA0 800BB0A0 26F76758 */ addiu $s7, %lo(D_803B6758) # addiu $s7, $s7, 0x6758
/* 0BBCA4 800BB0A4 26D6FBE8 */ addiu $s6, %lo(D_803AFBE8) # addiu $s6, $s6, -0x418
/* 0BBCA8 800BB0A8 26316E58 */ addiu $s1, %lo(D_803B6E58) # addiu $s1, $s1, 0x6e58
/* 0BBCAC 800BB0AC 0000C812 */ mflo $t9
/* 0BBCB0 800BB0B0 01C02825 */ move $a1, $t6
/* 0BBCB4 800BB0B4 1B200020 */ blez $t9, .L800BB138
/* 0BBCB8 800BB0B8 00008025 */ move $s0, $zero
.L800BB0BC:
/* 0BBCBC 800BB0BC 0C02E3FF */ jal func_800B8FFC
/* 0BBCC0 800BB0C0 02C02025 */ move $a0, $s6
/* 0BBCC4 800BB0C4 8E260000 */ lw $a2, ($s1)
/* 0BBCC8 800BB0C8 00064100 */ sll $t0, $a2, 4
/* 0BBCCC 800BB0CC 02E81821 */ addu $v1, $s7, $t0
/* 0BBCD0 800BB0D0 14400004 */ bnez $v0, .L800BB0E4
/* 0BBCD4 800BB0D4 AC620000 */ sw $v0, ($v1)
/* 0BBCD8 800BB0D8 00008025 */ move $s0, $zero
/* 0BBCDC 800BB0DC 10000016 */ b .L800BB138
/* 0BBCE0 800BB0E0 8EA40000 */ lw $a0, ($s5)
.L800BB0E4:
/* 0BBCE4 800BB0E4 8EA40000 */ lw $a0, ($s5)
/* 0BBCE8 800BB0E8 866B0000 */ lh $t3, ($s3)
/* 0BBCEC 800BB0EC 8E850000 */ lw $a1, ($s4)
/* 0BBCF0 800BB0F0 00920019 */ multu $a0, $s2
/* 0BBCF4 800BB0F4 26100001 */ addiu $s0, $s0, 1
/* 0BBCF8 800BB0F8 24C90001 */ addiu $t1, $a2, 1
/* 0BBCFC 800BB0FC AC600004 */ sw $zero, 4($v1)
/* 0BBD00 800BB100 A4600008 */ sh $zero, 8($v1)
/* 0BBD04 800BB104 A060000C */ sb $zero, 0xc($v1)
/* 0BBD08 800BB108 A060000E */ sb $zero, 0xe($v1)
/* 0BBD0C 800BB10C AE290000 */ sw $t1, ($s1)
/* 0BBD10 800BB110 A465000A */ sh $a1, 0xa($v1)
/* 0BBD14 800BB114 00005012 */ mflo $t2
/* 0BBD18 800BB118 00000000 */ nop
/* 0BBD1C 800BB11C 00000000 */ nop
/* 0BBD20 800BB120 014B0019 */ multu $t2, $t3
/* 0BBD24 800BB124 00006012 */ mflo $t4
/* 0BBD28 800BB128 020C082A */ slt $at, $s0, $t4
/* 0BBD2C 800BB12C 1420FFE3 */ bnez $at, .L800BB0BC
/* 0BBD30 800BB130 00000000 */ nop
/* 0BBD34 800BB134 00008025 */ move $s0, $zero
.L800BB138:
/* 0BBD38 800BB138 3C11803B */ lui $s1, %hi(D_803B6E58) # $s1, 0x803b
/* 0BBD3C 800BB13C 26316E58 */ addiu $s1, %lo(D_803B6E58) # addiu $s1, $s1, 0x6e58
/* 0BBD40 800BB140 8E260000 */ lw $a2, ($s1)
/* 0BBD44 800BB144 3C16803B */ lui $s6, %hi(D_803AFBE8) # $s6, 0x803b
/* 0BBD48 800BB148 3C17803B */ lui $s7, %hi(D_803B6758) # $s7, 0x803b
/* 0BBD4C 800BB14C 26F76758 */ addiu $s7, %lo(D_803B6758) # addiu $s7, $s7, 0x6758
/* 0BBD50 800BB150 10C0000C */ beqz $a2, .L800BB184
/* 0BBD54 800BB154 26D6FBE8 */ addiu $s6, %lo(D_803AFBE8) # addiu $s6, $s6, -0x418
/* 0BBD58 800BB158 3C02803B */ lui $v0, %hi(D_803B6E68) # $v0, 0x803b
/* 0BBD5C 800BB15C 3C03803B */ lui $v1, %hi(D_803B6758) # $v1, 0x803b
/* 0BBD60 800BB160 24636758 */ addiu $v1, %lo(D_803B6758) # addiu $v1, $v1, 0x6758
/* 0BBD64 800BB164 24426E68 */ addiu $v0, %lo(D_803B6E68) # addiu $v0, $v0, 0x6e68
.L800BB168:
/* 0BBD68 800BB168 A0500000 */ sb $s0, ($v0)
/* 0BBD6C 800BB16C A070000D */ sb $s0, 0xd($v1)
/* 0BBD70 800BB170 26100001 */ addiu $s0, $s0, 1
/* 0BBD74 800BB174 0206082B */ sltu $at, $s0, $a2
/* 0BBD78 800BB178 24420001 */ addiu $v0, $v0, 1
/* 0BBD7C 800BB17C 1420FFFA */ bnez $at, .L800BB168
/* 0BBD80 800BB180 24630010 */ addiu $v1, $v1, 0x10
.L800BB184:
/* 0BBD84 800BB184 28C10100 */ slti $at, $a2, 0x100
/* 0BBD88 800BB188 00C03825 */ move $a3, $a2
/* 0BBD8C 800BB18C 1020000A */ beqz $at, .L800BB1B8
/* 0BBD90 800BB190 00C08025 */ move $s0, $a2
/* 0BBD94 800BB194 3C0D803B */ lui $t5, %hi(D_803B6E68) # $t5, 0x803b
/* 0BBD98 800BB198 25AD6E68 */ addiu $t5, %lo(D_803B6E68) # addiu $t5, $t5, 0x6e68
/* 0BBD9C 800BB19C 3C03803B */ lui $v1, %hi(D_803B6F68) # $v1, 0x803b
/* 0BBDA0 800BB1A0 24636F68 */ addiu $v1, %lo(D_803B6F68) # addiu $v1, $v1, 0x6f68
/* 0BBDA4 800BB1A4 020D1021 */ addu $v0, $s0, $t5
.L800BB1A8:
/* 0BBDA8 800BB1A8 24420001 */ addiu $v0, $v0, 1
/* 0BBDAC 800BB1AC 0043082B */ sltu $at, $v0, $v1
/* 0BBDB0 800BB1B0 1420FFFD */ bnez $at, .L800BB1A8
/* 0BBDB4 800BB1B4 A040FFFF */ sb $zero, -1($v0)
.L800BB1B8:
/* 0BBDB8 800BB1B8 3C01803B */ lui $at, %hi(D_803B7068) # $at, 0x803b
/* 0BBDBC 800BB1BC A0207068 */ sb $zero, %lo(D_803B7068)($at)
/* 0BBDC0 800BB1C0 3C12803B */ lui $s2, %hi(D_803B6E5C) # $s2, 0x803b
/* 0BBDC4 800BB1C4 3C01803B */ lui $at, %hi(D_803B706A) # $at, 0x803b
/* 0BBDC8 800BB1C8 26526E5C */ addiu $s2, %lo(D_803B6E5C) # addiu $s2, $s2, 0x6e5c
/* 0BBDCC 800BB1CC A026706A */ sb $a2, %lo(D_803B706A)($at)
/* 0BBDD0 800BB1D0 240E0180 */ li $t6, 384
/* 0BBDD4 800BB1D4 AE460000 */ sw $a2, ($s2)
/* 0BBDD8 800BB1D8 AE8E0000 */ sw $t6, ($s4)
/* 0BBDDC 800BB1DC 1880001A */ blez $a0, .L800BB248
/* 0BBDE0 800BB1E0 00008025 */ move $s0, $zero
/* 0BBDE4 800BB1E4 01C02825 */ move $a1, $t6
.L800BB1E8:
/* 0BBDE8 800BB1E8 0C02E3FF */ jal func_800B8FFC
/* 0BBDEC 800BB1EC 02C02025 */ move $a0, $s6
/* 0BBDF0 800BB1F0 8E260000 */ lw $a2, ($s1)
/* 0BBDF4 800BB1F4 26100001 */ addiu $s0, $s0, 1
/* 0BBDF8 800BB1F8 00067900 */ sll $t7, $a2, 4
/* 0BBDFC 800BB1FC 02EF1821 */ addu $v1, $s7, $t7
/* 0BBE00 800BB200 14400003 */ bnez $v0, .L800BB210
/* 0BBE04 800BB204 AC620000 */ sw $v0, ($v1)
/* 0BBE08 800BB208 1000000F */ b .L800BB248
/* 0BBE0C 800BB20C 00C03825 */ move $a3, $a2
.L800BB210:
/* 0BBE10 800BB210 8EB90000 */ lw $t9, ($s5)
/* 0BBE14 800BB214 8E850000 */ lw $a1, ($s4)
/* 0BBE18 800BB218 24D80001 */ addiu $t8, $a2, 1
/* 0BBE1C 800BB21C 0219082A */ slt $at, $s0, $t9
/* 0BBE20 800BB220 AC600004 */ sw $zero, 4($v1)
/* 0BBE24 800BB224 A4600008 */ sh $zero, 8($v1)
/* 0BBE28 800BB228 A060000C */ sb $zero, 0xc($v1)
/* 0BBE2C 800BB22C A060000E */ sb $zero, 0xe($v1)
/* 0BBE30 800BB230 AE380000 */ sw $t8, ($s1)
/* 0BBE34 800BB234 1420FFEC */ bnez $at, .L800BB1E8
/* 0BBE38 800BB238 A465000A */ sh $a1, 0xa($v1)
/* 0BBE3C 800BB23C 3C06803B */ lui $a2, %hi(D_803B6E58) # $a2, 0x803b
/* 0BBE40 800BB240 8CC66E58 */ lw $a2, %lo(D_803B6E58)($a2)
/* 0BBE44 800BB244 00C03825 */ move $a3, $a2
.L800BB248:
/* 0BBE48 800BB248 8E450000 */ lw $a1, ($s2)
/* 0BBE4C 800BB24C 3C09803B */ lui $t1, %hi(D_803B6758) # $t1, 0x803b
/* 0BBE50 800BB250 25296758 */ addiu $t1, %lo(D_803B6758) # addiu $t1, $t1, 0x6758
/* 0BBE54 800BB254 00A6082B */ sltu $at, $a1, $a2
/* 0BBE58 800BB258 1020000F */ beqz $at, .L800BB298
/* 0BBE5C 800BB25C 00A08025 */ move $s0, $a1
/* 0BBE60 800BB260 3C0A803B */ lui $t2, %hi(D_803B6F68) # $t2, 0x803b
/* 0BBE64 800BB264 254A6F68 */ addiu $t2, %lo(D_803B6F68) # addiu $t2, $t2, 0x6f68
/* 0BBE68 800BB268 00104100 */ sll $t0, $s0, 4
/* 0BBE6C 800BB26C 02051023 */ subu $v0, $s0, $a1
/* 0BBE70 800BB270 004A2021 */ addu $a0, $v0, $t2
/* 0BBE74 800BB274 01091821 */ addu $v1, $t0, $t1
.L800BB278:
/* 0BBE78 800BB278 A0900000 */ sb $s0, ($a0)
/* 0BBE7C 800BB27C 26100001 */ addiu $s0, $s0, 1
/* 0BBE80 800BB280 0206082B */ sltu $at, $s0, $a2
/* 0BBE84 800BB284 A062000D */ sb $v0, 0xd($v1)
/* 0BBE88 800BB288 24420001 */ addiu $v0, $v0, 1
/* 0BBE8C 800BB28C 24630010 */ addiu $v1, $v1, 0x10
/* 0BBE90 800BB290 1420FFF9 */ bnez $at, .L800BB278
/* 0BBE94 800BB294 24840001 */ addiu $a0, $a0, 1
.L800BB298:
/* 0BBE98 800BB298 28E10100 */ slti $at, $a3, 0x100
/* 0BBE9C 800BB29C 1020000A */ beqz $at, .L800BB2C8
/* 0BBEA0 800BB2A0 00C56023 */ subu $t4, $a2, $a1
/* 0BBEA4 800BB2A4 3C0B803B */ lui $t3, %hi(D_803B6F68) # $t3, 0x803b
/* 0BBEA8 800BB2A8 256B6F68 */ addiu $t3, %lo(D_803B6F68) # addiu $t3, $t3, 0x6f68
/* 0BBEAC 800BB2AC 3C03803B */ lui $v1, %hi(D_803B7068) # $v1, 0x803b
/* 0BBEB0 800BB2B0 24637068 */ addiu $v1, %lo(D_803B7068) # addiu $v1, $v1, 0x7068
/* 0BBEB4 800BB2B4 00EB1021 */ addu $v0, $a3, $t3
.L800BB2B8:
/* 0BBEB8 800BB2B8 24420001 */ addiu $v0, $v0, 1
/* 0BBEBC 800BB2BC 0043082B */ sltu $at, $v0, $v1
/* 0BBEC0 800BB2C0 1420FFFD */ bnez $at, .L800BB2B8
/* 0BBEC4 800BB2C4 A045FFFF */ sb $a1, -1($v0)
.L800BB2C8:
/* 0BBEC8 800BB2C8 8FBF0034 */ lw $ra, 0x34($sp)
/* 0BBECC 800BB2CC 3C01803B */ lui $at, %hi(D_803B7069) # $at, 0x803b
/* 0BBED0 800BB2D0 A0207069 */ sb $zero, %lo(D_803B7069)($at)
/* 0BBED4 800BB2D4 3C01803B */ lui $at, %hi(D_803B706B) # $at, 0x803b
/* 0BBED8 800BB2D8 8FB00014 */ lw $s0, 0x14($sp)
/* 0BBEDC 800BB2DC 8FB10018 */ lw $s1, 0x18($sp)
/* 0BBEE0 800BB2E0 8FB2001C */ lw $s2, 0x1c($sp)
/* 0BBEE4 800BB2E4 8FB30020 */ lw $s3, 0x20($sp)
/* 0BBEE8 800BB2E8 8FB40024 */ lw $s4, 0x24($sp)
/* 0BBEEC 800BB2EC 8FB50028 */ lw $s5, 0x28($sp)
/* 0BBEF0 800BB2F0 8FB6002C */ lw $s6, 0x2c($sp)
/* 0BBEF4 800BB2F4 8FB70030 */ lw $s7, 0x30($sp)
/* 0BBEF8 800BB2F8 A02C706B */ sb $t4, %lo(D_803B706B)($at)
/* 0BBEFC 800BB2FC 03E00008 */ jr $ra
/* 0BBF00 800BB300 27BD0038 */ addiu $sp, $sp, 0x38
@@ -1,37 +0,0 @@
glabel func_800BB304
/* 0BBF04 800BB304 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0BBF08 800BB308 AFBF0014 */ sw $ra, 0x14($sp)
/* 0BBF0C 800BB30C 14800003 */ bnez $a0, .L800BB31C
/* 0BBF10 800BB310 00803825 */ move $a3, $a0
/* 0BBF14 800BB314 10000018 */ b .L800BB378
/* 0BBF18 800BB318 2402FFFF */ li $v0, -1
.L800BB31C:
/* 0BBF1C 800BB31C 90EE0001 */ lbu $t6, 1($a3)
/* 0BBF20 800BB320 24010001 */ li $at, 1
/* 0BBF24 800BB324 3C04803B */ lui $a0, %hi(D_803AFBE8) # $a0, 0x803b
/* 0BBF28 800BB328 15C10013 */ bne $t6, $at, .L800BB378
/* 0BBF2C 800BB32C 2484FBE8 */ addiu $a0, %lo(D_803AFBE8) # addiu $a0, $a0, -0x418
/* 0BBF30 800BB330 8CE50010 */ lw $a1, 0x10($a3)
/* 0BBF34 800BB334 0C02E3FF */ jal func_800B8FFC
/* 0BBF38 800BB338 AFA70020 */ sw $a3, 0x20($sp)
/* 0BBF3C 800BB33C 8FA70020 */ lw $a3, 0x20($sp)
/* 0BBF40 800BB340 14400003 */ bnez $v0, .L800BB350
/* 0BBF44 800BB344 00402825 */ move $a1, $v0
/* 0BBF48 800BB348 1000000B */ b .L800BB378
/* 0BBF4C 800BB34C 2402FFFF */ li $v0, -1
.L800BB350:
/* 0BBF50 800BB350 8CE40004 */ lw $a0, 4($a3)
/* 0BBF54 800BB354 8CE60010 */ lw $a2, 0x10($a3)
/* 0BBF58 800BB358 AFA70020 */ sw $a3, 0x20($sp)
/* 0BBF5C 800BB35C 0C02EAA0 */ jal func_800BAA80
/* 0BBF60 800BB360 AFA5001C */ sw $a1, 0x1c($sp)
/* 0BBF64 800BB364 8FA70020 */ lw $a3, 0x20($sp)
/* 0BBF68 800BB368 8FA5001C */ lw $a1, 0x1c($sp)
/* 0BBF6C 800BB36C 240F0081 */ li $t7, 129
/* 0BBF70 800BB370 A0EF0001 */ sb $t7, 1($a3)
/* 0BBF74 800BB374 ACE50004 */ sw $a1, 4($a3)
.L800BB378:
/* 0BBF78 800BB378 8FBF0014 */ lw $ra, 0x14($sp)
/* 0BBF7C 800BB37C 27BD0020 */ addiu $sp, $sp, 0x20
/* 0BBF80 800BB380 03E00008 */ jr $ra
/* 0BBF84 800BB384 00000000 */ nop
+4 -4
View File
@@ -28,13 +28,13 @@ glabel func_800BB484
/* 0BC0E8 800BB4E8 54810022 */ bnel $a0, $at, .L800BB574
/* 0BC0EC 800BB4EC 8FBF001C */ lw $ra, 0x1c($sp)
/* 0BC0F0 800BB4F0 8C690004 */ lw $t1, 4($v1)
/* 0BC0F4 800BB4F4 3C04803B */ lui $a0, %hi(D_803AFBE8) # $a0, 0x803b
/* 0BC0F4 800BB4F4 3C04803B */ lui $a0, %hi(gNotesAndBuffersPool) # $a0, 0x803b
/* 0BC0F8 800BB4F8 8C650010 */ lw $a1, 0x10($v1)
/* 0BC0FC 800BB4FC 01263821 */ addu $a3, $t1, $a2
/* 0BC100 800BB500 AFA70028 */ sw $a3, 0x28($sp)
/* 0BC104 800BB504 AFA3002C */ sw $v1, 0x2c($sp)
/* 0BC108 800BB508 0C02E3FF */ jal func_800B8FFC
/* 0BC10C 800BB50C 2484FBE8 */ addiu $a0, %lo(D_803AFBE8) # addiu $a0, $a0, -0x418
/* 0BC108 800BB508 0C02E3FF */ jal soundAlloc
/* 0BC10C 800BB50C 2484FBE8 */ addiu $a0, %lo(gNotesAndBuffersPool) # addiu $a0, $a0, -0x418
/* 0BC110 800BB510 8FA3002C */ lw $v1, 0x2c($sp)
/* 0BC114 800BB514 8FA70028 */ lw $a3, 0x28($sp)
/* 0BC118 800BB518 14400005 */ bnez $v0, .L800BB530
@@ -47,7 +47,7 @@ glabel func_800BB484
/* 0BC130 800BB530 8C660010 */ lw $a2, 0x10($v1)
/* 0BC134 800BB534 AFA50024 */ sw $a1, 0x24($sp)
/* 0BC138 800BB538 AFA3002C */ sw $v1, 0x2c($sp)
/* 0BC13C 800BB53C 0C02EAA0 */ jal func_800BAA80
/* 0BC13C 800BB53C 0C02EAA0 */ jal audio_dma_copy_immediate
/* 0BC140 800BB540 00E02025 */ move $a0, $a3
/* 0BC144 800BB544 8FA3002C */ lw $v1, 0x2c($sp)
/* 0BC148 800BB548 8FA50024 */ lw $a1, 0x24($sp)
+1 -1
View File
@@ -29,7 +29,7 @@ glabel func_800BB780
.L800BB7EC:
/* 0BC3EC 800BB7EC 8FA40028 */ lw $a0, 0x28($sp)
/* 0BC3F0 800BB7F0 AFA5002C */ sw $a1, 0x2c($sp)
/* 0BC3F4 800BB7F4 0C02EAA0 */ jal func_800BAA80
/* 0BC3F4 800BB7F4 0C02EAA0 */ jal audio_dma_copy_immediate
/* 0BC3F8 800BB7F8 24840010 */ addiu $a0, $a0, 0x10
/* 0BC3FC 800BB7FC 3C0A803B */ lui $t2, %hi(D_803B7080) # $t2, 0x803b
/* 0BC400 800BB800 8D4A7080 */ lw $t2, %lo(D_803B7080)($t2)
+1 -1
View File
@@ -28,7 +28,7 @@ glabel func_800BB99C
/* 0BC604 800BBA04 00001025 */ move $v0, $zero
.L800BBA08:
/* 0BC608 800BBA08 8FA40024 */ lw $a0, 0x24($sp)
/* 0BC60C 800BBA0C 0C02EAA0 */ jal func_800BAA80
/* 0BC60C 800BBA0C 0C02EAA0 */ jal audio_dma_copy_immediate
/* 0BC610 800BBA10 AFA50028 */ sw $a1, 0x28($sp)
/* 0BC614 800BBA14 8FA90030 */ lw $t1, 0x30($sp)
/* 0BC618 800BBA18 3C0A803B */ lui $t2, %hi(D_803B0400) # $t2, 0x803b
+2 -2
View File
@@ -34,7 +34,7 @@ glabel func_800BBA50
/* 0BC6CC 800BBACC 8FA4003C */ lw $a0, 0x3c($sp)
/* 0BC6D0 800BBAD0 8FA4003C */ lw $a0, 0x3c($sp)
/* 0BC6D4 800BBAD4 02402825 */ move $a1, $s2
/* 0BC6D8 800BBAD8 0C02EAA0 */ jal func_800BAA80
/* 0BC6D8 800BBAD8 0C02EAA0 */ jal audio_dma_copy_immediate
/* 0BC6DC 800BBADC 02003025 */ move $a2, $s0
/* 0BC6E0 800BBAE0 8FA90048 */ lw $t1, 0x48($sp)
/* 0BC6E4 800BBAE4 3C0A803B */ lui $t2, %hi(D_803B0400) # $t2, 0x803b
@@ -49,7 +49,7 @@ glabel func_800BBA50
/* 0BC708 800BBB08 A04C0000 */ sb $t4, ($v0)
.L800BBB0C:
/* 0BC70C 800BBB0C 02402825 */ move $a1, $s2
/* 0BC710 800BBB10 0C02EAA0 */ jal func_800BAA80
/* 0BC710 800BBB10 0C02EAA0 */ jal audio_dma_copy_immediate
/* 0BC714 800BBB14 24060040 */ li $a2, 64
/* 0BC718 800BBB18 262700D4 */ addiu $a3, $s1, 0xd4
/* 0BC71C 800BBB1C 00E02025 */ move $a0, $a3
@@ -1,24 +0,0 @@
glabel func_800BBEF0
/* 0BCAF0 800BBEF0 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 0BCAF4 800BBEF4 14C00006 */ bnez $a2, .L800BBF10
/* 0BCAF8 800BBEF8 AFBF0014 */ sw $ra, 0x14($sp)
/* 0BCAFC 800BBEFC 3C0E1971 */ lui $t6, (0x19710515 >> 16) # lui $t6, 0x1971
/* 0BCB00 800BBF00 3C0F800F */ lui $t7, %hi(D_800EA5DC) # $t7, 0x800f
/* 0BCB04 800BBF04 25EFA5DC */ addiu $t7, %lo(D_800EA5DC) # addiu $t7, $t7, -0x5a24
/* 0BCB08 800BBF08 35CE0515 */ ori $t6, (0x19710515 & 0xFFFF) # ori $t6, $t6, 0x515
/* 0BCB0C 800BBF0C ADEE0000 */ sw $t6, ($t7)
.L800BBF10:
/* 0BCB10 800BBF10 0C02EFD1 */ jal func_800BBF44
/* 0BCB14 800BBF14 AFA60020 */ sw $a2, 0x20($sp)
/* 0BCB18 800BBF18 8FA60020 */ lw $a2, 0x20($sp)
/* 0BCB1C 800BBF1C 3C187655 */ lui $t8, (0x76557364 >> 16) # lui $t8, 0x7655
/* 0BCB20 800BBF20 37187364 */ ori $t8, (0x76557364 & 0xFFFF) # ori $t8, $t8, 0x7364
/* 0BCB24 800BBF24 14C00003 */ bnez $a2, .L800BBF34
/* 0BCB28 800BBF28 3C19800F */ lui $t9, %hi(D_800EA5DC) # $t9, 0x800f
/* 0BCB2C 800BBF2C 2739A5DC */ addiu $t9, %lo(D_800EA5DC) # addiu $t9, $t9, -0x5a24
/* 0BCB30 800BBF30 AF380000 */ sw $t8, ($t9)
.L800BBF34:
/* 0BCB34 800BBF34 8FBF0014 */ lw $ra, 0x14($sp)
/* 0BCB38 800BBF38 27BD0018 */ addiu $sp, $sp, 0x18
/* 0BCB3C 800BBF3C 03E00008 */ jr $ra
/* 0BCB40 800BBF40 00000000 */ nop
@@ -1,7 +1,7 @@
glabel func_800BCBC4
/* 0BD7C4 800BCBC4 27BDFF90 */ addiu $sp, $sp, -0x70
/* 0BD7C8 800BCBC8 3C03803B */ lui $v1, %hi(D_803B70B0) # $v1, 0x803b
/* 0BD7CC 800BCBCC 8C6370B0 */ lw $v1, %lo(D_803B70B0)($v1)
/* 0BD7C8 800BCBC8 3C03803B */ lui $v1, %hi(gMaxSimultaneousNotes) # $v1, 0x803b
/* 0BD7CC 800BCBCC 8C6370B0 */ lw $v1, %lo(gMaxSimultaneousNotes)($v1)
/* 0BD7D0 800BCBD0 AFBF0044 */ sw $ra, 0x44($sp)
/* 0BD7D4 800BCBD4 AFB70040 */ sw $s7, 0x40($sp)
/* 0BD7D8 800BCBD8 AFB6003C */ sw $s6, 0x3c($sp)
@@ -53,8 +53,8 @@ glabel func_800BCBC4
/* 0BD884 800BCC84 0C02FAE9 */ jal func_800BEBA4
/* 0BD888 800BCC88 00000000 */ nop
/* 0BD88C 800BCC8C A2360000 */ sb $s6, ($s1)
/* 0BD890 800BCC90 3C03803B */ lui $v1, %hi(D_803B70B0) # $v1, 0x803b
/* 0BD894 800BCC94 8C6370B0 */ lw $v1, %lo(D_803B70B0)($v1)
/* 0BD890 800BCC90 3C03803B */ lui $v1, %hi(gMaxSimultaneousNotes) # $v1, 0x803b
/* 0BD894 800BCC94 8C6370B0 */ lw $v1, %lo(gMaxSimultaneousNotes)($v1)
/* 0BD898 800BCC98 00031080 */ sll $v0, $v1, 2
/* 0BD89C 800BCC9C 00431023 */ subu $v0, $v0, $v1
/* 0BD8A0 800BCCA0 10000097 */ b .L800BCF00
@@ -218,8 +218,8 @@ glabel func_800BCBC4
/* 0BDAE4 800BCEE4 018E7825 */ or $t7, $t4, $t6
/* 0BDAE8 800BCEE8 A26F0001 */ sb $t7, 1($s3)
.L800BCEEC:
/* 0BDAEC 800BCEEC 3C03803B */ lui $v1, %hi(D_803B70B0) # $v1, 0x803b
/* 0BDAF0 800BCEF0 8C6370B0 */ lw $v1, %lo(D_803B70B0)($v1)
/* 0BDAEC 800BCEEC 3C03803B */ lui $v1, %hi(gMaxSimultaneousNotes) # $v1, 0x803b
/* 0BDAF0 800BCEF0 8C6370B0 */ lw $v1, %lo(gMaxSimultaneousNotes)($v1)
/* 0BDAF4 800BCEF4 00031080 */ sll $v0, $v1, 2
/* 0BDAF8 800BCEF8 00431023 */ subu $v0, $v0, $v1
/* 0BDAFC 800BCEFC 00021180 */ sll $v0, $v0, 6
@@ -10,8 +10,8 @@ glabel func_800BD368
/* 0BDF88 800BD388 AFB00018 */ sw $s0, 0x18($sp)
/* 0BDF8C 800BD38C 0C02F4C6 */ jal func_800BD318
/* 0BDF90 800BD390 02602025 */ move $a0, $s3
/* 0BDF94 800BD394 3C14803B */ lui $s4, %hi(D_803B70B0) # $s4, 0x803b
/* 0BDF98 800BD398 269470B0 */ addiu $s4, %lo(D_803B70B0) # addiu $s4, $s4, 0x70b0
/* 0BDF94 800BD394 3C14803B */ lui $s4, %hi(gMaxSimultaneousNotes) # $s4, 0x803b
/* 0BDF98 800BD398 269470B0 */ addiu $s4, %lo(gMaxSimultaneousNotes) # addiu $s4, $s4, 0x70b0
/* 0BDF9C 800BD39C 8E8E0000 */ lw $t6, ($s4)
/* 0BDFA0 800BD3A0 00008825 */ move $s1, $zero
/* 0BDFA4 800BD3A4 00008025 */ move $s0, $zero
@@ -1,8 +1,8 @@
glabel func_800BDD34
/* 0BE934 800BDD34 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 0BE938 800BDD38 AFB4002C */ sw $s4, 0x2c($sp)
/* 0BE93C 800BDD3C 3C14803B */ lui $s4, %hi(D_803B70B0) # $s4, 0x803b
/* 0BE940 800BDD40 269470B0 */ addiu $s4, %lo(D_803B70B0) # addiu $s4, $s4, 0x70b0
/* 0BE93C 800BDD3C 3C14803B */ lui $s4, %hi(gMaxSimultaneousNotes) # $s4, 0x803b
/* 0BE940 800BDD40 269470B0 */ addiu $s4, %lo(gMaxSimultaneousNotes) # addiu $s4, $s4, 0x70b0
/* 0BE944 800BDD44 8E8E0000 */ lw $t6, ($s4)
/* 0BE948 800BDD48 AFB10020 */ sw $s1, 0x20($sp)
/* 0BE94C 800BDD4C AFBF003C */ sw $ra, 0x3c($sp)
@@ -15,13 +15,13 @@ glabel func_800BDD34
/* 0BE968 800BDD68 F7B40010 */ sdc1 $f20, 0x10($sp)
/* 0BE96C 800BDD6C 19C0002A */ blez $t6, .L800BDE18
/* 0BE970 800BDD70 00008825 */ move $s1, $zero
/* 0BE974 800BDD74 3C17803B */ lui $s7, %hi(D_803AFBE8) # $s7, 0x803b
/* 0BE974 800BDD74 3C17803B */ lui $s7, %hi(gNotesAndBuffersPool) # $s7, 0x803b
/* 0BE978 800BDD78 3C16800F */ lui $s6, %hi(gZeroNoteSub) # $s6, 0x800f
/* 0BE97C 800BDD7C 3C15803B */ lui $s5, %hi(D_803B1508) # $s5, 0x803b
/* 0BE980 800BDD80 4480A000 */ mtc1 $zero, $f20
/* 0BE984 800BDD84 26B51508 */ addiu $s5, %lo(D_803B1508) # addiu $s5, $s5, 0x1508
/* 0BE988 800BDD88 26D66250 */ addiu $s6, %lo(gZeroNoteSub) # addiu $s6, $s6, 0x6250
/* 0BE98C 800BDD8C 26F7FBE8 */ addiu $s7, %lo(D_803AFBE8) # addiu $s7, $s7, -0x418
/* 0BE98C 800BDD8C 26F7FBE8 */ addiu $s7, %lo(gNotesAndBuffersPool) # addiu $s7, $s7, -0x418
/* 0BE990 800BDD90 00009025 */ move $s2, $zero
/* 0BE994 800BDD94 2413FFFF */ li $s3, -1
/* 0BE998 800BDD98 8EAF0000 */ lw $t7, ($s5)
@@ -48,7 +48,7 @@ glabel func_800BDD34
/* 0BE9E8 800BDDE8 A20000A0 */ sb $zero, 0xa0($s0)
/* 0BE9EC 800BDDEC E6140080 */ swc1 $f20, 0x80($s0)
/* 0BE9F0 800BDDF0 E6140084 */ swc1 $f20, 0x84($s0)
/* 0BE9F4 800BDDF4 0C02E3FF */ jal func_800B8FFC
/* 0BE9F4 800BDDF4 0C02E3FF */ jal soundAlloc
/* 0BE9F8 800BDDF8 AE1900BC */ sw $t9, 0xbc($s0)
/* 0BE9FC 800BDDFC AE02001C */ sw $v0, 0x1c($s0)
/* 0BEA00 800BDE00 8E880000 */ lw $t0, ($s4)
@@ -2,12 +2,12 @@ glabel create_next_audio_frame_task
/* 0CBF30 800CB330 3C03803B */ lui $v1, %hi(D_803B70B8) # $v1, 0x803b
/* 0CBF34 800CB334 246370B8 */ addiu $v1, %lo(D_803B70B8) # addiu $v1, $v1, 0x70b8
/* 0CBF38 800CB338 8C620000 */ lw $v0, ($v1)
/* 0CBF3C 800CB33C 3C18803B */ lui $t8, %hi(D_803B7088) # $t8, 0x803b
/* 0CBF3C 800CB33C 3C18803B */ lui $t8, %hi(gAudioBufferParameters) # $t8, 0x803b
/* 0CBF40 800CB340 27BDFF88 */ addiu $sp, $sp, -0x78
/* 0CBF44 800CB344 244E0001 */ addiu $t6, $v0, 1
/* 0CBF48 800CB348 AC6E0000 */ sw $t6, ($v1)
/* 0CBF4C 800CB34C 8C6F0000 */ lw $t7, ($v1)
/* 0CBF50 800CB350 87187088 */ lh $t8, %lo(D_803B7088)($t8)
/* 0CBF50 800CB350 87187088 */ lh $t8, %lo(gAudioBufferParameters)($t8)
/* 0CBF54 800CB354 AFBE0030 */ sw $fp, 0x30($sp)
/* 0CBF58 800CB358 03A0F025 */ move $fp, $sp
/* 0CBF5C 800CB35C 01F8001A */ div $zero, $t7, $t8
@@ -93,10 +93,10 @@ glabel create_next_audio_frame_task
/* 0CC080 800CB480 0C03443C */ jal osAiSetNextBuffer
/* 0CC084 800CB484 00032880 */ sll $a1, $v1, 2
.L800CB488:
/* 0CC088 800CB488 3C02803B */ lui $v0, %hi(D_803B70BC) # $v0, 0x803b
/* 0CC08C 800CB48C 8C5170BC */ lw $s1, %lo(D_803B70BC)($v0)
/* 0CC090 800CB490 3C12803B */ lui $s2, %hi(D_803B6008) # $s2, 0x803b
/* 0CC094 800CB494 26526008 */ addiu $s2, %lo(D_803B6008) # addiu $s2, $s2, 0x6008
/* 0CC088 800CB488 3C02803B */ lui $v0, %hi(gCurrAudioFrameDmaCount) # $v0, 0x803b
/* 0CC08C 800CB48C 8C5170BC */ lw $s1, %lo(gCurrAudioFrameDmaCount)($v0)
/* 0CC090 800CB490 3C12803B */ lui $s2, %hi(gCurrAudioFrameDmaQueue) # $s2, 0x803b
/* 0CC094 800CB494 26526008 */ addiu $s2, %lo(gCurrAudioFrameDmaQueue) # addiu $s2, $s2, 0x6008
/* 0CC098 800CB498 1A20000D */ blez $s1, .L800CB4D0
/* 0CC09C 800CB49C 00008025 */ move $s0, $zero
/* 0CC0A0 800CB4A0 02402025 */ move $a0, $s2
@@ -105,18 +105,18 @@ glabel create_next_audio_frame_task
/* 0CC0A8 800CB4A8 0C0335D4 */ jal osRecvMesg
/* 0CC0AC 800CB4AC 00003025 */ move $a2, $zero
/* 0CC0B0 800CB4B0 14400002 */ bnez $v0, .L800CB4BC
/* 0CC0B4 800CB4B4 3C09803B */ lui $t1, %hi(D_803B70BC) # $t1, 0x803b
/* 0CC0B4 800CB4B4 3C09803B */ lui $t1, %hi(gCurrAudioFrameDmaCount) # $t1, 0x803b
/* 0CC0B8 800CB4B8 2631FFFF */ addiu $s1, $s1, -1
.L800CB4BC:
/* 0CC0BC 800CB4BC 8D2970BC */ lw $t1, %lo(D_803B70BC)($t1)
/* 0CC0BC 800CB4BC 8D2970BC */ lw $t1, %lo(gCurrAudioFrameDmaCount)($t1)
/* 0CC0C0 800CB4C0 26100001 */ addiu $s0, $s0, 1
/* 0CC0C4 800CB4C4 0209082A */ slt $at, $s0, $t1
/* 0CC0C8 800CB4C8 5420FFF6 */ bnel $at, $zero, .L800CB4A4
/* 0CC0CC 800CB4CC 02402025 */ move $a0, $s2
.L800CB4D0:
/* 0CC0D0 800CB4D0 3C12803B */ lui $s2, %hi(D_803B6008) # $s2, 0x803b
/* 0CC0D0 800CB4D0 3C12803B */ lui $s2, %hi(gCurrAudioFrameDmaQueue) # $s2, 0x803b
/* 0CC0D4 800CB4D4 1220000A */ beqz $s1, .L800CB500
/* 0CC0D8 800CB4D8 26526008 */ addiu $s2, %lo(D_803B6008) # addiu $s2, $s2, 0x6008
/* 0CC0D8 800CB4D8 26526008 */ addiu $s2, %lo(gCurrAudioFrameDmaQueue) # addiu $s2, $s2, 0x6008
/* 0CC0DC 800CB4DC 1A200008 */ blez $s1, .L800CB500
/* 0CC0E0 800CB4E0 00008025 */ move $s0, $zero
/* 0CC0E4 800CB4E4 02402025 */ move $a0, $s2
@@ -142,9 +142,9 @@ glabel create_next_audio_frame_task
/* 0CC128 800CB528 5611FFFB */ bnel $s0, $s1, .L800CB518
/* 0CC12C 800CB52C 02402025 */ move $a0, $s2
.L800CB530:
/* 0CC130 800CB530 3C01803B */ lui $at, %hi(D_803B70BC) # $at, 0x803b
/* 0CC130 800CB530 3C01803B */ lui $at, %hi(gCurrAudioFrameDmaCount) # $at, 0x803b
/* 0CC134 800CB534 0C02EB01 */ jal func_800BAC04
/* 0CC138 800CB538 AC2070BC */ sw $zero, %lo(D_803B70BC)($at)
/* 0CC138 800CB538 AC2070BC */ sw $zero, %lo(gCurrAudioFrameDmaCount)($at)
/* 0CC13C 800CB53C 3C04800F */ lui $a0, %hi(D_800EA3B0) # $a0, 0x800f
/* 0CC140 800CB540 8C84A3B0 */ lw $a0, %lo(D_800EA3B0)($a0)
/* 0CC144 800CB544 27C50058 */ addiu $a1, $fp, 0x58
@@ -205,8 +205,8 @@ glabel create_next_audio_frame_task
/* 0CC214 800CB614 012A3821 */ addu $a3, $t1, $t2
/* 0CC218 800CB618 AC2870D0 */ sw $t0, %lo(D_803B70D0)($at)
/* 0CC21C 800CB61C 8CEB0000 */ lw $t3, ($a3)
/* 0CC220 800CB620 3C05803B */ lui $a1, %hi(D_803B7088) # $a1, 0x803b
/* 0CC224 800CB624 24A57088 */ addiu $a1, %lo(D_803B7088) # addiu $a1, $a1, 0x7088
/* 0CC220 800CB620 3C05803B */ lui $a1, %hi(gAudioBufferParameters) # $a1, 0x803b
/* 0CC224 800CB624 24A57088 */ addiu $a1, %lo(gAudioBufferParameters) # addiu $a1, $a1, 0x7088
/* 0CC228 800CB628 AFCB0060 */ sw $t3, 0x60($fp)
/* 0CC22C 800CB62C 84AE0006 */ lh $t6, 6($a1)
/* 0CC230 800CB630 8FCF0074 */ lw $t7, 0x74($fp)
@@ -1,6 +1,6 @@
glabel func_800B7034
/* 0B7C34 800B7034 3C08803B */ lui $t0, %hi(D_803B70B0) # $t0, 0x803b
/* 0B7C38 800B7038 250870B0 */ addiu $t0, %lo(D_803B70B0) # addiu $t0, $t0, 0x70b0
/* 0B7C34 800B7034 3C08803B */ lui $t0, %hi(gMaxSimultaneousNotes) # $t0, 0x803b
/* 0B7C38 800B7038 250870B0 */ addiu $t0, %lo(gMaxSimultaneousNotes) # addiu $t0, $t0, 0x70b0
/* 0B7C3C 800B703C 8D030000 */ lw $v1, ($t0)
/* 0B7C40 800B7040 00803825 */ move $a3, $a0
/* 0B7C44 800B7044 00001025 */ move $v0, $zero
@@ -1,8 +1,8 @@
glabel func_800B70EC
/* 0B7CEC 800B70EC 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 0B7CF0 800B70F0 AFB5002C */ sw $s5, 0x2c($sp)
/* 0B7CF4 800B70F4 3C15803B */ lui $s5, %hi(D_803B7088) # $s5, 0x803b
/* 0B7CF8 800B70F8 26B57088 */ addiu $s5, %lo(D_803B7088) # addiu $s5, $s5, 0x7088
/* 0B7CF4 800B70F4 3C15803B */ lui $s5, %hi(gAudioBufferParameters) # $s5, 0x803b
/* 0B7CF8 800B70F8 26B57088 */ addiu $s5, %lo(gAudioBufferParameters) # addiu $s5, $s5, 0x7088
/* 0B7CFC 800B70FC AFB40028 */ sw $s4, 0x28($sp)
/* 0B7D00 800B7100 86B4000C */ lh $s4, 0xc($s5)
/* 0B7D04 800B7104 AFB60030 */ sw $s6, 0x30($sp)
@@ -19,8 +19,8 @@ glabel func_800B775C
/* 0B83A0 800B77A0 AFA500C4 */ sw $a1, 0xc4($sp)
/* 0B83A4 800B77A4 1520001D */ bnez $t1, .L800B781C
/* 0B83A8 800B77A8 00009025 */ move $s2, $zero
/* 0B83AC 800B77AC 3C04803B */ lui $a0, %hi(D_803B70B0) # $a0, 0x803b
/* 0B83B0 800B77B0 8C8470B0 */ lw $a0, %lo(D_803B70B0)($a0)
/* 0B83AC 800B77AC 3C04803B */ lui $a0, %hi(gMaxSimultaneousNotes) # $a0, 0x803b
/* 0B83B0 800B77B0 8C8470B0 */ lw $a0, %lo(gMaxSimultaneousNotes)($a0)
/* 0B83B4 800B77B4 00008825 */ move $s1, $zero
/* 0B83B8 800B77B8 18800016 */ blez $a0, .L800B7814
/* 0B83BC 800B77BC 00000000 */ nop
@@ -53,8 +53,8 @@ glabel func_800B775C
.L800B781C:
/* 0B841C 800B781C 19200026 */ blez $t1, .L800B78B8
/* 0B8420 800B7820 00009825 */ move $s3, $zero
/* 0B8424 800B7824 3C04803B */ lui $a0, %hi(D_803B70B0) # $a0, 0x803b
/* 0B8428 800B7828 8C8470B0 */ lw $a0, %lo(D_803B70B0)($a0)
/* 0B8424 800B7824 3C04803B */ lui $a0, %hi(gMaxSimultaneousNotes) # $a0, 0x803b
/* 0B8428 800B7828 8C8470B0 */ lw $a0, %lo(gMaxSimultaneousNotes)($a0)
/* 0B842C 800B782C 27A50084 */ addiu $a1, $sp, 0x84
.L800B7830:
/* 0B8430 800B7830 1880001A */ blez $a0, .L800B789C
@@ -95,8 +95,8 @@ glabel func_800B775C
/* 0B84B0 800B78B0 00000000 */ nop
/* 0B84B4 800B78B4 00009825 */ move $s3, $zero
.L800B78B8:
/* 0B84B8 800B78B8 3C04803B */ lui $a0, %hi(D_803B70B0) # $a0, 0x803b
/* 0B84BC 800B78BC 8C8470B0 */ lw $a0, %lo(D_803B70B0)($a0)
/* 0B84B8 800B78B8 3C04803B */ lui $a0, %hi(gMaxSimultaneousNotes) # $a0, 0x803b
/* 0B84BC 800B78BC 8C8470B0 */ lw $a0, %lo(gMaxSimultaneousNotes)($a0)
/* 0B84C0 800B78C0 27A50084 */ addiu $a1, $sp, 0x84
/* 0B84C4 800B78C4 00008825 */ move $s1, $zero
/* 0B84C8 800B78C8 5880001D */ blezl $a0, .L800B7940
@@ -176,8 +176,8 @@ glabel func_800B775C
/* 0B85D8 800B79D8 27B80084 */ addiu $t8, $sp, 0x84
/* 0B85DC 800B79DC 02388021 */ addu $s0, $s1, $t8
.L800B79E0:
/* 0B85E0 800B79E0 3C19803B */ lui $t9, %hi(D_803B70B0) # $t9, 0x803b
/* 0B85E4 800B79E4 8F3970B0 */ lw $t9, %lo(D_803B70B0)($t9)
/* 0B85E0 800B79E0 3C19803B */ lui $t9, %hi(gMaxSimultaneousNotes) # $t9, 0x803b
/* 0B85E4 800B79E4 8F3970B0 */ lw $t9, %lo(gMaxSimultaneousNotes)($t9)
/* 0B85E8 800B79E8 92030000 */ lbu $v1, ($s0)
/* 0B85EC 800B79EC 8EC80000 */ lw $t0, ($s6)
/* 0B85F0 800B79F0 02B90019 */ multu $s5, $t9
@@ -245,8 +245,8 @@ glabel func_800B775C
/* 0B86D8 800B7AD8 022E8021 */ addu $s0, $s1, $t6
/* 0B86DC 800B7ADC 24130001 */ li $s3, 1
.L800B7AE0:
/* 0B86E0 800B7AE0 3C18803B */ lui $t8, %hi(D_803B70B0) # $t8, 0x803b
/* 0B86E4 800B7AE4 8F1870B0 */ lw $t8, %lo(D_803B70B0)($t8)
/* 0B86E0 800B7AE0 3C18803B */ lui $t8, %hi(gMaxSimultaneousNotes) # $t8, 0x803b
/* 0B86E4 800B7AE4 8F1870B0 */ lw $t8, %lo(gMaxSimultaneousNotes)($t8)
/* 0B86E8 800B7AE8 92030000 */ lbu $v1, ($s0)
/* 0B86EC 800B7AEC 8EC80000 */ lw $t0, ($s6)
/* 0B86F0 800B7AF0 02B80019 */ multu $s5, $t8
@@ -1,15 +1,15 @@
glabel synthesis_load_note_subs_eu
/* 0B7BB4 800B6FB4 3C06803B */ lui $a2, %hi(D_803B7088) # $a2, 0x803b
/* 0B7BB8 800B6FB8 24C67088 */ addiu $a2, %lo(D_803B7088) # addiu $a2, $a2, 0x7088
/* 0B7BB4 800B6FB4 3C06803B */ lui $a2, %hi(gAudioBufferParameters) # $a2, 0x803b
/* 0B7BB8 800B6FB8 24C67088 */ addiu $a2, %lo(gAudioBufferParameters) # addiu $a2, $a2, 0x7088
/* 0B7BBC 800B6FBC 84CE000C */ lh $t6, 0xc($a2)
/* 0B7BC0 800B6FC0 24820001 */ addiu $v0, $a0, 1
/* 0B7BC4 800B6FC4 00051900 */ sll $v1, $a1, 4
/* 0B7BC8 800B6FC8 004E082A */ slt $at, $v0, $t6
/* 0B7BCC 800B6FCC 10200017 */ beqz $at, .L800B702C
/* 0B7BD0 800B6FD0 3C07803B */ lui $a3, %hi(D_803B70B0) # $a3, 0x803b
/* 0B7BD0 800B6FD0 3C07803B */ lui $a3, %hi(gMaxSimultaneousNotes) # $a3, 0x803b
/* 0B7BD4 800B6FD4 3C05803B */ lui $a1, %hi(gNoteSubsEu) # $a1, 0x803b
/* 0B7BD8 800B6FD8 24A5FBC4 */ addiu $a1, %lo(gNoteSubsEu) # addiu $a1, $a1, -0x43c
/* 0B7BDC 800B6FDC 24E770B0 */ addiu $a3, %lo(D_803B70B0) # addiu $a3, $a3, 0x70b0
/* 0B7BDC 800B6FDC 24E770B0 */ addiu $a3, %lo(gMaxSimultaneousNotes) # addiu $a3, $a3, 0x70b0
/* 0B7BE0 800B6FE0 8CF80000 */ lw $t8, ($a3)
.L800B6FE4:
/* 0B7BE4 800B6FE4 8CAF0000 */ lw $t7, ($a1)
+82 -182
View File
@@ -1427,202 +1427,102 @@ glabel gKartWarioGroup17
.word gKartWario281, gKartWario282, gKartWario283, gKartWario284
.word gKartWario285, gKartWario286, gKartWario287, gKartWario288
glabel gKartMarioTable0
.word gKartMarioGroup8, gKartMarioGroup7, gKartMarioGroup6, gKartMarioGroup5
.word gKartMarioGroup4, gKartMarioGroup3, gKartMarioGroup2, gKartMarioGroup1
.word gKartMarioGroup0
#glabel gKartMarioTable0
#.word gKartMarioGroup8, gKartMarioGroup7, gKartMarioGroup6, gKartMarioGroup5
#.word gKartMarioGroup4, gKartMarioGroup3, gKartMarioGroup2, gKartMarioGroup1
#.word gKartMarioGroup0
glabel gKartLuigiTable0
.word gKartLuigiGroup8, gKartLuigiGroup7, gKartLuigiGroup6, gKartLuigiGroup5
.word gKartLuigiGroup4, gKartLuigiGroup3, gKartLuigiGroup2, gKartLuigiGroup1
.word gKartLuigiGroup0
#glabel gKartLuigiTable0
#.word gKartLuigiGroup8, gKartLuigiGroup7, gKartLuigiGroup6, gKartLuigiGroup5
#.word gKartLuigiGroup4, gKartLuigiGroup3, gKartLuigiGroup2, gKartLuigiGroup1
#.word gKartLuigiGroup0
glabel gKartYoshiTable0
.word gKartYoshiGroup8, gKartYoshiGroup7, gKartYoshiGroup6, gKartYoshiGroup5
.word gKartYoshiGroup4, gKartYoshiGroup3, gKartYoshiGroup2, gKartYoshiGroup1
.word gKartYoshiGroup0
#glabel gKartYoshiTable0
#.word gKartYoshiGroup8, gKartYoshiGroup7, gKartYoshiGroup6, gKartYoshiGroup5
#.word gKartYoshiGroup4, gKartYoshiGroup3, gKartYoshiGroup2, gKartYoshiGroup1
#.word gKartYoshiGroup0
glabel gKartToadTable0
.word gKartToadGroup8, gKartToadGroup7, gKartToadGroup6, gKartToadGroup5
.word gKartToadGroup4, gKartToadGroup3, gKartToadGroup2, gKartToadGroup1
.word gKartToadGroup0
#glabel gKartToadTable0
#.word gKartToadGroup8, gKartToadGroup7, gKartToadGroup6, gKartToadGroup5
#.word gKartToadGroup4, gKartToadGroup3, gKartToadGroup2, gKartToadGroup1
#.word gKartToadGroup0
glabel gKartDKTable0
.word gKartDKGroup8, gKartDKGroup7, gKartDKGroup6, gKartDKGroup5
.word gKartDKGroup4, gKartDKGroup3, gKartDKGroup2, gKartDKGroup1
.word gKartDKGroup0
#glabel gKartDKTable0
#.word gKartDKGroup8, gKartDKGroup7, gKartDKGroup6, gKartDKGroup5
#.word gKartDKGroup4, gKartDKGroup3, gKartDKGroup2, gKartDKGroup1
#.word gKartDKGroup0
glabel gKartWarioTable0
.word gKartWarioGroup8, gKartWarioGroup7, gKartWarioGroup6, gKartWarioGroup5
.word gKartWarioGroup4, gKartWarioGroup3, gKartWarioGroup2, gKartWarioGroup1
.word gKartWarioGroup0
#glabel gKartWarioTable0
#.word gKartWarioGroup8, gKartWarioGroup7, gKartWarioGroup6, gKartWarioGroup5
#.word gKartWarioGroup4, gKartWarioGroup3, gKartWarioGroup2, gKartWarioGroup1
#.word gKartWarioGroup0
glabel gKartPeachTable0
.word gKartPeachGroup8, gKartPeachGroup7, gKartPeachGroup6, gKartPeachGroup5
.word gKartPeachGroup4, gKartPeachGroup3, gKartPeachGroup2, gKartPeachGroup1
.word gKartPeachGroup0
#glabel gKartPeachTable0
#.word gKartPeachGroup8, gKartPeachGroup7, gKartPeachGroup6, gKartPeachGroup5
#.word gKartPeachGroup4, gKartPeachGroup3, gKartPeachGroup2, gKartPeachGroup1
#.word gKartPeachGroup0
glabel gKartBowserTable0
.word gKartBowserGroup8, gKartBowserGroup7, gKartBowserGroup6, gKartBowserGroup5
.word gKartBowserGroup4, gKartBowserGroup3, gKartBowserGroup2, gKartBowserGroup1
.word gKartBowserGroup0
#glabel gKartBowserTable0
#.word gKartBowserGroup8, gKartBowserGroup7, gKartBowserGroup6, gKartBowserGroup5
#.word gKartBowserGroup4, gKartBowserGroup3, gKartBowserGroup2, gKartBowserGroup1
#.word gKartBowserGroup0
glabel gKartMarioTable1
.word gKartMarioGroup17, gKartMarioGroup16, gKartMarioGroup15, gKartMarioGroup14
.word gKartMarioGroup13, gKartMarioGroup12, gKartMarioGroup11, gKartMarioGroup10
.word gKartMarioGroup9
#glabel gKartMarioTable1
#.word gKartMarioGroup17, gKartMarioGroup16, gKartMarioGroup15, gKartMarioGroup14
#.word gKartMarioGroup13, gKartMarioGroup12, gKartMarioGroup11, gKartMarioGroup10
#.word gKartMarioGroup9
glabel gKartLuigiTable1
.word gKartLuigiGroup17, gKartLuigiGroup16, gKartLuigiGroup15, gKartLuigiGroup14
.word gKartLuigiGroup13, gKartLuigiGroup12, gKartLuigiGroup11, gKartLuigiGroup10
.word gKartLuigiGroup9
#glabel gKartLuigiTable1
#.word gKartLuigiGroup17, gKartLuigiGroup16, gKartLuigiGroup15, gKartLuigiGroup14
#.word gKartLuigiGroup13, gKartLuigiGroup12, gKartLuigiGroup11, gKartLuigiGroup10
#.word gKartLuigiGroup9
glabel gKartYoshiTable1
.word gKartYoshiGroup17, gKartYoshiGroup16, gKartYoshiGroup15, gKartYoshiGroup14
.word gKartYoshiGroup13, gKartYoshiGroup12, gKartYoshiGroup11, gKartYoshiGroup10
.word gKartYoshiGroup9
#glabel gKartYoshiTable1
#.word gKartYoshiGroup17, gKartYoshiGroup16, gKartYoshiGroup15, gKartYoshiGroup14
#.word gKartYoshiGroup13, gKartYoshiGroup12, gKartYoshiGroup11, gKartYoshiGroup10
#.word gKartYoshiGroup9
glabel gKartToadTable1
.word gKartToadGroup17, gKartToadGroup16, gKartToadGroup15, gKartToadGroup14
.word gKartToadGroup13, gKartToadGroup12, gKartToadGroup11, gKartToadGroup10
.word gKartToadGroup9
#glabel gKartToadTable1
#.word gKartToadGroup17, gKartToadGroup16, gKartToadGroup15, gKartToadGroup14
#.word gKartToadGroup13, gKartToadGroup12, gKartToadGroup11, gKartToadGroup10
#.word gKartToadGroup9
glabel gKartDKTable1
.word gKartDKGroup17, gKartDKGroup16, gKartDKGroup15, gKartDKGroup14
.word gKartDKGroup13, gKartDKGroup12, gKartDKGroup11, gKartDKGroup10
.word gKartDKGroup9
#glabel gKartDKTable1
#.word gKartDKGroup17, gKartDKGroup16, gKartDKGroup15, gKartDKGroup14
#.word gKartDKGroup13, gKartDKGroup12, gKartDKGroup11, gKartDKGroup10
#.word gKartDKGroup9
glabel gKartWarioTable1
.word gKartWarioGroup17, gKartWarioGroup16, gKartWarioGroup15, gKartWarioGroup14
.word gKartWarioGroup13, gKartWarioGroup12, gKartWarioGroup11, gKartWarioGroup10
.word gKartWarioGroup9
#glabel gKartWarioTable1
#.word gKartWarioGroup17, gKartWarioGroup16, gKartWarioGroup15, gKartWarioGroup14
#.word gKartWarioGroup13, gKartWarioGroup12, gKartWarioGroup11, gKartWarioGroup10
#.word gKartWarioGroup9
glabel gKartPeachTable1
.word gKartPeachGroup17, gKartPeachGroup16, gKartPeachGroup15, gKartPeachGroup14
.word gKartPeachGroup13, gKartPeachGroup12, gKartPeachGroup11, gKartPeachGroup10
.word gKartPeachGroup9
#glabel gKartPeachTable1
#.word gKartPeachGroup17, gKartPeachGroup16, gKartPeachGroup15, gKartPeachGroup14
#.word gKartPeachGroup13, gKartPeachGroup12, gKartPeachGroup11, gKartPeachGroup10
#.word gKartPeachGroup9
glabel gKartBowserTable1
.word gKartBowserGroup17, gKartBowserGroup16, gKartBowserGroup15, gKartBowserGroup14
.word gKartBowserGroup13, gKartBowserGroup12, gKartBowserGroup11, gKartBowserGroup10
.word gKartBowserGroup9
#glabel gKartBowserTable1
#.word gKartBowserGroup17, gKartBowserGroup16, gKartBowserGroup15, gKartBowserGroup14
#.word gKartBowserGroup13, gKartBowserGroup12, gKartBowserGroup11, gKartBowserGroup10
#.word gKartBowserGroup9
glabel gKartTextureTable0
.word gKartMarioTable0
.word gKartLuigiTable0
.word gKartYoshiTable0
.word gKartToadTable0
.word gKartDKTable0
.word gKartWarioTable0
.word gKartPeachTable0
.word gKartBowserTable0
#glabel gKartTextureTable0
#.word gKartMarioTable0
#.word gKartLuigiTable0
#.word gKartYoshiTable0
#.word gKartToadTable0
#.word gKartDKTable0
#.word gKartWarioTable0
#.word gKartPeachTable0
#.word gKartBowserTable0
glabel gKartTextureTable1
.word gKartMarioTable1
.word gKartLuigiTable1
.word gKartYoshiTable1
.word gKartToadTable1
.word gKartDKTable1
.word gKartWarioTable1
.word gKartPeachTable1
.word gKartBowserTable1
glabel gKartMarioGroup18
.word gKartMario289, gKartMario290, gKartMario291, gKartMario292
.word gKartMario293, gKartMario294, gKartMario295, gKartMario296
.word gKartMario297, gKartMario298, gKartMario299, gKartMario300
.word gKartMario301, gKartMario302, gKartMario303, gKartMario304
.word gKartMario305, gKartMario306, gKartMario307, gKartMario308
.word gKartMario309, gKartMario310, gKartMario311, gKartMario312
.word gKartMario313, gKartMario314, gKartMario315, gKartMario316
.word gKartMario317, gKartMario318, gKartMario319, gKartMario320
glabel gKartLuigiGroup18
.word gKartLuigi289, gKartLuigi290, gKartLuigi291, gKartLuigi292
.word gKartLuigi293, gKartLuigi294, gKartLuigi295, gKartLuigi296
.word gKartLuigi297, gKartLuigi298, gKartLuigi299, gKartLuigi300
.word gKartLuigi301, gKartLuigi302, gKartLuigi303, gKartLuigi304
.word gKartLuigi305, gKartLuigi306, gKartLuigi307, gKartLuigi308
.word gKartLuigi309, gKartLuigi310, gKartLuigi311, gKartLuigi312
.word gKartLuigi313, gKartLuigi314, gKartLuigi315, gKartLuigi316
.word gKartLuigi317, gKartLuigi318, gKartLuigi319, gKartLuigi320
glabel gKartBowserGroup18
.word gKartBowser289, gKartBowser290, gKartBowser291, gKartBowser292
.word gKartBowser293, gKartBowser294, gKartBowser295, gKartBowser296
.word gKartBowser297, gKartBowser298, gKartBowser299, gKartBowser300
.word gKartBowser301, gKartBowser302, gKartBowser303, gKartBowser304
.word gKartBowser305, gKartBowser306, gKartBowser307, gKartBowser308
.word gKartBowser309, gKartBowser310, gKartBowser311, gKartBowser312
.word gKartBowser313, gKartBowser314, gKartBowser315, gKartBowser316
.word gKartBowser317, gKartBowser318, gKartBowser319, gKartBowser320
glabel gKartToadGroup18
.word gKartToad289, gKartToad290, gKartToad291, gKartToad292
.word gKartToad293, gKartToad294, gKartToad295, gKartToad296
.word gKartToad297, gKartToad298, gKartToad299, gKartToad300
.word gKartToad301, gKartToad302, gKartToad303, gKartToad304
.word gKartToad305, gKartToad306, gKartToad307, gKartToad308
.word gKartToad309, gKartToad310, gKartToad311, gKartToad312
.word gKartToad313, gKartToad314, gKartToad315, gKartToad316
.word gKartToad317, gKartToad318, gKartToad319, gKartToad320
glabel gKartYoshiGroup18
.word gKartYoshi289, gKartYoshi290, gKartYoshi291, gKartYoshi292
.word gKartYoshi293, gKartYoshi294, gKartYoshi295, gKartYoshi296
.word gKartYoshi297, gKartYoshi298, gKartYoshi299, gKartYoshi300
.word gKartYoshi301, gKartYoshi302, gKartYoshi303, gKartYoshi304
.word gKartYoshi305, gKartYoshi306, gKartYoshi307, gKartYoshi308
.word gKartYoshi309, gKartYoshi310, gKartYoshi311, gKartYoshi312
.word gKartYoshi313, gKartYoshi314, gKartYoshi315, gKartYoshi316
.word gKartYoshi317, gKartYoshi318, gKartYoshi319, gKartYoshi320
glabel gKartDKGroup18
.word gKartDK289, gKartDK290, gKartDK291, gKartDK292
.word gKartDK293, gKartDK294, gKartDK295, gKartDK296
.word gKartDK297, gKartDK298, gKartDK299, gKartDK300
.word gKartDK301, gKartDK302, gKartDK303, gKartDK304
.word gKartDK305, gKartDK306, gKartDK307, gKartDK308
.word gKartDK309, gKartDK310, gKartDK311, gKartDK312
.word gKartDK313, gKartDK314, gKartDK315, gKartDK316
.word gKartDK317, gKartDK318, gKartDK319, gKartDK320
glabel gKartPeachGroup18
.word gKartPeach289, gKartPeach290, gKartPeach291, gKartPeach292
.word gKartPeach293, gKartPeach294, gKartPeach295, gKartPeach296
.word gKartPeach297, gKartPeach298, gKartPeach299, gKartPeach300
.word gKartPeach301, gKartPeach302, gKartPeach303, gKartPeach304
.word gKartPeach305, gKartPeach306, gKartPeach307, gKartPeach308
.word gKartPeach309, gKartPeach310, gKartPeach311, gKartPeach312
.word gKartPeach313, gKartPeach314, gKartPeach315, gKartPeach316
.word gKartPeach317, gKartPeach318, gKartPeach319, gKartPeach320
glabel gKartWarioGroup18
.word gKartWario289, gKartWario290, gKartWario291, gKartWario292
.word gKartWario293, gKartWario294, gKartWario295, gKartWario296
.word gKartWario297, gKartWario298, gKartWario299, gKartWario300
.word gKartWario301, gKartWario302, gKartWario303, gKartWario304
.word gKartWario305, gKartWario306, gKartWario307, gKartWario308
.word gKartWario309, gKartWario310, gKartWario311, gKartWario312
.word gKartWario313, gKartWario314, gKartWario315, gKartWario316
.word gKartWario317, gKartWario318, gKartWario319, gKartWario320
glabel gKartTextureGroup18s
.word gKartMarioGroup18
.word gKartLuigiGroup18
.word gKartYoshiGroup18
.word gKartToadGroup18
.word gKartDKGroup18
.word gKartWarioGroup18
.word gKartPeachGroup18
.word gKartBowserGroup18
glabel gKartPalettes
.word gKartMarioPalette
.word gKartLuigiPalette
.word gKartYoshiPalette
.word gKartToadPalette
.word gKartDKPalette
.word gKartWarioPalette
.word gKartPeachPalette
.word gKartBowserPalette
#glabel gKartTextureTable1
#.word gKartMarioTable1
#.word gKartLuigiTable1
#.word gKartYoshiTable1
#.word gKartToadTable1
#.word gKartDKTable1
#.word gKartWarioTable1
#.word gKartPeachTable1
#.word gKartBowserTable1
+106
View File
@@ -0,0 +1,106 @@
# Mario Kart 64 (U) disassembly and split file
# generated by n64split v0.4a - N64 ROM splitter
.include "macros.inc"
.section .data
glabel gKartMarioGroup18
.word gKartMario289, gKartMario290, gKartMario291, gKartMario292
.word gKartMario293, gKartMario294, gKartMario295, gKartMario296
.word gKartMario297, gKartMario298, gKartMario299, gKartMario300
.word gKartMario301, gKartMario302, gKartMario303, gKartMario304
.word gKartMario305, gKartMario306, gKartMario307, gKartMario308
.word gKartMario309, gKartMario310, gKartMario311, gKartMario312
.word gKartMario313, gKartMario314, gKartMario315, gKartMario316
.word gKartMario317, gKartMario318, gKartMario319, gKartMario320
glabel gKartLuigiGroup18
.word gKartLuigi289, gKartLuigi290, gKartLuigi291, gKartLuigi292
.word gKartLuigi293, gKartLuigi294, gKartLuigi295, gKartLuigi296
.word gKartLuigi297, gKartLuigi298, gKartLuigi299, gKartLuigi300
.word gKartLuigi301, gKartLuigi302, gKartLuigi303, gKartLuigi304
.word gKartLuigi305, gKartLuigi306, gKartLuigi307, gKartLuigi308
.word gKartLuigi309, gKartLuigi310, gKartLuigi311, gKartLuigi312
.word gKartLuigi313, gKartLuigi314, gKartLuigi315, gKartLuigi316
.word gKartLuigi317, gKartLuigi318, gKartLuigi319, gKartLuigi320
glabel gKartBowserGroup18
.word gKartBowser289, gKartBowser290, gKartBowser291, gKartBowser292
.word gKartBowser293, gKartBowser294, gKartBowser295, gKartBowser296
.word gKartBowser297, gKartBowser298, gKartBowser299, gKartBowser300
.word gKartBowser301, gKartBowser302, gKartBowser303, gKartBowser304
.word gKartBowser305, gKartBowser306, gKartBowser307, gKartBowser308
.word gKartBowser309, gKartBowser310, gKartBowser311, gKartBowser312
.word gKartBowser313, gKartBowser314, gKartBowser315, gKartBowser316
.word gKartBowser317, gKartBowser318, gKartBowser319, gKartBowser320
glabel gKartToadGroup18
.word gKartToad289, gKartToad290, gKartToad291, gKartToad292
.word gKartToad293, gKartToad294, gKartToad295, gKartToad296
.word gKartToad297, gKartToad298, gKartToad299, gKartToad300
.word gKartToad301, gKartToad302, gKartToad303, gKartToad304
.word gKartToad305, gKartToad306, gKartToad307, gKartToad308
.word gKartToad309, gKartToad310, gKartToad311, gKartToad312
.word gKartToad313, gKartToad314, gKartToad315, gKartToad316
.word gKartToad317, gKartToad318, gKartToad319, gKartToad320
glabel gKartYoshiGroup18
.word gKartYoshi289, gKartYoshi290, gKartYoshi291, gKartYoshi292
.word gKartYoshi293, gKartYoshi294, gKartYoshi295, gKartYoshi296
.word gKartYoshi297, gKartYoshi298, gKartYoshi299, gKartYoshi300
.word gKartYoshi301, gKartYoshi302, gKartYoshi303, gKartYoshi304
.word gKartYoshi305, gKartYoshi306, gKartYoshi307, gKartYoshi308
.word gKartYoshi309, gKartYoshi310, gKartYoshi311, gKartYoshi312
.word gKartYoshi313, gKartYoshi314, gKartYoshi315, gKartYoshi316
.word gKartYoshi317, gKartYoshi318, gKartYoshi319, gKartYoshi320
glabel gKartDKGroup18
.word gKartDK289, gKartDK290, gKartDK291, gKartDK292
.word gKartDK293, gKartDK294, gKartDK295, gKartDK296
.word gKartDK297, gKartDK298, gKartDK299, gKartDK300
.word gKartDK301, gKartDK302, gKartDK303, gKartDK304
.word gKartDK305, gKartDK306, gKartDK307, gKartDK308
.word gKartDK309, gKartDK310, gKartDK311, gKartDK312
.word gKartDK313, gKartDK314, gKartDK315, gKartDK316
.word gKartDK317, gKartDK318, gKartDK319, gKartDK320
glabel gKartPeachGroup18
.word gKartPeach289, gKartPeach290, gKartPeach291, gKartPeach292
.word gKartPeach293, gKartPeach294, gKartPeach295, gKartPeach296
.word gKartPeach297, gKartPeach298, gKartPeach299, gKartPeach300
.word gKartPeach301, gKartPeach302, gKartPeach303, gKartPeach304
.word gKartPeach305, gKartPeach306, gKartPeach307, gKartPeach308
.word gKartPeach309, gKartPeach310, gKartPeach311, gKartPeach312
.word gKartPeach313, gKartPeach314, gKartPeach315, gKartPeach316
.word gKartPeach317, gKartPeach318, gKartPeach319, gKartPeach320
glabel gKartWarioGroup18
.word gKartWario289, gKartWario290, gKartWario291, gKartWario292
.word gKartWario293, gKartWario294, gKartWario295, gKartWario296
.word gKartWario297, gKartWario298, gKartWario299, gKartWario300
.word gKartWario301, gKartWario302, gKartWario303, gKartWario304
.word gKartWario305, gKartWario306, gKartWario307, gKartWario308
.word gKartWario309, gKartWario310, gKartWario311, gKartWario312
.word gKartWario313, gKartWario314, gKartWario315, gKartWario316
.word gKartWario317, gKartWario318, gKartWario319, gKartWario320
glabel gKartTextureGroup18s
.word gKartMarioGroup18
.word gKartLuigiGroup18
.word gKartYoshiGroup18
.word gKartToadGroup18
.word gKartDKGroup18
.word gKartWarioGroup18
.word gKartPeachGroup18
.word gKartBowserGroup18
glabel gKartPalettes
.word gKartMarioPalette
.word gKartLuigiPalette
.word gKartYoshiPalette
.word gKartToadPalette
.word gKartDKPalette
.word gKartWarioPalette
.word gKartPeachPalette
.word gKartBowserPalette
+6 -766
View File
@@ -2683,770 +2683,10 @@ glabel D_800E9300
.balign 0x10
glabel D_800E9310
.asciiz "Romcopy %x -> %x ,size %x\n"
.balign 4
#glabel D_800E9310
#.asciiz "Romcopy %x -> %x ,size %x\n"
#.balign 4
glabel D_800E932C
.asciiz "Romcopyend\n"
.balign 4
glabel D_800E9338
.asciiz "CAUTION:WAVE CACHE FULL %d"
.balign 4
glabel D_800E9354
.asciiz "LOAD Rom :%x -> Ram :%x Len:%x\n"
.balign 4
glabel D_800E9378
.asciiz "BASE %x %x\n"
.balign 4
glabel D_800E9384
.asciiz "LOAD %x %x %x\n"
.balign 4
glabel D_800E9394
.asciiz "INSTTOP %x\n"
.balign 4
glabel D_800E93A4
.asciiz "INSTMAP[0] %x\n"
.balign 4
glabel D_800E93B4
.asciiz "already flags %d\n"
.balign 4
glabel D_800E93C8
.asciiz "already flags %d\n"
.balign 4
glabel D_800E93DC
.asciiz "ERR:SLOW BANK DMA BUSY\n"
.balign 4
glabel D_800E93F4
.asciiz "ERR:SLOW DMA BUSY\n"
.balign 4
glabel D_800E9408
.asciiz "Check %d bank %d\n"
.balign 4
glabel D_800E941C
.asciiz "Cache Check\n"
.balign 4
glabel D_800E942C
.asciiz "NO BANK ERROR\n"
.balign 4
glabel D_800E943C
.asciiz "BANK %d LOADING START\n"
.balign 4
glabel D_800E9454
.asciiz "BANK %d LOAD MISS (NO MEMORY)!\n"
.balign 4
glabel D_800E9474
.asciiz "BANK %d ALREADY CACHED\n"
.balign 4
glabel D_800E948C
.asciiz "BANK LOAD MISS! FOR %d\n"
.balign 4
glabel D_800E94A4
.asciiz "Seq %d Loading Start\n"
.balign 4
glabel D_800E94BC
.asciiz "Heap Overflow Error\n"
.balign 4
glabel D_800E94D4
.asciiz "SEQ %d ALREADY CACHED\n"
.balign 4
glabel D_800E94EC
.asciiz "Ok,one bank slow load Start \n"
.balign 4
glabel D_800E950C
.asciiz "Sorry,too many %d bank is none.fast load Start \n"
.balign 4
glabel D_800E9540
.asciiz "Seq %d:Default Load Id is %d\n"
.balign 4
glabel D_800E9560
.asciiz "Seq Loading Start\n"
.balign 4
glabel D_800E9574
.asciiz "Error:Before Sequence-SlowDma remain.\n"
.balign 4
glabel D_800E959C
.asciiz " Cancel Seq Start.\n"
.balign 4
glabel D_800E95B8
.asciiz "SEQ %d ALREADY CACHED\n"
.balign 4
glabel D_800E95D0
.asciiz "Clear Workarea %x -%x size %x \n"
.balign 4
glabel D_800E95F0
.asciiz "AudioHeap is %x\n"
.balign 4
glabel D_800E9604
.asciiz "Heap reset.Synth Change %x \n"
.balign 4
glabel D_800E9624
.asciiz "Heap %x %x %x\n"
.balign 4
glabel D_800E9634
.asciiz "Main Heap Initialize.\n"
.balign 4
glabel D_800E964C
.asciiz "---------- Init Completed. ------------\n"
.balign 4
glabel D_800E9678
.asciiz " Syndrv :[%6d]\n"
.balign 4
glabel D_800E968C
.asciiz " Seqdrv :[%6d]\n"
.balign 4
glabel D_800E96A0
.asciiz " audiodata :[%6d]\n"
.balign 4
glabel D_800E96B4
.asciiz "---------------------------------------\n"
.balign 4
glabel D_800E96E0
.asciiz "Audio: setvol: volume minus %f\n"
.balign 4
glabel D_800E9700
.asciiz "Audio: setvol: volume overflow %f\n"
.balign 4
glabel D_800E9724
.asciiz "Audio: setpitch: pitch minus %f\n"
.balign 4
glabel D_800E9748
.asciiz "Audio: voiceman: No bank error %d\n"
.balign 4
glabel D_800E976C
.asciiz "Audio: voiceman: progNo. overflow %d,%d\n"
.balign 4
glabel D_800E9798
.asciiz "Audio: voiceman: progNo. undefined %d,%d\n"
.balign 4
glabel D_800E97C4
.asciiz "Audio: voiceman: No bank error %d\n"
.balign 4
glabel D_800E97E8
.asciiz "Audio: voiceman: Percussion Overflow %d,%d\n"
.balign 4
glabel D_800E9814
.asciiz "Audio: voiceman: Percussion table pointer (bank %d) is irregular.\n"
.balign 4
glabel D_800E9858
.asciiz "Audio: voiceman: Percpointer NULL %d,%d\n"
.balign 4
glabel D_800E9884
.asciiz "--4 %x\n"
.balign 4
glabel D_800E988C
.asciiz "Stoped Voice\n"
.balign 4
glabel D_800E989C
.asciiz "CAUTION:SUB IS SEPARATED FROM GROUP"
.balign 4
glabel D_800E98C0
.asciiz "Error:Wait Track disappear\n"
.balign 4
glabel D_800E98DC
.asciiz "Slow Release Batting\n"
.balign 4
glabel D_800E98F4
.byte 0x40, 0x20, 0x10, 0x08
glabel D_800E98F8
.asciiz "Audio:Wavemem: Bad voiceno (%d)\n"
.balign 4
glabel D_800E991C
.asciiz "Audio: C-Alloc : Dealloc voice is NULL\n"
.balign 4
glabel D_800E9944
.asciiz "Alloc Error:Dim voice-Alloc %d"
.balign 4
glabel D_800E9964
.asciiz "Error:Same List Add\n"
.balign 4
glabel D_800E997C
.asciiz "Already Cut\n"
.balign 4
glabel D_800E998C
.asciiz "Audio: C-Alloc : lowerPrio is NULL\n"
.balign 4
glabel D_800E99B0
.asciiz "Sub Limited Warning: Drop Voice"
.balign 4
glabel D_800E99D0
.asciiz "Warning: Drop Voice"
.balign 4
glabel D_800E99E4
.asciiz "Warning: Drop Voice"
.balign 4
glabel D_800E99F8
.asciiz "Warning: Drop Voice"
.balign 4
.balign 0x10
glabel D_800E9A10
.asciiz "Env-Clear 0\n"
.balign 4
glabel D_800E9A20
.asciiz "Audio:Envp: overflow %f\n"
.balign 4
.balign 0x10
glabel D_800E9A40
.asciiz "Audio:Track:Warning: No Free Notetrack\n"
.balign 4
glabel D_800E9A68
.asciiz "SUBTRACK DIM\n"
.balign 4
glabel D_800E9A78
.asciiz "Audio:Track: Warning :SUBTRACK had been stolen by other Group.\n"
.balign 4
glabel D_800E9AB8
.asciiz "SEQID %d,BANKID %d\n"
.balign 4
glabel D_800E9ACC
.asciiz "ERR:SUBTRACK %d NOT ALLOCATED\n"
.balign 4
glabel D_800E9AEC
.asciiz "Error:Same List Add\n"
.balign 4
glabel D_800E9B04
.asciiz "Macro Level Over Error!\n"
.balign 4
glabel D_800E9B20
.asciiz "Macro Level Over Error!\n"
.balign 4
glabel D_800E9B3C
.asciiz "WARNING: NPRG: cannot change %d\n"
.balign 4
glabel D_800E9B60
.asciiz "Audio:Track:NOTE:UNDEFINED NOTE COM. %x\n"
.balign 4
glabel D_800E9B8C
.asciiz "Audio: Note:Velocity Error %d\n"
.balign 4
glabel D_800E9BAC
.asciiz "Error: Subtrack no prg.\n"
.balign 4
glabel D_800E9BC8
.asciiz "ERR %x\n"
.balign 4
glabel D_800E9BD0
.asciiz "Error: Your assignchannel is stolen.\n"
.balign 4
glabel D_800E9BF8
.asciiz "Audio:Track :Call Macro Level Over Error!\n"
.balign 4
glabel D_800E9C24
.asciiz "Audio:Track :Loops Macro Level Over Error!\n"
.balign 4
glabel D_800E9C50
.asciiz "SUB:ERR:BANK %d NOT CACHED.\n"
.balign 4
glabel D_800E9C70
.asciiz "SUB:ERR:BANK %d NOT CACHED.\n"
.balign 4
glabel D_800E9C90
.asciiz "Audio:Track: CTBLCALL Macro Level Over Error!\n"
.balign 4
glabel D_800E9CC0
.asciiz "[%2x] \n"
.balign 4
glabel D_800E9CC8
.asciiz "Err :Sub %x ,address %x:Undefined SubTrack Function %x"
.balign 4
glabel D_800E9D00
.asciiz "Disappear Sequence or Bank %d\n"
.balign 4
glabel D_800E9D20
.asciiz "Macro Level Over Error!\n"
.balign 4
glabel D_800E9D3C
.asciiz "Macro Level Over Error!\n"
.balign 4
glabel D_800E9D58
.asciiz "Group:Undefine upper C0h command (%x)\n"
.balign 4
glabel D_800E9D80
.asciiz "Group:Undefined Command\n"
.balign 4
.balign 0x10
glabel D_800E9DA0
.byte 0x00
.balign 4
# TODO: unused?
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9DB4
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9DC4
.float 1.0, 1.0, 1.0, 1.0
glabel D_800E9DD4
.float 0.0, 0.0, 0.0, 0.0
glabel D_800E9DE4
.float 0.0, 0.0, 0.0, 0.0
glabel D_800E9DF4
.float 0.0, 0.0, 0.0, 0.0
.float 0.0, 0.0, 0.0, 0.0
glabel D_800E9E14
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9E24
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9E34
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9E54
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9E64
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9E74
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9E84
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9E94
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9EA4
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9EB4
.float 0.0, 0.0, 0.0, 0.0
glabel D_800E9EC4
.float 0.0, 0.0, 0.0, 0.0
glabel D_800E9ED4
.float 0.0, 0.0, 0.0, 0.0
glabel D_800E9EE4
.float 0.0, 0.0, 0.0, 0.0
glabel D_800E9EF4
.float 1.0, 1.0, 1.0, 1.0
glabel D_800E9F04
.float 1.0, 1.0, 1.0, 1.0
glabel D_800E9F14
.float 1.0, 1.0, 1.0, 1.0
glabel D_800E9F24
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
glabel D_800E9F2C
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
glabel D_800E9F34
.float 0.0, 0.0, 0.0, 0.0
.float 0.0, 0.0, 0.0, 0.0
glabel D_800E9F54
.float 0.0, 0.0, 0.0, 0.0
.float 0.0, 0.0, 0.0, 0.0
glabel D_800E9F74
.byte 0x00, 0x00, 0x00, 0x00
glabel D_800E9F78
.byte 0x00, 0x00, 0x00, 0x00
glabel D_800E9F7C
.float 0.0, 0.0, 0.0, 1.0
glabel D_800E9F8C
.float 1.0
glabel D_800E9F90
.byte 0x00, 0x00, 0x00, 0x00
glabel D_800E9F94
.float 3800.0, 3.4
.float 0.4, -1.0, 0.4, 1100.0
.float 630.0, 3600.0, 1.0, 0.0
.float 0.0, 0.0, 1.0, 1.0
.float 0.0, 3800.0, 3.4, 0.4
.float -1.0, 0.4, 1100.0, 630.0
.float 3600.0, 1.0, 0.0, 0.0
.float 0.0, 1.0, 1.0, 0.0
.float 3800.0, 3.4, 0.4, -1.0
.float 0.4, 1100.0, 630.0, 3600.0
.float 1.0, 0.0, 0.0, 0.0
.float 1.0, 1.0, 0.0, 3800.0
.float 3.4, 0.4, -1.0, 0.4
.float 1100.0, 630.0, 3600.0, 1.0
.macro Entry800EA06C f0, f1, f2, b0
.float \f0, \f1, \f2
.byte \b0, 0x00, 0x00, 0x00
.endm
glabel D_800EA06C
Entry800EA06C 0.0, 1.0, 1.0, 0x0
Entry800EA06C 0.0, 1.0, 1.0, 0x0
Entry800EA06C 0.0, 1.0, 1.0, 0x0
Entry800EA06C 0.0, 1.0, 1.0, 0x0
Entry800EA06C 0.0, 1.0, 1.0, 0x0
Entry800EA06C 0.0, 1.0, 1.0, 0x0
Entry800EA06C 0.0, 1.0, 1.0, 0x0
Entry800EA06C 0.0, 1.0, 1.0, 0x0
glabel D_800EA0EC
.byte 0x00
glabel D_800EA0ED
.byte 0x00
glabel D_800EA0EE
.byte 0x00
glabel D_800EA0EF
.byte 0x00
glabel D_800EA0F0
.byte 0x00, 0x00, 0x00, 0x00
glabel D_800EA0F4
.byte 0x00, 0x00, 0x00, 0x00
.word 0x00000000, 0x00000000, 0x3f800000
glabel D_800EA104
.word 0x00000000
glabel D_800EA108
.word 0x00000000
glabel D_800EA10C
.word 0x00000000
glabel D_800EA110
.float 0.0, 0.0, 0.0, 0.0
glabel D_800EA120
.float 0.0, 0.0, 0.0, 0.0
glabel D_800EA130
.float 0.0, 0.0, 0.0, 0.0
.float 0.0, 0.0, 0.0, 0.0
glabel D_800EA150
.float 1.4
glabel D_800EA154
.byte 0x02, 0x02, 0x58, 0x5a, 0x03, 0x30, 0x58, 0x30
glabel D_800EA15C
.word 0x00000000
glabel D_800EA160
.word 0x00000000
glabel D_800EA164
.word 0x00000000
glabel D_800EA168
.word 0x00000000
glabel D_800EA16C
.word 0x00000000
glabel D_800EA170
.word 0x00000000
glabel D_800EA174
.word 0x00000000
glabel D_800EA178
.word 0x3f800000
glabel D_800EA17C
.word 0x3f59999a
glabel D_800EA180
.word 0x00000000
glabel D_800EA184
.word 0x00000000
glabel D_800EA188
.byte 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x06, 0x02, 0x02, 0x02, 0x02, 0x01, 0x08, 0x02, 0x02, 0x00
.byte 0x01, 0x01, 0x08, 0x02, 0x02, 0x00, 0x01, 0x01
glabel D_800EA1A0
.byte 0x04, 0x01, 0x01, 0x02, 0x02, 0x01, 0x03, 0x01
.byte 0x01, 0x02, 0x02, 0x01, 0x03, 0x01, 0x01, 0x00, 0x01, 0x01, 0x03, 0x01, 0x01, 0x00, 0x01, 0x01
glabel D_800EA1B8
.word 0x00000000
glabel D_800EA1BC
.word 0x00000000
glabel D_800EA1C0
.word 0x00000000
glabel D_800EA1C4
.word 0x00000000
glabel D_800EA1C8
.word 0x00000000, 0x00000000, 0x00000000
glabel D_800EA1D4
.word 0x3f800000, 0x00000000
glabel D_800EA1DC
.word 0x00000000, 0x00000000
glabel D_800EA1E4
.word 0x00000000
glabel D_800EA1E8
.word 0x00000000
glabel D_800EA1EC
.word 0x00000000
glabel D_800EA1F0
.byte 0x00, 0x01, 0x02, 0x03
glabel D_800EA1F4
.byte 0x00, 0x00, 0x00, 0x00
.asciiz "Error : Queue is not empty ( %x ) \n"
.balign 4
.asciiz "specchg error\n"
.balign 4
.asciiz "***** CAM MAX %d *****\n"
.balign 4
glabel D_800EA244
.byte 0x00, 0x00, 0x00, 0x00
.asciiz "entryout !!! %d\n"
.balign 4
.asciiz "AFTER GOAL VOICE FLAME %d\n"
.balign 4
.asciiz "*** Pause On ***\n"
.balign 4
.asciiz "*** Pause Off ***\n"
.balign 4
.asciiz "CALLED!! Na_ChangeSoundMode player %d\n"
.balign 4
.asciiz "CALLED!! Na_ChangeSoundMode spec %d\n"
.balign 4
.asciiz "Interfaced Spec Change player %d\n"
.balign 4
.asciiz "Interfaced Spec Change spec %d\n"
.balign 4
.word 0xff000000, 0xff000000, 0x00000000
.asciiz "FX MIX %d\n"
.balign 4
.asciiz "************** Seq Fadeout ***************\n"
.balign 4
.asciiz "SEQ FADE OUT TIME %d\n"
.balign 4
.word 0x00000000, 0x00000000, 0x00000000
glabel D_800EA3A0
.byte 0x00, 0x00, 0x00, 0x00
glabel D_800EA3A4
.byte 0x00, 0x00, 0x00, 0x00
glabel D_800EA3A8
.word D_801937C0
glabel D_800EA3AC
.word D_801937D8
glabel D_800EA3B0
.word D_801937F0
glabel D_800EA3B4
.word D_80193808
.asciiz "DAC:Lost 1 Frame.\n"
.balign 4
.asciiz "DMA: Request queue over.( %d )\n"
.balign 4
.asciiz "DMA [ %d lines] TIMEOUT\n"
.balign 4
.asciiz "Warning: WaveDmaQ contains %d msgs.\n"
.balign 4
.asciiz "Audio:now-max tasklen is %d / %d\n"
.balign 4
.asciiz "Audio:Warning:ABI Tasklist length over (%d)\n"
.balign 4
glabel D_800EA484
.word 0x00000080
.asciiz "AudioSend: %d -> %d (%d)\n"
.balign 4
glabel D_800EA4A4
.word 0x00000000
.asciiz "Undefined Port Command %d\n"
.balign 4
.word 0x00000000, 0x00000000, 0x00000000
.balign 4
glabel D_800EA4D0
.word 0x01284fff
glabel D_800EA4D4
.word 0x01145fff
glabel D_800EA4D8
.word 0x000068b0, 0x01180100, D_800EA4D0, 0x7fff0000
.word 0x00002a00, 0x00004600, 0x00000000, 0x00005800
.word 0x00002800, 0x00000000, 0x000068b0, 0x01140100
.word D_800EA4D0, 0x7fff0000, 0x00002a00, 0x00004600
.word 0x00000000, 0x00005800, 0x00002800, 0x00000000
.word 0x000068b0, 0x011c0100, D_800EA4D0, 0x7fff0000
.word 0x00002a00, 0x00004600, 0x00000000, 0x00005800
.word 0x00002800, 0x00000000, 0x000068b0, 0x011c0100
.word D_800EA4D0, 0x7fff0000, 0x00002a00, 0x00004600
.word 0x00000000, 0x00005800, 0x00002800, 0x00000000
.word 0x000068b0, 0x01100100, D_800EA4D0, 0x7fff0000
.word 0x00002a00, 0x00004600, 0x00000000, 0x00004800
.word 0x00002000, 0x00000000, 0x000068b0, 0x01100100
.word D_800EA4D4, 0x7fff0000, 0x00002a00, 0x00004600
.word 0x00000000, 0x00004800, 0x00002000, 0x00000000
.word 0x1c000000
glabel D_800EA5CC
.hword 0x0030, 0x0000
glabel D_800EA5D0
.word 0x00048c00
glabel D_800EA5D4
.word 0x00002600
glabel D_800EA5D8
.word 0x00000000
glabel D_800EA5DC
.word 0x00000000
#glabel D_800E932C
#.asciiz "Romcopyend\n"
#.balign 4
+699
View File
@@ -0,0 +1,699 @@
.include "macros.inc"
.section .rodata
#glabel D_800E94A4
#.asciiz "Seq %d Loading Start\n"
#.balign 4
#glabel D_800E94BC
#.asciiz "Heap Overflow Error\n"
#.balign 4
#glabel D_800E94D4
#.asciiz "SEQ %d ALREADY CACHED\n"
#.balign 4
#glabel D_800E94EC
#.asciiz "Ok,one bank slow load Start \n"
#.balign 4
#glabel D_800E950C
#.asciiz "Sorry,too many %d bank is none.fast load Start \n"
#.balign 4
glabel D_800E9540
.asciiz "Seq %d:Default Load Id is %d\n"
.balign 4
glabel D_800E9560
.asciiz "Seq Loading Start\n"
.balign 4
glabel D_800E9574
.asciiz "Error:Before Sequence-SlowDma remain.\n"
.balign 4
glabel D_800E959C
.asciiz " Cancel Seq Start.\n"
.balign 4
glabel D_800E95B8
.asciiz "SEQ %d ALREADY CACHED\n"
.balign 4
glabel D_800E95D0
.asciiz "Clear Workarea %x -%x size %x \n"
.balign 4
glabel D_800E95F0
.asciiz "AudioHeap is %x\n"
.balign 4
glabel D_800E9604
.asciiz "Heap reset.Synth Change %x \n"
.balign 4
glabel D_800E9624
.asciiz "Heap %x %x %x\n"
.balign 4
glabel D_800E9634
.asciiz "Main Heap Initialize.\n"
.balign 4
glabel D_800E964C
.asciiz "---------- Init Completed. ------------\n"
.balign 4
glabel D_800E9678
.asciiz " Syndrv :[%6d]\n"
.balign 4
glabel D_800E968C
.asciiz " Seqdrv :[%6d]\n"
.balign 4
glabel D_800E96A0
.asciiz " audiodata :[%6d]\n"
.balign 4
glabel D_800E96B4
.asciiz "---------------------------------------\n"
.balign 4
glabel D_800E96E0
.asciiz "Audio: setvol: volume minus %f\n"
.balign 4
glabel D_800E9700
.asciiz "Audio: setvol: volume overflow %f\n"
.balign 4
glabel D_800E9724
.asciiz "Audio: setpitch: pitch minus %f\n"
.balign 4
glabel D_800E9748
.asciiz "Audio: voiceman: No bank error %d\n"
.balign 4
glabel D_800E976C
.asciiz "Audio: voiceman: progNo. overflow %d,%d\n"
.balign 4
glabel D_800E9798
.asciiz "Audio: voiceman: progNo. undefined %d,%d\n"
.balign 4
glabel D_800E97C4
.asciiz "Audio: voiceman: No bank error %d\n"
.balign 4
glabel D_800E97E8
.asciiz "Audio: voiceman: Percussion Overflow %d,%d\n"
.balign 4
glabel D_800E9814
.asciiz "Audio: voiceman: Percussion table pointer (bank %d) is irregular.\n"
.balign 4
glabel D_800E9858
.asciiz "Audio: voiceman: Percpointer NULL %d,%d\n"
.balign 4
glabel D_800E9884
.asciiz "--4 %x\n"
.balign 4
glabel D_800E988C
.asciiz "Stoped Voice\n"
.balign 4
glabel D_800E989C
.asciiz "CAUTION:SUB IS SEPARATED FROM GROUP"
.balign 4
glabel D_800E98C0
.asciiz "Error:Wait Track disappear\n"
.balign 4
glabel D_800E98DC
.asciiz "Slow Release Batting\n"
.balign 4
glabel D_800E98F4
.byte 0x40, 0x20, 0x10, 0x08
glabel D_800E98F8
.asciiz "Audio:Wavemem: Bad voiceno (%d)\n"
.balign 4
glabel D_800E991C
.asciiz "Audio: C-Alloc : Dealloc voice is NULL\n"
.balign 4
glabel D_800E9944
.asciiz "Alloc Error:Dim voice-Alloc %d"
.balign 4
glabel D_800E9964
.asciiz "Error:Same List Add\n"
.balign 4
glabel D_800E997C
.asciiz "Already Cut\n"
.balign 4
glabel D_800E998C
.asciiz "Audio: C-Alloc : lowerPrio is NULL\n"
.balign 4
glabel D_800E99B0
.asciiz "Sub Limited Warning: Drop Voice"
.balign 4
glabel D_800E99D0
.asciiz "Warning: Drop Voice"
.balign 4
glabel D_800E99E4
.asciiz "Warning: Drop Voice"
.balign 4
glabel D_800E99F8
.asciiz "Warning: Drop Voice"
.balign 4
.balign 0x10
glabel D_800E9A10
.asciiz "Env-Clear 0\n"
.balign 4
glabel D_800E9A20
.asciiz "Audio:Envp: overflow %f\n"
.balign 4
.balign 0x10
glabel D_800E9A40
.asciiz "Audio:Track:Warning: No Free Notetrack\n"
.balign 4
glabel D_800E9A68
.asciiz "SUBTRACK DIM\n"
.balign 4
glabel D_800E9A78
.asciiz "Audio:Track: Warning :SUBTRACK had been stolen by other Group.\n"
.balign 4
glabel D_800E9AB8
.asciiz "SEQID %d,BANKID %d\n"
.balign 4
glabel D_800E9ACC
.asciiz "ERR:SUBTRACK %d NOT ALLOCATED\n"
.balign 4
glabel D_800E9AEC
.asciiz "Error:Same List Add\n"
.balign 4
glabel D_800E9B04
.asciiz "Macro Level Over Error!\n"
.balign 4
glabel D_800E9B20
.asciiz "Macro Level Over Error!\n"
.balign 4
glabel D_800E9B3C
.asciiz "WARNING: NPRG: cannot change %d\n"
.balign 4
glabel D_800E9B60
.asciiz "Audio:Track:NOTE:UNDEFINED NOTE COM. %x\n"
.balign 4
glabel D_800E9B8C
.asciiz "Audio: Note:Velocity Error %d\n"
.balign 4
glabel D_800E9BAC
.asciiz "Error: Subtrack no prg.\n"
.balign 4
glabel D_800E9BC8
.asciiz "ERR %x\n"
.balign 4
glabel D_800E9BD0
.asciiz "Error: Your assignchannel is stolen.\n"
.balign 4
glabel D_800E9BF8
.asciiz "Audio:Track :Call Macro Level Over Error!\n"
.balign 4
glabel D_800E9C24
.asciiz "Audio:Track :Loops Macro Level Over Error!\n"
.balign 4
glabel D_800E9C50
.asciiz "SUB:ERR:BANK %d NOT CACHED.\n"
.balign 4
glabel D_800E9C70
.asciiz "SUB:ERR:BANK %d NOT CACHED.\n"
.balign 4
glabel D_800E9C90
.asciiz "Audio:Track: CTBLCALL Macro Level Over Error!\n"
.balign 4
glabel D_800E9CC0
.asciiz "[%2x] \n"
.balign 4
glabel D_800E9CC8
.asciiz "Err :Sub %x ,address %x:Undefined SubTrack Function %x"
.balign 4
glabel D_800E9D00
.asciiz "Disappear Sequence or Bank %d\n"
.balign 4
glabel D_800E9D20
.asciiz "Macro Level Over Error!\n"
.balign 4
glabel D_800E9D3C
.asciiz "Macro Level Over Error!\n"
.balign 4
glabel D_800E9D58
.asciiz "Group:Undefine upper C0h command (%x)\n"
.balign 4
glabel D_800E9D80
.asciiz "Group:Undefined Command\n"
.balign 4
.balign 0x10
glabel D_800E9DA0
.byte 0x00
.balign 4
# TODO: unused?
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9DB4
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9DC4
.float 1.0, 1.0, 1.0, 1.0
glabel D_800E9DD4
.float 0.0, 0.0, 0.0, 0.0
glabel D_800E9DE4
.float 0.0, 0.0, 0.0, 0.0
glabel D_800E9DF4
.float 0.0, 0.0, 0.0, 0.0
.float 0.0, 0.0, 0.0, 0.0
glabel D_800E9E14
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9E24
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9E34
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9E54
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9E64
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9E74
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9E84
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9E94
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9EA4
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_800E9EB4
.float 0.0, 0.0, 0.0, 0.0
glabel D_800E9EC4
.float 0.0, 0.0, 0.0, 0.0
glabel D_800E9ED4
.float 0.0, 0.0, 0.0, 0.0
glabel D_800E9EE4
.float 0.0, 0.0, 0.0, 0.0
glabel D_800E9EF4
.float 1.0, 1.0, 1.0, 1.0
glabel D_800E9F04
.float 1.0, 1.0, 1.0, 1.0
glabel D_800E9F14
.float 1.0, 1.0, 1.0, 1.0
glabel D_800E9F24
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
glabel D_800E9F2C
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
glabel D_800E9F34
.float 0.0, 0.0, 0.0, 0.0
.float 0.0, 0.0, 0.0, 0.0
glabel D_800E9F54
.float 0.0, 0.0, 0.0, 0.0
.float 0.0, 0.0, 0.0, 0.0
glabel D_800E9F74
.byte 0x00, 0x00, 0x00, 0x00
glabel D_800E9F78
.byte 0x00, 0x00, 0x00, 0x00
glabel D_800E9F7C
.float 0.0, 0.0, 0.0, 1.0
glabel D_800E9F8C
.float 1.0
glabel D_800E9F90
.byte 0x00, 0x00, 0x00, 0x00
glabel D_800E9F94
.float 3800.0, 3.4
.float 0.4, -1.0, 0.4, 1100.0
.float 630.0, 3600.0, 1.0, 0.0
.float 0.0, 0.0, 1.0, 1.0
.float 0.0, 3800.0, 3.4, 0.4
.float -1.0, 0.4, 1100.0, 630.0
.float 3600.0, 1.0, 0.0, 0.0
.float 0.0, 1.0, 1.0, 0.0
.float 3800.0, 3.4, 0.4, -1.0
.float 0.4, 1100.0, 630.0, 3600.0
.float 1.0, 0.0, 0.0, 0.0
.float 1.0, 1.0, 0.0, 3800.0
.float 3.4, 0.4, -1.0, 0.4
.float 1100.0, 630.0, 3600.0, 1.0
.macro Entry800EA06C f0, f1, f2, b0
.float \f0, \f1, \f2
.byte \b0, 0x00, 0x00, 0x00
.endm
glabel D_800EA06C
Entry800EA06C 0.0, 1.0, 1.0, 0x0
Entry800EA06C 0.0, 1.0, 1.0, 0x0
Entry800EA06C 0.0, 1.0, 1.0, 0x0
Entry800EA06C 0.0, 1.0, 1.0, 0x0
Entry800EA06C 0.0, 1.0, 1.0, 0x0
Entry800EA06C 0.0, 1.0, 1.0, 0x0
Entry800EA06C 0.0, 1.0, 1.0, 0x0
Entry800EA06C 0.0, 1.0, 1.0, 0x0
glabel D_800EA0EC
.byte 0x00
glabel D_800EA0ED
.byte 0x00
glabel D_800EA0EE
.byte 0x00
glabel D_800EA0EF
.byte 0x00
glabel D_800EA0F0
.byte 0x00, 0x00, 0x00, 0x00
glabel D_800EA0F4
.byte 0x00, 0x00, 0x00, 0x00
.word 0x00000000, 0x00000000, 0x3f800000
glabel D_800EA104
.word 0x00000000
glabel D_800EA108
.word 0x00000000
glabel D_800EA10C
.word 0x00000000
glabel D_800EA110
.float 0.0, 0.0, 0.0, 0.0
glabel D_800EA120
.float 0.0, 0.0, 0.0, 0.0
glabel D_800EA130
.float 0.0, 0.0, 0.0, 0.0
.float 0.0, 0.0, 0.0, 0.0
glabel D_800EA150
.float 1.4
glabel D_800EA154
.byte 0x02, 0x02, 0x58, 0x5a, 0x03, 0x30, 0x58, 0x30
glabel D_800EA15C
.word 0x00000000
glabel D_800EA160
.word 0x00000000
glabel D_800EA164
.word 0x00000000
glabel D_800EA168
.word 0x00000000
glabel D_800EA16C
.word 0x00000000
glabel D_800EA170
.word 0x00000000
glabel D_800EA174
.word 0x00000000
glabel D_800EA178
.word 0x3f800000
glabel D_800EA17C
.word 0x3f59999a
glabel D_800EA180
.word 0x00000000
glabel D_800EA184
.word 0x00000000
glabel D_800EA188
.byte 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x06, 0x02, 0x02, 0x02, 0x02, 0x01, 0x08, 0x02, 0x02, 0x00
.byte 0x01, 0x01, 0x08, 0x02, 0x02, 0x00, 0x01, 0x01
glabel D_800EA1A0
.byte 0x04, 0x01, 0x01, 0x02, 0x02, 0x01, 0x03, 0x01
.byte 0x01, 0x02, 0x02, 0x01, 0x03, 0x01, 0x01, 0x00, 0x01, 0x01, 0x03, 0x01, 0x01, 0x00, 0x01, 0x01
glabel D_800EA1B8
.word 0x00000000
glabel D_800EA1BC
.word 0x00000000
glabel D_800EA1C0
.word 0x00000000
glabel D_800EA1C4
.word 0x00000000
glabel D_800EA1C8
.word 0x00000000, 0x00000000, 0x00000000
glabel D_800EA1D4
.word 0x3f800000, 0x00000000
glabel D_800EA1DC
.word 0x00000000, 0x00000000
glabel D_800EA1E4
.word 0x00000000
glabel D_800EA1E8
.word 0x00000000
glabel D_800EA1EC
.word 0x00000000
glabel D_800EA1F0
.byte 0x00, 0x01, 0x02, 0x03
glabel D_800EA1F4
.byte 0x00, 0x00, 0x00, 0x00
.asciiz "Error : Queue is not empty ( %x ) \n"
.balign 4
.asciiz "specchg error\n"
.balign 4
.asciiz "***** CAM MAX %d *****\n"
.balign 4
glabel D_800EA244
.byte 0x00, 0x00, 0x00, 0x00
.asciiz "entryout !!! %d\n"
.balign 4
.asciiz "AFTER GOAL VOICE FLAME %d\n"
.balign 4
.asciiz "*** Pause On ***\n"
.balign 4
.asciiz "*** Pause Off ***\n"
.balign 4
.asciiz "CALLED!! Na_ChangeSoundMode player %d\n"
.balign 4
.asciiz "CALLED!! Na_ChangeSoundMode spec %d\n"
.balign 4
.asciiz "Interfaced Spec Change player %d\n"
.balign 4
.asciiz "Interfaced Spec Change spec %d\n"
.balign 4
.word 0xff000000, 0xff000000, 0x00000000
.asciiz "FX MIX %d\n"
.balign 4
.asciiz "************** Seq Fadeout ***************\n"
.balign 4
.asciiz "SEQ FADE OUT TIME %d\n"
.balign 4
.word 0x00000000, 0x00000000, 0x00000000
glabel D_800EA3A0
.byte 0x00, 0x00, 0x00, 0x00
glabel D_800EA3A4
.byte 0x00, 0x00, 0x00, 0x00
glabel D_800EA3A8
.word D_801937C0
glabel D_800EA3AC
.word D_801937D8
glabel D_800EA3B0
.word D_801937F0
glabel D_800EA3B4
.word D_80193808
.asciiz "DAC:Lost 1 Frame.\n"
.balign 4
.asciiz "DMA: Request queue over.( %d )\n"
.balign 4
.asciiz "DMA [ %d lines] TIMEOUT\n"
.balign 4
.asciiz "Warning: WaveDmaQ contains %d msgs.\n"
.balign 4
.asciiz "Audio:now-max tasklen is %d / %d\n"
.balign 4
.asciiz "Audio:Warning:ABI Tasklist length over (%d)\n"
.balign 4
glabel D_800EA484
.word 0x00000080
.asciiz "AudioSend: %d -> %d (%d)\n"
.balign 4
glabel D_800EA4A4
.word 0x00000000
.asciiz "Undefined Port Command %d\n"
.balign 4
.word 0x00000000, 0x00000000, 0x00000000
.balign 4
glabel D_800EA4D0
.word 0x01284fff
glabel D_800EA4D4
.word 0x01145fff
glabel D_800EA4D8
.word 0x000068b0, 0x01180100, D_800EA4D0, 0x7fff0000
.word 0x00002a00, 0x00004600, 0x00000000, 0x00005800
.word 0x00002800, 0x00000000, 0x000068b0, 0x01140100
.word D_800EA4D0, 0x7fff0000, 0x00002a00, 0x00004600
.word 0x00000000, 0x00005800, 0x00002800, 0x00000000
.word 0x000068b0, 0x011c0100, D_800EA4D0, 0x7fff0000
.word 0x00002a00, 0x00004600, 0x00000000, 0x00005800
.word 0x00002800, 0x00000000, 0x000068b0, 0x011c0100
.word D_800EA4D0, 0x7fff0000, 0x00002a00, 0x00004600
.word 0x00000000, 0x00005800, 0x00002800, 0x00000000
.word 0x000068b0, 0x01100100, D_800EA4D0, 0x7fff0000
.word 0x00002a00, 0x00004600, 0x00000000, 0x00004800
.word 0x00002000, 0x00000000, 0x000068b0, 0x01100100
.word D_800EA4D4, 0x7fff0000, 0x00002a00, 0x00004600
.word 0x00000000, 0x00004800, 0x00002000, 0x00000000
.word 0x1c000000
glabel D_800EA5CC
.hword 0x0030, 0x0000
glabel D_800EA5D0
.word 0x00048c00
glabel D_800EA5D4
.word 0x00002600
glabel D_800EA5D8
.word 0x00000000
glabel D_800EA5DC
.word 0x00000000
+1
View File
@@ -37,6 +37,7 @@ typedef s32 intptr_t;
typedef s32 ptrdiff_t;
#else
#include <stddef.h>
typedef ptrdiff_t ssize_t;
#endif
#endif
+1 -1
View File
@@ -387,7 +387,7 @@ typedef struct {
/* 0x023A */ s16 unk_23A;
/* 0x023C */ f32 unk_23C;
/* 0x0240 */ s32 unk_240;
/* 0x0244 */ u16 unk_244[4];
/* 0x0244 */ u16 unk_244[4]; // [0] Active texture group
/* 0x0244 */ u16 unk_24C[4];
/* 0x0254 */ u16 characterId;
/* 0x0256 */ s16 unk_256;
+4
View File
@@ -224,8 +224,12 @@ SECTIONS
BUILD_DIR/data/data_0DD0A0_1.o(.data);
BUILD_DIR/src/code_8001C4D0.o(.data);
BUILD_DIR/data/data_0DD0A0_1_1.o(.data);
BUILD_DIR/src/code_80027040.o(.data);
BUILD_DIR/data/data_0DD0A0_1_2.o(.data);
BUILD_DIR/src/kart_attributes.inc.o(.data);
BUILD_DIR/data/data_0DD0A0_2.o(.rodata);
BUILD_DIR/src/audio/load.o(.rodata*);
BUILD_DIR/data/data_0DD0A0_2_1_0.o(.rodata);
BUILD_DIR/src/os/osInitialize.o(.data*);
BUILD_DIR/src/os/osCreateViManager.o(.data);
BUILD_DIR/src/os/osViTable.o(.data);
+7
View File
@@ -3,6 +3,13 @@
#include "internal.h"
#define AUDIO_LOCK_UNINITIALIZED 0
#define AUDIO_LOCK_NOT_LOADING 0x76557364
#define AUDIO_LOCK_LOADING 0x19710515
extern struct AdsrEnvelope gDefaultEnvelope[3];
// number of DMAs performed during this frame
extern s32 gCurrAudioFrameDmaCount;
#endif
+2 -2
View File
@@ -314,7 +314,7 @@ GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BE5BC.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
extern ? D_803B7088;
extern ? gAudioBufferParameters;
f32 func_800BE5E0(void *arg0) {
f32 temp_f0;
@@ -352,7 +352,7 @@ loop_6:
arg0->unk1 = 0;
} else {
if (temp_a2 >= 4) {
arg0->unk4 = ((temp_a2 * D_803B7088.unkC) / D_803B7088.unk0) / 4;
arg0->unk4 = ((temp_a2 * gAudioBufferParameters.unkC) / gAudioBufferParameters.unk0) / 4;
}
phi_a2 = arg0->unk4;
if (arg0->unk4 == 0) {
+78 -75
View File
@@ -1,5 +1,8 @@
#include <ultra64.h>
#include <macros.h>
#include "heap.h"
extern struct SoundAllocPool gNotesAndBuffersPool;
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
@@ -61,7 +64,7 @@ GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B8DE0.s")
? func_800BF004(? *, void *); // extern
extern s32 D_803B1508;
extern ? D_803B5FC8;
extern s32 D_803B70B0;
extern s32 gMaxSimultaneousNotes;
void func_800B8EA8(s32 arg0) {
s32 temp_s2;
@@ -73,7 +76,7 @@ void func_800B8EA8(s32 arg0) {
s32 phi_s2;
s32 phi_v0;
temp_v0 = D_803B70B0;
temp_v0 = gMaxSimultaneousNotes;
phi_s2 = 0;
phi_v0 = temp_v0;
if (temp_v0 > 0) {
@@ -90,7 +93,7 @@ void func_800B8EA8(s32 arg0) {
func_800BCB48(temp_s0);
func_800BD6F4(temp_s0);
func_800BF004(&D_803B5FC8, temp_s0);
phi_v0 = D_803B70B0;
phi_v0 = gMaxSimultaneousNotes;
}
temp_s2 = phi_s2 + 1;
phi_s1 += 0xC0;
@@ -127,7 +130,7 @@ GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B8F8C.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
u32 func_800B8FFC(void *arg0, s32 arg1) {
u32 soundAlloc(void *arg0, s32 arg1) {
s32 temp_t6;
s8 *temp_a1;
u32 temp_a2;
@@ -153,7 +156,7 @@ u32 func_800B8FFC(void *arg0, s32 arg1) {
return 0;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B8FFC.s")
GLOBAL_ASM("asm/non_matchings/audio/heap/soundAlloc.s")
#endif
#ifdef MIPS_TO_C
@@ -222,16 +225,16 @@ GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B90F0.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_800B8FFC(? *, s32); // extern
s32 soundAlloc(? *, s32); // extern
? func_800B907C(? *, s32, s32); // extern
extern ? D_803AFBC8;
extern ? D_803AFBE8;
extern ? gNotesAndBuffersPool;
extern ? D_803AFC18;
void func_800B914C(void *arg0) {
D_803AFBC8.unk4 = D_803AFBC8.unk0;
func_800B907C(&D_803AFBE8, func_800B8FFC(&D_803AFBC8, arg0->unk0), arg0->unk0);
func_800B907C(&D_803AFC18, func_800B8FFC(&D_803AFBC8, arg0->unkC), arg0->unkC);
func_800B907C(&gNotesAndBuffersPool, soundAlloc(&D_803AFBC8, arg0->unk0), arg0->unk0);
func_800B907C(&D_803AFC18, soundAlloc(&D_803AFBC8, arg0->unkC), arg0->unkC);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B914C.s")
@@ -239,7 +242,7 @@ GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B914C.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_800B8FFC(? *, s32); // extern
s32 soundAlloc(? *, s32); // extern
? func_800B907C(? *, s32, s32); // extern
extern ? D_803AFC18;
extern ? D_803AFC28;
@@ -247,8 +250,8 @@ extern ? D_803AFC38;
void func_800B91C8(void *arg0) {
D_803AFC18.unk4 = D_803AFC18.unk0;
func_800B907C(&D_803AFC28, func_800B8FFC(&D_803AFC18, arg0->unk0), arg0->unk0);
func_800B907C(&D_803AFC38, func_800B8FFC(&D_803AFC18, arg0->unk4), arg0->unk4);
func_800B907C(&D_803AFC28, soundAlloc(&D_803AFC18, arg0->unk0), arg0->unk0);
func_800B907C(&D_803AFC38, soundAlloc(&D_803AFC18, arg0->unk4), arg0->unk4);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B91C8.s")
@@ -256,7 +259,7 @@ GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B91C8.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_800B8FFC(? *, s32); // extern
s32 soundAlloc(? *, s32); // extern
? func_800B907C(? *, s32, s32); // extern
? func_800B909C(? *); // extern
extern ? D_803AFC28;
@@ -269,9 +272,9 @@ extern ? D_803AFFEC;
void func_800B9244(void *arg0) {
D_803AFC28.unk4 = D_803AFC28.unk0;
func_800B907C(&D_803AFC4C, func_800B8FFC(&D_803AFC28, arg0->unk0), arg0->unk0);
func_800B907C(&D_803AFE1C, func_800B8FFC(&D_803AFC28, arg0->unk4), arg0->unk4);
func_800B907C(&D_803AFFEC, func_800B8FFC(&D_803AFC28, arg0->unk8), arg0->unk8);
func_800B907C(&D_803AFC4C, soundAlloc(&D_803AFC28, arg0->unk0), arg0->unk0);
func_800B907C(&D_803AFE1C, soundAlloc(&D_803AFC28, arg0->unk4), arg0->unk4);
func_800B907C(&D_803AFFEC, soundAlloc(&D_803AFC28, arg0->unk8), arg0->unk8);
func_800B909C(&D_803AFC48);
func_800B909C(&D_803AFE18);
func_800B909C(&D_803AFFE8);
@@ -282,7 +285,7 @@ GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B9244.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_800B8FFC(? *, s32); // extern
s32 soundAlloc(? *, s32); // extern
? func_800B907C(? *, s32, s32); // extern
? func_800B90B0(? *); // extern
extern ? D_803AFC38;
@@ -295,9 +298,9 @@ extern ? D_803B0180;
void func_800B9300(void *arg0) {
D_803AFC38.unk4 = D_803AFC38.unk0;
func_800B907C(&D_803AFDE0, func_800B8FFC(&D_803AFC38, arg0->unk0), arg0->unk0);
func_800B907C(&D_803AFFB0, func_800B8FFC(&D_803AFC38, arg0->unk4), arg0->unk4);
func_800B907C(&D_803B0180, func_800B8FFC(&D_803AFC38, arg0->unk8), arg0->unk8);
func_800B907C(&D_803AFDE0, soundAlloc(&D_803AFC38, arg0->unk0), arg0->unk0);
func_800B907C(&D_803AFFB0, soundAlloc(&D_803AFC38, arg0->unk4), arg0->unk4);
func_800B907C(&D_803B0180, soundAlloc(&D_803AFC38, arg0->unk8), arg0->unk8);
func_800B90B0(&D_803AFDDC);
func_800B90B0(&D_803AFFAC);
func_800B90B0(&D_803B017C);
@@ -310,7 +313,7 @@ GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B9300.s")
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800B8EA8(s16, s32, s16, s32 *); // extern
? func_800B8F8C(s16, s32); // extern
s32 func_800B8FFC(s32, s32); // extern
s32 soundAlloc(s32, s32); // extern
extern ? D_803AFC48;
extern ? D_803AFE18;
extern ? D_803AFFE8;
@@ -320,7 +323,7 @@ extern ? D_803B0400;
extern void *D_803B1508;
extern ? D_803B1510;
extern ? D_803B1A30;
extern s32 D_803B70B0;
extern s32 gMaxSimultaneousNotes;
u32 func_800B93BC(s32 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
? *sp34;
@@ -426,7 +429,7 @@ loop_1:
phi_t2_2 = phi_t2;
if (sp33 == 1) {
if (phi_t1 == 4) {
temp_a1 = D_803B70B0;
temp_a1 = gMaxSimultaneousNotes;
phi_v1 = 0;
phi_v1_2 = 0;
if (temp_a1 > 0) {
@@ -452,7 +455,7 @@ loop_18:
}
}
if (phi_t2 == 4) {
temp_a1_2 = D_803B70B0;
temp_a1_2 = gMaxSimultaneousNotes;
phi_v1_3 = 0;
phi_v1_4 = 0;
if (temp_a1_2 > 0) {
@@ -546,7 +549,7 @@ loop_54:
}
if (sp20 == 1) {
if (phi_t1_2 == 2) {
temp_a1_3 = D_803B70B0;
temp_a1_3 = gMaxSimultaneousNotes;
phi_v1_5 = 0;
phi_v1_6 = 0;
if (temp_a1_3 > 0) {
@@ -576,7 +579,7 @@ block_68:
phi_a2 = phi_a2_2;
phi_a2 = phi_a2_2;
if (phi_t2_2 == 2) {
temp_a1_4 = D_803B70B0;
temp_a1_4 = gMaxSimultaneousNotes;
phi_v1_7 = 0;
phi_v1_8 = 0;
if (temp_a1_4 > 0) {
@@ -717,7 +720,7 @@ block_99:
}
arg4 = arg4;
arg3 = phi_a3;
temp_v0_9 = func_800B8FFC(arg0 + 4, arg1 * arg2);
temp_v0_9 = soundAlloc(arg0 + 4, arg1 * arg2);
(arg0 + (*arg0 * 0xC))->unk14 = temp_v0_9;
if (temp_v0_9 == 0) {
if ((arg3 != 0) && (arg3 != 1)) {
@@ -855,7 +858,7 @@ GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B9FB8.s")
? func_800BEF2C(? *); /* extern */
extern ? D_803B1510;
extern ? D_803B1A30;
extern ? D_803B7088;
extern ? gAudioBufferParameters;
s32 func_800BA00C(void) {
? *temp_s0;
@@ -894,7 +897,7 @@ s32 func_800BA00C(void) {
D_803B0504 = temp_v0 - 1;
func_800B9FB8();
} else {
temp_a2 = D_803B70B0;
temp_a2 = gMaxSimultaneousNotes;
phi_v1 = 0;
phi_a0 = 0;
phi_a2 = temp_a2;
@@ -904,10 +907,10 @@ s32 func_800BA00C(void) {
temp_v0_2 = D_803B1508 + phi_v1;
phi_a0 = temp_a0;
if (((temp_v0_2->unkB0 >> 0x1F) != 0) && (temp_v0_2->unk59 != 0)) {
temp_v0_2->unk68 = D_803B7088.unk18;
temp_v0_2->unk68 = gAudioBufferParameters.unk18;
temp_v0_3 = D_803B1508 + phi_v1;
temp_v0_3->unk58 = temp_v0_3->unk58 | 0x10;
phi_a2 = D_803B70B0;
phi_a2 = gMaxSimultaneousNotes;
}
phi_v1 += 0xC0;
} while (temp_a0 < phi_a2);
@@ -967,7 +970,7 @@ GLOBAL_ASM("asm/non_matchings/audio/heap/func_800BA00C.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800B8DE0(); // extern
s32 func_800B8FFC(? *, s32); // extern
s32 soundAlloc(? *, s32); // extern
? func_800B914C(? *, s16, s16, u16); // extern
? func_800B91C8(? *); // extern
? func_800B9244(? *); // extern
@@ -985,17 +988,17 @@ extern u16 D_803AFBC0;
extern u8 D_803AFBC3;
extern s32 D_803AFBC4;
extern s32 D_803AFBD0;
extern ? D_803AFBE8;
extern ? gNotesAndBuffersPool;
extern ? D_803B0348;
extern ? D_803B0358;
extern ? D_803B0360;
extern ? D_803B0370;
extern u8 D_803B0501;
extern s32 D_803B1508;
extern s32 D_803B6E58;
extern ? D_803B7088;
extern s32 gSampleDmaNumListItems;
extern ? gAudioBufferParameters;
extern s32 D_803B70AC;
extern s32 D_803B70B0;
extern s32 gMaxSimultaneousNotes;
extern s16 D_803B70B4;
extern ? D_803B70C8;
extern ? D_803B70D0;
@@ -1034,36 +1037,36 @@ void func_800BA250(void) {
s32 phi_s1;
temp_s6 = (D_803B0501 * 0x28) + &D_800EA4D8;
D_803B6E58 = 0;
gSampleDmaNumListItems = 0;
temp_t9 = temp_s6->unk0;
D_803B7088.unk2 = temp_t9;
D_803B7088.unk4 = osAiSetFrequency(temp_t9 & 0xFFFF);
temp_a3 = D_803B7088.unk2;
D_803B7088.unk6 = ((temp_a3 / D_803B717C) + 0xF) & 0xFFF0;
temp_v1 = D_803B7088.unk6;
gAudioBufferParameters.unk2 = temp_t9;
gAudioBufferParameters.unk4 = osAiSetFrequency(temp_t9 & 0xFFFF);
temp_a3 = gAudioBufferParameters.unk2;
gAudioBufferParameters.unk6 = ((temp_a3 / D_803B717C) + 0xF) & 0xFFF0;
temp_v1 = gAudioBufferParameters.unk6;
temp_t0 = temp_v1 + 0x10;
D_803B7088.unkA = temp_v1 - 0x10;
D_803B7088.unk8 = temp_t0;
D_803B7088.unkC = (temp_t0 / 0xC0) + 1;
temp_a2 = D_803B7088.unkC;
D_803B7088.unkE = (temp_v1 / temp_a2) & 0xFFF8;
temp_t1 = D_803B7088.unkE;
gAudioBufferParameters.unkA = temp_v1 - 0x10;
gAudioBufferParameters.unk8 = temp_t0;
gAudioBufferParameters.unkC = (temp_t0 / 0xC0) + 1;
temp_a2 = gAudioBufferParameters.unkC;
gAudioBufferParameters.unkE = (temp_v1 / temp_a2) & 0xFFF8;
temp_t1 = gAudioBufferParameters.unkE;
temp_f0 = temp_a2;
D_803B7088.unk10 = temp_t1 + 8;
D_803B7088.unk12 = temp_t1 - 8;
D_803B7088.unk14 = 32000.0f / temp_a3;
D_803B7088.unk1C = D_800F2E98 / temp_f0;
D_803B7088.unk18 = 1.0f / temp_f0;
D_803B70B0 = temp_s6->unk5;
gAudioBufferParameters.unk10 = temp_t1 + 8;
gAudioBufferParameters.unk12 = temp_t1 - 8;
gAudioBufferParameters.unk14 = 32000.0f / temp_a3;
gAudioBufferParameters.unk1C = D_800F2E98 / temp_f0;
gAudioBufferParameters.unk18 = 1.0f / temp_f0;
gMaxSimultaneousNotes = temp_s6->unk5;
D_803AFBC0 = temp_s6->unkC;
D_803B70B4 = ((temp_f0 * D_800F2E9C) / D_800EA5CC) / D_803B7178;
D_803B7088.unk0 = temp_s6->unk4;
temp_a1 = D_803B7088.unk0;
D_803B7088.unk6 = temp_v1 * temp_a1;
D_803B7088.unk8 = D_803B7088.unk8 * temp_a1;
D_803B7088.unkA = D_803B7088.unkA * temp_a1;
D_803B7088.unkC = temp_a2 * temp_a1;
D_803B70AC = (D_803B70B0 * 0x14 * D_803B7088.unkC) + (temp_s6->unk6 << 5) + 0x1E0;
gAudioBufferParameters.unk0 = temp_s6->unk4;
temp_a1 = gAudioBufferParameters.unk0;
gAudioBufferParameters.unk6 = temp_v1 * temp_a1;
gAudioBufferParameters.unk8 = gAudioBufferParameters.unk8 * temp_a1;
gAudioBufferParameters.unkA = gAudioBufferParameters.unkA * temp_a1;
gAudioBufferParameters.unkC = temp_a2 * temp_a1;
D_803B70AC = (gMaxSimultaneousNotes * 0x14 * gAudioBufferParameters.unkC) + (temp_s6->unk6 << 5) + 0x1E0;
temp_s0 = temp_s6->unk10 + temp_s6->unk14 + temp_s6->unk18;
temp_s1 = temp_s6->unk1C + temp_s6->unk20 + temp_s6->unk24;
temp_t2 = temp_s0 + temp_s1;
@@ -1082,14 +1085,14 @@ void func_800BA250(void) {
D_803B0370.unk8 = temp_s6->unk24;
func_800B9300(&D_803B0370);
func_800B8DE0();
D_803B1508 = func_800B8FFC(&D_803AFBE8, D_803B70B0 * 0xC0);
D_803B1508 = soundAlloc(&gNotesAndBuffersPool, gMaxSimultaneousNotes * 0xC0);
func_800BDD34();
func_800BD368();
D_803AFBC4 = func_800B8FFC(&D_803AFBE8, D_803B7088.unkC * D_803B70B0 * 0x10);
D_803AFBC4 = soundAlloc(&gNotesAndBuffersPool, gAudioBufferParameters.unkC * gMaxSimultaneousNotes * 0x10);
phi_s0 = &D_803B70C8;
do {
temp_s0_2 = phi_s0 + 4;
temp_s0_2->unk-4 = func_800B8FFC(&D_803AFBE8, D_803B70AC * 8);
temp_s0_2->unk-4 = soundAlloc(&gNotesAndBuffersPool, D_803B70AC * 8);
phi_s0 = temp_s0_2;
} while (temp_s0_2 != &D_803B70D0);
phi_s2 = &D_803AF790;
@@ -1109,9 +1112,9 @@ void func_800BA250(void) {
phi_s2_2->unk4 = temp_v0->unk0;
phi_s2_2->unk1 = 8;
phi_s2_2->unk8 = temp_v0->unk2;
phi_s2_2->unk18 = func_800B8FFC(&D_803AFBE8, (temp_t7 & 0xFFFF) * 2);
phi_s2_2->unk18 = soundAlloc(&gNotesAndBuffersPool, (temp_t7 & 0xFFFF) * 2);
temp_v1_2 = phi_s2_2->unk4;
phi_s2_2->unk1C = func_800B8FFC(&D_803AFBE8, phi_s2_2->unk6 * 2);
phi_s2_2->unk1C = soundAlloc(&gNotesAndBuffersPool, phi_s2_2->unk6 * 2);
phi_s2_2->unkC = 0;
phi_s2_2->unk10 = 0;
phi_s2_2->unk3 = 0;
@@ -1120,26 +1123,26 @@ void func_800BA250(void) {
if (temp_v1_2 != 1) {
phi_s2_2->unk0 = 1;
phi_s2_2->unkA = 0x8000 / temp_v1_2;
phi_s2_2->unk20 = func_800B8FFC(&D_803AFBE8, 0x20);
phi_s2_2->unk24 = func_800B8FFC(&D_803AFBE8, 0x20);
phi_s2_2->unk28 = func_800B8FFC(&D_803AFBE8, 0x20);
phi_s2_2->unk2C = func_800B8FFC(&D_803AFBE8, 0x20);
phi_s2_2->unk20 = soundAlloc(&gNotesAndBuffersPool, 0x20);
phi_s2_2->unk24 = soundAlloc(&gNotesAndBuffersPool, 0x20);
phi_s2_2->unk28 = soundAlloc(&gNotesAndBuffersPool, 0x20);
phi_s2_2->unk2C = soundAlloc(&gNotesAndBuffersPool, 0x20);
phi_s1 = 0;
if (D_803B7088.unkC > 0) {
if (gAudioBufferParameters.unkC > 0) {
phi_s0_2 = phi_s2_2;
do {
temp_v0_2 = func_800B8FFC(&D_803AFBE8, 0x300);
temp_v0_2 = soundAlloc(&gNotesAndBuffersPool, 0x300);
temp_t6 = temp_v0_2 + 0x180;
phi_s0_2->unk34 = temp_v0_2;
phi_s0_2->unk38 = temp_t6;
temp_v0_3 = func_800B8FFC(&D_803AFBE8, 0x300);
temp_v0_3 = soundAlloc(&gNotesAndBuffersPool, 0x300);
temp_t8 = temp_v0_3 + 0x180;
phi_s0_2->unk98 = temp_v0_3;
phi_s0_2->unk9C = temp_t8;
temp_s1_2 = phi_s1 + 1;
phi_s0_2 += 0x14;
phi_s1 = temp_s1_2;
} while (temp_s1_2 < D_803B7088.unkC);
} while (temp_s1_2 < gAudioBufferParameters.unkC);
}
}
temp_s5 = phi_s5 + 1;
@@ -1147,7 +1150,7 @@ void func_800BA250(void) {
phi_s2_2 += 0x108;
} while (temp_s5 < D_803AFBC3);
}
func_800BB030(D_803B70B0);
func_800BB030(gMaxSimultaneousNotes);
osWritebackDCacheAll();
}
#else
+27
View File
@@ -0,0 +1,27 @@
#ifndef AUDIO_HEAP_H
#define AUDIO_HEAP_H
#include <PR/ultratypes.h>
#include "internal.h"
#define SOUND_LOAD_STATUS_NOT_LOADED 0
#define SOUND_LOAD_STATUS_IN_PROGRESS 1
#define SOUND_LOAD_STATUS_COMPLETE 2
#define SOUND_LOAD_STATUS_DISCARDABLE 3
#define SOUND_LOAD_STATUS_4 4
#define SOUND_LOAD_STATUS_5 5
#define IS_BANK_LOAD_COMPLETE(bankId) (gBankLoadStatus[bankId] >= SOUND_LOAD_STATUS_COMPLETE)
#define IS_SEQ_LOAD_COMPLETE(seqId) (gSeqLoadStatus[seqId] >= SOUND_LOAD_STATUS_COMPLETE)
struct SoundAllocPool {
u8 *start;
u8 *cur;
u32 size;
s32 numAllocatedEntries;
}; // size = 0x10
extern struct SoundAllocPool gNotesAndBuffersPool;
#endif // AUDIO_HEAP_H
+75
View File
@@ -3,11 +3,57 @@
#include <PR/ultratypes.h>
// No-op printf macro which leaves string literals in rodata in IDO. IDO
// doesn't support variadic macros, so instead we let the parameter list
// expand to a no-op comma expression. Another possibility is that it might
// have expanded to something with "if (0)". See also goddard/gd_main.h.
// On US/JP, -sopt optimizes away these except for external.c.
#ifdef __sgi
#define stubbed_printf
#else
#define stubbed_printf(...)
#endif
#define stubbed_printf_0(msg) stubbed_printf(msg)
#define stubbed_printf_1(msg, a) stubbed_printf(msg, a)
#define stubbed_printf_2(msg, a, b) stubbed_printf(msg, a, b)
#define stubbed_printf_3(msg, a, b, c) stubbed_printf(msg, a, b, c)
struct AdsrEnvelope {
s16 delay;
s16 arg;
}; // size = 0x4
struct AdpcmLoop {
u32 start;
u32 end;
u32 count;
u32 pad;
s16 state[16]; // only exists if count != 0. 8-byte aligned
};
struct AdpcmBook {
s32 order;
s32 npredictors;
s16 book[1]; // size 8 * order * npredictors. 8-byte aligned
};
struct AudioBankSample {
u8 unused;
u8 loaded;
u8 *sampleAddr;
struct AdpcmLoop *loop;
struct AdpcmBook *book;
u32 sampleSize; // never read. either 0 or 1 mod 9, depending on padding
};
struct AudioBankSound {
struct AudioBankSample *sample;
f32 tuning; // frequency scale factor
}; // size = 0x8
struct NoteSub
{
/*0x00*/ volatile u8 enabled : 1;
@@ -35,4 +81,33 @@ struct NoteSub
} sound;
};
struct AudioSessionSettings {
/*0x00*/ u32 frequency;
/*0x04*/ u8 maxSimultaneousNotes;
/*0x05*/ u8 reverbDownsampleRate; // always 1
/*0x06*/ u16 reverbWindowSize;
/*0x08*/ u16 reverbGain;
/*0x0A*/ u16 volume;
/*0x0C*/ u32 persistentSeqMem;
/*0x10*/ u32 persistentBankMem;
/*0x14*/ u32 temporarySeqMem;
/*0x18*/ u32 temporaryBankMem;
}; // size = 0x1C
struct AudioBufferParametersEU {
/*0x00*/ s16 presetUnk4; // audio frames per vsync?
/*0x02*/ u16 frequency;
/*0x04*/ u16 aiFrequency; // ?16
/*0x06*/ s16 samplesPerFrameTarget;
/*0x08*/ s16 maxAiBufferLength;
/*0x0A*/ s16 minAiBufferLength;
/*0x0C*/ s16 updatesPerFrame;
/*0x0E*/ s16 samplesPerUpdate;
/*0x10*/ s16 samplesPerUpdateMax;
/*0x12*/ s16 samplesPerUpdateMin;
/*0x14*/ f32 resampleRate; // contains 32000.0f / frequency
/*0x18*/ f32 updatesPerFrameInv; // 1.0f / updatesPerFrame
/*0x1C*/ f32 unkUpdatesPerFrameScaled; // 3.0f / (1280.0f * updatesPerFrame)
};
#endif
+343 -370
View File
@@ -1,145 +1,248 @@
#include <ultra64.h>
#include <macros.h>
#include "load.h"
#include "data.h"
#include "heap.h"
#include "internal.h"
#define ALIGN16(val) (((val) + 0xF) & ~0xF)
struct SharedDma {
/*0x0*/ u8 *buffer; // target, points to pre-allocated buffer
/*0x4*/ uintptr_t source; // device address
/*0x8*/ u16 sizeUnused; // set to bufSize, never read
/*0xA*/ u16 bufSize; // size of buffer
/*0xC*/ u8 unused2; // set to 0, never read
/*0xD*/ u8 reuseIndex; // position in sSampleDmaReuseQueue1/2, if ttl == 0
/*0xE*/ u8 ttl; // duration after which the DMA can be discarded
}; // size = 0x10
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? osPiStartDma(? *, ?, ?, s32, void *, u32, OSMesgQueue *); // extern
extern OSMesgQueue D_803B6720;
extern ? D_803B6740;
extern OSIoMesg D_803B6740;
void func_800BAA80(s32 arg0, void *arg1, u32 arg2) {
osInvalDCache(arg1, arg2);
osPiStartDma(&D_803B6740, 1, 0, arg0, arg1, arg2, &D_803B6720);
osRecvMesg(&D_803B6720, NULL, 1);
extern OSMesgQueue gCurrAudioFrameDmaQueue; // gCurrAudioFrameDmaQueue
extern OSMesg gCurrAudioFrameDmaMesgBufs[AUDIO_FRAME_DMA_QUEUE_SIZE]; // gCurrAudioFrameDmaMesgBufs
extern OSIoMesg gCurrAudioFrameDmaIoMesgBufs[AUDIO_FRAME_DMA_QUEUE_SIZE]; // gCurrAudioFrameDmaIoMesgBufs
extern struct SharedDma sSampleDmas[0x60]; // sSampleDmas
extern u32 gSampleDmaNumListItems; // gSampleDmaNumListItems
extern u32 sSampleDmaListSize1; // sSampleDmaListSize1
extern s32 D_803B6E60; // sUnused80226B40
extern u8 sSampleDmaReuseQueue1[256]; // sSampleDmaReuseQueue1
extern u8 sSampleDmaReuseQueue2[256]; // sSampleDmaReuseQueue2
extern u8 sSampleDmaReuseQueueTail1; // sSampleDmaReuseQueueTail1
extern u8 sSampleDmaReuseQueueTail2; // sSampleDmaReuseQueueTail2
extern u8 sSampleDmaReuseQueueHead1; // sSampleDmaReuseQueueHead1
extern u8 sSampleDmaReuseQueueHead2; // sSampleDmaReuseQueueHead2
extern void *soundAlloc(struct SoundAllocPool *pool, u32 size);
/**
* Performs an immediate DMA copy
*/
// audio_dma_copy_immediate
void audio_dma_copy_immediate(uintptr_t devAddr, void *vAddr, size_t nbytes) {
stubbed_printf_3("Romcopy %x -> %x ,size %x\n", devAddr, vAddr, nbytes);
osInvalDCache(vAddr, nbytes);
osPiStartDma(&D_803B6740, OS_MESG_PRI_HIGH, OS_READ, devAddr, vAddr, nbytes, &D_803B6720);
osRecvMesg(&D_803B6720, NULL, OS_MESG_BLOCK);
stubbed_printf_0("Romcopyend\n");
}
#else
GLOBAL_ASM("asm/non_matchings/audio/load/func_800BAA80.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? osPiStartDma(s32, ?, ?, s32, void *, u32, s32); // extern
const char audioString34[] = "CAUTION:WAVE CACHE FULL %d";
const char audioString35[] = "LOAD Rom :%x -> Ram :%x Len:%x\n";
const char audioString36[] = "BASE %x %x\n";
const char audioString37[] = "LOAD %x %x %x\n";
const char audioString38[] = "INSTTOP %x\n";
const char audioString39[] = "INSTMAP[0] %x\n";
const char audioString40[] = "already flags %d\n";
const char audioString41[] = "already flags %d\n";
const char audioString42[] = "ERR:SLOW BANK DMA BUSY\n";
const char audioString43[] = "ERR:SLOW DMA BUSY\n";
const char audioString44[] = "Check %d bank %d\n";
const char audioString45[] = "Cache Check\n";
const char audioString46[] = "NO BANK ERROR\n";
const char audioString47[] = "BANK %d LOADING START\n";
const char audioString48[] = "BANK %d LOAD MISS (NO MEMORY)!\n";
const char audioString49[] = "BANK %d ALREADY CACHED\n";
const char audioString50[] = "BANK LOAD MISS! FOR %d\n";
void func_800BAAF8(s32 arg0, void *arg1, u32 arg2, s32 arg3, s32 arg4) {
osInvalDCache(arg1, arg2);
osPiStartDma(arg4, 0, 0, arg0, arg1, arg2, arg3);
const char audioString51[] = "Seq %d Loading Start\n";
const char audioString52[] = "Heap Overflow Error\n";
const char asdf[] = "SEQ %d ALREADY CACHED\n";
const char fdsa[] = "Ok,one bank slow load Start \n";
const char af[] = "Sorry,too many %d bank is none.fast load Start \n";
/**
* Performs an asynchronus (normal priority) DMA copy
*/
//audio_dma_copy_async
void func_800BAAF8(uintptr_t devAddr, void *vAddr, size_t nbytes, OSMesgQueue *queue, OSIoMesg *mesg) {
osInvalDCache(vAddr, nbytes);
osPiStartDma(mesg, OS_MESG_PRI_NORMAL, OS_READ, devAddr, vAddr, nbytes, queue);
}
#else
GLOBAL_ASM("asm/non_matchings/audio/load/func_800BAAF8.s")
#endif
//#else
//GLOBAL_ASM("asm/non_matchings/audio/load/func_800BAAF8.s")
//#endif
#ifdef MIPS_TO_C
//#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? osPiStartDma(s32, ?, ?, s32, void *, u32, s32); // extern
//? osPiStartDma(s32, ?, ?, s32, void *, u32, s32); // extern
void func_800BAB58(s32 *arg0, void **arg1, s32 *arg2, s32 arg3, s32 arg4) {
s32 temp_v0;
u32 phi_s0;
temp_v0 = *arg2;
phi_s0 = temp_v0;
if (temp_v0 >= 0x1000) {
phi_s0 = 0x1000;
}
*arg2 = temp_v0 - phi_s0;
osInvalDCache(*arg1, phi_s0);
osPiStartDma(arg4, 0, 0, *arg0, *arg1, phi_s0, arg3);
*arg0 = *arg0 + phi_s0;
*arg1 = *arg1 + phi_s0;
/**
* Performs a partial asynchronous (normal priority) DMA copy. This is limited
* to 0x1000 bytes transfer at once.
*/
// audio_dma_partial_copy_async
void func_800BAB58(uintptr_t *devAddr, u8 **vAddr, ssize_t *remaining, OSMesgQueue *queue, OSIoMesg *mesg) {
ssize_t transfer = (*remaining >= 0x1000 ? 0x1000 : *remaining);
*remaining -= transfer;
osInvalDCache(*vAddr, transfer);
osPiStartDma(mesg, OS_MESG_PRI_NORMAL, OS_READ, *devAddr, *vAddr, transfer, queue);
*devAddr += transfer;
*vAddr += transfer;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/load/func_800BAB58.s")
#endif
//#else
//GLOBAL_ASM("asm/non_matchings/audio/load/func_800BAB58.s")
//#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
extern ? D_803B6758;
extern u32 D_803B6E58;
extern u32 D_803B6E5C;
extern s32 D_803B6E60;
extern ? D_803B6E68;
extern ? D_803B6F68;
extern u8 D_803B706A;
extern u8 D_803B706B;
// decrease_sample_dma_ttls
void func_800BAC04(void) {
u32 temp_v0;
u32 temp_v0_2;
u8 temp_t4;
u8 temp_t6;
u8 temp_t6_2;
u8 temp_t8;
u8 temp_v1;
u8 temp_v1_2;
u8 temp_v1_3;
u8 temp_v1_4;
? *phi_a0;
s8 phi_v0;
void *phi_a0_2;
s8 phi_v0_2;
void func_800BAC04() {
u32 i;
phi_a0 = &D_803B6758;
phi_v0 = 0;
if (D_803B6E5C != 0) {
do {
temp_v1 = phi_a0->unkE;
temp_t6 = temp_v1 - 1;
if (temp_v1 != 0) {
phi_a0->unkE = temp_t6;
if ((temp_t6 & 0xFF) == 0) {
temp_v1_2 = D_803B706A;
temp_t8 = D_803B706A;
*(&D_803B6E68 + temp_v1_2) = phi_v0;
D_803B706A = temp_v1_2 + 1;
phi_a0->unkD = temp_t8;
}
for (i = 0; i < sSampleDmaListSize1; i++) {
struct SharedDma *temp = &sSampleDmas[i];
if (temp->ttl != 0) {
temp->ttl--;
if (temp->ttl == 0) {
temp->reuseIndex = sSampleDmaReuseQueueHead1;
sSampleDmaReuseQueue1[sSampleDmaReuseQueueHead1++] = (u8) i;
}
temp_v0 = phi_v0 + 1;
phi_a0 += 0x10;
phi_v0 = temp_v0;
} while (temp_v0 < D_803B6E5C);
}
}
phi_v0_2 = D_803B6E5C;
if (D_803B6E5C < D_803B6E58) {
phi_a0_2 = (D_803B6E5C * 0x10) + &D_803B6758;
do {
temp_v1_3 = phi_a0_2->unkE;
temp_t4 = temp_v1_3 - 1;
if (temp_v1_3 != 0) {
phi_a0_2->unkE = temp_t4;
if ((temp_t4 & 0xFF) == 0) {
temp_v1_4 = D_803B706B;
temp_t6_2 = D_803B706B;
*(&D_803B6F68 + temp_v1_4) = phi_v0_2;
D_803B706B = temp_v1_4 + 1;
phi_a0_2->unkD = temp_t6_2;
}
for (i = sSampleDmaListSize1; i < gSampleDmaNumListItems; i++) {
struct SharedDma *temp = &sSampleDmas[i];
if (temp->ttl != 0) {
temp->ttl--;
if (temp->ttl == 0) {
temp->reuseIndex = sSampleDmaReuseQueueHead2;
sSampleDmaReuseQueue2[sSampleDmaReuseQueueHead2++] = (u8) i;
}
temp_v0_2 = phi_v0_2 + 1;
phi_a0_2 += 0x10;
phi_v0_2 = temp_v0_2;
} while (temp_v0_2 < D_803B6E58);
}
}
D_803B6E60 = 0;
}
#else
GLOBAL_ASM("asm/non_matchings/audio/load/func_800BAC04.s")
#endif
#ifdef MIPS_TO_C
// dma_sample_data 3000 score diff
void *func_800BAD0C(uintptr_t devAddr, u32 size, s32 arg2, u8 *dmaIndexRef) {
s32 hasDma = FALSE;
struct SharedDma *dma;
uintptr_t dmaDevAddr;
u32 transfer;
u32 i;
u32 dmaIndex;
ssize_t bufferPos;
UNUSED u32 pad;
if (arg2 != 0 || *dmaIndexRef >= sSampleDmaListSize1) {
for (i = sSampleDmaListSize1; i < gSampleDmaNumListItems; i++) {
dma = &sSampleDmas[i];
bufferPos = devAddr - dma->source;
if (0 <= bufferPos && (size_t) bufferPos <= dma->bufSize - size) {
// We already have a DMA request for this memory range.
if (dma->ttl == 0 && sSampleDmaReuseQueueTail2 != sSampleDmaReuseQueueHead2) {
// Move the DMA out of the reuse queue, by swapping it with the
// tail, and then incrementing the tail.
if (dma->reuseIndex != sSampleDmaReuseQueueTail2) {
sSampleDmaReuseQueue2[dma->reuseIndex] =
sSampleDmaReuseQueue2[sSampleDmaReuseQueueTail2];
sSampleDmas[sSampleDmaReuseQueue2[sSampleDmaReuseQueueTail2]].reuseIndex =
dma->reuseIndex;
}
sSampleDmaReuseQueueTail2++;
}
dma->ttl = 60;
*dmaIndexRef = (u8) i;
return &dma->buffer[(devAddr - dma->source)];
}
}
if (sSampleDmaReuseQueueTail2 != sSampleDmaReuseQueueHead2 && arg2 != 0) {
// Allocate a DMA from reuse queue 2. This queue can be empty, since
// TTL 60 is pretty large.
dmaIndex = sSampleDmaReuseQueue2[sSampleDmaReuseQueueTail2];
sSampleDmaReuseQueueTail2++;
dma = sSampleDmas + dmaIndex;
hasDma = TRUE;
}
} else {
dma = sSampleDmas;
dma += *dmaIndexRef;
bufferPos = devAddr - dma->source;
if (0 <= bufferPos && (size_t) bufferPos <= dma->bufSize - size) {
// We already have DMA for this memory range.
if (dma->ttl == 0) {
// Move the DMA out of the reuse queue, by swapping it with the
// tail, and then incrementing the tail.
if (dma->reuseIndex != sSampleDmaReuseQueueTail1) {
if (1) {
}
sSampleDmaReuseQueue1[dma->reuseIndex] =
sSampleDmaReuseQueue1[sSampleDmaReuseQueueTail1];
sSampleDmas[sSampleDmaReuseQueue1[sSampleDmaReuseQueueTail1]].reuseIndex =
dma->reuseIndex;
}
sSampleDmaReuseQueueTail1++;
}
dma->ttl = 2;
return dma->buffer + (devAddr - dma->source);
}
}
if (!hasDma) {
// Allocate a DMA from reuse queue 1. This queue will hopefully never
// be empty, since TTL 2 is so small.
dmaIndex = sSampleDmaReuseQueue1[sSampleDmaReuseQueueTail1++];
dma = sSampleDmas + dmaIndex;
hasDma = TRUE;
}
transfer = dma->bufSize;
dmaDevAddr = devAddr & ~0xF;
dma->ttl = 2;
dma->source = dmaDevAddr;
dma->sizeUnused = transfer;
osPiStartDma(&gCurrAudioFrameDmaIoMesgBufs[gCurrAudioFrameDmaCount++], OS_MESG_PRI_NORMAL,
OS_READ, dmaDevAddr, dma->buffer, transfer, &gCurrAudioFrameDmaQueue);
*dmaIndexRef = dmaIndex;
return (devAddr - dmaDevAddr) + dma->buffer;
}
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? osPiStartDma(void *, ?, ?, s32, s32, s32, ? *); // extern
extern ? D_803B6008;
extern ? D_803B6120;
extern ? D_803B6758;
extern u32 D_803B6E58;
extern u32 D_803B6E5C;
extern ? D_803B6E68;
extern ? D_803B6F68;
extern u8 D_803B7068;
extern u8 D_803B7069;
extern u8 D_803B706B;
extern s32 D_803B70BC;
extern ? gCurrAudioFrameDmaQueue;
extern ? gCurrAudioFrameDmaIoMesgBufs;
extern ? sSampleDmas;
extern u32 gSampleDmaNumListItems;
extern u32 sSampleDmaListSize1;
extern ? sSampleDmaReuseQueue1;
extern ? sSampleDmaReuseQueue2;
extern u8 sSampleDmaReuseQueueTail1;
extern u8 sSampleDmaReuseQueueTail2;
extern u8 sSampleDmaReuseQueueHead2;
extern s32 gCurrAudioFrameDmaCount;
s32 func_800BAD0C(s32 arg0, s32 arg1, s32 arg2, u8 *arg3) {
void *sp40;
@@ -178,25 +281,25 @@ s32 func_800BAD0C(s32 arg0, s32 arg1, s32 arg2, u8 *arg3) {
phi_t3 = 0;
phi_t3 = 0;
if ((arg2 != 0) || (temp_a1 = D_803B6E5C, temp_v0 = *arg3, phi_v1 = 0, ((temp_v0 < temp_a1) == 0))) {
temp_a1_2 = D_803B6E58;
temp_v1_3 = D_803B6E5C;
if ((arg2 != 0) || (temp_a1 = sSampleDmaListSize1, temp_v0 = *arg3, phi_v1 = 0, ((temp_v0 < temp_a1) == 0))) {
temp_a1_2 = gSampleDmaNumListItems;
temp_v1_3 = sSampleDmaListSize1;
phi_v1_2 = temp_v1_3;
if (temp_v1_3 < temp_a1_2) {
phi_a0 = (temp_v1_3 * 0x10) + &D_803B6758;
phi_a0 = (temp_v1_3 * 0x10) + &sSampleDmas;
loop_4:
temp_v0_4 = arg0 - phi_a0->unk4;
if ((temp_v0_4 >= 0) && ((phi_a0->unkA - arg1) >= temp_v0_4)) {
if (phi_a0->unkE == 0) {
temp_a1_3 = D_803B7069;
if (D_803B706B != temp_a1_3) {
temp_a1_3 = sSampleDmaReuseQueueTail2;
if (sSampleDmaReuseQueueHead2 != temp_a1_3) {
temp_a3 = phi_a0->unkD;
temp_v0_5 = &D_803B6F68 + temp_a1_3;
temp_v0_5 = &sSampleDmaReuseQueue2 + temp_a1_3;
if (temp_a1_3 != temp_a3) {
*(&D_803B6F68 + temp_a3) = *temp_v0_5;
(&D_803B6758 + (*temp_v0_5 * 0x10))->unkD = phi_a0->unkD;
*(&sSampleDmaReuseQueue2 + temp_a3) = *temp_v0_5;
(&sSampleDmas + (*temp_v0_5 * 0x10))->unkD = phi_a0->unkD;
}
D_803B7069 = temp_a1_3 + 1;
sSampleDmaReuseQueueTail2 = temp_a1_3 + 1;
}
}
phi_a0->unkE = 0x3C;
@@ -213,18 +316,18 @@ loop_4:
goto loop_4;
}
block_14:
temp_a1_4 = D_803B7069;
temp_a1_4 = sSampleDmaReuseQueueTail2;
phi_t0_2 = sp40;
if ((D_803B706B != temp_a1_4) && (arg2 != 0)) {
temp_t2 = *(&D_803B6F68 + temp_a1_4);
D_803B7069 = temp_a1_4 + 1;
if ((sSampleDmaReuseQueueHead2 != temp_a1_4) && (arg2 != 0)) {
temp_t2 = *(&sSampleDmaReuseQueue2 + temp_a1_4);
sSampleDmaReuseQueueTail2 = temp_a1_4 + 1;
sp30 = temp_t2;
phi_t3 = 1;
phi_t0_2 = &D_803B6758 + (temp_t2 * 0x10);
phi_t0_2 = &sSampleDmas + (temp_t2 * 0x10);
}
goto block_27;
}
temp_t0 = &D_803B6758 + (temp_v0 * 0x10);
temp_t0 = &sSampleDmas + (temp_v0 * 0x10);
phi_t0 = temp_t0;
phi_t0_2 = temp_t0;
if (temp_a1 != 0) {
@@ -234,19 +337,19 @@ loop_19:
phi_v1 = temp_v1;
if ((temp_v0_2 >= 0) && ((phi_t0->unkA - arg1) >= temp_v0_2)) {
if (phi_t0->unkE == 0) {
temp_v1_2 = D_803B7068;
temp_v1_2 = sSampleDmaReuseQueueTail1;
temp_a0 = phi_t0->unkD;
temp_v0_3 = &D_803B6E68 + temp_v1_2;
temp_v0_3 = &sSampleDmaReuseQueue1 + temp_v1_2;
if (temp_v1_2 != temp_a0) {
*(&D_803B6E68 + temp_a0) = *temp_v0_3;
(&D_803B6758 + (*temp_v0_3 * 0x10))->unkD = phi_t0->unkD;
*(&sSampleDmaReuseQueue1 + temp_a0) = *temp_v0_3;
(&sSampleDmas + (*temp_v0_3 * 0x10))->unkD = phi_t0->unkD;
}
D_803B7068 = temp_v1_2 + 1;
sSampleDmaReuseQueueTail1 = temp_v1_2 + 1;
}
phi_t0->unkE = 2;
return (phi_t0->unk0 + arg0) - phi_t0->unk4;
}
temp_t0_2 = &D_803B6758 + (phi_v1 * 0x10);
temp_t0_2 = &sSampleDmas + (phi_v1 * 0x10);
phi_t0 = temp_t0_2;
phi_t0_2 = temp_t0_2;
if (temp_v1 >= temp_a1) {
@@ -257,10 +360,10 @@ loop_19:
block_27:
phi_t2 = sp30;
if (phi_t3 == 0) {
temp_v1_5 = D_803B7068;
temp_t2_2 = *(&D_803B6E68 + temp_v1_5);
D_803B7068 = temp_v1_5 + 1;
phi_t0_2 = &D_803B6758 + (temp_t2_2 * 0x10);
temp_v1_5 = sSampleDmaReuseQueueTail1;
temp_t2_2 = *(&sSampleDmaReuseQueue1 + temp_v1_5);
sSampleDmaReuseQueueTail1 = temp_v1_5 + 1;
phi_t0_2 = &sSampleDmas + (temp_t2_2 * 0x10);
phi_t2 = temp_t2_2;
}
temp_v0_6 = phi_t0_2->unkA;
@@ -268,12 +371,12 @@ block_27:
phi_t0_2->unkE = 2;
phi_t0_2->unk4 = temp_s0;
phi_t0_2->unk8 = temp_v0_6;
temp_v1_6 = D_803B70BC;
temp_v1_6 = gCurrAudioFrameDmaCount;
temp_t9 = temp_v1_6 * 0x18;
D_803B70BC = temp_v1_6 + 1;
gCurrAudioFrameDmaCount = temp_v1_6 + 1;
sp30 = phi_t2;
sp40 = phi_t0_2;
osPiStartDma(temp_t9 + &D_803B6120, 0, 0, temp_s0, phi_t0_2->unk0, temp_v0_6, &D_803B6008);
sp40 = phi_t0_2;./
osPiStartDma(temp_t9 + &gCurrAudioFrameDmaIoMesgBufs, 0, 0, temp_s0, phi_t0_2->unk0, temp_v0_6, &gCurrAudioFrameDmaQueue);
*arg3 = phi_t2;
return (arg0 - temp_s0) + phi_t0_2->unk0;
}
@@ -281,223 +384,95 @@ block_27:
GLOBAL_ASM("asm/non_matchings/audio/load/func_800BAD0C.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_800B8FFC(? *, s32, u32); // extern
extern ? D_803BFBE8;
extern ? D_803B6758;
extern u32 D_803B6E58;
extern u32 D_803B6E5C;
extern s8 D_803B6E68;
extern ? D_803B6F68;
extern s8 D_803B7068;
extern s8 D_803B7069;
extern s8 D_803B706A;
extern s8 D_803B706B;
extern s16 D_803B7088;
extern s32 D_803B70A8;
extern s32 D_803B70B0;
void func_800BB030(s32 arg0, u32 arg2) {
s32 temp_a1;
s32 temp_a1_2;
s32 temp_s0;
s32 temp_s0_3;
s32 temp_v0;
s32 temp_v0_3;
s8 temp_v0_4;
u32 temp_a1_3;
u32 temp_a2;
u32 temp_a2_2;
u32 temp_a2_3;
u32 temp_s0_2;
u32 temp_s0_4;
u32 temp_v0_2;
u32 temp_v0_5;
void *temp_v1;
void *temp_v1_2;
s32 phi_a1;
u32 phi_a2;
s32 phi_s0;
s8 phi_s0_2;
s8 *phi_v0;
? *phi_v1;
void *phi_v0_2;
s32 phi_a1_2;
s32 phi_s0_3;
u32 phi_a2_2;
s8 phi_s0_4;
s8 *phi_a0;
s8 phi_v0_3;
void *phi_v1_2;
s32 phi_a3;
void *phi_v0_4;
u32 phi_a2_3;
extern u32 D_803B70A8; // sDmaBufSize
extern s32 gMaxSimultaneousNotes; // gMaxSimultaneousNotes
extern struct AudioBufferParametersEU gAudioBufferParameters; // gAudioBufferParameters
//extern struct SoundAllocPool gNotesAndBuffersPool; // remove when possible. This is in heap.h
// init_sample_dma_buffers
void func_800BB030(UNUSED s32 arg0) {
s32 i;
#define j i
D_803B70A8 = 0x5A0;
phi_a1 = 0x5A0;
phi_a2 = arg2;
phi_s0 = 0;
phi_s0_3 = 0;
if ((D_803B70B0 * 3 * D_803B7088) > 0) {
loop_1:
temp_v0 = func_800B8FFC(&D_803BFBE8, phi_a1, phi_a2);
temp_a2 = D_803B6E58;
temp_v1 = &D_803B6758 + (temp_a2 * 0x10);
temp_v1->unk0 = temp_v0;
phi_a2 = temp_a2;
if (temp_v0 == 0) {
} else {
temp_a1 = D_803B70A8;
temp_s0 = phi_s0 + 1;
temp_v1->unk4 = 0;
temp_v1->unk8 = 0;
temp_v1->unkC = 0;
temp_v1->unkE = 0;
D_803B6E58 = temp_a2 + 1;
temp_v1->unkA = temp_a1;
phi_a1 = temp_a1;
phi_s0 = temp_s0;
if (temp_s0 >= (D_803B70B0 * 3 * D_803B7088)) {
} else {
goto loop_1;
}
for (i = 0; i < gMaxSimultaneousNotes * 3 * gAudioBufferParameters.presetUnk4; i++)
{
sSampleDmas[gSampleDmaNumListItems].buffer = soundAlloc(&gNotesAndBuffersPool, D_803B70A8);
if (sSampleDmas[gSampleDmaNumListItems].buffer == NULL) {
break;
}
sSampleDmas[gSampleDmaNumListItems].bufSize = D_803B70A8;
sSampleDmas[gSampleDmaNumListItems].source = 0;
sSampleDmas[gSampleDmaNumListItems].sizeUnused = 0;
sSampleDmas[gSampleDmaNumListItems].unused2 = 0;
sSampleDmas[gSampleDmaNumListItems].ttl = 0;
gSampleDmaNumListItems++;
}
temp_a2_2 = D_803B6E58;
phi_s0_2 = 0;
phi_a2_2 = temp_a2_2;
if (temp_a2_2 != 0) {
phi_v0 = &D_803B6E68;
phi_v1 = &D_803B6758;
do {
*phi_v0 = phi_s0_2;
phi_v1->unkD = phi_s0_2;
temp_s0_2 = phi_s0_2 + 1;
phi_s0_2 = temp_s0_2;
phi_v0 += 1;
phi_v1 += 0x10;
} while (temp_s0_2 < temp_a2_2);
for (i = 0; (u32) i < gSampleDmaNumListItems; i++) {
sSampleDmaReuseQueue1[i] = (u8) i;
sSampleDmas[i].reuseIndex = (u8) i;
}
phi_a3 = temp_a2_2;
if (temp_a2_2 < 0x100) {
phi_v0_2 = temp_a2_2 + &D_803B6E68;
do {
temp_v0_2 = phi_v0_2 + 1;
temp_v0_2->unk-1 = 0;
phi_v0_2 = temp_v0_2;
} while (temp_v0_2 < &D_803B6F68);
for (j = gSampleDmaNumListItems; j < 0x100; j++) {
sSampleDmaReuseQueue1[j] = 0;
}
D_803B7068 = 0;
D_803B706A = temp_a2_2;
D_803B6E5C = temp_a2_2;
sSampleDmaReuseQueueTail1 = 0;
sSampleDmaReuseQueueHead1 = (u8) gSampleDmaNumListItems;
sSampleDmaListSize1 = gSampleDmaNumListItems;
D_803B70A8 = 0x180;
if (D_803B70B0 > 0) {
phi_a1_2 = 0x180;
loop_13:
temp_v0_3 = func_800B8FFC(&D_803BFBE8, phi_a1_2, D_803B6E58);
temp_a2_3 = D_803B6E58;
temp_s0_3 = phi_s0_3 + 1;
temp_v1_2 = &D_803B6758 + (temp_a2_3 * 0x10);
temp_v1_2->unk0 = temp_v0_3;
phi_s0_3 = temp_s0_3;
phi_a2_3 = temp_a2_3;
if (temp_v0_3 == 0) {
} else {
temp_a1_2 = D_803B70A8;
temp_v1_2->unk4 = 0;
temp_v1_2->unk8 = 0;
temp_v1_2->unkC = 0;
temp_v1_2->unkE = 0;
D_803B6E58 = temp_a2_3 + 1;
temp_v1_2->unkA = temp_a1_2;
phi_a1_2 = temp_a1_2;
if (temp_s0_3 >= D_803B70B0) {
phi_a2_3 = D_803B6E58;
} else {
goto loop_13;
}
for (i = 0; i < gMaxSimultaneousNotes; i++) {
sSampleDmas[gSampleDmaNumListItems].buffer = soundAlloc(&gNotesAndBuffersPool, D_803B70A8);
if (sSampleDmas[gSampleDmaNumListItems].buffer == NULL) {
break;
}
phi_a2_2 = phi_a2_3;
phi_a3 = phi_a2_3;
sSampleDmas[gSampleDmaNumListItems].bufSize = D_803B70A8;
sSampleDmas[gSampleDmaNumListItems].source = 0;
sSampleDmas[gSampleDmaNumListItems].sizeUnused = 0;
sSampleDmas[gSampleDmaNumListItems].unused2 = 0;
sSampleDmas[gSampleDmaNumListItems].ttl = 0;
gSampleDmaNumListItems++;
}
temp_a1_3 = D_803B6E5C;
phi_s0_4 = temp_a1_3;
if (temp_a1_3 < phi_a2_2) {
temp_v0_4 = temp_a1_3 * 0;
phi_a0 = temp_v0_4 + &D_803B6F68;
phi_v0_3 = temp_v0_4;
phi_v1_2 = (temp_a1_3 * 0x10) + &D_803B6758;
do {
*phi_a0 = phi_s0_4;
temp_s0_4 = phi_s0_4 + 1;
phi_v1_2->unkD = phi_v0_3;
phi_s0_4 = temp_s0_4;
phi_a0 += 1;
phi_v0_3 += 1;
phi_v1_2 += 0x10;
} while (temp_s0_4 < phi_a2_2);
for (i = sSampleDmaListSize1; (u32) i < gSampleDmaNumListItems; i++) {
sSampleDmaReuseQueue2[i - sSampleDmaListSize1] = (u8) i;
sSampleDmas[i].reuseIndex = (u8)(i - sSampleDmaListSize1);
}
if (phi_a3 < 0x100) {
phi_v0_4 = phi_a3 + &D_803B6F68;
do {
temp_v0_5 = phi_v0_4 + 1;
temp_v0_5->unk-1 = temp_a1_3;
phi_v0_4 = temp_v0_5;
} while (temp_v0_5 < &D_803B7068);
// This probably meant to touch the range size1..size2 as well... but it
// doesn't matter, since these values are never read anyway.
for (j = gSampleDmaNumListItems; j < 0x100; j++) {
sSampleDmaReuseQueue2[j] = sSampleDmaListSize1;
}
D_803B7069 = 0;
D_803B706B = phi_a2_2 - temp_a1_3;
sSampleDmaReuseQueueTail2 = 0;
sSampleDmaReuseQueueHead2 = gSampleDmaNumListItems - sSampleDmaListSize1;
#undef j
}
#else
GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB030.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_800B8FFC(? *, s32, void *); // extern
? func_800BAA80(s32, s32, s32, void *); // extern
extern ? D_803BFBE8;
// Similar to patch_sound, but not really
s32 func_800BB304(struct AudioBankSample *sample) {
//struct AudioBankSample *sample = sound->sample;
UNUSED u8 *mem;
void func_800BB304(void *arg0) {
s32 sp1C;
s32 temp_a0;
s32 temp_a1;
s32 temp_a1_2;
s32 temp_a2;
s32 temp_v0;
void *temp_a3;
void *temp_a3_2;
temp_a3 = arg0;
if (arg0 == 0) {
return;
if (sample == (void *)NULL) {
return -1;
}
if (temp_a3->unk1 == 1) {
temp_a1 = temp_a3->unk10;
arg0 = temp_a3;
temp_v0 = func_800B8FFC(&D_803BFBE8, temp_a1, temp_a3);
temp_a3_2 = arg0;
temp_a1_2 = temp_v0;
if (temp_v0 == 0) {
return;
if (sample->loaded == 1) {
//temp_a1 = sound->sampleAddr // unk10;
mem = soundAlloc(&gNotesAndBuffersPool, sample->sampleSize);
//temp_a1_2 = temp_v0;
if (mem == (void *)NULL) {
return -1;
}
temp_a0 = temp_a3_2->unk4;
temp_a2 = temp_a3_2->unk10;
arg0 = temp_a3_2;
sp1C = temp_a1_2;
func_800BAA80(temp_a0, temp_a1_2, temp_a2, temp_a3_2);
arg0->unk1 = 0x81;
arg0->unk4 = temp_a1_2;
// Duplicate return node #6. Try simplifying control flow for better match
audio_dma_copy_immediate((uintptr_t)sample->sampleAddr, mem, sample->sampleSize);
sample->loaded = 0x81;
sample->sampleAddr = mem; // sound->unk4
}
}
#else
GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB304.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
@@ -574,9 +549,9 @@ GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB43C.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_800B8FFC(? *, s32, s32); // extern
? func_800BAA80(s32, s32, s32, s32); // extern
extern ? D_803BFBE8;
s32 soundAlloc(? *, s32, s32); // extern
? audio_dma_copy_immediate(s32, s32, s32, s32); // extern
extern ? gNotesAndBuffersPool;
void func_800BB484(void **arg0, s32 arg1, s32 arg2) {
void *sp2C;
@@ -604,14 +579,14 @@ void func_800BB484(void **arg0, s32 arg1, s32 arg2) {
temp_a3_2 = temp_a3->unk4 + arg2;
sp28 = temp_a3_2;
sp2C = temp_a3;
temp_v0_2 = func_800B8FFC(&D_803BFBE8, temp_a3->unk10, temp_a3_2);
temp_v0_2 = soundAlloc(&gNotesAndBuffersPool, temp_a3->unk10, temp_a3_2);
if (temp_v0_2 == 0) {
temp_a3->unk4 = temp_a3_2;
temp_a3->unk1 = 1;
} else {
sp24 = temp_v0_2;
sp2C = temp_a3;
func_800BAA80(temp_a3_2, temp_v0_2, temp_a3->unk10, temp_a3_2);
audio_dma_copy_immediate(temp_a3_2, temp_v0_2, temp_a3->unk10, temp_a3_2);
temp_a3->unk1 = 0x81;
temp_a3->unk4 = temp_v0_2;
}
@@ -723,10 +698,12 @@ void func_800BB624(void **arg0, ? arg1, s32 arg2, s32 arg3) {
GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB624.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_800B93BC(? *, ?, s32, ?, s32); // extern
? func_800BAA80(s32, s32, s32); // extern
? audio_dma_copy_immediate(s32, s32, s32); // extern
? func_800BB584(s32); // extern
extern ? D_803AFE18;
extern ? D_803B03C0;
@@ -751,7 +728,7 @@ s32 func_800BB780(s32 arg0, ? arg1) {
return 0;
}
sp2C = temp_v0_2;
func_800BAA80(sp28 + 0x10, temp_v0_2, temp_a2);
audio_dma_copy_immediate(sp28 + 0x10, temp_v0_2, temp_a2);
(D_803B7080 + (arg0 * 0xC))->unk4 = sp2C + 4;
func_800BB584(arg0);
temp_v0_3 = arg0 + &D_803B03C0;
@@ -819,7 +796,7 @@ GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB864.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_800B93BC(? *, ?, s32, ?, s32); // extern
? func_800BAA80(s32, s32, s32); // extern
? audio_dma_copy_immediate(s32, s32, s32); // extern
extern ? D_803AFC48;
extern ? D_803B0400;
extern s32 D_803B706C;
@@ -842,7 +819,7 @@ s32 func_800BB99C(s32 arg0, ? arg1) {
return 0;
}
sp28 = temp_v0;
func_800BAA80(sp24, temp_v0, sp2C);
audio_dma_copy_immediate(sp24, temp_v0, sp2C);
temp_v0_3 = arg0 + &D_803B0400;
if (*temp_v0_3 != 5) {
*temp_v0_3 = 2;
@@ -856,7 +833,7 @@ GLOBAL_ASM("asm/non_matchings/audio/load/func_800BB99C.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_800B93BC(? *, ?, s32, ?, s32); // extern
? func_800BAA80(s32, s32, s32); // extern
? audio_dma_copy_immediate(s32, s32, s32); // extern
? func_800BAAF8(s32, s32, s32, OSMesgQueue *, void *); // extern
extern ? D_803AFC48;
extern ? D_803B0400;
@@ -882,13 +859,13 @@ s32 func_800BBA50(s32 arg0, ? arg1, u8 *arg2) {
return 0;
}
if (temp_s0 < 0x41) {
func_800BAA80(sp3C, temp_v0, temp_s0);
audio_dma_copy_immediate(sp3C, temp_v0, temp_s0);
temp_v0_3 = arg0 + &D_803B0400;
if (*temp_v0_3 != 5) {
*temp_v0_3 = 2;
}
} else {
func_800BAA80(sp3C, temp_v0, 0x40);
audio_dma_copy_immediate(sp3C, temp_v0, 0x40);
temp_a3 = arg2 + 0xD4;
sp34 = temp_a3;
osCreateMesgQueue(temp_a3, arg2 + 0xEC, 1);
@@ -1064,24 +1041,20 @@ block_11:
#else
GLOBAL_ASM("asm/non_matchings/audio/load/func_800BBDDC.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_800BBF44(); // extern
extern s32 D_800EA5DC;
void func_800BBEF0(s32 arg2) {
if (arg2 == 0) {
D_800EA5DC = 0x19710515;
extern volatile s32 D_800EA5DC;
//load_sequence_internal
void func_800BBF44(u32 player, u32 seqId, s32 loadAsync);
//load_sequence
void func_800BBEF0(u32 player, u32 seqId, s32 loadAsync) {
if (!loadAsync) {
D_800EA5DC = AUDIO_LOCK_LOADING; // gAudioLoadLock
}
func_800BBF44();
if (arg2 == 0) {
D_800EA5DC = 0x76557364;
func_800BBF44(player, seqId, loadAsync);
if (!loadAsync) {
D_800EA5DC = AUDIO_LOCK_NOT_LOADING;
}
}
#else
GLOBAL_ASM("asm/non_matchings/audio/load/func_800BBEF0.s")
#endif
//GLOBAL_ASM("asm/non_matchings/audio/load/func_800BBEF0.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
+12
View File
@@ -0,0 +1,12 @@
#ifndef AUDIO_LOAD_H
#define AUDIO_LOAD_H
#include <PR/ultratypes.h>
#include "internal.h"
#define AUDIO_FRAME_DMA_QUEUE_SIZE 0x40
#define PRELOAD_BANKS 2
#define PRELOAD_SEQUENCE 1
#endif // AUDIO_LOAD_H
+13 -13
View File
@@ -292,7 +292,7 @@ f32 func_800BE5E0(void *); // extern
? func_800BEBA4(void *, u32); // extern
? func_800BF004(s32, void *); // extern
extern s32 D_803B1508;
extern s32 D_803B70B0;
extern s32 gMaxSimultaneousNotes;
void func_800BCBC4(void) {
u8 sp4B;
@@ -327,7 +327,7 @@ void func_800BCBC4(void) {
s32 phi_v0_2;
s32 phi_v1;
temp_v1 = D_803B70B0;
temp_v1 = gMaxSimultaneousNotes;
phi_v1 = temp_v1;
if (temp_v1 > 0) {
phi_s5 = 0;
@@ -347,7 +347,7 @@ void func_800BCBC4(void) {
if (temp_v0 == 0) {
func_800BEBA4(temp_a0, temp_a1);
temp_s1_2->unk0 = 1;
temp_v1_2 = D_803B70B0;
temp_v1_2 = gMaxSimultaneousNotes;
phi_v0_2 = temp_v1_2 * 3;
phi_v1 = temp_v1_2;
} else {
@@ -436,7 +436,7 @@ block_27:
phi_s3->unk1 = ((phi_s2 * 4) & 0x1C) | (phi_s3->unk1 & 0xFFE3);
}
}
temp_v1_3 = D_803B70B0;
temp_v1_3 = gMaxSimultaneousNotes;
phi_v0_2 = temp_v1_3 * 3;
phi_v1 = temp_v1_3;
}
@@ -670,7 +670,7 @@ GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BD318.s")
? func_800BF004(? *, s32); // extern
extern s32 D_803B1508;
extern ? D_803B5FC8;
extern s32 D_803B70B0;
extern s32 gMaxSimultaneousNotes;
void func_800BD368(void) {
s32 temp_s1;
@@ -681,7 +681,7 @@ void func_800BD368(void) {
func_800BD318(&D_803B5FC8);
phi_s0 = 0;
phi_s1 = 0;
if (D_803B70B0 > 0) {
if (gMaxSimultaneousNotes > 0) {
do {
temp_v0 = D_803B1508;
(temp_v0 + phi_s0)->unk8 = phi_s0 + temp_v0;
@@ -690,7 +690,7 @@ void func_800BD368(void) {
temp_s1 = phi_s1 + 1;
phi_s0 += 0xC0;
phi_s1 = temp_s1;
} while (temp_s1 < D_803B70B0);
} while (temp_s1 < gMaxSimultaneousNotes);
}
}
#else
@@ -1186,10 +1186,10 @@ GLOBAL_ASM("asm/non_matchings/audio/playback/func_800BDA44.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_800B8FFC(? *, ?); // extern
extern ? D_803AFBE8;
s32 soundAlloc(? *, ?); // extern
extern ? gNotesAndBuffersPool;
extern s32 D_803B1508;
extern s32 D_803B70B0;
extern s32 gMaxSimultaneousNotes;
extern ? gZeroNoteSub;
void func_800BDD34(void) {
@@ -1199,7 +1199,7 @@ void func_800BDD34(void) {
s32 phi_s1;
phi_s1 = 0;
if (D_803B70B0 > 0) {
if (gMaxSimultaneousNotes > 0) {
phi_s2 = 0;
do {
temp_s0 = phi_s2 + D_803B1508;
@@ -1219,11 +1219,11 @@ void func_800BDD34(void) {
temp_s0->unk80 = 0.0f;
temp_s0->unk84 = 0.0f;
temp_s0->unkBC = gZeroNoteSub.unkC;
temp_s0->unk1C = func_800B8FFC(&D_803AFBE8, 0xA0);
temp_s0->unk1C = soundAlloc(&gNotesAndBuffersPool, 0xA0);
temp_s1 = phi_s1 + 1;
phi_s2 += 0xC0;
phi_s1 = temp_s1;
} while (temp_s1 < D_803B70B0);
} while (temp_s1 < gMaxSimultaneousNotes);
}
}
#else
+14 -14
View File
@@ -14,10 +14,10 @@ extern OSMesgQueue *D_800EA3B4;
extern s32 D_800EA484;
extern u8 D_803B0500;
extern u8 D_803B0501;
extern OSMesgQueue D_803B6008;
extern ? D_803B7088;
extern OSMesgQueue gCurrAudioFrameDmaQueue;
extern ? gAudioBufferParameters;
extern s32 D_803B70B8;
extern s32 D_803B70BC;
extern s32 gCurrAudioFrameDmaCount;
extern s32 D_803B70C0;
extern s32 D_803B70C4;
extern ? D_803B70C8;
@@ -64,7 +64,7 @@ void *create_next_audio_frame_task(void) {
s32 phi_s1_3;
D_803B70B8 = D_803B70B8 + 1;
if ((D_803B70B8 % D_803B7088.unk0) != 0) {
if ((D_803B70B8 % gAudioBufferParameters.unk0) != 0) {
return NULL;
}
osSendMesg(D_800EA3A8, D_803B70B8, 0);
@@ -79,7 +79,7 @@ void *create_next_audio_frame_task(void) {
if (temp_v1 != 0) {
osAiSetNextBuffer(*(&D_803B7180 + (temp_hi * 4)), temp_v1 * 4);
}
temp_s1 = D_803B70BC;
temp_s1 = gCurrAudioFrameDmaCount;
phi_s0 = 0;
phi_s1 = temp_s1;
phi_s0_2 = 0;
@@ -88,31 +88,31 @@ void *create_next_audio_frame_task(void) {
if (temp_s1 > 0) {
do {
phi_s1_2 = phi_s1_3;
if (osRecvMesg(&D_803B6008, NULL, 0) == 0) {
if (osRecvMesg(&gCurrAudioFrameDmaQueue, NULL, 0) == 0) {
phi_s1_2 = phi_s1_3 - 1;
}
temp_s0 = phi_s0 + 1;
phi_s0 = temp_s0;
phi_s1 = phi_s1_2;
phi_s1_3 = phi_s1_2;
} while (temp_s0 < D_803B70BC);
} while (temp_s0 < gCurrAudioFrameDmaCount);
}
if ((phi_s1 != 0) && (phi_s1 > 0)) {
do {
osRecvMesg(&D_803B6008, NULL, 1);
osRecvMesg(&gCurrAudioFrameDmaQueue, NULL, 1);
temp_s0_2 = phi_s0_2 + 1;
phi_s0_2 = temp_s0_2;
} while (temp_s0_2 != phi_s1);
}
temp_s1_2 = D_803B6008.validCount;
temp_s1_2 = gCurrAudioFrameDmaQueue.validCount;
if ((temp_s1_2 != 0) && (temp_s1_2 > 0)) {
do {
osRecvMesg(&D_803B6008, NULL, 0);
osRecvMesg(&gCurrAudioFrameDmaQueue, NULL, 0);
temp_s0_3 = phi_s0_3 + 1;
phi_s0_3 = temp_s0_3;
} while (temp_s0_3 != temp_s1_2);
}
D_803B70BC = 0;
gCurrAudioFrameDmaCount = 0;
func_800BAC04();
if (osRecvMesg(D_800EA3B0, &sp58, 0) != -1) {
D_803B0501 = sp58;
@@ -131,12 +131,12 @@ void *create_next_audio_frame_task(void) {
D_803B70D0 = *(&D_803B70C8 + (temp_v0 * 4));
sp60 = *temp_a3;
temp_s1_3 = (temp_s0_4 * 2) + &D_803B718C;
*temp_s1_3 = (((D_803B7088.unk6 - sp74) + 0x40) & 0xFFF0) + 0x10;
temp_a0 = D_803B7088.unkA;
*temp_s1_3 = (((gAudioBufferParameters.unk6 - sp74) + 0x40) & 0xFFF0) + 0x10;
temp_a0 = gAudioBufferParameters.unkA;
if (*temp_s1_3 < temp_a0) {
*temp_s1_3 = temp_a0;
}
temp_v0_2 = D_803B7088.unk8;
temp_v0_2 = gAudioBufferParameters.unk8;
if (temp_v0_2 < *temp_s1_3) {
*temp_s1_3 = temp_v0_2;
}
+32 -32
View File
@@ -62,8 +62,8 @@ s8 gUseReverb;
s8 gNumSynthesisReverbs;
struct NoteSubEu *gNoteSubsEu;
extern struct Note *D_803B7088;
extern s32 D_803B70B0;
extern struct Note *gAudioBufferParameters;
extern s32 gMaxSimultaneousNotes;
f32 gLeftVolRampings;
//f32 gRightVolRampings[3][1024];
@@ -164,9 +164,9 @@ void synthesis_load_note_subs_eu(s32 updateIndex) {
struct NoteSubEu *dest;
s32 i;
for (i = 0; i < D_803B70B0; i++) {
src = &D_803B7088[i].noteSubEu;
dest = &gNoteSubsEu[D_803B70B0 * updateIndex + i];
for (i = 0; i < gMaxSimultaneousNotes; i++) {
src = &gAudioBufferParameters[i].noteSubEu;
dest = &gNoteSubsEu[gMaxSimultaneousNotes * updateIndex + i];
if (src->enabled) {
*dest = *src;
src->needsInit = FALSE;
@@ -183,11 +183,11 @@ void func_800B6FB4(s32 arg0, s32 arg1) {
s32 phi_v0;
temp_v0 = arg0 + 1;
if (i = 0; temp_v0 < (s32) D_803B7088.unkC; i++) {
if (i = 0; temp_v0 < (s32) gAudioBufferParameters.unkC; i++) {
phi_v0 = temp_v0;
for(i = 0; temp_v0_2 < (s32) D_803B7088.unkC; i++) {
dest = &gNoteSubsEu[D_803B70B0 * phi_v0 + (arg1 * 0x10)];
for(i = 0; temp_v0_2 < (s32) gAudioBufferParameters.unkC; i++) {
dest = &gNoteSubsEu[gMaxSimultaneousNotes * phi_v0 + (arg1 * 0x10)];
if ((*dest * 2) >= 0) {
temp_v0_2 = phi_v0 + 1;
*dest = (s8) ((u8) *dest & 0xFF7F);
@@ -205,8 +205,8 @@ GLOBAL_ASM("asm/non_matchings/audio/synthesis/func_800B6F1C.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
Tried to use struct NoteSubEu before it is defined.
extern ? D_803B7088;
extern s32 D_803B70B0;
extern ? gAudioBufferParameters;
extern s32 gMaxSimultaneousNotes;
extern ? gNoteSubsEu;
void synthesis_load_note_subs_eu(s32 arg0, s32 arg1) {
@@ -217,16 +217,16 @@ void synthesis_load_note_subs_eu(s32 arg0, s32 arg1) {
temp_v0 = arg0 + 1;
phi_v0 = temp_v0;
if (temp_v0 < D_803B7088.unkC) {
if (temp_v0 < gAudioBufferParameters.unkC) {
// Error: Tried to use struct NoteSubEu before it is defined.
// At instruction: lui $a1, %hi(gNoteSubsEu)
loop_2:
temp_a0 = *arg1 + (D_803B70B0 * phi_v0 * 0x10) + (arg1 * 0x10);
temp_a0 = *arg1 + (gMaxSimultaneousNotes * phi_v0 * 0x10) + (arg1 * 0x10);
if ((*temp_a0 * 2) >= 0) {
temp_v0_2 = phi_v0 + 1;
*temp_a0 = *temp_a0 & 0xFF7F;
phi_v0 = temp_v0_2;
if (temp_v0_2 < D_803B7088.unkC) {
if (temp_v0_2 < gAudioBufferParameters.unkC) {
goto loop_2;
}
}
@@ -239,7 +239,7 @@ GLOBAL_ASM("asm/non_matchings/audio/synthesis/synthesis_load_note_subs_eu.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
Tried to use struct NoteSubEu before it is defined.
extern s32 D_803B70B0;
extern s32 gMaxSimultaneousNotes;
extern ? gNoteSubsEu;
void func_800B7034(s32 arg0) {
@@ -252,13 +252,13 @@ void func_800B7034(s32 arg0) {
phi_a1 = 0;
phi_v0 = 0;
if (D_803B70B0 > 0) {
if (gMaxSimultaneousNotes > 0) {
// Error: Tried to use struct NoteSubEu before it is defined.
// At instruction: lui $t2, %hi(gNoteSubsEu)
do {
temp_a0 = phi_a1 + *MIPS2C_ERROR(Read from unset register $t1);
temp_a0_2 = temp_a0 + 0xB0;
temp_a2 = (((D_803B70B0 * arg0) + phi_v0) * 0x10) + *MIPS2C_ERROR(Read from unset register $t2);
temp_a2 = (((gMaxSimultaneousNotes * arg0) + phi_v0) * 0x10) + *MIPS2C_ERROR(Read from unset register $t2);
if ((temp_a0->unkB0 >> 0x1F) != 0) {
temp_a2->unk0 = temp_a0_2->unk0;
temp_a2->unk4 = temp_a0_2->unk4;
@@ -271,7 +271,7 @@ void func_800B7034(s32 arg0) {
temp_v0 = phi_v0 + 1;
phi_a1 += 0xC0;
phi_v0 = temp_v0;
} while (temp_v0 < D_803B70B0);
} while (temp_v0 < gMaxSimultaneousNotes);
}
}
#else
@@ -284,7 +284,7 @@ GLOBAL_ASM("asm/non_matchings/audio/synthesis/func_800B7034.s")
void *func_800B775C(s32, s32, void *, s32); // extern
? func_800C1138(s32); // extern
? prepare_reverb_ring_buffer(s32, s32, s32); // extern
extern ? D_803B7088;
extern ? gAudioBufferParameters;
void *func_800B70EC(void *arg0, s32 *arg1, s32 arg2, s32 arg3) {
s16 temp_s2;
@@ -317,20 +317,20 @@ void *func_800B70EC(void *arg0, s32 *arg1, s32 arg2, s32 arg3) {
void *phi_fp_2;
s16 phi_s2_3;
temp_s4 = D_803B7088.unkC;
temp_s4 = gAudioBufferParameters.unkC;
phi_s4 = temp_s4;
phi_s6 = arg3;
if (temp_s4 > 0) {
do {
temp_s0 = phi_s4 - 1;
func_800C1138(temp_s0);
func_800B7034(D_803B7088.unkC - phi_s4);
func_800B7034(gAudioBufferParameters.unkC - phi_s4);
phi_s4 = temp_s0;
} while (temp_s0 > 0);
}
arg0->unk0 = 0x7000000;
arg0->unk4 = 0;
temp_s4_2 = D_803B7088.unkC;
temp_s4_2 = gAudioBufferParameters.unkC;
temp_fp = arg0 + 8;
phi_s4_2 = temp_s4_2;
phi_s7 = arg2;
@@ -338,7 +338,7 @@ void *func_800B70EC(void *arg0, s32 *arg1, s32 arg2, s32 arg3) {
phi_fp_2 = temp_fp;
if (temp_s4_2 > 0) {
do {
temp_s2 = D_803B7088.unkC;
temp_s2 = gAudioBufferParameters.unkC;
phi_s2 = temp_s2;
phi_s1 = 0;
phi_s2_2 = temp_s2;
@@ -346,15 +346,15 @@ void *func_800B70EC(void *arg0, s32 *arg1, s32 arg2, s32 arg3) {
phi_s3 = phi_s6;
} else {
temp_lo = phi_s6 / phi_s4_2;
temp_v1 = D_803B7088.unk10;
temp_v1 = gAudioBufferParameters.unk10;
if (temp_lo >= temp_v1) {
phi_s3 = temp_v1;
} else {
temp_v1_2 = D_803B7088.unk12;
temp_v1_2 = gAudioBufferParameters.unk12;
if (temp_v1_2 >= temp_lo) {
phi_s3 = temp_v1_2;
} else {
phi_s3 = D_803B7088.unkE;
phi_s3 = gAudioBufferParameters.unkE;
}
}
}
@@ -367,7 +367,7 @@ void *func_800B70EC(void *arg0, s32 *arg1, s32 arg2, s32 arg3) {
if (phi_s0->useReverb != 0) {
prepare_reverb_ring_buffer(phi_s3, phi_s2 - phi_s4_2, phi_s1);
phi_v0 = gNumSynthesisReverbs;
phi_s2_3 = D_803B7088.unkC;
phi_s2_3 = gAudioBufferParameters.unkC;
}
temp_s1 = phi_s1 + 1;
phi_s0 += 0x108;
@@ -553,7 +553,7 @@ void *func_800B7630(void *, s16, s16); // extern
void *func_800B7C30(u8, s32, s32, s32, s32, void *, s32); // extern
extern ? D_803B03C0;
extern s32 D_803B1508;
extern s32 D_803B70B0;
extern s32 gMaxSimultaneousNotes;
extern s32 D_803B7198;
extern ? gNoteSubsEu;
extern u8 gUseReverb;
@@ -627,7 +627,7 @@ void *func_800B775C(s32 arg0, s32 arg1, void *arg2, s16 arg3) {
phi_s2_8 = 0;
phi_s2_4 = 0;
if (temp_t1 == 0) {
temp_a0 = D_803B70B0;
temp_a0 = gMaxSimultaneousNotes;
phi_s1 = 0;
if (temp_a0 > 0) {
// Error: Tried to use struct NoteSubEu before it is defined.
@@ -649,7 +649,7 @@ void *func_800B775C(s32 arg0, s32 arg1, void *arg2, s16 arg3) {
} else {
phi_s3 = 0;
if (temp_t1 > 0) {
temp_a0_2 = D_803B70B0;
temp_a0_2 = gMaxSimultaneousNotes;
do {
phi_s1_2 = 0;
phi_s2_2 = phi_s2_6;
@@ -676,7 +676,7 @@ void *func_800B775C(s32 arg0, s32 arg1, void *arg2, s16 arg3) {
phi_s2_8 = phi_s2_10;
} while (temp_s3 < temp_t1);
}
temp_a0_3 = D_803B70B0;
temp_a0_3 = gMaxSimultaneousNotes;
phi_s1_3 = 0;
phi_s2_3 = phi_s2_8;
phi_s2_4 = phi_s2_8;
@@ -727,7 +727,7 @@ void *func_800B775C(s32 arg0, s32 arg1, void *arg2, s16 arg3) {
loop_31:
temp_v1 = *phi_s0;
temp_t0 = *saved_reg_s6;
temp_lo = arg3 * D_803B70B0;
temp_lo = arg3 * gMaxSimultaneousNotes;
phi_s4_3 = phi_s4_2;
phi_s1_8 = phi_s1_5;
if (phi_s3_2 == ((temp_t0 + (temp_v1 * 0x10) + (temp_lo * 0x10))->unk1 >> 5)) {
@@ -765,7 +765,7 @@ loop_31:
do {
temp_v1_2 = *phi_s0_2;
temp_t0_2 = *saved_reg_s6;
temp_lo_2 = arg3 * D_803B70B0;
temp_lo_2 = arg3 * gMaxSimultaneousNotes;
temp_a1 = (temp_t0_2 + (temp_v1_2 * 0x10) + (temp_lo_2 * 0x10))->unk2;
phi_s4_9 = phi_s4_4;
if (((*(&D_803B03C0 + temp_a1) < 2) ^ 1) == 1) {
+339 -116
View File
@@ -7,58 +7,322 @@ extern OSMesgQueue gDmaMesgQueue;
extern OSMesg gMainReceivedMesg;
extern u8 _kart_texturesSegmentRomStart[];
extern u32 gKartPalettes[];
extern uintptr_t *gKartPalettes[];
// arrays?
extern u32 *D_802F1F80;
extern u32 *D_802DFB80;
extern u16 D_802F1F80[2][4][2048];
extern u8 D_802DFB80[2][2][18688];
extern s16 D_800DDEB0[];
extern u16 D_800DDEB0[];
/*
u16 D_800DDEB0[] = { // sizes
0x06c0, 0x06e0, 0x06e0, 0x0680, 0x07c0, 0x0700, 0x0680, 0x0910
};
*/
extern s32 gActiveScreenMode;
// Structured like a 3D pointer array
extern u32 ***gKartTextureTable0, ***gKartTextureTable1, **gKartTextureGroup18s;
extern uintptr_t **gKartTextureGroup18s;
extern uintptr_t *gKartMarioGroup8[];
extern uintptr_t *gKartMarioGroup7[];
extern uintptr_t *gKartMarioGroup6[];
extern uintptr_t *gKartMarioGroup5[];
extern uintptr_t *gKartMarioGroup4[];
extern uintptr_t *gKartMarioGroup3[];
extern uintptr_t *gKartMarioGroup2[];
extern uintptr_t *gKartMarioGroup1[];
extern uintptr_t *gKartMarioGroup0[];
extern uintptr_t *gKartLuigiGroup8[];
extern uintptr_t *gKartLuigiGroup7[];
extern uintptr_t *gKartLuigiGroup6[];
extern uintptr_t *gKartLuigiGroup5[];
extern uintptr_t *gKartLuigiGroup4[];
extern uintptr_t *gKartLuigiGroup3[];
extern uintptr_t *gKartLuigiGroup2[];
extern uintptr_t *gKartLuigiGroup1[];
extern uintptr_t *gKartLuigiGroup0[];
extern uintptr_t *gKartYoshiGroup8[];
extern uintptr_t *gKartYoshiGroup7[];
extern uintptr_t *gKartYoshiGroup6[];
extern uintptr_t *gKartYoshiGroup5[];
extern uintptr_t *gKartYoshiGroup4[];
extern uintptr_t *gKartYoshiGroup3[];
extern uintptr_t *gKartYoshiGroup2[];
extern uintptr_t *gKartYoshiGroup1[];
extern uintptr_t *gKartYoshiGroup0[];
extern uintptr_t *gKartToadGroup8[];
extern uintptr_t *gKartToadGroup7[];
extern uintptr_t *gKartToadGroup6[];
extern uintptr_t *gKartToadGroup5[];
extern uintptr_t *gKartToadGroup4[];
extern uintptr_t *gKartToadGroup3[];
extern uintptr_t *gKartToadGroup2[];
extern uintptr_t *gKartToadGroup1[];
extern uintptr_t *gKartToadGroup0[];
extern uintptr_t *gKartDKGroup8[];
extern uintptr_t *gKartDKGroup7[];
extern uintptr_t *gKartDKGroup6[];
extern uintptr_t *gKartDKGroup5[];
extern uintptr_t *gKartDKGroup4[];
extern uintptr_t *gKartDKGroup3[];
extern uintptr_t *gKartDKGroup2[];
extern uintptr_t *gKartDKGroup1[];
extern uintptr_t *gKartDKGroup0[];
extern uintptr_t *gKartWarioGroup8[];
extern uintptr_t *gKartWarioGroup7[];
extern uintptr_t *gKartWarioGroup6[];
extern uintptr_t *gKartWarioGroup5[];
extern uintptr_t *gKartWarioGroup4[];
extern uintptr_t *gKartWarioGroup3[];
extern uintptr_t *gKartWarioGroup2[];
extern uintptr_t *gKartWarioGroup1[];
extern uintptr_t *gKartWarioGroup0[];
extern uintptr_t *gKartPeachGroup8[];
extern uintptr_t *gKartPeachGroup7[];
extern uintptr_t *gKartPeachGroup6[];
extern uintptr_t *gKartPeachGroup5[];
extern uintptr_t *gKartPeachGroup4[];
extern uintptr_t *gKartPeachGroup3[];
extern uintptr_t *gKartPeachGroup2[];
extern uintptr_t *gKartPeachGroup1[];
extern uintptr_t *gKartPeachGroup0[];
extern uintptr_t *gKartBowserGroup8[];
extern uintptr_t *gKartBowserGroup7[];
extern uintptr_t *gKartBowserGroup6[];
extern uintptr_t *gKartBowserGroup5[];
extern uintptr_t *gKartBowserGroup4[];
extern uintptr_t *gKartBowserGroup3[];
extern uintptr_t *gKartBowserGroup2[];
extern uintptr_t *gKartBowserGroup1[];
extern uintptr_t *gKartBowserGroup0[];
extern uintptr_t *gKartMarioGroup17[];
extern uintptr_t *gKartMarioGroup16[];
extern uintptr_t *gKartMarioGroup15[];
extern uintptr_t *gKartMarioGroup14[];
extern uintptr_t *gKartMarioGroup13[];
extern uintptr_t *gKartMarioGroup12[];
extern uintptr_t *gKartMarioGroup11[];
extern uintptr_t *gKartMarioGroup10[];
extern uintptr_t *gKartMarioGroup9[];
extern uintptr_t *gKartLuigiGroup17[];
extern uintptr_t *gKartLuigiGroup16[];
extern uintptr_t *gKartLuigiGroup15[];
extern uintptr_t *gKartLuigiGroup14[];
extern uintptr_t *gKartLuigiGroup13[];
extern uintptr_t *gKartLuigiGroup12[];
extern uintptr_t *gKartLuigiGroup11[];
extern uintptr_t *gKartLuigiGroup10[];
extern uintptr_t *gKartLuigiGroup9[];
extern uintptr_t *gKartYoshiGroup17[];
extern uintptr_t *gKartYoshiGroup16[];
extern uintptr_t *gKartYoshiGroup15[];
extern uintptr_t *gKartYoshiGroup14[];
extern uintptr_t *gKartYoshiGroup13[];
extern uintptr_t *gKartYoshiGroup12[];
extern uintptr_t *gKartYoshiGroup11[];
extern uintptr_t *gKartYoshiGroup10[];
extern uintptr_t *gKartYoshiGroup9[];
extern uintptr_t *gKartToadGroup17[];
extern uintptr_t *gKartToadGroup16[];
extern uintptr_t *gKartToadGroup15[];
extern uintptr_t *gKartToadGroup14[];
extern uintptr_t *gKartToadGroup13[];
extern uintptr_t *gKartToadGroup12[];
extern uintptr_t *gKartToadGroup11[];
extern uintptr_t *gKartToadGroup10[];
extern uintptr_t *gKartToadGroup9[];
extern uintptr_t *gKartDKGroup17[];
extern uintptr_t *gKartDKGroup16[];
extern uintptr_t *gKartDKGroup15[];
extern uintptr_t *gKartDKGroup14[];
extern uintptr_t *gKartDKGroup13[];
extern uintptr_t *gKartDKGroup12[];
extern uintptr_t *gKartDKGroup11[];
extern uintptr_t *gKartDKGroup10[];
extern uintptr_t *gKartDKGroup9[];
extern uintptr_t *gKartWarioGroup17[];
extern uintptr_t *gKartWarioGroup16[];
extern uintptr_t *gKartWarioGroup15[];
extern uintptr_t *gKartWarioGroup14[];
extern uintptr_t *gKartWarioGroup13[];
extern uintptr_t *gKartWarioGroup12[];
extern uintptr_t *gKartWarioGroup11[];
extern uintptr_t *gKartWarioGroup10[];
extern uintptr_t *gKartWarioGroup9[];
extern uintptr_t *gKartPeachGroup17[];
extern uintptr_t *gKartPeachGroup16[];
extern uintptr_t *gKartPeachGroup15[];
extern uintptr_t *gKartPeachGroup14[];
extern uintptr_t *gKartPeachGroup13[];
extern uintptr_t *gKartPeachGroup12[];
extern uintptr_t *gKartPeachGroup11[];
extern uintptr_t *gKartPeachGroup10[];
extern uintptr_t *gKartPeachGroup9[];
extern uintptr_t *gKartBowserGroup17[];
extern uintptr_t *gKartBowserGroup16[];
extern uintptr_t *gKartBowserGroup15[];
extern uintptr_t *gKartBowserGroup14[];
extern uintptr_t *gKartBowserGroup13[];
extern uintptr_t *gKartBowserGroup12[];
extern uintptr_t *gKartBowserGroup11[];
extern uintptr_t *gKartBowserGroup10[];
extern uintptr_t *gKartBowserGroup9[];
uintptr_t **gKartMarioTable0[] = {
gKartMarioGroup8, gKartMarioGroup7, gKartMarioGroup6,
gKartMarioGroup5, gKartMarioGroup4, gKartMarioGroup3,
gKartMarioGroup2, gKartMarioGroup1, gKartMarioGroup0,
};
uintptr_t **gKartLuigiTable0[] = {
gKartLuigiGroup8, gKartLuigiGroup7, gKartLuigiGroup6,
gKartLuigiGroup5, gKartLuigiGroup4, gKartLuigiGroup3,
gKartLuigiGroup2, gKartLuigiGroup1, gKartLuigiGroup0,
};
uintptr_t **gKartYoshiTable0[] = {
gKartYoshiGroup8, gKartYoshiGroup7, gKartYoshiGroup6,
gKartYoshiGroup5, gKartYoshiGroup4, gKartYoshiGroup3,
gKartYoshiGroup2, gKartYoshiGroup1, gKartYoshiGroup0,
};
uintptr_t **gKartToadTable0[] = {
gKartToadGroup8, gKartToadGroup7, gKartToadGroup6,
gKartToadGroup5, gKartToadGroup4, gKartToadGroup3,
gKartToadGroup2, gKartToadGroup1, gKartToadGroup0,
};
uintptr_t **gKartDKTable0[] = {
gKartDKGroup8, gKartDKGroup7, gKartDKGroup6,
gKartDKGroup5, gKartDKGroup4, gKartDKGroup3,
gKartDKGroup2, gKartDKGroup1, gKartDKGroup0,
};
uintptr_t **gKartWarioTable0[] = {
gKartWarioGroup8, gKartWarioGroup7, gKartWarioGroup6,
gKartWarioGroup5, gKartWarioGroup4, gKartWarioGroup3,
gKartWarioGroup2, gKartWarioGroup1, gKartWarioGroup0,
};
uintptr_t **gKartPeachTable0[] = {
gKartPeachGroup8, gKartPeachGroup7, gKartPeachGroup6,
gKartPeachGroup5, gKartPeachGroup4, gKartPeachGroup3,
gKartPeachGroup2, gKartPeachGroup1, gKartPeachGroup0,
};
uintptr_t **gKartBowserTable0[] = {
gKartBowserGroup8, gKartBowserGroup7, gKartBowserGroup6,
gKartBowserGroup5, gKartBowserGroup4, gKartBowserGroup3,
gKartBowserGroup2, gKartBowserGroup1, gKartBowserGroup0,
};
uintptr_t **gKartMarioTable1[] = {
gKartMarioGroup17, gKartMarioGroup16, gKartMarioGroup15,
gKartMarioGroup14, gKartMarioGroup13, gKartMarioGroup12,
gKartMarioGroup11, gKartMarioGroup10, gKartMarioGroup9,
};
uintptr_t **gKartLuigiTable1[] = {
gKartLuigiGroup17, gKartLuigiGroup16, gKartLuigiGroup15, gKartLuigiGroup14,
gKartLuigiGroup13, gKartLuigiGroup12, gKartLuigiGroup11, gKartLuigiGroup10,
gKartLuigiGroup9,
};
uintptr_t **gKartYoshiTable1[] = {
gKartYoshiGroup17, gKartYoshiGroup16, gKartYoshiGroup15, gKartYoshiGroup14,
gKartYoshiGroup13, gKartYoshiGroup12, gKartYoshiGroup11, gKartYoshiGroup10,
gKartYoshiGroup9,
};
uintptr_t **gKartToadTable1[] = {
gKartToadGroup17, gKartToadGroup16, gKartToadGroup15, gKartToadGroup14,
gKartToadGroup13, gKartToadGroup12, gKartToadGroup11, gKartToadGroup10,
gKartToadGroup9,
};
uintptr_t **gKartDKTable1[] = {
gKartDKGroup17, gKartDKGroup16, gKartDKGroup15, gKartDKGroup14,
gKartDKGroup13, gKartDKGroup12, gKartDKGroup11, gKartDKGroup10,
gKartDKGroup9,
};
uintptr_t **gKartWarioTable1[] = {
gKartWarioGroup17, gKartWarioGroup16, gKartWarioGroup15, gKartWarioGroup14,
gKartWarioGroup13, gKartWarioGroup12, gKartWarioGroup11, gKartWarioGroup10,
gKartWarioGroup9,
};
uintptr_t **gKartPeachTable1[] = {
gKartPeachGroup17, gKartPeachGroup16, gKartPeachGroup15, gKartPeachGroup14,
gKartPeachGroup13, gKartPeachGroup12, gKartPeachGroup11, gKartPeachGroup10,
gKartPeachGroup9,
};
uintptr_t **gKartBowserTable1[] = {
gKartBowserGroup17, gKartBowserGroup16, gKartBowserGroup15, gKartBowserGroup14,
gKartBowserGroup13, gKartBowserGroup12, gKartBowserGroup11, gKartBowserGroup10,
gKartBowserGroup9,
};
uintptr_t ***gKartTextureTable0[] = {
gKartMarioTable0,
gKartLuigiTable0,
gKartYoshiTable0,
gKartToadTable0,
gKartDKTable0,
gKartWarioTable0,
gKartPeachTable0,
gKartBowserTable0,
};
uintptr_t ***gKartTextureTable1[] = {
gKartMarioTable1,
gKartLuigiTable1,
gKartYoshiTable1,
gKartToadTable1,
gKartDKTable1,
gKartWarioTable1,
gKartPeachTable1,
gKartBowserTable1,
};
// some larger diffs that need resolving
#ifdef MIPS_TO_C
void func_80027040(Player *player, s8 arg1, s8 arg2, s8 arg3, s32 arg4) {
s32 temp_v0 = player->unk_0BC;
void *temp_s0;
// void *temp_v1;
void func_80027040(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) {
if ((temp_v0 & 0x80) == 0x80 ||
(temp_v0 & 0x40) == 0x40 ||
(temp_v0 & 0x80000) == 0x80000 ||
(temp_v0 & 0x800000) == 0x800000 ||
(temp_v0 & 0x20000) == 0x20000 ||
(player->unk_044 & 0x800) != 0
) {
//s32 tmp = player->unk_0BC;
void *buf; // = &D_802DFB80[arg4][arg3][arg1 * 0x920];
u16 id;
if (((((((player->unk_0BC & 0x80) == 0x80) || ((player->unk_0BC & 0x40) == 0x40)) || ((player->unk_0BC & 0x80000) == 0x80000)) || ((player->unk_0BC & 0x800000) == 0x800000)) || ((player->unk_0BC & 0x20000) == 0x20000)) || ((player->unk_044 & 0x800) != 0))
{
// temp_v1 = player + (arg2 * 2);
if (player->unk_244[arg2] == 0) {
temp_s0 = (arg4 * 0x9200) + (arg3 * 0x4900) + (arg1 * 0x920) + D_802DFB80;
osInvalDCache(temp_s0, D_800DDEB0[player->characterId]);
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[gKartTextureTable0[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]] & 0xFFFFFF], temp_s0, D_800DDEB0[temp_v0], &gDmaMesgQueue);
if (player->unk_244[arg2] != 0) {
//buf = &D_802DFB80[arg2][arg1 * 0x920];
buf = &D_802DFB80[arg4][arg3][arg1 * 0x920];
osInvalDCache(buf, D_800DDEB0[player->characterId]);
id = player->characterId;
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable1[id][player->unk_24C[arg2]][player->unk_244[arg2]])], buf, D_800DDEB0[player->unk_0BC], &gDmaMesgQueue);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, 1);
} else {
temp_s0 = (arg4 * 0x9200) + (arg3 * 0x4900) + (arg1 * 0x920) + D_802DFB80;
osInvalDCache(temp_s0, D_800DDEB0[player->characterId]);
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[gKartTextureTable1[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]] & 0xFFFFFF], temp_s0, D_800DDEB0[temp_v0], &gDmaMesgQueue);
buf = &D_802DFB80[arg4][arg3][arg1 * 0x920];
osInvalDCache(&D_802DFB80[arg4][arg3], D_800DDEB0[player->characterId]);
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable0[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], buf, D_800DDEB0[player->unk_0BC], &gDmaMesgQueue);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, 1);
}
}
else if ((temp_v0 & 0x400) == 0x400 ||
(temp_v0 & 0x1000000) == 0x1000000 ||
(temp_v0 & 0x2000000) == 0x2000000 ||
(temp_v0 & 0x10000) == 0x10000
) {
temp_s0 = (arg4 * 0x9200) + (arg3 * 0x4900) + (arg1 * 0x920) + D_802DFB80;
osInvalDCache(temp_s0, 0x780);
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[gKartTextureGroup18s[player->characterId][player->unk_0A8 >> 8] & 0xFFFFFF], temp_s0, 0x900, &gDmaMesgQueue);
} else if (((((player->unk_0BC & 0x400) == 0x400) || ((player->unk_0BC & 0x1000000) == 0x1000000)) || ((player->unk_0BC & 0x2000000) == 0x2000000)) || ((player->unk_0BC & 0x10000) == 0x10000))
{
buf = &D_802DFB80[arg4][arg3][arg1 * 0x920];
osInvalDCache(buf, 0x780);
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureGroup18s[player->characterId][player->unk_0A8 >> 8])], buf, 0x900, &gDmaMesgQueue);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, 1);
} else {
temp_s0 = (arg4 * 0x9200) + (arg3 * 0x4900) + (arg1 * 0x920) + D_802DFB80;
osInvalDCache(temp_s0, D_800DDEB0[player->characterId]);
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[gKartTextureTable0[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]] & 0xFFFFFF], temp_s0, D_800DDEB0[temp_v0], &gDmaMesgQueue);
buf = &D_802DFB80[arg4][arg3][arg1 * 0x920];
osInvalDCache(buf, D_800DDEB0[player->characterId]);
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable0[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], buf, D_800DDEB0[player->unk_0BC], &gDmaMesgQueue);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, 1);
}
}
@@ -68,111 +332,70 @@ GLOBAL_ASM("asm/non_matchings/code_80027040/func_80027040.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
void func_80027560(Player *arg0, s8 arg1, s8 arg2, s8 arg3, s8 arg4) {
void *sp30;
s32 temp_v0;
s8 temp_a3;
u16 temp_v0;
u16 temp_v0;
u16 temp_v0;
void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) {
//s32 temp_v0;
void *temp_s0;
void *temp_s0_2;
void *temp_s0_3;
void *temp_s0_4;
void *temp_v1;
void *temp_v1_2;
temp_v0 = arg0->unkBC;
temp_a3 = arg3;
if ((temp_v0 & 0x80) == 0x80) {
block_6:
temp_v1_2 = arg0 + (arg2 * 2);
if (temp_v1_2->unk244 == 0) {
temp_s0_4 = (arg4 * 0x9200) + (temp_a3 * 0x4900) + (arg1 * 0x920) + 0x802DFB80;
sp30 = temp_v1_2;
osInvalDCache(temp_s0_4, *(&D_800DDEB0 + (arg0->unk254 * 2)));
temp_v0 = arg0->unk254;
osPiStartDma(&gDmaIoMesg, 0, 0, (*(*(*(&gKartTextureTable0 + (temp_v0 * 4)) + (temp_v1_2->unk24C * 4)) + (temp_v1_2->unk244 * 4)) & 0xFFFFFF) + &_kart_texturesSegmentRomStart, temp_s0_4, *(&D_800DDEB0 + (temp_v0 * 2)), &gDmaMesgQueue);
return;
//temp_v0 = player->unk_0BC;
if (((player->unk_0BC & 0x80) == 0x80) || ((player->unk_0BC & 0x40) == 0x40) || ((player->unk_0BC & 0x80000) == 0x80000) || ((player->unk_0BC & 0x800000) == 0x800000) || ((player->unk_0BC & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0))
{
//temp_v1_2 = player + (arg2 * 2);
if (player->unk_244[arg2] != 0) {
temp_s0 = D_802DFB80[arg4][arg3][arg1 * 0x920];
osInvalDCache(D_802DFB80[arg4][arg3], D_800DDEB0[player->characterId]);
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable0[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], temp_s0, D_800DDEB0[player->characterId], &gDmaMesgQueue);
} else {
temp_s0 = D_802DFB80[arg4][arg3][arg1 * 0x920];
osInvalDCache(temp_s0, D_800DDEB0[player->characterId]);
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable1[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], temp_s0, D_800DDEB0[player->characterId], &gDmaMesgQueue);
}
temp_s0_3 = (arg4 * 0x9200) + (temp_a3 * 0x4900) + (arg1 * 0x920) + D_802DFB80;
sp30 = temp_v1_2;
osInvalDCache(temp_s0_3, *(&D_800DDEB0 + (arg0->unk254 * 2)));
temp_v0 = arg0->unk254;
osPiStartDma(&gDmaIoMesg, 0, 0, (*(*(*(&gKartTextureTable1 + (temp_v0 * 4)) + (temp_v1_2->unk24C * 4)) + (temp_v1_2->unk244 * 4)) & 0xFFFFFF) + &_kart_texturesSegmentRomStart, temp_s0_3, *(&D_800DDEB0 + (temp_v0 * 2)), &gDmaMesgQueue);
return;
} else if (((player->unk_0BC & 0x400) == 0x400) || ((player->unk_0BC & 0x01000000) == 0x01000000) || ((player->unk_0BC & 0x02000000) == 0x02000000) || ((player->unk_0BC & 0x10000) == 0x10000))
{
temp_s0 = D_802DFB80[arg4][arg3][arg1 * 0x920];
osInvalDCache(temp_s0, 0x780);
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureGroup18s[player->characterId][player->unk_0A8 >> 8])], temp_s0, 0x900, &gDmaMesgQueue);
} else {
temp_s0 = D_802DFB80[arg4][arg3][arg1 * 0x920];
osInvalDCache(temp_s0, D_800DDEB0[player->characterId]);
//temp_v1 = player + (arg2 * 2);
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable0[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], temp_s0, D_800DDEB0[player->characterId], &gDmaMesgQueue);
}
if ((temp_v0 & 0x40) == 0x40) {
goto block_6;
}
if ((temp_v0 & 0x80000) == 0x80000) {
goto block_6;
}
if ((temp_v0 & 0x800000) == 0x800000) {
goto block_6;
}
if ((temp_v0 & 0x20000) == 0x20000) {
goto block_6;
}
if ((arg0->unk44 & 0x800) != 0) {
goto block_6;
}
if ((temp_v0 & 0x400) == 0x400) {
block_13:
temp_s0_2 = (arg4 * 0x9200) + (temp_a3 * 0x4900) + (arg1 * 0x920) + D_802DFB80;
osInvalDCache(temp_s0_2, 0x780);
osPiStartDma(&gDmaIoMesg, 0, 0, (*(*(&gKartTextureGroup18s + (arg0->unk254 * 4)) + ((arg0->unkA8 >> 8) * 4)) & 0xFFFFFF) + &_kart_texturesSegmentRomStart, temp_s0_2, 0x900, &gDmaMesgQueue);
return;
}
if ((temp_v0 & 0x1000000) == 0x1000000) {
goto block_13;
}
if ((temp_v0 & 0x2000000) == 0x2000000) {
goto block_13;
}
if ((temp_v0 & 0x10000) == 0x10000) {
goto block_13;
}
temp_s0 = (arg4 * 0x9200) + (temp_a3 * 0x4900) + (arg1 * 0x920) + D_802DFB80;
osInvalDCache(temp_s0, *(&D_800DDEB0 + (arg0->unk254 * 2)));
temp_v0 = arg0->unk254;
temp_v1 = arg0 + (arg2 * 2);
osPiStartDma(&gDmaIoMesg, 0, 0, (*(*(*(&gKartTextureTable0 + (temp_v0 * 4)) + (temp_v1->unk24C * 4)) + (temp_v1->unk244 * 4)) & 0xFFFFFF) + &_kart_texturesSegmentRomStart, temp_s0, *(&D_800DDEB0 + (temp_v0 * 2)), &gDmaMesgQueue);
}
#else
GLOBAL_ASM("asm/non_matchings/code_80027040/func_80027560.s")
#endif
// regalloc
#ifdef NON_MATCHING
void func_80027A20(Player *player, s8 arg1, s8 arg2, s8 arg3) {
void *temp_s0 = (arg3 << 0xE) + (arg2 << 0xC) + (arg1 << 9) + (s32)&D_802F1F80;
// @bug: Undefined Behaviour UB
// untested fix
#ifdef AVOID_UB
void *temp_s0 = &D_802F1F80[arg3][arg2][0];
#else
void *temp_s0 = &D_802F1F80[arg3][arg2][arg1 << 8];
#endif
switch(gActiveScreenMode) {
case 0: case 1: case 2:
case 0: case 1:
case 2:
osInvalDCache(temp_s0, 0x200);
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[gKartPalettes[player->characterId] & 0x00FFFFFF], temp_s0, 0x200, &gDmaMesgQueue);
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartPalettes[player->characterId])], temp_s0, 0x200, &gDmaMesgQueue);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, 1);
break;
case 3:
osInvalDCache(temp_s0, 0x200);
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[gKartPalettes[player->characterId] & 0x00FFFFFF], temp_s0, 0x200, &gDmaMesgQueue);
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartPalettes[player->characterId])], temp_s0, 0x200, &gDmaMesgQueue);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, 1);
break;
default: break;
}
}
#else
GLOBAL_ASM("asm/non_matchings/code_80027040/func_80027A20.s")
#endif
void func_80027BDC(s32 arg0, s32 arg1, void *vAddr, u16 size) {
void func_80027BDC(UNUSED Player *player, s32 arg1, void *vAddr, u16 size) {
osInvalDCache(vAddr, size);
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[arg1 & 0x00FFFFFF], vAddr, size, &gDmaMesgQueue);
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(arg1)], vAddr, size, &gDmaMesgQueue);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, 1);
}
void func_80027C74(s32 arg0, s32 arg1, void *vAddr, u16 size) {
void func_80027C74(UNUSED Player *player, s32 arg1, void *vAddr, u16 size) {
osInvalDCache(vAddr, size);
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[arg1 & 0x00FFFFFF], vAddr, size, &gDmaMesgQueue);
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(arg1)], vAddr, size, &gDmaMesgQueue);
}
+2 -2
View File
@@ -10,8 +10,8 @@ u8 D_802BFB80[77824];
u8 D_802D2B80[32768]; // Luigi raceway course path ghost
u8 D_802DAB80[20480];
u16 D_802DFB80[37376];
u16 D_802F1F80[16382];
u8 D_802DFB80[2][2][18688];
u16 D_802F1F80[2][4][2048];
u16 gZBuffer[SCREEN_WIDTH * SCREEN_HEIGHT];
-565
View File
@@ -1,565 +0,0 @@
#ifndef AUDIO_INTERNAL_H
#define AUDIO_INTERNAL_H
#include <ultra64.h>
#include "types.h"
// sm64 build defines
#define IS_BIG_ENDIAN 1
// sm64 build defines
#define SEQUENCE_PLAYERS 4
#define SEQUENCE_CHANNELS 48
#define SEQUENCE_LAYERS 64
#define LAYERS_MAX 4
#define CHANNELS_MAX 16
#define NO_LAYER ((struct SequenceChannelLayer *)(-1))
#define MUTE_BEHAVIOR_STOP_SCRIPT 0x80 // stop processing sequence/channel scripts
#define MUTE_BEHAVIOR_STOP_NOTES 0x40 // prevent further notes from playing
#define MUTE_BEHAVIOR_SOFTEN 0x20 // lower volume, by default to half
#define SEQUENCE_PLAYER_STATE_0 0
#define SEQUENCE_PLAYER_STATE_FADE_OUT 1
#define SEQUENCE_PLAYER_STATE_2 2
#define SEQUENCE_PLAYER_STATE_3 3
#define SEQUENCE_PLAYER_STATE_4 4
#define NOTE_PRIORITY_DISABLED 0
#define NOTE_PRIORITY_STOPPING 1
#define NOTE_PRIORITY_MIN 2
#define NOTE_PRIORITY_DEFAULT 3
#define TATUMS_PER_BEAT 48
// abi.h contains more details about the ADPCM and S8 codecs, "skip" skips codec processing
#define CODEC_ADPCM 0
#define CODEC_S8 1
#define CODEC_SKIP 2
#define TEMPO_SCALE TATUMS_PER_BEAT
// TODO: US_FLOAT should probably be renamed to JP_DOUBLE since eu seems to use floats too
#define US_FLOAT(x) x ## f
// Convert u8 or u16 to f32.
#define FLOAT_CAST(x) (f32) (s32) (x)
// No-op printf macro which leaves string literals in rodata in IDO. IDO
// doesn't support variadic macros, so instead we let the parameter list
// expand to a no-op comma expression. Another possibility is that it might
// have expanded to something with "if (0)". See also goddard/gd_main.h.
// On US/JP, -sopt optimizes away these except for external.c.
#ifdef __sgi
#define stubbed_printf
#else
#define stubbed_printf(...)
#endif
#define eu_stubbed_printf_0(msg) stubbed_printf(msg)
#define eu_stubbed_printf_1(msg, a) stubbed_printf(msg, a)
#define eu_stubbed_printf_2(msg, a, b) stubbed_printf(msg, a, b)
#define eu_stubbed_printf_3(msg, a, b, c) stubbed_printf(msg, a, b, c)
struct NotePool;
struct AudioListItem {
// A node in a circularly linked list. Each node is either a head or an item:
// - Items can be either detached (prev = NULL), or attached to a list.
// 'value' points to something of interest.
// - List heads are always attached; if a list is empty, its head points
// to itself. 'count' contains the size of the list.
// If the list holds notes, 'pool' points back to the pool where it lives.
// Otherwise, that member is NULL.
struct AudioListItem *prev;
struct AudioListItem *next;
union {
void *value; // either Note* or SequenceChannelLayer*
s32 count;
} u;
struct NotePool *pool;
}; // size = 0x10
struct NotePool {
struct AudioListItem disabled;
struct AudioListItem decaying;
struct AudioListItem releasing;
struct AudioListItem active;
};
struct VibratoState {
/*0x00, 0x00*/ struct SequenceChannel *seqChannel;
/*0x04, 0x04*/ u32 time;
/* , 0x08*/ s16 *curve;
/* , 0x0C*/ f32 extent;
/* , 0x10*/ f32 rate;
/* , 0x14*/ u8 active;
/*0x12, 0x16*/ u16 rateChangeTimer;
/*0x14, 0x18*/ u16 extentChangeTimer;
/*0x16, 0x1A*/ u16 delay;
}; // size = 0x18, 0x1C on EU
// Pitch sliding by up to one octave in the positive direction. Negative
// direction is "supported" by setting extent to be negative. The code
// extrapolates exponentially in the wrong direction in that case, but that
// doesn't prevent seqplayer from doing it, AFAICT.
struct Portamento {
u8 mode; // bit 0x80 denotes something; the rest are an index 0-5
f32 cur;
f32 speed;
f32 extent;
}; // size = 0x10
struct AdsrEnvelope {
s16 delay;
s16 arg;
}; // size = 0x4
struct AdpcmLoop {
u32 start;
u32 end;
u32 count;
u32 pad;
s16 state[16]; // only exists if count != 0. 8-byte aligned
};
struct AdpcmBook {
s32 order;
s32 npredictors;
s16 book[1]; // size 8 * order * npredictors. 8-byte aligned
};
struct AudioBankSample {
u8 unused;
u8 loaded;
u8 *sampleAddr;
struct AdpcmLoop *loop;
struct AdpcmBook *book;
};
struct AudioBankSound {
struct AudioBankSample *sample;
f32 tuning; // frequency scale factor
}; // size = 0x8
struct Instrument {
/*0x00*/ u8 loaded;
/*0x01*/ u8 normalRangeLo;
/*0x02*/ u8 normalRangeHi;
/*0x03*/ u8 releaseRate;
/*0x04*/ struct AdsrEnvelope *envelope;
/*0x08*/ struct AudioBankSound lowNotesSound;
/*0x10*/ struct AudioBankSound normalNotesSound;
/*0x18*/ struct AudioBankSound highNotesSound;
}; // size = 0x20
struct Drum {
u8 releaseRate;
u8 pan;
u8 loaded;
struct AudioBankSound sound;
struct AdsrEnvelope *envelope;
};
struct AudioBank {
struct Drum **drums;
struct Instrument *instruments[1];
}; // dynamic size
struct CtlEntry {
u8 unused;
u8 numInstruments;
u8 numDrums;
struct Instrument **instruments;
struct Drum **drums;
}; // size = 0xC
struct M64ScriptState {
u8 *pc;
u8 *stack[4];
u8 remLoopIters[4];
u8 depth;
}; // size = 0x1C
// Also known as a Group, according to debug strings.
struct SequencePlayer {
/*0x000, 0x000, 0x000*/ u8 enabled : 1;
/*0x000, 0x000*/ u8 finished : 1; // never read
/*0x000, 0x000*/ u8 muted : 1;
/*0x000, 0x000*/ u8 seqDmaInProgress : 1;
/*0x000, 0x000*/ u8 bankDmaInProgress : 1;
/* 0x000*/ u8 recalculateVolume : 1;
/*0x002, 0x001, 0x001*/ u8 state;
/*0x003, 0x002*/ u8 noteAllocPolicy;
/*0x004, 0x003*/ u8 muteBehavior;
/*0x005, 0x004*/ u8 seqId;
/*0x006, 0x005*/ u8 defaultBank[1]; // must be an array to get a comparison
// to match; other u8's might also be part of that array
/*0x007, 0x006*/ u8 loadingBankId;
/* , 0x007, 0x007*/ s8 seqVariationEu[1];
/*0x00A, 0x008*/ u16 tempo; // beats per minute in JP, tatums per minute in US/EU
/*0x00C, 0x00A*/ u16 tempoAcc;
/*0x010, 0x00C, 0x00E*/ s16 transposition;
/*0x012, 0x00E, 0x010*/ u16 delay;
/*0x00E, 0x010, 0x012*/ u16 fadeRemainingFrames;
/* , 0x012, 0x014*/ u16 fadeTimerUnkEu;
/*0x014, 0x014*/ u8 *seqData; // buffer of some sort
/*0x018, 0x018, 0x1C*/ f32 fadeVolume; // set to 1.0f
/*0x01C, 0x01C*/ f32 fadeVelocity; // set to 0.0f
/*0x020, 0x020, 0x024*/ f32 volume; // set to 0.0f
/*0x024, 0x024*/ f32 muteVolumeScale; // set to 0.5f
/* , 0x028, 0x02C*/ f32 fadeVolumeScale;
/* , 0x02C*/ f32 appliedFadeVolume;
/*0x02C, 0x030, 0x034*/ struct SequenceChannel *channels[CHANNELS_MAX];
/*0x06C, 0x070*/ struct M64ScriptState scriptState;
/*0x088, 0x08C*/ u8 *shortNoteVelocityTable;
/*0x08C, 0x090*/ u8 *shortNoteDurationTable;
/*0x090, 0x094*/ struct NotePool notePool;
/*0x0D0, 0x0D4*/ OSMesgQueue seqDmaMesgQueue;
/*0x0E8, 0x0EC*/ OSMesg seqDmaMesg;
/*0x0EC, 0x0F0*/ OSIoMesg seqDmaIoMesg;
/*0x100, 0x108*/ OSMesgQueue bankDmaMesgQueue;
/*0x118, 0x120*/ OSMesg bankDmaMesg;
/*0x11C, 0x124*/ OSIoMesg bankDmaIoMesg;
/*0x130, 0x13C*/ u8 *bankDmaCurrMemAddr;
/*0x138, 0x140*/ uintptr_t bankDmaCurrDevAddr;
/*0x13C, 0x144*/ ssize_t bankDmaRemaining;
}; // size = 0x140, 0x148 on EU, 0x14C on SH
struct AdsrSettings {
u8 releaseRate;
u8 sustain;
struct AdsrEnvelope *envelope;
}; // size = 0x8
struct AdsrState {
/*0x00, 0x00*/ u8 action;
/*0x01, 0x01*/ u8 state;
/*0x08, 0x02*/ s16 envIndex;
/*0x0A, 0x04*/ s16 delay;
/* , 0x08*/ f32 sustain;
/* , 0x0C*/ f32 velocity;
/* , 0x10*/ f32 fadeOutVel;
/* , 0x14*/ f32 current;
/* , 0x18*/ f32 target;
s32 pad1C;
/*0x1C, 0x20*/ struct AdsrEnvelope *envelope;
}; // size = 0x20, 0x24 in EU
struct ReverbBitsData {
/* 0x00 */ u8 bit0 : 1;
/* 0x00 */ u8 bit1 : 1;
/* 0x00 */ u8 bit2 : 1;
/* 0x00 */ u8 usesHeadsetPanEffects : 1;
/* 0x00 */ u8 stereoHeadsetEffects : 2;
/* 0x00 */ u8 strongRight : 1;
/* 0x00 */ u8 strongLeft : 1;
};
union ReverbBits {
/* 0x00 */ struct ReverbBitsData s;
/* 0x00 */ u8 asByte;
};
struct ReverbInfo {
u8 reverbVol;
u8 synthesisVolume; // UQ4.4, although 0 <= x < 1 is rounded up to 1
u8 pan;
union ReverbBits reverbBits;
f32 freqScale;
f32 velocity;
s32 unused;
s16 *filter;
};
struct NoteAttributes {
u8 reverbVol;
u8 pan;
f32 freqScale;
f32 velocity;
}; // size = 0x10
// Also known as a SubTrack, according to debug strings.
// Confusingly, a SubTrack is a container of Tracks.
struct SequenceChannel {
/* U/J, EU, SH */
/*0x00, 0x00*/ u8 enabled : 1;
/*0x00, 0x00*/ u8 finished : 1;
/*0x00, 0x00*/ u8 stopScript : 1;
/*0x00, 0x00*/ u8 stopSomething2 : 1; // sets SequenceChannelLayer.stopSomething
/*0x00, 0x00*/ u8 hasInstrument : 1;
/*0x00, 0x00*/ u8 stereoHeadsetEffects : 1;
/*0x00, ????*/ u8 largeNotes : 1; // notes specify duration and velocity
/*0x00, ????*/ u8 unused : 1; // never read, set to 0
/* , 0x01*/ union {
struct {
u8 freqScale : 1;
u8 volume : 1;
u8 pan : 1;
} as_bitfields;
u8 as_u8;
} changes;
/*0x01, 0x02*/ u8 noteAllocPolicy;
/*0x02, 0x03, 0x03*/ u8 muteBehavior;
/*0x03, 0x04, 0x04*/ u8 reverbVol; // until EU: Q1.7, after EU: UQ0.8
/*0x04, ????*/ u8 notePriority; // 0-3
/*0x05, 0x06*/ u8 bankId;
/* , 0x07*/ u8 reverbIndex;
/* , 0x08, 0x09*/ u8 bookOffset;
/* , 0x09*/ u8 newPan;
/* , 0x0A*/ u8 panChannelWeight; // proportion of pan that comes from the channel (0..128)
/*0x08, 0x0C, 0x0E*/ u16 vibratoRateStart; // initially 0x800
/*0x0A, 0x0E, 0x10*/ u16 vibratoExtentStart;
/*0x0C, 0x10, 0x12*/ u16 vibratoRateTarget; // initially 0x800
/*0x0E, 0x12, 0x14*/ u16 vibratoExtentTarget;
/*0x10, 0x14, 0x16*/ u16 vibratoRateChangeDelay;
/*0x12, 0x16, 0x18*/ u16 vibratoExtentChangeDelay;
/*0x14, 0x18, 0x1A*/ u16 vibratoDelay;
/*0x16, 0x1A, 0x1C*/ u16 delay;
/*0x18, 0x1C, 0x1E*/ s16 instOrWave; // either 0 (none), instrument index + 1, or
// 0x80..0x83 for sawtooth/triangle/sine/square waves.
/*0x1A, 0x1E, 0x20*/ s16 transposition;
/*0x1C, 0x20, 0x24*/ f32 volumeScale;
/*0x20, 0x24, 0x28*/ f32 volume;
/* , 0x28*/ s32 pan;
/* , 0x2C*/ f32 appliedVolume;
/*0x2C, 0x30*/ f32 freqScale;
/*0x30, 0x34*/ u8 (*dynTable)[][2];
/*0x34, ????*/ struct Note *noteUnused; // never read
/*0x38, ????*/ struct SequenceChannelLayer *layerUnused; // never read
/*0x3C, 0x40*/ struct Instrument *instrument;
/*0x40, 0x44*/ struct SequencePlayer *seqPlayer;
/*0x44, 0x48*/ struct SequenceChannelLayer *layers[LAYERS_MAX];
/*0x54, 0x58 */ s8 soundScriptIO[8]; // bridge between sound script and audio lib. For player 2,
// [0] contains enabled, [4] contains sound ID, [5] contains reverb adjustment
/*0x5C, 0x60*/ struct M64ScriptState scriptState;
/*0x78, 0x7C*/ struct AdsrSettings adsr;
/*0x80, 0x84*/ struct NotePool notePool;
}; // size = 0xC0, 0xC4 in EU, 0xD0 in SH
// Also known as a Track, according to debug strings.
struct SequenceChannelLayer {
/* U/J, EU, SH */
/*0x00, 0x00*/ u8 enabled : 1;
/*0x00, 0x00*/ u8 finished : 1;
/*0x00, 0x00*/ u8 stopSomething : 1; // ?
/*0x00, 0x00*/ u8 continuousNotes : 1; // keep the same note for consecutive notes with the same sound
/* , 0x00*/ u8 unusedEu0b8 : 1;
/* , 0x00*/ u8 notePropertiesNeedInit : 1;
/* , 0x00*/ u8 ignoreDrumPan : 1;
/* , 0x01, 0x02*/ u8 instOrWave;
/*0x01, 0x02, 0x03*/ u8 status; // 0x03 in SH
/*0x02, 0x03*/ u8 noteDuration; // set to 0x80
/*0x03, 0x04*/ u8 portamentoTargetNote;
/* , 0x05*/ u8 pan; // 0..128
/* , 0x06, 0x07*/ u8 notePan;
/*0x04, 0x08*/ struct Portamento portamento;
/*0x14, 0x18*/ struct AdsrSettings adsr;
/*0x1C, 0x20*/ u16 portamentoTime;
/*0x1E, 0x22*/ s16 transposition; // #semitones added to play commands
// (m64 instruction encoding only allows referring to the limited range
// 0..0x3f; this makes 0x40..0x7f accessible as well)
/*0x20, 0x24, 0x24*/ f32 freqScale;
/*0x24, 0x28, 0x2C*/ f32 velocitySquare;
/*0x2C, 0x2C, 0x30*/ f32 noteVelocity;
/*0x34, 0x30, 0x34*/ f32 noteFreqScale;
/*0x38, 0x34*/ s16 shortNoteDefaultPlayPercentage;
/*0x3A, 0x36*/ s16 playPercentage; // it's not really a percentage...
/*0x3C, 0x38*/ s16 delay;
/*0x3E, 0x3A*/ s16 duration;
/*0x40, 0x3C*/ s16 delayUnused; // set to 'delay', never read
/*0x44, 0x40, 0x44*/ struct Note *note;
/*0x48, 0x44*/ struct Instrument *instrument;
/*0x4C, 0x48*/ struct AudioBankSound *sound;
/*0x50, 0x4C, 0x50*/ struct SequenceChannel *seqChannel;
/*0x54, 0x50*/ struct M64ScriptState scriptState;
/*0x70, 0x6C*/ struct AudioListItem listItem;
u8 pad2[4];
}; // size = 0x80
struct NoteSynthesisState {
/*0x00*/ u8 restart;
/*0x01*/ u8 sampleDmaIndex;
/*0x02*/ u8 prevHeadsetPanRight;
/*0x03*/ u8 prevHeadsetPanLeft;
/*0x04, 0x06*/ u16 samplePosFrac;
/*0x08*/ s32 samplePosInt;
/*0x0C*/ struct NoteSynthesisBuffers *synthesisBuffers;
/*0x10*/ s16 curVolLeft; // UQ0.16 (EU Q1.15)
/*0x12*/ s16 curVolRight; // UQ0.16 (EU Q1.15)
};
struct NotePlaybackState {
/* U/J, EU, SH */
/*0x04, 0x00, 0x00*/ u8 priority;
/* 0x01, 0x01*/ u8 waveId;
/* 0x02, 0x02*/ u8 sampleCountIndex;
/*0x08, 0x04, 0x06*/ s16 adsrVolScale;
/*0x18, 0x08, 0x08*/ f32 portamentoFreqScale;
/*0x1C, 0x0C, 0x0C*/ f32 vibratoFreqScale;
/*0x28, 0x10, */ struct SequenceChannelLayer *prevParentLayer;
/*0x2C, 0x14, 0x14*/ struct SequenceChannelLayer *parentLayer;
/*0x30, 0x18, 0x18*/ struct SequenceChannelLayer *wantedParentLayer;
/* , 0x1C, 0x1C*/ struct NoteAttributes attributes;
/*0x54, 0x28, 0x2C*/ struct AdsrState adsr;
/*0x74, 0x4C, */ struct Portamento portamento;
/*0x84, 0x5C, */ struct VibratoState vibratoState;
};
struct NoteSubEu {
/*0x00*/ volatile u8 enabled : 1;
/*0x00*/ u8 needsInit : 1;
/*0x00*/ u8 finished : 1;
/*0x00*/ u8 envMixerNeedsInit : 1;
/*0x00*/ u8 stereoStrongRight : 1;
/*0x00*/ u8 stereoStrongLeft : 1;
/*0x00*/ u8 stereoHeadsetEffects : 1;
/*0x00*/ u8 usesHeadsetPanEffects : 1;
/*0x01*/ u8 reverbIndex : 3;
/*0x01*/ u8 bookOffset : 3;
/*0x01*/ u8 isSyntheticWave : 1;
/*0x01*/ u8 hasTwoAdpcmParts : 1;
/*0x02*/ u8 bankId;
/*0x03*/ u8 headsetPanRight;
/*0x04*/ u8 headsetPanLeft;
/*0x05*/ u8 reverbVol; // UQ0.7 (EU Q1.7)
/*0x06*/ u16 targetVolLeft; // UQ0.12 (EU UQ0.10)
/*0x08*/ u16 targetVolRight; // UQ0.12 (EU UQ0.10)
/*0x0A*/ u16 resamplingRateFixedPoint; // stored as signed but loaded as u16
/*0x0C*/ union {
s16 *samples;
struct AudioBankSound *audioBankSound;
} sound;
};
struct Note {
/* U/J, EU, SH */
/*0xA4, 0x00, 0x00*/ struct AudioListItem listItem;
/* 0x10, 0x10*/ struct NoteSynthesisState synthesisState;
// The next members are actually part of a struct (NotePlaybackState), but
// that results in messy US/EU ifdefs. Instead we cast to a struct pointer
// when needed... This breaks alignment on non-N64 platforms, which we hack
// around by skipping the padding in that case.
// TODO: use macros or something instead.
#ifdef TARGET_N64
u8 pad0[12];
#endif
/*0x04, 0x30, 0x30*/ u8 priority;
/* 0x31, 0x31*/ u8 waveId;
/* 0x32, 0x32*/ u8 sampleCountIndex;
/*0x08, 0x34, 0x36*/ s16 adsrVolScale;
/*0x18, 0x38, */ f32 portamentoFreqScale;
/*0x1C, 0x3C, */ f32 vibratoFreqScale;
/*0x28, 0x40, */ struct SequenceChannelLayer *prevParentLayer;
/*0x2C, 0x44, 0x44*/ struct SequenceChannelLayer *parentLayer;
/*0x30, 0x48, 0x48*/ struct SequenceChannelLayer *wantedParentLayer;
/* , 0x4C, 0x4C*/ struct NoteAttributes attributes;
/*0x54, 0x58, 0x5C*/ struct AdsrState adsr;
/*0x74, 0x7C*/ struct Portamento portamento;
/*0x84, 0x8C*/ struct VibratoState vibratoState;
u8 pad3[8];
/* , 0xB0, 0xB4*/ struct NoteSubEu noteSubEu;
}; // size = 0xC0, known to be 0xC8 on SH
struct NoteSynthesisBuffers {
s16 adpcmdecState[0x10];
s16 finalResampleState[0x10];
s16 mixEnvelopeState[0x28];
s16 panResampleState[0x10];
s16 panSamplesBuffer[0x20];
s16 dummyResampleState[0x10];
};
struct ReverbSettingsEU {
u8 downsampleRate;
u8 windowSize; // To be multiplied by 64
u16 gain;
};
struct AudioSessionSettingsEU {
/* 0x00 */ u32 frequency;
/* 0x04 */ u8 unk1; // always 1
/* 0x05 */ u8 maxSimultaneousNotes;
/* 0x06 */ u8 numReverbs; // always 1
/* 0x07 */ u8 unk2; // always 0
/* 0x08 */ struct ReverbSettingsEU *reverbSettings;
/* 0x0C */ u16 volume;
/* 0x0E */ u16 unk3; // always 0
/* 0x10 */ u32 persistentSeqMem;
/* 0x14 */ u32 persistentBankMem;
/* 0x18, 0x1C */ u32 temporarySeqMem;
/* 0x1C, 0x20 */ u32 temporaryBankMem;
}; // 0x30 on shindou
struct AudioSessionSettings {
/*0x00*/ u32 frequency;
/*0x04*/ u8 maxSimultaneousNotes;
/*0x05*/ u8 reverbDownsampleRate; // always 1
/*0x06*/ u16 reverbWindowSize;
/*0x08*/ u16 reverbGain;
/*0x0A*/ u16 volume;
/*0x0C*/ u32 persistentSeqMem;
/*0x10*/ u32 persistentBankMem;
/*0x14*/ u32 temporarySeqMem;
/*0x18*/ u32 temporaryBankMem;
}; // size = 0x1C
struct AudioBufferParametersEU {
/*0x00*/ s16 presetUnk4; // audio frames per vsync?
/*0x02*/ u16 frequency;
/*0x04*/ u16 aiFrequency; // ?16
/*0x06*/ s16 samplesPerFrameTarget;
/*0x08*/ s16 maxAiBufferLength;
/*0x0A*/ s16 minAiBufferLength;
/*0x0C*/ s16 updatesPerFrame;
/*0x0E*/ s16 samplesPerUpdate;
/*0x10*/ s16 samplesPerUpdateMax;
/*0x12*/ s16 samplesPerUpdateMin;
/*0x14*/ f32 resampleRate; // contains 32000.0f / frequency
/*0x18*/ f32 updatesPerFrameInv; // 1.0f / updatesPerFrame
/*0x1C*/ f32 unkUpdatesPerFrameScaled; // 3.0f / (1280.0f * updatesPerFrame)
};
struct EuAudioCmd {
union {
#if IS_BIG_ENDIAN
struct {
u8 op;
u8 arg1;
u8 arg2;
u8 arg3;
} s;
#else
struct {
u8 arg3;
u8 arg2;
u8 arg1;
u8 op;
} s;
#endif
s32 first;
} u;
union {
s32 as_s32;
u32 as_u32;
f32 as_f32;
#if IS_BIG_ENDIAN
u8 as_u8;
s8 as_s8;
#else
struct {
u8 pad0[3];
u8 as_u8;
};
struct {
u8 pad1[3];
s8 as_s8;
};
#endif
} u2;
};
#endif // AUDIO_INTERNAL_H