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);