Language…
13 users online:  AmperSam, crocodileman94, CroNo, Dark Prince, Green Jerry, JezJitzu, mtheordinarygamer, NewPointless, RPG Hacker, Skewer,  Tahixham, W3aper, Zavok - Guests: 279 - Bots: 388
Users: 64,795 (2,373 active)
Latest user: mathew

Dynamic Spriteset System - Current version: v1.01 - Official release

  • Pages:
  • 1
  • 2
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
  • 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.



Demonstration
Absolutely incredible. This is insane! #smrpg{gasp}
this isn't dead btw

progress is being made and the conversion/evaluation of every sprite ID in the game (0x00-0xFF) is about 70% done. hopefully in this month the list will be completed. you can track the progress in either in my channel at sneslab or this github issue

there isn't much left and proper testing will begin, as i need to evaluate the flow of a level where things aren't as regulated as my test suite (only test one or two sprites at a time) so i can adjust some smaller things in this system such as the amount of tiles uploaded to vram each frame or the amount of available decompression buffers for graphics
documentation is now available in the wiki!

it includes info about everything you can use from the system and some code examples as well (more codes will be added later!)





every single sprite has been evaluated and converted if necessary for DSS.

all that's left is testing stability and finishing the wiki

and speaking of the wiki, it's mostly complete at this point, you can read the progress here: link

and finally... i've added a disclaimer about my stance on this project on the repo, which i'll post here as well:

Originally posted by me on github
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.


a little bit controversial, but i do hope you guys understand my goal with the project.


This is super impressive, and something that seems like it'll be incredibly powerful in use. Hopefully we'll see more widespread support for it over time, at least as alternative versions to sprites.

Quote
a little bit controversial, but i do hope you guys understand my goal with the project.

Honestly understandable. With a huge rewrite like this it's more on other resources to provide support for this rather than the reverse.

Professional frame-by-frame time wizard. YouTube - Twitter - SMW Glitch List - SMW Randomizer
Originally posted by Thomas
This is super impressive, and something that seems like it'll be incredibly powerful in use. Hopefully we'll see more widespread support for it over time, at least as alternative versions to sprites.

Yup! This will be extremely useful in a lot of situations and it's a little bit customizable as well via uberasm :P

It's possible to test DSS right now, but I haven't finished deciding how everything will be organized nor I've finished the custom displays for sprites in LM so they don't show as garbage in the editor so things are going to be updated and may not be exactly the same in the final release.

Once I'm done writing the wiki and finish the things I mentioned above I'll publicily ask for testing. I really want this to be stable and feel natural when it comes to designing levels and have clear enough instructions.
I really like it, just tell me if it works and how is it done?



List Soundtrack - List Hacks

Mega Man X3 OSTs
Originally posted by Infinity
I really like it, just tell me if it works and how is it done?

It does. Check the first post.
DSS v0.01

I've made a proper prerelease.

It includes everything listed under the "Features" in the wiki and readme.md.

You can test DSS right now and can help me to test the stability of the system and the documentation in the wiki (not priority).

Please don't contact me via DM or PMs, there's a big chance I'll ignore them or reply with a wiki link. Try to keep everything in this thread!

Before reporting any sprite not working check the issues page in the repo.
DSS v0.02

This version includes some fixes related to Yoshi.

DSS v0.03

This version includes fixes related to spinning coins and garbage tiles in score sprites.
DSS v0.04

Fixed an issue with yoshi's fireball.

DSS v0.05

Fixed a bunch of issues. Check the changelog in the wiki.
I did have a bunch of bugs from v0.01 that I was going to report, but you've already fixed a ton of them before I had chance to put them in a post :)

That being said, there's still some which I've noticed:

- The Dry Bones Bone has glitched graphics for a frame after being spawned the first time. Subsequent Bones are fine.
- The Bowser fight is a hot mess :')
Away, demon!
Feather Fireworks
Not sure how difficult this would be to fix or if it could be fixed at all due to how hardcoded the fight is. You also mentioned the system was made for your own hack needs so it's understandable if you don't need the bowser fight.
- Some enemies (such as the koopas and bullet bill) are glitched during the credits/cutscenes.
- The following sprites have glitched LM displays:
Boss fireball, stationary.
Bird from Yoshi's house, max of 4.
Puff of smoke from Yoshi's house.
Ghost house exit sign and door.
Reznor.
The stationary Boss fireball is also broken in terms of functionality. The one spawned from Ludwig works fine though.

I also haven't been able to test with any custom sprites yet, since I'm having an issue with the GFX queue: The code examples and routine documentation in the wiki use a %FindAndQueueGFX() macro, but during insertion pixi says this macro isn't found (there was also nothing that had to be moved to pixi's "routines" folder). This is probably some dumb mistake I made with where the files should be, but I'm certain I copied everything.

Most of the bugs I've found (mainly the now fixed ones) were from an 11 exit playthrough of vanilla. I'll keep testing and see what else I can find.

And for the record, I really love this. #smw{:peace:}
DSS v0.06

What's changed:
  • Garbage collector now properly marks as unused graphics if !dss_vram_dest is changed
  • Made Bowser's bowling ball compatible
  • Bowser fight and Lemmy fight now work properly
  • Disabled special world graphics upload
  • Added FindAndQueueGFX routine for PIXI
  • Fixed dry bones showing a glitched tile if the projectile wasn't loaded
  • Fixed ground grinders crashing the game
  • Fixed mushroom in a buble using the wrong graphics
  • Fixed the boo stream's lead boo having glitched graphics
  • Fixed the blurp not being properly flipped in certain situations


If you're using a previous version, you need to check out the uberasm list changes in the installation guide, some things were added and others were moved.




Originally posted by JamesD28
Missing %FindAndQueueGFX()

Whoops! I forgot about this one!

Originally posted by JamesD28
- Some enemies (such as the koopas and bullet bill) are glitched during the credits/cutscenes.

That's due to their graphics in SP1 being non existant. I don't think I'll fix these on my own as I've never done anything with the credits :P

Originally posted by JamesD28
- The following sprites have glitched LM displays

Those sprites don't have proper displays as they weren't converted to use DSS. They're too situational to be actually used with the system even though I did create tilemaps for other unused sprites... but that's another story.

Originally posted by JamesD28
The stationary Boss fireball is also broken in terms of functionality. The one spawned from Ludwig works fine though.

I'm not sure if this one even works outside the boss room... so I'll leave it like that :P

Originally posted by JamesD28
- The Bowser fight is a hot mess :')

Fixed! Thanks to DSS's flexibilty, you can define which tiles will be overwritten first with the system and avoid this horrible situations.

Originally posted by JamesD28
- The Dry Bones Bone has glitched graphics for a frame after being spawned the first time. Subsequent Bones are fine.

Fixed.

Originally posted by JamesD28
And for the record, I really love this. #smw{:peace:}

Thanks!
DSS v0.07

This is possibly the last beta version this patch receive. It includes very minor fixes which can be found in the changelog

I've also opened a page in the wiki to host a list of resources compatible with DSS.

If you're using a previous version, you need to check out the uberasm list changes in the installation guide, some things were added and others were moved.

I'm still looking for feedback about how it feels to build levels with DSS, I've received feedback from a few people but the more, the merrier.
In DSS v0.07, the spotlight's idle frame still doesn't show up properly. Did you oversee your proposed fix for that?
My Mode 0 guide.

My Discord server. It has a lot of archived ASM stuff, so check that out!

Apparently I've never pushed the fix. I've silently updated the release with the fix (same version & same link).
DSS v1.00

It's finally done.

I'll limit myself to only provide bug fixes and updating the compatible sprites page on the wiki.

Special thanks to the testers I had during the process:
  • anonimato
  • Ayami
  • Big Brawler
  • Carld923
  • gusano
  • IvanSword
  • JamesD28
  • LMPuny
  • yupilongas
DSS v1.01

Some fixes I've compiled regarding custom sprites support while also adding some small scripts to make editing ExGFX files less of a pain with so many separate files.
I've made possible to use up to 510 different ExGFX files with DSS, which is effectively double the amount from the previous versions.

The next DSS version will feature those extra ExGFX slots alongside with minor extended, smoke, score and spinning coin sprites support, which will require the user to migrate to the current early version/master branch of PIXI. Due to that, the 2.00 version of DSS will be released after said PIXI version is also released.

You can mess around with the implementation which I barely have tested at the time of this post by downloading the master branch of the GitHub repo and downloading PIXI's master branch... which might not be exactly up to date right now.

For bug reports you can either use this thread or talk directly in my channel at SnesLab (link on my title).
  • Pages:
  • 1
  • 2