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 }