First of all, you need a couple of utilities. They are listed and linked to download below.
Hexpose (DOS): An old but solid utility to hack the text in a ROM. It can even build a table based on a relative search!
WindHex (Windows): WindHex is my current favorite HEX editor. I recommend it over Hexpose as it includes support for Microsoft Windows and has more features.
Tile Layer Pro: THE program to change the graphics in a ROM. Download it now! You'll love it!
Nesticle: the best NES emulator when you want to do some ROM hacking. You'll see later why.
A ROM to hack: I can't provide a file to download here... just try to find a Zelda ROM ok? At least go with a NES ROM. It's the easiest to edit when you begin.
To begin with, find a string of text in the game you want to edit. For Zelda, let's go with the "Take this!". Open Hexpose, load Zelda, then hit F6. Enter "Take this!" without the quotes. Then, press Y. This will build a font table so you can see and change the text!
Next, exit the editor and go to the directory where is your Zelda.nes ROM. In the same directory, you'll find Zelda.tbl. Open this file using notepad. The the file will look like this:
24= (that's the space)
If you want to do better text editing, you need to add the punctuation. Run Nesticle, load your Zelda.nes file and press the F2 key to see the graphics. Click on the first sign (the "," ). On the new window to open, it will show 28. So, at the end of the Zelda.tbl file, add "28=," (without the quotes). Do the same for all the punctuation, and you are done! Save the file, run Hexpose, open Zelda.nes, and you will be able to edit all the text!
You can now use the Search system to find any string of text you want to change. Beware! Be careful that you don't delete some of the game programs, or important data. You find a HEX code you are not sure what it's good for? It's better to leave it alone. Also, your text can't take more space than the original one. Remember that!
To navigate into Hexpose:
TAB will switch from the HEX mode to the text mode. Press it one time once your game is loaded to go into text edit.
F6 will run a relative search, to build a font table.
ESC will let you access the menu.
F5 will save your file.
All the important keys are described in the help page of Hexpose. Take a look!
Now, we will see how to change the graphics in a ROM. Tile Layer Pro is the ultimate program to do it. Run it, then open your ROM. Be sure to open it in NES format. Now, you'll see a lot of random data, looking all weird. Scroll down, down, down... Down to the quarter or the third of the ROM, you'll see the letters to form the text, and Link, just a little bit up. However, you'll notice the letters are not perfectly looking. Press + ou - a couple of times to center the letters in the squares. All that's left now is to click on the picture you want to edit, modify it at the bottom right of the screen. It will automatically change in the ROM. When you are done, save the ROM, and you successfully edited it! Note: this will change the graphics, but not the palette! Editing the palette of a ROM is something much more complicated, that I'll not cover here... for now!