Commit Graph

3 Commits

Author SHA1 Message Date
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 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