mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-08-12 12:18:32 -04:00
Decomp, update AudioOcarina (code_800EC960.c) (#6941)
This commit is contained in:
+13
-13
@@ -2050,20 +2050,20 @@ void AudioSeq_SkipForwardSequence(SequencePlayer* seqPlayer);
|
||||
void AudioSeq_ResetSequencePlayer(SequencePlayer* seqPlayer);
|
||||
void AudioSeq_InitSequencePlayerChannels(s32 playerIdx);
|
||||
void AudioSeq_InitSequencePlayers(void);
|
||||
void func_800ECC04(u16);
|
||||
void AudioOcarina_Start(u16);
|
||||
void AudioOcarina_SetInstrument(u8);
|
||||
void Audio_OcaSetSongPlayback(s8 songIdxPlusOne, s8 playbackState);
|
||||
void Audio_OcaSetRecordingState(u8);
|
||||
OcarinaStaff* Audio_OcaGetRecordingStaff(void);
|
||||
OcarinaStaff* Audio_OcaGetPlayingStaff(void);
|
||||
OcarinaStaff* Audio_OcaGetDisplayingStaff(void);
|
||||
void Audio_OcaMemoryGameStart(u8 minigameIdx);
|
||||
s32 Audio_OcaMemoryGameGenNote(void);
|
||||
void func_800EE824(void);
|
||||
void AudioOcarina_SetPlaybackSong(s8 songIdxPlusOne, s8 playbackState);
|
||||
void AudioOcarina_SetRecordingState(u8);
|
||||
OcarinaStaff* AudioOcarina_GetRecordingStaff(void);
|
||||
OcarinaStaff* AudioOcarina_GetPlayingStaff(void);
|
||||
OcarinaStaff* AudioOcarina_GetPlaybackStaff(void);
|
||||
void AudioOcarina_MemoryGameInit(u8 minigameIdx);
|
||||
s32 AudioOcarina_MemoryGameNextNote(void);
|
||||
void AudioOcarina_PlayLongScarecrowSong(void);
|
||||
void AudioDebug_Draw(GfxPrint* printer);
|
||||
void AudioDebug_ScrPrt(const s8* str, u16 num);
|
||||
void func_800F3054(void);
|
||||
void Audio_SetSoundProperties(u8 bankId, u8 entryIdx, u8 channelIdx);
|
||||
void Audio_Update(void);
|
||||
void Audio_SetSfxProperties(u8 bankId, u8 entryIdx, u8 channelIdx);
|
||||
void func_800F3F3C(u8);
|
||||
void func_800F4010(Vec3f* pos, u16 sfxId, f32);
|
||||
void Audio_PlaySoundRandom(Vec3f* pos, u16 baseSfxId, u8 randLim);
|
||||
@@ -2132,7 +2132,7 @@ void Audio_Init();
|
||||
void Audio_InitSound();
|
||||
void func_800F7170(void);
|
||||
void func_800F71BC(s32 arg0);
|
||||
void Audio_SetSoundBanksMute(u16 muteMask);
|
||||
void Audio_SetSfxBanksMute(u16 muteMask);
|
||||
void Audio_QueueSeqCmdMute(u8 channelIdx);
|
||||
void Audio_ClearBGMMute(u8 channelIdx);
|
||||
void Audio_PlaySoundGeneral(u16 sfxId, Vec3f* pos, u8 token, f32* freqScale, f32* a4, s8* reverbAdd);
|
||||
@@ -2143,7 +2143,7 @@ void Audio_StopSfxByBank(u8 bankId);
|
||||
void func_800F8884(u8, Vec3f*);
|
||||
void Audio_StopSfxByPosAndBank(u8, Vec3f*);
|
||||
void Audio_StopSfxByPos(Vec3f*);
|
||||
void func_800F9280(u8 playerIdx, u8 seqId, u8 arg2, u16 fadeTimer);
|
||||
void Audio_StartSequence(u8 playerIdx, u8 seqId, u8 arg2, u16 fadeTimer);
|
||||
void Audio_QueueSeqCmd(u32 bgmID);
|
||||
void Audio_QueuePreviewSeqCmd(u16 seqId);
|
||||
void Audio_StopSfxByPosAndId(Vec3f* pos, u16 sfxId);
|
||||
|
||||
@@ -150,9 +150,10 @@ extern "C"
|
||||
extern u8 gUsedChannelsPerBank[4][7];
|
||||
extern u8 gMorphaTransposeTable[16];
|
||||
extern u8* gFrogsSongPtr;
|
||||
extern OcarinaNote* gScarecrowCustomSongPtr;
|
||||
extern OcarinaNote* gScarecrowLongSongPtr;
|
||||
extern u8* gScarecrowSpawnSongPtr;
|
||||
extern OcarinaSongInfo gOcarinaSongNotes[];
|
||||
extern OcarinaNote sOcarinaSongNotes[OCARINA_SONG_MAX][20];
|
||||
extern OcarinaSongButtons gOcarinaSongButtons[OCARINA_SONG_MAX];
|
||||
extern SoundParams* gSoundParams[7];
|
||||
extern char D_80133390[];
|
||||
extern char D_80133398[];
|
||||
|
||||
+5
-5
@@ -439,7 +439,7 @@ typedef struct {
|
||||
char unk_150[0x10];
|
||||
} SkyboxContext;
|
||||
|
||||
typedef enum {
|
||||
typedef enum OcarinaSongId {
|
||||
/* 0 */ OCARINA_SONG_MINUET,
|
||||
/* 1 */ OCARINA_SONG_BOLERO,
|
||||
/* 2 */ OCARINA_SONG_SERENADE,
|
||||
@@ -452,7 +452,7 @@ typedef enum {
|
||||
/* 9 */ OCARINA_SONG_SUNS,
|
||||
/* 10 */ OCARINA_SONG_TIME,
|
||||
/* 11 */ OCARINA_SONG_STORMS,
|
||||
/* 12 */ OCARINA_SONG_SCARECROW,
|
||||
/* 12 */ OCARINA_SONG_SCARECROW_SPAWN,
|
||||
/* 13 */ OCARINA_SONG_MEMORY_GAME,
|
||||
/* 14 */ OCARINA_SONG_MAX,
|
||||
/* 14 */ OCARINA_SONG_SCARECROW_LONG = OCARINA_SONG_MAX // anything larger than 13 is considered the long scarecrow's song
|
||||
@@ -509,14 +509,14 @@ typedef enum {
|
||||
/* 0x2F */ OCARINA_ACTION_FROGS,
|
||||
/* 0x30 */ OCARINA_ACTION_CHECK_NOWARP, // Check for any of sarias - storms
|
||||
/* 0x31 */ OCARINA_ACTION_CHECK_NOWARP_DONE
|
||||
} OcarinaSongActionIDs;
|
||||
} OcarinaSongActionId;
|
||||
|
||||
typedef enum {
|
||||
typedef enum OcarinaMode {
|
||||
/* 0x00 */ OCARINA_MODE_00,
|
||||
/* 0x01 */ OCARINA_MODE_01,
|
||||
/* 0x02 */ OCARINA_MODE_02,
|
||||
/* 0x03 */ OCARINA_MODE_03,
|
||||
/* 0x04 */ OCARINA_MODE_04,
|
||||
/* 0x04 */ OCARINA_MODE_04, // Stop playing
|
||||
/* 0x05 */ OCARINA_MODE_05,
|
||||
/* 0x06 */ OCARINA_MODE_06,
|
||||
/* 0x07 */ OCARINA_MODE_07,
|
||||
|
||||
+65
-25
@@ -1085,35 +1085,46 @@ typedef struct {
|
||||
u16 params;
|
||||
} SoundParams;
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ u8 noteIdx;
|
||||
/* 0x0001 */ u8 unk_01;
|
||||
/* 0x0002 */ u16 unk_02;
|
||||
/* 0x0004 */ u8 volume;
|
||||
/* 0x0005 */ u8 vibrato;
|
||||
/* 0x0006 */ s8 tone;
|
||||
/* 0x0007 */ u8 semitone;
|
||||
/**
|
||||
* semitone Note:
|
||||
* Flag for resolving whether (pitch = OCARINA_PITCH_BFLAT4)
|
||||
* gets mapped to either C_RIGHT and C_LEFT
|
||||
*
|
||||
* This is required as C_RIGHT and C_LEFT are the only notes
|
||||
* that map to two semitones apart (OCARINA_PITCH_A4 and OCARINA_PITCH_B4)
|
||||
* 0x40 - BTN_Z is pressed to lower note by a semitone
|
||||
* 0x80 - BTN_R is pressed to raise note by a semitone
|
||||
*/
|
||||
|
||||
typedef struct OcarinaNote {
|
||||
/* 0x0 */ u8 pitch; // number of semitones above middle C
|
||||
/* 0x2 */ u16 length; // number of frames the note is sustained
|
||||
/* 0x4 */ u8 volume;
|
||||
/* 0x5 */ u8 vibrato;
|
||||
/* 0x6 */ s8 bend; // frequency multiplicative offset from the pitch
|
||||
/* 0x7 */ u8 bFlat4Flag; // See note above
|
||||
} OcarinaNote; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
u8 len;
|
||||
u8 notesIdx[8];
|
||||
} OcarinaSongInfo;
|
||||
typedef struct OcarinaSongButtons {
|
||||
/* 0x0 */ u8 numButtons;
|
||||
/* 0x1 */ u8 buttonsIndex[8];
|
||||
} OcarinaSongButtons; // size = 0x9
|
||||
|
||||
typedef struct {
|
||||
u8 noteIdx;
|
||||
u8 state; // original name: "status"
|
||||
u8 pos; // original name: "locate"
|
||||
} OcarinaStaff;
|
||||
typedef struct OcarinaStaff {
|
||||
/* 0x0 */ u8 buttonIndex;
|
||||
/* 0x1 */ u8 state; // multi-use. Playing: used as songIndex. Playback: used as repeat count of song. Recording: used as OcarinaRecordingState. "status"
|
||||
/* 0x2 */ u8 pos; // "locate"
|
||||
} OcarinaStaff; // size = 0x3
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ OCARINA_NOTE_D4,
|
||||
/* 1 */ OCARINA_NOTE_F4,
|
||||
/* 2 */ OCARINA_NOTE_A4,
|
||||
/* 3 */ OCARINA_NOTE_B4,
|
||||
/* 4 */ OCARINA_NOTE_D5,
|
||||
/* -1 */ OCARINA_NOTE_INVALID = 0xFF
|
||||
} OcarinaNoteIdx;
|
||||
typedef enum OcarinaButtonIndex {
|
||||
/* 0 */ OCARINA_BTN_A,
|
||||
/* 1 */ OCARINA_BTN_C_DOWN,
|
||||
/* 2 */ OCARINA_BTN_C_RIGHT,
|
||||
/* 3 */ OCARINA_BTN_C_LEFT,
|
||||
/* 4 */ OCARINA_BTN_C_UP,
|
||||
/* 5 */ OCARINA_BTN_C_RIGHT_OR_C_LEFT, // Special case for bFlat4: Interface/Overlap between C_RIGHT and C_LEFT
|
||||
/* 0xFF */ OCARINA_BTN_INVALID = 0xFF
|
||||
} OcarinaButtonIndex;
|
||||
|
||||
typedef enum OcarinaInstrumentId {
|
||||
/* 0 */ OCARINA_INSTRUMENT_OFF,
|
||||
@@ -1128,6 +1139,35 @@ typedef enum OcarinaInstrumentId {
|
||||
/* 8 */ OCARINA_INSTRUMENT_DEFAULT_COPY2 = OCARINA_INSTRUMENT_MAX + 1 // Unused but present in Sequence 0 table
|
||||
} OcarinaInstrumentId;
|
||||
|
||||
typedef enum OcarinaRecordingState {
|
||||
/* 0 */ OCARINA_RECORD_OFF,
|
||||
/* 1 */ OCARINA_RECORD_SCARECROW_LONG,
|
||||
/* 2 */ OCARINA_RECORD_SCARECROW_SPAWN,
|
||||
/* 0xFF */ OCARINA_RECORD_REJECTED = 0xFF
|
||||
} OcarinaRecordingState;
|
||||
|
||||
// Uses scientific pitch notation relative to middle C
|
||||
// https://en.wikipedia.org/wiki/Scientific_pitch_notation
|
||||
typedef enum OcarinaPitch {
|
||||
/* 0x0 */ OCARINA_PITCH_C4,
|
||||
/* 0x1 */ OCARINA_PITCH_DFLAT4,
|
||||
/* 0x2 */ OCARINA_PITCH_D4,
|
||||
/* 0x3 */ OCARINA_PITCH_EFLAT4,
|
||||
/* 0x4 */ OCARINA_PITCH_E4,
|
||||
/* 0x5 */ OCARINA_PITCH_F4,
|
||||
/* 0x6 */ OCARINA_PITCH_GFLAT4,
|
||||
/* 0x7 */ OCARINA_PITCH_G4,
|
||||
/* 0x8 */ OCARINA_PITCH_AFLAT4,
|
||||
/* 0x9 */ OCARINA_PITCH_A4,
|
||||
/* 0xA */ OCARINA_PITCH_BFLAT4,
|
||||
/* 0xB */ OCARINA_PITCH_B4,
|
||||
/* 0xC */ OCARINA_PITCH_C5,
|
||||
/* 0xD */ OCARINA_PITCH_DFLAT5,
|
||||
/* 0xE */ OCARINA_PITCH_D5,
|
||||
/* 0xF */ OCARINA_PITCH_EFLAT5,
|
||||
/* 0xFF */ OCARINA_PITCH_NONE = 0xFF
|
||||
} OcarinaPitch;
|
||||
|
||||
typedef struct {
|
||||
char* seqData;
|
||||
int32_t seqDataSize;
|
||||
|
||||
@@ -69,7 +69,7 @@ static void PauseWarp_Execute() {
|
||||
}
|
||||
|
||||
static void ActivateWarp(PauseContext* pauseCtx, int song) {
|
||||
AudioOcarina_SetInstrument(0);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
Interface_SetDoAction(gPlayState, DO_ACTION_NONE);
|
||||
pauseCtx->state = 0x12;
|
||||
WREG(2) = -6240;
|
||||
@@ -77,7 +77,7 @@ static void ActivateWarp(PauseContext* pauseCtx, int song) {
|
||||
pauseCtx->unk_1E4 = 0;
|
||||
int idx = song - QUEST_SONG_MINUET;
|
||||
gPlayState->msgCtx.lastPlayedSong = ocarinaSongMap[idx];
|
||||
Audio_SetSoundBanksMute(0x20);
|
||||
Audio_SetSfxBanksMute(0x20);
|
||||
Audio_PlayFanfare(songAudioMap[idx]);
|
||||
Message_StartTextbox(gPlayState, songMessageMap[idx], NULL);
|
||||
GET_PLAYER(gPlayState)->stateFlags1 |= PLAYER_STATE1_IN_CUTSCENE;
|
||||
|
||||
@@ -239,7 +239,7 @@ void DrawPreviewButton(uint16_t sequenceId, std::string sfxKey, SeqType sequence
|
||||
Audio_PlaySoundGeneral(sequenceId, &pos, 4, &freqScale, &freqScale, &reverbAdd);
|
||||
} else if (sequenceType == SEQ_INSTRUMENT) {
|
||||
AudioOcarina_SetInstrument(sequenceId - INSTRUMENT_OFFSET);
|
||||
Audio_OcaSetSongPlayback(9, 1);
|
||||
AudioOcarina_SetPlaybackSong(9, 1);
|
||||
} else {
|
||||
// TODO: Cant do both here, so have to click preview button twice
|
||||
PreviewSequence(sequenceId);
|
||||
|
||||
@@ -2591,23 +2591,21 @@ void Logic::InitSaveContext() {
|
||||
mSaveContext->worldMapAreaData = 0;
|
||||
mSaveContext->scarecrowLongSongSet = 0;
|
||||
for (int i = 0; i < ARRAY_COUNT(mSaveContext->scarecrowLongSong); i++) {
|
||||
mSaveContext->scarecrowLongSong[i].noteIdx = 0;
|
||||
mSaveContext->scarecrowLongSong[i].unk_01 = 0;
|
||||
mSaveContext->scarecrowLongSong[i].unk_02 = 0;
|
||||
mSaveContext->scarecrowLongSong[i].pitch = 0;
|
||||
mSaveContext->scarecrowLongSong[i].length = 0;
|
||||
mSaveContext->scarecrowLongSong[i].volume = 0;
|
||||
mSaveContext->scarecrowLongSong[i].vibrato = 0;
|
||||
mSaveContext->scarecrowLongSong[i].tone = 0;
|
||||
mSaveContext->scarecrowLongSong[i].semitone = 0;
|
||||
mSaveContext->scarecrowLongSong[i].bend = 0;
|
||||
mSaveContext->scarecrowLongSong[i].bFlat4Flag = 0;
|
||||
}
|
||||
mSaveContext->scarecrowSpawnSongSet = 0;
|
||||
for (int i = 0; i < ARRAY_COUNT(mSaveContext->scarecrowSpawnSong); i++) {
|
||||
mSaveContext->scarecrowSpawnSong[i].noteIdx = 0;
|
||||
mSaveContext->scarecrowSpawnSong[i].unk_01 = 0;
|
||||
mSaveContext->scarecrowSpawnSong[i].unk_02 = 0;
|
||||
mSaveContext->scarecrowSpawnSong[i].pitch = 0;
|
||||
mSaveContext->scarecrowSpawnSong[i].length = 0;
|
||||
mSaveContext->scarecrowSpawnSong[i].volume = 0;
|
||||
mSaveContext->scarecrowSpawnSong[i].vibrato = 0;
|
||||
mSaveContext->scarecrowSpawnSong[i].tone = 0;
|
||||
mSaveContext->scarecrowSpawnSong[i].semitone = 0;
|
||||
mSaveContext->scarecrowSpawnSong[i].bend = 0;
|
||||
mSaveContext->scarecrowSpawnSong[i].bFlat4Flag = 0;
|
||||
}
|
||||
|
||||
mSaveContext->horseData.scene = SCENE_HYRULE_FIELD;
|
||||
|
||||
+44
-55
@@ -772,23 +772,21 @@ void SaveManager::InitFileNormal() {
|
||||
gSaveContext.worldMapAreaData = 0;
|
||||
gSaveContext.scarecrowLongSongSet = 0;
|
||||
for (int i = 0; i < ARRAY_COUNT(gSaveContext.scarecrowLongSong); i++) {
|
||||
gSaveContext.scarecrowLongSong[i].noteIdx = 0;
|
||||
gSaveContext.scarecrowLongSong[i].unk_01 = 0;
|
||||
gSaveContext.scarecrowLongSong[i].unk_02 = 0;
|
||||
gSaveContext.scarecrowLongSong[i].pitch = 0;
|
||||
gSaveContext.scarecrowLongSong[i].length = 0;
|
||||
gSaveContext.scarecrowLongSong[i].volume = 0;
|
||||
gSaveContext.scarecrowLongSong[i].vibrato = 0;
|
||||
gSaveContext.scarecrowLongSong[i].tone = 0;
|
||||
gSaveContext.scarecrowLongSong[i].semitone = 0;
|
||||
gSaveContext.scarecrowLongSong[i].bend = 0;
|
||||
gSaveContext.scarecrowLongSong[i].bFlat4Flag = 0;
|
||||
}
|
||||
gSaveContext.scarecrowSpawnSongSet = 0;
|
||||
for (int i = 0; i < ARRAY_COUNT(gSaveContext.scarecrowSpawnSong); i++) {
|
||||
gSaveContext.scarecrowSpawnSong[i].noteIdx = 0;
|
||||
gSaveContext.scarecrowSpawnSong[i].unk_01 = 0;
|
||||
gSaveContext.scarecrowSpawnSong[i].unk_02 = 0;
|
||||
gSaveContext.scarecrowSpawnSong[i].pitch = 0;
|
||||
gSaveContext.scarecrowSpawnSong[i].length = 0;
|
||||
gSaveContext.scarecrowSpawnSong[i].volume = 0;
|
||||
gSaveContext.scarecrowSpawnSong[i].vibrato = 0;
|
||||
gSaveContext.scarecrowSpawnSong[i].tone = 0;
|
||||
gSaveContext.scarecrowSpawnSong[i].semitone = 0;
|
||||
gSaveContext.scarecrowSpawnSong[i].bend = 0;
|
||||
gSaveContext.scarecrowSpawnSong[i].bFlat4Flag = 0;
|
||||
}
|
||||
|
||||
gSaveContext.horseData.scene = SCENE_HYRULE_FIELD;
|
||||
@@ -1703,25 +1701,23 @@ void SaveManager::LoadBaseVersion2() {
|
||||
SaveManager::Instance->LoadData("scarecrowCustomSongSet", gSaveContext.scarecrowLongSongSet);
|
||||
SaveManager::Instance->LoadArray("scarecrowCustomSong", ARRAY_COUNT(gSaveContext.scarecrowLongSong), [](size_t i) {
|
||||
SaveManager::Instance->LoadStruct("", [&i]() {
|
||||
SaveManager::Instance->LoadData("noteIdx", gSaveContext.scarecrowLongSong[i].noteIdx);
|
||||
SaveManager::Instance->LoadData("unk_01", gSaveContext.scarecrowLongSong[i].unk_01);
|
||||
SaveManager::Instance->LoadData("unk_02", gSaveContext.scarecrowLongSong[i].unk_02);
|
||||
SaveManager::Instance->LoadData("noteIdx", gSaveContext.scarecrowLongSong[i].pitch);
|
||||
SaveManager::Instance->LoadData("unk_02", gSaveContext.scarecrowLongSong[i].length);
|
||||
SaveManager::Instance->LoadData("volume", gSaveContext.scarecrowLongSong[i].volume);
|
||||
SaveManager::Instance->LoadData("vibrato", gSaveContext.scarecrowLongSong[i].vibrato);
|
||||
SaveManager::Instance->LoadData("tone", gSaveContext.scarecrowLongSong[i].tone);
|
||||
SaveManager::Instance->LoadData("semitone", gSaveContext.scarecrowLongSong[i].semitone);
|
||||
SaveManager::Instance->LoadData("tone", gSaveContext.scarecrowLongSong[i].bend);
|
||||
SaveManager::Instance->LoadData("semitone", gSaveContext.scarecrowLongSong[i].bFlat4Flag);
|
||||
});
|
||||
});
|
||||
SaveManager::Instance->LoadData("scarecrowSpawnSongSet", gSaveContext.scarecrowSpawnSongSet);
|
||||
SaveManager::Instance->LoadArray("scarecrowSpawnSong", ARRAY_COUNT(gSaveContext.scarecrowSpawnSong), [](size_t i) {
|
||||
SaveManager::Instance->LoadStruct("", [&i]() {
|
||||
SaveManager::Instance->LoadData("noteIdx", gSaveContext.scarecrowSpawnSong[i].noteIdx);
|
||||
SaveManager::Instance->LoadData("unk_01", gSaveContext.scarecrowSpawnSong[i].unk_01);
|
||||
SaveManager::Instance->LoadData("unk_02", gSaveContext.scarecrowSpawnSong[i].unk_02);
|
||||
SaveManager::Instance->LoadData("noteIdx", gSaveContext.scarecrowSpawnSong[i].pitch);
|
||||
SaveManager::Instance->LoadData("unk_02", gSaveContext.scarecrowSpawnSong[i].length);
|
||||
SaveManager::Instance->LoadData("volume", gSaveContext.scarecrowSpawnSong[i].volume);
|
||||
SaveManager::Instance->LoadData("vibrato", gSaveContext.scarecrowSpawnSong[i].vibrato);
|
||||
SaveManager::Instance->LoadData("tone", gSaveContext.scarecrowSpawnSong[i].tone);
|
||||
SaveManager::Instance->LoadData("semitone", gSaveContext.scarecrowSpawnSong[i].semitone);
|
||||
SaveManager::Instance->LoadData("tone", gSaveContext.scarecrowSpawnSong[i].bend);
|
||||
SaveManager::Instance->LoadData("semitone", gSaveContext.scarecrowSpawnSong[i].bFlat4Flag);
|
||||
});
|
||||
});
|
||||
SaveManager::Instance->LoadStruct("horseData", []() {
|
||||
@@ -1759,13 +1755,12 @@ void SaveManager::LoadBaseVersion2() {
|
||||
SaveManager::Instance->LoadArray(
|
||||
"scarecrowLongSong", ARRAY_COUNT(gSaveContext.scarecrowLongSong), [](size_t i) {
|
||||
SaveManager::Instance->LoadStruct("", [&i]() {
|
||||
SaveManager::Instance->LoadData("noteIdx", gSaveContext.scarecrowLongSong[i].noteIdx);
|
||||
SaveManager::Instance->LoadData("unk_01", gSaveContext.scarecrowLongSong[i].unk_01);
|
||||
SaveManager::Instance->LoadData("unk_02", gSaveContext.scarecrowLongSong[i].unk_02);
|
||||
SaveManager::Instance->LoadData("noteIdx", gSaveContext.scarecrowLongSong[i].pitch);
|
||||
SaveManager::Instance->LoadData("unk_02", gSaveContext.scarecrowLongSong[i].length);
|
||||
SaveManager::Instance->LoadData("volume", gSaveContext.scarecrowLongSong[i].volume);
|
||||
SaveManager::Instance->LoadData("vibrato", gSaveContext.scarecrowLongSong[i].vibrato);
|
||||
SaveManager::Instance->LoadData("tone", gSaveContext.scarecrowLongSong[i].tone);
|
||||
SaveManager::Instance->LoadData("semitone", gSaveContext.scarecrowLongSong[i].semitone);
|
||||
SaveManager::Instance->LoadData("tone", gSaveContext.scarecrowLongSong[i].bend);
|
||||
SaveManager::Instance->LoadData("semitone", gSaveContext.scarecrowLongSong[i].bFlat4Flag);
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -1932,25 +1927,23 @@ void SaveManager::LoadBaseVersion3() {
|
||||
SaveManager::Instance->LoadData("scarecrowLongSongSet", gSaveContext.scarecrowLongSongSet);
|
||||
SaveManager::Instance->LoadArray("scarecrowLongSong", ARRAY_COUNT(gSaveContext.scarecrowLongSong), [](size_t i) {
|
||||
SaveManager::Instance->LoadStruct("", [&i]() {
|
||||
SaveManager::Instance->LoadData("noteIdx", gSaveContext.scarecrowLongSong[i].noteIdx);
|
||||
SaveManager::Instance->LoadData("unk_01", gSaveContext.scarecrowLongSong[i].unk_01);
|
||||
SaveManager::Instance->LoadData("unk_02", gSaveContext.scarecrowLongSong[i].unk_02);
|
||||
SaveManager::Instance->LoadData("noteIdx", gSaveContext.scarecrowLongSong[i].pitch);
|
||||
SaveManager::Instance->LoadData("unk_02", gSaveContext.scarecrowLongSong[i].length);
|
||||
SaveManager::Instance->LoadData("volume", gSaveContext.scarecrowLongSong[i].volume);
|
||||
SaveManager::Instance->LoadData("vibrato", gSaveContext.scarecrowLongSong[i].vibrato);
|
||||
SaveManager::Instance->LoadData("tone", gSaveContext.scarecrowLongSong[i].tone);
|
||||
SaveManager::Instance->LoadData("semitone", gSaveContext.scarecrowLongSong[i].semitone);
|
||||
SaveManager::Instance->LoadData("tone", gSaveContext.scarecrowLongSong[i].bend);
|
||||
SaveManager::Instance->LoadData("semitone", gSaveContext.scarecrowLongSong[i].bFlat4Flag);
|
||||
});
|
||||
});
|
||||
SaveManager::Instance->LoadData("scarecrowSpawnSongSet", gSaveContext.scarecrowSpawnSongSet);
|
||||
SaveManager::Instance->LoadArray("scarecrowSpawnSong", ARRAY_COUNT(gSaveContext.scarecrowSpawnSong), [](size_t i) {
|
||||
SaveManager::Instance->LoadStruct("", [&i]() {
|
||||
SaveManager::Instance->LoadData("noteIdx", gSaveContext.scarecrowSpawnSong[i].noteIdx);
|
||||
SaveManager::Instance->LoadData("unk_01", gSaveContext.scarecrowSpawnSong[i].unk_01);
|
||||
SaveManager::Instance->LoadData("unk_02", gSaveContext.scarecrowSpawnSong[i].unk_02);
|
||||
SaveManager::Instance->LoadData("noteIdx", gSaveContext.scarecrowSpawnSong[i].pitch);
|
||||
SaveManager::Instance->LoadData("unk_02", gSaveContext.scarecrowSpawnSong[i].length);
|
||||
SaveManager::Instance->LoadData("volume", gSaveContext.scarecrowSpawnSong[i].volume);
|
||||
SaveManager::Instance->LoadData("vibrato", gSaveContext.scarecrowSpawnSong[i].vibrato);
|
||||
SaveManager::Instance->LoadData("tone", gSaveContext.scarecrowSpawnSong[i].tone);
|
||||
SaveManager::Instance->LoadData("semitone", gSaveContext.scarecrowSpawnSong[i].semitone);
|
||||
SaveManager::Instance->LoadData("tone", gSaveContext.scarecrowSpawnSong[i].bend);
|
||||
SaveManager::Instance->LoadData("semitone", gSaveContext.scarecrowSpawnSong[i].bFlat4Flag);
|
||||
});
|
||||
});
|
||||
SaveManager::Instance->LoadStruct("horseData", []() {
|
||||
@@ -2107,25 +2100,23 @@ void SaveManager::LoadBaseVersion4() {
|
||||
SaveManager::Instance->LoadData("scarecrowLongSongSet", gSaveContext.scarecrowLongSongSet);
|
||||
SaveManager::Instance->LoadArray("scarecrowLongSong", ARRAY_COUNT(gSaveContext.scarecrowLongSong), [](size_t i) {
|
||||
SaveManager::Instance->LoadStruct("", [&i]() {
|
||||
SaveManager::Instance->LoadData("noteIdx", gSaveContext.scarecrowLongSong[i].noteIdx);
|
||||
SaveManager::Instance->LoadData("unk_01", gSaveContext.scarecrowLongSong[i].unk_01);
|
||||
SaveManager::Instance->LoadData("unk_02", gSaveContext.scarecrowLongSong[i].unk_02);
|
||||
SaveManager::Instance->LoadData("noteIdx", gSaveContext.scarecrowLongSong[i].pitch);
|
||||
SaveManager::Instance->LoadData("unk_02", gSaveContext.scarecrowLongSong[i].length);
|
||||
SaveManager::Instance->LoadData("volume", gSaveContext.scarecrowLongSong[i].volume);
|
||||
SaveManager::Instance->LoadData("vibrato", gSaveContext.scarecrowLongSong[i].vibrato);
|
||||
SaveManager::Instance->LoadData("tone", gSaveContext.scarecrowLongSong[i].tone);
|
||||
SaveManager::Instance->LoadData("semitone", gSaveContext.scarecrowLongSong[i].semitone);
|
||||
SaveManager::Instance->LoadData("tone", gSaveContext.scarecrowLongSong[i].bend);
|
||||
SaveManager::Instance->LoadData("semitone", gSaveContext.scarecrowLongSong[i].bFlat4Flag);
|
||||
});
|
||||
});
|
||||
SaveManager::Instance->LoadData("scarecrowSpawnSongSet", gSaveContext.scarecrowSpawnSongSet);
|
||||
SaveManager::Instance->LoadArray("scarecrowSpawnSong", ARRAY_COUNT(gSaveContext.scarecrowSpawnSong), [](size_t i) {
|
||||
SaveManager::Instance->LoadStruct("", [&i]() {
|
||||
SaveManager::Instance->LoadData("noteIdx", gSaveContext.scarecrowSpawnSong[i].noteIdx);
|
||||
SaveManager::Instance->LoadData("unk_01", gSaveContext.scarecrowSpawnSong[i].unk_01);
|
||||
SaveManager::Instance->LoadData("unk_02", gSaveContext.scarecrowSpawnSong[i].unk_02);
|
||||
SaveManager::Instance->LoadData("noteIdx", gSaveContext.scarecrowSpawnSong[i].pitch);
|
||||
SaveManager::Instance->LoadData("unk_02", gSaveContext.scarecrowSpawnSong[i].length);
|
||||
SaveManager::Instance->LoadData("volume", gSaveContext.scarecrowSpawnSong[i].volume);
|
||||
SaveManager::Instance->LoadData("vibrato", gSaveContext.scarecrowSpawnSong[i].vibrato);
|
||||
SaveManager::Instance->LoadData("tone", gSaveContext.scarecrowSpawnSong[i].tone);
|
||||
SaveManager::Instance->LoadData("semitone", gSaveContext.scarecrowSpawnSong[i].semitone);
|
||||
SaveManager::Instance->LoadData("tone", gSaveContext.scarecrowSpawnSong[i].bend);
|
||||
SaveManager::Instance->LoadData("semitone", gSaveContext.scarecrowSpawnSong[i].bFlat4Flag);
|
||||
});
|
||||
});
|
||||
SaveManager::Instance->LoadStruct("horseData", []() {
|
||||
@@ -2279,25 +2270,23 @@ void SaveManager::SaveBase(SaveContext* saveContext, int sectionID, bool fullSav
|
||||
SaveManager::Instance->SaveData("scarecrowLongSongSet", saveContext->scarecrowLongSongSet);
|
||||
SaveManager::Instance->SaveArray("scarecrowLongSong", ARRAY_COUNT(saveContext->scarecrowLongSong), [&](size_t i) {
|
||||
SaveManager::Instance->SaveStruct("", [&]() {
|
||||
SaveManager::Instance->SaveData("noteIdx", saveContext->scarecrowLongSong[i].noteIdx);
|
||||
SaveManager::Instance->SaveData("unk_01", saveContext->scarecrowLongSong[i].unk_01);
|
||||
SaveManager::Instance->SaveData("unk_02", saveContext->scarecrowLongSong[i].unk_02);
|
||||
SaveManager::Instance->SaveData("noteIdx", saveContext->scarecrowLongSong[i].pitch);
|
||||
SaveManager::Instance->SaveData("unk_02", saveContext->scarecrowLongSong[i].length);
|
||||
SaveManager::Instance->SaveData("volume", saveContext->scarecrowLongSong[i].volume);
|
||||
SaveManager::Instance->SaveData("vibrato", saveContext->scarecrowLongSong[i].vibrato);
|
||||
SaveManager::Instance->SaveData("tone", saveContext->scarecrowLongSong[i].tone);
|
||||
SaveManager::Instance->SaveData("semitone", saveContext->scarecrowLongSong[i].semitone);
|
||||
SaveManager::Instance->SaveData("tone", saveContext->scarecrowLongSong[i].bend);
|
||||
SaveManager::Instance->SaveData("semitone", saveContext->scarecrowLongSong[i].bFlat4Flag);
|
||||
});
|
||||
});
|
||||
SaveManager::Instance->SaveData("scarecrowSpawnSongSet", saveContext->scarecrowSpawnSongSet);
|
||||
SaveManager::Instance->SaveArray("scarecrowSpawnSong", ARRAY_COUNT(saveContext->scarecrowSpawnSong), [&](size_t i) {
|
||||
SaveManager::Instance->SaveStruct("", [&]() {
|
||||
SaveManager::Instance->SaveData("noteIdx", saveContext->scarecrowSpawnSong[i].noteIdx);
|
||||
SaveManager::Instance->SaveData("unk_01", saveContext->scarecrowSpawnSong[i].unk_01);
|
||||
SaveManager::Instance->SaveData("unk_02", saveContext->scarecrowSpawnSong[i].unk_02);
|
||||
SaveManager::Instance->SaveData("noteIdx", saveContext->scarecrowSpawnSong[i].pitch);
|
||||
SaveManager::Instance->SaveData("unk_02", saveContext->scarecrowSpawnSong[i].length);
|
||||
SaveManager::Instance->SaveData("volume", saveContext->scarecrowSpawnSong[i].volume);
|
||||
SaveManager::Instance->SaveData("vibrato", saveContext->scarecrowSpawnSong[i].vibrato);
|
||||
SaveManager::Instance->SaveData("tone", saveContext->scarecrowSpawnSong[i].tone);
|
||||
SaveManager::Instance->SaveData("semitone", saveContext->scarecrowSpawnSong[i].semitone);
|
||||
SaveManager::Instance->SaveData("tone", saveContext->scarecrowSpawnSong[i].bend);
|
||||
SaveManager::Instance->SaveData("semitone", saveContext->scarecrowSpawnSong[i].bFlat4Flag);
|
||||
});
|
||||
});
|
||||
SaveManager::Instance->SaveStruct("horseData", [&]() {
|
||||
|
||||
@@ -247,7 +247,7 @@ void func_800E5584(AudioCmd* cmd) {
|
||||
AudioLoad_SyncLoadSeqParts(cmd->arg1, cmd->arg2);
|
||||
return;
|
||||
case 0x82:
|
||||
// 16-bit seqId packed in opArgs bits 0-15. See func_800F9280().
|
||||
// 16-bit seqId packed in opArgs bits 0-15. See Audio_StartSequence().
|
||||
AudioLoad_SyncInitSeqPlayer(cmd->arg0, cmd->opArgs & 0xFFFF, 0);
|
||||
func_800E59AC(cmd->arg0, cmd->data);
|
||||
return;
|
||||
|
||||
+986
-767
File diff suppressed because it is too large
Load Diff
@@ -97,7 +97,7 @@ u8 gAudioSfxSwapOff = 0;
|
||||
|
||||
u8 D_801333F8 = 0;
|
||||
|
||||
void Audio_SetSoundBanksMute(u16 muteMask) {
|
||||
void Audio_SetSfxBanksMute(u16 muteMask) {
|
||||
u8 bankId;
|
||||
|
||||
for (bankId = 0; bankId < ARRAY_COUNT(gSoundBanks); bankId++) {
|
||||
@@ -527,7 +527,7 @@ void Audio_PlayActiveSounds(u8 bankId) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
Audio_SetSoundProperties(bankId, entryIndex, sCurSfxPlayerChannelIdx);
|
||||
Audio_SetSfxProperties(bankId, entryIndex, sCurSfxPlayerChannelIdx);
|
||||
Audio_QueueCmdS8(0x6 << 24 | SEQ_PLAYER_SFX << 16 | ((sCurSfxPlayerChannelIdx & 0xFF) << 8), 1);
|
||||
Audio_QueueCmdS8(0x6 << 24 | SEQ_PLAYER_SFX << 16 | ((sCurSfxPlayerChannelIdx & 0xFF) << 8) | 4,
|
||||
entry->sfxId & 0xFF);
|
||||
@@ -543,7 +543,7 @@ void Audio_PlayActiveSounds(u8 bankId) {
|
||||
} else if ((u8)channel->soundScriptIO[1] == 0xFF) {
|
||||
Audio_RemoveSoundBankEntry(bankId, entryIndex);
|
||||
} else if (entry->state == SFX_STATE_PLAYING_REFRESH) {
|
||||
Audio_SetSoundProperties(bankId, entryIndex, sCurSfxPlayerChannelIdx);
|
||||
Audio_SetSfxProperties(bankId, entryIndex, sCurSfxPlayerChannelIdx);
|
||||
if (entry->sfxId & 0xC00) {
|
||||
entry->state = SFX_STATE_PLAYING_1;
|
||||
} else {
|
||||
|
||||
@@ -36,7 +36,7 @@ u8 D_80133418 = 0;
|
||||
#define Audio_SetVolScaleNow(playerIdx, volFadeTimer, volScale) \
|
||||
Audio_ProcessSeqCmd(0x40000000 | ((u8)playerIdx << 24) | ((u8)volFadeTimer << 16) | ((u8)(volScale * 127.0f)));
|
||||
|
||||
void func_800F9280(u8 playerIdx, u8 seqId, u8 arg2, u16 fadeTimer) {
|
||||
void Audio_StartSequence(u8 playerIdx, u8 seqId, u8 arg2, u16 fadeTimer) {
|
||||
u8 i;
|
||||
u16 dur;
|
||||
u16 resolvedSeqId;
|
||||
@@ -145,7 +145,7 @@ void Audio_ProcessSeqCmd(u32 cmd) {
|
||||
seqArgs = (cmd & 0xFF00) >> 8;
|
||||
fadeTimer = (cmd & 0xFF0000) >> 13;
|
||||
if ((gActiveSeqs[playerIdx].isWaitingForFonts == 0) && (seqArgs < 0x80)) {
|
||||
func_800F9280(playerIdx, seqId, seqArgs, fadeTimer);
|
||||
Audio_StartSequence(playerIdx, seqId, seqArgs, fadeTimer);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -164,7 +164,7 @@ void Audio_ProcessSeqCmd(u32 cmd) {
|
||||
for (i = 0; i < sNumSeqRequests[playerIdx]; i++) {
|
||||
if (D_8016E320[playerIdx][i].unk_0 == seqId) {
|
||||
if (i == 0) {
|
||||
func_800F9280(playerIdx, seqId, seqArgs, fadeTimer);
|
||||
Audio_StartSequence(playerIdx, seqId, seqArgs, fadeTimer);
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -189,7 +189,7 @@ void Audio_ProcessSeqCmd(u32 cmd) {
|
||||
D_8016E320[playerIdx][found].unk_0 = seqId;
|
||||
|
||||
if (found == 0) {
|
||||
func_800F9280(playerIdx, seqId, seqArgs, fadeTimer);
|
||||
Audio_StartSequence(playerIdx, seqId, seqArgs, fadeTimer);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -217,7 +217,8 @@ void Audio_ProcessSeqCmd(u32 cmd) {
|
||||
if (found == 0) {
|
||||
func_800F9474(playerIdx, fadeTimer);
|
||||
if (sNumSeqRequests[playerIdx] != 0) {
|
||||
func_800F9280(playerIdx, D_8016E320[playerIdx][0].unk_0, D_8016E320[playerIdx][0].unk_1, fadeTimer);
|
||||
Audio_StartSequence(playerIdx, D_8016E320[playerIdx][0].unk_0, D_8016E320[playerIdx][0].unk_1,
|
||||
fadeTimer);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -380,7 +381,7 @@ void Audio_ProcessSeqCmd(u32 cmd) {
|
||||
}
|
||||
|
||||
void Audio_QueueSeqCmd(u32 cmd) {
|
||||
// Replacement is resolved per-command in func_800F9280().
|
||||
// Replacement is resolved per-command in Audio_StartSequence().
|
||||
sAudioSeqCmds[sSeqCmdWrPos++] = cmd;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -465,7 +465,7 @@ void GameState_Init(GameState* gameState, GameStateFunc init, GraphicsContext* g
|
||||
void GameState_Destroy(GameState* gameState) {
|
||||
osSyncPrintf("game デストラクタ開始\n"); // "game destructor start"
|
||||
func_800C3C20();
|
||||
func_800F3054();
|
||||
Audio_Update();
|
||||
osRecvMesg(&gameState->gfxCtx->queue, NULL, OS_MESG_BLOCK);
|
||||
LOG_CHECK_NULL_POINTER("this->cleanup", gameState->destroy);
|
||||
if (gameState->destroy != NULL) {
|
||||
|
||||
@@ -390,7 +390,7 @@ void Graph_Update(GraphicsContext* gfxCtx, GameState* gameState) {
|
||||
gfxCtx->fbIdx++;
|
||||
}
|
||||
|
||||
func_800F3054();
|
||||
Audio_Update();
|
||||
|
||||
{
|
||||
OSTime time = osGetTime();
|
||||
|
||||
@@ -427,7 +427,7 @@ void func_80064824(PlayState* play, CutsceneContext* csCtx, CsCmdBase* cmd) {
|
||||
}
|
||||
break;
|
||||
case 35:
|
||||
func_800EE824();
|
||||
AudioOcarina_PlayLongScarecrowSong();
|
||||
csCtx->frames = cmd->startFrame - 1;
|
||||
break;
|
||||
}
|
||||
@@ -912,7 +912,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
break;
|
||||
case 54:
|
||||
gSaveContext.gameMode = GAMEMODE_END_CREDITS;
|
||||
Audio_SetSoundBanksMute(0x6F);
|
||||
Audio_SetSfxBanksMute(0x6F);
|
||||
play->linkAgeOnLoad = 1;
|
||||
play->nextEntranceIndex = ENTR_GERUDO_VALLEY_EAST_EXIT;
|
||||
gSaveContext.cutsceneIndex = 0xFFF2;
|
||||
@@ -1309,7 +1309,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
break;
|
||||
case 117:
|
||||
gSaveContext.gameMode = GAMEMODE_END_CREDITS;
|
||||
Audio_SetSoundBanksMute(0x6F);
|
||||
Audio_SetSfxBanksMute(0x6F);
|
||||
play->linkAgeOnLoad = 0;
|
||||
play->nextEntranceIndex = ENTR_HYRULE_FIELD_PAST_BRIDGE_SPAWN;
|
||||
gSaveContext.cutsceneIndex = 0xFFF7;
|
||||
|
||||
+137
-128
@@ -143,16 +143,16 @@ void Message_UpdateOcarinaGame(PlayState* play) {
|
||||
play->msgCtx.msgMode++;
|
||||
|
||||
if (play->msgCtx.msgMode == MSGMODE_MEMORY_GAME_PLAYER_PLAYING) {
|
||||
AudioOcarina_SetInstrument(1);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff();
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
func_800ECC04((1 << OCARINA_SONG_MEMORY_GAME) + 0x8000);
|
||||
AudioOcarina_Start((1 << OCARINA_SONG_MEMORY_GAME) + 0x8000);
|
||||
msgCtx->textDrawPos = msgCtx->decodedTextLen;
|
||||
} else if (msgCtx->msgMode == MSGMODE_MEMORY_GAME_RIGHT_SKULLKID_PLAYING) {
|
||||
AudioOcarina_SetInstrument(6);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_FLUTE);
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
Audio_OcaSetSongPlayback(OCARINA_SONG_MEMORY_GAME + 1, 1);
|
||||
AudioOcarina_SetPlaybackSong(OCARINA_SONG_MEMORY_GAME + 1, 1);
|
||||
msgCtx->stateTimer = 2;
|
||||
}
|
||||
Message_ResetOcarinaNoteState();
|
||||
@@ -892,15 +892,15 @@ void Message_HandleOcarina(PlayState* play) {
|
||||
} else if (msgCtx->ocarinaAction == OCARINA_ACTION_SCARECROW_LONG_PLAYBACK) {
|
||||
// "Recording Playback / Recording Playback / Recording Playback / Recording Playback -> "
|
||||
osSyncPrintf("録音再生 録音再生 録音再生 録音再生 -> ");
|
||||
AudioOcarina_SetInstrument(1);
|
||||
AudioOcarina_SetInstrument(1);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||
sOcarinaButtonIndexBufPos = sOcarinaButtonIndexBufLen = 0;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos;
|
||||
Message_ResetOcarinaNoteState();
|
||||
msgCtx->stateTimer = 3;
|
||||
msgCtx->msgMode = MSGMODE_SCARECROW_LONG_PLAYBACK;
|
||||
Audio_OcaSetSongPlayback(OCARINA_SONG_SCARECROW_LONG + 1, 1);
|
||||
AudioOcarina_SetPlaybackSong(OCARINA_SONG_SCARECROW_LONG + 1, 1);
|
||||
} else if (msgCtx->ocarinaAction == OCARINA_ACTION_SCARECROW_RECORDING) {
|
||||
msgCtx->msgMode = MSGMODE_SCARECROW_RECORDING_START;
|
||||
// "8 Note Recording Start / 8 Note Recording Start / 8 Note Recording Start -> "
|
||||
@@ -908,15 +908,15 @@ void Message_HandleOcarina(PlayState* play) {
|
||||
} else if (msgCtx->ocarinaAction == OCARINA_ACTION_SCARECROW_PLAYBACK) {
|
||||
// "8 Note Playback / 8 Note Playback / 8 Note Playback -> "
|
||||
osSyncPrintf("8音再生 8音再生 8音再生 -> ");
|
||||
AudioOcarina_SetInstrument(1);
|
||||
AudioOcarina_SetInstrument(1);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||
sOcarinaButtonIndexBufPos = sOcarinaButtonIndexBufLen = 0;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos;
|
||||
Message_ResetOcarinaNoteState();
|
||||
msgCtx->stateTimer = 3;
|
||||
msgCtx->msgMode = MSGMODE_SCARECROW_PLAYBACK;
|
||||
Audio_OcaSetSongPlayback(OCARINA_SONG_SCARECROW + 1, 1);
|
||||
AudioOcarina_SetPlaybackSong(OCARINA_SONG_SCARECROW_SPAWN + 1, 1);
|
||||
} else if (msgCtx->ocarinaAction == OCARINA_ACTION_MEMORY_GAME) {
|
||||
msgCtx->msgMode = MSGMODE_MEMORY_GAME_START;
|
||||
// "Musical Round Start / Musical Round Start / Musical Round Start / Musical Round Start -> "
|
||||
@@ -2895,11 +2895,19 @@ void Message_ContinueTextbox(PlayState* play, u16 textId) {
|
||||
|
||||
void Message_StartOcarina(PlayState* play, u16 ocarinaActionId) {
|
||||
static u16 sOcarinaSongFlagsMap[] = {
|
||||
(1 << OCARINA_SONG_MINUET), (1 << OCARINA_SONG_BOLERO), (1 << OCARINA_SONG_SERENADE),
|
||||
(1 << OCARINA_SONG_REQUIEM), (1 << OCARINA_SONG_NOCTURNE), (1 << OCARINA_SONG_PRELUDE),
|
||||
(1 << OCARINA_SONG_LULLABY), (1 << OCARINA_SONG_EPONAS), (1 << OCARINA_SONG_SARIAS),
|
||||
(1 << OCARINA_SONG_SUNS), (1 << OCARINA_SONG_TIME), (1 << OCARINA_SONG_STORMS),
|
||||
(1 << OCARINA_SONG_SCARECROW),
|
||||
(1 << OCARINA_SONG_MINUET),
|
||||
(1 << OCARINA_SONG_BOLERO),
|
||||
(1 << OCARINA_SONG_SERENADE),
|
||||
(1 << OCARINA_SONG_REQUIEM),
|
||||
(1 << OCARINA_SONG_NOCTURNE),
|
||||
(1 << OCARINA_SONG_PRELUDE),
|
||||
(1 << OCARINA_SONG_LULLABY),
|
||||
(1 << OCARINA_SONG_EPONAS),
|
||||
(1 << OCARINA_SONG_SARIAS),
|
||||
(1 << OCARINA_SONG_SUNS),
|
||||
(1 << OCARINA_SONG_TIME),
|
||||
(1 << OCARINA_SONG_STORMS),
|
||||
(1 << OCARINA_SONG_SCARECROW_SPAWN),
|
||||
};
|
||||
MessageContext* msgCtx = &play->msgCtx;
|
||||
s32 textId;
|
||||
@@ -2917,13 +2925,13 @@ void Message_StartOcarina(PlayState* play, u16 ocarinaActionId) {
|
||||
}
|
||||
}
|
||||
if (gSaveContext.scarecrowSpawnSongSet) {
|
||||
sOcarinaSongBitFlags |= (1 << OCARINA_SONG_SCARECROW);
|
||||
sOcarinaSongBitFlags |= (1 << OCARINA_SONG_SCARECROW_SPAWN);
|
||||
}
|
||||
osSyncPrintf("ocarina_bit = %x\n", sOcarinaSongBitFlags);
|
||||
osSyncPrintf(VT_RST);
|
||||
|
||||
sHasSunsSong = CHECK_QUEST_ITEM(QUEST_SONG_SUN);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetRecordingStaff();
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetRecordingStaff();
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
sOcarinaButtonIndexBufLen = 0;
|
||||
Message_ResetOcarinaNoteState();
|
||||
@@ -3006,15 +3014,15 @@ void Message_StartOcarina(PlayState* play, u16 ocarinaActionId) {
|
||||
} else if (ocarinaActionId == OCARINA_ACTION_SCARECROW_LONG_PLAYBACK) {
|
||||
// "?????Recording Playback / Recording Playback / Recording Playback / Recording Playback -> "
|
||||
osSyncPrintf("?????録音再生 録音再生 録音再生 録音再生 -> ");
|
||||
AudioOcarina_SetInstrument(1);
|
||||
AudioOcarina_SetInstrument(1);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||
sOcarinaButtonIndexBufPos = sOcarinaButtonIndexBufLen = 0;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos;
|
||||
Message_ResetOcarinaNoteState();
|
||||
msgCtx->stateTimer = 3;
|
||||
msgCtx->msgMode = MSGMODE_SCARECROW_LONG_PLAYBACK;
|
||||
Audio_OcaSetSongPlayback(OCARINA_SONG_SCARECROW_LONG + 1, 1);
|
||||
AudioOcarina_SetPlaybackSong(OCARINA_SONG_SCARECROW_LONG + 1, 1);
|
||||
gSaveContext.hudVisibilityMode = 0;
|
||||
Interface_ChangeHudVisibilityMode(1);
|
||||
}
|
||||
@@ -3365,8 +3373,8 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
case MSGMODE_OCARINA_STARTING:
|
||||
case MSGMODE_SONG_DEMONSTRATION_STARTING:
|
||||
case MSGMODE_SONG_PLAYBACK_STARTING:
|
||||
AudioOcarina_SetInstrument(1);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff();
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_01;
|
||||
Message_ResetOcarinaNoteState();
|
||||
@@ -3380,22 +3388,22 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
msgCtx->ocarinaAction >= OCARINA_ACTION_CHECK_SARIA) {
|
||||
if (msgCtx->ocarinaAction == OCARINA_ACTION_FREE_PLAY ||
|
||||
msgCtx->ocarinaAction == OCARINA_ACTION_CHECK_NOWARP) {
|
||||
func_800ECC04(sOcarinaSongBitFlags + 0xC000);
|
||||
AudioOcarina_Start(sOcarinaSongBitFlags + 0xC000);
|
||||
} else {
|
||||
// "On Stage Performance"
|
||||
osSyncPrintf("台上演奏\n");
|
||||
func_800ECC04(sOcarinaSongBitFlags);
|
||||
AudioOcarina_Start(sOcarinaSongBitFlags);
|
||||
}
|
||||
} else {
|
||||
osSyncPrintf("Na_StartOcarinaSinglePlayCheck2( message->ocarina_no );\n");
|
||||
func_800ECC04((1 << (msgCtx->ocarinaAction % 32)) + 0x8000);
|
||||
AudioOcarina_Start((1 << (msgCtx->ocarinaAction % 32)) + 0x8000);
|
||||
}
|
||||
msgCtx->msgMode = MSGMODE_OCARINA_PLAYING;
|
||||
} else if (msgCtx->msgMode == MSGMODE_SONG_DEMONSTRATION_STARTING) {
|
||||
msgCtx->stateTimer = 20;
|
||||
msgCtx->msgMode = MSGMODE_SONG_DEMONSTRATION_SELECT_INSTRUMENT;
|
||||
} else {
|
||||
func_800ECC04((1 << ((msgCtx->ocarinaAction + 0x11) % 32)) + 0x8000);
|
||||
AudioOcarina_Start((1 << ((msgCtx->ocarinaAction + 0x11) % 32)) + 0x8000);
|
||||
// "Performance Check"
|
||||
osSyncPrintf("演奏チェック=%d\n", msgCtx->ocarinaAction - OCARINA_ACTION_PLAYBACK_MINUET);
|
||||
msgCtx->msgMode = MSGMODE_SONG_PLAYBACK;
|
||||
@@ -3410,7 +3418,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
}
|
||||
break;
|
||||
case MSGMODE_OCARINA_PLAYING:
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff();
|
||||
if (msgCtx->ocarinaStaff->pos) {
|
||||
osSyncPrintf("locate=%d onpu_pt=%d\n", msgCtx->ocarinaStaff->pos, sOcarinaButtonIndexBufPos);
|
||||
if (msgCtx->ocarinaStaff->pos == 1 && sOcarinaButtonIndexBufPos == 8) {
|
||||
@@ -3418,22 +3426,22 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
}
|
||||
if (sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
msgCtx->lastOcaNoteIdx = sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos - 1] =
|
||||
msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_INVALID;
|
||||
msgCtx->ocarinaStaff->buttonIndex;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_BTN_INVALID;
|
||||
sOcarinaButtonIndexBufPos++;
|
||||
}
|
||||
}
|
||||
msgCtx->lastPlayedSong = msgCtx->ocarinaStaff->state;
|
||||
if (msgCtx->ocarinaStaff->state < OCARINA_SONG_MEMORY_GAME) {
|
||||
if (msgCtx->ocarinaStaff->state == OCARINA_SONG_SCARECROW ||
|
||||
if (msgCtx->ocarinaStaff->state == OCARINA_SONG_SCARECROW_SPAWN ||
|
||||
CHECK_QUEST_ITEM(QUEST_SONG_MINUET + gOcarinaSongItemMap[msgCtx->ocarinaStaff->state])) {
|
||||
sLastPlayedSong = msgCtx->unk_E3F2 = msgCtx->lastPlayedSong = msgCtx->ocarinaStaff->state;
|
||||
msgCtx->msgMode = MSGMODE_OCARINA_CORRECT_PLAYBACK;
|
||||
msgCtx->stateTimer = 20;
|
||||
if (msgCtx->ocarinaAction == OCARINA_ACTION_CHECK_NOWARP) {
|
||||
if (msgCtx->ocarinaStaff->state < OCARINA_SONG_SARIAS ||
|
||||
msgCtx->ocarinaStaff->state == OCARINA_SONG_SCARECROW) {
|
||||
AudioOcarina_SetInstrument(0);
|
||||
msgCtx->ocarinaStaff->state == OCARINA_SONG_SCARECROW_SPAWN) {
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_OCARINA_ERROR, &gSfxDefaultPos, 4,
|
||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale,
|
||||
&gSfxDefaultReverb);
|
||||
@@ -3451,8 +3459,8 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
Interface_ChangeHudVisibilityMode(1);
|
||||
}
|
||||
} else if (msgCtx->ocarinaAction == OCARINA_ACTION_CHECK_SCARECROW) {
|
||||
if (msgCtx->ocarinaStaff->state < OCARINA_SONG_SCARECROW) {
|
||||
AudioOcarina_SetInstrument(0);
|
||||
if (msgCtx->ocarinaStaff->state < OCARINA_SONG_SCARECROW_SPAWN) {
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_OCARINA_ERROR, &gSfxDefaultPos, 4,
|
||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale,
|
||||
&gSfxDefaultReverb);
|
||||
@@ -3487,19 +3495,19 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
}
|
||||
Interface_ChangeHudVisibilityMode(1);
|
||||
} else {
|
||||
AudioOcarina_SetInstrument(0);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_OCARINA_ERROR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
|
||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
||||
msgCtx->msgMode = MSGMODE_OCARINA_STARTING;
|
||||
}
|
||||
} else if (msgCtx->ocarinaStaff->state == 0xFF) {
|
||||
AudioOcarina_SetInstrument(0);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_OCARINA_ERROR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
|
||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
||||
msgCtx->stateTimer = 10;
|
||||
msgCtx->msgMode = MSGMODE_OCARINA_FAIL;
|
||||
} else if (isB_Held) {
|
||||
AudioOcarina_SetInstrument(0);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_04;
|
||||
Message_CloseTextbox(play);
|
||||
}
|
||||
@@ -3544,7 +3552,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
|
||||
msgCtx->stateTimer--;
|
||||
if (msgCtx->stateTimer == 0) {
|
||||
AudioOcarina_SetInstrument(0);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
if (msgCtx->msgMode == MSGMODE_OCARINA_CORRECT_PLAYBACK) {
|
||||
// "Correct Example Performance"
|
||||
osSyncPrintf("正解模範演奏=%x\n", msgCtx->lastPlayedSong);
|
||||
@@ -3604,7 +3612,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
}
|
||||
R_OCARINA_NOTES_YPOS_OFFSET += R_OCARINA_NOTES_YPOS_OFFSET;
|
||||
if (R_OCARINA_NOTES_YPOS_OFFSET >= 550) {
|
||||
sOcarinaButtonIndexBuf[0] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaButtonIndexBuf[0] = OCARINA_BTN_INVALID;
|
||||
sOcarinaNotesAlphaValues[0] = sOcarinaNotesAlphaValues[1] = sOcarinaNotesAlphaValues[2] =
|
||||
sOcarinaNotesAlphaValues[3] = sOcarinaNotesAlphaValues[4] = sOcarinaNotesAlphaValues[5] =
|
||||
sOcarinaNotesAlphaValues[6] = sOcarinaNotesAlphaValues[7] = sOcarinaNotesAlphaValues[8] = 0;
|
||||
@@ -3618,7 +3626,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
case MSGMODE_SONG_PLAYED:
|
||||
msgCtx->stateTimer--;
|
||||
if (msgCtx->stateTimer == 0) {
|
||||
AudioOcarina_SetInstrument(0);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
osSyncPrintf(VT_FGCOL(GREEN));
|
||||
osSyncPrintf("Na_StopOcarinaMode();\n");
|
||||
osSyncPrintf("Na_StopOcarinaMode();\n");
|
||||
@@ -3626,7 +3634,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
osSyncPrintf(VT_RST);
|
||||
Message_Decode(play);
|
||||
msgCtx->msgMode = MSGMODE_SETUP_DISPLAY_SONG_PLAYED;
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff();
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
Message_ResetOcarinaNoteState();
|
||||
if (msgCtx->lastPlayedSong >= OCARINA_SONG_SARIAS &&
|
||||
@@ -3648,16 +3656,16 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
} else {
|
||||
Message_DrawText(play, &gfx);
|
||||
}
|
||||
AudioOcarina_SetInstrument(1);
|
||||
AudioOcarina_SetInstrument(1);
|
||||
Audio_OcaSetSongPlayback(msgCtx->lastPlayedSong + 1, 1);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
AudioOcarina_SetPlaybackSong(msgCtx->lastPlayedSong + 1, 1);
|
||||
} else {
|
||||
AudioOcarina_SetInstrument(1);
|
||||
AudioOcarina_SetInstrument(1);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
}
|
||||
if (msgCtx->lastPlayedSong != OCARINA_SONG_SCARECROW) {
|
||||
if (msgCtx->lastPlayedSong != OCARINA_SONG_SCARECROW_SPAWN) {
|
||||
Audio_PlayFanfare(sOcarinaSongFanfares[msgCtx->lastPlayedSong]);
|
||||
Audio_SetSoundBanksMute(0x20);
|
||||
Audio_SetSfxBanksMute(0x20);
|
||||
}
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_01;
|
||||
if (msgCtx->ocarinaAction == OCARINA_ACTION_FREE_PLAY) {
|
||||
@@ -3675,19 +3683,19 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
// "ocarina_no=%d Song Chosen=%d"
|
||||
osSyncPrintf("ocarina_no=%d 選曲=%d\n", msgCtx->ocarinaAction, 0x16);
|
||||
if (msgCtx->ocarinaAction < OCARINA_ACTION_TEACH_SARIA) {
|
||||
AudioOcarina_SetInstrument(4);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_HARP);
|
||||
} else if (msgCtx->ocarinaAction == OCARINA_ACTION_TEACH_EPONA) {
|
||||
AudioOcarina_SetInstrument(2);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_MALON);
|
||||
} else if (msgCtx->ocarinaAction == OCARINA_ACTION_TEACH_LULLABY) {
|
||||
AudioOcarina_SetInstrument(3);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_WHISTLE);
|
||||
} else if (msgCtx->ocarinaAction == OCARINA_ACTION_TEACH_STORMS) {
|
||||
AudioOcarina_SetInstrument(5);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_GRIND_ORGAN);
|
||||
} else {
|
||||
AudioOcarina_SetInstrument(1);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
}
|
||||
// "Example Performance"
|
||||
osSyncPrintf("模範演奏=%x\n", msgCtx->ocarinaAction - OCARINA_ACTION_TEACH_MINUET);
|
||||
Audio_OcaSetSongPlayback(msgCtx->ocarinaAction - OCARINA_ACTION_TEACH_MINUET + 1, 2);
|
||||
AudioOcarina_SetPlaybackSong(msgCtx->ocarinaAction - OCARINA_ACTION_TEACH_MINUET + 1, 2);
|
||||
sOcarinaButtonIndexBufPos = 0;
|
||||
msgCtx->msgMode = MSGMODE_SONG_DEMONSTRATION;
|
||||
}
|
||||
@@ -3729,7 +3737,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
}
|
||||
break;
|
||||
case MSGMODE_SONG_PLAYED_ACT_BEGIN:
|
||||
AudioOcarina_SetInstrument(0);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
Message_ResetOcarinaNoteState();
|
||||
msgCtx->msgMode = MSGMODE_SONG_PLAYED_ACT;
|
||||
msgCtx->stateTimer = 2;
|
||||
@@ -3765,7 +3773,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
msgCtx->ocarinaAction);
|
||||
if (msgCtx->ocarinaAction == OCARINA_ACTION_FREE_PLAY_DONE) {
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_01;
|
||||
if (msgCtx->lastPlayedSong == OCARINA_SONG_SCARECROW) {
|
||||
if (msgCtx->lastPlayedSong == OCARINA_SONG_SCARECROW_SPAWN) {
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_0B;
|
||||
}
|
||||
} else if (msgCtx->ocarinaAction >= OCARINA_ACTION_CHECK_MINUET) {
|
||||
@@ -3795,7 +3803,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
break;
|
||||
case MSGMODE_DISPLAY_SONG_PLAYED:
|
||||
case MSGMODE_SONG_DEMONSTRATION:
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||
if (msgCtx->ocarinaStaff->state == 0) {
|
||||
if (msgCtx->msgMode == MSGMODE_DISPLAY_SONG_PLAYED) {
|
||||
msgCtx->msgMode = MSGMODE_DISPLAY_SONG_PLAYED_TEXT_BEGIN;
|
||||
@@ -3810,8 +3818,8 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
}
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
msgCtx->lastOcaNoteIdx = sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos - 1] =
|
||||
msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_INVALID;
|
||||
msgCtx->ocarinaStaff->buttonIndex;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_BTN_INVALID;
|
||||
sOcarinaButtonIndexBufPos++;
|
||||
}
|
||||
}
|
||||
@@ -3823,10 +3831,10 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
}
|
||||
break;
|
||||
case MSGMODE_SONG_PLAYBACK:
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff();
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos - 1] = msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos - 1] = msgCtx->ocarinaStaff->buttonIndex;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_BTN_INVALID;
|
||||
sOcarinaButtonIndexBufPos++;
|
||||
}
|
||||
if (msgCtx->ocarinaStaff->state < OCARINA_SONG_MEMORY_GAME) {
|
||||
@@ -3873,9 +3881,9 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
case MSGMODE_SCARECROW_LONG_RECORDING_START:
|
||||
// "Scarecrow Recording Initialization"
|
||||
osSyncPrintf("案山子録音 初期化\n");
|
||||
Audio_OcaSetRecordingState(1);
|
||||
AudioOcarina_SetInstrument(1);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetRecordingStaff();
|
||||
AudioOcarina_SetRecordingState(OCARINA_RECORD_SCARECROW_LONG);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetRecordingStaff();
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
sOcarinaButtonIndexBufLen = 0;
|
||||
Message_ResetOcarinaNoteState();
|
||||
@@ -3887,7 +3895,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
}
|
||||
break;
|
||||
case MSGMODE_SCARECROW_LONG_RECORDING_ONGOING:
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetRecordingStaff();
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetRecordingStaff();
|
||||
osSyncPrintf("\nonpu_pt=%d, locate=%d", sOcarinaButtonIndexBufPos, msgCtx->ocarinaStaff->pos);
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
if (sOcarinaButtonIndexBufLen >= 8) {
|
||||
@@ -3897,11 +3905,12 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
sOcarinaButtonIndexBufLen--;
|
||||
}
|
||||
// "Button Entered"
|
||||
osSyncPrintf(" 入力ボタン【%d】=%d", sOcarinaButtonIndexBufLen, msgCtx->ocarinaStaff->noteIdx);
|
||||
osSyncPrintf(" 入力ボタン【%d】=%d", sOcarinaButtonIndexBufLen,
|
||||
msgCtx->ocarinaStaff->buttonIndex);
|
||||
msgCtx->lastOcaNoteIdx = sOcarinaButtonIndexBuf[sOcarinaButtonIndexBufLen] =
|
||||
msgCtx->ocarinaStaff->noteIdx;
|
||||
msgCtx->ocarinaStaff->buttonIndex;
|
||||
sOcarinaButtonIndexBufLen++;
|
||||
sOcarinaButtonIndexBuf[sOcarinaButtonIndexBufLen] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaButtonIndexBuf[sOcarinaButtonIndexBufLen] = OCARINA_BTN_INVALID;
|
||||
sOcarinaButtonIndexBufPos++;
|
||||
if (msgCtx->ocarinaStaff->pos == 8) {
|
||||
sOcarinaButtonIndexBufPos = 0;
|
||||
@@ -3917,7 +3926,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_OCARINA_ERROR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
|
||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
||||
osSyncPrintf("aaaaaaaaaaaaaa\n");
|
||||
Audio_OcaSetRecordingState(0);
|
||||
AudioOcarina_SetRecordingState(OCARINA_RECORD_OFF);
|
||||
msgCtx->stateTimer = 10;
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_04;
|
||||
Message_CloseTextbox(play);
|
||||
@@ -3925,7 +3934,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
osSyncPrintf("録音終了!!!!!!!!!録音終了\n");
|
||||
osSyncPrintf(VT_FGCOL(YELLOW));
|
||||
osSyncPrintf("\n====================================================================\n");
|
||||
memcpy(gSaveContext.scarecrowLongSong, gScarecrowCustomSongPtr,
|
||||
memcpy(gSaveContext.scarecrowLongSong, gScarecrowLongSongPtr,
|
||||
sizeof(gSaveContext.scarecrowLongSong));
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.scarecrowLongSong); i++) {
|
||||
osSyncPrintf("%d, ", gSaveContext.scarecrowLongSong[i]);
|
||||
@@ -3941,7 +3950,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
break;
|
||||
case MSGMODE_SCARECROW_LONG_PLAYBACK:
|
||||
case MSGMODE_SCARECROW_PLAYBACK:
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
if (sOcarinaButtonIndexBufLen >= 8) {
|
||||
for (noteBufPos = sOcarinaButtonIndexBufLen - 8, i = 0; i < 8; i++, noteBufPos++) {
|
||||
@@ -3949,9 +3958,9 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
}
|
||||
sOcarinaButtonIndexBufLen--;
|
||||
}
|
||||
sOcarinaButtonIndexBuf[sOcarinaButtonIndexBufLen] = msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaButtonIndexBuf[sOcarinaButtonIndexBufLen] = msgCtx->ocarinaStaff->buttonIndex;
|
||||
sOcarinaButtonIndexBufLen++;
|
||||
sOcarinaButtonIndexBuf[sOcarinaButtonIndexBufLen] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaButtonIndexBuf[sOcarinaButtonIndexBufLen] = OCARINA_BTN_INVALID;
|
||||
sOcarinaButtonIndexBufPos++;
|
||||
if (msgCtx->ocarinaStaff->pos == 8) {
|
||||
sOcarinaButtonIndexBufLen = sOcarinaButtonIndexBufPos = 0;
|
||||
@@ -3961,7 +3970,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
if (msgCtx->stateTimer == 0) {
|
||||
if (msgCtx->ocarinaStaff->state == 0) {
|
||||
osSyncPrintf("bbbbbbbbbbb\n");
|
||||
AudioOcarina_SetInstrument(0);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_0F;
|
||||
Message_CloseTextbox(play);
|
||||
}
|
||||
@@ -3970,8 +3979,8 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
}
|
||||
break;
|
||||
case MSGMODE_SCARECROW_RECORDING_START:
|
||||
Audio_OcaSetRecordingState(2);
|
||||
AudioOcarina_SetInstrument(1);
|
||||
AudioOcarina_SetRecordingState(OCARINA_RECORD_SCARECROW_SPAWN);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
msgCtx->msgMode = MSGMODE_SCARECROW_RECORDING_ONGOING;
|
||||
if (gSaveContext.language == LANGUAGE_JPN && !sDisplayNextMessageAsEnglish) {
|
||||
Message_DrawTextJPN(play, &gfx);
|
||||
@@ -3980,12 +3989,12 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
}
|
||||
break;
|
||||
case MSGMODE_SCARECROW_RECORDING_ONGOING:
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetRecordingStaff();
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetRecordingStaff();
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
msgCtx->lastOcaNoteIdx = sOcarinaButtonIndexBuf[sOcarinaButtonIndexBufPos] =
|
||||
msgCtx->ocarinaStaff->noteIdx;
|
||||
msgCtx->ocarinaStaff->buttonIndex;
|
||||
sOcarinaButtonIndexBufPos++;
|
||||
sOcarinaButtonIndexBuf[sOcarinaButtonIndexBufPos] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaButtonIndexBuf[sOcarinaButtonIndexBufPos] = OCARINA_BTN_INVALID;
|
||||
}
|
||||
if (msgCtx->ocarinaStaff->state == 0) {
|
||||
// "8 Note Recording OK!"
|
||||
@@ -4004,10 +4013,10 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
}
|
||||
osSyncPrintf(VT_RST);
|
||||
osSyncPrintf("\n====================================================================\n");
|
||||
} else if (msgCtx->ocarinaStaff->state == 0xFF || isB_Held) {
|
||||
} else if (msgCtx->ocarinaStaff->state == OCARINA_RECORD_REJECTED || isB_Held) {
|
||||
// "Played an existing song!!!"
|
||||
osSyncPrintf("すでに存在する曲吹いた!!! \n");
|
||||
Audio_OcaSetRecordingState(0);
|
||||
AudioOcarina_SetRecordingState(OCARINA_RECORD_OFF);
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_OCARINA_ERROR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
|
||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
||||
Message_CloseTextbox(play);
|
||||
@@ -4021,18 +4030,18 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
break;
|
||||
case MSGMODE_SCARECROW_RECORDING_FAILED:
|
||||
osSyncPrintf("cccccccccccc\n");
|
||||
AudioOcarina_SetInstrument(0);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
Message_StartTextbox(play, 0x40AD, NULL); // Bonooru doesn't remember your song
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_04;
|
||||
break;
|
||||
case MSGMODE_MEMORY_GAME_START:
|
||||
AudioOcarina_SetInstrument(1);
|
||||
AudioOcarina_SetInstrument(6);
|
||||
Audio_OcaMemoryGameStart(gSaveContext.ocarinaGameRoundNum);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_FLUTE);
|
||||
AudioOcarina_MemoryGameInit(gSaveContext.ocarinaGameRoundNum);
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
Message_ResetOcarinaNoteState();
|
||||
Audio_OcaSetSongPlayback(OCARINA_SONG_MEMORY_GAME + 1, 1);
|
||||
AudioOcarina_SetPlaybackSong(OCARINA_SONG_MEMORY_GAME + 1, 1);
|
||||
msgCtx->msgMode = MSGMODE_MEMORY_GAME_LEFT_SKULLKID_PLAYING;
|
||||
msgCtx->stateTimer = 2;
|
||||
break;
|
||||
@@ -4040,10 +4049,10 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
case MSGMODE_MEMORY_GAME_RIGHT_SKULLKID_PLAYING:
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_METRONOME_LV - SFX_FLAG, &gSfxDefaultPos, 4,
|
||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos - 1] = msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos - 1] = msgCtx->ocarinaStaff->buttonIndex;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_BTN_INVALID;
|
||||
sOcarinaButtonIndexBufPos++;
|
||||
}
|
||||
if (msgCtx->stateTimer == 0) {
|
||||
@@ -4064,26 +4073,26 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
break;
|
||||
case MSGMODE_MEMORY_GAME_LEFT_SKULLKID_WAIT:
|
||||
case MSGMODE_MEMORY_GAME_RIGHT_SKULLKID_WAIT:
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos - 1] = msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos - 1] = msgCtx->ocarinaStaff->buttonIndex;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_BTN_INVALID;
|
||||
sOcarinaButtonIndexBufPos++;
|
||||
}
|
||||
break;
|
||||
case MSGMODE_MEMORY_GAME_PLAYER_PLAYING:
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_METRONOME_LV - SFX_FLAG, &gSfxDefaultPos, 4,
|
||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff();
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos - 1] = msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos - 1] = msgCtx->ocarinaStaff->buttonIndex;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_BTN_INVALID;
|
||||
sOcarinaButtonIndexBufPos++;
|
||||
}
|
||||
if (msgCtx->ocarinaStaff->state == 0xFF) {
|
||||
// "Musical round failed!!!!!!!!!"
|
||||
osSyncPrintf("輪唱失敗!!!!!!!!!\n");
|
||||
AudioOcarina_SetInstrument(0);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_OCARINA_ERROR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
|
||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
||||
msgCtx->stateTimer = 10;
|
||||
@@ -4103,18 +4112,18 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
}
|
||||
break;
|
||||
case MSGMODE_MEMORY_GAME_ROUND_SUCCESS:
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff();
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos - 1] = msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos - 1] = msgCtx->ocarinaStaff->buttonIndex;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_BTN_INVALID;
|
||||
sOcarinaButtonIndexBufPos++;
|
||||
}
|
||||
msgCtx->stateTimer--;
|
||||
if (msgCtx->stateTimer == 0) {
|
||||
if (Audio_OcaMemoryGameGenNote() != 1) {
|
||||
if (AudioOcarina_MemoryGameNextNote() != 1) {
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_METRONOME, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
|
||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff();
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
Message_ResetOcarinaNoteState();
|
||||
msgCtx->msgMode = MSGMODE_MEMORY_GAME_START_NEXT_ROUND;
|
||||
@@ -4130,25 +4139,25 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
break;
|
||||
case MSGMODE_MEMORY_GAME_START_NEXT_ROUND:
|
||||
if (!Audio_IsSfxPlaying(NA_SE_SY_METRONOME)) {
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
Message_ResetOcarinaNoteState();
|
||||
Audio_OcaSetSongPlayback(OCARINA_SONG_MEMORY_GAME + 1, 1);
|
||||
AudioOcarina_SetPlaybackSong(OCARINA_SONG_MEMORY_GAME + 1, 1);
|
||||
}
|
||||
break;
|
||||
case MSGMODE_FROGS_START:
|
||||
AudioOcarina_SetInstrument(1);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff();
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_01;
|
||||
Message_ResetOcarinaNoteState();
|
||||
func_800ECC04(sOcarinaSongBitFlags + 0xC000);
|
||||
AudioOcarina_Start(sOcarinaSongBitFlags + 0xC000);
|
||||
msgCtx->msgMode = MSGMODE_FROGS_PLAYING;
|
||||
break;
|
||||
case MSGMODE_FROGS_PLAYING:
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
msgCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff();
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
msgCtx->lastOcaNoteIdx = msgCtx->ocarinaStaff->noteIdx;
|
||||
msgCtx->lastOcaNoteIdx = msgCtx->ocarinaStaff->buttonIndex;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
Message_ResetOcarinaNoteState();
|
||||
msgCtx->msgMode = MSGMODE_FROGS_WAITING;
|
||||
@@ -4209,19 +4218,19 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
|
||||
if (msgCtx->msgMode == MSGMODE_SONG_PLAYBACK) {
|
||||
g = msgCtx->ocarinaAction - OCARINA_ACTION_PLAYBACK_MINUET;
|
||||
r = gOcarinaSongNotes[g].len;
|
||||
r = gOcarinaSongButtons[g].numButtons;
|
||||
for (notePosX = R_OCARINA_NOTES_XPOS, i = 0; i < r; i++, notePosX += R_OCARINA_NOTES_XPOS_OFFSET) {
|
||||
gDPPipeSync(gfx++);
|
||||
gDPSetPrimColor(gfx++, 0, 0, 150, 150, 150, 150);
|
||||
gDPSetEnvColor(gfx++, 10, 10, 10, 0);
|
||||
|
||||
gDPLoadTextureBlock(gfx++, sOcarinaNoteTextures[gOcarinaSongNotes[g].notesIdx[i]], G_IM_FMT_IA,
|
||||
G_IM_SIZ_8b, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
gDPLoadTextureBlock(gfx++, sOcarinaNoteTextures[gOcarinaSongButtons[g].buttonsIndex[i]],
|
||||
G_IM_FMT_IA, G_IM_SIZ_8b, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
|
||||
gSPTextureRectangle(
|
||||
gfx++, notePosX << 2, R_OCARINA_NOTES_YPOS(gOcarinaSongNotes[g].notesIdx[i]) << 2,
|
||||
(notePosX + 16) << 2, (R_OCARINA_NOTES_YPOS(gOcarinaSongNotes[g].notesIdx[i]) + 16) << 2,
|
||||
gfx++, notePosX << 2, R_OCARINA_NOTES_YPOS(gOcarinaSongButtons[g].buttonsIndex[i]) << 2,
|
||||
(notePosX + 16) << 2, (R_OCARINA_NOTES_YPOS(gOcarinaSongButtons[g].buttonsIndex[i]) + 16) << 2,
|
||||
G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
|
||||
}
|
||||
}
|
||||
@@ -4229,7 +4238,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
if (msgCtx->msgMode != MSGMODE_SCARECROW_LONG_RECORDING_START &&
|
||||
msgCtx->msgMode != MSGMODE_MEMORY_GAME_START) {
|
||||
for (notePosX = R_OCARINA_NOTES_XPOS, i = 0; i < 8; i++, notePosX += R_OCARINA_NOTES_XPOS_OFFSET) {
|
||||
if (sOcarinaButtonIndexBuf[i] == OCARINA_NOTE_INVALID) {
|
||||
if (sOcarinaButtonIndexBuf[i] == OCARINA_BTN_INVALID) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -4245,21 +4254,21 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
// Since I don't know what exactly these Env vars are used for, I elected keep their usage
|
||||
// consistent with the note played, rather than having AEnv be used for whatever note A happens to
|
||||
// play at the moment and CEnv for everything else, even with custom controls enabled.
|
||||
if (sOcarinaButtonIndexBuf[i] == OCARINA_NOTE_D4) {
|
||||
if (sOcarinaButtonIndexBuf[i] == OCARINA_BTN_A) {
|
||||
gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteABtnPrim.r, sOcarinaNoteABtnPrim.g,
|
||||
sOcarinaNoteABtnPrim.b, sOcarinaNotesAlphaValues[i]);
|
||||
gDPSetEnvColor(gfx++, sOcarinaNoteABtnEnv.r, sOcarinaNoteABtnEnv.g, sOcarinaNoteABtnEnv.b, 0);
|
||||
} else {
|
||||
if (sOcarinaButtonIndexBuf[i] == OCARINA_NOTE_D5) {
|
||||
if (sOcarinaButtonIndexBuf[i] == OCARINA_BTN_C_UP) {
|
||||
gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteCUpBtnPrim.r, sOcarinaNoteCUpBtnPrim.g,
|
||||
sOcarinaNoteCUpBtnPrim.b, sOcarinaNotesAlphaValues[i]);
|
||||
} else if (sOcarinaButtonIndexBuf[i] == OCARINA_NOTE_B4) {
|
||||
} else if (sOcarinaButtonIndexBuf[i] == OCARINA_BTN_C_LEFT) {
|
||||
gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteCLeftBtnPrim.r, sOcarinaNoteCLeftBtnPrim.g,
|
||||
sOcarinaNoteCLeftBtnPrim.b, sOcarinaNotesAlphaValues[i]);
|
||||
} else if (sOcarinaButtonIndexBuf[i] == OCARINA_NOTE_A4) {
|
||||
} else if (sOcarinaButtonIndexBuf[i] == OCARINA_BTN_C_RIGHT) {
|
||||
gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteCRightBtnPrim.r, sOcarinaNoteCRightBtnPrim.g,
|
||||
sOcarinaNoteCRightBtnPrim.b, sOcarinaNotesAlphaValues[i]);
|
||||
} else if (sOcarinaButtonIndexBuf[i] == OCARINA_NOTE_F4) {
|
||||
} else if (sOcarinaButtonIndexBuf[i] == OCARINA_BTN_C_DOWN) {
|
||||
gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteCDownBtnPrim.r, sOcarinaNoteCDownBtnPrim.g,
|
||||
sOcarinaNoteCDownBtnPrim.b, sOcarinaNotesAlphaValues[i]);
|
||||
}
|
||||
@@ -4689,7 +4698,7 @@ void Message_Update(PlayState* play) {
|
||||
case MSGMODE_PAUSED:
|
||||
break;
|
||||
default:
|
||||
msgCtx->lastOcaNoteIdx = OCARINA_NOTE_INVALID;
|
||||
msgCtx->lastOcaNoteIdx = OCARINA_BTN_INVALID;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,9 +159,9 @@ void Sram_OpenSave() {
|
||||
osSyncPrintf(VT_FGCOL(BLUE));
|
||||
osSyncPrintf("\n====================================================================\n");
|
||||
|
||||
memcpy(gScarecrowCustomSongPtr, gSaveContext.scarecrowLongSong, sizeof(gSaveContext.scarecrowLongSong));
|
||||
memcpy(gScarecrowLongSongPtr, gSaveContext.scarecrowLongSong, sizeof(gSaveContext.scarecrowLongSong));
|
||||
|
||||
ptr = (u8*)gScarecrowCustomSongPtr;
|
||||
ptr = (u8*)gScarecrowLongSongPtr;
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.scarecrowLongSong); i++, ptr++) {
|
||||
osSyncPrintf("%d, ", *ptr);
|
||||
}
|
||||
|
||||
@@ -207,7 +207,7 @@ static u8 sJumpOrder[] = {
|
||||
};
|
||||
|
||||
static u8 sOcarinaNotes[] = {
|
||||
OCARINA_NOTE_D4, OCARINA_NOTE_F4, OCARINA_NOTE_A4, OCARINA_NOTE_B4, OCARINA_NOTE_D5,
|
||||
OCARINA_BTN_A, OCARINA_BTN_C_DOWN, OCARINA_BTN_C_RIGHT, OCARINA_BTN_C_LEFT, OCARINA_BTN_C_UP,
|
||||
};
|
||||
|
||||
void EnFr_OrientUnderwater(EnFr* this) {
|
||||
@@ -703,19 +703,19 @@ void EnFr_ListeningToOcarinaNotes(EnFr* this, PlayState* play) {
|
||||
break;
|
||||
case OCARINA_MODE_01: // Ocarina note played, but no song played
|
||||
switch (play->msgCtx.lastOcaNoteIdx) { // Jumping frogs in open ocarina based on ocarina note played
|
||||
case OCARINA_NOTE_D4:
|
||||
case OCARINA_BTN_A:
|
||||
EnFr_SetupJumpingUp(this, FROG_BLUE);
|
||||
break;
|
||||
case OCARINA_NOTE_F4:
|
||||
case OCARINA_BTN_C_DOWN:
|
||||
EnFr_SetupJumpingUp(this, FROG_YELLOW);
|
||||
break;
|
||||
case OCARINA_NOTE_A4:
|
||||
case OCARINA_BTN_C_RIGHT:
|
||||
EnFr_SetupJumpingUp(this, FROG_RED);
|
||||
break;
|
||||
case OCARINA_NOTE_B4:
|
||||
case OCARINA_BTN_C_LEFT:
|
||||
EnFr_SetupJumpingUp(this, FROG_PURPLE);
|
||||
break;
|
||||
case OCARINA_NOTE_D5:
|
||||
case OCARINA_BTN_C_UP:
|
||||
EnFr_SetupJumpingUp(this, FROG_WHITE);
|
||||
break;
|
||||
}
|
||||
@@ -882,7 +882,7 @@ void EnFr_OcarinaMistake(EnFr* this, PlayState* play) {
|
||||
Message_CloseTextbox(play);
|
||||
this->reward = GI_NONE;
|
||||
Sfx_PlaySfxCentered(NA_SE_SY_OCARINA_ERROR);
|
||||
AudioOcarina_SetInstrument(0);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
sEnFrPointers.flags = 12;
|
||||
EnFr_DeactivateButterfly();
|
||||
this->actionFunc = EnFr_Deactivate;
|
||||
@@ -921,19 +921,19 @@ void EnFr_ContinueFrogSong(EnFr* this, PlayState* play) {
|
||||
if (play->msgCtx.msgMode == MSGMODE_FROGS_WAITING) {
|
||||
play->msgCtx.msgMode = MSGMODE_FROGS_START;
|
||||
switch (play->msgCtx.lastOcaNoteIdx) {
|
||||
case OCARINA_NOTE_D4:
|
||||
case OCARINA_BTN_A:
|
||||
EnFr_SetupJumpingUp(this, FROG_BLUE);
|
||||
break;
|
||||
case OCARINA_NOTE_F4:
|
||||
case OCARINA_BTN_C_DOWN:
|
||||
EnFr_SetupJumpingUp(this, FROG_YELLOW);
|
||||
break;
|
||||
case OCARINA_NOTE_A4:
|
||||
case OCARINA_BTN_C_RIGHT:
|
||||
EnFr_SetupJumpingUp(this, FROG_RED);
|
||||
break;
|
||||
case OCARINA_NOTE_B4:
|
||||
case OCARINA_BTN_C_LEFT:
|
||||
EnFr_SetupJumpingUp(this, FROG_PURPLE);
|
||||
break;
|
||||
case OCARINA_NOTE_D5:
|
||||
case OCARINA_BTN_C_UP:
|
||||
EnFr_SetupJumpingUp(this, FROG_WHITE);
|
||||
}
|
||||
if (EnFr_IsFrogSongComplete(this, play)) {
|
||||
@@ -952,7 +952,7 @@ void EnFr_SetupReward(EnFr* this, PlayState* play, u8 unkCondition) {
|
||||
Sfx_PlaySfxCentered(NA_SE_SY_CORRECT_CHIME);
|
||||
}
|
||||
|
||||
AudioOcarina_SetInstrument(0);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
play->msgCtx.msgMode = MSGMODE_PAUSED;
|
||||
this->actionFunc = EnFr_PrintTextBox;
|
||||
}
|
||||
|
||||
@@ -106,30 +106,30 @@ void func_80A8F320(EnKakasi* this, PlayState* play, s16 arg) {
|
||||
ocarinaNote = this->unk_1A6;
|
||||
}
|
||||
switch (ocarinaNote) {
|
||||
case OCARINA_NOTE_D4:
|
||||
case OCARINA_BTN_A:
|
||||
this->unk_19A++;
|
||||
if (this->unk_1A4 == 0) {
|
||||
this->unk_1A4 = 1;
|
||||
Audio_PlayActorSound2(&this->actor, NA_SE_EV_KAKASHI_ROLL);
|
||||
}
|
||||
break;
|
||||
case OCARINA_NOTE_F4:
|
||||
case OCARINA_BTN_C_DOWN:
|
||||
this->unk_19A++;
|
||||
this->unk_1B8 = 1.0f;
|
||||
break;
|
||||
case OCARINA_NOTE_A4:
|
||||
case OCARINA_BTN_C_RIGHT:
|
||||
this->unk_19A++;
|
||||
if (this->unk_1AC == 0) {
|
||||
this->unk_1AC = 0x1388;
|
||||
}
|
||||
break;
|
||||
case OCARINA_NOTE_B4:
|
||||
case OCARINA_BTN_C_LEFT:
|
||||
this->unk_19A++;
|
||||
if (this->unk_1A8 == 0) {
|
||||
this->unk_1A8 = 0x1388;
|
||||
}
|
||||
break;
|
||||
case OCARINA_NOTE_D5:
|
||||
case OCARINA_BTN_C_UP:
|
||||
this->unk_19A++;
|
||||
this->unk_1B8 = 2.0f;
|
||||
break;
|
||||
|
||||
@@ -109,30 +109,30 @@ void func_80A90EBC(EnKakasi3* this, PlayState* play, s32 arg) {
|
||||
ocarinaNote = this->unk_1A6;
|
||||
}
|
||||
switch (ocarinaNote) {
|
||||
case OCARINA_NOTE_D4:
|
||||
case OCARINA_BTN_A:
|
||||
this->unk_19A++;
|
||||
if (this->unk_1A4 == 0) {
|
||||
this->unk_1A4 = 1;
|
||||
Audio_PlayActorSound2(&this->actor, NA_SE_EV_KAKASHI_ROLL);
|
||||
}
|
||||
break;
|
||||
case OCARINA_NOTE_F4:
|
||||
case OCARINA_BTN_C_DOWN:
|
||||
this->unk_19A++;
|
||||
this->unk_1B8 = 1.0f;
|
||||
break;
|
||||
case OCARINA_NOTE_A4:
|
||||
case OCARINA_BTN_C_RIGHT:
|
||||
this->unk_19A++;
|
||||
if (this->unk_1AE == 0x0) {
|
||||
this->unk_1AE = 0x1388;
|
||||
}
|
||||
break;
|
||||
case OCARINA_NOTE_B4:
|
||||
case OCARINA_BTN_C_LEFT:
|
||||
this->unk_19A++;
|
||||
if (this->unk_1AA == 0x0) {
|
||||
this->unk_1AA = 0x1388;
|
||||
}
|
||||
break;
|
||||
case OCARINA_NOTE_D5:
|
||||
case OCARINA_BTN_C_UP:
|
||||
this->unk_19A++;
|
||||
this->unk_1B8 = 2.0f;
|
||||
break;
|
||||
|
||||
@@ -1503,8 +1503,8 @@ void EnSkj_WaitForPlayback(EnSkj* this, PlayState* play) {
|
||||
SKULL_KID_OCARINA_PLAY_NOTES;
|
||||
}
|
||||
this->songFailTimer = 160;
|
||||
AudioOcarina_SetInstrument(6); // related instrument sound (flute?)
|
||||
Audio_OcaSetSongPlayback(OCARINA_SONG_MEMORY_GAME + 1, 1);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_FLUTE);
|
||||
AudioOcarina_SetPlaybackSong(OCARINA_SONG_MEMORY_GAME + 1, 1);
|
||||
play->msgCtx.msgMode = MSGMODE_MEMORY_GAME_LEFT_SKULLKID_PLAYING;
|
||||
play->msgCtx.stateTimer = 2;
|
||||
}
|
||||
|
||||
@@ -1607,7 +1607,7 @@ void EnZl2_Init(Actor* thisx, PlayState* play) {
|
||||
|
||||
switch (thisx->params) {
|
||||
case 1:
|
||||
Audio_SetSoundBanksMute(0x6F);
|
||||
Audio_SetSfxBanksMute(0x6F);
|
||||
break;
|
||||
case 4:
|
||||
gSaveContext.subTimerState = SUBTIMER_STATE_OFF;
|
||||
|
||||
@@ -205,9 +205,9 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
||||
}
|
||||
|
||||
D_8082A11C = 0;
|
||||
AudioOcarina_SetInstrument(1);
|
||||
func_800ECC04((1 << pauseCtx->ocarinaSongIdx) + 0x8000);
|
||||
pauseCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
AudioOcarina_Start((1 << pauseCtx->ocarinaSongIdx) + 0x8000);
|
||||
pauseCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||
pauseCtx->ocarinaStaff->pos = 0;
|
||||
pauseCtx->ocarinaStaff->state = 0xFF;
|
||||
VREG(21) = -62;
|
||||
@@ -216,13 +216,13 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
||||
VREG(24) = -46;
|
||||
VREG(25) = -41;
|
||||
pauseCtx->unk_1E4 = 8;
|
||||
AudioOcarina_SetInstrument(0);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
}
|
||||
}
|
||||
} else if (pauseCtx->unk_1E4 == 5) {
|
||||
if ((pauseCtx->stickRelX != 0) || (pauseCtx->stickRelY != 0)) {
|
||||
pauseCtx->unk_1E4 = 0;
|
||||
AudioOcarina_SetInstrument(0);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
}
|
||||
} else if (pauseCtx->unk_1E4 == 8) {
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_A) && (sp216 >= QUEST_SONG_MINUET) &&
|
||||
@@ -292,12 +292,12 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
||||
VREG(24) = -46;
|
||||
VREG(25) = -41;
|
||||
sp216 = pauseCtx->cursorSlot[PAUSE_QUEST];
|
||||
AudioOcarina_SetInstrument(1);
|
||||
AudioOcarina_SetInstrument(1);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
pauseCtx->ocarinaSongIdx = gOcarinaSongItemMap[sp216 - QUEST_SONG_MINUET];
|
||||
Audio_OcaSetSongPlayback(pauseCtx->ocarinaSongIdx + 1, 1);
|
||||
AudioOcarina_SetPlaybackSong(pauseCtx->ocarinaSongIdx + 1, 1);
|
||||
pauseCtx->unk_1E4 = 2;
|
||||
pauseCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
pauseCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||
pauseCtx->ocarinaStaff->pos = 0;
|
||||
sp216 = pauseCtx->cursorSlot[PAUSE_QUEST];
|
||||
KaleidoScope_SetCursorVtx(pauseCtx, sp216 * 4, pauseCtx->questVtx);
|
||||
@@ -533,12 +533,15 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
||||
}
|
||||
|
||||
if (pauseCtx->unk_1E4 == 2) {
|
||||
pauseCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
// Draw ocarina buttons as the song playback progresses
|
||||
// QUEST_QUAD_SONG_NOTE_A1 to QUEST_QUAD_SONG_NOTE_A8
|
||||
|
||||
pauseCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||
|
||||
if (pauseCtx->ocarinaStaff->pos != 0) {
|
||||
if (D_8082A11C + 1 == pauseCtx->ocarinaStaff->pos) {
|
||||
D_8082A11C++;
|
||||
D_8082A124[pauseCtx->ocarinaStaff->pos - 1] = pauseCtx->ocarinaStaff->noteIdx;
|
||||
D_8082A124[pauseCtx->ocarinaStaff->pos - 1] = pauseCtx->ocarinaStaff->buttonIndex;
|
||||
}
|
||||
|
||||
for (sp218 = 0, phi_s3 = 0; sp218 < 8; sp218++, phi_s3 += 4, sp21A += 4) {
|
||||
@@ -566,16 +569,16 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, aButtonColor.r, aButtonColor.g, aButtonColor.b,
|
||||
Notes_alpha);
|
||||
} else {
|
||||
if (D_8082A124[sp218] == OCARINA_NOTE_D5) {
|
||||
if (D_8082A124[sp218] == OCARINA_BTN_C_UP) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, cUpButtonColor.r, cUpButtonColor.g, cUpButtonColor.b,
|
||||
Notes_alpha);
|
||||
} else if (D_8082A124[sp218] == OCARINA_NOTE_B4) {
|
||||
} else if (D_8082A124[sp218] == OCARINA_BTN_C_LEFT) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, cLeftButtonColor.r, cLeftButtonColor.g,
|
||||
cLeftButtonColor.b, Notes_alpha);
|
||||
} else if (D_8082A124[sp218] == OCARINA_NOTE_A4) {
|
||||
} else if (D_8082A124[sp218] == OCARINA_BTN_C_RIGHT) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, cRightButtonColor.r, cRightButtonColor.g,
|
||||
cRightButtonColor.b, Notes_alpha);
|
||||
} else if (D_8082A124[sp218] == OCARINA_NOTE_F4) {
|
||||
} else if (D_8082A124[sp218] == OCARINA_BTN_C_DOWN) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, cDownButtonColor.r, cDownButtonColor.g,
|
||||
cDownButtonColor.b, Notes_alpha);
|
||||
} else {
|
||||
@@ -595,12 +598,14 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
||||
}
|
||||
}
|
||||
} else if (((pauseCtx->unk_1E4 >= 4) && (pauseCtx->unk_1E4 <= 6)) || (pauseCtx->unk_1E4 == 8)) {
|
||||
// Draw the buttons for playing a song
|
||||
// QUEST_QUAD_SONG_NOTE_A1 to QUEST_QUAD_SONG_NOTE_A8
|
||||
sp224 = pauseCtx->ocarinaSongIdx;
|
||||
sp226 = gOcarinaSongNotes[sp224].len;
|
||||
sp226 = gOcarinaSongButtons[sp224].numButtons;
|
||||
|
||||
for (sp218 = sp21A, phi_s3 = 0; phi_s3 < sp226; phi_s3++, sp21A += 4) {
|
||||
pauseCtx->questVtx[sp21A + 0].v.ob[1] = pauseCtx->questVtx[sp21A + 1].v.ob[1] =
|
||||
VREG(21 + gOcarinaSongNotes[sp224].notesIdx[phi_s3]);
|
||||
VREG(21 + gOcarinaSongButtons[sp224].buttonsIndex[phi_s3]);
|
||||
|
||||
pauseCtx->questVtx[sp21A + 2].v.ob[1] = pauseCtx->questVtx[sp21A + 3].v.ob[1] =
|
||||
pauseCtx->questVtx[sp21A + 0].v.ob[1] - 12;
|
||||
@@ -609,20 +614,20 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
||||
|
||||
if (pauseCtx->unk_1E4 == 8) {
|
||||
s16 Notes_alpha = 200;
|
||||
if (gOcarinaSongNotes[sp224].notesIdx[phi_s3] == 0) {
|
||||
if (gOcarinaSongButtons[sp224].buttonsIndex[phi_s3] == 0) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, aButtonColor.r, aButtonColor.g, aButtonColor.b,
|
||||
Notes_alpha);
|
||||
} else {
|
||||
if (gOcarinaSongNotes[sp224].notesIdx[phi_s3] == OCARINA_NOTE_D5) {
|
||||
if (gOcarinaSongButtons[sp224].buttonsIndex[phi_s3] == OCARINA_BTN_C_UP) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, cUpButtonColor.r, cUpButtonColor.g, cUpButtonColor.b,
|
||||
Notes_alpha);
|
||||
} else if (gOcarinaSongNotes[sp224].notesIdx[phi_s3] == OCARINA_NOTE_B4) {
|
||||
} else if (gOcarinaSongButtons[sp224].buttonsIndex[phi_s3] == OCARINA_BTN_C_LEFT) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, cLeftButtonColor.r, cLeftButtonColor.g,
|
||||
cLeftButtonColor.b, Notes_alpha);
|
||||
} else if (gOcarinaSongNotes[sp224].notesIdx[phi_s3] == OCARINA_NOTE_A4) {
|
||||
} else if (gOcarinaSongButtons[sp224].buttonsIndex[phi_s3] == OCARINA_BTN_C_RIGHT) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, cRightButtonColor.r, cRightButtonColor.g,
|
||||
cRightButtonColor.b, Notes_alpha);
|
||||
} else if (gOcarinaSongNotes[sp224].notesIdx[phi_s3] == OCARINA_NOTE_F4) {
|
||||
} else if (gOcarinaSongButtons[sp224].buttonsIndex[phi_s3] == OCARINA_BTN_C_DOWN) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, cDownButtonColor.r, cDownButtonColor.g,
|
||||
cDownButtonColor.b, Notes_alpha);
|
||||
} else {
|
||||
@@ -638,21 +643,21 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
||||
|
||||
gSPVertex(POLY_OPA_DISP++, &pauseCtx->questVtx[sp21A], 4, 0);
|
||||
|
||||
gDPLoadTextureBlock(POLY_OPA_DISP++, D_8082A130[gOcarinaSongNotes[sp224].notesIdx[phi_s3]], G_IM_FMT_IA,
|
||||
G_IM_SIZ_8b, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
gDPLoadTextureBlock(POLY_OPA_DISP++, D_8082A130[gOcarinaSongButtons[sp224].buttonsIndex[phi_s3]],
|
||||
G_IM_FMT_IA, G_IM_SIZ_8b, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
|
||||
gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0);
|
||||
}
|
||||
|
||||
if (pauseCtx->unk_1E4 != 8) {
|
||||
pauseCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
pauseCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff();
|
||||
|
||||
if (pauseCtx->ocarinaStaff->pos != 0) {
|
||||
if (D_8082A11C == (pauseCtx->ocarinaStaff->pos - 1)) {
|
||||
if ((pauseCtx->ocarinaStaff->noteIdx >= OCARINA_NOTE_D4) &&
|
||||
(pauseCtx->ocarinaStaff->noteIdx <= OCARINA_NOTE_D5)) {
|
||||
D_8082A124[pauseCtx->ocarinaStaff->pos - 1] = pauseCtx->ocarinaStaff->noteIdx;
|
||||
if ((pauseCtx->ocarinaStaff->buttonIndex >= OCARINA_BTN_A) &&
|
||||
(pauseCtx->ocarinaStaff->buttonIndex <= OCARINA_BTN_C_UP)) {
|
||||
D_8082A124[pauseCtx->ocarinaStaff->pos - 1] = pauseCtx->ocarinaStaff->buttonIndex;
|
||||
D_8082A124[pauseCtx->ocarinaStaff->pos] = 0xFF;
|
||||
D_8082A11C++;
|
||||
}
|
||||
@@ -685,16 +690,16 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, aButtonColor.r, aButtonColor.g, aButtonColor.b,
|
||||
Notes_alpha);
|
||||
} else {
|
||||
if (gOcarinaSongNotes[sp224].notesIdx[phi_s3] == OCARINA_NOTE_D5) {
|
||||
if (gOcarinaSongButtons[sp224].buttonsIndex[phi_s3] == OCARINA_BTN_C_UP) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, cUpButtonColor.r, cUpButtonColor.g, cUpButtonColor.b,
|
||||
Notes_alpha);
|
||||
} else if (gOcarinaSongNotes[sp224].notesIdx[phi_s3] == OCARINA_NOTE_B4) {
|
||||
} else if (gOcarinaSongButtons[sp224].buttonsIndex[phi_s3] == OCARINA_BTN_C_LEFT) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, cLeftButtonColor.r, cLeftButtonColor.g,
|
||||
cLeftButtonColor.b, Notes_alpha);
|
||||
} else if (gOcarinaSongNotes[sp224].notesIdx[phi_s3] == OCARINA_NOTE_A4) {
|
||||
} else if (gOcarinaSongButtons[sp224].buttonsIndex[phi_s3] == OCARINA_BTN_C_RIGHT) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, cRightButtonColor.r, cRightButtonColor.g,
|
||||
cRightButtonColor.b, Notes_alpha);
|
||||
} else if (gOcarinaSongNotes[sp224].notesIdx[phi_s3] == OCARINA_NOTE_F4) {
|
||||
} else if (gOcarinaSongButtons[sp224].buttonsIndex[phi_s3] == OCARINA_BTN_C_DOWN) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, cDownButtonColor.r, cDownButtonColor.g,
|
||||
cDownButtonColor.b, Notes_alpha);
|
||||
} else {
|
||||
@@ -721,9 +726,9 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
|
||||
}
|
||||
|
||||
D_8082A11C = 0;
|
||||
AudioOcarina_SetInstrument(1);
|
||||
func_800ECC04((1 << pauseCtx->ocarinaSongIdx) + 0x8000);
|
||||
pauseCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT);
|
||||
AudioOcarina_Start((1 << pauseCtx->ocarinaSongIdx) + 0x8000);
|
||||
pauseCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||
pauseCtx->ocarinaStaff->pos = 0;
|
||||
pauseCtx->ocarinaStaff->state = 0xFE;
|
||||
pauseCtx->unk_1E4 = 5;
|
||||
|
||||
@@ -4291,10 +4291,10 @@ void KaleidoScope_Update(PlayState* play) {
|
||||
break;
|
||||
|
||||
case 2:
|
||||
pauseCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
pauseCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff();
|
||||
if (pauseCtx->ocarinaStaff->state == 0) {
|
||||
pauseCtx->unk_1E4 = 4;
|
||||
AudioOcarina_SetInstrument(0);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -4306,10 +4306,10 @@ void KaleidoScope_Update(PlayState* play) {
|
||||
break;
|
||||
|
||||
case 5:
|
||||
pauseCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
pauseCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff();
|
||||
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_START)) {
|
||||
AudioOcarina_SetInstrument(0);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
Interface_SetDoAction(play, DO_ACTION_NONE);
|
||||
pauseCtx->state = 0x12;
|
||||
WREG(2) = -6240;
|
||||
@@ -4317,7 +4317,7 @@ void KaleidoScope_Update(PlayState* play) {
|
||||
pauseCtx->unk_1E4 = 0;
|
||||
break;
|
||||
} else if (CHECK_BTN_ALL(input->press.button, BTN_B)) {
|
||||
AudioOcarina_SetInstrument(0);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
pauseCtx->unk_1E4 = 0;
|
||||
pauseCtx->mode = 0;
|
||||
pauseCtx->promptChoice = 0;
|
||||
@@ -4352,7 +4352,7 @@ void KaleidoScope_Update(PlayState* play) {
|
||||
if (D_8082B25C == 0) {
|
||||
pauseCtx->unk_1E4 = D_8082B258;
|
||||
if (pauseCtx->unk_1E4 == 0) {
|
||||
AudioOcarina_SetInstrument(0);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -4362,14 +4362,14 @@ void KaleidoScope_Update(PlayState* play) {
|
||||
|
||||
case 8:
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_START)) {
|
||||
AudioOcarina_SetInstrument(0);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
Interface_SetDoAction(play, DO_ACTION_NONE);
|
||||
pauseCtx->state = 0x12;
|
||||
WREG(2) = -6240;
|
||||
func_800F64E0(0);
|
||||
pauseCtx->unk_1E4 = 0;
|
||||
} else if (CHECK_BTN_ALL(input->press.button, BTN_B)) {
|
||||
AudioOcarina_SetInstrument(0);
|
||||
AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF);
|
||||
pauseCtx->unk_1E4 = 0;
|
||||
pauseCtx->mode = 0;
|
||||
pauseCtx->promptChoice = 0;
|
||||
|
||||
Reference in New Issue
Block a user