Context
Romhacking consists of activities centered around the modification of retro game binary files called ROMs. Romhacking can involve fixing bugs, modifying game elements (gfx, music, code, etc.) directly with a hex editor or specialized editors, creating specialized utilities to modify a game, or finally performing reverse-engineering to document code or data in the ROM file. During the last thirteen years, I have engaged with all aspects of romhacking.
My discovery of this hobby happened at the same time as my return to school in computer science. I discovered a specialized online forum dedicated to the modification of one of my favorite game, Final Fantasy VI (FF6), released in 1994 on the Super Nintendo console. This game has been documented by romhackers since the late 90's and specialized tools like FF3usME and FF6LE were already available in 2011.
1) FF6: Enhanced (2011-2013)
1.1) First steps
My first project was to edit FF6 cutscenes (events) as well as replacing monster GFX and editing their action scripts (AI script), with the goal to create what we call in the community a complete hack, which is a project that modify many aspects of the game in a significant way. This complete hack was named FF6: Enhanced. Some aspects of the game could be edited with tools like FF3usME, while others required a hex editor, for example event editing. Events use a custom script language, having more than 250 possible commands, many having one or more parameters. Here's what an event looks like:
CC/9865: 38 Hold screen
CC/9866: 30 Begin action queue for character $30 (Camera), 5 bytes long (Wait until complete)
CC/9868: C4 Set vehicle/entity's event speed to faster
CC/9869: 9C Move vehicle/entity up 8 tiles
CC/986A: 9C Move vehicle/entity up 8 tiles
CC/986B: 84 Move vehicle/entity up 2 tiles
CC/986C: FF End queue
CC/986D: 48 Display dialogue message $0006, continue executing commands (Show text only)
Long ago, the War of the Magi
reduced the world to a
scorched wasteland, and magic
simply ceased to exist.
CC/9870: 42 Hide object $31
1.2) Development
I worked for around two years on the project, including many hours of experimentation, as shown below with some examples of modified character sprites, new monsters with modified AI scripts, new events and new songs.
The creation of songs was particularly tedious, since at that time it was done in a hex editor. For example, a note A# 3/16
has a hex value of 0x92
and an effect like a pitch change with an envelope is done with C8 XX YY
, where XX
is the delay and YY
is the cycle duration. That's why I had help from more knowledgeable people for the music.
New songs
Never Ending Story - Atreyu's Quest
Secret of Evermore - Cecil's Town
In 2013, I realized that my project was way too ambitious, I then decided to put it on indefinite hold and instead focus on the creation of tools in high level languages and the release of small romhacks that other romhackers would be able to use in their projects.
2) Implication and contributions (2013-2018)
2.1) C# WinForms/WPF/console utilities
This period was marked by many things. I was at a point where I was familiar with 65816 assembly and high level languages such as C#. I decided to start coding utilities to make FF6 modification more accessible to others. Without going into detail about each project, I released FF6AE, an editor for the Game Boy Advance version of FF6. I also released FF6ExpED, an editor allowing four stolen and dropped items instead of the original maximum of two. I also released FF6MMGEN, an utility that can generate the mini-maps based on the original world map layouts.
2.2) Published romhacks
From 2013 to 2018 I also officially published about twenty romhacks, mainly 65816 assembly hacks like the Multi-Fonts Hack and the Gradient Hack. I also released GFX modifications, new event commands, bugfixes and a save RAM (SRAM) expansion. There are currently romhacks I want to finish, such as the day/night cycle hack, a gameplay element that is not present in the original game.
2.3) Help given
During that period I also contributed in different ways to the FF6 hacking community. For example by helping newcomers on online forums, by helping to create a specialized wiki about all the versions of FF6 and by documenting certain aspects of the game like the ending names or the Advance version ROM map. I also contributed to the complete romhack Return of the Dark Sorcerer (RotDS) with many small custom hacks.
3) Recent period (2019-2024)
Since 2019 I gradually lowered my presence online and the number of romhacks released, mainly due to a loss of interest. However in 2022 I regained some interest and published a few new hacks. In 2023 I started coding a website for RotDS that contains songs, screenshots, stats, images and a walkthrough. There are things I still want to do with FF6 such as a French translation project, either a Brave New World or a RotDS translation. I would like however to keep some free time to polish my skills in software development and learn new things not related to romhacking.