Fire Emblem: The Binding Blade
A Game Boy Advance Fire Emblem, Fūin no Tsurugi in Japanese, read through the fireemblem6j decompilation of its Japanese release.
On this page
Fire Emblem: The Binding Blade, Fūin no Tsurugi in Japanese, is a tactical role-playing game for the Game Boy Advance. The code read here is the FireEmblemUniverse fireemblem6j decompilation, which builds the Japanese ROM.
It already rolls hit on the average of two random numbers1. Each number divides a 16-bit value by 655, so it can reach 100, and a displayed 100 misses when both do: 1,296 times in 2³², computed from the code with the two rolls taken as independent2. The Sacred Stones scales by 100/65,536 instead, so its numbers stop at 99 and a displayed 100 always hits3.
Mechanics
| Mechanic | Kind | How |
|---|---|---|
| Hit chance | Two rolls averaged | hit less avoid, against the average of two numbers from 0 to 100, so even a shown 100 can miss |
| Critical hit | Weapon and stats | the weapon's crit plus half the skill, plus 30 for some classes, less the defender's luck; a critical triples the damage |
Every claim about this game, by concept (4)
References
- ^The Binding Blade hits when the displayed hit is greater than the average of two random numbers, rounded down; each number divides a 16-bit
NextRN()by 655, so it runs from 0 to 100, and 100 comes from only 36 of the 65,536 values.Codefireemblem6jHow we know
69int RandNext_100(void) ⋮ 71 // take the next rn (range 0-0xFFFF) and convert it to a range 0-99 value 72 // NOTE: bugged due to rounding 73 return NextRN() / (UINT16_MAX / 100);
src/random.c lines 69–73 at e83dd39 · upstream ↗ 88bool RandRoll2Rn(int threshold) ⋮ 92 rand = RandNext_100(); 93 rand = rand + RandNext_100(); 94 rand = rand / 2; ⋮ 96 return (threshold > rand);
src/random.c lines 88–96 at e83dd39 · upstream ↗ 746 if (BattleRandRoll2Rn(gBattleSt.hit, TRUE) == FALSE) ⋮ 748 gBattleHitIt->attributes |= BATTLE_HIT_ATTR_MISS;
src/battle.c lines 746–749 at e83dd39 · upstream ↗ 738 gBattleSt.hit = attacker->battle_effective_hit;src/battle.c line 738 at e83dd39 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-21.
Checked by a second AI model, 2026-10-21.
- ^Computed from the code, taking the two numbers as independent, a displayed 80 in The Binding Blade hits 92.16% of the time, 50 hits 50.44%, and 20 hits 8.19%; a displayed 100 misses 1,296 times in 4,294,967,296, when both numbers come out 100.Codefireemblem6jrevised
How we know
73 return NextRN() / (UINT16_MAX / 100);src/random.c line 73 at e83dd39 · upstream ↗ 92 rand = RandNext_100(); 93 rand = rand + RandNext_100(); 94 rand = rand / 2; ⋮ 96 return (threshold > rand);
src/random.c lines 92–96 at e83dd39 · upstream ↗ 521 if (attacker->battle_effective_hit > 100) 522 attacker->battle_effective_hit = 100;
src/battle.c lines 521–522 at e83dd39 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-21.
Revised after a check by a second AI model, 2026-10-21.
- ^In the North American build, an attack hits when the displayed hit is greater than the average of two random numbers from 0 to 99, rounded down; each number scales a 16-bit
NextRN()by 100/65,536.Codefireemblem8uHow we know
68int NextRN_100(void) { 69 // take the next rn (range 0-0xFFFF) and convert it to a range 0-99 value 70 return NextRN() * 100 / 0x10000;
src/rng.c lines 68–70 at 04d1edb · upstream ↗ 89s8 Roll2RN(int threshold) { 90 int average = (NextRN_100() + NextRN_100()) / 2; ⋮ 92 return (threshold > average);
src/rng.c lines 89–93 at 04d1edb · upstream ↗ 1007 if (!(gBattleHitIterator->attributes & BATTLE_HIT_ATTR_SURESHOT)) { 1008 if (!BattleRoll2RN(gBattleStats.hitRate, TRUE)) { 1009 gBattleHitIterator->attributes |= BATTLE_HIT_ATTR_MISS;
src/bmbattle.c lines 1007–1011 at 04d1edb · upstream ↗ 879void BattleUpdateBattleStats(struct BattleUnit* attacker, struct BattleUnit* defender) { ⋮ 882 gBattleStats.hitRate = attacker->battleEffectiveHitRate;
src/bmbattle.c lines 879–882 at 04d1edb · upstream ↗ 260 PutNumberTwoChr(gUiTmScratchA + 0xA8 + 0x40, 2, gBattleActor.battleEffectiveHitRate);src/bksel.c line 260 at 04d1edb · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-21.
Checked by a second AI model, 2026-10-21.
Sources
Code
- FireEmblemUniverse contributors. 2026. “fireemblem6j: decompilation of Fire Emblem: The Binding Blade.” FireEmblemUniverse. Commit e83dd39. FireEmblemUniverse/fireemblem6j @ e83dd39 · licence, all uses
- FireEmblemUniverse contributors. 2026. “fireemblem8u: decompilation of Fire Emblem: The Sacred Stones.” FireEmblemUniverse. Commit 04d1edb. FireEmblemUniverse/fireemblem8u @ 04d1edb · licence, all uses