Open Mr. Pokémon's house, the first rival battle and the return to Elm
Checks / web (push) Canceled after 0s
Checks / web (push) Canceled after 0s
Mr. Pokémon's ROM scene gives the Mystery Egg and Pokédex, heals the party, sets the Cherrygrove spawn with blackoutmod and queues Elm's call. Cherrygrove's rival scene runs both triggers and all three RIVAL1_1 parties as a CANLOSE battle; reloadmap returns to the script. Smart AI is accepted for effects with no AI_Smart_EffectHandlers entry (Normal Hit, Attack Down, Defense Down) and still refuses others before any random draw, including for reserve Pokémon. Special calls read SpecialPhoneCallList: the entry's condition decides, and the ROM's CheckSpecialPhoneCall.script and Script_ReceivePhoneCall run its caller script through memcall, ending with HangUp's timed "Click!". Ringing and the caller box are not presented yet. In Elm's lab, NameRival shows the ROM's "RIVAL'S NAME?" title (the prompt previously had no page and soft-locked) and applies InitName's default to blank names. Handing over the Egg and the aide's Poké Balls run from the ROM. Saves gain rivalName and specialPhoneCall. The quest fixtures use a seeded RNG (a constant byte never ends the damage-variation loop) and no longer carry the house's moved objects into Cherrygrove. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
7c1c0cc45b
commit
dc10343520
18 files changed
+812
-34
No files matched your search
+21
-2
@@ -71,7 +71,7 @@ Native saves are version 3. Version 2 added scene values by owning map, phone co
|
||||
|
||||
`game/rom/trainers.ts` decodes `TrainerGroups`, `TrainerClassAttributes`, `TrainerClassNames`, `TrainerClassDVs` and map trainer headers. Tests cover all 542 ROM records across 67 classes; CAL2 construction refuses its SRAM-dependent Mystery Gift party.
|
||||
|
||||
`game/battle/ai.ts` translates `AIChooseMove`, `AI_Redundant` and the Basic, Setup, Types, Offensive, Opportunist, Aggressive, Cautious, Status and Risky layers. It preserves the original random tie selection, known redundancy quirks, HP thresholds, exclusions and the deterministic pre-variation damage estimate used by Aggressive and Risky. Smart remains refused, including the rival's AI. Synthetic scoring vectors establish the tested branches; original-engine AI execution parity is still pending.
|
||||
`game/battle/ai.ts` translates `AIChooseMove`, `AI_Redundant` and the Basic, Setup, Types, Offensive, Opportunist, Aggressive, Cautious, Status and Risky layers. It preserves the original random tie selection, known redundancy quirks, HP thresholds, exclusions and the deterministic pre-variation damage estimate used by Aggressive and Risky. Smart runs only for move effects that have no `AI_Smart_EffectHandlers` entry (Normal Hit, Attack Down, Defense Down; enough for the first rival). Other effects are refused before any random draw. Synthetic scoring vectors establish the tested branches; original-engine AI execution parity is still pending.
|
||||
|
||||
`loadtrainer`, `winlosstext` and `startbattle` run scripted trainer battles through the existing battle UI. Tests cover Joey's ROM party/text/reward, RUN refusal, trainer experience, Amulet Coin, CANLOSE behavior, money limits, transactional rollback and midbattle restore. Chromium and WebKit exercise the UI with a test-only script.
|
||||
|
||||
@@ -87,7 +87,7 @@ A trainer sighting whose script is refused is not restarted until the player mov
|
||||
|
||||
## Next slice
|
||||
|
||||
Route 29, Cherrygrove and Route 30 are enabled with item balls, hidden items, fruit trees and the daily reset, the Pokémon Center nurse, the recorded whiteout spawn and map trainers. NPCs roam. Next: Mr. Pokémon's house and the Mystery Egg, capture with the catching tutorial, and party, bag and Pokégear menus over the native models. Other specials stay refused until translated.
|
||||
Route 29, Cherrygrove, Route 30 and Mr. Pokémon's house are enabled with item balls, hidden items, fruit trees and the daily reset, the Pokémon Center nurse, the recorded whiteout spawn, map trainers, the first rival battle and Elm's special call. NPCs roam. Next: capture with the catching tutorial, then party, bag and Pokégear menus over the native models. Other specials stay refused until translated.
|
||||
|
||||
## Reflect and Light Screen
|
||||
|
||||
@@ -101,3 +101,22 @@ and retains the original critical/stage rule. Safeguard and other screen
|
||||
flags remain refused. Seven local-ROM tests cover move execution, counters,
|
||||
PP, damage stats and send-out persistence; no screen-routine emulator parity
|
||||
or physical-device validation is claimed.
|
||||
|
||||
## Mr. Pokémon, the first rival and special calls
|
||||
|
||||
`MrPokemonsHouse.asm`, `CherrygroveRivalScene*` and the `ElmsLab.asm` officer
|
||||
and Egg scripts run from the ROM. Supporting translations: `blackoutmod`,
|
||||
`reloadmap` (returns to the script; native presentation keeps the map),
|
||||
`readvar VAR_SPECIALPHONECALL` and `memcall` (only through
|
||||
`wCallerContact + PHONE_CONTACT_SCRIPT2_BANK`). Specials: `NameRival` (native
|
||||
naming field, ROM title and `InitName` default), `FadeOutMusic`, and the
|
||||
presentation-only fades. `CountStep`'s `CheckSpecialPhoneCall` reads the
|
||||
queued `SpecialPhoneCallList` entry. It checks `SpecialCallOnlyWhenOutside`
|
||||
or `SpecialCallWhereverYouAre`, then runs `CheckSpecialPhoneCall.script` with
|
||||
that entry's caller script. `RingTwice_StartCall` and `InitCallReceiveDelay`
|
||||
are accepted without effect, because ringing presentation and random calls are
|
||||
not ported. `HangUp` shows "Click!" for its 140 frames. Local-ROM tests cover
|
||||
the house, both rival triggers with all three parties, a rival loss, the call
|
||||
indoors, outdoors and on reload, the officer's naming (including blank names
|
||||
and reload at the naming screen), and the Egg and Poké Ball handovers. Browser
|
||||
tests cover the house, the rival battle and the naming field.
|
||||
Reference in new issue
Block a user