SMS: Fix Fray (vert lock update)

This commit is contained in:
alyosha-tas 2021-11-14 20:48:10 -05:00
parent 5794d9c992
commit e334af157e
2 changed files with 8 additions and 2 deletions

View File

@ -40,7 +40,7 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem
for (int xTile = 0; xTile < 32; xTile++) for (int xTile = 0; xTile < 32; xTile++)
{ {
if (xTile == 24 && VerticalScrollLock) if (xTile == lock_tile_start && VerticalScrollLock)
{ {
vertOffset = ScanLine; vertOffset = ScanLine;
yTile = vertOffset / 8; yTile = vertOffset / 8;

View File

@ -77,6 +77,10 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem
private int NameTableMaskBit; private int NameTableMaskBit;
private bool JPN_Compat =false; private bool JPN_Compat =false;
// For SMS, the last 8 x-tiles are fixed if vertscroll (reg[0].bit(7)) is set, but on GG it must be
// only the last 7 or Fray displays incorrectly
private int lock_tile_start;
// preprocessed state assist stuff. // preprocessed state assist stuff.
public int[] Palette = new int[32]; public int[] Palette = new int[32];
public byte[] PatternBuffer = new byte[0x8000]; public byte[] PatternBuffer = new byte[0x8000];
@ -96,7 +100,9 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem
if (mode == VdpMode.GameGear) CRAM = new byte[64]; if (mode == VdpMode.GameGear) CRAM = new byte[64];
DisplayType = displayType; DisplayType = displayType;
if (mode == VdpMode.SMS) { JPN_Compat = region_compat; } if (mode == VdpMode.SMS) { JPN_Compat = region_compat; }
NameTableBase = CalcNameTableBase(); NameTableBase = CalcNameTableBase();
lock_tile_start = mode == VdpMode.SMS ? 24 : 25;
} }
public byte ReadData() public byte ReadData()