From 6a4359b9ba8fcc5fe231c31f394a3a6394cdc5e7 Mon Sep 17 00:00:00 2001 From: mkwong98 Date: Wed, 14 Jul 2021 12:10:14 +0800 Subject: [PATCH] Fix bug when exporting sprite tiles in screen data --- Core/HdPackBuilder.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Core/HdPackBuilder.cpp b/Core/HdPackBuilder.cpp index 2da8630e..5242385b 100644 --- a/Core/HdPackBuilder.cpp +++ b/Core/HdPackBuilder.cpp @@ -273,22 +273,24 @@ void HdPackBuilder::ProcessTile(uint32_t x, uint32_t y, uint16_t tileAddr, HdPpu } } - if ((x == 0 || ((tile.OffsetX & 0x07) == 0)) && (y == 0 || ((tile.OffsetY & 0x07) == 0))) { + if ((x == 0 || ((tile.OffsetX & 0x07) == 0)) && (y == 0 || (((tile.OffsetY & 0x07) == 0) && !tile.VerticalMirroring) || (((tile.OffsetY & 0x07) == 0x07) && tile.VerticalMirroring))) { HdScreenTileInfo t; t.IsChrRamTile = tile.IsChrRamTile; t.PaletteColors = tile.PaletteColors; - t.ScreenX = x - tile.OffsetX; - t.ScreenY = y - tile.OffsetY - (tile.IsSpriteTile() ? 1 : 0); memcpy(t.TileData, tile.TileData, 16); t.TileIndex = tile.TileIndex; t.IsNew = isNew; if (tile.IsSpriteTile()) { + t.ScreenX = x; + t.ScreenY = y; t.BackgroundPriority = tile.BackgroundPriority; t.HorizontalMirroring = tile.HorizontalMirroring; t.VerticalMirroring = tile.VerticalMirroring; spritesOnScreen.push_back(t); } else { + t.ScreenX = x - tile.OffsetX; + t.ScreenY = y - tile.OffsetY; bgTilesOnScreen.push_back(t); } }