(Link to AcmlmWiki) Offline: thank ||bass
Register | Login
Views: 13,040,846
Main | Memberlist | Active users | Calendar | Chat | Online users
Ranks | FAQ | ACS | Stats | Color Chart | Search | Photo album
05-08-24 03:18 AM
0 users currently in ROM Hacking.
Acmlm's Board - I3 Archive - ROM Hacking - Megaman X level data New poll | |
Add to favorites | Next newer thread | Next older thread
User Post
C:/xkas bio.asm
Compiled ASM code








Since: 11-17-05

Last post: 6288 days
Last view: 6288 days
Posted on 03-17-06 10:14 PM Link | Quote
the first time I hack a game wich there no editor for...

here the stuff I found:
0x9B110 is the start of the lunch octopus level data(I used it for testing since tile are easy to reconize). the data aren't compressed and use a simple tilemap system(each tile are 2 byte long and byte are shifted)
exemple:
|0000|0000|0000|0000|0000|0000|
|0000|0000|0000|0000|0000|0000|
|0007|0007|0007|0007|0007|0007|
|0008|0008|0008|0008|0008|0008|
|0003|0003|0003|0003|0003|0003|
|0003|0003|0003|0003|0003|0003|

give this:


Each tile are 32x32 in size, the 16x16 tile used for making the 32x32 is determined by something I call the 'Map32'(cause it renember me LM Map16)

the start of the Map32 data for the intro level is at 0xB442B, the format got like this

|0002|0003|
|0008|0009|

I didn't fully experimented with it yet but I believe map32 data for tile start at: starting adress of data+number of tilex8

that all for now, I will continue to gather data
Edit:removed transparancy in my layout for better picture viewing


(edited by Bio on 03-17-06 09:15 PM)
(edited by Bio on 03-18-06 09:22 PM)
(edited by Bio on 03-18-06 09:22 PM)
(edited by Bio on 03-18-06 09:29 PM)
NetSplit

Paratroopa


 





Since: 11-18-05

Last post: 6450 days
Last view: 6450 days
Posted on 03-18-06 12:38 AM Link | Quote
I do know that MMX level data had already been gathered at one point, but sadly no one ever created an editor to make use of the data. As you found, the format is similar to that used in the NES Mega Man games. I'm unsure as to whether the TSA data had been found before, though, so that's good to see. Regarding how it works, usually what Capcom tends to do with their TSA data (at least in NES games) is define 16x16 blocks which are then used to construct 32x32 blocks. Although I would not be surprised if it were different because this is SNES, it may still use that very same format (especially since its level data is done that way).

Good luck in finding more.
Jigglysaint

Octoballoon








Since: 11-19-05

Last post: 6308 days
Last view: 6293 days
Posted on 03-18-06 01:54 AM Link | Quote
It's basically the same as the nes, except the way levels are put together are a lot different. It's not done screen by screen, but is basically lengths of level that are bound together with scrolling events of some sort. So far nobody has been able to fully decode the scroll data to make a level fit enough for a hack. Also, the sprite data still has yet to be found.
C:/xkas bio.asm
Compiled ASM code








Since: 11-17-05

Last post: 6288 days
Last view: 6288 days
Posted on 03-18-06 10:14 PM Link | Quote
Originally posted by NetSplit
the format is similar to that used in the NES Mega Man games. I'm unsure as to whether the TSA data had been found before, though, so that's good to see. Regarding how it works, usually what Capcom tends to do with their TSA data (at least in NES games) is define 16x16 blocks which are then used to construct 32x32 blocks

I never hacked a megaman game before, I just noticed it when I disasambled the level loading routine as see here:

A,X and Y are 16 bit, Y is the tile number and X the location of the tile

LDA [$20],y
STA $7E2000,x
INY
INY
LDA [$20],y
STA $7E2002,x
INY
INY
LDA [$20],y
STA $7E2020,x
INY
INY
LDA [$20],y
STA $7E2022,x

...and that how the 32x32 block are assambled from 16x16 tile
Originally posted by NetSplit
I do know that MMX level data had already been gathered at one point, but sadly no one ever created an editor to make use of the data

I would have started making a editor but...I don't know other programming language than 65816 ASM

Edit:screenshot:


in case you wonder, that water in the top of screen is a unused beta tile


(edited by Bio on 03-18-06 09:14 PM)
(edited by Bio on 03-18-06 09:15 PM)
(edited by Bio on 03-18-06 09:15 PM)
(edited by Bio on 03-18-06 09:20 PM)
(edited by Bio on 03-18-06 09:20 PM)
(edited by Bio on 03-18-06 10:59 PM)
Jigglysaint

Octoballoon








Since: 11-19-05

Last post: 6308 days
Last view: 6293 days
Posted on 03-18-06 10:27 PM Link | Quote
Well maybe the best way to encourage somebody to build an editor is to find as much data as possible. Since you said you are familar with ASM, try to find as much data as possible, including enemy placement, upgrade capsule locations, scroll data, and the like.
insectduel

Lantern Ghost
Not welcome here anymore.








Since: 11-18-05
From: Bronx, New York

Last post: 6531 days
Last view: 6326 days
Posted on 03-20-06 03:20 PM Link | Quote
I hope you find the level layer backgrounds.
C:/xkas bio.asm
Compiled ASM code








Since: 11-17-05

Last post: 6288 days
Last view: 6288 days
Posted on 03-20-06 04:48 PM Link | Quote
I already found them but I didn't noted them they start at the end of each level data and work the same way

Edit:found the data that already been found link
Edit2:more


(edited by Bio on 03-20-06 09:28 PM)
(edited by Bio on 03-20-06 09:29 PM)
(edited by Bio on 03-20-06 09:35 PM)
zhaDe
Newcomer


 





Since: 04-13-06

Last post: 6469 days
Last view: 6469 days
Posted on 04-13-06 09:30 AM Link | Quote
I have started making a mmx3 editor since the gfx compression algorithm has been found, tho I still have a problem.. I cant find the palettes so I can only display hardly recognizable gfx.

I have made a small app in vb which can edit enemies and objects in intro level. Its tough to use tho cuz you need to know how the objects are stored in the rom.

anyway if someone can find the pallettes I think I could make an editor to edit tiles and later enemies and objects

btw sorry for bringing back an old thread
Jigglysaint

Octoballoon








Since: 11-19-05

Last post: 6308 days
Last view: 6293 days
Posted on 04-13-06 07:10 PM Link | Quote
For megamanx3, I have a fair bit of information, although not palletes unfortuantly. I also can't seem to find the scroll data, although I found level order, and the starting screen's scrolling.
zhaDe
Newcomer


 





Since: 04-13-06

Last post: 6469 days
Last view: 6469 days
Posted on 04-15-06 02:42 AM Link | Quote
elixirnova's editor source code should be helpful. Jigglysaint whats that you call "level order" ?
Jigglysaint

Octoballoon








Since: 11-19-05

Last post: 6308 days
Last view: 6293 days
Posted on 04-15-06 12:16 PM Link | Quote
It's the data where the level is organized into what you see in the game. Instead of per room, the rom takes chunks of level data and organizez them into rows of screens. So it would grab like 5 screens in order and stuff. I haven't been able to decode it yet, so I can't really say much else. What I can say that it's vital information nessicary to making a good quality level hack. Unfortuantly though, without the scrolling data, things are still rather limited
zhaDe
Newcomer


 





Since: 04-13-06

Last post: 6469 days
Last view: 6469 days
Posted on 04-16-06 02:39 PM Link | Quote
k0lpa@hotmail.com
..^ thats a zero

I found the scrolling data for the first room too, its in the same place as the enemies and objects, tho I never found how to make it scroll in another way.. I was just able to disable it so u were stuck in the 1st room or make it so u could come back in the first room after going in the 2nd.. anyway nothing really usefull. Could you give me the address where the level order data maybe I could find how it works.


(edited by 1248 on 04-16-06 01:40 PM)
Jigglysaint

Octoballoon








Since: 11-19-05

Last post: 6308 days
Last view: 6293 days
Posted on 04-16-06 07:38 PM Link | Quote
I think what you found was sprite data that tells the game what scroll to cue up. I think the actual data is defined somewhere else. Do you have an offset? As for room order(most of my data is for Crush Crawfish), it's at $1AFD68. I think 4 bytes makes up one block of level data. If you find anything let me know. I think it corrosponds to the level data somehow but I am unsure.
zhaDe
Newcomer


 





Since: 04-13-06

Last post: 6469 days
Last view: 6469 days
Posted on 04-20-06 01:53 PM Link | Quote
I think your right about what I thought was the scrolling for the intro level its only sprite data... As for the room order the format seems pretty weird, only changing 1 byte screw up the whole level. A strange thing also.. dont know why but changing a certain byte to 00 (think it was $1AFD6A) makes it so u cant shoot nor slide in the crush crawfish level and the only way to jump is to press L + R.
zhaDe
Newcomer


 





Since: 04-13-06

Last post: 6469 days
Last view: 6469 days
Posted on 04-24-06 02:24 PM Link | Quote
My editor is not really more helpful than a hex editor it only displays the bytes of one object per line.

if you are looking into changing enemies, the object type for enemies is 03 (not all 03 type objects are enemies tho..) for example the first enemy in the game is :

1E50B0 : 03 B0 04 08 01 98 8B 60

the 4th byte is the kind of enemy, 08 is for that round purple enemy with a canon on the head

the 5th byte is a tag depending on the kind of enemy, for example if 4th byte is 08 and 5th byte is 01 the purple enemy can jump around instead of only standing still

you can try to change the 4th byte to get different enemies but be sure the enemy is normally in the same level or else the graphic will be corrupted because the game only loads the graphics and pallettes of the needed ennemies for a level.

I only know another enemy, 0B, its the second enemy encontered in the game that green thing which crawls on walls and shoots plasma or something like that.

I have made a new version of my object editor ( the old one had tons of bugs.. ), I also added a level map display which shows the room arrangement but it is still incomplete.

~ et en passant ! c'est qui le 3e ?


(edited by zhaDe on 04-24-06 01:24 PM)
(edited by zhaDe on 04-24-06 01:29 PM)
(edited by zhaDe on 04-24-06 01:32 PM)
C:/xkas bio.asm
Compiled ASM code








Since: 11-17-05

Last post: 6288 days
Last view: 6288 days
Posted on 04-24-06 02:27 PM Link | Quote
Originally posted by zhaDe
~ et en passant ! c'est qui le 3e ? :p

moi ca fait beaucoup de temps que je n'ai pas touché au donné de MMX, mon hack de smb3 prend tout mon temps


(edited by Bio on 04-24-06 01:35 PM)
zhaDe
Newcomer


 





Since: 04-13-06

Last post: 6469 days
Last view: 6469 days
Posted on 04-24-06 02:41 PM Link | Quote
Moi jai presque jamais rien hacké dautre que mmx3. jaime juste trop ste jeu la.. jlai passé tellement de fois, ca srais trop lfun pouvoir jouer dans des nouveaux levels !
Raccoon Sam

Boomerang Brother
Custom Title








Since: 11-20-05
From: Correct

Last post: 6288 days
Last view: 6288 days
Posted on 04-24-06 03:35 PM Link | Quote
Originally posted by Bio
0x9B110 is the start of the lunch octopus level data



Heehee
zhaDe
Newcomer


 





Since: 04-13-06

Last post: 6469 days
Last view: 6469 days
Posted on 04-24-06 06:34 PM Link | Quote
lol, always tought this boss looked quite tasty.
Jigglysaint

Octoballoon








Since: 11-19-05

Last post: 6308 days
Last view: 6293 days
Posted on 04-24-06 08:38 PM Link | Quote
Originally posted by zhaDe
My editor is not really more helpful than a hex editor it only displays the bytes of one object per line.

if you are looking into changing enemies, the object type for enemies is 03 (not all 03 type objects are enemies tho..) for example the first enemy in the game is :

1E50B0 : 03 B0 04 08 01 98 8B 60

the 4th byte is the kind of enemy, 08 is for that round purple enemy with a canon on the head

Jigglysaint: 00 is used mostly for items like heart tanks, doors, teleporters, and the sprite that makes zero go bye-bye in the level. 01 I haven't figured out yet. 02 is used for scrolling, enemy gfx swapping, and tells the game to load areas with breakable walls and stuff. 03 is for enemies, including bosses and the sprite that sets up the Light Capsules.

the 5th byte is a tag depending on the kind of enemy, for example if 4th byte is 08 and 5th byte is 01 the purple enemy can jump around instead of only standing still

For things like heart tanks and sub tanks, the 5th byte are bitflags, each representing a level. For example, the heart tank in Blast Hornet's stage has the tag of 01, and Neon Tiger's is 80.

you can try to change the 4th byte to get different enemies but be sure the enemy is normally in the same level or else the graphic will be corrupted because the game only loads the graphics and pallettes of the needed ennemies for a level.

Jigglysaint: I covered that, sprites change what graphics are loaded. For example, you can't have a heart tank and a light capsule on the same screen, as they occupy the same graphics on the sheet.

I only know another enemy, 0B, its the second enemy encontered in the game that green thing which crawls on walls and shoots plasma or something like that.

Jigglysaint: I know several more, including bosses. It's interesting to note that a boss can't be in a different level than it's supposed to be or else it just lets you exit the level and get the weapon.

I have made a new version of my object editor ( the old one had tons of bugs.. ), I also added a level map display which shows the room arrangement but it is still incomplete.

~ et en passant ! c'est qui le 3e ?
Add to favorites | Next newer thread | Next older thread
Acmlm's Board - I3 Archive - ROM Hacking - Megaman X level data |


ABII

Acmlmboard 1.92.999, 9/17/2006
©2000-2006 Acmlm, Emuz, Blades, Xkeeper

Page rendered in 0.027 seconds; used 444.72 kB (max 571.64 kB)