summaryrefslogtreecommitdiff
path: root/engine/erase_all_data_menu.asm
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2017-06-19 14:13:15 -0700
committerMarcus Huderle <huderlem@gmail.com>2017-06-19 14:13:15 -0700
commitdab06603a1c4e647eac9c75a62782e4b9a4dc170 (patch)
treea99ebab3d4b7c36a22bfca29eb2182ab89e2cb9e /engine/erase_all_data_menu.asm
parentf4920d6387bc331c88de6a5be3acfbfa25f6afeb (diff)
Move copyright and erase-all-data screens into their own files
Diffstat (limited to 'engine/erase_all_data_menu.asm')
-rwxr-xr-xengine/erase_all_data_menu.asm115
1 files changed, 115 insertions, 0 deletions
diff --git a/engine/erase_all_data_menu.asm b/engine/erase_all_data_menu.asm
new file mode 100755
index 0000000..ae0b780
--- /dev/null
+++ b/engine/erase_all_data_menu.asm
@@ -0,0 +1,115 @@
+HandleEraseAllDataMenu: ; 0x815d
+ ld a, [wScreenState]
+ rst JumpTable ; calls JumpToFuncInTable
+EraseAllDataMenuFunctions: ; 0x8161
+ dw CheckForResetButtonCombo
+ dw HandleEraseAllDataInput
+ dw ExitEraseAllDataMenu
+
+CheckForResetButtonCombo: ; 0x8167
+ ld a, [hJoypadState]
+ cp (D_UP | D_RIGHT | START | SELECT)
+ jr z, .heldCorrectButtons
+ ld hl, wCurrentScreen
+ inc [hl]
+ ret
+
+.heldCorrectButtons
+ ld a, $41
+ ld [hLCDC], a
+ ld a, $e4
+ ld [wBGP], a
+ xor a
+ ld [wOBP0], a
+ ld [wOBP1], a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, [hGameBoyColorFlag]
+ ld hl, EraseAllDataGfxPointers
+ call LoadVideoData
+ call ClearOAMBuffer
+ call Func_b66
+ call Func_588
+ call SGBNormal
+ call Func_bbe
+ ld hl, wScreenState
+ inc [hl]
+ ret
+
+EraseAllDataGfxPointers: ; 0x81a2
+ dw EraseAllDataGfx_GameBoy
+ dw EraseAllDataGfx_GameBoyColor
+
+EraseAllDataGfx_GameBoy: ; 0x81a6
+ VIDEO_DATA_TILES EraseAllDataGfx, vTilesBG, $300
+ VIDEO_DATA_TILEMAP EraseAllDataTilemap, vBGMap, $400
+ db $FF, $FF ; terminators
+
+EraseAllDataGfx_GameBoyColor: ; 0x81b6
+ VIDEO_DATA_TILES EraseAllDataGfx, vTilesBG, $300
+ VIDEO_DATA_TILEMAP EraseAllDataTilemap, vBGMap, $400
+ VIDEO_DATA_BGATTR EraseAllDataBGAttributes, vBGMap, $400
+ VIDEO_DATA_PALETTES HighScoresRedStagePalettes, $80
+ db $FF, $FF ; terminators
+
+HandleEraseAllDataInput: ; 0x81d4
+ ld a, [hNewlyPressedButtons]
+ bit BIT_A_BUTTON, a
+ jr z, .checkForBButton
+ ld hl, $a000
+ xor a
+ ld b, a
+.eraseSavedDataLoop
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ dec b
+ jr nz, .eraseSavedDataLoop
+ ld hl, wScreenState
+ inc [hl]
+ ret
+
+.checkForBButton
+ bit BIT_B_BUTTON, a
+ ret z
+ ld hl, wScreenState
+ inc [hl]
+ ret
+
+ExitEraseAllDataMenu: ; 0x820f
+ call Func_cb5
+ call Func_576
+ ld hl, wCurrentScreen
+ inc [hl]
+ xor a
+ ld [wScreenState], a
+ ret