From b4b033b56659c42fdc28aaa13c06d5abca01bf01 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 27 Mar 2021 22:51:24 +1000 Subject: [PATCH] Decompile __seqpReleaseVoice --- src/include/PR/libaudio.h | 4 +- src/include/lib/lib_3ccf0.h | 2 - src/include/lib/lib_3d280.h | 1 - src/include/lib/lib_44bc0.h | 1 - src/lib/lib_317f0.c | 24 +-- src/lib/lib_3ccf0.c | 2 +- src/lib/lib_3d280.c | 260 +++++++-------------------------- src/lib/lib_44bc0.c | 2 +- src/lib/ultra/audio/csplayer.c | 38 ++--- 9 files changed, 87 insertions(+), 247 deletions(-) diff --git a/src/include/PR/libaudio.h b/src/include/PR/libaudio.h index fe6fe3051..ce410afc8 100644 --- a/src/include/PR/libaudio.h +++ b/src/include/PR/libaudio.h @@ -342,11 +342,11 @@ void alSynStartVoiceParams(ALSynth *s, ALVoice *voice, ALWaveTable *w, ALMicroTime t); void alSynStopVoice(ALSynth *s, ALVoice *voice); -void alSynSetVol(ALSynth *s, ALVoice *v, s16 vol, ALMicroTime delta); +void alSynSetVol(ALVoice *v, s16 vol, ALMicroTime delta); void alSynSetPitch(ALSynth *s, ALVoice *voice, f32 ratio); void alSynSetPan(ALSynth *s, ALVoice *voice, ALPan pan); void alSynSetFXMix(ALSynth *s, ALVoice *voice, u8 fxmix); -void alSynSetPriority(ALSynth *s, ALVoice *voice, s16 priority); +void alSynSetPriority(ALVoice *voice, s16 priority); s16 alSynGetPriority(ALSynth *s, ALVoice *voice); ALFxRef *alSynAllocFX(ALSynth *s, s16 bus, ALSynConfig *c, ALHeap *hp); diff --git a/src/include/lib/lib_3ccf0.h b/src/include/lib/lib_3ccf0.h index ab17f31f1..ea821f105 100644 --- a/src/include/lib/lib_3ccf0.h +++ b/src/include/lib/lib_3ccf0.h @@ -4,6 +4,4 @@ #include "data.h" #include "types.h" -u32 func0003ccf0(void); - #endif diff --git a/src/include/lib/lib_3d280.h b/src/include/lib/lib_3d280.h index 3c6bf6bae..bc55a0b81 100644 --- a/src/include/lib/lib_3d280.h +++ b/src/include/lib/lib_3d280.h @@ -5,7 +5,6 @@ #include "types.h" u32 func0003d280(void); -u32 func0003d340(void); u32 func0003d5d8(void); u32 func0003d69c(void); u32 func0003d72c(void); diff --git a/src/include/lib/lib_44bc0.h b/src/include/lib/lib_44bc0.h index 4e9949f58..fe03d058d 100644 --- a/src/include/lib/lib_44bc0.h +++ b/src/include/lib/lib_44bc0.h @@ -5,6 +5,5 @@ #include "types.h" u32 func00044bc0(void); -u32 func00044f40(void); #endif diff --git a/src/lib/lib_317f0.c b/src/lib/lib_317f0.c index 9a686b097..1e9c987fc 100644 --- a/src/lib/lib_317f0.c +++ b/src/lib/lib_317f0.c @@ -849,7 +849,7 @@ glabel var7005477c /* 31e68: 8fa40054 */ lw $a0,0x54($sp) /* 31e6c: 00002825 */ or $a1,$zero,$zero /* 31e70: 240603e8 */ addiu $a2,$zero,0x3e8 -/* 31e74: 0c00f33c */ jal func0003ccf0 +/* 31e74: 0c00f33c */ jal alSynSetVol /* 31e78: 2484000c */ addiu $a0,$a0,0xc .L00031e7c: /* 31e7c: 8fac0054 */ lw $t4,0x54($sp) @@ -1279,7 +1279,7 @@ glabel var7005477c /* 324b0: 8fa40060 */ lw $a0,0x60($sp) /* 324b4: 8fa50078 */ lw $a1,0x78($sp) /* 324b8: 8fa60080 */ lw $a2,0x80($sp) -/* 324bc: 0c00f33c */ jal func0003ccf0 +/* 324bc: 0c00f33c */ jal alSynSetVol /* 324c0: 2484000c */ addiu $a0,$a0,0xc /* 324c4: 240c0002 */ addiu $t4,$zero,0x2 /* 324c8: a7ac0094 */ sh $t4,0x94($sp) @@ -1404,7 +1404,7 @@ glabel var7005477c /* 32684: 8fa40060 */ lw $a0,0x60($sp) /* 32688: 00002825 */ or $a1,$zero,$zero /* 3268c: 8fa60080 */ lw $a2,0x80($sp) -/* 32690: 0c00f33c */ jal func0003ccf0 +/* 32690: 0c00f33c */ jal alSynSetVol /* 32694: 2484000c */ addiu $a0,$a0,0xc /* 32698: 8fa90080 */ lw $t1,0x80($sp) /* 3269c: 11200010 */ beqz $t1,.L000326e0 @@ -1775,7 +1775,7 @@ glabel var7005477c /* 32bbc: 8fa40060 */ lw $a0,0x60($sp) /* 32bc0: 8fa50078 */ lw $a1,0x78($sp) /* 32bc4: 02003025 */ or $a2,$s0,$zero -/* 32bc8: 0c00f33c */ jal func0003ccf0 +/* 32bc8: 0c00f33c */ jal alSynSetVol /* 32bcc: 2484000c */ addiu $a0,$a0,0xc .L00032bd0: /* 32bd0: 10000111 */ b .L00033018 @@ -1887,7 +1887,7 @@ glabel var7005477c /* 32d68: 8fa40060 */ lw $a0,0x60($sp) /* 32d6c: 8fa50078 */ lw $a1,0x78($sp) /* 32d70: 8fa60080 */ lw $a2,0x80($sp) -/* 32d74: 0c00f33c */ jal func0003ccf0 +/* 32d74: 0c00f33c */ jal alSynSetVol /* 32d78: 2484000c */ addiu $a0,$a0,0xc .L00032d7c: /* 32d7c: 100000a6 */ b .L00033018 @@ -2011,7 +2011,7 @@ glabel var7005477c /* 32f44: 8fa40060 */ lw $a0,0x60($sp) /* 32f48: 8fa50078 */ lw $a1,0x78($sp) /* 32f4c: 8fa60080 */ lw $a2,0x80($sp) -/* 32f50: 0c00f33c */ jal func0003ccf0 +/* 32f50: 0c00f33c */ jal alSynSetVol /* 32f54: 2484000c */ addiu $a0,$a0,0xc /* 32f58: 240e0002 */ addiu $t6,$zero,0x2 /* 32f5c: a7ae0094 */ sh $t6,0x94($sp) @@ -2360,7 +2360,7 @@ glabel var7005477c /* 335a8: 8fa40054 */ lw $a0,0x54($sp) /* 335ac: 00002825 */ or $a1,$zero,$zero /* 335b0: 240603e8 */ addiu $a2,$zero,0x3e8 -/* 335b4: 0c00f830 */ jal func0003ccf0 +/* 335b4: 0c00f830 */ jal alSynSetVol /* 335b8: 2484000c */ addiu $a0,$a0,0xc .NB000335bc: /* 335bc: 8fac0054 */ lw $t4,0x54($sp) @@ -2717,7 +2717,7 @@ glabel var7005477c /* 33ae0: 8fa40060 */ lw $a0,0x60($sp) /* 33ae4: 8fa50078 */ lw $a1,0x78($sp) /* 33ae8: 8fa60080 */ lw $a2,0x80($sp) -/* 33aec: 0c00f830 */ jal func0003ccf0 +/* 33aec: 0c00f830 */ jal alSynSetVol /* 33af0: 2484000c */ addiu $a0,$a0,0xc /* 33af4: 24190002 */ addiu $t9,$zero,0x2 /* 33af8: a7b90094 */ sh $t9,0x94($sp) @@ -2820,7 +2820,7 @@ glabel var7005477c /* 33c64: 8fa40060 */ lw $a0,0x60($sp) /* 33c68: 00002825 */ or $a1,$zero,$zero /* 33c6c: 8fa60080 */ lw $a2,0x80($sp) -/* 33c70: 0c00f830 */ jal func0003ccf0 +/* 33c70: 0c00f830 */ jal alSynSetVol /* 33c74: 2484000c */ addiu $a0,$a0,0xc /* 33c78: 8fac0080 */ lw $t4,0x80($sp) /* 33c7c: 11800010 */ beqz $t4,.NB00033cc0 @@ -3191,7 +3191,7 @@ glabel var7005477c /* 3419c: 8fa40060 */ lw $a0,0x60($sp) /* 341a0: 8fa50078 */ lw $a1,0x78($sp) /* 341a4: 02003025 */ or $a2,$s0,$zero -/* 341a8: 0c00f830 */ jal func0003ccf0 +/* 341a8: 0c00f830 */ jal alSynSetVol /* 341ac: 2484000c */ addiu $a0,$a0,0xc .NB000341b0: /* 341b0: 100000fd */ beqz $zero,.NB000345a8 @@ -3292,7 +3292,7 @@ glabel var7005477c /* 34320: 8fa40060 */ lw $a0,0x60($sp) /* 34324: 8fa50078 */ lw $a1,0x78($sp) /* 34328: 8fa60080 */ lw $a2,0x80($sp) -/* 3432c: 0c00f830 */ jal func0003ccf0 +/* 3432c: 0c00f830 */ jal alSynSetVol /* 34330: 2484000c */ addiu $a0,$a0,0xc .NB00034334: /* 34334: 1000009c */ beqz $zero,.NB000345a8 @@ -3405,7 +3405,7 @@ glabel var7005477c /* 344d4: 8fa40060 */ lw $a0,0x60($sp) /* 344d8: 8fa50078 */ lw $a1,0x78($sp) /* 344dc: 8fa60080 */ lw $a2,0x80($sp) -/* 344e0: 0c00f830 */ jal func0003ccf0 +/* 344e0: 0c00f830 */ jal alSynSetVol /* 344e4: 2484000c */ addiu $a0,$a0,0xc /* 344e8: 240d0002 */ addiu $t5,$zero,0x2 /* 344ec: a7ad0094 */ sh $t5,0x94($sp) diff --git a/src/lib/lib_3ccf0.c b/src/lib/lib_3ccf0.c index 6d3cdf3e1..95304aab3 100644 --- a/src/lib/lib_3ccf0.c +++ b/src/lib/lib_3ccf0.c @@ -7,7 +7,7 @@ #include "types.h" GLOBAL_ASM( -glabel func0003ccf0 +glabel alSynSetVol /* 3ccf0: 27bdffe0 */ addiu $sp,$sp,-32 /* 3ccf4: afbf0014 */ sw $ra,0x14($sp) /* 3ccf8: afa40020 */ sw $a0,0x20($sp) diff --git a/src/lib/lib_3d280.c b/src/lib/lib_3d280.c index e5dbde427..506976a37 100644 --- a/src/lib/lib_3d280.c +++ b/src/lib/lib_3d280.c @@ -69,214 +69,58 @@ glabel func0003d280 /* 3d33c: 27bd0008 */ addiu $sp,$sp,0x8 ); -#if VERSION >= VERSION_PAL_FINAL -GLOBAL_ASM( -glabel func0003d340 -/* 3cc40: 27bdffc0 */ addiu $sp,$sp,-64 -/* 3cc44: afbf0014 */ sw $ra,0x14($sp) -/* 3cc48: afa40040 */ sw $a0,0x40($sp) -/* 3cc4c: afa50044 */ sw $a1,0x44($sp) -/* 3cc50: afa60048 */ sw $a2,0x48($sp) -/* 3cc54: 8fae0044 */ lw $t6,0x44($sp) -/* 3cc58: 8dcf0010 */ lw $t7,0x10($t6) -/* 3cc5c: afaf002c */ sw $t7,0x2c($sp) -/* 3cc60: 8fb8002c */ lw $t8,0x2c($sp) -/* 3cc64: 93190034 */ lbu $t9,0x34($t8) -/* 3cc68: 1720002c */ bnez $t9,.PF0003cd1c -/* 3cc6c: 00000000 */ nop -/* 3cc70: 8fa80040 */ lw $t0,0x40($sp) -/* 3cc74: 8d090050 */ lw $t1,0x50($t0) -/* 3cc78: afa90028 */ sw $t1,0x28($sp) -/* 3cc7c: 8faa0028 */ lw $t2,0x28($sp) -/* 3cc80: 11400026 */ beqz $t2,.PF0003cd1c -/* 3cc84: 00000000 */ nop -.PF0003cc88: -/* 3cc88: 8fab0028 */ lw $t3,0x28($sp) -/* 3cc8c: 8d6c0000 */ lw $t4,0x0($t3) -/* 3cc90: afac0024 */ sw $t4,0x24($sp) -/* 3cc94: 8fad0028 */ lw $t5,0x28($sp) -/* 3cc98: afad0020 */ sw $t5,0x20($sp) -/* 3cc9c: 8fae0024 */ lw $t6,0x24($sp) -/* 3cca0: afae001c */ sw $t6,0x1c($sp) -/* 3cca4: 8faf0020 */ lw $t7,0x20($sp) -/* 3cca8: 24010006 */ li $at,0x6 -/* 3ccac: 85f8000c */ lh $t8,0xc($t7) -/* 3ccb0: 17010015 */ bne $t8,$at,.PF0003cd08 -/* 3ccb4: 00000000 */ nop -/* 3ccb8: 8fb90020 */ lw $t9,0x20($sp) -/* 3ccbc: 8fa90044 */ lw $t1,0x44($sp) -/* 3ccc0: 8f280010 */ lw $t0,0x10($t9) -/* 3ccc4: 15090010 */ bne $t0,$t1,.PF0003cd08 -/* 3ccc8: 00000000 */ nop -/* 3cccc: 8faa001c */ lw $t2,0x1c($sp) -/* 3ccd0: 11400007 */ beqz $t2,.PF0003ccf0 -/* 3ccd4: 00000000 */ nop -/* 3ccd8: 8fab001c */ lw $t3,0x1c($sp) -/* 3ccdc: 8fad0020 */ lw $t5,0x20($sp) -/* 3cce0: 8d6c0008 */ lw $t4,0x8($t3) -/* 3cce4: 8dae0008 */ lw $t6,0x8($t5) -/* 3cce8: 018e7821 */ addu $t7,$t4,$t6 -/* 3ccec: ad6f0008 */ sw $t7,0x8($t3) -.PF0003ccf0: -/* 3ccf0: 0c00c429 */ jal alUnlink -/* 3ccf4: 8fa40028 */ lw $a0,0x28($sp) -/* 3ccf8: 8fa50040 */ lw $a1,0x40($sp) -/* 3ccfc: 8fa40028 */ lw $a0,0x28($sp) -/* 3cd00: 0c00c41c */ jal alLink -/* 3cd04: 24a50048 */ addiu $a1,$a1,0x48 -.PF0003cd08: -/* 3cd08: 8fb80024 */ lw $t8,0x24($sp) -/* 3cd0c: afb80028 */ sw $t8,0x28($sp) -/* 3cd10: 8fb90028 */ lw $t9,0x28($sp) -/* 3cd14: 1720ffdc */ bnez $t9,.PF0003cc88 -/* 3cd18: 00000000 */ nop -.PF0003cd1c: -/* 3cd1c: 8fa8002c */ lw $t0,0x2c($sp) -/* 3cd20: a1000033 */ sb $zero,0x33($t0) -/* 3cd24: 8faa002c */ lw $t2,0x2c($sp) -/* 3cd28: 24090003 */ li $t1,0x3 -/* 3cd2c: a1490034 */ sb $t1,0x34($t2) -/* 3cd30: 8fad002c */ lw $t5,0x2c($sp) -/* 3cd34: a1a00030 */ sb $zero,0x30($t5) -/* 3cd38: 8fac0040 */ lw $t4,0x40($sp) -/* 3cd3c: 8faf0048 */ lw $t7,0x48($sp) -/* 3cd40: 8fb8002c */ lw $t8,0x2c($sp) -/* 3cd44: 8d8e001c */ lw $t6,0x1c($t4) -/* 3cd48: 01cf5821 */ addu $t3,$t6,$t7 -/* 3cd4c: af0b0024 */ sw $t3,0x24($t8) -/* 3cd50: 8fa40044 */ lw $a0,0x44($sp) -/* 3cd54: 0c011210 */ jal func00044f40 -/* 3cd58: 00002825 */ move $a1,$zero -/* 3cd5c: 8fa40044 */ lw $a0,0x44($sp) -/* 3cd60: 00002825 */ move $a1,$zero -/* 3cd64: 0c00f17c */ jal func0003ccf0 -/* 3cd68: 8fa60048 */ lw $a2,0x48($sp) -/* 3cd6c: 24190005 */ li $t9,0x5 -/* 3cd70: a7b90030 */ sh $t9,0x30($sp) -/* 3cd74: 8fa80044 */ lw $t0,0x44($sp) -/* 3cd78: afa80034 */ sw $t0,0x34($sp) -/* 3cd7c: 8fa90048 */ lw $t1,0x48($sp) -/* 3cd80: 34019c40 */ li $at,0x9c40 -/* 3cd84: 01215021 */ addu $t2,$t1,$at -/* 3cd88: afaa0048 */ sw $t2,0x48($sp) -/* 3cd8c: 8fa40040 */ lw $a0,0x40($sp) -/* 3cd90: 27a50030 */ addiu $a1,$sp,0x30 -/* 3cd94: 8fa60048 */ lw $a2,0x48($sp) -/* 3cd98: 00003825 */ move $a3,$zero -/* 3cd9c: 0c00efc4 */ jal alEvtqPostEvent -/* 3cda0: 24840048 */ addiu $a0,$a0,0x48 -/* 3cda4: 10000001 */ b .PF0003cdac -/* 3cda8: 00000000 */ nop -.PF0003cdac: -/* 3cdac: 8fbf0014 */ lw $ra,0x14($sp) -/* 3cdb0: 27bd0040 */ addiu $sp,$sp,0x40 -/* 3cdb4: 03e00008 */ jr $ra -/* 3cdb8: 00000000 */ nop -); -#else -GLOBAL_ASM( -glabel func0003d340 -/* 3d340: 27bdffc0 */ addiu $sp,$sp,-64 -/* 3d344: afbf0014 */ sw $ra,0x14($sp) -/* 3d348: afa40040 */ sw $a0,0x40($sp) -/* 3d34c: afa50044 */ sw $a1,0x44($sp) -/* 3d350: afa60048 */ sw $a2,0x48($sp) -/* 3d354: 8fae0044 */ lw $t6,0x44($sp) -/* 3d358: 8dcf0010 */ lw $t7,0x10($t6) -/* 3d35c: afaf002c */ sw $t7,0x2c($sp) -/* 3d360: 8fb8002c */ lw $t8,0x2c($sp) -/* 3d364: 93190034 */ lbu $t9,0x34($t8) -/* 3d368: 1720002c */ bnez $t9,.L0003d41c -/* 3d36c: 00000000 */ nop -/* 3d370: 8fa80040 */ lw $t0,0x40($sp) -/* 3d374: 8d090050 */ lw $t1,0x50($t0) -/* 3d378: afa90028 */ sw $t1,0x28($sp) -/* 3d37c: 8faa0028 */ lw $t2,0x28($sp) -/* 3d380: 11400026 */ beqz $t2,.L0003d41c -/* 3d384: 00000000 */ nop -.L0003d388: -/* 3d388: 8fab0028 */ lw $t3,0x28($sp) -/* 3d38c: 8d6c0000 */ lw $t4,0x0($t3) -/* 3d390: afac0024 */ sw $t4,0x24($sp) -/* 3d394: 8fad0028 */ lw $t5,0x28($sp) -/* 3d398: afad0020 */ sw $t5,0x20($sp) -/* 3d39c: 8fae0024 */ lw $t6,0x24($sp) -/* 3d3a0: afae001c */ sw $t6,0x1c($sp) -/* 3d3a4: 8faf0020 */ lw $t7,0x20($sp) -/* 3d3a8: 24010006 */ addiu $at,$zero,0x6 -/* 3d3ac: 85f8000c */ lh $t8,0xc($t7) -/* 3d3b0: 17010015 */ bne $t8,$at,.L0003d408 -/* 3d3b4: 00000000 */ nop -/* 3d3b8: 8fb90020 */ lw $t9,0x20($sp) -/* 3d3bc: 8fa90044 */ lw $t1,0x44($sp) -/* 3d3c0: 8f280010 */ lw $t0,0x10($t9) -/* 3d3c4: 15090010 */ bne $t0,$t1,.L0003d408 -/* 3d3c8: 00000000 */ nop -/* 3d3cc: 8faa001c */ lw $t2,0x1c($sp) -/* 3d3d0: 11400007 */ beqz $t2,.L0003d3f0 -/* 3d3d4: 00000000 */ nop -/* 3d3d8: 8fab001c */ lw $t3,0x1c($sp) -/* 3d3dc: 8fad0020 */ lw $t5,0x20($sp) -/* 3d3e0: 8d6c0008 */ lw $t4,0x8($t3) -/* 3d3e4: 8dae0008 */ lw $t6,0x8($t5) -/* 3d3e8: 018e7821 */ addu $t7,$t4,$t6 -/* 3d3ec: ad6f0008 */ sw $t7,0x8($t3) -.L0003d3f0: -/* 3d3f0: 0c00c5e9 */ jal alUnlink -/* 3d3f4: 8fa40028 */ lw $a0,0x28($sp) -/* 3d3f8: 8fa50040 */ lw $a1,0x40($sp) -/* 3d3fc: 8fa40028 */ lw $a0,0x28($sp) -/* 3d400: 0c00c5dc */ jal alLink -/* 3d404: 24a50048 */ addiu $a1,$a1,0x48 -.L0003d408: -/* 3d408: 8fb80024 */ lw $t8,0x24($sp) -/* 3d40c: afb80028 */ sw $t8,0x28($sp) -/* 3d410: 8fb90028 */ lw $t9,0x28($sp) -/* 3d414: 1720ffdc */ bnez $t9,.L0003d388 -/* 3d418: 00000000 */ nop -.L0003d41c: -/* 3d41c: 8fa8002c */ lw $t0,0x2c($sp) -/* 3d420: a1000033 */ sb $zero,0x33($t0) -/* 3d424: 8faa002c */ lw $t2,0x2c($sp) -/* 3d428: 24090003 */ addiu $t1,$zero,0x3 -/* 3d42c: a1490034 */ sb $t1,0x34($t2) -/* 3d430: 8fad002c */ lw $t5,0x2c($sp) -/* 3d434: a1a00030 */ sb $zero,0x30($t5) -/* 3d438: 8fac0040 */ lw $t4,0x40($sp) -/* 3d43c: 8faf0048 */ lw $t7,0x48($sp) -/* 3d440: 8fb8002c */ lw $t8,0x2c($sp) -/* 3d444: 8d8e001c */ lw $t6,0x1c($t4) -/* 3d448: 01cf5821 */ addu $t3,$t6,$t7 -/* 3d44c: af0b0024 */ sw $t3,0x24($t8) -/* 3d450: 8fa40044 */ lw $a0,0x44($sp) -/* 3d454: 0c0113d0 */ jal func00044f40 -/* 3d458: 00002825 */ or $a1,$zero,$zero -/* 3d45c: 8fa40044 */ lw $a0,0x44($sp) -/* 3d460: 00002825 */ or $a1,$zero,$zero -/* 3d464: 0c00f33c */ jal func0003ccf0 -/* 3d468: 8fa60048 */ lw $a2,0x48($sp) -/* 3d46c: 24190005 */ addiu $t9,$zero,0x5 -/* 3d470: a7b90030 */ sh $t9,0x30($sp) -/* 3d474: 8fa80044 */ lw $t0,0x44($sp) -/* 3d478: afa80034 */ sw $t0,0x34($sp) -/* 3d47c: 8fa90048 */ lw $t1,0x48($sp) -/* 3d480: 252a7d00 */ addiu $t2,$t1,0x7d00 -/* 3d484: afaa0048 */ sw $t2,0x48($sp) -/* 3d488: 8fa40040 */ lw $a0,0x40($sp) -/* 3d48c: 27a50030 */ addiu $a1,$sp,0x30 -/* 3d490: 8fa60048 */ lw $a2,0x48($sp) -/* 3d494: 00003825 */ or $a3,$zero,$zero -/* 3d498: 0c00f184 */ jal alEvtqPostEvent -/* 3d49c: 24840048 */ addiu $a0,$a0,0x48 -/* 3d4a0: 10000001 */ b .L0003d4a8 -/* 3d4a4: 00000000 */ nop -.L0003d4a8: -/* 3d4a8: 8fbf0014 */ lw $ra,0x14($sp) -/* 3d4ac: 27bd0040 */ addiu $sp,$sp,0x40 -/* 3d4b0: 03e00008 */ jr $ra -/* 3d4b4: 00000000 */ nop -); -#endif +void __seqpReleaseVoice(ALSeqPlayer *seqp, ALVoice *voice, ALMicroTime deltaTime) +{ + ALEvent evt; + ALVoiceState *vs = (ALVoiceState *)voice->clientPrivate; + + /* + * if in attack phase, remove all pending volume + * events for this voice from the queue + */ + + 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(voice, 0); /* make candidate for stealing */ + alSynSetVol(voice, 0, deltaTime); + + evt.type = AL_NOTE_END_EVT; + evt.msg.note.voice = voice; + + deltaTime += (PAL ? 40000 : 32000); + + alEvtqPostEvent(&seqp->evtq, &evt, deltaTime, 0); +} char __voiceNeedsNoteKill(ALSeqPlayer *seqp, ALVoice *voice, ALMicroTime killTime) { diff --git a/src/lib/lib_44bc0.c b/src/lib/lib_44bc0.c index 5d7e31d18..dc2749f26 100644 --- a/src/lib/lib_44bc0.c +++ b/src/lib/lib_44bc0.c @@ -247,7 +247,7 @@ glabel func00044bc0 ); GLOBAL_ASM( -glabel func00044f40 +glabel alSynSetPriority /* 44f40: 00052c00 */ sll $a1,$a1,0x10 /* 44f44: 00052c03 */ sra $a1,$a1,0x10 /* 44f48: a4850016 */ sh $a1,0x16($a0) diff --git a/src/lib/ultra/audio/csplayer.c b/src/lib/ultra/audio/csplayer.c index f1eb97a49..3b5e052fb 100644 --- a/src/lib/ultra/audio/csplayer.c +++ b/src/lib/ultra/audio/csplayer.c @@ -1059,7 +1059,7 @@ glabel __CSPVoiceHandler /* 34608: 00108403 */ sra $s0,$s0,0x10 /* 3460c: 02002825 */ or $a1,$s0,$zero /* 34610: 8fa40060 */ lw $a0,0x60($sp) -/* 34614: 0c00f33c */ jal func0003ccf0 +/* 34614: 0c00f33c */ jal alSynSetVol /* 34618: 8fa6005c */ lw $a2,0x5c($sp) /* 3461c: 100001db */ b .L00034d8c /* 34620: 00000000 */ nop @@ -1130,7 +1130,7 @@ glabel __CSPVoiceHandler /* 34718: 00408825 */ or $s1,$v0,$zero /* 3471c: 02203025 */ or $a2,$s1,$zero /* 34720: 02002825 */ or $a1,$s0,$zero -/* 34724: 0c00f33c */ jal func0003ccf0 +/* 34724: 0c00f33c */ jal alSynSetVol /* 34728: 24840004 */ addiu $a0,$a0,0x4 /* 3472c: 240c0016 */ addiu $t4,$zero,0x16 /* 34730: a7ac0064 */ sh $t4,0x64($sp) @@ -1287,7 +1287,7 @@ glabel __CSPVoiceHandler /* 34984: 00408825 */ or $s1,$v0,$zero /* 34988: 02203025 */ or $a2,$s1,$zero /* 3498c: 02002825 */ or $a1,$s0,$zero -/* 34990: 0c00f33c */ jal func0003ccf0 +/* 34990: 0c00f33c */ jal alSynSetVol /* 34994: 24840004 */ addiu $a0,$a0,0x4 /* 34998: 8faf0058 */ lw $t7,0x58($sp) /* 3499c: 8df90000 */ lw $t9,0x0($t7) @@ -1445,7 +1445,7 @@ glabel __CSPVoiceHandler /* 34bcc: 8fa50058 */ lw $a1,0x58($sp) /* 34bd0: 8fa40074 */ lw $a0,0x74($sp) /* 34bd4: 3406c350 */ dli $a2,0xc350 -/* 34bd8: 0c00f4d0 */ jal func0003d340 +/* 34bd8: 0c00f4d0 */ jal __seqpReleaseVoice /* 34bdc: 24a50004 */ addiu $a1,$a1,0x4 .L00034be0: /* 34be0: 8fb80058 */ lw $t8,0x58($sp) @@ -1703,7 +1703,7 @@ glabel func00034f0c /* 34f78: 00408025 */ or $s0,$v0,$zero /* 34f7c: 02003025 */ or $a2,$s0,$zero /* 34f80: 87a5002a */ lh $a1,0x2a($sp) -/* 34f84: 0c00f33c */ jal func0003ccf0 +/* 34f84: 0c00f33c */ jal alSynSetVol /* 34f88: 24840004 */ addiu $a0,$a0,0x4 .L00034f8c: /* 34f8c: 8fab002c */ lw $t3,0x2c($sp) @@ -2481,7 +2481,7 @@ glabel func00035110 /* 35ad8: 8fab0094 */ lw $t3,0x94($sp) /* 35adc: 8fa400d0 */ lw $a0,0xd0($sp) /* 35ae0: 24a50004 */ addiu $a1,$a1,0x4 -/* 35ae4: 0c00f4d0 */ jal func0003d340 +/* 35ae4: 0c00f4d0 */ jal __seqpReleaseVoice /* 35ae8: 8d660020 */ lw $a2,0x20($t3) /* 35aec: 10000008 */ b .L00035b10 /* 35af0: 00000000 */ nop @@ -2491,7 +2491,7 @@ glabel func00035110 /* 35afc: 8db80020 */ lw $t8,0x20($t5) /* 35b00: 25a50004 */ addiu $a1,$t5,0x4 /* 35b04: 8f080000 */ lw $t0,0x0($t8) -/* 35b08: 0c00f4d0 */ jal func0003d340 +/* 35b08: 0c00f4d0 */ jal __seqpReleaseVoice /* 35b0c: 8d060008 */ lw $a2,0x8($t0) .L00035b10: /* 35b10: 8fac0094 */ lw $t4,0x94($sp) @@ -2544,7 +2544,7 @@ glabel func00035110 /* 35bc4: 00408025 */ or $s0,$v0,$zero /* 35bc8: 02003025 */ or $a2,$s0,$zero /* 35bcc: 02202825 */ or $a1,$s1,$zero -/* 35bd0: 0c00f33c */ jal func0003ccf0 +/* 35bd0: 0c00f33c */ jal alSynSetVol /* 35bd4: 24840004 */ addiu $a0,$a0,0x4 /* 35bd8: 10000589 */ b .L00037200 /* 35bdc: 00000000 */ nop @@ -2574,7 +2574,7 @@ glabel func00035110 /* 35c38: 00408025 */ or $s0,$v0,$zero /* 35c3c: 02003025 */ or $a2,$s0,$zero /* 35c40: 02202825 */ or $a1,$s1,$zero -/* 35c44: 0c00f33c */ jal func0003ccf0 +/* 35c44: 0c00f33c */ jal alSynSetVol /* 35c48: 24840004 */ addiu $a0,$a0,0x4 .L00035c4c: /* 35c4c: 8fb900c8 */ lw $t9,0xc8($sp) @@ -3083,7 +3083,7 @@ glabel func00035110 /* 363ac: 00408025 */ or $s0,$v0,$zero /* 363b0: 02003025 */ or $a2,$s0,$zero /* 363b4: 87a500b6 */ lh $a1,0xb6($sp) -/* 363b8: 0c00f33c */ jal func0003ccf0 +/* 363b8: 0c00f33c */ jal alSynSetVol /* 363bc: 24840004 */ addiu $a0,$a0,0x4 .L000363c0: /* 363c0: 8fae00c8 */ lw $t6,0xc8($sp) @@ -3198,7 +3198,7 @@ glabel func00035110 /* 36554: 8fa500c8 */ lw $a1,0xc8($sp) /* 36558: 8fa400d0 */ lw $a0,0xd0($sp) /* 3655c: 02003025 */ or $a2,$s0,$zero -/* 36560: 0c00f4d0 */ jal func0003d340 +/* 36560: 0c00f4d0 */ jal __seqpReleaseVoice /* 36564: 24a50004 */ addiu $a1,$a1,0x4 /* 36568: 10000013 */ b .L000365b8 /* 3656c: 00000000 */ nop @@ -3221,7 +3221,7 @@ glabel func00035110 /* 365a4: 8fa500c8 */ lw $a1,0xc8($sp) /* 365a8: 8fa400d0 */ lw $a0,0xd0($sp) /* 365ac: 02003025 */ or $a2,$s0,$zero -/* 365b0: 0c00f4d0 */ jal func0003d340 +/* 365b0: 0c00f4d0 */ jal __seqpReleaseVoice /* 365b4: 24a50004 */ addiu $a1,$a1,0x4 .L000365b8: /* 365b8: 8fab00c8 */ lw $t3,0xc8($sp) @@ -4708,7 +4708,7 @@ glabel func00035110 /* 35ad8: 8fab0094 */ lw $t3,0x94($sp) /* 35adc: 8fa400d0 */ lw $a0,0xd0($sp) /* 35ae0: 24a50004 */ addiu $a1,$a1,0x4 -/* 35ae4: 0c00f4d0 */ jal func0003d340 +/* 35ae4: 0c00f4d0 */ jal __seqpReleaseVoice /* 35ae8: 8d660020 */ lw $a2,0x20($t3) /* 35aec: 10000008 */ b .L00035b10 /* 35af0: 00000000 */ nop @@ -4718,7 +4718,7 @@ glabel func00035110 /* 35afc: 8db80020 */ lw $t8,0x20($t5) /* 35b00: 25a50004 */ addiu $a1,$t5,0x4 /* 35b04: 8f080000 */ lw $t0,0x0($t8) -/* 35b08: 0c00f4d0 */ jal func0003d340 +/* 35b08: 0c00f4d0 */ jal __seqpReleaseVoice /* 35b0c: 8d060008 */ lw $a2,0x8($t0) .L00035b10: /* 35b10: 8fac0094 */ lw $t4,0x94($sp) @@ -4771,7 +4771,7 @@ glabel func00035110 /* 35bc4: 00408025 */ or $s0,$v0,$zero /* 35bc8: 02003025 */ or $a2,$s0,$zero /* 35bcc: 02202825 */ or $a1,$s1,$zero -/* 35bd0: 0c00f33c */ jal func0003ccf0 +/* 35bd0: 0c00f33c */ jal alSynSetVol /* 35bd4: 24840004 */ addiu $a0,$a0,0x4 /* 35bd8: 10000589 */ b .L00037200 /* 35bdc: 00000000 */ nop @@ -4801,7 +4801,7 @@ glabel func00035110 /* 35c38: 00408025 */ or $s0,$v0,$zero /* 35c3c: 02003025 */ or $a2,$s0,$zero /* 35c40: 02202825 */ or $a1,$s1,$zero -/* 35c44: 0c00f33c */ jal func0003ccf0 +/* 35c44: 0c00f33c */ jal alSynSetVol /* 35c48: 24840004 */ addiu $a0,$a0,0x4 .L00035c4c: /* 35c4c: 8fb900c8 */ lw $t9,0xc8($sp) @@ -5310,7 +5310,7 @@ glabel func00035110 /* 363ac: 00408025 */ or $s0,$v0,$zero /* 363b0: 02003025 */ or $a2,$s0,$zero /* 363b4: 87a500b6 */ lh $a1,0xb6($sp) -/* 363b8: 0c00f33c */ jal func0003ccf0 +/* 363b8: 0c00f33c */ jal alSynSetVol /* 363bc: 24840004 */ addiu $a0,$a0,0x4 .L000363c0: /* 363c0: 8fae00c8 */ lw $t6,0xc8($sp) @@ -5425,7 +5425,7 @@ glabel func00035110 /* 36554: 8fa500c8 */ lw $a1,0xc8($sp) /* 36558: 8fa400d0 */ lw $a0,0xd0($sp) /* 3655c: 02003025 */ or $a2,$s0,$zero -/* 36560: 0c00f4d0 */ jal func0003d340 +/* 36560: 0c00f4d0 */ jal __seqpReleaseVoice /* 36564: 24a50004 */ addiu $a1,$a1,0x4 /* 36568: 10000013 */ b .L000365b8 /* 3656c: 00000000 */ nop @@ -5448,7 +5448,7 @@ glabel func00035110 /* 365a4: 8fa500c8 */ lw $a1,0xc8($sp) /* 365a8: 8fa400d0 */ lw $a0,0xd0($sp) /* 365ac: 02003025 */ or $a2,$s0,$zero -/* 365b0: 0c00f4d0 */ jal func0003d340 +/* 365b0: 0c00f4d0 */ jal __seqpReleaseVoice /* 365b4: 24a50004 */ addiu $a1,$a1,0x4 .L000365b8: /* 365b8: 8fab00c8 */ lw $t3,0xc8($sp)