From 3a5a40ac5415e6b4385b8c6d3604832b3c468b02 Mon Sep 17 00:00:00 2001 From: Mike Pavone Date: Sun, 9 Dec 2012 00:03:15 -0800 Subject: Implement sprite index >= sprite limit triggers sprite limit behavior --- vdp.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'vdp.c') diff --git a/vdp.c b/vdp.c index fc7f6ba..4a6d45b 100644 --- a/vdp.c +++ b/vdp.c @@ -59,6 +59,15 @@ void scan_sprite_table(uint32_t line, vdp_context * context) line += 1; line &= 0xFF; context->sprite_index &= 0x7F; + if (context->latched_mode & BIT_H40) { + if (context->sprite_index >= MAX_SPRITES_FRAME) { + context->sprite_index = 0; + return; + } + } else if(context->sprite_index >= MAX_SPRITES_FRAME_H32) { + context->sprite_index = 0; + return; + } //TODO: Read from SAT cache rather than from VRAM uint16_t sat_address = (context->regs[REG_SAT] & 0x7F) << 9; uint16_t address = context->sprite_index * 8 + sat_address; -- cgit v1.2.3