GBA Video: Fix sprites in modes 3 - 5 when character mapping is disabled

This commit is contained in:
Jeffrey Pfau 2015-07-28 10:03:11 -07:00
parent fa7660020f
commit cd3b9cdc6b
3 changed files with 4 additions and 2 deletions

View File

@ -64,6 +64,7 @@ Bugfixes:
- Qt: Fix a missing va_end call in the log handler lambda within the GameController constructor
- GBA Cheats: Fix Pro Action Replay and GameShark issues when used together
- Qt: Fix analog buttons not getting unmapped
- GBA Video: Fix sprites in modes 3 - 5 when character mapping is disabled
Misc:
- Qt: Handle saving input settings better
- Debugger: Free watchpoints in addition to breakpoints

View File

@ -114,7 +114,7 @@ int GBAVideoSoftwareRendererPreprocessSprite(struct GBAVideoSoftwareRenderer* re
flags |= FLAG_OBJWIN * (GBAObjAttributesAGetMode(sprite->a) == OBJ_MODE_OBJWIN);
int32_t x = GBAObjAttributesBGetX(sprite->b) << 23;
x >>= 23;
uint16_t* vramBase = &renderer->d.vram[BASE_TILE >> 1];
uint16_t* vramBase = &renderer->d.vram[(GBARegisterDISPCNTGetMode(renderer->dispcnt) < 3 || GBARegisterDISPCNTIsObjCharacterMapping(renderer->dispcnt) ? BASE_TILE : BASE_TILE_BITMAP) >> 1];
unsigned charBase = GBAObjAttributesCGetTile(sprite->c) * 0x20;
int variant = renderer->target1Obj && GBAWindowControlIsBlendEnable(renderer->currentWindow.packed) && (renderer->blendEffect == BLEND_BRIGHTEN || renderer->blendEffect == BLEND_DARKEN);
if (GBAObjAttributesAGetMode(sprite->a) == OBJ_MODE_SEMITRANSPARENT) {

View File

@ -40,7 +40,8 @@ enum {
REG_DISPSTAT_MASK = 0xFF38,
BASE_TILE = 0x00010000
BASE_TILE = 0x00010000,
BASE_TILE_BITMAP = 0x00014000
};
enum ObjMode {