mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2025-07-23 14:19:55 -06:00
Better tile scaling calc
This commit is contained in:
@ -302,6 +302,8 @@ void ComputeRenderer::Reset(GPU& gpu)
|
|||||||
|
|
||||||
void ComputeRenderer::SetRenderSettings(int scale, bool highResolutionCoordinates)
|
void ComputeRenderer::SetRenderSettings(int scale, bool highResolutionCoordinates)
|
||||||
{
|
{
|
||||||
|
unsigned char TileScale;
|
||||||
|
|
||||||
CurGLCompositor.SetScaleFactor(scale);
|
CurGLCompositor.SetScaleFactor(scale);
|
||||||
|
|
||||||
if (ScaleFactor != -1)
|
if (ScaleFactor != -1)
|
||||||
@ -315,7 +317,13 @@ void ComputeRenderer::SetRenderSettings(int scale, bool highResolutionCoordinate
|
|||||||
ScreenWidth = 256 * ScaleFactor;
|
ScreenWidth = 256 * ScaleFactor;
|
||||||
ScreenHeight = 192 * ScaleFactor;
|
ScreenHeight = 192 * ScaleFactor;
|
||||||
|
|
||||||
TileSize = std::min(8 << (ScaleFactor / 5), 32);
|
//Starting at 4.5x we want to double TileSize every time scale doubles
|
||||||
|
TileScale = 2 * ScaleFactor / 9;
|
||||||
|
TileScale &= ~(TileScale >> 1);
|
||||||
|
TileScale <<= 1;
|
||||||
|
TileScale += TileScale == 0;
|
||||||
|
|
||||||
|
TileSize = std::min(8 * TileScale, 32);
|
||||||
CoarseTileCountY = TileSize < 32 ? 4 : 6;
|
CoarseTileCountY = TileSize < 32 ? 4 : 6;
|
||||||
CoarseTileW = CoarseTileCountX * TileSize;
|
CoarseTileW = CoarseTileCountX * TileSize;
|
||||||
CoarseTileH = CoarseTileCountY * TileSize;
|
CoarseTileH = CoarseTileCountY * TileSize;
|
||||||
|
Reference in New Issue
Block a user