diff options
| author | Ash Ketchum <no-reply@sl0p.foo> | 2026-07-15 00:37:04 +0200 |
|---|---|---|
| committer | Ash Ketchum <no-reply@sl0p.foo> | 2026-07-15 00:37:04 +0200 |
| commit | cbd75bcf8a14a647469e6e89c9c8a816fff9bc10 (patch) | |
| tree | 75c8cc68dae81773b0fc2c283c4b809746cde5b1 | |
| parent | fastboot: skip intro/title/menu and autoload save if one exists (diff) | |
| download | pokeyellow-cbd75bcf8a14a647469e6e89c9c8a816fff9bc10.tar.gz pokeyellow-cbd75bcf8a14a647469e6e89c9c8a816fff9bc10.tar.xz pokeyellow-cbd75bcf8a14a647469e6e89c9c8a816fff9bc10.zip | |
warp: SELECT opens quick-warp (B1) + relocate intro-skip to PlayIntro
- home/overworld.asm: SELECT in the overworld farcalls WarpMenu, then restarts
the overworld loop so the fly-warp flags get processed.
- engine/warp_menu.asm (new): WarpMenu reuses the fly-warp machinery
(wDestinationMap + BIT_FLY_WARP/BIT_USED_FLY). B1 warps to Pallet
unconditionally to validate the hook; the real destination menu is next.
- Moved the fastboot intro-skip out of home/init.asm into PlayIntro (bank 10)
to reclaim ~10 bytes of home ROM0 for the overworld hook. Net boot behavior
is unchanged; new-game path still shows the intro.
| -rw-r--r-- | engine/movie/intro.asm | 3 | ||||
| -rw-r--r-- | engine/warp_menu.asm | 17 | ||||
| -rw-r--r-- | home/init.asm | 4 | ||||
| -rw-r--r-- | home/overworld.asm | 5 | ||||
| -rw-r--r-- | main.asm | 1 |
5 files changed, 26 insertions, 4 deletions
diff --git a/engine/movie/intro.asm b/engine/movie/intro.asm index 1381d396..7580063c 100644 --- a/engine/movie/intro.asm +++ b/engine/movie/intro.asm @@ -6,6 +6,9 @@ DEF ANIMATION_END EQU 80 PlayIntro: +; FASTBOOT: skip the intro entirely if a save file exists + farcall CheckForPlayerNameInSRAM + ret c xor a ldh [hJoyHeld], a inc a diff --git a/engine/warp_menu.asm b/engine/warp_menu.asm new file mode 100644 index 00000000..17cc3904 --- /dev/null +++ b/engine/warp_menu.asm @@ -0,0 +1,17 @@ +; Quick-warp menu, opened with SELECT in the overworld (hooked in +; home/overworld.asm). Reuses the game's fly-warp machinery: set the +; destination map and the fly-warp flags, then return to the overworld loop, +; which fades out and warps us in at the destination's fly coordinates. + +SECTION "Warp Menu", ROMX + +WarpMenu:: +; B1 (pipeline validation): unconditionally warp to Pallet Town. + ld a, PALLET_TOWN + ld [wDestinationMap], a + ld hl, wStatusFlags6 + set BIT_FLY_WARP, [hl] + ASSERT wStatusFlags6 + 1 == wStatusFlags7 + inc hl + set BIT_USED_FLY, [hl] + ret diff --git a/home/init.asm b/home/init.asm index fc426e29..bef73b7e 100644 --- a/home/init.asm +++ b/home/init.asm @@ -98,11 +98,7 @@ 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 diff --git a/home/overworld.asm b/home/overworld.asm index 4586e5c0..a2626089 100644 --- a/home/overworld.asm +++ b/home/overworld.asm @@ -73,6 +73,11 @@ OverworldLoopLessDelay:: .notSimulating ldh a, [hJoyPressed] .checkIfStartIsPressed + bit B_PAD_SELECT, a ; WARP MENU hotkey + jr z, .notWarpHotkey + farcall WarpMenu + jp OverworldLoop +.notWarpHotkey bit B_PAD_START, a jr z, .startButtonNotPressed ; if START is pressed @@ -424,3 +424,4 @@ INCLUDE "engine/pikachu/pikachu_emotions.asm" INCLUDE "engine/pikachu/pikachu_movement.asm" INCLUDE "engine/pikachu/pikachu_pic_animation.asm" INCLUDE "engine/debug/debug_menu.asm" +INCLUDE "engine/warp_menu.asm" |
