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