Fire Emblem 3: Mystery of the Emblem is perhaps the least played and least well-known entry in the series in the West, which is ironic considering that it’s probably the most iconic one in Japan, and in my opinion, one of the best. There have been multiple translations of it over the years, most of them building on and improving the last. This is my entry in that lineage.
I took a multi-pronged approach. A fully overhauled translation, QOL improvements, bug fixes, and enhancements. There are several different patches designed to make as many people happy as possible.
Here is what’s been done in all versions:
-A new translation!, which, compared to the Quirino translation, gets rid of a lot of ‘Japaneseisms’ and makes everything more natural-sounding in general. Importantly, there are NO rewrites that add to or change the meaningful content of the script. The purpose of this translation is to give an experience of FE3 in natural-sounding English that also exactly matches the original in terms of meaning. I found the existing script (Quirino) to be mostly correct in terms of the meaning of the content. There were just a few mistakes, it seemed, but there were also many things that were unnaturally worded, and a handful of points where things were actually inaccurate. My understanding of Japanese is moderate, but not excellent, so I would appreciate any corrections on this if anyone finds parts where this wasn’t the case.
-Edited the menu font to make characters more consistent in terms of appearance and positioning.
-Translated the class reel
Versions:
Version J: This version is most recommended for those who want a truly ‘authentic’ version of Mystery. All names (characters, places, items, etc.) are natural-anglicized versions of the Japanese names. This version is especially recommended for those planning to produce documentation or media about the game, such as content for wikis or video reviews.
Version E: all names are as they are in the English release of Shadow Dragon, with the exception of cases where the localization changed the meaning of things, or made things inconsistent or particularly awkward. Things only from New Mystery use natural-anglicized versions of the Japanese names.
Director’s Cut:
One of my biggest pet peeves about video game modding is how, often, someone will make a mod of a game, especially one that is marketed as a strict improvement or a ‘definitive’ version, that does a lot of very nice and interesting things, but also makes a bunch of other seemingly bizarre changes that prevent it from being a ‘clean’ experience. To avoid being guilty of this myself, I’ve made the other changes optional, and called them the Director’s Cut.
There are 5 patches that make up the Director’s Cut. They’re independent of each other.
1: Hit Rate patch:
In the base game, displayed hit values are capped at 100, even though the actual value that the opponent’s avoid is subtracted from can be higher. This means that for values greater than 100 (which is almost always the case), the displayed value will be incorrect and therefore useless, forcing the player to manually calculate the hit rate based on the unit’s skill and weapon accuracy. This can’t be done for units that have already spent their turn, and enemy units, because you can’t open their item menu to see the equipped weapon’s hit value, forcing the player to either remember it, look at the value of the same weapon on an active player controlled unit, or look it up online. The hit rate patch remedies all of this, correctly displaying the hit value for all units.
2: Palette patch:
In the base game, only a handful of units had custom palettes. It was a few bosses, and Sheema. This patch greatly expands this, giving palettes to every player-controlled unit that match their portraits. Doing this was pretty involved for several reasons, mainly because of the custom logic required to correctly sort all the character-class combinations to get the right palette, and the process of creating palettes for all of the possible character-class combinations. There were a lot of other edge cases to take care of and issues to fix as well. For example, a lot of issues involving Chainey/Xane that were present in the base game were fixed in the process of creating this patch, such as incorrectly transforming into male versions of the dragon knight or pegasus knight class when copying female pegasus knights or dragon knights, or not copying the custom Julian battle graphics. I tried pretty hard to find all issues, but please let me know if there are any that I didn’t catch.
3: Capricorn patch:
In the base game, due to an off-by-one error the Capricorn star shard’s growth modifiers don’t actually get applied and the item does nothing. This patch fixes it.
4: RNG patch:
In the base game, the RNG is generated using a very primitive method, which results in noticeable correlations in the output that deviate significantly from statistical randomness. This is most apparent in level-up stat gains, where characters have a small number of possible growth patterns (for example, here is Marth’s: https://wiki.serenesforest.net/index.php?title=Level_Up_Patterns\_(FE1-3)/Marth\_(FE1) ). This patch implements a better pRNG algorithm that fixes these issues. For a more technical explanation, see the note at the bottom of the post.
5: Horse patch:
The game has been edited to make the rapier and knight killer deal super-effective damage against horsemen (bow horses), which they did not in the base game.
All of these patches are for version 1.1 of the rom (unheadered). I’m not attaching 1.0 patches or patches for headered roms because there are already a lot and I don’t want a combinatorial explosion. I chose 1.1 because it’s frankly the better version of the game, since it fixes many bugs that were present in 1.0, some of which can occur during normal gameplay and have detrimental effects (the worst of which being a crash that can sometimes occur when enemies use the reblow staff while the screen is scrolling, and a bug that creates duplicated Gatos that can cause save corruption). There’s really no reason to use 1.0, to be honest. I’ve also included a patch that converts 1.0 to 1.1, so if all you have is 1.0, don’t worry.
the following are the patches
Translation Only J: The translation of the J version as described above.
Translation Only E: The translation of the E version as described above.
Director’s Cut J: The J translation with all the mechanical and graphical patches.
Director’s Cut E: The E translation with all the mechanical and graphical patches.
Hit Rate Patch
Palette Patch
Capricorn Patch
RNG Patch
Horse Patch J: these are different because of the item naming differences.
Horse Patch E
1.0 to 1.1 patch
Patching instructions:
If you need to upgrade from 1.0 to 1.1, apply that patch first.
If you just want the Translation Only version or Director’s Cut version, apply the corresponding patch to the 1.1 rom.
If you want some of the patches in the Director’s Cut, but not all of them, apply the Translation Only patch that you want, and then apply each of the director’s cut patches that you want.
Alternatively, you can use the buildfiles. To use, put a Japanese 1.1 rom into the ‘roms’ folder, name it “Fire Emblem 3.1.sfc”, edit config.yml to have another profile at the bottom with the relevant asm files under ‘includes’, according to the information below, and then run sable.exe.
codeDefinesv1.1.exp - always include
hit_rate.asm - include for hit rate patch
palette.asm - include for palette patch
palette_data.asm - include for palette patch
custom_battle_GFX.asm - include for palette patch
capricorn.asm - include for capricorn patch
xorshift_rand_lut.asm - include for RNG patch
horse.asm -include for horse patch
Also for the horse patch, some of the text needs to be changed. To do this, copy the folders from horse_patch_alt_text\text_horse_patch to project\text, and overwrite. To revert, copy the folders from horse_patch_alt_text\text_no_horse_patch into project\text and overwrite. This needs to be done manually because Sable doesn’t support the required logic for conditionally including text.
Screenshots: https://imgur.com/a/Ftf3xPX
Technical explanation of RNG patch:
In the base game, to generate the next random number, 143 is added to the previous random number, and the result is taken mod 256. The random number sequence thus has a period of only 256, and contains a lot of runs of alternating high and low numbers. This, combined with the fact that in combat and during level ups, multiple RNs are generated sequentially, results in noticeable correlated patterns, for example the dreaded skl, luk, wlv level-up (WaKoBu in Japanese) occurring a lot. This patch implements an XORSHIFT rng algorithm, which has a period of 65535 and performs better on statistical tests. A Japanese modder did something similar in 2008, but the XORSHIFT variant they implemented used suboptimal parameters according to what was posted in a blog post by John Metcalf about 16 bit XORSHIFT algorithms. Upon graphing the noise nothing looks wrong with the 2008 method compared to the parameters that are supposedly better, and Metcalf only explained the tests he did in passing, but the Metcalf parameters look good too, so there’s no reason not to use them, though they do take a few more cpu cycles (though only a few more due to optimizations possible with the Metcalf parameters). The output of the XORSHIFT_16 is then xored into values from a random number table (generated from true randomness by random.org) that consists of 4096 16 bit values. The period of the final value (XORSHIFT_16 ^ table) will then have a period of the least common multiple of 65535 and 4096, which, since they are coprime, is 65535 * 4096 = 268431360. In addition to the period improvement, xoring with the random table spreads out some of the weaknesses of the lower bits of the XORSHIFT_16 output, improving its statistical properties. This was not done in the 2008 patch.
Special thanks:
RobertTheSable, for creating the buildfiles used to create this.
Ultimage, for discovering the Capricorn bug.
iamnotaclowniamtheentirecircus, for sharing the full Japanese script and his book 2 translation. My translation is different than this, but it was very helpful and I definitely took some inspiration.
Louie, for helping with various things.
John Metcalf, for documentation on XORSHIFT algorithms
Please report any typos, bugs, inconsistencies, or any other issues that you find with any of this content.
Patches:
Buildfiles:








