This sprite is useful. After all, it brightens barely lit rooms much like in Super Metroid where they're originally coming from. You don't want to kill to many of them.
Be careful, they can still hurt you! And they still die from contact!
Fixed a few issues with this sprite:
- The diagonal-up setting did not work: the Firefly just jittered a bit while moving up and down vertically. The issue was that the directions for the X and Y component were being handled by a single flag and the attempted workaround was to just invert the X speed every frame (which caused the jittering) - I instead separated them to each have their own direction flag, and this also allowed their movement state pointers to be consolidated into a single code.
- The UberASM code was only looping through the bottom 12 slots, which meant that higher slots didn't get checked on SA-1. This usually had the effect of making the room go completely dark even if Fireflies were present.
- There was no check for a "No Yoshi" cutscene active, which caused the intros to be completely dark.
I also fixed a graphical issue with the .json's LM display icons (after painful trial and error - I think this is an issue with transparent tiles and the Map16 string that gets outputted). There were also some json list name/extra byte settings that were incorrect, and also a small typo in the readme (referring to ExGFX3BA/3BB as ExGFX80/81). Everything else works as intended, so, accepted. A very interesting sprite!
Additional note: the Light Bug sprite by wiiqwertyuiop is being kept as an alternative, since it uses a different method to darken the screen (screen brightness register), and darkens the screen by total Fireflies killed instead of tracking the number of Fireflies currently spawned. Keep in mind though that the Light Bug version lacks SA-1 compatibility, and appears to have a few issues.