Commit Graph

309 Commits

Author SHA1 Message Date
Lucas Scharenbroich 4ee67fb8be Add hook for VBL callback 2023-05-09 10:16:58 -05:00
Lucas Scharenbroich a5498e07eb Update the shadow renderer to use the common scnaline management routines 2023-04-28 00:35:35 -05:00
Lucas Scharenbroich c7a143b488 Remove unneeded padding from some data arrays 2023-04-28 00:14:03 -05:00
Lucas Scharenbroich 869d80af1e Comment cleanup and minro refactoring 2023-04-28 00:13:05 -05:00
Lucas Scharenbroich 515ec5280b Remove dead code 2023-04-28 00:11:46 -05:00
Lucas Scharenbroich 57f57ce533 Restore shadow reg instead of overwriting 2023-04-27 23:38:26 -05:00
Lucas Scharenbroich e013ff03fd Fix off-by-one error in overlay 2023-04-26 08:47:56 -05:00
Lucas Scharenbroich b449d983ee Checkpoint for WIP scanline render fix for overlays+sprites and user-defined tiles 2023-04-26 00:41:17 -05:00
Lucas Scharenbroich 44c51217a1 Checkpoint of object list resolver 2023-04-25 23:39:09 -05:00
Lucas Scharenbroich dc5742dd11 Remove dead code from codebase 2023-03-14 09:23:01 -05:00
Lucas Scharenbroich 02bc6fe493 Comment cleanup; rename FRINGE tile control bit 2023-03-14 09:11:53 -05:00
Lucas Scharenbroich b154bcf361 Sync up header files and add back CopyToBG1 behavior as a selectable feature 2023-03-12 15:39:41 -05:00
Lucas Scharenbroich 065603a758 Core updates for BG1 scanline support 2023-03-11 03:41:41 -06:00
Lucas Scharenbroich d31bd30649 Implement full per-scanline offset support for BG1 2023-03-11 03:41:12 -06:00
Lucas Scharenbroich 7dd690ac04 Implement fix for scanline mode compensation in BG1 2023-03-10 19:00:26 -06:00
Lucas Scharenbroich 9021ee4506 WIP of BG1 scanline effects
A static BG1 is stable with BG0 offset values.  A seam in BG1
needs to be closed up by taking into account the BG1XOrigin value
when setting the :shift_value.

Also, several routines were hard-coded for the scanline case.  These
hanges need to be reverted and properly parametereized.
2023-03-10 15:50:42 -06:00
Lucas Scharenbroich e3409f92fa Add per-scanline offset rendering. 2023-03-09 15:29:58 -06:00
Lucas Scharenbroich 3a78398ea7 Remove dead label 2023-03-09 00:26:31 -06:00
Lucas Scharenbroich 39163ea786 Expose the ability to select which rendering order to use for sprites 2023-03-09 00:23:12 -06:00
Lucas Scharenbroich c533d846d7 Be more cautious when manipulaitng the sorted list 2023-03-08 20:09:57 -06:00
Lucas Scharenbroich 6c5e133b17 Fix some linked-list manipulations 2023-03-08 16:29:12 -06:00
Lucas Scharenbroich 029ab62f0c Fix accidental double-addition of the screen origin 2023-03-08 14:15:11 -06:00
Lucas Scharenbroich a70412211c Simplify and specialize the even/odd patching
Allows the odd case to be slightly more efficient and the
code is cleaned up by not having to handle both even and odd
alignment cases at multiple points.
2023-03-08 12:49:45 -06:00
Lucas Scharenbroich 536959619f Refine the horizontal dispatch
Find small optimizations to improve the average performance of the
blitter, especially in the odd-aligned case.

 - Odd-aligned PEA exit is 2 cycles faster per line
 - Odd-aligned JMP exit is 2 cycles faster per line
 - Odd-aligned LDA exit is 6 cycles faster (eliminated long store)
 - Merged setting the entry opcode and offset to convert 2 8-bit
   store into a single 16-bit store (save 6 cycles per line)
 - Load and save the full word for the high bytes. Cost 2 cycles
   but enabled the 6 cycles saved for the LDA case.
2023-03-07 17:32:46 -06:00
Lucas Scharenbroich 5697737a93 Add workable overlay support to the scanline renderer 2023-03-06 14:39:23 -06:00
Lucas Scharenbroich 6832c7f405 Update dynamic tile rendered to use fixed snippets. Add DAMAGES flag for the one render that doesn't fit the mold 2023-03-03 21:44:39 -06:00
Lucas Scharenbroich dd9ced08f1 Transition to fixed snippets 2023-03-02 23:24:03 -06:00
Lucas Scharenbroich c14f3c7283 Functional compiled sprites in demo-5 2023-03-01 13:18:37 -06:00
Lucas Scharenbroich e2e30dfcf4 Checkpoint for initial framing for compiled sprite support 2023-02-28 11:17:43 -06:00
Lucas Scharenbroich 981182592e Shadow based rendering working in demo-5 2023-02-27 15:30:56 -06:00
Lucas Scharenbroich 31ca627c14 Make sprite pre-calc rotines more specific and fix x,y argument ordering in AddSprite 2023-01-08 01:30:51 -06:00
Lucas Scharenbroich 4b50fa8318 checkpoint 2023-01-02 11:04:26 -06:00
Lucas Scharenbroich b8a7641307 Add in all linked list operations 2022-09-08 21:51:00 -05:00
Lucas Scharenbroich eaedee546e Remove dead / obsolete code 2022-09-02 20:38:10 -05:00
Lucas Scharenbroich 217a1176a9 Remove obsolete blitter routines 2022-09-02 20:37:26 -05:00
Lucas Scharenbroich bd1de7f83c Checkpoint 2022-08-16 19:47:19 -05:00
Lucas Scharenbroich 3fce46872d Checkpoint; blitter failing 2022-08-14 07:45:58 -05:00
Lucas Scharenbroich e378dc6e26 Checkpoint with TF4 demo framework 2022-08-11 14:14:25 -05:00
Lucas Scharenbroich 093bc738f0 Merge branch 'master' into scanline-offsets 2022-08-01 22:21:52 -05:00
Lucas Scharenbroich 97fa45589b Allow GTEStartUp caller to specify whether tool is loaded as a system or user tool 2022-08-01 22:00:54 -05:00
Lucas Scharenbroich 5883de1f71 Checkpoint 2022-08-01 21:46:00 -05:00
Lucas Scharenbroich 7a6c4e5ff4 Break up Ypos loop into pre/loop/post segment to optimize. Saved ~5,000 cycles/sec. When applied to the other routines will save a few thousand more cycles 2022-07-31 11:51:42 -05:00
Lucas Scharenbroich 794bc1fc09 Start adding scanline variants 2022-07-30 11:04:13 -05:00
Lucas Scharenbroich 7c32c89493 Merge branch 'streamline-apply-bg0' 2022-07-28 13:27:47 -05:00
Lucas Scharenbroich 456744027d Inline all functions that are only called once
Eliminates the JSR/RTS overhead for the copy functions.  Combined
with the other streamlining, we save around 60 - 70 cycles per
bank, or a total savings of around 10,000 cycles per seconds when
running at full screen.

This doesn't really change the FPS, but just gives some cycles
back to the main application logic.
2022-07-28 13:15:46 -05:00
Lucas Scharenbroich babd4d06b4
Merge pull request #15 from dmalec/platform-neutral-paths
Switched back slash to forward slash in assembly so Merlin32 works on OSX as well as Windows
2022-07-28 12:20:40 -05:00
Lucas Scharenbroich fa731f4b2d Streamline restore BG0; experiment with more aggressive inlining 2022-07-28 12:15:00 -05:00
Lucas Scharenbroich 0f920acd03 Eliminate redundent register loads 2022-07-28 11:57:14 -05:00
Lucas Scharenbroich f5a27362a7 Remove ommented out code 2022-07-28 11:56:05 -05:00
Lucas Scharenbroich e25b5b4d7f Correctly initialize the screen size 2022-07-27 23:42:26 -05:00