mirror of
https://github.com/irmen/prog8.git
synced 2025-02-13 03:30:28 +00:00
gfx2 highres 4colors
This commit is contained in:
parent
c8855b2b10
commit
69c459c8ac
@ -239,22 +239,27 @@ _done
|
|||||||
6 -> {
|
6 -> {
|
||||||
; highres 4c
|
; highres 4c
|
||||||
; TODO also mostly usable for lores 4c?
|
; TODO also mostly usable for lores 4c?
|
||||||
cx16.VERA_ADDR_H = (cx16.VERA_ADDR_H & %00000111) ; no auto advance
|
|
||||||
color &=3
|
color &=3
|
||||||
color <<= gfx2.plot.shift4c[lsb(x) & 3]
|
ubyte[4] colorbits
|
||||||
ubyte mask = gfx2.plot.mask4c[lsb(x) & 3]
|
ubyte[4] masks
|
||||||
|
ubyte mask = %11111100
|
||||||
|
ubyte ii
|
||||||
|
for ii in 3 downto 0 {
|
||||||
|
colorbits[ii] = color
|
||||||
|
masks[ii] = mask
|
||||||
|
color <<= 2
|
||||||
|
mask <<=2
|
||||||
|
}
|
||||||
void addr_mul_24_for_highres_4c(y, x) ; 24 bits result is in r0 and r1L (highest byte)
|
void addr_mul_24_for_highres_4c(y, x) ; 24 bits result is in r0 and r1L (highest byte)
|
||||||
|
cx16.VERA_ADDR_H = (cx16.VERA_ADDR_H & %00000111) ; no auto advance
|
||||||
repeat length {
|
repeat length {
|
||||||
; TODO optimize the vera memory manipulation in pure assembly
|
; TODO optimize the vera memory manipulation in pure assembly
|
||||||
ubyte cbits4 = cx16.vpeek(lsb(cx16.r1), cx16.r0) & mask | color
|
ubyte lower_x_bits = lsb(x) & 3
|
||||||
|
ubyte cbits4 = cx16.vpeek(lsb(cx16.r1), cx16.r0) & masks[lower_x_bits] | colorbits[lower_x_bits]
|
||||||
cx16.vpoke(lsb(cx16.r1), cx16.r0, cbits4)
|
cx16.vpoke(lsb(cx16.r1), cx16.r0, cbits4)
|
||||||
x++
|
if lower_x_bits==%00000011
|
||||||
if x & 3 == 0
|
|
||||||
cx16.r0++ ; next x byte
|
cx16.r0++ ; next x byte
|
||||||
ror2(color)
|
x++
|
||||||
ror2(color)
|
|
||||||
ror2(mask)
|
|
||||||
ror2(mask)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -635,6 +640,7 @@ _done
|
|||||||
; -- sets the next pixel byte to the graphics chip.
|
; -- sets the next pixel byte to the graphics chip.
|
||||||
; for 8 bpp screens this will plot 1 pixel.
|
; for 8 bpp screens this will plot 1 pixel.
|
||||||
; for 1 bpp screens it will plot 8 pixels at once (color = bit pattern).
|
; for 1 bpp screens it will plot 8 pixels at once (color = bit pattern).
|
||||||
|
; for 2 bpp screens it will plot 4 pixels at once (color = bit pattern).
|
||||||
%asm {{
|
%asm {{
|
||||||
sta cx16.VERA_DATA0
|
sta cx16.VERA_DATA0
|
||||||
}}
|
}}
|
||||||
@ -644,6 +650,7 @@ _done
|
|||||||
; -- sets the next bunch of pixels from a prepared array of bytes.
|
; -- sets the next bunch of pixels from a prepared array of bytes.
|
||||||
; for 8 bpp screens this will plot 1 pixel per byte.
|
; for 8 bpp screens this will plot 1 pixel per byte.
|
||||||
; for 1 bpp screens it will plot 8 pixels at once (colors are the bit patterns per byte).
|
; for 1 bpp screens it will plot 8 pixels at once (colors are the bit patterns per byte).
|
||||||
|
; for 2 bpp screens it will plot 4 pixels at once (colors are the bit patterns per byte).
|
||||||
%asm {{
|
%asm {{
|
||||||
phx
|
phx
|
||||||
sta P8ZP_SCRATCH_W1
|
sta P8ZP_SCRATCH_W1
|
||||||
|
@ -10,10 +10,8 @@
|
|||||||
main {
|
main {
|
||||||
|
|
||||||
sub start() {
|
sub start() {
|
||||||
palette.set_monochrome($0aaa, $0000)
|
gfx2.screen_mode(5) ; select 640*480 mode
|
||||||
gfx2.screen_mode(6) ; select 640*480 mode
|
palette.set_monochrome($0aaa, $0000) ; TODO fix setting the palette... the isNoClobberRisk() for lsb/msb broke it
|
||||||
|
|
||||||
sys.wait(200)
|
|
||||||
|
|
||||||
cx16.VERA_DC_VSCALE = 64 ; have the vertical resolution so it is 640*240 - more or less Amiga's default non interlaced mode
|
cx16.VERA_DC_VSCALE = 64 ; have the vertical resolution so it is 640*240 - more or less Amiga's default non interlaced mode
|
||||||
cx16.mouse_config(1, 1) ; enable mouse TODO make it an Amiga mouse pointer if possible
|
cx16.mouse_config(1, 1) ; enable mouse TODO make it an Amiga mouse pointer if possible
|
||||||
|
@ -19,14 +19,14 @@ main {
|
|||||||
|
|
||||||
ubyte color
|
ubyte color
|
||||||
uword yy
|
uword yy
|
||||||
for color in 3 downto 0 {
|
; for color in 3 downto 0 {
|
||||||
for yy in 100 to 120 {
|
; for yy in 100 to 120 {
|
||||||
uword xx
|
; uword xx
|
||||||
for xx in 10 to 500 {
|
; for xx in 10 to 500 {
|
||||||
gfx2.plot(xx, yy, color)
|
; gfx2.plot(xx, yy, color)
|
||||||
}
|
; }
|
||||||
}
|
; }
|
||||||
}
|
; }
|
||||||
|
|
||||||
|
|
||||||
for color in 3 downto 0 {
|
for color in 3 downto 0 {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user