Commit Graph

205 Commits

Author SHA1 Message Date
nmlgc 7a44adf8d0 [Maintenance] Use the C++ resdata_*() wrappers in all ZUN.COM sub-binaries
Getting us completely macro-free there… even though it did require a
separate version of those functions if the ID is a pointer.

Part of P0134, funded by [Anonymous].
2021-02-20 15:46:48 +01:00
nmlgc 1d5db7155a [Separate translation units] [th02/th03/th05] game_init_op()
Completes P0133, funded by [Anonymous].
2021-01-31 16:53:59 +01:00
nmlgc e8588b1b0a [Separate translation units] [th02] game_exit()
Part of P0133, funded by [Anonymous].
2021-01-31 16:53:55 +01:00
nmlgc 84d4914a3b [Separate translation units] [th02] snd_mmd_resident() (undecompilable)
Reason: Wants to be word-aligned, and the previous version in OP.EXE,
game_exit(), is not, despite having an even length :(
Oh well, at least I'm confident enough about it by now to document it.
And out of all decompilations to be thrown away, this is a pretty
dispensable one.

Part of P0133, funded by [Anonymous].
2021-01-31 15:21:11 +01:00
nmlgc cdbd621f91 [Separate translation units] [th02] snd_determine_mode()
Perfectly decompilable with pseudo-registers. Why did I decide against
them in 2015?

Part of P0133, funded by [Anonymous].
2021-01-31 15:18:09 +01:00
nmlgc 5bbc08c3ef [Separate translation units] [th02] snd_pmd_resident()
Seemingly impossible to decompile further.

Part of P0133, funded by [Anonymous].
2021-01-31 15:18:06 +01:00
nmlgc c77a5fd8ed [Separate translation units] [th02] snd_delay_until_volume()
Part of P0133, funded by [Anonymous].
2021-01-31 15:14:55 +01:00
nmlgc d8bf578ad1 [Separate translation units] [th02] snd_load()
Almost not decompilable for alignment reasons!

Part of P0133, funded by [Anonymous].
2021-01-30 19:57:28 +01:00
nmlgc 3428739f80 [Separate translation units] [th02] .MPTN: Inner load functions
Part of P0133, funded by [Anonymous].
2021-01-30 19:53:00 +01:00
nmlgc ce25a6e579 [Separate translation units] [th02/th03/th05] game_init_main()
Oh look, new content! Gotta finish this push at some point, after all…

Part of P0133, funded by [Anonymous].
2021-01-30 19:50:32 +01:00
nmlgc 665f7d30bc [Maintenance] [th02] Move packfile declarations to their own header
Part of P0133, funded by [Anonymous].
2021-01-30 19:40:21 +01:00
nmlgc 0ce869c30a [Maintenance] Complete the master.hpp transition
Part of P0133, funded by [Anonymous].
2021-01-30 19:22:29 +01:00
nmlgc 9d23f26445 [Maintenance] [th02] Move HUUHI.DAT declarations to their own file
The `struct date` members in `scoredat_t` add a dependency on <dos.h>
to the entire header file. Makes sense to move it out as early as
possible.

Part of P0133, funded by [Anonymous].
2021-01-30 19:20:08 +01:00
nmlgc 72c32c8c9c [Maintenance] [th02] Compile more C translation units as C++
Everything that uses input and master.lib graphics functions.

Part of P0133, funded by [Anonymous].
2021-01-30 19:19:50 +01:00
nmlgc 21d82fab04 [Maintenance] Declare the input bitflags in a consistent way
Turns out the inlining behavior of `const` variables at global scope
that we've been relying on lately is actually exclusive to C++ mode…
once again!

Part of P0133, funded by [Anonymous].
2021-01-30 19:13:11 +01:00
nmlgc 0d137ee526 [Maintenance] Move the vram_planes_set() declaration to its own header file
Might seem inconsistent, given that the function initializes pointers
that are declared in planar.h… but it's always called from other game
initialization functions that don't require pc98.h or planar.h.

Part of P0133, funded by [Anonymous].
2021-01-30 19:11:55 +01:00
nmlgc 53d3a6fb73 [Maintenance] [th02] Move the resident structure declaration to its own file
Consistency at last.

Part of P0133, funded by [Anonymous].
2021-01-30 18:53:07 +01:00
nmlgc 27bf06751a [Maintenance] master.hpp transition: Keyboard functions
Part of P0133, funded by [Anonymous].
2021-01-30 18:34:14 +01:00
nmlgc ec8be31cd3 [Maintenance] Move PC-98 keyboard declarations to their own header file
140 lines that are only used in, like, 7 translation units.

Part of P0133, funded by [Anonymous].
2021-01-30 18:26:46 +01:00
nmlgc c12f9ea5f6 [Decompilation] [th03] game_exit_from_mainl_to_main()
Stupid one-off functions deserve stupid names…

Part of P0132, funded by [Anonymous].
2021-01-05 22:16:19 +01:00
nmlgc 3f61342898 [Decompilation] [th03] graph_putsa_fx()
Part of P0132, funded by [Anonymous].
2021-01-05 22:08:56 +01:00
nmlgc f539cca15d [Decompilation] [th03/th04] snd_delay_until_measure()
Part of P0132, funded by [Anonymous].
2021-01-05 21:56:57 +01:00
nmlgc 8ef8f78cc9 [Maintenance] Add a PMD/MMD-independent wrapper for KAJA_GET_SONG_MEASURE
No pseudo-registers in the usage code! Awesome!

Part of P0132, funded by [Anonymous].
2021-01-05 20:02:28 +01:00
nmlgc 3bf078b68c [Separate translation units] [th02/th03/th04] pi_load()
Part of P0132, funded by [Anonymous].
2021-01-05 20:01:44 +01:00
nmlgc c8fa3311b1 [Separate translation units] [th02] Unaccelerated page 1→0 rectangle blitting
Not using the EGC, because we gotta go slow in the main menus…?

Part of P0132, funded by [Anonymous].
2021-01-05 19:55:42 +01:00
nmlgc a1653146da [Separate translation units] [th02] 2D vector functions
Part of P0132, funded by [Anonymous].
2021-01-05 19:51:41 +01:00
nmlgc d70db0e3dc [Maintenance] Move .PI row pointer arithmetic to its own macros
Part of P0132, funded by [Anonymous].
2021-01-05 19:35:31 +01:00
nmlgc dd7e200f3b [Separate translation units] [th02] .PI blitting
Part of P0132, funded by [Anonymous].
2021-01-05 19:34:59 +01:00
nmlgc 8580251c06 [Separate translation units] [th02] snd_kaja_interrupt()
Part of P0132, funded by [Anonymous].
2021-01-05 19:33:37 +01:00
nmlgc b9c24cf931 [Separate translation units] [th02] snd_delay_until_measure()
How was this game even *built*, originally, if it uses *both* a common
shared set of library functions *and* obviously copy-pasted and
separately compiled versions of some of these functions?

Part of P0132, funded by [Anonymous].
2021-01-05 19:32:18 +01:00
nmlgc aac0108c63 [Separate translation units] [th02] Sound effect playback (undecompilable)
Reason: Same as hflip_lut_generate() – wants to be word-aligned, and
the function before it has an odd length :(

Part of P0132, funded by [Anonymous].
2021-01-05 19:29:10 +01:00
nmlgc 52fdb33d1d [Separate translation units] [th02] frame_delay()
Part of P0132, funded by [Anonymous].
2021-01-05 19:23:31 +01:00
nmlgc 0bfff60a0a [Maintenance] Define `bool` as unsigned
Wait, we can just do that, and nothing breaks?! All this time, we
could have avoided the `unsigned char` workaround???

Part of P0130, funded by Yanga.
2020-12-18 00:45:54 +01:00
nmlgc b104b3316b [Maintenance] Consistently use Borland's I/O port intrinsics
Rather than preferring either the Microsoft/Watcom `(in|out)pw?` style,
or the Borland `(in|out)portb?` style, master.lib had to introduce its
own `(OUT|IN)P[BW]` naming scheme… Insert obligatory xkcd standards
comic.

Part of P0126, funded by [Anonymous] and Blue Bolt.
2020-11-15 21:16:40 +01:00
nmlgc 4850d6d457 [Maintenance] Rename "seg2" to "SHARED"
There's the better name, in ALLCAPS for improved grepping. TH01 is also
going to need a pseudo-binary to bundle translation units that appear
in more than one .EXE, and since "segment 2" would be wrong for that
game, it makes more sense to have one consistent name for these
pseudo-binaries in all games.

(Maintenance mode commit)
2020-11-03 17:01:26 +01:00
nmlgc e8ae29ca4e [Maintenance] Remove the old `planar(8|16|32)_t` types
All code that used them has transitioned to C++, and can use the
Planar<> template.

Part of P0125, funded by [Anonymous].
2020-11-02 23:04:54 +01:00
nmlgc f1c63ab3a1 [Reverse-engineering] Assign names to all graph_putsa_fx() effects
And get rid of the constraining FX() macro, with its spacing parameter
that we haven't even seen used so far.

Part of P0124, funded by [Anonymous] and Blue Bolt.
2020-11-02 22:33:50 +01:00
nmlgc 774b172028 [Maintenance] Only define pi_load_put_8_free() a single time
The change of pi_free() from a macro to a function in TH05 doesn't
require a complete redefinition.

Part of P0124, funded by [Anonymous] and Blue Bolt.
2020-11-02 22:30:39 +01:00
nmlgc 30462cc64f [Maintenance] Indicate byte alignment for all .PI blitting functions
Part of P0124, funded by [Anonymous] and Blue Bolt.
2020-11-02 22:19:12 +01:00
nmlgc 8266bbd83e [Maintenance] Start a C++ master.lib header file
The regular master.h is big, uncomfortable in C++ mode, and bloated
with all those portability `#define`s that effectively only cover a
small portion of the PC-98-specific code anyway. So, let's gradually
transition to a new smaller header that is more integrated into the
ReC98 codebase, by simply no longer #including `master.h` in new code.

Which also explains its weird place in the root directory. Even though
`libs/master.lib/` contains plenty of game-specific modifications, it
didn't feel right to have anything in this directory refer to types
from `pc98.h`.

Part of P0124, funded by [Anonymous] and Blue Bolt.
2020-11-02 21:12:59 +01:00
nmlgc 164591f9fe [Maintenance] Consistently express angle literals in signed hex format
Originally just a workaround to remove angles from the PI counter, but
having the sign indicate the Y direction also makes them a lot nicer to
read in C land.

(Maintenance mode commit)
2020-10-02 14:48:54 +02:00
nmlgc 1610d7b63d [Maintenance] Decide on a consistent place for file-wide `#pragma`s
(Maintenance mode commit)
2020-10-01 16:35:56 +02:00
nmlgc 1801e29cb3 [Maintenance] Rename the EGC implementation files a bit
Part of P0121, funded by Yanga.
2020-09-28 13:06:11 +02:00
nmlgc b974c1a915 [Maintenance] Add separate macros for GRCG/EGC-accelerated reads and writes
Not only getting rid of the "useless" (and thankfully, consistent)
bitplane parameter, but also allowing those shortened macros to be
redefined for the upcoming little ZUN inconsistency.

Part of P0120, funded by Yanga.
2020-09-28 12:51:01 +02:00
nmlgc fe4c92a066 [Maintenance] [th01] Add separate functions for polar coordinate calculation
I'm still impressed that something like this perfectly inlines in every
place that uses this functionality so far. Maybe something about each
parameter only being used once inside the single expression of the
function?

Part of P0120, funded by Yanga.
2020-09-28 12:43:29 +02:00
nmlgc 3dd741ce98 [Decompilation] [th05] Game clear/extra unlock variable initialization
Why does this function also have to load sprites for the viewing mode
of the high score menu?! Oh well, ridiculous functions deserve
ridiculous names…

Part of P0119, funded by [Anonymous] and -Tom-.
2020-09-21 15:00:15 +02:00
nmlgc 2fde03406c [Maintenance] Move the SE reset/play/update sequence into its own function
Part of P0119, funded by [Anonymous] and -Tom-.
2020-09-21 14:59:54 +02:00
nmlgc 84baa1d477 [Maintenance] Rename the `_FORCE_INT` enum members to indicate signedness
Part of P0116, funded by [Anonymous] and Lmocinemod.
2020-09-12 12:09:30 +02:00
nmlgc 041b3a4f28 [Position independence] [th04/th05] Remaining references to the name alphabet
Part of P0116, funded by [Anonymous] and Lmocinemod.
2020-09-12 11:29:35 +02:00
nmlgc 10b60b3824 [Maintenance] [th03/th04/th05] Declare the symbol gaiji inherited from TH02
Part of P0116, funded by [Anonymous] and Lmocinemod.
2020-09-12 11:29:20 +02:00