Hacking the ROM
The latest version of the Bionic Commando Editor is 2005.09.12 and can be downloaded here. The program is written
in C# so you will need the Microsoft .net framework 1.1 to run it. The runtimes can be obtained at Microsoft's Windows Update page. Also, you will need a clean BC ROM dump.
GraouBC (Graou's Bionic Commando Editor) is availible for download as well. It currently supports
basic map editing, but it's still a little buggy.
A number of people in the Bionic Commando Community have been asking me about hacking the Bionic Commando ROM. First let me say, that I am by no means a
expert in NES hardware, the 6502 microprocessor, or hacking in general. I do, however, have the basic knowledge of how binary files work, and I have made a few hacks in
the past. So this document probably won't contain the proper terminology regarding binary files, nor will it look like a professional wrote it. Some of my past escapades
include a game called Eye of the Beholder 2. (A Forgotten Realms game) I remember hacking the saved game file, and giving all my characters practically infinite life and
magic. I've hacked a few other games with decent results, but ever since I hacked the guns in Bionic Commando, I've felt like I'm actually worthy of writing a doc on it. So
1.1 Finding a hex editor
The first thing you'll need is a hex editor to alter the ROM. A freeware hex editor called XVI32 can be found at
http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm. This one contains the basic
features of editing hex files. You can, of course, use your own hex editor, I don't care, just get one. (If you find a better one for free, drop me a line.)
Now before you begin hacking, let me first stress the most important thing when it comes to hacking files: ALWAYS MAKE A BACKUP! This is a very important
thing to remember. We will be making changes to the ROM and saving those changes into it. If you don't have a backup, there will be no way to get back to the original file.
So remember! ALWAYS MAKE A BACKUP!
1.0 Intro to hex
First, here's a quick refresher on hex. If you're already familiar
with hex, skip this section.
Hexidecimal is a base 16 numbering system, meaning there are 16 values per place holder. The numbering system that most people are used to is called
decimal, which has 10 values per place holder.
What does this mean?
Well, a computer uses binary.
One place holder in binary is called a bit.
There are 8 bits in a byte.
A byte can have the value from 0-255, that's 256 numbers per byte.
Using decimal, it takes 3 place holders to display the value of a byte. Using hex it only takes 2.
Big deal right? However, that difference is very noticeable when viewing large amounts of data.
Could you view all the data in decimal? Of course. Would you want to... Heck no!
It's like this, you can count from 0-9 in one place holder in decimal. In hex you can count from 0-15 using only one place holder. How is this possible? Hex
uses extra numbers! Instead of using '10' for the value of ten, hex uses an 'A'. Eleven in decimal is '11', but in hex it's 'B'. See the chart below for the full list.
This is just the first 16 numbers though, hex continues on forever. The next value in decimal is '16', but in hex it's '10'. This is usually a little
confusing at first, seeing the number '10' and having to remember that it really means '16'. After awhile you start to think in hex, and it becomes second nature to you. When
you see 'FF' in hex, it really means '255' in decimal.
The basic premise of hex, is that it makes dealing with bytes easier. And in the computer field, easier is better.
2.0 Getting around in the hex editor.
When in a hex editor you have to be at certain addresses. An address is a location in a hex file. It's similar to the line number of a normal text file,
but it's a little more complex. Hex files are setup in blocks of 255. Each block is an address. When writing assembler programs you'll have to know this in great detail, but
for now we just need to skim over it. If you want to alter the 125'th byte in a file, you would need to be at address 7Dh. The 'h' at the end of the number is a
signifier that the number is in hex. It's important to know how addresses work so you can get to any place in the file without having to remember what it looks like. (Trying to remember
what a binary file looks like is nearly impossible!)
In the hex editor XVI32, the address location is located in the status bar at the bottom of the application. Each hex editor works a little bit
differently. You should become familiar with where the hex address is shown in the program, as well as how it's displayed.
Make a backup of your ROM, by copying the file, and giving it the extension '.BAK' and then go ahead and open up the Bionic Commando ROM in the hex editor.
(If you can't figure that out, you may want to work with computers a little longer before attempting to hack.) You'll see several thousand lines of hex numbers grouped in
twos. Each of these groups is one byte in the file. You can move around using the arrow keys, or the mouse pointer. As you move, the address in the status bar should change to
your new location. Tah-dah, you now know how to move around in the hex editor.
3.0 Your first hack.
That's right, you're going to make your very first hack now! First we'll make the hack, then we'll talk about what we actually did.
First, open the ROM, and move to address 3FF12h. (Ctrl+G is a hotkey in XVI32) This is all the way near the bottom of the file. When you get there you will
see the number 03h. Change this number to 09h. Move ahead in the file a little bit to address 3FF16h, and you'll see the number FDh. Change this to F7h.
Save the program, exit out, and run the ROM. If you followed the steps correctly, the gun will be shooting at a much faster speed then before!
Congratulations, you've just made your very first hack!
Here is a nice Bionic Commando hack that makes all of the sucky weapons much better. It's in IPS format, meaning you'll need an IPS integrator in order to
use it. I'll make a FAQ for using the IPS patches soon, but for now you'll have to learn how to do it yourself. The main purpose of an IPS patch, is to send a bunch of ROM
changes, without actually sending the ROM. Thus, making it perfectly legal. Anyway, here's the patch: Weapon Hack
Bionic Commando ROM Hacking Document.
NES Hacker Database Page.
Matrixz's Hacking Notes, Graou's Hacking Notes.
Character lookup table.
Sprite structures, Which music is played,
Which sound effect is played.