Started +2 implementation
This commit is contained in:
parent
30019d68fc
commit
27ba7e0008
|
@ -53,6 +53,7 @@ namespace BizHawk.Emulation.Common
|
|||
// ZX Spectrum
|
||||
FirmwareAndOption("5EA7C2B824672E914525D1D5C419D71B84A426A2", 16384, "ZXSpectrum", "48ROM", "48.ROM", "Spectrum 48K ROM");
|
||||
FirmwareAndOption("16375D42EA109B47EDDED7A16028DE7FDB3013A1", 32768, "ZXSpectrum", "128ROM", "128.ROM", "Spectrum 128K ROM");
|
||||
FirmwareAndOption("8CAFB292AF58617907B9E6B9093D3588A75849B8", 32768, "ZXSpectrum", "PLUS2ROM", "PLUS2.ROM", "Spectrum 128K +2 ROM");
|
||||
|
||||
// for saturn, we think any bios region can pretty much run any iso
|
||||
// so, we're going to lay this out carefully so that we choose things in a sensible order, but prefer the correct region
|
||||
|
|
|
@ -276,9 +276,11 @@
|
|||
<Compile Include="Computers\SinclairSpectrum\Machine\SpectrumBase.Port.cs" />
|
||||
<Compile Include="Computers\SinclairSpectrum\Machine\SpectrumBase.Memory.cs" />
|
||||
<Compile Include="Computers\SinclairSpectrum\Machine\SpectrumBase.Sound.cs" />
|
||||
<Compile Include="Computers\SinclairSpectrum\Machine\ZXSpectrum128KPlus2\ZX128Plus2.cs" />
|
||||
<Compile Include="Computers\SinclairSpectrum\Machine\ZXSpectrum128K\ZX128.cs" />
|
||||
<Compile Include="Computers\SinclairSpectrum\Machine\ZXSpectrum128K\ZX128.Memory.cs" />
|
||||
<Compile Include="Computers\SinclairSpectrum\Machine\ZXSpectrum128K\ZX128.Port.cs" />
|
||||
<Compile Include="Computers\SinclairSpectrum\Machine\ZXSpectrum128K\ZX128.Screen.cs" />
|
||||
<Compile Include="Computers\SinclairSpectrum\Machine\ZXSpectrum48K\ZX48.cs" />
|
||||
<Compile Include="Computers\SinclairSpectrum\Machine\ZXSpectrum48K\ZX48.Memory.cs" />
|
||||
<Compile Include="Computers\SinclairSpectrum\Media\Tape\TAP\TapDataBlock.cs" />
|
||||
|
|
|
@ -16,6 +16,11 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
|
|||
/// <summary>
|
||||
/// Sinclair Spectrum 128K model
|
||||
/// </summary>
|
||||
ZXSpectrum128
|
||||
ZXSpectrum128,
|
||||
|
||||
/// <summary>
|
||||
/// Sinclair Spectrum 128 + 2 model
|
||||
/// </summary>
|
||||
ZXSpectrum128Plus2
|
||||
}
|
||||
}
|
||||
|
|
|
@ -765,7 +765,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
|
|||
/// <summary>
|
||||
/// Initialises the screen configuration calculations
|
||||
/// </summary>
|
||||
protected virtual void InitScreenConfig()
|
||||
public virtual void InitScreenConfig()
|
||||
{
|
||||
ScreenLines = BorderTopLines + DisplayLines + BorderBottomLines;
|
||||
FirstDisplayLine = VerticalSyncLines + NonVisibleBorderTopLines + BorderTopLines;
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
|
||||
{
|
||||
public partial class ZX128 : SpectrumBase
|
||||
{
|
||||
public override void InitScreenConfig()
|
||||
{
|
||||
|
||||
ScreenLines = BorderTopLines + DisplayLines + BorderBottomLines;
|
||||
FirstDisplayLine = VerticalSyncLines + NonVisibleBorderTopLines + BorderTopLines;
|
||||
LastDisplayLine = FirstDisplayLine + DisplayLines - 1;
|
||||
ScreenWidth = BorderLeftPixels + DisplayWidth + BorderRightPixels;
|
||||
FirstPixelCycleInLine = HorizontalBlankingTime + BorderLeftTime;
|
||||
ScreenLineTime = FirstPixelCycleInLine + DisplayLineTime + BorderRightTime + NonVisibleBorderRightTime;
|
||||
UlaFrameCycleCount = (FirstDisplayLine + DisplayLines + BorderBottomLines + NonVisibleBorderTopLines) * ScreenLineTime;
|
||||
FirstScreenPixelCycle = (VerticalSyncLines + NonVisibleBorderTopLines) * ScreenLineTime + HorizontalBlankingTime;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
using BizHawk.Emulation.Cores.Components.Z80A;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
|
||||
{
|
||||
/// <summary>
|
||||
/// The +2 is almost identical to the 128k from an emulation point of view
|
||||
/// There are just a few small changes in the ROMs
|
||||
/// </summary>
|
||||
public partial class ZX128Plus2 : ZX128
|
||||
{
|
||||
#region Construction
|
||||
|
||||
/// <summary>
|
||||
/// Main constructor
|
||||
/// </summary>
|
||||
/// <param name="spectrum"></param>
|
||||
/// <param name="cpu"></param>
|
||||
public ZX128Plus2(ZXSpectrum spectrum, Z80A cpu, byte[] file)
|
||||
: base(spectrum, cpu, file)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -44,6 +44,10 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
|
|||
ControllerDefinition = ZXSpectrumControllerDefinition;
|
||||
Init(MachineType.ZXSpectrum128, SyncSettings.BorderType, SyncSettings.TapeLoadSpeed, _file);
|
||||
break;
|
||||
case MachineType.ZXSpectrum128Plus2:
|
||||
ControllerDefinition = ZXSpectrumControllerDefinition;
|
||||
Init(MachineType.ZXSpectrum128Plus2, SyncSettings.BorderType, SyncSettings.TapeLoadSpeed, _file);
|
||||
break;
|
||||
default:
|
||||
throw new InvalidOperationException("Machine not yet emulated");
|
||||
}
|
||||
|
@ -120,6 +124,12 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
|
|||
var romData128 = RomData.InitROM(machineType, _systemRom128);
|
||||
_machine.InitROM(romData128);
|
||||
break;
|
||||
case MachineType.ZXSpectrum128Plus2:
|
||||
_machine = new ZX128Plus2(this, _cpu, file);
|
||||
var _systemRomP2 = GetFirmware(0x8000, "PLUS2ROM");
|
||||
var romDataP2 = RomData.InitROM(machineType, _systemRomP2);
|
||||
_machine.InitROM(romDataP2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue