Accessible FE12 hacking

Tags: #<Tag:0x00007f0e37bfab70>

Hey there!
A few days ago I decided to do some research on a bunch of FE12 file formats since it’s my favorite Fire Emblem game. Some years ago I did the german translation for New Mystery of the Emblem so I was already experienced with most things. However back then I never actively tried to document things for others, neither did I edit the rom for other purposes than translating stuff. However, it turned out that it was fairly simple to make some progress so far, although there seem to be almost no FE12 hacks out there.

Whenever I have some free time and can simplify processes that seem complex for others I like to create tools that can be helpful. I am also interested in gaining a better understanding of proprietary graphic formats. So far I gained some experience with 3D textures and common 3D formats but now 2D graphics and animations catched my attention.

In this thread I am going to post some updates from time to time related to Fire Emblem 12 tools that I am working on. Sometimes I am also going to release new applications here.

h5m8XGv

This is a simple face editor for FE12. Getting palette information from a binary format and interpreting it correctly as well as applying this information to a binary image format was an interesting task. Image editing for FE11/FE12 isn’t that hard normally if you know what you are doing but that’s the point: Getting there is a pretty time consuming process by itself. So this tool might come in handy I think.

lZT23Jy
Oh look - Now Ike is here for some fun as well. If you know FE12 a little bit better you’ll also see that some things on this map seem to be off. Which brings me to another tool:
4wVa9EN
This is a editor for units on a map. It’s options are still limited but I managed to understand unit placement in FE12 pretty well. This editor still needs to be connected with more information from other parts of the FE12 Rom though so that users can understand it better but once we are there everyone should be able to edit the unit placement for maps.

owsyKFX
Here I ported parts of a GBA map to FE12. The way maps work in FE12 makes it pretty much possible to insert almost anything as a map if you want to. The only limitation is 256 colors. I also examined the format for map sprites and I should be able to port new map animations to FE12 pretty soon I think. If we should manage to edit battle animations at one point and simplify the process then FE12 hacking should be able to catch a lot more attention.

Over the years I liked to do research on the code of newer games. In early 2019 for example I worked on an editor for Fire Emblem Fates and I also made a bunch of translation tools for other 3DS games in the past. (I’ve also created many FE related tools that that will soon be open source) One of the things I discovered was how 3D has an impact on our ability to create original hacks. Even within the indie game scene 3D seems to often separate the wheat from the chaff.

When it comes to hacking the task of creating new 3D content gets even more difficult. If you take a look at popular 3D games like Mario 64 for example then most of you can count good hacks with new stuff in it easily with one hand even though the game is over 20 years old. That’s why I think most 3D games don’t have a lot of potential besides maybe some Randomizer action unless people are willing to invest a tremendously higher interval compared to most 2D games.

Thankfully, FE12 is mostly 2D and could potentially be expanded to 512 MB. Therefore it’s in my opinion one of the Fire Emblem games with the best potential for good fangames once everything gets more accessible. This potential shouldn’t go to waste, but that’s just my two cent.

Anyway I’ll keep you updated. The tools mentioned above are still in development but download links will follow in the future. :slight_smile:

50 Likes

Impressive. Hopefully this paves the way for more DS-FE Content in the future. Are you planning on releasing the source code or some other form of documentation regarding how this works?

2 Likes

Yes - the source code will be released in the future. As I mentioned above I’ve also got a bunch of other tools that I never released as well. I’ll probably set up a public repository on GitLab in the future.

1 Like

Awesome work, this is some really cool stuff. I imagine these tools write the data directly to the ROM? I’m wondering now about how to format this for a buildfile.
I think the biggest limitations for FE12 hacking are going to be animations and music.

1 Like

Thank goodness, someone who has decided to take up the torch on DSFE hacking.
Keep up the good work! I’m looking forward to it!

1 Like

Question regarding maps, does the fog of war use the same 256 palette as the rest of the map or is there a separate palette used for map FoW?

1 Like

Yoo, the most I knew that you did was that FE16 0% LP, but this is a pleasant surprise.

1 Like

Holy shit, hacking tools for FE12? Sign me the fuck up

1 Like

Now this is fucking epic, I might try my hand at this someday

3 Likes

SOTF FE12 port when

2 Likes

Next we need GBAFE avoid in FE12 kappa

1 Like

Yoooooo, this looks so sick. Can’t wait to absolutely ruin my favorite game in the series with ridiculous edits that I don’t finish kappa
Keep up the good work lad!

1 Like

After GBA it’s now time for the DS be conquered

Holy shit my interest is piqued :eyes:

1 Like

I’ve dabbled in FE12 hacking myself before. I’ve attempted to hack in extra units, but doing so manually is a very tedious process. I do have some hacking notes scattered around, but they’re very messy. If you want, I’ll try to dig some stuff out. The Nightmare modules around are very wonky, so I attempted to clean some of them up privately. I’m excited for these tools. With them, I believe I can make an Old Mystery 3.0, with the original unit counts and potentially the FE3 graphics. Good luck - I’m eagerly awaiting more news on this.

2 Likes

This is super cool. Thank you for dedicating time to researching and sharing this with the broader community.

1 Like

I’m glad to see different engines get some attention, can’t wait for these tools to be available. I tried FE12 hacking a while back, but didn’t get far since many of the options I had were stuck to a hex editor. Might make a 24x24 tileset for the purposes of new DS map creation.

My biggest hope is still that FE11 support will eventually be a thing because then people will stop pretending like the game never existed.(And I can eventually do funny stuff with it.)

Back again with a big update. Since FE12 uses a lot of different methods for encrypting data I created a method to decrypt every filetype directly on the fly. However, this method still failed for battle animations so I took a closer look at the files and it turned out that in this case it’s not simply one encrypted file for each animation. Instead each animation frame within the files is individually encrypted. Now I can also extract individual frames of battle animation like this:


This might look like clown vomit but this is a real important step when it comes to understanding battle animations for DSFE. This image just lacks a palette but since FE12 features hair color variables for characters I assume the palette is more dynamic. Anyway, sooner or later the mystery of these animations will be solved - that’s for sure.


Here comes the class animation editor when we are on it. It’s quite advanced so far for map sprites. You can take a look at the fully animated sprites with both palettes. This is by the way a case of an interesting palette use. Map sprites are technically 8bit and use a 256 color palette. However, the palette file contains only 64 entries: 32 for the player palette and 32 for the enemy palette. Depending on the affiliation one of the entries shift to the index 224 which then gives us a correct sprite display.
By the way the editor already features GIF-exports of map sprites.


Of course I intend to support import of GIF animations as well since it is the most user friendly way to make map sprite editing easy. Here is also an update for the face editor which now allows edits of big portraits as well:

For image data I developed a special interpreter for binary data that makes reading and writing of binary image files a lot easier. For example displaying this big face graphic is as easy as this:

            Size tileSize = new Size(8, 8);

            interpreter = new blockInterpreter(imageBin, Palette, tileSize);

            blockArea[] main = new blockArea[] {
                new blockArea(0, 0, new Size(8, 8), 0x0200),
                new blockArea(8, 0, new Size(8, 8), 0x1200),
                new blockArea(0, 8, new Size(8, 8), 0x2200),
                new blockArea(8, 8, new Size(8, 8), 0x3200),
            };

            interpreter.AddRange(main);

            return interpreter.getBitmap();

blockInterpreter is declared outside here, I mention it just in case.

Eventually this might be interesting for other romhacking projects as well since it allows for really fast prototyping of typical image tasks. I am already documenting most stuff from the source code as well.

The next big thing for my coming update will be imported custom map animations. You can expect that pretty soon. For unit data I also got some help from Radd who worked on FE12 Reverse Recruitment. @Darrman Every help is appreciated. If you have some helpful notes as well feel free to share them.

It’s also amazing to see that many people showing interested for FE12 hacking. Thank you, everyone! I will answer some questions in the future. This project just keeps me very busy and if I am really focussed on something I usually give it my all. :smiley:

22 Likes

Really, genuinely excited to see this be a thing! Just looking forward to the day when we have full custom hacks on FE12 and I can insert music without heavy compromise

1 Like