From 27c01477dffa3f0aa66d531e5b5ed1bdc54609e3 Mon Sep 17 00:00:00 2001 From: Ash Ketchum Date: Wed, 15 Jul 2026 13:37:56 +0200 Subject: 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. --- home/overworld.asm | 4 ---- home/yes_no.asm | 13 ++----------- 2 files changed, 2 insertions(+), 15 deletions(-) (limited to 'home') 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 -- cgit v1.3.1-sl0p