Name: | More Extended Sprites |
Author: | Isikoro |
Added: | |
Version History: | View |
Tool: | Asar |
Requires Free Space: | No |
Bug Fix: | Yes |
Featured: | No |
Description: | Up to 16 extended sprites, excluding fireballs, can coexist in the screen. If minimalist status bars are used or the item box is disabled, up to 18 items can be served. Lava splash are used as Minor Sprite 04 (same as Flame from Podoboo), and The spin-jump star is used as minor sprite 09 (overwrites the address of the note that moves to the left). (Extended sprites 07 and 10 will be erased.) (Notes that move to the left can be used by using minor sprite 08 and setting $7820,x to $01 or higher. If it is $00, it will move to the right.) Routine to spawn spin jump stars. : JSL $07FC3B|!bank Routine to spawn Lava drops. : JSL $028528|!bank Bubbles in water will disappear in a certain amount of time without touching the ceiling or the air. In the original, the Boo Stream row is also used as a minor sprite, so I recommend using it with this one. To insert a sprite in PIXI, download here one, copy the contents of the included "pixi" folder into it, and overwrite it. This patch is for SA-1ROM only, and cannot be used for LoROM. Some of the extended sprite usage RAM will be changed. The OAM index used for score sprites and the OAM index used for bounce sprites will be changed. Please save the level in Lunar Magic at least once before applying this patch. To make your resources compatible with this patch, you need to map them to the extended sprite usage RAM using the supplied Converter and add this code. It is necessary to manually replace "LD? #$07" to "LD?.b #!ExSprSize" and "LD? #$09" to "LD?.b #!FireballSprSize" in the extended sprite index. Code !More_ExSprite = 0 !ExSprSize = $07 if read2($029B39) == $0000 !More_ExSprite = 1 !ExSprSize = read01(00FAD5) endif !FireballSprSize = !ExSprSize+2 macro define_ram_exsp(name, name2, exsp, exsp_more) if !More_ExSprite == 0 !<name> = <exsp> else !<name> = <exsp_more> endif !<name2> = !<name> endmacro %define_ram_exsp(ex_sprite_num, "170B", $170B|!addr, $770B) %define_ram_exsp(ex_sprite_y_low, "1715", $1715|!addr, $3426) %define_ram_exsp(ex_sprite_x_low, "171F", $171F|!addr, $343A) %define_ram_exsp(ex_sprite_y_high, "1729", $1729|!addr, $771F) %define_ram_exsp(ex_sprite_x_high, "1733", $1733|!addr, $7733) %define_ram_exsp(ex_sprite_speed_y, "173D", $173D|!addr, $344E) %define_ram_exsp(ex_sprite_speed_x, "1747", $1747|!addr, $3462) %define_ram_exsp(ex_sprite_speed_y_frac, "1751", $1751|!addr, $7747) %define_ram_exsp(ex_sprite_speed_x_frac, "175B", $175B|!addr, $775B) %define_ram_exsp(ex_sprite_inc, "1765", $1765|!addr, $3476) %define_ram_exsp(ex_sprite_misc, "176F", $176F|!addr, $776F) %define_ram_exsp(ex_sprite_layer, "1779", $1779|!addr, $348A) %define_ram_exsp(ex_sprite_table1, "1765", $1765|!addr, $3476) %define_ram_exsp(ex_sprite_table2, "198C", $198C|!addr, $798C) %define_ram_exsp(ex_sprite_table3, "1996", $1996|!addr, $349E) %define_ram_exsp(ex_sprite_table4, "19A0", $19A0|!addr, $79A0) %define_ram_exsp(ex_sprite_table5, "19AA", $19AA|!addr, $34B2) Update 1 - Added documentation of OAM index after patching. Update 2 - Added the ability to fix the Sumo bro Lightning Flame bug.(Extended No Sprite Limits patch is no longer required.) - Fixed a bug that prevented Yoshi's flame from animating. - Edited sa1def.asm |
Tags: | extended sprites minor sprites oam sa-1 thunder |
Comments: | 47 (jump to comments) |
Download
22.44 KiB | 383 downloads
Comments (47)
- Lunar Magic v3.40
- SA-1 Pack v1.40
- Asar v1.81
- PIXI v1.40
- Volcano Lotus + Pollen
- BSNES v115
A simple update which includes some bugfixes.A fix for that is to replace the $029F76 hijack to:
Edit: In hindsight, there is an update submitted already which fixes this bug, it just is waiting right now.
A fix for that is to replace the $029F76 hijack to:
That’s odd, because I’m using this version of the patch and all my custom extended sprites work fine after conversion. Please make sure you’re properly converting both the pollen ext. sprite and the custom lotus itself. Run the whole code through the converter and make sure to hold Enter for at least 3-4 secs after pressing the ‘Convert’ button. You should also change any relevant instance of ‘LD? #$07’ to ‘LD?.b #!ExSprSize’ and use the provided routines with the patch. I would suggest leaving your code here for someone to check it out and see the issue. Otherwise, this must be bizarre.
Can you show me the error screen?
"Define 170B to 176F wasn't found"?
Please download and try this patch again.
working just fine now without needing to re-insert the patch.Never mind, the original Volcano Lotus sprite works fine, but not the custom one.The hitbox can be fixed by editing the level and applying the More Extended Sprites patch again.
See Readme for information on Extended Sprites to be inserted in Pixi.
Updated to fix the lightning flame hit detection bug without the Extended No Sprite Limits patch.
New Version
EDIT: Never mind, the issue I'm having happens regardless of not applying the Extended No Sprite Limits. It's more about the PIXI thing. Forgot to mention that yesterday. I'll see if that above fixes that as well.
In the future, you're welcome to ask one of our SMW ASM Section Moderators to edit the file for you in order to avoid adding a minor update and breaking up the comment history.
Users of this patch may wish to check out the "older" version comments to see the moderator approval notes.
I will make it correspond.
I have applied it to this patch. Here
I will make it correspond.
- Lunar Magic v3.31
- SA-1 Pack v1.40
- Asar 1.81
- BSNES v115
- Console (by MarkAlarm)
- Hammer Bro
- Volcano Lotus + Pollen
This certainly is a huge patch and there is a notable chance that it will break your hack should you apply it. In fact, it is likely the second biggest patch you're applying to your ROM (only SA-1 is beaten) thanks to the massive amount of remapping.Furthermore, I am impressed, how you managed to not use any freespace whatsover for this patch.
It should be noted that it uses some extra freeRAM for certainly sprite tables. These are not cleared and can be seen in the Volcano Lotus I linked where the pollen may randomly start to home the player even when the sprite is set to not shoot aimed pollen (though that one is also an oversight of the original sprite and can happen without this patch).
Fixed.
However, the default number of possible coexistence is now 16.
Hmm, not a bad tradeoff. But thanks! I'll check it out!
Fixed.
However, the default number of possible coexistence is now 16.
You can't shoot fireballs properly. Hopefully this will be fixed sometime.
Fixed.
You can't shoot fireballs properly. Hopefully this will be fixed sometime.
Replacing it with 'JSL $07FC3B|!bank' fixed it! Thanks! It would be nice to mention the routine for spawning the lava splashes too. In fact, you should have a readme mentioning the stuff mentioned in the description as LX5 said. Anyways, awesome patch and so far found no issues! If I do find any, I'll let you know.
Edit: I forgot to tell you that 'SpawnExtended' needs to be converted too. Here's the conversion:
Edit 3: I discovered a fatal bug. Resources which spawn ext. sprites 0x07 or 0x10 like this and this will crash while attempting to spawn them. What should be done?
'ExtendedHurt':
'ExtendedCapeClipping':
Please include these with the patch.
Edit 2: Here we go again, another one... I converted Sonikku's fire bro successfully, following the given instructions. However, when the fireball sprites spawn, I can't shoot any fireballs. There is no 'LD? #$09' present in the code.
Fire bro:
Fireball:
Edit: Actually, I *can* shoot the fireballs but graphically, they don't show up.
"$173D|!Base2,y" has not been rewritten to "!173D,y".
"$1747|!Base2,y" has not been rewritten to "!1747,y".
I will enclose the two routines with the patch file.
Please re-download the patch and overwrite the converter.
'ExtendedHurt':
'ExtendedCapeClipping':
Please include these with the patch.
Edit 2: Here we go again, another one... I converted Sonikku's fire bro successfully, following the given instructions. However, when the fireball sprites spawn, I can't shoot any fireballs. There is no 'LD? #$09' present in the code.
Fire bro:
Fireball:
Edit: Actually, I *can* shoot the fireballs but graphically, they don't show up.
Did you hold down Enter for three seconds after clicking the "Converter"?
I believe so, but when I did so, nothing seemed to change. I'll try again.
Edit: Okay, tried again and now it works! Thanks! Is there anything else I should worry about or is this it? Also, what do you mean by 'extended sprite index'?
Edit: Okay, I figured it out. 'Extended sprite index' means the address $170B. Would be nice if you were more specific with that, but at least everyone will know now.
Did you hold down Enter for three seconds after clicking the "Converter"?
Edit: For specificity's sake (citing Yoshifanatic), sprites 08 and 09 are duplicates of the unused music note that apparently is supposed to be spawned by exploding turn blocks but aren't. They technically lead to the same code, so you should make one of the sprites' code point to the spin jump star's code. That way, you neither sacrifice the Yoshi smoke nor the unused music note. You can see more info here: https://smwc.me/1472167
I left Yoshi's smoke and assigned minor sprite 09 to the spin jump star.
Thanks! Btw, by 'extended sprite index', do you mean $170B? Because I found this in Sonikku's boomerang bro's code:
and I changed the '#$07' to '#!ExSprSize' like you said, but the extended sprite doesn't work properly. However, the boomerang bro throws it normally. I ran both the boomerang bro and the boomerang ext. sprite through the converter. What do I do?
Can you show me a GIF image?
Code for boomerang projectile:
Boomerang bro:
Edit: For specificity's sake (citing Yoshifanatic), sprites 08 and 09 are duplicates of the unused music note that apparently is supposed to be spawned by exploding turn blocks but aren't. They technically lead to the same code, so you should make one of the sprites' code point to the spin jump star's code. That way, you neither sacrifice the Yoshi smoke nor the unused music note. You can see more info here: https://smwc.me/1472167
I left Yoshi's smoke and assigned minor sprite 09 to the spin jump star.
Thanks! Btw, by 'extended sprite index', do you mean $170B? Because I found this in Sonikku's boomerang bro's code:
and I changed the '#$07' to '#!ExSprSize' like you said, but the extended sprite doesn't work properly. However, the boomerang bro throws it normally. I ran both the boomerang bro and the boomerang ext. sprite through the converter. What do I do?
Can you show me a GIF image?
Edit: For specificity's sake (citing Yoshifanatic), sprites 08 and 09 are duplicates of the unused music note that apparently is supposed to be spawned by exploding turn blocks but aren't. They technically lead to the same code, so you should make one of the sprites' code point to the spin jump star's code. That way, you neither sacrifice the Yoshi smoke nor the unused music note. You can see more info here: https://smwc.me/1472167
I left Yoshi's smoke and assigned minor sprite 09 to the spin jump star.
Thanks! Btw, by 'extended sprite index', do you mean $170B? Because I found this in Sonikku's boomerang bro's code:
and I changed the '#$07' to '#!ExSprSize' like you said, but the extended sprite doesn't work properly. However, the boomerang bro throws it normally. I ran both the boomerang bro and the boomerang ext. sprite through the converter. What do I do?
; This is similar to edit1754's famous No Sprite Tile Limits patch, except that
; this one is for sprites using the other half of OAM. That is, the patch makes it
; so that sprite tiles using OAM addresses $02xx (extended sprites, cluster sprites,
; minor extended sprites, block bounce sprites, smoke images, spinning coins
; from blocks, and Yoshi's tongue), use dynamic OAM indexes instead of hardcoded
; ones, just like normal sprites do when the normal No Sprite Tile Limits patch is
; used. This drastically reduces the risk of any sprite graphics glitching up because
; of an OAM conflict.
; (It also means that Sumo Brothers work properly with the original NSTL patch and sprite memory 10; they didn't before.)
Edit: For specificity's sake (citing Yoshifanatic), sprites 08 and 09 are duplicates of the unused music note that apparently is supposed to be spawned by exploding turn blocks but aren't. They technically lead to the same code, so you should make one of the sprites' code point to the spin jump star's code. That way, you neither sacrifice the Yoshi smoke nor the unused music note. You can see more info here: https://smwc.me/1472167
I left Yoshi's smoke and assigned minor sprite 09 to the spin jump star.
Edit: For specificity's sake (citing Yoshifanatic), sprites 08 and 09 are duplicates of the unused music note that apparently is supposed to be spawned by exploding turn blocks but aren't. They technically lead to the same code, so you should make one of the sprites' code point to the spin jump star's code. That way, you neither sacrifice the Yoshi smoke nor the unused music note. You can see more info here: https://smwc.me/1472167
Also, maybe you could add the patch's description as a standalone readme file? There's none included in the resource and people might not check the instructions you added in this page.