Archive
Register | Login | Logout | Edit profile
Views: 1397612
Main | Memberlist | Calendar | Online users
Ranks | FAQ | Search | Photo album
11-13-07 11:42 PM
rustedmagick forums - The ROM Hacking Data Repository - Kirby Super Star (SNES) |
Next newer thread | Next older thread
User
Post
Proto K
Bag of Stinky Weeds
Level: 8

Posts: 12/13
EXP: 2129
For next: 58

Since: 03-20-02
From: New Brunswick, Canada

Since last post: 1695 days
Last activity: 268 days
Posted on 02-28-03 05:00 PMQuote
*Outdated document deleted, see new post below*


(edited by Proto K on 03-24-03 04:18 PM)
Proto K
Bag of Stinky Weeds
Level: 8

Posts: 13/13
EXP: 2129
For next: 58

Since: 03-20-02
From: New Brunswick, Canada

Since last post: 1695 days
Last activity: 268 days
Posted on 03-24-03 01:16 PMQuote
Kirby Super Star Misc. Data, by Proto K:

 
The rom I used to hack is Kirby Superstar (US).smc, with a good checksum. Note that some data in this document may be wrong or misleading. That's because I'm not an expert at hacking this game, and because some of my notes are messy. Also know that "rotmn" stands for the game "Revenge of the Metaknight". Feel free to use this data any way you wish, just give me credit. The headers are listed in the order that they come in the rom.

 
Music / Misc. headers:

An example music header is this one for the first room in Green Greens, starting at $3020EF:

00 00 0F 00 01 01 13 01 00 00 00 00 00 00 00 00 00

Here's what some of the bytes do:

0F - Changing this changes the song that will play in that room.

13 - This seems to be the background scroll rate for the room. Experiment with different values for different effects. Changing this value to 99 makes the background not scroll at all.

00 - Changing this value will make sprites darker?

00 - Changing this will horizontally shift the background left or right.

00 - Changing this will vertically shift the background up or down.

00 - Changing this value to 76 will make Kirby enter the room on a warp star for the main entrance.

Most music headers have this same exact format, only with some different values and 0F changed to something else (obviously). By looking for this type of data in the rom, you will be able to find data for other rooms (which are in a messed up order). By remembering the music that a certain room plays, you will be able to find data for that room by looking for the music header and the matching byte below.

Music values:

00 - none, or default
01 - star piece
02 - dynablade 1 / floria
03 - grape garden
04 - battle?
05 - boss battle 1
06 - boss battle 2 (rpg)
07 - king dedede
08 - dynablade 4
09 - victory!
0A - victory! (short version)
0B - dynablade 3 / cavios
0C - death
0D - dynablade 2
0E - game over
0F - green greens
10 - float islands
11 - bubbly clouds
12 - spring breeze ending
13 - choose your weapon
14 - invincibility
15 - title screen
16 - game select
17 - guide / help
18 - birds chirping?
19 - dynablade map
1A - dynablade ending
1B - wind?
1C - twinkle effect?
1D - milky way wishes map
1E - milky way wishes level end
1F - gourmet race win
20 - drum roll
21 - drum roll end
22 - gourmet race loss
23 - gourmet race level 1 / 3
24 - gourmet race level 2
25 - gourmet race intro
26 - gourmet race title screen
27 - night sounds / wind?
28 - later treasure hunting
29 - begin treasure hunting
2A - save room
2B - great cave offensive title / end
2C - mine cart ride
2D - battle with marx
2E - milky way wishes end
2F - space sfx?
30 - the arena title screen
31 - arena battle
32 - taking over the halberd (rotmn)
33 - halberd 2 (rotmn)
34 - battle with metaknight
35 - halberd escape
36 - rotmn opening
37 - dynablade 5
38 - rotmn map screen
39 - rotmn title screen
3A - heart of nova
3B - game over screen?
3C - milky way wishes opening
3D - megaton punch
3E - samurai kirby
3F - rotmn end
40 - milky way wishes level end
41 - kirby sleeps
42 - FF - nothing, or default

 
Level GFX header:

An example of a level gfx header is from the first room in Green Greens, starting at $302105, slightly down from the music header. Each room in the game has its own music and gfx headers.

01 AA 08 6A 6A EA 00 2B 40 40 C9 09 0D 0E 00 00 00 00 00 55 4E 57 15 03

08 6A 6A EA - This is the room's level object gfx and palette. Level objects are things such as floors, blocks, etc. Note that changing these values may also change the object itself, not just the gfx / palette. There are several different sets of objects in the game. To change this to the objects from another level, find that level's gfx header and just copy the values over.

2B 40 40 C9 09 0D 0E - This is the background gfx and palette. Note that some of the 00 bytes beyond this may also affect it; I'm not 100% certain. To change this to the background from another level, find that level's gfx header and just copy the values over.

4E 57 15 03 - This is the sprite gfx. Different values let other sprites be shown correctly. To be able to properly use enemies from another level, find that level's gfx header and just copy the values over. Note that you do not have to copy all four values over; you can use values from several different levels. Experiment.

Most levels should work in this way, having the music header first and the gfx header slightly below. You'll be able to find it by seeing two repeating values side by side (ie. 6A 6A like the example above). Below the gfx header is the actual level data. I don't know the level data format yet, but sprite data works exactly like I will describe below in most cases. Sprite data is also often near the end of the level data.

Some sprite data is stored in the following format:

AA BB CC DD EE FF

AA - This value can be 00, or a multiple of 10. For some other sprites this can be a different value. This determines the sprite's behavior, or in some cases, what the sprite gives you (for ability selectors, this value determines the ability). Most sprites have different behaviors so it would be long and pointless to list them all here.

BB - The sprite value itself, a partial chart will come later. Note that most sprites will look corrupted unless you load the proper GFX set.

CC - The horizontal position of the sprite on the screen.

DD - The screen number of the sprite in the given area. Changing this to a valid value will move the sprite to that screen (ie. if the value is 02 then it's on screen 2, change it to 01 and it will be on screen 1).

EE - Vertical position of the sprite on the screen.

FF - The vertical screen number. This works the opposite; 01 would be the top screen, 02 the next, and so on. Note that this only works in levels with vertical screens, changing this value in other levels may have undesirable effects.

Here is an example piece of enemy data at hex address $302238:

00 1A 2D 02 74 00

This is from the very first room in Green Greens, in the Spring Breeze game. It is for that flying bird thing (1A).

Sprite values (partial list, some missing, all values were tested with the example above "00 1A 2D 02 74 00"):

00 - nothing
01 - waddle dee
02 - waddle doo
03 - sir kibble
04 - sleeping enemy
05 - crash bomb
06 - mushroom
07 - waddle dee boss?
08 - ???
09 - ninja
0A - flying enemy
0B - jet enemy
0C - fire enemy
0D - gordo
0E - gim (yoyo enemy)
0F - wheel enemy
10 - bomb enemy
11 - flower
12 - knuckle joe
13 - poppy bros. (unarmed)
14 - dog-type enemy
15 - cannon
16 - sweeping enemy?
17 - hopping enemy?
18 - scarfy
19 - nothing?
1A - bird-type enemy
1B - flying chicken?
1C - hopping enemy?
1D - ???
1E - another hopping enemy?
1F - ???
20 - blade knight
21 - weird thing that explodes?
22 - unswallowable cutter enemy (from rotmn)
23 - unswallowable jet/axe enemy (from rotmn)
24 - unswallowable pitchfork enemy (from rotmn)
25 - unswallowable ball & chain enemy (from rotmn)
26 - birdon (wing enemy)
27 - plasma wisp
28 - rocky (stone enemy)
29 - chilly (ice enemy)
2A - simirror (mirror enemy)
2B - mike enemy
2C - t.a.c. (copy enemy)
2D - unknown
2E - movable cannon
2F - floating beam/laser enemy
30 - star-chucking enemy
31 - swinging enemy?
32 - swinging waddle doo?
33 - parasol (by itself)
34 - parasol waddle dee
35 - parasol waddle doo
36 - parasol cannon?
37 - bomb?
38 - another bomb?
39 - unknown (fish?)
3A - same as 39?
3B - yet another bomb?
3C - fighter mini-boss
3D - nothing?
3E - smoke, then nothing?
3F - nothing?
40 - nothing?
41 - same as 3C?
42 - karate man mini-boss
43 - poppy bros. sr. mini-boss
44 - chef kawasaki
45 - frosty
46 - bonkers
47 - bugzzy
48 - 4F - nothing?
50 - whispy woods?
51 - lololo & lalala
52 - kracko mini-boss
53 - kracko (boss)
54 - king dedede
55 - dynablade
56 - fatty whale
57 - unknown
58 - wham bam rock
59 - halberd reactor
5A - metaknight
5B - escaping metaknight
5C - twin woods
5D - rpg battle 1
5E - halberd cannon
5F - heavy lobster + horizontal auto scroll
60 - heart of nova
61 - ???
62 - nothing?
63 - nothing?
64 - star? (not a warp star)
65 - 67 - nothing?
68 - poppy bros. sr., fighter mini-boss, karate man
69 - chef kawasaki, bonkers, bugzzy
6A - floating hotdog then sfx?
6B - healing candy, reappears
6C - healing hotdog, reappears
6D - waddle dee?
6E - waddle doo, always moving left + doesn't attack
6F - nothing?
70 - rotating thing?
71 - ???
72 - door star sprites?
73 - star that finishes level?
74 - nothing?
75 - warp star
76 - getting off warp star
77 - vertical autoscroll
78 - trolley
79 - cannon that kirby can shoot out of (fuse)?
7A - cannon that shoots you up
7B - flag?
7C - thing that pushes you forward?
7D - spring?
7E - nothing?
7F - nothing?
80 - 1-up
81 - invincibility lolipop
82 - maxim tomato
83 - healing hotdog
84 - healing candy
85 - healing juice
86 - random (hotdog, candy, or juice) that reappears
87 - nothing?
88 - falling 1-up
89 - falling invincibility lolipop
8A - falling maxim tomato
8B - falling healing hotdog
8C - falling healing candy
8D - falling healing juice
8E - nothing?
8F - falling maxim tomato that reappears
90 - ability selector (default beam)
91 - ability selector (default cutter)
92 - random ability selector
93 - nothing?
94 - ability selector (default beam) that does not reappear
95 - ability selector (default cutter) that does not reappear
96 - 98 - ???
99 - fuse plunger
9A - freezes game if you touch?
9B - 9D - same as 9A
9E - same as 9A, only with switch sfx?
9F - switch that vanishes when hit
A0 - dynablade end of level cannon
A1 - nothing?
A2 - nothing?
A3 - green greens intro?
A4 - float islands intro?
A5 - bubbly clouds intro?
A6 - mt. dedede intro?
A7 - nothing?
A8 - special warp star (milky way wishes)
A9 - nothing?
AA - upward current?
AB - nothing?
AC - fade-in?
AD - AF - nothing?

I never went beyond this but I assume that there are either no more sprites, or only a few.

 
Sprite palette header:

This is an example from the first room in Green Greens, it starts at $30211E (right after the Music / Misc. header):

99 01 01 01 01 01 99

All of the 01 values edit certain sprite palettes; best of all you must experiment to see what will change what. Note that some palettes look really ugly on some sprites. Most levels in the game have this same pattern, only with different values instead of 01 01 01 01 01.

 
Main Entrance and Door Exits:

This is for the first room in Green Greens, and this will show you how to edit the main entrance and the door on the second screen. This starts at $302125. All levels should have this same format. Door exits are a bit screwed up because the game uses some sort of a "relative pointer" syatem, so you have to be sure to edit all doors in all rooms that you edit to go to valid levels if you edit a door to go to a different room than originally supposed to.

2B 00 2A 00 18 00 02 00 80 01 78 00 9C 00 6C 00 03 00 00

Here are the values:

2B 00 2A 00 - This is the main level entrance data. 2B is Kirby's horizontal (x) position on the screen, 00 is the horizontal screen number he starts on, 2A is Kirby's vertical (y) position on the screen, and 00 is the vertical screen number he starts in (if any).

00 18 00 02 00 80 01 78 00 9C 00 6C 00 03 00 00 - This is the data for the door on the second screen. Note that this is on a level with only one door; levels with multiple doors will have some of this same string repeated several times, only with different values.

02 - The number of the room that the door leads to.

00 - If the room you want to go to is past FF (there are over 255), then set this value to 01 and restart the value before this from 00 and go up from there.

80 01 78 00 - This determines where the door trigger will be. In order for a door to work you must have a door tile object, and the appropriate trigger on it. 80 is the x-position of the door, 01 the horizontal screen number, 78 the y-position of the door, and 00 the vertical screen number.

9C 00 6C 00 - This works exactly like the 80 01 78 00 data above, only this data determines where on the screen you will end up when you switch rooms through the door.

Almost directly below the entrances / exits is the level data itself. However, most of it uses compressions, some of which I will explain below.

 
Compressions:

Level data in this game is compressed. Here are a few cracks for some of the compressions (others are still unknown at this time). Thanks to Vagla for cracking the 0x, 2x, 8x, and E4 compressions.

0x[string of length x+1] = Uncompressed blocks - This applies to an 0x value that you will often see after another type of compression. Basically, this tells the game how many blocks after this value will be uncompressed. Example:

09 18 0C 0C C3 C3 07 C3 C4 C7 07

09 tells how many uncompressed blocks are coming x+1. The other values would be the uncompressed blocks.

2xid = RLE of length x+1 with id id. - Simple enough, the x+1 tells the game how many of that block to make, and id is the value of the block used. Example:

2E 00

2E tells how many blocks are coming x+1. The 00 value is the value to use for the block.

4xid1id2 = Draw the next two blocks back to back, then repeat x times. - Here is an example:

41 C8 C9

41 is the 4x value, this tells the game how many times to repeat the next two blocks after drawing them once, with x.

C8 and C9 - These are the id values. They should both be different.

The game would translate the 41 C8 C9 string into blocks like this:

C8 C9 C8 C9 in a row

6xid = String of length x+1, starts at id value and adds 1 for each value x times. - Pretty much self-explanatory, here's an example:

62 8C would make:

8C 8D 8E in a row

8x??l1 = LZ of length x+1 taking blocks from location l1+1 (?). ?? unknown (affects blocks that are copied, maybe an extra length byte) - Not much to explain here, this basically "Copies and Pastes" data from another part of the game's data, thus saving space.

E4xxid = RLE of length xx+1 with id id?
- This is basically the same as 2xid above, only you can use two-digit values.

 
Other bytes for documentation:

$302171 & $3021C1 - Part of Green Greens 1st room level data
$302974 - Float Islands 1st room music byte (in the music header, default value is 10, used to locate this room's data)
$30828B - Maxim Tomato in the 2nd room in Green Greens (used to locate this room's data)
$30DB33 & $30DB2F - Green Greens intro bytes?
$3020F3 - 1st room in Green Greens, change value to 02 for border, and 00 for a black background?
$308294 - Milky Way Wishes "Ninja Room" music byte (used to locate this room's data)
$302156 to $302159 - Green Greens level-type header?
$377D17 - Part of some TSA data, check first room in Green Greens for changes
$302157 - Does this determine the number of horizontal screens in the first room in Green Greens? When I changed the value to other random values, the level data was messed up and the level seemed to be shorter, so... There's a few bytes before and after this that might have something to do with the room type data I've been trying to find.

 
These bytes are from the gfx header for the 1st room in Green Greens (from the example gfx header above):

$302107 - Ground GFX byte
$302108 & $302109 - Ground palette
$30210A - Ground type modifier
$30210C & $30210F - Background modifier
$30210D & $30210E - Background palette
$302119 to $30211C - Sprite GFX modifiers


(edited by Proto K on 03-24-03 04:38 PM)
Next newer thread | Next older thread
rustedmagick forums - The ROM Hacking Data Repository - Kirby Super Star (SNES) |


rustedmagick.com

AcmlmBoard v1.8a BMF Hax0r Special™
© 2000-2002 Acmlm
Board additions/modifications by:
BMF54123
Tuvai




Page rendered in 0.013 seconds.