1. Dealloc now uses the normal dealloc procedure.
* Better because normalisation is quick, O(1).
* More normalisation means inserting into the list is faster.
2. Run sfx frame during the generation of upgrades (which can take an
unbounded amount of time).
* Both of these are required to remove the stuttering.
* It sounds really weird now that it works right :/
- [ ] Changelog updated / no changelog update needed
* A redesign of objects giving the option of a more managed and an
unmanaged system.
* Managed system features
* Z ordering (should be efficient, based on a doubly linked list).
* More than 128 objects if some are disabled (not currently efficient).
* Unmanaged
* Same sprite system as before.
* You control how objects get put in to OAM with the unmanaged OAM.
TODO before this is mergable:
* [x] Docs pass, aim for everything to have docs as before.
* [x] Tests, some of these needs some run time testing.
* [x] Affine matrices, I'm not leaving this to die this time.
* [x] Some API redo, so the names make sense / are similar to before.
Future work:
* The Sprite loader should keep most recently used sprites around and
upon allocation of a new sprite try unloading the least recently used
sprite. (Performance wise this would be a disaster as it would be doing
dealloc and alloc in vblank, so really we want to "learn" how much
buffer we should maintain and try to get that during GC).
- [x] Changelog updated
Replaces `include_gfx!` with `include_background_gfx!` which is much
nicer since it doesn't require the external toml file. See the example
repos for how much better it is :).
Also adds support for aseprite files in `include_background_gfx` and
uses that ability where we still have the original files.
- [x] Changelog updated / no changelog update needed