diff options
| author | Ash Ketchum <no-reply@sl0p.foo> | 2026-07-15 00:28:26 +0200 |
|---|---|---|
| committer | Ash Ketchum <no-reply@sl0p.foo> | 2026-07-15 00:28:26 +0200 |
| commit | d52815caa2c0f385ae61e38ecc7b5bddd7ccf7b3 (patch) | |
| tree | 2a16380216840c8c97d6da88216b8358f5d896ad | |
| parent | Comment all trade locations (#161) (diff) | |
| download | pokeyellow-d52815caa2c0f385ae61e38ecc7b5bddd7ccf7b3.tar.gz pokeyellow-d52815caa2c0f385ae61e38ecc7b5bddd7ccf7b3.tar.xz pokeyellow-d52815caa2c0f385ae61e38ecc7b5bddd7ccf7b3.zip | |
fastboot: skip intro/title/menu and autoload save if one exists
Three small hooks, all gated on CheckForPlayerNameInSRAM (carry = save present):
- home/init.asm: skip 'predef PlayIntro' when a save exists
- engine/movie/title.asm (PrepareTitleScreen): jp MainMenu, skipping the
title screen (only the boot path hits PrepareTitleScreen; return-to-title
paths jp DisplayTitleScreen directly, so they're unaffected)
- engine/menus/main_menu.asm (MainMenu): after TryLoadSaveFile, if
wSaveFileStatus==2 jp SpecialEnterMap, skipping the CONTINUE menu
Exported CheckForPlayerNameInSRAM (:: ) so home/init.asm can farcall it.
New game (no save) path is fully preserved. Ship pokeyellow.gbc only; the
_DEBUG build overflows home ROM0 by 8 bytes with the init hook.
| -rw-r--r-- | engine/menus/main_menu.asm | 7 | ||||
| -rw-r--r-- | engine/movie/title.asm | 12 | ||||
| -rw-r--r-- | home/init.asm | 4 |
3 files changed, 22 insertions, 1 deletions
diff --git a/engine/menus/main_menu.asm b/engine/menus/main_menu.asm index d0e1cc1b..c41a7d10 100644 --- a/engine/menus/main_menu.asm +++ b/engine/menus/main_menu.asm @@ -10,6 +10,11 @@ MainMenu: predef TryLoadSaveFile +; FASTBOOT: if the save loaded cleanly (status 2), skip the menu and continue + ld a, [wSaveFileStatus] + cp 2 + jp z, SpecialEnterMap + .mainMenuLoop ld c, 20 call DelayFrames @@ -273,7 +278,7 @@ DisplayOptionMenu: callfar DisplayOptionMenu_ ret -CheckForPlayerNameInSRAM: +CheckForPlayerNameInSRAM:: ld a, RAMG_SRAM_ENABLE ld [rRAMG], a ld a, BMODE_ADVANCED diff --git a/engine/movie/title.asm b/engine/movie/title.asm index 4ff22800..3cd2cea2 100644 --- a/engine/movie/title.asm +++ b/engine/movie/title.asm @@ -1,4 +1,16 @@ PrepareTitleScreen:: +; FASTBOOT: if a save file exists, skip the title screen straight to the menu +; (which auto-continues). Only the boot path reaches PrepareTitleScreen; the +; "return to title" paths jp DisplayTitleScreen directly, so they're unaffected. + call CheckForPlayerNameInSRAM + jr nc, .fastbootNormalTitle + xor a + ld hl, wStatusFlags6 + ld [hli], a + ld [hli], a + ld [hl], a + jp MainMenu +.fastbootNormalTitle ; These debug names are already copied later in PrepareOakSpeech. ; Removing the unused copies below has no apparent impact. ; CopyDebugName can also be safely deleted afterwards. diff --git a/home/init.asm b/home/init.asm index bef73b7e..fc426e29 100644 --- a/home/init.asm +++ b/home/init.asm @@ -98,7 +98,11 @@ Init:: dec a ld [wUpdateSpritesEnabled], a +; FASTBOOT: skip the GameFreak/Pikachu intro if a save file exists + farcall CheckForPlayerNameInSRAM + jr c, .fastbootSkipIntro predef PlayIntro +.fastbootSkipIntro call DisableLCD call ClearVram |
