Okay, I discovered where the 'Story' data was, and, well... that made me go wild with ideas...
...not quite. XD This is the only decent idea I could get. Meh.
Quote
CODE_1290FF: A9 15 LDA #$15 ; \ Bank num = $15.
CODE_129101: 85 05 STA $05 ; |
CODE_129103: BF 3F E8 15 LDA POINTER_15E83F,x ; | Get address of tables...
CODE_129107: 85 04 STA $04 ; | ...which contain the 'Story' data...
CODE_129109: BF 50 E8 15 LDA POINTER_15E850,x ; | into [$03]
CODE_12910D: 85 03 STA $03 ; /
The actual data ranges from $15E861-$15EAE0.
I also found out (
finally!) how the sprite tables really work. Their format is a piece of cake - I wonder why I didn't see this all the time.
Let's say we have this table:
Quote
TABLE_11F6D1: .db $03,$01,$EC,$07,$01 ; Level 1-1, main room.
.db $1C,$02,$5C,$03,$E5,$07,$01,$6C
.db $02,$8C,$01,$CC,$05,$03,$79,$01
.db $D4,$09,$01,$04,$02,$34,$3B,$87
.db $3B,$C7,$07,$03,$A9,$03,$BC,$03
.db $C6,$05,$01,$9C,$03,$E5,$05,$01
.db $2C,$02,$4C,$07,$01,$1C,$03,$45
.db $02,$4C,$05,$01,$95,$14,$D1,$01
As you'd guess, we start with the first byte.
The first byte here tells you how many sprites are going to be loaded for that screen (since this is the first value in the table, that'd be screen 0 of the room in question). 1 sprite = 2 bytes, and this byte includes itself.
So in this case:
This is the set for screen 0. The first byte ($03) specifies how many bytes there will be loaded for that screen - 3. For the amount of sprites, that means: (3 - 1) : 2 = 1 sprite. $01 specifies the sprite type (Red Shyguy), $EC the position it will appear in (X = E, Y = C).
Then, it goes to the next set.
Quote$07,$01,$1C,$02,$5C,$03,$E5
( 7 - 1 ) : 2 = 3. So, 3 sprite. $01,$1C = Red Shyguy on X = 1 and Y = C, $02,$5C = Tweeter on X = 5 and Y = C, $03,$E5 = Blue Shyguy on X = E and Y = 5.
And then it goes to screen 2. And it just goes on and on - there isn't a byte to terminate it. Dependant on the size of the level, you will need a set of sprites for each screen. To load no sprites at all for one screen, use:
The only group this will form, is a group with itself. It means no sprites will be included.
Having that said, I'm thinking about starting a SMB2 hack up. It's going to be slightly harder than SMB2 itself actually is, and the levels should be longer.
I'm also thinking of adding a few (small) ASM hacks in.
One thing I'm thinking of is to give each character its own special ability to survive - Luigi and Peach already have that, Toad might, but Mario doesn't have one yet.
I'm still thinking of one.
Another one I'm thinking of, is to give a hint each level, like 'High ledges', 'Freight train', etc.
Heck, that might become level names.
This is because I'm going to make levels in which you need a specific character to pass the level.
Enough rattling, here are some screens:
Getting out of here isn't hard per se - take your time. I wouldn't use Toad, by the way.
You have to ride the Beezo to make it. It's a bit harder than riding a Pidgit, since Beezo actually tries to get rid of you.
This is the uninspired end, for now. I'm still building this level up, anyway.
Expect a full level out later this week.
--------> Don't follow "Find Roy's Dignity",
my hack. Because it's pretty outdated.
<--------