Hacking Introduction

First thoughts

As of February 23rd, 2010, I am planning the release my hacking notes in their entirety. Please check back every few days or so to see if new content has been posted. Thank you to those of you who requested this info, and for your patience with me. I offer these notes in the hopes that they are of use to you, and to the greater modding community. Feel free to make creative use of any and all of it in your endeavors, however, if you do use this info to glean insight for your project, I would appreciate appropriate recognition for my original effort. Please do not repost this material elsewhere without asking me. Thank you.

As I have a number of other projects which I am currently working on, it is not looking like I will be writing a Hackster for FF1 GBA. However, some intrepid reader using the forthcoming notes could pull that off.

I spent a fair amount of time amassing these notes. They’ll be of help for you to find some of the various data lists are stored in the ROM, and though my list is by no means comprehensive, the notes served as my brain as I waded through the hexidecimal code. I didn’t use any tools other than a hex editor, and a debugging version of Game Boy Advance for stubborn little issues and hard-coded aspects of the game (like the 999-HP/MP limits). While I don’t absolutely guarantee 100% veracity, I did create my mod in conjunction with the notes presented here, and they should be quite precise.

First Steps

You’ll need to have proper tools for these notes to be of any help. First, you’ll need a hex editor. I recommend Hex Workshop 4.1', if you don’t already have one. The link I provide is to a 35-day trial version of the software. To continue using it, you’ll need to purchase it.

I also recommend getting a copy of the VBA Debugging Emulator I used, in case you plan to do your own testing and debugging on the ROM’s code. The link provided also documents its features.

I assume that you understand basic hexidecimal theory here. When providing addresses in the ROM, I will precede the address by a “0x“.

Decimal numbers will appear in this format: 4987.

Hexidecimal numbers will appear in this format: 137b.

Larger integers in the ROM are encoded in “Little Endian” format. In other words, the least significant bit is stored first. For example:

4987 (decimal) = 137b (hexadecimal). However, in the ROM, the number 4987 would be stored in Little Endian format, and so it would appear as 7b13.


Date published: 2010-02-23