Mercurial > repos > simple16
diff src/vdp.h @ 22:407725d9a02f
Implemented sprite drawing. Added small sprite example.
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 30 Mar 2016 19:55:48 -0700 |
parents | 04fc17376999 |
children | a085f17b79e9 |
line wrap: on
line diff
--- a/src/vdp.h Tue Mar 29 19:59:26 2016 -0700 +++ b/src/vdp.h Wed Mar 30 19:55:48 2016 -0700 @@ -2,6 +2,13 @@ #define VDP_H_ typedef struct { + uint16_t source; + uint16_t x; + uint8_t hflip; + uint8_t palpriority; +} sprite_draw; + +typedef struct { uint16_t *framebuffer; uint8_t *drawbuffer; uint8_t *readbuffer; @@ -22,14 +29,18 @@ uint16_t draw_source; uint16_t draw_dest; + uint16_t vram[32*512]; uint8_t linebuffers[328*2]; uint16_t sram[64*2]; uint16_t cram[64]; + sprite_draw sprite_draws[40]; + uint8_t fifo_dest; uint8_t draw_counter; uint8_t palpriority; + uint8_t current_draw; } vdp; enum { @@ -39,10 +50,11 @@ FIFO_DEST_CRAM }; -#define VDP_STATUS_FIFO 1 -#define VDP_STATUS_VRAM 2 -#define VDP_STATUS_SRAM 4 -#define VDP_STATUS_ENABLED 8 +#define VDP_STATUS_FIFO 1 +#define VDP_STATUS_VRAM 2 +#define VDP_STATUS_SRAM 4 +#define VDP_STATUS_ENABLED 8 +#define VDP_STATUS_SPRITE_SCAN 16 void vdp_init(vdp *context, uint32_t clock_div); void vdp_run(vdp *context, uint32_t target);