Merge pull request #149 from DavidSM64/doc

Decompiled seqplayer.c
This commit is contained in:
David Benepe
2021-07-25 22:13:34 -05:00
committed by GitHub
19 changed files with 337 additions and 694 deletions
@@ -1,31 +0,0 @@
glabel __initChanState
/* 00BA90 8000AE90 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 00BA94 8000AE94 AFBF0024 */ sw $ra, 0x24($sp)
/* 00BA98 8000AE98 AFB20020 */ sw $s2, 0x20($sp)
/* 00BA9C 8000AE9C AFB1001C */ sw $s1, 0x1c($sp)
/* 00BAA0 8000AEA0 AFB00018 */ sw $s0, 0x18($sp)
/* 00BAA4 8000AEA4 908E0034 */ lbu $t6, 0x34($a0)
/* 00BAA8 8000AEA8 00808825 */ move $s1, $a0
/* 00BAAC 8000AEAC 19C0000D */ blez $t6, .L8000AEE4
/* 00BAB0 8000AEB0 00008025 */ move $s0, $zero
/* 00BAB4 8000AEB4 00009025 */ move $s2, $zero
.L8000AEB8:
/* 00BAB8 8000AEB8 8E2F0060 */ lw $t7, 0x60($s1)
/* 00BABC 8000AEBC 02202025 */ move $a0, $s1
/* 00BAC0 8000AEC0 01F2C021 */ addu $t8, $t7, $s2
/* 00BAC4 8000AEC4 AF000000 */ sw $zero, ($t8)
/* 00BAC8 8000AEC8 0C002B7D */ jal __resetPerfChanState
/* 00BACC 8000AECC 02002825 */ move $a1, $s0
/* 00BAD0 8000AED0 92390034 */ lbu $t9, 0x34($s1)
/* 00BAD4 8000AED4 26100001 */ addiu $s0, $s0, 1
/* 00BAD8 8000AED8 0219082A */ slt $at, $s0, $t9
/* 00BADC 8000AEDC 1420FFF6 */ bnez $at, .L8000AEB8
/* 00BAE0 8000AEE0 26520014 */ addiu $s2, $s2, 0x14
.L8000AEE4:
/* 00BAE4 8000AEE4 8FBF0024 */ lw $ra, 0x24($sp)
/* 00BAE8 8000AEE8 8FB00018 */ lw $s0, 0x18($sp)
/* 00BAEC 8000AEEC 8FB1001C */ lw $s1, 0x1c($sp)
/* 00BAF0 8000AEF0 8FB20020 */ lw $s2, 0x20($sp)
/* 00BAF4 8000AEF4 03E00008 */ jr $ra
/* 00BAF8 8000AEF8 27BD0028 */ addiu $sp, $sp, 0x28
@@ -1,52 +0,0 @@
glabel __initFromBank
/* 00B8E0 8000ACE0 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 00B8E4 8000ACE4 AFB20020 */ sw $s2, 0x20($sp)
/* 00B8E8 8000ACE8 00809025 */ move $s2, $a0
/* 00B8EC 8000ACEC AFBF0024 */ sw $ra, 0x24($sp)
/* 00B8F0 8000ACF0 AFB1001C */ sw $s1, 0x1c($sp)
/* 00B8F4 8000ACF4 AFB00018 */ sw $s0, 0x18($sp)
/* 00B8F8 8000ACF8 AFA5002C */ sw $a1, 0x2c($sp)
/* 00B8FC 8000ACFC 00A01025 */ move $v0, $a1
.L8000AD00:
/* 00B900 8000AD00 8C51000C */ lw $s1, 0xc($v0)
/* 00B904 8000AD04 24420004 */ addiu $v0, $v0, 4
/* 00B908 8000AD08 1220FFFD */ beqz $s1, .L8000AD00
/* 00B90C 8000AD0C 00000000 */ nop
/* 00B910 8000AD10 924E0034 */ lbu $t6, 0x34($s2)
/* 00B914 8000AD14 00008025 */ move $s0, $zero
/* 00B918 8000AD18 19C0000C */ blez $t6, .L8000AD4C
/* 00B91C 8000AD1C 02402025 */ move $a0, $s2
.L8000AD20:
/* 00B920 8000AD20 0C002B7D */ jal __resetPerfChanState
/* 00B924 8000AD24 02002825 */ move $a1, $s0
/* 00B928 8000AD28 02402025 */ move $a0, $s2
/* 00B92C 8000AD2C 02202825 */ move $a1, $s1
/* 00B930 8000AD30 0C002B66 */ jal __setInstChanState
/* 00B934 8000AD34 02003025 */ move $a2, $s0
/* 00B938 8000AD38 924F0034 */ lbu $t7, 0x34($s2)
/* 00B93C 8000AD3C 26100001 */ addiu $s0, $s0, 1
/* 00B940 8000AD40 020F082A */ slt $at, $s0, $t7
/* 00B944 8000AD44 1420FFF6 */ bnez $at, .L8000AD20
/* 00B948 8000AD48 02402025 */ move $a0, $s2
.L8000AD4C:
/* 00B94C 8000AD4C 8FB8002C */ lw $t8, 0x2c($sp)
/* 00B950 8000AD50 02402025 */ move $a0, $s2
/* 00B954 8000AD54 8F190008 */ lw $t9, 8($t8)
/* 00B958 8000AD58 00000000 */ nop
/* 00B95C 8000AD5C 13200009 */ beqz $t9, .L8000AD84
/* 00B960 8000AD60 8FBF0024 */ lw $ra, 0x24($sp)
/* 00B964 8000AD64 0C002B7D */ jal __resetPerfChanState
/* 00B968 8000AD68 02002825 */ move $a1, $s0
/* 00B96C 8000AD6C 8FA8002C */ lw $t0, 0x2c($sp)
/* 00B970 8000AD70 02402025 */ move $a0, $s2
/* 00B974 8000AD74 8D050008 */ lw $a1, 8($t0)
/* 00B978 8000AD78 0C002B66 */ jal __setInstChanState
/* 00B97C 8000AD7C 24060009 */ li $a2, 9
/* 00B980 8000AD80 8FBF0024 */ lw $ra, 0x24($sp)
.L8000AD84:
/* 00B984 8000AD84 8FB00018 */ lw $s0, 0x18($sp)
/* 00B988 8000AD88 8FB1001C */ lw $s1, 0x1c($sp)
/* 00B98C 8000AD8C 8FB20020 */ lw $s2, 0x20($sp)
/* 00B990 8000AD90 03E00008 */ jr $ra
/* 00B994 8000AD94 27BD0028 */ addiu $sp, $sp, 0x28
@@ -1,84 +0,0 @@
glabel __lookupSoundQuick
/* 00B4D0 8000A8D0 27BDFFF8 */ addiu $sp, $sp, -8
/* 00B4D4 8000A8D4 30EF00FF */ andi $t7, $a3, 0xff
/* 00B4D8 8000A8D8 AFB00004 */ sw $s0, 4($sp)
/* 00B4DC 8000A8DC AFA5000C */ sw $a1, 0xc($sp)
/* 00B4E0 8000A8E0 AFA60010 */ sw $a2, 0x10($sp)
/* 00B4E4 8000A8E4 AFA70014 */ sw $a3, 0x14($sp)
/* 00B4E8 8000A8E8 000FC880 */ sll $t9, $t7, 2
/* 00B4EC 8000A8EC 8C980060 */ lw $t8, 0x60($a0)
/* 00B4F0 8000A8F0 032FC821 */ addu $t9, $t9, $t7
/* 00B4F4 8000A8F4 0019C880 */ sll $t9, $t9, 2
/* 00B4F8 8000A8F8 03195821 */ addu $t3, $t8, $t9
/* 00B4FC 8000A8FC 8D620000 */ lw $v0, ($t3)
/* 00B500 8000A900 30D000FF */ andi $s0, $a2, 0xff
/* 00B504 8000A904 8448000E */ lh $t0, 0xe($v0)
/* 00B508 8000A908 30AE00FF */ andi $t6, $a1, 0xff
/* 00B50C 8000A90C 19000036 */ blez $t0, .L8000A9E8
/* 00B510 8000A910 24030001 */ li $v1, 1
/* 00B514 8000A914 01C04825 */ move $t1, $t6
/* 00B518 8000A918 00682821 */ addu $a1, $v1, $t0
.L8000A91C:
/* 00B51C 8000A91C 04A10003 */ bgez $a1, .L8000A92C
/* 00B520 8000A920 00056043 */ sra $t4, $a1, 1
/* 00B524 8000A924 24A10001 */ addiu $at, $a1, 1
/* 00B528 8000A928 00016043 */ sra $t4, $at, 1
.L8000A92C:
/* 00B52C 8000A92C 000C6880 */ sll $t5, $t4, 2
/* 00B530 8000A930 004D7021 */ addu $t6, $v0, $t5
/* 00B534 8000A934 8DC7000C */ lw $a3, 0xc($t6)
/* 00B538 8000A938 01802025 */ move $a0, $t4
/* 00B53C 8000A93C 8CE60004 */ lw $a2, 4($a3)
/* 00B540 8000A940 00000000 */ nop
/* 00B544 8000A944 90CA0002 */ lbu $t2, 2($a2)
/* 00B548 8000A948 00000000 */ nop
/* 00B54C 8000A94C 012A082A */ slt $at, $t1, $t2
/* 00B550 8000A950 14200013 */ bnez $at, .L8000A9A0
/* 00B554 8000A954 012A082A */ slt $at, $t1, $t2
/* 00B558 8000A958 90CF0003 */ lbu $t7, 3($a2)
/* 00B55C 8000A95C 00000000 */ nop
/* 00B560 8000A960 01E9082A */ slt $at, $t7, $t1
/* 00B564 8000A964 1420000E */ bnez $at, .L8000A9A0
/* 00B568 8000A968 012A082A */ slt $at, $t1, $t2
/* 00B56C 8000A96C 90D80000 */ lbu $t8, ($a2)
/* 00B570 8000A970 02002825 */ move $a1, $s0
/* 00B574 8000A974 0218082A */ slt $at, $s0, $t8
/* 00B578 8000A978 14200009 */ bnez $at, .L8000A9A0
/* 00B57C 8000A97C 012A082A */ slt $at, $t1, $t2
/* 00B580 8000A980 90D90001 */ lbu $t9, 1($a2)
/* 00B584 8000A984 00000000 */ nop
/* 00B588 8000A988 0325082A */ slt $at, $t9, $a1
/* 00B58C 8000A98C 14200004 */ bnez $at, .L8000A9A0
/* 00B590 8000A990 012A082A */ slt $at, $t1, $t2
/* 00B594 8000A994 10000015 */ b .L8000A9EC
/* 00B598 8000A998 00E01025 */ move $v0, $a3
/* 00B59C 8000A99C 012A082A */ slt $at, $t1, $t2
.L8000A9A0:
/* 00B5A0 8000A9A0 1420000B */ bnez $at, .L8000A9D0
/* 00B5A4 8000A9A4 00000000 */ nop
/* 00B5A8 8000A9A8 90CB0000 */ lbu $t3, ($a2)
/* 00B5AC 8000A9AC 00000000 */ nop
/* 00B5B0 8000A9B0 020B082A */ slt $at, $s0, $t3
/* 00B5B4 8000A9B4 10200008 */ beqz $at, .L8000A9D8
/* 00B5B8 8000A9B8 00000000 */ nop
/* 00B5BC 8000A9BC 90CC0003 */ lbu $t4, 3($a2)
/* 00B5C0 8000A9C0 00000000 */ nop
/* 00B5C4 8000A9C4 0189082A */ slt $at, $t4, $t1
/* 00B5C8 8000A9C8 14200003 */ bnez $at, .L8000A9D8
/* 00B5CC 8000A9CC 00000000 */ nop
.L8000A9D0:
/* 00B5D0 8000A9D0 10000002 */ b .L8000A9DC
/* 00B5D4 8000A9D4 2488FFFF */ addiu $t0, $a0, -1
.L8000A9D8:
/* 00B5D8 8000A9D8 24830001 */ addiu $v1, $a0, 1
.L8000A9DC:
/* 00B5DC 8000A9DC 0103082A */ slt $at, $t0, $v1
/* 00B5E0 8000A9E0 1020FFCE */ beqz $at, .L8000A91C
/* 00B5E4 8000A9E4 00682821 */ addu $a1, $v1, $t0
.L8000A9E8:
/* 00B5E8 8000A9E8 00001025 */ move $v0, $zero
.L8000A9EC:
/* 00B5EC 8000A9EC 8FB00004 */ lw $s0, 4($sp)
/* 00B5F0 8000A9F0 03E00008 */ jr $ra
/* 00B5F4 8000A9F4 27BD0008 */ addiu $sp, $sp, 8
@@ -1,39 +0,0 @@
glabel __lookupVoice
/* 00B44C 8000A84C AFA50004 */ sw $a1, 4($sp)
/* 00B450 8000A850 AFA60008 */ sw $a2, 8($sp)
/* 00B454 8000A854 8C830064 */ lw $v1, 0x64($a0)
/* 00B458 8000A858 30CF00FF */ andi $t7, $a2, 0xff
/* 00B45C 8000A85C 01E03025 */ move $a2, $t7
/* 00B460 8000A860 10600018 */ beqz $v1, .L8000A8C4
/* 00B464 8000A864 30AE00FF */ andi $t6, $a1, 0xff
/* 00B468 8000A868 01C01025 */ move $v0, $t6
/* 00B46C 8000A86C 24070004 */ li $a3, 4
/* 00B470 8000A870 24050003 */ li $a1, 3
.L8000A874:
/* 00B474 8000A874 90780032 */ lbu $t8, 0x32($v1)
/* 00B478 8000A878 00000000 */ nop
/* 00B47C 8000A87C 1458000D */ bne $v0, $t8, .L8000A8B4
/* 00B480 8000A880 00000000 */ nop
/* 00B484 8000A884 90790031 */ lbu $t9, 0x31($v1)
/* 00B488 8000A888 00000000 */ nop
/* 00B48C 8000A88C 14D90009 */ bne $a2, $t9, .L8000A8B4
/* 00B490 8000A890 00000000 */ nop
/* 00B494 8000A894 90640035 */ lbu $a0, 0x35($v1)
/* 00B498 8000A898 00000000 */ nop
/* 00B49C 8000A89C 10A40005 */ beq $a1, $a0, .L8000A8B4
/* 00B4A0 8000A8A0 00000000 */ nop
/* 00B4A4 8000A8A4 10E40003 */ beq $a3, $a0, .L8000A8B4
/* 00B4A8 8000A8A8 00000000 */ nop
/* 00B4AC 8000A8AC 03E00008 */ jr $ra
/* 00B4B0 8000A8B0 00601025 */ move $v0, $v1
.L8000A8B4:
/* 00B4B4 8000A8B4 8C630000 */ lw $v1, ($v1)
/* 00B4B8 8000A8B8 00000000 */ nop
/* 00B4BC 8000A8BC 1460FFED */ bnez $v1, .L8000A874
/* 00B4C0 8000A8C0 00000000 */ nop
.L8000A8C4:
/* 00B4C4 8000A8C4 00001025 */ move $v0, $zero
/* 00B4C8 8000A8C8 03E00008 */ jr $ra
/* 00B4CC 8000A8CC 00000000 */ nop
@@ -1,49 +0,0 @@
glabel __mapVoice
/* 00B31C 8000A71C AFA50004 */ sw $a1, 4($sp)
/* 00B320 8000A720 AFA60008 */ sw $a2, 8($sp)
/* 00B324 8000A724 AFA7000C */ sw $a3, 0xc($sp)
/* 00B328 8000A728 90880071 */ lbu $t0, 0x71($a0)
/* 00B32C 8000A72C 90990070 */ lbu $t9, 0x70($a0)
/* 00B330 8000A730 30AE00FF */ andi $t6, $a1, 0xff
/* 00B334 8000A734 30CF00FF */ andi $t7, $a2, 0xff
/* 00B338 8000A738 30F800FF */ andi $t8, $a3, 0xff
/* 00B33C 8000A73C 8C83006C */ lw $v1, 0x6c($a0)
/* 00B340 8000A740 0328082A */ slt $at, $t9, $t0
/* 00B344 8000A744 03003825 */ move $a3, $t8
/* 00B348 8000A748 01E03025 */ move $a2, $t7
/* 00B34C 8000A74C 10200003 */ beqz $at, .L8000A75C
/* 00B350 8000A750 01C02825 */ move $a1, $t6
/* 00B354 8000A754 03E00008 */ jr $ra
/* 00B358 8000A758 00001025 */ move $v0, $zero
.L8000A75C:
/* 00B35C 8000A75C 10600017 */ beqz $v1, .L8000A7BC
/* 00B360 8000A760 00601025 */ move $v0, $v1
/* 00B364 8000A764 8C690000 */ lw $t1, ($v1)
/* 00B368 8000A768 00000000 */ nop
/* 00B36C 8000A76C AC89006C */ sw $t1, 0x6c($a0)
/* 00B370 8000A770 AC600000 */ sw $zero, ($v1)
/* 00B374 8000A774 8C8A0064 */ lw $t2, 0x64($a0)
/* 00B378 8000A778 00000000 */ nop
/* 00B37C 8000A77C 15400003 */ bnez $t2, .L8000A78C
/* 00B380 8000A780 00000000 */ nop
/* 00B384 8000A784 10000004 */ b .L8000A798
/* 00B388 8000A788 AC830064 */ sw $v1, 0x64($a0)
.L8000A78C:
/* 00B38C 8000A78C 8C8B0068 */ lw $t3, 0x68($a0)
/* 00B390 8000A790 00000000 */ nop
/* 00B394 8000A794 AD630000 */ sw $v1, ($t3)
.L8000A798:
/* 00B398 8000A798 AC830068 */ sw $v1, 0x68($a0)
/* 00B39C 8000A79C A0670031 */ sb $a3, 0x31($v1)
/* 00B3A0 8000A7A0 A0650032 */ sb $a1, 0x32($v1)
/* 00B3A4 8000A7A4 A0660033 */ sb $a2, 0x33($v1)
/* 00B3A8 8000A7A8 AC630014 */ sw $v1, 0x14($v1)
/* 00B3AC 8000A7AC 908C0071 */ lbu $t4, 0x71($a0)
/* 00B3B0 8000A7B0 00000000 */ nop
/* 00B3B4 8000A7B4 258D0001 */ addiu $t5, $t4, 1
/* 00B3B8 8000A7B8 A08D0071 */ sb $t5, 0x71($a0)
.L8000A7BC:
/* 00B3BC 8000A7BC 03E00008 */ jr $ra
/* 00B3C0 8000A7C0 00000000 */ nop
@@ -1,41 +0,0 @@
glabel __resetPerfChanState
/* 00B9F4 8000ADF4 00051080 */ sll $v0, $a1, 2
/* 00B9F8 8000ADF8 8C8E0060 */ lw $t6, 0x60($a0)
/* 00B9FC 8000ADFC 00451021 */ addu $v0, $v0, $a1
/* 00BA00 8000AE00 00021080 */ sll $v0, $v0, 2
/* 00BA04 8000AE04 01C27821 */ addu $t7, $t6, $v0
/* 00BA08 8000AE08 A1E00006 */ sb $zero, 6($t7)
/* 00BA0C 8000AE0C 8C980060 */ lw $t8, 0x60($a0)
/* 00BA10 8000AE10 24080040 */ li $t0, 64
/* 00BA14 8000AE14 0302C821 */ addu $t9, $t8, $v0
/* 00BA18 8000AE18 A320000A */ sb $zero, 0xa($t9)
/* 00BA1C 8000AE1C 8C890060 */ lw $t1, 0x60($a0)
/* 00BA20 8000AE20 2403007F */ li $v1, 127
/* 00BA24 8000AE24 01225021 */ addu $t2, $t1, $v0
/* 00BA28 8000AE28 A1480007 */ sb $t0, 7($t2)
/* 00BA2C 8000AE2C 8C8B0060 */ lw $t3, 0x60($a0)
/* 00BA30 8000AE30 240F0005 */ li $t7, 5
/* 00BA34 8000AE34 01626021 */ addu $t4, $t3, $v0
/* 00BA38 8000AE38 A1830009 */ sb $v1, 9($t4)
/* 00BA3C 8000AE3C 8C8D0060 */ lw $t5, 0x60($a0)
/* 00BA40 8000AE40 240A00C8 */ li $t2, 200
/* 00BA44 8000AE44 01A27021 */ addu $t6, $t5, $v0
/* 00BA48 8000AE48 A1C30010 */ sb $v1, 0x10($t6)
/* 00BA4C 8000AE4C 8C980060 */ lw $t8, 0x60($a0)
/* 00BA50 8000AE50 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 00BA54 8000AE54 0302C821 */ addu $t9, $t8, $v0
/* 00BA58 8000AE58 A32F0008 */ sb $t7, 8($t9)
/* 00BA5C 8000AE5C 8C890060 */ lw $t1, 0x60($a0)
/* 00BA60 8000AE60 44812000 */ mtc1 $at, $f4
/* 00BA64 8000AE64 01224021 */ addu $t0, $t1, $v0
/* 00BA68 8000AE68 A100000B */ sb $zero, 0xb($t0)
/* 00BA6C 8000AE6C 8C8B0060 */ lw $t3, 0x60($a0)
/* 00BA70 8000AE70 00000000 */ nop
/* 00BA74 8000AE74 01626021 */ addu $t4, $t3, $v0
/* 00BA78 8000AE78 A58A0004 */ sh $t2, 4($t4)
/* 00BA7C 8000AE7C 8C8D0060 */ lw $t5, 0x60($a0)
/* 00BA80 8000AE80 00000000 */ nop
/* 00BA84 8000AE84 01A27021 */ addu $t6, $t5, $v0
/* 00BA88 8000AE88 03E00008 */ jr $ra
/* 00BA8C 8000AE8C E5C4000C */ swc1 $f4, 0xc($t6)
@@ -1,83 +0,0 @@
glabel __seqpReleaseVoice
/* 00B700 8000AB00 27BDFFA0 */ addiu $sp, $sp, -0x60
/* 00B704 8000AB04 AFBF0034 */ sw $ra, 0x34($sp)
/* 00B708 8000AB08 AFB60030 */ sw $s6, 0x30($sp)
/* 00B70C 8000AB0C AFB5002C */ sw $s5, 0x2c($sp)
/* 00B710 8000AB10 AFB40028 */ sw $s4, 0x28($sp)
/* 00B714 8000AB14 AFB30024 */ sw $s3, 0x24($sp)
/* 00B718 8000AB18 AFB20020 */ sw $s2, 0x20($sp)
/* 00B71C 8000AB1C AFB1001C */ sw $s1, 0x1c($sp)
/* 00B720 8000AB20 AFB00018 */ sw $s0, 0x18($sp)
/* 00B724 8000AB24 AFA60068 */ sw $a2, 0x68($sp)
/* 00B728 8000AB28 8CB60010 */ lw $s6, 0x10($a1)
/* 00B72C 8000AB2C 0080A025 */ move $s4, $a0
/* 00B730 8000AB30 92CE0034 */ lbu $t6, 0x34($s6)
/* 00B734 8000AB34 00A0A825 */ move $s5, $a1
/* 00B738 8000AB38 15C0001C */ bnez $t6, .L8000ABAC
/* 00B73C 8000AB3C 240A0003 */ li $t2, 3
/* 00B740 8000AB40 8C900050 */ lw $s0, 0x50($a0)
/* 00B744 8000AB44 24130006 */ li $s3, 6
/* 00B748 8000AB48 12000018 */ beqz $s0, .L8000ABAC
/* 00B74C 8000AB4C 240A0003 */ li $t2, 3
.L8000AB50:
/* 00B750 8000AB50 860F000C */ lh $t7, 0xc($s0)
/* 00B754 8000AB54 8E110000 */ lw $s1, ($s0)
/* 00B758 8000AB58 166F0011 */ bne $s3, $t7, .L8000ABA0
/* 00B75C 8000AB5C 00000000 */ nop
/* 00B760 8000AB60 8E180010 */ lw $t8, 0x10($s0)
/* 00B764 8000AB64 00000000 */ nop
/* 00B768 8000AB68 16B8000D */ bne $s5, $t8, .L8000ABA0
/* 00B76C 8000AB6C 00000000 */ nop
/* 00B770 8000AB70 12200006 */ beqz $s1, .L8000AB8C
/* 00B774 8000AB74 26920048 */ addiu $s2, $s4, 0x48
/* 00B778 8000AB78 8E390008 */ lw $t9, 8($s1)
/* 00B77C 8000AB7C 8E080008 */ lw $t0, 8($s0)
/* 00B780 8000AB80 00000000 */ nop
/* 00B784 8000AB84 03284821 */ addu $t1, $t9, $t0
/* 00B788 8000AB88 AE290008 */ sw $t1, 8($s1)
.L8000AB8C:
/* 00B78C 8000AB8C 0C0321D8 */ jal alUnlink
/* 00B790 8000AB90 02002025 */ move $a0, $s0
/* 00B794 8000AB94 02002025 */ move $a0, $s0
/* 00B798 8000AB98 0C0321E4 */ jal alLink
/* 00B79C 8000AB9C 02402825 */ move $a1, $s2
.L8000ABA0:
/* 00B7A0 8000ABA0 1620FFEB */ bnez $s1, .L8000AB50
/* 00B7A4 8000ABA4 02208025 */ move $s0, $s1
/* 00B7A8 8000ABA8 240A0003 */ li $t2, 3
.L8000ABAC:
/* 00B7AC 8000ABAC A2C00033 */ sb $zero, 0x33($s6)
/* 00B7B0 8000ABB0 A2CA0034 */ sb $t2, 0x34($s6)
/* 00B7B4 8000ABB4 A2C00030 */ sb $zero, 0x30($s6)
/* 00B7B8 8000ABB8 8FAC0068 */ lw $t4, 0x68($sp)
/* 00B7BC 8000ABBC 8E8B001C */ lw $t3, 0x1c($s4)
/* 00B7C0 8000ABC0 02A02825 */ move $a1, $s5
/* 00B7C4 8000ABC4 016C6821 */ addu $t5, $t3, $t4
/* 00B7C8 8000ABC8 AECD0024 */ sw $t5, 0x24($s6)
/* 00B7CC 8000ABCC 8E840014 */ lw $a0, 0x14($s4)
/* 00B7D0 8000ABD0 00003025 */ move $a2, $zero
/* 00B7D4 8000ABD4 0C0326B8 */ jal alSynSetPriority
/* 00B7D8 8000ABD8 26920048 */ addiu $s2, $s4, 0x48
/* 00B7DC 8000ABDC 8E840014 */ lw $a0, 0x14($s4)
/* 00B7E0 8000ABE0 8FA70068 */ lw $a3, 0x68($sp)
/* 00B7E4 8000ABE4 02A02825 */ move $a1, $s5
/* 00B7E8 8000ABE8 0C032594 */ jal alSynSetVol
/* 00B7EC 8000ABEC 00003025 */ move $a2, $zero
/* 00B7F0 8000ABF0 240E0005 */ li $t6, 5
/* 00B7F4 8000ABF4 8FA60068 */ lw $a2, 0x68($sp)
/* 00B7F8 8000ABF8 A7AE0050 */ sh $t6, 0x50($sp)
/* 00B7FC 8000ABFC AFB50054 */ sw $s5, 0x54($sp)
/* 00B800 8000AC00 02402025 */ move $a0, $s2
/* 00B804 8000AC04 0C03246B */ jal alEvtqPostEvent
/* 00B808 8000AC08 27A50050 */ addiu $a1, $sp, 0x50
/* 00B80C 8000AC0C 8FBF0034 */ lw $ra, 0x34($sp)
/* 00B810 8000AC10 8FB00018 */ lw $s0, 0x18($sp)
/* 00B814 8000AC14 8FB1001C */ lw $s1, 0x1c($sp)
/* 00B818 8000AC18 8FB20020 */ lw $s2, 0x20($sp)
/* 00B81C 8000AC1C 8FB30024 */ lw $s3, 0x24($sp)
/* 00B820 8000AC20 8FB40028 */ lw $s4, 0x28($sp)
/* 00B824 8000AC24 8FB5002C */ lw $s5, 0x2c($sp)
/* 00B828 8000AC28 8FB60030 */ lw $s6, 0x30($sp)
/* 00B82C 8000AC2C 03E00008 */ jr $ra
/* 00B830 8000AC30 27BD0060 */ addiu $sp, $sp, 0x60
@@ -1,79 +0,0 @@
glabel __seqpStopOsc
/* 00BAFC 8000AEFC 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 00BB00 8000AF00 AFBF0034 */ sw $ra, 0x34($sp)
/* 00BB04 8000AF04 AFB70030 */ sw $s7, 0x30($sp)
/* 00BB08 8000AF08 AFB6002C */ sw $s6, 0x2c($sp)
/* 00BB0C 8000AF0C AFB50028 */ sw $s5, 0x28($sp)
/* 00BB10 8000AF10 AFB40024 */ sw $s4, 0x24($sp)
/* 00BB14 8000AF14 AFB30020 */ sw $s3, 0x20($sp)
/* 00BB18 8000AF18 AFB2001C */ sw $s2, 0x1c($sp)
/* 00BB1C 8000AF1C AFB10018 */ sw $s1, 0x18($sp)
/* 00BB20 8000AF20 AFB00014 */ sw $s0, 0x14($sp)
/* 00BB24 8000AF24 8C900050 */ lw $s0, 0x50($a0)
/* 00BB28 8000AF28 00A09025 */ move $s2, $a1
/* 00BB2C 8000AF2C 1200002D */ beqz $s0, .L8000AFE4
/* 00BB30 8000AF30 0080A825 */ move $s5, $a0
/* 00BB34 8000AF34 24170017 */ li $s7, 23
/* 00BB38 8000AF38 24160016 */ li $s6, 22
.L8000AF3C:
/* 00BB3C 8000AF3C 8613000C */ lh $s3, 0xc($s0)
/* 00BB40 8000AF40 8E110000 */ lw $s1, ($s0)
/* 00BB44 8000AF44 12760003 */ beq $s3, $s6, .L8000AF54
/* 00BB48 8000AF48 00000000 */ nop
/* 00BB4C 8000AF4C 16770023 */ bne $s3, $s7, .L8000AFDC
/* 00BB50 8000AF50 00000000 */ nop
.L8000AF54:
/* 00BB54 8000AF54 8E0E0010 */ lw $t6, 0x10($s0)
/* 00BB58 8000AF58 00000000 */ nop
/* 00BB5C 8000AF5C 164E001F */ bne $s2, $t6, .L8000AFDC
/* 00BB60 8000AF60 00000000 */ nop
/* 00BB64 8000AF64 8EB9007C */ lw $t9, 0x7c($s5)
/* 00BB68 8000AF68 8E040014 */ lw $a0, 0x14($s0)
/* 00BB6C 8000AF6C 0320F809 */ jalr $t9
/* 00BB70 8000AF70 26B40048 */ addiu $s4, $s5, 0x48
/* 00BB74 8000AF74 0C0321D8 */ jal alUnlink
/* 00BB78 8000AF78 02002025 */ move $a0, $s0
/* 00BB7C 8000AF7C 12200006 */ beqz $s1, .L8000AF98
/* 00BB80 8000AF80 02002025 */ move $a0, $s0
/* 00BB84 8000AF84 8E2F0008 */ lw $t7, 8($s1)
/* 00BB88 8000AF88 8E180008 */ lw $t8, 8($s0)
/* 00BB8C 8000AF8C 00000000 */ nop
/* 00BB90 8000AF90 01F84021 */ addu $t0, $t7, $t8
/* 00BB94 8000AF94 AE280008 */ sw $t0, 8($s1)
.L8000AF98:
/* 00BB98 8000AF98 0C0321E4 */ jal alLink
/* 00BB9C 8000AF9C 02802825 */ move $a1, $s4
/* 00BBA0 8000AFA0 16760006 */ bne $s3, $s6, .L8000AFBC
/* 00BBA4 8000AFA4 00000000 */ nop
/* 00BBA8 8000AFA8 92490037 */ lbu $t1, 0x37($s2)
/* 00BBAC 8000AFAC 00000000 */ nop
/* 00BBB0 8000AFB0 312A00FE */ andi $t2, $t1, 0xfe
/* 00BBB4 8000AFB4 10000005 */ b .L8000AFCC
/* 00BBB8 8000AFB8 A24A0037 */ sb $t2, 0x37($s2)
.L8000AFBC:
/* 00BBBC 8000AFBC 924B0037 */ lbu $t3, 0x37($s2)
/* 00BBC0 8000AFC0 00000000 */ nop
/* 00BBC4 8000AFC4 316C00FD */ andi $t4, $t3, 0xfd
/* 00BBC8 8000AFC8 A24C0037 */ sb $t4, 0x37($s2)
.L8000AFCC:
/* 00BBCC 8000AFCC 924D0037 */ lbu $t5, 0x37($s2)
/* 00BBD0 8000AFD0 00000000 */ nop
/* 00BBD4 8000AFD4 11A00004 */ beqz $t5, .L8000AFE8
/* 00BBD8 8000AFD8 8FBF0034 */ lw $ra, 0x34($sp)
.L8000AFDC:
/* 00BBDC 8000AFDC 1620FFD7 */ bnez $s1, .L8000AF3C
/* 00BBE0 8000AFE0 02208025 */ move $s0, $s1
.L8000AFE4:
/* 00BBE4 8000AFE4 8FBF0034 */ lw $ra, 0x34($sp)
.L8000AFE8:
/* 00BBE8 8000AFE8 8FB00014 */ lw $s0, 0x14($sp)
/* 00BBEC 8000AFEC 8FB10018 */ lw $s1, 0x18($sp)
/* 00BBF0 8000AFF0 8FB2001C */ lw $s2, 0x1c($sp)
/* 00BBF4 8000AFF4 8FB30020 */ lw $s3, 0x20($sp)
/* 00BBF8 8000AFF8 8FB40024 */ lw $s4, 0x24($sp)
/* 00BBFC 8000AFFC 8FB50028 */ lw $s5, 0x28($sp)
/* 00BC00 8000B000 8FB6002C */ lw $s6, 0x2c($sp)
/* 00BC04 8000B004 8FB70030 */ lw $s7, 0x30($sp)
/* 00BC08 8000B008 03E00008 */ jr $ra
/* 00BC0C 8000B00C 27BD0038 */ addiu $sp, $sp, 0x38
@@ -1,25 +0,0 @@
glabel __setInstChanState
/* 00B998 8000AD98 00061080 */ sll $v0, $a2, 2
/* 00B99C 8000AD9C 8C8E0060 */ lw $t6, 0x60($a0)
/* 00B9A0 8000ADA0 00461021 */ addu $v0, $v0, $a2
/* 00B9A4 8000ADA4 00021080 */ sll $v0, $v0, 2
/* 00B9A8 8000ADA8 01C27821 */ addu $t7, $t6, $v0
/* 00B9AC 8000ADAC ADE50000 */ sw $a1, ($t7)
/* 00B9B0 8000ADB0 8C990060 */ lw $t9, 0x60($a0)
/* 00B9B4 8000ADB4 90B80001 */ lbu $t8, 1($a1)
/* 00B9B8 8000ADB8 03224021 */ addu $t0, $t9, $v0
/* 00B9BC 8000ADBC A1180007 */ sb $t8, 7($t0)
/* 00B9C0 8000ADC0 8C8A0060 */ lw $t2, 0x60($a0)
/* 00B9C4 8000ADC4 90A90000 */ lbu $t1, ($a1)
/* 00B9C8 8000ADC8 01425821 */ addu $t3, $t2, $v0
/* 00B9CC 8000ADCC A1690009 */ sb $t1, 9($t3)
/* 00B9D0 8000ADD0 8C8D0060 */ lw $t5, 0x60($a0)
/* 00B9D4 8000ADD4 90AC0002 */ lbu $t4, 2($a1)
/* 00B9D8 8000ADD8 01A27021 */ addu $t6, $t5, $v0
/* 00B9DC 8000ADDC A1CC0008 */ sb $t4, 8($t6)
/* 00B9E0 8000ADE0 8C990060 */ lw $t9, 0x60($a0)
/* 00B9E4 8000ADE4 84AF000C */ lh $t7, 0xc($a1)
/* 00B9E8 8000ADE8 0322C021 */ addu $t8, $t9, $v0
/* 00B9EC 8000ADEC 03E00008 */ jr $ra
/* 00B9F0 8000ADF0 A70F0004 */ sh $t7, 4($t8)
@@ -1,43 +0,0 @@
glabel __unmapVoice
/* 00B3C4 8000A7C4 8C830064 */ lw $v1, 0x64($a0)
/* 00B3C8 8000A7C8 00001025 */ move $v0, $zero
/* 00B3CC 8000A7CC 1060001D */ beqz $v1, .L8000A844
/* 00B3D0 8000A7D0 24A6FFFC */ addiu $a2, $a1, -4
.L8000A7D4:
/* 00B3D4 8000A7D4 14660016 */ bne $v1, $a2, .L8000A830
/* 00B3D8 8000A7D8 00000000 */ nop
/* 00B3DC 8000A7DC 10400004 */ beqz $v0, .L8000A7F0
/* 00B3E0 8000A7E0 00000000 */ nop
/* 00B3E4 8000A7E4 8C6E0000 */ lw $t6, ($v1)
/* 00B3E8 8000A7E8 10000004 */ b .L8000A7FC
/* 00B3EC 8000A7EC AC4E0000 */ sw $t6, ($v0)
.L8000A7F0:
/* 00B3F0 8000A7F0 8C6F0000 */ lw $t7, ($v1)
/* 00B3F4 8000A7F4 00000000 */ nop
/* 00B3F8 8000A7F8 AC8F0064 */ sw $t7, 0x64($a0)
.L8000A7FC:
/* 00B3FC 8000A7FC 8C980068 */ lw $t8, 0x68($a0)
/* 00B400 8000A800 00000000 */ nop
/* 00B404 8000A804 14780002 */ bne $v1, $t8, .L8000A810
/* 00B408 8000A808 00000000 */ nop
/* 00B40C 8000A80C AC820068 */ sw $v0, 0x68($a0)
.L8000A810:
/* 00B410 8000A810 8C99006C */ lw $t9, 0x6c($a0)
/* 00B414 8000A814 00000000 */ nop
/* 00B418 8000A818 AC790000 */ sw $t9, ($v1)
/* 00B41C 8000A81C 90880071 */ lbu $t0, 0x71($a0)
/* 00B420 8000A820 AC83006C */ sw $v1, 0x6c($a0)
/* 00B424 8000A824 2509FFFF */ addiu $t1, $t0, -1
/* 00B428 8000A828 03E00008 */ jr $ra
/* 00B42C 8000A82C A0890071 */ sb $t1, 0x71($a0)
.L8000A830:
/* 00B430 8000A830 00601025 */ move $v0, $v1
/* 00B434 8000A834 8C630000 */ lw $v1, ($v1)
/* 00B438 8000A838 00000000 */ nop
/* 00B43C 8000A83C 1460FFE5 */ bnez $v1, .L8000A7D4
/* 00B440 8000A840 00000000 */ nop
.L8000A844:
/* 00B444 8000A844 03E00008 */ jr $ra
/* 00B448 8000A848 00000000 */ nop
@@ -1,51 +0,0 @@
glabel __voiceNeedsNoteKill
/* 00B834 8000AC34 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 00B838 8000AC38 AFBF0014 */ sw $ra, 0x14($sp)
/* 00B83C 8000AC3C AFA40030 */ sw $a0, 0x30($sp)
/* 00B840 8000AC40 8C870050 */ lw $a3, 0x50($a0)
/* 00B844 8000AC44 00004025 */ move $t0, $zero
/* 00B848 8000AC48 10E00021 */ beqz $a3, .L8000ACD0
/* 00B84C 8000AC4C 24090001 */ li $t1, 1
/* 00B850 8000AC50 24040005 */ li $a0, 5
.L8000AC54:
/* 00B854 8000AC54 8CE30008 */ lw $v1, 8($a3)
/* 00B858 8000AC58 84EF000C */ lh $t7, 0xc($a3)
/* 00B85C 8000AC5C 8CE20000 */ lw $v0, ($a3)
/* 00B860 8000AC60 148F0019 */ bne $a0, $t7, .L8000ACC8
/* 00B864 8000AC64 01034021 */ addu $t0, $t0, $v1
/* 00B868 8000AC68 8CF80010 */ lw $t8, 0x10($a3)
/* 00B86C 8000AC6C 00000000 */ nop
/* 00B870 8000AC70 14B80015 */ bne $a1, $t8, .L8000ACC8
/* 00B874 8000AC74 00C8082A */ slt $at, $a2, $t0
/* 00B878 8000AC78 10200011 */ beqz $at, .L8000ACC0
/* 00B87C 8000AC7C 00E02025 */ move $a0, $a3
/* 00B880 8000AC80 10400005 */ beqz $v0, .L8000AC98
/* 00B884 8000AC84 00000000 */ nop
/* 00B888 8000AC88 8C590008 */ lw $t9, 8($v0)
/* 00B88C 8000AC8C 00000000 */ nop
/* 00B890 8000AC90 03235021 */ addu $t2, $t9, $v1
/* 00B894 8000AC94 AC4A0008 */ sw $t2, 8($v0)
.L8000AC98:
/* 00B898 8000AC98 AFA7002C */ sw $a3, 0x2c($sp)
/* 00B89C 8000AC9C 0C0321D8 */ jal alUnlink
/* 00B8A0 8000ACA0 A3A9001F */ sb $t1, 0x1f($sp)
/* 00B8A4 8000ACA4 8FA50030 */ lw $a1, 0x30($sp)
/* 00B8A8 8000ACA8 8FA4002C */ lw $a0, 0x2c($sp)
/* 00B8AC 8000ACAC 0C0321E4 */ jal alLink
/* 00B8B0 8000ACB0 24A50048 */ addiu $a1, $a1, 0x48
/* 00B8B4 8000ACB4 93A9001F */ lbu $t1, 0x1f($sp)
/* 00B8B8 8000ACB8 10000006 */ b .L8000ACD4
/* 00B8BC 8000ACBC 8FBF0014 */ lw $ra, 0x14($sp)
.L8000ACC0:
/* 00B8C0 8000ACC0 10000003 */ b .L8000ACD0
/* 00B8C4 8000ACC4 00004825 */ move $t1, $zero
.L8000ACC8:
/* 00B8C8 8000ACC8 1440FFE2 */ bnez $v0, .L8000AC54
/* 00B8CC 8000ACCC 00403825 */ move $a3, $v0
.L8000ACD0:
/* 00B8D0 8000ACD0 8FBF0014 */ lw $ra, 0x14($sp)
.L8000ACD4:
/* 00B8D4 8000ACD4 27BD0030 */ addiu $sp, $sp, 0x30
/* 00B8D8 8000ACD8 03E00008 */ jr $ra
/* 00B8DC 8000ACDC 01201025 */ move $v0, $t1
@@ -1,13 +0,0 @@
glabel __vsDelta
/* 00B688 8000AA88 8C8E0024 */ lw $t6, 0x24($a0)
/* 00B68C 8000AA8C 240203E8 */ li $v0, 1000
/* 00B690 8000AA90 01C51823 */ subu $v1, $t6, $a1
/* 00B694 8000AA94 04600003 */ bltz $v1, .L8000AAA4
/* 00B698 8000AA98 00000000 */ nop
/* 00B69C 8000AA9C 03E00008 */ jr $ra
/* 00B6A0 8000AAA0 00601025 */ move $v0, $v1
.L8000AAA4:
/* 00B6A4 8000AAA4 03E00008 */ jr $ra
/* 00B6A8 8000AAA8 00000000 */ nop
@@ -1,25 +0,0 @@
glabel __vsPan
/* 00B6AC 8000AAAC 908F0031 */ lbu $t7, 0x31($a0)
/* 00B6B0 8000AAB0 8CAE0060 */ lw $t6, 0x60($a1)
/* 00B6B4 8000AAB4 000FC080 */ sll $t8, $t7, 2
/* 00B6B8 8000AAB8 030FC021 */ addu $t8, $t8, $t7
/* 00B6BC 8000AABC 8C890020 */ lw $t1, 0x20($a0)
/* 00B6C0 8000AAC0 0018C080 */ sll $t8, $t8, 2
/* 00B6C4 8000AAC4 01D8C821 */ addu $t9, $t6, $t8
/* 00B6C8 8000AAC8 93280007 */ lbu $t0, 7($t9)
/* 00B6CC 8000AACC 912A000C */ lbu $t2, 0xc($t1)
/* 00B6D0 8000AAD0 00000000 */ nop
/* 00B6D4 8000AAD4 010A1821 */ addu $v1, $t0, $t2
/* 00B6D8 8000AAD8 2463FFC0 */ addiu $v1, $v1, -0x40
/* 00B6DC 8000AADC 1C600003 */ bgtz $v1, .L8000AAEC
/* 00B6E0 8000AAE0 2861007F */ slti $at, $v1, 0x7f
/* 00B6E4 8000AAE4 00001825 */ move $v1, $zero
/* 00B6E8 8000AAE8 2861007F */ slti $at, $v1, 0x7f
.L8000AAEC:
/* 00B6EC 8000AAEC 14200002 */ bnez $at, .L8000AAF8
/* 00B6F0 8000AAF0 00000000 */ nop
/* 00B6F4 8000AAF4 2403007F */ li $v1, 127
.L8000AAF8:
/* 00B6F8 8000AAF8 03E00008 */ jr $ra
/* 00B6FC 8000AAFC 306200FF */ andi $v0, $v1, 0xff
@@ -1,38 +0,0 @@
glabel __vsVol
/* 00B5F8 8000A9F8 908E0036 */ lbu $t6, 0x36($a0)
/* 00B5FC 8000A9FC 908F0033 */ lbu $t7, 0x33($a0)
/* 00B600 8000AA00 90990030 */ lbu $t9, 0x30($a0)
/* 00B604 8000AA04 01CF0019 */ multu $t6, $t7
/* 00B608 8000AA08 908A0031 */ lbu $t2, 0x31($a0)
/* 00B60C 8000AA0C 8CA90060 */ lw $t1, 0x60($a1)
/* 00B610 8000AA10 000A5880 */ sll $t3, $t2, 2
/* 00B614 8000AA14 016A5821 */ addu $t3, $t3, $t2
/* 00B618 8000AA18 8C8E0020 */ lw $t6, 0x20($a0)
/* 00B61C 8000AA1C 000B5880 */ sll $t3, $t3, 2
/* 00B620 8000AA20 012B6021 */ addu $t4, $t1, $t3
/* 00B624 8000AA24 918D0009 */ lbu $t5, 9($t4)
/* 00B628 8000AA28 91CF000D */ lbu $t7, 0xd($t6)
/* 00B62C 8000AA2C 0000C012 */ mflo $t8
/* 00B630 8000AA30 00000000 */ nop
/* 00B634 8000AA34 00000000 */ nop
/* 00B638 8000AA38 03190019 */ multu $t8, $t9
/* 00B63C 8000AA3C 84B90032 */ lh $t9, 0x32($a1)
/* 00B640 8000AA40 00001812 */ mflo $v1
/* 00B644 8000AA44 00034183 */ sra $t0, $v1, 6
/* 00B648 8000AA48 01001825 */ move $v1, $t0
/* 00B64C 8000AA4C 01AF0019 */ multu $t5, $t7
/* 00B650 8000AA50 0000C012 */ mflo $t8
/* 00B654 8000AA54 00000000 */ nop
/* 00B658 8000AA58 00000000 */ nop
/* 00B65C 8000AA5C 03190019 */ multu $t8, $t9
/* 00B660 8000AA60 00003012 */ mflo $a2
/* 00B664 8000AA64 00064383 */ sra $t0, $a2, 0xe
/* 00B668 8000AA68 00000000 */ nop
/* 00B66C 8000AA6C 00680019 */ multu $v1, $t0
/* 00B670 8000AA70 00001812 */ mflo $v1
/* 00B674 8000AA74 000353C2 */ srl $t2, $v1, 0xf
/* 00B678 8000AA78 000A1400 */ sll $v0, $t2, 0x10
/* 00B67C 8000AA7C 00024C03 */ sra $t1, $v0, 0x10
/* 00B680 8000AA80 03E00008 */ jr $ra
/* 00B684 8000AA84 01201025 */ move $v0, $t1
@@ -189,9 +189,5 @@ glabel func_8000A414
/* 00B300 8000A700 27BD0038 */ addiu $sp, $sp, 0x38
/* 00B304 8000A704 03E00008 */ jr $ra
/* 00B308 8000A708 00000000 */ nop
/* 00B30C 8000A70C 00000000 */ nop
/* 00B310 8000A710 AFA40000 */ sw $a0, ($sp)
/* 00B314 8000A714 03E00008 */ jr $ra
/* 00B318 8000A718 AFA50004 */ sw $a1, 4($sp)
+18
View File
@@ -589,6 +589,20 @@ typedef struct {
f32 pitchBend; /* current pitch bend val in cents */
} ALChanState;
// Can't just replace the original with this, because alCSPGetChlVol won't match.
typedef struct {
ALInstrument *instrument; /* instrument assigned to this chan */
s16 bendRange; /* pitch bend range in cents */
ALFxId fxId; /* type of fx assigned to this chan */
ALPan pan; /* overall pan for this chan */
u8 priority; /* priority for this chan */
u8 vol; /* current volume for this chan */
u8 fxmix; /* current fx mix for this chan */
u8 sustain; /* current sustain pedal state */
f32 pitchBend; /* current pitch bend val in cents */
u8 unk10;
} ALChanState_Custom;
typedef struct ALSeq_s {
u8 *base; /* ptr to start of sequence file */
u8 *trackStart; /* ptr to first MIDI event */
@@ -673,6 +687,10 @@ typedef struct {
ALVoiceState *vAllocHead; /* list head for allocated voices */
ALVoiceState *vAllocTail; /* list tail for allocated voices */
ALVoiceState *vFreeList; /* list of free voice state structs */
u8 unk70;
u8 unk71;
u8 unk72; // Might just be padding?
u8 unk73; // Might just be padding?
ALOscInit initOsc;
ALOscUpdate updateOsc;
ALOscStop stopOsc;
+316
View File
@@ -0,0 +1,316 @@
/* The comment below is needed for this file to be picked up by generate_ld */
/* RAM_POS: 0x8000A710 */
#include "types.h"
#include "macros.h"
#include "audio_internal.h"
void __setInstChanState(ALSeqPlayer *seqp, ALInstrument *inst, s32 chan);
void __resetPerfChanState(ALSeqPlayer *seqp, s32 chan) ;
void dummy_8000A710(s32 arg0, s32 arg1) {
}
ALVoiceState *__mapVoice(ALSeqPlayer *seqp, u8 key, u8 vel, u8 channel)
{
ALVoiceState *vs = seqp->vFreeList;
if(seqp->unk70 < seqp->unk71) {
stubbed_printf("Exceeded voice limit of %d (%d)\n", seqp->unk70, seqp->unk71);
return NULL;
}
if (vs) {
seqp->vFreeList = vs->next;
vs->next = 0;
if (!seqp->vAllocHead)
seqp->vAllocHead = vs;
else
seqp->vAllocTail->next = vs;
seqp->vAllocTail = vs;
vs->channel = channel;
vs->key = key;
vs->velocity = vel;
vs->voice.clientPrivate = vs;
seqp->unk71++;
}
return vs;
}
void __unmapVoice(ALSeqPlayer *seqp, ALVoice *voice)
{
ALVoiceState *prev = 0;
ALVoiceState *vs;
for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) {
if (&vs->voice == voice) {
if (prev)
prev->next = vs->next;
else
seqp->vAllocHead = vs->next;
if (vs == seqp->vAllocTail) {
seqp->vAllocTail = prev;
}
vs->next = seqp->vFreeList;
seqp->vFreeList = vs;
seqp->unk71--;
return;
}
prev = vs;
}
}
ALVoiceState *__lookupVoice(ALSeqPlayer *seqp, u8 key, u8 channel)
{
ALVoiceState *vs;
for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) {
if ((vs->key == key) && (vs->channel == channel) &&
(vs->phase != AL_PHASE_RELEASE) && (vs->phase != AL_PHASE_SUSTREL))
return vs;
}
return 0;
}
ALSound *__lookupSoundQuick(ALSeqPlayer *seqp, u8 key, u8 vel, u8 chan)
{
ALInstrument *inst = ((ALChanState_Custom*)seqp->chanState)[chan].instrument;
s32 l = 1;
s32 r = inst->soundCount;
s32 i;
ALKeyMap *keymap;
while (r >= l) {
i = (l+r)/2;
keymap = inst->soundArray[i-1]->keyMap;
if ((key >= keymap->keyMin) && (key <= keymap->keyMax) &&
(vel >= keymap->velocityMin) && (vel <= keymap->velocityMax)) {
return inst->soundArray[i-1];
} else if ((key < keymap->keyMin) ||
((vel < keymap->velocityMin) && (key <= keymap->keyMax))) {
r = i - 1;
} else {
l = i + 1;
}
}
return 0;
}
s16 __vsVol(ALVoiceState *vs, ALSeqPlayer *seqp)
{
u32 t1, t2;
t1 = (vs->tremelo*vs->velocity*vs->envGain) >> 6;
t2 = (vs->sound->sampleVolume*seqp->vol * ((ALChanState_Custom*)seqp->chanState)[vs->channel].vol) >> 14;
t1 *= t2;
t1 >>= 15;
return((s16)t1);
}
ALMicroTime __vsDelta(ALVoiceState *vs, ALMicroTime t)
{
s32 delta = vs->envEndTime - t;
if (delta >= 0) {
return delta;
} else {
return AL_GAIN_CHANGE_TIME;
}
}
ALPan __vsPan(ALVoiceState *vs, ALSeqPlayer *seqp)
{
s32 tmp;
tmp = ((ALChanState_Custom*)seqp->chanState)[vs->channel].pan - AL_PAN_CENTER + vs->sound->samplePan;
tmp = MAX(tmp, AL_PAN_LEFT);
tmp = MIN(tmp, AL_PAN_RIGHT);
return (ALPan) tmp;
}
void __seqpReleaseVoice(ALSeqPlayer *seqp, ALVoice *voice, ALMicroTime deltaTime)
{
ALEvent evt;
ALVoiceState *vs = (ALVoiceState *)voice->clientPrivate;
if (vs->envPhase == AL_PHASE_ATTACK) {
ALLink *thisNode;
ALLink *nextNode;
ALEventListItem *thisItem, *nextItem;
thisNode = seqp->evtq.allocList.next;
while( thisNode != 0 ) {
nextNode = thisNode->next;
thisItem = (ALEventListItem *)thisNode;
nextItem = (ALEventListItem *)nextNode;
if (thisItem->evt.type == AL_SEQP_ENV_EVT) {
if(thisItem->evt.msg.vol.voice == voice) {
if( nextItem )
nextItem->delta += thisItem->delta;
alUnlink(thisNode);
alLink(thisNode, &seqp->evtq.freeList);
}
}
thisNode = nextNode;
}
}
vs->velocity = 0;
vs->envPhase = AL_PHASE_RELEASE;
vs->envGain = 0;
vs->envEndTime = seqp->curTime + deltaTime;
alSynSetPriority(seqp->drvr, voice, 0);
alSynSetVol(seqp->drvr, voice, 0, deltaTime);
evt.type = AL_NOTE_END_EVT;
evt.msg.note.voice = voice;
alEvtqPostEvent(&seqp->evtq, &evt, deltaTime);
}
u8 __voiceNeedsNoteKill (ALSeqPlayer *seqp, ALVoice *voice, ALMicroTime killTime)
{
ALLink *thisNode;
ALLink *nextNode;
ALEventListItem *thisItem;
ALMicroTime itemTime = 0;
u8 needsNoteKill = TRUE;
thisNode = seqp->evtq.allocList.next;
while (thisNode != 0)
{
nextNode = thisNode->next;
thisItem = (ALEventListItem *)thisNode;
itemTime += thisItem->delta;
if (thisItem->evt.type == AL_NOTE_END_EVT)
{
if (thisItem->evt.msg.note.voice == voice)
{
if (itemTime > killTime)
{
if ((ALEventListItem *)nextNode)
((ALEventListItem *)nextNode)->delta += thisItem->delta;
alUnlink(thisNode);
alLink(thisNode, &seqp->evtq.freeList);
}
else
needsNoteKill = FALSE;
break;
}
}
thisNode = nextNode;
}
return needsNoteKill;
}
void __initFromBank(ALSeqPlayer *seqp, ALBank *b)
{
s32 i;
ALInstrument *inst = 0;
for(i = 0; !inst ; i++)
inst = b->instArray[i];
for (i = 0; i < seqp->maxChannels; i++) {
__resetPerfChanState(seqp, i);
__setInstChanState(seqp, inst, i);
}
if (b->percussion) {
__resetPerfChanState(seqp, i);
__setInstChanState(seqp, b->percussion, 9);
}
}
void __setInstChanState(ALSeqPlayer *seqp, ALInstrument *inst, s32 chan)
{
((ALChanState_Custom*)seqp->chanState)[chan].instrument = inst;
((ALChanState_Custom*)seqp->chanState)[chan].pan = inst->pan;
((ALChanState_Custom*)seqp->chanState)[chan].vol = inst->volume;
((ALChanState_Custom*)seqp->chanState)[chan].priority = inst->priority;
((ALChanState_Custom*)seqp->chanState)[chan].bendRange = inst->bendRange;
}
void __resetPerfChanState(ALSeqPlayer *seqp, s32 chan)
{
((ALChanState_Custom*)seqp->chanState)[chan].fxId = AL_FX_NONE;
((ALChanState_Custom*)seqp->chanState)[chan].fxmix = AL_DEFAULT_FXMIX;
((ALChanState_Custom*)seqp->chanState)[chan].pan = AL_PAN_CENTER;
((ALChanState_Custom*)seqp->chanState)[chan].vol = AL_VOL_FULL;
((ALChanState_Custom*)seqp->chanState)[chan].unk10 = AL_VOL_FULL;
((ALChanState_Custom*)seqp->chanState)[chan].priority = AL_DEFAULT_PRIORITY;
((ALChanState_Custom*)seqp->chanState)[chan].sustain = 0;
((ALChanState_Custom*)seqp->chanState)[chan].bendRange = 200;
((ALChanState_Custom*)seqp->chanState)[chan].pitchBend = 1.0f;
}
void __initChanState(ALSeqPlayer *seqp)
{
int i;
for (i = 0; i < seqp->maxChannels; i++)
{
((ALChanState_Custom*)seqp->chanState)[i].instrument = 0;
__resetPerfChanState(seqp, i);
}
}
void __seqpStopOsc(ALSeqPlayer *seqp, ALVoiceState *vs)
{
ALEventListItem *thisNode,*nextNode;
s16 evtType;
thisNode = (ALEventListItem*)seqp->evtq.allocList.next;
while(thisNode)
{
nextNode = (ALEventListItem*)thisNode->node.next;
evtType = thisNode->evt.type;
if(evtType == AL_TREM_OSC_EVT || evtType == AL_VIB_OSC_EVT)
{
if(thisNode->evt.msg.osc.vs == vs)
{
(*(seqp->stopOsc))(thisNode->evt.msg.osc.oscState);
alUnlink((ALLink*)thisNode);
if(nextNode)
nextNode->delta += thisNode->delta;
alLink((ALLink*)thisNode, &seqp->evtq.freeList);
if(evtType == AL_TREM_OSC_EVT)
vs->flags = vs->flags & 0xFE;
else
vs->flags = vs->flags & 0xFD;
if(!vs->flags)
return;
}
}
thisNode = nextNode;
}
}
/* Unknown Size */
typedef struct unk8000B010 {
u8 unk00[0x70];
s8 unk70;
} unk8000B010;
void func_8000B010(unk8000B010 *arg0, s8 arg1) {
arg0->unk70 = arg1;
}
+3 -9
View File
@@ -3,6 +3,7 @@
#include "types.h"
#include "macros.h"
#include "audio_internal.h"
/************ .data ************/
@@ -17,6 +18,7 @@ const char D_800E4D18[] = "amAudioLineAddVertex: Exceeded maximum number of line
const char D_800E4D58[] = "amAudioLineAddVertex: Exceeded maximum number of line vertices (%d)\n";
const char D_800E4DA0[] = "amReverbLineAddVertex: Exceeded maximum number of lines (%d)\n";
const char D_800E4DE0[] = "amReverbLineAddVertex: Exceeded maximum number of line vertices (%d)\n";
const char D_800E4E28[] = "Audio line definition error (less than 2 vertices on line %d)\n";
const char D_800E4E68[] = "Audio line definition error (line=%d, vertex=%d)\n";
const char D_800E4E9C[] = "Reverb line definition error (less than 2 vertices on line %d)\n";
@@ -39,6 +41,7 @@ void func_80008168(void) {
GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80008174.s")
GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80008438.s")
GLOBAL_ASM("asm/non_matchings/unknown_005740/func_800090C0.s")
GLOBAL_ASM("asm/non_matchings/unknown_005740/func_800092A8.s")
GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80009558.s")
@@ -54,12 +57,3 @@ GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80009B7C.s")
GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80009D6C.s")
GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000A2E8.s")
GLOBAL_ASM("asm/non_matchings/unknown_005740/func_8000A414.s")
GLOBAL_ASM("asm/non_matchings/unknown_005740/__mapVoice.s")
GLOBAL_ASM("asm/non_matchings/unknown_005740/__unmapVoice.s")
GLOBAL_ASM("asm/non_matchings/unknown_005740/__lookupVoice.s")
GLOBAL_ASM("asm/non_matchings/unknown_005740/__lookupSoundQuick.s")
GLOBAL_ASM("asm/non_matchings/unknown_005740/__vsVol.s")
GLOBAL_ASM("asm/non_matchings/unknown_005740/__vsDelta.s")
GLOBAL_ASM("asm/non_matchings/unknown_005740/__vsPan.s")
GLOBAL_ASM("asm/non_matchings/unknown_005740/__seqpReleaseVoice.s")
GLOBAL_ASM("asm/non_matchings/unknown_005740/__voiceNeedsNoteKill.s")
-28
View File
@@ -1,28 +0,0 @@
/* The comment below is needed for this file to be picked up by generate_ld */
/* RAM_POS: 0x8000ACE0 */
#include "types.h"
#include "macros.h"
/************ .rodata ************/
const char D_800E4F30[] = "Exceeded voice limit of %d (%d)\n";
/*********************************/
GLOBAL_ASM("asm/non_matchings/unknown_005740/__initFromBank.s")
GLOBAL_ASM("asm/non_matchings/unknown_005740/__setInstChanState.s")
GLOBAL_ASM("asm/non_matchings/unknown_005740/__resetPerfChanState.s")
GLOBAL_ASM("asm/non_matchings/unknown_005740/__initChanState.s")
GLOBAL_ASM("asm/non_matchings/unknown_005740/__seqpStopOsc.s")
/* Unknown Size */
typedef struct unk8000B010 {
u8 unk00[0x70];
s8 unk70;
} unk8000B010;
void func_8000B010(unk8000B010 *arg0, s8 arg1) {
arg0->unk70 = arg1;
}