data/claims/fe6.yamlFire Emblem: The Binding Blade (FireEmblemUniverse/fireemblem6j)
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. fe6/hit-roll
About: Fire Emblem: The Binding Blade Hit chance
Value
{
"rolls": 2,
"range": [
0,
100
],
"scale": "NextRN() / (65535 / 100)",
"combine": "floor((a + b) / 2)",
"hitIf": "hit > combined"
}src/random.c#L69-L73int RandNext_100(void)
// take the next rn (range 0-0xFFFF) and convert it to a range 0-99 value
// NOTE: bugged due to rounding
return NextRN() / (UINT16_MAX / 100);fireemblem6j: decompilation of Fire Emblem: The Binding Blade · src/random.c#L88-L96bool RandRoll2Rn(int threshold)
…
rand = RandNext_100();
rand = rand + RandNext_100();
rand = rand / 2;
return (threshold > rand);fireemblem6j: decompilation of Fire Emblem: The Binding Blade · src/battle.c#L746-L749if (BattleRandRoll2Rn(gBattleSt.hit, TRUE) == FALSE)
…
gBattleHitIt->attributes |= BATTLE_HIT_ATTR_MISS;fireemblem6j: decompilation of Fire Emblem: The Binding Blade · src/battle.c#L738gBattleSt.hit = attacker->battle_effective_hit;Checked by claude-agent, 2026-10-21 — read RandNext_100 and RandRoll2Rn, and the hit test in BattleGenerateHitAttributes; UINT16_MAX / 100 is 655 in integer division, and 65,535 / 655 is 100 for the top 36 valuesCited by: Fire Emblem: The Binding Blade, Hit chance
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. fe6/true-hit-example
About: Fire Emblem: The Binding Blade Hit chance
Value
{
"shown": [
20,
50,
80
],
"actual": [
8.19,
50.44,
92.16
],
"missAt100": [
1296,
4294967296
]
}src/random.c#L73return NextRN() / (UINT16_MAX / 100);fireemblem6j: decompilation of Fire Emblem: The Binding Blade · src/random.c#L92-L96rand = RandNext_100();
rand = rand + RandNext_100();
rand = rand / 2;
return (threshold > rand);fireemblem6j: decompilation of Fire Emblem: The Binding Blade · src/battle.c#L521-L522if (attacker->battle_effective_hit > 100)
attacker->battle_effective_hit = 100;Checked by claude-agent, 2026-10-21 — counted by script over all 65,536 × 65,536 pairs of NextRN() values; a hit of 100 fails only when both numbers are 100, 36 × 36 = 1,296 pairsThe generator's consecutive outputs are not truly independent; no emulator measurement backs these numbers yet.
Cited by: Fire Emblem: The Binding Blade, Hit chance
The Binding Blade computes hit as twice the skill, plus the weapon's hit, half the luck, and the weapon triangle's bonus, and avoid as twice the attack speed plus the terrain's avoid and the luck; the hit it rolls against is hit less avoid, held within 0–100. fe6/displayed-hit
About: Fire Emblem: The Binding Blade Hit chance
Codefireemblem6j: decompilation of Fire Emblem: The Binding Blade ·src/battle.c#L493attacker->battle_hit = attacker->unit.skl*2 + GetItemHit(attacker->weapon) + attacker->unit.lck/2 + attacker->advantage_bonus_hit;fireemblem6j: decompilation of Fire Emblem: The Binding Blade · src/battle.c#L498attacker->battle_avoid = attacker->battle_speed*2 + attacker->terrain_avoid + attacker->unit.lck;fireemblem6j: decompilation of Fire Emblem: The Binding Blade · src/battle.c#L519-L525attacker->battle_effective_hit = attacker->battle_hit - defender->battle_avoid;
if (attacker->battle_effective_hit > 100)
attacker->battle_effective_hit = 100;
if (attacker->battle_effective_hit < 0)
attacker->battle_effective_hit = 0;Checked by claude-agent, 2026-10-21 — read the hit, avoid, and effective-hit routinesThe Binding Blade's crit is the weapon's crit plus half the skill, plus 30 for classes with a crit bonus, less the defender's luck and at least 0; after a hit, one random number below it triples the damage. fe6/critical
About: Fire Emblem: The Binding Blade Critical hit
Value
{
"rolls": 1,
"range": [
0,
100
],
"multiplier": 3,
"classBonus": 30
}src/battle.c#L506-L514attacker->battle_crit = GetItemCrit(attacker->weapon) + attacker->unit.skl/2;
if (UNIT_ATTRIBUTES(&attacker->unit) & UNIT_ATTR_CRITBONUS)
attacker->battle_crit += 30;
…
attacker->battle_dodge = attacker->unit.lck;fireemblem6j: decompilation of Fire Emblem: The Binding Blade · src/battle.c#L530-L533attacker->battle_effective_crit = attacker->battle_crit - defender->battle_dodge;
if (attacker->battle_effective_crit < 0)
attacker->battle_effective_crit = 0;fireemblem6j: decompilation of Fire Emblem: The Binding Blade · src/battle.c#L739gBattleSt.crit = attacker->battle_effective_crit;fireemblem6j: decompilation of Fire Emblem: The Binding Blade · src/battle.c#L754-L757if (BattleRandRoll(gBattleSt.crit, FALSE) == TRUE)
…
gBattleHitIt->attributes |= BATTLE_HIT_ATTR_CRIT;
gBattleSt.damage = gBattleSt.damage * 3;fireemblem6j: decompilation of Fire Emblem: The Binding Blade · src/random.c#L83-L85bool RandRoll(int threshold)
…
return (threshold > RandNext_100());Checked by claude-agent, 2026-10-21 — read the crit, dodge, and effective-crit routines, RandRoll, and the crit branch of BattleGenerateHitAttributesCited by: Critical hit