diff options
Diffstat (limited to 'engine/menus/save.asm')
-rw-r--r-- | engine/menus/save.asm | 222 |
1 files changed, 74 insertions, 148 deletions
diff --git a/engine/menus/save.asm b/engine/menus/save.asm index efde37ffe..190f5f887 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,8 @@ SaveAfterLinkTrade: ; 14a58 farcall SaveRTC call ResumeGameLogic ret -; 14a83 - -ChangeBoxSaveGame: ; 14a83 (5:4a83) +ChangeBoxSaveGame: push de ld hl, Text_SaveOnBoxSwitch call MenuTextBox @@ -62,7 +60,7 @@ ChangeBoxSaveGame: ; 14a83 (5:4a83) pop de ret -Link_SaveGame: ; 14ab2 +Link_SaveGame: call AskOverwriteSaveFile jr c, .refused call PauseGameLogic @@ -72,9 +70,8 @@ Link_SaveGame: ; 14ab2 .refused ret -; 14ac2 -MoveMonWOMail_SaveGame: ; 14ac2 +MoveMonWOMail_SaveGame: call PauseGameLogic push de call SaveBox @@ -84,16 +81,15 @@ MoveMonWOMail_SaveGame: ; 14ac2 call LoadBox call ResumeGameLogic ret -; 14ad5 -MoveMonWOMail_InsertMon_SaveGame: ; 14ad5 +MoveMonWOMail_InsertMon_SaveGame: call PauseGameLogic push de call SaveBox pop de ld a, e ld [wCurBox], a - ld a, $1 + ld a, TRUE ld [wSaveFileExists], a farcall StageRTCTimeForSave farcall BackupMysteryGift @@ -117,9 +113,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 +131,18 @@ 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 +162,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 +194,8 @@ AskOverwriteSaveFile: ; 14b89 .refused scf ret -; 14baf -SaveTheGame_yesorno: ; 14baf +SaveTheGame_yesorno: ld b, BANK(Text_WouldYouLikeToSaveTheGame) call MapTextbox call LoadMenuTextBox @@ -221,9 +209,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 +224,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,11 +251,9 @@ SavedTheGame: ; 14be6 ld c, $1e call DelayFrames ret -; 14c10 - -SaveGameData_: ; 14c10 - ld a, 1 +SaveGameData_: + ld a, TRUE ld [wSaveFileExists], a farcall StageRTCTimeForSave farcall BackupMysteryGift @@ -298,9 +282,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 +310,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 +321,8 @@ FindStackTop: ; 14c90 ret nz inc hl jr .loop -; 14c99 -SavingDontTurnOffThePower: ; 14c99 +SavingDontTurnOffThePower: ; Prevent joypad interrupts xor a ld [hJoypadReleased], a @@ -364,10 +345,8 @@ SavingDontTurnOffThePower: ; 14c99 ld c, $10 call DelayFrames ret -; 14cbb - -ErasePreviousSave: ; 14cbb +ErasePreviousSave: call EraseBoxes call EraseHallOfFame call EraseLinkBattleStats @@ -383,9 +362,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 +371,8 @@ EraseLinkBattleStats: ; 14ce2 xor a call ByteFill jp CloseSRAM -; 14cf4 -EraseMysteryGift: ; 14cf4 +EraseMysteryGift: ld a, BANK(sBackupMysteryGiftItem) call GetSRAMBank ld hl, sBackupMysteryGiftItem @@ -403,9 +380,8 @@ EraseMysteryGift: ; 14cf4 xor a call ByteFill jp CloseSRAM -; 14d06 -EraseHallOfFame: ; 14d06 +EraseHallOfFame: ld a, BANK(sHallOfFame) call GetSRAMBank ld hl, sHallOfFame @@ -413,9 +389,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 +399,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 +409,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 +436,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 +445,23 @@ 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 +469,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 +481,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 +494,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 +504,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 +522,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 +532,8 @@ ValidateBackupSave: ; 14e2d ld [sBackupCheckValue2], a call CloseSRAM ret -; 14e40 -SaveBackupOptions: ; 14e40 +SaveBackupOptions: ld a, BANK(sBackupOptions) call GetSRAMBank ld hl, wOptions @@ -583,9 +542,8 @@ SaveBackupOptions: ; 14e40 call CopyBytes call CloseSRAM ret -; 14e55 -SaveBackupPlayerData: ; 14e55 +SaveBackupPlayerData: ld a, BANK(sBackupPlayerData) call GetSRAMBank ld hl, wPlayerData @@ -598,9 +556,8 @@ SaveBackupPlayerData: ; 14e55 call CopyBytes call CloseSRAM ret -; 14e76 -SaveBackupPokemonData: ; 14e76 +SaveBackupPokemonData: ld a, BANK(sBackupPokemonData) call GetSRAMBank ld hl, wPokemonData @@ -609,9 +566,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 +579,8 @@ SaveBackupChecksum: ; 14e8b ld [sBackupChecksum + 1], a call CloseSRAM ret -; 14ea5 - -TryLoadSaveFile: ; 14ea5 (5:4ea5) +TryLoadSaveFile: call VerifyChecksum jr nz, .backup call LoadPlayerData @@ -672,9 +626,8 @@ TryLoadSaveFile: ; 14ea5 (5:4ea5) scf ret - -TryLoadSaveData: ; 14f1c - xor a +TryLoadSaveData: + xor a ; FALSE ld [wSaveFileExists], a call CheckPrimarySaveFile ld a, [wSaveFileExists] @@ -720,13 +673,10 @@ 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] @@ -740,15 +690,14 @@ CheckPrimarySaveFile: ; 14f84 ld bc, wOptionsEnd - wOptions call CopyBytes call CloseSRAM - ld a, $1 + ld a, TRUE ld [wSaveFileExists], a .nope call CloseSRAM ret -; 14faf -CheckBackupSaveFile: ; 14faf +CheckBackupSaveFile: ld a, BANK(sBackupCheckValue1) ; BANK(sBackupCheckValue2) call GetSRAMBank ld a, [sBackupCheckValue1] @@ -767,10 +716,8 @@ CheckBackupSaveFile: ; 14faf .nope call CloseSRAM ret -; 14fd7 - -LoadPlayerData: ; 14fd7 (5:4fd7) +LoadPlayerData: ld a, BANK(sPlayerData) call GetSRAMBank ld hl, sPlayerData @@ -793,7 +740,7 @@ LoadPlayerData: ; 14fd7 (5:4fd7) call CloseSRAM ret -LoadPokemonData: ; 1500c +LoadPokemonData: ld a, BANK(sPokemonData) call GetSRAMBank ld hl, sPokemonData @@ -802,14 +749,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 +772,7 @@ VerifyChecksum: ; 15028 (5:5028) pop af ret -LoadBackupPlayerData: ; 15046 (5:5046) +LoadBackupPlayerData: ld a, BANK(sBackupPlayerData) call GetSRAMBank ld hl, sBackupPlayerData @@ -840,7 +786,7 @@ LoadBackupPlayerData: ; 15046 (5:5046) call CloseSRAM ret -LoadBackupPokemonData: ; 15067 (5:5067) +LoadBackupPokemonData: ld a, BANK(sBackupPokemonData) call GetSRAMBank ld hl, sBackupPokemonData @@ -850,7 +796,7 @@ LoadBackupPokemonData: ; 15067 (5:5067) call CloseSRAM ret -VerifyBackupChecksum: ; 1507c (5:507c) +VerifyBackupChecksum: ld hl, sBackupGameData ld bc, sBackupGameDataEnd - sBackupGameData ld a, BANK(sBackupGameData) @@ -867,8 +813,7 @@ VerifyBackupChecksum: ; 1507c (5:507c) pop af 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 @@ -894,8 +839,7 @@ _SaveData: ; 1509a jp CloseSRAM - -_LoadData: ; 150b9 +_LoadData: ld a, BANK(sCrystalData) call GetSRAMBank ld hl, sCrystalData @@ -914,8 +858,7 @@ _LoadData: ; 150b9 jp CloseSRAM - -GetBoxAddress: ; 150d8 +GetBoxAddress: ld a, [wCurBox] cp NUM_BOXES jr c, .ok @@ -940,9 +883,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 +958,8 @@ 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. @@ -1082,8 +1022,7 @@ LoadBoxAddress: ; 1517d (5:517d) pop hl ret - -EraseBoxes: ; 151fb +EraseBoxes: ld hl, BoxAddresses ld c, NUM_BOXES .next @@ -1123,9 +1062,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 +1079,8 @@ 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,53 +1094,43 @@ Checksum: ; 15273 or c jr nz, .loop ret -; 15283 - -Text_WouldYouLikeToSaveTheGame: ; 0x15283 +Text_WouldYouLikeToSaveTheGame: ; Would you like to save the game? text_jump UnknownText_0x1c454b db "@" -; 0x15288 -Text_SavingDontTurnOffThePower: ; 0x15288 +Text_SavingDontTurnOffThePower: ; SAVING… DON'T TURN OFF THE POWER. text_jump UnknownText_0x1c456d db "@" -; 0x1528d -Text_PlayerSavedTheGame: ; 0x1528d +Text_PlayerSavedTheGame: ; saved the game. text_jump UnknownText_0x1c4590 db "@" -; 0x15292 -Text_AlreadyASaveFile: ; 0x15292 +Text_AlreadyASaveFile: ; There is already a save file. Is it OK to overwrite? text_jump UnknownText_0x1c45a3 db "@" -; 0x15297 -Text_AnotherSaveFile: ; 0x15297 +Text_AnotherSaveFile: ; There is another save file. Is it OK to overwrite? text_jump UnknownText_0x1c45d9 db "@" -; 0x1529c -Text_SaveFileCorrupted: ; 0x1529c +Text_SaveFileCorrupted: ; The save file is corrupted! text_jump UnknownText_0x1c460d db "@" -; 0x152a1 -Text_SaveOnBoxSwitch: ; 0x152a1 +Text_SaveOnBoxSwitch: ; When you change a #MON BOX, data will be saved. OK? text_jump UnknownText_0x1c462a db "@" -; 0x152a6 -Text_SaveOnMoveMonWOMail: ; 0x152a6 +Text_SaveOnMoveMonWOMail: ; Each time you move a #MON, data will be saved. OK? text_jump UnknownText_0x1c465f db "@" -; 0x152ab |