summaryrefslogtreecommitdiff
path: root/engine/menus/save.asm
diff options
context:
space:
mode:
authorvulcandth <vulcandth@gmail.com>2022-03-26 15:59:36 -0500
committerGitHub <noreply@github.com>2022-03-26 16:59:36 -0400
commitfe8d3c51a4056f0dd61dbef332ad9e714b82089a (patch)
tree871eb178792c4355564b858e79e0e61963e0ffef /engine/menus/save.asm
parent07df4a5f88aa5b9927a0f8a7c317afa57a313ab9 (diff)
Build the Virtual Console patches with `make red_vc` and `make blue_vc` (#351)
Diffstat (limited to 'engine/menus/save.asm')
-rw-r--r--engine/menus/save.asm43
1 files changed, 23 insertions, 20 deletions
diff --git a/engine/menus/save.asm b/engine/menus/save.asm
index 83a5ca9b..fdf69765 100644
--- a/engine/menus/save.asm
+++ b/engine/menus/save.asm
@@ -37,20 +37,23 @@ LoadSAV0:
ld a, $1
ld [MBC1SRamBankingMode], a
ld [MBC1SRamBank], a
- ld hl, sPlayerName ; hero name located in SRAM
- ld bc, sMainDataCheckSum - sPlayerName ; but here checks the full SAV
+; This vc_hook does not have to be in any particular location.
+; It is defined here because it refers to the same labels as the two lines below.
+ vc_hook SaveLimit
+ ld hl, sGameData
+ ld bc, sGameDataEnd - sGameData
call SAVCheckSum
ld c, a
- ld a, [sMainDataCheckSum] ; SAV's checksum
+ ld a, [sMainDataCheckSum]
cp c
jp z, .checkSumsMatched
; If the computed checksum didn't match the saved on, try again.
- ld hl, sPlayerName
- ld bc, sMainDataCheckSum - sPlayerName
+ ld hl, sGameData
+ ld bc, sGameDataEnd - sGameData
call SAVCheckSum
ld c, a
- ld a, [sMainDataCheckSum] ; SAV's checksum
+ ld a, [sMainDataCheckSum]
cp c
jp nz, SAVBadCheckSum
@@ -84,11 +87,11 @@ LoadSAV1:
ld a, $1
ld [MBC1SRamBankingMode], a
ld [MBC1SRamBank], a
- ld hl, sPlayerName ; hero name located in SRAM
- ld bc, sMainDataCheckSum - sPlayerName ; but here checks the full SAV
+ ld hl, sGameData
+ ld bc, sGameDataEnd - sGameData
call SAVCheckSum
ld c, a
- ld a, [sMainDataCheckSum] ; SAV's checksum
+ ld a, [sMainDataCheckSum]
cp c
jr nz, SAVBadCheckSum
ld hl, sCurBoxData
@@ -104,11 +107,11 @@ LoadSAV2:
ld a, $1
ld [MBC1SRamBankingMode], a
ld [MBC1SRamBank], a
- ld hl, sPlayerName ; hero name located in SRAM
- ld bc, sMainDataCheckSum - sPlayerName ; but here checks the full SAV
+ ld hl, sGameData
+ ld bc, sGameDataEnd - sGameData
call SAVCheckSum
ld c, a
- ld a, [sMainDataCheckSum] ; SAV's checksum
+ ld a, [sMainDataCheckSum]
cp c
jp nz, SAVBadCheckSum
ld hl, sPartyData
@@ -219,8 +222,8 @@ SaveSAVtoSRAM0:
call CopyData
ldh a, [hTileAnimations]
ld [sTileAnimations], a
- ld hl, sPlayerName
- ld bc, sMainDataCheckSum - sPlayerName
+ ld hl, sGameData
+ ld bc, sGameDataEnd - sGameData
call SAVCheckSum
ld [sMainDataCheckSum], a
xor a
@@ -239,8 +242,8 @@ SaveSAVtoSRAM1:
ld de, sCurBoxData
ld bc, wBoxDataEnd - wBoxDataStart
call CopyData
- ld hl, sPlayerName
- ld bc, sMainDataCheckSum - sPlayerName
+ ld hl, sGameData
+ ld bc, sGameDataEnd - sGameData
call SAVCheckSum
ld [sMainDataCheckSum], a
xor a
@@ -262,8 +265,8 @@ SaveSAVtoSRAM2:
ld de, sMainData
ld bc, wPokedexSeenEnd - wPokedexOwned
call CopyData
- ld hl, sPlayerName
- ld bc, sMainDataCheckSum - sPlayerName
+ ld hl, sGameData
+ ld bc, sGameDataEnd - sGameData
call SAVCheckSum
ld [sMainDataCheckSum], a
xor a
@@ -612,8 +615,8 @@ SAVCheckRandomID:
ld a, [sPlayerName]
and a
jr z, .next
- ld hl, sPlayerName
- ld bc, sMainDataCheckSum - sPlayerName
+ ld hl, sGameData
+ ld bc, sGameDataEnd - sGameData
call SAVCheckSum
ld c, a
ld a, [sMainDataCheckSum]