diff --git a/lib/asm/non_matchings/csplayer/__CSPHandleMIDIMsg.s b/lib/asm/non_matchings/csplayer/__CSPHandleMIDIMsg.s deleted file mode 100644 index e12f24ed..00000000 --- a/lib/asm/non_matchings/csplayer/__CSPHandleMIDIMsg.s +++ /dev/null @@ -1,896 +0,0 @@ -.late_rodata -glabel jpt_800E6CE0 -.word L80063068, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L80062C38, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800630C0, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L8006319C, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800636E0, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L80063124, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L800637CC, L80063714 - -.text -glabel __CSPHandleMIDIMsg -/* 063700 80062B00 27BDFF28 */ addiu $sp, $sp, -0xd8 -/* 063704 80062B04 AFBF003C */ sw $ra, 0x3c($sp) -/* 063708 80062B08 AFB40038 */ sw $s4, 0x38($sp) -/* 06370C 80062B0C AFB30034 */ sw $s3, 0x34($sp) -/* 063710 80062B10 AFB20030 */ sw $s2, 0x30($sp) -/* 063714 80062B14 AFB1002C */ sw $s1, 0x2c($sp) -/* 063718 80062B18 AFB00028 */ sw $s0, 0x28($sp) -/* 06371C 80062B1C 90A70008 */ lbu $a3, 8($a1) -/* 063720 80062B20 90AF0009 */ lbu $t7, 9($a1) -/* 063724 80062B24 240600B0 */ li $a2, 176 -/* 063728 80062B28 A3AF00CA */ sb $t7, 0xca($sp) -/* 06372C 80062B2C 90B3000A */ lbu $s3, 0xa($a1) -/* 063730 80062B30 30E300F0 */ andi $v1, $a3, 0xf0 -/* 063734 80062B34 30EE000F */ andi $t6, $a3, 0xf -/* 063738 80062B38 00A08025 */ move $s0, $a1 -/* 06373C 80062B3C 00809025 */ move $s2, $a0 -/* 063740 80062B40 14660027 */ bne $v1, $a2, .L80062BE0 -/* 063744 80062B44 01C03825 */ move $a3, $t6 -/* 063748 80062B48 31F100FF */ andi $s1, $t7, 0xff -/* 06374C 80062B4C 2401006A */ li $at, 106 -/* 063750 80062B50 1621001B */ bne $s1, $at, .L80062BC0 -/* 063754 80062B54 24080001 */ li $t0, 1 -/* 063758 80062B58 AFB30058 */ sw $s3, 0x58($sp) -/* 06375C 80062B5C 94980030 */ lhu $t8, 0x30($a0) -/* 063760 80062B60 02684804 */ sllv $t1, $t0, $s3 -/* 063764 80062B64 8C900064 */ lw $s0, 0x64($a0) -/* 063768 80062B68 01205027 */ not $t2, $t1 -/* 06376C 80062B6C 030A5824 */ and $t3, $t8, $t2 -/* 063770 80062B70 12000316 */ beqz $s0, .L800637CC -/* 063774 80062B74 A48B0030 */ sh $t3, 0x30($a0) -/* 063778 80062B78 8FAC0058 */ lw $t4, 0x58($sp) -.L80062B7C: -/* 06377C 80062B7C 920D0031 */ lbu $t5, 0x31($s0) -/* 063780 80062B80 00000000 */ nop -/* 063784 80062B84 158D0008 */ bne $t4, $t5, .L80062BA8 -/* 063788 80062B88 00000000 */ nop -/* 06378C 80062B8C 8E0E0020 */ lw $t6, 0x20($s0) -/* 063790 80062B90 02402025 */ move $a0, $s2 -/* 063794 80062B94 8DCF0000 */ lw $t7, ($t6) -/* 063798 80062B98 26050004 */ addiu $a1, $s0, 4 -/* 06379C 80062B9C 8DE60008 */ lw $a2, 8($t7) -/* 0637A0 80062BA0 0C002AC0 */ jal __seqpReleaseVoice -/* 0637A4 80062BA4 00000000 */ nop -.L80062BA8: -/* 0637A8 80062BA8 8E100000 */ lw $s0, ($s0) -/* 0637AC 80062BAC 00000000 */ nop -/* 0637B0 80062BB0 1600FFF2 */ bnez $s0, .L80062B7C -/* 0637B4 80062BB4 8FAC0058 */ lw $t4, 0x58($sp) -/* 0637B8 80062BB8 10000305 */ b .L800637D0 -/* 0637BC 80062BBC 8FBF003C */ lw $ra, 0x3c($sp) -.L80062BC0: -/* 0637C0 80062BC0 2401006C */ li $at, 108 -/* 0637C4 80062BC4 16210006 */ bne $s1, $at, .L80062BE0 -/* 0637C8 80062BC8 24190001 */ li $t9, 1 -/* 0637CC 80062BCC 96480030 */ lhu $t0, 0x30($s2) -/* 0637D0 80062BD0 02794804 */ sllv $t1, $t9, $s3 -/* 0637D4 80062BD4 0109C025 */ or $t8, $t0, $t1 -/* 0637D8 80062BD8 100002FC */ b .L800637CC -/* 0637DC 80062BDC A6580030 */ sh $t8, 0x30($s2) -.L80062BE0: -/* 0637E0 80062BE0 964C0030 */ lhu $t4, 0x30($s2) -/* 0637E4 80062BE4 240A0001 */ li $t2, 1 -/* 0637E8 80062BE8 00EA5804 */ sllv $t3, $t2, $a3 -/* 0637EC 80062BEC 016C6824 */ and $t5, $t3, $t4 -/* 0637F0 80062BF0 15A00007 */ bnez $t5, .L80062C10 -/* 0637F4 80062BF4 00E0A025 */ move $s4, $a3 -/* 0637F8 80062BF8 240100C0 */ li $at, 192 -/* 0637FC 80062BFC 10610005 */ beq $v1, $at, .L80062C14 -/* 063800 80062C00 246EFF80 */ addiu $t6, $v1, -0x80 -/* 063804 80062C04 10660002 */ beq $v1, $a2, .L80062C10 -/* 063808 80062C08 240100E0 */ li $at, 224 -/* 06380C 80062C0C 146102EF */ bne $v1, $at, .L800637CC -.L80062C10: -/* 063810 80062C10 246EFF80 */ addiu $t6, $v1, -0x80 -.L80062C14: -/* 063814 80062C14 2DC10061 */ sltiu $at, $t6, 0x61 -/* 063818 80062C18 102002EC */ beqz $at, .L800637CC -/* 06381C 80062C1C 000E7080 */ sll $t6, $t6, 2 -/* 063820 80062C20 3C01800E */ lui $at, %hi(jpt_800E6CE0) # $at, 0x800e -/* 063824 80062C24 002E0821 */ addu $at, $at, $t6 -/* 063828 80062C28 8C2E6CE0 */ lw $t6, %lo(jpt_800E6CE0)($at) -/* 06382C 80062C2C 00000000 */ nop -/* 063830 80062C30 01C00008 */ jr $t6 -/* 063834 80062C34 00000000 */ nop -glabel L80062C38 -/* 063838 80062C38 1260010C */ beqz $s3, .L8006306C -/* 06383C 80062C3C 93A500CA */ lbu $a1, 0xca($sp) -/* 063840 80062C40 8E4F002C */ lw $t7, 0x2c($s2) -/* 063844 80062C44 24010001 */ li $at, 1 -/* 063848 80062C48 15E102E0 */ bne $t7, $at, .L800637CC -/* 06384C 80062C4C 02402025 */ move $a0, $s2 -/* 063850 80062C50 93A500CA */ lbu $a1, 0xca($sp) -/* 063854 80062C54 326600FF */ andi $a2, $s3, 0xff -/* 063858 80062C58 A3A700CB */ sb $a3, 0xcb($sp) -/* 06385C 80062C5C 0C002A34 */ jal __lookupSoundQuick -/* 063860 80062C60 AFB000DC */ sw $s0, 0xdc($sp) -/* 063864 80062C64 104002D9 */ beqz $v0, .L800637CC -/* 063868 80062C68 AFA20090 */ sw $v0, 0x90($sp) -/* 06386C 80062C6C 93A700CB */ lbu $a3, 0xcb($sp) -/* 063870 80062C70 8E590060 */ lw $t9, 0x60($s2) -/* 063874 80062C74 00071880 */ sll $v1, $a3, 2 -/* 063878 80062C78 00671821 */ addu $v1, $v1, $a3 -/* 06387C 80062C7C 00031880 */ sll $v1, $v1, 2 -/* 063880 80062C80 03234021 */ addu $t0, $t9, $v1 -/* 063884 80062C84 91090008 */ lbu $t1, 8($t0) -/* 063888 80062C88 93A500CA */ lbu $a1, 0xca($sp) -/* 06388C 80062C8C A7A00096 */ sh $zero, 0x96($sp) -/* 063890 80062C90 A3A00098 */ sb $zero, 0x98($sp) -/* 063894 80062C94 AFA30058 */ sw $v1, 0x58($sp) -/* 063898 80062C98 02402025 */ move $a0, $s2 -/* 06389C 80062C9C 326600FF */ andi $a2, $s3, 0xff -/* 0638A0 80062CA0 0C0029C7 */ jal __mapVoice -/* 0638A4 80062CA4 A7A90094 */ sh $t1, 0x94($sp) -/* 0638A8 80062CA8 8FA30058 */ lw $v1, 0x58($sp) -/* 0638AC 80062CAC 104002C7 */ beqz $v0, .L800637CC -/* 0638B0 80062CB0 00408025 */ move $s0, $v0 -/* 0638B4 80062CB4 8E440014 */ lw $a0, 0x14($s2) -/* 0638B8 80062CB8 24450004 */ addiu $a1, $v0, 4 -/* 0638BC 80062CBC 93B100CA */ lbu $s1, 0xca($sp) -/* 0638C0 80062CC0 AFA50050 */ sw $a1, 0x50($sp) -/* 0638C4 80062CC4 AFA30058 */ sw $v1, 0x58($sp) -/* 0638C8 80062CC8 0C032542 */ jal alSynAllocVoice -/* 0638CC 80062CCC 27A60094 */ addiu $a2, $sp, 0x94 -/* 0638D0 80062CD0 8FA30058 */ lw $v1, 0x58($sp) -/* 0638D4 80062CD4 10400008 */ beqz $v0, .L80062CF8 -/* 0638D8 80062CD8 00003025 */ move $a2, $zero -/* 0638DC 80062CDC 8FB80050 */ lw $t8, 0x50($sp) -/* 0638E0 80062CE0 8E440014 */ lw $a0, 0x14($s2) -/* 0638E4 80062CE4 8F050008 */ lw $a1, 8($t8) -/* 0638E8 80062CE8 0C0196A0 */ jal func_80065A80 -/* 0638EC 80062CEC AFA30058 */ sw $v1, 0x58($sp) -/* 0638F0 80062CF0 8FA30058 */ lw $v1, 0x58($sp) -/* 0638F4 80062CF4 00000000 */ nop -.L80062CF8: -/* 0638F8 80062CF8 8FA50090 */ lw $a1, 0x90($sp) -/* 0638FC 80062CFC A2000034 */ sb $zero, 0x34($s0) -/* 063900 80062D00 AE050020 */ sw $a1, 0x20($s0) -/* 063904 80062D04 8E4A0060 */ lw $t2, 0x60($s2) -/* 063908 80062D08 240D0002 */ li $t5, 2 -/* 06390C 80062D0C 01435821 */ addu $t3, $t2, $v1 -/* 063910 80062D10 916C000B */ lbu $t4, 0xb($t3) -/* 063914 80062D14 00000000 */ nop -/* 063918 80062D18 29810040 */ slti $at, $t4, 0x40 -/* 06391C 80062D1C 14200003 */ bnez $at, .L80062D2C -/* 063920 80062D20 00000000 */ nop -/* 063924 80062D24 10000002 */ b .L80062D30 -/* 063928 80062D28 A20D0035 */ sb $t5, 0x35($s0) -.L80062D2C: -/* 06392C 80062D2C A2000035 */ sb $zero, 0x35($s0) -.L80062D30: -/* 063930 80062D30 8CA20004 */ lw $v0, 4($a1) -/* 063934 80062D34 00000000 */ nop -/* 063938 80062D38 904E0004 */ lbu $t6, 4($v0) -/* 06393C 80062D3C 80480005 */ lb $t0, 5($v0) -/* 063940 80062D40 022E7823 */ subu $t7, $s1, $t6 -/* 063944 80062D44 000FC880 */ sll $t9, $t7, 2 -/* 063948 80062D48 032FC823 */ subu $t9, $t9, $t7 -/* 06394C 80062D4C 0019C8C0 */ sll $t9, $t9, 3 -/* 063950 80062D50 032FC821 */ addu $t9, $t9, $t7 -/* 063954 80062D54 0019C880 */ sll $t9, $t9, 2 -/* 063958 80062D58 03282021 */ addu $a0, $t9, $t0 -/* 06395C 80062D5C 00044C00 */ sll $t1, $a0, 0x10 -/* 063960 80062D60 00092403 */ sra $a0, $t1, 0x10 -/* 063964 80062D64 0C032678 */ jal alCents2Ratio -/* 063968 80062D68 AFA30058 */ sw $v1, 0x58($sp) -/* 06396C 80062D6C 8FA30058 */ lw $v1, 0x58($sp) -/* 063970 80062D70 E6000028 */ swc1 $f0, 0x28($s0) -/* 063974 80062D74 8FAA0090 */ lw $t2, 0x90($sp) -/* 063978 80062D78 3C0142FE */ li $at, 0x42FE0000 # 127.000000 -/* 06397C 80062D7C 8D4B0000 */ lw $t3, ($t2) -/* 063980 80062D80 44812000 */ mtc1 $at, $f4 -/* 063984 80062D84 916C000C */ lbu $t4, 0xc($t3) -/* 063988 80062D88 00000000 */ nop -/* 06398C 80062D8C A20C0030 */ sb $t4, 0x30($s0) -/* 063990 80062D90 8FAE0090 */ lw $t6, 0x90($sp) -/* 063994 80062D94 8E4D001C */ lw $t5, 0x1c($s2) -/* 063998 80062D98 8DCF0000 */ lw $t7, ($t6) -/* 06399C 80062D9C 00000000 */ nop -/* 0639A0 80062DA0 8DF90000 */ lw $t9, ($t7) -/* 0639A4 80062DA4 A2000037 */ sb $zero, 0x37($s0) -/* 0639A8 80062DA8 01B94021 */ addu $t0, $t5, $t9 -/* 0639AC 80062DAC AE080024 */ sw $t0, 0x24($s0) -/* 0639B0 80062DB0 8E490060 */ lw $t1, 0x60($s2) -/* 0639B4 80062DB4 00000000 */ nop -/* 0639B8 80062DB8 0123C021 */ addu $t8, $t1, $v1 -/* 0639BC 80062DBC 8F110000 */ lw $s1, ($t8) -/* 0639C0 80062DC0 E7A40084 */ swc1 $f4, 0x84($sp) -/* 0639C4 80062DC4 92260004 */ lbu $a2, 4($s1) -/* 0639C8 80062DC8 00000000 */ nop -/* 0639CC 80062DCC 10C0001C */ beqz $a2, .L80062E40 -/* 0639D0 80062DD0 00000000 */ nop -/* 0639D4 80062DD4 8E420074 */ lw $v0, 0x74($s2) -/* 0639D8 80062DD8 27A4007C */ addiu $a0, $sp, 0x7c -/* 0639DC 80062DDC 10400018 */ beqz $v0, .L80062E40 -/* 0639E0 80062DE0 27A50084 */ addiu $a1, $sp, 0x84 -/* 0639E4 80062DE4 922A0006 */ lbu $t2, 6($s1) -/* 0639E8 80062DE8 92270005 */ lbu $a3, 5($s1) -/* 0639EC 80062DEC AFAA0010 */ sw $t2, 0x10($sp) -/* 0639F0 80062DF0 922B0007 */ lbu $t3, 7($s1) -/* 0639F4 80062DF4 AFA30058 */ sw $v1, 0x58($sp) -/* 0639F8 80062DF8 0040F809 */ jalr $v0 -/* 0639FC 80062DFC AFAB0014 */ sw $t3, 0x14($sp) -/* 063A00 80062E00 8FA30058 */ lw $v1, 0x58($sp) -/* 063A04 80062E04 1040000E */ beqz $v0, .L80062E40 -/* 063A08 80062E08 240C0016 */ li $t4, 22 -/* 063A0C 80062E0C 8FAE007C */ lw $t6, 0x7c($sp) -/* 063A10 80062E10 A7AC00AC */ sh $t4, 0xac($sp) -/* 063A14 80062E14 AFB000B0 */ sw $s0, 0xb0($sp) -/* 063A18 80062E18 26440048 */ addiu $a0, $s2, 0x48 -/* 063A1C 80062E1C 27A500AC */ addiu $a1, $sp, 0xac -/* 063A20 80062E20 00403025 */ move $a2, $v0 -/* 063A24 80062E24 AFA30058 */ sw $v1, 0x58($sp) -/* 063A28 80062E28 0C03246B */ jal alEvtqPostEvent -/* 063A2C 80062E2C AFAE00B4 */ sw $t6, 0xb4($sp) -/* 063A30 80062E30 920F0037 */ lbu $t7, 0x37($s0) -/* 063A34 80062E34 8FA30058 */ lw $v1, 0x58($sp) -/* 063A38 80062E38 35ED0001 */ ori $t5, $t7, 1 -/* 063A3C 80062E3C A20D0037 */ sb $t5, 0x37($s0) -.L80062E40: -/* 063A40 80062E40 4459F800 */ cfc1 $t9, $31 -/* 063A44 80062E44 24080001 */ li $t0, 1 -/* 063A48 80062E48 44C8F800 */ ctc1 $t0, $31 -/* 063A4C 80062E4C C7A60084 */ lwc1 $f6, 0x84($sp) -/* 063A50 80062E50 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 063A54 80062E54 46003224 */ cvt.w.s $f8, $f6 -/* 063A58 80062E58 26490048 */ addiu $t1, $s2, 0x48 -/* 063A5C 80062E5C 4448F800 */ cfc1 $t0, $31 -/* 063A60 80062E60 00000000 */ nop -/* 063A64 80062E64 31080078 */ andi $t0, $t0, 0x78 -/* 063A68 80062E68 11000012 */ beqz $t0, .L80062EB4 -/* 063A6C 80062E6C 00000000 */ nop -/* 063A70 80062E70 44814000 */ mtc1 $at, $f8 -/* 063A74 80062E74 24080001 */ li $t0, 1 -/* 063A78 80062E78 46083201 */ sub.s $f8, $f6, $f8 -/* 063A7C 80062E7C 3C018000 */ lui $at, 0x8000 -/* 063A80 80062E80 44C8F800 */ ctc1 $t0, $31 -/* 063A84 80062E84 00000000 */ nop -/* 063A88 80062E88 46004224 */ cvt.w.s $f8, $f8 -/* 063A8C 80062E8C 4448F800 */ cfc1 $t0, $31 -/* 063A90 80062E90 00000000 */ nop -/* 063A94 80062E94 31080078 */ andi $t0, $t0, 0x78 -/* 063A98 80062E98 15000004 */ bnez $t0, .L80062EAC -/* 063A9C 80062E9C 00000000 */ nop -/* 063AA0 80062EA0 44084000 */ mfc1 $t0, $f8 -/* 063AA4 80062EA4 10000007 */ b .L80062EC4 -/* 063AA8 80062EA8 01014025 */ or $t0, $t0, $at -.L80062EAC: -/* 063AAC 80062EAC 10000005 */ b .L80062EC4 -/* 063AB0 80062EB0 2408FFFF */ li $t0, -1 -.L80062EB4: -/* 063AB4 80062EB4 44084000 */ mfc1 $t0, $f8 -/* 063AB8 80062EB8 00000000 */ nop -/* 063ABC 80062EBC 0500FFFB */ bltz $t0, .L80062EAC -/* 063AC0 80062EC0 00000000 */ nop -.L80062EC4: -/* 063AC4 80062EC4 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 063AC8 80062EC8 44815000 */ mtc1 $at, $f10 -/* 063ACC 80062ECC A2080036 */ sb $t0, 0x36($s0) -/* 063AD0 80062ED0 E7AA0084 */ swc1 $f10, 0x84($sp) -/* 063AD4 80062ED4 92260008 */ lbu $a2, 8($s1) -/* 063AD8 80062ED8 44D9F800 */ ctc1 $t9, $31 -/* 063ADC 80062EDC 10C0001E */ beqz $a2, .L80062F58 -/* 063AE0 80062EE0 AFA9004C */ sw $t1, 0x4c($sp) -/* 063AE4 80062EE4 8E420074 */ lw $v0, 0x74($s2) -/* 063AE8 80062EE8 27A4007C */ addiu $a0, $sp, 0x7c -/* 063AEC 80062EEC 1040001A */ beqz $v0, .L80062F58 -/* 063AF0 80062EF0 27A50084 */ addiu $a1, $sp, 0x84 -/* 063AF4 80062EF4 9238000A */ lbu $t8, 0xa($s1) -/* 063AF8 80062EF8 92270009 */ lbu $a3, 9($s1) -/* 063AFC 80062EFC AFB80010 */ sw $t8, 0x10($sp) -/* 063B00 80062F00 922A000B */ lbu $t2, 0xb($s1) -/* 063B04 80062F04 AFA30058 */ sw $v1, 0x58($sp) -/* 063B08 80062F08 0040F809 */ jalr $v0 -/* 063B0C 80062F0C AFAA0014 */ sw $t2, 0x14($sp) -/* 063B10 80062F10 8FA30058 */ lw $v1, 0x58($sp) -/* 063B14 80062F14 10400010 */ beqz $v0, .L80062F58 -/* 063B18 80062F18 240B0017 */ li $t3, 23 -/* 063B1C 80062F1C 8FAC007C */ lw $t4, 0x7c($sp) -/* 063B20 80062F20 93AE00CB */ lbu $t6, 0xcb($sp) -/* 063B24 80062F24 8FA4004C */ lw $a0, 0x4c($sp) -/* 063B28 80062F28 A7AB00AC */ sh $t3, 0xac($sp) -/* 063B2C 80062F2C AFB000B0 */ sw $s0, 0xb0($sp) -/* 063B30 80062F30 27A500AC */ addiu $a1, $sp, 0xac -/* 063B34 80062F34 00403025 */ move $a2, $v0 -/* 063B38 80062F38 AFA30058 */ sw $v1, 0x58($sp) -/* 063B3C 80062F3C AFAC00B4 */ sw $t4, 0xb4($sp) -/* 063B40 80062F40 0C03246B */ jal alEvtqPostEvent -/* 063B44 80062F44 A3AE00B8 */ sb $t6, 0xb8($sp) -/* 063B48 80062F48 920F0037 */ lbu $t7, 0x37($s0) -/* 063B4C 80062F4C 8FA30058 */ lw $v1, 0x58($sp) -/* 063B50 80062F50 35ED0002 */ ori $t5, $t7, 2 -/* 063B54 80062F54 A20D0037 */ sb $t5, 0x37($s0) -.L80062F58: -/* 063B58 80062F58 C7B00084 */ lwc1 $f16, 0x84($sp) -/* 063B5C 80062F5C C6040028 */ lwc1 $f4, 0x28($s0) -/* 063B60 80062F60 E610002C */ swc1 $f16, 0x2c($s0) -/* 063B64 80062F64 8E590060 */ lw $t9, 0x60($s2) -/* 063B68 80062F68 C608002C */ lwc1 $f8, 0x2c($s0) -/* 063B6C 80062F6C 03231021 */ addu $v0, $t9, $v1 -/* 063B70 80062F70 C452000C */ lwc1 $f18, 0xc($v0) -/* 063B74 80062F74 02002025 */ move $a0, $s0 -/* 063B78 80062F78 46049182 */ mul.s $f6, $f18, $f4 -/* 063B7C 80062F7C 02402825 */ move $a1, $s2 -/* 063B80 80062F80 46083282 */ mul.s $f10, $f6, $f8 -/* 063B84 80062F84 E7AA0088 */ swc1 $f10, 0x88($sp) -/* 063B88 80062F88 9051000A */ lbu $s1, 0xa($v0) -/* 063B8C 80062F8C 0C002AAB */ jal __vsPan -/* 063B90 80062F90 00000000 */ nop -/* 063B94 80062F94 A3A200A3 */ sb $v0, 0xa3($sp) -/* 063B98 80062F98 02002025 */ move $a0, $s0 -/* 063B9C 80062F9C 0C002A7E */ jal __vsVol -/* 063BA0 80062FA0 02402825 */ move $a1, $s2 -/* 063BA4 80062FA4 8FA80090 */ lw $t0, 0x90($sp) -/* 063BA8 80062FA8 8E440014 */ lw $a0, 0x14($s2) -/* 063BAC 80062FAC 8D090000 */ lw $t1, ($t0) -/* 063BB0 80062FB0 8D060008 */ lw $a2, 8($t0) -/* 063BB4 80062FB4 8D330000 */ lw $s3, ($t1) -/* 063BB8 80062FB8 93B800A3 */ lbu $t8, 0xa3($sp) -/* 063BBC 80062FBC 8FA50050 */ lw $a1, 0x50($sp) -/* 063BC0 80062FC0 8FA70088 */ lw $a3, 0x88($sp) -/* 063BC4 80062FC4 AFB10018 */ sw $s1, 0x18($sp) -/* 063BC8 80062FC8 AFA20010 */ sw $v0, 0x10($sp) -/* 063BCC 80062FCC AFB3001C */ sw $s3, 0x1c($sp) -/* 063BD0 80062FD0 0C01970E */ jal alSynStartVoiceParams -/* 063BD4 80062FD4 AFB80014 */ sw $t8, 0x14($sp) -/* 063BD8 80062FD8 8FAB0050 */ lw $t3, 0x50($sp) -/* 063BDC 80062FDC 8FAC0090 */ lw $t4, 0x90($sp) -/* 063BE0 80062FE0 240A0006 */ li $t2, 6 -/* 063BE4 80062FE4 A7AA00AC */ sh $t2, 0xac($sp) -/* 063BE8 80062FE8 AFAB00B0 */ sw $t3, 0xb0($sp) -/* 063BEC 80062FEC 8D8E0000 */ lw $t6, ($t4) -/* 063BF0 80062FF0 8FA4004C */ lw $a0, 0x4c($sp) -/* 063BF4 80062FF4 91CF000D */ lbu $t7, 0xd($t6) -/* 063BF8 80062FF8 27A500AC */ addiu $a1, $sp, 0xac -/* 063BFC 80062FFC A3AF00B8 */ sb $t7, 0xb8($sp) -/* 063C00 80063000 8D8D0000 */ lw $t5, ($t4) -/* 063C04 80063004 02603025 */ move $a2, $s3 -/* 063C08 80063008 8DB90004 */ lw $t9, 4($t5) -/* 063C0C 8006300C 0C03246B */ jal alEvtqPostEvent -/* 063C10 80063010 AFB900B4 */ sw $t9, 0xb4($sp) -/* 063C14 80063014 8FA200DC */ lw $v0, 0xdc($sp) -/* 063C18 80063018 24080015 */ li $t0, 21 -/* 063C1C 8006301C 8C49000C */ lw $t1, 0xc($v0) -/* 063C20 80063020 36980080 */ ori $t8, $s4, 0x80 -/* 063C24 80063024 112001E9 */ beqz $t1, .L800637CC -/* 063C28 80063028 24420004 */ addiu $v0, $v0, 4 -/* 063C2C 8006302C 93AA00CA */ lbu $t2, 0xca($sp) -/* 063C30 80063030 A7A800AC */ sh $t0, 0xac($sp) -/* 063C34 80063034 A3B800B4 */ sb $t8, 0xb4($sp) -/* 063C38 80063038 A3A000B6 */ sb $zero, 0xb6($sp) -/* 063C3C 8006303C A3AA00B5 */ sb $t2, 0xb5($sp) -/* 063C40 80063040 8C4E0008 */ lw $t6, 8($v0) -/* 063C44 80063044 8E4B0024 */ lw $t3, 0x24($s2) -/* 063C48 80063048 8FA4004C */ lw $a0, 0x4c($sp) -/* 063C4C 8006304C 016E0019 */ multu $t3, $t6 -/* 063C50 80063050 27A500AC */ addiu $a1, $sp, 0xac -/* 063C54 80063054 00003012 */ mflo $a2 -/* 063C58 80063058 0C03246B */ jal alEvtqPostEvent -/* 063C5C 8006305C 00000000 */ nop -/* 063C60 80063060 100001DB */ b .L800637D0 -/* 063C64 80063064 8FBF003C */ lw $ra, 0x3c($sp) -glabel L80063068 -/* 063C68 80063068 93A500CA */ lbu $a1, 0xca($sp) -.L8006306C: -/* 063C6C 8006306C 02402025 */ move $a0, $s2 -/* 063C70 80063070 0C002A13 */ jal __lookupVoice -/* 063C74 80063074 30E600FF */ andi $a2, $a3, 0xff -/* 063C78 80063078 104001D4 */ beqz $v0, .L800637CC -/* 063C7C 8006307C 00408025 */ move $s0, $v0 -/* 063C80 80063080 904F0035 */ lbu $t7, 0x35($v0) -/* 063C84 80063084 24110002 */ li $s1, 2 -/* 063C88 80063088 162F0004 */ bne $s1, $t7, .L8006309C -/* 063C8C 8006308C 240D0003 */ li $t5, 3 -/* 063C90 80063090 240C0004 */ li $t4, 4 -/* 063C94 80063094 100001CD */ b .L800637CC -/* 063C98 80063098 A04C0035 */ sb $t4, 0x35($v0) -.L8006309C: -/* 063C9C 8006309C 8E190020 */ lw $t9, 0x20($s0) -/* 063CA0 800630A0 A20D0035 */ sb $t5, 0x35($s0) -/* 063CA4 800630A4 8F290000 */ lw $t1, ($t9) -/* 063CA8 800630A8 02402025 */ move $a0, $s2 -/* 063CAC 800630AC 8D260008 */ lw $a2, 8($t1) -/* 063CB0 800630B0 0C002AC0 */ jal __seqpReleaseVoice -/* 063CB4 800630B4 26050004 */ addiu $a1, $s0, 4 -/* 063CB8 800630B8 100001C5 */ b .L800637D0 -/* 063CBC 800630BC 8FBF003C */ lw $ra, 0x3c($sp) -glabel L800630C0 -/* 063CC0 800630C0 93A500CA */ lbu $a1, 0xca($sp) -/* 063CC4 800630C4 02402025 */ move $a0, $s2 -/* 063CC8 800630C8 0C002A13 */ jal __lookupVoice -/* 063CCC 800630CC 30E600FF */ andi $a2, $a3, 0xff -/* 063CD0 800630D0 104001BE */ beqz $v0, .L800637CC -/* 063CD4 800630D4 00408025 */ move $s0, $v0 -/* 063CD8 800630D8 A0530033 */ sb $s3, 0x33($v0) -/* 063CDC 800630DC 00402025 */ move $a0, $v0 -/* 063CE0 800630E0 0C002A7E */ jal __vsVol -/* 063CE4 800630E4 02402825 */ move $a1, $s2 -/* 063CE8 800630E8 00028C00 */ sll $s1, $v0, 0x10 -/* 063CEC 800630EC 00114403 */ sra $t0, $s1, 0x10 -/* 063CF0 800630F0 8E45001C */ lw $a1, 0x1c($s2) -/* 063CF4 800630F4 01008825 */ move $s1, $t0 -/* 063CF8 800630F8 0C002AA2 */ jal __vsDelta -/* 063CFC 800630FC 02002025 */ move $a0, $s0 -/* 063D00 80063100 00113400 */ sll $a2, $s1, 0x10 -/* 063D04 80063104 0006C403 */ sra $t8, $a2, 0x10 -/* 063D08 80063108 8E440014 */ lw $a0, 0x14($s2) -/* 063D0C 8006310C 03003025 */ move $a2, $t8 -/* 063D10 80063110 26050004 */ addiu $a1, $s0, 4 -/* 063D14 80063114 0C032594 */ jal alSynSetVol -/* 063D18 80063118 00403825 */ move $a3, $v0 -/* 063D1C 8006311C 100001AC */ b .L800637D0 -/* 063D20 80063120 8FBF003C */ lw $ra, 0x3c($sp) -glabel L80063124 -/* 063D24 80063124 8E500064 */ lw $s0, 0x64($s2) -/* 063D28 80063128 00000000 */ nop -/* 063D2C 8006312C 120001A8 */ beqz $s0, .L800637D0 -/* 063D30 80063130 8FBF003C */ lw $ra, 0x3c($sp) -.L80063134: -/* 063D34 80063134 920A0031 */ lbu $t2, 0x31($s0) -/* 063D38 80063138 93AB00CA */ lbu $t3, 0xca($sp) -/* 063D3C 8006313C 168A0011 */ bne $s4, $t2, .L80063184 -/* 063D40 80063140 02002025 */ move $a0, $s0 -/* 063D44 80063144 A20B0033 */ sb $t3, 0x33($s0) -/* 063D48 80063148 0C002A7E */ jal __vsVol -/* 063D4C 8006314C 02402825 */ move $a1, $s2 -/* 063D50 80063150 00028C00 */ sll $s1, $v0, 0x10 -/* 063D54 80063154 00117403 */ sra $t6, $s1, 0x10 -/* 063D58 80063158 8E45001C */ lw $a1, 0x1c($s2) -/* 063D5C 8006315C 01C08825 */ move $s1, $t6 -/* 063D60 80063160 0C002AA2 */ jal __vsDelta -/* 063D64 80063164 02002025 */ move $a0, $s0 -/* 063D68 80063168 00113400 */ sll $a2, $s1, 0x10 -/* 063D6C 8006316C 00067C03 */ sra $t7, $a2, 0x10 -/* 063D70 80063170 8E440014 */ lw $a0, 0x14($s2) -/* 063D74 80063174 01E03025 */ move $a2, $t7 -/* 063D78 80063178 26050004 */ addiu $a1, $s0, 4 -/* 063D7C 8006317C 0C032594 */ jal alSynSetVol -/* 063D80 80063180 00403825 */ move $a3, $v0 -.L80063184: -/* 063D84 80063184 8E100000 */ lw $s0, ($s0) -/* 063D88 80063188 00000000 */ nop -/* 063D8C 8006318C 1600FFE9 */ bnez $s0, .L80063134 -/* 063D90 80063190 00000000 */ nop -/* 063D94 80063194 1000018E */ b .L800637D0 -/* 063D98 80063198 8FBF003C */ lw $ra, 0x3c($sp) -glabel L8006319C -/* 063D9C 8006319C 93B100CA */ lbu $s1, 0xca($sp) -/* 063DA0 800631A0 24010007 */ li $at, 7 -/* 063DA4 800631A4 1221002E */ beq $s1, $at, .L80063260 -/* 063DA8 800631A8 00071880 */ sll $v1, $a3, 2 -/* 063DAC 800631AC 24010008 */ li $at, 8 -/* 063DB0 800631B0 12210087 */ beq $s1, $at, .L800633D0 -/* 063DB4 800631B4 00071880 */ sll $v1, $a3, 2 -/* 063DB8 800631B8 2401000A */ li $at, 10 -/* 063DBC 800631BC 1221000F */ beq $s1, $at, .L800631FC -/* 063DC0 800631C0 00076880 */ sll $t5, $a3, 2 -/* 063DC4 800631C4 24010010 */ li $at, 16 -/* 063DC8 800631C8 122100D5 */ beq $s1, $at, .L80063520 -/* 063DCC 800631CC 00075880 */ sll $t3, $a3, 2 -/* 063DD0 800631D0 24010040 */ li $at, 64 -/* 063DD4 800631D4 122100D8 */ beq $s1, $at, .L80063538 -/* 063DD8 800631D8 00076080 */ sll $t4, $a3, 2 -/* 063DDC 800631DC 2401005B */ li $at, 91 -/* 063DE0 800631E0 122100FF */ beq $s1, $at, .L800635E0 -/* 063DE4 800631E4 00077080 */ sll $t6, $a3, 2 -/* 063DE8 800631E8 2401005F */ li $at, 95 -/* 063DEC 800631EC 12210112 */ beq $s1, $at, .L80063638 -/* 063DF0 800631F0 00000000 */ nop -/* 063DF4 800631F4 10000176 */ b .L800637D0 -/* 063DF8 800631F8 8FBF003C */ lw $ra, 0x3c($sp) -.L800631FC: -/* 063DFC 800631FC 8E4C0060 */ lw $t4, 0x60($s2) -/* 063E00 80063200 01A76821 */ addu $t5, $t5, $a3 -/* 063E04 80063204 000D6880 */ sll $t5, $t5, 2 -/* 063E08 80063208 018DC821 */ addu $t9, $t4, $t5 -/* 063E0C 8006320C A3330007 */ sb $s3, 7($t9) -/* 063E10 80063210 8E500064 */ lw $s0, 0x64($s2) -/* 063E14 80063214 00000000 */ nop -/* 063E18 80063218 1200016D */ beqz $s0, .L800637D0 -/* 063E1C 8006321C 8FBF003C */ lw $ra, 0x3c($sp) -.L80063220: -/* 063E20 80063220 92090031 */ lbu $t1, 0x31($s0) -/* 063E24 80063224 02002025 */ move $a0, $s0 -/* 063E28 80063228 16890007 */ bne $s4, $t1, .L80063248 -/* 063E2C 8006322C 00000000 */ nop -/* 063E30 80063230 0C002AAB */ jal __vsPan -/* 063E34 80063234 02402825 */ move $a1, $s2 -/* 063E38 80063238 8E440014 */ lw $a0, 0x14($s2) -/* 063E3C 8006323C 26050004 */ addiu $a1, $s0, 4 -/* 063E40 80063240 0C0196C8 */ jal alSynSetPan -/* 063E44 80063244 304600FF */ andi $a2, $v0, 0xff -.L80063248: -/* 063E48 80063248 8E100000 */ lw $s0, ($s0) -/* 063E4C 8006324C 00000000 */ nop -/* 063E50 80063250 1600FFF3 */ bnez $s0, .L80063220 -/* 063E54 80063254 00000000 */ nop -/* 063E58 80063258 1000015D */ b .L800637D0 -/* 063E5C 8006325C 8FBF003C */ lw $ra, 0x3c($sp) -.L80063260: -/* 063E60 80063260 8E480060 */ lw $t0, 0x60($s2) -/* 063E64 80063264 00671821 */ addu $v1, $v1, $a3 -/* 063E68 80063268 00031880 */ sll $v1, $v1, 2 -/* 063E6C 8006326C 0103C021 */ addu $t8, $t0, $v1 -/* 063E70 80063270 A3130011 */ sb $s3, 0x11($t8) -/* 063E74 80063274 8E4A0060 */ lw $t2, 0x60($s2) -/* 063E78 80063278 44933000 */ mtc1 $s3, $f6 -/* 063E7C 8006327C 01431021 */ addu $v0, $t2, $v1 -/* 063E80 80063280 904B0010 */ lbu $t3, 0x10($v0) -/* 063E84 80063284 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 063E88 80063288 448B8000 */ mtc1 $t3, $f16 -/* 063E8C 8006328C 05610004 */ bgez $t3, .L800632A0 -/* 063E90 80063290 468084A0 */ cvt.s.w $f18, $f16 -/* 063E94 80063294 44812000 */ mtc1 $at, $f4 -/* 063E98 80063298 00000000 */ nop -/* 063E9C 8006329C 46049480 */ add.s $f18, $f18, $f4 -.L800632A0: -/* 063EA0 800632A0 06610005 */ bgez $s3, .L800632B8 -/* 063EA4 800632A4 46803220 */ cvt.s.w $f8, $f6 -/* 063EA8 800632A8 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 063EAC 800632AC 44815000 */ mtc1 $at, $f10 -/* 063EB0 800632B0 00000000 */ nop -/* 063EB4 800632B4 460A4200 */ add.s $f8, $f8, $f10 -.L800632B8: -/* 063EB8 800632B8 46089402 */ mul.s $f16, $f18, $f8 -/* 063EBC 800632BC 3C0142FE */ li $at, 0x42FE0000 # 127.000000 -/* 063EC0 800632C0 44812000 */ mtc1 $at, $f4 -/* 063EC4 800632C4 240F0001 */ li $t7, 1 -/* 063EC8 800632C8 46048183 */ div.s $f6, $f16, $f4 -/* 063ECC 800632CC 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 063ED0 800632D0 444EF800 */ cfc1 $t6, $31 -/* 063ED4 800632D4 44CFF800 */ ctc1 $t7, $31 -/* 063ED8 800632D8 00000000 */ nop -/* 063EDC 800632DC 460032A4 */ cvt.w.s $f10, $f6 -/* 063EE0 800632E0 444FF800 */ cfc1 $t7, $31 -/* 063EE4 800632E4 00000000 */ nop -/* 063EE8 800632E8 31EF0078 */ andi $t7, $t7, 0x78 -/* 063EEC 800632EC 11E00012 */ beqz $t7, .L80063338 -/* 063EF0 800632F0 00000000 */ nop -/* 063EF4 800632F4 44815000 */ mtc1 $at, $f10 -/* 063EF8 800632F8 240F0001 */ li $t7, 1 -/* 063EFC 800632FC 460A3281 */ sub.s $f10, $f6, $f10 -/* 063F00 80063300 3C018000 */ lui $at, 0x8000 -/* 063F04 80063304 44CFF800 */ ctc1 $t7, $31 -/* 063F08 80063308 00000000 */ nop -/* 063F0C 8006330C 460052A4 */ cvt.w.s $f10, $f10 -/* 063F10 80063310 444FF800 */ cfc1 $t7, $31 -/* 063F14 80063314 00000000 */ nop -/* 063F18 80063318 31EF0078 */ andi $t7, $t7, 0x78 -/* 063F1C 8006331C 15E00004 */ bnez $t7, .L80063330 -/* 063F20 80063320 00000000 */ nop -/* 063F24 80063324 440F5000 */ mfc1 $t7, $f10 -/* 063F28 80063328 10000007 */ b .L80063348 -/* 063F2C 8006332C 01E17825 */ or $t7, $t7, $at -.L80063330: -/* 063F30 80063330 10000005 */ b .L80063348 -/* 063F34 80063334 240FFFFF */ li $t7, -1 -.L80063338: -/* 063F38 80063338 440F5000 */ mfc1 $t7, $f10 -/* 063F3C 8006333C 00000000 */ nop -/* 063F40 80063340 05E0FFFB */ bltz $t7, .L80063330 -/* 063F44 80063344 00000000 */ nop -.L80063348: -/* 063F48 80063348 A04F0009 */ sb $t7, 9($v0) -/* 063F4C 8006334C 8E500064 */ lw $s0, 0x64($s2) -/* 063F50 80063350 44CEF800 */ ctc1 $t6, $31 -/* 063F54 80063354 1200011E */ beqz $s0, .L800637D0 -/* 063F58 80063358 8FBF003C */ lw $ra, 0x3c($sp) -.L8006335C: -/* 063F5C 8006335C 920C0031 */ lbu $t4, 0x31($s0) -/* 063F60 80063360 00000000 */ nop -/* 063F64 80063364 168C0014 */ bne $s4, $t4, .L800633B8 -/* 063F68 80063368 00000000 */ nop -/* 063F6C 8006336C 920D0034 */ lbu $t5, 0x34($s0) -/* 063F70 80063370 24010003 */ li $at, 3 -/* 063F74 80063374 11A10010 */ beq $t5, $at, .L800633B8 -/* 063F78 80063378 02002025 */ move $a0, $s0 -/* 063F7C 8006337C 0C002A7E */ jal __vsVol -/* 063F80 80063380 02402825 */ move $a1, $s2 -/* 063F84 80063384 00028C00 */ sll $s1, $v0, 0x10 -/* 063F88 80063388 0011CC03 */ sra $t9, $s1, 0x10 -/* 063F8C 8006338C 8E45001C */ lw $a1, 0x1c($s2) -/* 063F90 80063390 03208825 */ move $s1, $t9 -/* 063F94 80063394 0C002AA2 */ jal __vsDelta -/* 063F98 80063398 02002025 */ move $a0, $s0 -/* 063F9C 8006339C 00113400 */ sll $a2, $s1, 0x10 -/* 063FA0 800633A0 00064C03 */ sra $t1, $a2, 0x10 -/* 063FA4 800633A4 8E440014 */ lw $a0, 0x14($s2) -/* 063FA8 800633A8 01203025 */ move $a2, $t1 -/* 063FAC 800633AC 26050004 */ addiu $a1, $s0, 4 -/* 063FB0 800633B0 0C032594 */ jal alSynSetVol -/* 063FB4 800633B4 00403825 */ move $a3, $v0 -.L800633B8: -/* 063FB8 800633B8 8E100000 */ lw $s0, ($s0) -/* 063FBC 800633BC 00000000 */ nop -/* 063FC0 800633C0 1600FFE6 */ bnez $s0, .L8006335C -/* 063FC4 800633C4 00000000 */ nop -/* 063FC8 800633C8 10000101 */ b .L800637D0 -/* 063FCC 800633CC 8FBF003C */ lw $ra, 0x3c($sp) -.L800633D0: -/* 063FD0 800633D0 8E480060 */ lw $t0, 0x60($s2) -/* 063FD4 800633D4 00671821 */ addu $v1, $v1, $a3 -/* 063FD8 800633D8 00031880 */ sll $v1, $v1, 2 -/* 063FDC 800633DC 0103C021 */ addu $t8, $t0, $v1 -/* 063FE0 800633E0 A3130010 */ sb $s3, 0x10($t8) -/* 063FE4 800633E4 8E4A0060 */ lw $t2, 0x60($s2) -/* 063FE8 800633E8 3C0142FE */ li $at, 0x42FE0000 # 127.000000 -/* 063FEC 800633EC 01431021 */ addu $v0, $t2, $v1 -/* 063FF0 800633F0 904B0010 */ lbu $t3, 0x10($v0) -/* 063FF4 800633F4 904E0011 */ lbu $t6, 0x11($v0) -/* 063FF8 800633F8 44818000 */ mtc1 $at, $f16 -/* 063FFC 800633FC 016E0019 */ multu $t3, $t6 -/* 064000 80063400 240D0001 */ li $t5, 1 -/* 064004 80063404 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 064008 80063408 00007812 */ mflo $t7 -/* 06400C 8006340C 448F9000 */ mtc1 $t7, $f18 -/* 064010 80063410 00000000 */ nop -/* 064014 80063414 46809220 */ cvt.s.w $f8, $f18 -/* 064018 80063418 00000000 */ nop -/* 06401C 8006341C 46104103 */ div.s $f4, $f8, $f16 -/* 064020 80063420 444CF800 */ cfc1 $t4, $31 -/* 064024 80063424 44CDF800 */ ctc1 $t5, $31 -/* 064028 80063428 00000000 */ nop -/* 06402C 8006342C 460021A4 */ cvt.w.s $f6, $f4 -/* 064030 80063430 444DF800 */ cfc1 $t5, $31 -/* 064034 80063434 00000000 */ nop -/* 064038 80063438 31AD0078 */ andi $t5, $t5, 0x78 -/* 06403C 8006343C 11A00012 */ beqz $t5, .L80063488 -/* 064040 80063440 00000000 */ nop -/* 064044 80063444 44813000 */ mtc1 $at, $f6 -/* 064048 80063448 240D0001 */ li $t5, 1 -/* 06404C 8006344C 46062181 */ sub.s $f6, $f4, $f6 -/* 064050 80063450 3C018000 */ lui $at, 0x8000 -/* 064054 80063454 44CDF800 */ ctc1 $t5, $31 -/* 064058 80063458 00000000 */ nop -/* 06405C 8006345C 460031A4 */ cvt.w.s $f6, $f6 -/* 064060 80063460 444DF800 */ cfc1 $t5, $31 -/* 064064 80063464 00000000 */ nop -/* 064068 80063468 31AD0078 */ andi $t5, $t5, 0x78 -/* 06406C 8006346C 15A00004 */ bnez $t5, .L80063480 -/* 064070 80063470 00000000 */ nop -/* 064074 80063474 440D3000 */ mfc1 $t5, $f6 -/* 064078 80063478 10000007 */ b .L80063498 -/* 06407C 8006347C 01A16825 */ or $t5, $t5, $at -.L80063480: -/* 064080 80063480 10000005 */ b .L80063498 -/* 064084 80063484 240DFFFF */ li $t5, -1 -.L80063488: -/* 064088 80063488 440D3000 */ mfc1 $t5, $f6 -/* 06408C 8006348C 00000000 */ nop -/* 064090 80063490 05A0FFFB */ bltz $t5, .L80063480 -/* 064094 80063494 00000000 */ nop -.L80063498: -/* 064098 80063498 A04D0009 */ sb $t5, 9($v0) -/* 06409C 8006349C 8E500064 */ lw $s0, 0x64($s2) -/* 0640A0 800634A0 44CCF800 */ ctc1 $t4, $31 -/* 0640A4 800634A4 120000CA */ beqz $s0, .L800637D0 -/* 0640A8 800634A8 8FBF003C */ lw $ra, 0x3c($sp) -.L800634AC: -/* 0640AC 800634AC 92190031 */ lbu $t9, 0x31($s0) -/* 0640B0 800634B0 00000000 */ nop -/* 0640B4 800634B4 16990014 */ bne $s4, $t9, .L80063508 -/* 0640B8 800634B8 00000000 */ nop -/* 0640BC 800634BC 92090034 */ lbu $t1, 0x34($s0) -/* 0640C0 800634C0 24010003 */ li $at, 3 -/* 0640C4 800634C4 11210010 */ beq $t1, $at, .L80063508 -/* 0640C8 800634C8 02002025 */ move $a0, $s0 -/* 0640CC 800634CC 0C002A7E */ jal __vsVol -/* 0640D0 800634D0 02402825 */ move $a1, $s2 -/* 0640D4 800634D4 00028C00 */ sll $s1, $v0, 0x10 -/* 0640D8 800634D8 00114403 */ sra $t0, $s1, 0x10 -/* 0640DC 800634DC 8E45001C */ lw $a1, 0x1c($s2) -/* 0640E0 800634E0 01008825 */ move $s1, $t0 -/* 0640E4 800634E4 0C002AA2 */ jal __vsDelta -/* 0640E8 800634E8 02002025 */ move $a0, $s0 -/* 0640EC 800634EC 00113400 */ sll $a2, $s1, 0x10 -/* 0640F0 800634F0 0006C403 */ sra $t8, $a2, 0x10 -/* 0640F4 800634F4 8E440014 */ lw $a0, 0x14($s2) -/* 0640F8 800634F8 03003025 */ move $a2, $t8 -/* 0640FC 800634FC 26050004 */ addiu $a1, $s0, 4 -/* 064100 80063500 0C032594 */ jal alSynSetVol -/* 064104 80063504 00403825 */ move $a3, $v0 -.L80063508: -/* 064108 80063508 8E100000 */ lw $s0, ($s0) -/* 06410C 8006350C 00000000 */ nop -/* 064110 80063510 1600FFE6 */ bnez $s0, .L800634AC -/* 064114 80063514 00000000 */ nop -/* 064118 80063518 100000AD */ b .L800637D0 -/* 06411C 8006351C 8FBF003C */ lw $ra, 0x3c($sp) -.L80063520: -/* 064120 80063520 8E4A0060 */ lw $t2, 0x60($s2) -/* 064124 80063524 01675821 */ addu $t3, $t3, $a3 -/* 064128 80063528 000B5880 */ sll $t3, $t3, 2 -/* 06412C 8006352C 014B7021 */ addu $t6, $t2, $t3 -/* 064130 80063530 100000A6 */ b .L800637CC -/* 064134 80063534 A1D30008 */ sb $s3, 8($t6) -.L80063538: -/* 064138 80063538 8E4F0060 */ lw $t7, 0x60($s2) -/* 06413C 8006353C 01876021 */ addu $t4, $t4, $a3 -/* 064140 80063540 000C6080 */ sll $t4, $t4, 2 -/* 064144 80063544 01EC6821 */ addu $t5, $t7, $t4 -/* 064148 80063548 A1B3000B */ sb $s3, 0xb($t5) -/* 06414C 8006354C 8E500064 */ lw $s0, 0x64($s2) -/* 064150 80063550 24110002 */ li $s1, 2 -/* 064154 80063554 1200009E */ beqz $s0, .L800637D0 -/* 064158 80063558 8FBF003C */ lw $ra, 0x3c($sp) -.L8006355C: -/* 06415C 8006355C 92190031 */ lbu $t9, 0x31($s0) -/* 064160 80063560 00000000 */ nop -/* 064164 80063564 16990018 */ bne $s4, $t9, .L800635C8 -/* 064168 80063568 00000000 */ nop -/* 06416C 8006356C 92020035 */ lbu $v0, 0x35($s0) -/* 064170 80063570 24010003 */ li $at, 3 -/* 064174 80063574 10410014 */ beq $v0, $at, .L800635C8 -/* 064178 80063578 2A610040 */ slti $at, $s3, 0x40 -/* 06417C 8006357C 14200005 */ bnez $at, .L80063594 -/* 064180 80063580 00000000 */ nop -/* 064184 80063584 14400010 */ bnez $v0, .L800635C8 -/* 064188 80063588 24090002 */ li $t1, 2 -/* 06418C 8006358C 1000000E */ b .L800635C8 -/* 064190 80063590 A2090035 */ sb $t1, 0x35($s0) -.L80063594: -/* 064194 80063594 16220003 */ bne $s1, $v0, .L800635A4 -/* 064198 80063598 24010004 */ li $at, 4 -/* 06419C 8006359C 1000000A */ b .L800635C8 -/* 0641A0 800635A0 A2000035 */ sb $zero, 0x35($s0) -.L800635A4: -/* 0641A4 800635A4 14410008 */ bne $v0, $at, .L800635C8 -/* 0641A8 800635A8 24080003 */ li $t0, 3 -/* 0641AC 800635AC 8E180020 */ lw $t8, 0x20($s0) -/* 0641B0 800635B0 A2080035 */ sb $t0, 0x35($s0) -/* 0641B4 800635B4 8F0A0000 */ lw $t2, ($t8) -/* 0641B8 800635B8 02402025 */ move $a0, $s2 -/* 0641BC 800635BC 8D460008 */ lw $a2, 8($t2) -/* 0641C0 800635C0 0C002AC0 */ jal __seqpReleaseVoice -/* 0641C4 800635C4 26050004 */ addiu $a1, $s0, 4 -.L800635C8: -/* 0641C8 800635C8 8E100000 */ lw $s0, ($s0) -/* 0641CC 800635CC 00000000 */ nop -/* 0641D0 800635D0 1600FFE2 */ bnez $s0, .L8006355C -/* 0641D4 800635D4 00000000 */ nop -/* 0641D8 800635D8 1000007D */ b .L800637D0 -/* 0641DC 800635DC 8FBF003C */ lw $ra, 0x3c($sp) -.L800635E0: -/* 0641E0 800635E0 8E4B0060 */ lw $t3, 0x60($s2) -/* 0641E4 800635E4 01C77021 */ addu $t6, $t6, $a3 -/* 0641E8 800635E8 000E7080 */ sll $t6, $t6, 2 -/* 0641EC 800635EC 016E7821 */ addu $t7, $t3, $t6 -/* 0641F0 800635F0 A1F3000A */ sb $s3, 0xa($t7) -/* 0641F4 800635F4 8E500064 */ lw $s0, 0x64($s2) -/* 0641F8 800635F8 00000000 */ nop -/* 0641FC 800635FC 12000074 */ beqz $s0, .L800637D0 -/* 064200 80063600 8FBF003C */ lw $ra, 0x3c($sp) -.L80063604: -/* 064204 80063604 920C0031 */ lbu $t4, 0x31($s0) -/* 064208 80063608 26050004 */ addiu $a1, $s0, 4 -/* 06420C 8006360C 168C0004 */ bne $s4, $t4, .L80063620 -/* 064210 80063610 00000000 */ nop -/* 064214 80063614 8E440014 */ lw $a0, 0x14($s2) -/* 064218 80063618 0C032604 */ jal alSynSetFXMix -/* 06421C 8006361C 326600FF */ andi $a2, $s3, 0xff -.L80063620: -/* 064220 80063620 8E100000 */ lw $s0, ($s0) -/* 064224 80063624 00000000 */ nop -/* 064228 80063628 1600FFF6 */ bnez $s0, .L80063604 -/* 06422C 8006362C 00000000 */ nop -/* 064230 80063630 10000067 */ b .L800637D0 -/* 064234 80063634 8FBF003C */ lw $ra, 0x3c($sp) -.L80063638: -/* 064238 80063638 924D0034 */ lbu $t5, 0x34($s2) -/* 06423C 8006363C A2530036 */ sb $s3, 0x36($s2) -/* 064240 80063640 19A00062 */ blez $t5, .L800637CC -/* 064244 80063644 00008825 */ move $s1, $zero -/* 064248 80063648 0260A025 */ move $s4, $s3 -/* 06424C 8006364C AFA00054 */ sw $zero, 0x54($sp) -.L80063650: -/* 064250 80063650 8E590060 */ lw $t9, 0x60($s2) -/* 064254 80063654 8FA90054 */ lw $t1, 0x54($sp) -/* 064258 80063658 00000000 */ nop -/* 06425C 8006365C 03291021 */ addu $v0, $t9, $t1 -/* 064260 80063660 9048000A */ lbu $t0, 0xa($v0) -/* 064264 80063664 00000000 */ nop -/* 064268 80063668 0114082A */ slt $at, $t0, $s4 -/* 06426C 8006366C 10200012 */ beqz $at, .L800636B8 -/* 064270 80063670 8FAA0054 */ lw $t2, 0x54($sp) -/* 064274 80063674 A040000A */ sb $zero, 0xa($v0) -/* 064278 80063678 8E500064 */ lw $s0, 0x64($s2) -/* 06427C 8006367C 00000000 */ nop -/* 064280 80063680 1200000D */ beqz $s0, .L800636B8 -/* 064284 80063684 8FAA0054 */ lw $t2, 0x54($sp) -.L80063688: -/* 064288 80063688 92180031 */ lbu $t8, 0x31($s0) -/* 06428C 8006368C 26050004 */ addiu $a1, $s0, 4 -/* 064290 80063690 16380004 */ bne $s1, $t8, .L800636A4 -/* 064294 80063694 00000000 */ nop -/* 064298 80063698 8E440014 */ lw $a0, 0x14($s2) -/* 06429C 8006369C 0C032604 */ jal alSynSetFXMix -/* 0642A0 800636A0 326600FF */ andi $a2, $s3, 0xff -.L800636A4: -/* 0642A4 800636A4 8E100000 */ lw $s0, ($s0) -/* 0642A8 800636A8 00000000 */ nop -/* 0642AC 800636AC 1600FFF6 */ bnez $s0, .L80063688 -/* 0642B0 800636B0 00000000 */ nop -/* 0642B4 800636B4 8FAA0054 */ lw $t2, 0x54($sp) -.L800636B8: -/* 0642B8 800636B8 26310001 */ addiu $s1, $s1, 1 -/* 0642BC 800636BC 254B0014 */ addiu $t3, $t2, 0x14 -/* 0642C0 800636C0 AFAB0054 */ sw $t3, 0x54($sp) -/* 0642C4 800636C4 924E0034 */ lbu $t6, 0x34($s2) -/* 0642C8 800636C8 00000000 */ nop -/* 0642CC 800636CC 022E082A */ slt $at, $s1, $t6 -/* 0642D0 800636D0 1420FFDF */ bnez $at, .L80063650 -/* 0642D4 800636D4 00000000 */ nop -/* 0642D8 800636D8 1000003D */ b .L800637D0 -/* 0642DC 800636DC 8FBF003C */ lw $ra, 0x3c($sp) -glabel L800636E0 -/* 0642E0 800636E0 8E420020 */ lw $v0, 0x20($s2) -/* 0642E4 800636E4 93AF00CA */ lbu $t7, 0xca($sp) -/* 0642E8 800636E8 844C0000 */ lh $t4, ($v0) -/* 0642EC 800636EC 000F6880 */ sll $t5, $t7, 2 -/* 0642F0 800636F0 01EC082A */ slt $at, $t7, $t4 -/* 0642F4 800636F4 10200035 */ beqz $at, .L800637CC -/* 0642F8 800636F8 004DC821 */ addu $t9, $v0, $t5 -/* 0642FC 800636FC 8F25000C */ lw $a1, 0xc($t9) -/* 064300 80063700 02402025 */ move $a0, $s2 -/* 064304 80063704 0C002B66 */ jal __setInstChanState -/* 064308 80063708 02803025 */ move $a2, $s4 -/* 06430C 8006370C 10000030 */ b .L800637D0 -/* 064310 80063710 8FBF003C */ lw $ra, 0x3c($sp) -glabel L80063714 -/* 064314 80063714 00071880 */ sll $v1, $a3, 2 -/* 064318 80063718 8E4B0060 */ lw $t3, 0x60($s2) -/* 06431C 8006371C 00671821 */ addu $v1, $v1, $a3 -/* 064320 80063720 93A800CA */ lbu $t0, 0xca($sp) -/* 064324 80063724 00031880 */ sll $v1, $v1, 2 -/* 064328 80063728 001349C0 */ sll $t1, $s3, 7 -/* 06432C 8006372C 01637021 */ addu $t6, $t3, $v1 -/* 064330 80063730 85CC0004 */ lh $t4, 4($t6) -/* 064334 80063734 0128C021 */ addu $t8, $t1, $t0 -/* 064338 80063738 270AE000 */ addiu $t2, $t8, -0x2000 -/* 06433C 8006373C 018A0019 */ multu $t4, $t2 -/* 064340 80063740 AFA30058 */ sw $v1, 0x58($sp) -/* 064344 80063744 00002012 */ mflo $a0 -/* 064348 80063748 04810003 */ bgez $a0, .L80063758 -/* 06434C 8006374C 00047B43 */ sra $t7, $a0, 0xd -/* 064350 80063750 24811FFF */ addiu $at, $a0, 0x1fff -/* 064354 80063754 00017B43 */ sra $t7, $at, 0xd -.L80063758: -/* 064358 80063758 0C032678 */ jal alCents2Ratio -/* 06435C 8006375C 01E02025 */ move $a0, $t7 -/* 064360 80063760 E7A00068 */ swc1 $f0, 0x68($sp) -/* 064364 80063764 8FA30058 */ lw $v1, 0x58($sp) -/* 064368 80063768 8E4D0060 */ lw $t5, 0x60($s2) -/* 06436C 8006376C 00000000 */ nop -/* 064370 80063770 01A3C821 */ addu $t9, $t5, $v1 -/* 064374 80063774 E720000C */ swc1 $f0, 0xc($t9) -/* 064378 80063778 8E500064 */ lw $s0, 0x64($s2) -/* 06437C 8006377C 00000000 */ nop -/* 064380 80063780 12000013 */ beqz $s0, .L800637D0 -/* 064384 80063784 8FBF003C */ lw $ra, 0x3c($sp) -.L80063788: -/* 064388 80063788 92090031 */ lbu $t1, 0x31($s0) -/* 06438C 8006378C C7B20068 */ lwc1 $f18, 0x68($sp) -/* 064390 80063790 1689000A */ bne $s4, $t1, .L800637BC -/* 064394 80063794 00000000 */ nop -/* 064398 80063798 C60A0028 */ lwc1 $f10, 0x28($s0) -/* 06439C 8006379C C610002C */ lwc1 $f16, 0x2c($s0) -/* 0643A0 800637A0 46125202 */ mul.s $f8, $f10, $f18 -/* 0643A4 800637A4 8E440014 */ lw $a0, 0x14($s2) -/* 0643A8 800637A8 26050004 */ addiu $a1, $s0, 4 -/* 0643AC 800637AC 46104102 */ mul.s $f4, $f8, $f16 -/* 0643B0 800637B0 44062000 */ mfc1 $a2, $f4 -/* 0643B4 800637B4 0C0325E0 */ jal alSynSetPitch -/* 0643B8 800637B8 00000000 */ nop -.L800637BC: -/* 0643BC 800637BC 8E100000 */ lw $s0, ($s0) -/* 0643C0 800637C0 00000000 */ nop -/* 0643C4 800637C4 1600FFF0 */ bnez $s0, .L80063788 -/* 0643C8 800637C8 00000000 */ nop -.L800637CC: -glabel L800637CC -/* 0643CC 800637CC 8FBF003C */ lw $ra, 0x3c($sp) -.L800637D0: -/* 0643D0 800637D0 8FB00028 */ lw $s0, 0x28($sp) -/* 0643D4 800637D4 8FB1002C */ lw $s1, 0x2c($sp) -/* 0643D8 800637D8 8FB20030 */ lw $s2, 0x30($sp) -/* 0643DC 800637DC 8FB30034 */ lw $s3, 0x34($sp) -/* 0643E0 800637E0 8FB40038 */ lw $s4, 0x38($sp) -/* 0643E4 800637E4 03E00008 */ jr $ra -/* 0643E8 800637E8 27BD00D8 */ addiu $sp, $sp, 0xd8 - diff --git a/lib/src/mips1/al/csplayer.c b/lib/src/mips1/al/csplayer.c index 31649afb..8c6c3962 100644 --- a/lib/src/mips1/al/csplayer.c +++ b/lib/src/mips1/al/csplayer.c @@ -370,35 +370,45 @@ void __CSPHandleNextSeqEvent(ALCSPlayer *seqp) } } -#ifdef NON_EQUIVALENT -//Significantly different from the standard version void __CSPHandleMIDIMsg(ALCSPlayer_Custom *seqp, ALEvent *event) { - ALVoice *voice; ALVoiceState *vs; + s32 i; s32 status; u8 chan; - u8 key; - u8 vel; u8 byte1; u8 byte2; + u8 fxmix; + ALVoice *voice; ALMIDIEvent *midi = &event->msg.midi; s16 vol; ALEvent evt; - ALMicroTime deltaTime; ALVoiceState *vstate; - ALPan pan; ALFxRef fxref; - - + ALPan pan; + ALMicroTime deltaTime; + ALVoiceConfig config; + ALSound *sound; + u8 key; + u8 vel; + f32 pitch; + f32 oscValue; + s32 pad; + void *oscState; + ALInstrument *inst; + s32 bendVal; + s32 pad2; + s32 pad3; + f32 bendRatio; + status = midi->status & AL_MIDI_StatusMask; chan = midi->status & AL_MIDI_ChannelMask; - byte1 = key = midi->byte1; - byte2 = vel = midi->byte2; - + key = byte1 = midi->byte1; + vel = byte2 = midi->byte2; + if (status == AL_MIDI_ChannelModeSelect) { - if (byte1 == 0x6A) + if (key == 0x6A) { seqp->chanMask &= ~(1 << byte2); for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) @@ -408,71 +418,59 @@ void __CSPHandleMIDIMsg(ALCSPlayer_Custom *seqp, ALEvent *event) } return; } - else if (byte1 == 0x6C) + else if (key == 0x6C) { seqp->chanMask |= 1 << byte2; return; } + } - else { - ALFailIf((!((1 << chan) & seqp->chanMask) && - status != AL_MIDI_ProgramChange && - status != AL_MIDI_ControlChange && - status != AL_MIDI_PitchBendChange), ERR_STATUS) + if ((1 << chan) & seqp->chanMask) + { + } + else if ( + status != AL_MIDI_ProgramChange && + status != AL_MIDI_ControlChange && + status != AL_MIDI_PitchBendChange + ) + { + return; } switch (status) { case (AL_MIDI_NoteOn): + /* a real note on */ + if (byte2 != 0) { + /* If we're not playing, don't process note ons. */ + if (seqp->state != AL_PLAYING) + { + break; + } - if (vel != 0) /* a real note on */ - { - ALVoiceConfig config; - ALSound *sound; - s16 cents; - f32 pitch,oscValue; - u8 fxmix; - void *oscState; - ALInstrument *inst; - - /* If we're not playing, don't process note ons. */ - if (seqp->state != AL_PLAYING) - break; - - sound = __lookupSoundQuick((ALSeqPlayer*)seqp, key, vel, chan); - ALFlagFailIf(!sound, seqp->debugFlags & NO_SOUND_ERR_MASK, - ERR_ALSEQP_NO_SOUND); + // chan should be located at spCB + sound = __lookupSoundQuick((ALSeqPlayer*)seqp, byte1, byte2, chan); + ALFlagFailIf(!sound, seqp->debugFlags & NO_SOUND_ERR_MASK, ERR_ALSEQP_NO_SOUND); config.priority = seqp->chanState[chan].priority; config.fxBus = 0; config.unityPitch = 0; - vstate = __mapVoice((ALSeqPlayer*)seqp, key, vel, chan); - ALFlagFailIf(!vstate, seqp->debugFlags & NO_VOICE_ERR_MASK, - ERR_ALSEQP_NO_VOICE ); + vstate = __mapVoice((ALSeqPlayer*)seqp, byte1, byte2, chan); + ALFlagFailIf(!vstate, seqp->debugFlags & NO_VOICE_ERR_MASK, ERR_ALSEQP_NO_VOICE); voice = &vstate->voice; - if (alSynAllocVoice(seqp->drvr, voice, &config)) + { func_80065A80(seqp->drvr, voice->pvoice, 0); + } - /* - * set up the voice state structure - */ vstate->sound = sound; vstate->envPhase = AL_PHASE_ATTACK; - if (seqp->chanState[chan].sustain > AL_SUSTAIN) - vstate->phase = AL_PHASE_SUSTAIN; - else - vstate->phase = AL_PHASE_NOTEON; - - cents = (key - sound->keyMap->keyBase) * 100 - + sound->keyMap->detune; - - vstate->pitch = alCents2Ratio(cents); + vstate->phase = seqp->chanState[chan].sustain > AL_SUSTAIN ? AL_PHASE_SUSTAIN : AL_PHASE_NOTEON; + vstate->pitch = alCents2Ratio((s16)((byte1 - sound->keyMap->keyBase) * 100 + sound->keyMap->detune)); vstate->envGain = sound->envelope->attackVolume; - vstate->envEndTime = seqp->curTime + - sound->envelope->attackTime; + vstate->envEndTime = seqp->curTime + sound->envelope->attackTime; /* * setup tremelo and vibrato if active @@ -480,15 +478,14 @@ void __CSPHandleMIDIMsg(ALCSPlayer_Custom *seqp, ALEvent *event) vstate->flags = 0; inst = seqp->chanState[chan].instrument; - oscValue = (f32)AL_VOL_FULL; /* set this as a default */ - if(inst->tremType) + oscValue = AL_VOL_FULL; /* set this as a default */ + if (inst->tremType) { - if(seqp->initOsc) + if (seqp->initOsc) { - deltaTime = (*seqp->initOsc)(&oscState,&oscValue,inst->tremType, - inst->tremRate,inst->tremDepth,inst->tremDelay); - - if(deltaTime) /* a deltaTime of zero means don't run osc */ + deltaTime = (*seqp->initOsc)(&oscState,&oscValue,inst->tremType, inst->tremRate,inst->tremDepth,inst->tremDelay); + /* a deltaTime of zero means don't run osc */ + if (deltaTime != 0) { evt.type = AL_TREM_OSC_EVT; evt.msg.osc.vs = vstate; @@ -498,17 +495,16 @@ void __CSPHandleMIDIMsg(ALCSPlayer_Custom *seqp, ALEvent *event) } } } - vstate->tremelo = (u8)oscValue; /* will default if not changed by initOsc */ - - oscValue = 1.0f; /* set this as a default */ - if(inst->vibType) - { - if(seqp->initOsc) - { - deltaTime = (*seqp->initOsc)(&oscState,&oscValue,inst->vibType, - inst->vibRate,inst->vibDepth,inst->vibDelay); - if(deltaTime) /* a deltaTime of zero means don't run osc. */ + vstate->tremelo = oscValue; /* will default if not changed by initOsc */ + oscValue = 1; /* set this as a default */ + if (inst->vibType) + { + if (seqp->initOsc) + { + deltaTime = (*seqp->initOsc)(&oscState,&oscValue,inst->vibType, inst->vibRate,inst->vibDepth,inst->vibDelay); + /* a deltaTime of zero means don't run osc. */ + if (deltaTime != 0) { evt.type = AL_VIB_OSC_EVT; evt.msg.osc.vs = vstate; @@ -524,15 +520,13 @@ void __CSPHandleMIDIMsg(ALCSPlayer_Custom *seqp, ALEvent *event) /* * calculate the note on parameters */ - pitch = vstate->pitch * seqp->chanState[chan].pitchBend * - vstate->vibrato; + pitch = vstate->pitch * seqp->chanState[chan].pitchBend * vstate->vibrato; fxmix = seqp->chanState[chan].fxmix; pan = __vsPan(vstate, (ALSeqPlayer*)seqp); vol = __vsVol(vstate, (ALSeqPlayer*)seqp); deltaTime = sound->envelope->attackTime; - alSynStartVoiceParams(seqp->drvr, voice, sound->wavetable, - pitch, vol, pan, fxmix, deltaTime); + alSynStartVoiceParams(seqp->drvr, voice, sound->wavetable, pitch, vol, pan, fxmix, deltaTime); /* * set up callbacks for envelope */ @@ -543,14 +537,14 @@ void __CSPHandleMIDIMsg(ALCSPlayer_Custom *seqp, ALEvent *event) alEvtqPostEvent(&seqp->evtq, &evt, deltaTime); - if(midi->duration) + if (midi->duration) { /* * set up note off evt. if no duration don't do this */ evt.type = AL_CSP_NOTEOFF_EVT; evt.msg.midi.status = chan | AL_MIDI_NoteOff; - evt.msg.midi.byte1 = key; + evt.msg.midi.byte1 = byte1; evt.msg.midi.byte2 = 0; /* not needed ? */ deltaTime = seqp->uspt * midi->duration; @@ -568,52 +562,47 @@ void __CSPHandleMIDIMsg(ALCSPlayer_Custom *seqp, ALEvent *event) */ case (AL_MIDI_NoteOff): - vstate = __lookupVoice((ALSeqPlayer*)seqp, key, chan); - ALFlagFailIf(!vstate, seqp->debugFlags & NOTE_OFF_ERR_MASK, - ERR_ALSEQP_OFF_VOICE ); + vstate = __lookupVoice((ALSeqPlayer*)seqp, byte1, chan); + ALFlagFailIf(!vstate, seqp->debugFlags & NOTE_OFF_ERR_MASK, ERR_ALSEQP_OFF_VOICE); if (vstate->phase == AL_PHASE_SUSTAIN) + { vstate->phase = AL_PHASE_SUSTREL; + } else { vstate->phase = AL_PHASE_RELEASE; - __seqpReleaseVoice((ALSeqPlayer*)seqp, &vstate->voice, - vstate->sound->envelope->releaseTime); + __seqpReleaseVoice((ALSeqPlayer*)seqp, &vstate->voice, vstate->sound->envelope->releaseTime); } break; - case (AL_MIDI_PolyKeyPressure): /* - * Aftertouch per key (hardwired to volume). Note that + * Aftertouch per byte1 (hardwired to volume). Note that * aftertouch affects only notes that are already * sounding. */ - vstate = __lookupVoice((ALSeqPlayer*)seqp, key, chan); - ALFailIf(!vstate, ERR_ALSEQP_POLY_VOICE ); + vstate = __lookupVoice((ALSeqPlayer*)seqp, byte1, chan); + ALFailIf(!vstate, ERR_ALSEQP_POLY_VOICE); vstate->velocity = byte2; - alSynSetVol(seqp->drvr, &vstate->voice, - __vsVol(vstate, (ALSeqPlayer*)seqp), - __vsDelta(vstate,seqp->curTime)); + alSynSetVol(seqp->drvr, &vstate->voice, __vsVol(vstate, (ALSeqPlayer*)seqp), __vsDelta(vstate,seqp->curTime)); break; - case (AL_MIDI_ChannelPressure): /* * Aftertouch per channel (hardwired to volume). Note that * aftertouch affects only notes that are already * sounding. */ - for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { - if (vs->channel == chan) { + for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) + { + if (vs->channel == chan) + { vs->velocity = byte1; - alSynSetVol(seqp->drvr, &vs->voice, - __vsVol(vs, (ALSeqPlayer*)seqp), - __vsDelta(vs,seqp->curTime)); + alSynSetVol(seqp->drvr, &vs->voice, __vsVol(vs, (ALSeqPlayer*)seqp), __vsDelta(vs,seqp->curTime)); } } break; - case (AL_MIDI_ControlChange): switch (byte1) { @@ -630,23 +619,15 @@ void __CSPHandleMIDIMsg(ALCSPlayer_Custom *seqp, ALEvent *event) break; case (AL_MIDI_VOLUME_CTRL): { - f32 temp; seqp->chanState[chan].unk11 = byte2; - temp = seqp->chanState[chan].fade; - if (seqp->chanState[chan].fade < 0) - { - temp += 0xFFFFFFFF; - } - - seqp->chanState[chan].vol = (temp * seqp->chanState[chan].fade) / 127.0f; + seqp->chanState[chan].vol = ((f32)seqp->chanState[chan].fade * byte2) / 127.0f; for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { if ((vs->channel == chan) && (vs->envPhase != AL_PHASE_RELEASE)) { vol = __vsVol(vs, (ALSeqPlayer*)seqp); - alSynSetVol(seqp->drvr, &vs->voice, vol, - __vsDelta(vs,seqp->curTime)); + alSynSetVol(seqp->drvr, &vs->voice, vol, __vsDelta(vs,seqp->curTime)); } } } @@ -659,44 +640,47 @@ void __CSPHandleMIDIMsg(ALCSPlayer_Custom *seqp, ALEvent *event) if ((vs->channel == chan) && (vs->envPhase != AL_PHASE_RELEASE)) { vol = __vsVol(vs, (ALSeqPlayer*)seqp); - alSynSetVol(seqp->drvr, &vs->voice, vol, - __vsDelta(vs,seqp->curTime)); + alSynSetVol(seqp->drvr, &vs->voice, vol, __vsDelta(vs,seqp->curTime)); } } break; case (AL_MIDI_PRIORITY_CTRL): - /* leave current voices where they are */ + /* leave current voices where they are */ seqp->chanState[chan].priority = byte2; break; case (AL_MIDI_SUSTAIN_CTRL): seqp->chanState[chan].sustain = byte2; for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { - if ((vs->channel == chan) && (vs->phase != AL_PHASE_RELEASE)) + if (vs->channel != chan) { - if ( byte2 > AL_SUSTAIN ) - { - /* - * sustain pedal down - */ - if (vs->phase == AL_PHASE_NOTEON) - vs->phase = AL_PHASE_SUSTAIN; - } - else - { - /* - * sustain pedal up - */ - if (vs->phase == AL_PHASE_SUSTAIN) - vs->phase = AL_PHASE_NOTEON; + continue; + } + + if (vs->phase == AL_PHASE_RELEASE) + { + continue; + } - else if(vs->phase == AL_PHASE_SUSTREL) - { - vs->phase = AL_PHASE_RELEASE; - __seqpReleaseVoice((ALSeqPlayer*)seqp, - &vs->voice, - vs->sound->envelope->releaseTime); - } + if (byte2 > AL_SUSTAIN ) + { + /* sustain pedal down */ + if (vs->phase == AL_PHASE_NOTEON) + { + vs->phase = AL_PHASE_SUSTAIN; + } + } + else + { + /* sustain pedal up */ + if (vs->phase == AL_PHASE_SUSTAIN) + { + vs->phase = AL_PHASE_NOTEON; + } + else if (vs->phase == AL_PHASE_SUSTREL) + { + vs->phase = AL_PHASE_RELEASE; + __seqpReleaseVoice((ALSeqPlayer*)seqp, &vs->voice, vs->sound->envelope->releaseTime); } } } @@ -706,88 +690,69 @@ void __CSPHandleMIDIMsg(ALCSPlayer_Custom *seqp, ALEvent *event) for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { if (vs->channel == chan) + { alSynSetFXMix(seqp->drvr, &vs->voice, byte2); + } } break; case (0x5F): seqp->unk36 = byte2; - for (chan = 0; chan < seqp->maxChannels; chan++) + for (i = 0; i < seqp->maxChannels; i++) { - if (seqp->chanState[chan].fxmix < byte2) + if (seqp->chanState[i].fxmix < byte2) { - seqp->chanState[chan].fxmix = 0; + seqp->chanState[i].fxmix = 0; for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { - if (vs->channel == chan) + if (vs->channel == i) + { alSynSetFXMix(seqp->drvr, &vs->voice, byte2); + } } } } break; -/* case (AL_MIDI_FX_CTRL_0): - case (AL_MIDI_FX_CTRL_1): - case (AL_MIDI_FX_CTRL_2): - case (AL_MIDI_FX_CTRL_3): - case (AL_MIDI_FX_CTRL_4): - case (AL_MIDI_FX_CTRL_5): - case (AL_MIDI_FX_CTRL_6): - case (AL_MIDI_FX_CTRL_7): - fxref = alSynGetFXRef(seqp->drvr, 0, 0); - if (fxref) - alSynSetFXParam(seqp->drvr, fxref, (s16)byte1, (void *)byte2); - break; - case (AL_MIDI_FX3_CTRL): */ default: break; } break; case (AL_MIDI_ProgramChange): - /* sct 1/16/96 - We must have a valid bank in order to process the program change. */ - - if (key < seqp->bank->instCount) + if (byte1 < seqp->bank->instCount) { - ALInstrument *inst = seqp->bank->instArray[key]; - __setInstChanState((ALSeqPlayer*)seqp, inst, chan); /* sct 11/6/95 */ + ALInstrument *inst = seqp->bank->instArray[byte1]; + __setInstChanState((ALSeqPlayer*)seqp, inst, chan); } else - { + { #ifdef _DEBUG - __osError(ERR_ALSEQPINVALIDPROG, 2, key, seqp->bank->instCount); -#endif + __osError(ERR_ALSEQPINVALIDPROG, 2, byte1, seqp->bank->instCount); +#endif } break; case (AL_MIDI_PitchBendChange): { - s32 bendVal; - f32 bendRatio; - s32 cents; - /* get 14-bit unsigned midi value */ bendVal = ( (byte2 << 7) + byte1) - 8192; - /* calculate pitch bend in cents */ - cents = (seqp->chanState[chan].bendRange * bendVal)/8192; - /* calculate the corresponding ratio */ - bendRatio = alCents2Ratio(cents); + bendRatio = alCents2Ratio((seqp->chanState[chan].bendRange * bendVal)/8192); seqp->chanState[chan].pitchBend = bendRatio; for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) if (vs->channel == chan) - alSynSetPitch(seqp->drvr, &vs->voice, - vs->pitch * bendRatio * vs->vibrato); + { + alSynSetPitch(seqp->drvr, &vs->voice, vs->pitch * bendRatio * vs->vibrato); + } } break; - default: +#ifdef _DEBUG + __osError(ERR_ALSEQPUNKNOWNMIDI, 1, status); +#endif break; } - } -#else -GLOBAL_ASM("lib/asm/non_matchings/csplayer/__CSPHandleMIDIMsg.s") -#endif void __CSPHandleMetaMsg(ALCSPlayer *seqp, ALEvent *event) {