Register | Login
Views: 19364387
Main | Memberlist | Active users | ACS | Commons | Calendar | Online users
Ranks | FAQ | Color Chart | Photo album | IRC Chat
11-02-05 12:59 PM
1 user currently in Rom Hacking: hukka | 2 guests
Acmlm's Board - I2 Archive - Rom Hacking - Got Crocomire?
  
User name:
Password:
Reply:
 

UserPost
Jigglysaint
Posts: 80/215
If I remember correctly, it works for basically every row. Since a row can be expressed via an array(to make more fine adjustments), or to a row of one tile or attribute(to compress empty space and solid bits better), basically this data I mentioned alters both. I am not sure if all rooms have this, as it could just be used in certain areas. There is still much uncharted data, but most of it's good to edit.
Squash Monster
Posts: 390/677
Whee, data makes me happy!

Does the tileset group of bytes effect one of the 00-7F sets too, or only the 80-FF ones?

How that tileset thing works might complicate making a simple flawless compression algorithm a bit.
Jigglysaint
Posts: 79/215
Okay, I got a small document outlining what I know so far.




Metroid Zero Mission ROM hacking data

By Jigglysaint




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.

Certainly 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 ) 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.
interdpth
Posts: 248/527
I tried Replacing Kraids Graphic pointer with Crocomires it was teh funny.
Jigglysaint
Posts: 77/215
You guys are certainly welcome to my data.

I don't have the ASM offsets of croc, but he's easily put into the game just by changing the enemy index in the room header.

As for all the data that I found(minus the room header stuff), I'll have to compile it, along with sample offsets.
Dylan
Posts: 845/1407
Jigglysaint, do you have the offsets for crocomire?
interdpth
Posts: 232/527
Jiggly may I have your child or your data?
Jigglysaint
Posts: 76/215
http://www.metroid2002.com/jigglysaint/

I got a new movie, just to see that I can place him anywhere.

There's also a movie of me getting the fabled 10th power bomb tank(although I didn't have 9 when I got it).
Xin
Posts: 25/30
Yeah, he's a real pushover. Obviously the programming wasn't even close to finished and there were never any death sprites/animations made, so the last sprite just lingers on the screen.

The video of it I made is here to give a good idea of it all. You will need to download DivX if you don't have it and 7-zip to decompress the file.
Skreename
Posts: 29/107
Pretty cool... But I'd expect it to be a bit stronger if it was in a better room. Crocomire has never been good for a piece of ground that barely fits it.

...This sounds bad, but... How exactly did you do it? I know you replaced the Chozo statue, and have a vague idea of how it works, but... Any specifics?
Dart Zaidyer
Posts: 25/72
Wow! You know, I kind of figured they didn't leave his graphics in for nothing, but... wow! Too bad he's a wuss, though... But then again, so were those giant wasp larva things that probably took his place.
You just gotta put this thing in your demo, man.

Oh, and didn't Squash Monster say before that he could build an editor as long as he had the necessary data to use?
Jigglysaint
Posts: 75/215
Except I don't have the 1337 ASM skillz he does.

Who knows, my hacking skills might attract somebody who want's to build an editor. I think it would be the first of it's kind.
MathOnNapkins
Posts: 405/2189
Heh you are sort of the deskjockey for ZM now. Well, that's a tough comparison but it works.
KP9000
Posts: 140/261
What the hell? where did you find this at? id sure like to fight crocomire!!!
Jigglysaint
Posts: 74/215
http://www.metroid2002.com/xin/1mzm_01.png

I just proved he exists beyond just a sprite sheet. He's kind of weak and not really much of a boss.
Acmlm's Board - I2 Archive - Rom Hacking - Got Crocomire?


ABII


AcmlmBoard vl.ol (11-01-05)
© 2000-2005 Acmlm, Emuz, et al



Page rendered in 0.003 seconds.