From 3519df26d0efde3cc01855f19717ca3cd4b8061f Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 14 Sep 2024 20:26:45 -0400 Subject: [PATCH] n_synstartvoiceparam --- linker_scripts/us/symbol_addrs_code.txt | 2 +- src/50A00.c | 2 - src/libnaudio/n_synstartvoiceparam.c | 66 +++++++++++++++++++++++++ yamls/us/rom.yaml | 1 + 4 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 src/libnaudio/n_synstartvoiceparam.c diff --git a/linker_scripts/us/symbol_addrs_code.txt b/linker_scripts/us/symbol_addrs_code.txt index 97453ef..879801d 100644 --- a/linker_scripts/us/symbol_addrs_code.txt +++ b/linker_scripts/us/symbol_addrs_code.txt @@ -1467,7 +1467,7 @@ n_alSynDelete = 0x8004FD90; // type:func n_alSynAllocFX = 0x8004FDA0; // type:func func_8004FE00 = 0x8004FE00; // type:func func_8004FF20 = 0x8004FF20; // type:func -func_8004FF40 = 0x8004FF40; // type:func +n_alSynStartVoiceParams = 0x8004FF40; // type:func func_80050020 = 0x80050020; // type:func n_alFxPull = 0x800500C0; // type:func n_alFxParamHdl = 0x800503A0; // type:func diff --git a/src/50A00.c b/src/50A00.c index bd41793..b39d96a 100644 --- a/src/50A00.c +++ b/src/50A00.c @@ -3,5 +3,3 @@ #pragma GLOBAL_ASM("asm/us/nonmatchings/50A00/func_8004FE00.s") #pragma GLOBAL_ASM("asm/us/nonmatchings/50A00/func_8004FF20.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/50A00/func_8004FF40.s") diff --git a/src/libnaudio/n_synstartvoiceparam.c b/src/libnaudio/n_synstartvoiceparam.c new file mode 100644 index 0000000..679bea3 --- /dev/null +++ b/src/libnaudio/n_synstartvoiceparam.c @@ -0,0 +1,66 @@ +/*==================================================================== + * + * Copyright 1993, Silicon Graphics, Inc. + * All Rights Reserved. + * + * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, + * Inc.; the contents of this file may not be disclosed to third + * parties, copied or duplicated in any form, in whole or in part, + * without the prior written permission of Silicon Graphics, Inc. + * + * RESTRICTED RIGHTS LEGEND: + * Use, duplication or disclosure by the Government is subject to + * restrictions as set forth in subdivision (c)(1)(ii) of the Rights + * in Technical Data and Computer Software clause at DFARS + * 252.227-7013, and/or in similar or successor clauses in the FAR, + * DOD or NASA FAR Supplement. Unpublished - rights reserved under the + * Copyright Laws of the United States. + *====================================================================*/ +#include "n_synthInternals.h" +#include +#include + +void n_alSynStartVoiceParams(N_ALVoice *v, ALWaveTable *w, f32 pitch, + s16 vol, ALPan pan, u8 fxmix, ALMicroTime t) +{ + ALStartParamAlt *update; + + if (v->pvoice) { + /* + * get new update struct from the free list + */ + update = (ALStartParamAlt *)__n_allocParam(); + ALFailIf(update == 0, ERR_ALSYN_NO_UPDATE); + + if (fxmix > 127) + fxmix = 127; + + /* + * set offset and fxmix data + */ +#ifdef SAMPLE_ROUND + update->delta = SAMPLE184( n_syn->paramSamples + v->pvoice->offset); +#else + update->delta = n_syn->paramSamples + v->pvoice->offset; +#endif + update->next = 0; + update->type = AL_FILTER_START_VOICE_ALT; + + update->unity = v->unityPitch; + update->pan = pan; + update->volume = vol; + update->fxMix = fxmix; + update->pitch = pitch; +#ifdef SAMPLE_ROUND + update->samples = SAMPLE184( _n_timeToSamples(t) ); +#else + update->samples = _n_timeToSamples(t); +#endif + update->wave = w; + + n_alEnvmixerParam(v->pvoice, AL_FILTER_ADD_UPDATE, update); + } + +} + + diff --git a/yamls/us/rom.yaml b/yamls/us/rom.yaml index c9fde85..d8bda82 100644 --- a/yamls/us/rom.yaml +++ b/yamls/us/rom.yaml @@ -114,6 +114,7 @@ - [0x50990, c, libnaudio/n_syndelete] - [0x509A0, c, libnaudio/n_synallocfx] - [0x50A00, c] + - [0x50B40, c, libnaudio/n_synstartvoiceparam] - [0x50C20, c] - [0x50CC0, c, libnaudio/n_reverb] - [0x51740, c]