#include #include #define VDP_VRAM_SIZE 0x4020 #define VDP_SCREENW (32*8) #define VDP_SCREENH (24*8) // Offset of the name table #define VDP_NTABLE_OFFSET 0x3800 typedef struct { // the last 0x20 is palette RAM uint8_t vram[VDP_VRAM_SIZE]; uint8_t regs[0x10]; uint8_t cmdlsb; bool has_cmdlsb; uint16_t curaddr; } VDP; void vdp_init(VDP *vdp); uint8_t vdp_cmd_rd(VDP *vdp); void vdp_cmd_wr(VDP *vdp, uint8_t val); uint8_t vdp_data_rd(VDP *vdp); void vdp_data_wr(VDP *vdp, uint8_t val); // result is a RGB value uint8_t vdp_pixel(VDP *vdp, uint16_t x, uint16_t y);