From f2523f1cece8e3de7fd5452821cd61b66827753e Mon Sep 17 00:00:00 2001 From: alyosha-tas Date: Tue, 6 Feb 2018 18:56:03 -0500 Subject: [PATCH] PCE: Fix some VPC issues --- BizHawk.Emulation.Cores/Consoles/PC Engine/VDC.Render.cs | 6 +++--- BizHawk.Emulation.Cores/Consoles/PC Engine/VDC.cs | 4 ++-- BizHawk.Emulation.Cores/Consoles/PC Engine/VPC.cs | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/BizHawk.Emulation.Cores/Consoles/PC Engine/VDC.Render.cs b/BizHawk.Emulation.Cores/Consoles/PC Engine/VDC.Render.cs index 74191fd6a3..3e92622c38 100644 --- a/BizHawk.Emulation.Cores/Consoles/PC Engine/VDC.Render.cs +++ b/BizHawk.Emulation.Cores/Consoles/PC Engine/VDC.Render.cs @@ -425,10 +425,10 @@ namespace BizHawk.Emulation.Cores.PCEngine } } - private int FramePitch = 256; - private int FrameWidth = 256; + private int FramePitch = 320; + private int FrameWidth = 320; private int FrameHeight = 262; - private int[] FrameBuffer = new int[256 * 262]; + private int[] FrameBuffer = new int[320 * 262]; // IVideoProvider implementation public int[] GetVideoBuffer() diff --git a/BizHawk.Emulation.Cores/Consoles/PC Engine/VDC.cs b/BizHawk.Emulation.Cores/Consoles/PC Engine/VDC.cs index 0bbcaa1934..824f4c6a7d 100644 --- a/BizHawk.Emulation.Cores/Consoles/PC Engine/VDC.cs +++ b/BizHawk.Emulation.Cores/Consoles/PC Engine/VDC.cs @@ -161,7 +161,7 @@ namespace BizHawk.Emulation.Cores.PCEngine FramePitch = MultiResHack == 0 ? FrameWidth : MultiResHack; //if (FrameBuffer.Length != FramePitch * FrameHeight) //FrameBuffer = new int[FramePitch * FrameHeight]; - FrameBuffer = new int[256 * 262]; + FrameBuffer = new int[320 * 262]; break; case VDW: // Vertical Display Word? - update framebuffer size //FrameHeight = RequestedFrameHeight; @@ -172,7 +172,7 @@ namespace BizHawk.Emulation.Cores.PCEngine FramePitch = MultiResHack; //if (FrameBuffer.Length != FramePitch * FrameHeight) //FrameBuffer = new int[FramePitch * FrameHeight]; - FrameBuffer = new int[256 * 262]; + FrameBuffer = new int[320 * 262]; break; case LENR: // Initiate DMA transfer if (!msbComplete) break; diff --git a/BizHawk.Emulation.Cores/Consoles/PC Engine/VPC.cs b/BizHawk.Emulation.Cores/Consoles/PC Engine/VPC.cs index 97e2e3f988..f3057cc169 100644 --- a/BizHawk.Emulation.Cores/Consoles/PC Engine/VPC.cs +++ b/BizHawk.Emulation.Cores/Consoles/PC Engine/VPC.cs @@ -239,7 +239,8 @@ namespace BizHawk.Emulation.Cores.PCEngine private void RenderScanLine() { - if (VDC1.ActiveLine >= FrameHeight) + //if (VDC1.ActiveLine >= FrameHeight) + if ((VDC1.ActiveLine + VDC1.ViewStartLine) >= 262) return; InitializeScanLine(VDC1.ActiveLine); @@ -265,10 +266,9 @@ namespace BizHawk.Emulation.Cores.PCEngine { // Clear priority buffer Array.Clear(PriorityBuffer, 0, FrameWidth); - // Initialize scanline to background color for (int i = 0; i < FrameWidth; i++) - FrameBuffer[(scanline * FrameWidth) + i] = VCE.Palette[256]; + FrameBuffer[((scanline + VDC1.ViewStartLine) * FrameWidth) + i] = VCE.Palette[256]; } private unsafe void RenderBackgroundScanline(VDC vdc, byte priority, bool show)