using Mesen.GUI.Debugger.Controls; using Mesen.GUI.Debugger.Integration; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Mesen.GUI.Debugger.Code { public class SpcDisassemblyManager : CpuDisassemblyManager { public override CpuType CpuType { get { return CpuType.Spc; } } public override SnesMemoryType RelativeMemoryType { get { return SnesMemoryType.SpcMemory; } } public override int AddressSize { get { return 4; } } public override int ByteCodeSize { get { return 3; } } public override bool AllowSourceView { get { return false; } } public override void RefreshCode(DbgImporter symbolProvider, DbgImporter.FileInfo file) { this._provider = new CodeDataProvider(CpuType.Spc); } protected override int GetFullAddress(int address, int length) { SpcState state = DebugApi.GetState().Spc; if(length == 2) { //Determine address based on direct page flag return (state.PS.HasFlag(SpcFlags.DirectPage) ? 0x100 : 0) | address; } return address; } } }