Language…
7 users online: Adsila, Anas, Lyfuh, marioandsonicfan524, Roberto1992, SuperBupDX, zolarch - Guests: 182 - Bots: 99
Users: 64,451 (2,483 active)
Latest user: mmousd

Extended No Sprite Tile Limits v4.0

SMW Patches → Extended No Sprite Tile Limits v4.0

Submission Details

Name: Extended No Sprite Tile Limits v4.0
Authors: DiscoTheBat, Kevin, Roy, imamelia, worldpeace
Added:
Version History: View
Tool: Asar
Requires Free Space: Yes
Bug Fix: No
Featured: Yes
Description: This is a No Sprite Tile Limits patch for non-normal sprites (extended sprites, cluster sprites, smoke images, bounce sprites, etc.), most of which use OAM addresses $02xx instead of $03xx. It makes said sprites use the first free slot instead of having hardcoded slots. It'll fix the Sumo Bros. flame glitch now.

NEW - Fully fixes the Sumo Bros. flames, graphic-wise and coding-wise. This makes the flames to not hurt the player, if he is about 8 blocks underneath.

v3.1 (Kevin): now compatible with PIXI. Also made Mario's fireballs and the contact gfx sprite use dynamic slots, so they don't conflict with each other and which also fixes the item box flicker that happened on the previous version.

v3.2 (Kevin): fixed bugs with the BG candle flames caused by previous versions:
- Now the flames properly loop around the screen
- Now the flames don't appear in front of other sprites

v4.0 (Kevin):
- Now fully compatible with PIXI v1.40
- Small optimization in FixContactGFX
- Made patch work for the Goal Tape bonus stars (they won't overwrite other sprites now)
Tags: bounce sprites cluster sprites extended sprites lorom minor sprites oam sa-1 smoke sprite tile
Comments: 34 (jump to comments)
Download 3.33 KiB | 983 downloads

Screenshots

View all

Comments (34)

Anas Link
Unfortunately on my ROM with SA-1/PIXI 1.40, the middle of Yoshi’s tongue disappears when there is a Lakitu cloud on screen #tb{D:}
Anas Link
If for some reason you only want the code that fixes the sumo bro flames, patch this code from Isikoro:

Code
 !Default = $00				; the slot to overwrite when all are full
!RAM_ExtOAMIndex = $1869	; the free RAM address to use for the OAM index (must be $0000-$1FFF)

	!base = $0000
	!base2 = $800000

if read1($00FFD5) == $23
	sa1rom
	!base = $6000
	!base2 = $000000
	!RAM_ExtOAMIndex #= !RAM_ExtOAMIndex|!base
endif

macro CheckSlot(offset)
LDA.w $0201|!base+<offset>
CMP.b #$F0
BNE ?NotFound
LDA.b #<offset>
JMP FoundSlot
?NotFound:
endmacro

macro Check4Slots(offset)
%CheckSlot(<offset>)
%CheckSlot(<offset>+$04)
%CheckSlot(<offset>+$08)
%CheckSlot(<offset>+$0C)
endmacro

org $02DF6E							; patch Sumo Brother flame GFX routine
	NOP								; also, it fixes a couple of glitches regarding
org $02F9CF							; position of flames and "hitbox"
	autoclean JML FixSumoFlame1		;
org $02F937							;
	autoclean JML FixSumoFlame2		;
	
	
freecode

GetExtOAMIndex:
	%Check4Slots($00)
	%Check4Slots($10)
	%Check4Slots($20)
	%Check4Slots($30)
	%Check4Slots($40)
	%Check4Slots($50)
	%Check4Slots($60)
	%Check4Slots($70)
	%Check4Slots($80)
	%Check4Slots($90)
	%Check4Slots($A0)
	%Check4Slots($B0)
	%Check4Slots($C0)
	%Check4Slots($D0)
	%Check4Slots($E0)
	%Check4Slots($F0)
	LDA #!Default
FoundSlot:
	STA !RAM_ExtOAMIndex
	RTL

FixSumoFlame1:
	LDA $185E|!base
	AND #$03
	TAY
	LDA $1E02|!base,x
	JML $02F9D6|!base2

FixSumoFlame2:
	LDA $1E16|!base,x
	SEC : SBC $1A
	STA $00
	LDA $1E3E|!base,x
	SBC $1B
	BNE .End
	LDA $1E02|!base,x
	SEC : SBC $1C
	STA $01
	LDY #$01
-	LDA $1E02|!base,x
	CLC : ADC #$04
	CLC : ADC $D374,y
	PHP
	CMP $1C
	ROL $02
	PLP
	LDA.w $1E2A|!base,x
	ADC #$00
	LSR $02
	SBC $1D
	BNE .End
	DEY : BPL -
	JSL GetExtOAMIndex
	LDY !RAM_ExtOAMIndex
	PHX
	LDX #$01
.Loop
	PHX
	LDA $00
	STA $0200|!base,y
	TXA
	ORA $185E|!base
	TAX
	LDA $02F8FC,x
	BMI .Skip
	CLC : ADC $01
	STA $0201|!base,y
	LDA $02F904,x
	STA $0202|!base,y
	LDA $14
	AND #$04
	ASL #4
	ORA $64
	ORA #$05
	STA $0203|!base,y 
	PHY
	TYA : LSR #2 : TAY
	LDA #$02
	STA $0420|!base,y
	PLY
.Skip
	PLX
	INY #4 : DEX : BPL .Loop
	PLX
.End
	PLX
	JML $02F93B|!base2
Ice Man Link
Installed this and also using PIXI 1.40.
When I place a Volcano Lotus and a custom sprite (upside down version of it found here on the same screen, the pollen start to disappear.
Any idea how to fix this?
 Kevin Author Link
Read my previous comment
 Anorakun Link
It freezes the rom whenever I try to use the Amazing Hammer Flying Hammer Bro. sprite. At least on SA-1, it does.
Francium Link
At least with my rom it doesn't occur.
Make sure there are no hijacks or ram conflicts.
 MarioFanGamer Link
Moderated with:
Fixed bug where if you try to patch it over an older version of Extended NMSTL, it would crash the game due to some oversights of conditionals.

Definitively a much needed update given the bugs as well as PIXI v1.40.
jaytv25 From older version: Extended No Sprite Tile Limits v3.1 Link
does it work with romi spritetool?
Klug From older version: Extended No Sprite Tile Limits v3.1 Link
This patch causes some issues after patching to the ROM that has Dynamic Spriteset System applied. I've seen this problem on the BLDC help/report thread, but I'll let them know if there's a solution for it.
 Kevin Author From older version: Extended No Sprite Tile Limits v3.1 Link
The solution is don't use them together
 Kevin Author Link
Did another quick update (v4.0) that makes this patch work with the newest PIXI v1.40 (earlier version will crash the game), as well as making the Goal Tape bonus stars use it instead of using hardcoded slots (they won't overwrite other sprites now). Note that as usual, to make custom extended/cluster/etc. sprites fully work with this, you'll need to update PIXI's various "GetDrawInfo" routines (except for the normal sprites one) to load the OAM index from the RAM address used by this patch instead of loading it from ROM (if you don't do that there's a chance that they will overwrite other sprite tiles).
You should be able to patch this over ExtNSTL v3.1 or v3.2 without issues.
 Kevin Author Link
This update mainly fixes a couple of dumb issues with the castle candle flames cluster sprites that were in the patch since at least v2.0. One is that the flames were appearing in front of other sprites since they were incorrectly remapped to $0200 (they should stay at the end of $0300 instead). The other was that the remapping was actually not complete, causing the partially offscreen flame's mirrored tile to not be drawn properly, which removed the "loop around the screen" effect that's used in vanilla. The update just removes these remaps and, if patching it over a previous version, restores the original tables.
Gamet2004 From older version: Extended No Sprite Tile Limits v3.1 Link
Hi everyone, I recently put this patch in my hack and as soon as I open the game, the game crashes and a lot of red lines appear on the screen. Why did this happen?
 Kevin Author From older version: Extended No Sprite Tile Limits v3.1 Link
Most likely a hijack conflict with another patch you used
HammerBrother From older version: Extended No Sprite Tile Limits v3.1 Link
Note that this modifies more than just the extended sprites, this actually modifies virtually any misc type sprites, according to the hijack map.
Masked Man From older version: Extended No Sprite Tile Limits v3.1 Link
Now this pushes the SNES to its limits.
 MarioFanGamer From older version: Extended No Sprite Tile Limits v3.1 Link
Moderated with:
Rearranged the tag list to make it more consistent with the official tag list (no, I'm not going to list them all) and added screenshots (first one is without and second with the patch).

While normal hackers typically don't see much use in it, it is useful if you know what you're doing. More specifically, you can use larger extended/cluster/bounce/minor/whatever sprites. Keep in mind that to take advantage of it in custom sprites, you have to use whatever is specified in !RAM_ExtOAMIndex in the patch (which is why I noted why you should know what you're doing).
Lastly, this does take quite a bit of processing power since it searches for an empty OAM slot for any existing whatever sprite (albeit it searches for the first empty slot, not the last empty slot just like NMSTL so not quite as bad) so you might want to use FastROM or SA-1 with this patch.
 Kevin Author From older version: Extended No Sprite Tile Limits v3.1 Link
The issue was solved: it was caused by the Reznor Fireball Flag patch which shares an hijack at $029B16. To solve this, remove this from the Reznor Fireball patch:
Code
org $029B16
	autoclean JML ExtSprManage

then in this patch find this piece of code:
Code
LDA $170B|!base,x
BEQ .Return

Right under it add this:
Code
STZ $1765|!base,x
 Kevin Author From older version: Extended No Sprite Tile Limits v3.1 Link
Originally posted by Ice Man
I should add that I'm using SA-1 and PIXI 1.2.15 as well as sprite memory $08. Also only tested with upside down venus trap so far. Haven't bothered afterwards.
This is the sprite(s) btw: https://www.smwcentral.net/?p=section&a=details&id=24223

Yes I've tried it with this same configuration and it works fine.
Ice Man From older version: Extended No Sprite Tile Limits v3.1 Link
I should add that I'm using SA-1 and PIXI 1.2.15 as well as sprite memory $08. Also only tested with upside down venus trap so far. Haven't bothered afterwards.
This is the sprite(s) btw: https://www.smwcentral.net/?p=section&a=details&id=24223
 Kevin Author From older version: Extended No Sprite Tile Limits v3.1 Link
Originally posted by Ice Man
Still crashes the game. Venus Fire Traps when spitting fireballs for example does.

Works fine on my end.
Ice Man From older version: Extended No Sprite Tile Limits v3.1 Link
Still crashes the game. Venus Fire Traps when spitting fireballs for example does.
Anas From older version: Extended No Sprite Tile Limits v3.1 Link
This fix was much needed. Thanks a lot! I'll try it out shortly.
 Kevin Author From older version: Extended No Sprite Tile Limits v3.1 Link
Probably, assuming you change PIXI's "ExtendedGetDrawInfo" routine to use the dynamic OAM slot instead of the hardcoded one. I'm no expert in how those powerups work, though, so you might have to make other adjustments.
Knight of Time From older version: Extended No Sprite Tile Limits v3.1 Link
I'm surprised this is now compatible with PIXI; one question though, does it work with lx5's custom powerups?
 Kevin Author From older version: Extended No Sprite Tile Limits v3.1 Link
Remoderation notes: see description.
Tested with Lunar Magic 3.11, PIXI 1.2.15, asar 1.71, SA-1 1.32, Snes9x 1.60.
 Atari2.0 From older version: Extended No Sprite Tile Limits v. 3.0 Link
Until this gets fixed be aware that this patch IS NOT compatible with Pixi.
This is due to an hijack conflict at $02F815, so just keep in mind that you can't use this and pixi on your rom without manually fixing the hijack conflict first, at least until it gets fixed by a moderator or another person.
Anas From older version: Extended No Sprite Tile Limits v. 3.0 Link
I believe Akaginite made a fix to that somewhere in the PIXI Resource and Tool Releases thread. Check there.
Ice Man From older version: Extended No Sprite Tile Limits v. 3.0 Link
I just happen to have the same issue.
This patch is NOT compatible with PIXI.
qantuum From older version: Extended No Sprite Tile Limits v. 3.0 Link
I don't know how nor why, but this patch conflicts with sprites inserted using PIXI. That makes the game to crash.
Tattletale From older version: Extended No Sprite Tile Limits v. 3.0 Link
I ran into an issue with this patch in which inserting it would cause the item box item to flicker when I interacted with sprites (like kicking a shell or jumping on a koopa).

I went around asking people for help, apparently there's a lil' piece of code that if you remove, fixes the issue and it doesn't seem to cause any harm to the patch (not extensively tested, though).

Here it is
org $00907A ; item box item
db $F4 ; just move this one to the end

removing this fixes the issue.
Final Theory From older version: Extended No Sprite Tile Limits v. 3.0 Link
This is a must have patch. It makes it so that you sprites will not turn invisible if you have lots of sprite tiles on the screen.

Excellent patch!
Vitor Vilela From older version: Extended No Sprite Tile Limits v. 3.0 Link
Added some more tags and did a description cleanup.

No issues with sumo brothers apparently. The only thing I noticed is the flames disappears nearly left-boundaries of the screen, but that's something common between extended sprites.

Either way, it's good and it's approved.
Vitor Vilela From older version: Extended No Sprite Tile Limits v. 2.0 Link
Added SA-1 support, tags and removed a STA $7FB000 (debug opcode probably) that potentially could corrupt AddmusicK's RAM area.