mirror of
https://github.com/pret/pokecrystal.git
synced 2026-09-26 13:22:52 -04:00
Save the conversion table to SRAM, load it when loading the game, and clear it on new game
Co-Authored-By: aaaaaa123456789 <aaaaaa123456789@acidch.at>
This commit is contained in:
committed by
vulcandth
parent
e860d11b37
commit
dcb610e88d
@@ -100,6 +100,16 @@ ResetWRAM:
|
||||
ret
|
||||
|
||||
_ResetWRAM:
|
||||
ld a, BANK(wPokemonIndexTable)
|
||||
ldh [rSVBK], a
|
||||
ld hl, wPokemonIndexTable
|
||||
ld bc, wPokemonIndexTableEnd - wPokemonIndexTable
|
||||
xor a
|
||||
call ByteFill
|
||||
|
||||
ld a, 1
|
||||
ldh [rSVBK], a
|
||||
|
||||
ld hl, wShadowOAM
|
||||
ld bc, wOptions - wShadowOAM
|
||||
xor a
|
||||
|
||||
+84
-12
@@ -27,8 +27,10 @@ SaveAfterLinkTrade:
|
||||
farcall StageRTCTimeForSave
|
||||
farcall BackupMysteryGift
|
||||
call SavePokemonData
|
||||
call SaveIndexTables
|
||||
call SaveChecksum
|
||||
call SaveBackupPokemonData
|
||||
call SaveBackupIndexTables
|
||||
call SaveBackupChecksum
|
||||
farcall BackupPartyMonMail
|
||||
farcall SaveRTC
|
||||
@@ -95,11 +97,13 @@ MoveMonWOMail_InsertMon_SaveGame:
|
||||
call SaveOptions
|
||||
call SavePlayerData
|
||||
call SavePokemonData
|
||||
call SaveIndexTables
|
||||
call SaveChecksum
|
||||
call ValidateBackupSave
|
||||
call SaveBackupOptions
|
||||
call SaveBackupPlayerData
|
||||
call SaveBackupPokemonData
|
||||
call SaveBackupIndexTables
|
||||
call SaveBackupChecksum
|
||||
farcall BackupPartyMonMail
|
||||
farcall BackupGSBallFlag
|
||||
@@ -244,12 +248,14 @@ SaveGameData:
|
||||
call SaveOptions
|
||||
call SavePlayerData
|
||||
call SavePokemonData
|
||||
call SaveIndexTables
|
||||
call SaveBox
|
||||
call SaveChecksum
|
||||
call ValidateBackupSave
|
||||
call SaveBackupOptions
|
||||
call SaveBackupPlayerData
|
||||
call SaveBackupPokemonData
|
||||
call SaveBackupIndexTables
|
||||
call SaveBackupChecksum
|
||||
call UpdateStackTop
|
||||
farcall BackupPartyMonMail
|
||||
@@ -466,15 +472,32 @@ SavePokemonData:
|
||||
call CloseSRAM
|
||||
ret
|
||||
|
||||
SaveIndexTables:
|
||||
ldh a, [rSVBK]
|
||||
push af
|
||||
ld a, BANK(wPokemonIndexTable)
|
||||
ldh [rSVBK], a
|
||||
; saving is already a long operation, so take the chance to GC the table
|
||||
farcall PokemonTableGarbageCollection
|
||||
ld a, BANK(sPokemonIndexTable)
|
||||
call OpenSRAM
|
||||
ld hl, wPokemonIndexTable
|
||||
ld de, sPokemonIndexTable
|
||||
ld bc, wPokemonIndexTableEnd - wPokemonIndexTable
|
||||
call CopyBytes
|
||||
pop af
|
||||
ldh [rSVBK], a
|
||||
jp CloseSRAM
|
||||
|
||||
SaveBox:
|
||||
call GetBoxAddress
|
||||
call SaveBoxAddress
|
||||
ret
|
||||
|
||||
SaveChecksum:
|
||||
ld hl, sGameData
|
||||
ld bc, sGameDataEnd - sGameData
|
||||
ld a, BANK(sGameData)
|
||||
ld hl, sSaveData
|
||||
ld bc, sSaveDataEnd - sSaveData
|
||||
ld a, BANK(sSaveData)
|
||||
call OpenSRAM
|
||||
call Checksum
|
||||
ld a, e
|
||||
@@ -528,10 +551,25 @@ SaveBackupPokemonData:
|
||||
call CloseSRAM
|
||||
ret
|
||||
|
||||
SaveBackupIndexTables:
|
||||
ld a, BANK(sBackupPokemonIndexTable)
|
||||
call OpenSRAM
|
||||
ldh a, [rSVBK]
|
||||
push af
|
||||
ld a, BANK(wPokemonIndexTable)
|
||||
ldh [rSVBK], a
|
||||
ld hl, wPokemonIndexTable
|
||||
ld de, sBackupPokemonIndexTable
|
||||
ld bc, wPokemonIndexTableEnd - wPokemonIndexTable
|
||||
call CopyBytes
|
||||
pop af
|
||||
ldh [rSVBK], a
|
||||
jp CloseSRAM
|
||||
|
||||
SaveBackupChecksum:
|
||||
ld hl, sBackupGameData
|
||||
ld bc, sBackupGameDataEnd - sBackupGameData
|
||||
ld a, BANK(sBackupGameData)
|
||||
ld hl, sBackupSaveData
|
||||
ld bc, sBackupSaveDataEnd - sBackupSaveData
|
||||
ld a, BANK(sBackupSaveData)
|
||||
call OpenSRAM
|
||||
call Checksum
|
||||
ld a, e
|
||||
@@ -546,6 +584,7 @@ TryLoadSaveFile:
|
||||
jr nz, .backup
|
||||
call LoadPlayerData
|
||||
call LoadPokemonData
|
||||
call LoadIndexTables
|
||||
call LoadBox
|
||||
farcall RestorePartyMonMail
|
||||
farcall RestoreGSBallFlag
|
||||
@@ -554,6 +593,7 @@ TryLoadSaveFile:
|
||||
call SaveBackupOptions
|
||||
call SaveBackupPlayerData
|
||||
call SaveBackupPokemonData
|
||||
call SaveBackupIndexTables
|
||||
call SaveBackupChecksum
|
||||
and a
|
||||
ret
|
||||
@@ -563,6 +603,7 @@ TryLoadSaveFile:
|
||||
jr nz, .corrupt
|
||||
call LoadBackupPlayerData
|
||||
call LoadBackupPokemonData
|
||||
call LoadBackupIndexTables
|
||||
call LoadBox
|
||||
farcall RestorePartyMonMail
|
||||
farcall RestoreGSBallFlag
|
||||
@@ -571,6 +612,7 @@ TryLoadSaveFile:
|
||||
call SaveOptions
|
||||
call SavePlayerData
|
||||
call SavePokemonData
|
||||
call SaveIndexTables
|
||||
call SaveChecksum
|
||||
and a
|
||||
ret
|
||||
@@ -711,15 +753,30 @@ LoadPokemonData:
|
||||
call CloseSRAM
|
||||
ret
|
||||
|
||||
LoadIndexTables:
|
||||
ld a, BANK(sPokemonIndexTable)
|
||||
call OpenSRAM
|
||||
ldh a, [rSVBK]
|
||||
push af
|
||||
ld a, BANK(wPokemonIndexTable)
|
||||
ldh [rSVBK], a
|
||||
ld hl, sPokemonIndexTable
|
||||
ld de, wPokemonIndexTable
|
||||
ld bc, wPokemonIndexTableEnd - wPokemonIndexTable
|
||||
call CopyBytes
|
||||
pop af
|
||||
ldh [rSVBK], a
|
||||
jp CloseSRAM
|
||||
|
||||
LoadBox:
|
||||
call GetBoxAddress
|
||||
call LoadBoxAddress
|
||||
ret
|
||||
|
||||
VerifyChecksum:
|
||||
ld hl, sGameData
|
||||
ld bc, sGameDataEnd - sGameData
|
||||
ld a, BANK(sGameData)
|
||||
ld hl, sSaveData
|
||||
ld bc, sSaveDataEnd - sSaveData
|
||||
ld a, BANK(sSaveData)
|
||||
call OpenSRAM
|
||||
call Checksum
|
||||
ld a, [sChecksum + 0]
|
||||
@@ -757,10 +814,25 @@ LoadBackupPokemonData:
|
||||
call CloseSRAM
|
||||
ret
|
||||
|
||||
LoadBackupIndexTables:
|
||||
ld a, BANK(sBackupPokemonIndexTable)
|
||||
call OpenSRAM
|
||||
ldh a, [rSVBK]
|
||||
push af
|
||||
ld a, BANK(wPokemonIndexTable)
|
||||
ldh [rSVBK], a
|
||||
ld hl, sBackupPokemonIndexTable
|
||||
ld de, wPokemonIndexTable
|
||||
ld bc, wPokemonIndexTableEnd - wPokemonIndexTable
|
||||
call CopyBytes
|
||||
pop af
|
||||
ldh [rSVBK], a
|
||||
jp CloseSRAM
|
||||
|
||||
VerifyBackupChecksum:
|
||||
ld hl, sBackupGameData
|
||||
ld bc, sBackupGameDataEnd - sBackupGameData
|
||||
ld a, BANK(sBackupGameData)
|
||||
ld hl, sBackupSaveData
|
||||
ld bc, sBackupSaveDataEnd - sBackupSaveData
|
||||
ld a, BANK(sBackupSaveData)
|
||||
call OpenSRAM
|
||||
call Checksum
|
||||
ld a, [sBackupChecksum + 0]
|
||||
|
||||
+14
-2
@@ -67,13 +67,19 @@ sBackupOptions:: ds wOptionsEnd - wOptions
|
||||
|
||||
sBackupCheckValue1:: db ; loaded with SAVE_CHECK_VALUE_1, used to check save corruption
|
||||
|
||||
sBackupSaveData::
|
||||
|
||||
sBackupGameData::
|
||||
sBackupPlayerData:: ds wPlayerDataEnd - wPlayerData
|
||||
sBackupCurMapData:: ds wCurMapDataEnd - wCurMapData
|
||||
sBackupPokemonData:: ds wPokemonDataEnd - wPokemonData
|
||||
sBackupGameDataEnd::
|
||||
|
||||
ds $18a
|
||||
sBackupPokemonIndexTable:: ds wPokemonIndexTableEnd - wPokemonIndexTable
|
||||
|
||||
sBackupSaveDataEnd::
|
||||
|
||||
ds $8a
|
||||
|
||||
sBackupChecksum:: dw
|
||||
|
||||
@@ -96,13 +102,19 @@ sOptions:: ds wOptionsEnd - wOptions
|
||||
|
||||
sCheckValue1:: db ; loaded with SAVE_CHECK_VALUE_1, used to check save corruption
|
||||
|
||||
sSaveData::
|
||||
|
||||
sGameData::
|
||||
sPlayerData:: ds wPlayerDataEnd - wPlayerData
|
||||
sCurMapData:: ds wCurMapDataEnd - wCurMapData
|
||||
sPokemonData:: ds wPokemonDataEnd - wPokemonData
|
||||
sGameDataEnd::
|
||||
|
||||
ds $18a
|
||||
sPokemonIndexTable:: ds wPokemonIndexTableEnd - wPokemonIndexTable
|
||||
|
||||
sSaveDataEnd::
|
||||
|
||||
ds $8a
|
||||
|
||||
sChecksum:: dw
|
||||
|
||||
|
||||
Reference in New Issue
Block a user