Register | Login
Views: 19364387
Main | Memberlist | Active users | ACS | Commons | Calendar | Online users
Ranks | FAQ | Color Chart | Photo album | IRC Chat
11-02-05 12:59 PM
1 user currently in Super Mario World hacking: labmaster | 3 guests
Acmlm's Board - I2 Archive - Super Mario World hacking - More Sprite Data [Info] | |
Pages: 1 2Add to favorites | "RSS" Feed | Next newer thread | Next older thread
User Post
cpubasic13
17 years old now. Time to buy some M rated games by myself!
Level: 54

Posts: 647/1346
EXP: 1206934
For next: 26936

Since: 03-15-04
From: Blame my parents, Eddy

Since last post: 2 days
Last activity: 1 day
Posted on 10-19-04 04:41 AM Link | Quote
NOTE: This is a long post. You have been warned

These are my notes on SMW sprite data, which uses mikejk's data. I went in depth to figure out how the sprites are programmed and these are the notes I have. None of this will make since unless you see the beginning of his notes, so...

0x03F46C -> 7E1656
0x03F535 -> 7E1662
0x03F5FE -> 7E166E
0x03F6C7 -> 7E167A
0x03F790 -> 7E1686
0x03F859 -> 7E190F

All of these tables are indexed by sprite number (starting with x00 for the shelless green koopa). Here's a few of my notes about some table values. I've still barely touched the surface of all this data. I have the RAM locations as the headers, cuz that's what I see in my trace logs.


Now for my notes. I don't know if the bits are what they should be so please correct me if I am wrong. Also, I experimented with the cape only, so some of the bits I did not know about probably deal with the fireball, so someone check them out.

x03F46C

In the notes, he says it deals with whether it is stompable or not. Bit 1 (Not sure if it is bit 1... bits read as 00000001. Correct me if I am wrong) will determine whether or not it goes through the ground. Setting bit 2 makes it bounce very weirdly. Bit 3 does somewhat the same as bit 1. Bit 4 makes it slide on the ground. Bit 5 makes it stompable. Bit 6 does nothing? Bit 7 will determine whether or not to go in shells. Bit 8 determines whether or not it will die by "falling" or going "POOF!"


x03F535

Says for sprite interaction. Bits 1 to 5, I don't know what they do. Bit 6 makes the sprite have a "head" like a Rex. Bit 7... well, probably deals with the Koopas, but I am not sure. Bit 8 makes the sprite just fall when you jump on it.

x03F5FE

Palette. If it is an even number (00, 02, 04, 06, 08, etc...) will set the palette to page 1, and the palette (Example: 00 would be sprite palette 0, page 1. 02 be page 1, palette 1. Get it?) Odd numbers make it page 2. Simple. Nothing complex.

x03F6C7

Hmmm... he wrote nothing on this... so... Bit 1 made the gravity for when dead really heavy. Bit 2 made it invincible to the cape, but it still jumped in the air. Bit 3 I don't know. Bit 4 is unknown. Bit 5 same. 6 same. 7 same. Bit 8 makes the sprite untouchable by Mario unless you use the cape (Set Bit 2 and 8 for NPCs for a village!!!).

x03F790

Says walk through floor or sprite creating. Bit 1 does nothing. Bit 2 same. Bit 3 made it so when the sprite falls onto another ground, it walks 3 pixels in the ground (wha?). Bit 4 makes it not interact with shells (maybe other sprites). Bit 5 does nothing. Bit 6 same. Bit 7 makes it an exploding Bomb-omb when you jump on it! Bit 8 makes it fall through the floor.

x03F859

He wrote nothing on this either. Bit 1 does nothing. Bit 2 same. Bit 3 same. 4 same. 5 same. Bit 6 made the death 16x32 pixels big. Bit 7 nothing. Bit 8 same.

x0087CC

Involves coding of the sprite. 2 bytes per sprite. I got it to freeze sometimes with some values, so now to experiment with sprite 12 (I made it a sprite like the shelless koopa for this part).
I set the code to 20 8A and it made a sprite stay still with no animation. Evil hidden guys? 20 8A made it do the same, but not interactable. So... now for the bits set.
Setting second byte's bit 1 makes game crash. Same with both bits 1 set. It will be hard to make this typed up so here is a little table.

Byte 1 bits | Byte 2 bits | Effect |
-----------------------------------------
00000000 | 00000001 | Crashed |
00000001 | 00000001 | Crashed |
00000002 | 00000001 | Crashed |
-----------------------------------------

I gave up since a lot of the stuff crashes the game. I did, however, make an interesting sprite. It will slide to the right at a fast speed. Set the bytes to 33 8A to have this sprite. That is an awesome sprite in my opinion. Wait... set the first byte to 4D and second byte to 8C and you got a jumping sprite. I did notice that the second byte is usually 8X (X is a number). Mess around with this, somebody, and figure it out.

The last thing is the graphics section at offset x009e7f and x009d83. The first edits the graphic tiles that the sprite uses. The second... I don't know what it does.

This is all that you really need to know about sprites. Now someone make an editor as I am tired of using a hex editor.

Hope you understand them.
blackhole89

LOLSEALS
Moderator of ROM hacking
EmuNET IRC network admin
Head GM of TwilightRO
Level: 47

Posts: 376/971
EXP: 739208
For next: 26995

Since: 03-15-04
From: Dresden/Germany

Since last post: 14 hours
Last activity: 12 hours
Posted on 10-19-04 06:55 PM Link | Quote
Thanks a lot. This might come in handy in the future...
Smallhacker

Green Birdo

SMW Hacking Moderator
Level: 68

Posts: 694/2273
EXP: 2647223
For next: 81577

Since: 03-15-04
From: Söderhamn, Sweden

Since last post: 10 hours
Last activity: 9 hours
Posted on 10-19-04 08:07 PM Link | Quote
Very interesting! Good work!


(edited by Smallhacker on 10-19-04 11:07 AM)
gnkkwinrrul

Dry Bones
Level: 39

Posts: 311/647
EXP: 402054
For next: 2717

Since: 03-15-04
From: LYKEOMGIMFROMSOMEPLACE????

Since last post: 81 days
Last activity: 40 days
Posted on 10-19-04 09:23 PM Link | Quote
This helps a lot For I have been trying to figure out how I changed my green shelled koopas, and you may have told me how...thanks
cpubasic13
17 years old now. Time to buy some M rated games by myself!
Level: 54

Posts: 648/1346
EXP: 1206934
For next: 26936

Since: 03-15-04
From: Blame my parents, Eddy

Since last post: 2 days
Last activity: 1 day
Posted on 10-20-04 04:02 AM Link | Quote
Well, from what you said about the sprite, you did something that deals with the sprite interaction. Maybe you messed around with the sprite interaction of it. Probably with bits 1-5 of it... hmmm... I should try it out...
Keikonium
Banned
Level: NAN

Posts: 757/-2459
EXP: NAN
For next: 0

Since: 04-02-04

Since last post: 63 days
Last activity: 9 hours
Posted on 10-20-04 04:18 AM Link | Quote
Someone should create a site, like the ExGFX Workshop, with a list of edited sprites. For example:

Sprite # - 12
Sprite Type - Poison Mushroom
Code in Hex - XX XX XX XX etc.

That way people, like me, could just copy down the code into hex without having to make it up them selves. And if a program was ever made, it could have an export option to export the sprite info to file, then those files could be uploaded.

Anyway, I really hope that some one makes and editor. What ever happened to the people that said they would do it?
cpubasic13
17 years old now. Time to buy some M rated games by myself!
Level: 54

Posts: 652/1346
EXP: 1206934
For next: 26936

Since: 03-15-04
From: Blame my parents, Eddy

Since last post: 2 days
Last activity: 1 day
Posted on 10-20-04 04:46 AM Link | Quote
Bad idea. You know how many people would submit different types of stompable goombas? Lots. Plus not only that, it deals with the graphic locations which would have to be described where exactly they are stored.

Even with the hex code thing, it would be difficult for people to understand what they are doing. Maybe they want to alter the sprite, but they can't because they don't know what does what. That is why I would like people to use some editor that actually describes what you have to do so maybe we could have some interesting sprites.
gnkkwinrrul

Dry Bones
Level: 39

Posts: 327/647
EXP: 402054
For next: 2717

Since: 03-15-04
From: LYKEOMGIMFROMSOMEPLACE????

Since last post: 81 days
Last activity: 40 days
Posted on 10-20-04 04:46 AM Link | Quote
Yeah, but it is a regular green koopa, remember?

I'd like to submit a squashable goomba


(edited by gnkkwinrrul on 10-19-04 07:48 PM)
cpubasic13
17 years old now. Time to buy some M rated games by myself!
Level: 54

Posts: 653/1346
EXP: 1206934
For next: 26936

Since: 03-15-04
From: Blame my parents, Eddy

Since last post: 2 days
Last activity: 1 day
Posted on 10-20-04 04:55 AM Link | Quote
Then again, there were a few things I did not know about in the sprite interaction area. You probably did change those bits and that happened. Notice this...

x03F6C7

Hmmm... he wrote nothing on this... so... Bit 1 made the gravity for when dead really heavy. Bit 2 made it invincible to the cape, but it still jumped in the air. Bit 3 I don't know. Bit 4 is unknown. Bit 5 same. 6 same. 7 same. Bit 8 makes the sprite untouchable by Mario unless you use the cape (Set Bit 2 and 8 for NPCs for a village!!!).


Notice bit 8 and what it does... that means you changed this byte. Mess around with it...
gnkkwinrrul

Dry Bones
Level: 39

Posts: 332/647
EXP: 402054
For next: 2717

Since: 03-15-04
From: LYKEOMGIMFROMSOMEPLACE????

Since last post: 81 days
Last activity: 40 days
Posted on 10-20-04 05:23 AM Link | Quote
No, it must have been byte 2. because it jumps in the air when I hit it with the cape. Also, I can't hit it with fire power or star power.
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 1825/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 10-20-04 10:04 AM Link | Quote
The bits are ordered 76543210.
Originally posted by cpubasic13
0x03F46C -> 7E1656
0x03F535 -> 7E1662
0x03F5FE -> 7E166E
0x03F6C7 -> 7E167A
0x03F790 -> 7E1686
0x03F859 -> 7E190F

All of these tables are indexed by sprite number (starting with x00 for the shelless green koopa). Here's a few of my notes about some table values. I've still barely touched the surface of all this data. I have the RAM locations as the headers, cuz that's what I see in my trace logs.


So in RAM would they still be indexed by sprite #, or the order of the sprites in the level? And if you wrote to them would they go back to normal in the next level?


x03F46C

In the notes, he says it deals with whether it is stompable or not. Bit 1 (Not sure if it is bit 1... bits read as 00000001. Correct me if I am wrong) will determine whether or not it goes through the ground. Setting bit 2 makes it bounce very weirdly. Bit 3 does somewhat the same as bit 1. Bit 4 makes it slide on the ground. Bit 5 makes it stompable. Bit 6 does nothing? Bit 7 will determine whether or not to go in shells. Bit 8 determines whether or not it will die by "falling" or going "POOF!"

So set bit 7 and it'll turn into a shell sprite when you stomp it? And what is falling/going "POOF!"?


x03F535

Says for sprite interaction. Bits 1 to 5, I don't know what they do. Bit 6 makes the sprite have a "head" like a Rex. Bit 7... well, probably deals with the Koopas, but I am not sure. Bit 8 makes the sprite just fall when you jump on it.

I assume what you mean is bit 6 toggles whether the sprite is 8x8 or 8x16?


x03F5FE

Palette. If it is an even number (00, 02, 04, 06, 08, etc...) will set the palette to page 1, and the palette (Example: 00 would be sprite palette 0, page 1. 02 be page 1, palette 1. Get it?) Odd numbers make it page 2. Simple. Nothing complex.

So the lowest bit toggles the palette page? Any idea what the rest do?


x03F6C7

Hmmm... he wrote nothing on this... so... Bit 1 made the gravity for when dead really heavy.

Is there a sprite that does this normally?


Bit 2 made it invincible to the cape, but it still jumped in the air.

So it acts like you killed it, but when it hits the ground it goes back to normal? Or does it just jump up?


x03F790

Says walk through floor or sprite creating. Bit 1 does nothing. Bit 2 same.

What exactly does this do?


Bit 3 made it so when the sprite falls onto another ground, it walks 3 pixels in the ground (wha?).




Bit 4 makes it not interact with shells (maybe other sprites).

Probably for Mushrooms.


Bit 7 makes it an exploding Bomb-omb when you jump on it!

As in when you stomp it it becomes a bob-omb about to blow? What happens if this is set along with the bit that makes it go into a shell?


Bit 8 makes it fall through the floor.

Try setting this, putting it waaaaaay up in the air, and letting it fall. Does it just keep falling or does it stop eventually? Bowser's big ball things do this and don't have any layer 1/2 interaction (fall through the floor).


x03F859

Bit 6 made the death 16x32 pixels big.

Pic?


Bit 8 same.

Same as...?


x0087CC

Involves coding of the sprite. 2 bytes per sprite. I got it to freeze sometimes with some values, so now to experiment with sprite 12 (I made it a sprite like the shelless koopa for this part).
I set the code to 20 8A and it made a sprite stay still with no animation. Evil hidden guys? 20 8A made it do the same, but not interactable. So... now for the bits set.
Setting second byte's bit 1 makes game crash. Same with both bits 1 set. It will be hard to make this typed up so here is a little table.

Byte 1 bits | Byte 2 bits | Effect |
-----------------------------------------
00000000 | 00000001 | Crashed |
00000001 | 00000001 | Crashed |
00000002 | 00000001 | Crashed |
-----------------------------------------

I gave up since a lot of the stuff crashes the game. I did, however, make an interesting sprite. It will slide to the right at a fast speed. Set the bytes to 33 8A to have this sprite. That is an awesome sprite in my opinion. Wait... set the first byte to 4D and second byte to 8C and you got a jumping sprite. I did notice that the second byte is usually 8X (X is a number). Mess around with this, somebody, and figure it out.

Sounds like a series of 16-bit pointers to ASM. Dunno why that bit would make it crash (unless you were just pointing it to invalid code), or did you mean the highest bit? I don't think addresses xx8000-xxFFFF are valid.


The last thing is the graphics section at offset x009e7f and x009d83. The first edits the graphic tiles that the sprite uses. The second... I don't know what it does.

What's the format for the first table? Second might be animation or something.


Now someone make an editor as I am tired of using a hex editor.

A project for tomorrow.
Smallhacker

Green Birdo

SMW Hacking Moderator
Level: 68

Posts: 701/2273
EXP: 2647223
For next: 81577

Since: 03-15-04
From: Söderhamn, Sweden

Since last post: 10 hours
Last activity: 9 hours
Posted on 10-20-04 07:25 PM Link | Quote
Maybe I should rename and improve Sprite Paint by adding more editing options? Hmm...
gnkkwinrrul

Dry Bones
Level: 39

Posts: 343/647
EXP: 402054
For next: 2717

Since: 03-15-04
From: LYKEOMGIMFROMSOMEPLACE????

Since last post: 81 days
Last activity: 40 days
Posted on 10-20-04 07:28 PM Link | Quote
I think that would be a good idea
blackhole89

LOLSEALS
Moderator of ROM hacking
EmuNET IRC network admin
Head GM of TwilightRO
Level: 47

Posts: 389/971
EXP: 739208
For next: 26995

Since: 03-15-04
From: Dresden/Germany

Since last post: 14 hours
Last activity: 12 hours
Posted on 10-20-04 09:26 PM Link | Quote
Originally posted by Smallhacker
Maybe I should rename and improve Sprite Paint by adding more editing options? Hmm...

What exactly is Sprite Paint?
(sounds like an editor I don't have yet to me... *wants*)
Smallhacker

Green Birdo

SMW Hacking Moderator
Level: 68

Posts: 704/2273
EXP: 2647223
For next: 81577

Since: 03-15-04
From: Söderhamn, Sweden

Since last post: 10 hours
Last activity: 9 hours
Posted on 10-20-04 09:50 PM Link | Quote
Sprite Paint is a program I made that edits the palette of sprites. (Doesn't work on palette 8 enemies for some reason)
blackhole89

LOLSEALS
Moderator of ROM hacking
EmuNET IRC network admin
Head GM of TwilightRO
Level: 47

Posts: 392/971
EXP: 739208
For next: 26995

Since: 03-15-04
From: Dresden/Germany

Since last post: 14 hours
Last activity: 12 hours
Posted on 10-20-04 10:35 PM Link | Quote
Check your loops. for(int i=0;i<8;++i) breaks before i=8. (duh)
Anyway, *wants*
gnkkwinrrul

Dry Bones
Level: 39

Posts: 359/647
EXP: 402054
For next: 2717

Since: 03-15-04
From: LYKEOMGIMFROMSOMEPLACE????

Since last post: 81 days
Last activity: 40 days
Posted on 10-20-04 10:38 PM Link | Quote
Ah...no wonder my parabombs are still yellow and purple

go to the noob board. sprite paint is there


(edited by gnkkwinrrul on 10-20-04 01:39 PM)
Smallhacker

Green Birdo

SMW Hacking Moderator
Level: 68

Posts: 706/2273
EXP: 2647223
For next: 81577

Since: 03-15-04
From: Söderhamn, Sweden

Since last post: 10 hours
Last activity: 9 hours
Posted on 10-20-04 11:31 PM Link | Quote
Originally posted by blackhole89
Check your loops. for(int i=0;i<8;++i) breaks before i=8. (duh)
Anyway, *wants*


Well, my program (which isn't made in C, by the way) isn't the problem. Not even hex editing works... There must be some kind of special "Palette 8" table somewhere in the ROM...

By the way... Since my host removed my account without any warning, there's nowhere to download it. I'd be happy if somebody could host it for me, but until then, email me (thesmallhacker@hotmail.com) and I'll send it to you.


(edited by Smallhacker on 10-20-04 02:33 PM)
blackhole89

LOLSEALS
Moderator of ROM hacking
EmuNET IRC network admin
Head GM of TwilightRO
Level: 47

Posts: 404/971
EXP: 739208
For next: 26995

Since: 03-15-04
From: Dresden/Germany

Since last post: 14 hours
Last activity: 12 hours
Posted on 10-21-04 12:27 AM Link | Quote
*is too lazy to start outlook right now* could you send it to me? I could even host it for you (~60% uptime only, but relatively fast).

~Blacky.
Smallhacker

Green Birdo

SMW Hacking Moderator
Level: 68

Posts: 708/2273
EXP: 2647223
For next: 81577

Since: 03-15-04
From: Söderhamn, Sweden

Since last post: 10 hours
Last activity: 9 hours
Posted on 10-21-04 01:33 AM Link | Quote
Sure.
Anyway... I've started working on "Sprite-O-Matic", as I call it. So far, it can (exept for editing palettes) change if a sprite is stompable or not. That's at least something to start with.

I'm planning on making a function called "Trade Code". Since only a few bytes per enemy is modified, this function will print the sprite's bytes. Then, you could give that code to another one, who inputs those bytes into Sprite-O-Matic and gets the same sprite as yourself. It could be really useful if someone makes a "Custom Sprites Archive"
Pages: 1 2Add to favorites | "RSS" Feed | Next newer thread | Next older thread
Acmlm's Board - I2 Archive - Super Mario World hacking - More Sprite Data [Info] | |


ABII


AcmlmBoard vl.ol (11-01-05)
© 2000-2005 Acmlm, Emuz, et al



Page rendered in 0.014 seconds.