Skip navigation
NintendoAge
Welcome, Guest! Please Login or Join
Loading...

Nerdy Nights: hex editing Alter your own title screens!

May 27, 2009 at 3:00:34 PM
bunnyboy (81)
avatar
(Funktastic B) < Master Higgins >
Posts: 7704 - Joined: 02/28/2007
California
Profile
This lesson is largely unrelated to programming, but instead focuses on ROM editing. Using the recently released Exerion 2 ROM we will edit the title screen text to show your own message. The instructions here will work for many games but not all. Some use text/graphics compression or do not have all the letters available for use.


You will need:
  • FCEUXDSP emulator with graphics viewer. Sorry Mac/Linux users, the best development emulators are Windows only.
  • Hex editor application
  • Text editor application
  • 10 minutes




  • Step 1: Backup!
    Make a copy of the ROM. Work with this copy. In case you mess up you can go back to the original.


    Step 2: Finding the graphics
    Load up the game in FCEUXDSP and go to the screen you want to edit. When you are there choose the Debug... menu option and hit the Step Into button in the window that opens. That will tell the emulator to pause so you can keep working without it changing.

    Next choose the PPU Viewer... menu option. On one side will be the sprite graphics, and on the other the background graphics. The text is made of background graphics tiles.



    If you put your mouse over one of the letter graphics the tile number will update. Use those tile numbers to make a chart of which number corresponds to which tile number. For Exerion 2, that chart will start like:

    A = 0A
    B = 0B
    C = 0C
    D = 0D
    E = 0E
    F = 0F
    G = 10
    H = 11
    I = 12
    etc


    Step 3: Finding the text
    Use that chart to write out what text you are looking for. For Exerion 2 we are going to edit the "PLAYERS" text for the 2 players option. The hex characters we will be looking for are:
      TEXT  P  L  A  Y  E  R  S
      HEX   19 15 0A 22 0E 1B 1C
    Now that you know what to look for, open up the ROM in your hex editor application. Do a hex search for the string you just figured out. Hopefully it will appear just once in the ROM. In Exerion 2 the 2 PLAYERS text is around hex address 2F40.




    Step 4: Replacing the text
    Use your chart again to make a new string, the same length as the previous text. This is very important. The size of the ROM must stay exactly the same size so you cannot add extra characters. If your new string is shorter than the old one then you must add space characters to make it the same length.

    For Exerion 2 I want to add a message longer than just the PLAYERS text. Looking before the P in players there is a space, a 2, and lots more spaces. I can safely replace some of those too, as long as I don't add or subtract from the ROM size.
      OLD TEXT      2     P  L  A  Y  E  R  S
      OLD HEX    30 02 30 19 15 0A 22 0E 1B 1C
      NEW TEXT   M  R  M  A  R  K     S  U  X
      NEW HEX    16 1B 16 0A 1B 14 30 1C 1E 21
    Just select the old hex and delete it, then paste in the new hex. Save your ROM and load it up in the emulator to make sure it worked. If the game doesn't load in the emulator then you likely changed the size of the ROM.



    Now that your game is done, test it on real hardware with your PowerPak or make a physical copy with the ReproPak at http://www.retrousb.com...

    May 27, 2009 at 3:07:20 PM
    MrMark0673 (455)
    avatar
    (Mark Nolan) < Master Higgins >
    Posts: 8021 - Joined: 02/20/2007
    Massachusetts
    Profile
    HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA!!!!!!

    Dude, you win.

    -------------------------
    Hi, my name is Mark, and I collect (and now sell!) Prototypes.
     
    Photobucket

    The Largest Comprehensive List of NES Protos for Sale Available on the Web!
    http://www.nintendoage.com/forum/...
     

    May 27, 2009 at 4:53:53 PM
    qixmaster (129)
    avatar
    (Josh B) < Wiz's Mom >
    Posts: 11150 - Joined: 08/19/2006
    Oregon
    Profile
    wow... good stuff.

    -------------------------
    eBay listings here

    May 27, 2009 at 10:10:37 PM
    marvelus10 (46)

    ( . ) Boobies ( . ) < King Solomon >
    Posts: 3282 - Joined: 06/05/2007
    British Columbia
    Profile
    Ok cool, so how do we make it a multicart then.

    -------------------------




     

    May 28, 2009 at 6:32:56 AM
    frantik (12)

    (fr antik) < Eggplant Wizard >
    Posts: 316 - Joined: 04/05/2009
    California
    Profile
    Originally posted by: marvelus10

    Ok cool, so how do we make it a multicart then.


    thats a bit more involved than editing a few values... like.. a lot more


    -------------------------
    Super Mario Unlimited - My epic SMB hack
    My custom NES Arcade joystick


    Edited: 05/28/2009 at 07:19 AM by frantik

    May 28, 2009 at 8:57:19 AM
    bunnyboy (81)
    avatar
    (Funktastic B) < Master Higgins >
    Posts: 7704 - Joined: 02/28/2007
    California
    Profile
    Other than using the debugger to find the bankswitching location, all you need to know to make it a multicart is covered in previous lessons

    May 28, 2009 at 11:07:54 AM
    Cthulhu32 (0)
    avatar
    (Luke Arntson) < Tourian Tourist >
    Posts: 47 - Joined: 06/24/2008
    Colorado
    Profile
    Originally posted by: bunnyboy

    Other than using the debugger to find the bankswitching location, all you need to know to make it a multicart is covered in previous lessons


    So all you'd have to do is put a game's code/sprites in PRG/CHR banks and switch when you want to load a cart? (is this what you did for Pirate Booty?) Those hong-kong multi-carts aren't this simple are they? Like those 100-in-1s?

    Btw very cool article, I've been reading a bit about rom hacks, and there are some pretty slick ways to find characters inside of roms. I was looking at Sliver X's doc in particular: http://www.nesplayer.com/database/info/emulation/doc/romdoc....   Using a hex to char table to get full read outs of what the text says for bigger text hacks.

    -------------------------
     

    Jun 2, 2009 at 1:28:27 AM
    The Bear (57)
    avatar
    (Cody ) < Meka Chicken >
    Posts: 850 - Joined: 01/11/2009
    Pennsylvania
    Profile
    I remember I was going to hex edit NHL '94... thank god I found an easy program a month later.

    -------------------------


     


    Creator of Bits & GloryYouTube | Twitch | TwitterInstagram | Facebook

    Jun 2, 2009 at 1:45:24 AM
    mb7241 (183)
    avatar
    (Matt B.) < Bowser >
    Posts: 7167 - Joined: 05/12/2007
    Tennessee
    Profile
    Hm...this sounds interesting. I clicked your FCEUXDSP link, and it mentioned something about a RAM filter, and how it works in conjunction with the hex editor for the explicit purpose of hacking games. So I decided I'd try and use it on a ROM of my favorite NES RPG (Dragon Warrior IV), and before I knew it (literally 5 minutes), I had Ragnar up to nearly 800 HP .

    -------------------------

    Answering any and all questions related to video game collecting.  Guaranteed true and honest answers from a man with nearly 20 years in the community.  Prices for these answers vary depending on the question.  For all inquiries, please PM me.


    Jun 2, 2009 at 4:32:27 AM
    frantik (12)

    (fr antik) < Eggplant Wizard >
    Posts: 316 - Joined: 04/05/2009
    California
    Profile
    yeah that ram filter is great for finding memory locations

    -------------------------
    Super Mario Unlimited - My epic SMB hack
    My custom NES Arcade joystick