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 - What's the deal with sprite generators? | |
Add to favorites | "RSS" Feed | Next newer thread | Next older thread
User Post
Glyph Phoenix

Level: 39

Posts: 480/745
EXP: 385876
For next: 18895

Since: 11-07-04

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-26-05 06:27 PM Link | Quote
I have been pondering the creation of a boss that consists of a block that you can hit to decrease its HP and a sprite on top of it which generates enemies for Mario to dodge. (Because I'm not good enough to build a real boss...)

So, I whip out MarioWorld Reconfigurer. I check the Bullet Bill Generator's code, because I'm thinking that a sprite with the code of the Bullet Bill but which shoots, like, spinies or something would be nice. I look at its sprite pointer. It's not valid.



...okay, what's the deal here? Sprite generators have invalid sprite pointers in MWR and they apparently only work on the sprite number that they were created on. I'm not nearly skilled enough to figure this one out on my own, so I turn to the board to solve this spritely conundrum.
Tweaker

Red Paragoomba
Level: 12

Posts: 48/57
EXP: 6490
For next: 1431

Since: 03-20-05
From: Rochester, NY

Since last post: 25 days
Last activity: 13 days
Posted on 08-26-05 07:06 PM Link | Quote
Have you located the actual programming for the Bullet Bill Sprite? If so, you could just copy it, relocate it, and change what sprite spawn from it, couldn't you?

With a bit of Tweaking, you could give it different art too by having it look somewhere else in VRAM. Dunno if there's a free spot though.
Sukasa

Boomboom
Error 349857348734534: The system experienced an error.
Level: 57

Posts: 1764/1981
EXP: 1446921
For next: 39007

Since: 02-06-05
From: *Shrug*

Since last post: 6 days
Last activity: 1 day
Posted on 08-26-05 09:33 PM Link | Quote
Ehh, how do you know it is invalid code? Could it simply be handler code, and I'm quite sure that the address given is in SNES LoROM format... What code is executed?
Smallhacker

Green Birdo

SMW Hacking Moderator
Level: 68

Posts: 2023/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 08-26-05 10:40 PM Link | Quote
IIRC, the sprite code is in bank 1, which means that you should add 01 in front of the snes address before converting it to a pc address in LA.
Glyph Phoenix

Level: 39

Posts: 481/745
EXP: 385876
For next: 18895

Since: 11-07-04

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-26-05 11:51 PM Link | Quote
Originally posted by Tweaker
Have you located the actual programming for the Bullet Bill Sprite?


No. The spot the pointer points to is invalid, and I suck at tracing.

Originally posted by Tweaker
With a bit of Tweaking, you could give it different art too by having it look somewhere else in VRAM.


I don't want the generator to generate Bullet Bills, though. I want it to generate something that can be picked up and thrown, so you have to throw whatever it sends to you back at it.

Originally posted by Sukasa
Ehh, how do you know it is invalid code? Could it simply be handler code, and I'm quite sure that the address given is in SNES LoROM format... What code is executed?


It doesn't lead to code at all. The pointer isn't a valid LoROM address, so I can't convert it to a PC address.

Originally posted by Smallhacker
IIRC, the sprite code is in bank 1, which means that you should add 01 in front of the snes address before converting it to a pc address in LA.


Right you are. Were it a valid LoROM address, you would need to add 1 to the beginning as well as use Lunar Address. But the pointer is not valid.
Sukasa

Boomboom
Error 349857348734534: The system experienced an error.
Level: 57

Posts: 1772/1981
EXP: 1446921
For next: 39007

Since: 02-06-05
From: *Shrug*

Since last post: 6 days
Last activity: 1 day
Posted on 08-27-05 01:31 AM Link | Quote
Add 01? well, AFAIK the SMW LoROM map starts at $80:8000, no $01:8000. did you try reversing the byte order before using LA?
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: 6566/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 08-27-05 02:28 AM Link | Quote
I'm pretty sure $80:8000 = $00:8000, except 80 is fastROM.
mikeyk

Koopa
Level: 18

Posts: 104/110
EXP: 25086
For next: 4811

Since: 07-17-04

Since last post: 45 days
Last activity: 44 days
Posted on 08-27-05 04:26 AM Link | Quote
All sprite tables are C8 in size. MWR has no effect on sprites C9 and higher, except for corrupting some data of others. SNES $02/B466 is the start of the bill generator. I believe ASM pointers for C9 and higher begin at ROM 0x135B0. It may help for you in tracing to know that SNES $00/86F7 is the instruction that is always responsible for calling a sprite's code


(edited by mikeyk on 08-26-05 07:28 PM)
(edited by mikeyk on 08-26-05 07:45 PM)
(edited by mikeyk on 08-26-05 07:49 PM)
Glyph Phoenix

Level: 39

Posts: 486/745
EXP: 385876
For next: 18895

Since: 11-07-04

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-27-05 05:52 AM Link | Quote
Thanks, MikeyK.

HH, you really need to get on fixing that MWR bug. Or is rom corruption not a big enough problem to warrant a new release?

Originally posted by Sukasa
Add 01? well, AFAIK the SMW LoROM map starts at $80:8000, no $01:8000. did you try reversing the byte order before using LA?


The pointer only points to locations within the same bank. The bank for sprite pointers is 1, so you have to put that in front of your address. And MWR reverses the byte order for you.
mikeyk

Koopa
Level: 18

Posts: 105/110
EXP: 25086
For next: 4811

Since: 07-17-04

Since last post: 45 days
Last activity: 44 days
Posted on 08-27-05 01:16 PM Link | Quote
A quick note to go along with my last post in this thread... sprite pointers over C9 use bank 02.
Glyph Phoenix

Level: 39

Posts: 489/745
EXP: 385876
For next: 18895

Since: 11-07-04

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-27-05 11:18 PM Link | Quote
Totally new problem now... You know the way the Mushroom only does something if you are Small Mario? Well, now I want it to do the opposite: Only activate when you aren't small Mario.

I've searched and searched, but couldn't find the code... anyone know where it is?

(I've already found the code that sets the powerup, but that code only runs when Mario is Small Mario.)
DisruptiveIdiot

Paratroopa
Level: 21

Posts: 128/147
EXP: 42614
For next: 7329

Since: 04-09-04

Since last post: 4 days
Last activity: 5 hours
Posted on 08-28-05 12:46 AM Link | Quote
Originally posted by Glyph Phoenix
Totally new problem now... You know the way the Mushroom only does something if you are Small Mario? Well, now I want it to do the opposite: Only activate when you aren't small Mario.

I've searched and searched, but couldn't find the code... anyone know where it is?

(I've already found the code that sets the powerup, but that code only runs when Mario is Small Mario.)


I have a feeling you want to make a poison mushroom =P
Glyph Phoenix

Level: 39

Posts: 491/745
EXP: 385876
For next: 18895

Since: 11-07-04

Since last post: 2 hours
Last activity: 2 hours
Posted on 08-28-05 08:35 AM Link | Quote
Yeah, but not the kind that make you take damage. See, I'm totally overhauling the powerup system... I'm implementing a life bar, so when you get hit you don't lose powerups on contact. And there'll be some puzzles where you have to collect a poison mushroom to get through tight spaces. I already disabled the powerup carryover and such, so Mario will always be Big Mario. The powerups now act as temporary items, similar to the caps from Super Mario 64.

Speaking of my life bar, I need to know where I can put a JSL in the main game loop to complete a bit of code. I was using the timer to do some of my work, but it is only active once in a while. I need something that will run every frame. (Or nearly every frame.)
Add to favorites | "RSS" Feed | Next newer thread | Next older thread
Acmlm's Board - I2 Archive - Super Mario World hacking - What's the deal with sprite generators? | |


ABII


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



Page rendered in 0.018 seconds.