Port the special battle types and contest battles
Checks / web (push) Canceled after 0s

Run the forced-shiny, trap, forced-item, Celebi, Suicune, roaming and Bug-Catching Contest battle types. Roaming battles keep their struct's DVs and HP byte, and every other battle makes CleanUpBattleRAM's roaming roll. The contest shows PARKBALL×, counts down Park Balls, ends when they run out, keeps its catch outside the party and asks before switching. Scripts load the special types with loadvar, and while a contest runs, encounters use BugCatchingContestBattleScript and ContestMons.

Validated with 596 unit tests, 155 browser tests (including the contest menu and switch screen), native/reference builds and reference/vendor/release checks. National Park's contest event, the roaming release and the Ilex Forest Celebi event come with their maps.

Closes #28

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Sébastien QUEROLandClaude Opus 5.5 committed 2026-10-03 15:56:30 +02:00
1 parent b547ca29ff
commit 8fae1f0c0f
15 files changed
+787 -42

No files matched your search

+7
View File
@@ -160,6 +160,7 @@ export const RAM = {
curHPAnimDeltaHP: 0xd1f3,
visitedSpawns: 0xdca5,
tempWildMonSpecies: 0xd22e,
parkBallsRemaining: 0xdc79,
coins: 0xd855,
/** hBGMapMode: HRAM, like hMoneyTemp below. */
bgMapMode: 0xffd4,
@@ -193,6 +194,8 @@ export const ENGINE_FLAGS = {
/** Overworld scripts, routines and tables, keyed by their PRET labels so
* that `npm run check:reference` verifies each address by name. */
export const OVERWORLD = {
BugCatchingContestBattleScript: 0x135eb,
ContestMons: 0x97d87,
"OverworldTownMap": 0xc2c0,
"TownMapGFX": 0xf8ba0,
"JohtoMap": 0x91fff,
@@ -593,6 +596,10 @@ export const BATTLE = {
"HeavyBall_GetDexEntryBank.PokedexEntryBanks": 0xec4c,
"HeavyBallMultiplier.WeightsTable": 0xecc4,
FleeMons: 0x3c59a,
WildCelebiAppearedText: 0x80793,
ContestAskSwitchText: 0xcc0c2,
"DisplayAlreadyCaughtText.ContestAlreadyCaughtText": 0xcc0d0,
"BugContest_SetCaughtContestMon.ContestCaughtMonText": 0xe71d,
DownpourText: 0x817a3,
SunGotBrightText: 0x817b8,