Put some more callbacks into IZ80ALink; remove MemoryCallbacks in Z80A (it's not actually used at all)

This commit is contained in:
CasualPokePlayer 2024-09-06 18:18:41 -07:00
parent 666cb39392
commit 85d6002673
12 changed files with 69 additions and 28 deletions

View File

@ -23,5 +23,12 @@
// This is only called when the first byte of an instruction is fetched.
void OnExecFetch(ushort address);
void IRQCallback();
void NMICallback();
// This will be a few cycles off for now
// It should suffice for now until Alyosha returns from hiatus
void IRQACKCallback();
}
}

View File

@ -242,8 +242,6 @@ namespace BizHawk.Emulation.Cores.Components.Z80A
}
}
public IMemoryCallbackSystem MemoryCallbacks { get; set; }
public void SetCpuLink(TLink link)
=> _link = link;

View File

@ -27,6 +27,16 @@ namespace BizHawk.Emulation.Cores.Calculators.TI83
public void OnExecFetch(ushort address)
{
}
public void IRQCallback()
=> ti83.IRQCallback();
public void NMICallback()
=> ti83.NMICallback();
public void IRQACKCallback()
{
}
}
}
}

View File

@ -16,12 +16,7 @@ namespace BizHawk.Emulation.Cores.Calculators.TI83
ServiceProvider = ser;
PutSettings(lp.Settings ?? new TI83CommonSettings());
_cpu = new Z80A<CpuLink>(new CpuLink(this))
{
IRQCallback = IRQCallback,
NMICallback = NMICallback,
MemoryCallbacks = MemoryCallbacks
};
_cpu = new Z80A<CpuLink>(new CpuLink(this));
_rom = lp.Comm.CoreFileProvider.GetFirmwareOrThrow(new("TI83", "Rom"));
LinkPort = new TI83LinkPort(this);

View File

@ -27,6 +27,17 @@ namespace BizHawk.Emulation.Cores.Computers.AmstradCPC
public void OnExecFetch(ushort address)
{
}
public void IRQCallback()
{
}
public void NMICallback()
{
}
public void IRQACKCallback()
=> machine.GateArray.IORQA();
}
}
}

View File

@ -23,12 +23,7 @@ namespace BizHawk.Emulation.Cores.Computers.AmstradCPC
ServiceProvider = ser;
CoreComm = lp.Comm;
_gameInfo = lp.Roms.Select(r => r.Game).ToList();
_cpu = new Z80A<CpuLink>(default)
{
MemoryCallbacks = MemoryCallbacks
};
_cpu = new Z80A<CpuLink>(default);
_tracer = new TraceBuffer(_cpu.TraceHeader);
_files = lp.Roms.Select(r => r.RomData).ToList();
@ -59,7 +54,6 @@ namespace BizHawk.Emulation.Cores.Computers.AmstradCPC
SoftReset = _machine.SoftReset;
_cpu.SetCpuLink(new CpuLink(_machine));
_cpu.IRQACKCallback = _machine.GateArray.IORQA;
ser.Register<ITraceable>(_tracer);
ser.Register<IDisassemblable>(_cpu);

View File

@ -28,6 +28,18 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
public void OnExecFetch(ushort address)
=> machine.CPUMon.OnExecFetch(address);
public void IRQCallback()
{
}
public void NMICallback()
{
}
public void IRQACKCallback()
{
}
}
}
}

View File

@ -27,11 +27,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
_gameInfo = lp.Roms.Select(r => r.Game).ToList();
_cpu = new Z80A<CpuLink>(default)
{
MemoryCallbacks = MemoryCallbacks
};
_cpu = new Z80A<CpuLink>(default);
_tracer = new TraceBuffer(_cpu.TraceHeader);
_files = lp.Roms.Select(r => r.RomData).ToList();

View File

@ -27,6 +27,18 @@ namespace BizHawk.Emulation.Cores.ColecoVision
public void OnExecFetch(ushort address)
{
}
public void IRQCallback()
{
}
public void NMICallback()
{
}
public void IRQACKCallback()
{
}
}
}
}

View File

@ -17,10 +17,7 @@ namespace BizHawk.Emulation.Cores.ColecoVision
_syncSettings = syncSettings ?? new ColecoSyncSettings();
bool skipBios = _syncSettings.SkipBiosIntro;
_cpu = new Z80A<CpuLink>(new CpuLink(this))
{
MemoryCallbacks = MemoryCallbacks
};
_cpu = new Z80A<CpuLink>(new CpuLink(this));
PSG = new SN76489col();
SGM_sound = new AY_3_8910_SGM();

View File

@ -30,6 +30,18 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem
public void OnExecFetch(ushort address)
=> sms.OnExecMemory(address);
public void IRQCallback()
{
}
public void NMICallback()
{
}
public void IRQACKCallback()
{
}
}
}
}

View File

@ -77,10 +77,7 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem
HasYM2413 = true;
}
Cpu = new Z80A<CpuLink>(new CpuLink(this))
{
MemoryCallbacks = MemoryCallbacks
};
Cpu = new Z80A<CpuLink>(new CpuLink(this));
// set this before turning off GG system for GG_in_SMS games
bool sms_reg_compat = !IsGameGear && (_region == SmsSyncSettings.Regions.Japan);