Mechanic · structure & scoring · video pinball
Table mode
A timed objective a pinball table starts during play, with its own targets and scoring until it ends.
On this page
A table mode gives the player a goal for a while, with its own targets. In Pokémon Pinball’s Catch ‘Em mode, Voltorb hits reveal a Pokémon on the billboard1, hits on it catch it2, and every species gets 2 minutes3.
- TimedPokémon Pinball (1999). Catch 'Em mode: 2 minutes to reveal a Pokémon with 24 billboard tiles and hit it 4 times.1,2,3
Games
| Game | Year | How | Note |
|---|---|---|---|
| Pokémon Pinball | 1999 | Timed | Catch 'Em mode: 2 minutes to reveal a Pokémon with 24 billboard tiles and hit it 4 times |
Every claim about this mechanic, by game (3)
References
- ^ abIn Catch 'Em mode on the Red field, each Voltorb hit flips 4 of the billboard's 24 tiles and scores 100,000, so 6 hits reveal the Pokémon from a blank board (computed). The Pokémon appears once all 24 are flipped and the ball is on the table's lower half.Codepret/pokepinballrevised
How we know
231HandleVoltorbCollision_CatchemMode: ; 0x20230 resolve hitting a voltorb in catch mode? 232 ld a, [wNumberOfCatchModeTilesFlipped] 233 cp $18 ⋮ 251 ld a, [wNumberOfCatchModeTilesFlipped] 252 add $4 ;then add 4 to FlippedCount, clamp to 24 253 cp $18 ⋮ 258 cp $18 ⋮ 264 ld bc, OneHundredThousandPoints
engine/pinball_game/catchem_mode/catchem_mode_red_field.asm lines 231–264 at 0a6f6dc · upstream ↗ 28Func_20041: ; 0x20041 29 ld a, [wNumberOfCatchModeTilesFlipped] 30 cp $18 31 jr nz, .NotDone 32 ld a, [wCurrentStage] 33 bit 0, a 34 jr z, .NotDone
engine/pinball_game/catchem_mode/catchem_mode_red_field.asm lines 28–34 at 0a6f6dc · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-22.
Revised after a check by a second AI model, 2026-10-22.
- ^ abOnce the Pokémon appears, each registered hit scores 300,000 and steps a counter from 0 to 3, lighting part of the CATCH bar; a hit with the counter at 3 catches it, so the fourth registered hit catches. Mew counts a hit only when a separate byte of its own rolls over at 256, so it would need 1,024 hits from a zero byte (computed). When the timer runs out on Mew, the game marks Mew caught in the Pokédex anyway.Codepret/pokepinballrevised
How we know
97 ld a, [wBallHitWildMon] 98 and a 99 jp z, .BallDidntHitMon ;if no ball hit(?), jump ⋮ 106 ld a, [wCurrentCatchEmMon] 107 cp MEW - 1 108 jr nz, .notMew 109 ld a, [wNumMewHits] 110 inc a 111 ld [wNumMewHits], a 112 jr nz, .Not256MewHits 113.notMew 114 ld a, [wNumMonHits] ⋮
engine/pinball_game/catchem_mode/catchem_mode_red_field.asm lines 96–148 at 0a6f6dc · upstream ↗ 99 ld a, [wBallHitWildMon] ⋮ 116 ld a, [wNumMonHits] 117 cp $3
engine/pinball_game/catchem_mode/catchem_mode_blue_field.asm lines 99–120 at 0a6f6dc · upstream ↗ 866Func_10611: ; 0x10611 ⋮ 884Data_1062a: 885 dw Data_10630 886 dw Data_10638 887 dw Data_10640
engine/pinball_game/catchem_mode.asm lines 866–888 at 0a6f6dc · upstream ↗ 212CheckIfCatchemModeTimerExpired_RedField: ; 0x201f2 ⋮ 221 ; Automatically set Mew as caught, since you can't possibly catch it 222 ld a, [wCurrentCatchEmMon] 223 cp MEW - 1 224 jr nz, .asm_2021b 225 callba SetPokemonOwnedFlag 226.asm_2021b
engine/pinball_game/catchem_mode/catchem_mode_red_field.asm lines 212–227 at 0a6f6dc · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-22.
Revised after a check by a second AI model, 2026-10-22.
- ^ abEvery Pokémon gets the same 2 minutes to be caught: all 151 entries of
CatchEmTimerDataare 0 seconds and 2 minutes. Starting the mode also starts a 60-second ball saver that saves without limit, and the saver from before is restored when the mode ends.Codepret/pokepinballrevisedHow we know
1CatchEmTimerData: ; 0x12a22 2; Each 2-byte entry represents the total time you have to catch a Pokemon. 3; They're all exactly 2 minutes, 0 seconds, but they can be changed to make 4; different pokemon have different times, in order to add difficulty. 5; First byte = seconds value 6; Second byte = minutes value 7 db $00, $02 ; BULBASAUR ⋮ 157 db $00, $02 ; MEW
data/catchem_timer_values.asm lines 1–157 at 0a6f6dc · upstream ↗ 123 ld hl, CatchEmTimerData ;contains how long each mon stays on screen, all are 2 minutes by default ⋮ 129 callba StartTimer 130 callba InitBallSaverForCatchEmMode
engine/pinball_game/catchem_mode.asm lines 118–131 at 0a6f6dc · upstream ↗ 1InitBallSaverForCatchEmMode: ; 0xdbd4 ⋮ 10 ld a, $ff ⋮ 14 ld a, 60 15 ld [wBallSaverTimerSeconds], a 16 ld a, $ff 17 ld [wNumTimesBallSavedTextWillDisplay], a 18 ret ⋮ 20RestoreBallSaverAfterCatchEmMode: ; 0xdc00 ⋮ 24 ld [wBallSaverTimerSeconds], a ⋮ 26 ld [wNumTimesBallSavedTextWillDisplay], a
engine/pinball_game/ball_saver/ball_saver_catchem_mode.asm lines 1–32 at 0a6f6dc · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-22.
Revised after a check by a second AI model, 2026-10-22.
Sources
Code
- pret contributors. 2026. “pokepinball: disassembly of Pokémon Pinball.” pret. Commit 0a6f6dc. pret/pokepinball @ 0a6f6dc · licence, all uses