Mercurial > repos > blastem
comparison vdp.c @ 1133:28363cb568c4
Make Mode 4 sprite rendering a little less broken
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 01 Jan 2017 01:23:26 -0800 |
parents | fd3b8ac57aca |
children | 15a32da89d23 |
comparison
equal
deleted
inserted
replaced
1132:fd3b8ac57aca | 1133:28363cb568c4 |
---|---|
587 line &= 0xFF; | 587 line &= 0xFF; |
588 | 588 |
589 uint32_t address = (context->regs[REG_SAT] << 7 & 0x3F00) + 0x80 + context->sprite_info_list[context->cur_slot].index * 2; | 589 uint32_t address = (context->regs[REG_SAT] << 7 & 0x3F00) + 0x80 + context->sprite_info_list[context->cur_slot].index * 2; |
590 address = mode4_address_map[address]; | 590 address = mode4_address_map[address]; |
591 --context->sprite_draws; | 591 --context->sprite_draws; |
592 uint32_t tile_address = context->vdpmem[address + 1] * 32 + (context->regs[REG_STILE_BASE] << 11 & 0x2000); | 592 uint32_t tile_address = context->vdpmem[address] * 32 + (context->regs[REG_STILE_BASE] << 11 & 0x2000); |
593 if (context->regs[REG_MODE_2] & BIT_SPRITE_SZ) { | |
594 tile_address &= ~32; | |
595 } | |
593 tile_address += (line - context->sprite_info_list[context->cur_slot].y)* 4; | 596 tile_address += (line - context->sprite_info_list[context->cur_slot].y)* 4; |
594 context->sprite_draw_list[context->sprite_draws].x_pos = context->vdpmem[address]; | 597 context->sprite_draw_list[context->sprite_draws].x_pos = context->vdpmem[address + 1]; |
595 context->sprite_draw_list[context->sprite_draws].address = tile_address; | 598 context->sprite_draw_list[context->sprite_draws].address = tile_address; |
596 context->cur_slot--; | 599 context->cur_slot--; |
597 } else { | 600 } else { |
598 context->flags |= FLAG_DOT_OFLOW; | 601 context->flags |= FLAG_DOT_OFLOW; |
599 } | 602 } |