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
nmlgc
30e6b7c3db
[Maintenance] Correctly declare all input functions
...
The pascal calling convention for TH03's input mode functions actually
sort of matters, since we have this nice function pointer type that
expects pascal.
2019-11-30 19:34:55 +01:00
nmlgc
a6a805f008
[ZUN symbols] key_det / shiftkey
...
Not applying this leak to TH03 since it would have more than one
`key_det` variable, resulting in names that are as much fanfiction as
the current ones…
2019-11-30 19:32:10 +01:00
nmlgc
73f5ae79a0
[Reverse-engineering] [th03] Demo frame counter
...
My dumb parser identified this as a reference to the PI header slots,
which is why it's here now!
Completes P0060, funded by Touhou Patch Center.
2019-11-28 23:23:30 +01:00
nmlgc
5bffab4f43
[Position independence] [th04/th05] Remaining references to PI slots
...
Part of P0060, funded by Touhou Patch Center.
2019-11-28 23:23:30 +01:00
nmlgc
619203a1c9
[Position independence] [th02/th03/th04/th05] Color palettes
...
Part of P0060, funded by Touhou Patch Center.
2019-11-28 23:23:29 +01:00
nmlgc
b6e0330ff6
[Decompilation] [th03] Sprite display calls
...
Yes, decompilation, of something that was so obviously originally
written in ASM. We're still left with two un-decompilable instructions
here, but I'm amazed at how nicely I was able to abstract away all of
the gory register details, leading to pretty clear, readable, and dare
I say *portable* code?! Turbo C++ was once again pretty helpful here:
• `static_cast<char>(_BX) = _AL` actually compiles into `MOV BL, AL`,
as you would have intended,
• and no-op assignments like _DI = _DI are optimized away, allowing
us to leave them in for clarity, so that we can have all parameter
assignments for the SPRITE16 display call in a single place.
I love this compiler.
Part of P0060, funded by Touhou Patch Center.
2019-11-28 23:14:21 +01:00
nmlgc
2269d0c29c
[Reverse-engineering] [th03] Playfield sprite clipping coordinates
...
Part of P0060, funded by Touhou Patch Center.
2019-11-28 23:12:10 +01:00
wintiger0222
29385dd7cb
[Naming] [th02] text_wipe
2019-11-24 16:02:43 +01:00
wintiger0222
61a2df2d71
[Naming] [th04/th05] EMS area setup
2019-11-24 16:02:43 +01:00
wintiger0222
37fb6eba32
[Naming] [th02/th04/th05] Demo loading and playback
2019-11-24 14:14:13 +01:00
nmlgc
7c80fb01f2
[Contributing] Establish how to cite ZUN's source code leaks
2019-11-24 14:14:13 +01:00
wintiger0222
22bf71d170
[Reduction] [th03/th04/th05] game_init_main
2019-11-24 14:14:13 +01:00
wintiger0222
9b9f487d6c
[Naming] [th03/th04/th05] graph_putsa_fx
...
Let's cover this one during decompilation.
2019-11-24 14:14:05 +01:00
wintiger0222
09edcab744
[Reduction] [th03/th04/th05] game_init_op
2019-11-24 14:04:36 +01:00
nmlgc
71c737c4ee
[Maintenance] Move DOS memory assignment sizes to separate files
...
Ideally, these could be calculated from some other game-specific
parameters? Anyone else who wants to look into this?
2019-11-24 14:04:36 +01:00