Commit Graph

2330 Commits

Author SHA1 Message Date
nmlgc ea8c4b85a4 [Hooks] pre-commit: Preserve CRLF line endings
Part of P0239, funded by Ember2528.
2023-04-28 22:21:00 +02:00
nmlgc c5e51e6cb2 [Maintenance] [th02] Properly declare lives and bombs, and their limits
Completes P0237, funded by Yanga.
2023-03-29 18:03:06 +02:00
nmlgc 71c010855d [Maintenance] [th02/th04/th05] Properly declare shot power-related variables
Part of P0237, funded by Yanga.
2023-03-29 18:03:05 +02:00
nmlgc ea59e023d0 [Maintenance] Gaiji: Move variable-width bars to TH02
Part of P0237, funded by Yanga.
2023-03-29 18:03:05 +02:00
nmlgc 1158e028ff [Maintenance] Gaiji: Inline the declaration of TH04/TH05's filled 128-pixel bar
TH02's filled bar is only 80 pixels wide, so we'll have to declare that
one separately anyway.

Part of P0237, funded by Yanga.
2023-03-29 18:03:05 +02:00
nmlgc 152bbd6a0f [Decompilation] [th02] Bombs: High-level update and render function
Containing no actual update and render code. (Which is also why we can
already cover it right now.)

Part of P0237, funded by Yanga.
2023-03-29 18:03:05 +02:00
nmlgc fe93bc8218 [Decompilation] [th02] Bombs: Rendering bytes from BOMBS.BFT
Why keep it all in one function when you can split it up into three?
:onricdennat:

Part of P0237, funded by Yanga.
2023-03-29 18:03:05 +02:00
nmlgc 3afa60fbd0 [Decompilation] [th02] Bombs: Smear column rendering
Part of P0237, funded by Yanga.
2023-03-29 18:03:05 +02:00
nmlgc e56fb33f71 [Decompilation] [th02] Bombs: Particle rendering
One of the few cases where byte alignment doesn't matter.

Part of P0237, funded by Yanga.
2023-03-29 18:03:05 +02:00
nmlgc 522976d668 [Decompilation] [th02] Bombs: Circle point rendering
An entire function that will just vanish in this game's Anniversary
Edition.

Part of P0237, funded by Yanga.
2023-03-29 18:03:05 +02:00
nmlgc a6a3aaeb0a [Reverse-engineering] [th02] Bombs: Particle sprites
The circle point sprite is technically identical to the pellet sprite,
but logically different.

Part of P0237, funded by Yanga.
2023-03-29 18:03:05 +02:00
nmlgc 1766178a0a [Decompilation] [th02] Point number popups: Update/render function
Part of P0237, funded by Yanga.
2023-03-29 17:13:28 +02:00
nmlgc 19d5ebf4f9 [Decompilation] [th02] Point number popups: Rendering a single number
Part of P0237, funded by Yanga.
2023-03-29 17:13:28 +02:00
nmlgc e708eadeab [Decompilation] [th02] Point number popups: Tile invalidation
Part of P0237, funded by Yanga.
2023-03-29 12:36:56 +02:00
nmlgc 71094af6a0 [Decompilation] [th02] Point number popups: Spawn function
Someone liked the `register` keyword way too much.

Part of P0237, funded by Yanga.
2023-03-29 12:36:56 +02:00
nmlgc eb52af752b [Decompilation] [th02] Point number popups: Initialization/reset function
Part of P0237, funded by Yanga.
2023-03-29 12:36:56 +02:00
nmlgc cffa0a0ede [Reverse-engineering] [th02] Point number popups: Structure
Could it be? A sanely implemented feature with no quirks or bugs? Looks
like it!

Part of P0237, funded by Yanga.
2023-03-29 12:36:56 +02:00
nmlgc 3c0c6c7343 [Reverse-engineering] [th02] Sparks: Structure
First taste of how sprites are managed in this game. Expressing the
current and previous position in terms of the VRAM page is kind of
quirky, but not as bad as expected.

What *is* bad, however, is that the most natural next function is
undecompilable thanks to an inconsistent `LEAVE` instruction in its
epilog 🙄 And `codegen.hpp` has almost none of the instructions we
would need to hide the SI and DI registers from the compiler, and I'm
*really* not in the mood for another such mess anyway. I'd really like
to try patching these mistakes in a separate build step instead, but
unfortunately I'm out of research money as well. So let's go for
something else next.

Part of P0237, funded by Yanga.
2023-03-29 12:36:56 +02:00
nmlgc 7fa9038a5f [Reverse-engineering] [th02] Slowdown factor
Completes P0236, funded by Yanga.
2023-03-29 12:36:56 +02:00
nmlgc ebc766bbce [Reverse-engineering] [th02] Reduced effect rendering flag
The 演出 option.

Part of P0236, funded by Yanga.
2023-03-29 12:36:56 +02:00
nmlgc 1f962c865e [Maintenance] Introduce a generic entity flag enum
Part of P0236, funded by Yanga.
2023-03-29 12:36:55 +02:00
nmlgc c6e2955e06 [Maintenance] Declare missing entity-specific flags in ASM land
Part of P0236, funded by Yanga.
2023-03-29 12:36:55 +02:00
nmlgc b9402be979 [Maintenance] Simplify two-state entity flags
Changing the type to `bool` highlights that these have only two states.
No `switch` required.

Part of P0236, funded by Yanga.
2023-03-29 12:36:55 +02:00
nmlgc 679553fb4d [Decompilation] [th02] Stage tiles: Resetting an incomplete bunch of state
And that's all we can do for now. Almost done with stage tiles!

Part of P0236, funded by Yanga.
2023-03-29 12:36:55 +02:00
nmlgc caa4b6747b [Decompilation] [th02] Stage tiles: .MAP file loading
Part of P0236, funded by Yanga.
2023-03-29 12:36:55 +02:00
nmlgc 366cd1bf95 [Decompilation] [th02] Stage tiles: VRAM source area initialization
So silly.

Part of P0236, funded by Yanga.
2023-03-29 12:36:55 +02:00
nmlgc 1778006684 [Decompilation] [th02] Stage tiles: Low-level EGC-accelerated blitting
Batched this time around!

Part of P0236, funded by Yanga.
2023-03-29 12:36:55 +02:00
nmlgc fdee90a499 [Decompilation] [th02] Stage tiles: Regular scroll and render function
Part of P0236, funded by Yanga.
2023-03-29 12:36:55 +02:00
nmlgc 29cde9b5de [Decompilation] [th02] Stage tiles: Initial screen of a stage
Part of P0236, funded by Yanga.
2023-03-29 12:36:55 +02:00
nmlgc 6acb385a5a [Decompilation] [th02] Stage tiles: Rectangular invalidation
Part of P0236, funded by Yanga.
2023-03-29 12:36:55 +02:00
nmlgc 62c4b7f1c2 [Decompilation] [th02] Stage tiles: Regular rendering
Completes P0235, funded by Ember2528.
2023-03-29 12:36:55 +02:00
nmlgc 59564b3ecf [Decompilation] [th02] Stage tiles: Re-rendering the entire playfield
Part of P0235, funded by Ember2528.
2023-03-29 12:36:55 +02:00
nmlgc 9c95ddace3 [Decompilation] [th02] Stage tiles: Setting and blitting single tiles
Used e.g. for the track marks that the Stage 1 midboss leaves on the
bridge. Nice detail… if it weren't for the wrong rendering order 🎺

Part of P0235, funded by Ember2528.
2023-03-29 12:36:55 +02:00
nmlgc e1ccf2d67d [Decompilation] [th02] Stage tiles: EGC-accelerated single-tile blitting
From the tile source area to the right of the HUD, obviously. So glad
that vram_offset_shift_fast() is possible without inline ASM, we're
definitely going to see that one more often.

Part of P0235, funded by Ember2528.
2023-03-29 12:36:55 +02:00
nmlgc a51910c544 [Naming] [th02] Stage tiles: Public .MPN functions
Part of P0235, funded by Ember2528.
2023-03-29 12:36:55 +02:00
nmlgc ca0a076e92 [Naming] [th02] Stage tiles: Rendering helper functions
Part of P0235, funded by Ember2528.
2023-03-29 12:36:55 +02:00
nmlgc 8ed9343116 [Reverse-engineering] [th02] Stage tiles: Map sections and the .MAP format
8 rows per section, rather than the 5 that TH04 and TH05 would use.

Part of P0235, funded by Ember2528.
2023-03-29 12:36:54 +02:00
nmlgc 7cbaf4a123 [Reverse-engineering] [th02] Stage tiles: Public state
Part of P0235, funded by Ember2528.
2023-03-29 12:36:54 +02:00
nmlgc 54e72475c6 [Reverse-engineering] [th02] Stage tiles: Internal state
Part of P0235, funded by Ember2528.
2023-03-29 12:36:54 +02:00
nmlgc 0a71be2188 [Reverse-engineering] [th02/th04/th05] Stage tiles: VRAM source area offsets
Part of P0235, funded by Ember2528.
2023-03-29 12:36:54 +02:00
nmlgc a5a1967367 [Reverse-engineering] [th02] Scrolling: Speed and interval
Part of P0235, funded by Ember2528.
2023-03-29 12:36:54 +02:00
nmlgc 172a6d2b2b [Maintenance] Add a macro for alternate-instruction VRAM offset calculations
Part of P0235, funded by Ember2528.
2023-03-29 12:36:54 +02:00
nmlgc f062e4b84e [Decompilation] Add a macro for faster VRAM offset calculation with bit shifts
Part of P0235, funded by Ember2528.
2023-03-25 21:28:15 +01:00
nmlgc 0e103c6f88 [Maintenance] Add a VRAM offset roll macro
Part of P0235, funded by Ember2528.
2023-03-25 21:24:57 +01:00
nmlgc 6a92122432 [Maintenance] [th02] Remove invalid Shift-JIS code point in `th02_main.asm`
Would otherwise drive me nuts until I get to decompiling Meira.

Part of P0235, funded by Ember2528.
2023-03-25 21:24:47 +01:00
nmlgc e7a9262f50 [Contributing] Remove trailing commas from `public` in a pre-commit hook
Starting more ore less simple with a shell script calling `sed`, which
should work anywhere Git is used.
2023-03-20 01:55:06 +01:00
nmlgc 0685bd0885 [Maintenance] [th03] Remove trailing comma from `public` directive
These break the build on TASM32 version 5.0… which means that
th03_main.asm didn't assemble on that version ever since 3072208.
Thanks to mu021 for telling me about the resulting crash!
2023-03-20 00:29:02 +01:00
nmlgc 3afb73eada [Reverse-engineering] [th01] Pellets: Document missing resets for delay clouds
The exact reason why pellets can be carried over from Sariel's first
form to her second… and why you probably shouldn't carelessly use that
redundant count of alive pellets to skip loops in the Anniversary
Edition, because that count will be incorrect after a reset.
Thanks to mu021 for reporting this issue!
2023-03-14 00:18:23 +01:00
nmlgc 6370f96d9a [Reverse-engineering] [th01] Pellets: Correctly document interlacing
It *does* affect collision detection after all, making removal for the
Anniversary Edition slightly more tricky.

Part of P0234, funded by Ember2528.
2023-03-04 19:40:55 +01:00
nmlgc 6713b1bf9c [Maintenance] [th01] 16× TRAM letters: Fix macro copy-pasting accidents
Part of P0234, funded by Ember2528.
2023-03-04 19:40:55 +01:00