Merge branch 'ACreTeam:master' into master

This commit is contained in:
CreateSource
2025-10-23 12:09:41 -04:00
committed by GitHub
6 changed files with 786 additions and 489 deletions
+48 -1
View File
@@ -68,6 +68,14 @@ extern "C" {
#define A_CMD_LOADCACHE 24
#define A_CMD_EXIT 25
#define aUnkCmd3(pkt, a1, a2, a3) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_CMD_UNK3, 24, 8) | _SHIFTL(a3, 0, 16); \
_a->words.w1 = _SHIFTL(a1, 16, 16) | _SHIFTL(a2, 0, 16); \
}
#define aHalfCut(pkt, src, dst, len) \
{ \
Acmd *_a = (Acmd *)pkt; \
@@ -84,6 +92,14 @@ extern "C" {
_a->words.w1 = _SHIFTL(rampL, 16, 16) | _SHIFTL(rampR, 0, 16); \
}
#define aLoadCache(pkt, dst, src, len) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_CMD_LOADCACHE, 24, 8) | _SHIFTL((len) >> 4, 16, 8) | _SHIFTL(src, 0, 16); \
_a->words.w1 = (u32)(dst); \
}
#define aLoadBuffer2(pkt, dst, src, len) \
{ \
Acmd *_a = (Acmd *)pkt; \
@@ -152,6 +168,36 @@ extern "C" {
#define aFirLoadTable(pkt, size, addr) aFirFilter(pkt, 2, size, addr)
#define aEnvMixer2(pkt, dmemi, count, swapLR, x0, x1, x2, x3, m, bits) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (bits | _SHIFTL(dmemi >> 4, 16, 8) | \
_SHIFTL(count, 8, 8) | _SHIFTL(swapLR, 4, 1) | \
_SHIFTL(x0, 3, 1) | _SHIFTL(x1, 2, 1) | \
_SHIFTL(x2, 1, 1) | _SHIFTL(x3, 0, 1)); \
_a->words.w1 = (unsigned int)(m); \
}
#define aAddMixer(pkt, count, dmemi, dmemo, a4) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_CMD_ADDMIXER, 24, 8) | \
_SHIFTL(count >> 4, 16, 8) | _SHIFTL(a4, 0, 16)); \
_a->words.w1 = _SHIFTL(dmemi, 16, 16) | _SHIFTL(dmemo, 0, 16); \
}
// from MM
#define aResampleZoh(pkt, pitch, pitchAccu) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_CMD_RESAMPLE_ZOH, 24, 8) | \
_SHIFTL(pitch, 0, 16)); \
_a->words.w1 = _SHIFTL(pitchAccu, 0, 16); \
}
#define NA_MAKE_COMMAND(a0, a1, a2, a3) \
(u32)((((a0) & 0xFF) << 24) | (((a1) & 0xFF) << 16) | (((a2) & 0xFF) << 8) | (((a3) & 0xFF) << 0))
@@ -234,7 +280,8 @@ typedef enum SoundOutputMode {
/* 0 */ SOUND_OUTPUT_STEREO,
/* 1 */ SOUND_OUTPUT_HEADSET,
/* 2 */ SOUND_OUTPUT_SURROUND,
/* 3 */ SOUND_OUTPUT_MONO
/* 3 */ SOUND_OUTPUT_MONO,
/* 4 */ SOUND_OUTPUT_DOLBY_SURROUND
} SoundOutputMode;
typedef enum SampleCodec {
+2 -2
View File
@@ -278,7 +278,7 @@ typedef struct driverch_ {
/* 0x06 */ u8 comb_filter_needs_init;
/* 0x07 */ u8 vel_conv_table_idx;
/* 0x08 */ u16 sample_pos_fractional_part;
/* 0x0A */ u16 sound_effect_gain;
/* 0x0A */ u16 surround_effect_gain;
/* 0x0C */ s32 sample_pos_integer_part;
/* 0x10 */ synthparams* synth_params;
/* 0x14 */ s16 current_volume_left;
@@ -322,7 +322,7 @@ typedef struct playbackch_ {
/* 0x54 */ sweep portamento_sweep;
/* 0x60 */ tmtable vibrato_tmtable;
/* 0x7C */ s32 _7C;
/* 0x80 */ u8 _80;
/* 0x80 */ u8 vel_conv_table_idx;
/* 0x84 */ u32 start_sample_pos;
/* 0x88 */ u8 _88[0x18];
} playbackch;
+1 -1
View File
@@ -19,7 +19,7 @@
extern Acmd* Nas_smzAudioFrame(Acmd* cmds, s32* processed_cmds, s16* pSamples, s32 nSamples);
extern Acmd* Nas_DriveRsp(s16* aiBuf, s32 aiBufLen, Acmd* cmd, s32 updateIndex);
extern Acmd* Nas_SynthMain(s32 chan_id, commonch* common, driverch* driver, s16* samples, s32 samples_per_update, Acmd* cmd, s32 update_idx);
extern Acmd* Nas_Synth_Resample(Acmd* cmd, driverch* driver, s32 size, u16 frequencyFixedPoint, u16 sampleDmemBeforeResampling, s32 flags);
extern Acmd* Nas_Synth_Resample(Acmd* cmd, const driverch* driver, s32 size, u16 pitch, u16 sampleDmemBeforeResampling, s32 flags);
extern Acmd* Nas_DolbySurround(Acmd* cmd, commonch* common, driverch* driver, s32 samples_per_update, s32 dmem, s32 flags);
extern Acmd* Nas_Synth_Envelope(Acmd* cmd, commonch* common, driverch* driver, s32 samples_per_update, u16 dmem, s32 haasEffectDelaySide, s32 flags);
extern Acmd* Nas_Synth_Delay(Acmd* cmd, commonch* common, driverch* driver, s32 size, s32 flags, s32 haasEffectDelaySide);
+1
View File
@@ -61,6 +61,7 @@ extern void Nas_BgCopyInit(void);
extern void MK_Init(void);
extern void Nas_WaveDmaNew(s32 n_channels);
extern Na_SyncProc NA_SYNC_PROC;
extern BOOL AUDIO_SYSTEM_READY;
extern Na_DmaProc NA_DMA_PROC;
extern OSMesgQueue MK_QUEUE;
+3 -3
View File
@@ -805,9 +805,9 @@ extern void Nas_EntryTrack(channel* chan, note* n) {
}
}
playback->_80 = (int)(n->velocity_square2 * 11.5f);
if (playback->_80 > 15) {
playback->_80 = 15;
playback->vel_conv_table_idx = (int)(n->velocity_square2 * 11.5f);
if (playback->vel_conv_table_idx > 15) {
playback->vel_conv_table_idx = 15;
}
playback->bank_id = subtrack->bank_id;
File diff suppressed because it is too large Load Diff