mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-08-12 20:22:37 -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 OnePointCutscene_SaveState(SaveStateCtx* ctx);
|
||||||
extern "C" void Environment_SaveState(SaveStateCtx* ctx);
|
extern "C" void Environment_SaveState(SaveStateCtx* ctx);
|
||||||
extern "C" void MapExp_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);
|
extern "C" void MessagePAL_SaveState(SaveStateCtx* ctx);
|
||||||
|
|
||||||
static void SaveOverlayState(std::unique_ptr<uint8_t[]>& buf, void (*fn)(SaveStateCtx*)) {
|
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[]> onePointCutsceneState;
|
||||||
std::unique_ptr<uint8_t[]> environmentState;
|
std::unique_ptr<uint8_t[]> environmentState;
|
||||||
std::unique_ptr<uint8_t[]> mapExpState;
|
std::unique_ptr<uint8_t[]> mapExpState;
|
||||||
std::unique_ptr<uint8_t[]> audioOcaState;
|
std::unique_ptr<uint8_t[]> audioOcarinaState;
|
||||||
std::unique_ptr<uint8_t[]> messagePalState;
|
std::unique_ptr<uint8_t[]> messagePalState;
|
||||||
|
|
||||||
// Overlay static data
|
// Overlay static data
|
||||||
@@ -249,7 +249,7 @@ void SaveState::SaveOverlayStaticData(void) {
|
|||||||
SaveOverlayState(info->onePointCutsceneState, OnePointCutscene_SaveState);
|
SaveOverlayState(info->onePointCutsceneState, OnePointCutscene_SaveState);
|
||||||
SaveOverlayState(info->environmentState, Environment_SaveState);
|
SaveOverlayState(info->environmentState, Environment_SaveState);
|
||||||
SaveOverlayState(info->mapExpState, MapExp_SaveState);
|
SaveOverlayState(info->mapExpState, MapExp_SaveState);
|
||||||
SaveOverlayState(info->audioOcaState, AudioOca_SaveState);
|
SaveOverlayState(info->audioOcarinaState, AudioOcarina_SaveState);
|
||||||
SaveOverlayState(info->messagePalState, MessagePAL_SaveState);
|
SaveOverlayState(info->messagePalState, MessagePAL_SaveState);
|
||||||
SaveOverlayState(info->bgDdanKdState, BgDdanKd_SaveState);
|
SaveOverlayState(info->bgDdanKdState, BgDdanKd_SaveState);
|
||||||
SaveOverlayState(info->bgDodoagoState, BgDodoago_SaveState);
|
SaveOverlayState(info->bgDodoagoState, BgDodoago_SaveState);
|
||||||
@@ -295,7 +295,7 @@ void SaveState::LoadOverlayStaticData(void) {
|
|||||||
LoadOverlayState(info->onePointCutsceneState, OnePointCutscene_SaveState);
|
LoadOverlayState(info->onePointCutsceneState, OnePointCutscene_SaveState);
|
||||||
LoadOverlayState(info->environmentState, Environment_SaveState);
|
LoadOverlayState(info->environmentState, Environment_SaveState);
|
||||||
LoadOverlayState(info->mapExpState, MapExp_SaveState);
|
LoadOverlayState(info->mapExpState, MapExp_SaveState);
|
||||||
LoadOverlayState(info->audioOcaState, AudioOca_SaveState);
|
LoadOverlayState(info->audioOcarinaState, AudioOcarina_SaveState);
|
||||||
LoadOverlayState(info->messagePalState, MessagePAL_SaveState);
|
LoadOverlayState(info->messagePalState, MessagePAL_SaveState);
|
||||||
LoadOverlayState(info->bgDdanKdState, BgDdanKd_SaveState);
|
LoadOverlayState(info->bgDdanKdState, BgDdanKd_SaveState);
|
||||||
LoadOverlayState(info->bgDodoagoState, BgDodoago_SaveState);
|
LoadOverlayState(info->bgDodoagoState, BgDodoago_SaveState);
|
||||||
|
|||||||
+112
-37
@@ -1313,44 +1313,119 @@ u32 sDebugPadPress; // decomp: debug only
|
|||||||
s32 sAudioUpdateTaskStart; // decomp: debug only
|
s32 sAudioUpdateTaskStart; // decomp: debug only
|
||||||
s32 sAudioUpdateTaskEnd; // decomp: debug only
|
s32 sAudioUpdateTaskEnd; // decomp: debug only
|
||||||
|
|
||||||
#define AUDIO_OCA_SHIP_SAVESTATE_FIELDS(F) \
|
#define AUDIOOCARINA_SHIP_SAVESTATE_FIELDS(F) \
|
||||||
F(sIsOcarinaInputEnabled) \
|
F(sOcarinaSongNotes[OCARINA_SONG_MEMORY_GAME]) \
|
||||||
F(sOcarinaInstrumentId) \
|
F(sOcarinaSongNotes[OCARINA_SONG_SCARECROW_SPAWN]) \
|
||||||
F(sCurOcarinaPitch) \
|
F(sOcaMemoryGameAppendPos) \
|
||||||
F(sPrevOcarinaPitch) \
|
F(sOcaMemoryGameEndPos) \
|
||||||
F(sCurOcarinaButtonIndex) \
|
F(D_801305B0) \
|
||||||
F(sMusicStaffPrevPitch) \
|
F(D_801305B4) \
|
||||||
F(sCurOcarinaBendFreq) \
|
F(D_801305B8) \
|
||||||
F(sRelativeOcarinaVolume) \
|
F(D_801305BC) \
|
||||||
F(sCurOcarinaBendIndex) \
|
F(D_801305C0) \
|
||||||
F(sCurOcarinaVolume) \
|
F(sAudioIncreasingTranspose) \
|
||||||
F(sCurOcarinaVibrato) \
|
F(sPrevChargeLevel) \
|
||||||
F(sPlaybackState) \
|
F(sSfxSwordChargeFreq) \
|
||||||
F(sOcarinaFlags) \
|
F(sEnterGanonsTowerTimer) \
|
||||||
F(sPlaybackNoteTimer) \
|
F(D_80130608) \
|
||||||
F(sPlaybackNotePos) \
|
F(sAudioCutsceneFlag) \
|
||||||
F(sPlaybackStaffPos) \
|
F(sSpecReverb) \
|
||||||
F(sOcarinaInputButtonCur) \
|
F(sAudioEnvReverb) \
|
||||||
F(sOcarinaInputButtonStart) \
|
F(sAudioCodeReverb) \
|
||||||
F(sOcarinaInputButtonPrev) \
|
F(sPrevSeqMode) \
|
||||||
F(sOcarinaInputButtonPress) \
|
F(sAudioEnemyDist) \
|
||||||
F(D_8016BA1C) \
|
F(sAudioEnemyVol) \
|
||||||
F(sCurOcarinaSongWithoutMusicStaff) \
|
F(sPrevMainBgmSeqId) \
|
||||||
F(sOcarinaWithoutMusicStaffPos) \
|
F(sSeqResumePoint) \
|
||||||
F(sOcarinaHasStartedSong) \
|
F(sPrevSceneSeqId) \
|
||||||
F(sFirstOcarinaSongIndex) \
|
F(sNumFramesStill) \
|
||||||
F(sLastOcarinaSongIndex) \
|
F(sNumFramesMoving) \
|
||||||
F(sAvailOcarinaSongFlags) \
|
F(sAudioBaseFilter) \
|
||||||
F(sStaffOcarinaPlayingPos) \
|
F(sAudioExtraFilter) \
|
||||||
F(sMusicStaffPos) \
|
F(sAudioBaseFilter2) \
|
||||||
F(sMusicStaffCurHeldLength) \
|
F(sAudioExtraFilter2) \
|
||||||
F(sMusicStaffExpectedLength) \
|
F(sSariaBgmPtr) \
|
||||||
F(sMusicStaffExpectedPitch) \
|
F(D_80130650) \
|
||||||
F(sScarecrowsLongSongSecondNote) \
|
F(D_8016B7A8) \
|
||||||
F(sIsMalonSinging) \
|
F(D_8016B7AC) \
|
||||||
F(sMalonSingingDist) \
|
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)
|
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);
|
void PadMgr_RequestPadData(PadMgr* padmgr, Input* inputs, s32 mode);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user