more misc code cleanups, with some C#6isms

This commit is contained in:
adelikat 2017-04-10 11:24:53 -05:00
parent fc59710dab
commit 37c989c661
23 changed files with 177 additions and 188 deletions

View File

@ -1,5 +1,4 @@
using System.Collections.Generic;
using BizHawk.Emulation.Common;
using BizHawk.Emulation.Common;
namespace BizHawk.Client.Common
{
@ -11,11 +10,11 @@ namespace BizHawk.Client.Common
}
public bool IsActive { get; set; }
public int CurrentPlayer{ get; set; }
public bool RecordAll { get; set; }
public int CurrentPlayer{ get; private set; }
public bool RecordAll { get; private set; }
/// <summary>
/// A user friendly multitrack status
/// A user friendly multi-track status
/// </summary>
public string Status
{
@ -94,14 +93,11 @@ namespace BizHawk.Client.Common
public int PlayerSource { get; set; }
public int PlayerTargetMask { get; set; }
public ControllerDefinition Definition { get { return Source.Definition; } }
public ControllerDefinition Definition => Source.Definition;
public bool this[string button]
{
get { return IsPressed(button); }
}
public bool this[string button] => IsPressed(button);
public bool IsPressed(string button)
public bool IsPressed(string button)
{
return Source.IsPressed(RemapButtonName(button));
}
@ -129,7 +125,7 @@ namespace BizHawk.Client.Common
// Ok, this looks like a normal `P1 Button` type thing. we can handle it
// Were we supposed to replace this one?
int foundPlayerMask = (1 << bnp.PlayerNum);
int foundPlayerMask = 1 << bnp.PlayerNum;
if ((PlayerTargetMask & foundPlayerMask) == 0)
{
return button;
@ -163,14 +159,12 @@ namespace BizHawk.Client.Common
{
return null;
}
else
return new ButtonNameParser
{
return new ButtonNameParser
{
PlayerNum = player,
ButtonPart = button.Substring(parts[0].Length + 1)
};
}
PlayerNum = player,
ButtonPart = button.Substring(parts[0].Length + 1)
};
}
public int PlayerNum { get; set; }
@ -178,7 +172,7 @@ namespace BizHawk.Client.Common
public override string ToString()
{
return string.Format("P{0} {1}", PlayerNum, ButtonPart);
return $"P{PlayerNum} {ButtonPart}";
}
}
}

View File

@ -48,8 +48,6 @@ namespace BizHawk.Emulation.Common
/// <summary>
/// the core can call this to register an additional service
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="provider"></param>
public void Register<T>(T provider)
where T : IEmulatorService
{

View File

@ -7,22 +7,14 @@
/// <seealso cref="IController" />
public class NullController : IController
{
private static readonly ControllerDefinition _definition = new ControllerDefinition
public ControllerDefinition Definition => new ControllerDefinition
{
Name = "Null Controller"
};
public ControllerDefinition Definition
{
get { return _definition; }
}
public bool this[string button] => false;
public bool this[string button]
{
get { return false; }
}
public bool IsPressed(string button)
public bool IsPressed(string button)
{
return false;
}

View File

@ -24,7 +24,7 @@ namespace BizHawk.Emulation.Common
/// </summary>
/// <param name="spf"></param>
public NullSound(int spf)
:this()
: this()
{
_spfNumerator = spf;
_spfDenominator = 1;

View File

@ -2,7 +2,7 @@
{
/// <summary>
/// A default IVideoProvider that simply returns
/// a black screen at an arbitruary size
/// a black screen at an arbitrary size
/// </summary>
/// <seealso cref="IVideoProvider" />
public class NullVideo : IVideoProvider
@ -12,19 +12,18 @@
return new int[BufferWidth * BufferHeight];
}
public int VirtualWidth { get { return 256; } }
public int VirtualHeight { get { return 192; } }
public int VirtualWidth => 256;
public int BufferWidth { get { return 256; } }
public int BufferHeight { get { return 192; } }
public int VirtualHeight => 192;
public int BackgroundColor { get { return 0; } }
public int BufferWidth => 256;
private static NullVideo _nullVideo = new NullVideo();
public int BufferHeight => 192;
public static NullVideo Instance
{
get { return _nullVideo; }
}
public int BackgroundColor => 0;
private static readonly NullVideo _nullVideo = new NullVideo();
public static NullVideo Instance => _nullVideo;
}
}

View File

@ -17,8 +17,11 @@ namespace BizHawk.Emulation.Common
public ITraceSink Sink { get; set; }
public bool Enabled { get { return Sink != null; } }
public bool Enabled => Sink != null;
public void Put(TraceInfo info) { Sink.Put(info); }
public void Put(TraceInfo info)
{
Sink.Put(info);
}
}
}

View File

@ -34,7 +34,7 @@ namespace BizHawk.Emulation.Common
public interface ICodeDataLog : IDictionary<string, byte[]>
{
/// <summary>
/// Pins the managed arrays. Not that we expect them to be allocated, but in case we do, seeing thish ere will remind us to check for the pin condition and abort
/// Pins the managed arrays. Not that we expect them to be allocated, but in case we do, seeing this here will remind us to check for the pin condition and abort
/// </summary>
void Pin();

View File

@ -7,7 +7,7 @@ namespace BizHawk.Emulation.Common
/// <summary>
/// This service provides the means to generate disassembly by the core for a given cpu and memory domain
/// Tools such the debugger use this, but also lua scripting, and tools like trace logging and code data logging can make use of this tool
/// If unavailable the debugger tool will still be avilable but disable the disassembly window but still be available if the IDebuggable service is available
/// If unavailable the debugger tool will still be available but disable the disassembly window but still be available if the IDebuggable service is available
/// </summary>
public interface IDisassemblable : IEmulatorService
{

View File

@ -56,7 +56,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
}
}
public IMemoryCallbackSystem MemoryCallbacks { get; private set; }
public IMemoryCallbackSystem MemoryCallbacks { get; } = new MemoryCallbackSystem();
public bool CanStep(StepType type)
{
@ -88,12 +88,9 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
}
}
public int TotalExecutedCycles
{
get { return Cpu.TotalExecutedCycles; }
}
public int TotalExecutedCycles => Cpu.TotalExecutedCycles;
private void StepInto()
private void StepInto()
{
do
{
@ -108,7 +105,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
if (instruction == JSR)
{
var destination = Cpu.PC + opsize[JSR];
while(Cpu.PC != destination)
while (Cpu.PC != destination)
{
StepInto();
}
@ -159,8 +156,8 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
private const byte JSR = 0x20;
private const byte RTS = 0x60;
//the opsize table is used to quickly grab the instruction sizes (in bytes)
private readonly byte[] opsize = new byte[]
// the opsize table is used to quickly grab the instruction sizes (in bytes)
private readonly byte[] opsize =
{
/*0x00*/ 1,2,0,0,0,2,2,0,1,2,1,0,0,3,3,0,
/*0x10*/ 2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,
@ -193,7 +190,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
// 7 = Absolute,X
// 8 = Zero Page,Y
*/
private readonly byte[] optype = new byte[]
private readonly byte[] optype =
{
/*0x00*/ 0,1,0,0,0,2,2,0,0,0,0,0,0,3,3,0,
/*0x10*/ 0,4,0,0,0,5,5,0,0,6,0,0,0,7,7,0,

View File

@ -16,7 +16,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
set { _islag = value; }
}
public IInputCallbackSystem InputCallbacks { get; private set; }
public IInputCallbackSystem InputCallbacks { get; } = new InputCallbackSystem();
private bool _islag = true;
private int _lagcount;

View File

@ -25,10 +25,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
{
if (Settings == null || Settings.SECAMColors != o.SECAMColors)
{
if (_tia != null)
{
_tia.SetSECAM(o.SECAMColors);
}
_tia?.SetSECAM(o.SECAMColors);
}
Settings = o;
@ -104,7 +101,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
[DefaultValue(24)]
public int NTSCTopLine
{
get { return this._ntscTopLine; }
get { return _ntscTopLine; }
set { _ntscTopLine = Math.Min(64, Math.Max(value, 0)); }
}
@ -122,8 +119,8 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
[DefaultValue(24)]
public int PALTopLine
{
get { return this._palTopLine; }
set { this._palTopLine = Math.Min(64, Math.Max(value, 0)); }
get { return _palTopLine; }
set { _palTopLine = Math.Min(64, Math.Max(value, 0)); }
}
[DisplayName("PAL Bottom Line")]
@ -131,8 +128,8 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
[DefaultValue(296)]
public int PALBottomLine
{
get { return this._palBottomLine; }
set { this._palBottomLine = Math.Min(310, Math.Max(value, 192)); }
get { return _palBottomLine; }
set { _palBottomLine = Math.Min(310, Math.Max(value, 192)); }
}
[DisplayName("Background Color")]

View File

@ -7,12 +7,9 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
{
public partial class Atari2600 : IStatable
{
public bool BinarySaveStatesPreferred
{
get { return false; }
}
public bool BinarySaveStatesPreferred => false;
public void SaveStateText(TextWriter writer)
public void SaveStateText(TextWriter writer)
{
SyncState(Serializer.CreateTextWriter(writer));
}

View File

@ -1,9 +1,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using BizHawk.Common;
using BizHawk.Common.BufferExtensions;
using BizHawk.Emulation.Common;
@ -22,7 +20,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
private readonly GameInfo _game;
private int _frame;
private ITraceable Tracer { get; set; }
private ITraceable Tracer { get; }
[CoreConstructor("A26")]
public Atari2600(CoreComm comm, GameInfo game, byte[] rom, object settings, object syncSettings)
@ -30,9 +28,6 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
var ser = new BasicServiceProvider(this);
ServiceProvider = ser;
MemoryCallbacks = new MemoryCallbackSystem();
InputCallbacks = new InputCallbackSystem();
Ram = new byte[128];
CoreComm = comm;
Settings = (A2600Settings)settings ?? new A2600Settings();
@ -76,11 +71,11 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
get { return _pal ? DisplayType.PAL : Common.DisplayType.NTSC; }
}
public string SystemId { get { return "A26"; } }
public string SystemId => "A26";
public string BoardName { get { return _mapper.GetType().Name; } }
public string BoardName => _mapper.GetType().Name;
public CoreComm CoreComm { get; private set; }
public CoreComm CoreComm { get; private set; }
public ControllerDefinition ControllerDefinition { get { return Atari2600ControllerDefinition; } }

View File

@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using BizHawk.Common;
@ -24,7 +23,7 @@ namespace BizHawk.Emulation.Cores.ColecoVision
}
Port1 = (IPort)Activator.CreateInstance(ValidControllerTypes[controller1Name], 1);
Port2 = (IPort)Activator.CreateInstance(ValidControllerTypes[controller2Name], 2); ;
Port2 = (IPort)Activator.CreateInstance(ValidControllerTypes[controller2Name], 2);
Definition = new ControllerDefinition
{
@ -41,8 +40,8 @@ namespace BizHawk.Emulation.Cores.ColecoVision
Definition.FloatRanges.AddRange(Port2.Definition.FloatRanges);
}
public int wheel1;
public int wheel2;
private int wheel1;
private int wheel2;
public byte ReadPort1(IController c, bool left_mode, bool update_wheel)
{

View File

@ -4,7 +4,6 @@ using System.ComponentModel;
using System.Linq;
using BizHawk.Common;
using BizHawk.Common.ReflectionExtensions;
using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.ColecoVision
@ -12,7 +11,6 @@ namespace BizHawk.Emulation.Cores.ColecoVision
/// <summary>
/// Represents a controller plugged into a controller port on the intellivision
/// </summary>
///
public interface IPort
{
byte Read(IController c, bool left_mode, int wheel);
@ -24,7 +22,6 @@ namespace BizHawk.Emulation.Cores.ColecoVision
void SyncState(Serializer ser);
int PortNum { get; }
}
[DisplayName("Unplugged Controller")]

View File

@ -4,7 +4,6 @@ using System.Collections.Generic;
using BizHawk.Common.NumberExtensions;
using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.ColecoVision
{
public partial class ColecoVision : IDebuggable
@ -121,16 +120,16 @@ namespace BizHawk.Emulation.Cores.ColecoVision
}
}
public IMemoryCallbackSystem MemoryCallbacks { get; private set; }
public IMemoryCallbackSystem MemoryCallbacks { get; }
public bool CanStep(StepType type) { return false; }
public bool CanStep(StepType type) => false;
[FeatureNotImplemented]
public void Step(StepType type) { throw new NotImplementedException(); }
[FeatureNotImplemented]
public void Step(StepType type)
{
throw new NotImplementedException();
}
public int TotalExecutedCycles
{
get { return Cpu.TotalExecutedCycles; }
}
public int TotalExecutedCycles => Cpu.TotalExecutedCycles;
}
}

View File

@ -1,6 +1,4 @@
using System;
using BizHawk.Emulation.Common;
using BizHawk.Emulation.Cores.Components;
using BizHawk.Emulation.Cores.Components;
namespace BizHawk.Emulation.Cores.ColecoVision
{

View File

@ -7,12 +7,9 @@ namespace BizHawk.Emulation.Cores.ColecoVision
{
public partial class ColecoVision : IStatable
{
public bool BinarySaveStatesPreferred
{
get { return false; }
}
public bool BinarySaveStatesPreferred => false;
public void SaveStateBinary(BinaryWriter bw)
public void SaveStateBinary(BinaryWriter bw)
{
SyncState(Serializer.CreateBinaryWriter(bw));
}

View File

@ -2,7 +2,6 @@
using BizHawk.Emulation.Cores.Components;
using BizHawk.Emulation.Cores.Components.Z80;
using BizHawk.Common.NumberExtensions;
using System;
namespace BizHawk.Emulation.Cores.ColecoVision
{
@ -16,13 +15,13 @@ namespace BizHawk.Emulation.Cores.ColecoVision
public sealed partial class ColecoVision : IEmulator, IDebuggable, IInputPollable, IStatable, ISettable<ColecoVision.ColecoSettings, ColecoVision.ColecoSyncSettings>
{
// ROM
public byte[] RomData;
public int RomLength;
public byte[] BiosRom;
private byte[] RomData;
private int RomLength;
private byte[] BiosRom;
// Machine
public Z80A Cpu;
public TMS9918A VDP;
private Z80A Cpu;
private TMS9918A VDP;
public byte[] Ram = new byte[1024];
private readonly TraceBuffer Tracer = new TraceBuffer();
@ -36,18 +35,20 @@ namespace BizHawk.Emulation.Cores.ColecoVision
_syncSettings = (ColecoSyncSettings)SyncSettings ?? new ColecoSyncSettings();
bool skipbios = _syncSettings.SkipBiosIntro;
Cpu = new Z80A();
Cpu.ReadMemory = ReadMemory;
Cpu.WriteMemory = WriteMemory;
Cpu.ReadHardware = ReadPort;
Cpu.WriteHardware = WritePort;
Cpu.MemoryCallbacks = MemoryCallbacks;
Cpu = new Z80A
{
ReadMemory = ReadMemory,
WriteMemory = WriteMemory,
ReadHardware = ReadPort,
WriteHardware = WritePort,
MemoryCallbacks = MemoryCallbacks
};
PSG = new SN76489();
PSG = new SN76489();
_fakeSyncSound = new FakeSyncSound(PSG, 735);
(ServiceProvider as BasicServiceProvider).Register<ISoundProvider>(_fakeSyncSound);
ControllerDeck = new ColecoVisionControllerDeck(this._syncSettings.Port1, this._syncSettings.Port2);
ControllerDeck = new ColecoVisionControllerDeck(_syncSettings.Port1, _syncSettings.Port2);
VDP = new TMS9918A(Cpu);
(ServiceProvider as BasicServiceProvider).Register<IVideoProvider>(VDP);
@ -57,9 +58,12 @@ namespace BizHawk.Emulation.Cores.ColecoVision
// gamedb can overwrite the syncsettings; this is ok
if (game["NoSkip"])
{
skipbios = false;
}
LoadRom(rom, skipbios);
this.game = game;
_game = game;
SetupMemoryDomains();
Tracer.Header = Cpu.TraceHeader;
@ -68,16 +72,18 @@ namespace BizHawk.Emulation.Cores.ColecoVision
serviceProvider.Register<ITraceable>(Tracer);
}
public IEmulatorServiceProvider ServiceProvider { get; private set; }
public IEmulatorServiceProvider ServiceProvider { get; }
public ControllerDefinition ControllerDefinition
{
get { return ControllerDeck.Definition; }
}
public ColecoVisionControllerDeck ControllerDeck { get; private set; }
public ColecoVisionControllerDeck ControllerDeck { get; }
public IController Controller { get; set; }
const ushort RamSizeMask = 0x03FF;
private const ushort RamSizeMask = 0x03FF;
public void FrameAdvance(bool render, bool renderSound)
{
@ -106,7 +112,7 @@ namespace BizHawk.Emulation.Cores.ColecoVision
}
}
void LoadRom(byte[] rom, bool skipbios)
private void LoadRom(byte[] rom, bool skipbios)
{
RomData = new byte[0x8000];
for (int i = 0; i < 0x8000; i++)
@ -120,28 +126,34 @@ namespace BizHawk.Emulation.Cores.ColecoVision
}
}
byte ReadPort(ushort port)
private byte ReadPort(ushort port)
{
port &= 0xFF;
if (port >= 0xA0 && port < 0xC0)
{
if ((port & 1) == 0)
{
return VDP.ReadData();
}
return VDP.ReadVdpStatus();
}
if (port >= 0xE0)
{
if ((port & 1) == 0)
{
return ReadController1();
}
return ReadController2();
}
return 0xFF;
}
void WritePort(ushort port, byte value)
private void WritePort(ushort port, byte value)
{
port &= 0xFF;
@ -173,9 +185,10 @@ namespace BizHawk.Emulation.Cores.ColecoVision
}
}
public bool DeterministicEmulation { get { return true; } }
public bool DeterministicEmulation => true;
public void Dispose() { }
public void Dispose() { }
public void ResetCounters()
{
Frame = 0;
@ -183,9 +196,10 @@ namespace BizHawk.Emulation.Cores.ColecoVision
_isLag = false;
}
public string SystemId { get { return "Coleco"; } }
public GameInfo game;
public CoreComm CoreComm { get; private set; }
public string BoardName { get { return null; } }
public string SystemId => "Coleco";
private GameInfo _game;
public CoreComm CoreComm { get; }
public string BoardName => null;
}
}

View File

@ -1,7 +1,4 @@
using BizHawk.Emulation.Common;
using System;
namespace BizHawk.Emulation.Cores.ColecoVision
namespace BizHawk.Emulation.Cores.ColecoVision
{
public partial class ColecoVision
{
@ -25,7 +22,7 @@ namespace BizHawk.Emulation.Cores.ColecoVision
public enum InputPortMode { Left, Right }
InputPortMode InputPortSelection;
byte ReadController1()
private byte ReadController1()
{
_isLag = false;
byte retval;
@ -43,8 +40,7 @@ namespace BizHawk.Emulation.Cores.ColecoVision
return 0x7F;
}
byte ReadController2()
private byte ReadController2()
{
_isLag = false;
byte retval;
@ -63,6 +59,6 @@ namespace BizHawk.Emulation.Cores.ColecoVision
}
public int Frame { get { return frame; } set { frame = value; } }
int frame;
private int frame;
}
}

View File

@ -1,7 +1,8 @@
using BizHawk.Common;
using System;
using BizHawk.Common;
using BizHawk.Common.BufferExtensions;
using BizHawk.Emulation.Common;
using System;
namespace BizHawk.Emulation.Cores.Intellivision
{
@ -64,15 +65,17 @@ namespace BizHawk.Emulation.Cores.Intellivision
switch (mapper)
{
case 0:
if (addr>=0x5000 && addr<=0x6FFF)
if (addr >= 0x5000 && addr <= 0x6FFF)
{
return Data[addr-0x5000];
return Data[addr - 0x5000];
}
else if (addr>=0xD000 && addr<=0xDFFF)
if (addr >= 0xD000 && addr <= 0xDFFF)
{
return Data[addr - 0xB000];
}
else if (addr>=0xF000 && addr<=0xFFFF)
if (addr >= 0xF000 && addr <= 0xFFFF)
{
return Data[addr - 0xC000];
}
@ -83,7 +86,8 @@ namespace BizHawk.Emulation.Cores.Intellivision
{
return Data[addr - 0x5000];
}
else if (addr >= 0xD000 && addr <= 0xFFFF)
if (addr >= 0xD000 && addr <= 0xFFFF)
{
return Data[addr - 0xB000];
}
@ -94,11 +98,13 @@ namespace BizHawk.Emulation.Cores.Intellivision
{
return Data[addr - 0x5000];
}
else if (addr >= 0x9000 && addr <= 0xBFFF)
if (addr >= 0x9000 && addr <= 0xBFFF)
{
return Data[addr - 0x7000];
}
else if (addr >= 0xD000 && addr <= 0xDFFF)
if (addr >= 0xD000 && addr <= 0xDFFF)
{
return Data[addr - 0x8000];
}
@ -109,15 +115,18 @@ namespace BizHawk.Emulation.Cores.Intellivision
{
return Data[addr - 0x5000];
}
else if (addr >= 0x9000 && addr <= 0xAFFF)
if (addr >= 0x9000 && addr <= 0xAFFF)
{
return Data[addr - 0x7000];
}
else if (addr >= 0xD000 && addr <= 0xDFFF)
if (addr >= 0xD000 && addr <= 0xDFFF)
{
return Data[addr - 0x9000];
}
else if (addr >= 0xF000 && addr <= 0xFFFF)
if (addr >= 0xF000 && addr <= 0xFFFF)
{
return Data[addr - 0xA000];
}
@ -128,7 +137,8 @@ namespace BizHawk.Emulation.Cores.Intellivision
{
return Data[addr - 0x5000];
}
else if (addr >= 0xD000 && addr <= 0xD3FF)
if (addr >= 0xD000 && addr <= 0xD3FF)
{
return Cart_Ram[addr - 0xD000];
}
@ -139,7 +149,8 @@ namespace BizHawk.Emulation.Cores.Intellivision
{
return Data[addr - 0x5000];
}
else if (addr >= 0x9000 && addr <= 0xBFFF)
if (addr >= 0x9000 && addr <= 0xBFFF)
{
return Data[addr - 0x6000];
}
@ -175,19 +186,23 @@ namespace BizHawk.Emulation.Cores.Intellivision
{
return Data[addr - 0x5000];
}
else if (addr >= 0x9000 && addr <= 0xAFFF)
if (addr >= 0x9000 && addr <= 0xAFFF)
{
return Data[addr - 0x7000];
}
else if (addr >= 0xD000 && addr <= 0xDFFF)
if (addr >= 0xD000 && addr <= 0xDFFF)
{
return Data[addr - 0x9000];
}
else if (addr >= 0xF000 && addr <= 0xFFFF)
if (addr >= 0xF000 && addr <= 0xFFFF)
{
return Data[addr - 0xA000];
}
else if (addr >= 0x8800 && addr <= 0x8FFF)
if (addr >= 0x8800 && addr <= 0x8FFF)
{
return Cart_Ram[addr - 0x8800];
}
@ -198,11 +213,13 @@ namespace BizHawk.Emulation.Cores.Intellivision
{
return Data[addr - 0x5000];
}
else if (addr >= 0x8800 && addr <= 0xB7FF)
if (addr >= 0x8800 && addr <= 0xB7FF)
{
return Data[addr - 0x6800];
}
else if (addr >= 0xD000 && addr <= 0xFFFF)
if (addr >= 0xD000 && addr <= 0xFFFF)
{
return Data[addr - 0x8000];
}
@ -232,6 +249,7 @@ namespace BizHawk.Emulation.Cores.Intellivision
}
break;
}
return false;
}
}

View File

@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using BizHawk.Common;
@ -24,7 +23,7 @@ namespace BizHawk.Emulation.Cores.Intellivision
}
Port1 = (IPort)Activator.CreateInstance(ValidControllerTypes[controller1Name], 1);
Port2 = (IPort)Activator.CreateInstance(ValidControllerTypes[controller2Name], 2); ;
Port2 = (IPort)Activator.CreateInstance(ValidControllerTypes[controller2Name], 2);
Definition = new ControllerDefinition
{
@ -51,7 +50,7 @@ namespace BizHawk.Emulation.Cores.Intellivision
return Port2.Read(c);
}
public ControllerDefinition Definition { get; private set; }
public ControllerDefinition Definition { get; }
public void SyncState(Serializer ser)
{

View File

@ -1,28 +1,29 @@
using BizHawk.Emulation.Common;
using System;
namespace BizHawk.Emulation.Cores.Intellivision
{
public sealed partial class Intellivision : IEmulator
{
public IEmulatorServiceProvider ServiceProvider { get; private set; }
public IEmulatorServiceProvider ServiceProvider { get; }
public ControllerDefinition ControllerDefinition
{
get { return ControllerDeck.Definition; }
}
public ControllerDefinition ControllerDefinition => ControllerDeck.Definition;
public IController Controller { get; set; }
public IController Controller { get; set; }
public void FrameAdvance(bool render, bool rendersound)
{
if (Tracer.Enabled)
{
_cpu.TraceCallback = (s) => Tracer.Put(s);
}
else
{
_cpu.TraceCallback = null;
}
_frame++;
stic_row = -1;
// read the controller state here for now
get_controller_state();
@ -30,13 +31,13 @@ namespace BizHawk.Emulation.Cores.Intellivision
int delay_cycles = 700;
int delay_timer = -1;
_cpu.PendingCycles = (14934 - 3791 + _cpu.GetPendingCycles());
_cpu.PendingCycles = 14934 - 3791 + _cpu.GetPendingCycles();
_stic.Sr1 = true;
islag = true;
bool active_display = _stic.active_display;
//also at the start of every frame the color stack is reset
// also at the start of every frame the color stack is reset
_stic.ColorSP = 0x0028;
while (_cpu.GetPendingCycles() > 0)
@ -57,7 +58,7 @@ namespace BizHawk.Emulation.Cores.Intellivision
}
}
if (delay_cycles>= 750 && active_display)
if (delay_cycles >= 750 && active_display)
{
delay_cycles = -1;
delay_timer = 110;
@ -67,7 +68,8 @@ namespace BizHawk.Emulation.Cores.Intellivision
_stic.in_vb_2 = true;
_stic.Background(stic_row);
_stic.in_vb_2 = false;
}
}
stic_row++;
}
Connect();
@ -85,7 +87,7 @@ namespace BizHawk.Emulation.Cores.Intellivision
_stic.active_display = false;
_stic.Sr1 = false;
_cpu.PendingCycles = (3000 + _cpu.GetPendingCycles());
_cpu.PendingCycles = 3000 + _cpu.GetPendingCycles();
while (_cpu.GetPendingCycles() > 0)
{
@ -95,7 +97,7 @@ namespace BizHawk.Emulation.Cores.Intellivision
}
// vblank phase 2
_cpu.PendingCycles = (791 + _cpu.GetPendingCycles());
_cpu.PendingCycles = 791 + _cpu.GetPendingCycles();
_stic.in_vb_1 = false;
while (_cpu.GetPendingCycles() > 0)
@ -121,25 +123,23 @@ namespace BizHawk.Emulation.Cores.Intellivision
public bool islag;
public int lagcount;
private int stic_row;
public int Frame { get { return _frame; } }
public string SystemId
{
get { return "INTV"; }
}
public int Frame => _frame;
public bool DeterministicEmulation { get { return true; } }
public string SystemId => "INTV";
[FeatureNotImplemented]
public string BoardName { get { return null; } }
public bool DeterministicEmulation => true;
public void ResetCounters()
[FeatureNotImplemented]
public string BoardName => null;
public void ResetCounters()
{
_frame = 0;
lagcount = 0;
}
public CoreComm CoreComm { get; private set; }
public CoreComm CoreComm { get; }
public void Dispose()
{