Todo:
-----------
Fix - issues with basic charmode (READY screen black) and basic sample effects
Fix - issues with concurrency (profiler, when it starts jumping)
SimAntic - prepare simple fx template, add to fx selector
SimAntic - cleanup the code (move non-relevant files to a separate branch)
SimAntic - prepare content to show during wild, clean it up
<---- M1: needed for wild video recording ---->
SimAntic - Negative flag handling and SBC fixes ...
SimAntic - Dump memory to dat() statement (to be used in MADS/WUSDN)
SimAntic - Data/org statement (puts block of data into memory)
SimAntic - Image mem loader - packer before mem drop
SimAntic - write simple tutorial
SimAntic - write/add a couple of sample fx
SimAntic - Show history of fx frame cycle counts (for the last 120 frames/2s)
Voxel - check the cycles (look for optimizations)
Implement simple putpixel/getpixel
Implement ASL/LSR/ROR/ROL
Simple Perlin-like noise algorithm
Peek random generator (POKEY)
Fix pixMul in text modes
Helper: put letter onto screen (Text modes)
SimAntic - Add basic PMG capabilities
Done:
-----------
Fix - color view (null pointer exceptions)
Fix - layout on helper views
SimAntic - proper/example FxVoxels helper view
SimAntic - logo design
SimAntic - setup gfx address in memory (instead of full DL for now), fix back to default $A150 for GTIA9
SimAntic - load dat/binary to memory
SimAntic - automatic add to bookmarks, when adding section to memory map
SimAntic - layout of additional views (depending on the visibility flags) - as separate windows
Fix - handle different size of helperview (on fx switch as well)
Fix - concurrency issues
Voxel - add simple PMG sun with lens flare
Voxel - setup gfx w/o OS
Voxel - try to split screen fillers into 2 blocks
Voxel - remove orgs
Voxel - Sea distance idea (dithered? - less cycles then - approx 10K saved if 2nd line)
Voxel - comments and cleanup of the code
Voxel - add fx length variable
Voxel - disable ANTIC during generation
Voxel - last 2-3 rows - updated with single line value? (6850b)
Voxel - add nice sky (dithered) - +150b? (6790b)
Pack 160b at the end of TEX_ADDR and 32b - end of HMAX offsets
Now 8749
Now 8870:
----------
-2000b - texture packing
+100 - texture depacker
-192b (TEX_ADDR end and HMAX end)
-120b (HMAX values)
------
6638
Voxel - texture 'compression' and decompressor
-- initial texture at $1600 - $1e00, depack to $2d00-$3d00
Voxel - include HMAX data into texture compression (128b savings)
Voxel - init: generate colfiller
Voxel - init: generate CBASE
Pack all the tables on single page (0x3e00 - if possible), gaps:
- $3de0 -> 32bytes available, move HMAX_VECTORS here (from $3f50), 24b
- $3e50 -> 3e4c move colfill vectors here...
- $3e65 -> move CBASEs here
- $2c00 - 160b, from $2c60
- $3F00 - 80b+112n
Generate colfiller and vectors
Generate CBASEs (part of colfiller loop)
Generate Sea Frames banks and pages
Voxel - remove noise/leftout pixels
Voxel - banks, precalc, remove prefetch
prefetchBanks - pure asm code
Create/generate banks and pages table 64b+64b
Voxel/SimAntic - Move texture below the tables (to have continuous dat file)
Voxel/SimAntic - move below 0x4000 (banks):
-- Column Fillers (75b)
-- Column Fillers Vectors (24)
-- Screen Fillers Vectors (80b)
-- HMax Vec (24)
-- CBases (24)
-- Hmax Data (256b)
Voxel/SimAntic - rework prefetcher, to generate all frames using banks
Voxel/SimAntic - rework renderer, to use prefetched frames (and bank switching)
Voxel - init: generate screen fillers
SimAntic - add banks switching support
Voxel - explore banks - https://www.atarimagazines.com/v4n7/memorymanagement.html
Voxel - Sea Move regular
---MILESTONE1 - static render on Altirra/Atari800win------
Voxel - Move all to MADS/asm
Voxel - implement the effect using mostly/only asm statements
Voxel - defragment/compact zeropage memory used
Voxel - Defragment/compact the memory used (unrolled code vs dynamic data)
SimAntic - Dump memory to pure binary file (to be included directly in MADS)
Voxel - Unroll prefetch
Voxel - use ScreenFiller vector map
SimAntic - Visual memory map
Voxel - calculation of height scaling (f(z, h))
Voxel column filler proc
Add status bar (memory usage, cycles count (per frame))
Voxel - pre-calc heights
Voxel - pre-calc cBases (24+4)?
Init - calc hmax tab (24 rows -> 16 offsets -> 1page of values)
Test approach with innercoll - jmp_in
Section profiling
Voxel - refactor the effect using jmp calls to column filler
Init - calc in-memory column filler proc
Init - Recalc zig-zagged texture offset scheme
Voxel - refactor the effect using loops for column filler
Voxels - code unrolling (Koala's idea) - unrolled generator code
Loop unrolling support (jsr, and bytemem parsing and interpretation)
Memory usage - in KBs
Putpixel - GTIA9-11
Display memory as bitmap (configurable size)
Helper: PNG image loader (to memory)
Poke (address selector)
Helper renderer (e.g. side view).
Poke (set specific data into specific memory location)
Re-implement Sillyvitro 256b
Re-implement firestarter 256b
Antic - TEXT4 mode rendering (multicolor characters)
Charset switch
Putpixel - hires
Antic - TEXT2 mode rendering (characters)
Antic - hires rendering
Memory - Load ROM
Take into account COL registers
Antic - GTIA9 mode rendering (16 shades of color)
Antic - GTIA10 mode rendering
Antic - GTIA11 mode rendering (16 hues of color)
Selectable list of offsets
Selectable list of FX
Selectable pixMul (UI)
Parked:
-----------
Voxel - calculation of screen offsets
Voxel - simple 2D textured plane (perspective)
Voxels - check Konop's mode (but 2x)
Voxel - Sea Move unrolled