diff --git a/compiler/res/prog8lib/cx16/gfx2.p8 b/compiler/res/prog8lib/cx16/gfx2.p8 index ae499c03a..cf25ce815 100644 --- a/compiler/res/prog8lib/cx16/gfx2.p8 +++ b/compiler/res/prog8lib/cx16/gfx2.p8 @@ -13,8 +13,8 @@ ; SCREEN MODE LIST: ; mode 0 = reset back to default text mode ; mode 1 = bitmap 320 x 240 monochrome -; mode 2 = bitmap 320 x 240 x 4c (TODO not yet implemented) -; mode 3 = bitmap 320 x 240 x 16c (TODO not yet implemented) +; mode 2 = bitmap 320 x 240 x 4c (not yet implemented: just use 256c, there's enough vram for that) +; mode 3 = bitmap 320 x 240 x 16c (not yet implemented: just use 256c, there's enough vram for that) ; mode 4 = bitmap 320 x 240 x 256c (like SCREEN $80 but using this api instead of kernal) ; mode 5 = bitmap 640 x 480 monochrome ; mode 6 = bitmap 640 x 480 x 4c @@ -47,7 +47,7 @@ gfx2 { height = 240 bpp = 1 } - ; TODO modes 2, 3 not yet implemented + ; TODO modes 2, 3 4 -> { ; lores 256c cx16.VERA_DC_VIDEO = (cx16.VERA_DC_VIDEO & %11001111) | %00100000 ; enable only layer 1 @@ -110,7 +110,7 @@ gfx2 { repeat 240/2/8 cs_innerloop640() } - ; TODO mode 2, 3 + ; TODO modes 2, 3 4 -> { ; lores 256c repeat 240/2 @@ -241,8 +241,7 @@ _done }} } 6 -> { - ; highres 4c - ; TODO also mostly usable for lores 4c? + ; highres 4c ....also mostly usable for mode 2, lores 4c? color &= 3 ubyte[4] colorbits ubyte ii @@ -601,7 +600,7 @@ _done }} } } - ; TODO mode 2,3 + ; TODO modes 2, 3 4 -> { ; lores 256c void addr_mul_24_for_lores_256c(y, x) ; 24 bits result is in r0 and r1L (highest byte) @@ -653,8 +652,7 @@ _done } } 6 -> { - ; highres 4c - ; TODO also mostly usable for lores 4c? + ; highres 4c ....also mostly usable for mode 2, lores 4c? void addr_mul_24_for_highres_4c(y, x) ; 24 bits result is in r0 and r1L (highest byte) cx16.r2L = lsb(x) & 3 ; xbits ; color &= 3 @@ -708,7 +706,7 @@ _done + }} } - ; TODO mode 2 and 3 + ; TODO modes 2, 3 4 -> { ; lores 256c void addr_mul_24_for_lores_256c(y, x) ; 24 bits result is in r0 and r1L (highest byte) @@ -888,7 +886,7 @@ skip: cx16.r0 = y*(320/8) + x/8 cx16.vaddr(0, cx16.r0, 0, 1) } - ; TODO modes 2,3 + ; TODO modes 2, 3 4 -> { ; lores 256c void addr_mul_24_for_lores_256c(y, x) ; 24 bits result is in r0 and r1L (highest byte) diff --git a/docs/source/todo.rst b/docs/source/todo.rst index 60a794167..e38dc43c6 100644 --- a/docs/source/todo.rst +++ b/docs/source/todo.rst @@ -33,7 +33,6 @@ Compiler: - ir: the @split arrays are currently also split in _lsb/_msb arrays in the IR, and operations take multiple (byte) instructions that may lead to verbose and slow operation and machine code generation down the line. - ir: for expressions with array indexes that occur multiple times, can we avoid loading them into new virtualregs everytime and just reuse a single virtualreg as indexer? (simple form of common subexpression elimination) - PtAst/IR: more complex common subexpression eliminations -- can we get rid of pieces of asmgen.AssignmentAsmGen by just reusing the AugmentableAssignment ? generated code should not suffer - [problematic due to using 64tass:] better support for building library programs, where unused .proc shouldn't be deleted from the assembly? Perhaps replace all uses of .proc/.pend/.endproc by .block/.bend will fix that with a compiler flag? But all library code written in asm uses .proc already..... (textual search/replace when writing the actual asm?) @@ -47,10 +46,9 @@ Libraries: - fix the problems in atari target, and flesh out its libraries. - c128 target: make syslib more complete (missing kernal routines)? - c64: make the graphics.BITMAP_ADDRESS configurable (VIC banking) -- actually implement modes 3 and perhaps even 2 to gfx2 (lores 16 color and 4 color) -Expressions: +Expressions: (see remove_evalstack branch): - Once the evalstack-free expression codegen is in place, the Eval Stack can be removed from the compiler. Machinedefinition, .p8 and .asm library files, all routines operationg on estack, and everything saving/restoring the X register related to this stack.