9 # error This is a userspace-only header, not allowed by the current build.
12 #include <sifteo/abi.h>
13 #include <sifteo/macros.h>
14 #include <sifteo/math.h>
35 _SYSAttachedVideoBuffer sys;
41 BLACK_ON_WHITE = 0 << 10,
42 BLUE_ON_WHITE = 1 << 10,
43 ORANGE_ON_WHITE = 2 << 10,
44 YELLOW_ON_BLUE = 3 << 10,
45 RED_ON_WHITE = 4 << 10,
46 GRAY_ON_WHITE = 5 << 10,
47 WHITE_ON_BLACK = 6 << 10,
48 WHITE_ON_BLUE = 7 << 10,
49 WHITE_ON_TEAL = 8 << 10,
50 BLACK_ON_YELLOW = 9 << 10,
51 DKGRAY_ON_LTGRAY = 10 << 10,
52 GREEN_ON_WHITE = 11 << 10,
53 WHITE_ON_GREEN = 12 << 10,
54 PURPLE_ON_WHITE = 13 << 10,
55 LTBLUE_ON_DKBLUE = 14 << 10,
56 GOLD_ON_WHITE = 15 << 10,
59 BLACK = BLACK_ON_WHITE,
61 ORANGE = ORANGE_ON_WHITE,
64 GREEN = GREEN_ON_WHITE,
65 PURPLE = PURPLE_ON_WHITE,
98 return _SYS_VRAM_BG0_WIDTH;
105 return _SYS_VRAM_BG0_WIDTH;
164 _SYS_vbuf_fill(&sys.vbuf, 0, _SYS_TILE77(index),
sizeInWords());
177 _SYS_vbuf_poke(&sys.vbuf,
offsetof(_SYSVideoRAM, bg0_x) / 2,
187 unsigned word = _SYS_vbuf_peek(&sys.vbuf,
offsetof(_SYSVideoRAM, bg0_x) / 2);
188 return vec<int>(word & 0xFF, word >> 8);
205 _SYS_vbuf_poke(&sys.vbuf,
tileAddr(pos), _SYS_TILE77(tileIndex));
214 void span(
UInt2 pos,
unsigned width,
unsigned tileIndex)
218 _SYS_vbuf_fill(&sys.vbuf,
tileAddr(pos), _SYS_TILE77(tileIndex), width);
230 span(topLeft, size.
x, tileIndex);
248 int wTiles = pixelWidth / 8;
249 int wRemainder = pixelWidth % 8;
252 _SYS_vbuf_fill(&sys.vbuf, addr,
253 _SYS_TILE77(palette ^
SOLID_FG), wTiles);
255 _SYS_vbuf_poke(&sys.vbuf, addr + wTiles,
256 _SYS_TILE77(palette ^ (
H_BARGRAPH + wRemainder - 1)));
271 unsigned lineAddr = addr;
278 _SYS_vbuf_poke(&sys.vbuf, addr++, _SYS_TILE77(
charTile(c, palette)));