Register | Login | |||||
Main
| Memberlist
| Active users
| ACS
| Commons
| Calendar
| Online users Ranks | FAQ | Color Chart | Photo album | IRC Chat |
| |
1 user currently in Rom Hacking: |
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 | | | |