Points of Required Attention™
Please chime in on a proposed restructuring of the ROM hacking sections.
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
Posted on 06-18-10 05:55 PM (rev. 2 of 06-18-10 05:55 PM) Link | Quote | ID: 132106


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
Posted on 06-18-10 06:19 PM Link | Quote | ID: 132107


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



Could those bytes encode the physical attributes of the next (or previous) bunch of tiles, i.e. if they are solid or deadly or whatever? If that sequence is variable-length and has to be terminated properly, it would be plausible to assume that removing whatever the proper terminator for it is would wreak extensive havoc to the whole level parsing mechanism (as it tries to parse things that make no sense whatsoever as attributes for this set of 4 tiles).

____________________



Naulahauta
Posted on 06-19-10 07:35 PM (rev. 2 of 06-19-10 08:55 PM) Link | Quote | ID: 132168


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
Posted on 06-23-10 02:07 PM Link | Quote | ID: 132313


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
Posted on 06-30-10 06:43 AM Link | Quote | ID: 132511


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
Posted on 06-30-10 11:23 AM (rev. 2 of 06-30-10 11:25 AM) Link | Quote | ID: 132521


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
Posted on 06-30-10 02:57 PM Link | Quote | ID: 132522


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
Posted on 06-30-10 03:29 PM Link | Quote | ID: 132524


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
Posted on 06-30-10 03:45 PM Link | Quote | ID: 132525


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
Posted on 06-30-10 08:38 PM Link | Quote | ID: 132535


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
Glad to be of assistance. When you quote those offsets, do you mean "in the .ZST file" or...?

Yeah, in the ZST.

____________________
oh

Kawa
Posted on 06-30-10 08:38 PM Link | Quote | ID: 132536


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
Posted on 05-25-11 12:08 AM Link | Quote | ID: 142425

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
Posted on 05-25-11 07:10 PM Link | Quote | ID: 142463


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
Posted on 05-27-11 11:25 PM Link | Quote | ID: 142606


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
Posted on 05-27-11 11:25 PM Link | Quote | ID: 142607


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

Acmlmboard 2.1+4δ (2023-01-15)
© 2005-2023 Acmlm, blackhole89, Xkeeper et al.

Page rendered in 0.022 seconds. (339KB of memory used)
MySQL - queries: 74, rows: 109/111, time: 0.014 seconds.