summaryrefslogtreecommitdiff
path: root/vdp.h
diff options
context:
space:
mode:
authorMichael Pavone <pavone@retrodev.com>2017-04-27 23:08:49 -0700
committerMichael Pavone <pavone@retrodev.com>2017-04-27 23:08:49 -0700
commit4eafbde6d2134edfbe1b23bb96b3a76c1f34a7a3 (patch)
treef9d59601a99fee79701f48e96cbf26c5dd3ce153 /vdp.h
parent9d0069240fbde7632096a4792d1acdcca9bb47df (diff)
Fixes to sprite phase 2 so that sprite X reads use the exact same slot as on hardware in the case that there are fewer than the max number of sprites on each line. Re-read sprite Y from SAT cache during phase 2 and properly mask the calculated row. Fixes remaining issues with spinning cube scene in Overdrive 2.
Diffstat (limited to 'vdp.h')
-rw-r--r--vdp.h12
1 files changed, 7 insertions, 5 deletions
diff --git a/vdp.h b/vdp.h
index f16f5e8..3e35aa0 100644
--- a/vdp.h
+++ b/vdp.h
@@ -179,11 +179,6 @@ typedef struct {
uint16_t hscroll_b;
uint16_t h40_lines;
uint16_t output_lines;
- uint8_t hslot; //hcounter/2
- uint8_t sprite_index;
- uint8_t sprite_draws;
- int8_t slot_counter;
- int8_t cur_slot;
sprite_draw sprite_draw_list[MAX_DRAWS];
sprite_info sprite_info_list[MAX_SPRITES_LINE];
uint8_t sat_cache[SAT_CACHE_SIZE];
@@ -192,6 +187,13 @@ typedef struct {
uint16_t hv_latch;
uint16_t prefetch;
uint16_t test_port;
+ uint8_t hslot; //hcounter/2
+ uint8_t sprite_index;
+ uint8_t sprite_draws;
+ int8_t slot_counter;
+ int8_t cur_slot;
+ uint8_t max_sprites_frame;
+ uint8_t max_sprites_line;
uint8_t fetch_tmp[2];
uint8_t v_offset;
uint8_t dma_cd;