summaryrefslogtreecommitdiff
path: root/engine/save.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/save.asm')
-rwxr-xr-xengine/save.asm525
1 files changed, 271 insertions, 254 deletions
diff --git a/engine/save.asm b/engine/save.asm
index d3127f04..4fb2c4c8 100755
--- a/engine/save.asm
+++ b/engine/save.asm
@@ -1,14 +1,14 @@
-LoadSAV: ; 735e8 (1c:75e8)
+LoadSAV:
;(if carry -> write
;"the file data is destroyed")
call ClearScreen
call LoadFontTilePatterns
call LoadTextBoxTilePatterns
- call LoadSAVCheckSum
+ call LoadSAV0
jr c, .badsum
- call LoadSAVCheckSum1
+ call LoadSAV1
jr c, .badsum
- call LoadSAVCheckSum2
+ call LoadSAV2
jr c, .badsum
ld a, $2 ; good checksum
jr .goodsum
@@ -18,129 +18,132 @@ LoadSAV: ; 735e8 (1c:75e8)
set 6, [hl]
ld hl, FileDataDestroyedText
call PrintText
- ld c, $64
+ ld c, 100
call DelayFrames
pop hl
res 6, [hl]
ld a, $1 ; bad checksum
.goodsum
- ld [wd088], a ; checksum flag
+ ld [wSaveFileStatus], a
ret
-FileDataDestroyedText: ; 7361e (1c:761e)
+FileDataDestroyedText:
TX_FAR _FileDataDestroyedText
db "@"
-LoadSAVCheckSum: ; 73623 (1c:7623)
+LoadSAV0:
ld a, SRAM_ENABLE
ld [MBC1SRamEnable], a
ld a, $1
ld [MBC1SRamBankingMode], a
ld [MBC1SRamBank], a
- ld hl, $a598 ; hero name located in SRAM
- ld bc, $f8b ; but here checks the full SAV
+ ld hl, sPlayerName ; hero name located in SRAM
+ ld bc, sMainDataCheckSum - sPlayerName ; but here checks the full SAV
call SAVCheckSum
ld c, a
- ld a, [$b523] ; SAV's checksum
+ ld a, [sMainDataCheckSum] ; SAV's checksum
cp c
- jp z, .Func_73652
- ld hl, $a598
- ld bc, $f8b
+ jp z, .checkSumsMatched
+
+; If the computed checksum didn't match the saved on, try again.
+ ld hl, sPlayerName
+ ld bc, sMainDataCheckSum - sPlayerName
call SAVCheckSum
ld c, a
- ld a, [$b523] ; SAV's checksum
+ ld a, [sMainDataCheckSum] ; SAV's checksum
cp c
jp nz, SAVBadCheckSum
-.Func_73652 ; 73652 (1c:7652)
- ld hl, $a598
- ld de, wPlayerName ; wd158
- ld bc, $b
+.checkSumsMatched
+ ld hl, sPlayerName
+ ld de, wPlayerName
+ ld bc, NAME_LENGTH
call CopyData
- ld hl, $a5a3
- ld de, wPokedexOwned
- ld bc, $789
+ ld hl, sMainData
+ ld de, wMainDataStart
+ ld bc, wMainDataEnd - wMainDataStart
call CopyData
- ld hl, W_CURMAPTILESET
+ ld hl, wCurMapTileset
set 7, [hl]
- ld hl, $ad2c
- ld de, wSpriteStateData1
- ld bc, $200
+ ld hl, sSpriteData
+ ld de, wSpriteDataStart
+ ld bc, wSpriteDataEnd - wSpriteDataStart
call CopyData
- ld a, [$b522]
+ ld a, [sTilesetType]
ld [hTilesetType], a
- ld hl, $b0c0
- ld de, W_NUMINBOX
- ld bc, wBoxMonNicksEnd - W_NUMINBOX
+ ld hl, sCurBoxData
+ ld de, wBoxDataStart
+ ld bc, wBoxDataEnd - wBoxDataStart
call CopyData
and a
jp SAVGoodChecksum
-LoadSAVCheckSum1: ; 73690 (1c:7690)
+LoadSAV1:
ld a, SRAM_ENABLE
ld [MBC1SRamEnable], a
ld a, $1
ld [MBC1SRamBankingMode], a
ld [MBC1SRamBank], a
- ld hl, $a598 ; hero name located in SRAM
- ld bc, $f8b ; but here checks the full SAV
+ ld hl, sPlayerName ; hero name located in SRAM
+ ld bc, sMainDataCheckSum - sPlayerName ; but here checks the full SAV
call SAVCheckSum
ld c, a
- ld a, [$b523] ; SAV's checksum
+ ld a, [sMainDataCheckSum] ; SAV's checksum
cp c
jr nz, SAVBadCheckSum
- ld hl, $b0c0
- ld de, W_NUMINBOX
- ld bc, wBoxMonNicksEnd - W_NUMINBOX
+ ld hl, sCurBoxData
+ ld de, wBoxDataStart
+ ld bc, wBoxDataEnd - wBoxDataStart
call CopyData
and a
jp SAVGoodChecksum
-LoadSAVCheckSum2: ; 736bd (1c:76bd)
+LoadSAV2:
ld a, SRAM_ENABLE
ld [MBC1SRamEnable], a
ld a, $1
ld [MBC1SRamBankingMode], a
ld [MBC1SRamBank], a
- ld hl, $a598 ; hero name located in SRAM
- ld bc, $f8b ; but here checks the full SAV
+ ld hl, sPlayerName ; hero name located in SRAM
+ ld bc, sMainDataCheckSum - sPlayerName ; but here checks the full SAV
call SAVCheckSum
ld c, a
- ld a, [$b523] ; SAV's checksum
+ ld a, [sMainDataCheckSum] ; SAV's checksum
cp c
jp nz, SAVBadCheckSum
- ld hl, $af2c
- ld de, wPartyCount ; wPartyCount
- ld bc, $194
+ ld hl, sPartyData
+ ld de, wPartyDataStart
+ ld bc, wPartyDataEnd - wPartyDataStart
call CopyData
- ld hl, $a5a3
- ld de, wPokedexOwned ; wPokedexOwned
+ ld hl, sMainData
+ ld de, wPokedexOwned
ld bc, wPokedexSeenEnd - wPokedexOwned
call CopyData
and a
jp SAVGoodChecksum
-SAVBadCheckSum: ; 736f7 (1c:76f7)
+SAVBadCheckSum:
scf
-SAVGoodChecksum: ; 736f8 (1c:76f8)
+SAVGoodChecksum:
ld a, $0
ld [MBC1SRamBankingMode], a
ld [MBC1SRamEnable], a
ret
-Func_73701: ; 0x73701
- call LoadSAVCheckSum
- call LoadSAVCheckSum1
- jp LoadSAVCheckSum2
+LoadSAVIgnoreBadCheckSum:
+; unused function that loads save data and ignores bad checksums
+ call LoadSAV0
+ call LoadSAV1
+ jp LoadSAV2
-SaveSAV: ;$770a
+SaveSAV:
callba PrintSaveScreenText
ld hl,WouldYouLikeToSaveText
call SaveSAVConfirm
and a ;|0 = Yes|1 = No|
ret nz
- ld a,[wd088]
+ ld a,[wSaveFileStatus]
dec a
jr z,.save
call SAVCheckRandomID
@@ -149,135 +152,135 @@ SaveSAV: ;$770a
call SaveSAVConfirm
and a
ret nz
-.save ;$772d
- call SaveSAVtoSRAM ;$7848
- hlCoord 1, 13
- ld bc,$0412
- call ClearScreenArea ; clear area 4x12 starting at 13,1
- hlCoord 1, 14
+.save
+ call SaveSAVtoSRAM
+ coord hl, 1, 13
+ lb bc, 4, 18
+ call ClearScreenArea
+ coord hl, 1, 14
ld de,NowSavingString
call PlaceString
- ld c,$78
+ ld c,120
call DelayFrames
ld hl,GameSavedText
call PrintText
- ld a, (SFX_02_5d - SFX_Headers_02) / 3 ;sound for saved game
+ ld a, SFX_SAVE
call PlaySoundWaitForCurrent
call WaitForSoundToFinish
- ld c,$1e
+ ld c,30
jp DelayFrames
NowSavingString:
db "Now saving...@"
-SaveSAVConfirm: ; 73768 (1c:7768)
+SaveSAVConfirm:
call PrintText
- hlCoord 0, 7
- ld bc,$0801
+ coord hl, 0, 7
+ lb bc, 8, 1
ld a,TWO_OPTION_MENU
ld [wTextBoxID],a
call DisplayTextBoxID ; yes/no menu
ld a,[wCurrentMenuItem]
ret
-WouldYouLikeToSaveText: ; 0x7377d
+WouldYouLikeToSaveText:
TX_FAR _WouldYouLikeToSaveText
db "@"
-GameSavedText: ; 73782 (1c:7782)
+GameSavedText:
TX_FAR _GameSavedText
db "@"
-OlderFileWillBeErasedText: ; 73787 (1c:7787)
+OlderFileWillBeErasedText:
TX_FAR _OlderFileWillBeErasedText
db "@"
-SaveSAVtoSRAM0: ; 7378c (1c:778c)
+SaveSAVtoSRAM0:
ld a, SRAM_ENABLE
ld [MBC1SRamEnable], a
ld a, $1
ld [MBC1SRamBankingMode], a
ld [MBC1SRamBank], a
ld hl, wPlayerName
- ld de, $a598
- ld bc, $b
+ ld de, sPlayerName
+ ld bc, NAME_LENGTH
call CopyData
- ld hl, wPokedexOwned
- ld de, $a5a3
- ld bc, W_NUMINBOX - wPokedexOwned
+ ld hl, wMainDataStart
+ ld de, sMainData
+ ld bc, wMainDataEnd - wMainDataStart
call CopyData
- ld hl, wSpriteStateData1
- ld de, $ad2c
- ld bc, $200
+ ld hl, wSpriteDataStart
+ ld de, sSpriteData
+ ld bc, wSpriteDataEnd - wSpriteDataStart
call CopyData
- ld hl, W_NUMINBOX
- ld de, $b0c0
- ld bc, wBoxMonNicksEnd - W_NUMINBOX
+ ld hl, wBoxDataStart
+ ld de, sCurBoxData
+ ld bc, wBoxDataEnd - wBoxDataStart
call CopyData
ld a, [hTilesetType]
- ld [$b522], a
- ld hl, $a598
- ld bc, $f8b
+ ld [sTilesetType], a
+ ld hl, sPlayerName
+ ld bc, sMainDataCheckSum - sPlayerName
call SAVCheckSum
- ld [$b523], a
+ ld [sMainDataCheckSum], a
xor a
ld [MBC1SRamBankingMode], a
ld [MBC1SRamEnable], a
ret
-SaveSAVtoSRAM1: ; 737e2 (1c:77e2)
+SaveSAVtoSRAM1:
; stored pokémon
ld a, SRAM_ENABLE
ld [MBC1SRamEnable], a
ld a, $1
ld [MBC1SRamBankingMode], a
ld [MBC1SRamBank], a
- ld hl, W_NUMINBOX
- ld de, $b0c0
- ld bc, wBoxMonNicksEnd - W_NUMINBOX
+ ld hl, wBoxDataStart
+ ld de, sCurBoxData
+ ld bc, wBoxDataEnd - wBoxDataStart
call CopyData
- ld hl, $a598
- ld bc, $f8b
+ ld hl, sPlayerName
+ ld bc, sMainDataCheckSum - sPlayerName
call SAVCheckSum
- ld [$b523], a
+ ld [sMainDataCheckSum], a
xor a
ld [MBC1SRamBankingMode], a
ld [MBC1SRamEnable], a
ret
-SaveSAVtoSRAM2: ; 7380f (1c:780f)
+SaveSAVtoSRAM2:
ld a, SRAM_ENABLE
ld [MBC1SRamEnable], a
ld a, $1
ld [MBC1SRamBankingMode], a
ld [MBC1SRamBank], a
- ld hl, wPartyCount
- ld de, $af2c
- ld bc, wPokedexOwned - wPartyCount
+ ld hl, wPartyDataStart
+ ld de, sPartyData
+ ld bc, wPartyDataEnd - wPartyDataStart
call CopyData
ld hl, wPokedexOwned ; pokédex only
- ld de, $a5a3
+ ld de, sMainData
ld bc, wPokedexSeenEnd - wPokedexOwned
call CopyData
- ld hl, $a598
- ld bc, $f8b
+ ld hl, sPlayerName
+ ld bc, sMainDataCheckSum - sPlayerName
call SAVCheckSum
- ld [$b523], a
+ ld [sMainDataCheckSum], a
xor a
ld [MBC1SRamBankingMode], a
ld [MBC1SRamEnable], a
ret
-SaveSAVtoSRAM: ; 73848 (1c:7848)
+SaveSAVtoSRAM:
ld a, $2
- ld [wd088], a
+ ld [wSaveFileStatus], a
call SaveSAVtoSRAM0
call SaveSAVtoSRAM1
jp SaveSAVtoSRAM2
-SAVCheckSum: ; 73856 (1c:7856)
+SAVCheckSum:
;Check Sum (result[1 byte] is complemented)
- ld d, $0
+ ld d, 0
.loop
ld a, [hli]
add d
@@ -290,35 +293,37 @@ SAVCheckSum: ; 73856 (1c:7856)
cpl
ret
-Func_73863: ; 73863 (1c:7863)
- ld hl, $a000
- ld de, $ba4d
- ld b, $6
-.asm_7386b
+CalcIndividualBoxCheckSums:
+ ld hl, sBox1 ; sBox7
+ ld de, sBank2IndividualBoxChecksums ; sBank3IndividualBoxChecksums
+ ld b, NUM_BOXES / 2
+.loop
push bc
push de
- ld bc, $462
+ ld bc, wBoxDataEnd - wBoxDataStart
call SAVCheckSum
pop de
ld [de], a
inc de
pop bc
dec b
- jr nz, .asm_7386b
+ jr nz, .loop
ret
-Func_7387b: ; 7387b (1c:787b)
- ld hl, PointerTable_73895 ; $7895
- ld a, [wd5a0]
+GetBoxSRAMLocation:
+; in: a = box num
+; out: b = box SRAM bank, hl = pointer to start of box
+ ld hl, BoxSRAMPointerTable
+ ld a, [wCurrentBoxNum]
and $7f
- cp $6
- ld b, $2
- jr c, .asm_7388c
+ cp NUM_BOXES / 2
+ ld b, 2
+ jr c, .next
inc b
- sub $6
-.asm_7388c
+ sub NUM_BOXES / 2
+.next
ld e, a
- ld d, $0
+ ld d, 0
add hl, de
add hl, de
ld a, [hli]
@@ -326,45 +331,45 @@ Func_7387b: ; 7387b (1c:787b)
ld l, a
ret
-PointerTable_73895: ; 73895 (1c:7895)
- dw $A000
- dw $A462
- dw $A8C4
- dw $AD26
- dw $B188
- dw $B5EA
+BoxSRAMPointerTable:
+ dw sBox1 ; sBox7
+ dw sBox2 ; sBox8
+ dw sBox3 ; sBox9
+ dw sBox4 ; sBox10
+ dw sBox5 ; sBox11
+ dw sBox6 ; sBox12
-ChangeBox:: ; 738a1 (1c:78a1)
+ChangeBox::
ld hl, WhenYouChangeBoxText
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem]
and a
ret nz ; return if No was chosen
- ld hl, wd5a0
- bit 7, [hl]
- call z, Func_73a29
- call Func_7393f
+ ld hl, wCurrentBoxNum
+ bit 7, [hl] ; is it the first time player is changing the box?
+ call z, EmptyAllSRAMBoxes ; if so, empty all boxes in SRAM
+ call DisplayChangeBoxMenu
call UpdateSprites
ld hl, hFlags_0xFFF6
set 1, [hl]
call HandleMenuInput
ld hl, hFlags_0xFFF6
res 1, [hl]
- bit 1, a
+ bit 1, a ; pressed b
ret nz
- call Func_7387b
+ call GetBoxSRAMLocation
ld e, l
ld d, h
- ld hl, W_NUMINBOX
- call Func_7390e
+ ld hl, wBoxDataStart
+ call CopyBoxToOrFromSRAM ; copy old box from WRAM to SRAM
ld a, [wCurrentMenuItem]
set 7, a
- ld [wd5a0], a
- call Func_7387b
- ld de, W_NUMINBOX
- call Func_7390e
- ld hl, W_MAPTEXTPTR
+ ld [wCurrentBoxNum], a
+ call GetBoxSRAMLocation
+ ld de, wBoxDataStart
+ call CopyBoxToOrFromSRAM ; copy new box from SRAM to WRAM
+ ld hl, wMapTextPtr
ld de, wChangeBoxSavedMapTextPointer
ld a, [hli]
ld [de], a
@@ -375,16 +380,17 @@ ChangeBox:: ; 738a1 (1c:78a1)
call SaveSAVtoSRAM
ld hl, wChangeBoxSavedMapTextPointer
call SetMapTextPointer
- ld a, (SFX_02_5d - SFX_Headers_02) / 3
+ ld a, SFX_SAVE
call PlaySoundWaitForCurrent
call WaitForSoundToFinish
ret
-WhenYouChangeBoxText: ; 73909 (1c:7909)
+WhenYouChangeBoxText:
TX_FAR _WhenYouChangeBoxText
db "@"
-Func_7390e: ; 7390e (1c:790e)
+CopyBoxToOrFromSRAM:
+; copy an entire box from hl to de with b as the SRAM bank
push hl
ld a, SRAM_ENABLE
ld [MBC1SRamEnable], a
@@ -392,99 +398,102 @@ Func_7390e: ; 7390e (1c:790e)
ld [MBC1SRamBankingMode], a
ld a, b
ld [MBC1SRamBank], a
- ld bc, $462
+ ld bc, wBoxDataEnd - wBoxDataStart
call CopyData
pop hl
+
+; mark the memory that the box was copied from as am empty box
xor a
ld [hli], a
dec a
ld [hl], a
- ld hl, $a000
- ld bc, $1a4c
+
+ ld hl, sBox1 ; sBox7
+ ld bc, sBank2AllBoxesChecksum - sBox1
call SAVCheckSum
- ld [$ba4c], a
- call Func_73863
+ ld [sBank2AllBoxesChecksum], a ; sBank3AllBoxesChecksum
+ call CalcIndividualBoxCheckSums
xor a
ld [MBC1SRamBankingMode], a
ld [MBC1SRamEnable], a
ret
-Func_7393f: ; 7393f (1c:793f)
+DisplayChangeBoxMenu:
xor a
- ld [H_AUTOBGTRANSFERENABLED], a ; $ffba
- ld a, $3
- ld [wMenuWatchedKeys], a ; wMenuWatchedKeys
- ld a, $b
- ld [wMaxMenuItem], a ; wMaxMenuItem
- ld a, $1
- ld [wTopMenuItemY], a ; wTopMenuItemY
- ld a, $c
- ld [wTopMenuItemX], a ; wTopMenuItemX
+ ld [H_AUTOBGTRANSFERENABLED], a
+ ld a, A_BUTTON | B_BUTTON
+ ld [wMenuWatchedKeys], a
+ ld a, 11
+ ld [wMaxMenuItem], a
+ ld a, 1
+ ld [wTopMenuItemY], a
+ ld a, 12
+ ld [wTopMenuItemX], a
xor a
- ld [wcc37], a
- ld a, [wd5a0]
+ ld [wMenuWatchMovingOutOfBounds], a
+ ld a, [wCurrentBoxNum]
and $7f
- ld [wCurrentMenuItem], a ; wCurrentMenuItem
- ld [wLastMenuItem], a ; wLastMenuItem
- ld hl, wTileMap
- ld b, $2
- ld c, $9
+ ld [wCurrentMenuItem], a
+ ld [wLastMenuItem], a
+ coord hl, 0, 0
+ ld b, 2
+ ld c, 9
call TextBoxBorder
ld hl, ChooseABoxText
call PrintText
- hlCoord 11, 0
- ld b, $c
- ld c, $7
+ coord hl, 11, 0
+ ld b, 12
+ ld c, 7
call TextBoxBorder
ld hl, hFlags_0xFFF6
set 2, [hl]
- ld de, BoxNames ; $79d9
- hlCoord 13, 1
+ ld de, BoxNames
+ coord hl, 13, 1
call PlaceString
ld hl, hFlags_0xFFF6
res 2, [hl]
- ld a, [wd5a0]
+ ld a, [wCurrentBoxNum]
and $7f
cp 9
- jr c, .asm_739a6
+ jr c, .singleDigitBoxNum
sub 9
- hlCoord 8, 2
+ coord hl, 8, 2
ld [hl], "1"
add "0"
- jr .asm_739a8
-.asm_739a6
+ jr .next
+.singleDigitBoxNum
add "1"
-.asm_739a8
+.next
Coorda 9, 2
- hlCoord 1, 2
+ coord hl, 1, 2
ld de, BoxNoText
call PlaceString
- call Func_73a84
- hlCoord 18, 1
- ld de, wWhichTrade ; wWhichTrade
- ld bc, $14
+ call GetMonCountsForAllBoxes
+ coord hl, 18, 1
+ ld de, wBoxMonCounts
+ ld bc, SCREEN_WIDTH
ld a, $c
-.asm_739c2
+.loop
push af
ld a, [de]
- and a
- jr z, .asm_739c9
- ld [hl], $78
-.asm_739c9
+ and a ; is the box empty?
+ jr z, .skipPlacingPokeball
+ ld [hl], $78 ; place pokeball tile next to box name if box not empty
+.skipPlacingPokeball
add hl, bc
inc de
pop af
dec a
- jr nz, .asm_739c2
- ld a, $1
- ld [H_AUTOBGTRANSFERENABLED], a ; $ffba
+ jr nz, .loop
+ ld a, 1
+ ld [H_AUTOBGTRANSFERENABLED], a
ret
-ChooseABoxText: ; 739d4 (1c:79d4)
+ChooseABoxText:
TX_FAR _ChooseABoxText
db "@"
-BoxNames: ; 739d9 (1c:79d9)
+BoxNames:
db "BOX 1"
next "BOX 2"
next "BOX 3"
@@ -498,54 +507,57 @@ BoxNames: ; 739d9 (1c:79d9)
next "BOX11"
next "BOX12@"
-BoxNoText: ; 73a21 (1c:7a21)
+BoxNoText:
db "BOX No.@"
-Func_73a29: ; 73a29 (1c:7a29)
+EmptyAllSRAMBoxes:
+; marks all boxes in SRAM as empty (initialisation for the first time the
+; player changes the box)
ld a, SRAM_ENABLE
ld [MBC1SRamEnable], a
ld a, $1
ld [MBC1SRamBankingMode], a
- ld a, $2
+ ld a, 2
ld [MBC1SRamBank], a
- call Func_73a4b
- ld a, $3
+ call EmptySRAMBoxesInBank
+ ld a, 3
ld [MBC1SRamBank], a
- call Func_73a4b
+ call EmptySRAMBoxesInBank
xor a
ld [MBC1SRamBankingMode], a
ld [MBC1SRamEnable], a
ret
-Func_73a4b: ; 73a4b (1c:7a4b)
- ld hl, $a000
- call Func_73a7f
- ld hl, $a462
- call Func_73a7f
- ld hl, $a8c4
- call Func_73a7f
- ld hl, $ad26
- call Func_73a7f
- ld hl, $b188
- call Func_73a7f
- ld hl, $b5ea
- call Func_73a7f
- ld hl, $a000
- ld bc, $1a4c
+EmptySRAMBoxesInBank:
+; marks every box in the current SRAM bank as empty
+ ld hl, sBox1 ; sBox7
+ call EmptySRAMBox
+ ld hl, sBox2 ; sBox8
+ call EmptySRAMBox
+ ld hl, sBox3 ; sBox9
+ call EmptySRAMBox
+ ld hl, sBox4 ; sBox10
+ call EmptySRAMBox
+ ld hl, sBox5 ; sBox11
+ call EmptySRAMBox
+ ld hl, sBox6 ; sBox12
+ call EmptySRAMBox
+ ld hl, sBox1 ; sBox7
+ ld bc, sBank2AllBoxesChecksum - sBox1
call SAVCheckSum
- ld [$ba4c], a
- call Func_73863
+ ld [sBank2AllBoxesChecksum], a ; sBank3AllBoxesChecksum
+ call CalcIndividualBoxCheckSums
ret
-Func_73a7f: ; 73a7f (1c:7a7f)
+EmptySRAMBox:
xor a
ld [hli], a
dec a
ld [hl], a
ret
-Func_73a84: ; 73a84 (1c:7a84)
- ld hl, wWhichTrade ; wWhichTrade
+GetMonCountsForAllBoxes:
+ ld hl, wBoxMonCounts
push hl
ld a, SRAM_ENABLE
ld [MBC1SRamEnable], a
@@ -553,58 +565,61 @@ Func_73a84: ; 73a84 (1c:7a84)
ld [MBC1SRamBankingMode], a
ld a, $2
ld [MBC1SRamBank], a
- call Func_73ab8
+ call GetMonCountsForBoxesInBank
ld a, $3
ld [MBC1SRamBank], a
- call Func_73ab8
+ call GetMonCountsForBoxesInBank
xor a
ld [MBC1SRamBankingMode], a
ld [MBC1SRamEnable], a
pop hl
- ld a, [wd5a0]
+
+; copy the count for the current box from WRAM
+ ld a, [wCurrentBoxNum]
and $7f
ld c, a
- ld b, $0
+ ld b, 0
add hl, bc
- ld a, [W_NUMINBOX] ; wda80
+ ld a, [wNumInBox]
ld [hl], a
+
ret
-Func_73ab8: ; 73ab8 (1c:7ab8)
- ld a, [$a000]
+GetMonCountsForBoxesInBank:
+ ld a, [sBox1] ; sBox7
ld [hli], a
- ld a, [$a462]
+ ld a, [sBox2] ; sBox8
ld [hli], a
- ld a, [$a8c4]
+ ld a, [sBox3] ; sBox9
ld [hli], a
- ld a, [$ad26]
+ ld a, [sBox4] ; sBox10
ld [hli], a
- ld a, [$b188]
+ ld a, [sBox5] ; sBox11
ld [hli], a
- ld a, [$b5ea]
+ ld a, [sBox6] ; sBox12
ld [hli], a
ret
-SAVCheckRandomID: ;$7ad1
+SAVCheckRandomID:
;checks if Sav file is the same by checking player's name 1st letter ($a598)
; and the two random numbers generated at game beginning
-;(which are stored at wPlayerID)
+;(which are stored at wPlayerID)s
ld a,$0a
- ld [$0000],a
+ ld [MBC1SRamEnable],a
ld a,$01
ld [MBC1SRamBankingMode],a
ld [MBC1SRamBank],a
- ld a,[$a598]
+ ld a,[sPlayerName]
and a
jr z,.next
- ld hl,$a598
- ld bc,$0f8b
+ ld hl,sPlayerName
+ ld bc, sMainDataCheckSum - sPlayerName
call SAVCheckSum
ld c,a
- ld a,[$b523]
+ ld a,[sMainDataCheckSum]
cp c
jr nz,.next
- ld hl,$a605
+ ld hl,sMainData + 98 ; player ID
ld a,[hli]
ld h,[hl]
ld l,a
@@ -616,43 +631,45 @@ SAVCheckRandomID: ;$7ad1
.next
ld a,$00
ld [MBC1SRamBankingMode],a
- ld [$0000],a
+ ld [MBC1SRamEnable],a
ret
-SaveHallOfFameTeams: ; 73b0d (1c:7b0d)
- ld a, [wd5a2]
+SaveHallOfFameTeams:
+ ld a, [wNumHoFTeams]
dec a
- cp NUM_HOF_TEAMS
- jr nc, .asm_73b28
+ cp HOF_TEAM_CAPACITY
+ jr nc, .shiftHOFTeams
ld hl, sHallOfFame
ld bc, HOF_TEAM
call AddNTimes
ld e, l
ld d, h
- ld hl, wcc5b
+ ld hl, wHallOfFame
ld bc, HOF_TEAM
jr HallOfFame_Copy
-.asm_73b28
+.shiftHOFTeams
+; if the space designated for HOF teams is full, then shift all HOF teams to the next slot, making space for the new HOF team
+; this deletes the last HOF team though
ld hl, sHallOfFame + HOF_TEAM
ld de, sHallOfFame
- ld bc, HOF_TEAM * (NUM_HOF_TEAMS - 1)
+ ld bc, HOF_TEAM * (HOF_TEAM_CAPACITY - 1)
call HallOfFame_Copy
- ld hl, wcc5b
- ld de, sHallOfFame + HOF_TEAM * (NUM_HOF_TEAMS - 1)
+ ld hl, wHallOfFame
+ ld de, sHallOfFame + HOF_TEAM * (HOF_TEAM_CAPACITY - 1)
ld bc, HOF_TEAM
jr HallOfFame_Copy
-LoadHallOfFameTeams: ; 73b3f (1c:7b3f)
+LoadHallOfFameTeams:
ld hl, sHallOfFame
ld bc, HOF_TEAM
- ld a, [wWhichTrade] ; wWhichTrade
+ ld a, [wHoFTeamIndex]
call AddNTimes
- ld de, wcc5b
+ ld de, wHallOfFame
ld bc, HOF_TEAM
; fallthrough
-HallOfFame_Copy: ; 73b51 (1c:7b51)
+HallOfFame_Copy:
ld a, SRAM_ENABLE
ld [MBC1SRamEnable], a
ld a, $1
@@ -665,7 +682,7 @@ HallOfFame_Copy: ; 73b51 (1c:7b51)
ld [MBC1SRamEnable], a
ret
-ClearSAV: ; 73b6a (1c:7b6a)
+ClearSAV:
ld a, SRAM_ENABLE
ld [MBC1SRamEnable], a
ld a, $1
@@ -683,7 +700,7 @@ ClearSAV: ; 73b6a (1c:7b6a)
ld [MBC1SRamEnable], a
ret
-PadSRAM_FF: ; 73b8f (1c:7b8f)
+PadSRAM_FF:
ld [MBC1SRamBank], a
ld hl, $a000
ld bc, $2000