Mercurial > repos > blastem
changeset 32:8602ad493794
Fix horizontal sprite mirroring
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 08 Dec 2012 21:39:01 -0800 |
parents | 25016576b5f3 |
children | 2e15fa26fe58 |
files | vdp.c |
diffstat | 1 files changed, 9 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/vdp.c Sat Dec 08 20:25:56 2012 -0800 +++ b/vdp.c Sat Dec 08 21:39:01 2012 -0800 @@ -112,10 +112,17 @@ if (x) { x -= 128; int16_t base_x = x; + int16_t dir; + if (tileinfo & MAP_BIT_H_FLIP) { + x += (width-1) * 8; + dir = -8; + } else { + dir = 8; + } //printf("Sprite %d | x: %d, y: %d, width: %d, height: %d, pal_priority: %X, row: %d, tile addr: %X\n", context->sprite_info_list[context->cur_slot].index, x, context->sprite_info_list[context->cur_slot].y, width, height, pal_priority, row, address); - for (;width && context->sprite_draws; --width, x += 8) { + for (int16_t i=0; i < width && context->sprite_draws; i++, x += dir) { --context->sprite_draws; - context->sprite_draw_list[context->sprite_draws].address = address + ((x-base_x) / 8) * height * 4; + context->sprite_draw_list[context->sprite_draws].address = address + i * height * 4; context->sprite_draw_list[context->sprite_draws].x_pos = x; context->sprite_draw_list[context->sprite_draws].pal_priority = pal_priority; context->sprite_draw_list[context->sprite_draws].h_flip = (tileinfo & MAP_BIT_H_FLIP) ? 1 : 0;