nmlgc
fac879f8e6
[Reverse-engineering] [th05] Number display using the bold gaiji font
...
Many thanks to http://bytepointer.com/tasm/index.htm for providing a
better searchable resource for TASM's default `LEA imm16` → `MOV imm16`
optimization, which we initially had to hack around here.
Funded by -Tom-.
2019-03-06 19:32:38 +01:00
nmlgc
ba3a6f7158
[Reverse-engineering] [th05] Shared HUD gaiji row
...
Yup, yet another random not really needed global.
Funded by -Tom-.
2019-03-06 18:32:07 +01:00
nmlgc
058595b1d9
[Reverse-engineering] [th04/th05] Score variables
...
In which ZUN uses little-endian BCD as the exclusive internal storage
for both the current and the high score. Which are then updated using,
once again, ridiculously micro-optimized ASM code that uses the
venerable x86 BCD instructions.
Funded by -Tom-.
2019-03-04 21:42:11 +01:00
nmlgc
308d1bc785
[Reverse-engineering] [th04/th05] Boss explosions
...
So apparently, this way of distorting a circle into an ellipse (?) by
adding a value to the angle for one of the two coordinates isn't
actually widely known in math and doesn't have a name. Fair enough.
Funded by -Tom-.
2019-03-03 14:03:41 +01:00
nmlgc
1cb2c0acbc
[Reverse-engineering] [th03/th04/th05] Palette change flag
...
Funded by -Tom-.
2019-03-03 13:32:55 +01:00
nmlgc
6ed8e60334
[Reverse-engineering] [th04/th05] Boss phase timeout flag
...
Funded by -Tom-.
2019-03-01 23:20:52 +01:00
nmlgc
b02147b5c0
[Reverse-engineering] [th05] Yumeko's Phase 4/7 knife/laser intervals
...
Which are set in the regular stage init function for some reason,
which is why I have to cover them right now.
Funded by -Tom-.
2019-03-01 23:20:52 +01:00
nmlgc
ae9651c693
[Reverse-engineering] [th04/th05] Difficulty/character-based value selection
...
Funded by -Tom-.
2019-03-01 23:20:51 +01:00
nmlgc
c241af414f
[Reverse-engineering] Current difficulty
...
Funded by -Tom-.
2019-03-01 23:07:42 +01:00
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