From 7163ea66b3fc4e2db17920e89a18fd9a6d6af357 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 15 Oct 2021 22:12:41 +1000 Subject: [PATCH] Decompile _init_lpfilter --- src/lib/naudio/n_drvrNew.c | 171 ++++++++++++------------------------- 1 file changed, 53 insertions(+), 118 deletions(-) diff --git a/src/lib/naudio/n_drvrNew.c b/src/lib/naudio/n_drvrNew.c index 49d169268..9191dfc3a 100644 --- a/src/lib/naudio/n_drvrNew.c +++ b/src/lib/naudio/n_drvrNew.c @@ -1,6 +1,33 @@ #include "n_synthInternals.h" #include +/* + * WARNING: THE FOLLOWING CONSTANT MUST BE KEPT IN SYNC + * WITH SCALING IN MICROCODE!!! + */ +#define SCALE 16384.0f + +/* + * the following arrays contain default parameters for + * a few hopefully useful effects. + */ +#define ms *(((s32)((f32)44.1))&~0x7) + +s32 SMALLROOM_PARAMS_N[26] = { + /* sections length */ + 3, 55 ms, + /* chorus chorus filter + input output fbcoef ffcoef gain rate depth coef */ + 0 ms, 29.6 ms, 9830, -9830, 0, 0, 0, 0, + 10.4 ms, 20.8 ms, 3276, -3276, 0x3fff, 0, 0, 0, + 0 ms, 33 ms, 5000, 0, 0, 0, 0, 0x5000, +}; + +s32 BIGROOM_PARAMS_N[10] = { + 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + GLOBAL_ASM( glabel func0003b710 .late_rodata @@ -106,97 +133,32 @@ glabel var70054ac4 /* 3b880: 00000000 */ nop ); -GLOBAL_ASM( -glabel _init_lpfilter -/* 3b884: 27bdffe8 */ addiu $sp,$sp,-24 -/* 3b888: 848e0000 */ lh $t6,0x0($a0) -/* 3b88c: 3c014680 */ lui $at,0x4680 -/* 3b890: 44814000 */ mtc1 $at,$f8 -/* 3b894: 448e2000 */ mtc1 $t6,$f4 -/* 3b898: 00000000 */ nop -/* 3b89c: 468021a0 */ cvt.s.w $f6,$f4 -/* 3b8a0: 46083282 */ mul.s $f10,$f6,$f8 -/* 3b8a4: 4600540d */ trunc.w.s $f16,$f10 -/* 3b8a8: 44188000 */ mfc1 $t8,$f16 -/* 3b8ac: 00000000 */ nop -/* 3b8b0: afb80010 */ sw $t8,0x10($sp) -/* 3b8b4: 8fb90010 */ lw $t9,0x10($sp) -/* 3b8b8: 001943c3 */ sra $t0,$t9,0xf -/* 3b8bc: a7a8000e */ sh $t0,0xe($sp) -/* 3b8c0: 87a9000e */ lh $t1,0xe($sp) -/* 3b8c4: 3c014680 */ lui $at,0x4680 -/* 3b8c8: 44819000 */ mtc1 $at,$f18 -/* 3b8cc: 44892000 */ mtc1 $t1,$f4 -/* 3b8d0: 00000000 */ nop -/* 3b8d4: 468021a0 */ cvt.s.w $f6,$f4 -/* 3b8d8: 46069201 */ sub.s $f8,$f18,$f6 -/* 3b8dc: 4600428d */ trunc.w.s $f10,$f8 -/* 3b8e0: 440b5000 */ mfc1 $t3,$f10 -/* 3b8e4: 00000000 */ nop -/* 3b8e8: a48b0002 */ sh $t3,0x2($a0) -/* 3b8ec: ac800028 */ sw $zero,0x28($a0) -/* 3b8f0: afa00014 */ sw $zero,0x14($sp) -.L0003b8f4: -/* 3b8f4: 8fac0014 */ lw $t4,0x14($sp) -/* 3b8f8: 000c6840 */ sll $t5,$t4,0x1 -/* 3b8fc: 008d7021 */ addu $t6,$a0,$t5 -/* 3b900: a5c00008 */ sh $zero,0x8($t6) -/* 3b904: 8faf0014 */ lw $t7,0x14($sp) -/* 3b908: 25f80001 */ addiu $t8,$t7,0x1 -/* 3b90c: 2b010008 */ slti $at,$t8,0x8 -/* 3b910: 1420fff8 */ bnez $at,.L0003b8f4 -/* 3b914: afb80014 */ sw $t8,0x14($sp) -/* 3b918: 8fa80014 */ lw $t0,0x14($sp) -/* 3b91c: 87b9000e */ lh $t9,0xe($sp) -/* 3b920: 00084840 */ sll $t1,$t0,0x1 -/* 3b924: 00895021 */ addu $t2,$a0,$t1 -/* 3b928: a5590008 */ sh $t9,0x8($t2) -/* 3b92c: 8fab0014 */ lw $t3,0x14($sp) -/* 3b930: 256c0001 */ addiu $t4,$t3,0x1 -/* 3b934: afac0014 */ sw $t4,0x14($sp) -/* 3b938: 3c014680 */ lui $at,0x4680 -/* 3b93c: 44818000 */ mtc1 $at,$f16 -/* 3b940: 00000000 */ nop -/* 3b944: e7b00000 */ swc1 $f16,0x0($sp) -/* 3b948: 87ad000e */ lh $t5,0xe($sp) -/* 3b94c: c7a60000 */ lwc1 $f6,0x0($sp) -/* 3b950: 448d2000 */ mtc1 $t5,$f4 -/* 3b954: 00000000 */ nop -/* 3b958: 468024a0 */ cvt.s.w $f18,$f4 -/* 3b95c: 46069203 */ div.s $f8,$f18,$f6 -/* 3b960: e7a80008 */ swc1 $f8,0x8($sp) -/* 3b964: e7a80004 */ swc1 $f8,0x4($sp) -/* 3b968: 8fae0014 */ lw $t6,0x14($sp) -/* 3b96c: 29c10010 */ slti $at,$t6,0x10 -/* 3b970: 10200014 */ beqz $at,.L0003b9c4 -/* 3b974: 00000000 */ nop -.L0003b978: -/* 3b978: c7aa0004 */ lwc1 $f10,0x4($sp) -/* 3b97c: c7b00008 */ lwc1 $f16,0x8($sp) -/* 3b980: 46105102 */ mul.s $f4,$f10,$f16 -/* 3b984: e7a40004 */ swc1 $f4,0x4($sp) -/* 3b988: c7b20004 */ lwc1 $f18,0x4($sp) -/* 3b98c: c7a60000 */ lwc1 $f6,0x0($sp) -/* 3b990: 8fa80014 */ lw $t0,0x14($sp) -/* 3b994: 46069202 */ mul.s $f8,$f18,$f6 -/* 3b998: 00084840 */ sll $t1,$t0,0x1 -/* 3b99c: 0089c821 */ addu $t9,$a0,$t1 -/* 3b9a0: 4600428d */ trunc.w.s $f10,$f8 -/* 3b9a4: 44185000 */ mfc1 $t8,$f10 -/* 3b9a8: 00000000 */ nop -/* 3b9ac: a7380008 */ sh $t8,0x8($t9) -/* 3b9b0: 8faa0014 */ lw $t2,0x14($sp) -/* 3b9b4: 254b0001 */ addiu $t3,$t2,0x1 -/* 3b9b8: 29610010 */ slti $at,$t3,0x10 -/* 3b9bc: 1420ffee */ bnez $at,.L0003b978 -/* 3b9c0: afab0014 */ sw $t3,0x14($sp) -.L0003b9c4: -/* 3b9c4: 10000001 */ b .L0003b9cc -/* 3b9c8: 00000000 */ nop -.L0003b9cc: -/* 3b9cc: 03e00008 */ jr $ra -/* 3b9d0: 27bd0018 */ addiu $sp,$sp,0x18 -); +void _init_lpfilter(ALLowPass *lp) +{ + s32 i, temp; + s16 fc; + f32 ffc, fcoef; + f32 scale; + + temp = lp->fc * SCALE; + fc = temp >> 15; + lp->fgain = SCALE - fc; + + lp->first = 0; + + for (i = 0; i < 8; i++) { + lp->fcvec.fccoef[i] = 0; + } + + lp->fcvec.fccoef[i++] = fc; + scale = SCALE; + fcoef = ffc = fc / scale; + + for (; i < 16; i++) { + fcoef *= ffc; + lp->fcvec.fccoef[i] = (s16)(fcoef * scale); + } +} GLOBAL_ASM( glabel func0003b9d4 @@ -388,33 +350,6 @@ glabel var70054ad4 /* 3bc4c: 00000000 */ nop ); -/* - * WARNING: THE FOLLOWING CONSTANT MUST BE KEPT IN SYNC - * WITH SCALING IN MICROCODE!!! - */ -#define SCALE 16384 - -/* - * the following arrays contain default parameters for - * a few hopefully useful effects. - */ -#define ms *(((s32)((f32)44.1))&~0x7) - -s32 SMALLROOM_PARAMS_N[26] = { - /* sections length */ - 3, 55 ms, - /* chorus chorus filter - input output fbcoef ffcoef gain rate depth coef */ - 0 ms, 29.6 ms, 9830, -9830, 0, 0, 0, 0, - 10.4 ms, 20.8 ms, 3276, -3276, 0x3fff, 0, 0, 0, - 0 ms, 33 ms, 5000, 0, 0, 0, 0, 0x5000, -}; - -s32 BIGROOM_PARAMS_N[10] = { - 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -}; - void n_alFxNew(ALFx **fx_ar, ALSynConfig *c, s16 bus, ALHeap *hp) { u16 i, j, k;