Open Kanto: the S.S. Aqua, the Kanto gyms, the Magnet Train, Mt. Silver and Red (Closes #33)
Checks / web (push) Failing after 18s
Private ROM checks / private-rom (push) Failing after 25m40s

All 146 Kanto maps, Route 22, Route 28 and Silver Cave are open. The
Magnet Train, Snorlax and the Poké Flute channel, the Diploma, the Trainer
House, Bill's grandpa, Oak's Pokédex rating in Pallet and Goldenrod's
postgame move tutor are ported; big objects cover 2x2 tiles. The Magnet
Train and the Diploma are compared with the cartridge frame by frame.

The playthrough continues from the Hall of Fame through the S.S. Aqua,
the eight Kanto badges, Oak opening Mt. Silver and Red's defeat and
credits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
kawaandClaude Opus 5.5 committed 2026-10-17 15:53:57 +02:00
1 parent f05fd8ebee
commit d3be732118
22 files changed
+1877 -31

No files matched your search

+10 -2
View File
@@ -6,6 +6,7 @@ import { emptyScriptState } from "../src/game/scripts/interpreter";
import { generatePartyMon } from "../src/game/party/pokemon";
import type { Direction } from "../src/game/world/types";
import { settle } from "./world-driver";
import { NATIVE_MAPS } from "../src/game/rom/profile";
const romPath =
process.env.CRYSTAL_ROM_PATH ??
@@ -208,8 +209,15 @@ describe.skipIf(!existsSync(romPath))("Fly, Dig, Teleport and the Escape Rope",
for (let press = 0; press < 4 && flyMap(world)?.name !== "SILVER CAVE"; press++)
world.moveCursor("down");
expect(flyMap(world)?.name).toBe("SILVER CAVE");
world.choose("a");
until(world);
// Every flypoint is open now: close Mt. Silver's for this test.
const silverCave = NATIVE_MAPS["19:2"];
delete NATIVE_MAPS["19:2"];
try {
world.choose("a");
until(world);
} finally {
NATIVE_MAPS["19:2"] = silverCave;
}
expect(world.notice).toBe("This destination is not ported yet.");
close(world);
expect([world.mapId, world.x, world.y]).toEqual([ROUTE_29, 50, 10]);