This commit implements a vertical menu widget, which should be quite a bit more flexible than
what we currently have.
It defines interfaces in order to respond to selection changes, show and hide. And has a i_item_widget
interface class to allow you to use custom item widgets.
This is done in preparation for adding a debug menu, in which I kinda want to add toggle options
while using the same vertical_menu widget.
Right now, vertical_menu is only used in Select_Menu. Needless to say that Select_Menu was reworked quite a bit.
Still, in terms of visuals or functionality, the changes should be invisible for now. I mean, I didn't do anything *new* with it yet.
This commit integrates the MaxMod sound engine into PTGB.
Some test code already existed, but now it's done for real.
I added a thin API wrapper in sound.c/sound.h to abstract the sound engine.
One of AquaticAlloy's test songs was added to the main menu as a proof of concept.
We may want to disable it before the actual merge though.
Problem 1: syntax error in text_helper
Fix 1: single quotes instead of double quotes
Problem 2: the ground shifted beneath our feet with the devkitpro/devkitARM base image again.
The --break-system-packages option no longer exists on pip install.
Fix 2: Use a specific tag of the devkitpro/devkitARM docker image to ensure this won't happen again.
Instead of each macro being a ternary (which can't be constant folded),
the values are now stored sequentially.
Additionally, I use byte instead of int and made the tables static
-1300 bytes.
The problem was that our custom_malloc was not marking these functions as extern "C".
Therefore libc's malloc function and everything linked to it was still getting pulled into our
rom.
Fix: mark these functions as extern "C". This ensures that these functions aren't getting pulled in
from libc. This reduces our rom size by 3KB