shithub: pokecrystal

ref: 9c84a3dd2245f149b361aa7603354297b3784b3e
dir: /engine/save.asm/

View raw version
Function14a1a: ; 14a1a
	call Function1d6e
	callba Function5e9a
	call SpeechTextBox
	call UpdateSprites
	callba Function4cf45
	ld hl, UnknownText_0x15283
	call SaveTheGame_yesorno
	jr nz, .refused
	call CheckForExistingSaveFile
	jr c, .refused
	call SetWRAMStateForSave
	call _SavingDontTurnOffThePower
	call ClearWRAMStateAfterSave
	call ExitMenu
	and a
	ret
.refused
	call ExitMenu
	call Functiond90
	callba Function4cf45
	scf
	ret

Function14a58: ; 14a58
	call SetWRAMStateForSave
	callba Function14056
	callba Function1050d9
	call SavePartyData
	call Function14e13
	call LoadSavedPartyData
	call Function14e8b
	callba Function44725
	callba Function1406a
	call ClearWRAMStateAfterSave
	ret
; 14a83


Function14a83: ; 14a83 (5:4a83)
	push de
	ld hl, UnknownText_0x152a1
	call MenuTextBox
	call YesNoBox
	call ExitMenu
	jr c, .refused
	call CheckForExistingSaveFile
	jr c, .refused
	call SetWRAMStateForSave
	call SavingDontTurnOffThePower
	call Function14e0c
	pop de
	ld a, e
	ld [wCurBox], a
	call Function15021
	call SavedTheGame
	call ClearWRAMStateAfterSave
	and a
	ret
.refused
	pop de
	ret

Function14ab2: ; 14ab2
	call CheckForExistingSaveFile
	jr c, .refused
	call SetWRAMStateForSave
	call _SavingDontTurnOffThePower
	call ClearWRAMStateAfterSave
	and a

.refused
	ret
; 14ac2

Function14ac2: ; 14ac2
	call SetWRAMStateForSave
	push de
	call Function14e0c
	pop de
	ld a, e
	ld [wCurBox], a
	call Function15021
	call ClearWRAMStateAfterSave
	ret
; 14ad5

Function14ad5: ; 14ad5
	call SetWRAMStateForSave
	push de
	call Function14e0c
	pop de
	ld a, e
	ld [wCurBox], a
	ld a, $1
	ld [wcfcd], a
	callba Function14056
	callba Function1050d9
	call Function14da9
	call SaveOptionsSelection
	call SavePlayerData
	call SavePartyData
	call Function14e13
	call Function14e2d
	call LoadSavedOptions
	call LoadSavedPlayerData
	call LoadSavedPartyData
	call Function14e8b
	callba Function44725
	callba Function106187
	callba Function1406a
	call Function15021
	call ClearWRAMStateAfterSave
	ld de, SFX_SAVE
	call PlaySFX
	ld c, $18
	call DelayFrames
	ret
; 14b34

Function14b34: ; 14b34
	ld hl, UnknownText_0x152a6
	call MenuTextBox
	call YesNoBox
	call ExitMenu
	jr c, .asm_14b52
	call CheckForExistingSaveFile
	jr c, .asm_14b52
	call SetWRAMStateForSave
	call _SavingDontTurnOffThePower
	call ClearWRAMStateAfterSave
	and a
	ret

.asm_14b52
	scf
	ret
; 14b54

SetWRAMStateForSave: ; 14b54
	ld a, $1
	ld [wc2cd], a
	ret
; 14b5a

ClearWRAMStateAfterSave: ; 14b5a
	xor a
	ld [wc2cd], a
	ret
; 14b5f


Function14b5f: ; 14b5f
	ld a, $1
	call GetSRAMBank
	ld hl, $bdd9
	ld de, $be3b
	ld bc, $0b1a
.loop
	ld a, [hld]
	ld [de], a
	dec de
	dec bc
	ld a, c
	or b
	jr nz, .loop
	ld hl, OverworldMap
	ld de, $b2c0
	ld bc, 7 * 14
	call CopyBytes
	call CloseSRAM
	ret
; 14b85

Function14b85: ; 14b85
	call Function14c10
	ret
; 14b89

CheckForExistingSaveFile: ; 14b89
	ld a, [wcfcd]
	and a
	jr z, .getridofpreviousplayersave
	call Function14bcb
	jr z, .yoursavefile
	ld hl, UnknownText_0x15297
	call SaveTheGame_yesorno
	jr nz, .refused
	jr .getridofpreviousplayersave

.yoursavefile
	ld hl, UnknownText_0x15292
	call SaveTheGame_yesorno
	jr nz, .refused
	jr .ok

.getridofpreviousplayersave
	call GetRidOfPreviousPlayersSave

.ok
	and a
	ret

.refused
	scf
	ret
; 14baf

SaveTheGame_yesorno: ; 14baf
	ld b, BANK(UnknownText_0x15283)
	call MapTextbox
	call LoadMenuTextBox
	lb bc, 0, 7
	call PlaceYesNoBox
	ld a, [wcfa9]
	dec a
	call WriteBackup
	push af
	call Functiond90
	pop af
	and a
	ret
; 14bcb

Function14bcb: ; 14bcb
	ld a, $1
	call GetSRAMBank
	ld hl, $a009
	ld a, [hli]
	ld c, [hl]
	ld b, a
	call CloseSRAM
	ld a, [PlayerID]
	cp b
	ret nz
	ld a, [PlayerID + 1]
	cp c
	ret
; 14be3

_SavingDontTurnOffThePower: ; 14be3
	call SavingDontTurnOffThePower
SavedTheGame: ; 14be6
	call Function14c10
	; wait 32 frames
	ld c, $20
	call DelayFrames
	; copy the original text speed setting to the stack
	ld a, [Options]
	push af
	; set text speed super slow
	ld a, 3
	ld [Options], a
	; <PLAYER> saved the game!
	ld hl, UnknownText_0x1528d
	call PrintText
	; restore the original text speed setting
	pop af
	ld [Options], a
	ld de, SFX_SAVE
	call WaitPlaySFX
	call WaitSFX
	; wait 30 frames
	ld c, $1e
	call DelayFrames
	ret
; 14c10


Function14c10: ; 14c10
	ld a, 1
	ld [wcfcd], a
	callba Function14056
	callba Function1050d9
	call Function14da9
	call SaveOptionsSelection
	call SavePlayerData
	call SavePartyData
	call Function14e0c
	call Function14e13
	call Function14e2d
	call LoadSavedOptions
	call LoadSavedPlayerData
	call LoadSavedPartyData
	call Function14e8b
	call Function14c6b
	callba Function44725
	callba Function106187
	callba Function1406a
	ld a, $1
	call GetSRAMBank
	ld a, [$be45]
	cp $4
	jr nz, .asm_14c67
	xor a
	ld [$be45], a

.asm_14c67
	call CloseSRAM
	ret
; 14c6b

Function14c6b: ; 14c6b
	call Function14c90
	ld a, $0
	call GetSRAMBank
	ld a, [$bf10]
	ld e, a
	ld a, [$bf11]
	ld d, a
	or e
	jr z, .asm_14c84
	ld a, e
	sub l
	ld a, d
	sbc h
	jr c, .asm_14c8c

.asm_14c84
	ld a, l
	ld [$bf10], a
	ld a, h
	ld [$bf11], a

.asm_14c8c
	call CloseSRAM
	ret
; 14c90

Function14c90: ; 14c90
	ld hl, wc000
.asm_14c93
	ld a, [hl]
	or a
	ret nz
	inc hl
	jr .asm_14c93
; 14c99

SavingDontTurnOffThePower: ; 14c99
	; Prevent joypad interrupts
	xor a
	ld [hJoypadReleased], a
	ld [hJoypadPressed], a
	ld [hJoypadSum], a
	ld [hJoypadDown], a
	; Save the text speed setting to the stack
	ld a, [Options]
	push af
	; Set the text speed to super slow
	ld a, $3
	ld [Options], a
	; SAVING... DON'T TURN OFF THE POWER.
	ld hl, UnknownText_0x15288
	call PrintText
	; Restore the text speed setting
	pop af
	ld [Options], a
	; Wait for 16 frames
	ld c, $10
	call DelayFrames
	ret
; 14cbb


GetRidOfPreviousPlayersSave: ; 14cbb
	call Function151fb
	call Function14d06
	call Function14ce2
	call Function14cf4
	call Function14d68
	call Function14d5c
	ld a, $0
	call GetSRAMBank
	xor a
	ld [$bf10], a
	ld [$bf11], a
	call CloseSRAM
	ld a, $1
	ld [wd4b4], a
	ret
; 14ce2

Function14ce2: ; 14ce2
	ld a, $1
	call GetSRAMBank
	ld hl, $b260
	ld bc, $0060
	xor a
	call ByteFill
	jp CloseSRAM
; 14cf4

Function14cf4: ; 14cf4
	ld a, $0
	call GetSRAMBank
	ld hl, $abe4
	ld bc, $004c
	xor a
	call ByteFill
	jp CloseSRAM
; 14d06

Function14d06: ; 14d06
	ld a, $1
	call GetSRAMBank
	ld hl, $b2c0
	ld bc, $0b7c
	xor a
	call ByteFill
	jp CloseSRAM
; 14d18

Function14d18: ; 14d18
; copy Unknown_14d2c to SRA4:a007
	ld a, $4
	call GetSRAMBank
	ld hl, Unknown_14d2c
	ld de, $a007
	ld bc, 48
	call CopyBytes
	jp CloseSRAM
; 14d2c

Unknown_14d2c: ; 14d2c
	db $0d, $02, $00, $05, $00, $00
	db $22, $02, $01, $05, $00, $00
	db $03, $04, $05, $08, $03, $05
	db $0e, $06, $03, $02, $00, $00
	db $39, $07, $07, $04, $00, $05
	db $04, $07, $01, $05, $00, $00
	db $0f, $05, $14, $07, $05, $05
	db $11, $0c, $0c, $06, $06, $04
; 14d5c

Function14d5c: ; 14d5c
	ld a, $1
	call GetSRAMBank
	xor a
	ld [$be45], a
	jp CloseSRAM
; 14d68

Function14d68: ; 14d68
	call Function1509a
	ret
; 14d6c

Function14d6c: ; 14d6c
	ld a, $4
	call GetSRAMBank
	ld a, [$a60b]
	ld b, $0
	and a
	jr z, .ok
	ld b, $2

.ok
	ld a, b
	ld [$a60b], a
	call CloseSRAM
	ret
; 14d83

Function14d83: ; 14d83
	ld a, $4
	call GetSRAMBank
	xor a
	ld [$a60c], a
	ld [$a60d], a
	call CloseSRAM
	ret
; 14d93

Function14d93: ; 14d93
	ld a, $7
	call GetSRAMBank
	xor a
	ld [$a000], a
	call CloseSRAM
	ret
; 14da0


Function14da0: ; 14da0
	ld a, [wd4b4]
	and a
	ret nz
	call GetRidOfPreviousPlayersSave
	ret
; 14da9

Function14da9: ; 14da9
	ld a, $1
	call GetSRAMBank
	ld a, 99
	ld [$a008], a
	ld a, " "
	ld [$ad0f], a
	jp CloseSRAM
; 14dbb

SaveOptionsSelection: ; 14dbb
; Copy Options to SRA1:a000
	ld a, $1
	call GetSRAMBank
	ld hl, Options
	ld de, $a000
	ld bc, OptionsEnd - Options
	call CopyBytes
	ld a, [Options]
	and $ef
	ld [$a000], a
	jp CloseSRAM
; 14dd7

SavePlayerData: ; 14dd7
; Copy 2122 bytes starting at PlayerID to SRA1:a009
	ld a, $1
	call GetSRAMBank
	ld hl, PlayerID
	ld de, $a009
	ld bc, VisitedSpawns - PlayerID
	call CopyBytes
	ld hl, VisitedSpawns
	ld de, $a833
	ld bc, PartyCount - VisitedSpawns
	call CopyBytes
	jp CloseSRAM
; 14df7

SavePartyData: ; 14df7
; Copy your party to SRA1:a865.
	ld a, $1
	call GetSRAMBank
	ld hl, PartyCount
	ld de, $a865
	ld bc, wdff5 - PartyCount
	call CopyBytes
	call CloseSRAM
	ret
; 14e0c

Function14e0c: ; 14e0c
	call Function150d8
	call Function150f9
	ret
; 14e13

Function14e13: ; 14e13
	ld hl, $a009
	ld bc, $0b7a
	ld a, $1
	call GetSRAMBank
	call Function15273
	ld a, e
	ld [$ad0d], a
	ld a, d
	ld [$ad0e], a
	call CloseSRAM
	ret
; 14e2d

Function14e2d: ; 14e2d
	ld a, $0
	call GetSRAMBank
	ld a, 99
	ld [$b208], a
	ld a, " "
	ld [$bf0f], a
	call CloseSRAM
	ret
; 14e40

LoadSavedOptions: ; 14e40
	ld a, $0
	call GetSRAMBank
	ld hl, Options
	ld de, $b200
	ld bc, OptionsEnd - Options
	call CopyBytes
	call CloseSRAM
	ret
; 14e55

LoadSavedPlayerData: ; 14e55
	ld a, $0
	call GetSRAMBank
	ld hl, PlayerID
	ld de, $b209
	ld bc, VisitedSpawns - PlayerID
	call CopyBytes
	ld hl, VisitedSpawns
	ld de, $ba33
	ld bc, PartyCount - VisitedSpawns
	call CopyBytes
	call CloseSRAM
	ret
; 14e76

LoadSavedPartyData: ; 14e76
	ld a, $0
	call GetSRAMBank
	ld hl, PartyCount
	ld de, $ba65
	ld bc, wdff5 - PartyCount
	call CopyBytes
	call CloseSRAM
	ret
; 14e8b

Function14e8b: ; 14e8b
	ld hl, $b209
	ld bc, $0b7a
	ld a, $0
	call GetSRAMBank
	call Function15273
	ld a, e
	ld [$bf0d], a
	ld a, d
	ld [$bf0e], a
	call CloseSRAM
	ret
; 14ea5


TryLoadSaveFile: ; 14ea5 (5:4ea5)
	call Function15028
	jr nz, .trytowrite
	call Function14fd7
	call Function1500c
	call Function15021
	callba Function44745
	callba Function10619d
	callba Function1050ea
	call Function14e2d
	call LoadSavedOptions
	call LoadSavedPlayerData
	call LoadSavedPartyData
	call Function14e8b
	and a
	ret
.trytowrite
	call Function1507c
	jr nz, .corrupt
	call Function15046
	call Function15067
	call Function15021
	callba Function44745
	callba Function10619d
	callba Function1050ea
	call Function14da9
	call SaveOptionsSelection
	call SavePlayerData
	call SavePartyData
	call Function14e13
	and a
	ret
.corrupt
	ld a, [Options]
	push af
	set 4, a
	ld [Options], a
	ld hl, UnknownText_0x1529c
	call PrintText
	pop af
	ld [Options], a
	scf
	ret


Function14f1c: ; 14f1c
	xor a
	ld [wcfcd], a
	call Function14f84
	ld a, [wcfcd]
	and a
	jr z, .asm_14f46
	ld a, $1
	call GetSRAMBank
	ld hl, $a044
	ld de, StartDay
	ld bc, $0008
	call CopyBytes
	ld hl, $a3da
	ld de, StatusFlags
	ld a, [hl]
	ld [de], a
	call CloseSRAM
	ret

.asm_14f46
	call Function14faf
	ld a, [wcfcd]
	and a
	jr z, .asm_14f6c
	ld a, $0
	call GetSRAMBank
	ld hl, $b244
	ld de, StartDay
	ld bc, 8
	call CopyBytes
	ld hl, $b5da
	ld de, StatusFlags
	ld a, [hl]
	ld [de], a
	call CloseSRAM
	ret

.asm_14f6c
	ld hl, DefaultOptions
	ld de, Options
	ld bc, OptionsEnd - Options
	call CopyBytes
	call Function67e
	ret
; 14f7c

DefaultOptions: ; 14f7c
	db $03 ; mid text speed
	db $00
	db $00 ; frame 0
	db $01
	db $40 ; gb printer: normal brightness
	db $01 ; menu account on
	db $00
	db $00
; 14f84

Function14f84: ; 14f84
	ld a, $1
	call GetSRAMBank
	ld a, [$a008]
	cp 99
	jr nz, .nope
	ld a, [$ad0f]
	cp " "
	jr nz, .nope
	ld hl, $a000
	ld de, Options
	ld bc, OptionsEnd - Options
	call CopyBytes
	call CloseSRAM
	ld a, $1
	ld [wcfcd], a

.nope
	call CloseSRAM
	ret
; 14faf

Function14faf: ; 14faf
	ld a, $0
	call GetSRAMBank
	ld a, [$b208]
	cp 99
	jr nz, .nope
	ld a, [$bf0f]
	cp " "
	jr nz, .nope
	ld hl, $b200
	ld de, Options
	ld bc, OptionsEnd - Options
	call CopyBytes
	ld a, $2
	ld [wcfcd], a

.nope
	call CloseSRAM
	ret
; 14fd7


Function14fd7: ; 14fd7 (5:4fd7)
	ld a, $1
	call GetSRAMBank
	ld hl, $a009
	ld de, PlayerID
	ld bc, VisitedSpawns - PlayerID
	call CopyBytes
	ld hl, $a833
	ld de, VisitedSpawns
	ld bc, PartyCount - VisitedSpawns
	call CopyBytes
	call CloseSRAM
	ld a, $1
	call GetSRAMBank
	ld a, [$be45]
	cp $4
	jr nz, .asm_15008
	ld a, $3
	ld [$be45], a
.asm_15008
	call CloseSRAM
	ret

Function1500c: ; 1500c
	ld a, $1
	call GetSRAMBank
	ld hl, $a865
	ld de, PartyCount
	ld bc, wdff5 - PartyCount
	call CopyBytes
	call CloseSRAM
	ret
; 15021


Function15021: ; 15021 (5:5021)
	call Function150d8
	call Function1517d
	ret

Function15028: ; 15028 (5:5028)
	ld hl, $a009
	ld bc, $b7a
	ld a, $1
	call GetSRAMBank
	call Function15273
	ld a, [$ad0d]
	cp e
	jr nz, .asm_15040
	ld a, [$ad0e]
	cp d
.asm_15040
	push af
	call CloseSRAM
	pop af
	ret

Function15046: ; 15046 (5:5046)
	ld a, $0
	call GetSRAMBank
	ld hl, $b209
	ld de, PlayerID
	ld bc, VisitedSpawns - PlayerID
	call CopyBytes
	ld hl, $ba33
	ld de, VisitedSpawns
	ld bc, PartyCount - VisitedSpawns
	call CopyBytes
	call CloseSRAM
	ret

Function15067: ; 15067 (5:5067)
	ld a, $0
	call GetSRAMBank
	ld hl, $ba65
	ld de, PartyCount
	ld bc, wdff5 - PartyCount
	call CopyBytes
	call CloseSRAM
	ret

Function1507c: ; 1507c (5:507c)
	ld hl, $b209
	ld bc, $b7a
	ld a, $0
	call GetSRAMBank
	call Function15273
	ld a, [$bf0d]
	cp e
	jr nz, .asm_15094
	ld a, [$bf0e]
	cp d
.asm_15094
	push af
	call CloseSRAM
	pop af
	ret


Function1509a: ; 1509a
	ld a, $1
	call GetSRAMBank
	ld hl, PlayerGender
	ld de, $be3d
	ld bc, wd479 - PlayerGender
	call CopyBytes
	ld hl, wd479
	ld a, [hli]
	ld [$a60e], a
	ld a, [hli]
	ld [$a60f], a
	jp CloseSRAM
; 150b9


Function150b9: ; 150b9 (5:50b9)
	ld a, $1
	call GetSRAMBank
	ld hl, $be3d
	ld de, PlayerGender
	ld bc, wd479 - PlayerGender
	call CopyBytes
	ld hl, wd479
	ld a, [$a60e]
	ld [hli], a
	ld a, [$a60f]
	ld [hli], a
	jp CloseSRAM


Function150d8: ; 150d8
	ld a, [wCurBox]
	cp NUM_BOXES
	jr c, .asm_150e3
	xor a
	ld [wCurBox], a

.asm_150e3
	ld e, a
	ld d, 0
	ld hl, Unknown_1522d
rept 5
	add hl, de
endr
	ld a, [hli]
	push af
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, [hli]
	ld h, [hl]
	ld l, a
	pop af
	ret
; 150f9

Function150f9: ; 150f9
	push hl
	push af
	push de
	ld a, $1
	call GetSRAMBank
	ld hl, sBoxCount
	ld de, wc608
	ld bc, $01e0
	call CopyBytes
	call CloseSRAM
	pop de
	pop af
	push af
	push de
	call GetSRAMBank
	ld hl, wc608
	ld bc, $01e0
	call CopyBytes
	call CloseSRAM
	ld a, $1
	call GetSRAMBank
	ld hl, $aef0
	ld de, wc608
	ld bc, $01e0
	call CopyBytes
	call CloseSRAM
	pop de
	pop af
	ld hl, $01e0
	add hl, de
	ld e, l
	ld d, h
	push af
	push de
	call GetSRAMBank
	ld hl, wc608
	ld bc, $01e0
	call CopyBytes
	call CloseSRAM
	ld a, $1
	call GetSRAMBank
	ld hl, $b0d0
	ld de, wc608
	ld bc, $008e
	call CopyBytes
	call CloseSRAM
	pop de
	pop af
	ld hl, $01e0
	add hl, de
	ld e, l
	ld d, h
	call GetSRAMBank
	ld hl, wc608
	ld bc, $008e
	call CopyBytes
	call CloseSRAM
	pop hl
	ret
; 1517d


Function1517d: ; 1517d (5:517d)
	push hl
	ld l, e
	ld h, d
	push af
	push hl
	call GetSRAMBank
	ld de, wc608
	ld bc, $1e0
	call CopyBytes
	call CloseSRAM
	ld a, $1
	call GetSRAMBank
	ld hl, wc608
	ld de, $ad10
	ld bc, $1e0
	call CopyBytes
	call CloseSRAM
	pop hl
	pop af
	ld de, $1e0
	add hl, de
	push af
	push hl
	call GetSRAMBank
	ld de, wc608
	ld bc, $1e0
	call CopyBytes
	call CloseSRAM
	ld a, $1
	call GetSRAMBank
	ld hl, wc608
	ld de, $aef0
	ld bc, $1e0
	call CopyBytes
	call CloseSRAM
	pop hl
	pop af
	ld de, $1e0
	add hl, de
	call GetSRAMBank
	ld de, wc608
	ld bc, $8e
	call CopyBytes
	call CloseSRAM
	ld a, $1
	call GetSRAMBank
	ld hl, wc608
	ld de, $b0d0
	ld bc, $8e
	call CopyBytes
	call CloseSRAM
	pop hl
	ret


Function151fb: ; 151fb
	ld hl, Unknown_1522d
	ld c, $e
.outerloop
	push bc
	ld a, [hli]
	call GetSRAMBank
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	xor a
	ld [de], a
	inc de
	ld a, -1
	ld [de], a
	inc de
	ld bc, $044c
.loop
	xor a
	ld [de], a
	inc de
	dec bc
	ld a, b
	or c
	jr nz, .loop
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, -1
	ld [de], a
	inc de
	xor a
	ld [de], a
	call CloseSRAM
	pop bc
	dec c
	jr nz, .outerloop
	ret
; 1522d

Unknown_1522d: ; 1522d
; dbww bank, address, address
	dbww $02, $a000, $a44e ; 2, $a000, $a44e
	dbww $02, $a450, $a89e ; 2, $a450, $a89e
	dbww $02, $a8a0, $acee ; 2, $a8a0, $acee
	dbww $02, $acf0, $b13e ; 2, $acf0, $b13e
	dbww $02, $b140, $b58e ; 2, $b140, $b5de
	dbww $02, $b590, $b9de ; 2, $b590, $b9de
	dbww $02, $b9e0, $be2e ; 2, $b9e0, $be2e

	dbww $03, $a000, $a44e ; 3, $a000, $a44e
	dbww $03, $a450, $a89e ; 3, $a450, $a89e
	dbww $03, $a8a0, $acee ; 3, $a8a0, $acee
	dbww $03, $acf0, $b13e ; 3, $acf0, $b13e
	dbww $03, $b140, $b58e ; 3, $b140, $b58e
	dbww $03, $b590, $b9de ; 3, $b590, $b9de
	dbww $03, $b9e0, $be2e ; 3, $b9e0, $be2e
; 15273


Function15273: ; 15273
	ld de, 0
.loop
	ld a, [hli]
	add e
	ld e, a
	ld a, 0
	adc d
	ld d, a
	dec bc
	ld a, b
	or c
	jr nz, .loop
	ret
; 15283


UnknownText_0x15283: ; 0x15283
	; Would you like to save the game?
	text_jump UnknownText_0x1c454b
	db "@"
; 0x15288

UnknownText_0x15288: ; 0x15288
	; SAVING… DON'T TURN OFF THE POWER.
	text_jump UnknownText_0x1c456d
	db "@"
; 0x1528d

UnknownText_0x1528d: ; 0x1528d
	; saved the game.
	text_jump UnknownText_0x1c4590
	db "@"
; 0x15292

UnknownText_0x15292: ; 0x15292
	; There is already a save file. Is it OK to overwrite?
	text_jump UnknownText_0x1c45a3
	db "@"
; 0x15297

UnknownText_0x15297: ; 0x15297
	; There is another save file. Is it OK to overwrite?
	text_jump UnknownText_0x1c45d9
	db "@"
; 0x1529c

UnknownText_0x1529c: ; 0x1529c
	; The save file is corrupted!
	text_jump UnknownText_0x1c460d
	db "@"
; 0x152a1

UnknownText_0x152a1: ; 0x152a1
	; When you change a #MON BOX, data will be saved. OK?
	text_jump UnknownText_0x1c462a
	db "@"
; 0x152a6

UnknownText_0x152a6: ; 0x152a6
	; Each time you move a #MON, data will be saved. OK?
	text_jump UnknownText_0x1c465f
	db "@"
; 0x152ab