# About

About
the-program]=[

# The Program

FFHacksterEx is an extension of the original FFHackster app.
Written in Visual Studio with C++ (and still using MFC 😞).

First written with Visual Studio 2015, it received a UI update (just as an exercise in seeing how much I could get out of MFC).

It retains FFH features and core UI.The caption bars and menus are gone, the various windows can be dragged anywhere (not just from the top) and various editing dialogs got slightly bigger to accommodate the jump in typical screen sizes on laptops and desktops.

A project system is used to allow working on multiple projects at once. The workaround for FFH was to manually create multiple folders and place the FFH executable and DAT file in each folder.

special-thanks]=[

# Special Thanks

## Disch

Disch wrote FFHackster some time ago, and it was the go-to tool for a generation of FF1 ROM hackers. I didn't code FFHacksterEx with the idea of replacing it; in fact, it uses the FFH source and leaves its editors generally intact. I changed the UI a bit and added some new features, but the core of FFHEx is FFH.

FFHackster on RHDN

Special Thanks to Disch for writing FFH and giving so many ROM hackers a great toolkit!

## Paulygon

FFHackster Companion (aka FFHackster Plus) provided some additional features to complement FFH. The one feature that stood out to me the most was the dialogue editor. It allowed ROM hackers to set the handler and the parameters for each sprite.

FFHackster Companion on RHDN
Archive of Paulygon's old site

That served as the inspiration for the Sprite Dialogue editor, which can set the events and parameters for each sprite. Thank you Paulygon!

how-it-began]=[How It All Began

# How it all began

I wrote a small assembly hack, and things were fine until I decided to move some things around in the ROM. I changed the equipment and some text strings using FFHackster, and all of a sudden the ROM would either become buggy or unplayable. Once in a while FFHackster would crash while saving. I quickly realized that without a way to update the offsets FFH used, it wouldn't be able to edit ROMs that moved bytes around.

I wrote a small collection of tools in 2016 late to edit parts of the ROM after modifications were made, but it was pretty tedious to do that without FFH's convenient UI. After a month of frustration I faced a choice: quit, find a tool with an expanded UI, or (gulp) build one myself.

After a bit of searching, I found the source to FFH, and realized that the latter option wouldn't be practical due to time constraints.

I wrote a couple of assembly hacks, and managing them quickly became a hassle. That's when I decided to extend the app to use configurable offsets. I also developed the Party Setup and Starting Items editors while working on those hacks, and back-ported them into FFHEx.

However, the new features for the hacks also broke the standard editors. Writing replacements wasn't too hard, but I didn't want separate versions of the FFHEx executable for each hack. I decided to implement extensions using DLLs, and the editor extension interface was born. Doing that using C/C++ proved to be challenging...

Editing sprite dialogue events was easy with FFhackster Plus, but no tool existed for assembly projects. I found no source code for FFH Plus, but once I got tired of hand-editing everything, I wrote the Sprite Dialogue editor to ease changing sprite dialogue and events.
While experimental (i.e. hacky), it has worked for me.