From cd98b3665144c7a5ac641afe0fa916830bd2f563 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Sun, 16 Oct 2016 18:25:18 -0700 Subject: Initial stab at implementing the Jaguar object processor --- jag_video.h | 58 +++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 47 insertions(+), 11 deletions(-) (limited to 'jag_video.h') diff --git a/jag_video.h b/jag_video.h index 95790ec..ff6c5f2 100644 --- a/jag_video.h +++ b/jag_video.h @@ -50,19 +50,55 @@ enum { #define LINEBUFFER_WORDS 720 typedef struct { - uint32_t *output; - uint32_t output_pitch; - uint16_t regs[JAG_VIDEO_REGS]; + uint64_t im_data; + uint64_t prefetch; + uint32_t cycles; + uint32_t obj_start; + uint32_t link; + uint32_t data_address; + uint32_t cur_address; + uint32_t increment; + uint32_t line_pitch; + uint32_t lb_offset; + int16_t xpos; + uint16_t ypos; + uint16_t height; + int16_t hscale; + int16_t vscale; + int16_t hremainder; + int16_t remainder; + uint8_t bpp; + uint8_t line_phrases; + uint8_t state; + uint8_t type; + uint8_t im_bits; + uint8_t pal_offset; + uint8_t has_prefetch; + uint8_t hflip; + uint8_t addpixels; + uint8_t transparent; + uint8_t leftclip; +} object_processor; + +typedef struct { + void *system; + uint32_t *output; + uint32_t output_pitch; + uint16_t regs[JAG_VIDEO_REGS]; + + uint16_t clut[256]; + uint16_t line_buffer_a[LINEBUFFER_WORDS]; + uint16_t line_buffer_b[LINEBUFFER_WORDS]; + uint16_t *write_line_buffer; + + uint32_t cycles; + uint32_t op_cycles; + uint8_t pclock_div; + uint8_t pclock_counter; + uint8_t mode; - uint16_t clut[256]; - uint16_t line_buffer_a[LINEBUFFER_WORDS]; - uint16_t line_buffer_b[LINEBUFFER_WORDS]; - uint16_t *write_line_buffer; + object_processor op; - uint32_t cycles; - uint8_t pclock_div; - uint8_t pclock_counter; - uint8_t mode; } jag_video; -- cgit v1.2.3