mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-08-12 12:18:32 -04:00
Savestates, more AudioOcarina serialization (#6954)
This commit is contained in:
@@ -59,7 +59,7 @@ extern "C" void Camera_SaveState(SaveStateCtx* ctx);
|
||||
extern "C" void OnePointCutscene_SaveState(SaveStateCtx* ctx);
|
||||
extern "C" void Environment_SaveState(SaveStateCtx* ctx);
|
||||
extern "C" void MapExp_SaveState(SaveStateCtx* ctx);
|
||||
extern "C" void AudioOca_SaveState(SaveStateCtx* ctx);
|
||||
extern "C" void AudioOcarina_SaveState(SaveStateCtx* ctx);
|
||||
extern "C" void MessagePAL_SaveState(SaveStateCtx* ctx);
|
||||
|
||||
static void SaveOverlayState(std::unique_ptr<uint8_t[]>& buf, void (*fn)(SaveStateCtx*)) {
|
||||
@@ -112,7 +112,7 @@ typedef struct SaveStateInfo {
|
||||
std::unique_ptr<uint8_t[]> onePointCutsceneState;
|
||||
std::unique_ptr<uint8_t[]> environmentState;
|
||||
std::unique_ptr<uint8_t[]> mapExpState;
|
||||
std::unique_ptr<uint8_t[]> audioOcaState;
|
||||
std::unique_ptr<uint8_t[]> audioOcarinaState;
|
||||
std::unique_ptr<uint8_t[]> messagePalState;
|
||||
|
||||
// Overlay static data
|
||||
@@ -249,7 +249,7 @@ void SaveState::SaveOverlayStaticData(void) {
|
||||
SaveOverlayState(info->onePointCutsceneState, OnePointCutscene_SaveState);
|
||||
SaveOverlayState(info->environmentState, Environment_SaveState);
|
||||
SaveOverlayState(info->mapExpState, MapExp_SaveState);
|
||||
SaveOverlayState(info->audioOcaState, AudioOca_SaveState);
|
||||
SaveOverlayState(info->audioOcarinaState, AudioOcarina_SaveState);
|
||||
SaveOverlayState(info->messagePalState, MessagePAL_SaveState);
|
||||
SaveOverlayState(info->bgDdanKdState, BgDdanKd_SaveState);
|
||||
SaveOverlayState(info->bgDodoagoState, BgDodoago_SaveState);
|
||||
@@ -295,7 +295,7 @@ void SaveState::LoadOverlayStaticData(void) {
|
||||
LoadOverlayState(info->onePointCutsceneState, OnePointCutscene_SaveState);
|
||||
LoadOverlayState(info->environmentState, Environment_SaveState);
|
||||
LoadOverlayState(info->mapExpState, MapExp_SaveState);
|
||||
LoadOverlayState(info->audioOcaState, AudioOca_SaveState);
|
||||
LoadOverlayState(info->audioOcarinaState, AudioOcarina_SaveState);
|
||||
LoadOverlayState(info->messagePalState, MessagePAL_SaveState);
|
||||
LoadOverlayState(info->bgDdanKdState, BgDdanKd_SaveState);
|
||||
LoadOverlayState(info->bgDodoagoState, BgDodoago_SaveState);
|
||||
|
||||
+112
-37
@@ -1313,44 +1313,119 @@ u32 sDebugPadPress; // decomp: debug only
|
||||
s32 sAudioUpdateTaskStart; // decomp: debug only
|
||||
s32 sAudioUpdateTaskEnd; // decomp: debug only
|
||||
|
||||
#define AUDIO_OCA_SHIP_SAVESTATE_FIELDS(F) \
|
||||
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(sOcarinaFlags) \
|
||||
F(sPlaybackNoteTimer) \
|
||||
F(sPlaybackNotePos) \
|
||||
F(sPlaybackStaffPos) \
|
||||
F(sOcarinaInputButtonCur) \
|
||||
F(sOcarinaInputButtonStart) \
|
||||
F(sOcarinaInputButtonPrev) \
|
||||
F(sOcarinaInputButtonPress) \
|
||||
F(D_8016BA1C) \
|
||||
F(sCurOcarinaSongWithoutMusicStaff) \
|
||||
F(sOcarinaWithoutMusicStaffPos) \
|
||||
F(sOcarinaHasStartedSong) \
|
||||
F(sFirstOcarinaSongIndex) \
|
||||
F(sLastOcarinaSongIndex) \
|
||||
F(sAvailOcarinaSongFlags) \
|
||||
F(sStaffOcarinaPlayingPos) \
|
||||
F(sMusicStaffPos) \
|
||||
F(sMusicStaffCurHeldLength) \
|
||||
F(sMusicStaffExpectedLength) \
|
||||
F(sMusicStaffExpectedPitch) \
|
||||
F(sScarecrowsLongSongSecondNote) \
|
||||
F(sIsMalonSinging) \
|
||||
F(sMalonSingingDist) \
|
||||
#define AUDIOOCARINA_SHIP_SAVESTATE_FIELDS(F) \
|
||||
F(sOcarinaSongNotes[OCARINA_SONG_MEMORY_GAME]) \
|
||||
F(sOcarinaSongNotes[OCARINA_SONG_SCARECROW_SPAWN]) \
|
||||
F(sOcaMemoryGameAppendPos) \
|
||||
F(sOcaMemoryGameEndPos) \
|
||||
F(D_801305B0) \
|
||||
F(D_801305B4) \
|
||||
F(D_801305B8) \
|
||||
F(D_801305BC) \
|
||||
F(D_801305C0) \
|
||||
F(sAudioIncreasingTranspose) \
|
||||
F(sPrevChargeLevel) \
|
||||
F(sSfxSwordChargeFreq) \
|
||||
F(sEnterGanonsTowerTimer) \
|
||||
F(D_80130608) \
|
||||
F(sAudioCutsceneFlag) \
|
||||
F(sSpecReverb) \
|
||||
F(sAudioEnvReverb) \
|
||||
F(sAudioCodeReverb) \
|
||||
F(sPrevSeqMode) \
|
||||
F(sAudioEnemyDist) \
|
||||
F(sAudioEnemyVol) \
|
||||
F(sPrevMainBgmSeqId) \
|
||||
F(sSeqResumePoint) \
|
||||
F(sPrevSceneSeqId) \
|
||||
F(sNumFramesStill) \
|
||||
F(sNumFramesMoving) \
|
||||
F(sAudioBaseFilter) \
|
||||
F(sAudioExtraFilter) \
|
||||
F(sAudioBaseFilter2) \
|
||||
F(sAudioExtraFilter2) \
|
||||
F(sSariaBgmPtr) \
|
||||
F(D_80130650) \
|
||||
F(D_8016B7A8) \
|
||||
F(D_8016B7AC) \
|
||||
F(D_8016B7B0) \
|
||||
F(D_8016B7B4) \
|
||||
F(sRiverFreqScaleLerp) \
|
||||
F(sWaterfallFreqScaleLerp) \
|
||||
F(D_8016B7D8) \
|
||||
F(D_8016B7DC) \
|
||||
F(D_8016B7E0) \
|
||||
F(sRiverSoundMainBgmVol) \
|
||||
F(sRiverSoundMainBgmCurrentVol) \
|
||||
F(sRiverSoundMainBgmLower) \
|
||||
F(sRiverSoundMainBgmRestore) \
|
||||
F(sGanonsTowerVol) \
|
||||
F(sSfxChannelState) \
|
||||
F(sMalonSingingTimer) \
|
||||
F(sMalonSingingDisabled) \
|
||||
F(D_8016B9F3) \
|
||||
F(sFanfareStartTimer) \
|
||||
F(sFanfareSeqId) \
|
||||
F(sRecordingState) \
|
||||
F(sRecordSongPos) \
|
||||
F(sOcarinaRecordTaskStart) \
|
||||
F(sRecordOcarinaPitch) \
|
||||
F(sRecordOcarinaVolume) \
|
||||
F(sRecordOcarinaVibrato) \
|
||||
F(sRecordOcarinaBendIndex) \
|
||||
F(sRecordOcarinaButtonIndex) \
|
||||
F(sPlayedOcarinaSongIndexPlusOne) \
|
||||
F(sMusicStaffNumNotesPerTest) \
|
||||
F(sOcarinaDropInputTimer) \
|
||||
F(sPlayingStaff) \
|
||||
F(sPlaybackStaff) \
|
||||
F(sRecordingStaff) \
|
||||
F(sNotePlaybackVolume) \
|
||||
F(sNotePlaybackVibrato) \
|
||||
F(sNotePlaybackBend) \
|
||||
F(sRelativeNotePlaybackBend) \
|
||||
F(sRelativeNotePlaybackVolume) \
|
||||
F(sOcarinaPlaybackTaskStart) \
|
||||
F(sPrevOcarinaWithMusicStaffFlags) \
|
||||
F(sOcarinaUpdateTaskStart) \
|
||||
F(sOcarinaInputStickAdj) \
|
||||
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(sOcarinaFlags) \
|
||||
F(sPlaybackNoteTimer) \
|
||||
F(sPlaybackNotePos) \
|
||||
F(sPlaybackStaffPos) \
|
||||
F(sOcarinaInputButtonCur) \
|
||||
F(sOcarinaInputButtonStart) \
|
||||
F(sOcarinaInputButtonPrev) \
|
||||
F(sOcarinaInputButtonPress) \
|
||||
F(D_8016BA1C) \
|
||||
F(sCurOcarinaSongWithoutMusicStaff) \
|
||||
F(sOcarinaWithoutMusicStaffPos) \
|
||||
F(sOcarinaHasStartedSong) \
|
||||
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)
|
||||
SHIP_SAVESTATE_DEFINE(AudioOcarina, AUDIOOCARINA_SHIP_SAVESTATE_FIELDS)
|
||||
|
||||
void PadMgr_RequestPadData(PadMgr* padmgr, Input* inputs, s32 mode);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user