Skip to content

Walk Red and Blue from the bedroom to Lt. Surge - #606

Merged
Decryptu merged 1 commit into
mainfrom
gen1-story-walk
Sep 10, 2026
Merged

Walk Red and Blue from the bedroom to Lt. Surge#606
Decryptu merged 1 commit into
mainfrom
gen1-story-walk

Conversation

@Decryptu

Copy link
Copy Markdown
Owner

tools/preview_world_story.gd -- red 0 38 3 6 1 none home story drives a Generation 1 cache with the same tool as Crystal's: three badges, 35 fights and 75 steps, from Oak on the north path through the lab, the parcel, Viridian Forest, Brock, Mt. Moon's fossil floor, the Nugget Bridge rival, Bill's cell separator, Misty, the robbed house's yard, the Underground Path, the S.S. Anne and its departure, CUT on the gym's tree, the two trash-can locks and Lt. Surge. Blue walks the same route; Yellow stops on Pallet Town's north row at PalletTownPikachuBattleScript, whose BATTLE_TYPE_PIKACHU catch no battle here runs.

Fixed

  • Every Generation 1 map connection landed at the source x: the importer stored x_alignment and nothing read it, so Route 1's road came out ten cells into Viridian's fenced corner. The two bytes ride as x_offset and y_offset now, which is EnterMapConnection's own arithmetic.
  • No TM or HM could be taught on Generation 1: CanLearnTMHMMove was bounded at Crystal's eight flag bytes where BaseStats keeps seven.
  • A trainer paid a hundred times the prize with Crystal's quarter split on top: pic_money's bcd3 is read two bytes wide as GetTrainerInformation copies it, and wAmountMoneyWon is paid whole.
  • A map whose entry script opens on a branch had no dispatch byte, so a won fight on Pallet Town, Oak's Lab or Viridian Mart never reached row 2.
  • A swapped-in text table was read only as far as the objects name, so the Viridian Mart clerk's two parcel rows were empty.
  • hTextID and hSpriteIndex are one HRAM byte: a row a map script opens by id fights that object, where Mt. Moon's super nerd had been the last rocket met.
  • TextCommand_ASM runs code inside a printed text, which is how the captain's back rub sets its own flag and Pallet Town's Oak raises the ! bubble.
  • A hand-set BIT_SCRIPTED_MOVEMENT_STATE is StartSimulatingJoypadStates without the call: the dock, Pokemon Tower 6F, Seafoam B3F and the three Saffron gates push the player a step that way.
  • wDestinationWarpID is a destination_warp test and VermilionDockSSAnneLeavesScript an ss_anne_leaves node: the flag, its 1144 frames and dec [wNumberOfWarps] taking the gangway off the dock.
  • DisplayDiploma is a diploma request, so the game designer's completed-dex line prints.
  • A Generation 1 request list that ends on its request answers the host with a terminal result; Gen2WorldPartyHost had refused every gift as runtime_request_failed.
  • Yellow's Oak reads wSavedCoordIndex three ways with dec a and jr nz behind each other; dec a over that byte tests one index higher.

Changed

  • Gen2WorldAPI.step_blocked_from, allows_hop_at, warp_pending and gen2_code_at are what the story walk plans a path with, so one planner serves both generations; gen1_map_script_state reads the map's own w<Map>CurScript.
  • RomFile.s8 and signed_byte replace three copies of the same helper.
  • tools/checks/gen1_walk.gd crosses Route 1 onto Viridian, takes the parcel, puts the lab's ball in the party through the host, fights the nerd off the map script, rubs the captain's back, sails the ship out and is pushed back by the Route 8 gate; gen1_tables.gd pins 3037 learnable species/machine pairs on Red and Blue and 3043 on Yellow; gen1_maps.gd's census carries the new nodes.

… met

`tools/preview_world_story.gd -- red 0 38 3 6 1 none home story` drives a
Generation 1 cache with the same tool as Crystal's: three badges, 35 fights
and 75 steps, from Oak on the north path through the lab, the parcel, the
forest, Brock, Mt. Moon, Cerulean, Bill, Misty, the robbed house, the
Underground Path, the S.S. Anne, CUT and the Vermilion Gym.

Fixed at their seams and pinned in the checks:

- A connection landed at the source x: the importer stored `x_alignment`
  and nothing read it. The two bytes ride as `x_offset` and `y_offset`.
- No TM or HM could be taught: `CanLearnTMHMMove` was bounded at eight
  flag bytes where `BaseStats` keeps seven.
- A trainer paid a hundred times the prize with Crystal's quarter split on
  top: `bcd3` is read two bytes wide and `wAmountMoneyWon` is paid whole.
- A map whose entry script opens on a branch had no dispatch byte.
- A swapped-in text table stopped at the rows the objects name.
- `hTextID` and `hSpriteIndex` are one byte, so a row a map script opens by
  id fights that object.
- `TextCommand_ASM` runs code inside a printed text.
- A hand-set BIT_SCRIPTED_MOVEMENT_STATE starts the joypad buffer's walk.
- `wDestinationWarpID` is a test node and the ship's departure a node of its
  own; `DisplayDiploma` is a request.
- A request list ending on its request answers the host with a terminal
  result, so a gift reaches the party.
- `dec a` over `wSavedCoordIndex` tests one index higher.
@Decryptu
Decryptu merged commit a8e417a into main Sep 10, 2026
1 check passed
@Decryptu
Decryptu deleted the gen1-story-walk branch September 10, 2026 11:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant