aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAsh Ketchum <no-reply@sl0p.foo>2026-07-15 15:57:11 +0200
committerAsh Ketchum <no-reply@sl0p.foo>2026-07-15 15:57:11 +0200
commitaed6f96f27a6a597417a4df2e47a94e2753b2e6f (patch)
treee8f781912810fabd94ee1e87de3ef1020e64d23f
parentEXPLORE/SAVER: clamp camera into map bounds after a connection cross (diff)
downloadpokeyellow-aed6f96f27a6a597417a4df2e47a94e2753b2e6f.tar.gz
pokeyellow-aed6f96f27a6a597417a4df2e47a94e2753b2e6f.tar.xz
pokeyellow-aed6f96f27a6a597417a4df2e47a94e2753b2e6f.zip
docs: custom SL0P EDITION README with screenshots
- New README.md showcasing the fork (fastboot, custom splash, SL0P menu, EXPLORE camera, SAVER screensaver) with screenshots in screenshots/. - Move upstream pret README to README.pret.md (kept for build info + credits). - SL0P.md: update SAVER description to match current behaviour (straight until blocked) and document the bounds clamp.
-rw-r--r--README.md128
-rw-r--r--README.pret.md29
-rw-r--r--SL0P.md19
-rw-r--r--screenshots/explore.pngbin0 -> 4638 bytes
-rw-r--r--screenshots/menu.pngbin0 -> 3519 bytes
-rw-r--r--screenshots/saver.pngbin0 -> 4070 bytes
-rw-r--r--screenshots/splash.pngbin0 -> 3832 bytes
-rw-r--r--screenshots/warp.pngbin0 -> 4148 bytes
8 files changed, 152 insertions, 24 deletions
diff --git a/README.md b/README.md
index dcc01df6..a87a1c3a 100644
--- a/README.md
+++ b/README.md
@@ -1,29 +1,119 @@
-# Pokémon Yellow [![Build Status][ci-badge]][ci]
+# POKéMON SL0P EDITION
-This is a disassembly of Pokémon Yellow.
+<p align="center">
+ <img src="screenshots/splash.png" width="360" alt="POKéMON SL0P EDITION boot splash">
+</p>
-It builds the following ROMs:
+A cheeky romhack of **Pokémon Yellow**, built on the [pret/pokeyellow](https://github.com/pret/pokeyellow)
+disassembly. Everything is done in pure GBZ80 assembly and used **entirely
+in-game** — no external cheat device, no Game Genie. Press **SELECT** in the
+overworld and go wild.
-- Pokemon Yellow (UE) [C][!].gbc `sha1: cc7d03262ebfaf2f06772c1a480c7d9d5f4a38e1`
-- YELLMONS.GB (debug build) `sha1: d44e96eddfbdad633cbe4e6e64915e9e198974b0`
-- Dmgapse0.h08.patch `sha1: f3346a5559d52c296b8feab0cdbbfb0e250ac161`
+> Author: *Ash Ketchum* · runs on real hardware / any accurate GBC emulator.
-To set up the repository, see [**INSTALL.md**](INSTALL.md).
+---
+## ✨ Highlights
-## See also
+- ⚡ **Fastboot** — got a save? Skip the intro, title, and CONTINUE menu and drop
+ straight into the overworld.
+- 🎬 **Custom boot splash** — a real 2bpp *POKéMON · SL0P · EDITION* graphic.
+- 🎛️ **The SL0P MENU** (**SELECT**) — a table-driven cheat menu: instant heal,
+ money, coins, badges, full dex, a maxed team, movesets, HMs, ×99 items, a
+ no-wild-encounters toggle, and a fly-warp to any town.
+- 🗺️ **EXPLORE** — a free-flying overworld camera that **smooth-scrolls** across
+ the whole seamless Kanto map, gliding over map connections, and can **warp you
+ to wherever you're looking**.
+- 💤 **SAVER** — a screensaver that puts EXPLORE on autopilot and drifts the
+ camera across Kanto on its own.
-- [**Wiki**][wiki] (includes [tutorials][tutorials])
-- [**Symbols**][symbols]
-- [**Tools**][tools]
+---
-You can find us on [Discord (pret, #pokered)](https://discord.gg/d5dubZ3).
+## 📸 Screenshots
-For other pret projects, see [pret.github.io](https://pret.github.io/).
+| The SL0P menu | Fly-warp submenu |
+|:---:|:---:|
+| ![SL0P menu](screenshots/menu.png) | ![Warp submenu](screenshots/warp.png) |
-[wiki]: https://github.com/pret/pokeyellow/wiki
-[tutorials]: https://github.com/pret/pokeyellow/wiki/Tutorials
-[symbols]: https://github.com/pret/pokeyellow/tree/symbols
-[tools]: https://github.com/pret/gb-asm-tools
-[ci]: https://github.com/pret/pokeyellow/actions
-[ci-badge]: https://github.com/pret/pokeyellow/actions/workflows/main.yml/badge.svg
+| EXPLORE camera (▲▼◀▶ = where you can go) | SAVER screensaver drifting over Celadon |
+|:---:|:---:|
+| ![EXPLORE](screenshots/explore.png) | ![SAVER](screenshots/saver.png) |
+
+---
+
+## 🎛️ The SL0P MENU
+
+Press **SELECT** in the overworld. Move the cursor, **A** to pick, **B** to back
+out / close.
+
+| Entry | Effect |
+|-------|--------|
+| **WARP** | fly-warp to any of 13 destinations (all towns + Route 4/10) |
+| **HEAL** | full HP + clear status for the whole party |
+| **MONEY** | ¥999,999 |
+| **COINS** | 9,999 game-corner coins |
+| **BADGES** | all 8 gym badges |
+| **DEX** | mark every Pokémon owned + seen |
+| **MAXTEAM** | whole party → Lv100, perfect DVs, maxed EVs, 999 stats/HP |
+| **TEACH** | give everyone Hyper Beam / Earthquake / Ice Beam / Thunderbolt |
+| **HMS** | give all five HMs (Cut/Fly/Surf/Strength/Flash) |
+| **ITEMS** | ×99 of balls, Rare Candy, Full Restore, Max Revive, Max Elixer, PP Up + all five evolution stones |
+| **NOWILD** | toggle wild encounters off |
+| **REPEL** | refill repel steps |
+| **EXPLORE** | free-flying overworld camera (see below) |
+| **SAVER** | overworld screensaver (see below) |
+
+### 🗺️ EXPLORE
+
+A self-contained camera that flies over the **seamless Kanto overworld** with a
+real hardware smooth-scroll — no character walking. The d-pad pans a screen at a
+time and glides straight across map connections at the edges; **▲▼◀▶ arrows**
+show which ways you can go. Press **A** to warp your trainer onto the tile you're
+looking at, or **B** to return to the menu.
+
+### 💤 SAVER
+
+EXPLORE on autopilot: it keeps drifting in one direction until it hits a bound,
+then turns and carries on, wandering across all of Kanto by itself. The arrows
+and your trainer/Pikachu are hidden for a clean view. Press any button to wake it.
+
+---
+
+## 🛠️ Build & play
+
+Needs [**RGBDS**](https://github.com/gbdev/rgbds) `v1.0.1` on your `PATH`
+(`rgbasm` / `rgblink` / `rgbfix` / `rgbgfx`). See [INSTALL.md](INSTALL.md) for
+toolchain setup.
+
+```sh
+make # -> pokeyellow.gbc (ship this one)
+```
+
+Load `pokeyellow.gbc` in any accurate Game Boy Color emulator (or flash it to a
+cart) and press **SELECT** in the overworld. The build is reproducible; the boot
+splash regenerates from `gfx/slop/intro.png`.
+
+---
+
+## 🧩 How it's built
+
+Almost everything lives in a handful of files, chiefly **`engine/slop_menu.asm`**
+(the SELECT menu + the EXPLORE/SAVER camera). Adding a menu entry is three lines.
+The overworld camera reuses the walking engine's own smooth-scroll machinery
+(`hSCX/hSCY`, the rotating VRAM map pointer, and the vblank row/column redraws) to
+scroll pixel-by-pixel and stream map connections.
+
+For the full technical write-up — the menu/handler dispatch, the smooth-scroll and
+map-crossing math, the screensaver's wander logic, and the WRAM/ROM budget notes —
+see **[SL0P.md](SL0P.md)**.
+
+---
+
+## 🙏 Credits
+
+- Built on the **[pret/pokeyellow](https://github.com/pret/pokeyellow)** disassembly
+ — see [README.pret.md](README.pret.md) for the upstream project, and huge thanks
+ to the pret team and contributors.
+- Pokémon is © Nintendo / Game Freak / The Pokémon Company. This is a
+ non-commercial fan project; **no ROM is distributed** — bring your own and build
+ from source.
diff --git a/README.pret.md b/README.pret.md
new file mode 100644
index 00000000..dcc01df6
--- /dev/null
+++ b/README.pret.md
@@ -0,0 +1,29 @@
+# Pokémon Yellow [![Build Status][ci-badge]][ci]
+
+This is a disassembly of Pokémon Yellow.
+
+It builds the following ROMs:
+
+- Pokemon Yellow (UE) [C][!].gbc `sha1: cc7d03262ebfaf2f06772c1a480c7d9d5f4a38e1`
+- YELLMONS.GB (debug build) `sha1: d44e96eddfbdad633cbe4e6e64915e9e198974b0`
+- Dmgapse0.h08.patch `sha1: f3346a5559d52c296b8feab0cdbbfb0e250ac161`
+
+To set up the repository, see [**INSTALL.md**](INSTALL.md).
+
+
+## See also
+
+- [**Wiki**][wiki] (includes [tutorials][tutorials])
+- [**Symbols**][symbols]
+- [**Tools**][tools]
+
+You can find us on [Discord (pret, #pokered)](https://discord.gg/d5dubZ3).
+
+For other pret projects, see [pret.github.io](https://pret.github.io/).
+
+[wiki]: https://github.com/pret/pokeyellow/wiki
+[tutorials]: https://github.com/pret/pokeyellow/wiki/Tutorials
+[symbols]: https://github.com/pret/pokeyellow/tree/symbols
+[tools]: https://github.com/pret/gb-asm-tools
+[ci]: https://github.com/pret/pokeyellow/actions
+[ci-badge]: https://github.com/pret/pokeyellow/actions/workflows/main.yml/badge.svg
diff --git a/SL0P.md b/SL0P.md
index 28c2df16..14a2865d 100644
--- a/SL0P.md
+++ b/SL0P.md
@@ -38,7 +38,7 @@ A table-driven cheat menu. Cursor + A to pick, B to back out / close.
| **NOWILD** | toggle wild encounters off (shows `ON`) |
| **REPEL** | refill repel steps |
| **EXPLORE** | a screen-paging overworld camera: each d-pad press smooth-scrolls the next screenful of the world (no walking), gliding across 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. |
-| **SAVER** | screensaver: EXPLORE on autopilot. Drifts the camera across the overworld on its own (persistent direction, DFS-ish: keeps going, turns when blocked or occasionally at a junction). Arrows and the player/Pikachu sprites are hidden. Any button wakes it back to the menu. |
+| **SAVER** | screensaver: EXPLORE on autopilot. Drifts the camera across the overworld on its own — keeps a heading until it hits a bound, then turns onto another open direction. Arrows and the player/Pikachu sprites are hidden. Any button wakes it back 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`.
@@ -63,10 +63,19 @@ neighbour (one unavoidable load), or stops if there's no connection.
**SAVER** is the same loop with `wSlopSaverDir` set: instead of reading the
d-pad, `SlopSaverPickDir` synthesises a direction into the normal dispatch (so it
-inherits smooth scroll + edge crossing), keeping a persistent heading and only
-turning when blocked or occasionally at a junction (never an immediate U-turn).
-Arrows are skipped, and OAM is cleared + frozen right after every `LoadMapData`
-so the reloaded player/Pikachu are never drawn. Any real button exits.
+inherits smooth scroll + edge crossing), keeping one heading until it's blocked,
+then turning onto a random still-open direction (never an immediate U-turn).
+"Open" (`SlopValidDirMask`) means >= 2 coords of room that way or a connection to
+cross — the >= 2 matters because moves round to even coords and a map's far edge
+is always odd, so a plain `coord != max` test would never register the edge and
+the wander would freeze one step short of it. Arrows are skipped, and OAM is
+cleared + frozen right after every `LoadMapData` so the reloaded player/Pikachu
+are never drawn. Any real button exits.
+
+Crossing a connection applies its alignment offset blindly, so at an edge the
+connection doesn't span the camera can land outside the neighbour; `SlopClampCoords`
+(run after every entry/cross `LoadMapData`) clamps the coords back into
+`[0,maxY] x [0,maxX]` so the view never reads past `wOverworldMap` into garbage.
- **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
diff --git a/screenshots/explore.png b/screenshots/explore.png
new file mode 100644
index 00000000..c058c0b0
--- /dev/null
+++ b/screenshots/explore.png
Binary files differ
diff --git a/screenshots/menu.png b/screenshots/menu.png
new file mode 100644
index 00000000..48eec140
--- /dev/null
+++ b/screenshots/menu.png
Binary files differ
diff --git a/screenshots/saver.png b/screenshots/saver.png
new file mode 100644
index 00000000..c7fbb81f
--- /dev/null
+++ b/screenshots/saver.png
Binary files differ
diff --git a/screenshots/splash.png b/screenshots/splash.png
new file mode 100644
index 00000000..a9984bfc
--- /dev/null
+++ b/screenshots/splash.png
Binary files differ
diff --git a/screenshots/warp.png b/screenshots/warp.png
new file mode 100644
index 00000000..943cfa01
--- /dev/null
+++ b/screenshots/warp.png
Binary files differ