diff --git a/Makefile b/Makefile index e5a6c6928..7df615e14 100644 --- a/Makefile +++ b/Makefile @@ -105,7 +105,6 @@ G_C_FILES := \ src/lib/lib_2fba0.c \ src/lib/lib_317f0.c \ src/lib/lib_3a100.c \ - src/lib/lib_3e730.c \ src/lib/mp3.c \ src/lib/speaker.c diff --git a/include/PR/n_libaudio.h b/include/PR/n_libaudio.h index fe3464f5b..ab4e82b53 100644 --- a/include/PR/n_libaudio.h +++ b/include/PR/n_libaudio.h @@ -100,6 +100,8 @@ void n_alSynStartVoiceParams(N_ALVoice *v, ALWaveTable *w,f32 pitch, s16 vol, ALPan pan, u8 fxmix, u8 arg6, f32 arg7, u8 arg8, ALMicroTime t); void n_alSynStopVoice( N_ALVoice *v); +void n_alSynFilter11(N_ALVoice *v, u8 channel); + void n_alSynNew(ALSynConfig *c); void n_alSynDelete(void); diff --git a/ld/libfiles.ntsc-beta.inc b/ld/libfiles.ntsc-beta.inc index 42f5b61dd..6e046d9c8 100644 --- a/ld/libfiles.ntsc-beta.inc +++ b/ld/libfiles.ntsc-beta.inc @@ -100,7 +100,8 @@ build/ROMID/lib/naudio/n_seqplayer.o (section); \ build/ROMID/lib/lib_3e3e0.o (section); \ build/ROMID/lib/naudio/n_synsetfxparam.o (section); \ - build/ROMID/lib/lib_3e730.o (section); \ + build/ROMID/lib/naudio/n_synfilter11.o (section); \ + build/ROMID/lib/ultra/audio/cseq.o (section); \ build/ROMID/lib/naudio/n_env.o (section); \ build/ROMID/lib/lib_3f8a0.o (section); \ build/ROMID/lib/lib_43dd0.o (section); \ diff --git a/ld/libfiles.ntsc-final.inc b/ld/libfiles.ntsc-final.inc index 0cf092e30..24c0752b5 100644 --- a/ld/libfiles.ntsc-final.inc +++ b/ld/libfiles.ntsc-final.inc @@ -97,7 +97,8 @@ build/ROMID/lib/naudio/n_seqplayer.o (section); \ build/ROMID/lib/lib_3e3e0.o (section); \ build/ROMID/lib/naudio/n_synsetfxparam.o (section); \ - build/ROMID/lib/lib_3e730.o (section); \ + build/ROMID/lib/naudio/n_synfilter11.o (section); \ + build/ROMID/lib/ultra/audio/cseq.o (section); \ build/ROMID/lib/naudio/n_env.o (section); \ build/ROMID/lib/lib_3f8a0.o (section); \ build/ROMID/lib/lib_43dd0.o (section); \ diff --git a/ld/libfiles.pal-final.inc b/ld/libfiles.pal-final.inc index fce5dc6e1..b5e083aaf 100644 --- a/ld/libfiles.pal-final.inc +++ b/ld/libfiles.pal-final.inc @@ -97,7 +97,8 @@ build/ROMID/lib/naudio/n_seqplayer.o (section); \ build/ROMID/lib/lib_3e3e0.o (section); \ build/ROMID/lib/naudio/n_synsetfxparam.o (section); \ - build/ROMID/lib/lib_3e730.o (section); \ + build/ROMID/lib/naudio/n_synfilter11.o (section); \ + build/ROMID/lib/ultra/audio/cseq.o (section); \ build/ROMID/lib/naudio/n_env.o (section); \ build/ROMID/lib/lib_3f8a0.o (section); \ build/ROMID/lib/lib_43dd0.o (section); \ diff --git a/src/include/lib/lib_3e730.h b/src/include/lib/lib_3e730.h deleted file mode 100644 index 1626cecc0..000000000 --- a/src/include/lib/lib_3e730.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _IN_LIB_LIB_3E730_H -#define _IN_LIB_LIB_3E730_H -#include -#include "data.h" -#include "types.h" - -void func0003e730(N_ALVoice *v, u8 channel); - -#endif diff --git a/src/lib/lib_317f0.c b/src/lib/lib_317f0.c index baba45174..d9be8481c 100644 --- a/src/lib/lib_317f0.c +++ b/src/lib/lib_317f0.c @@ -8,7 +8,6 @@ #include "lib/lib_3a100.h" #include "lib/lib_3d280.h" #include "lib/lib_3e3e0.h" -#include "lib/lib_3e730.h" #include "data.h" #include "types.h" diff --git a/src/lib/lib_3e3e0.c b/src/lib/lib_3e3e0.c index 4bcd2fc79..c59766e7b 100644 --- a/src/lib/lib_3e3e0.c +++ b/src/lib/lib_3e3e0.c @@ -2,7 +2,6 @@ #include "constants.h" #include "bss.h" #include "lib/lib_3a100.h" -#include "lib/lib_3e730.h" #include "data.h" #include "types.h" diff --git a/src/lib/lib_3e730.c b/src/lib/lib_3e730.c deleted file mode 100644 index 2e2c2178e..000000000 --- a/src/lib/lib_3e730.c +++ /dev/null @@ -1,97 +0,0 @@ -#include -#include "constants.h" -#include "bss.h" -#include "lib/mtx.h" -#include "lib/lib_3e730.h" -#include "lib/lib_43dd0.h" -#include "lib/lib_45ed0.h" -#include "lib/lib_461c0.h" -#include "lib/lib_46650.h" -#include "lib/lib_47550.h" -#include "lib/libc/ll.h" -#include "data.h" -#include "types.h" - -GLOBAL_ASM( -glabel func0003e730 -/* 3e730: 27bdffe0 */ addiu $sp,$sp,-32 -/* 3e734: afbf0014 */ sw $ra,0x14($sp) -/* 3e738: afa40020 */ sw $a0,0x20($sp) -/* 3e73c: afa50024 */ sw $a1,0x24($sp) -/* 3e740: 8fae0020 */ lw $t6,0x20($sp) -/* 3e744: 8dcf0008 */ lw $t7,0x8($t6) -/* 3e748: 11e0001f */ beqz $t7,.L0003e7c8 -/* 3e74c: 00000000 */ nop -/* 3e750: 0c00c541 */ jal __n_allocParam -/* 3e754: 00000000 */ nop -/* 3e758: afa2001c */ sw $v0,0x1c($sp) -/* 3e75c: 8fb8001c */ lw $t8,0x1c($sp) -/* 3e760: 17000003 */ bnez $t8,.L0003e770 -/* 3e764: 00000000 */ nop -/* 3e768: 10000019 */ b .L0003e7d0 -/* 3e76c: 00000000 */ nop -.L0003e770: -/* 3e770: 8fa90020 */ lw $t1,0x20($sp) -/* 3e774: 3c198006 */ lui $t9,%hi(n_syn) -/* 3e778: 8f39f114 */ lw $t9,%lo(n_syn)($t9) -/* 3e77c: 8d2a0008 */ lw $t2,0x8($t1) -/* 3e780: 8fad001c */ lw $t5,0x1c($sp) -/* 3e784: 8f28001c */ lw $t0,0x1c($t9) -/* 3e788: 8d4b0088 */ lw $t3,0x88($t2) -/* 3e78c: 010b6021 */ addu $t4,$t0,$t3 -/* 3e790: adac0004 */ sw $t4,0x4($t5) -/* 3e794: 8faf001c */ lw $t7,0x1c($sp) -/* 3e798: 240e0011 */ addiu $t6,$zero,0x11 -/* 3e79c: a5ee0008 */ sh $t6,0x8($t7) -/* 3e7a0: 93b80027 */ lbu $t8,0x27($sp) -/* 3e7a4: 8fb9001c */ lw $t9,0x1c($sp) -/* 3e7a8: af38000c */ sw $t8,0xc($t9) -/* 3e7ac: 8fa9001c */ lw $t1,0x1c($sp) -/* 3e7b0: ad200000 */ sw $zero,0x0($t1) -/* 3e7b4: 8faa0020 */ lw $t2,0x20($sp) -/* 3e7b8: 24050003 */ addiu $a1,$zero,0x3 -/* 3e7bc: 8fa6001c */ lw $a2,0x1c($sp) -/* 3e7c0: 0c00fc79 */ jal n_alEnvmixerParam -/* 3e7c4: 8d440008 */ lw $a0,0x8($t2) -.L0003e7c8: -/* 3e7c8: 10000001 */ b .L0003e7d0 -/* 3e7cc: 00000000 */ nop -.L0003e7d0: -/* 3e7d0: 8fbf0014 */ lw $ra,0x14($sp) -/* 3e7d4: 27bd0020 */ addiu $sp,$sp,0x20 -/* 3e7d8: 03e00008 */ jr $ra -/* 3e7dc: 00000000 */ nop -); - -/** - * Note: If there are no valid tracks (ie. all tracks have - * reached the end of their data stream), then return FALSE - * to indicate that there is no next event. - */ -char __alCSeqNextDelta(ALCSeq *seq, s32 *pDeltaTicks) -{ - u32 i; - u32 firstTime = 0xffffffff; - u32 lastTicks = seq->lastDeltaTicks; - - if (!seq->validTracks) { - return FALSE; - } - - for (i = 0; i < 16; i++) { - if ((seq->validTracks >> i) & 1) { - if (seq->deltaFlag) { - seq->evtDeltaTicks[i] -= lastTicks; - } - - if (seq->evtDeltaTicks[i] < firstTime) { - firstTime = seq->evtDeltaTicks[i]; - } - } - } - - seq->deltaFlag = 0; - *pDeltaTicks = firstTime; - - return TRUE; -} diff --git a/src/lib/lib_43dd0.c b/src/lib/lib_43dd0.c index f308dbda9..709852932 100644 --- a/src/lib/lib_43dd0.c +++ b/src/lib/lib_43dd0.c @@ -1,7 +1,6 @@ #include #include "constants.h" #include "bss.h" -#include "lib/lib_3e730.h" #include "lib/lib_43dd0.h" #include "lib/lib_461c0.h" #include "lib/libc/ll.h" diff --git a/src/lib/lib_446d0.c b/src/lib/lib_446d0.c index 24bfe40b4..57adc2bba 100644 --- a/src/lib/lib_446d0.c +++ b/src/lib/lib_446d0.c @@ -1,7 +1,6 @@ #include #include "constants.h" #include "bss.h" -#include "lib/lib_3e730.h" #include "data.h" #include "types.h" diff --git a/src/lib/naudio/n_csplayer.c b/src/lib/naudio/n_csplayer.c index bc889d0ad..e1d067b26 100644 --- a/src/lib/naudio/n_csplayer.c +++ b/src/lib/naudio/n_csplayer.c @@ -976,7 +976,7 @@ void __n_CSPHandleMIDIMsg(N_ALCSPlayer *seqp, N_ALEvent *event) for (vs = seqp->vAllocHead; vs != 0; vs = vs->next) { if (vs->channel == chan) { - func0003e730(&vs->voice, byte2); + n_alSynFilter11(&vs->voice, byte2); } } break; diff --git a/src/lib/naudio/n_synfilter11.c b/src/lib/naudio/n_synfilter11.c new file mode 100644 index 000000000..d70d2bdad --- /dev/null +++ b/src/lib/naudio/n_synfilter11.c @@ -0,0 +1,20 @@ +#include +#include +#include "n_synthInternals.h" + +void n_alSynFilter11(N_ALVoice *v, u8 channel) +{ + ALParam *update; + + if (v->pvoice) { + update = (ALParam *)__n_allocParam(); + ALFailIf(update == 0, ERR_ALSYN_NO_UPDATE); + + update->delta = n_syn->paramSamples + v->pvoice->offset; + update->type = AL_FILTER_11; + update->data.i = channel; + update->next = 0; + + n_alEnvmixerParam(v->pvoice, AL_FILTER_ADD_UPDATE, update); + } +} diff --git a/src/lib/speaker.c b/src/lib/speaker.c index f5f4ce1dc..ea95935ac 100644 --- a/src/lib/speaker.c +++ b/src/lib/speaker.c @@ -10,7 +10,6 @@ #include "lib/lib_3a100.h" #include "lib/lib_3d280.h" #include "lib/lib_3e3e0.h" -#include "lib/lib_3e730.h" #include "data.h" #include "types.h" diff --git a/src/lib/ultra/audio/cseq.c b/src/lib/ultra/audio/cseq.c new file mode 100644 index 000000000..cbceae5f9 --- /dev/null +++ b/src/lib/ultra/audio/cseq.c @@ -0,0 +1,36 @@ +#include +#include +#include "synthInternals.h" + +/** + * Note: If there are no valid tracks (ie. all tracks have + * reached the end of their data stream), then return FALSE + * to indicate that there is no next event. + */ +char __alCSeqNextDelta(ALCSeq *seq, s32 *pDeltaTicks) +{ + u32 i; + u32 firstTime = 0xffffffff; + u32 lastTicks = seq->lastDeltaTicks; + + if (!seq->validTracks) { + return FALSE; + } + + for (i = 0; i < 16; i++) { + if ((seq->validTracks >> i) & 1) { + if (seq->deltaFlag) { + seq->evtDeltaTicks[i] -= lastTicks; + } + + if (seq->evtDeltaTicks[i] < firstTime) { + firstTime = seq->evtDeltaTicks[i]; + } + } + } + + seq->deltaFlag = 0; + *pDeltaTicks = firstTime; + + return TRUE; +}