mirror of https://github.com/mgba-emu/mgba.git
Support hflip on mode 0 edges
This commit is contained in:
parent
ebb1c08840
commit
1c6fc26bf7
|
@ -540,15 +540,28 @@ static void _drawBackgroundMode0(struct GBAVideoSoftwareRenderer* renderer, stru
|
||||||
uint32_t tileData;
|
uint32_t tileData;
|
||||||
BACKGROUND_TEXT_SELECT_CHARACTER;
|
BACKGROUND_TEXT_SELECT_CHARACTER;
|
||||||
charBase = ((background->charBase + (mapData.tile << 5)) >> 2) + localY;
|
charBase = ((background->charBase + (mapData.tile << 5)) >> 2) + localY;
|
||||||
|
|
||||||
tileData = ((uint32_t*)renderer->d.vram)[charBase];
|
tileData = ((uint32_t*)renderer->d.vram)[charBase];
|
||||||
tileData >>= 4 * (inX & 0x7);
|
if (!mapData.hflip) {
|
||||||
if (!variant) {
|
tileData >>= 4 * (inX & 0x7);
|
||||||
for (outX = 0; outX < end; ++outX) {
|
if (!variant) {
|
||||||
BACKGROUND_DRAW_PIXEL_16_NORMAL;
|
for (outX = 0; outX < end; ++outX) {
|
||||||
|
BACKGROUND_DRAW_PIXEL_16_NORMAL;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (outX = 0; outX < end; ++outX) {
|
||||||
|
BACKGROUND_DRAW_PIXEL_16_VARIANT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (outX = 0; outX < end; ++outX) {
|
if (!variant) {
|
||||||
BACKGROUND_DRAW_PIXEL_16_VARIANT;
|
for (outX = end; outX--;) {
|
||||||
|
BACKGROUND_DRAW_PIXEL_16_NORMAL;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (outX = end; outX--;) {
|
||||||
|
BACKGROUND_DRAW_PIXEL_16_VARIANT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -556,13 +569,26 @@ static void _drawBackgroundMode0(struct GBAVideoSoftwareRenderer* renderer, stru
|
||||||
BACKGROUND_TEXT_SELECT_CHARACTER;
|
BACKGROUND_TEXT_SELECT_CHARACTER;
|
||||||
charBase = ((background->charBase + (mapData.tile << 5)) >> 2) + localY;
|
charBase = ((background->charBase + (mapData.tile << 5)) >> 2) + localY;
|
||||||
tileData = ((uint32_t*)renderer->d.vram)[charBase];
|
tileData = ((uint32_t*)renderer->d.vram)[charBase];
|
||||||
if (!variant) {
|
if (!mapData.hflip) {
|
||||||
for (outX = VIDEO_HORIZONTAL_PIXELS - 8 + end; outX < VIDEO_HORIZONTAL_PIXELS; ++outX) {
|
if (!variant) {
|
||||||
BACKGROUND_DRAW_PIXEL_16_NORMAL;
|
for (outX = VIDEO_HORIZONTAL_PIXELS - 8 + end; outX < VIDEO_HORIZONTAL_PIXELS; ++outX) {
|
||||||
|
BACKGROUND_DRAW_PIXEL_16_NORMAL;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (outX = VIDEO_HORIZONTAL_PIXELS - 8 + end; outX < VIDEO_HORIZONTAL_PIXELS; ++outX) {
|
||||||
|
BACKGROUND_DRAW_PIXEL_16_VARIANT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (outX = VIDEO_HORIZONTAL_PIXELS - 8 + end; outX < VIDEO_HORIZONTAL_PIXELS; ++outX) {
|
tileData >>= 4 * end;
|
||||||
BACKGROUND_DRAW_PIXEL_16_VARIANT;
|
if (!variant) {
|
||||||
|
for (outX = VIDEO_HORIZONTAL_PIXELS - 1; outX > VIDEO_HORIZONTAL_PIXELS - 8; --outX) {
|
||||||
|
BACKGROUND_DRAW_PIXEL_16_NORMAL;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (outX = VIDEO_HORIZONTAL_PIXELS - 1; outX > VIDEO_HORIZONTAL_PIXELS - 8; --outX) {
|
||||||
|
BACKGROUND_DRAW_PIXEL_16_VARIANT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue