GBA Video: Fix wrapped sprite mosaic clamping (fixes #1432)
1
CHANGES
@ -18,6 +18,7 @@ Emulation fixes:
|
|||||||
- GB Video: Delay LYC STAT check (fixes mgba.io/i/1331)
|
- GB Video: Delay LYC STAT check (fixes mgba.io/i/1331)
|
||||||
- GB Video: Fix window being enabled mid-scanline (fixes mgba.io/i/1328)
|
- GB Video: Fix window being enabled mid-scanline (fixes mgba.io/i/1328)
|
||||||
- GB I/O: Filter IE top bits properly (fixes mgba.io/i/1329)
|
- GB I/O: Filter IE top bits properly (fixes mgba.io/i/1329)
|
||||||
|
- GBA Video: Fix wrapped sprite mosaic clamping (fixes mgba.io/i/1432)
|
||||||
Other fixes:
|
Other fixes:
|
||||||
- Qt: Fix some Qt display driver race conditions
|
- Qt: Fix some Qt display driver race conditions
|
||||||
- Core: Improved lockstep driver reliability (Le Hoang Quyen)
|
- Core: Improved lockstep driver reliability (Le Hoang Quyen)
|
||||||
|
BIN
cinema/gba/obj/sma2-mosaic-clamp/baseline_0000.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
BIN
cinema/gba/obj/sma2-mosaic-clamp/baseline_0001.png
Normal file
After Width: | Height: | Size: 5.8 KiB |
BIN
cinema/gba/obj/sma2-mosaic-clamp/baseline_0002.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
BIN
cinema/gba/obj/sma2-mosaic-clamp/baseline_0003.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
BIN
cinema/gba/obj/sma2-mosaic-clamp/baseline_0004.png
Normal file
After Width: | Height: | Size: 5.8 KiB |
BIN
cinema/gba/obj/sma2-mosaic-clamp/baseline_0005.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
BIN
cinema/gba/obj/sma2-mosaic-clamp/baseline_0006.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
BIN
cinema/gba/obj/sma2-mosaic-clamp/baseline_0007.png
Normal file
After Width: | Height: | Size: 5.8 KiB |
BIN
cinema/gba/obj/sma2-mosaic-clamp/test.mvl
Normal file
@ -808,12 +808,12 @@ static void _drawScanline(struct GBAVideoSoftwareRenderer* renderer, int y) {
|
|||||||
if ((y < sprite->y && (sprite->endY - 256 < 0 || y >= sprite->endY - 256)) || y >= sprite->endY) {
|
if ((y < sprite->y && (sprite->endY - 256 < 0 || y >= sprite->endY - 256)) || y >= sprite->endY) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (GBAObjAttributesAIsMosaic(sprite->obj.a)) {
|
if (GBAObjAttributesAIsMosaic(sprite->obj.a) && mosaicV > 1) {
|
||||||
localY = mosaicY;
|
localY = mosaicY;
|
||||||
if (localY < sprite->y) {
|
if (localY < sprite->y && sprite->y < GBA_VIDEO_VERTICAL_PIXELS) {
|
||||||
localY = sprite->y;
|
localY = sprite->y;
|
||||||
}
|
}
|
||||||
if (localY >= sprite->endY) {
|
if (localY >= (sprite->endY & 0xFF)) {
|
||||||
localY = sprite->endY - 1;
|
localY = sprite->endY - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|