Commit Graph

863 Commits

Author SHA1 Message Date
nmlgc deb1b73016 [Maintenance] Use a single DEFCONV definition file to cover all games
This makes a lot more sense in C land, where we can then #include this
tiny file in front of all DEFCONV declarations.
2019-12-17 23:27:01 +01:00
wintiger0222 13e4476cc8 [Naming] [th04/th05] MPTN functions 2019-12-17 23:27:01 +01:00
wintiger0222 67ab2f4a41 [Naming] [th01] Game init and exit functions 2019-12-17 23:27:01 +01:00
wintiger0222 990a1e2c94 [Naming] [th03/th04/th05] Main and option menu functions 2019-12-17 23:27:00 +01:00
wintiger0222 04f0491885 [Naming] [th03/th04/th05] .cfg file functions 2019-12-17 23:27:00 +01:00
wintiger0222 e219527964 [Naming] [th03/th04/th05] High score menu functions 2019-12-17 23:27:00 +01:00
wintiger0222 b95a625d87 [Naming] [th04/th05] Character select screens 2019-12-17 23:27:00 +01:00
wintiger0222 02d1c04858 [Reverse-engineering] [th05] Character selection and unlock variables 2019-12-17 23:27:00 +01:00
nmlgc 50c36f5551 [Reverse-engineering] Player character constants 2019-12-17 23:26:59 +01:00
wintiger0222 6e741bb1e1 [Reverse-engineering] [th04] cdg_put_plane_roll
Used for the falling blue stars in TH04 Stage 5 --Nmlgc
2019-12-17 23:26:59 +01:00
nmlgc 417ba80c00 [Decompilation] Add a separate segment type
At least wherever Turbo C++ and master.lib want us to use a
non-pointer, since both use uint16_t for segment values throughout
their APIs instead of the more sensible void __seg*. Maybe, integer
arithmetic on segment values was widely considered more important than
dereferencing?
2019-12-17 23:26:59 +01:00
nmlgc 59bbe313ad [Decompilation] Add separate types for 1bpp planar pixel lines 2019-12-17 23:26:59 +01:00
nmlgc 9cb6cc527a [Decompilation] Finally declare <stdint.h> types
*Finally*. We already used `(unsigned) int` in quite a few places where
we actually want a 16-bit value, which was bound to annoy future port
developers.
2019-12-17 23:26:58 +01:00
wintiger0222 cb45bf5a80 [Reverse-engineering] [th04/th05] EGC-powered page 1→0 region copies 2019-12-17 23:26:58 +01:00
wintiger0222 0dcfc445b8 [Reverse-engineering] [th03] input_wait_for_ok_or_measure()
Moving this into hardware/, since we already have an
input_wait_for_change() function there. --Nmlgc
2019-12-17 23:26:58 +01:00
wintiger0222 c140281ba7 [Naming] [th01] graph_putsa_fx 2019-12-17 23:26:58 +01:00
wintiger0222 590436dfa8 [Reduction] [th03] graph_putsa_fx
Fine, let's drag that ASM slice along, instead of immediately reusing
the already decompiled TH02 version… The website really needs a
decompilation metric soon, anyway. --Nmlgc
2019-12-17 23:26:58 +01:00
wintiger0222 9173833a8d [Reverse-engineering] [th01] grcg_setcolor() C reimplementations 2019-12-17 23:26:57 +01:00
wintiger0222 88a9143309 [Reverse-engineering] [th01] JIS X 0208 東方★靈異伝 code points 2019-12-17 23:26:57 +01:00
wintiger0222 c0705c395c [Naming] [th03/th04/th05] Music Room functions changed from TH02 2019-12-17 23:26:57 +01:00
wintiger0222 d7906ef78e [Reverse-engineering] [th04/th05] ZUN Soft logo 2019-12-17 23:26:57 +01:00
nmlgc c6ab779897 [Maintenance] [th04/th05] Correctly declare the ZUN Soft explosion functions 2019-12-17 23:26:57 +01:00
wintiger0222 38e8fd6a8d [Reverse-engineering] [th04/th05] Music Room / ending background image buffers
"bgimage" really was the best name I could come up with here, given
what it's used for. Everything else sounded way too ambiguous. Even
something like "mempage", in the meaning of "a third memory-backed
graphics page"… --Nmlgc
2019-12-17 23:26:56 +01:00
wintiger0222 9684cf5312 [Reduction] [th03] Music Room comment back buffer
I think cmt_back_* type functions need more universal name
Because at th04 and th05, it used in zunsoft opening animation
--WindowsTiger

And in MAINE.EXE. So I agree for TH04 and TH05, but TH03 still only
allocates, snaps, and recovers only the VRAM area occupied by the music
comments. --Nmlgc
2019-12-17 23:26:56 +01:00
wintiger0222 1317273aa0 [Reduction] [th03/th04/th05] Music Room code identical to TH02 2019-12-17 23:26:56 +01:00
wintiger0222 680af1afd9 [Position independence] [th03/th04/th05] Music Room file names and titles 2019-12-17 23:26:56 +01:00
wintiger0222 2a722db215 [Reverse-engineering] [th05] Music Room piano functions
No need to declare most of these in C land if 1) it isn't even clear
yet whether we can even decompile these functions with their 2)
complex __usercall conventions, which 3) aren't even called from
outside this slice. --Nmlgc
2019-12-17 23:26:56 +01:00
wintiger0222 53f316792f [Reverse-engineering] [th05] Music Room piano sprite data 2019-12-17 23:26:56 +01:00
wintiger0222 b25ec3d138 [Reverse-engineering] [th05] PMD work area and piano note data
Good job identifying what is bascially the QQ structure from PMDWin!
--Nmlgc
2019-12-17 23:26:55 +01:00
wintiger0222 2b617dfa75 [Reverse-engineering] [th05] Music Room piano coordinates 2019-12-17 23:26:55 +01:00
wintiger0222 b74b7f9bce [Reverse-engineering] [th05] Music Room piano label font 2019-12-17 23:26:55 +01:00
wintiger0222 d0c4de0c7f [Naming] [th04/th05] GameCore 2019-12-17 23:26:55 +01:00
wintiger0222 895884fc7a [Naming] [th02/th04/th05] HUD display functions 2019-12-17 23:26:55 +01:00
wintiger0222 25903719a3 [Naming] [th02] Current and high score 2019-12-17 23:26:55 +01:00
wintiger0222 1ffa121821 [Naming] [th02] Gaiji loading
Renaming these to gaiji_load() and gaiji_free() for consistency with
other functions that load files. --Nmlgc
2019-12-17 23:26:54 +01:00
wintiger0222 0b084b83c3 [Reverse-engineering] [th04/th05] graph_putsa_fx 2019-12-17 23:26:54 +01:00
wintiger0222 75f05c8b90 [Reverse-engineering] [th04/th05] graph_putsa_fx tables 2019-12-17 23:26:54 +01:00
wintiger0222 6e09a2c15f [Naming] [th04/th05] graph_putsa_fx 2019-12-17 22:44:30 +01:00
wintiger0222 811ba84e3f [Reverse-engineering] [th03/th04/th05] snd_delay_until_measure 2019-12-17 22:44:27 +01:00
wintiger0222 e8c9876bef [Reverse-engineering] [th05] Current BGM measure
Split off from the delay function in this game, since the ending syncs
a bunch of things independent from any frame delays. -Nmlgc
2019-12-17 22:44:23 +01:00
nmlgc a23dab3154 [Reverse-engineering] MMD ticks-per-quarter-note constant
And then, ZUN hardcodes all measure-related functions to 4/4…
2019-12-17 22:40:05 +01:00
nmlgc 5f4f5d87dc [Decompilation] [th03] Shot update and render functions
Meh, can't overload arithmetic operators that take a Subpixel without
generating a needless load and store, even with -Z. But heck, slightly
uglifying subpixel/subpixel arithmetic is exactly the right trade-off.

Completes P0061, funded by Touhou Patch Center.
2019-12-05 21:41:31 +01:00
nmlgc 8b01c60f44 [Maintenance] Move PC-98 hardware constants to a separate include file
SPRITE16 would also like to refer to those later.

Part of P0061, funded by Touhou Patch Center.
2019-12-05 21:38:39 +01:00
nmlgc 5c1a864432 [Reverse-engineering] [th03] Shot pair structure
Yup, one structure instance describes one *pair* of shot sprites in
TH03.

Part of P0061, funded by Touhou Patch Center.
2019-12-05 21:38:32 +01:00
nmlgc 296f9f61c2 [Reverse-engineering] [th03] Playfield shaking
Which only applies to the set of sprites considered to be in the
foreground, so no EGC acceleration.

Part of P0061, funded by Touhou Patch Center.
2019-12-05 21:36:02 +01:00
nmlgc 4030ef737a [Reverse-engineering] [th03] Character movement and gauge charge speeds
Part of P0061, funded by Touhou Patch Center.
2019-12-05 21:35:02 +01:00
nmlgc 4d3d6acd28 [Decompilation] Templatize subpixels to offer both 16-bit and 8-bit variants
Yup, TH03 actually uses a 4.4 fixed-point format.

Part of P0061, funded by Touhou Patch Center.
2019-12-05 21:27:53 +01:00
nmlgc bb6b0f1cc3 [Maintenance] Move the Subpixel class to a separate header, under TH03
Part of P0061, funded by Touhou Patch Center.
2019-12-05 21:21:56 +01:00
nmlgc 04d24ccf1c [Reverse-engineering] [th03] Character IDs
Part of P0061, funded by Touhou Patch Center.
2019-12-05 21:21:49 +01:00
32th System 96684f45dc [Reverse-engineering] [th04/th05] Pause menu 2019-11-30 19:36:07 +01:00