mirror of
https://github.com/zeldaret/oot.git
synced 2025-02-25 18:34:27 +00:00
audio_synthesis OK + partially documented (#920)
* Match func_800DDB64 * Match func_800DC910 * remove stack comments * Move nop padding to ucode_disas * Partially label audio_synthesis To some extent copied from sm64. * cleanup * Reverb and ReverbBits have nothing to do with reverbs * review * naming * Undo changes to permuter_settings.toml Co-authored-by: zelda2774 <zelda2774@invalid>
This commit is contained in:
parent
430a172183
commit
4444c5ea35
16 changed files with 934 additions and 2123 deletions
|
@ -4,7 +4,7 @@ glabel D_80149420
|
|||
.balign 4
|
||||
|
||||
.text
|
||||
glabel func_800E12DC
|
||||
glabel Audio_DmaSampleData
|
||||
/* B5847C 800E12DC 27BDFFB0 */ addiu $sp, $sp, -0x50
|
||||
/* B58480 800E12E0 AFB10030 */ sw $s1, 0x30($sp)
|
||||
/* B58484 800E12E4 AFB0002C */ sw $s0, 0x2c($sp)
|
|
@ -1,930 +0,0 @@
|
|||
.late_rodata
|
||||
glabel jtbl_801493D0
|
||||
.word L800DCCE4
|
||||
.word L800DCD0C
|
||||
.word L800DCD20
|
||||
.word L800DCCF8
|
||||
.word L800DCDA0
|
||||
.word L800DCD60
|
||||
|
||||
.text
|
||||
glabel func_800DC910
|
||||
/* B53AB0 800DC910 27BDFEA0 */ addiu $sp, $sp, -0x160
|
||||
/* B53AB4 800DC914 AFBF004C */ sw $ra, 0x4c($sp)
|
||||
/* B53AB8 800DC918 AFBE0048 */ sw $fp, 0x48($sp)
|
||||
/* B53ABC 800DC91C AFB70044 */ sw $s7, 0x44($sp)
|
||||
/* B53AC0 800DC920 AFB60040 */ sw $s6, 0x40($sp)
|
||||
/* B53AC4 800DC924 AFB5003C */ sw $s5, 0x3c($sp)
|
||||
/* B53AC8 800DC928 AFB40038 */ sw $s4, 0x38($sp)
|
||||
/* B53ACC 800DC92C AFB30034 */ sw $s3, 0x34($sp)
|
||||
/* B53AD0 800DC930 AFB20030 */ sw $s2, 0x30($sp)
|
||||
/* B53AD4 800DC934 AFB1002C */ sw $s1, 0x2c($sp)
|
||||
/* B53AD8 800DC938 AFB00028 */ sw $s0, 0x28($sp)
|
||||
/* B53ADC 800DC93C AFA40160 */ sw $a0, 0x160($sp)
|
||||
/* B53AE0 800DC940 AFA7016C */ sw $a3, 0x16c($sp)
|
||||
/* B53AE4 800DC944 8CA30000 */ lw $v1, ($a1)
|
||||
/* B53AE8 800DC948 0004C8C0 */ sll $t9, $a0, 3
|
||||
/* B53AEC 800DC94C 3C0C8017 */ lui $t4, %hi(gAudioContext+0x352c) # $t4, 0x8017
|
||||
/* B53AF0 800DC950 000372C0 */ sll $t6, $v1, 0xb
|
||||
/* B53AF4 800DC954 8D8C26AC */ lw $t4, %lo(gAudioContext+0x352c)($t4)
|
||||
/* B53AF8 800DC958 000E7F82 */ srl $t7, $t6, 0x1e
|
||||
/* B53AFC 800DC95C 0324C823 */ subu $t9, $t9, $a0
|
||||
/* B53B00 800DC960 00036840 */ sll $t5, $v1, 1
|
||||
/* B53B04 800DC964 240A0001 */ li $t2, 1
|
||||
/* B53B08 800DC968 0019C940 */ sll $t9, $t9, 5
|
||||
/* B53B0C 800DC96C 000D77C2 */ srl $t6, $t5, 0x1f
|
||||
/* B53B10 800DC970 00035880 */ sll $t3, $v1, 2
|
||||
/* B53B14 800DC974 00C08025 */ move $s0, $a2
|
||||
/* B53B18 800DC978 00A08825 */ move $s1, $a1
|
||||
/* B53B1C 800DC97C AFAF008C */ sw $t7, 0x8c($sp)
|
||||
/* B53B20 800DC980 000B5FC2 */ srl $t3, $t3, 0x1f
|
||||
/* B53B24 800DC984 00004825 */ move $t1, $zero
|
||||
/* B53B28 800DC988 154E0014 */ bne $t2, $t6, .L800DC9DC
|
||||
/* B53B2C 800DC98C 032C3821 */ addu $a3, $t9, $t4
|
||||
/* B53B30 800DC990 A0C00000 */ sb $zero, ($a2)
|
||||
/* B53B34 800DC994 8CEF00BC */ lw $t7, 0xbc($a3)
|
||||
/* B53B38 800DC998 A4C00006 */ sh $zero, 6($a2)
|
||||
/* B53B3C 800DC99C A4C00010 */ sh $zero, 0x10($a2)
|
||||
/* B53B40 800DC9A0 A4C00012 */ sh $zero, 0x12($a2)
|
||||
/* B53B44 800DC9A4 A0C00002 */ sb $zero, 2($a2)
|
||||
/* B53B48 800DC9A8 A0C00003 */ sb $zero, 3($a2)
|
||||
/* B53B4C 800DC9AC ACCF0008 */ sw $t7, 8($a2)
|
||||
/* B53B50 800DC9B0 90B80005 */ lbu $t8, 5($a1)
|
||||
/* B53B54 800DC9B4 24190001 */ li $t9, 1
|
||||
/* B53B58 800DC9B8 A0C00005 */ sb $zero, 5($a2)
|
||||
/* B53B5C 800DC9BC A0D9001A */ sb $t9, 0x1a($a2)
|
||||
/* B53B60 800DC9C0 A0D80004 */ sb $t8, 4($a2)
|
||||
/* B53B64 800DC9C4 90EC00C0 */ lbu $t4, 0xc0($a3)
|
||||
/* B53B68 800DC9C8 01404825 */ move $t1, $t2
|
||||
/* B53B6C 800DC9CC 00005825 */ move $t3, $zero
|
||||
/* B53B70 800DC9D0 318DFFDF */ andi $t5, $t4, 0xffdf
|
||||
/* B53B74 800DC9D4 A0ED00C0 */ sb $t5, 0xc0($a3)
|
||||
/* B53B78 800DC9D8 8CA30000 */ lw $v1, ($a1)
|
||||
.L800DC9DC:
|
||||
/* B53B7C 800DC9DC 962E000C */ lhu $t6, 0xc($s1)
|
||||
/* B53B80 800DC9E0 8FB80170 */ lw $t8, 0x170($sp)
|
||||
/* B53B84 800DC9E4 00032380 */ sll $a0, $v1, 0xe
|
||||
/* B53B88 800DC9E8 31CFFFFF */ andi $t7, $t6, 0xffff
|
||||
/* B53B8C 800DC9EC 01F80019 */ multu $t7, $t8
|
||||
/* B53B90 800DC9F0 A7AE0136 */ sh $t6, 0x136($sp)
|
||||
/* B53B94 800DC9F4 960D0006 */ lhu $t5, 6($s0)
|
||||
/* B53B98 800DC9F8 92020005 */ lbu $v0, 5($s0)
|
||||
/* B53B9C 800DC9FC 000427C2 */ srl $a0, $a0, 0x1f
|
||||
/* B53BA0 800DCA00 24840001 */ addiu $a0, $a0, 1
|
||||
/* B53BA4 800DCA04 0000C812 */ mflo $t9
|
||||
/* B53BA8 800DCA08 00196040 */ sll $t4, $t9, 1
|
||||
/* B53BAC 800DCA0C 018D4021 */ addu $t0, $t4, $t5
|
||||
/* B53BB0 800DCA10 15420001 */ bne $t2, $v0, .L800DCA18
|
||||
/* B53BB4 800DCA14 A6080006 */ sh $t0, 6($s0)
|
||||
.L800DCA18:
|
||||
/* B53BB8 800DCA18 A2040005 */ sb $a0, 5($s0)
|
||||
/* B53BBC 800DCA1C 8E230000 */ lw $v1, ($s1)
|
||||
/* B53BC0 800DCA20 0003C340 */ sll $t8, $v1, 0xd
|
||||
/* B53BC4 800DCA24 07030018 */ bgezl $t8, .L800DCA88
|
||||
/* B53BC8 800DCA28 8E380010 */ lw $t8, 0x10($s1)
|
||||
/* B53BCC 800DCA2C 00083C02 */ srl $a3, $t0, 0x10
|
||||
/* B53BD0 800DCA30 8FA40174 */ lw $a0, 0x174($sp)
|
||||
/* B53BD4 800DCA34 AFA70050 */ sw $a3, 0x50($sp)
|
||||
/* B53BD8 800DCA38 02202825 */ move $a1, $s1
|
||||
/* B53BDC 800DCA3C 02003025 */ move $a2, $s0
|
||||
/* B53BE0 800DCA40 AFB00168 */ sw $s0, 0x168($sp)
|
||||
/* B53BE4 800DCA44 0C03767D */ jal func_800DD9F4
|
||||
/* B53BE8 800DCA48 AFB10164 */ sw $s1, 0x164($sp)
|
||||
/* B53BEC 800DCA4C 8FA40168 */ lw $a0, 0x168($sp)
|
||||
/* B53BF0 800DCA50 8FAD0050 */ lw $t5, 0x50($sp)
|
||||
/* B53BF4 800DCA54 240A0001 */ li $t2, 1
|
||||
/* B53BF8 800DCA58 8C860008 */ lw $a2, 8($a0)
|
||||
/* B53BFC 800DCA5C 0006C840 */ sll $t9, $a2, 1
|
||||
/* B53C00 800DCA60 272C0580 */ addiu $t4, $t9, 0x580
|
||||
/* B53C04 800DCA64 A7AC00AE */ sh $t4, 0xae($sp)
|
||||
/* B53C08 800DCA68 00CD7021 */ addu $t6, $a2, $t5
|
||||
/* B53C0C 800DCA6C AC8E0008 */ sw $t6, 8($a0)
|
||||
/* B53C10 800DCA70 8FB10164 */ lw $s1, 0x164($sp)
|
||||
/* B53C14 800DCA74 8FB00168 */ lw $s0, 0x168($sp)
|
||||
/* B53C18 800DCA78 8E230000 */ lw $v1, ($s1)
|
||||
/* B53C1C 800DCA7C 1000022D */ b .L800DD334
|
||||
/* B53C20 800DCA80 AFA20174 */ sw $v0, 0x174($sp)
|
||||
/* B53C24 800DCA84 8E380010 */ lw $t8, 0x10($s1)
|
||||
.L800DCA88:
|
||||
/* B53C28 800DCA88 00086C02 */ srl $t5, $t0, 0x10
|
||||
/* B53C2C 800DCA8C 8F020000 */ lw $v0, ($t8)
|
||||
/* B53C30 800DCA90 8C450008 */ lw $a1, 8($v0)
|
||||
/* B53C34 800DCA94 8CB90004 */ lw $t9, 4($a1)
|
||||
/* B53C38 800DCA98 AFB90100 */ sw $t9, 0x100($sp)
|
||||
/* B53C3C 800DCA9C 8C4C0004 */ lw $t4, 4($v0)
|
||||
/* B53C40 800DCAA0 AFA000B0 */ sw $zero, 0xb0($sp)
|
||||
/* B53C44 800DCAA4 AFA000BC */ sw $zero, 0xbc($sp)
|
||||
/* B53C48 800DCAA8 18800222 */ blez $a0, .L800DD334
|
||||
/* B53C4C 800DCAAC AFAC0110 */ sw $t4, 0x110($sp)
|
||||
/* B53C50 800DCAB0 AFAB0088 */ sw $t3, 0x88($sp)
|
||||
/* B53C54 800DCAB4 02005825 */ move $t3, $s0
|
||||
/* B53C58 800DCAB8 AFAD0050 */ sw $t5, 0x50($sp)
|
||||
/* B53C5C 800DCABC AFA20150 */ sw $v0, 0x150($sp)
|
||||
/* B53C60 800DCAC0 AFA400C0 */ sw $a0, 0xc0($sp)
|
||||
/* B53C64 800DCAC4 AFA5014C */ sw $a1, 0x14c($sp)
|
||||
/* B53C68 800DCAC8 AFA7009C */ sw $a3, 0x9c($sp)
|
||||
/* B53C6C 800DCACC AFA90138 */ sw $t1, 0x138($sp)
|
||||
/* B53C70 800DCAD0 AFB00168 */ sw $s0, 0x168($sp)
|
||||
/* B53C74 800DCAD4 AFB10164 */ sw $s1, 0x164($sp)
|
||||
/* B53C78 800DCAD8 8FB20174 */ lw $s2, 0x174($sp)
|
||||
/* B53C7C 800DCADC 8FAA00D4 */ lw $t2, 0xd4($sp)
|
||||
/* B53C80 800DCAE0 00801825 */ move $v1, $a0
|
||||
.L800DCAE4:
|
||||
/* B53C84 800DCAE4 8FAE0150 */ lw $t6, 0x150($sp)
|
||||
/* B53C88 800DCAE8 24010001 */ li $at, 1
|
||||
/* B53C8C 800DCAEC 00004825 */ move $t1, $zero
|
||||
/* B53C90 800DCAF0 8DC70000 */ lw $a3, ($t6)
|
||||
/* B53C94 800DCAF4 0000A825 */ move $s5, $zero
|
||||
/* B53C98 800DCAF8 14610003 */ bne $v1, $at, .L800DCB08
|
||||
/* B53C9C 800DCAFC 00073F02 */ srl $a3, $a3, 0x1c
|
||||
/* B53CA0 800DCB00 1000000B */ b .L800DCB30
|
||||
/* B53CA4 800DCB04 8FBE0050 */ lw $fp, 0x50($sp)
|
||||
.L800DCB08:
|
||||
/* B53CA8 800DCB08 8FAF0050 */ lw $t7, 0x50($sp)
|
||||
/* B53CAC 800DCB0C 8FAC00BC */ lw $t4, 0xbc($sp)
|
||||
/* B53CB0 800DCB10 8FBE0050 */ lw $fp, 0x50($sp)
|
||||
/* B53CB4 800DCB14 31F80001 */ andi $t8, $t7, 1
|
||||
/* B53CB8 800DCB18 13000005 */ beqz $t8, .L800DCB30
|
||||
/* B53CBC 800DCB1C 000C6840 */ sll $t5, $t4, 1
|
||||
/* B53CC0 800DCB20 2401FFFE */ li $at, -2
|
||||
/* B53CC4 800DCB24 01E1C824 */ and $t9, $t7, $at
|
||||
/* B53CC8 800DCB28 10000001 */ b .L800DCB30
|
||||
/* B53CCC 800DCB2C 032DF021 */ addu $fp, $t9, $t5
|
||||
.L800DCB30:
|
||||
/* B53CD0 800DCB30 10E00003 */ beqz $a3, .L800DCB40
|
||||
/* B53CD4 800DCB34 24010003 */ li $at, 3
|
||||
/* B53CD8 800DCB38 14E1002C */ bne $a3, $at, .L800DCBEC
|
||||
/* B53CDC 800DCB3C 00000000 */ nop
|
||||
.L800DCB40:
|
||||
/* B53CE0 800DCB40 8FAE0150 */ lw $t6, 0x150($sp)
|
||||
/* B53CE4 800DCB44 3C188017 */ lui $t8, %hi(gAudioContext+0x10) # $t8, 0x8017
|
||||
/* B53CE8 800DCB48 8F18F190 */ lw $t8, %lo(gAudioContext+0x10)($t8)
|
||||
/* B53CEC 800DCB4C 8DC2000C */ lw $v0, 0xc($t6)
|
||||
/* B53CF0 800DCB50 8FAF008C */ lw $t7, 0x8c($sp)
|
||||
/* B53CF4 800DCB54 24010001 */ li $at, 1
|
||||
/* B53CF8 800DCB58 24420008 */ addiu $v0, $v0, 8
|
||||
/* B53CFC 800DCB5C 13020023 */ beq $t8, $v0, .L800DCBEC
|
||||
/* B53D00 800DCB60 00000000 */ nop
|
||||
/* B53D04 800DCB64 11E10008 */ beq $t7, $at, .L800DCB88
|
||||
/* B53D08 800DCB68 3C0C8013 */ lui $t4, %hi(D_8012FBAA) # $t4, 0x8013
|
||||
/* B53D0C 800DCB6C 24010002 */ li $at, 2
|
||||
/* B53D10 800DCB70 11E10009 */ beq $t7, $at, .L800DCB98
|
||||
/* B53D14 800DCB74 24010003 */ li $at, 3
|
||||
/* B53D18 800DCB78 11E10007 */ beq $t7, $at, .L800DCB98
|
||||
/* B53D1C 800DCB7C 00000000 */ nop
|
||||
/* B53D20 800DCB80 10000005 */ b .L800DCB98
|
||||
/* B53D24 800DCB84 00000000 */ nop
|
||||
.L800DCB88:
|
||||
/* B53D28 800DCB88 258CFBAA */ addiu $t4, %lo(D_8012FBAA) # addiu $t4, $t4, -0x456
|
||||
/* B53D2C 800DCB8C 3C018017 */ lui $at, %hi(gAudioContext+0x10) # $at, 0x8017
|
||||
/* B53D30 800DCB90 10000003 */ b .L800DCBA0
|
||||
/* B53D34 800DCB94 AC2CF190 */ sw $t4, %lo(gAudioContext+0x10)($at)
|
||||
.L800DCB98:
|
||||
/* B53D38 800DCB98 3C018017 */ lui $at, %hi(gAudioContext+0x10) # $at, 0x8017
|
||||
/* B53D3C 800DCB9C AC22F190 */ sw $v0, %lo(gAudioContext+0x10)($at)
|
||||
.L800DCBA0:
|
||||
/* B53D40 800DCBA0 8FB90150 */ lw $t9, 0x150($sp)
|
||||
/* B53D44 800DCBA4 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
|
||||
/* B53D48 800DCBA8 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
|
||||
/* B53D4C 800DCBAC 8F22000C */ lw $v0, 0xc($t9)
|
||||
/* B53D50 800DCBB0 02401825 */ move $v1, $s2
|
||||
/* B53D54 800DCBB4 3C198017 */ lui $t9, %hi(gAudioContext+0x10) # $t9, 0x8017
|
||||
/* B53D58 800DCBB8 8C4D0000 */ lw $t5, ($v0)
|
||||
/* B53D5C 800DCBBC 8C580004 */ lw $t8, 4($v0)
|
||||
/* B53D60 800DCBC0 26520008 */ addiu $s2, $s2, 8
|
||||
/* B53D64 800DCBC4 000D7100 */ sll $t6, $t5, 4
|
||||
/* B53D68 800DCBC8 01D80019 */ multu $t6, $t8
|
||||
/* B53D6C 800DCBCC 00002012 */ mflo $a0
|
||||
/* B53D70 800DCBD0 00817824 */ and $t7, $a0, $at
|
||||
/* B53D74 800DCBD4 3C010B00 */ lui $at, 0xb00
|
||||
/* B53D78 800DCBD8 01E16025 */ or $t4, $t7, $at
|
||||
/* B53D7C 800DCBDC AC6C0000 */ sw $t4, ($v1)
|
||||
/* B53D80 800DCBE0 8F39F190 */ lw $t9, %lo(gAudioContext+0x10)($t9)
|
||||
/* B53D84 800DCBE4 AC790004 */ sw $t9, 4($v1)
|
||||
/* B53D88 800DCBE8 8FA300C0 */ lw $v1, 0xc0($sp)
|
||||
.L800DCBEC:
|
||||
/* B53D8C 800DCBEC 53C0017F */ beql $fp, $zero, .L800DD1EC
|
||||
/* B53D90 800DCBF0 24010001 */ li $at, 1
|
||||
/* B53D94 800DCBF4 AFA00140 */ sw $zero, 0x140($sp)
|
||||
.L800DCBF8:
|
||||
/* B53D98 800DCBF8 AFA0013C */ sw $zero, 0x13c($sp)
|
||||
/* B53D9C 800DCBFC 8D660008 */ lw $a2, 8($t3)
|
||||
/* B53DA0 800DCC00 8FAE0150 */ lw $t6, 0x150($sp)
|
||||
/* B53DA4 800DCC04 03C92023 */ subu $a0, $fp, $t1
|
||||
/* B53DA8 800DCC08 AFA400FC */ sw $a0, 0xfc($sp)
|
||||
/* B53DAC 800DCC0C 8FAD0100 */ lw $t5, 0x100($sp)
|
||||
/* B53DB0 800DCC10 8DC80000 */ lw $t0, ($t6)
|
||||
/* B53DB4 800DCC14 30D3000F */ andi $s3, $a2, 0xf
|
||||
/* B53DB8 800DCC18 0000A025 */ move $s4, $zero
|
||||
/* B53DBC 800DCC1C 01A61823 */ subu $v1, $t5, $a2
|
||||
/* B53DC0 800DCC20 16600005 */ bnez $s3, .L800DCC38
|
||||
/* B53DC4 800DCC24 00083F02 */ srl $a3, $t0, 0x1c
|
||||
/* B53DC8 800DCC28 91780000 */ lbu $t8, ($t3)
|
||||
/* B53DCC 800DCC2C 57000003 */ bnezl $t8, .L800DCC3C
|
||||
/* B53DD0 800DCC30 240F0010 */ li $t7, 16
|
||||
/* B53DD4 800DCC34 24130010 */ li $s3, 16
|
||||
.L800DCC38:
|
||||
/* B53DD8 800DCC38 240F0010 */ li $t7, 16
|
||||
.L800DCC3C:
|
||||
/* B53DDC 800DCC3C 01F32823 */ subu $a1, $t7, $s3
|
||||
/* B53DE0 800DCC40 0083082A */ slt $at, $a0, $v1
|
||||
/* B53DE4 800DCC44 1020000C */ beqz $at, .L800DCC78
|
||||
/* B53DE8 800DCC48 00A0B025 */ move $s6, $a1
|
||||
/* B53DEC 800DCC4C 00851023 */ subu $v0, $a0, $a1
|
||||
/* B53DF0 800DCC50 2442000F */ addiu $v0, $v0, 0xf
|
||||
/* B53DF4 800DCC54 04410002 */ bgez $v0, .L800DCC60
|
||||
/* B53DF8 800DCC58 00400821 */ addu $at, $v0, $zero
|
||||
/* B53DFC 800DCC5C 2441000F */ addiu $at, $v0, 0xf
|
||||
.L800DCC60:
|
||||
/* B53E00 800DCC60 00011103 */ sra $v0, $at, 4
|
||||
/* B53E04 800DCC64 00028100 */ sll $s0, $v0, 4
|
||||
/* B53E08 800DCC68 00B06021 */ addu $t4, $a1, $s0
|
||||
/* B53E0C 800DCC6C 00408825 */ move $s1, $v0
|
||||
/* B53E10 800DCC70 10000014 */ b .L800DCCC4
|
||||
/* B53E14 800DCC74 0184B823 */ subu $s7, $t4, $a0
|
||||
.L800DCC78:
|
||||
/* B53E18 800DCC78 00658023 */ subu $s0, $v1, $a1
|
||||
/* B53E1C 800DCC7C 1E000003 */ bgtz $s0, .L800DCC8C
|
||||
/* B53E20 800DCC80 0000B825 */ move $s7, $zero
|
||||
/* B53E24 800DCC84 00008025 */ move $s0, $zero
|
||||
/* B53E28 800DCC88 0060B025 */ move $s6, $v1
|
||||
.L800DCC8C:
|
||||
/* B53E2C 800DCC8C 8FB9014C */ lw $t9, 0x14c($sp)
|
||||
/* B53E30 800DCC90 2611000F */ addiu $s1, $s0, 0xf
|
||||
/* B53E34 800DCC94 06210002 */ bgez $s1, .L800DCCA0
|
||||
/* B53E38 800DCC98 02200821 */ addu $at, $s1, $zero
|
||||
/* B53E3C 800DCC9C 2621000F */ addiu $at, $s1, 0xf
|
||||
.L800DCCA0:
|
||||
/* B53E40 800DCCA0 00018903 */ sra $s1, $at, 4
|
||||
/* B53E44 800DCCA4 8F2D0008 */ lw $t5, 8($t9)
|
||||
/* B53E48 800DCCA8 240E0001 */ li $t6, 1
|
||||
/* B53E4C 800DCCAC 24180001 */ li $t8, 1
|
||||
/* B53E50 800DCCB0 51A00004 */ beql $t5, $zero, .L800DCCC4
|
||||
/* B53E54 800DCCB4 AFB80140 */ sw $t8, 0x140($sp)
|
||||
/* B53E58 800DCCB8 10000002 */ b .L800DCCC4
|
||||
/* B53E5C 800DCCBC AFAE013C */ sw $t6, 0x13c($sp)
|
||||
/* B53E60 800DCCC0 AFB80140 */ sw $t8, 0x140($sp)
|
||||
.L800DCCC4:
|
||||
/* B53E64 800DCCC4 2CE10006 */ sltiu $at, $a3, 6
|
||||
/* B53E68 800DCCC8 10200035 */ beqz $at, .L800DCDA0
|
||||
/* B53E6C 800DCCCC 00077880 */ sll $t7, $a3, 2
|
||||
/* B53E70 800DCCD0 3C018015 */ lui $at, %hi(jtbl_801493D0)
|
||||
/* B53E74 800DCCD4 002F0821 */ addu $at, $at, $t7
|
||||
/* B53E78 800DCCD8 8C2F93D0 */ lw $t7, %lo(jtbl_801493D0)($at)
|
||||
/* B53E7C 800DCCDC 01E00008 */ jr $t7
|
||||
/* B53E80 800DCCE0 00000000 */ nop
|
||||
glabel L800DCCE4
|
||||
/* B53E84 800DCCE4 240C0010 */ li $t4, 16
|
||||
/* B53E88 800DCCE8 240A0009 */ li $t2, 9
|
||||
/* B53E8C 800DCCEC AFAC00CC */ sw $t4, 0xcc($sp)
|
||||
/* B53E90 800DCCF0 1000002B */ b .L800DCDA0
|
||||
/* B53E94 800DCCF4 AFA000C8 */ sw $zero, 0xc8($sp)
|
||||
glabel L800DCCF8
|
||||
/* B53E98 800DCCF8 24190010 */ li $t9, 16
|
||||
/* B53E9C 800DCCFC 240A0005 */ li $t2, 5
|
||||
/* B53EA0 800DCD00 AFB900CC */ sw $t9, 0xcc($sp)
|
||||
/* B53EA4 800DCD04 10000026 */ b .L800DCDA0
|
||||
/* B53EA8 800DCD08 AFA000C8 */ sw $zero, 0xc8($sp)
|
||||
glabel L800DCD0C
|
||||
/* B53EAC 800DCD0C 240D0010 */ li $t5, 16
|
||||
/* B53EB0 800DCD10 240A0010 */ li $t2, 16
|
||||
/* B53EB4 800DCD14 AFAD00CC */ sw $t5, 0xcc($sp)
|
||||
/* B53EB8 800DCD18 10000021 */ b .L800DCDA0
|
||||
/* B53EBC 800DCD1C AFA000C8 */ sw $zero, 0xc8($sp)
|
||||
glabel L800DCD20
|
||||
/* B53EC0 800DCD20 02402025 */ move $a0, $s2
|
||||
/* B53EC4 800DCD24 001E3040 */ sll $a2, $fp, 1
|
||||
/* B53EC8 800DCD28 24C60020 */ addiu $a2, $a2, 0x20
|
||||
/* B53ECC 800DCD2C 26520008 */ addiu $s2, $s2, 8
|
||||
/* B53ED0 800DCD30 24050580 */ li $a1, 1408
|
||||
/* B53ED4 800DCD34 AFA00138 */ sw $zero, 0x138($sp)
|
||||
/* B53ED8 800DCD38 AFA00120 */ sw $zero, 0x120($sp)
|
||||
/* B53EDC 800DCD3C 03C04825 */ move $t1, $fp
|
||||
/* B53EE0 800DCD40 03C0A825 */ move $s5, $fp
|
||||
/* B53EE4 800DCD44 AFBE0104 */ sw $fp, 0x104($sp)
|
||||
/* B53EE8 800DCD48 0C036EE7 */ jal func_800DBB9C
|
||||
/* B53EEC 800DCD4C AFAA00D4 */ sw $t2, 0xd4($sp)
|
||||
/* B53EF0 800DCD50 8FA90104 */ lw $t1, 0x104($sp)
|
||||
/* B53EF4 800DCD54 8FAA00D4 */ lw $t2, 0xd4($sp)
|
||||
/* B53EF8 800DCD58 100000FE */ b .L800DD154
|
||||
/* B53EFC 800DCD5C 8FAB0168 */ lw $t3, 0x168($sp)
|
||||
glabel L800DCD60
|
||||
/* B53F00 800DCD60 02402025 */ move $a0, $s2
|
||||
/* B53F04 800DCD64 001E3040 */ sll $a2, $fp, 1
|
||||
/* B53F08 800DCD68 24C60020 */ addiu $a2, $a2, 0x20
|
||||
/* B53F0C 800DCD6C 26520008 */ addiu $s2, $s2, 8
|
||||
/* B53F10 800DCD70 24050580 */ li $a1, 1408
|
||||
/* B53F14 800DCD74 AFA00138 */ sw $zero, 0x138($sp)
|
||||
/* B53F18 800DCD78 AFA00120 */ sw $zero, 0x120($sp)
|
||||
/* B53F1C 800DCD7C 03C04825 */ move $t1, $fp
|
||||
/* B53F20 800DCD80 03C0A825 */ move $s5, $fp
|
||||
/* B53F24 800DCD84 AFBE0104 */ sw $fp, 0x104($sp)
|
||||
/* B53F28 800DCD88 0C036EE7 */ jal func_800DBB9C
|
||||
/* B53F2C 800DCD8C AFAA00D4 */ sw $t2, 0xd4($sp)
|
||||
/* B53F30 800DCD90 8FA90104 */ lw $t1, 0x104($sp)
|
||||
/* B53F34 800DCD94 8FAA00D4 */ lw $t2, 0xd4($sp)
|
||||
/* B53F38 800DCD98 100000EE */ b .L800DD154
|
||||
/* B53F3C 800DCD9C 8FAB0168 */ lw $t3, 0x168($sp)
|
||||
glabel L800DCDA0
|
||||
.L800DCDA0:
|
||||
/* B53F40 800DCDA0 12200044 */ beqz $s1, .L800DCEB4
|
||||
/* B53F44 800DCDA4 8FAE00CC */ lw $t6, 0xcc($sp)
|
||||
/* B53F48 800DCDA8 00CEC021 */ addu $t8, $a2, $t6
|
||||
/* B53F4C 800DCDAC 03131823 */ subu $v1, $t8, $s3
|
||||
/* B53F50 800DCDB0 04610002 */ bgez $v1, .L800DCDBC
|
||||
/* B53F54 800DCDB4 00600821 */ addu $at, $v1, $zero
|
||||
/* B53F58 800DCDB8 2461000F */ addiu $at, $v1, 0xf
|
||||
.L800DCDBC:
|
||||
/* B53F5C 800DCDBC 00011903 */ sra $v1, $at, 4
|
||||
/* B53F60 800DCDC0 00081100 */ sll $v0, $t0, 4
|
||||
/* B53F64 800DCDC4 00021782 */ srl $v0, $v0, 0x1e
|
||||
/* B53F68 800DCDC8 14400008 */ bnez $v0, .L800DCDEC
|
||||
/* B53F6C 800DCDCC 24010001 */ li $at, 1
|
||||
/* B53F70 800DCDD0 006A0019 */ multu $v1, $t2
|
||||
/* B53F74 800DCDD4 8FAF00C8 */ lw $t7, 0xc8($sp)
|
||||
/* B53F78 800DCDD8 8FAD0110 */ lw $t5, 0x110($sp)
|
||||
/* B53F7C 800DCDDC 00006012 */ mflo $t4
|
||||
/* B53F80 800DCDE0 01ECC821 */ addu $t9, $t7, $t4
|
||||
/* B53F84 800DCDE4 1000001A */ b .L800DCE50
|
||||
/* B53F88 800DCDE8 032D2821 */ addu $a1, $t9, $t5
|
||||
.L800DCDEC:
|
||||
/* B53F8C 800DCDEC 14410003 */ bne $v0, $at, .L800DCDFC
|
||||
/* B53F90 800DCDF0 00000000 */ nop
|
||||
/* B53F94 800DCDF4 10000201 */ b .L800DD5FC
|
||||
/* B53F98 800DCDF8 02401025 */ move $v0, $s2
|
||||
.L800DCDFC:
|
||||
/* B53F9C 800DCDFC 006A0019 */ multu $v1, $t2
|
||||
/* B53FA0 800DCE00 8FAE00C8 */ lw $t6, 0xc8($sp)
|
||||
/* B53FA4 800DCE04 8FAC0110 */ lw $t4, 0x110($sp)
|
||||
/* B53FA8 800DCE08 2401FFF0 */ li $at, -16
|
||||
/* B53FAC 800DCE0C 8FA60138 */ lw $a2, 0x138($sp)
|
||||
/* B53FB0 800DCE10 25670001 */ addiu $a3, $t3, 1
|
||||
/* B53FB4 800DCE14 AFA20010 */ sw $v0, 0x10($sp)
|
||||
/* B53FB8 800DCE18 AFA90104 */ sw $t1, 0x104($sp)
|
||||
/* B53FBC 800DCE1C AFAA00D4 */ sw $t2, 0xd4($sp)
|
||||
/* B53FC0 800DCE20 0000C012 */ mflo $t8
|
||||
/* B53FC4 800DCE24 01D87821 */ addu $t7, $t6, $t8
|
||||
/* B53FC8 800DCE28 01EC2021 */ addu $a0, $t7, $t4
|
||||
/* B53FCC 800DCE2C 022A0019 */ multu $s1, $t2
|
||||
/* B53FD0 800DCE30 00002812 */ mflo $a1
|
||||
/* B53FD4 800DCE34 24A5001F */ addiu $a1, $a1, 0x1f
|
||||
/* B53FD8 800DCE38 0C0384B7 */ jal func_800E12DC
|
||||
/* B53FDC 800DCE3C 00A12824 */ and $a1, $a1, $at
|
||||
/* B53FE0 800DCE40 8FA90104 */ lw $t1, 0x104($sp)
|
||||
/* B53FE4 800DCE44 8FAA00D4 */ lw $t2, 0xd4($sp)
|
||||
/* B53FE8 800DCE48 8FAB0168 */ lw $t3, 0x168($sp)
|
||||
/* B53FEC 800DCE4C 00402825 */ move $a1, $v0
|
||||
.L800DCE50:
|
||||
/* B53FF0 800DCE50 14A00003 */ bnez $a1, .L800DCE60
|
||||
/* B53FF4 800DCE54 00000000 */ nop
|
||||
/* B53FF8 800DCE58 100001E8 */ b .L800DD5FC
|
||||
/* B53FFC 800DCE5C 02401025 */ move $v0, $s2
|
||||
.L800DCE60:
|
||||
/* B54000 800DCE60 022A0019 */ multu $s1, $t2
|
||||
/* B54004 800DCE64 3C011400 */ lui $at, 0x1400
|
||||
/* B54008 800DCE68 240F0940 */ li $t7, 2368
|
||||
/* B5400C 800DCE6C 30A8000F */ andi $t0, $a1, 0xf
|
||||
/* B54010 800DCE70 02402025 */ move $a0, $s2
|
||||
/* B54014 800DCE74 00A86023 */ subu $t4, $a1, $t0
|
||||
/* B54018 800DCE78 AC8C0004 */ sw $t4, 4($a0)
|
||||
/* B5401C 800DCE7C 26520008 */ addiu $s2, $s2, 8
|
||||
/* B54020 800DCE80 00001012 */ mflo $v0
|
||||
/* B54024 800DCE84 2442001F */ addiu $v0, $v0, 0x1f
|
||||
/* B54028 800DCE88 3042FFF0 */ andi $v0, $v0, 0xfff0
|
||||
/* B5402C 800DCE8C 0002C903 */ sra $t9, $v0, 4
|
||||
/* B54030 800DCE90 332D00FF */ andi $t5, $t9, 0xff
|
||||
/* B54034 800DCE94 000D7400 */ sll $t6, $t5, 0x10
|
||||
/* B54038 800DCE98 01C1C025 */ or $t8, $t6, $at
|
||||
/* B5403C 800DCE9C 01E26823 */ subu $t5, $t7, $v0
|
||||
/* B54040 800DCEA0 31AEFFFF */ andi $t6, $t5, 0xffff
|
||||
/* B54044 800DCEA4 030E7825 */ or $t7, $t8, $t6
|
||||
/* B54048 800DCEA8 AC8F0000 */ sw $t7, ($a0)
|
||||
/* B5404C 800DCEAC 10000004 */ b .L800DCEC0
|
||||
/* B54050 800DCEB0 91660000 */ lbu $a2, ($t3)
|
||||
.L800DCEB4:
|
||||
/* B54054 800DCEB4 00008025 */ move $s0, $zero
|
||||
/* B54058 800DCEB8 00004025 */ move $t0, $zero
|
||||
/* B5405C 800DCEBC 91660000 */ lbu $a2, ($t3)
|
||||
.L800DCEC0:
|
||||
/* B54060 800DCEC0 10C0000B */ beqz $a2, .L800DCEF0
|
||||
/* B54064 800DCEC4 02401025 */ move $v0, $s2
|
||||
/* B54068 800DCEC8 3C190F00 */ lui $t9, 0xf00
|
||||
/* B5406C 800DCECC AC590000 */ sw $t9, ($v0)
|
||||
/* B54070 800DCED0 8FAD0150 */ lw $t5, 0x150($sp)
|
||||
/* B54074 800DCED4 240F0002 */ li $t7, 2
|
||||
/* B54078 800DCED8 26520008 */ addiu $s2, $s2, 8
|
||||
/* B5407C 800DCEDC 8DB80008 */ lw $t8, 8($t5)
|
||||
/* B54080 800DCEE0 270E0010 */ addiu $t6, $t8, 0x10
|
||||
/* B54084 800DCEE4 AC4E0004 */ sw $t6, 4($v0)
|
||||
/* B54088 800DCEE8 AFAF0138 */ sw $t7, 0x138($sp)
|
||||
/* B5408C 800DCEEC A1600000 */ sb $zero, ($t3)
|
||||
.L800DCEF0:
|
||||
/* B54090 800DCEF0 8FAC0150 */ lw $t4, 0x150($sp)
|
||||
/* B54094 800DCEF4 0013C840 */ sll $t9, $s3, 1
|
||||
/* B54098 800DCEF8 2401FFF0 */ li $at, -16
|
||||
/* B5409C 800DCEFC 8D870000 */ lw $a3, ($t4)
|
||||
/* B540A0 800DCF00 15200003 */ bnez $t1, .L800DCF10
|
||||
/* B540A4 800DCF04 00073F02 */ srl $a3, $a3, 0x1c
|
||||
/* B540A8 800DCF08 10000003 */ b .L800DCF18
|
||||
/* B540AC 800DCF0C AFB90120 */ sw $t9, 0x120($sp)
|
||||
.L800DCF10:
|
||||
/* B540B0 800DCF10 26B4001F */ addiu $s4, $s5, 0x1f
|
||||
/* B540B4 800DCF14 0281A024 */ and $s4, $s4, $at
|
||||
.L800DCF18:
|
||||
/* B540B8 800DCF18 10E00007 */ beqz $a3, .L800DCF38
|
||||
/* B540BC 800DCF1C 24010001 */ li $at, 1
|
||||
/* B540C0 800DCF20 10E10042 */ beq $a3, $at, .L800DD02C
|
||||
/* B540C4 800DCF24 24010003 */ li $at, 3
|
||||
/* B540C8 800DCF28 10E10021 */ beq $a3, $at, .L800DCFB0
|
||||
/* B540CC 800DCF2C 00000000 */ nop
|
||||
/* B540D0 800DCF30 10000059 */ b .L800DD098
|
||||
/* B540D4 800DCF34 00000000 */ nop
|
||||
.L800DCF38:
|
||||
/* B540D8 800DCF38 022A0019 */ multu $s1, $t2
|
||||
/* B540DC 800DCF3C 240F0940 */ li $t7, 2368
|
||||
/* B540E0 800DCF40 3C010800 */ lui $at, 0x800
|
||||
/* B540E4 800DCF44 02401025 */ move $v0, $s2
|
||||
/* B540E8 800DCF48 26990580 */ addiu $t9, $s4, 0x580
|
||||
/* B540EC 800DCF4C 26520008 */ addiu $s2, $s2, 8
|
||||
/* B540F0 800DCF50 02401825 */ move $v1, $s2
|
||||
/* B540F4 800DCF54 26520008 */ addiu $s2, $s2, 8
|
||||
/* B540F8 800DCF58 00006812 */ mflo $t5
|
||||
/* B540FC 800DCF5C 25B8001F */ addiu $t8, $t5, 0x1f
|
||||
/* B54100 800DCF60 330EFFF0 */ andi $t6, $t8, 0xfff0
|
||||
/* B54104 800DCF64 01EE6823 */ subu $t5, $t7, $t6
|
||||
/* B54108 800DCF68 01A8C021 */ addu $t8, $t5, $t0
|
||||
/* B5410C 800DCF6C 330FFFFF */ andi $t7, $t8, 0xffff
|
||||
/* B54110 800DCF70 01E17025 */ or $t6, $t7, $at
|
||||
/* B54114 800DCF74 0010C040 */ sll $t8, $s0, 1
|
||||
/* B54118 800DCF78 330FFFFF */ andi $t7, $t8, 0xffff
|
||||
/* B5411C 800DCF7C AC4E0000 */ sw $t6, ($v0)
|
||||
/* B54120 800DCF80 00196C00 */ sll $t5, $t9, 0x10
|
||||
/* B54124 800DCF84 01AF7025 */ or $t6, $t5, $t7
|
||||
/* B54128 800DCF88 AC4E0004 */ sw $t6, 4($v0)
|
||||
/* B5412C 800DCF8C 8FAC0138 */ lw $t4, 0x138($sp)
|
||||
/* B54130 800DCF90 3C010100 */ lui $at, 0x100
|
||||
/* B54134 800DCF94 319900FF */ andi $t9, $t4, 0xff
|
||||
/* B54138 800DCF98 0019C400 */ sll $t8, $t9, 0x10
|
||||
/* B5413C 800DCF9C 03016825 */ or $t5, $t8, $at
|
||||
/* B54140 800DCFA0 AC6D0000 */ sw $t5, ($v1)
|
||||
/* B54144 800DCFA4 8D6F000C */ lw $t7, 0xc($t3)
|
||||
/* B54148 800DCFA8 1000003B */ b .L800DD098
|
||||
/* B5414C 800DCFAC AC6F0004 */ sw $t7, 4($v1)
|
||||
.L800DCFB0:
|
||||
/* B54150 800DCFB0 022A0019 */ multu $s1, $t2
|
||||
/* B54154 800DCFB4 24180940 */ li $t8, 2368
|
||||
/* B54158 800DCFB8 3C010800 */ lui $at, 0x800
|
||||
/* B5415C 800DCFBC 02401025 */ move $v0, $s2
|
||||
/* B54160 800DCFC0 268F0580 */ addiu $t7, $s4, 0x580
|
||||
/* B54164 800DCFC4 26520008 */ addiu $s2, $s2, 8
|
||||
/* B54168 800DCFC8 02401825 */ move $v1, $s2
|
||||
/* B5416C 800DCFCC 26520008 */ addiu $s2, $s2, 8
|
||||
/* B54170 800DCFD0 00007012 */ mflo $t6
|
||||
/* B54174 800DCFD4 25CC001F */ addiu $t4, $t6, 0x1f
|
||||
/* B54178 800DCFD8 3199FFF0 */ andi $t9, $t4, 0xfff0
|
||||
/* B5417C 800DCFDC 03197023 */ subu $t6, $t8, $t9
|
||||
/* B54180 800DCFE0 01C86021 */ addu $t4, $t6, $t0
|
||||
/* B54184 800DCFE4 3198FFFF */ andi $t8, $t4, 0xffff
|
||||
/* B54188 800DCFE8 0301C825 */ or $t9, $t8, $at
|
||||
/* B5418C 800DCFEC 00106040 */ sll $t4, $s0, 1
|
||||
/* B54190 800DCFF0 3198FFFF */ andi $t8, $t4, 0xffff
|
||||
/* B54194 800DCFF4 AC590000 */ sw $t9, ($v0)
|
||||
/* B54198 800DCFF8 000F7400 */ sll $t6, $t7, 0x10
|
||||
/* B5419C 800DCFFC 01D8C825 */ or $t9, $t6, $t8
|
||||
/* B541A0 800DD000 AC590004 */ sw $t9, 4($v0)
|
||||
/* B541A4 800DD004 8FAD0138 */ lw $t5, 0x138($sp)
|
||||
/* B541A8 800DD008 3C010100 */ lui $at, 0x100
|
||||
/* B541AC 800DD00C 35AF0004 */ ori $t7, $t5, 4
|
||||
/* B541B0 800DD010 31EC00FF */ andi $t4, $t7, 0xff
|
||||
/* B541B4 800DD014 000C7400 */ sll $t6, $t4, 0x10
|
||||
/* B541B8 800DD018 01C1C025 */ or $t8, $t6, $at
|
||||
/* B541BC 800DD01C AC780000 */ sw $t8, ($v1)
|
||||
/* B541C0 800DD020 8D79000C */ lw $t9, 0xc($t3)
|
||||
/* B541C4 800DD024 1000001C */ b .L800DD098
|
||||
/* B541C8 800DD028 AC790004 */ sw $t9, 4($v1)
|
||||
.L800DD02C:
|
||||
/* B541CC 800DD02C 022A0019 */ multu $s1, $t2
|
||||
/* B541D0 800DD030 240E0940 */ li $t6, 2368
|
||||
/* B541D4 800DD034 02402025 */ move $a0, $s2
|
||||
/* B541D8 800DD038 26520008 */ addiu $s2, $s2, 8
|
||||
/* B541DC 800DD03C 00002825 */ move $a1, $zero
|
||||
/* B541E0 800DD040 26870580 */ addiu $a3, $s4, 0x580
|
||||
/* B541E4 800DD044 AFA90104 */ sw $t1, 0x104($sp)
|
||||
/* B541E8 800DD048 AFAA00D4 */ sw $t2, 0xd4($sp)
|
||||
/* B541EC 800DD04C 00006812 */ mflo $t5
|
||||
/* B541F0 800DD050 25AF001F */ addiu $t7, $t5, 0x1f
|
||||
/* B541F4 800DD054 31ECFFF0 */ andi $t4, $t7, 0xfff0
|
||||
/* B541F8 800DD058 01CCC023 */ subu $t8, $t6, $t4
|
||||
/* B541FC 800DD05C 0018CC00 */ sll $t9, $t8, 0x10
|
||||
/* B54200 800DD060 00196C03 */ sra $t5, $t9, 0x10
|
||||
/* B54204 800DD064 00107840 */ sll $t7, $s0, 1
|
||||
/* B54208 800DD068 AFAF0010 */ sw $t7, 0x10($sp)
|
||||
/* B5420C 800DD06C 0C036F08 */ jal AudioSynth_SetBuffer
|
||||
/* B54210 800DD070 01A83021 */ addu $a2, $t5, $t0
|
||||
/* B54214 800DD074 8FAB0168 */ lw $t3, 0x168($sp)
|
||||
/* B54218 800DD078 02402025 */ move $a0, $s2
|
||||
/* B5421C 800DD07C 26520008 */ addiu $s2, $s2, 8
|
||||
/* B54220 800DD080 8FA50138 */ lw $a1, 0x138($sp)
|
||||
/* B54224 800DD084 0C036F65 */ jal AudioSynth_UnkCmd17
|
||||
/* B54228 800DD088 8D66000C */ lw $a2, 0xc($t3)
|
||||
/* B5422C 800DD08C 8FA90104 */ lw $t1, 0x104($sp)
|
||||
/* B54230 800DD090 8FAA00D4 */ lw $t2, 0xd4($sp)
|
||||
/* B54234 800DD094 8FAB0168 */ lw $t3, 0x168($sp)
|
||||
.L800DD098:
|
||||
/* B54238 800DD098 11200013 */ beqz $t1, .L800DD0E8
|
||||
/* B5423C 800DD09C 02401025 */ move $v0, $s2
|
||||
/* B54240 800DD0A0 00137040 */ sll $t6, $s3, 1
|
||||
/* B54244 800DD0A4 028E6021 */ addu $t4, $s4, $t6
|
||||
/* B54248 800DD0A8 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
|
||||
/* B5424C 800DD0AC 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
|
||||
/* B54250 800DD0B0 25980580 */ addiu $t8, $t4, 0x580
|
||||
/* B54254 800DD0B4 0301C824 */ and $t9, $t8, $at
|
||||
/* B54258 800DD0B8 3C010A00 */ lui $at, 0xa00
|
||||
/* B5425C 800DD0BC 03216825 */ or $t5, $t9, $at
|
||||
/* B54260 800DD0C0 0216C021 */ addu $t8, $s0, $s6
|
||||
/* B54264 800DD0C4 0317C823 */ subu $t9, $t8, $s7
|
||||
/* B54268 800DD0C8 AC4D0000 */ sw $t5, ($v0)
|
||||
/* B5426C 800DD0CC 00196840 */ sll $t5, $t9, 1
|
||||
/* B54270 800DD0D0 26AE0580 */ addiu $t6, $s5, 0x580
|
||||
/* B54274 800DD0D4 000E6400 */ sll $t4, $t6, 0x10
|
||||
/* B54278 800DD0D8 31AFFFFF */ andi $t7, $t5, 0xffff
|
||||
/* B5427C 800DD0DC 018F7025 */ or $t6, $t4, $t7
|
||||
/* B54280 800DD0E0 AC4E0004 */ sw $t6, 4($v0)
|
||||
/* B54284 800DD0E4 26520008 */ addiu $s2, $s2, 8
|
||||
.L800DD0E8:
|
||||
/* B54288 800DD0E8 8FB90138 */ lw $t9, 0x138($sp)
|
||||
/* B5428C 800DD0EC 0216C021 */ addu $t8, $s0, $s6
|
||||
/* B54290 800DD0F0 03171823 */ subu $v1, $t8, $s7
|
||||
/* B54294 800DD0F4 24010001 */ li $at, 1
|
||||
/* B54298 800DD0F8 13210007 */ beq $t9, $at, .L800DD118
|
||||
/* B5429C 800DD0FC 01234821 */ addu $t1, $t1, $v1
|
||||
/* B542A0 800DD100 3B220002 */ xori $v0, $t9, 2
|
||||
/* B542A4 800DD104 2C420001 */ sltiu $v0, $v0, 1
|
||||
/* B542A8 800DD108 14400009 */ bnez $v0, .L800DD130
|
||||
/* B542AC 800DD10C AFA00138 */ sw $zero, 0x138($sp)
|
||||
/* B542B0 800DD110 1000000A */ b .L800DD13C
|
||||
/* B542B4 800DD114 00037840 */ sll $t7, $v1, 1
|
||||
.L800DD118:
|
||||
/* B542B8 800DD118 240D0020 */ li $t5, 32
|
||||
/* B542BC 800DD11C 0010A840 */ sll $s5, $s0, 1
|
||||
/* B542C0 800DD120 AFAD0120 */ sw $t5, 0x120($sp)
|
||||
/* B542C4 800DD124 26B50020 */ addiu $s5, $s5, 0x20
|
||||
/* B542C8 800DD128 1000000A */ b .L800DD154
|
||||
/* B542CC 800DD12C AFA00138 */ sw $zero, 0x138($sp)
|
||||
.L800DD130:
|
||||
/* B542D0 800DD130 00036040 */ sll $t4, $v1, 1
|
||||
/* B542D4 800DD134 10000007 */ b .L800DD154
|
||||
/* B542D8 800DD138 0195A821 */ addu $s5, $t4, $s5
|
||||
.L800DD13C:
|
||||
/* B542DC 800DD13C 52A00004 */ beql $s5, $zero, .L800DD150
|
||||
/* B542E0 800DD140 0263A821 */ addu $s5, $s3, $v1
|
||||
/* B542E4 800DD144 10000003 */ b .L800DD154
|
||||
/* B542E8 800DD148 01F5A821 */ addu $s5, $t7, $s5
|
||||
/* B542EC 800DD14C 0263A821 */ addu $s5, $s3, $v1
|
||||
.L800DD150:
|
||||
/* B542F0 800DD150 0015A840 */ sll $s5, $s5, 1
|
||||
.L800DD154:
|
||||
/* B542F4 800DD154 8FAE0140 */ lw $t6, 0x140($sp)
|
||||
/* B542F8 800DD158 8FAF013C */ lw $t7, 0x13c($sp)
|
||||
/* B542FC 800DD15C 8FAC00FC */ lw $t4, 0xfc($sp)
|
||||
/* B54300 800DD160 11C00014 */ beqz $t6, .L800DD1B4
|
||||
/* B54304 800DD164 02402025 */ move $a0, $s2
|
||||
/* B54308 800DD168 03C93023 */ subu $a2, $fp, $t1
|
||||
/* B5430C 800DD16C 24180001 */ li $t8, 1
|
||||
/* B54310 800DD170 AFB80088 */ sw $t8, 0x88($sp)
|
||||
/* B54314 800DD174 00063040 */ sll $a2, $a2, 1
|
||||
/* B54318 800DD178 26520008 */ addiu $s2, $s2, 8
|
||||
/* B5431C 800DD17C 26A50580 */ addiu $a1, $s5, 0x580
|
||||
/* B54320 800DD180 0C036EE7 */ jal func_800DBB9C
|
||||
/* B54324 800DD184 AFAA00D4 */ sw $t2, 0xd4($sp)
|
||||
/* B54328 800DD188 8FA2009C */ lw $v0, 0x9c($sp)
|
||||
/* B5432C 800DD18C 904D00C0 */ lbu $t5, 0xc0($v0)
|
||||
/* B54330 800DD190 35AC0020 */ ori $t4, $t5, 0x20
|
||||
/* B54334 800DD194 A04C00C0 */ sb $t4, 0xc0($v0)
|
||||
/* B54338 800DD198 8FA50160 */ lw $a1, 0x160($sp)
|
||||
/* B5433C 800DD19C 0C036CB0 */ jal func_800DB2C0
|
||||
/* B54340 800DD1A0 8FA40178 */ lw $a0, 0x178($sp)
|
||||
/* B54344 800DD1A4 8FAA00D4 */ lw $t2, 0xd4($sp)
|
||||
/* B54348 800DD1A8 8FAB0168 */ lw $t3, 0x168($sp)
|
||||
/* B5434C 800DD1AC 1000000E */ b .L800DD1E8
|
||||
/* B54350 800DD1B0 8FA300C0 */ lw $v1, 0xc0($sp)
|
||||
.L800DD1B4:
|
||||
/* B54354 800DD1B4 11E00006 */ beqz $t7, .L800DD1D0
|
||||
/* B54358 800DD1B8 240E0001 */ li $t6, 1
|
||||
/* B5435C 800DD1BC A16E0000 */ sb $t6, ($t3)
|
||||
/* B54360 800DD1C0 8FB8014C */ lw $t8, 0x14c($sp)
|
||||
/* B54364 800DD1C4 8F190000 */ lw $t9, ($t8)
|
||||
/* B54368 800DD1C8 10000004 */ b .L800DD1DC
|
||||
/* B5436C 800DD1CC AD790008 */ sw $t9, 8($t3)
|
||||
.L800DD1D0:
|
||||
/* B54370 800DD1D0 8D6D0008 */ lw $t5, 8($t3)
|
||||
/* B54374 800DD1D4 01AC7821 */ addu $t7, $t5, $t4
|
||||
/* B54378 800DD1D8 AD6F0008 */ sw $t7, 8($t3)
|
||||
.L800DD1DC:
|
||||
/* B5437C 800DD1DC 553EFE86 */ bnel $t1, $fp, .L800DCBF8
|
||||
/* B54380 800DD1E0 AFA00140 */ sw $zero, 0x140($sp)
|
||||
/* B54384 800DD1E4 8FA300C0 */ lw $v1, 0xc0($sp)
|
||||
.L800DD1E8:
|
||||
/* B54388 800DD1E8 24010001 */ li $at, 1
|
||||
.L800DD1EC:
|
||||
/* B5438C 800DD1EC 10610006 */ beq $v1, $at, .L800DD208
|
||||
/* B54390 800DD1F0 8FAE0120 */ lw $t6, 0x120($sp)
|
||||
/* B54394 800DD1F4 24010002 */ li $at, 2
|
||||
/* B54398 800DD1F8 10610006 */ beq $v1, $at, .L800DD214
|
||||
/* B5439C 800DD1FC 8FB900BC */ lw $t9, 0xbc($sp)
|
||||
/* B543A0 800DD200 1000003B */ b .L800DD2F0
|
||||
/* B543A4 800DD204 8FAF0088 */ lw $t7, 0x88($sp)
|
||||
.L800DD208:
|
||||
/* B543A8 800DD208 25D80580 */ addiu $t8, $t6, 0x580
|
||||
/* B543AC 800DD20C 10000037 */ b .L800DD2EC
|
||||
/* B543B0 800DD210 A7B800AE */ sh $t8, 0xae($sp)
|
||||
.L800DD214:
|
||||
/* B543B4 800DD214 13200006 */ beqz $t9, .L800DD230
|
||||
/* B543B8 800DD218 02402025 */ move $a0, $s2
|
||||
/* B543BC 800DD21C 24010001 */ li $at, 1
|
||||
/* B543C0 800DD220 13210021 */ beq $t9, $at, .L800DD2A8
|
||||
/* B543C4 800DD224 02402025 */ move $a0, $s2
|
||||
/* B543C8 800DD228 10000031 */ b .L800DD2F0
|
||||
/* B543CC 800DD22C 8FAF0088 */ lw $t7, 0x88($sp)
|
||||
.L800DD230:
|
||||
/* B543D0 800DD230 8FA50120 */ lw $a1, 0x120($sp)
|
||||
/* B543D4 800DD234 240D03E0 */ li $t5, 992
|
||||
/* B543D8 800DD238 A7AD00AE */ sh $t5, 0xae($sp)
|
||||
/* B543DC 800DD23C 240603E0 */ li $a2, 992
|
||||
/* B543E0 800DD240 26520008 */ addiu $s2, $s2, 8
|
||||
/* B543E4 800DD244 AFAA00D4 */ sw $t2, 0xd4($sp)
|
||||
/* B543E8 800DD248 24A50580 */ addiu $a1, $a1, 0x580
|
||||
/* B543EC 800DD24C 07C10003 */ bgez $fp, .L800DD25C
|
||||
/* B543F0 800DD250 001E3843 */ sra $a3, $fp, 1
|
||||
/* B543F4 800DD254 27C10001 */ addiu $at, $fp, 1
|
||||
/* B543F8 800DD258 00013843 */ sra $a3, $at, 1
|
||||
.L800DD25C:
|
||||
/* B543FC 800DD25C 2401FFF8 */ li $at, -8
|
||||
/* B54400 800DD260 24E70007 */ addiu $a3, $a3, 7
|
||||
/* B54404 800DD264 0C036F2C */ jal AudioSynth_InterL
|
||||
/* B54408 800DD268 00E13824 */ and $a3, $a3, $at
|
||||
/* B5440C 800DD26C 8FAC0088 */ lw $t4, 0x88($sp)
|
||||
/* B54410 800DD270 8FAA00D4 */ lw $t2, 0xd4($sp)
|
||||
/* B54414 800DD274 8FAB0168 */ lw $t3, 0x168($sp)
|
||||
/* B54418 800DD278 11800009 */ beqz $t4, .L800DD2A0
|
||||
/* B5441C 800DD27C AFBE00B0 */ sw $fp, 0xb0($sp)
|
||||
/* B54420 800DD280 02402025 */ move $a0, $s2
|
||||
/* B54424 800DD284 26520008 */ addiu $s2, $s2, 8
|
||||
/* B54428 800DD288 27C503E0 */ addiu $a1, $fp, 0x3e0
|
||||
/* B5442C 800DD28C 27C60010 */ addiu $a2, $fp, 0x10
|
||||
/* B54430 800DD290 0C036EE7 */ jal func_800DBB9C
|
||||
/* B54434 800DD294 AFAA00D4 */ sw $t2, 0xd4($sp)
|
||||
/* B54438 800DD298 8FAA00D4 */ lw $t2, 0xd4($sp)
|
||||
/* B5443C 800DD29C 8FAB0168 */ lw $t3, 0x168($sp)
|
||||
.L800DD2A0:
|
||||
/* B54440 800DD2A0 10000012 */ b .L800DD2EC
|
||||
/* B54444 800DD2A4 8FA300C0 */ lw $v1, 0xc0($sp)
|
||||
.L800DD2A8:
|
||||
/* B54448 800DD2A8 8FA50120 */ lw $a1, 0x120($sp)
|
||||
/* B5444C 800DD2AC 8FA600B0 */ lw $a2, 0xb0($sp)
|
||||
/* B54450 800DD2B0 26520008 */ addiu $s2, $s2, 8
|
||||
/* B54454 800DD2B4 AFAA00D4 */ sw $t2, 0xd4($sp)
|
||||
/* B54458 800DD2B8 24A50580 */ addiu $a1, $a1, 0x580
|
||||
/* B5445C 800DD2BC 24C603E0 */ addiu $a2, $a2, 0x3e0
|
||||
/* B54460 800DD2C0 07C10003 */ bgez $fp, .L800DD2D0
|
||||
/* B54464 800DD2C4 001E3843 */ sra $a3, $fp, 1
|
||||
/* B54468 800DD2C8 27C10001 */ addiu $at, $fp, 1
|
||||
/* B5446C 800DD2CC 00013843 */ sra $a3, $at, 1
|
||||
.L800DD2D0:
|
||||
/* B54470 800DD2D0 2401FFF8 */ li $at, -8
|
||||
/* B54474 800DD2D4 24E70007 */ addiu $a3, $a3, 7
|
||||
/* B54478 800DD2D8 0C036F2C */ jal AudioSynth_InterL
|
||||
/* B5447C 800DD2DC 00E13824 */ and $a3, $a3, $at
|
||||
/* B54480 800DD2E0 8FAA00D4 */ lw $t2, 0xd4($sp)
|
||||
/* B54484 800DD2E4 8FAB0168 */ lw $t3, 0x168($sp)
|
||||
/* B54488 800DD2E8 8FA300C0 */ lw $v1, 0xc0($sp)
|
||||
.L800DD2EC:
|
||||
/* B5448C 800DD2EC 8FAF0088 */ lw $t7, 0x88($sp)
|
||||
.L800DD2F0:
|
||||
/* B54490 800DD2F0 8FB800BC */ lw $t8, 0xbc($sp)
|
||||
/* B54494 800DD2F4 11E00007 */ beqz $t7, .L800DD314
|
||||
/* B54498 800DD2F8 27190001 */ addiu $t9, $t8, 1
|
||||
/* B5449C 800DD2FC 8FB10164 */ lw $s1, 0x164($sp)
|
||||
/* B544A0 800DD300 8FB00168 */ lw $s0, 0x168($sp)
|
||||
/* B544A4 800DD304 240A0001 */ li $t2, 1
|
||||
/* B544A8 800DD308 8E230000 */ lw $v1, ($s1)
|
||||
/* B544AC 800DD30C 10000009 */ b .L800DD334
|
||||
/* B544B0 800DD310 AFB20174 */ sw $s2, 0x174($sp)
|
||||
.L800DD314:
|
||||
/* B544B4 800DD314 1723FDF3 */ bne $t9, $v1, .L800DCAE4
|
||||
/* B544B8 800DD318 AFB900BC */ sw $t9, 0xbc($sp)
|
||||
/* B544BC 800DD31C 8FB10164 */ lw $s1, 0x164($sp)
|
||||
/* B544C0 800DD320 AFAA00D4 */ sw $t2, 0xd4($sp)
|
||||
/* B544C4 800DD324 240A0001 */ li $t2, 1
|
||||
/* B544C8 800DD328 8E230000 */ lw $v1, ($s1)
|
||||
/* B544CC 800DD32C AFB20174 */ sw $s2, 0x174($sp)
|
||||
/* B544D0 800DD330 8FB00168 */ lw $s0, 0x168($sp)
|
||||
.L800DD334:
|
||||
/* B544D4 800DD334 00036040 */ sll $t4, $v1, 1
|
||||
/* B544D8 800DD338 000C7FC2 */ srl $t7, $t4, 0x1f
|
||||
/* B544DC 800DD33C 8FB20174 */ lw $s2, 0x174($sp)
|
||||
/* B544E0 800DD340 154F0005 */ bne $t2, $t7, .L800DD358
|
||||
/* B544E4 800DD344 00004825 */ move $t1, $zero
|
||||
/* B544E8 800DD348 922E0000 */ lbu $t6, ($s1)
|
||||
/* B544EC 800DD34C 24090001 */ li $t1, 1
|
||||
/* B544F0 800DD350 31D8FFBF */ andi $t8, $t6, 0xffbf
|
||||
/* B544F4 800DD354 A2380000 */ sb $t8, ($s1)
|
||||
.L800DD358:
|
||||
/* B544F8 800DD358 8FB40170 */ lw $s4, 0x170($sp)
|
||||
/* B544FC 800DD35C 97B900AE */ lhu $t9, 0xae($sp)
|
||||
/* B54500 800DD360 02402025 */ move $a0, $s2
|
||||
/* B54504 800DD364 0014A040 */ sll $s4, $s4, 1
|
||||
/* B54508 800DD368 02803025 */ move $a2, $s4
|
||||
/* B5450C 800DD36C 02002825 */ move $a1, $s0
|
||||
/* B54510 800DD370 97A70136 */ lhu $a3, 0x136($sp)
|
||||
/* B54514 800DD374 AFA90014 */ sw $t1, 0x14($sp)
|
||||
/* B54518 800DD378 AFA90138 */ sw $t1, 0x138($sp)
|
||||
/* B5451C 800DD37C AFB00168 */ sw $s0, 0x168($sp)
|
||||
/* B54520 800DD380 AFB10164 */ sw $s1, 0x164($sp)
|
||||
/* B54524 800DD384 0C03758B */ jal func_800DD62C
|
||||
/* B54528 800DD388 AFB90010 */ sw $t9, 0x10($sp)
|
||||
/* B5452C 800DD38C 8FAD008C */ lw $t5, 0x8c($sp)
|
||||
/* B54530 800DD390 24010003 */ li $at, 3
|
||||
/* B54534 800DD394 00409025 */ move $s2, $v0
|
||||
/* B54538 800DD398 15A10007 */ bne $t5, $at, .L800DD3B8
|
||||
/* B5453C 800DD39C 00402025 */ move $a0, $v0
|
||||
/* B54540 800DD3A0 240503C0 */ li $a1, 960
|
||||
/* B54544 800DD3A4 240603C0 */ li $a2, 960
|
||||
/* B54548 800DD3A8 02803825 */ move $a3, $s4
|
||||
/* B5454C 800DD3AC AFA00010 */ sw $zero, 0x10($sp)
|
||||
/* B54550 800DD3B0 0C036F79 */ jal AudioSynth_UnkCmd19
|
||||
/* B54554 800DD3B4 24520008 */ addiu $s2, $v0, 8
|
||||
.L800DD3B8:
|
||||
/* B54558 800DD3B8 8FAC008C */ lw $t4, 0x8c($sp)
|
||||
/* B5455C 800DD3BC 24010002 */ li $at, 2
|
||||
/* B54560 800DD3C0 02402025 */ move $a0, $s2
|
||||
/* B54564 800DD3C4 15810005 */ bne $t4, $at, .L800DD3DC
|
||||
/* B54568 800DD3C8 240503C0 */ li $a1, 960
|
||||
/* B5456C 800DD3CC 240603C0 */ li $a2, 960
|
||||
/* B54570 800DD3D0 02803825 */ move $a3, $s4
|
||||
/* B54574 800DD3D4 0C036F8E */ jal AudioSynth_UnkCmd3
|
||||
/* B54578 800DD3D8 26520008 */ addiu $s2, $s2, 8
|
||||
.L800DD3DC:
|
||||
/* B5457C 800DD3DC 8FB60164 */ lw $s6, 0x164($sp)
|
||||
/* B54580 800DD3E0 02402025 */ move $a0, $s2
|
||||
/* B54584 800DD3E4 240603C0 */ li $a2, 960
|
||||
/* B54588 800DD3E8 92C50002 */ lbu $a1, 2($s6)
|
||||
/* B5458C 800DD3EC 00003825 */ move $a3, $zero
|
||||
/* B54590 800DD3F0 268F0020 */ addiu $t7, $s4, 0x20
|
||||
/* B54594 800DD3F4 10A00007 */ beqz $a1, .L800DD414
|
||||
/* B54598 800DD3F8 28A10010 */ slti $at, $a1, 0x10
|
||||
/* B5459C 800DD3FC 10200002 */ beqz $at, .L800DD408
|
||||
/* B545A0 800DD400 26520008 */ addiu $s2, $s2, 8
|
||||
/* B545A4 800DD404 24050010 */ li $a1, 16
|
||||
.L800DD408:
|
||||
/* B545A8 800DD408 0C036F6C */ jal AudioSynth_HiLoGain
|
||||
/* B545AC 800DD40C AFAF0010 */ sw $t7, 0x10($sp)
|
||||
/* B545B0 800DD410 8FB60164 */ lw $s6, 0x164($sp)
|
||||
.L800DD414:
|
||||
/* B545B4 800DD414 8EC60014 */ lw $a2, 0x14($s6)
|
||||
/* B545B8 800DD418 02402025 */ move $a0, $s2
|
||||
/* B545BC 800DD41C 02802825 */ move $a1, $s4
|
||||
/* B545C0 800DD420 50C0000D */ beql $a2, $zero, .L800DD458
|
||||
/* B545C4 800DD424 8FB10168 */ lw $s1, 0x168($sp)
|
||||
/* B545C8 800DD428 0C036FA6 */ jal AudioSynth_SetFilterCount
|
||||
/* B545CC 800DD42C 26520008 */ addiu $s2, $s2, 8
|
||||
/* B545D0 800DD430 8FAE0168 */ lw $t6, 0x168($sp)
|
||||
/* B545D4 800DD434 02402025 */ move $a0, $s2
|
||||
/* B545D8 800DD438 26520008 */ addiu $s2, $s2, 8
|
||||
/* B545DC 800DD43C 8DC7000C */ lw $a3, 0xc($t6)
|
||||
/* B545E0 800DD440 8FA50138 */ lw $a1, 0x138($sp)
|
||||
/* B545E4 800DD444 240603C0 */ li $a2, 960
|
||||
/* B545E8 800DD448 0C036F9D */ jal AudioSynth_SetFilter
|
||||
/* B545EC 800DD44C 24E70040 */ addiu $a3, $a3, 0x40
|
||||
/* B545F0 800DD450 8FB60164 */ lw $s6, 0x164($sp)
|
||||
/* B545F4 800DD454 8FB10168 */ lw $s1, 0x168($sp)
|
||||
.L800DD458:
|
||||
/* B545F8 800DD458 92D00007 */ lbu $s0, 7($s6)
|
||||
/* B545FC 800DD45C 96C3000E */ lhu $v1, 0xe($s6)
|
||||
/* B54600 800DD460 8E33000C */ lw $s3, 0xc($s1)
|
||||
/* B54604 800DD464 24180001 */ li $t8, 1
|
||||
/* B54608 800DD468 0060A825 */ move $s5, $v1
|
||||
/* B5460C 800DD46C 12000034 */ beqz $s0, .L800DD540
|
||||
/* B54610 800DD470 267300E0 */ addiu $s3, $s3, 0xe0
|
||||
/* B54614 800DD474 10600032 */ beqz $v1, .L800DD540
|
||||
/* B54618 800DD478 02402025 */ move $a0, $s2
|
||||
/* B5461C 800DD47C 240503C0 */ li $a1, 960
|
||||
/* B54620 800DD480 24060760 */ li $a2, 1888
|
||||
/* B54624 800DD484 02803825 */ move $a3, $s4
|
||||
/* B54628 800DD488 0C036F19 */ jal AudioSynth_DMemMove
|
||||
/* B5462C 800DD48C 26520008 */ addiu $s2, $s2, 8
|
||||
/* B54630 800DD490 8FB80168 */ lw $t8, 0x168($sp)
|
||||
/* B54634 800DD494 240F0760 */ li $t7, 1888
|
||||
/* B54638 800DD498 01F08823 */ subu $s1, $t7, $s0
|
||||
/* B5463C 800DD49C 9319001A */ lbu $t9, 0x1a($t8)
|
||||
/* B54640 800DD4A0 02202825 */ move $a1, $s1
|
||||
/* B54644 800DD4A4 02402025 */ move $a0, $s2
|
||||
/* B54648 800DD4A8 1320000B */ beqz $t9, .L800DD4D8
|
||||
/* B5464C 800DD4AC 02003025 */ move $a2, $s0
|
||||
/* B54650 800DD4B0 240D0760 */ li $t5, 1888
|
||||
/* B54654 800DD4B4 01B08823 */ subu $s1, $t5, $s0
|
||||
/* B54658 800DD4B8 02402025 */ move $a0, $s2
|
||||
/* B5465C 800DD4BC 26520008 */ addiu $s2, $s2, 8
|
||||
/* B54660 800DD4C0 02202825 */ move $a1, $s1
|
||||
/* B54664 800DD4C4 0C036EE7 */ jal func_800DBB9C
|
||||
/* B54668 800DD4C8 02003025 */ move $a2, $s0
|
||||
/* B5466C 800DD4CC 8FAC0168 */ lw $t4, 0x168($sp)
|
||||
/* B54670 800DD4D0 10000004 */ b .L800DD4E4
|
||||
/* B54674 800DD4D4 A180001A */ sb $zero, 0x1a($t4)
|
||||
.L800DD4D8:
|
||||
/* B54678 800DD4D8 02603825 */ move $a3, $s3
|
||||
/* B5467C 800DD4DC 0C036F44 */ jal func_800DBD10
|
||||
/* B54680 800DD4E0 26520008 */ addiu $s2, $s2, 8
|
||||
.L800DD4E4:
|
||||
/* B54684 800DD4E4 02402025 */ move $a0, $s2
|
||||
/* B54688 800DD4E8 02902823 */ subu $a1, $s4, $s0
|
||||
/* B5468C 800DD4EC 24A503C0 */ addiu $a1, $a1, 0x3c0
|
||||
/* B54690 800DD4F0 26520008 */ addiu $s2, $s2, 8
|
||||
/* B54694 800DD4F4 02003025 */ move $a2, $s0
|
||||
/* B54698 800DD4F8 0C036F4E */ jal func_800DBD38
|
||||
/* B5469C 800DD4FC 02603825 */ move $a3, $s3
|
||||
/* B546A0 800DD500 02402025 */ move $a0, $s2
|
||||
/* B546A4 800DD504 26520008 */ addiu $s2, $s2, 8
|
||||
/* B546A8 800DD508 00142903 */ sra $a1, $s4, 4
|
||||
/* B546AC 800DD50C 02A03025 */ move $a2, $s5
|
||||
/* B546B0 800DD510 24070760 */ li $a3, 1888
|
||||
/* B546B4 800DD514 0C036EF5 */ jal func_800DBBD4
|
||||
/* B546B8 800DD518 AFB10010 */ sw $s1, 0x10($sp)
|
||||
/* B546BC 800DD51C 02402025 */ move $a0, $s2
|
||||
/* B546C0 800DD520 26520008 */ addiu $s2, $s2, 8
|
||||
/* B546C4 800DD524 02202825 */ move $a1, $s1
|
||||
/* B546C8 800DD528 240603C0 */ li $a2, 960
|
||||
/* B546CC 800DD52C 0C036F19 */ jal AudioSynth_DMemMove
|
||||
/* B546D0 800DD530 02803825 */ move $a3, $s4
|
||||
/* B546D4 800DD534 8FB10168 */ lw $s1, 0x168($sp)
|
||||
/* B546D8 800DD538 10000002 */ b .L800DD544
|
||||
/* B546DC 800DD53C 8FB60164 */ lw $s6, 0x164($sp)
|
||||
.L800DD540:
|
||||
/* B546E0 800DD540 A238001A */ sb $t8, 0x1a($s1)
|
||||
.L800DD544:
|
||||
/* B546E4 800DD544 92D90003 */ lbu $t9, 3($s6)
|
||||
/* B546E8 800DD548 02402025 */ move $a0, $s2
|
||||
/* B546EC 800DD54C 02C02825 */ move $a1, $s6
|
||||
/* B546F0 800DD550 17200004 */ bnez $t9, .L800DD564
|
||||
/* B546F4 800DD554 02203025 */ move $a2, $s1
|
||||
/* B546F8 800DD558 922D0002 */ lbu $t5, 2($s1)
|
||||
/* B546FC 800DD55C 51A00004 */ beql $t5, $zero, .L800DD570
|
||||
/* B54700 800DD560 92CC0004 */ lbu $t4, 4($s6)
|
||||
.L800DD564:
|
||||
/* B54704 800DD564 1000000A */ b .L800DD590
|
||||
/* B54708 800DD568 24100001 */ li $s0, 1
|
||||
/* B5470C 800DD56C 92CC0004 */ lbu $t4, 4($s6)
|
||||
.L800DD570:
|
||||
/* B54710 800DD570 15800005 */ bnez $t4, .L800DD588
|
||||
/* B54714 800DD574 00000000 */ nop
|
||||
/* B54718 800DD578 922F0003 */ lbu $t7, 3($s1)
|
||||
/* B5471C 800DD57C 00008025 */ move $s0, $zero
|
||||
/* B54720 800DD580 11E00003 */ beqz $t7, .L800DD590
|
||||
/* B54724 800DD584 00000000 */ nop
|
||||
.L800DD588:
|
||||
/* B54728 800DD588 10000001 */ b .L800DD590
|
||||
/* B5472C 800DD58C 24100002 */ li $s0, 2
|
||||
.L800DD590:
|
||||
/* B54730 800DD590 8FB80138 */ lw $t8, 0x138($sp)
|
||||
/* B54734 800DD594 240E03C0 */ li $t6, 960
|
||||
/* B54738 800DD598 AFAE0010 */ sw $t6, 0x10($sp)
|
||||
/* B5473C 800DD59C 8FA70170 */ lw $a3, 0x170($sp)
|
||||
/* B54740 800DD5A0 AFB00014 */ sw $s0, 0x14($sp)
|
||||
/* B54744 800DD5A4 0C0375B3 */ jal func_800DD6CC
|
||||
/* B54748 800DD5A8 AFB80018 */ sw $t8, 0x18($sp)
|
||||
/* B5474C 800DD5AC 8FB90164 */ lw $t9, 0x164($sp)
|
||||
/* B54750 800DD5B0 8FAF0138 */ lw $t7, 0x138($sp)
|
||||
/* B54754 800DD5B4 00409025 */ move $s2, $v0
|
||||
/* B54758 800DD5B8 972D0000 */ lhu $t5, ($t9)
|
||||
/* B5475C 800DD5BC 02402025 */ move $a0, $s2
|
||||
/* B54760 800DD5C0 02803825 */ move $a3, $s4
|
||||
/* B54764 800DD5C4 31AC0001 */ andi $t4, $t5, 1
|
||||
/* B54768 800DD5C8 1180000B */ beqz $t4, .L800DD5F8
|
||||
/* B5476C 800DD5CC 31EE0001 */ andi $t6, $t7, 1
|
||||
/* B54770 800DD5D0 55C00003 */ bnezl $t6, .L800DD5E0
|
||||
/* B54774 800DD5D4 8FB80138 */ lw $t8, 0x138($sp)
|
||||
/* B54778 800DD5D8 AFA00138 */ sw $zero, 0x138($sp)
|
||||
/* B5477C 800DD5DC 8FB80138 */ lw $t8, 0x138($sp)
|
||||
.L800DD5E0:
|
||||
/* B54780 800DD5E0 8FA50164 */ lw $a1, 0x164($sp)
|
||||
/* B54784 800DD5E4 8FA60168 */ lw $a2, 0x168($sp)
|
||||
/* B54788 800DD5E8 AFB00014 */ sw $s0, 0x14($sp)
|
||||
/* B5478C 800DD5EC 0C0376D9 */ jal func_800DDB64
|
||||
/* B54790 800DD5F0 AFB80010 */ sw $t8, 0x10($sp)
|
||||
/* B54794 800DD5F4 00409025 */ move $s2, $v0
|
||||
.L800DD5F8:
|
||||
/* B54798 800DD5F8 02401025 */ move $v0, $s2
|
||||
.L800DD5FC:
|
||||
/* B5479C 800DD5FC 8FBF004C */ lw $ra, 0x4c($sp)
|
||||
/* B547A0 800DD600 8FB00028 */ lw $s0, 0x28($sp)
|
||||
/* B547A4 800DD604 8FB1002C */ lw $s1, 0x2c($sp)
|
||||
/* B547A8 800DD608 8FB20030 */ lw $s2, 0x30($sp)
|
||||
/* B547AC 800DD60C 8FB30034 */ lw $s3, 0x34($sp)
|
||||
/* B547B0 800DD610 8FB40038 */ lw $s4, 0x38($sp)
|
||||
/* B547B4 800DD614 8FB5003C */ lw $s5, 0x3c($sp)
|
||||
/* B547B8 800DD618 8FB60040 */ lw $s6, 0x40($sp)
|
||||
/* B547BC 800DD61C 8FB70044 */ lw $s7, 0x44($sp)
|
||||
/* B547C0 800DD620 8FBE0048 */ lw $fp, 0x48($sp)
|
||||
/* B547C4 800DD624 03E00008 */ jr $ra
|
||||
/* B547C8 800DD628 27BD0160 */ addiu $sp, $sp, 0x160
|
||||
|
|
@ -1,189 +0,0 @@
|
|||
glabel func_800DDB64
|
||||
/* B54D04 800DDB64 8FAE0014 */ lw $t6, 0x14($sp)
|
||||
/* B54D08 800DDB68 24090001 */ li $t1, 1
|
||||
/* B54D0C 800DDB6C 24010002 */ li $at, 2
|
||||
/* B54D10 800DDB70 11C90005 */ beq $t6, $t1, .L800DDB88
|
||||
/* B54D14 800DDB74 24080940 */ li $t0, 2368
|
||||
/* B54D18 800DDB78 11C10008 */ beq $t6, $at, .L800DDB9C
|
||||
/* B54D1C 800DDB7C 24080AE0 */ li $t0, 2784
|
||||
/* B54D20 800DDB80 03E00008 */ jr $ra
|
||||
/* B54D24 800DDB84 00801025 */ move $v0, $a0
|
||||
|
||||
.L800DDB88:
|
||||
/* B54D28 800DDB88 90A30003 */ lbu $v1, 3($a1)
|
||||
/* B54D2C 800DDB8C 90C20002 */ lbu $v0, 2($a2)
|
||||
/* B54D30 800DDB90 A0C00003 */ sb $zero, 3($a2)
|
||||
/* B54D34 800DDB94 10000008 */ b .L800DDBB8
|
||||
/* B54D38 800DDB98 A0C30002 */ sb $v1, 2($a2)
|
||||
.L800DDB9C:
|
||||
/* B54D3C 800DDB9C 90A30004 */ lbu $v1, 4($a1)
|
||||
/* B54D40 800DDBA0 90C20003 */ lbu $v0, 3($a2)
|
||||
/* B54D44 800DDBA4 A0C00002 */ sb $zero, 2($a2)
|
||||
/* B54D48 800DDBA8 10000003 */ b .L800DDBB8
|
||||
/* B54D4C 800DDBAC A0C30003 */ sb $v1, 3($a2)
|
||||
/* B54D50 800DDBB0 03E00008 */ jr $ra
|
||||
/* B54D54 800DDBB4 00801025 */ move $v0, $a0
|
||||
|
||||
.L800DDBB8:
|
||||
/* B54D58 800DDBB8 8FAF0010 */ lw $t7, 0x10($sp)
|
||||
/* B54D5C 800DDBBC 3C180200 */ lui $t8, (0x020005C0 >> 16) # lui $t8, 0x200
|
||||
/* B54D60 800DDBC0 3C0103C0 */ lui $at, 0x3c0
|
||||
/* B54D64 800DDBC4 11E9005D */ beq $t7, $t1, .L800DDD3C
|
||||
/* B54D68 800DDBC8 371805C0 */ ori $t8, (0x020005C0 & 0xFFFF) # ori $t8, $t8, 0x5c0
|
||||
/* B54D6C 800DDBCC 00404825 */ move $t1, $v0
|
||||
/* B54D70 800DDBD0 1043002B */ beq $v0, $v1, .L800DDC80
|
||||
/* B54D74 800DDBD4 00602825 */ move $a1, $v1
|
||||
/* B54D78 800DDBD8 00E51021 */ addu $v0, $a3, $a1
|
||||
/* B54D7C 800DDBDC 00495023 */ subu $t2, $v0, $t1
|
||||
/* B54D80 800DDBE0 3159FFFF */ andi $t9, $t2, 0xffff
|
||||
/* B54D84 800DDBE4 3C0103C0 */ lui $at, 0x3c0
|
||||
/* B54D88 800DDBE8 03216825 */ or $t5, $t9, $at
|
||||
/* B54D8C 800DDBEC 3C180800 */ lui $t8, (0x080005C0 >> 16) # lui $t8, 0x800
|
||||
/* B54D90 800DDBF0 000773C0 */ sll $t6, $a3, 0xf
|
||||
/* B54D94 800DDBF4 371805C0 */ ori $t8, (0x080005C0 & 0xFFFF) # ori $t8, $t8, 0x5c0
|
||||
/* B54D98 800DDBF8 00805825 */ move $t3, $a0
|
||||
/* B54D9C 800DDBFC AD780000 */ sw $t8, ($t3)
|
||||
/* B54DA0 800DDC00 AD6D0004 */ sw $t5, 4($t3)
|
||||
/* B54DA4 800DDC04 2559FFFE */ addiu $t9, $t2, -2
|
||||
/* B54DA8 800DDC08 24840008 */ addiu $a0, $a0, 8
|
||||
/* B54DAC 800DDC0C 00806025 */ move $t4, $a0
|
||||
/* B54DB0 800DDC10 AD800004 */ sw $zero, 4($t4)
|
||||
/* B54DB4 800DDC14 24840008 */ addiu $a0, $a0, 8
|
||||
/* B54DB8 800DDC18 05C10003 */ bgez $t6, .L800DDC28
|
||||
/* B54DBC 800DDC1C 000E7843 */ sra $t7, $t6, 1
|
||||
/* B54DC0 800DDC20 25C10001 */ addiu $at, $t6, 1
|
||||
/* B54DC4 800DDC24 00017843 */ sra $t7, $at, 1
|
||||
.L800DDC28:
|
||||
/* B54DC8 800DDC28 25F8FFFF */ addiu $t8, $t7, -1
|
||||
/* B54DCC 800DDC2C 07210003 */ bgez $t9, .L800DDC3C
|
||||
/* B54DD0 800DDC30 00196843 */ sra $t5, $t9, 1
|
||||
/* B54DD4 800DDC34 27210001 */ addiu $at, $t9, 1
|
||||
/* B54DD8 800DDC38 00016843 */ sra $t5, $at, 1
|
||||
.L800DDC3C:
|
||||
/* B54DDC 800DDC3C 030D001A */ div $zero, $t8, $t5
|
||||
/* B54DE0 800DDC40 15A00002 */ bnez $t5, .L800DDC4C
|
||||
/* B54DE4 800DDC44 00000000 */ nop
|
||||
/* B54DE8 800DDC48 0007000D */ break 7
|
||||
.L800DDC4C:
|
||||
/* B54DEC 800DDC4C 2401FFFF */ li $at, -1
|
||||
/* B54DF0 800DDC50 15A10004 */ bne $t5, $at, .L800DDC64
|
||||
/* B54DF4 800DDC54 3C018000 */ lui $at, 0x8000
|
||||
/* B54DF8 800DDC58 17010002 */ bne $t8, $at, .L800DDC64
|
||||
/* B54DFC 800DDC5C 00000000 */ nop
|
||||
/* B54E00 800DDC60 0006000D */ break 6
|
||||
.L800DDC64:
|
||||
/* B54E04 800DDC64 00007012 */ mflo $t6
|
||||
/* B54E08 800DDC68 31CFFFFF */ andi $t7, $t6, 0xffff
|
||||
/* B54E0C 800DDC6C 31F9FFFF */ andi $t9, $t7, 0xffff
|
||||
/* B54E10 800DDC70 3C010600 */ lui $at, 0x600
|
||||
/* B54E14 800DDC74 0321C025 */ or $t8, $t9, $at
|
||||
/* B54E18 800DDC78 1000000B */ b .L800DDCA8
|
||||
/* B54E1C 800DDC7C AD980000 */ sw $t8, ($t4)
|
||||
.L800DDC80:
|
||||
/* B54E20 800DDC80 00805025 */ move $t2, $a0
|
||||
/* B54E24 800DDC84 3C0D0A00 */ lui $t5, (0x0A0005C0 >> 16) # lui $t5, 0xa00
|
||||
/* B54E28 800DDC88 30EEFFFF */ andi $t6, $a3, 0xffff
|
||||
/* B54E2C 800DDC8C 3C0103C0 */ lui $at, 0x3c0
|
||||
/* B54E30 800DDC90 01C17825 */ or $t7, $t6, $at
|
||||
/* B54E34 800DDC94 35AD05C0 */ ori $t5, (0x0A0005C0 & 0xFFFF) # ori $t5, $t5, 0x5c0
|
||||
/* B54E38 800DDC98 AD4D0000 */ sw $t5, ($t2)
|
||||
/* B54E3C 800DDC9C AD4F0004 */ sw $t7, 4($t2)
|
||||
/* B54E40 800DDCA0 24840008 */ addiu $a0, $a0, 8
|
||||
/* B54E44 800DDCA4 00E51021 */ addu $v0, $a3, $a1
|
||||
.L800DDCA8:
|
||||
/* B54E48 800DDCA8 1120001B */ beqz $t1, .L800DDD18
|
||||
/* B54E4C 800DDCAC 3C180A00 */ lui $t8, 0xa00
|
||||
/* B54E50 800DDCB0 2539000F */ addiu $t9, $t1, 0xf
|
||||
/* B54E54 800DDCB4 3338FFF0 */ andi $t8, $t9, 0xfff0
|
||||
/* B54E58 800DDCB8 00186903 */ sra $t5, $t8, 4
|
||||
/* B54E5C 800DDCBC 31AE00FF */ andi $t6, $t5, 0xff
|
||||
/* B54E60 800DDCC0 000E7C00 */ sll $t7, $t6, 0x10
|
||||
/* B54E64 800DDCC4 3C011400 */ lui $at, 0x1400
|
||||
/* B54E68 800DDCC8 01E1C825 */ or $t9, $t7, $at
|
||||
/* B54E6C 800DDCCC 373805C0 */ ori $t8, $t9, 0x5c0
|
||||
/* B54E70 800DDCD0 00805025 */ move $t2, $a0
|
||||
/* B54E74 800DDCD4 AD580000 */ sw $t8, ($t2)
|
||||
/* B54E78 800DDCD8 8CCD000C */ lw $t5, 0xc($a2)
|
||||
/* B54E7C 800DDCDC 24840008 */ addiu $a0, $a0, 8
|
||||
/* B54E80 800DDCE0 3C0F0A00 */ lui $t7, (0x0A0003C0 >> 16) # lui $t7, 0xa00
|
||||
/* B54E84 800DDCE4 25AE00A0 */ addiu $t6, $t5, 0xa0
|
||||
/* B54E88 800DDCE8 AD4E0004 */ sw $t6, 4($t2)
|
||||
/* B54E8C 800DDCEC 35EF03C0 */ ori $t7, (0x0A0003C0 & 0xFFFF) # ori $t7, $t7, 0x3c0
|
||||
/* B54E90 800DDCF0 00805825 */ move $t3, $a0
|
||||
/* B54E94 800DDCF4 AD6F0000 */ sw $t7, ($t3)
|
||||
/* B54E98 800DDCF8 00497023 */ subu $t6, $v0, $t1
|
||||
/* B54E9C 800DDCFC 253805C0 */ addiu $t8, $t1, 0x5c0
|
||||
/* B54EA0 800DDD00 00186C00 */ sll $t5, $t8, 0x10
|
||||
/* B54EA4 800DDD04 31CFFFFF */ andi $t7, $t6, 0xffff
|
||||
/* B54EA8 800DDD08 01AFC825 */ or $t9, $t5, $t7
|
||||
/* B54EAC 800DDD0C AD790004 */ sw $t9, 4($t3)
|
||||
/* B54EB0 800DDD10 10000020 */ b .L800DDD94
|
||||
/* B54EB4 800DDD14 24840008 */ addiu $a0, $a0, 8
|
||||
.L800DDD18:
|
||||
/* B54EB8 800DDD18 00804825 */ move $t1, $a0
|
||||
/* B54EBC 800DDD1C 304EFFFF */ andi $t6, $v0, 0xffff
|
||||
/* B54EC0 800DDD20 3C0105C0 */ lui $at, 0x5c0
|
||||
/* B54EC4 800DDD24 01C16825 */ or $t5, $t6, $at
|
||||
/* B54EC8 800DDD28 371803C0 */ ori $t8, $t8, 0x3c0
|
||||
/* B54ECC 800DDD2C AD380000 */ sw $t8, ($t1)
|
||||
/* B54ED0 800DDD30 AD2D0004 */ sw $t5, 4($t1)
|
||||
/* B54ED4 800DDD34 10000017 */ b .L800DDD94
|
||||
/* B54ED8 800DDD38 24840008 */ addiu $a0, $a0, 8
|
||||
.L800DDD3C:
|
||||
/* B54EDC 800DDD3C 00804825 */ move $t1, $a0
|
||||
/* B54EE0 800DDD40 3C0F0A00 */ lui $t7, (0x0A0005C0 >> 16) # lui $t7, 0xa00
|
||||
/* B54EE4 800DDD44 30E2FFFF */ andi $v0, $a3, 0xffff
|
||||
/* B54EE8 800DDD48 0041C825 */ or $t9, $v0, $at
|
||||
/* B54EEC 800DDD4C 35EF05C0 */ ori $t7, (0x0A0005C0 & 0xFFFF) # ori $t7, $t7, 0x5c0
|
||||
/* B54EF0 800DDD50 24840008 */ addiu $a0, $a0, 8
|
||||
/* B54EF4 800DDD54 AD2F0000 */ sw $t7, ($t1)
|
||||
/* B54EF8 800DDD58 AD390004 */ sw $t9, 4($t1)
|
||||
/* B54EFC 800DDD5C 00805025 */ move $t2, $a0
|
||||
/* B54F00 800DDD60 24840008 */ addiu $a0, $a0, 8
|
||||
/* B54F04 800DDD64 AD580000 */ sw $t8, ($t2)
|
||||
/* B54F08 800DDD68 00805825 */ move $t3, $a0
|
||||
/* B54F0C 800DDD6C 246F05C0 */ addiu $t7, $v1, 0x5c0
|
||||
/* B54F10 800DDD70 AD430004 */ sw $v1, 4($t2)
|
||||
/* B54F14 800DDD74 000FCC00 */ sll $t9, $t7, 0x10
|
||||
/* B54F18 800DDD78 3C0E0A00 */ lui $t6, (0x0A0003C0 >> 16) # lui $t6, 0xa00
|
||||
/* B54F1C 800DDD7C 35CE03C0 */ ori $t6, (0x0A0003C0 & 0xFFFF) # ori $t6, $t6, 0x3c0
|
||||
/* B54F20 800DDD80 0322C025 */ or $t8, $t9, $v0
|
||||
/* B54F24 800DDD84 AD780004 */ sw $t8, 4($t3)
|
||||
/* B54F28 800DDD88 AD6E0000 */ sw $t6, ($t3)
|
||||
/* B54F2C 800DDD8C 24840008 */ addiu $a0, $a0, 8
|
||||
/* B54F30 800DDD90 00602825 */ move $a1, $v1
|
||||
.L800DDD94:
|
||||
/* B54F34 800DDD94 10600010 */ beqz $v1, .L800DDDD8
|
||||
/* B54F38 800DDD98 00801025 */ move $v0, $a0
|
||||
/* B54F3C 800DDD9C 24AE000F */ addiu $t6, $a1, 0xf
|
||||
/* B54F40 800DDDA0 31CDFFF0 */ andi $t5, $t6, 0xfff0
|
||||
/* B54F44 800DDDA4 000D7903 */ sra $t7, $t5, 4
|
||||
/* B54F48 800DDDA8 31F900FF */ andi $t9, $t7, 0xff
|
||||
/* B54F4C 800DDDAC 0019C400 */ sll $t8, $t9, 0x10
|
||||
/* B54F50 800DDDB0 24ED05C0 */ addiu $t5, $a3, 0x5c0
|
||||
/* B54F54 800DDDB4 3C011500 */ lui $at, 0x1500
|
||||
/* B54F58 800DDDB8 03017025 */ or $t6, $t8, $at
|
||||
/* B54F5C 800DDDBC 31AFFFFF */ andi $t7, $t5, 0xffff
|
||||
/* B54F60 800DDDC0 01CFC825 */ or $t9, $t6, $t7
|
||||
/* B54F64 800DDDC4 AC590000 */ sw $t9, ($v0)
|
||||
/* B54F68 800DDDC8 8CD8000C */ lw $t8, 0xc($a2)
|
||||
/* B54F6C 800DDDCC 24840008 */ addiu $a0, $a0, 8
|
||||
/* B54F70 800DDDD0 270D00A0 */ addiu $t5, $t8, 0xa0
|
||||
/* B54F74 800DDDD4 AC4D0004 */ sw $t5, 4($v0)
|
||||
.L800DDDD8:
|
||||
/* B54F78 800DDDD8 24EE003F */ addiu $t6, $a3, 0x3f
|
||||
/* B54F7C 800DDDDC 31CFFFC0 */ andi $t7, $t6, 0xffc0
|
||||
/* B54F80 800DDDE0 000FC903 */ sra $t9, $t7, 4
|
||||
/* B54F84 800DDDE4 333800FF */ andi $t8, $t9, 0xff
|
||||
/* B54F88 800DDDE8 00186C00 */ sll $t5, $t8, 0x10
|
||||
/* B54F8C 800DDDEC 3C010400 */ lui $at, 0x400
|
||||
/* B54F90 800DDDF0 01A17025 */ or $t6, $t5, $at
|
||||
/* B54F94 800DDDF4 3C0105C0 */ lui $at, 0x5c0
|
||||
/* B54F98 800DDDF8 3119FFFF */ andi $t9, $t0, 0xffff
|
||||
/* B54F9C 800DDDFC 0321C025 */ or $t8, $t9, $at
|
||||
/* B54FA0 800DDE00 35CF7FFF */ ori $t7, $t6, 0x7fff
|
||||
/* B54FA4 800DDE04 AC8F0000 */ sw $t7, ($a0)
|
||||
/* B54FA8 800DDE08 AC980004 */ sw $t8, 4($a0)
|
||||
/* B54FAC 800DDE0C 24820008 */ addiu $v0, $a0, 8
|
||||
/* B54FB0 800DDE10 03E00008 */ jr $ra
|
||||
/* B54FB4 800DDE14 00000000 */ nop
|
|
@ -1891,51 +1891,7 @@ void UCodeDisas_Destroy(UCodeDisas*);
|
|||
void UCodeDisas_Disassemble(UCodeDisas*, Gfx*);
|
||||
void UCodeDisas_RegisterUCode(UCodeDisas*, s32, UCodeInfo*);
|
||||
void UCodeDisas_SetCurUCode(UCodeDisas*, void*);
|
||||
// ? func_800DACC0(?);
|
||||
// ? func_800DB03C(?);
|
||||
Acmd* AudioSynth_Update(Acmd* cmdStart, s32* cmdCnt, s16* aiStart, s32 aiBufLen);
|
||||
// ? func_800DB2C0(?);
|
||||
// ? func_800DB330(?);
|
||||
// ? func_800DB3D8(?);
|
||||
// ? func_800DB480(?);
|
||||
// ? func_800DB4E4(?);
|
||||
// ? func_800DB680(?);
|
||||
// ? func_800DB828(?);
|
||||
// ? func_800DBA40(?);
|
||||
// ? func_800DBAE8(?);
|
||||
// ? func_800DBB9C(?);
|
||||
// ? func_800DBBD4(?);
|
||||
// ? AudioSynth_SetBuffer(?);
|
||||
// ? AudioSynth_DMemMove(?);
|
||||
// ? AudioSynth_InterL(?);
|
||||
// ? func_800DBCD4(?);
|
||||
// ? func_800DBD10(?);
|
||||
// ? AudioSynth_SaveBuffer(?);
|
||||
// ? AudioSynth_EnvSetup2(?);
|
||||
// ? AudioSynth_UnkCmd17(?);
|
||||
// ? AudioSynth_HiLoGain(?);
|
||||
// ? AudioSynth_UnkCmd19(?);
|
||||
// ? AudioSynth_UnkCmd3(?);
|
||||
// ? AudioSynth_SetFilter(?);
|
||||
// ? AudioSynth_SetFilterCount(?);
|
||||
// ? func_800DBEB0(?);
|
||||
// ? func_800DBF5C(?);
|
||||
// ? AudioSynth_LoadRingBuffer(?);
|
||||
// ? AudioSynth_SaveRingBuffer(?);
|
||||
// ? AudioSynth_SaveBuffer(?);
|
||||
// ? func_800DC124(?);
|
||||
// ? func_800DC164(?);
|
||||
// ? func_800DC1D8(?);
|
||||
// ? func_800DC2DC(?);
|
||||
// ? func_800DC384(?);
|
||||
// ? func_800DC910(?);
|
||||
// ? func_800DD62C(?);
|
||||
// ? func_800DD6CC(?);
|
||||
// ? func_800DD9F4(?);
|
||||
// ? func_800DDB64(?);
|
||||
f32 func_800DDE20(f32 arg0);
|
||||
void func_800DDE3C(void);
|
||||
void Audio_ResetLoadStatus(void);
|
||||
void Audio_DiscardBank(s32 bankId);
|
||||
void Audio_DiscardSequence(s32 seqId);
|
||||
void func_800DE238(void* mem, u32 size);
|
||||
|
@ -1980,7 +1936,7 @@ void func_800E0E90(s32 id);
|
|||
void func_800E0EB4(s32 arg0, s32 id);
|
||||
void func_800E1148(void);
|
||||
void func_800E11F0(void);
|
||||
s32 func_800E12DC(s32 arg0, s32 arg1, s32 arg2, u8* arg3, s32 arg4);
|
||||
void* Audio_DmaSampleData(u32 arg0, s32 arg1, s32 arg2, u8* arg3, s32 arg4);
|
||||
void func_800E1618(s32 arg0);
|
||||
s32 Audio_IsBankLoadComplete(s32 bankId);
|
||||
s32 Audio_IsSeqLoadComplete(s32 seqId);
|
||||
|
@ -1993,8 +1949,8 @@ void Audio_AudioTableAsyncLoad(s32 arg0, s32 arg1, s32 arg2, OSMesgQueue* arg3);
|
|||
void Audio_AudioBankAsyncLoad(s32 arg0, s32 arg1, s32 arg2, OSMesgQueue* arg3);
|
||||
u8* func_800E1F38(s32 arg0, u32* arg1);
|
||||
void func_800E1F7C(s32 arg0);
|
||||
s32 func_800E20D4(s32 playerIdx, s32 seqId, s32 arg2);
|
||||
s32 func_800E2124(s32 playerIdx, s32 seqId, s32 arg2);
|
||||
s32 func_800E20D4(s32 playerIndex, s32 seqId, s32 arg2);
|
||||
s32 func_800E2124(s32 playerIndex, s32 seqId, s32 arg2);
|
||||
void Audio_ProcessLoads(s32 resetStatus);
|
||||
void func_800E301C(void* callback);
|
||||
void Audio_ContextInit(void* heap, u32 heapSize);
|
||||
|
@ -2023,7 +1979,7 @@ void Audio_InitMesgQueues(void);
|
|||
void Audio_osInvalDCache(void* buf, s32 size);
|
||||
void Audio_osWritebackDCache(void* mem, s32 size);
|
||||
s32 osAiSetNextBuffer(void*, u32);
|
||||
void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb);
|
||||
void Audio_InitNoteSub(Note* note, NoteSubEu* sub, NoteSubAttributes* attrs);
|
||||
void Audio_NoteSetResamplingRate(NoteSubEu* noteSubEu, f32 resamplingRateInput);
|
||||
void Audio_NoteInit(Note* note);
|
||||
void Audio_NoteDisable(Note* note);
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
#define ALIGN16(val) (((val) + 0xF) & ~0xF)
|
||||
#define ALIGN32(val) (((val) + 0x1F) & ~0x1F)
|
||||
#define ALIGN64(val) (((val) + 0x3F) & ~0x3F)
|
||||
#define ALIGN256(val) (((val) + 0xFF) & ~0xFF)
|
||||
|
||||
#define SQ(x) ((x)*(x))
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
#define A_LOADBUFF 20
|
||||
#define A_SAVEBUFF 21
|
||||
#define A_ENVSETUP2 22
|
||||
#define A_UNK17 23
|
||||
#define A_S8DEC 23
|
||||
#define A_UNK19 25
|
||||
#define ACMD_SIZE 32
|
||||
|
||||
|
@ -323,11 +323,11 @@ typedef short ENVMIX_STATE[40];
|
|||
_a->words.w1 = _SHIFTL(a3, 16, 16) | _SHIFTL(a4, 0, 16); \
|
||||
}
|
||||
|
||||
#define aUnkCmd17(pkt, a1, a2) \
|
||||
#define aS8Dec(pkt, a1, a2) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = _SHIFTL(A_UNK17, 24, 8) | _SHIFTL(a1, 16, 8); \
|
||||
_a->words.w0 = _SHIFTL(A_S8DEC, 24, 8) | _SHIFTL(a1, 16, 8); \
|
||||
_a->words.w1 = (unsigned int)(a2); \
|
||||
}
|
||||
|
||||
|
@ -339,45 +339,23 @@ typedef short ENVMIX_STATE[40];
|
|||
_a->words.w1 = (unsigned int)(c); \
|
||||
}
|
||||
|
||||
/*
|
||||
#define aEnvMixer(pkt, f, s) \
|
||||
#define aEnvMixer(pkt, dmemi, count, swapLR, x0, x1, x2, x3, m, bits) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = _SHIFTL(A_ENVMIXER, 24, 8) | _SHIFTL(f, 16, 8); \
|
||||
_a->words.w1 = (unsigned int)(s); \
|
||||
}
|
||||
*/
|
||||
|
||||
extern u32 D_801304A0;
|
||||
|
||||
#define aEnvMixer(pkt, dmemi, count, swapLR, x0, x1, x2, x3, m) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = (D_801304A0 | _SHIFTL(dmemi >> 4, 16, 8) | \
|
||||
_a->words.w0 = (bits | _SHIFTL(dmemi >> 4, 16, 8) | \
|
||||
_SHIFTL(count, 8, 8) | _SHIFTL(swapLR, 4, 1) | \
|
||||
_SHIFTL(x0, 3, 1) | _SHIFTL(x1, 2, 1) | \
|
||||
_SHIFTL(x2, 1, 1) | _SHIFTL(x3, 0, 1)); \
|
||||
_a->words.w1 = (unsigned int)(m); \
|
||||
}
|
||||
|
||||
/*
|
||||
#define aInterleave(pkt, l, r) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = _SHIFTL(A_INTERLEAVE, 24, 8); \
|
||||
_a->words.w1 = _SHIFTL(l, 16, 16) | _SHIFTL(r, 0, 16); \
|
||||
}
|
||||
*/
|
||||
|
||||
#define aInterleave(pkt, count, d, l, r) \
|
||||
#define aInterleave(pkt, o, l, r, c) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = (_SHIFTL(A_INTERLEAVE, 24, 8) | \
|
||||
_SHIFTL(count >> 4, 16, 8) | _SHIFTL(d, 0, 16)); \
|
||||
_SHIFTL(c >> 4, 16, 8) | _SHIFTL(o, 0, 16)); \
|
||||
_a->words.w1 = _SHIFTL(l, 16, 16) | _SHIFTL(r, 0, 16); \
|
||||
}
|
||||
|
||||
|
@ -390,16 +368,6 @@ extern u32 D_801304A0;
|
|||
_a->words.w1 = _SHIFTL(dmemi, 16, 16) | _SHIFTL(dmemo, 0, 16); \
|
||||
}
|
||||
|
||||
/*
|
||||
#define aLoadBuffer(pkt, s) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = _SHIFTL(A_LOADBUFF, 24, 8); \
|
||||
_a->words.w1 = (unsigned int)(s); \
|
||||
}
|
||||
*/
|
||||
|
||||
#define aLoadBuffer(pkt, s, d, c) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
|
@ -436,16 +404,6 @@ extern u32 D_801304A0;
|
|||
_a->words.w1 = (unsigned int)(s); \
|
||||
}
|
||||
|
||||
/*
|
||||
#define aSaveBuffer(pkt, s) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = _SHIFTL(A_SAVEBUFF, 24, 8); \
|
||||
_a->words.w1 = (unsigned int)(s); \
|
||||
}
|
||||
*/
|
||||
|
||||
#define aSaveBuffer(pkt, s, d, c) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
|
@ -561,7 +519,7 @@ extern u32 D_801304A0;
|
|||
_a->words.w1 = _SHIFTL(dmemi, 16, 16) | _SHIFTL(dmemo, 0, 16); \
|
||||
}
|
||||
|
||||
#define aResampleZOH(pkt, pitch, pitchAccu) \
|
||||
#define aResampleZoh(pkt, pitch, pitchAccu) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
/**
|
||||
* Structs in this repository have primarily been imported from the SM64 Decompilation.
|
||||
* Many struct members are wrong; the symbol '?' next to an offset means the member is a guess.
|
||||
* Some struct members may be wrong; the symbol '?' next to an offset means the member is a guess.
|
||||
*/
|
||||
|
||||
#define NO_LAYER ((SequenceChannelLayer*)(-1))
|
||||
|
@ -32,6 +32,9 @@
|
|||
|
||||
#define AIBUF_LEN 0xB00
|
||||
|
||||
#define CODEC_ADPCM 0
|
||||
#define CODEC_S8 1
|
||||
|
||||
struct Note;
|
||||
struct NotePool;
|
||||
struct SequenceChannel;
|
||||
|
@ -73,38 +76,33 @@ typedef struct {
|
|||
} Portamento; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/*?0x0 */ s16 delay;
|
||||
/*?0x2 */ s16 arg;
|
||||
} AdsrEnvelope; // size = 0x4?
|
||||
/* 0x0 */ s16 delay;
|
||||
/* 0x2 */ s16 arg;
|
||||
} AdsrEnvelope; // size = 0x4
|
||||
|
||||
typedef struct {
|
||||
/*?0x00 */ u32 start;
|
||||
/* 0x00 */ u32 start;
|
||||
/* 0x04 */ u32 end;
|
||||
/*?0x08 */ u32 count;
|
||||
/*?0x0C */ char unk_0C[0x4];
|
||||
/*?0x10 */ s16 state[16]; // only exists if count != 0. 8-byte aligned
|
||||
} AdpcmLoop; // size = 0x30
|
||||
/* 0x08 */ u32 count;
|
||||
/* 0x0C */ char unk_0C[0x4];
|
||||
/* 0x10 */ s16 state[16]; // only exists if count != 0. 8-byte aligned
|
||||
} AdpcmLoop; // size = 0x30 (or 0x10)
|
||||
|
||||
typedef struct {
|
||||
/*?0x00 */ s32 order;
|
||||
/*?0x04 */ s32 npredictors;
|
||||
/*?0x08 */ s16 book[1]; // size 8 * order * npredictors. 8-byte aligned
|
||||
} AdpcmBook;
|
||||
/* 0x00 */ s32 order;
|
||||
/* 0x04 */ s32 npredictors;
|
||||
/* 0x08 */ s16 book[1]; // size 8 * order * npredictors. 8-byte aligned
|
||||
} AdpcmBook; // size >= 0x8
|
||||
|
||||
typedef struct {
|
||||
union{
|
||||
struct {
|
||||
/* 0x00 */ u32 bits4 : 4;
|
||||
/* 0x00 */ u32 bits2 : 2;
|
||||
/* 0x00 */ u32 codec : 4;
|
||||
/* 0x00 */ u32 medium : 2;
|
||||
/* 0x00 */ u32 unk_bits26 : 1;
|
||||
/* 0x00 */ u32 unk_bits25 : 1;
|
||||
/* 0x01 */ u32 size : 24;
|
||||
};
|
||||
u32 bits;
|
||||
};
|
||||
/* 0x04 */ u8* sampleAddr;
|
||||
/* 0x08 */ AdpcmLoop* loop;
|
||||
/*?0x0C */ AdpcmBook* book;
|
||||
/* 0x0C */ AdpcmBook* book;
|
||||
} AudioBankSample; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
|
@ -113,17 +111,16 @@ typedef struct {
|
|||
} AudioBankSound; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/*?0x00 */ s16 numSamplesAfterDownsampling;
|
||||
/*?0x02 */ s16 chunkLen; // never read
|
||||
/* 0x00 */ s16 numSamplesAfterDownsampling; // never read
|
||||
/* 0x02 */ s16 chunkLen; // never read
|
||||
/* 0x04 */ s16* toDownsampleLeft;
|
||||
/* 0x08 */ s16* toDownsampleRight; // data pointed to by left and right are adjacent in memory
|
||||
/*?0x0C */ s32 startPos; // start pos in ring buffer
|
||||
/*?0x10 */ s16 lengthA; // first length in ring buffer (from startPos, at most until end)
|
||||
/*?0x12 */ s16 lengthB; // second length in ring buffer (from pos 0)
|
||||
/* 0x0C */ s32 startPos; // start pos in ring buffer
|
||||
/* 0x10 */ s16 lengthA; // first length in ring buffer (from startPos, at most until end)
|
||||
/* 0x12 */ s16 lengthB; // second length in ring buffer (from pos 0)
|
||||
/* 0x14 */ u16 unk_14;
|
||||
/* 0x16 */ u16 unk_16;
|
||||
/* 0x18 */ u16 unk_18;
|
||||
/* 0x1A */ char unk_1A[2];
|
||||
} ReverbRingBufferItem; // size = 0x1C
|
||||
|
||||
typedef struct {
|
||||
|
@ -138,11 +135,10 @@ typedef struct {
|
|||
/* 0x00A */ s16 unk_0A;
|
||||
/* 0x00C */ u16 unk_0C;
|
||||
/* 0x00E */ u16 unk_0E;
|
||||
/* 0x010 */ s16 unk_10;
|
||||
/* 0x012 */ s16 unk_12;
|
||||
/* 0x010 */ s16 leakRtl;
|
||||
/* 0x012 */ s16 leakLtr;
|
||||
/* 0x014 */ u16 unk_14;
|
||||
/* 0x016 */ s16 unk_16;
|
||||
|
||||
/* 0x018 */ u8 unk_18;
|
||||
/* 0x019 */ u8 unk_19;
|
||||
/* 0x01A */ u8 unk_1A;
|
||||
|
@ -156,20 +152,19 @@ typedef struct {
|
|||
/* 0x034 */ void* unk_34;
|
||||
/* 0x038 */ void* unk_38;
|
||||
/* 0x03C */ void* unk_3C;
|
||||
|
||||
/* 0x040 */ ReverbRingBufferItem items[2][5];
|
||||
/*?0x158 */ ReverbRingBufferItem items2[2][5];
|
||||
/* 0x270 */ s16* unk_270;
|
||||
/* 0x274 */ s16* unk_274;
|
||||
/* 0x278 */ void* unk_278;
|
||||
/* 0x27C */ void* unk_27C;
|
||||
/* 0x158 */ ReverbRingBufferItem items2[2][5];
|
||||
/* 0x270 */ s16* filterLeft;
|
||||
/* 0x274 */ s16* filterRight;
|
||||
/* 0x278 */ s16* filterLeftState;
|
||||
/* 0x27C */ s16* filterRightState;
|
||||
/* 0x280 */ AudioBankSound sound;
|
||||
/* 0x288 */ AudioBankSample sample;
|
||||
/* 0x298 */ AdpcmLoop loop;
|
||||
} SynthesisReverb; // size = 0x2C8
|
||||
|
||||
typedef struct {
|
||||
/*?0x00 */ u8 loaded;
|
||||
/* 0x00 */ u8 loaded;
|
||||
/* 0x01 */ u8 normalRangeLo;
|
||||
/* 0x02 */ u8 normalRangeHi;
|
||||
/* 0x03 */ u8 releaseRate;
|
||||
|
@ -177,15 +172,15 @@ typedef struct {
|
|||
/* 0x08 */ AudioBankSound lowNotesSound;
|
||||
/* 0x10 */ AudioBankSound normalNotesSound;
|
||||
/* 0x18 */ AudioBankSound highNotesSound;
|
||||
} Instrument; // size >= 0x20
|
||||
} Instrument; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 releaseRate;
|
||||
/* 0x01 */ u8 pan;
|
||||
/*?0x02 */ u8 loaded;
|
||||
/* 0x02 */ u8 loaded;
|
||||
/* 0x04 */ AudioBankSound sound;
|
||||
/* 0x14 */ AdsrEnvelope* envelope;
|
||||
} Drum; // size >= 0x14
|
||||
} Drum; // size = 0x14
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 numInstruments;
|
||||
|
@ -206,13 +201,10 @@ typedef struct {
|
|||
/* 0x19 */ s8 value;
|
||||
} M64ScriptState; // size = 0x1C
|
||||
|
||||
// Also known as a Group, according to sm64 debug strings.
|
||||
// Also known as a Group, according to debug strings.
|
||||
typedef struct {
|
||||
union {
|
||||
s32 playerState;
|
||||
struct {
|
||||
/* 0x000 */ u8 enabled : 1;
|
||||
/*?0x000 */ u8 finished : 1;
|
||||
/* 0x000 */ u8 finished : 1;
|
||||
/* 0x000 */ u8 muted : 1;
|
||||
/* 0x000 */ u8 seqDmaInProgress : 1;
|
||||
/* 0x000 */ u8 bankDmaInProgress : 1;
|
||||
|
@ -221,25 +213,11 @@ typedef struct {
|
|||
/* 0x000 */ u8 unk_0b1 : 1;
|
||||
/* 0x001 */ u8 state;
|
||||
/* 0x002 */ u8 noteAllocPolicy;
|
||||
union {
|
||||
/* 0x003 */ u8 muteBehavior;
|
||||
struct {
|
||||
u8 mute_u00 : 1;
|
||||
u8 mute_u01 : 1;
|
||||
u8 mute_u02 : 1;
|
||||
u8 mute_u03 : 1;
|
||||
u8 mute_u04 : 1;
|
||||
u8 mute_u05 : 1;
|
||||
u8 mute_u06 : 1;
|
||||
u8 mute_u07 : 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
/* 0x004 */ u8 seqId;
|
||||
/* 0x005 */ u8 defaultBank;
|
||||
/*?0x006 */ u8 loadingBankId;
|
||||
/*?0x007 */ s8 seqVariationEu;
|
||||
/* 0x006 */ u8 unk_06[1];
|
||||
/* 0x007 */ s8 playerIndex;
|
||||
/* 0x008 */ u16 tempo; // tatums per minute
|
||||
/* 0x00A */ u16 tempoAcc;
|
||||
/* 0x00C */ u16 unk_0C;
|
||||
|
@ -247,7 +225,6 @@ typedef struct {
|
|||
/* 0x010 */ u16 delay;
|
||||
/* 0x012 */ u16 fadeTimer;
|
||||
/* 0x014 */ u16 fadeTimerUnkEu;
|
||||
/* 0x016 */ char unk_16[0x2];
|
||||
/* 0x018 */ u8* seqData;
|
||||
/* 0x01C */ f32 fadeVolume;
|
||||
/* 0x020 */ f32 fadeVelocity;
|
||||
|
@ -257,7 +234,7 @@ typedef struct {
|
|||
/* 0x030 */ f32 appliedFadeVolume;
|
||||
/* 0x034 */ f32 unk_34;
|
||||
/* 0x038 */ struct SequenceChannel* channels[16];
|
||||
/*?0x078 */ M64ScriptState scriptState;
|
||||
/* 0x078 */ M64ScriptState scriptState;
|
||||
/* 0x094 */ u8* shortNoteVelocityTable;
|
||||
/* 0x098 */ u8* shortNoteDurationTable;
|
||||
/* 0x09C */ NotePool notePool;
|
||||
|
@ -305,39 +282,36 @@ typedef struct {
|
|||
} AdsrState;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 bit0 : 1;
|
||||
/* 0x00 */ u8 bit1 : 1;
|
||||
/* 0x00 */ u8 bit0 : 1; // unused?
|
||||
/* 0x00 */ u8 bit1 : 1; // unused?
|
||||
/* 0x00 */ u8 bit2 : 2;
|
||||
/* 0x00 */ u8 strongRight : 1;
|
||||
/* 0x00 */ u8 strongLeft : 1;
|
||||
/* 0x00 */ u8 stereoHeadsetEffects : 1;
|
||||
/* 0x00 */ u8 usesHeadsetPanEffects : 1;
|
||||
} ReverbBitsData;
|
||||
} StereoData;
|
||||
|
||||
typedef union {
|
||||
/* 0x00 */ ReverbBitsData s;
|
||||
/* 0x00 */ StereoData s;
|
||||
/* 0x00 */ u8 asByte;
|
||||
} ReverbBits;
|
||||
} Stereo;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 reverb;
|
||||
/* 0x01 */ u8 unk_1;
|
||||
/* 0x02 */ u8 pan;
|
||||
/* 0x03 */ ReverbBits reverbBits;
|
||||
/* 0x03 */ Stereo stereo;
|
||||
/* 0x04 */ u8 unk_4;
|
||||
/* 0x06 */ u16 unk_6;
|
||||
/* 0x08 */ f32 freqScale;
|
||||
/* 0x0C */ f32 velocity;
|
||||
/* 0x10 */ s16* unk_10;
|
||||
/* 0x14 */ s16 unk_14[8];
|
||||
/* 0x10 */ s16* filter;
|
||||
/* 0x14 */ s16 filterBuf[8];
|
||||
} NoteAttributes; // size = 0x24
|
||||
|
||||
// Also known as a SubTrack, according to sm64 debug strings.
|
||||
// Also known as a SubTrack, according to debug strings.
|
||||
// Confusingly, a SubTrack is a container of Tracks.
|
||||
typedef struct SequenceChannel {
|
||||
union {
|
||||
s32 channelState;
|
||||
struct {
|
||||
/* 0x00 */ u8 enabled : 1;
|
||||
/* 0x00 */ u8 finished : 1;
|
||||
/* 0x00 */ u8 stopScript : 1;
|
||||
|
@ -345,7 +319,7 @@ typedef struct SequenceChannel {
|
|||
/* 0x00 */ u8 hasInstrument : 1;
|
||||
/* 0x00 */ u8 stereoHeadsetEffects : 1;
|
||||
/* 0x00 */ u8 largeNotes : 1; // notes specify duration and velocity
|
||||
/* 0x00 */ u8 unused : 1; // still unused?
|
||||
/* 0x00 */ u8 unused : 1;
|
||||
union {
|
||||
struct {
|
||||
/* 0x01 */ u8 freqScale : 1;
|
||||
|
@ -356,8 +330,6 @@ typedef struct SequenceChannel {
|
|||
} changes;
|
||||
/* 0x02 */ u8 noteAllocPolicy;
|
||||
/* 0x03 */ u8 muteBehavior;
|
||||
};
|
||||
};
|
||||
/* 0x04 */ u8 reverb; // or dry/wet mix
|
||||
/* 0x05 */ u8 notePriority; // 0-3
|
||||
/* 0x06 */ u8 someOtherPriority;
|
||||
|
@ -388,9 +360,9 @@ typedef struct SequenceChannel {
|
|||
/* 0x30 */ s32 pan;
|
||||
/* 0x34 */ f32 appliedVolume;
|
||||
/* 0x38 */ f32 freqScale;
|
||||
/*?0x3C */ u8 (*dynTable)[][2];
|
||||
/* 0x40 */ struct Note* noteUnused; // still unused?
|
||||
/*?0x44 */ struct SequenceChannelLayer* layerUnused; // still unused?
|
||||
/* 0x3C */ u8 (*dynTable)[][2];
|
||||
/* 0x40 */ struct Note* noteUnused;
|
||||
/* 0x44 */ struct SequenceChannelLayer* layerUnused;
|
||||
/* 0x48 */ Instrument* instrument;
|
||||
/* 0x4C */ SequencePlayer* seqPlayer;
|
||||
/* 0x50 */ struct SequenceChannelLayer* layers[4];
|
||||
|
@ -398,11 +370,11 @@ typedef struct SequenceChannel {
|
|||
/* 0x7C */ AdsrSettings adsr;
|
||||
/* 0x84 */ NotePool notePool;
|
||||
/* 0xC4 */ s8 soundScriptIO[8]; // bridge between sound script and audio lib
|
||||
/* 0xCC */ s16* unk_CC;
|
||||
/* 0xD0 */ ReverbBits reverbBits;
|
||||
/* 0xCC */ s16* filter;
|
||||
/* 0xD0 */ Stereo stereo;
|
||||
} SequenceChannel; // size = 0xD4
|
||||
|
||||
// Also known as a Track, according to sm64 debug strings.
|
||||
// Also known as a Track, according to debug strings.
|
||||
typedef struct SequenceChannelLayer {
|
||||
/* 0x00 */ u8 enabled : 1;
|
||||
/* 0x00 */ u8 finished : 1;
|
||||
|
@ -412,7 +384,7 @@ typedef struct SequenceChannelLayer {
|
|||
/* 0x00 */ u8 ignoreDrumPan : 1;
|
||||
/* 0x00 */ u8 bit1 : 1; // "has initialized continuous notes"?
|
||||
/* 0x00 */ u8 notePropertiesNeedInit : 1;
|
||||
/* 0x01 */ ReverbBits reverbBits;
|
||||
/* 0x01 */ Stereo stereo;
|
||||
/* 0x02 */ u8 instOrWave;
|
||||
/* 0x03 */ u8 noteDuration;
|
||||
/* 0x04 */ u8 semitone;
|
||||
|
@ -454,17 +426,17 @@ typedef struct {
|
|||
} NoteSynthesisBuffers; // size = 0x110
|
||||
|
||||
typedef struct {
|
||||
/*?0x00 */ u8 restart;
|
||||
/*?0x01 */ u8 sampleDmaIndex;
|
||||
/*?0x02 */ u8 prevHeadsetPanRight;
|
||||
/*?0x03 */ u8 prevHeadsetPanLeft;
|
||||
/*?0x04 */ u8 samplePosFrac;
|
||||
/* 0x05 */ u8 unk_05;
|
||||
/* 0x06 */ u16 unk_06;
|
||||
/*?0x08 */ s32 samplePosInt;
|
||||
/* 0x00 */ u8 restart;
|
||||
/* 0x01 */ u8 sampleDmaIndex;
|
||||
/* 0x02 */ u8 prevHeadsetPanRight;
|
||||
/* 0x03 */ u8 prevHeadsetPanLeft;
|
||||
/* 0x04 */ u8 reverbVol;
|
||||
/* 0x05 */ u8 numAdpcmParts;
|
||||
/* 0x06 */ u16 samplePosFrac;
|
||||
/* 0x08 */ s32 samplePosInt;
|
||||
/* 0x0C */ NoteSynthesisBuffers* synthesisBuffers;
|
||||
/*?0x10 */ s16 curVolLeft;
|
||||
/*?0x12 */ s16 curVolRight;
|
||||
/* 0x10 */ s16 curVolLeft;
|
||||
/* 0x12 */ s16 curVolRight;
|
||||
/* 0x14 */ u16 unk_14;
|
||||
/* 0x16 */ u16 unk_16;
|
||||
/* 0x18 */ u16 unk_18;
|
||||
|
@ -480,7 +452,7 @@ typedef struct {
|
|||
/* 0x0C */ f32 extent;
|
||||
/* 0x10 */ f32 rate;
|
||||
/* 0x14 */ u8 active;
|
||||
/*!0x16 */ u16 rateChangeTimer;
|
||||
/* 0x16 */ u16 rateChangeTimer;
|
||||
/* 0x18 */ u16 extentChangeTimer;
|
||||
/* 0x1A */ u16 delay;
|
||||
} VibratoState; // size = 0x1C
|
||||
|
@ -495,7 +467,7 @@ typedef struct {
|
|||
/* 0x06 */ s16 adsrVolScale; // unused?
|
||||
/* 0x08 */ f32 portamentoFreqScale;
|
||||
/* 0x0C */ f32 vibratoFreqScale;
|
||||
/*?0x10 */ SequenceChannelLayer* prevParentLayer;
|
||||
/* 0x10 */ SequenceChannelLayer* prevParentLayer;
|
||||
/* 0x14 */ SequenceChannelLayer* parentLayer;
|
||||
/* 0x18 */ SequenceChannelLayer* wantedParentLayer;
|
||||
/* 0x1C */ NoteAttributes attributes;
|
||||
|
@ -510,45 +482,45 @@ typedef struct {
|
|||
/* 0x00 */ vu8 enabled : 1;
|
||||
/* 0x00 */ u8 needsInit : 1;
|
||||
/*?0x00 */ u8 finished : 1;
|
||||
/*?0x00 */ u8 envMixerNeedsInit : 1;
|
||||
/* 0x00 */ u8 unused : 1;
|
||||
/* 0x00 */ u8 stereoStrongRight : 1;
|
||||
/* 0x00 */ u8 stereoStrongLeft : 1;
|
||||
/* 0x00 */ u8 stereoHeadsetEffects : 1;
|
||||
/* 0x00 */ u8 usesHeadsetPanEffects : 1;
|
||||
/*?0x00 */ u8 usesHeadsetPanEffects : 1;
|
||||
} s;
|
||||
/*?0x00 */ u8 asByte;
|
||||
/* 0x00 */ u8 asByte; // likely does not exist
|
||||
} bitField0;
|
||||
union {
|
||||
struct {
|
||||
/*?0x01 */ u8 reverbIndex : 3;
|
||||
/* 0x01 */ u8 reverbIndex : 3;
|
||||
/* 0x01 */ u8 bookOffset : 2;
|
||||
/*?0x01 */ u8 bit2 : 1;
|
||||
/*?0x01 */ u8 isSyntheticWave : 1;
|
||||
/*?0x01 */ u8 hasTwoAdpcmParts : 1;
|
||||
/* 0x01 */ u8 isSyntheticWave : 1;
|
||||
/* 0x01 */ u8 hasTwoAdpcmParts : 1;
|
||||
/* 0x01 */ u8 usesHeadsetPanEffects2 : 1;
|
||||
} s;
|
||||
/*?0x01 */ u8 asByte;
|
||||
/* 0x01 */ u8 asByte; // likely does not exist
|
||||
} bitField1;
|
||||
/* 0x02 */ u8 unk_2;
|
||||
/*?0x03 */ u8 headsetPanRight;
|
||||
/*?0x04 */ u8 headsetPanLeft;
|
||||
/*?0x05 */ u8 reverbVol;
|
||||
/* 0x03 */ u8 headsetPanRight;
|
||||
/* 0x04 */ u8 headsetPanLeft;
|
||||
/* 0x05 */ u8 reverbVol;
|
||||
/* 0x06 */ u8 unk_06;
|
||||
/* 0x07 */ u8 unk_07;
|
||||
/* 0x08 */ u16 targetVolLeft;
|
||||
/* 0x0A */ u16 targetVolRight;
|
||||
/*?0x0C */ u16 resamplingRateFixedPoint; // stored as signed but loaded as u16
|
||||
/* 0x0E */ s16 unk_10;
|
||||
/* 0x0C */ u16 resamplingRateFixedPoint;
|
||||
/* 0x0E */ u16 unk_0E;
|
||||
/* 0x10 */ union {
|
||||
s16* samples;
|
||||
AudioBankSound* audioBankSound;
|
||||
} sound; // not sure if actually a union
|
||||
/* 0x14 */ s16* unk_14;
|
||||
s16* samples; // used for synthetic waves
|
||||
} sound;
|
||||
/* 0x14 */ s16* filter;
|
||||
/* 0x18 */ char pad_18[0x8];
|
||||
} NoteSubEu; // size = 0x20
|
||||
|
||||
typedef struct Note {
|
||||
/* 0x00 */ AudioListItem listItem;
|
||||
/*?0x10 */ NoteSynthesisState synthesisState;
|
||||
/* 0x10 */ NoteSynthesisState synthesisState;
|
||||
/* 0x30 */ NotePlaybackState playbackState;
|
||||
/* 0x90 */ Portamento portamento;
|
||||
/* 0x9C */ VibratoState vibratoState;
|
||||
|
@ -564,8 +536,8 @@ typedef struct {
|
|||
/* 0x06 */ u16 unk_6;
|
||||
/* 0x08 */ u16 unk_8;
|
||||
/* 0x0A */ u16 unk_A;
|
||||
/* 0x0C */ u16 unk_C;
|
||||
/* 0x0E */ u16 unk_E;
|
||||
/* 0x0C */ u16 leakRtl;
|
||||
/* 0x0E */ u16 leakLtr;
|
||||
/* 0x10 */ s8 unk_10;
|
||||
/* 0x12 */ u16 unk_12;
|
||||
/* 0x14 */ s16 unk_14;
|
||||
|
@ -573,8 +545,8 @@ typedef struct {
|
|||
} ReverbSettings; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/*?0x00 */ u32 frequency;
|
||||
/*?0x04 */ u8 unk_04;
|
||||
/* 0x00 */ u32 frequency;
|
||||
/* 0x04 */ u8 unk_04;
|
||||
/* 0x05 */ u8 maxSimultaneousNotes;
|
||||
/* 0x06 */ u8 numSequencePlayers;
|
||||
/* 0x07 */ u8 unk_07[0x2];
|
||||
|
@ -620,7 +592,7 @@ typedef struct {
|
|||
} SoundAllocPool; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 *ptr;
|
||||
/* 0x0 */ u8* ptr;
|
||||
/* 0x4 */ u32 size;
|
||||
/* 0x8 */ s16 poolIndex;
|
||||
/* 0xA */ s16 id; // seqId or bankId
|
||||
|
@ -878,7 +850,7 @@ typedef struct {
|
|||
/* 0x0002 */ u16 unk_2;
|
||||
/* 0x0004 */ u16 unk_4;
|
||||
/* 0x0006 */ char unk_0006[0x0A];
|
||||
/* 0x0000 */ s32 unk_0x10;
|
||||
/* 0x0010 */ s16* curLoadedBook;
|
||||
/* 0x0014 */ NoteSubEu* noteSubsEu;
|
||||
/* 0x0018 */ SynthesisReverb synthesisReverbs[4];
|
||||
/* 0x0B38 */ char unk_0B38[0x30];
|
||||
|
@ -1005,17 +977,17 @@ typedef struct {
|
|||
} AudioContext; // size = 0x6450
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 reverb; // i.e. volume
|
||||
/* 0x00 */ u8 reverbVol;
|
||||
/* 0x01 */ u8 unk_1;
|
||||
/* 0x02 */ u8 pan;
|
||||
/* 0x03 */ ReverbBits reverbBits;
|
||||
/* 0x03 */ Stereo stereo;
|
||||
/* 0x04 */ f32 frequency;
|
||||
/* 0x08 */ f32 velocity;
|
||||
/* 0x0C */ char unk_0C[0x4];
|
||||
/* 0x10 */ s16* unk_10;
|
||||
/* 0x10 */ s16* filter;
|
||||
/* 0x14 */ u8 unk_14;
|
||||
/* 0x16 */ u16 unk_16;
|
||||
} Reverb; // size >= 0x18
|
||||
} NoteSubAttributes; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ u32 heap;
|
||||
|
|
|
@ -621,46 +621,46 @@ void func_800DF1D8(f32 arg0, f32 arg1, u16* arg2) {
|
|||
}
|
||||
}
|
||||
|
||||
void func_800DF5AC(s16* arg0) {
|
||||
void func_800DF5AC(s16* filter) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
arg0[i] = 0;
|
||||
filter[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void func_800DF5DC(s16* arg0, s32 arg1) {
|
||||
void func_800DF5DC(s16* filter, s32 arg1) {
|
||||
s32 i;
|
||||
s16* ptr = &D_80130228[8 * arg1];
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
arg0[i] = ptr[i];
|
||||
filter[i] = ptr[i];
|
||||
}
|
||||
}
|
||||
|
||||
void func_800DF630(s16* arg0, s32 arg1) {
|
||||
void func_800DF630(s16* filter, s32 arg1) {
|
||||
s32 i;
|
||||
s16* ptr = &D_80130328[8 * (arg1 - 1)];
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
arg0[i] = ptr[i];
|
||||
filter[i] = ptr[i];
|
||||
}
|
||||
}
|
||||
|
||||
void func_800DF688(s16* arg0, s32 arg1, s32 arg2) {
|
||||
void func_800DF688(s16* filter, s32 arg1, s32 arg2) {
|
||||
s32 i;
|
||||
|
||||
if (arg1 == 0 && arg2 == 0) {
|
||||
func_800DF5DC(arg0, 0);
|
||||
func_800DF5DC(filter, 0);
|
||||
} else if (arg2 == 0) {
|
||||
func_800DF5DC(arg0, arg1);
|
||||
func_800DF5DC(filter, arg1);
|
||||
} else if (arg1 == 0) {
|
||||
func_800DF630(arg0, arg2);
|
||||
func_800DF630(filter, arg2);
|
||||
} else {
|
||||
s16* ptr1 = &D_80130228[8 * arg1];
|
||||
s16* ptr2 = &D_80130328[8 * (arg2 - 1)];
|
||||
for (i = 0; i < 8; i++) {
|
||||
arg0[i] = (ptr1[i] + ptr2[i]) / 2;
|
||||
filter[i] = (ptr1[i] + ptr2[i]) / 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -898,8 +898,8 @@ void Audio_InitHeap(void) {
|
|||
reverb->unk_14 = settings->unk_6 * 64;
|
||||
reverb->unk_16 = settings->unk_8;
|
||||
reverb->unk_18 = 0;
|
||||
reverb->unk_10 = settings->unk_C;
|
||||
reverb->unk_12 = settings->unk_E;
|
||||
reverb->leakRtl = settings->leakRtl;
|
||||
reverb->leakLtr = settings->leakLtr;
|
||||
reverb->unk_05 = settings->unk_10;
|
||||
reverb->unk_08 = settings->unk_12;
|
||||
reverb->useReverb = 8;
|
||||
|
@ -914,8 +914,8 @@ void Audio_InitHeap(void) {
|
|||
reverb->sound.sample = &reverb->sample;
|
||||
reverb->sample.loop = &reverb->loop;
|
||||
reverb->sound.tuning = 1.0f;
|
||||
reverb->sample.bits4 = 4;
|
||||
reverb->sample.bits2 = 0;
|
||||
reverb->sample.codec = 4;
|
||||
reverb->sample.medium = 0;
|
||||
reverb->sample.size = reverb->windowSize * 2;
|
||||
reverb->sample.sampleAddr = (u8*)reverb->leftRingBuf;
|
||||
reverb->loop.start = 0;
|
||||
|
@ -939,19 +939,19 @@ void Audio_InitHeap(void) {
|
|||
}
|
||||
|
||||
if (settings->unk_14 != 0) {
|
||||
reverb->unk_278 = Audio_AllocDmaMemoryZeroed(&gAudioContext.notesAndBuffersPool, 0x40);
|
||||
reverb->unk_270 = Audio_AllocDmaMemory(&gAudioContext.notesAndBuffersPool, 8 * sizeof(s16));
|
||||
func_800DF5DC(reverb->unk_270, settings->unk_14);
|
||||
reverb->filterLeftState = Audio_AllocDmaMemoryZeroed(&gAudioContext.notesAndBuffersPool, 0x40);
|
||||
reverb->filterLeft = Audio_AllocDmaMemory(&gAudioContext.notesAndBuffersPool, 8 * sizeof(s16));
|
||||
func_800DF5DC(reverb->filterLeft, settings->unk_14);
|
||||
} else {
|
||||
reverb->unk_270 = NULL;
|
||||
reverb->filterLeft = NULL;
|
||||
}
|
||||
|
||||
if (settings->unk_16 != 0) {
|
||||
reverb->unk_27C = Audio_AllocDmaMemoryZeroed(&gAudioContext.notesAndBuffersPool, 0x40);
|
||||
reverb->unk_274 = Audio_AllocDmaMemory(&gAudioContext.notesAndBuffersPool, 8 * sizeof(s16));
|
||||
func_800DF5DC(reverb->unk_274, settings->unk_16);
|
||||
reverb->filterRightState = Audio_AllocDmaMemoryZeroed(&gAudioContext.notesAndBuffersPool, 0x40);
|
||||
reverb->filterRight = Audio_AllocDmaMemory(&gAudioContext.notesAndBuffersPool, 8 * sizeof(s16));
|
||||
func_800DF5DC(reverb->filterRight, settings->unk_16);
|
||||
} else {
|
||||
reverb->unk_274 = NULL;
|
||||
reverb->filterRight = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1181,7 +1181,7 @@ void func_800E0BB4(UnkHeapEntry* entry, AudioBankSample* sample) {
|
|||
if (sample != NULL) {
|
||||
if (sample->sampleAddr == entry->unk_08) {
|
||||
sample->sampleAddr = entry->unk_0C;
|
||||
sample->bits2 = entry->unk_01;
|
||||
sample->medium = entry->unk_01;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1251,7 +1251,7 @@ void func_800E0E0C(Struct_800E0E0C* arg0, AudioBankSample* sample) {
|
|||
u8* sampleAddr = sample->sampleAddr;
|
||||
if (start <= sampleAddr && sampleAddr < end) {
|
||||
sample->sampleAddr = sampleAddr - start + arg0->unk_4;
|
||||
sample->bits2 = arg0->unk_C & 0xFF;
|
||||
sample->medium = arg0->unk_C & 0xFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ typedef enum { LOAD_STATUS_WAITING, LOAD_STATUS_START, LOAD_STATUS_LOADING, LOAD
|
|||
#define RELOC(v, base) (reloc = (void*)((u32)v + (u32)base))
|
||||
|
||||
/* forward declarations */
|
||||
s32 func_800E217C(s32 playerIdx, s32, s32);
|
||||
s32 func_800E217C(s32 playerIndex, s32, s32);
|
||||
unk_ldr* func_800E2454(u32 bankId);
|
||||
AudioBankSample* Audio_GetBankSample(s32 bankId, s32 sfxId);
|
||||
void Audio_ProcessAsyncLoads(s32 arg0);
|
||||
|
@ -72,7 +72,7 @@ void func_800E11F0(void) {
|
|||
gAudioContext.unk_2628 = 0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/audio_load/func_800E12DC.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/audio_load/Audio_DmaSampleData.s")
|
||||
|
||||
void func_800E1618(s32 arg0) {
|
||||
SampleDmaReq* temp_s0;
|
||||
|
@ -268,18 +268,18 @@ s32 func_800E1C78(AudioBankSample* sample, s32 arg1) {
|
|||
void* sampleAddr;
|
||||
|
||||
if (sample->unk_bits25 == 1) {
|
||||
if (sample->bits2 != 0) {
|
||||
sampleAddr = func_800E05C4(sample->size, arg1, (void*)sample->sampleAddr, sample->bits2, 1);
|
||||
if (sample->medium != 0) {
|
||||
sampleAddr = func_800E05C4(sample->size, arg1, (void*)sample->sampleAddr, sample->medium, 1);
|
||||
if (sampleAddr == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (sample->bits2 == 1) {
|
||||
if (sample->medium == 1) {
|
||||
func_800E2BCC(sample->sampleAddr, sampleAddr, sample->size, gAudioContext.audioTable->header.unk_02);
|
||||
} else {
|
||||
Audio_DMAFastCopy(sample->sampleAddr, sampleAddr, sample->size, sample->bits2);
|
||||
Audio_DMAFastCopy(sample->sampleAddr, sampleAddr, sample->size, sample->medium);
|
||||
}
|
||||
sample->bits2 = 0;
|
||||
sample->medium = 0;
|
||||
sample->sampleAddr = sampleAddr;
|
||||
}
|
||||
}
|
||||
|
@ -381,27 +381,27 @@ void func_800E202C(s32 arg0) {
|
|||
Audio_DiscardBank(arg0);
|
||||
}
|
||||
|
||||
s32 func_800E20D4(s32 playerIdx, s32 seqId, s32 arg2) {
|
||||
s32 func_800E20D4(s32 playerIndex, s32 seqId, s32 arg2) {
|
||||
if (gAudioContext.resetTimer != 0) {
|
||||
return 0;
|
||||
} else {
|
||||
gAudioContext.seqPlayers[playerIdx].unk_DC = 0;
|
||||
return func_800E217C(playerIdx, seqId, arg2);
|
||||
gAudioContext.seqPlayers[playerIndex].unk_DC = 0;
|
||||
return func_800E217C(playerIndex, seqId, arg2);
|
||||
}
|
||||
}
|
||||
|
||||
s32 func_800E2124(s32 playerIdx, s32 seqId, s32 arg2) {
|
||||
s32 func_800E2124(s32 playerIndex, s32 seqId, s32 arg2) {
|
||||
if (gAudioContext.resetTimer != 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
gAudioContext.seqPlayers[playerIdx].unk_DC = arg2;
|
||||
return func_800E217C(playerIdx, seqId, 0);
|
||||
gAudioContext.seqPlayers[playerIndex].unk_DC = arg2;
|
||||
return func_800E217C(playerIndex, seqId, 0);
|
||||
}
|
||||
|
||||
// InitSeqPlayer
|
||||
s32 func_800E217C(s32 playerIdx, s32 seqId, s32 arg2) {
|
||||
SequencePlayer* seqPlayer = &gAudioContext.seqPlayers[playerIdx];
|
||||
s32 func_800E217C(s32 playerIndex, s32 seqId, s32 arg2) {
|
||||
SequencePlayer* seqPlayer = &gAudioContext.seqPlayers[playerIndex];
|
||||
u8* seqData;
|
||||
s32 phi_s0;
|
||||
s32 phi_s1;
|
||||
|
@ -437,7 +437,7 @@ s32 func_800E217C(s32 playerIdx, s32 seqId, s32 arg2) {
|
|||
seqPlayer->scriptState.depth = 0;
|
||||
seqPlayer->delay = 0;
|
||||
seqPlayer->finished = 0;
|
||||
seqPlayer->seqVariationEu = playerIdx;
|
||||
seqPlayer->playerIndex = playerIndex;
|
||||
Audio_ProcessSequence(seqPlayer);
|
||||
}
|
||||
|
||||
|
@ -1055,7 +1055,7 @@ s32 Audio_SyncLoadSample(s32 arg0, s32 arg1, u8* isDone) {
|
|||
return -1;
|
||||
}
|
||||
|
||||
if (sample->bits2 == 0) {
|
||||
if (sample->medium == 0) {
|
||||
*isDone = 2;
|
||||
return 0;
|
||||
}
|
||||
|
@ -1067,10 +1067,10 @@ s32 Audio_SyncLoadSample(s32 arg0, s32 arg1, u8* isDone) {
|
|||
|
||||
syncLoad->sample = *sample;
|
||||
syncLoad->isDone = isDone;
|
||||
syncLoad->ramAddr = func_800E05C4(sample->size, arg0, sample->sampleAddr, sample->bits2, 0);
|
||||
syncLoad->ramAddr = func_800E05C4(sample->size, arg0, sample->sampleAddr, sample->medium, 0);
|
||||
|
||||
if (syncLoad->ramAddr == NULL) {
|
||||
if (sample->bits2 == 1 || sample->bits4 == 2) {
|
||||
if (sample->medium == 1 || sample->codec == 2) {
|
||||
*isDone = 0;
|
||||
return -1;
|
||||
} else {
|
||||
|
@ -1083,7 +1083,7 @@ s32 Audio_SyncLoadSample(s32 arg0, s32 arg1, u8* isDone) {
|
|||
syncLoad->size = ALIGN16(sample->size);
|
||||
syncLoad->unk_10 = syncLoad->ramAddr;
|
||||
syncLoad->devAddr = sample->sampleAddr;
|
||||
syncLoad->unk_00 = sample->bits2;
|
||||
syncLoad->unk_00 = sample->medium;
|
||||
syncLoad->unk_01 = arg0;
|
||||
syncLoad->unk_02 = arg1;
|
||||
if (syncLoad->unk_00 == 1) {
|
||||
|
@ -1136,7 +1136,7 @@ void func_800E3678(AudioSyncLoad* syncLoad) {
|
|||
|
||||
syncLoad->sample = *sample;
|
||||
sample->sampleAddr = syncLoad->unk_10;
|
||||
sample->bits2 = 0;
|
||||
sample->medium = 0;
|
||||
}
|
||||
|
||||
void Audio_ProcessSyncLoads(s32 resetStatus) {
|
||||
|
@ -1430,14 +1430,14 @@ void Audio_SampleReloc(AudioBankSound* sound, u32 arg1, RelocInfo* arg2) {
|
|||
if (sample->size != 0 && sample->unk_bits25 != 1) {
|
||||
sample->loop = RELOC(sample->loop, arg1);
|
||||
sample->book = RELOC(sample->book, arg1);
|
||||
switch (sample->bits2) {
|
||||
switch (sample->medium) {
|
||||
case 0:
|
||||
sample->sampleAddr = RELOC(sample->sampleAddr, arg2->unk_08);
|
||||
sample->bits2 = arg2->unk_10;
|
||||
sample->medium = arg2->unk_10;
|
||||
break;
|
||||
case 1:
|
||||
sample->sampleAddr = RELOC(sample->sampleAddr, arg2->unk_0C);
|
||||
sample->bits2 = arg2->unk_14;
|
||||
sample->medium = arg2->unk_14;
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
|
@ -1445,7 +1445,7 @@ void Audio_SampleReloc(AudioBankSound* sound, u32 arg1, RelocInfo* arg2) {
|
|||
}
|
||||
|
||||
sample->unk_bits25 = 1;
|
||||
if (sample->unk_bits26 && (sample->bits2 != 0)) {
|
||||
if (sample->unk_bits26 && (sample->medium != 0)) {
|
||||
gAudioContext.unk_B68[gAudioContext.unk_1768++] = sample;
|
||||
}
|
||||
}
|
||||
|
@ -1477,10 +1477,10 @@ s32 func_800E4590(s32 resetStatus) {
|
|||
|
||||
if (item->isFree == false) {
|
||||
sample = item->sample;
|
||||
key = (u32)sample->sampleAddr + sample->size + sample->bits2;
|
||||
key = (u32)sample->sampleAddr + sample->size + sample->medium;
|
||||
if (key == item->endAndMediumKey) {
|
||||
sample->sampleAddr = item->ramAddr;
|
||||
sample->bits2 = 0;
|
||||
sample->medium = 0;
|
||||
}
|
||||
item->isFree = true;
|
||||
}
|
||||
|
@ -1497,12 +1497,12 @@ s32 func_800E4590(s32 resetStatus) {
|
|||
|
||||
sample = item->sample;
|
||||
unk = (sample->size >> 12) + 1;
|
||||
key = (u32)sample->sampleAddr + sample->size + sample->bits2;
|
||||
key = (u32)sample->sampleAddr + sample->size + sample->medium;
|
||||
if (key != item->endAndMediumKey) {
|
||||
item->isFree = true;
|
||||
gAudioContext.unk_176C--;
|
||||
} else {
|
||||
Audio_InitAsyncReq((u32)sample->sampleAddr, item->ramAddr, sample->size, sample->bits2, unk,
|
||||
Audio_InitAsyncReq((u32)sample->sampleAddr, item->ramAddr, sample->size, sample->medium, unk,
|
||||
&gAudioContext.unk_1E78, item->encodedInfo);
|
||||
break;
|
||||
}
|
||||
|
@ -1563,7 +1563,7 @@ s32 func_800E478C(s32 bankId, AudioBankSample** sampleList) {
|
|||
void func_800E48C0(AudioBankSound* sound) {
|
||||
AudioBankSample* sample = sound->sample;
|
||||
|
||||
if ((sample->size != 0) && (sample->unk_bits26) && (sample->bits2)) {
|
||||
if ((sample->size != 0) && (sample->unk_bits26) && (sample->medium)) {
|
||||
gAudioContext.unk_B68[gAudioContext.unk_1768++] = sample;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#include "global.h"
|
||||
|
||||
void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb) {
|
||||
void Audio_InitNoteSub(Note* note, NoteSubEu* sub, NoteSubAttributes* attrs) {
|
||||
f32 volRight, volLeft;
|
||||
s32 smallPanIndex;
|
||||
u64 pad;
|
||||
|
@ -9,20 +9,20 @@ void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb) {
|
|||
f32 vel;
|
||||
u8 pan;
|
||||
u8 reverbVol;
|
||||
ReverbBitsData sp24;
|
||||
StereoData sp24;
|
||||
s32 stereoHeadsetEffects = note->playbackState.stereoHeadsetEffects;
|
||||
|
||||
vel = reverb->velocity;
|
||||
pan = reverb->pan;
|
||||
reverbVol = reverb->reverb;
|
||||
sp24 = reverb->reverbBits.s;
|
||||
vel = attrs->velocity;
|
||||
pan = attrs->pan;
|
||||
reverbVol = attrs->reverbVol;
|
||||
sp24 = attrs->stereo.s;
|
||||
|
||||
sub->bitField0.s = note->noteSubEu.bitField0.s;
|
||||
sub->bitField1.s = note->noteSubEu.bitField1.s;
|
||||
sub->sound.samples = note->noteSubEu.sound.samples;
|
||||
sub->unk_06 = note->noteSubEu.unk_06;
|
||||
|
||||
Audio_NoteSetResamplingRate(sub, reverb->frequency);
|
||||
Audio_NoteSetResamplingRate(sub, attrs->frequency);
|
||||
|
||||
pan &= 0x7F;
|
||||
|
||||
|
@ -38,7 +38,7 @@ void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb) {
|
|||
|
||||
sub->headsetPanLeft = gHeadsetPanQuantization[smallPanIndex];
|
||||
sub->headsetPanRight = gHeadsetPanQuantization[0x3f - smallPanIndex];
|
||||
sub->bitField1.s.hasTwoAdpcmParts = true;
|
||||
sub->bitField1.s.usesHeadsetPanEffects2 = true;
|
||||
|
||||
volLeft = gHeadsetPanVolume[pan];
|
||||
volRight = gHeadsetPanVolume[0x7f - pan];
|
||||
|
@ -46,7 +46,7 @@ void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb) {
|
|||
strongLeft = strongRight = 0;
|
||||
sub->headsetPanRight = 0;
|
||||
sub->headsetPanLeft = 0;
|
||||
sub->bitField1.s.hasTwoAdpcmParts = false;
|
||||
sub->bitField1.s.usesHeadsetPanEffects2 = false;
|
||||
|
||||
volLeft = gStereoPanVolume[pan];
|
||||
volRight = gStereoPanVolume[0x7f - pan];
|
||||
|
@ -94,10 +94,10 @@ void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb) {
|
|||
sub->targetVolLeft = (s32)((vel * volLeft) * 4095.999f);
|
||||
sub->targetVolRight = (s32)((vel * volRight) * 4095.999f);
|
||||
|
||||
sub->unk_2 = reverb->unk_1;
|
||||
sub->unk_14 = reverb->unk_10;
|
||||
sub->unk_07 = reverb->unk_14;
|
||||
sub->unk_10 = reverb->unk_16;
|
||||
sub->unk_2 = attrs->unk_1;
|
||||
sub->filter = attrs->filter;
|
||||
sub->unk_07 = attrs->unk_14;
|
||||
sub->unk_0E = attrs->unk_16;
|
||||
sub->reverbVol = reverbVol;
|
||||
}
|
||||
|
||||
|
@ -105,7 +105,7 @@ void Audio_NoteSetResamplingRate(NoteSubEu* noteSubEu, f32 resamplingRateInput)
|
|||
f32 resamplingRate = 0.0f;
|
||||
|
||||
if (resamplingRateInput < 2.0f) {
|
||||
noteSubEu->bitField1.s.isSyntheticWave = false;
|
||||
noteSubEu->bitField1.s.hasTwoAdpcmParts = false;
|
||||
|
||||
if (1.99998f < resamplingRateInput) {
|
||||
resamplingRate = 1.99998f;
|
||||
|
@ -114,7 +114,7 @@ void Audio_NoteSetResamplingRate(NoteSubEu* noteSubEu, f32 resamplingRateInput)
|
|||
}
|
||||
|
||||
} else {
|
||||
noteSubEu->bitField1.s.isSyntheticWave = true;
|
||||
noteSubEu->bitField1.s.hasTwoAdpcmParts = true;
|
||||
if (3.99996f < resamplingRateInput) {
|
||||
resamplingRate = 1.99998f;
|
||||
} else {
|
||||
|
@ -154,12 +154,12 @@ void Audio_NoteDisable(Note* note) {
|
|||
|
||||
void Audio_ProcessNotes(void) {
|
||||
s32 pad[2];
|
||||
NoteAttributes* attributes;
|
||||
NoteAttributes* attrs;
|
||||
NoteSubEu* noteSubEu2;
|
||||
NoteSubEu* noteSubEu;
|
||||
Note* note;
|
||||
NotePlaybackState* playbackState;
|
||||
Reverb reverb;
|
||||
NoteSubAttributes subAttrs;
|
||||
u8 bookOffset;
|
||||
f32 scale;
|
||||
s32 i;
|
||||
|
@ -248,47 +248,47 @@ void Audio_ProcessNotes(void) {
|
|||
|
||||
scale = Audio_AdsrUpdate(&playbackState->adsr);
|
||||
Audio_NoteVibratoUpdate(note);
|
||||
attributes = &playbackState->attributes;
|
||||
attrs = &playbackState->attributes;
|
||||
if (playbackState->unk_04 == 1 || playbackState->unk_04 == 2) {
|
||||
reverb.frequency = attributes->freqScale;
|
||||
reverb.velocity = attributes->velocity;
|
||||
reverb.pan = attributes->pan;
|
||||
reverb.reverb = attributes->reverb;
|
||||
reverb.reverbBits = attributes->reverbBits;
|
||||
reverb.unk_1 = attributes->unk_1;
|
||||
reverb.unk_10 = attributes->unk_10;
|
||||
reverb.unk_14 = attributes->unk_4;
|
||||
reverb.unk_16 = attributes->unk_6;
|
||||
subAttrs.frequency = attrs->freqScale;
|
||||
subAttrs.velocity = attrs->velocity;
|
||||
subAttrs.pan = attrs->pan;
|
||||
subAttrs.reverbVol = attrs->reverb;
|
||||
subAttrs.stereo = attrs->stereo;
|
||||
subAttrs.unk_1 = attrs->unk_1;
|
||||
subAttrs.filter = attrs->filter;
|
||||
subAttrs.unk_14 = attrs->unk_4;
|
||||
subAttrs.unk_16 = attrs->unk_6;
|
||||
bookOffset = noteSubEu->bitField1.s.bookOffset;
|
||||
} else {
|
||||
SequenceChannelLayer* layer = playbackState->parentLayer;
|
||||
SequenceChannel* channel = layer->seqChannel;
|
||||
|
||||
reverb.frequency = layer->noteFreqScale;
|
||||
reverb.velocity = layer->noteVelocity;
|
||||
reverb.pan = layer->notePan;
|
||||
if (layer->reverbBits.asByte == 0) {
|
||||
reverb.reverbBits = channel->reverbBits;
|
||||
subAttrs.frequency = layer->noteFreqScale;
|
||||
subAttrs.velocity = layer->noteVelocity;
|
||||
subAttrs.pan = layer->notePan;
|
||||
if (layer->stereo.asByte == 0) {
|
||||
subAttrs.stereo = channel->stereo;
|
||||
} else {
|
||||
reverb.reverbBits = layer->reverbBits;
|
||||
subAttrs.stereo = layer->stereo;
|
||||
}
|
||||
reverb.reverb = channel->reverb;
|
||||
reverb.unk_1 = channel->unk_0C;
|
||||
reverb.unk_10 = channel->unk_CC;
|
||||
reverb.unk_14 = channel->unk_0F;
|
||||
reverb.unk_16 = channel->unk_20;
|
||||
subAttrs.reverbVol = channel->reverb;
|
||||
subAttrs.unk_1 = channel->unk_0C;
|
||||
subAttrs.filter = channel->filter;
|
||||
subAttrs.unk_14 = channel->unk_0F;
|
||||
subAttrs.unk_16 = channel->unk_20;
|
||||
bookOffset = channel->bookOffset & 0x7;
|
||||
|
||||
if (channel->seqPlayer->muted && (channel->muteBehavior & 8)) {
|
||||
reverb.frequency = 0.0f;
|
||||
reverb.velocity = 0.0f;
|
||||
subAttrs.frequency = 0.0f;
|
||||
subAttrs.velocity = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
reverb.frequency *= playbackState->vibratoFreqScale * playbackState->portamentoFreqScale;
|
||||
reverb.frequency *= gAudioContext.audioBufferParameters.resampleRate;
|
||||
reverb.velocity *= scale;
|
||||
Audio_NoteSetVelPanReverb(note, noteSubEu2, &reverb);
|
||||
subAttrs.frequency *= playbackState->vibratoFreqScale * playbackState->portamentoFreqScale;
|
||||
subAttrs.frequency *= gAudioContext.audioBufferParameters.resampleRate;
|
||||
subAttrs.velocity *= scale;
|
||||
Audio_InitNoteSub(note, noteSubEu2, &subAttrs);
|
||||
noteSubEu->bitField1.s.bookOffset = bookOffset;
|
||||
skip:;
|
||||
}
|
||||
|
@ -432,7 +432,7 @@ s32 func_800E7744(s32 instrument, s32 bankId, s32 instId, void* arg3) {
|
|||
|
||||
void Audio_SeqChanLayerDecayRelease(SequenceChannelLayer* seqLayer, s32 target) {
|
||||
Note* note;
|
||||
NoteAttributes* attributes;
|
||||
NoteAttributes* attrs;
|
||||
SequenceChannel* chan;
|
||||
s32 i;
|
||||
|
||||
|
@ -447,7 +447,7 @@ void Audio_SeqChanLayerDecayRelease(SequenceChannelLayer* seqLayer, s32 target)
|
|||
}
|
||||
|
||||
note = seqLayer->note;
|
||||
attributes = ¬e->playbackState.attributes;
|
||||
attrs = ¬e->playbackState.attributes;
|
||||
|
||||
if (note->playbackState.wantedParentLayer == seqLayer) {
|
||||
note->playbackState.wantedParentLayer = NO_LAYER;
|
||||
|
@ -463,37 +463,37 @@ void Audio_SeqChanLayerDecayRelease(SequenceChannelLayer* seqLayer, s32 target)
|
|||
}
|
||||
|
||||
if (note->playbackState.adsr.action.s.state != ADSR_STATE_DECAY) {
|
||||
attributes->freqScale = seqLayer->noteFreqScale;
|
||||
attributes->velocity = seqLayer->noteVelocity;
|
||||
attributes->pan = seqLayer->notePan;
|
||||
attrs->freqScale = seqLayer->noteFreqScale;
|
||||
attrs->velocity = seqLayer->noteVelocity;
|
||||
attrs->pan = seqLayer->notePan;
|
||||
|
||||
if (seqLayer->seqChannel != NULL) {
|
||||
chan = seqLayer->seqChannel;
|
||||
attributes->reverb = chan->reverb;
|
||||
attributes->unk_1 = chan->unk_0C;
|
||||
attributes->unk_10 = chan->unk_CC;
|
||||
attrs->reverb = chan->reverb;
|
||||
attrs->unk_1 = chan->unk_0C;
|
||||
attrs->filter = chan->filter;
|
||||
|
||||
if (attributes->unk_10 != NULL) {
|
||||
if (attrs->filter != NULL) {
|
||||
for (i = 0; i < 8; i++) {
|
||||
attributes->unk_14[i] = attributes->unk_10[i];
|
||||
attrs->filterBuf[i] = attrs->filter[i];
|
||||
}
|
||||
attributes->unk_10 = attributes->unk_14;
|
||||
attrs->filter = attrs->filterBuf;
|
||||
}
|
||||
|
||||
attributes->unk_6 = chan->unk_20;
|
||||
attributes->unk_4 = chan->unk_0F;
|
||||
attrs->unk_6 = chan->unk_20;
|
||||
attrs->unk_4 = chan->unk_0F;
|
||||
if (chan->seqPlayer->muted && (chan->muteBehavior & 8)) {
|
||||
note->noteSubEu.bitField0.s.finished = true;
|
||||
}
|
||||
|
||||
if (seqLayer->reverbBits.asByte == 0) {
|
||||
attributes->reverbBits = chan->reverbBits;
|
||||
if (seqLayer->stereo.asByte == 0) {
|
||||
attrs->stereo = chan->stereo;
|
||||
} else {
|
||||
attributes->reverbBits = seqLayer->reverbBits;
|
||||
attrs->stereo = seqLayer->stereo;
|
||||
}
|
||||
note->playbackState.priority = chan->someOtherPriority;
|
||||
} else {
|
||||
attributes->reverbBits = seqLayer->reverbBits;
|
||||
attrs->stereo = seqLayer->stereo;
|
||||
note->playbackState.priority = 1;
|
||||
}
|
||||
|
||||
|
@ -767,12 +767,12 @@ void Audio_NoteInitForLayer(Note* note, SequenceChannelLayer* seqLayer) {
|
|||
sub->sound.audioBankSound = seqLayer->sound;
|
||||
|
||||
if (instId >= 0x80 && instId < 0xC0) {
|
||||
sub->bitField1.s.bit2 = true;
|
||||
sub->bitField1.s.isSyntheticWave = true;
|
||||
} else {
|
||||
sub->bitField1.s.bit2 = false;
|
||||
sub->bitField1.s.isSyntheticWave = false;
|
||||
}
|
||||
|
||||
if (sub->bitField1.s.bit2) {
|
||||
if (sub->bitField1.s.isSyntheticWave) {
|
||||
Audio_BuildSyntheticWave(note, seqLayer, instId);
|
||||
}
|
||||
|
||||
|
|
|
@ -120,7 +120,7 @@ void Audio_SequenceChannelInit(SequenceChannel* seqChannel) {
|
|||
seqChannel->transposition = 0;
|
||||
seqChannel->largeNotes = false;
|
||||
seqChannel->bookOffset = 0;
|
||||
seqChannel->reverbBits.asByte = 0;
|
||||
seqChannel->stereo.asByte = 0;
|
||||
seqChannel->changes.asByte = 0xFF;
|
||||
seqChannel->scriptState.depth = 0;
|
||||
seqChannel->newPan = 0x40;
|
||||
|
@ -144,7 +144,7 @@ void Audio_SequenceChannelInit(SequenceChannel* seqChannel) {
|
|||
seqChannel->vibratoRateChangeDelay = 0;
|
||||
seqChannel->vibratoExtentChangeDelay = 0;
|
||||
seqChannel->vibratoDelay = 0;
|
||||
seqChannel->unk_CC = NULL;
|
||||
seqChannel->filter = NULL;
|
||||
seqChannel->unk_20 = 0;
|
||||
seqChannel->unk_0F = 0;
|
||||
seqChannel->volume = 1.0f;
|
||||
|
@ -186,7 +186,7 @@ s32 Audio_SeqChannelSetLayer(SequenceChannel* seqChannel, s32 layerIdx) {
|
|||
layer->ignoreDrumPan = false;
|
||||
layer->bit1 = false;
|
||||
layer->notePropertiesNeedInit = false;
|
||||
layer->reverbBits.asByte = 0;
|
||||
layer->stereo.asByte = 0;
|
||||
layer->portamento.mode = 0;
|
||||
layer->scriptState.depth = 0;
|
||||
layer->noteDuration = 0x80;
|
||||
|
@ -427,8 +427,8 @@ void func_800E9ED8(SequenceChannelLayer* layer) {
|
|||
}
|
||||
|
||||
s32 func_800E9F64(SequenceChannelLayer* layer, s32 arg1) {
|
||||
if (!layer->stopSomething && layer->sound != NULL && layer->sound->sample->bits4 == 2 &&
|
||||
layer->sound->sample->bits2 != 0) {
|
||||
if (!layer->stopSomething && layer->sound != NULL && layer->sound->sample->codec == 2 &&
|
||||
layer->sound->sample->medium != 0) {
|
||||
layer->stopSomething = true;
|
||||
return -1;
|
||||
}
|
||||
|
@ -587,7 +587,7 @@ s32 func_800EA0C0(SequenceChannelLayer* layer) {
|
|||
break;
|
||||
|
||||
case 0xCD:
|
||||
layer->reverbBits.asByte = Audio_M64ReadU8(state);
|
||||
layer->stereo.asByte = Audio_M64ReadU8(state);
|
||||
break;
|
||||
|
||||
case 0xCE: {
|
||||
|
@ -1212,7 +1212,7 @@ void Audio_SequenceChannelProcessScript(SequenceChannel* channel) {
|
|||
} else {
|
||||
channel->stereoHeadsetEffects = false;
|
||||
}
|
||||
channel->reverbBits.asByte = command & 0x7F;
|
||||
channel->stereo.asByte = command & 0x7F;
|
||||
break;
|
||||
case 0xD1:
|
||||
command = (u8)parameters[0];
|
||||
|
@ -1275,7 +1275,7 @@ void Audio_SequenceChannelProcessScript(SequenceChannel* channel) {
|
|||
channel->vibratoRateTarget = 0;
|
||||
channel->vibratoRateStart = 0;
|
||||
channel->vibratoRateChangeDelay = 0;
|
||||
channel->unk_CC = NULL;
|
||||
channel->filter = NULL;
|
||||
channel->unk_0C = 0;
|
||||
channel->adsr.sustain = 0;
|
||||
channel->velocityRandomVariance = 0;
|
||||
|
@ -1295,18 +1295,18 @@ void Audio_SequenceChannelProcessScript(SequenceChannel* channel) {
|
|||
case 0xB0:
|
||||
offset = (u16)parameters[0];
|
||||
data = seqPlayer->seqData + offset;
|
||||
channel->unk_CC = (s16*)data;
|
||||
channel->filter = (s16*)data;
|
||||
break;
|
||||
case 0xB1:
|
||||
channel->unk_CC = NULL;
|
||||
channel->filter = NULL;
|
||||
break;
|
||||
case 0xB3:
|
||||
command = parameters[0];
|
||||
|
||||
if (channel->unk_CC != NULL) {
|
||||
if (channel->filter != NULL) {
|
||||
lowBits = (command >> 4) & 0xF;
|
||||
command &= 0xF;
|
||||
func_800DF688(channel->unk_CC, lowBits, command);
|
||||
func_800DF688(channel->filter, lowBits, command);
|
||||
}
|
||||
break;
|
||||
case 0xB2:
|
||||
|
@ -1676,11 +1676,11 @@ void Audio_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) {
|
|||
case 0xC4:
|
||||
command = Audio_M64ReadU8(seqScript);
|
||||
if (command == 0xFF) {
|
||||
command = seqPlayer->seqVariationEu;
|
||||
command = seqPlayer->playerIndex;
|
||||
}
|
||||
commandLow = Audio_M64ReadU8(seqScript);
|
||||
func_800E20D4(command, commandLow, 0);
|
||||
if (command == (u8)seqPlayer->seqVariationEu) {
|
||||
if (command == (u8)seqPlayer->playerIndex) {
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -18,7 +18,7 @@ typedef enum {
|
|||
CHAN_UPD_VIBE_X32, // 11
|
||||
CHAN_UPD_UNK_0F, // 12
|
||||
CHAN_UPD_UNK_20, // 13
|
||||
CHAN_UPD_REVERB_FLG // 14
|
||||
CHAN_UPD_STEREO // 14
|
||||
} ChannelUpdateType;
|
||||
|
||||
void func_800E6300(SequenceChannel* channel, AudioCmd* arg1);
|
||||
|
@ -704,8 +704,8 @@ void func_800E6300(SequenceChannel* channel, AudioCmd* cmd) {
|
|||
case CHAN_UPD_UNK_20:
|
||||
channel->unk_20 = cmd->asUShort;
|
||||
return;
|
||||
case CHAN_UPD_REVERB_FLG:
|
||||
channel->reverbBits.asByte = cmd->asUbyte;
|
||||
case CHAN_UPD_STEREO:
|
||||
channel->stereo.asByte = cmd->asUbyte;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -792,10 +792,10 @@ s32 func_800E66C0(s32 arg0) {
|
|||
if (temp_a2->adsr.action.s.state != 0) {
|
||||
if (arg0 >= 2) {
|
||||
sound = temp_a3->sound.audioBankSound;
|
||||
if (sound == NULL || temp_a3->bitField1.s.bit2) {
|
||||
if (sound == NULL || temp_a3->bitField1.s.isSyntheticWave) {
|
||||
continue;
|
||||
}
|
||||
if (sound->sample->bits2 == 0) {
|
||||
if (sound->sample->medium == 0) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ typedef struct {
|
|||
f32 freqScale;
|
||||
s8 reverb;
|
||||
s8 panSigned;
|
||||
s8 reverbFlg;
|
||||
s8 stereoBits;
|
||||
u8 unk_0B;
|
||||
u8 unk_0C;
|
||||
} unk_s1;
|
||||
|
@ -2754,7 +2754,7 @@ void Audio_SetSoundProperties(u8 bankIdx, u8 entryIdx, u8 channelIdx) {
|
|||
s8 reverb = 0;
|
||||
f32 freqScale = 1.0f;
|
||||
s8 panSigned = 0x40;
|
||||
u8 reverbFlg = 0;
|
||||
u8 stereoBits = 0;
|
||||
u8 sp39 = 0;
|
||||
s8 sp38 = 0;
|
||||
f32 sp34;
|
||||
|
@ -2781,17 +2781,17 @@ void Audio_SetSoundProperties(u8 bankIdx, u8 entryIdx, u8 channelIdx) {
|
|||
sp34 = D_801305C4[(entry->unk_26 & 0x400) >> 10];
|
||||
if (!(entry->unk_26 & 0x800)) {
|
||||
if (*entry->posZ < sp34) {
|
||||
reverbFlg = 0x10;
|
||||
stereoBits = 0x10;
|
||||
}
|
||||
|
||||
if ((D_8016B8B8[channelIdx].reverbFlg ^ reverbFlg) & 0x10) {
|
||||
if ((D_8016B8B8[channelIdx].stereoBits ^ stereoBits) & 0x10) {
|
||||
if (panSigned < 0x40) {
|
||||
reverbFlg = D_8016B8B8[channelIdx].reverbFlg ^ 0x14;
|
||||
stereoBits = D_8016B8B8[channelIdx].stereoBits ^ 0x14;
|
||||
} else {
|
||||
reverbFlg = D_8016B8B8[channelIdx].reverbFlg ^ 0x18;
|
||||
stereoBits = D_8016B8B8[channelIdx].stereoBits ^ 0x18;
|
||||
}
|
||||
} else {
|
||||
reverbFlg = D_8016B8B8[channelIdx].reverbFlg;
|
||||
stereoBits = D_8016B8B8[channelIdx].stereoBits;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2828,9 +2828,9 @@ void Audio_SetSoundProperties(u8 bankIdx, u8 entryIdx, u8 channelIdx) {
|
|||
Audio_QueueCmdF32(0x4020000 | (channelIdx << 8), freqScale);
|
||||
D_8016B8B8[channelIdx].freqScale = freqScale;
|
||||
}
|
||||
if (reverbFlg != D_8016B8B8[channelIdx].reverbFlg) {
|
||||
Audio_QueueCmdS8(0xE020000 | (channelIdx << 8), reverbFlg | 0x10);
|
||||
D_8016B8B8[channelIdx].reverbFlg = reverbFlg;
|
||||
if (stereoBits != D_8016B8B8[channelIdx].stereoBits) {
|
||||
Audio_QueueCmdS8(0xE020000 | (channelIdx << 8), stereoBits | 0x10);
|
||||
D_8016B8B8[channelIdx].stereoBits = stereoBits;
|
||||
}
|
||||
if (sp39 != D_8016B8B8[channelIdx].unk_0B) {
|
||||
// CHAN_UPD_SCRIPT_IO (slot 3)
|
||||
|
@ -2860,7 +2860,7 @@ void func_800F3ED4(void) {
|
|||
t->freqScale = 1.0f;
|
||||
t->reverb = 0;
|
||||
t->panSigned = 0x40;
|
||||
t->reverbFlg = 0;
|
||||
t->stereoBits = 0;
|
||||
t->unk_0B = 0xFF;
|
||||
t->unk_0C = 0xFF;
|
||||
}
|
||||
|
|
|
@ -283,3 +283,8 @@ void UCodeDisas_RegisterUCode(UCodeDisas* this, s32 count, UCodeInfo* ucodeArray
|
|||
void UCodeDisas_SetCurUCode(UCodeDisas* this, void* ptr) {
|
||||
UCodeDisas_SetCurUCodeImpl(this, ptr);
|
||||
}
|
||||
|
||||
// 4 bytes of nops, separating this file from audio_synthesis and padding .text
|
||||
// to a 32-byte boundary. Unclear what this comes from... maybe the audio
|
||||
// library was built separately and aligned to 32 bytes?
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/ucode_disas/pad_800DACB0.s")
|
||||
|
|
Loading…
Add table
Reference in a new issue