mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-08-13 12:38:55 -04:00
Add save state wiring for Barinade, Bongo Bongo, & Morpha (#6914)
Rename various variables across codebase to match decomp, many had been renamed when exposed for previous save state mechanism
This commit is contained in:
+279
-270
@@ -849,24 +849,24 @@ s32 sOcarinaB4BtnMap = BTN_CLEFT;
|
||||
s32 sOcarinaA4BtnMap = BTN_CRIGHT;
|
||||
s32 sOcarinaF4BtnMap = BTN_CDOWN;
|
||||
s32 sOcarinaD4BtnMap = BTN_A;
|
||||
static u8 sOcarinaInpEnabled = 0;
|
||||
static s8 D_80130F10 = 0; // "OCA", ocarina active?
|
||||
static u8 sCurOcarinaBtnVal = 0xFF;
|
||||
static u8 sPrevOcarinaNoteVal = 0;
|
||||
static u8 sCurOcarinaBtnIdx = 0; // note index?
|
||||
static u8 sLearnSongLastBtn = 0;
|
||||
static f32 D_80130F24 = 1.0f;
|
||||
f32 D_80130F28 = 87.0f / 127.0f;
|
||||
static s8 D_80130F2C = 0; // pitch?
|
||||
static s8 D_80130F30 = 0x57;
|
||||
static s8 D_80130F34 = 0;
|
||||
static u8 sIsOcarinaInputEnabled = 0;
|
||||
static s8 sOcarinaInstrumentId = 0; // "OCA", ocarina active?
|
||||
static u8 sCurOcarinaPitch = 0xFF;
|
||||
static u8 sPrevOcarinaPitch = 0;
|
||||
static u8 sCurOcarinaButtonIndex = 0; // note index?
|
||||
static u8 sMusicStaffPrevPitch = 0;
|
||||
static f32 sCurOcarinaBendFreq = 1.0f;
|
||||
f32 sRelativeOcarinaVolume = 87.0f / 127.0f;
|
||||
static s8 sCurOcarinaBendIndex = 0; // pitch?
|
||||
static s8 sCurOcarinaVolume = 0x57;
|
||||
static s8 sCurOcarinaVibrato = 0;
|
||||
static u8 sPlaybackState = 0; // 80130F38
|
||||
static u32 D_80130F3C = 0; // "SEQ"
|
||||
static u32 sNotePlaybackTimer = 0;
|
||||
static u32 sOcarinaFlags = 0; // "SEQ"
|
||||
static u32 sPlaybackNoteTimer = 0;
|
||||
static u16 sPlaybackNotePos = 0;
|
||||
static u16 sStaffPlaybackPos = 0;
|
||||
static u16 sPlaybackStaffPos = 0;
|
||||
u16 D_80130F4C = 0;
|
||||
static u8 sDisplayedNoteValue = 0xFF; // Note to display on screen?
|
||||
static u8 sPlaybackPitch = 0xFF; // Note to display on screen?
|
||||
u8 sNotePlaybackVolume = 0;
|
||||
u8 sNotePlaybackVibrato = 0;
|
||||
s8 sNotePlaybackTone = 0;
|
||||
@@ -1232,63 +1232,63 @@ typedef struct {
|
||||
s8 y;
|
||||
} OcarinaStick;
|
||||
OcarinaStick sCurOcaStick;
|
||||
static u32 sCurOcarinaBtnPress;
|
||||
static u32 D_8016BA10;
|
||||
static u32 sPrevOcarinaBtnPress;
|
||||
static s32 D_8016BA18;
|
||||
static u32 sOcarinaInputButtonCur;
|
||||
static u32 sOcarinaInputButtonStart;
|
||||
static u32 sOcarinaInputButtonPrev;
|
||||
static s32 sOcarinaInputButtonPress;
|
||||
static s32 D_8016BA1C;
|
||||
static u8 sCurOcarinaSong[8];
|
||||
static u8 sOcarinaSongAppendPos;
|
||||
static u8 sCurOcarinaSongWithoutMusicStaff[8];
|
||||
static u8 sOcarinaWithoutMusicStaffPos;
|
||||
static u8 sOcarinaHasStartedSong;
|
||||
static u8 sOcarinaSongNoteStartIdx;
|
||||
static u8 sOcarinaSongCnt;
|
||||
static u16 sOcarinaAvailSongs;
|
||||
static u8 sStaffPlayingPos;
|
||||
static u16 sLearnSongPos[0x10];
|
||||
static u16 D_8016BA50[0x10];
|
||||
static u16 D_8016BA70[0x10];
|
||||
static u8 sLearnSongExpectedNote[0x10];
|
||||
static OcarinaNote D_8016BAA0;
|
||||
static u8 sAudioHasMalonBgm;
|
||||
static f32 sAudioMalonBgmDist;
|
||||
static u8 sFirstOcarinaSongIndex;
|
||||
static u8 sLastOcarinaSongIndex;
|
||||
static u16 sAvailOcarinaSongFlags;
|
||||
static u8 sStaffOcarinaPlayingPos;
|
||||
static u16 sMusicStaffPos[0x10];
|
||||
static u16 sMusicStaffCurHeldLength[0x10];
|
||||
static u16 sMusicStaffExpectedLength[0x10];
|
||||
static u8 sMusicStaffExpectedPitch[0x10];
|
||||
static OcarinaNote sScarecrowsLongSongSecondNote;
|
||||
static u8 sIsMalonSinging;
|
||||
static f32 sMalonSingingDist;
|
||||
|
||||
#define AUDIO_OCA_SHIP_SAVESTATE_FIELDS(F) \
|
||||
F(sOcarinaInpEnabled) \
|
||||
F(D_80130F10) \
|
||||
F(sCurOcarinaBtnVal) \
|
||||
F(sPrevOcarinaNoteVal) \
|
||||
F(sCurOcarinaBtnIdx) \
|
||||
F(sLearnSongLastBtn) \
|
||||
F(D_80130F24) \
|
||||
F(D_80130F28) \
|
||||
F(D_80130F2C) \
|
||||
F(D_80130F30) \
|
||||
F(D_80130F34) \
|
||||
F(sIsOcarinaInputEnabled) \
|
||||
F(sOcarinaInstrumentId) \
|
||||
F(sCurOcarinaPitch) \
|
||||
F(sPrevOcarinaPitch) \
|
||||
F(sCurOcarinaButtonIndex) \
|
||||
F(sMusicStaffPrevPitch) \
|
||||
F(sCurOcarinaBendFreq) \
|
||||
F(sRelativeOcarinaVolume) \
|
||||
F(sCurOcarinaBendIndex) \
|
||||
F(sCurOcarinaVolume) \
|
||||
F(sCurOcarinaVibrato) \
|
||||
F(sPlaybackState) \
|
||||
F(D_80130F3C) \
|
||||
F(sNotePlaybackTimer) \
|
||||
F(sOcarinaFlags) \
|
||||
F(sPlaybackNoteTimer) \
|
||||
F(sPlaybackNotePos) \
|
||||
F(sStaffPlaybackPos) \
|
||||
F(sCurOcarinaBtnPress) \
|
||||
F(D_8016BA10) \
|
||||
F(sPrevOcarinaBtnPress) \
|
||||
F(D_8016BA18) \
|
||||
F(sPlaybackStaffPos) \
|
||||
F(sOcarinaInputButtonCur) \
|
||||
F(sOcarinaInputButtonStart) \
|
||||
F(sOcarinaInputButtonPrev) \
|
||||
F(sOcarinaInputButtonPress) \
|
||||
F(D_8016BA1C) \
|
||||
F(sCurOcarinaSong) \
|
||||
F(sOcarinaSongAppendPos) \
|
||||
F(sCurOcarinaSongWithoutMusicStaff) \
|
||||
F(sOcarinaWithoutMusicStaffPos) \
|
||||
F(sOcarinaHasStartedSong) \
|
||||
F(sOcarinaSongNoteStartIdx) \
|
||||
F(sOcarinaSongCnt) \
|
||||
F(sOcarinaAvailSongs) \
|
||||
F(sStaffPlayingPos) \
|
||||
F(sLearnSongPos) \
|
||||
F(D_8016BA50) \
|
||||
F(D_8016BA70) \
|
||||
F(sLearnSongExpectedNote) \
|
||||
F(D_8016BAA0) \
|
||||
F(sAudioHasMalonBgm) \
|
||||
F(sAudioMalonBgmDist) \
|
||||
F(sDisplayedNoteValue)
|
||||
F(sFirstOcarinaSongIndex) \
|
||||
F(sLastOcarinaSongIndex) \
|
||||
F(sAvailOcarinaSongFlags) \
|
||||
F(sStaffOcarinaPlayingPos) \
|
||||
F(sMusicStaffPos) \
|
||||
F(sMusicStaffCurHeldLength) \
|
||||
F(sMusicStaffExpectedLength) \
|
||||
F(sMusicStaffExpectedPitch) \
|
||||
F(sScarecrowsLongSongSecondNote) \
|
||||
F(sIsMalonSinging) \
|
||||
F(sMalonSingingDist) \
|
||||
F(sPlaybackPitch)
|
||||
SHIP_SAVESTATE_DEFINE(AudioOca, AUDIO_OCA_SHIP_SAVESTATE_FIELDS)
|
||||
|
||||
// Start debug bss
|
||||
@@ -1343,26 +1343,26 @@ void Audio_GetOcaInput(void) {
|
||||
Input* input = &inputs[0];
|
||||
u32 sp18;
|
||||
|
||||
sp18 = sCurOcarinaBtnPress;
|
||||
sp18 = sOcarinaInputButtonCur;
|
||||
PadMgr_RequestPadData(&gPadMgr, inputs, 0);
|
||||
sCurOcarinaBtnPress = input->cur.button;
|
||||
sPrevOcarinaBtnPress = sp18;
|
||||
sOcarinaInputButtonCur = input->cur.button;
|
||||
sOcarinaInputButtonPrev = sp18;
|
||||
sCurOcaStick.x = input->rel.stick_x;
|
||||
sCurOcaStick.y = input->rel.stick_y;
|
||||
s8 rstick_x = input->cur.right_stick_x;
|
||||
s8 rstick_y = input->cur.right_stick_y;
|
||||
const s8 sensitivity = 64;
|
||||
if (rstick_x > sensitivity) {
|
||||
sCurOcarinaBtnPress |= BTN_CUSTOM_RSTICK_RIGHT;
|
||||
sOcarinaInputButtonCur |= BTN_CUSTOM_RSTICK_RIGHT;
|
||||
}
|
||||
if (rstick_x < -sensitivity) {
|
||||
sCurOcarinaBtnPress |= BTN_CUSTOM_RSTICK_LEFT;
|
||||
sOcarinaInputButtonCur |= BTN_CUSTOM_RSTICK_LEFT;
|
||||
}
|
||||
if (rstick_y > sensitivity) {
|
||||
sCurOcarinaBtnPress |= BTN_CUSTOM_RSTICK_UP;
|
||||
sOcarinaInputButtonCur |= BTN_CUSTOM_RSTICK_UP;
|
||||
}
|
||||
if (rstick_y < -sensitivity) {
|
||||
sCurOcarinaBtnPress |= BTN_CUSTOM_RSTICK_DOWN;
|
||||
sOcarinaInputButtonCur |= BTN_CUSTOM_RSTICK_DOWN;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1389,7 +1389,7 @@ u8 Audio_OcaGetPlayingState(void) {
|
||||
if (D_80131878 != 0) {
|
||||
ret = D_80131878 - 1;
|
||||
D_80131878 = 0;
|
||||
} else if (D_80130F3C != 0) {
|
||||
} else if (sOcarinaFlags != 0) {
|
||||
ret = 0xFE;
|
||||
} else {
|
||||
ret = 0xFF;
|
||||
@@ -1443,25 +1443,25 @@ void func_800ECC04(u16 flg) {
|
||||
}
|
||||
|
||||
if (flg != 0xFFFF) {
|
||||
D_80130F3C = 0x80000000 + (u32)flg;
|
||||
sOcarinaSongNoteStartIdx = 0;
|
||||
sOcarinaSongCnt = 0xE;
|
||||
sOcarinaFlags = 0x80000000 + (u32)flg;
|
||||
sFirstOcarinaSongIndex = 0;
|
||||
sLastOcarinaSongIndex = 0xE;
|
||||
if (flg != 0xA000) {
|
||||
sOcarinaSongCnt--;
|
||||
sLastOcarinaSongIndex--;
|
||||
}
|
||||
sOcarinaAvailSongs = flg & 0x3FFF;
|
||||
sAvailOcarinaSongFlags = flg & 0x3FFF;
|
||||
D_8013187C = 8;
|
||||
sOcarinaHasStartedSong = 0;
|
||||
D_80131878 = 0;
|
||||
sStaffPlayingPos = 0;
|
||||
sStaffOcarinaPlayingPos = 0;
|
||||
sPlayingStaff.state = Audio_OcaGetPlayingState();
|
||||
sOcarinaInpEnabled = 1;
|
||||
sIsOcarinaInputEnabled = 1;
|
||||
D_80130F4C = 0;
|
||||
for (i = 0; i < 0xE; i++) {
|
||||
sLearnSongPos[i] = 0;
|
||||
D_8016BA50[i] = 0;
|
||||
D_8016BA70[i] = 0;
|
||||
sLearnSongExpectedNote[i] = 0;
|
||||
sMusicStaffPos[i] = 0;
|
||||
sMusicStaffCurHeldLength[i] = 0;
|
||||
sMusicStaffExpectedLength[i] = 0;
|
||||
sMusicStaffExpectedPitch[i] = 0;
|
||||
}
|
||||
|
||||
if (flg & 0x8000) {
|
||||
@@ -1469,22 +1469,22 @@ void func_800ECC04(u16 flg) {
|
||||
}
|
||||
|
||||
if (flg & 0x4000) {
|
||||
sOcarinaSongAppendPos = 0;
|
||||
sOcarinaWithoutMusicStaffPos = 0;
|
||||
}
|
||||
|
||||
if (flg & 0xD000) {
|
||||
func_800ECB7C(OCARINA_SONG_SCARECROW);
|
||||
}
|
||||
} else {
|
||||
D_80130F3C = 0;
|
||||
sOcarinaInpEnabled = 0;
|
||||
sOcarinaFlags = 0;
|
||||
sIsOcarinaInputEnabled = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void func_800ECDBC(void) {
|
||||
if (sCurOcarinaBtnVal != 0xFF && sOcarinaHasStartedSong == 0) {
|
||||
if (sCurOcarinaPitch != 0xFF && sOcarinaHasStartedSong == 0) {
|
||||
sOcarinaHasStartedSong = 1;
|
||||
sLearnSongLastBtn = 0xFF;
|
||||
sMusicStaffPrevPitch = 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1501,76 +1501,77 @@ void func_800ECDF8(void) {
|
||||
func_800ECDBC();
|
||||
|
||||
if (sOcarinaHasStartedSong) {
|
||||
if ((D_80130F2C < 0 ? -D_80130F2C : D_80130F2C) >= 0x15) {
|
||||
D_80130F3C = 0;
|
||||
if ((sCurOcarinaBendIndex < 0 ? -sCurOcarinaBendIndex : sCurOcarinaBendIndex) >= 0x15) {
|
||||
sOcarinaFlags = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
if (sPrevOcarinaNoteVal == sCurOcarinaBtnVal || sCurOcarinaBtnVal == 0xFF) { inputChanged = 1; }
|
||||
if (sPrevOcarinaPitch == sCurOcarinaPitch || sCurOcarinaPitch == 0xFF) { inputChanged = 1; }
|
||||
// clang-format on
|
||||
|
||||
for (i = sOcarinaSongNoteStartIdx; i < sOcarinaSongCnt; i++) {
|
||||
for (i = sFirstOcarinaSongIndex; i < sLastOcarinaSongIndex; i++) {
|
||||
sh = 1 << i;
|
||||
if (sOcarinaAvailSongs & sh) {
|
||||
D_8016BA50[i] = D_8016BA70[i] + 0x12;
|
||||
if (sAvailOcarinaSongFlags & sh) {
|
||||
sMusicStaffCurHeldLength[i] = sMusicStaffExpectedLength[i] + 0x12;
|
||||
if (inputChanged) {
|
||||
// (pointless if check, this is always true)
|
||||
if ((D_8016BA50[i] >= D_8016BA70[i] - 0x12) && (D_8016BA50[i] >= D_8016BA70[i] + 0x12) &&
|
||||
(sOcarinaSongs[i][sLearnSongPos[i]].unk_02 == 0) &&
|
||||
(sLearnSongLastBtn == sLearnSongExpectedNote[i])) {
|
||||
if ((sMusicStaffCurHeldLength[i] >= sMusicStaffExpectedLength[i] - 0x12) &&
|
||||
(sMusicStaffCurHeldLength[i] >= sMusicStaffExpectedLength[i] + 0x12) &&
|
||||
(sOcarinaSongs[i][sMusicStaffPos[i]].unk_02 == 0) &&
|
||||
(sMusicStaffPrevPitch == sMusicStaffExpectedPitch[i])) {
|
||||
D_80131878 = i + 1;
|
||||
sOcarinaInpEnabled = 0;
|
||||
D_80130F3C = 0;
|
||||
sIsOcarinaInputEnabled = 0;
|
||||
sOcarinaFlags = 0;
|
||||
}
|
||||
} else if (D_8016BA50[i] >= (D_8016BA70[i] - 0x12)) {
|
||||
if (sLearnSongLastBtn != 0xFF) {
|
||||
if (sLearnSongLastBtn == sLearnSongExpectedNote[i]) {
|
||||
} else if (sMusicStaffCurHeldLength[i] >= (sMusicStaffExpectedLength[i] - 0x12)) {
|
||||
if (sMusicStaffPrevPitch != 0xFF) {
|
||||
if (sMusicStaffPrevPitch == sMusicStaffExpectedPitch[i]) {
|
||||
if (i == 12) {
|
||||
D_8016BA50[i] = 0;
|
||||
sMusicStaffCurHeldLength[i] = 0;
|
||||
}
|
||||
} else {
|
||||
sOcarinaAvailSongs ^= sh;
|
||||
sAvailOcarinaSongFlags ^= sh;
|
||||
}
|
||||
}
|
||||
|
||||
prevNote = &sOcarinaSongs[i][sLearnSongPos[i]];
|
||||
note = &sOcarinaSongs[i][++sLearnSongPos[i]];
|
||||
D_8016BA70[i] = prevNote->unk_02;
|
||||
sLearnSongExpectedNote[i] = prevNote->noteIdx;
|
||||
prevNote = &sOcarinaSongs[i][sMusicStaffPos[i]];
|
||||
note = &sOcarinaSongs[i][++sMusicStaffPos[i]];
|
||||
sMusicStaffExpectedLength[i] = prevNote->unk_02;
|
||||
sMusicStaffExpectedPitch[i] = prevNote->noteIdx;
|
||||
|
||||
if (sCurOcarinaBtnVal != sLearnSongExpectedNote[i]) {
|
||||
sOcarinaAvailSongs ^= sh;
|
||||
if (sCurOcarinaPitch != sMusicStaffExpectedPitch[i]) {
|
||||
sAvailOcarinaSongFlags ^= sh;
|
||||
}
|
||||
while (prevNote->noteIdx == note->noteIdx ||
|
||||
(note->noteIdx == OCARINA_NOTE_INVALID && note->unk_02 != 0)) {
|
||||
D_8016BA70[i] += note->unk_02;
|
||||
prevNote = &sOcarinaSongs[i][sLearnSongPos[i]];
|
||||
note = &sOcarinaSongs[i][sLearnSongPos[i] + 1];
|
||||
sLearnSongPos[i]++;
|
||||
sMusicStaffExpectedLength[i] += note->unk_02;
|
||||
prevNote = &sOcarinaSongs[i][sMusicStaffPos[i]];
|
||||
note = &sOcarinaSongs[i][sMusicStaffPos[i] + 1];
|
||||
sMusicStaffPos[i]++;
|
||||
}
|
||||
} else if (D_8016BA50[i] < 0xA) {
|
||||
} else if (sMusicStaffCurHeldLength[i] < 0xA) {
|
||||
sp57 = -1;
|
||||
D_8016BA50[i] = 0;
|
||||
sLearnSongLastBtn = sCurOcarinaBtnVal;
|
||||
sMusicStaffCurHeldLength[i] = 0;
|
||||
sMusicStaffPrevPitch = sCurOcarinaPitch;
|
||||
} else {
|
||||
sOcarinaAvailSongs ^= sh;
|
||||
sAvailOcarinaSongFlags ^= sh;
|
||||
}
|
||||
}
|
||||
|
||||
if (sOcarinaAvailSongs == 0 && sStaffPlayingPos >= D_8013187C) {
|
||||
sOcarinaInpEnabled = 0;
|
||||
if (CHECK_BTN_ANY(D_80130F3C, BTN_B) && sCurOcarinaBtnVal == sOcarinaSongs[i][0].noteIdx) {
|
||||
D_80130F4C = D_80130F3C;
|
||||
if (sAvailOcarinaSongFlags == 0 && sStaffOcarinaPlayingPos >= D_8013187C) {
|
||||
sIsOcarinaInputEnabled = 0;
|
||||
if (CHECK_BTN_ANY(sOcarinaFlags, BTN_B) && sCurOcarinaPitch == sOcarinaSongs[i][0].noteIdx) {
|
||||
D_80130F4C = sOcarinaFlags;
|
||||
}
|
||||
D_80130F3C = 0;
|
||||
sOcarinaFlags = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!inputChanged) {
|
||||
sLearnSongLastBtn = sCurOcarinaBtnVal;
|
||||
sStaffPlayingPos += sp57 + 1;
|
||||
sMusicStaffPrevPitch = sCurOcarinaPitch;
|
||||
sStaffOcarinaPlayingPos += sp57 + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1588,40 +1589,42 @@ void func_800ED200(void) {
|
||||
disableSongBtnMap = BTN_L;
|
||||
}
|
||||
|
||||
if (CHECK_BTN_ANY(sCurOcarinaBtnPress, disableSongBtnMap) &&
|
||||
CHECK_BTN_ANY(sCurOcarinaBtnPress, sOcarinaAllowedBtnMask)) {
|
||||
func_800ECC04((u16)D_80130F3C);
|
||||
if (CHECK_BTN_ANY(sOcarinaInputButtonCur, disableSongBtnMap) &&
|
||||
CHECK_BTN_ANY(sOcarinaInputButtonCur, sOcarinaAllowedBtnMask)) {
|
||||
func_800ECC04((u16)sOcarinaFlags);
|
||||
return;
|
||||
}
|
||||
|
||||
func_800ECDBC();
|
||||
|
||||
if (sOcarinaHasStartedSong) {
|
||||
if ((sPrevOcarinaNoteVal != sCurOcarinaBtnVal) && (sCurOcarinaBtnVal != 0xFF)) {
|
||||
sStaffPlayingPos++;
|
||||
if (sStaffPlayingPos >= 9) {
|
||||
sStaffPlayingPos = 1;
|
||||
if ((sPrevOcarinaPitch != sCurOcarinaPitch) && (sCurOcarinaPitch != 0xFF)) {
|
||||
sStaffOcarinaPlayingPos++;
|
||||
if (sStaffOcarinaPlayingPos >= 9) {
|
||||
sStaffOcarinaPlayingPos = 1;
|
||||
}
|
||||
|
||||
if (sOcarinaSongAppendPos == 8) {
|
||||
if (sOcarinaWithoutMusicStaffPos == 8) {
|
||||
for (i = 0; i < 7; i++) {
|
||||
sCurOcarinaSong[i] = sCurOcarinaSong[i + 1];
|
||||
sCurOcarinaSongWithoutMusicStaff[i] = sCurOcarinaSongWithoutMusicStaff[i + 1];
|
||||
}
|
||||
} else {
|
||||
sOcarinaSongAppendPos++;
|
||||
sOcarinaWithoutMusicStaffPos++;
|
||||
}
|
||||
|
||||
if ((D_80130F2C < 0 ? -D_80130F2C : D_80130F2C) >= 0x15) {
|
||||
sCurOcarinaSong[sOcarinaSongAppendPos - 1] = 0xFF;
|
||||
if ((sCurOcarinaBendIndex < 0 ? -sCurOcarinaBendIndex : sCurOcarinaBendIndex) >= 0x15) {
|
||||
sCurOcarinaSongWithoutMusicStaff[sOcarinaWithoutMusicStaffPos - 1] = 0xFF;
|
||||
} else {
|
||||
sCurOcarinaSong[sOcarinaSongAppendPos - 1] = sCurOcarinaBtnVal;
|
||||
sCurOcarinaSongWithoutMusicStaff[sOcarinaWithoutMusicStaffPos - 1] = sCurOcarinaPitch;
|
||||
}
|
||||
|
||||
for (i = sOcarinaSongNoteStartIdx; i < sOcarinaSongCnt; i++) {
|
||||
if (sOcarinaAvailSongs & (u16)(1 << i)) {
|
||||
for (j = 0, k = 0;
|
||||
j < gOcarinaSongNotes[i].len && k == 0 && sOcarinaSongAppendPos >= gOcarinaSongNotes[i].len;) {
|
||||
temp_v0 = sCurOcarinaSong[(sOcarinaSongAppendPos - gOcarinaSongNotes[i].len) + j];
|
||||
for (i = sFirstOcarinaSongIndex; i < sLastOcarinaSongIndex; i++) {
|
||||
if (sAvailOcarinaSongFlags & (u16)(1 << i)) {
|
||||
for (j = 0, k = 0; j < gOcarinaSongNotes[i].len && k == 0 &&
|
||||
sOcarinaWithoutMusicStaffPos >= gOcarinaSongNotes[i].len;) {
|
||||
temp_v0 =
|
||||
sCurOcarinaSongWithoutMusicStaff[(sOcarinaWithoutMusicStaffPos - gOcarinaSongNotes[i].len) +
|
||||
j];
|
||||
if (temp_v0 == sOcarinaNoteValues[gOcarinaSongNotes[i].notesIdx[j]]) {
|
||||
j++;
|
||||
} else {
|
||||
@@ -1631,8 +1634,8 @@ void func_800ED200(void) {
|
||||
|
||||
if (j == gOcarinaSongNotes[i].len) {
|
||||
D_80131878 = i + 1;
|
||||
sOcarinaInpEnabled = 0;
|
||||
D_80130F3C = 0;
|
||||
sIsOcarinaInputEnabled = 0;
|
||||
sOcarinaFlags = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1644,46 +1647,51 @@ void func_800ED458(s32 arg0) {
|
||||
u32 phi_v1_2;
|
||||
bool customControls = CVarGetInteger(CVAR_SETTING("CustomOcarina.Enabled"), 0);
|
||||
|
||||
if (D_80130F3C != 0 && sOcarinaDropInputTimer != 0) {
|
||||
if (sOcarinaFlags != 0 && sOcarinaDropInputTimer != 0) {
|
||||
sOcarinaDropInputTimer--;
|
||||
if (!CVarGetInteger(CVAR_ENHANCEMENT("DpadNoDropOcarinaInput"), 0)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if ((D_8016BA10 == 0) ||
|
||||
((D_8016BA10 & sOcarinaAllowedBtnMask) != (sCurOcarinaBtnPress & sOcarinaAllowedBtnMask))) {
|
||||
D_8016BA10 = 0;
|
||||
sCurOcarinaBtnVal = 0xFF;
|
||||
sCurOcarinaBtnIdx = 0xFF;
|
||||
phi_v1_2 = (sCurOcarinaBtnPress & sOcarinaAllowedBtnMask) & (sPrevOcarinaBtnPress & sOcarinaAllowedBtnMask);
|
||||
if (!(D_8016BA18 & phi_v1_2) && (sCurOcarinaBtnPress != 0)) {
|
||||
D_8016BA18 = sCurOcarinaBtnPress;
|
||||
if ((sOcarinaInputButtonStart == 0) ||
|
||||
((sOcarinaInputButtonStart & sOcarinaAllowedBtnMask) != (sOcarinaInputButtonCur & sOcarinaAllowedBtnMask))) {
|
||||
sOcarinaInputButtonStart = 0;
|
||||
sCurOcarinaPitch = 0xFF;
|
||||
sCurOcarinaButtonIndex = 0xFF;
|
||||
phi_v1_2 =
|
||||
(sOcarinaInputButtonCur & sOcarinaAllowedBtnMask) & (sOcarinaInputButtonPrev & sOcarinaAllowedBtnMask);
|
||||
if (!(sOcarinaInputButtonPress & phi_v1_2) && (sOcarinaInputButtonCur != 0)) {
|
||||
sOcarinaInputButtonPress = sOcarinaInputButtonCur;
|
||||
} else {
|
||||
D_8016BA18 &= phi_v1_2;
|
||||
sOcarinaInputButtonPress &= phi_v1_2;
|
||||
}
|
||||
|
||||
Audio_OcaUpdateBtnMap(customControls);
|
||||
if (D_8016BA18 & sOcarinaD4BtnMap && GameInteractor_Should(VB_HAVE_OCARINA_NOTE_D4, true)) {
|
||||
if (sOcarinaInputButtonPress & sOcarinaD4BtnMap && GameInteractor_Should(VB_HAVE_OCARINA_NOTE_D4, true)) {
|
||||
osSyncPrintf("Presss NA_KEY_D4 %08x\n", sOcarinaD4BtnMap);
|
||||
sCurOcarinaBtnVal = 2;
|
||||
sCurOcarinaBtnIdx = 0;
|
||||
} else if (D_8016BA18 & sOcarinaF4BtnMap && GameInteractor_Should(VB_HAVE_OCARINA_NOTE_F4, true)) {
|
||||
sCurOcarinaPitch = 2;
|
||||
sCurOcarinaButtonIndex = 0;
|
||||
} else if (sOcarinaInputButtonPress & sOcarinaF4BtnMap &&
|
||||
GameInteractor_Should(VB_HAVE_OCARINA_NOTE_F4, true)) {
|
||||
osSyncPrintf("Presss NA_KEY_F4 %08x\n", sOcarinaF4BtnMap);
|
||||
sCurOcarinaBtnVal = 5;
|
||||
sCurOcarinaBtnIdx = 1;
|
||||
} else if (D_8016BA18 & sOcarinaA4BtnMap && GameInteractor_Should(VB_HAVE_OCARINA_NOTE_A4, true)) {
|
||||
sCurOcarinaPitch = 5;
|
||||
sCurOcarinaButtonIndex = 1;
|
||||
} else if (sOcarinaInputButtonPress & sOcarinaA4BtnMap &&
|
||||
GameInteractor_Should(VB_HAVE_OCARINA_NOTE_A4, true)) {
|
||||
osSyncPrintf("Presss NA_KEY_A4 %08x\n", sOcarinaA4BtnMap);
|
||||
sCurOcarinaBtnVal = 9;
|
||||
sCurOcarinaBtnIdx = 2;
|
||||
} else if (D_8016BA18 & sOcarinaB4BtnMap && GameInteractor_Should(VB_HAVE_OCARINA_NOTE_B4, true)) {
|
||||
sCurOcarinaPitch = 9;
|
||||
sCurOcarinaButtonIndex = 2;
|
||||
} else if (sOcarinaInputButtonPress & sOcarinaB4BtnMap &&
|
||||
GameInteractor_Should(VB_HAVE_OCARINA_NOTE_B4, true)) {
|
||||
osSyncPrintf("Presss NA_KEY_B4 %08x\n", sOcarinaA4BtnMap);
|
||||
sCurOcarinaBtnVal = 0xB;
|
||||
sCurOcarinaBtnIdx = 3;
|
||||
} else if (D_8016BA18 & sOcarinaD5BtnMap && GameInteractor_Should(VB_HAVE_OCARINA_NOTE_D5, true)) {
|
||||
sCurOcarinaPitch = 0xB;
|
||||
sCurOcarinaButtonIndex = 3;
|
||||
} else if (sOcarinaInputButtonPress & sOcarinaD5BtnMap &&
|
||||
GameInteractor_Should(VB_HAVE_OCARINA_NOTE_D5, true)) {
|
||||
osSyncPrintf("Presss NA_KEY_D5 %08x\n", sOcarinaD5BtnMap);
|
||||
sCurOcarinaBtnVal = 0xE;
|
||||
sCurOcarinaBtnIdx = 4;
|
||||
sCurOcarinaPitch = 0xE;
|
||||
sCurOcarinaButtonIndex = 4;
|
||||
}
|
||||
|
||||
u32 noteSharpBtnMap;
|
||||
@@ -1692,9 +1700,9 @@ void func_800ED458(s32 arg0) {
|
||||
} else {
|
||||
noteSharpBtnMap = BTN_R;
|
||||
}
|
||||
if ((sCurOcarinaBtnVal != 0xFF) && (sCurOcarinaBtnPress & noteSharpBtnMap) && (sRecordingState != 2)) {
|
||||
sCurOcarinaBtnIdx += 0x80;
|
||||
sCurOcarinaBtnVal++;
|
||||
if ((sCurOcarinaPitch != 0xFF) && (sOcarinaInputButtonCur & noteSharpBtnMap) && (sRecordingState != 2)) {
|
||||
sCurOcarinaButtonIndex += 0x80;
|
||||
sCurOcarinaPitch++;
|
||||
}
|
||||
|
||||
u32 noteFlatBtnMap;
|
||||
@@ -1703,39 +1711,40 @@ void func_800ED458(s32 arg0) {
|
||||
} else {
|
||||
noteFlatBtnMap = BTN_Z;
|
||||
}
|
||||
if ((sCurOcarinaBtnVal != 0xFF) && (sCurOcarinaBtnPress & noteFlatBtnMap) && (sRecordingState != 2)) {
|
||||
sCurOcarinaBtnIdx += 0x40;
|
||||
sCurOcarinaBtnVal--;
|
||||
if ((sCurOcarinaPitch != 0xFF) && (sOcarinaInputButtonCur & noteFlatBtnMap) && (sRecordingState != 2)) {
|
||||
sCurOcarinaButtonIndex += 0x40;
|
||||
sCurOcarinaPitch--;
|
||||
}
|
||||
|
||||
if (sRecordingState != 2) {
|
||||
D_80130F2C = sCurOcaStick.y;
|
||||
D_80130F24 = Audio_OcaAdjStick(D_80130F2C);
|
||||
sCurOcarinaBendIndex = sCurOcaStick.y;
|
||||
sCurOcarinaBendFreq = Audio_OcaAdjStick(sCurOcarinaBendIndex);
|
||||
|
||||
D_80130F34 = (sCurOcaStick.x < 0 ? -sCurOcaStick.x : sCurOcaStick.x) >> 2;
|
||||
Audio_QueueCmdS8(0x6 << 24 | SEQ_PLAYER_SFX << 16 | 0xD06, D_80130F34);
|
||||
sCurOcarinaVibrato = (sCurOcaStick.x < 0 ? -sCurOcaStick.x : sCurOcaStick.x) >> 2;
|
||||
Audio_QueueCmdS8(0x6 << 24 | SEQ_PLAYER_SFX << 16 | 0xD06, sCurOcarinaVibrato);
|
||||
} else {
|
||||
D_80130F2C = 0;
|
||||
D_80130F24 = 1.0f;
|
||||
sCurOcarinaBendIndex = 0;
|
||||
sCurOcarinaBendFreq = 1.0f;
|
||||
}
|
||||
|
||||
if ((sCurOcarinaBtnVal != 0xFF) && (sPrevOcarinaNoteVal != sCurOcarinaBtnVal)) {
|
||||
Audio_QueueCmdS8(0x6 << 24 | SEQ_PLAYER_SFX << 16 | 0xD07, D_80130F10 - 1);
|
||||
Audio_QueueCmdS8(0x6 << 24 | SEQ_PLAYER_SFX << 16 | 0xD05, sCurOcarinaBtnVal);
|
||||
Audio_PlaySoundGeneral(NA_SE_OC_OCARINA, &gSfxDefaultPos, 4, &D_80130F24, &D_80130F28, &gSfxDefaultReverb);
|
||||
} else if ((sPrevOcarinaNoteVal != 0xFF) && (sCurOcarinaBtnVal == 0xFF)) {
|
||||
if ((sCurOcarinaPitch != 0xFF) && (sPrevOcarinaPitch != sCurOcarinaPitch)) {
|
||||
Audio_QueueCmdS8(0x6 << 24 | SEQ_PLAYER_SFX << 16 | 0xD07, sOcarinaInstrumentId - 1);
|
||||
Audio_QueueCmdS8(0x6 << 24 | SEQ_PLAYER_SFX << 16 | 0xD05, sCurOcarinaPitch);
|
||||
Audio_PlaySoundGeneral(NA_SE_OC_OCARINA, &gSfxDefaultPos, 4, &sCurOcarinaBendFreq, &sRelativeOcarinaVolume,
|
||||
&gSfxDefaultReverb);
|
||||
} else if ((sPrevOcarinaPitch != 0xFF) && (sCurOcarinaPitch == 0xFF)) {
|
||||
Audio_StopSfxById(NA_SE_OC_OCARINA);
|
||||
}
|
||||
GameInteractor_ExecuteOnOcarinaNote(sCurOcarinaBtnVal, D_80130F24, D_80130F10);
|
||||
GameInteractor_ExecuteOnOcarinaNote(sCurOcarinaPitch, sCurOcarinaBendFreq, sOcarinaInstrumentId);
|
||||
}
|
||||
}
|
||||
|
||||
void func_800ED848(u8 inputEnabled) {
|
||||
sOcarinaInpEnabled = inputEnabled;
|
||||
sIsOcarinaInputEnabled = inputEnabled;
|
||||
}
|
||||
|
||||
void AudioOcarina_SetInstrument(u8 arg0) {
|
||||
if (D_80130F10 == arg0) {
|
||||
if (sOcarinaInstrumentId == arg0) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1747,24 +1756,24 @@ void AudioOcarina_SetInstrument(u8 arg0) {
|
||||
}
|
||||
|
||||
Audio_SeqCmd8(SEQ_PLAYER_SFX, 1, SFX_PLAYER_CHANNEL_OCARINA, arg0);
|
||||
D_80130F10 = arg0;
|
||||
sOcarinaInstrumentId = arg0;
|
||||
if (arg0 == 0) {
|
||||
sCurOcarinaBtnPress = 0;
|
||||
sPrevOcarinaBtnPress = 0;
|
||||
D_8016BA18 = 0;
|
||||
D_8016BA10 = 0xFFFF;
|
||||
sOcarinaInputButtonCur = 0;
|
||||
sOcarinaInputButtonPrev = 0;
|
||||
sOcarinaInputButtonPress = 0;
|
||||
sOcarinaInputButtonStart = 0xFFFF;
|
||||
func_800ED458(0);
|
||||
Audio_StopSfxById(NA_SE_OC_OCARINA);
|
||||
Audio_SetSoundBanksMute(0);
|
||||
sPlaybackState = 0;
|
||||
sStaffPlaybackPos = 0;
|
||||
sOcarinaInpEnabled = 0;
|
||||
D_80130F3C = 0;
|
||||
sPlaybackStaffPos = 0;
|
||||
sIsOcarinaInputEnabled = 0;
|
||||
sOcarinaFlags = 0;
|
||||
Audio_ClearBGMMute(SFX_PLAYER_CHANNEL_OCARINA);
|
||||
} else {
|
||||
sCurOcarinaBtnPress = 0;
|
||||
sOcarinaInputButtonCur = 0;
|
||||
Audio_GetOcaInput();
|
||||
D_8016BA10 = sCurOcarinaBtnPress;
|
||||
sOcarinaInputButtonStart = sOcarinaInputButtonCur;
|
||||
Audio_QueueSeqCmdMute(SFX_PLAYER_CHANNEL_OCARINA);
|
||||
}
|
||||
}
|
||||
@@ -1783,10 +1792,10 @@ void Audio_OcaSetSongPlayback(s8 songIdxPlusOne, s8 playbackState) {
|
||||
}
|
||||
|
||||
sPlaybackState = playbackState;
|
||||
sNotePlaybackTimer = 0;
|
||||
sDisplayedNoteValue = 0xFF;
|
||||
sPlaybackNoteTimer = 0;
|
||||
sPlaybackPitch = 0xFF;
|
||||
sPlaybackNotePos = 0;
|
||||
sStaffPlaybackPos = 0;
|
||||
sPlaybackStaffPos = 0;
|
||||
while (sPlaybackSong[sPlaybackNotePos].noteIdx == OCARINA_NOTE_INVALID) {
|
||||
sPlaybackNotePos++;
|
||||
}
|
||||
@@ -1797,39 +1806,39 @@ void Audio_OcaPlayback(void) {
|
||||
u32 nextNoteTimerStep = 0;
|
||||
|
||||
if (sPlaybackState != 0) {
|
||||
if (sStaffPlaybackPos == 0) {
|
||||
if (sPlaybackStaffPos == 0) {
|
||||
noteTimerStep = 3;
|
||||
} else {
|
||||
noteTimerStep = D_8016BA04 - D_80130F68;
|
||||
}
|
||||
|
||||
if (noteTimerStep < sNotePlaybackTimer) {
|
||||
sNotePlaybackTimer -= noteTimerStep;
|
||||
if (noteTimerStep < sPlaybackNoteTimer) {
|
||||
sPlaybackNoteTimer -= noteTimerStep;
|
||||
} else {
|
||||
nextNoteTimerStep = noteTimerStep - sNotePlaybackTimer;
|
||||
sNotePlaybackTimer = 0;
|
||||
nextNoteTimerStep = noteTimerStep - sPlaybackNoteTimer;
|
||||
sPlaybackNoteTimer = 0;
|
||||
}
|
||||
|
||||
if (sNotePlaybackTimer == 0) {
|
||||
if (sPlaybackNoteTimer == 0) {
|
||||
|
||||
sNotePlaybackTimer = sPlaybackSong[sPlaybackNotePos].unk_02;
|
||||
sPlaybackNoteTimer = sPlaybackSong[sPlaybackNotePos].unk_02;
|
||||
|
||||
if (sPlaybackNotePos == 1) {
|
||||
sNotePlaybackTimer++;
|
||||
sPlaybackNoteTimer++;
|
||||
}
|
||||
|
||||
if (sNotePlaybackTimer == 0) {
|
||||
if (sPlaybackNoteTimer == 0) {
|
||||
sPlaybackState--;
|
||||
if (sPlaybackState != 0) {
|
||||
sPlaybackNotePos = 0;
|
||||
sStaffPlaybackPos = 0;
|
||||
sDisplayedNoteValue = 0xFF;
|
||||
sPlaybackStaffPos = 0;
|
||||
sPlaybackPitch = 0xFF;
|
||||
} else {
|
||||
Audio_StopSfxById(NA_SE_OC_OCARINA);
|
||||
}
|
||||
return;
|
||||
} else {
|
||||
sNotePlaybackTimer -= nextNoteTimerStep;
|
||||
sPlaybackNoteTimer -= nextNoteTimerStep;
|
||||
}
|
||||
|
||||
if (sNotePlaybackVolume != sPlaybackSong[sPlaybackNotePos].volume) {
|
||||
@@ -1850,22 +1859,22 @@ void Audio_OcaPlayback(void) {
|
||||
if ((sPlaybackSong[sPlaybackNotePos].volume == sPlaybackSong[sPlaybackNotePos - 1].volume &&
|
||||
(sPlaybackSong[sPlaybackNotePos].vibrato == sPlaybackSong[sPlaybackNotePos - 1].vibrato) &&
|
||||
(sPlaybackSong[sPlaybackNotePos].tone == sPlaybackSong[sPlaybackNotePos - 1].tone))) {
|
||||
sDisplayedNoteValue = 0xFE;
|
||||
sPlaybackPitch = 0xFE;
|
||||
}
|
||||
|
||||
if (sDisplayedNoteValue != sPlaybackSong[sPlaybackNotePos].noteIdx) {
|
||||
if (sPlaybackPitch != sPlaybackSong[sPlaybackNotePos].noteIdx) {
|
||||
u8 tmp = sPlaybackSong[sPlaybackNotePos].noteIdx;
|
||||
|
||||
if (tmp == 0xA) {
|
||||
sDisplayedNoteValue = tmp + sPlaybackSong[sPlaybackNotePos].semitone;
|
||||
sPlaybackPitch = tmp + sPlaybackSong[sPlaybackNotePos].semitone;
|
||||
} else {
|
||||
sDisplayedNoteValue = tmp;
|
||||
sPlaybackPitch = tmp;
|
||||
}
|
||||
|
||||
if (sDisplayedNoteValue != 0xFF) {
|
||||
sStaffPlaybackPos++;
|
||||
Audio_QueueCmdS8(0x6 << 24 | SEQ_PLAYER_SFX << 16 | 0xD07, D_80130F10 - 1);
|
||||
Audio_QueueCmdS8(0x6 << 24 | SEQ_PLAYER_SFX << 16 | 0xD05, sDisplayedNoteValue & 0x3F);
|
||||
if (sPlaybackPitch != 0xFF) {
|
||||
sPlaybackStaffPos++;
|
||||
Audio_QueueCmdS8(0x6 << 24 | SEQ_PLAYER_SFX << 16 | 0xD07, sOcarinaInstrumentId - 1);
|
||||
Audio_QueueCmdS8(0x6 << 24 | SEQ_PLAYER_SFX << 16 | 0xD05, sPlaybackPitch & 0x3F);
|
||||
Audio_PlaySoundGeneral(NA_SE_OC_OCARINA, &gSfxDefaultPos, 4, &sNormalizedNotePlaybackTone,
|
||||
&sNormalizedNotePlaybackVolume, &gSfxDefaultReverb);
|
||||
} else {
|
||||
@@ -1899,11 +1908,11 @@ void func_800EDD68(u8 arg0) {
|
||||
song[sRecordSongPos].vibrato = D_8013186C;
|
||||
song[sRecordSongPos].tone = D_80131870;
|
||||
song[sRecordSongPos].semitone = D_80131874 & 0xC0;
|
||||
D_80131864 = sCurOcarinaBtnVal;
|
||||
D_80131868 = D_80130F30;
|
||||
D_8013186C = D_80130F34;
|
||||
D_80131870 = D_80130F2C;
|
||||
D_80131874 = sCurOcarinaBtnIdx;
|
||||
D_80131864 = sCurOcarinaPitch;
|
||||
D_80131868 = sCurOcarinaVolume;
|
||||
D_8013186C = sCurOcarinaVibrato;
|
||||
D_80131870 = sCurOcarinaBendIndex;
|
||||
D_80131874 = sCurOcarinaButtonIndex;
|
||||
sRecordSongPos++;
|
||||
|
||||
if ((sRecordSongPos != 107) && (arg0 == 0)) {
|
||||
@@ -1925,7 +1934,7 @@ void func_800EDD68(u8 arg0) {
|
||||
song[sRecordSongPos].unk_02 = 0;
|
||||
|
||||
if (sRecordingState == 2) {
|
||||
if (sStaffPlayingPos >= 8) {
|
||||
if (sStaffOcarinaPlayingPos >= 8) {
|
||||
for (i = 0; i < sRecordSongPos; i++) {
|
||||
song[i] = song[i + 1];
|
||||
}
|
||||
@@ -1969,7 +1978,7 @@ void func_800EDD68(u8 arg0) {
|
||||
sOcarinaSongs[OCARINA_SONG_SCARECROW][i] = sOcarinaSongs[OCARINA_SONG_MEMORY_GAME][i];
|
||||
}
|
||||
|
||||
sOcarinaInpEnabled = 0;
|
||||
sIsOcarinaInputEnabled = 0;
|
||||
} else {
|
||||
sOcarinaSongs[OCARINA_SONG_SCARECROW][1].volume = 0xFF;
|
||||
}
|
||||
@@ -1996,22 +2005,22 @@ void Audio_OcaSetRecordingState(u8 recordingState) {
|
||||
D_80131870 = 0;
|
||||
D_80131874 = 0;
|
||||
sRecordSongPos = 0;
|
||||
sOcarinaInpEnabled = 1;
|
||||
sStaffPlayingPos = 0;
|
||||
D_8016BAA0 = sPierresSong[1];
|
||||
sIsOcarinaInputEnabled = 1;
|
||||
sStaffOcarinaPlayingPos = 0;
|
||||
sScarecrowsLongSongSecondNote = sPierresSong[1];
|
||||
} else {
|
||||
if (sRecordSongPos == 0) {
|
||||
sPierresSong[1] = D_8016BAA0;
|
||||
sPierresSong[1] = sScarecrowsLongSongSecondNote;
|
||||
} else {
|
||||
if (sRecordingState == 2) {
|
||||
sStaffPlayingPos = 1;
|
||||
sStaffOcarinaPlayingPos = 1;
|
||||
}
|
||||
|
||||
func_800EDD68(1);
|
||||
}
|
||||
|
||||
sOcarinaInpEnabled = 0;
|
||||
sStaffPlayingPos = 0;
|
||||
sIsOcarinaInputEnabled = 0;
|
||||
sStaffOcarinaPlayingPos = 0;
|
||||
}
|
||||
|
||||
sRecordingState = recordingState;
|
||||
@@ -2019,31 +2028,31 @@ void Audio_OcaSetRecordingState(u8 recordingState) {
|
||||
|
||||
void Audio_OcaUpdateRecordingStaff(void) {
|
||||
sRecordingStaff.state = sRecordingState;
|
||||
sRecordingStaff.pos = sStaffPlayingPos;
|
||||
sRecordingStaff.pos = sStaffOcarinaPlayingPos;
|
||||
if (sRecordingState == 0xFF) {
|
||||
sRecordingState = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void Audio_OcaUpdatePlayingStaff(void) {
|
||||
sPlayingStaff.noteIdx = sCurOcarinaBtnIdx & 0x3F;
|
||||
sPlayingStaff.noteIdx = sCurOcarinaButtonIndex & 0x3F;
|
||||
sPlayingStaff.state = Audio_OcaGetPlayingState();
|
||||
sPlayingStaff.pos = sStaffPlayingPos;
|
||||
sPlayingStaff.pos = sStaffOcarinaPlayingPos;
|
||||
}
|
||||
|
||||
void Audio_OcaUpdateDisplayedStaff(void) {
|
||||
if ((sDisplayedNoteValue & 0x3F) < 0x10) {
|
||||
sDisplayedStaff.noteIdx = Audio_OcaMapNoteValue(sDisplayedNoteValue);
|
||||
if ((sPlaybackPitch & 0x3F) < 0x10) {
|
||||
sDisplayedStaff.noteIdx = Audio_OcaMapNoteValue(sPlaybackPitch);
|
||||
}
|
||||
|
||||
sDisplayedStaff.state = sPlaybackState;
|
||||
|
||||
if (sPlaybackSong != sPierresSong) {
|
||||
sDisplayedStaff.pos = sStaffPlaybackPos;
|
||||
} else if (sStaffPlaybackPos == 0) {
|
||||
sDisplayedStaff.pos = sPlaybackStaffPos;
|
||||
} else if (sPlaybackStaffPos == 0) {
|
||||
sDisplayedStaff.pos = 0;
|
||||
} else {
|
||||
sDisplayedStaff.pos = ((sStaffPlaybackPos - 1) % 8) + 1;
|
||||
sDisplayedStaff.pos = ((sPlaybackStaffPos - 1) % 8) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2053,7 +2062,7 @@ OcarinaStaff* Audio_OcaGetRecordingStaff(void) {
|
||||
|
||||
OcarinaStaff* Audio_OcaGetPlayingStaff(void) {
|
||||
if (sPlayingStaff.state < 0xFE) {
|
||||
D_80130F3C = 0;
|
||||
sOcarinaFlags = 0;
|
||||
}
|
||||
return &sPlayingStaff;
|
||||
}
|
||||
@@ -2067,30 +2076,30 @@ void func_800EE404(void) {
|
||||
|
||||
if ((sRecordingState != 0) && ((D_8016BA04 - D_80131860) >= 3)) {
|
||||
noteChanged = false;
|
||||
if (D_80131864 != sCurOcarinaBtnVal) {
|
||||
if (sCurOcarinaBtnVal != 0xFF) {
|
||||
sRecordingStaff.noteIdx = sCurOcarinaBtnIdx & 0x3F;
|
||||
sStaffPlayingPos++;
|
||||
} else if ((sRecordingState == 2) && (sStaffPlayingPos == 8)) {
|
||||
if (D_80131864 != sCurOcarinaPitch) {
|
||||
if (sCurOcarinaPitch != 0xFF) {
|
||||
sRecordingStaff.noteIdx = sCurOcarinaButtonIndex & 0x3F;
|
||||
sStaffOcarinaPlayingPos++;
|
||||
} else if ((sRecordingState == 2) && (sStaffOcarinaPlayingPos == 8)) {
|
||||
func_800EDD68(1);
|
||||
return;
|
||||
}
|
||||
|
||||
if (sStaffPlayingPos > 8) {
|
||||
if (sStaffOcarinaPlayingPos > 8) {
|
||||
if (sRecordingState == 2) {
|
||||
// notes played are over 8 and in recording mode.
|
||||
func_800EDD68(1);
|
||||
return;
|
||||
}
|
||||
sStaffPlayingPos = true;
|
||||
sStaffOcarinaPlayingPos = true;
|
||||
}
|
||||
|
||||
noteChanged = true;
|
||||
} else if (D_80131868 != D_80130F30) {
|
||||
} else if (D_80131868 != sCurOcarinaVolume) {
|
||||
noteChanged = true;
|
||||
} else if (D_8013186C != D_80130F34) {
|
||||
} else if (D_8013186C != sCurOcarinaVibrato) {
|
||||
noteChanged = true;
|
||||
} else if (D_80131870 != D_80130F2C) {
|
||||
} else if (D_80131870 != sCurOcarinaBendIndex) {
|
||||
noteChanged = true;
|
||||
}
|
||||
|
||||
@@ -2185,15 +2194,15 @@ s32 Audio_OcaMemoryGameGenNote(void) {
|
||||
// input update?
|
||||
void func_800EE6F4(void) {
|
||||
D_8016BA04 = gAudioContext.totalTaskCnt;
|
||||
if (D_80130F10 != 0) {
|
||||
if (sOcarinaInpEnabled == 1) {
|
||||
if (sOcarinaInstrumentId != 0) {
|
||||
if (sIsOcarinaInputEnabled == 1) {
|
||||
Audio_GetOcaInput();
|
||||
}
|
||||
if ((sPlaybackState == 0) && (sOcarinaInpEnabled == 1)) {
|
||||
if ((sPlaybackState == 0) && (sIsOcarinaInputEnabled == 1)) {
|
||||
func_800ED458(0);
|
||||
}
|
||||
if (D_80130F3C != 0) {
|
||||
if (D_80130F3C & 0x4000) {
|
||||
if (sOcarinaFlags != 0) {
|
||||
if (sOcarinaFlags & 0x4000) {
|
||||
func_800ED200();
|
||||
} else {
|
||||
func_800ECDF8();
|
||||
@@ -2207,11 +2216,11 @@ void func_800EE6F4(void) {
|
||||
func_800EE404();
|
||||
}
|
||||
|
||||
if ((D_80130F3C != 0) && (sPrevOcarinaNoteVal != sCurOcarinaBtnVal)) {
|
||||
if ((sOcarinaFlags != 0) && (sPrevOcarinaPitch != sCurOcarinaPitch)) {
|
||||
sOcarinaDropInputTimer = 1;
|
||||
}
|
||||
|
||||
sPrevOcarinaNoteVal = sCurOcarinaBtnVal;
|
||||
sPrevOcarinaPitch = sCurOcarinaPitch;
|
||||
}
|
||||
|
||||
Audio_OcaUpdatePlayingStaff();
|
||||
@@ -2943,8 +2952,8 @@ void AudioDebug_Draw(GfxPrint* printer) {
|
||||
}
|
||||
|
||||
GfxPrint_SetPos(printer, 3, 24);
|
||||
GfxPrint_Printf(printer, "OCA:%02x SEQ:%04x PLAY:%02x REC:%02x", D_80130F10, D_80130F3C, sPlaybackState,
|
||||
sRecordingState);
|
||||
GfxPrint_Printf(printer, "OCA:%02x SEQ:%04x PLAY:%02x REC:%02x", sOcarinaInstrumentId, sOcarinaFlags,
|
||||
sPlaybackState, sRecordingState);
|
||||
break;
|
||||
|
||||
case PAGE_SFX_PARAMETER_CHANGE:
|
||||
@@ -3014,9 +3023,9 @@ void AudioDebug_Draw(GfxPrint* printer) {
|
||||
GfxPrint_Printf(printer, "DEMO FLAG %d", sAudioCutsceneFlag);
|
||||
|
||||
GfxPrint_SetPos(printer, 3, 12);
|
||||
if (sAudioHasMalonBgm == true) {
|
||||
GfxPrint_Printf(printer, "MARON BGM DIST %f", sAudioMalonBgmDist);
|
||||
sAudioHasMalonBgm = false;
|
||||
if (sIsMalonSinging == true) {
|
||||
GfxPrint_Printf(printer, "MARON BGM DIST %f", sMalonSingingDist);
|
||||
sIsMalonSinging = false;
|
||||
}
|
||||
|
||||
GfxPrint_SetPos(printer, 3, 23);
|
||||
@@ -4908,8 +4917,8 @@ void Audio_UpdateMalonSinging(f32 dist, u16 arg1) {
|
||||
s8 phi_v1;
|
||||
s16 temp_a0;
|
||||
|
||||
sAudioHasMalonBgm = true;
|
||||
sAudioMalonBgmDist = dist;
|
||||
sIsMalonSinging = true;
|
||||
sMalonSingingDist = dist;
|
||||
if (D_8016B9F2 == 0) {
|
||||
temp_a0 = (s8)(func_800FA0B4(SEQ_PLAYER_BGM_MAIN) & 0xFF);
|
||||
if (temp_a0 == (arg1 & 0xFF)) {
|
||||
|
||||
@@ -421,9 +421,9 @@ void func_80064824(PlayState* play, CutsceneContext* csCtx, CsCmdBase* cmd) {
|
||||
break;
|
||||
case 34:
|
||||
if (IS_DAY) {
|
||||
gSaveContext.dayTime -= gTimeIncrement;
|
||||
gSaveContext.dayTime -= gTimeSpeed;
|
||||
} else {
|
||||
gSaveContext.dayTime -= gTimeIncrement * 2;
|
||||
gSaveContext.dayTime -= gTimeSpeed * 2;
|
||||
}
|
||||
break;
|
||||
case 35:
|
||||
|
||||
+11
-11
@@ -58,9 +58,9 @@ u8 D_8011FB38 = 0;
|
||||
|
||||
u8 gSkyboxBlendingEnabled = false;
|
||||
|
||||
u16 gTimeIncrement = 0;
|
||||
u16 gTimeSpeed = 0;
|
||||
|
||||
#define ENVIRONMENT_SHIP_SAVESTATE_FIELDS(F) F(gTimeIncrement)
|
||||
#define ENVIRONMENT_SHIP_SAVESTATE_FIELDS(F) F(gTimeSpeed)
|
||||
SHIP_SAVESTATE_DEFINE(Environment, ENVIRONMENT_SHIP_SAVESTATE_FIELDS)
|
||||
|
||||
u16 D_8011FB44 = 0xFFFC;
|
||||
@@ -325,7 +325,7 @@ void Environment_Init(PlayState* play2, EnvironmentContext* envCtx, s32 unused)
|
||||
envCtx->blendIndoorLights = false;
|
||||
envCtx->unk_BF = 0xFF;
|
||||
envCtx->unk_D6 = 0xFFFF;
|
||||
R_ENV_TIME_INCREMENT = gTimeIncrement = envCtx->timeIncrement = 0;
|
||||
R_ENV_TIME_INCREMENT = gTimeSpeed = envCtx->timeIncrement = 0;
|
||||
R_ENV_DISABLE_DBG = true;
|
||||
|
||||
if (CREG(3) != 0) {
|
||||
@@ -842,7 +842,7 @@ void Environment_PrintDebugInfo(PlayState* play, Gfx** gfx) {
|
||||
GfxPrint_SetColor(&printer, 255, 255, 255, 64);
|
||||
GfxPrint_Printf(&printer, "%02d", (u8)(24 * 60 / (f32)0x10000 * ((void)0, gSaveContext.dayTime) / 60.0f));
|
||||
|
||||
if ((gSaveContext.dayTime & 0x1F) >= 0x10 || gTimeIncrement >= 6) {
|
||||
if ((gSaveContext.dayTime & 0x1F) >= 0x10 || gTimeSpeed >= 6) {
|
||||
GfxPrint_Printf(&printer, "%s", ":");
|
||||
} else {
|
||||
GfxPrint_Printf(&printer, "%s", " ");
|
||||
@@ -857,7 +857,7 @@ void Environment_PrintDebugInfo(PlayState* play, Gfx** gfx) {
|
||||
GfxPrint_SetColor(&printer, 255, 255, 255, 64);
|
||||
GfxPrint_Printf(&printer, "%02d", (u8)(24 * 60 / (f32)0x10000 * ((void)0, gSaveContext.skyboxTime) / 60.0f));
|
||||
|
||||
if ((((void)0, gSaveContext.skyboxTime) & 0x1F) >= 0x10 || gTimeIncrement >= 6) {
|
||||
if ((((void)0, gSaveContext.skyboxTime) & 0x1F) >= 0x10 || gTimeSpeed >= 6) {
|
||||
GfxPrint_Printf(&printer, "%s", ":");
|
||||
} else {
|
||||
GfxPrint_Printf(&printer, "%s", " ");
|
||||
@@ -930,19 +930,19 @@ void Environment_Update(PlayState* play, EnvironmentContext* envCtx, LightContex
|
||||
if ((envCtx->unk_1A == 0) && !FrameAdvance_IsEnabled(play) &&
|
||||
(play->transitionMode == TRANS_MODE_OFF || ((void)0, gSaveContext.gameMode) != GAMEMODE_NORMAL)) {
|
||||
|
||||
if (IS_DAY || gTimeIncrement >= 0x190) {
|
||||
gSaveContext.dayTime += gTimeIncrement;
|
||||
if (IS_DAY || gTimeSpeed >= 0x190) {
|
||||
gSaveContext.dayTime += gTimeSpeed;
|
||||
} else {
|
||||
gSaveContext.dayTime += gTimeIncrement * 2; // time moves twice as fast at night
|
||||
gSaveContext.dayTime += gTimeSpeed * 2; // time moves twice as fast at night
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//! @bug `gTimeIncrement` is unsigned, it can't be negative
|
||||
if (((((void)0, gSaveContext.sceneLayer) >= 5 || gTimeIncrement != 0) &&
|
||||
//! @bug `gTimeSpeed` is unsigned, it can't be negative
|
||||
if (((((void)0, gSaveContext.sceneLayer) >= 5 || gTimeSpeed != 0) &&
|
||||
((void)0, gSaveContext.dayTime) > gSaveContext.skyboxTime) ||
|
||||
(((void)0, gSaveContext.dayTime) < 0xAAB || gTimeIncrement < 0)) {
|
||||
(((void)0, gSaveContext.dayTime) < 0xAAB || gTimeSpeed < 0)) {
|
||||
gSaveContext.skyboxTime = ((void)0, gSaveContext.dayTime);
|
||||
}
|
||||
|
||||
|
||||
+112
-109
@@ -24,11 +24,11 @@ static u16 sTextBoxNum = 0;
|
||||
|
||||
s16 sTextFade = false; // original name: key_off_flag ?
|
||||
|
||||
static u8 D_8014B2F4 = 0;
|
||||
static u8 sMessageStartFrameCount = 0;
|
||||
|
||||
static s16 sOcarinaNoteBufPos = 0;
|
||||
static s16 sOcarinaButtonIndexBufPos = 0;
|
||||
|
||||
static s16 sOcarinaNoteBufLen = 0;
|
||||
static s16 sOcarinaButtonIndexBufLen = 0;
|
||||
|
||||
static u8 sTextboxSkipped = false;
|
||||
|
||||
@@ -72,7 +72,7 @@ s16 sTextboxBackgroundYOffsets[] = {
|
||||
};
|
||||
|
||||
// original name: onpu_buff
|
||||
static u8 sOcarinaNoteBuf[12] = { 0 };
|
||||
static u8 sOcarinaButtonIndexBuf[12] = { 0 };
|
||||
|
||||
s16 sOcarinaNotesAlphaValues[9] = { 0 };
|
||||
|
||||
@@ -102,7 +102,7 @@ void Message_ResetOcarinaNoteState(void) {
|
||||
R_OCARINA_NOTES_YPOS(2) = 179;
|
||||
R_OCARINA_NOTES_YPOS(3) = 174;
|
||||
R_OCARINA_NOTES_YPOS(4) = 169;
|
||||
sOcarinaNoteBuf[0] = 0xFF;
|
||||
sOcarinaButtonIndexBuf[0] = 0xFF;
|
||||
sOcarinaNotesAlphaValues[0] = sOcarinaNotesAlphaValues[1] = sOcarinaNotesAlphaValues[2] =
|
||||
sOcarinaNotesAlphaValues[3] = sOcarinaNotesAlphaValues[4] = sOcarinaNotesAlphaValues[5] =
|
||||
sOcarinaNotesAlphaValues[6] = sOcarinaNotesAlphaValues[7] = sOcarinaNotesAlphaValues[8] = 0;
|
||||
@@ -145,13 +145,13 @@ void Message_UpdateOcarinaGame(PlayState* play) {
|
||||
if (play->msgCtx.msgMode == MSGMODE_MEMORY_GAME_PLAYER_PLAYING) {
|
||||
AudioOcarina_SetInstrument(1);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaNoteBufPos = 0;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
func_800ECC04((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();
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaNoteBufPos = 0;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
Audio_OcaSetSongPlayback(OCARINA_SONG_MEMORY_GAME + 1, 1);
|
||||
msgCtx->stateTimer = 2;
|
||||
}
|
||||
@@ -895,8 +895,8 @@ void Message_HandleOcarina(PlayState* play) {
|
||||
AudioOcarina_SetInstrument(1);
|
||||
AudioOcarina_SetInstrument(1);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
sOcarinaNoteBufPos = sOcarinaNoteBufLen = 0;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaNoteBufPos;
|
||||
sOcarinaButtonIndexBufPos = sOcarinaButtonIndexBufLen = 0;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos;
|
||||
Message_ResetOcarinaNoteState();
|
||||
msgCtx->stateTimer = 3;
|
||||
msgCtx->msgMode = MSGMODE_SCARECROW_LONG_PLAYBACK;
|
||||
@@ -911,8 +911,8 @@ void Message_HandleOcarina(PlayState* play) {
|
||||
AudioOcarina_SetInstrument(1);
|
||||
AudioOcarina_SetInstrument(1);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
sOcarinaNoteBufPos = sOcarinaNoteBufLen = 0;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaNoteBufPos;
|
||||
sOcarinaButtonIndexBufPos = sOcarinaButtonIndexBufLen = 0;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos;
|
||||
Message_ResetOcarinaNoteState();
|
||||
msgCtx->stateTimer = 3;
|
||||
msgCtx->msgMode = MSGMODE_SCARECROW_PLAYBACK;
|
||||
@@ -2701,7 +2701,7 @@ void Message_OpenText(PlayState* play, u16 textId) {
|
||||
Interface_ChangeHudVisibilityMode(5);
|
||||
}
|
||||
|
||||
sMessageHasSetSfx = D_8014B2F4 = sTextboxSkipped = sTextIsCredits = 0;
|
||||
sMessageHasSetSfx = sMessageStartFrameCount = sTextboxSkipped = sTextIsCredits = 0;
|
||||
if ((msgCtx->msgMode >= MSGMODE_OCARINA_STARTING && msgCtx->msgMode <= MSGMODE_OCARINA_AWAIT_INPUT) ||
|
||||
msgCtx->textBoxType == TEXTBOX_TYPE_OCARINA) {
|
||||
// TODO: Figure out what specific textures to invalidate to prevent the ocarina textboxes from flashing
|
||||
@@ -2924,8 +2924,8 @@ void Message_StartOcarina(PlayState* play, u16 ocarinaActionId) {
|
||||
|
||||
sHasSunsSong = CHECK_QUEST_ITEM(QUEST_SONG_SUN);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetRecordingStaff();
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaNoteBufPos = 0;
|
||||
sOcarinaNoteBufLen = 0;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
sOcarinaButtonIndexBufLen = 0;
|
||||
Message_ResetOcarinaNoteState();
|
||||
sLastPlayedSong = msgCtx->unk_E3F2 = msgCtx->lastOcaNoteIdx = 0xFF;
|
||||
|
||||
@@ -3009,8 +3009,8 @@ void Message_StartOcarina(PlayState* play, u16 ocarinaActionId) {
|
||||
AudioOcarina_SetInstrument(1);
|
||||
AudioOcarina_SetInstrument(1);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
sOcarinaNoteBufPos = sOcarinaNoteBufLen = 0;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaNoteBufPos;
|
||||
sOcarinaButtonIndexBufPos = sOcarinaButtonIndexBufLen = 0;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos;
|
||||
Message_ResetOcarinaNoteState();
|
||||
msgCtx->stateTimer = 3;
|
||||
msgCtx->msgMode = MSGMODE_SCARECROW_LONG_PLAYBACK;
|
||||
@@ -3367,7 +3367,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
case MSGMODE_SONG_PLAYBACK_STARTING:
|
||||
AudioOcarina_SetInstrument(1);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaNoteBufPos = 0;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_01;
|
||||
Message_ResetOcarinaNoteState();
|
||||
sOcarinaNoteFlashTimer = 3;
|
||||
@@ -3412,15 +3412,15 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
case MSGMODE_OCARINA_PLAYING:
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
if (msgCtx->ocarinaStaff->pos) {
|
||||
osSyncPrintf("locate=%d onpu_pt=%d\n", msgCtx->ocarinaStaff->pos, sOcarinaNoteBufPos);
|
||||
if (msgCtx->ocarinaStaff->pos == 1 && sOcarinaNoteBufPos == 8) {
|
||||
sOcarinaNoteBufPos = 0;
|
||||
osSyncPrintf("locate=%d onpu_pt=%d\n", msgCtx->ocarinaStaff->pos, sOcarinaButtonIndexBufPos);
|
||||
if (msgCtx->ocarinaStaff->pos == 1 && sOcarinaButtonIndexBufPos == 8) {
|
||||
sOcarinaButtonIndexBufPos = 0;
|
||||
}
|
||||
if (sOcarinaNoteBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
msgCtx->lastOcaNoteIdx = sOcarinaNoteBuf[msgCtx->ocarinaStaff->pos - 1] =
|
||||
if (sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
msgCtx->lastOcaNoteIdx = sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos - 1] =
|
||||
msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaNoteBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaNoteBufPos++;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaButtonIndexBufPos++;
|
||||
}
|
||||
}
|
||||
msgCtx->lastPlayedSong = msgCtx->ocarinaStaff->state;
|
||||
@@ -3604,7 +3604,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) {
|
||||
sOcarinaNoteBuf[0] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaButtonIndexBuf[0] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaNotesAlphaValues[0] = sOcarinaNotesAlphaValues[1] = sOcarinaNotesAlphaValues[2] =
|
||||
sOcarinaNotesAlphaValues[3] = sOcarinaNotesAlphaValues[4] = sOcarinaNotesAlphaValues[5] =
|
||||
sOcarinaNotesAlphaValues[6] = sOcarinaNotesAlphaValues[7] = sOcarinaNotesAlphaValues[8] = 0;
|
||||
@@ -3627,7 +3627,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
Message_Decode(play);
|
||||
msgCtx->msgMode = MSGMODE_SETUP_DISPLAY_SONG_PLAYED;
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaNoteBufPos = 0;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
Message_ResetOcarinaNoteState();
|
||||
if (msgCtx->lastPlayedSong >= OCARINA_SONG_SARIAS &&
|
||||
msgCtx->lastPlayedSong < OCARINA_SONG_MEMORY_GAME) {
|
||||
@@ -3666,7 +3666,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
if (msgCtx->ocarinaAction == OCARINA_ACTION_CHECK_NOWARP) {
|
||||
msgCtx->ocarinaAction = OCARINA_ACTION_CHECK_NOWARP_DONE;
|
||||
}
|
||||
sOcarinaNoteBufPos = 0;
|
||||
sOcarinaButtonIndexBufPos = 0;
|
||||
msgCtx->msgMode = MSGMODE_DISPLAY_SONG_PLAYED;
|
||||
break;
|
||||
case MSGMODE_SONG_DEMONSTRATION_SELECT_INSTRUMENT:
|
||||
@@ -3688,7 +3688,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
// "Example Performance"
|
||||
osSyncPrintf("模範演奏=%x\n", msgCtx->ocarinaAction - OCARINA_ACTION_TEACH_MINUET);
|
||||
Audio_OcaSetSongPlayback(msgCtx->ocarinaAction - OCARINA_ACTION_TEACH_MINUET + 1, 2);
|
||||
sOcarinaNoteBufPos = 0;
|
||||
sOcarinaButtonIndexBufPos = 0;
|
||||
msgCtx->msgMode = MSGMODE_SONG_DEMONSTRATION;
|
||||
}
|
||||
if (gSaveContext.language == LANGUAGE_JPN && !sDisplayNextMessageAsEnglish) {
|
||||
@@ -3803,16 +3803,16 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
msgCtx->msgMode = MSGMODE_SONG_DEMONSTRATION_DONE;
|
||||
}
|
||||
osSyncPrintf("onpu_buff[%d]=%x\n", msgCtx->ocarinaStaff->pos,
|
||||
sOcarinaNoteBuf[msgCtx->ocarinaStaff->pos]);
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos]);
|
||||
} else {
|
||||
if (sOcarinaNoteBufPos != 0 && msgCtx->ocarinaStaff->pos == 1) {
|
||||
sOcarinaNoteBufPos = 0;
|
||||
if (sOcarinaButtonIndexBufPos != 0 && msgCtx->ocarinaStaff->pos == 1) {
|
||||
sOcarinaButtonIndexBufPos = 0;
|
||||
}
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaNoteBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
msgCtx->lastOcaNoteIdx = sOcarinaNoteBuf[msgCtx->ocarinaStaff->pos - 1] =
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
msgCtx->lastOcaNoteIdx = sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos - 1] =
|
||||
msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaNoteBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaNoteBufPos++;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaButtonIndexBufPos++;
|
||||
}
|
||||
}
|
||||
case MSGMODE_SONG_DEMONSTRATION_DONE:
|
||||
@@ -3824,10 +3824,10 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
break;
|
||||
case MSGMODE_SONG_PLAYBACK:
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaNoteBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
sOcarinaNoteBuf[msgCtx->ocarinaStaff->pos - 1] = msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaNoteBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaNoteBufPos++;
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos - 1] = msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaButtonIndexBufPos++;
|
||||
}
|
||||
if (msgCtx->ocarinaStaff->state < OCARINA_SONG_MEMORY_GAME) {
|
||||
osSyncPrintf("M_OCARINA20 : ocarina_no=%x status=%x\n", msgCtx->ocarinaAction,
|
||||
@@ -3876,8 +3876,8 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
Audio_OcaSetRecordingState(1);
|
||||
AudioOcarina_SetInstrument(1);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetRecordingStaff();
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaNoteBufPos = 0;
|
||||
sOcarinaNoteBufLen = 0;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
sOcarinaButtonIndexBufLen = 0;
|
||||
Message_ResetOcarinaNoteState();
|
||||
msgCtx->msgMode = MSGMODE_SCARECROW_LONG_RECORDING_ONGOING;
|
||||
if (gSaveContext.language == LANGUAGE_JPN && !sDisplayNextMessageAsEnglish) {
|
||||
@@ -3888,26 +3888,27 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
break;
|
||||
case MSGMODE_SCARECROW_LONG_RECORDING_ONGOING:
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetRecordingStaff();
|
||||
osSyncPrintf("\nonpu_pt=%d, locate=%d", sOcarinaNoteBufPos, msgCtx->ocarinaStaff->pos);
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaNoteBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
if (sOcarinaNoteBufLen >= 8) {
|
||||
for (noteBufPos = sOcarinaNoteBufLen - 8, i = 0; i < 8; i++, noteBufPos++) {
|
||||
sOcarinaNoteBuf[noteBufPos] = sOcarinaNoteBuf[noteBufPos + 1];
|
||||
osSyncPrintf("\nonpu_pt=%d, locate=%d", sOcarinaButtonIndexBufPos, msgCtx->ocarinaStaff->pos);
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
if (sOcarinaButtonIndexBufLen >= 8) {
|
||||
for (noteBufPos = sOcarinaButtonIndexBufLen - 8, i = 0; i < 8; i++, noteBufPos++) {
|
||||
sOcarinaButtonIndexBuf[noteBufPos] = sOcarinaButtonIndexBuf[noteBufPos + 1];
|
||||
}
|
||||
sOcarinaNoteBufLen--;
|
||||
sOcarinaButtonIndexBufLen--;
|
||||
}
|
||||
// "Button Entered"
|
||||
osSyncPrintf(" 入力ボタン【%d】=%d", sOcarinaNoteBufLen, msgCtx->ocarinaStaff->noteIdx);
|
||||
msgCtx->lastOcaNoteIdx = sOcarinaNoteBuf[sOcarinaNoteBufLen] = msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaNoteBufLen++;
|
||||
sOcarinaNoteBuf[sOcarinaNoteBufLen] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaNoteBufPos++;
|
||||
osSyncPrintf(" 入力ボタン【%d】=%d", sOcarinaButtonIndexBufLen, msgCtx->ocarinaStaff->noteIdx);
|
||||
msgCtx->lastOcaNoteIdx = sOcarinaButtonIndexBuf[sOcarinaButtonIndexBufLen] =
|
||||
msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaButtonIndexBufLen++;
|
||||
sOcarinaButtonIndexBuf[sOcarinaButtonIndexBufLen] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaButtonIndexBufPos++;
|
||||
if (msgCtx->ocarinaStaff->pos == 8) {
|
||||
sOcarinaNoteBufPos = 0;
|
||||
sOcarinaButtonIndexBufPos = 0;
|
||||
}
|
||||
}
|
||||
if (msgCtx->ocarinaStaff->state == 0 || isB_Held) {
|
||||
if (sOcarinaNoteBufLen != 0) {
|
||||
if (sOcarinaButtonIndexBufLen != 0) {
|
||||
// "Recording complete!!!!!!!!!"
|
||||
osSyncPrintf("録音終了!!!!!!!!! message->info->status=%d \n",
|
||||
msgCtx->ocarinaStaff->state);
|
||||
@@ -3941,19 +3942,19 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
case MSGMODE_SCARECROW_LONG_PLAYBACK:
|
||||
case MSGMODE_SCARECROW_PLAYBACK:
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaNoteBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
if (sOcarinaNoteBufLen >= 8) {
|
||||
for (noteBufPos = sOcarinaNoteBufLen - 8, i = 0; i < 8; i++, noteBufPos++) {
|
||||
sOcarinaNoteBuf[noteBufPos] = sOcarinaNoteBuf[noteBufPos + 1];
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
if (sOcarinaButtonIndexBufLen >= 8) {
|
||||
for (noteBufPos = sOcarinaButtonIndexBufLen - 8, i = 0; i < 8; i++, noteBufPos++) {
|
||||
sOcarinaButtonIndexBuf[noteBufPos] = sOcarinaButtonIndexBuf[noteBufPos + 1];
|
||||
}
|
||||
sOcarinaNoteBufLen--;
|
||||
sOcarinaButtonIndexBufLen--;
|
||||
}
|
||||
sOcarinaNoteBuf[sOcarinaNoteBufLen] = msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaNoteBufLen++;
|
||||
sOcarinaNoteBuf[sOcarinaNoteBufLen] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaNoteBufPos++;
|
||||
sOcarinaButtonIndexBuf[sOcarinaButtonIndexBufLen] = msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaButtonIndexBufLen++;
|
||||
sOcarinaButtonIndexBuf[sOcarinaButtonIndexBufLen] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaButtonIndexBufPos++;
|
||||
if (msgCtx->ocarinaStaff->pos == 8) {
|
||||
sOcarinaNoteBufLen = sOcarinaNoteBufPos = 0;
|
||||
sOcarinaButtonIndexBufLen = sOcarinaButtonIndexBufPos = 0;
|
||||
}
|
||||
}
|
||||
osSyncPrintf("status=%d (%d)\n", msgCtx->ocarinaStaff->state, 0);
|
||||
@@ -3980,10 +3981,11 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
break;
|
||||
case MSGMODE_SCARECROW_RECORDING_ONGOING:
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetRecordingStaff();
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaNoteBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
msgCtx->lastOcaNoteIdx = sOcarinaNoteBuf[sOcarinaNoteBufPos] = msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaNoteBufPos++;
|
||||
sOcarinaNoteBuf[sOcarinaNoteBufPos] = OCARINA_NOTE_INVALID;
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
msgCtx->lastOcaNoteIdx = sOcarinaButtonIndexBuf[sOcarinaButtonIndexBufPos] =
|
||||
msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaButtonIndexBufPos++;
|
||||
sOcarinaButtonIndexBuf[sOcarinaButtonIndexBufPos] = OCARINA_NOTE_INVALID;
|
||||
}
|
||||
if (msgCtx->ocarinaStaff->state == 0) {
|
||||
// "8 Note Recording OK!"
|
||||
@@ -4028,7 +4030,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
AudioOcarina_SetInstrument(6);
|
||||
Audio_OcaMemoryGameStart(gSaveContext.ocarinaGameRoundNum);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaNoteBufPos = 0;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
Message_ResetOcarinaNoteState();
|
||||
Audio_OcaSetSongPlayback(OCARINA_SONG_MEMORY_GAME + 1, 1);
|
||||
msgCtx->msgMode = MSGMODE_MEMORY_GAME_LEFT_SKULLKID_PLAYING;
|
||||
@@ -4039,10 +4041,10 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_METRONOME_LV - SFX_FLAG, &gSfxDefaultPos, 4,
|
||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaNoteBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
sOcarinaNoteBuf[msgCtx->ocarinaStaff->pos - 1] = msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaNoteBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaNoteBufPos++;
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos - 1] = msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaButtonIndexBufPos++;
|
||||
}
|
||||
if (msgCtx->stateTimer == 0) {
|
||||
if (msgCtx->ocarinaStaff->state == 0) {
|
||||
@@ -4063,20 +4065,20 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
case MSGMODE_MEMORY_GAME_LEFT_SKULLKID_WAIT:
|
||||
case MSGMODE_MEMORY_GAME_RIGHT_SKULLKID_WAIT:
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaNoteBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
sOcarinaNoteBuf[msgCtx->ocarinaStaff->pos - 1] = msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaNoteBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaNoteBufPos++;
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos - 1] = msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_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();
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaNoteBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
sOcarinaNoteBuf[msgCtx->ocarinaStaff->pos - 1] = msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaNoteBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaNoteBufPos++;
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos - 1] = msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaButtonIndexBufPos++;
|
||||
}
|
||||
if (msgCtx->ocarinaStaff->state == 0xFF) {
|
||||
// "Musical round failed!!!!!!!!!"
|
||||
@@ -4102,10 +4104,10 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
break;
|
||||
case MSGMODE_MEMORY_GAME_ROUND_SUCCESS:
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaNoteBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
sOcarinaNoteBuf[msgCtx->ocarinaStaff->pos - 1] = msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaNoteBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaNoteBufPos++;
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos - 1] = msgCtx->ocarinaStaff->noteIdx;
|
||||
sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos] = OCARINA_NOTE_INVALID;
|
||||
sOcarinaButtonIndexBufPos++;
|
||||
}
|
||||
msgCtx->stateTimer--;
|
||||
if (msgCtx->stateTimer == 0) {
|
||||
@@ -4113,7 +4115,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_METRONOME, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
|
||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaNoteBufPos = 0;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
Message_ResetOcarinaNoteState();
|
||||
msgCtx->msgMode = MSGMODE_MEMORY_GAME_START_NEXT_ROUND;
|
||||
} else {
|
||||
@@ -4129,7 +4131,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
case MSGMODE_MEMORY_GAME_START_NEXT_ROUND:
|
||||
if (!Audio_IsSfxPlaying(NA_SE_SY_METRONOME)) {
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetDisplayingStaff();
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaNoteBufPos = 0;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
Message_ResetOcarinaNoteState();
|
||||
Audio_OcaSetSongPlayback(OCARINA_SONG_MEMORY_GAME + 1, 1);
|
||||
}
|
||||
@@ -4137,7 +4139,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
case MSGMODE_FROGS_START:
|
||||
AudioOcarina_SetInstrument(1);
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaNoteBufPos = 0;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_01;
|
||||
Message_ResetOcarinaNoteState();
|
||||
func_800ECC04(sOcarinaSongBitFlags + 0xC000);
|
||||
@@ -4145,9 +4147,9 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
break;
|
||||
case MSGMODE_FROGS_PLAYING:
|
||||
msgCtx->ocarinaStaff = Audio_OcaGetPlayingStaff();
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaNoteBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
if (msgCtx->ocarinaStaff->pos && sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1) {
|
||||
msgCtx->lastOcaNoteIdx = msgCtx->ocarinaStaff->noteIdx;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaNoteBufPos = 0;
|
||||
msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0;
|
||||
Message_ResetOcarinaNoteState();
|
||||
msgCtx->msgMode = MSGMODE_FROGS_WAITING;
|
||||
}
|
||||
@@ -4227,7 +4229,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 (sOcarinaNoteBuf[i] == OCARINA_NOTE_INVALID) {
|
||||
if (sOcarinaButtonIndexBuf[i] == OCARINA_NOTE_INVALID) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -4243,34 +4245,35 @@ 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 (sOcarinaNoteBuf[i] == OCARINA_NOTE_D4) {
|
||||
if (sOcarinaButtonIndexBuf[i] == OCARINA_NOTE_D4) {
|
||||
gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteABtnPrim.r, sOcarinaNoteABtnPrim.g,
|
||||
sOcarinaNoteABtnPrim.b, sOcarinaNotesAlphaValues[i]);
|
||||
gDPSetEnvColor(gfx++, sOcarinaNoteABtnEnv.r, sOcarinaNoteABtnEnv.g, sOcarinaNoteABtnEnv.b, 0);
|
||||
} else {
|
||||
if (sOcarinaNoteBuf[i] == OCARINA_NOTE_D5) {
|
||||
if (sOcarinaButtonIndexBuf[i] == OCARINA_NOTE_D5) {
|
||||
gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteCUpBtnPrim.r, sOcarinaNoteCUpBtnPrim.g,
|
||||
sOcarinaNoteCUpBtnPrim.b, sOcarinaNotesAlphaValues[i]);
|
||||
} else if (sOcarinaNoteBuf[i] == OCARINA_NOTE_B4) {
|
||||
} else if (sOcarinaButtonIndexBuf[i] == OCARINA_NOTE_B4) {
|
||||
gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteCLeftBtnPrim.r, sOcarinaNoteCLeftBtnPrim.g,
|
||||
sOcarinaNoteCLeftBtnPrim.b, sOcarinaNotesAlphaValues[i]);
|
||||
} else if (sOcarinaNoteBuf[i] == OCARINA_NOTE_A4) {
|
||||
} else if (sOcarinaButtonIndexBuf[i] == OCARINA_NOTE_A4) {
|
||||
gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteCRightBtnPrim.r, sOcarinaNoteCRightBtnPrim.g,
|
||||
sOcarinaNoteCRightBtnPrim.b, sOcarinaNotesAlphaValues[i]);
|
||||
} else if (sOcarinaNoteBuf[i] == OCARINA_NOTE_F4) {
|
||||
} else if (sOcarinaButtonIndexBuf[i] == OCARINA_NOTE_F4) {
|
||||
gDPSetPrimColor(gfx++, 0, 0, sOcarinaNoteCDownBtnPrim.r, sOcarinaNoteCDownBtnPrim.g,
|
||||
sOcarinaNoteCDownBtnPrim.b, sOcarinaNotesAlphaValues[i]);
|
||||
}
|
||||
gDPSetEnvColor(gfx++, sOcarinaNoteCBtnEnv.r, sOcarinaNoteCBtnEnv.g, sOcarinaNoteCBtnEnv.b, 0);
|
||||
}
|
||||
|
||||
gDPLoadTextureBlock(gfx++, sOcarinaNoteTextures[sOcarinaNoteBuf[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[sOcarinaButtonIndexBuf[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(sOcarinaNoteBuf[i]) << 2,
|
||||
(notePosX + 16) << 2, (R_OCARINA_NOTES_YPOS(sOcarinaNoteBuf[i]) + 16) << 2,
|
||||
G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
|
||||
gSPTextureRectangle(gfx++, notePosX << 2, R_OCARINA_NOTES_YPOS(sOcarinaButtonIndexBuf[i]) << 2,
|
||||
(notePosX + 16) << 2,
|
||||
(R_OCARINA_NOTES_YPOS(sOcarinaButtonIndexBuf[i]) + 16) << 2, G_TX_RENDERTILE, 0,
|
||||
0, 1 << 10, 1 << 10);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4433,16 +4436,16 @@ void Message_Update(PlayState* play) {
|
||||
|
||||
switch (msgCtx->msgMode) {
|
||||
case MSGMODE_TEXT_START:
|
||||
D_8014B2F4++;
|
||||
sMessageStartFrameCount++;
|
||||
|
||||
var = false;
|
||||
if (YREG(15) == 0x40) {
|
||||
if (D_8014B2F4 >= 4) {
|
||||
if (sMessageStartFrameCount >= 4) {
|
||||
var = true;
|
||||
}
|
||||
} else if (YREG(15) != 0 || play->sceneNum == SCENE_CASTLE_COURTYARD_GUARDS_DAY) {
|
||||
var = true;
|
||||
} else if (D_8014B2F4 >= 4 || msgCtx->talkActor == NULL) {
|
||||
} else if (sMessageStartFrameCount >= 4 || msgCtx->talkActor == NULL) {
|
||||
var = true;
|
||||
}
|
||||
|
||||
@@ -4709,10 +4712,10 @@ UNK_TYPE D_80153D7C = 0x00000000;
|
||||
s16 gGameOverTimer = 0;
|
||||
|
||||
#define MESSAGE_PAL_SHIP_SAVESTATE_FIELDS(F) \
|
||||
F(sOcarinaNoteBufPos) \
|
||||
F(sOcarinaNoteBufLen) \
|
||||
F(sOcarinaNoteBuf) \
|
||||
F(D_8014B2F4) \
|
||||
F(sOcarinaButtonIndexBufPos) \
|
||||
F(sOcarinaButtonIndexBufLen) \
|
||||
F(sOcarinaButtonIndexBuf) \
|
||||
F(sMessageStartFrameCount) \
|
||||
F(sTextboxSkipped) \
|
||||
F(sNextTextId) \
|
||||
F(sLastPlayedSong) \
|
||||
|
||||
@@ -6476,7 +6476,7 @@ void Interface_DrawTotalGameplayTimer(PlayState* play) {
|
||||
|
||||
void Interface_Update(PlayState* play) {
|
||||
static u8 D_80125B60 = 0;
|
||||
static s16 sPrevTimeIncrement = 0;
|
||||
static s16 sPrevTimeSpeed = 0;
|
||||
MessageContext* msgCtx = &play->msgCtx;
|
||||
InterfaceContext* interfaceCtx = &play->interfaceCtx;
|
||||
Player* player = GET_PLAYER(play);
|
||||
@@ -6848,17 +6848,17 @@ void Interface_Update(PlayState* play) {
|
||||
}
|
||||
|
||||
gSaveContext.sunsSongState = SUNSSONG_SPEED_TIME;
|
||||
sPrevTimeIncrement = gTimeIncrement;
|
||||
gTimeIncrement = 400;
|
||||
sPrevTimeSpeed = gTimeSpeed;
|
||||
gTimeSpeed = 400;
|
||||
} else if (D_80125B60 == 0) {
|
||||
if ((gSaveContext.dayTime >= 0x4555) && (gSaveContext.dayTime <= 0xC001)) {
|
||||
gSaveContext.sunsSongState = SUNSSONG_INACTIVE;
|
||||
gTimeIncrement = sPrevTimeIncrement;
|
||||
gTimeSpeed = sPrevTimeSpeed;
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_04;
|
||||
}
|
||||
} else if (gSaveContext.dayTime > 0xC001) {
|
||||
gSaveContext.sunsSongState = SUNSSONG_INACTIVE;
|
||||
gTimeIncrement = sPrevTimeIncrement;
|
||||
gTimeSpeed = sPrevTimeSpeed;
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_04;
|
||||
}
|
||||
} else if ((play->roomCtx.curRoom.behaviorType1 != ROOM_BEHAVIOR_TYPE1_1) &&
|
||||
|
||||
@@ -364,7 +364,7 @@ void Scene_CommandTimeSettings(PlayState* play, SceneCmd* cmd) {
|
||||
}
|
||||
|
||||
if (gSaveContext.sunsSongState == SUNSSONG_INACTIVE) {
|
||||
gTimeIncrement = play->envCtx.timeIncrement;
|
||||
gTimeSpeed = play->envCtx.timeIncrement;
|
||||
}
|
||||
|
||||
play->envCtx.sunPos.x = -(Math_SinS(((void)0, gSaveContext.dayTime) - 0x8000) * 120.0f) * 25.0f;
|
||||
|
||||
Reference in New Issue
Block a user