From 05b1f2c13d539b1ed664e675ee5a448adc5eac4e Mon Sep 17 00:00:00 2001 From: Matt Borgerson Date: Sat, 31 May 2025 15:47:19 -0700 Subject: [PATCH] mcpx: Define a constant for 3D voice count --- hw/xbox/mcpx/apu.c | 6 +++--- hw/xbox/mcpx/apu_regs.h | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/hw/xbox/mcpx/apu.c b/hw/xbox/mcpx/apu.c index 338e132956..137f0f7479 100644 --- a/hw/xbox/mcpx/apu.c +++ b/hw/xbox/mcpx/apu.c @@ -1795,7 +1795,7 @@ static void voice_process(MCPXAPUState *d, bin[7] = voice_get_mask(d, v, NV_PAVS_VOICE_CFG_FMT, NV_PAVS_VOICE_CFG_FMT_V7BIN); - if (v < 64) { + if (v < MCPX_HW_MAX_3D_VOICES) { bin[0] = d->vp.hrtf_submix[0]; bin[1] = d->vp.hrtf_submix[1]; bin[2] = d->vp.hrtf_submix[2]; @@ -1846,7 +1846,7 @@ static void voice_process(MCPXAPUState *d, // FIXME: Move to function bool lpf = false; - if (v < 64) { + if (v < MCPX_HW_MAX_3D_VOICES) { /* 1:DLS2+I3DL2 2:ParaEQ+I3DL2 3:I3DL2 */ lpf = (fmode == 1); } else { @@ -1878,7 +1878,7 @@ static void voice_process(MCPXAPUState *d, for (int b = 0; b < 8; b++) { float g = ea_value; float hr; - if ((v < 64) && (b < 4)) { + if ((v < MCPX_HW_MAX_3D_VOICES) && (b < 4)) { // FIXME: Not sure if submix/voice headroom factor in for HRTF // Note: Attenuate extra 6dB to simulate HRTF hr = 1 << (d->vp.hrtf_headroom + 1); diff --git a/hw/xbox/mcpx/apu_regs.h b/hw/xbox/mcpx/apu_regs.h index d745a69354..84a881e88f 100644 --- a/hw/xbox/mcpx/apu_regs.h +++ b/hw/xbox/mcpx/apu_regs.h @@ -313,6 +313,7 @@ #define EP_INPUT_FIFO_COUNT 2 #define MCPX_HW_MAX_VOICES 256 +#define MCPX_HW_MAX_3D_VOICES 64 #define NUM_SAMPLES_PER_FRAME 32 #define NUM_MIXBINS 32