Mercurial > repos > simple16
view src/vdp.h @ 34:4a093f15fb1b
Finish controller test for controller 1
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 03 Apr 2016 19:03:35 -0700 |
parents | 083347ccd508 |
children | 6e7bfe83d2b0 |
line wrap: on
line source
#ifndef VDP_H_ #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; uint32_t cycles; uint32_t clock_inc; int pitch; uint16_t fifo; uint16_t dest_offset; uint16_t status; uint16_t vcounter; uint16_t hcounter; uint16_t vscroll; uint16_t hscroll; 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 hflip; uint8_t palpriority; uint8_t current_draw; } vdp; enum { FIFO_DEST_INVALID, FIFO_DEST_VRAM, FIFO_DEST_SRAM, 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_SPRITE_SCAN 16 #define VDP_STATUS_PENDING_VINT 32 void vdp_init(vdp *context, uint32_t clock_div); void vdp_run(vdp *context, uint32_t target); void vdp_write_address(vdp *context, uint16_t value); void vdp_write_data(vdp *context, uint16_t value); void vdp_write_hscroll(vdp *context, uint16_t value); uint32_t vdp_next_interrupt(vdp *context); void vdp_ack_interrupt(vdp *context); uint8_t vdp_interrupt_pending(vdp *context); #endif //VDP_H_