LinkedDisassemblable and put it in gambattelink

This commit is contained in:
CasualPokePlayer 2022-01-27 00:03:50 -08:00
parent 547c28ef28
commit 2016adcacf
2 changed files with 35 additions and 0 deletions

View File

@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
namespace BizHawk.Emulation.Common
{
/// <summary>
/// A generic linked implementation of IDisassemblable that can be used by any link core
/// </summary>
/// <seealso cref="IDisassemblable" />
public class LinkedDisassemblable : VerifiedDisassembler
{
private readonly IDisassemblable _baseDisassembler;
public LinkedDisassemblable(IDisassemblable baseDisassembler, int numCores)
{
_baseDisassembler = baseDisassembler;
string[] cpus = new string[numCores];
for (int i = 0; i < numCores; i++)
{
cpus[i] = $"P{i + 1} " + baseDisassembler.Cpu;
}
AvailableCpus = cpus;
}
public override IEnumerable<string> AvailableCpus { get; }
public override string PCRegisterName => Cpu.Substring(0, 2) + " PC";
public override string Disassemble(MemoryDomain m, uint addr, out int length) => _baseDisassembler.Disassemble(m, addr, out length);
}
}

View File

@ -78,6 +78,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
_linkedDebuggable = new LinkedDebuggable(_linkedCores, _numCores, _memoryCallbacks);
_serviceProvider.Register<IDebuggable>(_linkedDebuggable);
_linkedDisassemblable = new LinkedDisassemblable(new GBDisassembler(), _numCores);
_serviceProvider.Register<IDisassemblable>(_linkedDisassemblable);
}
private readonly BasicServiceProvider _serviceProvider;
@ -105,6 +108,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
private readonly LinkedSaveRam _linkedSaveRam;
private readonly LinkedMemoryDomains _linkedMemoryDomains;
private readonly LinkedDebuggable _linkedDebuggable;
private readonly LinkedDisassemblable _linkedDisassemblable;
// counters to ensure we do 35112 samples per frame
private readonly int[] _linkedOverflow;