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 - Metroid Data | |
Add to favorites | "RSS" Feed | Next newer thread | Next older thread
User Post
Ark42
Newcomer
Level: 5

Posts: 1/8
EXP: 283
For next: 246

Since: 05-29-05

Since last post: 157 days
Last activity: 157 days
Posted on 05-29-05 03:28 AM Link | Quote

So I've played with MetEdit, and read SnowBro's document about the level data format, and I've been writing a program to read all the map data myself. I've got all the palettes, structures, and rooms decoded. Even the palette switch items and all the other enemy and item data. I didn't know until just recently that it is possible to have more than 1 item in a given room. (The end game rooms have many items, such as 6 "turret" items, a "rinkas" item to make all the little circles fly at you, and 2 "zeebitite" items, for example).
The only really important thing I havn't figured out how to decode so far is the sprite format.

For example, it looks like there is a pointer table for sprite definitions, then the sprite data follows, and the data looks like 0D 03 03 84 85 94 95 FF in the case of an energy tank. I know 84-95 are the 4 pattern tiles, and FF is probably just an end marker, but I can't figure out what these first 3 bytes are for. In the case of a missile tank, the data is 0D 03 03 3F FD 40 3F FD 00 4F FD 40 4F FF, and it looks like the FD 40 and FD 00 pieces have something to do with setting patterns to be mirrored.

MetEdit doesn't seem to actually display any of the items, but it does show the starting position of the enemies, which have data formatted in a very similar method as the item sprites. I'm not sure if he just hard-coded a few pattern tiles to make up the enemies to display in MetEdit, or if he has decoded the data I am looking at somehow. At the end of his document on the level format, he says 'What's that? "Enemy data information", you say? Nah, better save that for my next document.', but I don't think the "next document" really exists
Fx3

Shyguy
Level: 13

Posts: 19/80
EXP: 10252
For next: 15

Since: 04-11-05
From: Brazil

Since last post: 98 days
Last activity: 34 days
Posted on 05-29-05 04:09 AM Link | Quote
Umm... I don't know if this is... "insufficient" but... anyways, Snowbro has released the "source code" for Metroid, fully commented, did you see? :|
Ark42
Newcomer
Level: 5

Posts: 2/8
EXP: 283
For next: 246

Since: 05-29-05

Since last post: 157 days
Last activity: 157 days
Posted on 05-29-05 04:19 AM Link | Quote

Yes, I did see that, the copy I'm looking at was at http://www.classicgaming.com/mdb/m1/m1source.txt and it has been very valuable for information, however, I still cannot understand the sprite format and did not see any comments in the source code regarding it.
Ark42b
Newcomer
Level: 5

Posts: 2/9
EXP: 338
For next: 191

Since: 05-29-05

Since last post: 151 days
Last activity: 103 days
Posted on 05-29-05 12:34 PM Link | Quote
If anybody is interested, I'll post the C++ source code when I'm done decoding all of the information from the ROM.
Here are some pictures of the sprite data, you can see where I was trying to piece together the Skree's and it doesn't make alot of sense how that one switches to a vertical tile layout instead of horizontal.
http://ark42.com/metroid/sprites-brinstar.png
http://ark42.com/metroid/sprites-general.png
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 38/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 05-29-05 12:45 PM Link | Quote
You might be interested in this doc I made about the item data format (it was not part of SnowBro's Metroid Level data format doc) It may not be 100% accurate but you can see that there could be more flexibility in positioning items than MetEdit allows.

http://membres.lycos.fr/nes3d/MetroidItemData.txt

Item editing is missing from my own never-officialy-released Metroid editor called "Metroid RomEdit" and I only implemented part of item data decoding in Metroid Cubed.

Anyway if you have more questions about Metroid I could try to answer them, though I wouldn't know about the sprite format...


(edited by VL-Tone on 05-28-05 08:04 PM)
dan

Snap Dragon
Level: 43

Posts: 595/782
EXP: 534516
For next: 30530

Since: 03-15-04

Since last post: 20 hours
Last activity: 14 hours
Posted on 05-29-05 04:09 PM Link | Quote
Snowbro has also released the source code to MetEdit, although it doesn't seem to be linked on his website or anywhere else on the internet. I uploaded it here for you, incase you don't have it. If MetEdit supports what you want, maybe you could use his source to figure it out.
Ark42b
Newcomer
Level: 5

Posts: 3/9
EXP: 338
For next: 191

Since: 05-29-05

Since last post: 151 days
Last activity: 103 days
Posted on 05-29-05 09:14 PM Link | Quote
VL-Tone, I did read your document, and it was a good start, but it was not 100% accurate. The 00 byte at the end of the items marks the end of the item-list for that x,y coordinate. You can have multiple items at one x,y coordinate by just listing them all together there. There is a 3 byte header per y coordinate (y value, 2byte memory pointer) and a 2 byte header per x coordinate (x value, number of bytes to skip to find next x value), and I decoded all possible item types (which are only in the low-nibble, the high-nibble is an ID field used by some of the item types).
Items are 1=extra enemy, 2=powerup, 3=swam, 4=elevator, 5=turret(the things at the top of the motherbrain room shooting down) 6=motherbrain itself 7=zeebitite 8=rinkas 9=extra door(if low nibble is 3, the door cannot be opened after mother brain is dead), and 10=palette switch
A lot of the items are only 1 byte long, except for enemy and powerup which are 3 bytes, and elevator, turret, and door, which are 2 bytes.

Another discovery was the "unknown byte" at the start of each room data, which is actually a special default palette byte. The attribute table is set to that palette and any structure data matching that palette will not update the attribute table, even if it is being put ontop of a different structure which already did change the attribute table, it will not be updated! For example, the entrance to the motherbrain room at position (4,B) has a default palette of 3. The blue platform which is 3 tiles wide right where you enter the room by the door, and it has palette #1, but the tall column of blocks which overlaps it by 1 tile, has palette #3, which is why the top block will be drawn with palette #1 and shows up bluish. It overlaps the blue platform and changes the name table entry without changing the attribute table. Just another little aspect of how the Metroid programs added a bit more variety to the level design I think.

-----

Thanks, dan, I did not know the source to MetEdit was released. I will check that out.

Edit: It does look like MetEdit has some of what I want. It looks like some things are hard coded, but the sprite code is there to remake the sprites from the ROM, in met.cpp's DrawFrame() function.



(edited by Ark42b on 05-29-05 04:15 AM)
(edited by Ark42b on 05-29-05 04:43 AM)
Mega-Dog

Level: 20

Posts: 78/139
EXP: 40051
For next: 2388

Since: 03-15-04
From: Minnesota

Since last post: 8 days
Last activity: 4 days
Posted on 06-03-05 04:54 AM Link | Quote
Alot of this code is build off the document I release along time ago about the item placing. I knew about it long before many people. If you have ever played Metroid M I did use it there.

Also Ark42b, if you ahve any metroid hacking questions I am the man since I know where everything is in the rom from title screen data to end screen data, to structures, phisics of metroid working, and so on. I have been messing around with Metroid so much I could sit down and do a simple hack in about 2 days.
Ark42b
Newcomer
Level: 5

Posts: 8/9
EXP: 338
For next: 191

Since: 05-29-05

Since last post: 151 days
Last activity: 103 days
Posted on 06-03-05 08:22 PM Link | Quote

Thanks Mega-Dog, I seem to have found all the information I needed for what I wanted to accomplish for now - http://board.acmlm.org/thread.php?id=12718
Add to favorites | "RSS" Feed | Next newer thread | Next older thread
Acmlm's Board - I2 Archive - Rom Hacking - Metroid Data | |


ABII


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



Page rendered in 0.018 seconds.