BizHawk/BizHawk.Emulation.Cores/Computers/Commodore64/C64.IDisassemblable.cs

78 lines
1.7 KiB
C#
Raw Normal View History

2017-05-12 19:06:34 +00:00
using System.Collections.Generic;
2016-02-22 23:50:11 +00:00
using System.Linq;
2017-05-12 19:06:34 +00:00
2016-02-22 23:50:11 +00:00
using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.Computers.Commodore64
{
public partial class C64 : IDisassemblable
{
private IDisassemblable _selectedDisassemblable;
2016-02-22 23:50:11 +00:00
2017-04-24 13:35:05 +00:00
private IEnumerable<IDisassemblable> GetAvailableDisassemblables()
{
yield return _board.Cpu;
if (_board.DiskDrive != null)
{
yield return _board.DiskDrive;
}
}
2016-02-22 23:50:11 +00:00
2017-04-24 13:35:05 +00:00
private void SetDefaultDisassemblable()
{
_selectedDisassemblable = GetAvailableDisassemblables().First();
}
2016-02-22 23:50:11 +00:00
2017-04-24 13:35:05 +00:00
public string Cpu
{
get
{
if (_selectedDisassemblable == null)
{
SetDefaultDisassemblable();
}
2017-05-30 17:09:46 +00:00
2017-04-24 13:35:05 +00:00
return _selectedDisassemblable.Cpu;
}
2017-05-30 17:09:46 +00:00
2017-04-24 13:35:05 +00:00
set
{
var currentSelectedDisassemblable = _selectedDisassemblable;
_selectedDisassemblable = GetAvailableDisassemblables().FirstOrDefault(d => d.Cpu == value) ?? currentSelectedDisassemblable;
if (_selectedDisassemblable is IDebuggable)
{
_selectedDebuggable = _selectedDisassemblable as IDebuggable;
}
}
}
2016-02-22 23:50:11 +00:00
2017-04-24 13:35:05 +00:00
public string PCRegisterName
2016-02-22 23:50:11 +00:00
{
2017-04-24 13:35:05 +00:00
get
{
if (_selectedDisassemblable == null)
{
SetDefaultDisassemblable();
}
2017-05-30 17:09:46 +00:00
2017-04-24 13:35:05 +00:00
return _selectedDisassemblable.PCRegisterName;
}
2016-02-22 23:50:11 +00:00
}
2017-04-24 13:35:05 +00:00
public IEnumerable<string> AvailableCpus
2016-02-22 23:50:11 +00:00
{
2017-04-24 13:35:05 +00:00
get { return GetAvailableDisassemblables().SelectMany(d => d.AvailableCpus); }
2016-02-22 23:50:11 +00:00
}
public string Disassemble(MemoryDomain m, uint addr, out int length)
{
2017-04-24 13:35:05 +00:00
if (_selectedDisassemblable == null)
{
SetDefaultDisassemblable();
}
2017-05-30 17:09:46 +00:00
2017-04-24 13:35:05 +00:00
return _selectedDisassemblable.Disassemble(m, addr, out length);
2016-02-22 23:50:11 +00:00
}
}
}