Hi! After completing my first romhack for NES Tetris I decided to write a quick guide covering all the changes I made to the original game (I mostly did graphics and color changes... super easy) in case 1) I want to go back to NES romhacking in the future and don't remember anything and 2) anyone may find anything here useful if they want to start romhacking too. I must clarify that this is my first attempt at NES romhacking. This is just a newbie sharing what little knowledge they managed to learn in the process. This being said, let's start!
I used the following tools:
Mesen: the NES emulator I use.
YYCHR: for the graphics (this only changes graphics, not colors! Colors are changed in the emulator)
TBLater: needed in some games to change text
Lunar IPS: to convert your final .nes file into an .ips file
*Note to self: For some unknown reason, if I open this hack in FCEUX the colors look completely different than they do in Mesen. Select the palette "nestopia_yuv" in FCEUX and voilà. But damn...
CHANGE TEXT
Follow this tutorial.
If you're using FCEUX, no problem. But if you're using Mesen the hex editor, even with the tb file loaded, won't let you write directly. You'll need to change the hex values instead (in PRG ROM). Here's the conversion table:
CHANGE GRAPHICS
Follow this tutorial.
CHANGE COLOR
Follow this tutorial.
"Here it is!"
You can also get a preview of how the colors will look like in PPU Viewer/ Palette Viewer. The color changes you make here come from Memory Tools/Memory Viewer/Palette RAM, and since that's the RAM memory all of the changes are temporary. As soon as the screen changes, the changed colors will revert to original.
To permanently change the color, you have to change the hex value in the hex editor from Memory Tools in PRG ROM, and then open the Debugger (from the Debug window in the emulator) and go to File/Save ROM. If you do not save the ROM, even if you changed the hex values in PRG ROM they would revert to normal once you close the game.
CHANGE DEFAULT PLAYER NAMES
Here's the explanation. If you go to the screen where you register your new score and open the hex editor in the CPU Memory, take a look at the two values that appear in $00D4 and $00D7. $00D4 indicates the first position of the 6 available characters and $00D7 indicates which character is showing.
Here we see that in the first position ($00 at $00D4) we put letter A ($01 at $00D7). Letter A value is 01, being 00 the default hyphen.
And if we continue inserting whatever name we want, we see that in the second position ($01 at $00D4), letter B appears as $02 at $00D7. If we went on, we'd obtain the equivalents of the rest of the letters:
This means we can now find HOWARD! The name would translate as 08 0F 17 01 12 04, and this is what we are going to look for in the CPU Memory.
We first find it at $0700. In fact, we can see the other names following next. Have in mind that, if you wanted to change any of the default names to a shorter one do not forget to put 2B at the end when needed (look how the name LANCE is written, with a 2B at the end).
To change any of the default players names you need to replace the values at $0700 AND $AD60. Yes, in the CPU Memory. Once you've replaced both, go to the Debugger and save the ROM. Don't ask me why this works, I have no idea.
Here's the code for all the default names:
HOWARD:08 0F 17 01 12 04
OTASAN: 0F 14 01 13 01 0E
LANCE: 0C 01 0E 03 05 2B
ALEX: 01 0C 05 18 2B 2B
TONY: 14 0F 0E 19 2B 2B
NINTEN: 0E 09 0E 14 05 0E
CHANGE DEFAULT PLAYER SCORE
In CPU Memory you'll find Type A scores at $0730 and $AD90. Type B scores are at $0740 and $ADA0. Change the values and then go to the Debugger and save the ROM.
CHANGE DEFAULT PLAYER LEVEL
Again, in CPU Memory you'll find both Type A and B levels at $0740 and at $ADA0 (last value) and $ADB0. Change the values and then go to the Debugger and save the ROM (in general, don't forget to save any change you make to the code in the Debugger)
Attention: If you want to put any number higher than 9, use a decimal to heximal calculator! If you want for LVL 12 to show up, you'll need to write 0C in the hex editor.
RECOMMENDATIONS
These links may be of your interest before directly plunging yourself into NES romhacking.
- Applying Artificial Intelligence to Nintendo Tetris (if you're specially interested in NES Tetris)
- An Introduction to 6502 Assembly and low-level programming!
- 6502 Assembly Language Programming Tutorials
_000.png)
.png)
.png)
.png)
_000.png)
.png)
.png)
.png)
.png)
.png)

Comentarios
Publicar un comentario