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
nmlgc
3f25caa5df
[Reverse-engineering] [th02/th03/th04/th05] DOS memory assignment sizes
...
Changing the variable suffix to _paras rather than _siz here, since
master.lib uses the latter for byte sizes, while these are paragraphs.
2019-11-24 14:04:34 +01:00
wintiger0222
0009c3c161
[Reduction] [th03/th04/th05] game_exit_to_dos
2019-11-24 12:45:25 +01:00
wintiger0222
34b7b61964
[Reduction] [th03/th04/th05] game_exit
2019-11-24 12:45:17 +01:00
wintiger0222
5f0b2642ea
[Maintenance] Fix #include syntax for mdrv2.c
2019-11-24 12:45:08 +01:00
nmlgc
e9453bffe0
[Contributing] Add a rule against decompiling self-modifying code
...
Will come up soon in TH03, actually.
2019-11-20 00:22:43 +01:00
nmlgc
afbc7eb381
[Contributing] Add some welcoming words for new contributors
...
And the explicit permission to also do something as seemingly trivial
as naming functions or data on separate branches, which apparently
still needed to be said somewhere.
2019-11-20 00:22:26 +01:00
nmlgc
c196cdb41e
[Contributing] Fix a few minor typos and omissions
2019-11-19 23:09:36 +01:00
nmlgc
8b627803a3
[Position independence] Vector calls and variables
...
Raw, uninteresting position independence work. Or maybe not, given that
this was one of the few things that also apply to TH01, and reveal just
how chaotically this game was coded. And so we've got three ways that
ZUN stored regular 2D points: Regularly (X first, Y second), Y first
and X second, and multiple points stored in a structure of arrays…
Completes P0059, funded by [Anonymous] and -Tom-.
2019-11-18 22:24:24 +01:00
nmlgc
550bba9b3c
[Position independence] False positives in master.lib EGC function calls
...
Mostly used for screen shaking.
Part of P0059, funded by [Anonymous] and -Tom-.
2019-11-18 22:21:34 +01:00
nmlgc
3d7211b128
[Position independence] Remaining motion structures and comparisons
...
Part of P0059, funded by [Anonymous] and -Tom-.
2019-11-18 22:21:29 +01:00
nmlgc
ad22ce26c2
[Reverse-engineering] [th04/th05] Player position clamping
...
Part of P0059, funded by [Anonymous] and -Tom-.
2019-11-18 22:21:23 +01:00
nmlgc
b37611b1be
[Maintenance] Add an underscore to the player_pos variable
...
No need to declare them as `pascal` on the C side only because I messed
up when naming them first.
Part of P0059, funded by [Anonymous] and -Tom-.
2019-11-18 22:21:15 +01:00
wintiger0222
01de2900dd
[Decompilation] [th01] frame_delay
...
Closes #7 .
2019-11-18 21:29:43 +01:00
nmlgc
fef0299fbc
[Reverse-engineering] [th04/th05] Midboss / boss explosion phase constants
...
In the end, the explosions remain the only constant in these phases,
everything else ("defeat"? "last phase"?) could have been
misunderstood. And yes, the algorithm really treated these 111
constants as potential memory references…
Completes P0058, funded by -Tom-.
2019-11-14 00:57:38 +01:00