aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAsh Ketchum <no-reply@sl0p.foo>2026-07-15 14:12:47 +0200
committerAsh Ketchum <no-reply@sl0p.foo>2026-07-15 14:12:47 +0200
commit595aa8499a66f8de53e9783d1dc426f10ba9e0a7 (patch)
tree57912bcf3837830e9fe1eadd9e370a75bcf05713
parentexplore: press A to warp to the viewed location (diff)
downloadpokeyellow-595aa8499a66f8de53e9783d1dc426f10ba9e0a7.tar.gz
pokeyellow-595aa8499a66f8de53e9783d1dc426f10ba9e0a7.tar.xz
pokeyellow-595aa8499a66f8de53e9783d1dc426f10ba9e0a7.zip
SL0P.md: document EXPLORE arrows + A-to-warp
-rw-r--r--SL0P.md18
1 files changed, 14 insertions, 4 deletions
diff --git a/SL0P.md b/SL0P.md
index 1c9da048..be3de2b2 100644
--- a/SL0P.md
+++ b/SL0P.md
@@ -37,7 +37,7 @@ A table-driven cheat menu. Cursor + A to pick, B to back out / close.
| **ITEMS** | submenu: give ×99 of balls, Rare Candy, Full Restore, Max Revive, Max Elixer, PP Up, and all five evolution stones |
| **NOWILD** | toggle wild encounters off (shows `ON`) |
| **REPEL** | refill repel steps |
-| **EXPLORE** | a screen-paging overworld camera: each d-pad press instantly redraws the next screenful of the world (no walking), hopping to the connected map at each edge. B returns to the menu. |
+| **EXPLORE** | a screen-paging overworld camera: each d-pad press instantly redraws the next screenful of the world (no walking), hopping to the connected map at each edge. **▲▼◀▶ arrows** show which directions you can move; **A** warps the player onto the tile you're looking at; **B** returns to the menu. |
Everything is in `engine/slop_menu.asm`. Adding a new entry = add a name to
`SlopMenuText`, a `dw Handler` to `SlopMenuHandlers`, and bump `SLOP_MENU_COUNT`.
@@ -53,9 +53,19 @@ straight out of the map block buffer (`wOverworldMap`): compute a view pointer
by ~one screen (`SLOP_PAGE_X/Y`) and re-renders; at a map edge it crosses using
that connection's `*Alignment` offset (vertical: Y=align, X+=align; horizontal:
X=align, Y+=align) and `LoadMapData`s the neighbour, or clamps if there's none.
-No walk engine, no character movement. See `tools/render_overworld.py` for the
-ground-truth map that proved connections join maps along shared edges with an
-offset -- the same math this camera uses to cross seams.
+No walk engine, no character movement.
+
+- **Direction arrows** are 4 OBJ sprites in `wShadowOAM` using the font's down/
+ right glyphs (`$ee`/`$ed`) plus CGB OBJ X/Y-flip for up/left; set
+ `wUpdateSpritesEnabled=$ff` after building them so the vblank `PrepareOAMData`
+ leaves shadow OAM alone. Shown per-direction when a move is possible.
+- **A warps here:** scans `wTileMap` outward from the view centre (col 8,row 9)
+ for the nearest `IsTilePassable` tile, sets `wYCoord/wXCoord`, `wDestinationWarpID=$ff`,
+ `LoadMapData` (enters at those coords), returns carry set.
+
+See `~/dev/gbc/tools/render_overworld.py` for the ground-truth map that proved
+connections join maps along shared edges with an offset -- the same math this
+camera uses to cross seams.
## Build