Points of Required Attention™
Please chime in on a proposed restructuring of the ROM hacking sections.
Views: 88,560,826
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search 05-08-24 01:32 PM
Guest: Register | Login

Main - Posts by Naulahauta

Pages: 1 2 3

Naulahauta
Posted on 10-27-09 12:25 PM, in SMB3 Workshop source code released (rev. 4 of 12-27-22 09:02 PM) Link | Quote | ID: 118038


Red Paragoomba
Level: 19

Posts: 1/56
EXP: 30528
Next: 5249

Since: 10-27-09

Last post: 3716 days
Last view: 497 days
Wow.

But seriously, thanks. I personally (probably many others too!) totally needed this, not to mention this is a great submission to the ROM hacker community.
Thanks and sorry. Didn't intend to wake you up.

____________________
oh

Naulahauta
Posted on 10-27-09 12:41 PM, in Metroid hack theme (MP3) Link | Quote | ID: 118039


Red Paragoomba
Level: 19

Posts: 2/56
EXP: 30528
Next: 5249

Since: 10-27-09

Last post: 3716 days
Last view: 497 days
Sounds pretty good. I'm pretty sure that Kejargon(?) guy had some music hacking notes up somewhere.

____________________
oh

Naulahauta
Posted on 11-14-09 06:24 PM, in Chip'n'Dale level editor: Y/N? Link | Quote | ID: 119405


Red Paragoomba
Level: 19

Posts: 3/56
EXP: 30528
Next: 5249

Since: 10-27-09

Last post: 3716 days
Last view: 497 days
Man, this sounds great! Go for it!

____________________
oh

Naulahauta
Posted on 01-01-10 09:52 PM, in Any reasons you chose this particular username? Link | Quote | ID: 124771


Red Paragoomba
Level: 19

Posts: 4/56
EXP: 30528
Next: 5249

Since: 10-27-09

Last post: 3716 days
Last view: 497 days
My surname.

____________________
oh

Naulahauta
Posted on 02-18-10 07:35 AM, in Best software for resizing up pictures? [(56/k)] Link | Quote | ID: 127243


Red Paragoomba
Level: 19

Posts: 5/56
EXP: 30528
Next: 5249

Since: 10-27-09

Last post: 3716 days
Last view: 497 days
There's really no way around it.
However, whenever you want a higher-resolution version of an image, you should try TinEye. It's a different kind of image search: You give it an image which it analyzes and then it scours through the intertubes to find other iterations of the image.
You can also use the service to find cleaner versions of fussy JPEGs or something.

Sadly, your image showed 0 results.

____________________
oh

Naulahauta
Posted on 04-13-10 01:35 PM, in Converting .GBS files? Link | Quote | ID: 129823


Red Paragoomba
Level: 19

Posts: 6/56
EXP: 30528
Next: 5249

Since: 10-27-09

Last post: 3716 days
Last view: 497 days
If I may suggest, export four WAVs of each channel's bleeps and convert them with a WAV to MID tool. They exist and suck badly, but even the most basic ones can convert simple tunes to midi notes.

Or just figure out the format. What game are you screwing around with?

____________________
oh

Naulahauta
Posted on 05-13-10 08:57 PM, in Where DahrkDaiz has been and the state of Reuben Link | Quote | ID: 131152


Red Paragoomba
Level: 19

Posts: 7/56
EXP: 30528
Next: 5249

Since: 10-27-09

Last post: 3716 days
Last view: 497 days
Superb! Glad to see you're alive and well :>

____________________
oh

Naulahauta
Posted on 05-20-10 01:19 PM, in Chalvo 55 (rev. 2 of 09-01-11 01:48 AM) Link | Quote | ID: 131357


Red Paragoomba
Level: 19

Posts: 8/56
EXP: 30528
Next: 5249

Since: 10-27-09

Last post: 3716 days
Last view: 497 days
READ LAST POST, IT'S FAR BELOW



Chalvo 55 is a fun Game Boy game released only in Japan. I've gathered some notes from it as an effort to spark motivation for a possible editor. Let's begin!

When we jump to 0x18000, we see the bytes of the very first room of the game. Observe:

73 57 7D 57 57 7D 7D 57 57 57 7D 57 7D 57 57 57
55 01 01 01 01 01 01 01 01 02 02 00 00 00 00 00
55 01 01 01 00 00 01 01 01 02 02 00 00 00 00 00
58 01 01 00 00 00 00 00 02 02 00 00 00 50 51 51
00 00 01 01 00 00 00 00 00 00 00 00 00 77 57 71
00 00 01 01 01 00 00 00 00 00 00 00 00 5D 00 7E
51 51 79 5A 5B 00 00 00 00 59 81 5B 07 5D 00 53
73 57 76 00 00 00 00 00 00 00 00 00 00 5D 00 53
7F 00 5D 00 00 00 00 0E 00 00 00 00 00 82 00 53
55 00 83 00 00 59 5A 80 5A 5A 5B 00 00 5D 00 53
55 00 82 00 00 00 00 00 00 00 00 00 00 5D 00 7E
55 00 5D 00 00 00 00 00 00 00 00 00 00 5D 00 53
55 00 75 52 00 00 00 59 5B 00 00 00 50 74 00 7E
7F 00 53 55 00 00 00 00 00 00 00 00 53 55 00 53
55 21 53 6E 52 00 00 00 00 00 00 50 6C 55 22 53
6E 51 6C 54 6E 51 7C 51 51 7C 51 6C 54 6E 51 6C


The bytes correspond to the tiles. Even the sprites (the blocks and the enemy) are defined in the byte array!
You can edit these bytes how you wish and the changes will take place. The physical maps are also pre-defined, so blocks will always be blocks and diamonds will always be diamonds.

But how do we know what blocks do the bytes represent? Let's head over to 0x18C00. I won't paste all of the definitions, but just a few to give you an idea what I mean:

02 02 FF FF FF FF
02 02 66 67 86 87
02 02 A6 A7 C6 C7
02 02 A8 A9 C8 C9
02 02 B0 B1 D0 D1
FF FF A8 A9 96 97
FF FF 70 71 98 99
FF FF A8 A9 96 97
02 02 70 71 90 91
02 02 FF FF FF FF
02 02 7E 7F 9E 9F
02 02 C0 C1 C8 C9
02 02 7C 7D 9C 9D
02 02 0D 0E CE CF
FF FF 1B 1C 3B 3C
FF FF 40 41 60 61
FF FF 80 81 A0 A1
02 02 AA AB CA CB


Compare it to the graphics page found in 0x48000. You can view it in Tile Molester or whatever you like.

So let's take the first 6-byte combo, 02 02 FF FF FF FF. The first two bytes, '02 02' mean "this is a tile, not a sprite". The four bytes after that define the 8x8 tiles used to build the block.
This block is constructed from FF, FF, FF and FF. It is the single 'air' block. And since this was the first defined block, it is '00' on the level block data array. Check back on the map on the beginning of the post; where there's air, there's 00s.
The next one, 02 02 66 67 86 87, is a crumbled block. If you look at the tilemap and take tile 66, 67, 86 and 87, you will make that very block. This is 01. Once again, if you look at the data array up there, there are 01s here and there, and each is a crumble block.

But now, let's jump to the ones that begin with FF FF. That means "This is a sprite".
The first FF FF-prefixed combo is FF FF A8 A9 96 97. Take tiles A8, A9, 96 and 97, and what do you know, you build a pink block similar to the one seen in the left and right edges of the first room. The behavior is defined elsewhere. And this is block number 05, so using 05 anywhere in your level will bring that pink block sprite right there. Simple as that!

Another fun thing is that if you change that FF FF prefix to 02 02, the enemies turn into stone:


Right now I've gotta flee but I'll be back later today with more data. Stay tuned!

____________________
oh

Naulahauta
Posted on 05-20-10 07:27 PM, in Chalvo 55 Link | Quote | ID: 131364


Red Paragoomba
Level: 19

Posts: 9/56
EXP: 30528
Next: 5249

Since: 10-27-09

Last post: 3716 days
Last view: 497 days
blackhole89: You're most likely right. It must be a bitwise thing, but so far I've only encountered FF FF and 02 02. I'll fool around with more bits later today.
Kawa: Haha, yeah. Surprisingly simple alright.

Once again I came to only step by. I gotta go again but I'll be back sooner or later.

____________________
oh

Naulahauta
Posted on 05-28-10 08:05 AM, in Which games would you like to see a editor for? (rev. 2 of 05-28-10 08:12 AM) Link | Quote | ID: 131536


Red Paragoomba
Level: 19

Posts: 10/56
EXP: 30528
Next: 5249

Since: 10-27-09

Last post: 3716 days
Last view: 497 days
@marcum81: An incredible (Like, Lunar-Magic incredible) DKC1(/2/3) Editor is under development by one of the most phenomenal reverse engineers of our time. You can find more info by Googling Simion32.
@Matrixz: There are two editors for Super Mario Land 2. I think there's one for Megaman X too but don't count on my word.
Also, An editor for Wily Wars was under development long ago. No idea what happened to it. I remember the guy was Japanese but was good in English.

As for myself, obviously Chalvo 55, mostly for the simplicity of the format and the fact that Puzzle games appeal to the hacking community often because of their nature.
Then, of course, Super Mario Land 2. I, in fact begun hacking Super Mario Land 2 a long long time ago, back when I was known as 'Raccoon Sam' and hoped to have a complete disassembly by the end of 2009. But I didn't. I also played a significant part on the development of MooJelly, a SML2 editor (which isn't really all that good...). Maybe one day I'll live in that utopia where a good SML2 editor is born. (Shameless plug.) Super Mario Land 2's level/graphics format is also essentially the same as Super Mario Land 3: Wario Land.
I also agree with Ailure on the SMW2 statement. Maybe one day...

EDIT: SUTTE HAKKUN ALSO OH FFFFFFFFFFFUUUUUU

____________________
oh

Naulahauta
Posted on 06-09-10 09:56 PM, in Bomberman Pocket NEW STUFF updated 28.10.2010 Link | Quote | ID: 131905


Red Paragoomba
Level: 19

Posts: 11/56
EXP: 30528
Next: 5249

Since: 10-27-09

Last post: 3716 days
Last view: 497 days
Pocket Bomberman is a Bomberman game for the Game Boy. It differs from most other Bomberman games because in the game, Bomberman is able to jump. This gives a whole new dimension to mass destruction across the land thus making the game enjoyable.

But okay, let's get this started. Grab the ROM with the [U] and [S] labels and head over to 0x2400A. There you'll see a bunch of pointers:
3C 40 65 41 9E 43 FF 45 58 48 61 49 C2 4B 13 4E 64 50 BD 52 C6 53 0F 56 58 58 B9 5A 12 5D 1B 5E 7C 60 CD 62 26 65 7F 67 88 68 F1 6A 5A 6D BB 6F 14 72.
Take the first pointer, 3C 40 -> swap the bytes -> 0x2403C. This is where the actual level data for Area one begins.

This is area one:


This is the bunch of data at 0x2403C ($100 bytes (also, bolded parts for extra elaboration):

08 09 09 09 09 09 09 09 09 09 09 09 09 09 09 0A
0B
00 00 11 00 00 00 00 00 21 00 00 00 16 00 0B
0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0B
0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0B
0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0B
0B 00 7B 7E 7C 00 7B 7C 1B 71 73 00 00 7A 00 0B
0B 00 00 00 00 00 00 00 7B 78 76 00 00 7F 00 0B
0B 00 00 00 00 00 00 00 00 0E 7F 00 00 7F 12 0B
0B 70 00 00 00 7B 7E 7E 7E 7E 79 00 7B 78 7C 0B
0B 00 00 62 00 00 00 00 00 00 00 00 00 00 00 0B
0B 7B 7C 61 00 00 00 00 00 00 00 00 00 00 00 0B
0B 00 00 61 70 00 00 00 00 00 00 7B 7C 00 00 0B
0B 00 00 61 00 00 00 00 00 00 00 00 00 00 00 0B
0B 12 00 60 00 00 00 00 00 10 00 00 00 00 00 0B
0B 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0B
0B 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0B


Edit a byte and it'll take changes, not too difficult.

So that's the deal with the level, now onto the sprites:
When the $100-byte level data array ends, (we're at 0x2413C), you'll find a bunch of bytes:
E1 06 12 08 00 00 00 00 C0 02 12 00 00 00 00 00 C0 0E 08 00 00 00 00 00 C0 10 0E 00 00 00 00 00 C0 18 1A 00 00 00 00 00.
Chop them up to 8-byte combos and observe:
E1 06 12 08 00 00 00 00
C0 02 12 00 00 00 00 00
C0 0E 08 00 00 00 00 00
C0 10 0E 00 00 00 00 00
C0 18 1A 00 00 00 00 00

The format is ss xx yy ee ii dd rr kk
ss = Sprite to use. The level has four enemy characters. You can change the C0's to something else and watch how the sprites change. The E1 is the gate opener sprite. It is invisible but triggers the gate-open event.
xx = X offset. We move in increments of 8 pixels. 00 is absolute left.
yy = Y offset. We move in increments of 8 pixels. 00 is absolute top.
ee = Event.. thing.. I haven't really gotten the hang of this one, but as the 08 in the first 8-byte combo suggests, it has something to do with that. Fool around and see what happens.
The ii, dd, rr and kk stand for I Don't Really Know. They seem to be 00 always.

After that, there's an FF. After the FF, look at your offset. We're at 0x24165. If you go back to the beginning of this post and read the pointer array again, you'll notice that after 3C 40, there's 65 41. Swap the bytes and you get 0x24165. Which is were we're at. Which is where area 2's level data begins. You should also observe that there are 25 pointers and 25 levels in the game. This is no coincidence.

So basically that's it. What I've got to still do(cument), though:
-Tiles. What are blocks 00 through FF constructed from, where their graphics are retrieved and what their physical maps represent.
-Music Probably one byte. There's gotta be some level header array there somewhere, which'll probably help with the next one:
-Bomberman's starting coordinates. When creating new levels, it isn't very fun when Bomberman begins his journey from inside a brick.
-Also Time limits for each level.
-Those mystery bytes from the 8-byte sprite definitions.

I'll get on those later today. But for now, enjoy this video I made to demonstrate.
Also, a friend of mine said he'd be willing to code an editor, so expect big stuff

____________________
oh

Naulahauta
Posted on 06-10-10 02:04 PM, in Season of Glass Link | Quote | ID: 131918


Red Paragoomba
Level: 19

Posts: 12/56
EXP: 30528
Next: 5249

Since: 10-27-09

Last post: 3716 days
Last view: 497 days
Looks psychedelic as hell, and that's a good thing imo.

____________________
oh

Naulahauta
Posted on 06-10-10 08:10 PM, in Which games would you like to see a editor for? Link | Quote | ID: 131921


Red Paragoomba
Level: 19

Posts: 13/56
EXP: 30528
Next: 5249

Since: 10-27-09

Last post: 3716 days
Last view: 497 days
Posted by Ailure
Posted by Torin
I would absolutely love to see an editor for The Illusion of Gaia/Time or Terranigma on the SNES.
I can understand people loving RPG games, but I always thought they were one of the more awkward games to hack... since a huge part of an RPG is the story rather than the game engine.


Too true. But on the other hand, when people put effort into them, RPG hacks can be very appealing. Let's see what kind of fruits Lazy Shell bears after some time.

____________________
oh

Naulahauta
Posted on 06-11-10 03:13 PM, in Bomberman Pocket NEW STUFF updated 28.10.2010 Link | Quote | ID: 131934


Red Paragoomba
Level: 19

Posts: 14/56
EXP: 30528
Next: 5249

Since: 10-27-09

Last post: 3716 days
Last view: 497 days
0x2DEFA is where the intro text begins. "Long, long ago..." is the first string and after that there are some commands I have yet to decipher. FE means line break but the rest is cutscene related. The ending text is exactly after the intro text. The graphics to use are retrieved from 0x73C00. 00 = space, 01 = A, 02 = B, and so on.

The Jump game level format is identical to the ordinary level format. Easy mode jump game begins from 0x321A6. It's $400 bytes big and after that, there's an FF. Then the sprite definitions, then an FF again. Then begins the Normal mode jump game. That too $400 bytes and then FF, sprites, FF, Hard mode.

Also, update on the sprite format:
ss xx yy hy ?? ?? ??
The question marks are still a mystery, but the first bytes are Sprite, X coordinate, Y coordinate, High byte for Y coordinate. It is required for the jump games because the levels are so high.

More info coming soon regarding the tilemaps.

____________________
oh

Naulahauta
Posted on 06-12-10 08:40 PM, in Metroid Dread? Oh yes. Link | Quote | ID: 131960


Red Paragoomba
Level: 19

Posts: 15/56
EXP: 30528
Next: 5249

Since: 10-27-09

Last post: 3716 days
Last view: 497 days
I dunno, it's appealing to the eye but the 'Dread' sinks behind the 'Metroid'. The texts seem to be a bit too flat as well.
Spoiler:
but that's just like my opinion, man


____________________
oh

Naulahauta
Posted on 06-18-10 05:55 PM, in Umihara Kawase (rev. 2 of 06-18-10 05:55 PM) Link | Quote | ID: 132106


Red Paragoomba
Level: 19

Posts: 16/56
EXP: 30528
Next: 5249

Since: 10-27-09

Last post: 3716 days
Last view: 497 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

Naulahauta
Posted on 06-19-10 04:53 PM, in Games we reminisce over and/or can't remember the names of Link | Quote | ID: 132159


Red Paragoomba
Level: 19

Posts: 17/56
EXP: 30528
Next: 5249

Since: 10-27-09

Last post: 3716 days
Last view: 497 days
There was an old game for Mac OS (8?) that's name was 'Grunt'. It was about some pig who searched for emerald pieces.
It can't be found anywhere on the internet :<

____________________
oh

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


Red Paragoomba
Level: 19

Posts: 18/56
EXP: 30528
Next: 5249

Since: 10-27-09

Last post: 3716 days
Last view: 497 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, in Umihara Kawase Link | Quote | ID: 132313


Red Paragoomba
Level: 19

Posts: 19/56
EXP: 30528
Next: 5249

Since: 10-27-09

Last post: 3716 days
Last view: 497 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

Naulahauta
Posted on 06-24-10 09:54 PM, in Smiley pack update Link | Quote | ID: 132375


Red Paragoomba
Level: 19

Posts: 20/56
EXP: 30528
Next: 5249

Since: 10-27-09

Last post: 3716 days
Last view: 497 days
I like the vector ones. I'd be even ready to filter to a svg embed, but then again I don't know if that'd be too good.

____________________
oh
Pages: 1 2 3


Main - Posts by Naulahauta

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

Page rendered in 3.767 seconds. (337KB of memory used)
MySQL - queries: 140, rows: 172/172, time: 3.721 seconds.