summaryrefslogtreecommitdiff
path: root/vdp.c
diff options
context:
space:
mode:
Diffstat (limited to 'vdp.c')
-rw-r--r--vdp.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/vdp.c b/vdp.c
index 3a8014e..fd98578 100644
--- a/vdp.c
+++ b/vdp.c
@@ -589,9 +589,12 @@ static void read_sprite_x_mode4(uint32_t line, vdp_context * context)
uint32_t address = (context->regs[REG_SAT] << 7 & 0x3F00) + 0x80 + context->sprite_info_list[context->cur_slot].index * 2;
address = mode4_address_map[address];
--context->sprite_draws;
- uint32_t tile_address = context->vdpmem[address + 1] * 32 + (context->regs[REG_STILE_BASE] << 11 & 0x2000);
+ uint32_t tile_address = context->vdpmem[address] * 32 + (context->regs[REG_STILE_BASE] << 11 & 0x2000);
+ if (context->regs[REG_MODE_2] & BIT_SPRITE_SZ) {
+ tile_address &= ~32;
+ }
tile_address += (line - context->sprite_info_list[context->cur_slot].y)* 4;
- context->sprite_draw_list[context->sprite_draws].x_pos = context->vdpmem[address];
+ context->sprite_draw_list[context->sprite_draws].x_pos = context->vdpmem[address + 1];
context->sprite_draw_list[context->sprite_draws].address = tile_address;
context->cur_slot--;
} else {