| |||
Views: 88,475,850 |
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search | 04-24-24 04:29 AM |
|
Guest: Register | Login |
0 users currently in ROM Hacking | 3 guests | 2 bots |
Main - ROM Hacking - Umihara Kawase | New thread | Thread closed |
Naulahauta |
| ||
Red Paragoomba Level: 19 Posts: 16/56 EXP: 30487 Next: 5290 Since: 10-27-09 Last post: 3702 days Last view: 483 days |
Okay.
Okay. Umihara Kawase, also known as that-awesome-yet-weird-puzzle-platforming-game is one of those games you wish there was a level editor for. Now, I've looked into the level format and it makes sense but simultaneously fucks your mind. Observe: 0xC210E is the beginning of Field 00's level data. It ends at 0XC3191, and in its entirety it's 0x1084 bytes big. It includes the tiles to use for the level, starting point for the player, sprites and physical properties of each tile. Probably time and music bytes too. Tileset to use isn't, however, defined in this bunch of data. The mystery begins at 0xC3015. Or, to be honest, anywhere in the data where there's these strange combos. Check this out: 0xC3015: 8E 4D 8D 4D 8C 4D 8B 00 4D 8A 4D 89 4D 88 4D 87 00 4D 86 4D 85 4D 84 4D 83 00 ... Compare it to this tileset I snatched from the ZST of Field 00. The level uses this 2-bank tileset btu the graphics themselves are compressed so you won't find them in the ROM through Tile Molester or stuff like that. Bank 0: Bank 1: If you compare the bytes, you'll notice that the first underlining I did, 8E 4D 8D 4D 8C 4D 8B is a set of four tiles from bank 1, each followed by a property byte (4D). In the property byte, it is defined what palette the tile uses and what bank is the tile retrieved from. So okay, let's change those bytes to something else, let's say AB. So now, 8E 4D 8D 4D 8C 4D 8B turns into AB 4D AB 4D AB 4D AB. Save and open an emulator, this is what you get: Superb! We've changed four tiles. We also know that we can change it to anything that our tilesets offer us. The problems arise when we move onto the non-underlined parts. As you probably noticed, there's a 00 between the byte array: 8E 4D 8D 4D 8C 4D 8B 00 4D 8A 4D 89 4D 88 4D 87 00 4D 86 4D 85 4D 84 4D 83 00 ... Change any 00 to anything else and... whoa Now, those 00s (and other evil purposeless bytes and byte combos) are scattered through the level data. The bytes never appear as a constant stream, it's always four bytes max, then that combo breaker 00 or 04 or 00 0F 2C or some crazy 'useless' byte shows up. But regardless, it's a start. Right now I've got to flee, but I'll be posting more of my findings, mostly sprite construction data, as soon as I get home. In the meantime, screw around in that area. ____________________ oh |
blackhole89 |
| ||
The Guardian Moloch whose eyes are a thousand blind windows! Level: 124 Posts: 3156/4196 EXP: 21529052 Next: 307549 Since: 02-19-07 From: Ithaca, NY, US Last post: 469 days Last view: 82 days |
|
Naulahauta |
| ||
Red Paragoomba Level: 19 Posts: 18/56 EXP: 30487 Next: 5290 Since: 10-27-09 Last post: 3702 days Last view: 483 days |
Oookay, slowly getting the hang of this. First off, let me explain the property byte in bits.
vhbp al?b V is for Vertical flip of the tile. H is for Horizontal flip of the tile. B is for Behind. If this bit is set, you (and all sprites, for that matter) will be hiding behind this tile. P, A and L are for PALette. 8 palettes to choose from. ? is... I don't know. Seems to a some kind of a hybrid bit between bank and palette selection. Another interesting this is that this bit is never set. B is for Bank. If not set, load graphics from bank 0, if set, from 1. I've also confirmed that the purpose of the 00s is not physical attribute defining. The first $28B bytes are used for defining physmaps and possibly sprites too. Editing any of the bytes in this area will not result in visual changes (except the total garbage-fest that occurs when editing a wrong byte). ____________________ oh |
Naulahauta |
| ||
Red Paragoomba Level: 19 Posts: 19/56 EXP: 30487 Next: 5290 Since: 10-27-09 Last post: 3702 days Last view: 483 days |
Okay, something interesting. I opened the ZST in a Hex editor and took a look at the byte array. Very obvious level data.
compare it to my old map rip of the level. That is most obviously the lower left area. Those N.N.N's are the trees' physmap. Dunno really how to continue from here but I'll keep screwing around. Stay tuned.. I have a good feeling. ____________________ oh |
Dwedit |
| ||
Red Paratroopa Level: 30 Posts: 158/162 EXP: 163111 Next: 2758 Since: 03-07-07 From: Chicago Last post: 3516 days Last view: 1611 days |
You sure you're not looking at the nametable? ____________________ |
Naulahauta |
| ||
Red Paragoomba Level: 19 Posts: 21/56 EXP: 30487 Next: 5290 Since: 10-27-09 Last post: 3702 days Last view: 483 days |
Nametable? What do you mean?
I mean, I've modified that bunch of data and have successfully edited the graphical appearance of the tiles, the palettes, and the physical attributes of each tile. For some reason I haven't been able to edit the enemies but I know their positions and values are listed there. ____________________ oh |
Kawa |
| ||
CHIKKN NI A BAAZZKIT!!! 80's Cheerilee is best pony Level: 138 Posts: 3796/5344 EXP: 30939277 Next: 723704 Since: 02-20-07 From: The Netherlands Last post: 4496 days Last view: 2631 days |
Not to argue for or against the point that you "may be looking at the nametable", but just throwing this in: the nametable is a representation of the screen contents in video memory used by the PPU to render the final image.
Some games may use map formats identical to the nametable format, some might limit that to intermission screens, most are likely to use something entirely different. For example, there are three different styles of level data in Super Mario Bros 1: the object-based level representation, working on a 16x16 grid and not at all nametable-like → the tile-based level map, also on a 16x16 grid but still not nametable, used to do collission detection and coin pickups 'n such → the nametable, a screen-sized, 8x8 pixel grid tile based image based on the relevant section of the level map, which is in turn based on the object list. This third part is not used by the game itself at all, and only serves to let the system draw the level on screen. Now if Dwedit were right, editing this data would only change the tiles' graphical appearance, but not their physical attributes — that one block would only look like a conveyor belt, but not act like it. If there was open space there, you wouldn't be able to hit the conveyor belt tile. But you claim to have changed the "physical attributes", and I'll buy that. Next time, you might want to keep the file offsets in view so Dwedit can tell if the displayed area's in VRAM or not. ____________________ Wife make lunch - Shampoo Opera - give it a spin Spare some of your free time? <GreyMaria> I walked around the Lake so many goddamn times that my sex drive was brutally murdered Kawa rocks — byuu |
Naulahauta |
| ||
Red Paragoomba Level: 19 Posts: 22/56 EXP: 30487 Next: 5290 Since: 10-27-09 Last post: 3702 days Last view: 483 days |
Oooh, right. I didn't even think he meant the image I posted, but I see the context now. The stuff is in 0x3000 - 0x4BFF. ____________________ oh |
Kawa |
| ||
CHIKKN NI A BAAZZKIT!!! 80's Cheerilee is best pony Level: 138 Posts: 3797/5344 EXP: 30939277 Next: 723704 Since: 02-20-07 From: The Netherlands Last post: 4496 days Last view: 2631 days |
Glad to be of assistance. When you quote those offsets, do you mean "in the .ZST file" or...? ____________________ Wife make lunch - Shampoo Opera - give it a spin Spare some of your free time? <GreyMaria> I walked around the Lake so many goddamn times that my sex drive was brutally murdered Kawa rocks — byuu |
Naulahauta |
| ||
Red Paragoomba Level: 19 Posts: 23/56 EXP: 30487 Next: 5290 Since: 10-27-09 Last post: 3702 days Last view: 483 days |
Posted by Kawa Yeah, in the ZST. ____________________ oh |
Kawa |
| ||
CHIKKN NI A BAAZZKIT!!! 80's Cheerilee is best pony Level: 138 Posts: 3799/5344 EXP: 30939277 Next: 723704 Since: 02-20-07 From: The Netherlands Last post: 4496 days Last view: 2631 days |
Yes, that's what I thought. Just making sure. ____________________ Wife make lunch - Shampoo Opera - give it a spin Spare some of your free time? <GreyMaria> I walked around the Lake so many goddamn times that my sex drive was brutally murdered Kawa rocks — byuu |
Alc |
| ||
Newcomer Level: 3 Posts: 1/1 EXP: 68 Next: 60 Since: 05-24-11 Last post: 4718 days Last view: 4718 days |
Just wondering if anyone got any further with this? Love this game so much. |
Kawa |
| ||
CHIKKN NI A BAAZZKIT!!! 80's Cheerilee is best pony Level: 138 Posts: 4628/5344 EXP: 30939277 Next: 723704 Since: 02-20-07 From: The Netherlands Last post: 4496 days Last view: 2631 days |
If we did get any further, we would've posted on it. Please don't post in year-old threads any more, unless you have something concrete to add yourself. ____________________ Wife make lunch - Shampoo Opera - give it a spin Spare some of your free time? <GreyMaria> I walked around the Lake so many goddamn times that my sex drive was brutally murdered Kawa rocks — byuu |
Senaye |
| ||
Level: 45 Posts: 110/435 EXP: 627340 Next: 32824 Since: 03-22-11 From: Somewhere Last post: 3395 days Last view: 3395 days |
Ok, I know this has absolutely nothing to do with the topic, but why does everything involve Kawa?
Umihara KAWAse KAWAbunga You're lucky, you chose a good name |
Kawa |
| ||
CHIKKN NI A BAAZZKIT!!! 80's Cheerilee is best pony Level: 138 Posts: 4652/5344 EXP: 30939277 Next: 723704 Since: 02-20-07 From: The Netherlands Last post: 4496 days Last view: 2631 days |
I like getting involved
Closing this now ____________________ Wife make lunch - Shampoo Opera - give it a spin Spare some of your free time? <GreyMaria> I walked around the Lake so many goddamn times that my sex drive was brutally murdered Kawa rocks — byuu |
Main - ROM Hacking - Umihara Kawase | New thread | Thread closed |
© 2005-2023 Acmlm, blackhole89, Xkeeper et al. |
MySQL - queries: 74, rows: 109/111, time: 0.014 seconds. |