Next Previous Contents

1. Introduction

1.1 Where to get this document

The latest version of this document is always posted at http://tril.tunes.org/games/z1spec/

1.2 Disclaimer

The information in this document is not guaranteed to be correct. I take no responsibility for the integrity of your Zelda rom file if you mess it up. Please use patch files (such as the standard patch format being adopted by several emulator authors) instead of modifying rom images directly, so you don't lose the original game or ruin it for somebody else.

1.3 Before Reading This Document

Before reading this document, you are expected to know what a pattern table is. If you don't, read a document devoted to NES technical information first.

1.4 Numeric Conventions

All numbers are in decimal, unless written with a dollar sign ($), for convenience by those who aren't used to hex.

1.5 IMPORTANT Note about Offsets

Offsets are all from the start of PRG ROM, not from the start of ZELDA.NES! To calculate offsets into ZELDA.NES, add 16 bytes (the size of the .NES header) to every offset in this document.

1.6 About this Document

I am releasing this document into the public domain. However, if you find it useful, or if you have any comments, don't hesitate to send me an e-mail.

I created this document so that my friend Conrad could create a map editor. However, I also enjoy reading 6502 assembly code and solving tough problems. I intend to eventually account for every byte in the Zelda ROM, but I am putting off work on that for a while now that this spec is basically done. It should be enough to create a decent map editor, if it is correct. If it is not correct, let me know and we can try to fix it. I hope you get as much fun out of using this document as I had making it. Keep hacking!

1.7 The Art of ROM Hacking

When I did a (pretty intensive) search for "zelda hack" in my usual search for duplicate projects before beginning something new, I came up with a lot of sprite modifications (clearly made using various NES pattern editors that are readily available), and a page with a few offsets that were apparently guessed at random. This is a sad and pathetic state. Why doesn't anyone do things the right way? The ONLY way to get accurate information about modifying a game is to dig in and immerse yourself in its machine code. I hope this document, when released, will show people what is really possible and encourage them to repeat what I have done, for other games. Only afterwards can you call yourself a ROM hacker. Using a program someone else has written doesn't count (this goes for all the script kiddies, too)! However, getting the information for this document was a lot of work. Don't get frustrated right away, and you will find some very interesting things in the depths of code, and perhaps even a new perspective on programming- from the outside.


Next Previous Contents