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 - Changing the BG of the bowser battle?
  
User name:
Password:
Reply:
 

UserPost
Atma X
Posts: 529/801
It's because Lunar Magic doesn't show any of the Gfx Pages selected in Level 1C7 (Bowser's Level), because it is stored in the Level Header (instead of using the normal method that all other Levels use)

All Level 1C7 is used for is so that Mario can have a Level to go to, and also so that Level Header # 10 can be loaded into a Level and actually be used (since it gets used through a Level)
But anyway, Bowser's Level uses Gfx #'s 21 and 24.
Keikonium
Posts: 709/-2459
Didn't think to do that (use the mega mole). However the moon is 9 tiles so I will have to use the gas bubble instead.

And again, I have two new problems (I suspect these will be problems when I get this to work):

1. Even when I make a static sprite, how will I beable to suspend it in the air and not make it fall?

2. I relized for the bowser battle that, when you view the 8x8 editor sprites, no actual bowser level sprites are selected. So even if I can get everything to work, how will I beable to use it in the bowser battle?
cpubasic13
Posts: 598/1346
Originally posted by Keikonium
Now I have made a static sprite, but just like the spring board, it can be picked up, then when dropped it becomes static. Even if it was just static originally, I have no clue how to make a sprite bigger than just one 16x16 tile. Anyone know?


First off, I think that would have something to do with the sprite interaction. Might want to play around with that and make it so that Mario cannot interfere.

Second, it is possible, but I am not really sure how that would work. Maybe use the same graphics code as the Mega Mole to make this work, but I am still unsure how the graphics are worked out...

I do know, however, when changing the sprite's palette, if it is 0, 2, 4, 6, 8, A, C, and E, then it will be on the first page of the sprite graphics. Otherwise, it will be on the second page. Here is a little chart thingy...

00alette 8, page 1.
01alette 8, page 2.
02alette 9, page 1.
03alette 9, page 2.
etc. etc. etc.

Correct me if I am wrong... I noticed that some sprites use 17 for the palette... unless I was thinking of something else...
Keikonium
Posts: 708/-2459
Okay, I have finally created a new sprite. Not the one I wanted, but at least I created something. What I made was a normal spring board that can be jumped on. Then if mario picks it up and drops it, its can't be used. However, yoshi can still pick it up with his tongue and when on yoshi, it can still be used. Also, if you take it and throw it into lava, off a cliff, what ever makes it leave the level, it will NEVER apper again. You have to go into LM and set it up. Useless but I finally made something.

What I was trying to do was 1 of two things:

I was tring to take the flying red coin and change just the coin to a spring board. And second, I was trying to make a sprite that could be used in a normal level (an exact copy of the bowser ground) so that I could use the bowling balls.

Now I have made a static sprite, but just like the spring board, it can be picked up, then when dropped it becomes static. Even if it was just static originally, I have no clue how to make a sprite bigger than just one 16x16 tile. Anyone know?
Atma X
Posts: 528/801
I haven't learned much about Binary (and how Bin and Hex relate to each other in that way), so that's why I didn't know that yet . I've worked strictly with Hex before.

But thanks for explaining it anyway.

Edit: Yep, the order of the digits are reversed.
Juggling Joker
Posts: 294/1033
You've done a lot of hex editting and you don't even know what a bit is? Each byte of hex is made up of 8 bits, all of which can be either on or off. For instance, say a hex byte is 55. That would be 01010101 in binary. The first digit of the binary is bit 1, the second is bit 2, et cetera. The order of the digits may be in reverse, but someone will surely correct me if that's the case.

I'm not sure if that helps, but eh.
Atma X
Posts: 527/801
I'm not sure if I get this (I've done a lot of Hex Editing, so that's not why I'm misunderstanding it), for example, in the first set of instructions, it says to change bit 5 and 6. It sounds likes it wants me to change the 5th and 6th number of the Address itself, which is impossible. I know it's something simple, but his notes are confusing to me right now.
Keikonium
Posts: 707/-2459
He is the one that told us a bit of data on how to edit sprites. Here is the data. I couldn't find his post...

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.

7E1656
setting both bits 5 and 6 makes an enemy stompable
setting bit 8 changes the cape/star kill style

7E166E
setting bit 1 changes the gfx page
bits 2-4 tell which palette (8-F) the sprite uses
setting bit 5 disables fireball killing of the enemy
setting bit 6 disables cape killing of the enemy

7E1686
if bit 8 is set the sprite passes through floor
bit 7 is set if the enemy is sprite creating (which is created is in a different table)

7E1662
I've noticed that changing data here changes the area for sprite interaction. For example, you've probably seen in hacks where rexes have been changed into goombas, you can still get killed by an invisible rex head. Fixing this is as simple as changing rex's table value 0x03F5E0 (0x03F535 + AB) to x00.

Keep in mind that not all sprites use the data loaded from these tables. Some get new data from their own tables found in sprite specific routines.

For my demo, I just changed entry 12 to match entry 00 for all six tables. I then needed to make sprite 12 use the code for shelless koopas, so doing some tracing I found another very important table at ROM address 0x0087CC. This table holds the memory locations (2 bytes for each sprite) to go to for the handling of each sprite. Sprite 12 intially jumped to a RTS command (made sense since it's listed as a null sprite), changing it to use the shelless koopa's code finally gave me some results I could see. I had a sprite that acted like a koopa, but the graphics it used was off. 7E1602 holds the animation frame, but I needed to change the tiles that the frames used... more tracing, more tables.

0x009E7F is the begining of an offset table that is indexed by sprite number. 0x009D83 is the start of a gfx tile table that is indexed by a value in the offset table. For example the entry for a green shelless in the offset table is x09, so the gfx tiles for the shelless start at 0x9D8C (0x009D83 + x09). Again not all of the enemies are stored here. I started to document which were but lost interest. I'll include what I did find though:

(0)
82 A0 - koopa Walk 1
82 A2 - koopa walk 2
84 A4 - koopa turning
8C - koopa shell
8A - koopa shell ani 1
8E - koopa shell ani 2

(9)
C8 - shelless walk 1
CA - shelless walk 2
CA - shelless turn
CE - unused?
CC - shelless fliping shell
86 - struggling shelless 1
4E - struggling shelless 2

(10)
E0 - blue shelless walk 1
E2 - blue shelless walk 2
E2 - blue shelless turning
CE - unused?
E4 - blue shelless kicking
E0 - blue shelless struggling 1
E0 - blue shelless struggling 2

(17) para-goomba
a3 - straight goomba 8x8 tile 1
a3 - straight goomba 8x8 tile 2 (mirrored)
b3 - straight goomba 8x8 tile 3
b3 - straight goomba 8x8 tile 4 (mirrored)
e9 - tilted left goomba 8x8 tile 1 (mirrored)
e8 - tilted left goomba 8x8 tile 2 (mirrored)
f9 - tilted left goomba 8x8 tile 3 (mirrored)
f8 - tilted left goomba 8x8 tile 4 (mirrored)
e8 - tilted right goomba 8x8 tile 1
e9 - tilted right goomba 8x8 tile 2
f8 - tilted right goomba 8x8 tile 3
f9 - tilted right goomba 8x8 tile 4
e2 - straight parachute
e6 - tilted parachute

(25)
AA - goomba walk/struggling 1
A8 - goomba walk/struggling 2
A8 - goomba turning
AA - unused??

(29) para-bomb
A2 - straight
A2 - straight
B2 - straight
B2 - straight
C3 - tilted left
C2 - tilted left
D3 - tilted left
D2 - tilted left
C2 - tilted right
C3 - tilted right
D2 - tilted right
D3 - tilted right
e2 - straight parachute
e6 - tilted parachute

(37)
CA - bob-omb walking 1
CC - bob-omb walking 2
CA - bob-omb turning

(3A)
AC piranha plant closed mouth
CE classic/upside down stem frame 1
AE piranha plant open mouth
CE classic/upside down stem frame 2
83 displays behind left of jumping piranha frame 1 ???
83 displays behind right of jumping piranha frame 1 ???
C4 jumping stem 8x8 tile 1 frame 1
C4 jumping stem 8x8 tile 2 frame 1
83 displays behind left of jumping piranha frame 2 ???
83 displays behind right of jumping piranha frame 2 ???
C5 jumping stem 8x8 tile 1 frame 2
C5 jumping stem 8x8 tile 2 frame 2

(46)
8A - football

(47)
A6 - bullet bill

A4 - ???
A6 - ???
A8 - ???

(4B)
80 - spiny walking 1
82 - spiny walking 2
80 - spiny turning

(4E)
84 - spiny egg 8x8 tile 1 frame 1
84 - spiny egg 8x8 tile 2 frame 1
84 - spiny egg 8x8 tile 3 frame 1
84 - spiny egg 8x8 tile 4 frame 1
94 - spiny egg 8x8 tile 1 frame 2
94 - spiny egg 8x8 tile 2 frame 2
94 - spiny egg 8x8 tile 3 frame 2
94 - spiny egg 8x8 tile 4 frame 2

For my demo, I gave sprite 12 the same offset as the SMW goomba, and that's precisely what appears. The more I look through the ROM, the more tables I see, so hopefully this will spark some interest in documenting them.
Atma X
Posts: 526/801
Where's Mikey's Data? (I've don't think I've even heard of him)
cpubasic13
Posts: 591/1346
Originally posted by Keikonium

Now this may be in the post of mikey, but how do I go about making it so the sprite is static? I want it to act like its not even there.


I could help there, too. At offset 0x0087CC you change that and it will do a certain code for the sprite. If you play around with it... maybe make the values 00... you could make it static.

And I should mention that 0x0087CC has two values for each sprite, so don't count like you usually would with the other offsets...
Keikonium
Posts: 705/-2459
okay, that makes sense. I will go off and try to create a sprite...

Now this may be in the post of mikey, but how do I go about making it so the sprite is static? I want it to act like its not even there.
cpubasic13
Posts: 589/1346
Well, I will help somewhat with the static sprite.

Let's say you want to change sprite 12, the first null sprite. Simple. Just look at the notes and go to the first offset it shows. Now you are at sprite 00, green shelless koopa. Now move to the right. Now you are at sprite 01. Simply put, at each offset the sprites are ordered so you can count to find the sprite you need for all of the offsets. Hope that helps somewhat...
Keikonium
Posts: 703/-2459
Alright. Static sprites are something I have used in the game, but not the correct way (I just used invisible blocks and surronded the sprite so they wouldn't move).

Anyway, I would create a static sprite, but I have no clue how to make a new sprite by replacing a null sprite. I can make new ones using existing sprites, but not null sprites. So if someone could tell me how to replace sprite 11 (or was it 12?) that would be great. I have read Mikey's sprite data, but is a bit confusing to someone like me.

I have two shots here, and they are exactly what I want the bowser battle to look like:

First, this is what I could probably do.

And this is what I wish I could have. May be possible, but would use ALOT of palettes.
cpubasic13
Posts: 586/1346
Originally posted by BMF54123
You might be able to put a few static sprites in the background to simulate scenery, but as always, that would require some ASM.


Actually, even without ASM knowledge, you can make a static sprite. Just use mikejk's data and work with it... maybe make the "X" sprite a moon... or something like that...

I would post the data, but then I would have posted it too much...
Alastor the Stylish
Posts: 2334/7620
A static sprite would be a sprite that stays in place, kinda like a block of any kind. Making one would take some work with ASM, however.
Keikonium
Posts: 701/-2459
Okay, thanks guys.

And what do you mean by static sprites? If I could just get the patch moon (its either 4 16x16 or 9 16x16 cant remember) in the BG that would be great. The only reason I need this is because on bowsers map, I have a moon. So would it be possible to make it on the same layer as the castle top?
Alastor the Stylish
Posts: 2331/7620
Originally posted by BMF54123
None of you guys know what you're talking about.
I merely assumed based on all other non-reznor bosses... Which was rather stupid of me, it would be pretty easy to tell just looking at the way the koopacopter rotates had I been paying any attention... I apologize.
Atma X
Posts: 525/801
That reminds me of when I used to edit Sonic 2, because the Bosses were some kind of Screen Property, as if they were actually part of the last Screen of a Level (in other words, there were no actual Boss Sprites).

If you ask me, this sounds like almost the same kind of situation.

And for Editing Boss Rooms, the only ones you'll be able to Edit are Lemmy's and Wendy's room. The rest of the Bosses use those weird Level Header Modes (whice all of you should know already), where the Level Header is the Boss and everything else in that room (and don't get technical with me about how you can still change the Sprite Gfx)

Well, there's three things that you can do, leave Bowser's Room alone, learn Snes ASM to change Level Header # 10, or program your own Sprite for Bowser and put it in a regular level (good luck with # 3, because no one here has programmed any Sprites yet)
BMF98567
Posts: 374/1261
None of you guys know what you're talking about.

Bowser is not a sprite--he's a Mode 7 background image. There's nothing else in the background because you can't have anything else in the background. Mode 7 is only one layer, so anything you were to put back there would follow Bowser around (hence the reason why the floor is a bunch of sprites).

You might be able to put a few static sprites in the background to simulate scenery, but as always, that would require some ASM.
asdf
Posts: 194/303
If I remember correctly, you could add multiple Bowser sprites to the Bowser battle level. In addition to some nice slowdown, other strange effects occur when fighting them. Their attack pattern almost entirely changes, such as throwing fireballs while they're in the foreground. But it's probably not a good idea, seeing as how 90% of people have hair buns about any glitches at all, even if they're intentionally done (for the side effects, perhaps) and don't degrade the game.
This is a long thread. Click here to view it.
Acmlm's Board - I2 Archive - Super Mario World hacking - Changing the BG of the bowser battle?


ABII


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



Page rendered in 0.010 seconds.