You've already forked pokecrystal-board
mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-09-08 08:13:02 -07:00
Implement the engine to backup map objects when chaning maps (#32)
This commit is contained in:
@@ -89,6 +89,7 @@ BoardMenuScript::
|
||||
end
|
||||
|
||||
.EnterViewMapMode:
|
||||
call BackupMapObjectsOnEnterViewMapMode
|
||||
ld hl, wVramState
|
||||
res 2, [hl]
|
||||
ld a, BOARDEVENT_VIEW_MAP_MODE
|
||||
|
||||
@@ -269,6 +269,7 @@ PromptPlayerToChooseBranchDirection:
|
||||
jp PlayClickSFX
|
||||
|
||||
.EnterViewMapMode:
|
||||
call BackupMapObjectsOnEnterViewMapMode
|
||||
ld a, BOARDEVENT_VIEW_MAP_MODE
|
||||
ldh [hCurBoardEvent], a
|
||||
ld a, 100
|
||||
|
||||
@@ -289,6 +289,7 @@ SaveGameData:
|
||||
call SaveOptions
|
||||
call SavePlayerData
|
||||
call SavePokemonData
|
||||
call SaveMapObjectsBackupsData
|
||||
call SaveBox
|
||||
call SaveChecksum
|
||||
call ValidateBackupSave
|
||||
@@ -446,6 +447,22 @@ SavePokemonData:
|
||||
call CloseSRAM
|
||||
ret
|
||||
|
||||
SaveMapObjectsBackupsData:
|
||||
ldh a, [rSVBK]
|
||||
push af
|
||||
ld a, BANK(wMapObjectsBackups)
|
||||
ldh [rSVBK], a
|
||||
ld a, BANK(sMapObjectsBackups)
|
||||
call OpenSRAM
|
||||
ld hl, wMapObjectsBackups
|
||||
ld de, sMapObjectsBackups
|
||||
ld bc, wMapObjectsBackupsEnd - wMapObjectsBackups
|
||||
call CopyBytes
|
||||
call CloseSRAM
|
||||
pop af
|
||||
ldh [rSVBK], a
|
||||
ret
|
||||
|
||||
SaveBox:
|
||||
call GetBoxAddress
|
||||
call SaveBoxAddress
|
||||
@@ -526,6 +543,7 @@ TryLoadSaveFile:
|
||||
jr nz, .backup
|
||||
call LoadPlayerData
|
||||
call LoadPokemonData
|
||||
call LoadMapObjectsBackupsData
|
||||
call LoadBox
|
||||
farcall RestorePartyMonMail
|
||||
call ValidateBackupSave
|
||||
@@ -541,6 +559,7 @@ TryLoadSaveFile:
|
||||
jr nz, .corrupt
|
||||
call LoadBackupPlayerData
|
||||
call LoadBackupPokemonData
|
||||
call LoadMapObjectsBackupsData
|
||||
call LoadBox
|
||||
farcall RestorePartyMonMail
|
||||
call ValidateSave
|
||||
@@ -677,6 +696,22 @@ LoadPokemonData:
|
||||
call CloseSRAM
|
||||
ret
|
||||
|
||||
LoadMapObjectsBackupsData:
|
||||
ldh a, [rSVBK]
|
||||
push af
|
||||
ld a, BANK(wMapObjectsBackups)
|
||||
ldh [rSVBK], a
|
||||
ld a, BANK(sMapObjectsBackups)
|
||||
call OpenSRAM
|
||||
ld hl, sMapObjectsBackups
|
||||
ld de, wMapObjectsBackups
|
||||
ld bc, wMapObjectsBackupsEnd - wMapObjectsBackups
|
||||
call CopyBytes
|
||||
call CloseSRAM
|
||||
pop af
|
||||
ldh [rSVBK], a
|
||||
ret
|
||||
|
||||
LoadBox:
|
||||
call GetBoxAddress
|
||||
call LoadBoxAddress
|
||||
|
||||
@@ -135,7 +135,7 @@ CheckTrainerAndTalkerEvents:
|
||||
bit 5, [hl]
|
||||
ret
|
||||
|
||||
; on enter overworld loop
|
||||
; on enter overworld loop (MAPSETUP_ENTERLEVEL or MAPSETUP_CONTINUE)
|
||||
StartMap:
|
||||
xor a
|
||||
ldh [hScriptVar], a
|
||||
@@ -147,13 +147,39 @@ StartMap:
|
||||
farcall InitCallReceiveDelay
|
||||
call ClearJoypad
|
||||
|
||||
; initialize board state
|
||||
ld a, [hMapEntryMethod]
|
||||
cp MAPSETUP_ENTERLEVEL
|
||||
jr nz, .not_starting_level
|
||||
|
||||
; initialize board state
|
||||
xor a
|
||||
ld [wCurTurn], a
|
||||
ld [wCurSpace], a
|
||||
|
||||
; initialize overworld state
|
||||
ld hl, wNextWarp
|
||||
xor a
|
||||
ld [hli], a ; wNextWarp
|
||||
ld [hli], a ; wNextMapGroup
|
||||
ld [hli], a ; wNextMapNumber
|
||||
ld [hli], a ; wPrevWarp
|
||||
ld [hli], a ; wPrevMapGroup
|
||||
ld [hl], a ; wPrevMapNumber
|
||||
ld a, BANK(wMapObjectsBackups)
|
||||
ld [rSVBK], a
|
||||
ld e, NUM_MAP_OBJECTS_BACKUPS
|
||||
ld hl, wMapObjectsBackups
|
||||
ld bc, wMap2ObjectsBackup - wMap1ObjectsBackup
|
||||
.loop
|
||||
ld a, GROUP_N_A
|
||||
ld [hl], a
|
||||
add hl, bc
|
||||
dec e
|
||||
jr nz, .loop
|
||||
ld [hl], $00 ; list terminator
|
||||
ld a, 1
|
||||
ld [rSVBK], a
|
||||
|
||||
.not_starting_level
|
||||
ld a, BOARDEVENT_DISPLAY_MENU
|
||||
ldh [hCurBoardEvent], a
|
||||
|
||||
@@ -144,6 +144,7 @@ EnterMapConnection:
|
||||
ld [wOverworldMapAnchor], a
|
||||
ld a, h
|
||||
ld [wOverworldMapAnchor + 1], a
|
||||
|
||||
.done
|
||||
scf
|
||||
ret
|
||||
|
||||
Reference in New Issue
Block a user