z80: Fix bit test flags
-passes zexall bit test -still some spurious cases to implement, but how to test them?
This commit is contained in:
parent
62c2e0fc6a
commit
803871daab
File diff suppressed because it is too large
Load Diff
|
@ -88,11 +88,13 @@ namespace BizHawk.Emulation.Cores.Components.Z80
|
|||
private RegisterPair RegBC;
|
||||
private RegisterPair RegDE;
|
||||
private RegisterPair RegHL;
|
||||
private RegisterPair RegWZ;
|
||||
|
||||
private RegisterPair RegAltAF; // Shadow for A and F
|
||||
private RegisterPair RegAltBC; // Shadow for B and C
|
||||
private RegisterPair RegAltDE; // Shadow for D and E
|
||||
private RegisterPair RegAltHL; // Shadow for H and L
|
||||
// NOTE: There is no AltWZ register (despite it being shown on various block diagrams)
|
||||
|
||||
private byte RegI; // I (interrupt vector)
|
||||
private byte RegR; // R (memory refresh)
|
||||
|
@ -106,7 +108,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
|
|||
private void ResetRegisters()
|
||||
{
|
||||
// Clear main registers
|
||||
RegAF = 0; RegBC = 0; RegDE = 0; RegHL = 0;
|
||||
RegAF = 0; RegBC = 0; RegDE = 0; RegHL = 0; RegWZ = 0;
|
||||
// Clear alternate registers
|
||||
RegAltAF = 0; RegAltBC = 0; RegAltDE = 0; RegAltHL = 0;
|
||||
// Clear special purpose registers
|
||||
|
@ -162,6 +164,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
|
|||
get { return RegDE.Low; }
|
||||
set { RegDE.Low = value; }
|
||||
}
|
||||
|
||||
public ushort RegisterDE
|
||||
{
|
||||
get { return RegDE.Word; }
|
||||
|
@ -179,57 +182,85 @@ namespace BizHawk.Emulation.Cores.Components.Z80
|
|||
get { return RegHL.Low; }
|
||||
set { RegHL.Low = value; }
|
||||
}
|
||||
|
||||
public ushort RegisterHL
|
||||
{
|
||||
get { return RegHL.Word; }
|
||||
set { RegHL.Word = value; }
|
||||
}
|
||||
|
||||
public byte RegisterW
|
||||
{
|
||||
get { return RegWZ.High; }
|
||||
set { RegWZ.High = value; }
|
||||
}
|
||||
|
||||
public byte RegisterZ
|
||||
{
|
||||
get { return RegWZ.Low; }
|
||||
set { RegWZ.Low = value; }
|
||||
}
|
||||
|
||||
public ushort RegisterWZ
|
||||
{
|
||||
get { return RegWZ.Word; }
|
||||
set { RegWZ.Word = value; }
|
||||
}
|
||||
|
||||
public ushort RegisterPC
|
||||
{
|
||||
get { return RegPC.Word; }
|
||||
set { RegPC.Word = value; }
|
||||
}
|
||||
|
||||
public ushort RegisterSP
|
||||
{
|
||||
get { return RegSP.Word; }
|
||||
set { RegSP.Word = value; }
|
||||
}
|
||||
|
||||
public ushort RegisterIX
|
||||
{
|
||||
get { return RegIX.Word; }
|
||||
set { RegIX.Word = value; }
|
||||
}
|
||||
|
||||
public ushort RegisterIY
|
||||
{
|
||||
get { return RegIY.Word; }
|
||||
set { RegIY.Word = value; }
|
||||
}
|
||||
|
||||
public byte RegisterI
|
||||
{
|
||||
get { return RegI; }
|
||||
set { RegI = value; }
|
||||
}
|
||||
|
||||
public byte RegisterR
|
||||
{
|
||||
get { return RegR; }
|
||||
set { RegR = value; }
|
||||
}
|
||||
|
||||
public ushort RegisterShadowAF
|
||||
{
|
||||
get { return RegAltAF.Word; }
|
||||
set { RegAltAF.Word = value; }
|
||||
}
|
||||
|
||||
public ushort RegisterShadowBC
|
||||
{
|
||||
get { return RegAltBC.Word; }
|
||||
set { RegAltBC.Word = value; }
|
||||
}
|
||||
|
||||
public ushort RegisterShadowDE
|
||||
{
|
||||
get { return RegAltDE.Word; }
|
||||
set { RegAltDE.Word = value; }
|
||||
}
|
||||
|
||||
public ushort RegisterShadowHL
|
||||
{
|
||||
get { return RegAltHL.Word; }
|
||||
|
|
|
@ -8,6 +8,8 @@ using BizHawk.Emulation.Common;
|
|||
// This Z80 emulator is a modified version of Ben Ryves 'Brazil' emulator.
|
||||
// It is MIT licensed.
|
||||
|
||||
// for WZ register details, see: http://www.grimware.org/lib/exe/fetch.php/documentations/devices/z80/z80.memptr.eng.txt
|
||||
|
||||
namespace BizHawk.Emulation.Cores.Components.Z80
|
||||
{
|
||||
public sealed partial class Z80A
|
||||
|
@ -113,6 +115,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
|
|||
ser.Sync("BC", ref RegBC.Word);
|
||||
ser.Sync("DE", ref RegDE.Word);
|
||||
ser.Sync("HL", ref RegHL.Word);
|
||||
ser.Sync("WZ", ref RegWZ.Word);
|
||||
ser.Sync("ShadowAF", ref RegAltAF.Word);
|
||||
ser.Sync("ShadowBC", ref RegAltBC.Word);
|
||||
ser.Sync("ShadowDE", ref RegAltDE.Word);
|
||||
|
|
Loading…
Reference in New Issue