|
GuyPerfect Catgirl Level: 68 Posts: 798/1096 EXP: 2665653 For next: 63147 Since: 07-23-07 Since last post: 1.7 years Last activity: 219 days |
|
| I finally got ahold of a Virtual Boy, for those who can remember I that was wanting one. Today, I took a quick glance at Virtual Boy Wario Land's level data. And here's what I found!
My target was the main area of the first level, after the room with the swinging spiky balls. I found two bits of pertinent data for that room. The room is composed of 32x32 pixel "blocks", and there are 176 columns and 7 rows of blocks for that room. At least on the front layer. The back layer of course is smaller, and may count for more "blocks", but I haven't done any hacking on that yet. At 0x0725EC in the ROM file is the start of the main foreground terrain layer. Data is encoded as a simple RLE format specifying block IDs for each cell in the "block" canvas, starting at the top-left. The stream is broken up into data chunks that start with a control byte. This byte is an 8-bit, signed integer in two's complement format. For raw and repeated data alike, the value is largely used as a block counter. • If the count is negative, the data chunk represents a repeating value. The negative of the count value (its absolute value, etc.) is the number of times to repeat the next block, and the following byte is the block ID. This means a maximum of 128 repetitions in a single data chunk. • Otherwise, the count value is used directly, and that many additional bytes are read from the stream and used as block IDs. The maximum number of un-compressed block IDs in a single data chunk is 127. I couldn't get this image hosted anywhere where it wasn't unceremoniously shrunken, so I've included it directly into this post. For full-size, you'll have to right-click it and "view image": Those faint spikes are always present in the level. On a normal game, they're empty space, but in the extra game, they're full-on spikes. I dimmed them with an image editor to indicate that they're special pieces. Before this data, at 0x071E5C, is the graphical foreground layer. However, unlike the terrain, it's not compressed. It's just a big grid of 176 x 7 block IDs (one byte each) that appear in front of the action, but scroll with the terrain. Compared to Game Boy Wario Land's level data, this one is delightfully straightforward. I expect the background layers are similarly encoded and function in the same manner... From what I've done so far, though, all items are built into the blocks themselves. So instead of defining a level with a block, and then an item at the same location as the block, you just need to specify "a block with an item in it" at whatever location. One of the joys of doing stuff like this is that you find secrets you never knew about, and Virtual Boy Wario Land in general is chock-full of secret areas. In particular, just right of the center of the room is the platform where the key is located. You can see in the image a non-descript block just floating there. I made that graphic to represent one of those kinds of blocks that is invisible until you jump up under it, but didn't go through to find out what was actually inside it. Well, like the image shows, there happens to be one there on that platform, and in-game testing reveals the block has Garlic in it. So many times I've played through the game, and I always just grabbed the key and jumped back to the background without ever knowing that Garlic was there. Well, bed time for me now. But I'm itching to see what kinds of leftovers might be tucked away in this game. |







I tried poking around in the game once, but found absolutely nothing. 
