diff --git a/BizHawk.Emulation/Consoles/Sega/Genesis/GenVDP.Render.cs b/BizHawk.Emulation/Consoles/Sega/Genesis/GenVDP.Render.cs index 107f344cb7..770389d0e1 100644 --- a/BizHawk.Emulation/Consoles/Sega/Genesis/GenVDP.Render.cs +++ b/BizHawk.Emulation/Consoles/Sega/Genesis/GenVDP.Render.cs @@ -43,8 +43,8 @@ namespace BizHawk.Emulation.Consoles.Sega // Its way simple in comparison. But the PCE sprite renderer is way worse than gen. for (int x = 0; x < FrameWidth; x++) { - int xTile = Math.Abs(((x - xScroll) / 8) % NameTableWidth); - int xOfs = Math.Abs(x - xScroll) & 7; + int xTile = Math.Abs(((x + (1024-xScroll)) / 8) % NameTableWidth); + int xOfs = Math.Abs((x + (1024-xScroll)) & 7); int cellOfs = nameTableBase + (yTile * NameTableWidth * 2) + (xTile * 2); int nameTableEntry = VRAM[cellOfs] | (VRAM[cellOfs+1] << 8); int patternNo = nameTableEntry & 0x7FF; @@ -71,7 +71,8 @@ namespace BizHawk.Emulation.Consoles.Sega { // todo scroll values int hscroll = VRAM[HScrollTableAddr + 0] | (VRAM[HScrollTableAddr + 1] << 8); - hscroll &= 0x3FFF; + hscroll &= 0x3FF; + //Console.WriteLine("ScrollA: " + hscroll); //hscroll = 24; int vscroll = VSRAM[0] & 0x3FFF; RenderBackgroundScanline(hscroll, vscroll, NameTableAddrA, 2, 5); @@ -80,7 +81,8 @@ namespace BizHawk.Emulation.Consoles.Sega void RenderScrollB() { int hscroll = VRAM[HScrollTableAddr + 2] | (VRAM[HScrollTableAddr + 3] << 8); - hscroll &= 0x3FFF; + hscroll &= 0x3FF; + //Console.WriteLine("ScrollB: " + hscroll); //hscroll = 24; int vscroll = VSRAM[1] & 0x3FFF; RenderBackgroundScanline(hscroll, vscroll, NameTableAddrB, 1, 4);