The translation units were probably a better place back when most of
the codebase was still compiled in C mode, we only had a few C++ TUs,
almost everything needed to be declared as `extern "C"`, and moving
these declarations into the headers would have been really noisy with
all the `#ifdef __cplusplus` / `#endif` required. Nowadays though,
we've greatly reduced that surface area. And given that headers will
include even more headers as part of the upcoming `#include` cleanup,
it makes sense to make the jump now.
Part of P0284, funded by [Anonymous] and Blue Bolt.
Much more than usual, now that we've got a snappy build system! This
commit covers
• All .PI functions across all games
• TH02's High Score entry functions
• TH03's shots_update() and shots_render()
• All functions declared in `th04/op/op.hpp`
• TH04/TH05's bb_txt_put_8_raw(), bullet_template_clip(),
player_pos_update_and_clamp(), score_update_and_render(), and
slowdown_frame_delay()
• TH05's reimu_stars_update_and_render(), score_delta_commit(),
stage2_invalidate(), stage2_update(), and space_window_set()
Part of P0284, funded by [Anonymous] and Blue Bolt.
The asymmetry of having to do this for TH05's resident structure but
not for TH04's has finally become annoying enough.
Part of P0263, funded by [Anonymous].
We don't really gain anything from pretending that these description
IDs are anything other than raw array indices.
Part of P0262, funded by [Anonymous] and Blue Bolt.
Wait, *what*, the alignment issues even stretch up to those functions?
And since TH05's version of the MIKO.CFG code lies much further down,
we now end up with this horrible #include placement asymmetry between
the two games. At least we now don't need a cross-TU workaround for
TH04's "MIKO.CFG" string either.
Part of P0262, funded by [Anonymous] and Blue Bolt.
Once again, word alignment of a `switch` jump table forces us to put
both the game start and main menu code into the same translation unit,
despite the former being fundamentally different between the two games.
Oh well, this also avoids the need for a cross-TU workaround for the
"main" and "deb" binary filename strings.
Part of P0262, funded by [Anonymous] and Blue Bolt.
Having to comb through them and change their `#pragma option -zC` names
after adding a new one is pretty annoying, after all. This way, we also
get to move some of those 2020 decompilations out of the `th05/`
subdirectory, matching the more consistent directory hierarchy that
this project has converged on in the years since.
Part of P0261, funded by [Anonymous] and Yanga.