mirror of
https://github.com/zeldaret/oot.git
synced 2025-04-08 15:46:42 +00:00
SoundMode -> SoundOutputMode (#2475)
* SoundOutputMode, and move SoundSetting * missed a couple * format * move SoundSetting
This commit is contained in:
parent
919b78ecbe
commit
7416f413db
15 changed files with 63 additions and 55 deletions
|
@ -44,7 +44,7 @@ typedef enum AudioThreadCmdOp {
|
|||
/* 0xE1 */ AUDIOCMD_OP_GLOBAL_SET_SFX_FONT,
|
||||
/* 0xE2 */ AUDIOCMD_OP_GLOBAL_SET_INSTRUMENT_FONT,
|
||||
/* 0xE3 */ AUDIOCMD_OP_GLOBAL_POP_PERSISTENT_CACHE,
|
||||
/* 0xF0 */ AUDIOCMD_OP_GLOBAL_SET_SOUND_MODE = 0xF0,
|
||||
/* 0xF0 */ AUDIOCMD_OP_GLOBAL_SET_SOUND_OUTPUT_MODE = 0xF0,
|
||||
/* 0xF1 */ AUDIOCMD_OP_GLOBAL_MUTE,
|
||||
/* 0xF2 */ AUDIOCMD_OP_GLOBAL_UNMUTE,
|
||||
/* 0xF3 */ AUDIOCMD_OP_GLOBAL_SYNC_LOAD_INSTRUMENT,
|
||||
|
@ -412,12 +412,12 @@ typedef enum AudioThreadCmdOp {
|
|||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_POP_PERSISTENT_CACHE, 0, 0, 0), tableType)
|
||||
|
||||
/**
|
||||
* Change the sound mode of audio
|
||||
* Change the sound output mode
|
||||
*
|
||||
* @param soundMode (s32) see the `SoundMode` enum
|
||||
* @param soundOutputMode (s32) see the `SoundOutputMode` enum
|
||||
*/
|
||||
#define AUDIOCMD_GLOBAL_SET_SOUND_MODE(soundMode) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_SET_SOUND_MODE, 0, 0, 0), soundMode)
|
||||
#define AUDIOCMD_GLOBAL_SET_SOUND_OUTPUT_MODE(soundOutputMode) \
|
||||
AudioThread_QueueCmdS32(AUDIO_MK_CMD(AUDIOCMD_OP_GLOBAL_SET_SOUND_OUTPUT_MODE, 0, 0, 0), soundOutputMode)
|
||||
|
||||
/**
|
||||
* Mute all sequence players
|
||||
|
|
|
@ -56,7 +56,7 @@ typedef enum SeqCmdSetupCmdOp {
|
|||
|
||||
// Subset of `SEQCMD_OP_GLOBAL_CMD`
|
||||
typedef enum SeqCmdSubCmdOp {
|
||||
/* 0x0 */ SEQCMD_SUB_OP_GLOBAL_SET_SOUND_MODE,
|
||||
/* 0x0 */ SEQCMD_SUB_OP_GLOBAL_SET_SOUND_OUTPUT_MODE,
|
||||
/* 0x1 */ SEQCMD_SUB_OP_GLOBAL_DISABLE_NEW_SEQUENCES
|
||||
} SeqCmdSubCmdOp;
|
||||
|
||||
|
@ -479,12 +479,12 @@ typedef enum SeqCmdSubCmdOp {
|
|||
*/
|
||||
|
||||
/**
|
||||
* Change the sound mode of audio
|
||||
* Change the sound output mode
|
||||
*
|
||||
* @param soundMode see the `SoundMode` enum
|
||||
* @param soundOutputMode see the `SoundOutputMode` enum
|
||||
*/
|
||||
#define SEQCMD_SET_SOUND_MODE(soundMode) \
|
||||
Audio_QueueSeqCmd((SEQCMD_OP_GLOBAL_CMD << 28) | (SEQCMD_SUB_OP_GLOBAL_SET_SOUND_MODE << 8) | (u8)(soundMode))
|
||||
#define SEQCMD_SET_SOUND_OUTPUT_MODE(soundOutputMode) \
|
||||
Audio_QueueSeqCmd((SEQCMD_OP_GLOBAL_CMD << 28) | (SEQCMD_SUB_OP_GLOBAL_SET_SOUND_OUTPUT_MODE << 8) | (u8)(soundOutputMode))
|
||||
|
||||
/**
|
||||
* Disable (or reenable) new sequences from starting
|
||||
|
|
|
@ -118,7 +118,7 @@ extern u8 gStartSeqDisabled;
|
|||
#if DEBUG_FEATURES
|
||||
extern u8 gAudioDebugPrintSeqCmd;
|
||||
#endif
|
||||
extern u8 gSoundModeList[];
|
||||
extern u8 gSoundOutputModes[];
|
||||
extern u8 gAudioSpecId;
|
||||
extern u8 D_80133418;
|
||||
extern AudioSpec gAudioSpecs[18];
|
||||
|
|
|
@ -75,12 +75,12 @@ typedef enum SoundSetting {
|
|||
/* 3 */ SOUND_SETTING_SURROUND
|
||||
} SoundSetting;
|
||||
|
||||
typedef enum SoundMode {
|
||||
/* 0 */ SOUNDMODE_STEREO,
|
||||
/* 1 */ SOUNDMODE_HEADSET,
|
||||
/* 2 */ SOUNDMODE_SURROUND,
|
||||
/* 3 */ SOUNDMODE_MONO
|
||||
} SoundMode;
|
||||
typedef enum SoundOutputMode {
|
||||
/* 0 */ SOUND_OUTPUT_STEREO,
|
||||
/* 1 */ SOUND_OUTPUT_HEADSET,
|
||||
/* 2 */ SOUND_OUTPUT_SURROUND,
|
||||
/* 3 */ SOUND_OUTPUT_MONO
|
||||
} SoundOutputMode;
|
||||
|
||||
typedef enum AdsrStatus {
|
||||
/* 0 */ ADSR_STATE_DISABLED,
|
||||
|
@ -936,7 +936,7 @@ typedef struct AudioContext {
|
|||
/* 0x2890 */ s32 maxAudioCmds;
|
||||
/* 0x2894 */ s32 numNotes;
|
||||
/* 0x2898 */ s16 maxTempo; // Maximum possible tempo (seqTicks per minute), using every tick as a seqTick to process a .seq file
|
||||
/* 0x289A */ s8 soundMode;
|
||||
/* 0x289A */ s8 soundOutputMode;
|
||||
/* 0x289C */ s32 totalTaskCount; // The total number of times the top-level function on the audio thread has run since audio was initialized
|
||||
/* 0x28A0 */ s32 curAudioFrameDmaCount;
|
||||
/* 0x28A4 */ s32 rspTaskIndex;
|
||||
|
@ -1204,7 +1204,7 @@ void func_800F64E0(u8 arg0);
|
|||
void Audio_ToggleMalonSinging(u8 malonSingingDisabled);
|
||||
void Audio_SetEnvReverb(s8 reverb);
|
||||
void Audio_SetCodeReverb(s8 reverb);
|
||||
void Audio_SetSoundMode(s8 soundSetting);
|
||||
void Audio_SetSoundOutputMode(s8 soundSetting);
|
||||
void Audio_SetBaseFilter(u8);
|
||||
void Audio_SetExtraFilter(u8);
|
||||
void Audio_SetCutsceneFlag(s8 flag);
|
||||
|
|
|
@ -59,11 +59,11 @@ u8 gStartSeqDisabled = false;
|
|||
u8 gAudioDebugPrintSeqCmd = true;
|
||||
#endif
|
||||
|
||||
u8 gSoundModeList[] = {
|
||||
SOUNDMODE_STEREO,
|
||||
SOUNDMODE_HEADSET,
|
||||
SOUNDMODE_SURROUND,
|
||||
SOUNDMODE_MONO,
|
||||
u8 gSoundOutputModes[] = {
|
||||
SOUND_OUTPUT_STEREO,
|
||||
SOUND_OUTPUT_HEADSET,
|
||||
SOUND_OUTPUT_SURROUND,
|
||||
SOUND_OUTPUT_MONO,
|
||||
};
|
||||
|
||||
u8 gAudioSpecId = 0;
|
||||
|
|
|
@ -847,7 +847,7 @@ void AudioDebug_ProcessInput_SndCont(void) {
|
|||
&gSfxDefaultReverb);
|
||||
break;
|
||||
case 4:
|
||||
Audio_SetSoundMode(sAudioSndContWork[sAudioSndContSel]);
|
||||
Audio_SetSoundOutputMode(sAudioSndContWork[sAudioSndContSel]);
|
||||
break;
|
||||
case 5:
|
||||
SEQCMD_DISABLE_PLAY_SEQUENCES(sAudioSndContWork[sAudioSndContSel]);
|
||||
|
|
|
@ -141,9 +141,9 @@ f32 D_801305F4 = 1.0f;
|
|||
u8 sGanonsTowerLevelsVol[8] = { 127, 80, 75, 73, 70, 68, 65, 60 };
|
||||
u8 sEnterGanonsTowerTimer = 0;
|
||||
#if DEBUG_FEATURES
|
||||
s8 sSoundMode = SOUNDMODE_SURROUND;
|
||||
s8 sSoundOutputMode = SOUND_OUTPUT_SURROUND;
|
||||
#else
|
||||
s8 sSoundMode = SOUNDMODE_STEREO;
|
||||
s8 sSoundOutputMode = SOUND_OUTPUT_STEREO;
|
||||
#endif
|
||||
s8 D_80130608 = 0;
|
||||
s8 sAudioCutsceneFlag = 0;
|
||||
|
@ -2631,7 +2631,7 @@ void Audio_SetSfxProperties(u8 bankId, u8 entryIdx, u8 channelIndex) {
|
|||
case BANK_ENV:
|
||||
case BANK_ENEMY:
|
||||
case BANK_VOICE:
|
||||
if (sSoundMode == SOUNDMODE_SURROUND) {
|
||||
if (sSoundOutputMode == SOUND_OUTPUT_SURROUND) {
|
||||
combFilterGain = func_800F3990(*entry->posY, entry->sfxParams);
|
||||
}
|
||||
FALLTHROUGH;
|
||||
|
@ -2643,7 +2643,7 @@ void Audio_SetSfxProperties(u8 bankId, u8 entryIdx, u8 channelIndex) {
|
|||
pan = Audio_ComputeSfxPanSigned(*entry->posX, *entry->posZ, entry->token);
|
||||
freqScale = Audio_ComputeSfxFreqScale(bankId, entryIdx) * *entry->freqScale;
|
||||
|
||||
if (sSoundMode == SOUNDMODE_SURROUND) {
|
||||
if (sSoundOutputMode == SOUND_OUTPUT_SURROUND) {
|
||||
behindScreenZ = sBehindScreenZ[(entry->sfxParams & SFX_FLAG_10) >> SFX_FLAG_10_SHIFT];
|
||||
if (!(entry->sfxParams & SFX_FLAG_11)) {
|
||||
if (*entry->posZ < behindScreenZ) {
|
||||
|
@ -2675,7 +2675,7 @@ void Audio_SetSfxProperties(u8 bankId, u8 entryIdx, u8 channelIndex) {
|
|||
|
||||
if ((baseFilter | sAudioExtraFilter) != 0) {
|
||||
filter = (baseFilter | sAudioExtraFilter);
|
||||
} else if ((sSoundMode == SOUNDMODE_SURROUND) && !(entry->sfxParams & SFX_FLAG_13)) {
|
||||
} else if ((sSoundOutputMode == SOUND_OUTPUT_SURROUND) && !(entry->sfxParams & SFX_FLAG_13)) {
|
||||
filter = func_800F37B8(behindScreenZ, entry, pan);
|
||||
}
|
||||
break;
|
||||
|
@ -3773,32 +3773,40 @@ void Audio_SetCodeReverb(s8 reverb) {
|
|||
}
|
||||
}
|
||||
|
||||
void Audio_SetSoundMode(s8 soundSetting) {
|
||||
s8 soundModeIndex;
|
||||
/**
|
||||
* Sets the Sound Output Mode.
|
||||
*
|
||||
* This function translates the game-side `SoundSetting` to an internal `SoundOutputMode` value.
|
||||
* The order of each value between the two enums is slightly different.
|
||||
*
|
||||
* Original name: Na_SetSoundOutputMode
|
||||
*/
|
||||
void Audio_SetSoundOutputMode(s8 soundSetting) {
|
||||
s8 soundOutputMode;
|
||||
|
||||
switch (soundSetting) {
|
||||
case SOUND_SETTING_STEREO:
|
||||
soundModeIndex = SOUNDMODE_STEREO;
|
||||
sSoundMode = SOUNDMODE_STEREO;
|
||||
soundOutputMode = SOUND_OUTPUT_STEREO;
|
||||
sSoundOutputMode = SOUND_OUTPUT_STEREO;
|
||||
break;
|
||||
|
||||
case SOUND_SETTING_MONO:
|
||||
soundModeIndex = SOUNDMODE_MONO;
|
||||
sSoundMode = SOUNDMODE_MONO;
|
||||
soundOutputMode = SOUND_OUTPUT_MONO;
|
||||
sSoundOutputMode = SOUND_OUTPUT_MONO;
|
||||
break;
|
||||
|
||||
case SOUND_SETTING_HEADSET:
|
||||
soundModeIndex = SOUNDMODE_HEADSET;
|
||||
sSoundMode = SOUNDMODE_HEADSET;
|
||||
soundOutputMode = SOUND_OUTPUT_HEADSET;
|
||||
sSoundOutputMode = SOUND_OUTPUT_HEADSET;
|
||||
break;
|
||||
|
||||
case SOUND_SETTING_SURROUND:
|
||||
soundModeIndex = SOUNDMODE_STEREO;
|
||||
sSoundMode = SOUNDMODE_SURROUND;
|
||||
soundOutputMode = SOUND_OUTPUT_STEREO;
|
||||
sSoundOutputMode = SOUND_OUTPUT_SURROUND;
|
||||
break;
|
||||
}
|
||||
|
||||
SEQCMD_SET_SOUND_MODE(soundModeIndex);
|
||||
SEQCMD_SET_SOUND_OUTPUT_MODE(soundOutputMode);
|
||||
}
|
||||
|
||||
void Audio_SetBaseFilter(u8 filter) {
|
||||
|
@ -4046,7 +4054,7 @@ void Audio_PlayNatureAmbienceSequence(u8 natureAmbienceId) {
|
|||
SEQCMD_SET_CHANNEL_IO(SEQ_PLAYER_BGM_MAIN, channelIdx, ioPort, ioData);
|
||||
}
|
||||
|
||||
SEQCMD_SET_CHANNEL_IO(SEQ_PLAYER_BGM_MAIN, NATURE_CHANNEL_UNK, CHANNEL_IO_PORT_7, sSoundMode);
|
||||
SEQCMD_SET_CHANNEL_IO(SEQ_PLAYER_BGM_MAIN, NATURE_CHANNEL_UNK, CHANNEL_IO_PORT_7, sSoundOutputMode);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1192,7 +1192,7 @@ void AudioLoad_Init(void* heap, u32 heapSize) {
|
|||
gAudioCtx.totalTaskCount = 0;
|
||||
gAudioCtx.rspTaskIndex = 0;
|
||||
gAudioCtx.curAiBufIndex = 0;
|
||||
gAudioCtx.soundMode = SOUNDMODE_STEREO;
|
||||
gAudioCtx.soundOutputMode = SOUND_OUTPUT_STEREO;
|
||||
gAudioCtx.curTask = NULL;
|
||||
gAudioCtx.rspTask[0].task.t.data_size = 0;
|
||||
gAudioCtx.rspTask[1].task.t.data_size = 0;
|
||||
|
|
|
@ -31,7 +31,7 @@ void Audio_InitNoteSub(Note* note, NoteSubEu* sub, NoteSubAttributes* attrs) {
|
|||
sub->bitField0.stereoStrongLeft = false;
|
||||
sub->bitField0.stereoHeadsetEffects = stereoData.stereoHeadsetEffects;
|
||||
sub->bitField0.usesHeadsetPanEffects = stereoData.usesHeadsetPanEffects;
|
||||
if (stereoHeadsetEffects && (gAudioCtx.soundMode == SOUNDMODE_HEADSET)) {
|
||||
if (stereoHeadsetEffects && (gAudioCtx.soundOutputMode == SOUND_OUTPUT_HEADSET)) {
|
||||
halfPanIndex = pan >> 1;
|
||||
if (halfPanIndex > 0x3F) {
|
||||
halfPanIndex = 0x3F;
|
||||
|
@ -43,7 +43,7 @@ void Audio_InitNoteSub(Note* note, NoteSubEu* sub, NoteSubAttributes* attrs) {
|
|||
|
||||
volLeft = gHeadsetPanVolume[pan];
|
||||
volRight = gHeadsetPanVolume[0x7F - pan];
|
||||
} else if (stereoHeadsetEffects && (gAudioCtx.soundMode == SOUNDMODE_STEREO)) {
|
||||
} else if (stereoHeadsetEffects && (gAudioCtx.soundOutputMode == SOUND_OUTPUT_STEREO)) {
|
||||
strongLeft = strongRight = 0;
|
||||
sub->haasEffectLeftDelaySize = 0;
|
||||
sub->haasEffectRightDelaySize = 0;
|
||||
|
@ -80,7 +80,7 @@ void Audio_InitNoteSub(Note* note, NoteSubEu* sub, NoteSubAttributes* attrs) {
|
|||
break;
|
||||
}
|
||||
|
||||
} else if (gAudioCtx.soundMode == SOUNDMODE_MONO) {
|
||||
} else if (gAudioCtx.soundOutputMode == SOUND_OUTPUT_MONO) {
|
||||
sub->bitField0.stereoHeadsetEffects = false;
|
||||
sub->bitField0.usesHeadsetPanEffects = false;
|
||||
volLeft = 0.707f; // approx 1/sqrt(2)
|
||||
|
|
|
@ -647,7 +647,7 @@ Acmd* AudioSynth_DoOneAudioUpdate(s16* aiBuf, s32 aiBufLen, Acmd* cmd, s32 updat
|
|||
#if OOT_VERSION < NTSC_1_1 || !PLATFORM_N64
|
||||
if ((reverb->leakRtl != 0) || (reverb->leakLtr != 0))
|
||||
#else
|
||||
if (((reverb->leakRtl != 0) || (reverb->leakLtr != 0)) && (gAudioCtx.soundMode != SOUNDMODE_MONO))
|
||||
if (((reverb->leakRtl != 0) || (reverb->leakLtr != 0)) && (gAudioCtx.soundOutputMode != SOUND_OUTPUT_MONO))
|
||||
#endif
|
||||
{
|
||||
cmd = AudioSynth_LeakReverb(cmd, reverb);
|
||||
|
|
|
@ -226,8 +226,8 @@ void AudioThread_ProcessGlobalCmd(AudioCmd* cmd) {
|
|||
}
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_SET_SOUND_MODE:
|
||||
gAudioCtx.soundMode = cmd->asUInt;
|
||||
case AUDIOCMD_OP_GLOBAL_SET_SOUND_OUTPUT_MODE:
|
||||
gAudioCtx.soundOutputMode = cmd->asUInt;
|
||||
break;
|
||||
|
||||
case AUDIOCMD_OP_GLOBAL_MUTE:
|
||||
|
|
|
@ -370,9 +370,9 @@ void Audio_ProcessSeqCmd(u32 cmd) {
|
|||
subOp = (cmd & 0xF00) >> 8;
|
||||
val = cmd & 0xFF;
|
||||
switch (subOp) {
|
||||
case SEQCMD_SUB_OP_GLOBAL_SET_SOUND_MODE:
|
||||
// Set sound mode
|
||||
AUDIOCMD_GLOBAL_SET_SOUND_MODE(gSoundModeList[val]);
|
||||
case SEQCMD_SUB_OP_GLOBAL_SET_SOUND_OUTPUT_MODE:
|
||||
// Set sound output mode
|
||||
AUDIOCMD_GLOBAL_SET_SOUND_OUTPUT_MODE(gSoundOutputModes[val]);
|
||||
break;
|
||||
|
||||
case SEQCMD_SUB_OP_GLOBAL_DISABLE_NEW_SEQUENCES:
|
||||
|
|
|
@ -1058,7 +1058,7 @@ void Sram_InitSram(GameState* gameState, SramContext* sramCtx) {
|
|||
PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.soundSetting);
|
||||
PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.soundSetting);
|
||||
PRINTF_RST();
|
||||
Audio_SetSoundMode(gSaveContext.soundSetting);
|
||||
Audio_SetSoundOutputMode(gSaveContext.soundSetting);
|
||||
}
|
||||
|
||||
void Sram_Alloc(GameState* gameState, SramContext* sramCtx) {
|
||||
|
|
|
@ -71,7 +71,7 @@ void EnMag_ResetSram(void) {
|
|||
SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8007800), buffer, 0x800, 1);
|
||||
|
||||
gSaveContext.soundSetting = gSaveContext.zTargetSetting = 0; // SOUND_SETTING_STEREO/Z_TARGET_SETTING_SWITCH
|
||||
Audio_SetSoundMode(gSaveContext.soundSetting);
|
||||
Audio_SetSoundOutputMode(gSaveContext.soundSetting);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1369,7 +1369,7 @@ void FileSelect_UpdateOptionsMenu(GameState* thisx) {
|
|||
PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.soundSetting);
|
||||
PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.soundSetting);
|
||||
PRINTF_RST();
|
||||
Audio_SetSoundMode(gSaveContext.soundSetting);
|
||||
Audio_SetSoundOutputMode(gSaveContext.soundSetting);
|
||||
PRINTF("終了\n");
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue