* Split up the ARM9 code (.text, .vectors) and data (.rodata, .data, .bss) sections into their own ELFs.
This allows us to use more ARM9 WRAM while leaving the 128k BootROM mirror intact.
* use the makefile definition
* Also dump section headers on .dis file
- New! Chinese (Simplified) 100%
- German 100%
- French 94%
- Dutch 46%
- Spanish 41%
- Italian 27%
- Ryukyuan 18%
- Indonesian still 100%, but changed
* Automate language.inl file
* Move version number to JSON file
Better than being a magic number somewhere in the code, source code gets it from source.json
* Automate creation of .trf translation files
* Embed the VRAM tar data in the ARM9 executable
* Fix Makefile dependency order
* Use address difference instead of absolute word for the VRAM drive limit
* Correct installable address whitelist
blacklist is stored at 0xb088~0xb0bf, which is ulong[14] in
{start(inclusive), end(exclusive)} pair.
one thing to note is that boot9 use inclusive comparing with
blacklist start for both section load address and
section load address + section size (comparing logic is
at 0xa42e~0xa449), so if the firm fits perfectly at the end
of the space right before the blacklisted range,
it'll also be rejected.
* shrink vram drive size to avoid bleeding into blacklisted range
This commit looks a lot bigger than it really is, I noticed a couple spots where with these issues so I ran a regex to find all possible occurrences and switched all that could be, after manually ensuring it was actually correct
Using sizeof on the buffer (as long as the buffer is a char *array*, not a pointer!!) greatly reduces the chance of something having the wrong size because of a later change to the buffer, notably a couple snprintfs were missed in the UTF_BUFFER_BYTESIZE change
Actually a little more than ASCII, everything that was previously from the Linux kernel font
Linux is GPL2, GM9 is GPL3, thus this is sorta kinda maybe in violation of that
It's complicated since typefaces cannot be copyrighted in many countries, so arguably it's fine