diff options
author | Eldred Habert <eldredhabert0@gmail.com> | 2019-03-03 17:27:35 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-03 17:27:35 +0100 |
commit | add58fb00d73495655243c4cf13b730bbc1b3242 (patch) | |
tree | 69cb2e4a95a8fb65f8025c424e33ded2c2029d42 | |
parent | e671636bba211b30a15b86bf748989b6e61dcf0a (diff) |
Fix "100% secondary effect" fix, add compatibility
The original fix was bugged (example: erroneous `pop hl` if `.failed` was jumped to).
Replaced with a less invasive fix, keeping all side effects from the original function; it's less intuitive, but more performant - and the tricky bit has been commented.
Also the new fix is more friendly to the compatibility patch I also added, by request of ShinyDragonHunter.
-rw-r--r-- | docs/bugs_and_glitches.md | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/docs/bugs_and_glitches.md b/docs/bugs_and_glitches.md index f58d2a06b..020090329 100644 --- a/docs/bugs_and_glitches.md +++ b/docs/bugs_and_glitches.md @@ -175,24 +175,38 @@ This bug existed for all battles in Gold and Silver, and was only fixed for sing ```diff - ; BUG: 1/256 chance to fail even for a 100% effect chance, - ; since carry is not set if BattleRandom == [hl] == 255 +- call BattleRandom + ld a, [hl] -+ cp 100 percent -+ jr z, .ok - call BattleRandom ++ sub 100 percent ++ ; If chance was 100%, RNG won't be called (carry not set) ++ ; Thus chance will be subtracted from 0, guaranteeing a carry ++ call c, BattleRandom cp [hl] -- pop hl -- ret c -+ jr c, .ok + pop hl + ret c .failed ld a, 1 ld [wEffectFailed], a and a -+.ok -+ pop hl ret ``` +If you wish to keep compatibility with standard Pokémon Crystal, you can disable the fix during link battles by also applying the following edit in the same place: + +```diff ++ ld a, [wLinkMode] ++ cp LINK_COLOSSEUM ++ scf ; Force RNG to be called ++ jr z, .nofix ; Don't apply fix in link battles, for compatibility + ld a, [hl] + sub 100 percent + ; If chance was 100%, RNG won't be called (carry not set) + ; Thus chance will be subtracted from 0, guaranteeing a carry ++ .nofix + call c, BattleRandom +``` + ## Belly Drum sharply boosts Attack even with under 50% HP *Fixing this bug will break compatibility with standard Pokémon Crystal for link battles.* |