Glitch City Laboratories Archives

Glitch City Laboratories closed on 1 September 2020 (announcement). This is an archived copy of an article from Glitch City Laboratories wiki.

A live version of this article is available at the Glitch City Wiki here.

You can join Glitch City Research Institute to ask questions or discuss current developments.

You may also download the archive of the wiki in .tar.gz or .xml.gz formats.

Focus Energy glitch

  • REDIRECT Template:Misc R/B/Y
    PRAMA Initiative a également une page sur .
    The Focus Energy glitch is a glitch in Pokémon Red, Blue, and Yellow.

    Focus Energy is a move that, ever since Generation II, increased the user's critical hit rate.

    In Generation I, due to a bug, Focus Energy will always effectively quarter the player's chances of getting a critical hit.

    This glitch was fixed in Pokémon Stadium, where a different critical hit rate formula is used instead, and Focus Energy indeed increases the critical hit rate.

    Analysis

    The relevant block of code for Focus Energy's effect is this, beginning at offset 3E055 in Pokémon Red and Blue (view 0F:6055 in a debugger). Thanks Wack0 for walking through this.

    bit 2, a ; test for focus energy jr nz, .focusEnergyUsed sla b ; b=b*2 jr nc, .noFocusEnergyUsed ; if b was below 128, skip... ld b, $ff ; a cap at 255/256 jr .noFocusEnergyUsed .focusEnergyUsed srl b ; whoops! b=b/2, and if you look, the jump to here is before the b=b*2, so b is effectively 1/4 of what it should be .noFocusEnergyUsed ; no cap at 255/256 for focus energy. I wonder if, if done properly, this would have caused bugs related to integer wraparound... ; ... (check for high critical hit move here)

    The relative jump to '.focusEnergyUsed' that happens when Focus Energy is used makes the game skip a 'sla b' (double b), and then a 'srl b' (half b) at '.focusEnergyUsed' halves the value in register 'b'.

    If Focus Energy is not used, the value in 'b' is doubled and if it was used, the value in 'b' is halved. 2.0/0.5=4.0, meaning critical hits land four times less likely.

    Categories