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>
40 _SYSAttachedVideoBuffer *sys;
51 uint16_t word = _SYS_TILE77(tile);
52 uint16_t addr = (
offsetof(_SYSVideoRAM, spr[0].tile)/2 +
53 sizeof(_SYSSpriteInfo)/2 *
id );
54 _SYS_vbuf_poke(&sys->vbuf, addr, word);
70 uint16_t addr = (
offsetof(_SYSVideoRAM, spr[0].mask_x) +
71 sizeof(_SYSSpriteInfo) *
id );
72 return -(int8_t)_SYS_vbuf_peekb(&sys->vbuf, addr);
79 uint16_t addr = (
offsetof(_SYSVideoRAM, spr[0].mask_y) +
80 sizeof(_SYSSpriteInfo) *
id );
81 return -(int8_t)_SYS_vbuf_peekb(&sys->vbuf, addr);
88 uint16_t addr = (
offsetof(_SYSVideoRAM, spr[0].mask_y)/2 +
89 sizeof(_SYSSpriteInfo)/2 *
id );
90 uint16_t word = _SYS_vbuf_peek(&sys->vbuf, addr);
91 return vec<uint8_t>(-(int8_t)(word >> 8), -(int8_t)word);
98 uint16_t addr = (
offsetof(_SYSVideoRAM, spr[0].mask_x) +
99 sizeof(_SYSSpriteInfo) *
id );
100 _SYS_vbuf_pokeb(&sys->vbuf, addr, -(int8_t)pixels);
107 uint16_t addr = (
offsetof(_SYSVideoRAM, spr[0].mask_y) +
108 sizeof(_SYSSpriteInfo) *
id );
109 _SYS_vbuf_pokeb(&sys->vbuf, addr, -(int8_t)pixels);
117 ASSERT((x & (x - 1)) == 0 && (y & (y - 1)) == 0);
119 _SYS_vbuf_spr_resize(&sys->vbuf,
id, x, y);
159 _SYS_vbuf_spr_move(&sys->vbuf,
id, x, y);
190 uint16_t addr = (
offsetof(_SYSVideoRAM, spr[0].pos_x) +
191 sizeof(_SYSSpriteInfo) *
id );
192 return -(int8_t)_SYS_vbuf_peekb(&sys->vbuf, addr);
199 uint16_t addr = (
offsetof(_SYSVideoRAM, spr[0].pos_y) +
200 sizeof(_SYSSpriteInfo) *
id );
201 return -(int8_t)_SYS_vbuf_peekb(&sys->vbuf, addr);
208 uint16_t addr = (
offsetof(_SYSVideoRAM, spr[0].pos_y)/2 +
209 sizeof(_SYSSpriteInfo)/2 *
id );
210 uint16_t word = _SYS_vbuf_peek(&sys->vbuf, addr);
211 return vec<int8_t>(-(int8_t)(word >> 8), -(int8_t)word);
221 SpriteRef operator++ (
int) {
222 SpriteRef result = *
this;
228 SpriteRef operator-- () {
234 SpriteRef operator-- (
int) {
235 SpriteRef result = *
this;
241 SpriteRef operator[] (
int index) {
242 SpriteRef result = *
this;
260 _SYSAttachedVideoBuffer sys;
262 static const unsigned NUM_SPRITES = _SYS_VRAM_SPRITES;
283 _SYS_vbuf_fill(&sys.vbuf, _SYS_VA_SPR / 2, 0,
284 sizeof(_SYSSpriteInfo) / 2 * NUM_SPRITES);