Arena Matchup Selection Details

Back to Top

The RNG

FE3's arena uses an RNG function at $808726 to generate values for its RNG. This function cycles two values($046B, $046C) each time it is called. One is incremented by 55 each time, the other by 143.

This function is used in various places, but I only know about the arena's usage. The arena calls this function once and then uses the second value($046C) to select the enemy class from a list of options.

The function is called again, and the updated second RNG value($046C) is used to calculate the enemy's level advantage against the player. Enemies can be up to 4 levels higher than the unit entering the arena.

It is difficult to predict the state of the RNG when entering the arena. However, because the RNG state is incremented and used twice, it is possible to narrow down the list of possible matches based on the player's level and final bounty calculation.

Bounty Calculation

The bounty calculation is as follows:

bounty = (base_class_bounty + (enemy_level - 1) + level_difference_bonus) × 10

The bonus is loaded from a lookup table at $87A3EC.

DifferenceBonus
00
13
26
312
424

A slight quirk of this system is caused by levels being capped to 20.
Since the level difference bonus is lower, entering the arena with a level 20 unit may result in a bounty that is lower than entering with a level 19 unit.

Opponent Lists

The table containing the addresses for the list of possible oponnents for each class is stored at $8B99B6.

The lsits are all located in bank $8B, with the main table consisting of 2-byte addresses.

All playable classes and Soldier have table pointers. However, Clerics and Dragons have piunters to empty tables due ot not being able to enter the arena.