mirror of https://github.com/mgba-emu/mgba.git
Revert "GBA Video: Optimize sprite drawing"
This reverts commit 990df72ced
.
This commit is contained in:
parent
990df72ced
commit
08e73bd9df
1
CHANGES
1
CHANGES
|
@ -49,7 +49,6 @@ Misc:
|
|||
- GUI: Add back logging
|
||||
- PSP2: Add rumble for PS TV
|
||||
- PSP2: Add fit-to-height screen mode
|
||||
- GBA Video: Optimize sprite drawing
|
||||
|
||||
0.4.1: (2016-07-11)
|
||||
Bugfixes:
|
||||
|
|
|
@ -14,9 +14,10 @@
|
|||
#define MODE_2_COORD_NO_OVERFLOW \
|
||||
if ((x | y) & ~(sizeAdjusted - 1)) { \
|
||||
continue; \
|
||||
} \
|
||||
localX = x; \
|
||||
localY = y;
|
||||
} else { \
|
||||
localX = x; \
|
||||
localY = y; \
|
||||
}
|
||||
|
||||
#define MODE_2_MOSAIC(COORD) \
|
||||
if (!mosaicWait) { \
|
||||
|
|
|
@ -56,7 +56,7 @@
|
|||
int localY = (yAccum >> 8) + (height >> 1); \
|
||||
\
|
||||
if (localX & widthMask || localY & heightMask) { \
|
||||
break; \
|
||||
continue; \
|
||||
} \
|
||||
\
|
||||
SPRITE_YBASE_ ## DEPTH(localY); \
|
||||
|
@ -204,35 +204,6 @@ int GBAVideoSoftwareRendererPreprocessSprite(struct GBAVideoSoftwareRenderer* re
|
|||
condition = end;
|
||||
}
|
||||
|
||||
// Clip off early pixels
|
||||
if ((xAccum >> 8) < -(width >> 1) || (yAccum >> 8) < -(height >> 1)) {
|
||||
int32_t diffX = -(width << 7) - xAccum;
|
||||
int32_t diffY = -(height << 7) - yAccum;
|
||||
int32_t x = mat.a ? diffX / mat.a : 0;
|
||||
int32_t y = mat.c ? diffY / mat.c : 0;
|
||||
if (y > x) {
|
||||
x = y;
|
||||
}
|
||||
xAccum += mat.a * x;
|
||||
yAccum += mat.c * x;
|
||||
outX += x;
|
||||
inX += x;
|
||||
}
|
||||
// Clip off late pixels
|
||||
if ((xAccum >> 8) >= (width >> 1) || (yAccum >> 8) >= (height >> 1)) {
|
||||
int32_t diffX = (width << 7) - xAccum;
|
||||
int32_t diffY = (height << 7) - yAccum;
|
||||
int32_t x = mat.a ? diffX / mat.a : 0;
|
||||
int32_t y = mat.c ? diffY / mat.c : 0;
|
||||
if (y > x) {
|
||||
x = y;
|
||||
}
|
||||
xAccum += mat.a * x;
|
||||
yAccum += mat.c * x;
|
||||
outX += x;
|
||||
inX += x;
|
||||
}
|
||||
|
||||
if (!GBAObjAttributesAIs256Color(sprite->a)) {
|
||||
palette = &palette[GBAObjAttributesCGetPalette(sprite->c) << 4];
|
||||
if (flags & FLAG_OBJWIN) {
|
||||
|
@ -259,7 +230,7 @@ int GBAVideoSoftwareRendererPreprocessSprite(struct GBAVideoSoftwareRenderer* re
|
|||
int outX = x >= start ? x : start;
|
||||
int condition = x + width;
|
||||
int mosaicH = 1;
|
||||
if (mosaicH > 1) {
|
||||
if (GBAObjAttributesAIsMosaic(sprite->a)) {
|
||||
mosaicH = GBAMosaicControlGetObjH(renderer->mosaic) + 1;
|
||||
if (condition % mosaicH) {
|
||||
condition += mosaicH - (condition % mosaicH);
|
||||
|
@ -284,7 +255,7 @@ int GBAVideoSoftwareRendererPreprocessSprite(struct GBAVideoSoftwareRenderer* re
|
|||
palette = &palette[GBAObjAttributesCGetPalette(sprite->c) << 4];
|
||||
if (flags & FLAG_OBJWIN) {
|
||||
SPRITE_NORMAL_LOOP(16, OBJWIN);
|
||||
} else if (mosaicH > 1) {
|
||||
} else if (GBAObjAttributesAIsMosaic(sprite->a)) {
|
||||
if (objwinSlowPath) {
|
||||
objwinPalette = &objwinPalette[GBAObjAttributesCGetPalette(sprite->c) << 4];
|
||||
SPRITE_MOSAIC_LOOP(16, NORMAL_OBJWIN);
|
||||
|
@ -300,7 +271,7 @@ int GBAVideoSoftwareRendererPreprocessSprite(struct GBAVideoSoftwareRenderer* re
|
|||
} else {
|
||||
if (flags & FLAG_OBJWIN) {
|
||||
SPRITE_NORMAL_LOOP(256, OBJWIN);
|
||||
} else if (mosaicH > 1) {
|
||||
} else if (GBAObjAttributesAIsMosaic(sprite->a)) {
|
||||
if (objwinSlowPath) {
|
||||
objwinPalette = &objwinPalette[GBAObjAttributesCGetPalette(sprite->c) << 4];
|
||||
SPRITE_MOSAIC_LOOP(256, NORMAL_OBJWIN);
|
||||
|
|
Loading…
Reference in New Issue