The current URL is datacrystal.tcrf.net.
Metroid Zero Mission/ROM map
File:Microchip3.png | This page is a ROM Map for "Metroid Zero Mission". |
60C64A - beginning of the level data. First room in Brinstar(starting room) First few bytes are the size of the room. The first 2 bytes control the size, but the third is unknown.
Each section of level data for the room has the same 3 bytes that begin the data. Following this is the different level data pieces. First comes the clip data, or what part the player interacts with. There are 2 formats: The first is 2 bytes, the first of which is always 80 +, is a simple RLE. The first byte tells how many times to repeat the contents of the second byte. The second byte is what you interact with. 10, for example, is a solid block. The second format is different, a bit. The first byte is how many blocks, like the first, except the value is from 00 to 7f. Now, what follows is a one block per space format, which means that if the first byte is 05, then the following data would look like this: 10 10 00 00 10.
Certain destroyable blocks do not come back, and also any block that acts like an upgrade pickup(missles, for example). Some common values worth noting are 5B and 6B, the former being a power bomb block that does not return, while the latter does return when you switch rooms. 5A and 6A, the former being a speed block that does not respawn, but does return when you switch rooms, while the latter(I like saying latter for some reason :D) respawns quickly.
Regular item pickups are from 5C to 5F. 5C is an energy tank, 5D is a missle tank, 5E is a super missle pickup, and 5F are power bombs. 6C to 6F are hidden tanks.
The graphics work in the same manner, with the first 3 bytes being the size of the data in the room, and the remainder being the same format as with the clip bytes. Some graphics to note are 48 to 4B, which are item graphics. Of course if you combine an item graphic with the right item clip byte, you get an item. 40 to 47 are the various special block tiles, without being covered.
After this is what I noticed were a bunch of 00's, 01's and stuff. This data is what tileset each graphic uses. This means you can grab tiles from more than just 256, by changing these bytes. I haven't worked with it much, but it seems that one byte = one piece of data. So one 01 would cover an 8c 00(no graphic), or an array.
After, if present, would be the various layer data. I haven't worked much with other layers, but the data should be there. Last, is sprite data, which is just a series of 3 bytes, each being one sprite. The first 2 bytes are the postion, and the third is the object in the index to use.
Room Header data:
340AD4 - room header of the starting room
Well first of all is a byte that determins what graphic is used for the room. Following that seems to be controls for the various layers. I've managed to turn off some layers before, but I am unsure how it works. After this are the various level data pointers. After this are sprite pointers(apparently 2, one for normal and 1 for hard mode). After the sprite data is a byte that is the enemy index for the room. This tells the game what objects are in the room. A few indexes I have found are: 2F. 30. 4F These are for the 3 unknown items and their blocks. The last one is the plasma beam while the first is the gravity suit. Also are 04(long beam), 10 to some byte or another(most item and location statues), and 4B(Crocomire).
It looks as if the byte after the enemy index might be some sort of switch or somthing that makes those changes to the enemies thoughout the game. More testing is needed, however. After this is one more pointer untested. After is the location of the room on the map, and then data that relates to extra layers that affect you(like water and acid), after is the music data. That's the end of it there.
Door Data:
The first byte seems to determine whether or not the door acts like a door, or another kind of room transition. It also seems to control if the door displays an intro(like for an area). The second byte I don't know exactly what it does yet.
The third and 4th byte are the x positions of both where the door is located(in terms of shootability), and where it lets you off after you go though it(from the other side) After that is door index that's used. Changing it will make you go to different doors and warps around the reigon. After that is where on the screen the door drops you off, and the last one seems to be the y postion, but doesn't really seem used much.
On second though, it looks as if the second byte is the room number. Because of how the game does its map and stuff, it's quite possible that there are only 256 rooms in the entire game. Of course that seems a tad unlikely, but you never know.
3459c4 - item pickup data. 4 entries for each difficulty level.