diff options
Diffstat (limited to 'engine/menus/save.asm')
-rw-r--r-- | engine/menus/save.asm | 173 |
1 files changed, 62 insertions, 111 deletions
diff --git a/engine/menus/save.asm b/engine/menus/save.asm index efde37ffe..a0db01a95 100644 --- a/engine/menus/save.asm +++ b/engine/menus/save.asm @@ -1,4 +1,4 @@ -SaveMenu: ; 14a1a +SaveMenu: call LoadStandardMenuHeader farcall DisplaySaveInfoOnSave call SpeechTextBox @@ -23,7 +23,7 @@ SaveMenu: ; 14a1a scf ret -SaveAfterLinkTrade: ; 14a58 +SaveAfterLinkTrade: call PauseGameLogic farcall StageRTCTimeForSave farcall BackupMysteryGift @@ -35,10 +35,9 @@ SaveAfterLinkTrade: ; 14a58 farcall SaveRTC call ResumeGameLogic ret -; 14a83 -ChangeBoxSaveGame: ; 14a83 (5:4a83) +ChangeBoxSaveGame: push de ld hl, Text_SaveOnBoxSwitch call MenuTextBox @@ -62,7 +61,7 @@ ChangeBoxSaveGame: ; 14a83 (5:4a83) pop de ret -Link_SaveGame: ; 14ab2 +Link_SaveGame: call AskOverwriteSaveFile jr c, .refused call PauseGameLogic @@ -72,9 +71,8 @@ Link_SaveGame: ; 14ab2 .refused ret -; 14ac2 -MoveMonWOMail_SaveGame: ; 14ac2 +MoveMonWOMail_SaveGame: call PauseGameLogic push de call SaveBox @@ -84,9 +82,8 @@ MoveMonWOMail_SaveGame: ; 14ac2 call LoadBox call ResumeGameLogic ret -; 14ad5 -MoveMonWOMail_InsertMon_SaveGame: ; 14ad5 +MoveMonWOMail_InsertMon_SaveGame: call PauseGameLogic push de call SaveBox @@ -117,9 +114,8 @@ MoveMonWOMail_InsertMon_SaveGame: ; 14ad5 ld c, 24 call DelayFrames ret -; 14b34 -StartMoveMonWOMail_SaveGame: ; 14b34 +StartMoveMonWOMail_SaveGame: ld hl, Text_SaveOnMoveMonWOMail call MenuTextBox call YesNoBox @@ -136,22 +132,19 @@ StartMoveMonWOMail_SaveGame: ; 14b34 .refused scf ret -; 14b54 -PauseGameLogic: ; 14b54 +PauseGameLogic: ld a, $1 ld [wGameLogicPaused], a ret -; 14b5a -ResumeGameLogic: ; 14b5a +ResumeGameLogic: xor a ld [wGameLogicPaused], a ret -; 14b5f -AddHallOfFameEntry: ; 14b5f +AddHallOfFameEntry: ld a, BANK(sHallOfFame) call GetSRAMBank ld hl, sHallOfFame + HOF_LENGTH * (NUM_HOF_TEAMS - 1) - 1 @@ -171,14 +164,12 @@ AddHallOfFameEntry: ; 14b5f call CopyBytes call CloseSRAM ret -; 14b85 -SaveGameData: ; 14b85 +SaveGameData: call SaveGameData_ ret -; 14b89 -AskOverwriteSaveFile: ; 14b89 +AskOverwriteSaveFile: ld a, [wSaveFileExists] and a jr z, .erase @@ -205,9 +196,8 @@ AskOverwriteSaveFile: ; 14b89 .refused scf ret -; 14baf -SaveTheGame_yesorno: ; 14baf +SaveTheGame_yesorno: ld b, BANK(Text_WouldYouLikeToSaveTheGame) call MapTextbox call LoadMenuTextBox @@ -221,9 +211,8 @@ SaveTheGame_yesorno: ; 14baf pop af and a ret -; 14bcb -CompareLoadedAndSavedPlayerID: ; 14bcb +CompareLoadedAndSavedPlayerID: ld a, BANK(sPlayerData) call GetSRAMBank ld hl, sPlayerData + (wPlayerID - wPlayerData) @@ -237,11 +226,10 @@ CompareLoadedAndSavedPlayerID: ; 14bcb ld a, [wPlayerID + 1] cp c ret -; 14be3 -_SavingDontTurnOffThePower: ; 14be3 +_SavingDontTurnOffThePower: call SavingDontTurnOffThePower -SavedTheGame: ; 14be6 +SavedTheGame: call SaveGameData_ ; wait 32 frames ld c, $20 @@ -265,10 +253,9 @@ SavedTheGame: ; 14be6 ld c, $1e call DelayFrames ret -; 14c10 -SaveGameData_: ; 14c10 +SaveGameData_: ld a, 1 ld [wSaveFileExists], a farcall StageRTCTimeForSave @@ -298,9 +285,8 @@ SaveGameData_: ; 14c10 .ok call CloseSRAM ret -; 14c6b -UpdateStackTop: ; 14c6b +UpdateStackTop: ; sStackTop appears to be unused. ; It could have been used to debug stack overflow during saving. call FindStackTop @@ -327,9 +313,8 @@ UpdateStackTop: ; 14c6b .done call CloseSRAM ret -; 14c90 -FindStackTop: ; 14c90 +FindStackTop: ; Find the furthest point that sp has traversed to. ; This is distinct from the current value of sp. ld hl, wStack - $ff @@ -339,9 +324,8 @@ FindStackTop: ; 14c90 ret nz inc hl jr .loop -; 14c99 -SavingDontTurnOffThePower: ; 14c99 +SavingDontTurnOffThePower: ; Prevent joypad interrupts xor a ld [hJoypadReleased], a @@ -364,10 +348,9 @@ SavingDontTurnOffThePower: ; 14c99 ld c, $10 call DelayFrames ret -; 14cbb -ErasePreviousSave: ; 14cbb +ErasePreviousSave: call EraseBoxes call EraseHallOfFame call EraseLinkBattleStats @@ -383,9 +366,8 @@ ErasePreviousSave: ; 14cbb ld a, $1 ld [wSavedAtLeastOnce], a ret -; 14ce2 -EraseLinkBattleStats: ; 14ce2 +EraseLinkBattleStats: ld a, BANK(sLinkBattleStats) call GetSRAMBank ld hl, sLinkBattleStats @@ -393,9 +375,8 @@ EraseLinkBattleStats: ; 14ce2 xor a call ByteFill jp CloseSRAM -; 14cf4 -EraseMysteryGift: ; 14cf4 +EraseMysteryGift: ld a, BANK(sBackupMysteryGiftItem) call GetSRAMBank ld hl, sBackupMysteryGiftItem @@ -403,9 +384,8 @@ EraseMysteryGift: ; 14cf4 xor a call ByteFill jp CloseSRAM -; 14d06 -EraseHallOfFame: ; 14d06 +EraseHallOfFame: ld a, BANK(sHallOfFame) call GetSRAMBank ld hl, sHallOfFame @@ -413,9 +393,8 @@ EraseHallOfFame: ; 14d06 xor a call ByteFill jp CloseSRAM -; 14d18 -Unreferenced_Function14d18: ; 14d18 +Unreferenced_Function14d18: ; copy .Data to SRA4:a007 ld a, 4 ; MBC30 bank used by JP Crystal; inaccessible by MBC3 call GetSRAMBank @@ -424,9 +403,8 @@ Unreferenced_Function14d18: ; 14d18 ld bc, .DataEnd - .Data call CopyBytes jp CloseSRAM -; 14d2c -.Data: ; 14d2c +.Data: db $0d, $02, $00, $05, $00, $00 db $22, $02, $01, $05, $00, $00 db $03, $04, $05, $08, $03, $05 @@ -435,23 +413,20 @@ Unreferenced_Function14d18: ; 14d18 db $04, $07, $01, $05, $00, $00 db $0f, $05, $14, $07, $05, $05 db $11, $0c, $0c, $06, $06, $04 -; 14d5c .DataEnd -EraseBattleTowerStatus: ; 14d5c +EraseBattleTowerStatus: ld a, BANK(sBattleTowerChallengeState) call GetSRAMBank xor a ld [sBattleTowerChallengeState], a jp CloseSRAM -; 14d68 -SaveData: ; 14d68 +SaveData: call _SaveData ret -; 14d6c -Unreferenced_Function14d6c: ; 14d6c +Unreferenced_Function14d6c: ld a, 4 ; MBC30 bank used by JP Crystal; inaccessible by MBC3 call GetSRAMBank ld a, [$a60b] ; address of MBC30 bank @@ -465,9 +440,8 @@ Unreferenced_Function14d6c: ; 14d6c ld [$a60b], a ; address of MBC30 bank call CloseSRAM ret -; 14d83 -Unreferenced_Function14d83: ; 14d83 +Unreferenced_Function14d83: ld a, 4 ; MBC30 bank used by JP Crystal; inaccessible by MBC3 call GetSRAMBank xor a @@ -475,27 +449,24 @@ Unreferenced_Function14d83: ; 14d83 ld [$a60d], a ; address of MBC30 bank call CloseSRAM ret -; 14d93 -Unreferenced_Function14d93: ; 14d93 +Unreferenced_Function14d93: ld a, 7 ; MBC30 bank used by JP Crystal; inaccessible by MBC3 call GetSRAMBank xor a ld [$a000], a ; address of MBC30 bank call CloseSRAM ret -; 14da0 -HallOfFame_InitSaveIfNeeded: ; 14da0 +HallOfFame_InitSaveIfNeeded: ld a, [wSavedAtLeastOnce] and a ret nz call ErasePreviousSave ret -; 14da9 -ValidateSave: ; 14da9 +ValidateSave: ld a, BANK(sCheckValue1) ; BANK(sCheckValue2) call GetSRAMBank ld a, SAVE_CHECK_VALUE_1 @@ -503,9 +474,8 @@ ValidateSave: ; 14da9 ld a, SAVE_CHECK_VALUE_2 ld [sCheckValue2], a jp CloseSRAM -; 14dbb -SaveOptions: ; 14dbb +SaveOptions: ld a, BANK(sOptions) call GetSRAMBank ld hl, wOptions @@ -516,9 +486,8 @@ SaveOptions: ; 14dbb and $ff ^ (1 << NO_TEXT_SCROLL) ld [sOptions], a jp CloseSRAM -; 14dd7 -SavePlayerData: ; 14dd7 +SavePlayerData: ld a, BANK(sPlayerData) call GetSRAMBank ld hl, wPlayerData @@ -530,9 +499,8 @@ SavePlayerData: ; 14dd7 ld bc, wCurrMapDataEnd - wCurrMapData call CopyBytes jp CloseSRAM -; 14df7 -SavePokemonData: ; 14df7 +SavePokemonData: ld a, BANK(sPokemonData) call GetSRAMBank ld hl, wPokemonData @@ -541,15 +509,13 @@ SavePokemonData: ; 14df7 call CopyBytes call CloseSRAM ret -; 14e0c -SaveBox: ; 14e0c +SaveBox: call GetBoxAddress call SaveBoxAddress ret -; 14e13 -SaveChecksum: ; 14e13 +SaveChecksum: ld hl, sGameData ld bc, sGameDataEnd - sGameData ld a, BANK(sGameData) @@ -561,9 +527,8 @@ SaveChecksum: ; 14e13 ld [sChecksum + 1], a call CloseSRAM ret -; 14e2d -ValidateBackupSave: ; 14e2d +ValidateBackupSave: ld a, BANK(sBackupCheckValue1) ; BANK(sBackupCheckValue2) call GetSRAMBank ld a, SAVE_CHECK_VALUE_1 @@ -572,9 +537,8 @@ ValidateBackupSave: ; 14e2d ld [sBackupCheckValue2], a call CloseSRAM ret -; 14e40 -SaveBackupOptions: ; 14e40 +SaveBackupOptions: ld a, BANK(sBackupOptions) call GetSRAMBank ld hl, wOptions @@ -583,9 +547,8 @@ SaveBackupOptions: ; 14e40 call CopyBytes call CloseSRAM ret -; 14e55 -SaveBackupPlayerData: ; 14e55 +SaveBackupPlayerData: ld a, BANK(sBackupPlayerData) call GetSRAMBank ld hl, wPlayerData @@ -598,9 +561,8 @@ SaveBackupPlayerData: ; 14e55 call CopyBytes call CloseSRAM ret -; 14e76 -SaveBackupPokemonData: ; 14e76 +SaveBackupPokemonData: ld a, BANK(sBackupPokemonData) call GetSRAMBank ld hl, wPokemonData @@ -609,9 +571,8 @@ SaveBackupPokemonData: ; 14e76 call CopyBytes call CloseSRAM ret -; 14e8b -SaveBackupChecksum: ; 14e8b +SaveBackupChecksum: ld hl, sBackupGameData ld bc, sBackupGameDataEnd - sBackupGameData ld a, BANK(sBackupGameData) @@ -623,10 +584,9 @@ SaveBackupChecksum: ; 14e8b ld [sBackupChecksum + 1], a call CloseSRAM ret -; 14ea5 -TryLoadSaveFile: ; 14ea5 (5:4ea5) +TryLoadSaveFile: call VerifyChecksum jr nz, .backup call LoadPlayerData @@ -673,7 +633,7 @@ TryLoadSaveFile: ; 14ea5 (5:4ea5) ret -TryLoadSaveData: ; 14f1c +TryLoadSaveData: xor a ld [wSaveFileExists], a call CheckPrimarySaveFile @@ -720,13 +680,12 @@ TryLoadSaveData: ; 14f1c call CopyBytes call PanicResetClock ret -; 14f7c INCLUDE "data/default_options.asm" -CheckPrimarySaveFile: ; 14f84 +CheckPrimarySaveFile: ld a, BANK(sCheckValue1) ; BANK(sCheckValue2) call GetSRAMBank ld a, [sCheckValue1] @@ -746,9 +705,8 @@ CheckPrimarySaveFile: ; 14f84 .nope call CloseSRAM ret -; 14faf -CheckBackupSaveFile: ; 14faf +CheckBackupSaveFile: ld a, BANK(sBackupCheckValue1) ; BANK(sBackupCheckValue2) call GetSRAMBank ld a, [sBackupCheckValue1] @@ -767,10 +725,9 @@ CheckBackupSaveFile: ; 14faf .nope call CloseSRAM ret -; 14fd7 -LoadPlayerData: ; 14fd7 (5:4fd7) +LoadPlayerData: ld a, BANK(sPlayerData) call GetSRAMBank ld hl, sPlayerData @@ -793,7 +750,7 @@ LoadPlayerData: ; 14fd7 (5:4fd7) call CloseSRAM ret -LoadPokemonData: ; 1500c +LoadPokemonData: ld a, BANK(sPokemonData) call GetSRAMBank ld hl, sPokemonData @@ -802,14 +759,13 @@ LoadPokemonData: ; 1500c call CopyBytes call CloseSRAM ret -; 15021 -LoadBox: ; 15021 (5:5021) +LoadBox: call GetBoxAddress call LoadBoxAddress ret -VerifyChecksum: ; 15028 (5:5028) +VerifyChecksum: ld hl, sGameData ld bc, sGameDataEnd - sGameData ld a, BANK(sGameData) @@ -826,7 +782,7 @@ VerifyChecksum: ; 15028 (5:5028) pop af ret -LoadBackupPlayerData: ; 15046 (5:5046) +LoadBackupPlayerData: ld a, BANK(sBackupPlayerData) call GetSRAMBank ld hl, sBackupPlayerData @@ -840,7 +796,7 @@ LoadBackupPlayerData: ; 15046 (5:5046) call CloseSRAM ret -LoadBackupPokemonData: ; 15067 (5:5067) +LoadBackupPokemonData: ld a, BANK(sBackupPokemonData) call GetSRAMBank ld hl, sBackupPokemonData @@ -850,7 +806,7 @@ LoadBackupPokemonData: ; 15067 (5:5067) call CloseSRAM ret -VerifyBackupChecksum: ; 1507c (5:507c) +VerifyBackupChecksum: ld hl, sBackupGameData ld bc, sBackupGameDataEnd - sBackupGameData ld a, BANK(sBackupGameData) @@ -868,7 +824,7 @@ VerifyBackupChecksum: ; 1507c (5:507c) ret -_SaveData: ; 1509a +_SaveData: ; This is called within two scenarios: ; a) ErasePreviousSave (the process of erasing the save from a previous game file) ; b) unused mobile functionality @@ -895,7 +851,7 @@ _SaveData: ; 1509a jp CloseSRAM -_LoadData: ; 150b9 +_LoadData: ld a, BANK(sCrystalData) call GetSRAMBank ld hl, sCrystalData @@ -915,7 +871,7 @@ _LoadData: ; 150b9 jp CloseSRAM -GetBoxAddress: ; 150d8 +GetBoxAddress: ld a, [wCurBox] cp NUM_BOXES jr c, .ok @@ -940,9 +896,8 @@ endr ld l, a pop af ret -; 150f9 -SaveBoxAddress: ; 150f9 +SaveBoxAddress: ; Save box via wBoxPartialData. ; We do this in three steps because the size of wBoxPartialData is less than ; the size of sBox. @@ -1016,10 +971,9 @@ SaveBoxAddress: ; 150f9 pop hl ret -; 1517d -LoadBoxAddress: ; 1517d (5:517d) +LoadBoxAddress: ; Load box via wBoxPartialData. ; We do this in three steps because the size of wBoxPartialData is less than ; the size of sBox. @@ -1083,7 +1037,7 @@ LoadBoxAddress: ; 1517d (5:517d) ret -EraseBoxes: ; 151fb +EraseBoxes: ld hl, BoxAddresses ld c, NUM_BOXES .next @@ -1123,9 +1077,8 @@ EraseBoxes: ; 151fb dec c jr nz, .next ret -; 1522d -BoxAddresses: ; 1522d +BoxAddresses: ; dbww bank, address, address dbww BANK(sBox1), sBox1, sBox1End dbww BANK(sBox2), sBox2, sBox2End @@ -1141,10 +1094,9 @@ BoxAddresses: ; 1522d dbww BANK(sBox12), sBox12, sBox12End dbww BANK(sBox13), sBox13, sBox13End dbww BANK(sBox14), sBox14, sBox14End -; 15273 -Checksum: ; 15273 +Checksum: ld de, 0 .loop ld a, [hli] @@ -1158,7 +1110,6 @@ Checksum: ; 15273 or c jr nz, .loop ret -; 15283 Text_WouldYouLikeToSaveTheGame: ; 0x15283 |