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?
  
User name:
Password:
Reply:
 

UserPost
Glyph Phoenix
Posts: 491/745
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.)
DisruptiveIdiot
Posts: 128/147
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
Posts: 489/745
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.)
mikeyk
Posts: 105/110
A quick note to go along with my last post in this thread... sprite pointers over C9 use bank 02.
Glyph Phoenix
Posts: 486/745
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
Posts: 104/110
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
HyperLamer
Posts: 6566/8210
I'm pretty sure $80:8000 = $00:8000, except 80 is fastROM.
Sukasa
Posts: 1772/1981
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?
Glyph Phoenix
Posts: 481/745
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.
Smallhacker
Posts: 2023/2273
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.
Sukasa
Posts: 1764/1981
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?
Tweaker
Posts: 48/57
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.
Glyph Phoenix
Posts: 480/745
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.
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.004 seconds.