From 4a900ea079ef8d21e60a57a48d4aac98470f0e48 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 16 Oct 2021 11:11:38 +1000 Subject: [PATCH] Decompile n_alSynStopVoice --- ld/libfiles.ntsc-beta.inc | 1 + ld/libfiles.ntsc-final.inc | 1 + ld/libfiles.pal-final.inc | 1 + src/lib/lib_3cef0.c | 47 --------------------------------- src/lib/naudio/n_synstopvoice.c | 20 ++++++++++++++ 5 files changed, 23 insertions(+), 47 deletions(-) create mode 100644 src/lib/naudio/n_synstopvoice.c diff --git a/ld/libfiles.ntsc-beta.inc b/ld/libfiles.ntsc-beta.inc index b9c56d1aa..51aa03fd4 100644 --- a/ld/libfiles.ntsc-beta.inc +++ b/ld/libfiles.ntsc-beta.inc @@ -93,6 +93,7 @@ build/ROMID/lib/naudio/n_synsetvol.o (section); \ build/ROMID/lib/lib_3cdc0.o (section); \ build/ROMID/lib/lib_3cef0.o (section); \ + build/ROMID/lib/naudio/n_synstopvoice.o (section); \ build/ROMID/lib/naudio/n_synfreevoice.o (section); \ build/ROMID/lib/naudio/n_seqplayer.o (section); \ build/ROMID/lib/lib_3e3e0.o (section); \ diff --git a/ld/libfiles.ntsc-final.inc b/ld/libfiles.ntsc-final.inc index 7ff0463f1..b59ea9583 100644 --- a/ld/libfiles.ntsc-final.inc +++ b/ld/libfiles.ntsc-final.inc @@ -90,6 +90,7 @@ build/ROMID/lib/naudio/n_synsetvol.o (section); \ build/ROMID/lib/lib_3cdc0.o (section); \ build/ROMID/lib/lib_3cef0.o (section); \ + build/ROMID/lib/naudio/n_synstopvoice.o (section); \ build/ROMID/lib/naudio/n_synfreevoice.o (section); \ build/ROMID/lib/naudio/n_seqplayer.o (section); \ build/ROMID/lib/lib_3e3e0.o (section); \ diff --git a/ld/libfiles.pal-final.inc b/ld/libfiles.pal-final.inc index 6c6c2be78..14947b77b 100644 --- a/ld/libfiles.pal-final.inc +++ b/ld/libfiles.pal-final.inc @@ -90,6 +90,7 @@ build/ROMID/lib/naudio/n_synsetvol.o (section); \ build/ROMID/lib/lib_3cdc0.o (section); \ build/ROMID/lib/lib_3cef0.o (section); \ + build/ROMID/lib/naudio/n_synstopvoice.o (section); \ build/ROMID/lib/naudio/n_synfreevoice.o (section); \ build/ROMID/lib/naudio/n_seqplayer.o (section); \ build/ROMID/lib/lib_3e3e0.o (section); \ diff --git a/src/lib/lib_3cef0.c b/src/lib/lib_3cef0.c index 11c3b7082..6861bddb1 100644 --- a/src/lib/lib_3cef0.c +++ b/src/lib/lib_3cef0.c @@ -157,50 +157,3 @@ glabel func0003d050 /* 3d0f8: 03e00008 */ jr $ra /* 3d0fc: 00000000 */ nop ); - -GLOBAL_ASM( -glabel n_alSynStopVoice -/* 3d100: 27bdffe0 */ addiu $sp,$sp,-32 -/* 3d104: afbf0014 */ sw $ra,0x14($sp) -/* 3d108: afa40020 */ sw $a0,0x20($sp) -/* 3d10c: 8fae0020 */ lw $t6,0x20($sp) -/* 3d110: 8dcf0008 */ lw $t7,0x8($t6) -/* 3d114: 11e0001c */ beqz $t7,.L0003d188 -/* 3d118: 00000000 */ nop -/* 3d11c: 0c00c541 */ jal __n_allocParam -/* 3d120: 00000000 */ nop -/* 3d124: afa2001c */ sw $v0,0x1c($sp) -/* 3d128: 8fb8001c */ lw $t8,0x1c($sp) -/* 3d12c: 17000003 */ bnez $t8,.L0003d13c -/* 3d130: 00000000 */ nop -/* 3d134: 10000016 */ b .L0003d190 -/* 3d138: 00000000 */ nop -.L0003d13c: -/* 3d13c: 8fa90020 */ lw $t1,0x20($sp) -/* 3d140: 3c198006 */ lui $t9,%hi(n_syn) -/* 3d144: 8f39f114 */ lw $t9,%lo(n_syn)($t9) -/* 3d148: 8d2a0008 */ lw $t2,0x8($t1) -/* 3d14c: 8fad001c */ lw $t5,0x1c($sp) -/* 3d150: 8f28001c */ lw $t0,0x1c($t9) -/* 3d154: 8d4b0088 */ lw $t3,0x88($t2) -/* 3d158: 010b6021 */ addu $t4,$t0,$t3 -/* 3d15c: adac0004 */ sw $t4,0x4($t5) -/* 3d160: 8faf001c */ lw $t7,0x1c($sp) -/* 3d164: 240e000f */ addiu $t6,$zero,0xf -/* 3d168: a5ee0008 */ sh $t6,0x8($t7) -/* 3d16c: 8fb8001c */ lw $t8,0x1c($sp) -/* 3d170: af000000 */ sw $zero,0x0($t8) -/* 3d174: 8fb90020 */ lw $t9,0x20($sp) -/* 3d178: 24050003 */ addiu $a1,$zero,0x3 -/* 3d17c: 8fa6001c */ lw $a2,0x1c($sp) -/* 3d180: 0c00fc79 */ jal n_alEnvmixerParam -/* 3d184: 8f240008 */ lw $a0,0x8($t9) -.L0003d188: -/* 3d188: 10000001 */ b .L0003d190 -/* 3d18c: 00000000 */ nop -.L0003d190: -/* 3d190: 8fbf0014 */ lw $ra,0x14($sp) -/* 3d194: 27bd0020 */ addiu $sp,$sp,0x20 -/* 3d198: 03e00008 */ jr $ra -/* 3d19c: 00000000 */ nop -); diff --git a/src/lib/naudio/n_synstopvoice.c b/src/lib/naudio/n_synstopvoice.c new file mode 100644 index 000000000..b92029d24 --- /dev/null +++ b/src/lib/naudio/n_synstopvoice.c @@ -0,0 +1,20 @@ +#include +#include +#include "n_synthInternals.h" + +void n_alSynStopVoice(N_ALVoice *v) +{ + ALParam *update; + ALFilter *f; + + if (v->pvoice) { + update = __n_allocParam(); + ALFailIf(update == 0, ERR_ALSYN_NO_UPDATE); + + update->delta = n_syn->paramSamples + v->pvoice->offset; + update->type = AL_FILTER_STOP_VOICE; + update->next = 0; + + n_alEnvmixerParam(v->pvoice, AL_FILTER_ADD_UPDATE, update); + } +}