Language…
6 users online: Children's Playmate Magazine, DannyLeeClark, Hooded Edge, Maniek, padako, Shiki_Makiro - Guests: 105 - Bots: 91
Users: 68,954 (2,363 active)
Latest user: Alma

One-Shot Fire Flower Block

SMW Blocks → One-Shot Fire Flower Block

Submission Details

Name: One-Shot Fire Flower Block
Author: JamesD28
Added:
Act As: 025 or 130
Includes GFX: Yes
Description: This is a block that when collected, will award Fire Power that can be used for a single shot. Collecting multiple blocks will give the player the respective amount of shots. When the player's shots have been used up, they will revert to big Mario.

See the asm file for some customization options. Requires a few small helper patches (inserted with the block) to handle the fireball counter.

Requested by KatMakes.
Tags: fire flower fireball lorom one shot sa-1
Comments: 8 (jump to comments)
Rating:
0.0 (0 ratings)
No rating
Download 1.90 KiB | 267 downloads

Screenshots

View all

Comments (8)

 Maarfy Link
Does what it's supposed to more or less, accepted. Note that, if !NoCape = 0, it's possible to touch this block as Cape Mario while in cape flight. This will cause Mario to instantly become Fire Mario, but does not exit cape flight state. As Fire Mario isn't meant to fly, this causes harmless graphical glitches in the player sprite until flight state is ended.

I think the overall design of this block & patch is a little strange, personally. Particularly with flowers in the item box, it can lead to situations where purposely taking damage before grabbing a flower is preferable, as doing so resets banked shots and allows Fire Mario to have unlimited ammo. Since this block already has to apply a patch, I think it'd make more sense to create a "temporary fire state" completely separate from the "true" $19 = #$03 fire state.

That all said, this block seems naturally geared towards more of a kaizo sort of design where the vast majority of these oddities wouldn't be encountered in the first place.

Tested with Asar 1.81, Lunar Magic 3.31, SA-1 1.40, Snes9x 1.59.2, GPS 1.4.21.
 MarioFanGamer Link
I'd also add that one of the hijacks, the kill player routine, is at changing the music which means using AddmusicK overwrites the hijack should you use this block before (which may or may not be fixed by reapplying the patch, considering that that hijack uses an autoclean like the others) but also that you have to change the song to be played to 0x01 instead of 0x09.
Saela Link
Couldn't find anything so far, but I'll just use a backup rom for now. I'll let you know if I figure it out! Thank you.
Saela Link
I inserted this and the block itself works perfectly fine, but whenever I go into any other level the game crashes as soon as I take damage after having collected a mushroom. I can die normally or hit munchers or anything without issues, the crash only occurs if I collected a mushroom before. Of course I don't know why exactly this happens and there are many other patches I have inserted into my hack but I just thought I should let you know. Definitely has something to do with this because the crashes only happen when this block is inserted.
JamesD28 Author Link
I'm unable to recreate that issue on a clean ROM. I recommend that you go through all your patches and check to see if there are any which are using the same freeRAM as the block, or if there are any hijack conflicts - look for all instances of "ORG" in your patch asms, and then check the address after it. If it matches any of the hijacks in the Block asm or is a similar address then there's probably a conflict.
HammerBrother Link
JamesD28 Oh:
Code
ORG $00FEB5
autoclean JML CheckShots		; Checks the number of shots left when shooting a fireball, and handles reverting.
NOP

ORG $00F5F9
autoclean dl ZeroShots			; Zero the number of shots when taking damage.

ORG $00F60A
autoclean JML ZeroShotsDeath	; Zero the number of shots when dying.
NOP

freecode

CheckShots:
LDA #$06
STA $1DFC|!addr		; Restore code.

LDA !freeRAM
BEQ End
DEC !freeRAM
BNE End
LDA #$01
STA $19
if !RevertSFX
LDA #!RevertSFX
STA !RevertSFXBank|!addr
endif

End:
JML $00FEBA|!bank

ZeroShots:
STZ !freeRAM
JML $028008|!bank		; Zero freeram then return to normal routine.

ZeroShotsDeath:
LDA #$09
STA $1DFB|!addr
STZ !freeRAM
JML $00F60F|!bank		; Zero freeram then restore original code.


Very interesting, you can combine things. I have a feeling that some can be converted to uberasm tool code.
JamesD28 Author Link
Originally posted by HammerBrother
Did you forgot the patch? I don't see a readme or links to the required resources.

"Requires a few small helper patches (inserted with the block)"
HammerBrother Link
Did you forgot the patch? I don't see a readme or links to the required resources.