Commit Graph

312 Commits

Author SHA1 Message Date
Lucas Scharenbroich
69ed76a65d Optimize the simple mixed BG0/BG1 handler
There is enough room in the 32-byte exception handler to inline the
9-byte epilogue when generating the code sequence for mixed BG1/BG0
rendering.

This code sequence is generated once and run for as many frames as the
word appear on screen, so saving an uncondition branch (3 cycles) at the
cost of 60 cycles is probably worth it.
2021-11-22 16:56:53 -06:00
Lucas Scharenbroich
7d76089215 Remove some dead code 2021-11-22 16:53:47 -06:00
Lucas Scharenbroich
140126afd8 Optimize odd-aligned case in the blitter
The SEP/REP pairs that are used to move in and out
of 8-bit mode to do the single-byte pushed on the left
and right edges of the screen can also be used to clear
the necessary carry and overflow flags.
2021-11-22 16:13:29 -06:00
Lucas Scharenbroich
4075ed911c Use the 'f' key to have the SPRITE_HIDE flag set every other frame for a flashing effect 2021-11-22 13:27:27 -06:00
Lucas Scharenbroich
5bc9cc7ff2 Add a SPRITE_HIDE flag to toggle whether a sprite is drawn or not 2021-11-22 13:26:25 -06:00
Lucas Scharenbroich
2683a91e93 Fix sprite rendering with overlapping sprites. Must erase all sprites first, then re-render 2021-11-20 21:58:09 -06:00
Lucas Scharenbroich
90267e4646 Test updating tile ID in UpdateSprite for a run sequence. 2021-11-20 20:33:27 -06:00
Lucas Scharenbroich
9b5d3da0e4 Let character remain facing the direction they were moving after stopping 2021-11-20 14:03:00 -06:00
Lucas Scharenbroich
76801c0e5e Simplify all of the remaining tile blitters 2021-11-20 13:58:24 -06:00
Lucas Scharenbroich
cd5de05d74 Most of the horizontal flip routines are not needed since the _GetTileAddr function returns the correct tile address. Need to finish auditing other Tile blitters 2021-11-20 13:54:19 -06:00
Lucas Scharenbroich
65ce5cbbc0 Add 16x16 vertical flip routine 2021-11-20 13:26:00 -06:00
Lucas Scharenbroich
b607275089 Separate updating a sprite's position with updating it's flags 2021-11-20 12:16:03 -06:00
Lucas Scharenbroich
0cc28f9e6e Generalize _DrawSprite to handle all sizes and flip bits. 2021-11-20 12:00:21 -06:00
Lucas Scharenbroich
e65e6dac8b Fix mask generatino of flipped tiles 2021-11-20 11:59:37 -06:00
Lucas Scharenbroich
c92606840a Fix mask generation bug; mask was reversed 2021-11-20 11:09:57 -06:00
Lucas Scharenbroich
c08a4f7278
Merge pull request #3 from lscharen/expand-exception-handler-space
Expand exception handler space
2021-11-19 16:52:18 -06:00
Lucas Scharenbroich
a7ba1e4b6b Add final tile blitter 2021-11-19 16:48:39 -06:00
Lucas Scharenbroich
fd6c686a95 Fix ordering bug that caused /usr/bin/bash0 values to overwrite the sprite 2021-11-19 16:40:21 -06:00
Lucas Scharenbroich
39303041f9 Add priority dynamic tiles + sprite blitter 2021-11-19 16:30:22 -06:00
Lucas Scharenbroich
44cbba3f23 Add in new variants for sprite and priority tiles 2021-11-19 15:07:43 -06:00
Lucas Scharenbroich
5fdb4bcf06 Fix transposed argument in macro definition; dynamic tile + sprite now working 2021-11-19 13:26:19 -06:00
Lucas Scharenbroich
b4871efe8f Streamlining tile blitter macros 2021-11-19 13:00:59 -06:00
Lucas Scharenbroich
4c31a0d056 Reorg of exception handling code in the core blitter
* Moved V-flag handling outside of the 32-byte exception handler
* Switched relative branches to JMP to save a cycle per word
* Updated macros to create a full code snippet instead of assuming
  certain values exist in the exception handler buffer
2021-11-19 10:24:09 -06:00
Lucas Scharenbroich
0a9eb76ab5 Checkpoint; have old Dynamic Tile Renderers working 2021-11-18 16:23:44 -06:00
Lucas Scharenbroich
ba76b0047c Checkpoint on dynamic tile blitters 2021-11-18 15:36:36 -06:00
Lucas Scharenbroich
9a6eb45b20 Add Masked Sprite Tile blitter and fix some minor issues with the macro 2021-11-15 21:23:15 -06:00
Lucas Scharenbroich
d268b34e76 Get masking working with tile map output again 2021-11-15 16:41:01 -06:00
Lucas Scharenbroich
976ab3163b Fix offset for filling wrap-around byte in BG1 2021-11-15 12:32:38 -06:00
Lucas Scharenbroich
dfd5549918 Sync up with current WIP 2021-11-15 12:23:38 -06:00
Lucas Scharenbroich
bcf8820fbe Better palette and mask handling 2021-11-14 16:30:16 -06:00
Lucas Scharenbroich
cc8e03e6d3 Add SCB binding infrastructure 2021-11-13 19:45:27 -06:00
Lucas Scharenbroich
b87e2a8d33 Fix register assignments for dynamic tile renderer 2021-11-13 19:44:30 -06:00
Lucas Scharenbroich
596777da8d Enable non-sprite, solid dynamic tiles 2021-11-12 15:11:29 -06:00
Lucas Scharenbroich
bab57f6e43 Add VSYNC toggle 2021-11-12 11:27:43 -06:00
Lucas Scharenbroich
45ad44f1a6 Update Tiled assets 2021-11-12 09:08:18 -06:00
Lucas Scharenbroich
de5bdc6041 Rename tile blitters to match internal bit fields and add in the solid prioity blitter 2021-11-12 09:07:51 -06:00
Lucas Scharenbroich
55484fd3e4 Regenerate map and add some priority tiles for testing 2021-11-12 09:06:48 -06:00
Lucas Scharenbroich
ab16035c0d Create and pass options to png2iigs subroutines 2021-11-12 09:05:55 -06:00
Lucas Scharenbroich
6c5b283ae9
Merge pull request #2 from lscharen/multi-tile-sprites
Multi tile sprites (1/N)
2021-11-11 22:26:35 -06:00
Lucas Scharenbroich
673b97419a Clear sprite flag when erasing sprite 2021-11-11 22:22:10 -06:00
Lucas Scharenbroich
dec9a3d106 Fix fast-path return value in PushDirtyTile and correct handling of TS_SPRITE_FLAG 2021-11-11 22:10:54 -06:00
Lucas Scharenbroich
678c9a0563 Initial shell of generalize sprite size support; just for marking the dirty tiles 2021-11-11 17:06:38 -06:00
Lucas Scharenbroich
13393965b3 Switch to the 256x128 tileset image 2021-11-02 22:01:31 -05:00
Lucas Scharenbroich
2f40c79ddf Improve transparent / background color handling when generating tiles 2021-11-02 21:59:08 -05:00
Lucas Scharenbroich
3a5d2cb3ad
Merge pull request #1 from lscharen/20211020_sprite-and-tile-rewrite
20211020 sprite and tile rewrite
2021-11-01 23:47:30 -05:00
Lucas Scharenbroich
bb5f4493d9 Fully integration simple (8x8) sprites into the render pipeline 2021-11-01 23:36:53 -05:00
Lucas Scharenbroich
e83e8d8a0e Update map assets 2021-10-31 15:44:31 -05:00
Lucas Scharenbroich
83ea7921ff Switch to use Add/Update sprite and rely on Render to place sprites in frame 2021-10-31 15:44:03 -05:00
Lucas Scharenbroich
532af93538 Small update to add ability to specify a transparent color directly 2021-10-31 15:43:23 -05:00
Lucas Scharenbroich
631f40da23 Nearly complete integration of sprites into rendering function 2021-10-31 15:42:59 -05:00