Mechanic · enemies & ai · action, fighting game, boxing
Telegraph
A cue that an attack is coming, given early enough for the player to react.
On this page
A telegraph warns that an attack is coming. In Mike Tyson’s Punch-Out!! a script can recolor the opponent’s outline for a few frames before a punch, and the color is the fight’s own dodge cue1.
- Color flashMike Tyson's Punch-Out!! (1987). A script recolors the opponent's outline before a punch; Glass Joe's right hook sets a count of 4, 4 frames by the comment.1
Games
| Game | Year | How | Note |
|---|---|---|---|
| Mike Tyson's Punch-Out!! | 1987 | Color flash | a script recolors the opponent's outline before a punch; Glass Joe's right hook sets a count of 4, 4 frames by the comment |
Every claim about this mechanic, by game (1)
References
- ^ abThe NES Rev 1 cues a dodge by recoloring the opponent's outline. A script writes OppOutlineTimer with its high bit set; the main game loop calls SetOppOutlineClr, which then clears that bit, keeps the count, and writes the fight's dodge outline color into four sprite palette entries. Each later call counts the timer down, and at zero it writes the normal color back. Glass Joe's fight data gives palette values
$26for the dodge outline and$08for the normal one, and his right hook sets the timer to$84, a count of 4 later calls (4 frames by the comment), before its variable wait and the punch.Codenmikstas/mike-tysons-punch-out-disassemblyrevisedHow we know
66.alias OppOutlineTimer $9C ;Timer for dodge indicator outline color. MSB set=set timer.source_files/Mike_Tysons_Punchout_Defines.asm line 66 at 60b2fa0 · upstream ↗ 4493SetOppOutlineClr: 4494LC440: LDA OppOutlineTimer ;Is outline color timer active? 4495LC442: BEQ OppOutlineEnd ;If not, branch to exit. ⋮ 4497LC444: BMI SetOutlineTimer ;Does ouotline color timer need to be initialized? If so, branch. ⋮ 4499LC446: DEC OppOutlineTimer ;Decrement outline color timer. Has timer expired? 4500LC448: BNE OppOutlineEnd ;If not, branch to exit. ⋮ 4502LC44A: LDY #$01 ;Prepare to set normal outline color. ⋮ 4506LC44E: AND #$7F ;Clear MSB to indicate timer is running. 4507LC450: STA OppOutlineTimer ;Set outline color timer. 4508LC452: LDY #$00 ;Prepare to set dodge indicator outline color. ⋮ 4511LC454: LDA OppOutline,Y ;Get opponent outline color. 4512LC457: LDX #$04 ;Prepare to change 4 sprite palette bytes. ⋮
source_files/PRG_BankDEF.asm lines 4493–4530 at 60b2fa0 · upstream ↗ 725MainGameEngine: ⋮ 763LA6C3: JSR SetOppOutlineClr ;($C440)Set opponent outline color.
source_files/PRG_BankDEF.asm lines 725–763 at 60b2fa0 · upstream ↗ 224.alias OppOutline $05EC ;Base address for determining the opponent's outline color.source_files/Mike_Tysons_Punchout_Defines.asm line 224 at 60b2fa0 · upstream ↗ 1139L9363: .byte $26 ;Opponent outline color when Little Mac should dodge. 1140L9364: .byte $08 ;Normal opponent outline color.
source_files/PRG_Bank000.asm lines 1139–1140 at 60b2fa0 · upstream ↗ 678L8C67: .byte ST_WRITE_BYTE ;Write a byte to zero page memory. 679L8C68: .byte OppOutlineTimer ;Change opponent's outline color to indicate its time to dodge. 680L8C69: .byte $84 ;Change outline color for 4 frames. ⋮ 683L8C6A: .byte ST_VAR_TIME ;Set sub-state time to a variable amount.
source_files/PRG_Bank000.asm lines 677–683 at 60b2fa0 · 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
- (nmikstas), Nick Mikstas. 2020. “Mike Tyson's Punch-Out!! (NES), partial disassembly (nmikstas).” Commit 60b2fa0. nmikstas/mike-tysons-punch-out-disassembly @ 60b2fa0 · licence, all uses