aboutsummaryrefslogtreecommitdiffstats
path: root/home
diff options
context:
space:
mode:
authorAsh Ketchum <no-reply@sl0p.foo>2026-07-15 13:37:56 +0200
committerAsh Ketchum <no-reply@sl0p.foo>2026-07-15 13:37:56 +0200
commit27c01477dffa3f0aa66d531e5b5ed1bdc54609e3 (patch)
tree71e0f344747f52fe58133886f83d51371581812d /home
parentexplore: don't hide the player (fixes glitchy orphaned Pikachu) (diff)
downloadpokeyellow-27c01477dffa3f0aa66d531e5b5ed1bdc54609e3.tar.gz
pokeyellow-27c01477dffa3f0aa66d531e5b5ed1bdc54609e3.tar.xz
pokeyellow-27c01477dffa3f0aa66d531e5b5ed1bdc54609e3.zip
explore: rewrite as an instant screen-paging camera
Per feedback, EXPLORE should page whole screens on button presses (instant redraw), not move/walk the character. Ripped out the walk-engine approach entirely -- reverted the CollisionCheckOnLand noclip hook and the OverworldLoop simulated-joypad paging hook, and removed both helpers. EXPLORE is now a self-contained camera loop that renders straight from the map block buffer: - view pointer = wOverworldMap + (by+1)*stride + bx (LoadCurrentMapView) - a d-pad press shifts the camera coords by ~one screen and re-renders - at a map edge it crosses to the connected map using that connection's alignment offset (or clamps if none), LoadMapData + re-render - B restores the origin view + returns to the SL0P menu No character walking, sprites hidden for a clean camera. Verified: within-map paging steps a screen at a time, seams cross with correct offsets (Pallet -> Route1 -> Viridian), 25-page random stress with no corruption, and normal gameplay resumes after exit.
Diffstat (limited to 'home')
-rw-r--r--home/overworld.asm4
-rw-r--r--home/yes_no.asm13
2 files changed, 2 insertions, 15 deletions
diff --git a/home/overworld.asm b/home/overworld.asm
index 95b94646..bac16375 100644
--- a/home/overworld.asm
+++ b/home/overworld.asm
@@ -1218,9 +1218,6 @@ SignLoop::
; function to check if the player will jump down a ledge and check if the tile ahead is passable (when not surfing)
; sets the carry flag if there is a collision, and unsets it if there isn't a collision
CollisionCheckOnLand::
- ld a, [wSlopNoclip] ; SL0P noclip: walk through everything (carry clear)
- and a
- ret nz
ld a, [wMovementFlags]
bit BIT_LEDGE_OR_FISHING, a
jr nz, .noCollision
@@ -1232,7 +1229,6 @@ CollisionCheckOnLand::
ld d, a
ld a, [wSpritePlayerStateData1CollisionData]
and d ; check if a sprite is in the direction the player is trying to go
- nop ; ??? why is this in the code
jr nz, .collision
xor a
ldh [hTextID], a
diff --git a/home/yes_no.asm b/home/yes_no.asm
index 8d995832..befcd3c4 100644
--- a/home/yes_no.asm
+++ b/home/yes_no.asm
@@ -5,11 +5,7 @@ YesNoChoice::
call InitYesNoTextBoxParameters
jr DisplayYesNoChoice
-TwoOptionMenu:: ; unreferenced
- ld a, TWO_OPTION_MENU
- ld [wTextBoxID], a
- call InitYesNoTextBoxParameters
- jp DisplayTextBoxID
+; SL0P: removed unreferenced TwoOptionMenu to reclaim ROM0 for the noclip guard.
InitYesNoTextBoxParameters::
xor a ; YES_NO_MENU
@@ -26,12 +22,7 @@ YesNoChoicePokeCenter::
lb bc, 8, 12
jr DisplayYesNoChoice
-WideYesNoChoice:: ; unreferenced
- call SaveScreenTilesToBuffer1
- ld a, WIDE_YES_NO_MENU
- ld [wTwoOptionMenuID], a
- hlcoord 12, 7
- lb bc, 8, 13
+; SL0P: removed unreferenced WideYesNoChoice to reclaim ROM0.
DisplayYesNoChoice::
ld a, TWO_OPTION_MENU