Commit Graph

713 Commits

Author SHA1 Message Date
nmlgc 17a05b1b71 [Reverse-engineering] [th05] Secondary boss position and sprite ID
Sure, I like me some global variables too. If you have to temporarily
replace them for a single function call though, it's pretty much the
textbook example of where *not* to use them.

Funded by -Tom-.
2019-03-01 23:07:41 +01:00
nmlgc 08ffcb0737 [Reverse-engineering] [th04/th05] Boss hitboxes
Funded by -Tom-.
2019-03-01 16:18:02 +01:00
nmlgc 062e775f41 [Reverse-engineering] [th04/th05] .BB file loading boilerplate
Yup, nothing interesting in here.
Except for maybe the confirmation that LS00.BB is used for the curved
bullets used by Shinki and EX-Alice?

Funded by -Tom-.
2019-03-01 16:17:52 +01:00
nmlgc 893bd46969 [Reverse-engineering] [th04/th05] Stage-specific invalidate/render functions
Used only sparingly, like for the starfield in TH05 Stage 2.

Funded by -Tom-.
2019-02-28 17:56:26 +01:00
nmlgc 5e9aaafb8b [Reverse-engineering] [th05] Shot decay animation after a target is hit
Struct strHIT_CHARA_BULLET in uth05win. Yup, newly introduced in TH05.

Funded by -Tom-.
2019-02-28 17:43:15 +01:00
nmlgc d9e9b38736 [Reverse-engineering] [th04/th05] Spark animation
Also seen when midbosses explode. Class CSparkEffect in uth05win.

Funded by -Tom-.
2019-02-28 17:43:15 +01:00
nmlgc da284cacaf [Reverse-engineering] [th02/th04/th05] Hardcoded spark sprites
As seen when killing stage enemies or grazing.

Funded by -Tom-.
2019-02-28 17:43:15 +01:00
nmlgc 2ea2e0ddf9 [Reverse-engineering] [th05] Player shot animation types
Funded by -Tom-.
2019-02-28 17:43:15 +01:00
nmlgc b9f3d86e44 [Reverse-engineering] [th04/th05] Adding new player shots
Funded by -Tom-.
2019-02-28 17:43:14 +01:00
nmlgc 9a2c6f72ba [Reverse-engineering] [th04/th05] Second, unused field of the .map header
Thanks to -Tom- for telling me what this obviously had to be.
2019-01-11 00:28:56 +01:00
nmlgc deb45ea14e [Reverse-engineering] [th04/th05] Player shot structure
And that's enough for now, see you in February!

Funded by -Tom-.
2019-01-01 02:29:12 +01:00
nmlgc 35f9bd71e8 [Reduction] [th04/th05] Micro-optimized version of super_roll_put_tiny()
Y'know, maybe ZUN measured and all of this actually mattered? What do I
know?

Funded by -Tom-.
2018-12-31 20:41:13 +01:00
nmlgc e7265ac656 [Reverse-engineering] [th04/th05] Shot X/Y velocity lookup table
Funded by -Tom-.
2018-12-31 19:45:34 +01:00
nmlgc 4770d145d6 [Reverse-engineering] [th04/th05] Target position for homing shots
Funded by -Tom-.
2018-12-30 15:31:26 +01:00
nmlgc 612beb815b [Maintenance] Clean up the confusion between "tiles" and .STD tile sections
Funded by -Tom-.
2018-12-30 02:30:16 +01:00
nmlgc 75763ccd32 [Reverse-engineering] [th04/th05] Invalidating background tiles around a point
…and *now* we can tackle all those entity types that were referencing
this function, with the help of uth05win.

Funded by -Tom-.
2018-12-30 00:19:18 +01:00
nmlgc c2ef9d51b6 [Reverse-engineering] [th02/th03/th04/th05] Back/front page pairs
Because using just one variable would have totally been too
straightforward.

Funded by -Tom-.
2018-12-30 00:16:18 +01:00
nmlgc 35ef90f4d1 [Reduction] Page flipping
Funded by -Tom-.
2018-12-30 00:16:18 +01:00
nmlgc c00b87ed4f [Reverse-engineering] [th04/th05] Redrawing dirty stage background tiles
Funded by -Tom-.
2018-12-30 00:16:16 +01:00
nmlgc bcc1b7518f [Reverse-engineering] [th04/th05] Applying VRAM scrolling to Y coordinates
Funded by -Tom-.
2018-12-29 18:34:51 +01:00
nmlgc dbf1e93a79 [Reverse-engineering] [th02] Current scrolling line
… and that's all that's superficially identical to TH04 and TH05. I lack
the funding to cover more. :P

Funded by -Tom-.
2018-12-29 18:34:51 +01:00
nmlgc 4fe4c8eed1 [Reverse-engineering] [th04/th05] Scrolling-related variables
Funded by -Tom-.
2018-12-29 18:34:51 +01:00
nmlgc 20d05c1653 [Reverse-engineering] [th04/th05] Rendering all stage background tiles at once
Funded by -Tom-.
2018-12-29 18:34:51 +01:00
nmlgc 6a6ce47c56 [Reduction] EGC-powered VRAM region copies
Funded by -Tom-.
2018-12-29 17:03:26 +01:00
nmlgc e1e4f819ed [Reverse-engineering] [th02/th04/th05] Stage background tile ring buffer
Funded by -Tom-.
2018-12-29 17:03:24 +01:00
nmlgc 8ee87233b8 [Reverse-engineering] [th02/th05] Player movement speed
Yes, both characters in TH04 have the same speed!

Funded by -Tom-.
2018-12-26 22:07:34 +01:00
nmlgc 261d5037ed [Reverse-engineering] [th04/th05] .STD file loading
… because TH04's version of this takes the ASCII stage ID directly from
the resident structure.

So boss battles are simply triggered by setting the background tile
scroll speed to 0? That means…

Funded by zorg.
2018-12-26 17:59:03 +01:00
nmlgc 3f06c63206 [Reverse-engineering] [th03/th04/th05] Pointers to the resident structure
Quickly doing these despite not having RE'd the structures themselves
yet…

Funded by zorg.
2018-12-26 17:59:03 +01:00
nmlgc 6c555aad61 [Readme] Mention that stage portions in TH04/TH05 *are* handled by bytecode
Funded by zorg.
2018-12-26 17:59:03 +01:00
nmlgc 4a0b973c76 [Reverse-engineering] [th04/th05] Midboss-related function pointers
Funded by zorg.
2018-12-26 17:59:03 +01:00
nmlgc 25ee5990aa [Reverse-engineering] [th04/th05] Boss battle backdrop rendering
Funded by zorg.
2018-12-26 17:59:03 +01:00
nmlgc d211a22c9f [Reverse-engineering] [th04/th05] GRCG-powered playfield row filling
Isn't it quite a bit risky to do that without a CLD in front?

Funded by zorg.
2018-12-26 17:59:01 +01:00
nmlgc bc3c85f09a [Reverse-engineering] [th04/th05] GRCG/EGC-powered VRAM writes
Funded by zorg.
2018-12-25 23:45:24 +01:00
nmlgc 41622254a8 [Reverse-engineering] EGC register writes
Funded by zorg.
2018-12-25 23:45:24 +01:00
nmlgc b62a8b29a6 [Reverse-engineering] [th02/th04/th05] Boss-related function pointers
No idea what these other ones in TH02 are.

Funded by zorg.
2018-12-18 19:52:41 +01:00
nmlgc 0cde4b7cd3 [Reverse-engineering] [th05] Laser update and render functions
Funded by zorg.
2018-12-17 00:27:38 +01:00
nmlgc 8634e10b6d [Reverse-engineering] [th04/th05] Bullet clear trigger and time
Funded by zorg.
2018-12-16 01:49:55 +01:00
nmlgc 4aeb035121 [Reverse-engineering] [th04/th05] A random shared draw coordinate
Local variables are so overrated.

Funded by zorg.
2018-12-16 00:31:05 +01:00
nmlgc b3c5e4dcfe [Reverse-engineering] [th05] Rendering and hit testing for a single laser
What the hell.

Funded by zorg.
2018-12-15 23:04:26 +01:00
nmlgc 9d79c1413c [Reverse-engineering] [th05] Laser coordinate sub-structure
Yup, the draw function actually takes a sub-structure starting at 0x02.

Funded by zorg.
2018-12-15 23:04:24 +01:00
nmlgc 07e466cf3b [Reverse-engineering] [th01/th02/th04/th05] Player hit flag
Funded by zorg.
2018-12-15 22:57:36 +01:00
nmlgc e73d740926 [Reverse-engineering] [th05] Laser control functions
Funded by zorg.
2018-12-15 22:57:34 +01:00
nmlgc ac7e6bc176 [Reverse-engineering] [th05] Rank-based speed adjustment
Again, one of these functions that ZUN *probably* wrote in ASM for shits
and giggles, which you *again could* "decompile" using in-line assembly,
but that kind of defeats the point.
Oh well, at least the fact that the parameter is passed in AL means that
the calling convention must have been __fastcall, and *that* part *does*
cleanly map to C. Unlike some of the functions in d08a7f4.

Funded by zorg.
2018-12-12 21:50:44 +01:00
nmlgc 807df3d5a7 [Reverse-engineering] [th05] Laser structure
Struct strLASER in uth05win… except that the member names in that one
were not only a bit too unclear, but `ageThres` and `shootAgeThres`
should have also been the other way round.

Also, yes, TH04's laser structure seems completely different.

Funded by -Tom-.
2018-12-12 02:49:42 +01:00
nmlgc 0e8bbe8130 [Reverse-engineering] [th04/th05] Player performance ("rank") management
Going with uth05win's "player performance" here, since we already use
"rank" for Easy/Normal/Hard/Lunatic.

Funded by -Tom-.
2018-12-10 21:00:19 +01:00
nmlgc f3b6137fe2 [Reverse-engineering] [th04/th05] Midboss HP
Funded by -Tom-.
2018-12-09 01:09:17 +01:00
nmlgc 9fd3f6dbf6 [Reverse-engineering] [th04/th05] Boss position
Funded by -Tom-.
2018-12-09 00:57:42 +01:00
nmlgc 59e692a82a [Reverse-engineering] [th04/th05] Midboss position
Funded by -Tom-.
2018-12-09 00:47:52 +01:00
nmlgc 352240e6c5 [Reverse-engineering] [th04/th05] Boss animation sprite IDs
Funded by -Tom-.
2018-12-09 00:47:50 +01:00
nmlgc 36b1a02773 [Reverse-engineering] [th05] Yuki's HP
Internally, Mai is seen as the "primary" Stage 4 boss.

Funded by -Tom-.
2018-12-09 00:44:31 +01:00