mirror of https://github.com/mgba-emu/mgba.git
GBA Video: Optimize localY code
This commit is contained in:
parent
c5ff781ed6
commit
7ea1c7f9bd
|
@ -74,7 +74,7 @@
|
||||||
inX -= disturbX << 3; \
|
inX -= disturbX << 3; \
|
||||||
localX = tileX * 8 + inX; \
|
localX = tileX * 8 + inX; \
|
||||||
BACKGROUND_TEXT_SELECT_CHARACTER; \
|
BACKGROUND_TEXT_SELECT_CHARACTER; \
|
||||||
localY = inY & 0x7; \
|
localY = inY; \
|
||||||
if (GBA_TEXT_MAP_VFLIP(mapData)) { \
|
if (GBA_TEXT_MAP_VFLIP(mapData)) { \
|
||||||
localY = 7 - localY; \
|
localY = 7 - localY; \
|
||||||
} \
|
} \
|
||||||
|
@ -83,7 +83,7 @@
|
||||||
} else { \
|
} else { \
|
||||||
localX = tileX * 8 + inX; \
|
localX = tileX * 8 + inX; \
|
||||||
BACKGROUND_TEXT_SELECT_CHARACTER; \
|
BACKGROUND_TEXT_SELECT_CHARACTER; \
|
||||||
localY = inY & 0x7; \
|
localY = inY; \
|
||||||
if (GBA_TEXT_MAP_VFLIP(mapData)) { \
|
if (GBA_TEXT_MAP_VFLIP(mapData)) { \
|
||||||
localY = 7 - localY; \
|
localY = 7 - localY; \
|
||||||
} \
|
} \
|
||||||
|
@ -111,9 +111,9 @@
|
||||||
for (; length; ++tileX) { \
|
for (; length; ++tileX) { \
|
||||||
mapData = background->mapCache[(localX >> 3) & 0x3F]; \
|
mapData = background->mapCache[(localX >> 3) & 0x3F]; \
|
||||||
localX += 8; \
|
localX += 8; \
|
||||||
localY = inY & 0x7; \
|
localY = inY; \
|
||||||
if (GBA_TEXT_MAP_VFLIP(mapData)) { \
|
if (GBA_TEXT_MAP_VFLIP(mapData)) { \
|
||||||
localY = 7 - localY; \
|
localY ^= 7; \
|
||||||
} \
|
} \
|
||||||
charBase = (background->charBase + (GBA_TEXT_MAP_TILE(mapData) << 5)) + (localY << 2); \
|
charBase = (background->charBase + (GBA_TEXT_MAP_TILE(mapData) << 5)) + (localY << 2); \
|
||||||
tileData = carryData; \
|
tileData = carryData; \
|
||||||
|
@ -149,9 +149,9 @@
|
||||||
for (; tileX < tileEnd; ++tileX) { \
|
for (; tileX < tileEnd; ++tileX) { \
|
||||||
mapData = background->mapCache[(localX >> 3) & 0x3F]; \
|
mapData = background->mapCache[(localX >> 3) & 0x3F]; \
|
||||||
localX += 8; \
|
localX += 8; \
|
||||||
localY = inY & 0x7; \
|
localY = inY; \
|
||||||
if (GBA_TEXT_MAP_VFLIP(mapData)) { \
|
if (GBA_TEXT_MAP_VFLIP(mapData)) { \
|
||||||
localY = 7 - localY; \
|
localY ^= 7; \
|
||||||
} \
|
} \
|
||||||
paletteData = GBA_TEXT_MAP_PALETTE(mapData) << 4; \
|
paletteData = GBA_TEXT_MAP_PALETTE(mapData) << 4; \
|
||||||
palette = &mainPalette[paletteData]; \
|
palette = &mainPalette[paletteData]; \
|
||||||
|
@ -282,9 +282,9 @@
|
||||||
for (; tileX < tileEnd; ++tileX) { \
|
for (; tileX < tileEnd; ++tileX) { \
|
||||||
mapData = background->mapCache[(localX >> 3) & 0x3F]; \
|
mapData = background->mapCache[(localX >> 3) & 0x3F]; \
|
||||||
localX += 8; \
|
localX += 8; \
|
||||||
localY = inY & 0x7; \
|
localY = inY; \
|
||||||
if (GBA_TEXT_MAP_VFLIP(mapData)) { \
|
if (GBA_TEXT_MAP_VFLIP(mapData)) { \
|
||||||
localY = 7 - localY; \
|
localY ^= 7; \
|
||||||
} \
|
} \
|
||||||
charBase = (background->charBase + (GBA_TEXT_MAP_TILE(mapData) << 6)) + (localY << 3); \
|
charBase = (background->charBase + (GBA_TEXT_MAP_TILE(mapData) << 6)) + (localY << 3); \
|
||||||
if (UNLIKELY(charBase >= 0x10000)) { \
|
if (UNLIKELY(charBase >= 0x10000)) { \
|
||||||
|
@ -333,9 +333,9 @@
|
||||||
for (; tileX < tileEnd; ++tileX) { \
|
for (; tileX < tileEnd; ++tileX) { \
|
||||||
mapData = background->mapCache[(localX >> 3) & 0x3F]; \
|
mapData = background->mapCache[(localX >> 3) & 0x3F]; \
|
||||||
localX += 8; \
|
localX += 8; \
|
||||||
localY = inY & 0x7; \
|
localY = inY; \
|
||||||
if (GBA_TEXT_MAP_VFLIP(mapData)) { \
|
if (GBA_TEXT_MAP_VFLIP(mapData)) { \
|
||||||
localY = 7 - localY; \
|
localY ^= 7; \
|
||||||
} \
|
} \
|
||||||
charBase = (background->charBase + (GBA_TEXT_MAP_TILE(mapData) << 6)) + (localY << 3); \
|
charBase = (background->charBase + (GBA_TEXT_MAP_TILE(mapData) << 6)) + (localY << 3); \
|
||||||
tileData = carryData; \
|
tileData = carryData; \
|
||||||
|
@ -388,9 +388,9 @@
|
||||||
if (inX & 0x7) { \
|
if (inX & 0x7) { \
|
||||||
localX = tileX * 8 + inX; \
|
localX = tileX * 8 + inX; \
|
||||||
BACKGROUND_TEXT_SELECT_CHARACTER; \
|
BACKGROUND_TEXT_SELECT_CHARACTER; \
|
||||||
localY = inY & 0x7; \
|
localY = inY; \
|
||||||
if (GBA_TEXT_MAP_VFLIP(mapData)) { \
|
if (GBA_TEXT_MAP_VFLIP(mapData)) { \
|
||||||
localY = 7 - localY; \
|
localY ^= 7; \
|
||||||
} \
|
} \
|
||||||
int mod8 = inX & 0x7; \
|
int mod8 = inX & 0x7; \
|
||||||
int end = outX + 0x8 - mod8; \
|
int end = outX + 0x8 - mod8; \
|
||||||
|
@ -426,9 +426,9 @@
|
||||||
if (length & 0x7) { \
|
if (length & 0x7) { \
|
||||||
localX = tileX * 8 + inX; \
|
localX = tileX * 8 + inX; \
|
||||||
BACKGROUND_TEXT_SELECT_CHARACTER; \
|
BACKGROUND_TEXT_SELECT_CHARACTER; \
|
||||||
localY = inY & 0x7; \
|
localY = inY; \
|
||||||
if (GBA_TEXT_MAP_VFLIP(mapData)) { \
|
if (GBA_TEXT_MAP_VFLIP(mapData)) { \
|
||||||
localY = 7 - localY; \
|
localY ^= 7; \
|
||||||
} \
|
} \
|
||||||
int mod8 = length & 0x7; \
|
int mod8 = length & 0x7; \
|
||||||
if (VIDEO_CHECKS && UNLIKELY(outX + mod8 != renderer->end)) { \
|
if (VIDEO_CHECKS && UNLIKELY(outX + mod8 != renderer->end)) { \
|
||||||
|
@ -507,6 +507,7 @@ void GBAVideoSoftwareRendererDrawBackgroundMode0(struct GBAVideoSoftwareRenderer
|
||||||
background->yCache = inY >> 3;
|
background->yCache = inY >> 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inY &= 7;
|
||||||
tileX = 0;
|
tileX = 0;
|
||||||
if (!objwinSlowPath) {
|
if (!objwinSlowPath) {
|
||||||
if (!(flags & FLAG_TARGET_2)) {
|
if (!(flags & FLAG_TARGET_2)) {
|
||||||
|
|
Loading…
Reference in New Issue