Commit Graph

309 Commits

Author SHA1 Message Date
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 bb5f4493d9 Fully integration simple (8x8) sprites into the render pipeline 2021-11-01 23:36:53 -05:00
Lucas Scharenbroich 631f40da23 Nearly complete integration of sprites into rendering function 2021-10-31 15:42:59 -05:00
Lucas Scharenbroich 2f73b9acf5 Small improvements to sprite prototype to fix dirty tiles getting out of sync 2021-10-30 19:24:23 -05:00
Lucas Scharenbroich b4155dc751 Expose the ApplyTiles subroutine 2021-10-29 00:52:29 -05:00
Lucas Scharenbroich 9ecc262c58 First pass at validating erasing the sprite on update 2021-10-28 22:19:18 -05:00
Lucas Scharenbroich 0a7d9e15c7 Add external entry point to the erase function 2021-10-28 22:18:33 -05:00
Lucas Scharenbroich 7ec1b8bc29 Fix dumb initialization bug in sprite plane 2021-10-28 21:52:48 -05:00
Lucas Scharenbroich 4e46a6af85 WIP: manual sprite rendering showing on screen 2021-10-28 21:41:01 -05:00
Lucas Scharenbroich 2feb6f590b Add address in sprite plane for tile rendering; use in tile dispatcher 2021-10-27 00:14:19 -05:00
Lucas Scharenbroich cc18c67491 Expand tile blitter temp space 2021-10-27 00:11:13 -05:00
Lucas Scharenbroich 82c1a8e2e4 Remember to cacluate the tile address when adding to the dirty tile list 2021-10-26 21:34:38 -05:00
Lucas Scharenbroich 0366c1a0e0 Fix missing index in the dirty tile initializations 2021-10-26 21:21:08 -05:00
Lucas Scharenbroich 3b8bf652e1 Continued bug fixing
* Missed an XBA to swap tile command bits into a proper index range
* Explicitly track the BASE_ADDR
* Fix some register overwriting
* Add an UpdateSprite method
2021-10-23 22:31:38 -05:00
Lucas Scharenbroich 494673416b Fix several incorrect uses of internal API; work toward functional demo 2021-10-22 00:56:12 -05:00
Lucas Scharenbroich 4e779e71d2 Tile rendering reorganization
This significantly simplifies the dispatch process by creating a
proper backing store for the tiles.  Most values that were
calcualted on the fly are now stored as constants in the tile
store.

Also, all tile updated are run through the dirty tile list which
solved a checken-and-egg problem of which order to do sprites vs
new tiles and affords a lot of optimizations since tile rendering
is deferred and each tile is only drawn at most once per frame.
2021-10-21 08:50:07 -05:00
Lucas Scharenbroich c4762888ed Add brief readme to start documenting the internals of GTE 2021-10-21 08:47:17 -05:00
Lucas Scharenbroich 4d224a92d9 Fix pre-shift bug in the tile address calculation 2021-10-11 16:47:38 -05:00
Lucas Scharenbroich 4338b64338 First cut at a non-trivial overlay. Pallettes and tile indexes still to be fixed 2021-10-11 14:09:38 -05:00
Lucas Scharenbroich 2966b1052b Add rendering path for masked dynamic tiles 2021-10-07 23:54:45 -05:00
Lucas Scharenbroich d5421afdbd Fix off-by-one issue in tile IDs and make the entry point consistent in the code field generator 2021-10-07 18:33:06 -05:00
Lucas Scharenbroich 4006f76c02 Fix bcc/bcs typo when initializing timers 2021-10-07 16:38:20 -05:00
Lucas Scharenbroich 87ded17e20 Initial Tiled tile animation export support
* Tiled tile animations read from TSX files
* Hooks for initialization generated by the tiled export tool
* Animated tiles implements with dynamic tiles backed by 2KB of direct
  page space in Bank 00
* Animation resolution limited to 1/60th incremenents

TODO
* Fix crasher in the _DoScriptSequ timer callback
* Fix single-line of garbage on the top line of the dynamic tiles
2021-10-06 07:10:09 -05:00
Lucas Scharenbroich a82c1248db Add untested framework for handling fringe tile rendering 2021-08-30 22:14:04 -05:00
Lucas Scharenbroich f55192436a Final reorg; all projects build into a unified disk image for testing 2021-08-26 17:15:44 -05:00
Lucas Scharenbroich dcf93892a7 Reorg some more files and tweak paths 2021-08-26 16:45:23 -05:00
Lucas Scharenbroich 2e11ba74ee Rename memory init file 2021-08-26 16:43:14 -05:00
Lucas Scharenbroich 1263375095 Move test app into its own demo folder 2021-08-26 16:24:46 -05:00
Lucas Scharenbroich 69c6104742 Small initialization and jsr/jsl updates 2021-08-26 16:12:08 -05:00
Lucas Scharenbroich 4af66fa13a Fix initialization order 2021-08-26 09:45:40 -05:00
Lucas Scharenbroich fe18759759 Refactor original demo driver to use GTE Core; move functions around 2021-08-26 08:52:43 -05:00
Lucas Scharenbroich 7d5f7aa721 Refactor GTE Core to be included as an independent Segment in other projects 2021-08-25 09:38:02 -05:00
Lucas Scharenbroich 23f7e5b0fb Fully flesh out Script execution implementation 2021-08-25 09:28:53 -05:00
Lucas Scharenbroich 740a0f260d Fix bug that causes one-shot timers to loop forever 2021-08-24 15:58:36 -05:00
Lucas Scharenbroich 48bb361730 Early peek at the Timers/Scripting engine 2021-08-24 15:45:33 -05:00
Lucas Scharenbroich 238d2f0a6f Fix banking bug and enable BG1 tile maps 2021-08-20 20:20:47 -05:00
Lucas Scharenbroich e607612344 Add initial build-out of BG1 tile map support 2021-08-19 01:22:36 -05:00
Lucas Scharenbroich 4c5b090afe Fix crashing bug when replacing BG1 tiles with BG0 tiles 2021-08-19 01:21:37 -05:00
Lucas Scharenbroich 07ac2b017f Fix indexing error in Tiled export. Solid tiles are no longer marked as masked 2021-08-19 00:47:34 -05:00
Lucas Scharenbroich 4609b5c4b9 Identify tiles that should be masked from Tiled maps 2021-08-17 16:23:23 -05:00
Lucas Scharenbroich 55e15aa894 Restore full tile dispatcher code 2021-08-17 09:46:45 -05:00
Lucas Scharenbroich b35a2c1e6e Complete masked tile rendering implementation
The core data tables were reworked to pre-reverse all of the
entries to directly match the right-to-left ordering of the code
fields.  This simplified some code but was required for register
reuse in the masked tile renderer.

Also fixed several offset calculation issues in the masked tile
renderer.
2021-08-17 09:33:27 -05:00
Lucas Scharenbroich 5ad95f4609 Use 8-bit accumulator to read softswitches 2021-08-15 09:25:42 -05:00
Lucas Scharenbroich 2540359f60 Fix plx/pla ordering in tile dispatcher 2021-08-14 21:56:08 -05:00
Lucas Scharenbroich 1492ac3b36 Map Tiled Horizontal and Vertical flip flags onto GTE equivalents 2021-08-14 21:22:21 -05:00
Lucas Scharenbroich 232f94d30e Fix layer comparison function 2021-08-14 21:09:35 -05:00
Lucas Scharenbroich d9133a2170 Switch to using exported Tiled project assets 2021-08-14 20:58:37 -05:00
Lucas Scharenbroich ce51563913 Fix small code issues and sync up tool output with code changes. Maps render again with solid tiles 2021-08-13 11:57:41 -05:00
Lucas Scharenbroich 652729081e Stub in more tile rendering functions; does not crash but renders incorrectly 2021-08-13 11:38:06 -05:00
Lucas Scharenbroich 90124b04bc First draft of masked tile support
Need to have the called provide a copy of the base line address to the
masked drawing code and need to verify that the JTable entries are
ordered the same way as the byte offset so the same register can be used
to load the JMP addresses and patch in the LDA (DP),y instructions.
2021-08-13 10:05:28 -05:00
Lucas Scharenbroich e3cb742626 Fix tile rendering
This is not quite correct yet.  IT appears that two rows or columns are
drawn on the edges when only a single solumn or row is necessary.  Also,
this code is based on the old GTE codebase, so the initial rectangle for
rendering tiles is width+1, height+1. This can be improved.
2021-08-10 07:59:14 -05:00
Lucas Scharenbroich b9fced46cd Debugging overlay to show variables on screen 2021-08-10 07:58:09 -05:00
Lucas Scharenbroich 97d05ee926 Fix wrong variable 2021-08-09 09:17:25 -05:00
Lucas Scharenbroich d3b21a91b9 Fix full-screen tile refreshes; incremental tile drawing crashes 2021-08-09 06:08:09 -05:00
Lucas Scharenbroich 8d34da6c26 Add the old SMB keyboard read function to detect key-down instead of key-press 2021-08-07 21:22:37 -05:00
Lucas Scharenbroich 8d31720e1c Add an extra column when coordinates are not tile-aligned 2021-08-07 21:21:28 -05:00
Lucas Scharenbroich 8ed851cb33 First pass at importing tilesets into GTE 2021-08-06 16:35:47 -05:00
Lucas Scharenbroich b8d4ae780b Fix crashing on horizontal tile map rendering; still some off-by-one errors 2021-08-06 15:57:03 -05:00
Lucas Scharenbroich 39639d54b5 Fix some small bugs with tile rendering; tiles display but crash after scrolling 8 bytes 2021-08-06 14:42:18 -05:00
Lucas Scharenbroich d01791b440 Initialize more direct page variables and provide a flag to turn off sound 2021-08-06 14:41:23 -05:00
Lucas Scharenbroich c6f6001e8f Pull exported Tiled level data into the application; does not display anything yet 2021-08-05 21:19:43 -05:00
Lucas Scharenbroich 1d17b802ad Add basic tilemap support back in 2021-08-05 08:20:38 -05:00
Lucas Scharenbroich 19070fa194 Reformat 2021-07-30 08:01:46 -05:00
Lucas Scharenbroich 56b5b69efa Move rotation data to its own segment 2021-07-30 08:01:16 -05:00
Lucas Scharenbroich 1936a0898c Sync up 2021-07-29 05:35:09 -05:00
Lucas Scharenbroich 65af5cbf26 Improve address generation 2021-07-27 16:28:18 -05:00
Lucas Scharenbroich 87e46d95f5 Rotation! 2021-07-24 09:00:52 -05:00
Lucas Scharenbroich cede4c69b4 Add timer infrastructure and two small examples 2021-07-20 12:42:21 -05:00
Lucas Scharenbroich 1fcd4589f7 Add horizontal BG1 offset support; frame lock demo to 60 fps 2021-07-20 00:02:20 -05:00
Lucas Scharenbroich 9cdba9a537 Add routine to do horizontal displacement of BG1 2021-07-19 22:52:42 -05:00
Lucas Scharenbroich c5eb84ea37 Get the PEI Slammer working for exposing shadowed writes 2021-07-19 22:42:51 -05:00
Lucas Scharenbroich d9e3ee14e8 Add small header to converted image data 2021-07-19 14:18:02 -05:00
Lucas Scharenbroich 9d33ff3000 Add file information metadata for cadius to use when adding assets to the disk image 2021-07-18 15:11:16 -05:00
Lucas Scharenbroich 760580d733 Tweak file loading functions 2021-07-18 08:59:19 -05:00
Lucas Scharenbroich 160a9afafb Add proper handling of wraparound in vertical positioning 2021-07-17 21:00:46 -05:00
Lucas Scharenbroich 4b390fef20 Fix extra push in mixed rendering 2021-07-17 20:38:07 -05:00
Lucas Scharenbroich bdf885dafd First implementation of BG0/BG1 mixed exception handling 2021-07-16 23:09:08 -05:00
Lucas Scharenbroich 6fc772ce78 Sorted out BG1 edge artifacts 2021-07-16 17:05:29 -05:00
Lucas Scharenbroich f2d82f810d Very simple asset pipeline to transform PNG impage into raw binary files to load in the engine 2021-07-16 13:09:16 -05:00
Lucas Scharenbroich 62233d4abc Remove dead code and fix right edge of BG1 rendering 2021-07-16 08:38:14 -05:00
Lucas Scharenbroich abfcde54c2 Initial addition of BG1 support 2021-07-16 00:34:58 -05:00
Lucas Scharenbroich 63bfe5e8e7 Resolve horizontal scrolling issue with PEA code 2021-07-15 21:00:35 -05:00
Lucas Scharenbroich 26e39e3bfd Horizontal scrolling no longer crashes; still have incorrect edge rendering 2021-07-15 15:30:24 -05:00
Lucas Scharenbroich b6fadedfc7 WIP of fixing horizontal scrolling 2021-07-15 13:53:53 -05:00
Lucas Scharenbroich 50f5da5608 WIP on BG0X positioning; fix tile horizonal calculation 2021-07-15 11:01:42 -05:00
Lucas Scharenbroich be446589b0 Fix horizaontal ranges in actions 2021-07-14 15:23:49 -05:00
Lucas Scharenbroich e14a8ec36f Add a simple benchmark 2021-07-12 00:16:18 -05:00
Lucas Scharenbroich e03859406e Fix indexing issue with calculating a tile's top line 2021-07-10 20:46:32 -05:00
Lucas Scharenbroich d1e59e81ac Fix off-by-one error when rendering tiles 2021-07-10 20:43:55 -05:00
Lucas Scharenbroich b5fa2d9266 Fix comment typos 2021-07-10 20:35:27 -05:00
Lucas Scharenbroich e4d480d2be Fix addressing issue in font routine and data-overwrite bug; Render no longer crashes! 2021-07-10 17:15:35 -05:00
Lucas Scharenbroich ab9a2682db Fix table initialization and bank preservateion in _BltRange 2021-07-10 15:38:42 -05:00
Lucas Scharenbroich 469e8bb74a Add all minimal function in place; not onto debugging 2021-07-09 15:38:32 -05:00
Lucas Scharenbroich 5d713caf5c More parts of the render pipeline in place 2021-07-09 14:18:49 -05:00
Lucas Scharenbroich 7ee1ddb604 Fix cimpilation errors 2021-07-08 08:17:38 -05:00
Lucas Scharenbroich 8ec31631eb Split up source code a bit more; work toward completing render pipeline 2021-07-08 07:46:35 -05:00
Lucas Scharenbroich 6b32d61fa9 Small optimization to save 1 cycle per line 2021-07-07 21:13:18 -05:00
Lucas Scharenbroich 39f61087ce Fix stack initialization bug 2021-07-07 16:55:41 -05:00
Lucas Scharenbroich 92611281a4 Implemented a PEI slammer that can break for interrupt handling 2021-07-07 16:36:44 -05:00
Lucas Scharenbroich d1557437c5 Init tile sizes; fix merlin bug and fix bad jump table values 2021-03-24 06:37:48 -05:00
Lucas Scharenbroich 89c9a5c791 Store scrren width and height in tiles 2021-03-24 06:36:47 -05:00
Lucas Scharenbroich 04f202c9f8 Allow dynamic user selection of playfield size 2021-03-21 23:44:33 -05:00
Lucas Scharenbroich cfa1bd6f61 Refactor screen init to allow for all modes 2021-03-21 23:23:52 -05:00
Lucas Scharenbroich 50a3f27a9a Reorg files; focus on S16 artifact 2021-03-21 21:59:54 -05:00
Lucas Scharenbroich 5e757f3cc5 More play-around 2020-08-23 00:25:39 -05:00
Lucas Scharenbroich 30cb545e5e Update skeleon to show a pictire on-screen 2020-08-19 00:35:30 -05:00
Lucas Scharenbroich 3ba1564719 Add old docs about theoretical GTE blitter core 2020-08-16 16:37:23 -05:00
Lucas Scharenbroich 9efebd3382 Setting up basic xdev environment 2018-08-03 22:32:14 -05:00