aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--engine/movie/intro.asm3
-rw-r--r--engine/warp_menu.asm17
-rw-r--r--home/init.asm4
-rw-r--r--home/overworld.asm5
-rw-r--r--main.asm1
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
diff --git a/main.asm b/main.asm
index 99860198..fb970f95 100644
--- a/main.asm
+++ b/main.asm
@@ -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"