GitHub repo
Latest version (v1.01)
The Dynamic Spriteset System (DSS) is a compilation of several ASM hacks and edits to existing sprites to allow dynamically filling the VRAM at SP3/SP4 regions via requests of sprites loaded in memory. This means that any non visible sprite on the screen will not have their graphics on SP3/SP4 and you won't have to waste time messing with disassemblies, hex edits or small patches to manage your spriteset for each level you want to make.
The system is separated in four different and smaller systems: the request/queue GFX routine, the VRAM queue system, the new sprite detector and the garbage collector. This system relies on ExGFX files which are inserted via Lunar Magic.
Features
Drawbacks
Before you actually use DSS you have to keep in mind a few negative things that come with this:
Disclaimer
This project was started to completely remove the time spent building manually a spriteset for my very own purposes and took decisions that fulfilled my requirements. If you find anything that isn't ideal for your very own project I'm sorry about that, but it's not likely that any changes will be made for your specific purposes.
I will not provide any kind of support about this system. It's a very complex package that modifies a lot of parts of the ROM and providing support in such cases is outright impossible.
Any question I receive will most likely replied with a link to the wiki unless it's a bug report about the API or any SMW sprite I've converted.
Demonstration
Latest version (v1.01)
The Dynamic Spriteset System (DSS) is a compilation of several ASM hacks and edits to existing sprites to allow dynamically filling the VRAM at SP3/SP4 regions via requests of sprites loaded in memory. This means that any non visible sprite on the screen will not have their graphics on SP3/SP4 and you won't have to waste time messing with disassemblies, hex edits or small patches to manage your spriteset for each level you want to make.
The system is separated in four different and smaller systems: the request/queue GFX routine, the VRAM queue system, the new sprite detector and the garbage collector. This system relies on ExGFX files which are inserted via Lunar Magic.
Features
- Easy to use API, just call a routine to do the heavy work for you
- Lunar Magic's ExGFX system to store sprite graphics
- Lunar Magic's sprites showing fine regardless of the loaded ExGFX
- VRAM queue system; used to fill the VRAM at the sprite area, but it may be used for something else
- Yoshi can exist in any environment, it can also coexist alongside Podoboos
- Glass, ON/OFF and note blocks are now global
Drawbacks
Before you actually use DSS you have to keep in mind a few negative things that come with this:
- You can't use different skins of sprites without using a disassembly. This means you can't have themed enemies or anything like that.
- The system puts some pressure on the V-Blank period, it requires this to upload graphics to VRAM as soon as possible in small batches. This will limit how many ExAnimations and other related stuff you can have without seeing a flickering black bar at the top of the screen.
- Loading compressed graphics can generate a 1 frame lag in case of really CPU heavy situations. You have to put some thought behind your sprite placements if you ever encounter such lag spikes.
Disclaimer
This project was started to completely remove the time spent building manually a spriteset for my very own purposes and took decisions that fulfilled my requirements. If you find anything that isn't ideal for your very own project I'm sorry about that, but it's not likely that any changes will be made for your specific purposes.
I will not provide any kind of support about this system. It's a very complex package that modifies a lot of parts of the ROM and providing support in such cases is outright impossible.
Any question I receive will most likely replied with a link to the wiki unless it's a bug report about the API or any SMW sprite I've converted.