From 3b4b8ff67e564fc7d6c18c1b93e3682c4a954f12 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 15 Oct 2021 17:04:53 +1000 Subject: [PATCH] Decompile n_alSynAllocFX --- ld/libfiles.ntsc-beta.inc | 1 + ld/libfiles.ntsc-final.inc | 1 + ld/libfiles.pal-final.inc | 1 + src/include/lib/lib_3a100.h | 4 --- src/lib/lib_39fe0.c | 41 ------------------------------- src/lib/lib_3a100.c | 2 +- src/lib/naudio/n_synallocfx.c | 7 ++++++ src/lib/naudio/n_synthInternals.h | 2 +- 8 files changed, 12 insertions(+), 47 deletions(-) create mode 100644 src/lib/naudio/n_synallocfx.c diff --git a/ld/libfiles.ntsc-beta.inc b/ld/libfiles.ntsc-beta.inc index 79865f0d3..162ab0f75 100644 --- a/ld/libfiles.ntsc-beta.inc +++ b/ld/libfiles.ntsc-beta.inc @@ -83,6 +83,7 @@ build/ROMID/lib/lib_39f70.o (section); \ build/ROMID/lib/naudio/n_syndelete.o (section); \ build/ROMID/lib/lib_39fe0.o (section); \ + build/ROMID/lib/naudio/n_synallocfx.o (section); \ build/ROMID/lib/lib_3a100.o (section); \ build/ROMID/lib/naudio/n_save.o (section); \ build/ROMID/lib/naudio/n_event.o (section); \ diff --git a/ld/libfiles.ntsc-final.inc b/ld/libfiles.ntsc-final.inc index befd8c660..66c8cfb52 100644 --- a/ld/libfiles.ntsc-final.inc +++ b/ld/libfiles.ntsc-final.inc @@ -80,6 +80,7 @@ build/ROMID/lib/lib_39f70.o (section); \ build/ROMID/lib/naudio/n_syndelete.o (section); \ build/ROMID/lib/lib_39fe0.o (section); \ + build/ROMID/lib/naudio/n_synallocfx.o (section); \ build/ROMID/lib/lib_3a100.o (section); \ build/ROMID/lib/naudio/n_save.o (section); \ build/ROMID/lib/naudio/n_event.o (section); \ diff --git a/ld/libfiles.pal-final.inc b/ld/libfiles.pal-final.inc index d05381d06..afdcf3927 100644 --- a/ld/libfiles.pal-final.inc +++ b/ld/libfiles.pal-final.inc @@ -80,6 +80,7 @@ build/ROMID/lib/lib_39f70.o (section); \ build/ROMID/lib/naudio/n_syndelete.o (section); \ build/ROMID/lib/lib_39fe0.o (section); \ + build/ROMID/lib/naudio/n_synallocfx.o (section); \ build/ROMID/lib/lib_3a100.o (section); \ build/ROMID/lib/naudio/n_save.o (section); \ build/ROMID/lib/naudio/n_event.o (section); \ diff --git a/src/include/lib/lib_3a100.h b/src/include/lib/lib_3a100.h index 84b82c5d2..47704cb17 100644 --- a/src/include/lib/lib_3a100.h +++ b/src/include/lib/lib_3a100.h @@ -4,8 +4,6 @@ #include "data.h" #include "types.h" -u32 n_alAuxBusPull(void); -u32 n_alFxParamHdl(void); u32 func0003ae60(void); u32 func0003b178(void); u32 func0003b370(void); @@ -14,7 +12,5 @@ u32 func0003b710(void); u32 func0003b884(void); u32 func0003b9d4(void); u32 func0003ba64(void); -u32 func0003bc50(void); -u32 alN_PVoiceNew(void); #endif diff --git a/src/lib/lib_39fe0.c b/src/lib/lib_39fe0.c index 791af3098..8e7ec6c62 100644 --- a/src/lib/lib_39fe0.c +++ b/src/lib/lib_39fe0.c @@ -7,8 +7,6 @@ const u32 var70054a80[] = {0x3f8012ef}; const u32 var70054a84[] = {0x3f7fda28}; -const u32 var70054a88[] = {0x00000000}; -const u32 var70054a8c[] = {0x00000000}; GLOBAL_ASM( glabel func00039fe0 @@ -55,42 +53,3 @@ glabel func00039fe0 /* 3a068: 03e00008 */ jr $ra /* 3a06c: 27bd0008 */ addiu $sp,$sp,0x8 ); - -GLOBAL_ASM( -glabel n_alSynAllocFX -/* 3a070: 27bdffe8 */ addiu $sp,$sp,-24 -/* 3a074: afbf0014 */ sw $ra,0x14($sp) -/* 3a078: afa40018 */ sw $a0,0x18($sp) -/* 3a07c: afa5001c */ sw $a1,0x1c($sp) -/* 3a080: afa60020 */ sw $a2,0x20($sp) -/* 3a084: 3c0e8006 */ lui $t6,%hi(n_syn) -/* 3a088: 8dcef114 */ lw $t6,%lo(n_syn)($t6) -/* 3a08c: 87b8001a */ lh $t8,0x1a($sp) -/* 3a090: 8fa5001c */ lw $a1,0x1c($sp) -/* 3a094: 8dcf0034 */ lw $t7,0x34($t6) -/* 3a098: 0018c8c0 */ sll $t9,$t8,0x3 -/* 3a09c: 0338c821 */ addu $t9,$t9,$t8 -/* 3a0a0: 0019c8c0 */ sll $t9,$t9,0x3 -/* 3a0a4: 01f92021 */ addu $a0,$t7,$t9 -/* 3a0a8: 24840024 */ addiu $a0,$a0,0x24 -/* 3a0ac: 8fa70020 */ lw $a3,0x20($sp) -/* 3a0b0: 0c00ef14 */ jal func0003bc50 -/* 3a0b4: 03003025 */ or $a2,$t8,$zero -/* 3a0b8: 3c088006 */ lui $t0,%hi(n_syn) -/* 3a0bc: 8d08f114 */ lw $t0,%lo(n_syn)($t0) -/* 3a0c0: 87aa001a */ lh $t2,0x1a($sp) -/* 3a0c4: 8d090034 */ lw $t1,0x34($t0) -/* 3a0c8: 000a58c0 */ sll $t3,$t2,0x3 -/* 3a0cc: 016a5821 */ addu $t3,$t3,$t2 -/* 3a0d0: 000b58c0 */ sll $t3,$t3,0x3 -/* 3a0d4: 012b6021 */ addu $t4,$t1,$t3 -/* 3a0d8: 10000003 */ b .L0003a0e8 -/* 3a0dc: 8d820024 */ lw $v0,0x24($t4) -/* 3a0e0: 10000001 */ b .L0003a0e8 -/* 3a0e4: 00000000 */ nop -.L0003a0e8: -/* 3a0e8: 8fbf0014 */ lw $ra,0x14($sp) -/* 3a0ec: 27bd0018 */ addiu $sp,$sp,0x18 -/* 3a0f0: 03e00008 */ jr $ra -/* 3a0f4: 00000000 */ nop -); diff --git a/src/lib/lib_3a100.c b/src/lib/lib_3a100.c index b79be228f..141ee3e15 100644 --- a/src/lib/lib_3a100.c +++ b/src/lib/lib_3a100.c @@ -1895,7 +1895,7 @@ glabel var70054ad4 ); GLOBAL_ASM( -glabel func0003bc50 +glabel n_alFxNew .late_rodata glabel var70054ad8 .word 0x482910da diff --git a/src/lib/naudio/n_synallocfx.c b/src/lib/naudio/n_synallocfx.c new file mode 100644 index 000000000..e02c7e3bb --- /dev/null +++ b/src/lib/naudio/n_synallocfx.c @@ -0,0 +1,7 @@ +#include "n_synthInternals.h" + +ALFxRef n_alSynAllocFX(s16 bus, ALSynConfig *c, ALHeap *hp) +{ + n_alFxNew(n_syn->auxBus[bus].fx_array, c, bus, hp); + return n_syn->auxBus[bus].fx_array[0]; +} diff --git a/src/lib/naudio/n_synthInternals.h b/src/lib/naudio/n_synthInternals.h index aa9fdf757..173d24f6a 100644 --- a/src/lib/naudio/n_synthInternals.h +++ b/src/lib/naudio/n_synthInternals.h @@ -178,7 +178,7 @@ Acmd *n_alAuxBusPull( s32 sampleOffset, Acmd *p); Acmd *n_alFxPull( s32 sampleOffset, Acmd *p); s32 n_alFxParamHdl(void *filter, s32 paramID, void *param); -void n_alFxNew(ALFx **r, ALSynConfig *c, ALHeap *hp); +void n_alFxNew(ALFx **r, ALSynConfig *c, s32 bus, ALHeap *hp); Acmd *n_alMainBusPull( s32 sampleOffset, Acmd *p); s32 n_alMainBusParam( s32 paramID, void *param);