HeartHero's Open Source stuff

This weekend I went through many projects and decided to upload some of them to GitLab for everyone to use freely. This includes tools that have never been shared and some old stuff as well. This list will be updated in the future whenever there is something new worth sharing.

All things that are listed here are open source can be used as you wish - you don’t even have to credit me since I mainly create software for this community because it’s fun.

Palette Converter

Palette Converter
https://gitlab.com/hearthero/palette-converter


The Palette Converter is a tool that allows you to search through files for specific colors which is very useful for romhacking in general. You can also edit palettes and convert them between several formats. Colors from the palette view can also be clicked to get their color hex code for the clipboard. This should make most palette editing stuff pretty convenient.

Fates Spriter

Fates Spriter
https://gitlab.com/hearthero/fates-spriter

This is a PHP script which creates GIF Animations of Fire Emblem Fates map sprites. It takes layers, frame times and head positions accurately into account. The script is a little bit older now so I am not sure if it works on PHP8 - test it and send some feedback if you want. Customizing Fates map sprites and getting GIF animations is really comfortable and fun with this script. :slight_smile:

FateForge

FateForge
https://gitlab.com/hearthero/fateforge


This is an editor for Fire Emblem Fates that has been worked on during the end of 2018 and start of 2019. Back then I wanted to port and extend all important tools to C# and make one editor that can do most of the stuff. It features script editing and can compile contents directly for playtesting. FateForge was cancelled mainly because of a hdd crash that occured mid 2019. It reset most of the progress that has been made. However I still had an early version that I wanted to share. This version is in a very early stage but at least it’s still a solid foundation for curious programmers that are interested in making a Fates editor.

TH Hacking Toolkit

TH Hacking Toolkit
https://gitlab.com/hearthero/th-hacking-toolkit
A more recent version of the Three Houses hacking toolkit. This includes a texture viewer, audio conversion tools and patch structure support. This update is actually over one year old and has never been shared online due to bad experiences with the TH hacking community.

FE9TXT

FE9TXT
https://gitlab.com/hearthero/fe9txt
This tool allows to decode and encode Path of Radiance message archives. I shared it here once but I don’t think I ever shared the source code, so here we go. I am fairly certain that this might be very useful for FE10 text hacking as well since I never bothered to look at Radiant Dawns Message archives but I assume that they can’t be too different from FE9s archives.

FEGBA Text Ram LUA

FEGBA Text Ram LUA
https://gitlab.com/hearthero/fegba-text-ram-lua
A very specific set of LUA scripts that can be used with VBA-RR. Whenever you press SELECT when one of the scripts is active it will copy the last dialogue in RAM to your clipboard in a readable format. These scripts have been made to document all german text in EU Roms since they are not compatible with the commonly used tools. Documentation of translations is probably one of the best use cases for this but maybe there are others too? Idk - but it’s worth sharing.

FeH DB Porter

FeH DB Porter
https://gitlab.com/hearthero/feh-db-porter
This is a module for NodeJS that can be used to retrieve Fire Emblem Heroes data from HertzDevils (The admin of the FeH gamepedia) FeH repository. The data can be directly inserted into a MongoDB which makes this great for more dynamic websites and bots that want to use Heroes Data. This didn’t got updated for a while though so it’s probably better to use the source and create something with it. But the FeH DB Porter could potentially be updated in the future when I am working on my server bots again.

Things for the future:

  • Mystery Builder (FE12 Editor)
    Self explanatory. :stuck_out_tongue:

  • Planner App base
    I’ve been working on a new way to present information about characters and chapters on mobile devices for a while and after the first app is available this too will become open source.

  • PatchUp base
    Mainly for other hacking communities that would like to make their own patching/store like apps. (Pokemon, Zelda?)

There is also still tons of old stuff that I could share as well in the future. It’s mainly stuff for presenting Fire Emblem data on the web, and conversion tools. Some of it is on old backup hdds though.

Currently I am porting my FE12 editor to WPF for the UI. I don’t know if there is any demand for custom romhacking WPF controls (Most people here seem to use WinForms which is great for prototyping but also very outdated) but I could share new controls as well.

24 Likes

:eyes:

Here is a sneak peek of what’s coming next!
Since I dived deeper into the graphic formats of FE12 I developed some specialized tools for reading and writing to files. At one point I went for a more modular approach and started developing a software which I call “BinaryBlocks”.

BinaryBlocks can read image data directly from binary files and uses it’s own XAML based markup language that tells the software how exactly files should be interpreted. By loading customized definition files you can very easily modify the software to your own needs. It’s by far not limited to DS FE alone - there are a lot of possibilities for many games. Exports from BinaryBlocks also export image files with their exact palette with no rearrangements of colors or “optimizations” (Typical converters tend to eliminate unused colors to save space which is very bad for romhacking in most cases)

It supports reading Animations and exporting and importing GIFs as well as Sub Palettes. (Player and enemy sprites in FE games use Sub palettes for example)

Example 1: FE12 Face Definition & Output

<?xml version="1.0" encoding="utf-8"?>
<BinaryBlocks Name="FE12 Face (Large)" xmlns="clr-namespace:HeartHero;assembly=BinaryBlocks">
  <BinaryBlocks.Palette>
      <PaletteSource AlphaIndex="0" />
  </BinaryBlocks.Palette>
  <InterpreterDefinition TileWidth="8" TileHeight="8">
      <BlockDefinition X="0" Y="0" Width="8" Height="8" Offset="0x0200" />
      <BlockDefinition X="8" Y="0" Width="8" Height="8" Offset="0x1200" />
	  <BlockDefinition X="0" Y="8" Width="8" Height="8" Offset="0x2200" />
	  <BlockDefinition X="8" Y="8" Width="8" Height="8" Offset="0x3200" />
  </InterpreterDefinition>
</BinaryBlocks>

Example 2: FE12 Map Sprite Definition & Output

<?xml version="1.0" encoding="utf-8"?>
<BinaryBlocks Name="FE12 Map Sprite" xmlns="clr-namespace:HeartHero;assembly=BinaryBlocks">
  <BinaryBlocks.Palette>
      <PaletteSource File="palette" AlphaIndex="0" >
	    <SubPalette Name="Player" Index="0" Length="32" />
	    <SubPalette Name="Enemy" Index="96" Length="32" />
	  </PaletteSource>
  </BinaryBlocks.Palette>
  <InterpreterDefinition TileWidth="8" TileHeight="8" Animation="true" Frames="4">
      <BlockDefinition X="0" Y="0" Width="4" Height="4" Offset="0x0000" />
  </InterpreterDefinition>
</BinaryBlocks>

As you can see it’s pretty powerful. I am still working on documenting stuff and optimizing the software but I think I can release the software at the end of January / beginning of February. This is just a little preview. Also, here is a bonus.

(The first successfully exported FE12 battle animation!)

12 Likes