193 lines
13 KiB
Markdown
193 lines
13 KiB
Markdown
# Game Asset Spoilers and Possible Unreleased Features
|
|
|
|
## Scope
|
|
|
|
This page is a static, evidence-backed spoiler inventory from the extracted Pokemon SPIKE 3 rootfs. It uses the installed V.83 release notes, extracted Godot assets, decoded Godot script strings, Radium sound-name manifests, ASR draft labels, and native `/games/pokemon_pro/game` strings. I did not execute target AArch64 binaries.
|
|
|
|
Important confidence boundary: release-note entries are confirmed shipped in this rootfs. Native strings and Godot/Radium asset names confirm the content exists in the image, but do not by themselves prove the feature is reachable in normal gameplay. Rows marked `catalog_offset_candidate` are audio-name candidates from the documented Radium catalog-offset analysis, not native-confirmed registrations.
|
|
|
|
## Evidence Sources
|
|
|
|
- `/games/pokemon_pro/data/pro_release_notes.txt` and `/games/pokemon_pro/data/premium_release_notes.txt`: installed V.83 release notes.
|
|
- `/games/pokemon_pro/assets/godot/main.pck`, extracted to `assets/godot_raw/` and summarized in `assets/manifest.json`.
|
|
- `assets/godot_raw/data/pokemon_data.txt`: Pokemon data table used by the Godot `PokemonData` autoload.
|
|
- `analysis/godot-introspection/gdc_strings.tsv`: strings recovered from compiled Godot `.gdc` scripts.
|
|
- `analysis/godot-introspection/gdc_sound_refs.tsv`: recovered `SE_*` sound constants from compiled Godot scripts.
|
|
- `analysis/radium-image/pokedex_voice_label_manifest.tsv`: aligned Radium Pokedex voice clips.
|
|
- `analysis/radium-image/catalog_offset_candidate_labels.tsv`: Radium catalog-offset candidate sound labels.
|
|
- `analysis/all-sound-best-name-manifest.tsv`: best available sound aliases, including ASR-derived draft labels.
|
|
- `analysis/static-triage/game.strings`: offset-tagged strings from `/games/pokemon_pro/game`.
|
|
|
|
Useful commands used for this pass:
|
|
|
|
```sh
|
|
python3 - <<'PY'
|
|
import csv, collections
|
|
rows=list(csv.DictReader(open('assets/godot_raw/data/pokemon_data.txt', newline='', errors='replace')))
|
|
print(len(rows), collections.Counter(r['in_game'] for r in rows), collections.Counter(r['collectable'] for r in rows))
|
|
PY
|
|
|
|
python3 - <<'PY'
|
|
import csv
|
|
rows=list(csv.DictReader(open('analysis/godot-introspection/gdc_sound_refs.tsv', newline='', errors='replace'), delimiter='\t'))
|
|
for p in ['SE_PK_FX_TEAM_ROCKET_MULTIBALL_3','SE_PK_FX_STORY_WIZARD_LUCARIO','SE_PK_FX_EEVEE']:
|
|
print(p, len({r['sound_name'].strip() for r in rows if r['sound_name'].strip().startswith(p)}))
|
|
PY
|
|
|
|
rg -n "TEAM ROCKET MULTIBALL 3|PIKACHU VS. LUCARIO|AD_START_PIKACHU_VS_MAGIKARP|AD_EEVEE_EVOLUTION_COMBO_CHAMPION" analysis/static-triage/game.strings
|
|
```
|
|
|
|
## Shipped V.83 Spoilers
|
|
|
|
The installed release notes explicitly describe several gameplay systems that are still spoilers if the image is being analyzed before public play:
|
|
|
|
- Travel: complete `DISCOVER`, `CATCH`, `TRAIN`, and `BATTLE` in the current biome to light `TRAVEL` at the Town Scoop, then choose the next biome.
|
|
- Team Features: `Pikachu Hurry-Up`, `Squirtle Prize Pool`, `Charmander Super Spinner`, and `Bulbasaur Loops`, each boosting a team-member shot for the rest of the ball.
|
|
- Team Rocket Multiball 2: after playing Team Rocket Multiball 1, complete `B-A-T-T-L-E` targets and battle the Team Rocket Balloon to advance and start MB2.
|
|
- Magikarp Multiball / Topper Mode: collect `M-A-G-I-K-A-R-P` letters on the topper by catching Pokemon; letters carry over between players and games.
|
|
- Pokedex Assist, game-mode selection, target game time, Victory Bonus, Arena Bonus, Healing, and biome travel were added or adjusted in V.82/V.83.
|
|
|
|
Source: `/games/pokemon_pro/data/pro_release_notes.txt` and `/games/pokemon_pro/data/premium_release_notes.txt`, V.82/V.83 sections.
|
|
|
|
## Godot Scene and UI Spoilers
|
|
|
|
The Godot pack contains scenes and script entrypoints for the core display flow:
|
|
|
|
- `discover`, `discover_map_select`, `travel_selection`
|
|
- `first_catch_info`, `catch_select_choose`, `capture_battle`
|
|
- `select_battle_start`, `pokemon_battle`, `evolve`
|
|
- `pokedex_cine`, `pokedex_cine_home`
|
|
|
|
Evidence: `analysis/godot-introspection/gdc_strings.tsv` shows `assets/godot_raw/scenes/main/scripts/main.gdc` referencing `res://scenes/discover/discover.tscn`, `res://scenes/discover_map_select/discover_map_select.tscn`, `res://scenes/travel_selection/travel_selection.tscn`, `res://scenes/evolve/evolve.tscn`, `res://scenes/pokemon_battle/pokemon_battle.tscn`, and the Pokedex end-of-round cine scenes.
|
|
|
|
Biome UI strings and assets confirm four normal travel biomes:
|
|
|
|
- `forest`
|
|
- `coast` / lake
|
|
- `mountain`
|
|
- `desert`
|
|
|
|
Evidence: `assets/godot_raw/scenes/discover_map_select/scripts/discover_map_select.gdc` strings include `coast_biome_icon_145.png`, `desert_biome_icon_145.png`, `forest_biome_icon_145.png`, and `mountain_biome_icon_145.png`. The installed V.83 release notes describe Travel but not the specific biome asset set.
|
|
|
|
## Pokemon Roster Spoilers
|
|
|
|
`assets/godot_raw/data/pokemon_data.txt` has:
|
|
|
|
- `385` CSV rows total, including row `0` `Blank`.
|
|
- `384` nonblank Pokemon/placeholder rows.
|
|
- `377` rows marked `in_game=TRUE`.
|
|
- `201` rows marked `collectable=TRUE`.
|
|
- The highest numbered non-placeholder Pokemon row is `1019` Hydrapple.
|
|
- A placeholder `9999,Skip` row exists and is marked `in_game=#N/A`, `collectable=#N/A`.
|
|
|
|
The openable image extraction found `853` Pokemon-looking image files covering `382` unique numeric IDs, including Gen 9 IDs such as Sprigatito, Fuecoco, Quaxly, Annihilape, Dipplin, and Hydrapple.
|
|
|
|
Notable roster spoilers:
|
|
|
|
- `150` Mewtwo is marked `in_game=TRUE`, `collectable=FALSE`, with category and description text.
|
|
- `151` Mew is marked `in_game=TRUE`, `collectable=FALSE`, with category and description text.
|
|
- `144` Articuno, `145` Zapdos, and `146` Moltres have art entries but are marked `in_game=FALSE`, `collectable=FALSE`, with empty category/description fields.
|
|
- `448` Lucario is marked `in_game=TRUE`, `collectable=TRUE`.
|
|
- `778` Mimikyu is marked `in_game=TRUE`, `collectable=TRUE`.
|
|
- `1011` Dipplin and `1019` Hydrapple are marked `in_game=TRUE`, `collectable=FALSE`.
|
|
|
|
Voice evidence backs much of this roster. `analysis/radium-image/pokedex_voice_label_manifest.tsv` contains `1137` aligned Pokedex voice rows, covering `377` unique Pokemon numbers from `1` through `1019`, including `30` IDs at or above `900`.
|
|
|
|
## Battle and Progression Audio Spoilers
|
|
|
|
Catalog-matched ASR labels in `analysis/radium-image/asr_catalog_sound_label_candidates.tsv` expose battle structure and callouts:
|
|
|
|
- Rival battle instructions: `SE_PK_VO_RIVAL_BATTLE_LIT_INSTRUCTIONS`, transcript `Shoot the town scoop to start a rival battle!`
|
|
- Biome battle intros/outros for Forest, Lake, Mountain, and Desert.
|
|
- Story-mode generic outro lines about reaching or becoming champion of the Pokemon Arena.
|
|
- Battle commentary for Pokemon type attacks, comeback, dodge, perfect, incoming, and last-Pokemon situations.
|
|
- Catch instructions and escape callouts.
|
|
|
|
Draft ASR labels in `analysis/all-sound-best-name-manifest.tsv` also include spoiler-like lines:
|
|
|
|
- `Pikachu vs Charizard!`
|
|
- `Charizard has fainted!`
|
|
- `Pikachu vs. Lucario!`
|
|
- `Lucario has fainted!`
|
|
- `Pikachu vs. Magikarp`
|
|
- `Magikarp is evolving!`
|
|
- `Magikarp Multiball!`
|
|
- `Shoot the town scoop to travel.`
|
|
- `Once again, you will stand against Giovanni, the strongest trainer of all.`
|
|
- `Having lost like this, I can't bear to face my followers. Meowth spread the word that from this day forward, Team Rocket is no more.`
|
|
|
|
These ASR-derived lines are useful spoiler indicators, but they should be treated as draft labels until confirmed against native script tables or runtime playback.
|
|
|
|
## Possible Unreleased or Deep/Hidden Features
|
|
|
|
### Team Rocket Multiball 3
|
|
|
|
Evidence:
|
|
|
|
- Native `/games/pokemon_pro/game` string `TEAM ROCKET MULTIBALL 3` at `analysis/static-triage/game.strings` offset `0x25a0dc8`.
|
|
- `analysis/godot-introspection/gdc_sound_refs.tsv` contains `9` unique `SE_PK_FX_TEAM_ROCKET_MULTIBALL_3*` constants: start, awards 1 through 5, two Meowth attack FX, and total.
|
|
- `analysis/radium-image/catalog_offset_candidate_labels.tsv` maps those `SE_PK_FX_TEAM_ROCKET_MULTIBALL_3*` names to object IDs `324` through `332` as `candidate_unpromoted`.
|
|
|
|
Assessment: plausible future, deep, or hidden progression. The installed V.83 release notes mention Team Rocket Multiball 2 but do not mention Multiball 3. Because the native display string exists, this is stronger than an unused asset-only lead.
|
|
|
|
### Story Wizard 2 / Pikachu vs. Lucario
|
|
|
|
Evidence:
|
|
|
|
- Native adjustment strings `AD_POKEMON_STORY_WIZARD_1_BALL_SAVE_TIMER` and `AD_POKEMON_STORY_WIZARD_2_BALL_SAVE_TIMER`.
|
|
- Native debug/adjustment strings `AD_LIGHT_PIKACHU_VS_CHARIZARD` and `AD_LIGHT_PIKACHU_VS_LUCARIO`.
|
|
- Native display strings `PIKACHU VS. LUCARIO`, `OB_POK_PIKACHU_VS_LUCARIO_START`, and `OB_POK_PIKACHU_VS_LUCARIO_TOTAL`.
|
|
- `analysis/godot-introspection/gdc_sound_refs.tsv` contains `7` unique `SE_PK_FX_STORY_WIZARD_LUCARIO*` constants.
|
|
- Draft ASR includes `Pikachu vs. Lucario!` and `Lucario has fainted!`.
|
|
|
|
Assessment: likely a second story-wizard or late-game battle path. It is not described in the installed V.83 release notes. The presence of native object keys and adjustment strings makes this a high-value follow-up target.
|
|
|
|
### Pikachu vs. Magikarp / Magikarp Finale
|
|
|
|
Evidence:
|
|
|
|
- Native strings include `AD_START_PIKACHU_VS_MAGIKARP`, `PIKACHU VS. MAGIKARP`, `MAGIKARP IS EVOLVING!`, `MAGIKARP DEFEATED!`, `SHOOT RIGHT RAMP TO DEFEAT MAGIKARP`, `OB_POK_PIKACHU_VS_MAGIKARP_START`, `OB_POK_PIKACHU_VS_MAGIKARP_TOTAL`, `OB_POK_PIKACHU_VS_MAGIKARP_SUPER_JACKPOT`, and `OB_POK_PIKACHU_VS_MAGIKARP_DOUBLE_SUPER_JACKPOT`.
|
|
- Draft ASR includes `Pikachu vs. Magikarp`, `Magikarp is evolving!`, and `Magikarp Multiball!`.
|
|
- V.83 release notes describe Magikarp Multiball as Topper Mode, but do not explicitly describe a `Pikachu vs. Magikarp` battle/finale.
|
|
|
|
Assessment: likely a topper-linked final phase, super-jackpot phase, or debug-startable mode attached to Magikarp Multiball. It may already be shipped as part of Topper Mode rather than unreleased.
|
|
|
|
### Eevee Evolution Combos
|
|
|
|
Evidence:
|
|
|
|
- Native strings include `AD_EEVEE_EVOLUTION_COMBO_CHAMPION`, `EEVEE EVOLUTION COMBOS DEFAULT HIGH SCORE`, `ALL EEVEE EVOLUTION COMBOS COLLECTED!`, and `EEVEE EVOLUTION COMBO %d/%d: %s`.
|
|
- `analysis/godot-introspection/gdc_sound_refs.tsv` contains `23` unique `SE_PK_FX_EEVEE*` constants covering Vaporeon, Jolteon, Flareon, Espeon, Umbreon, Leafeon, Glaceon, and Sylveon award sounds.
|
|
- `analysis/radium-image/catalog_offset_candidate_labels.tsv` maps the Eevee FX family as `candidate_unpromoted`.
|
|
|
|
Assessment: plausible hidden/deeper feature or unfinished rule family. The release notes do not mention Eevee Evolution Combos.
|
|
|
|
### Cave, Mountain Top, Arena Neon, and Tournament Backgrounds
|
|
|
|
Evidence:
|
|
|
|
- Extracted Godot video backgrounds include `Arena/Stadium_01_22_26_h265.mp4`, `Arena_Neon/Tournament_Neon_01_22_26_h265.mp4`, `Cave_Entrance/cave_entrance_h265.mp4`, `Cave_Interior/cave_interior_h265.mp4`, `Coast/Lake_01_22_26_h265.mp4`, `Desert/desert_battle_med_h265.mp4`, `Forest/Forest_01_22_26_h265_2.mp4`, and `Mountain_Top/mountain_top_h265.mp4`.
|
|
- Normal travel UI strings expose only Forest, Coast, Mountain, and Desert icons.
|
|
- Native strings include extensive Arena and Tournament strings, and the V.83 release notes mention ToPS tournament support.
|
|
|
|
Assessment: Arena and Tournament are likely shipped/deep UI features, not unreleased. Cave and Mountain Top are stronger candidates for future, hidden, or unused background stages because they do not appear in the current four-biome travel icon map.
|
|
|
|
### SKU-Specific Premium/LE Hardware and Rules
|
|
|
|
Evidence:
|
|
|
|
- The same extracted `pokemon_pro` root contains `/games/pokemon_pro/data/premium_release_notes.txt`, whose banner says `POKEMON - LE`.
|
|
- Premium/LE notes describe Squirtle Whirlpool action-button behavior; Pro notes describe the same Squirtle Prize Pool without Whirlpool action-button lock-in.
|
|
- V.82 notes mention `Corrected Poke Ball servo device location on Premium/LE`.
|
|
- Native adjustment/device strings include `AD_MEOWTH_MOTOR_DISABLED`, `AD_MAGIKARP_MECH_DISABLED`, `AD_MAGIKARP_TOPPER_SERIAL_NUMBER_KEY`, `AD_PIKACHU_UP_POST_DISABLED`, and `AD_LEFT_RAMP_UP_POST_DISABLED`.
|
|
|
|
Assessment: this appears to be a multi-SKU software payload rather than unreleased content. It is still useful spoiler evidence for Premium/LE-only mechanisms and rules.
|
|
|
|
## Follow-Up Targets
|
|
|
|
- Trace native references to `TEAM ROCKET MULTIBALL 3` and determine whether it is reachable from shipped Team Rocket MB2 progression.
|
|
- Trace `AD_LIGHT_PIKACHU_VS_LUCARIO` and `OB_POK_PIKACHU_VS_LUCARIO_*` to find the real start conditions for the Lucario path.
|
|
- Trace `AD_START_PIKACHU_VS_MAGIKARP` and Magikarp object keys to separate shipped topper finale behavior from debug-only starts.
|
|
- Confirm whether Eevee Evolution Combos have active rule state, switch awards, or only high-score/display/audio scaffolding.
|
|
- Correlate Cave and Mountain Top video backgrounds with scene/resource call sites or runtime biome selection values.
|