cleanup GBHawkLink3x

This commit is contained in:
adelikat 2020-02-18 13:40:00 -06:00
parent 176b846f3b
commit 9418a57b54
5 changed files with 62 additions and 105 deletions

View File

@ -6,11 +6,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink3x
{ {
public partial class GBHawkLink3x : IEmulator, IVideoProvider, ISoundProvider public partial class GBHawkLink3x : IEmulator, IVideoProvider, ISoundProvider
{ {
public IEmulatorServiceProvider ServiceProvider { get; } public IEmulatorServiceProvider ServiceProvider { get; } = new BasicServiceProvider();
public ControllerDefinition ControllerDefinition => _controllerDeck.Definition; public ControllerDefinition ControllerDefinition => _controllerDeck.Definition;
public bool FrameAdvance(IController controller, bool render, bool rendersound) public bool FrameAdvance(IController controller, bool render, bool renderSound)
{ {
//Console.WriteLine("-----------------------FRAME-----------------------"); //Console.WriteLine("-----------------------FRAME-----------------------");
//Update the color palette if a setting changed //Update the color palette if a setting changed
@ -380,7 +380,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink3x
R.vblank_rise = false; R.vblank_rise = false;
do_frame_fill = true; do_frame_fill = true;
} }
} }
} }
public void GetControllerState(IController controller) public void GetControllerState(IController controller)
@ -417,10 +417,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink3x
public int[] _vidbuffer = new int[160 * 2 * 144 * 2]; public int[] _vidbuffer = new int[160 * 2 * 144 * 2];
public int[] GetVideoBuffer() public int[] GetVideoBuffer() => _vidbuffer;
{
return _vidbuffer;
}
public void FillVideoBuffer() public void FillVideoBuffer()
{ {
@ -447,8 +444,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink3x
public static readonly uint[] color_palette_BW = { 0xFFFFFFFF , 0xFFAAAAAA, 0xFF555555, 0xFF000000 }; public static readonly uint[] color_palette_BW = { 0xFFFFFFFF , 0xFFAAAAAA, 0xFF555555, 0xFF000000 };
public static readonly uint[] color_palette_Gr = { 0xFFA4C505, 0xFF88A905, 0xFF1D551D, 0xFF052505 }; public static readonly uint[] color_palette_Gr = { 0xFFA4C505, 0xFF88A905, 0xFF1D551D, 0xFF052505 };
public uint[] color_palette = new uint[4];
#endregion #endregion
#region audio #region audio
@ -467,32 +462,24 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink3x
public void GetSamplesSync(out short[] samples, out int nsamp) public void GetSamplesSync(out short[] samples, out int nsamp)
{ {
short[] temp_samp_L; L.audio.GetSamplesSync(out var tempSampL, out var nsampL);
short[] temp_samp_C; C.audio.GetSamplesSync(out var tempSampC, out var nsampC);
short[] temp_samp_R; R.audio.GetSamplesSync(out var tempSampR, out var nsampR);
int nsamp_L;
int nsamp_C;
int nsamp_R;
L.audio.GetSamplesSync(out temp_samp_L, out nsamp_L);
C.audio.GetSamplesSync(out temp_samp_C, out nsamp_C);
R.audio.GetSamplesSync(out temp_samp_R, out nsamp_R);
if (Link3xSettings.AudioSet == GBLink3xSettings.AudioSrc.Left) if (Link3xSettings.AudioSet == GBLink3xSettings.AudioSrc.Left)
{ {
samples = temp_samp_L; samples = tempSampL;
nsamp = nsamp_L; nsamp = nsampL;
} }
else if (Link3xSettings.AudioSet == GBLink3xSettings.AudioSrc.Center) else if (Link3xSettings.AudioSet == GBLink3xSettings.AudioSrc.Center)
{ {
samples = temp_samp_C; samples = tempSampC;
nsamp = nsamp_C; nsamp = nsampC;
} }
else if (Link3xSettings.AudioSet == GBLink3xSettings.AudioSrc.Right) else if (Link3xSettings.AudioSet == GBLink3xSettings.AudioSrc.Right)
{ {
samples = temp_samp_R; samples = tempSampR;
nsamp = nsamp_R; nsamp = nsampR;
} }
else else
{ {
@ -513,11 +500,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink3x
R.audio.DiscardSamples(); R.audio.DiscardSamples();
} }
private void GetSamples(short[] samples)
{
}
public void DisposeSound() public void DisposeSound()
{ {
L.audio.DisposeSound(); L.audio.DisposeSound();

View File

@ -58,22 +58,22 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink3x
"System Bus L", "System Bus L",
0X10000, 0X10000,
MemoryDomain.Endian.Little, MemoryDomain.Endian.Little,
addr => PeekSystemBusL(addr), PeekSystemBusL,
(addr, value) => PokeSystemBusL(addr, value), PokeSystemBusL,
1), 1),
new MemoryDomainDelegate( new MemoryDomainDelegate(
"System Bus C", "System Bus C",
0X10000, 0X10000,
MemoryDomain.Endian.Little, MemoryDomain.Endian.Little,
addr => PeekSystemBusC(addr), PeekSystemBusC,
(addr, value) => PokeSystemBusC(addr, value), PokeSystemBusC,
1), 1),
new MemoryDomainDelegate( new MemoryDomainDelegate(
"System Bus R", "System Bus R",
0X10000, 0X10000,
MemoryDomain.Endian.Little, MemoryDomain.Endian.Little,
addr => PeekSystemBusR(addr), PeekSystemBusR,
(addr, value) => PokeSystemBusR(addr, value), PokeSystemBusR,
1), 1),
new MemoryDomainDelegate( new MemoryDomainDelegate(
"ROM L", "ROM L",
@ -121,20 +121,20 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink3x
if (L.cart_RAM != null) if (L.cart_RAM != null)
{ {
var CartRamL = new MemoryDomainByteArray("Cart RAM L", MemoryDomain.Endian.Little, L.cart_RAM, true, 1); var cartRamL = new MemoryDomainByteArray("Cart RAM L", MemoryDomain.Endian.Little, L.cart_RAM, true, 1);
domains.Add(CartRamL); domains.Add(cartRamL);
} }
if (C.cart_RAM != null) if (C.cart_RAM != null)
{ {
var CartRamC = new MemoryDomainByteArray("Cart RAM C", MemoryDomain.Endian.Little, C.cart_RAM, true, 1); var cartRamC = new MemoryDomainByteArray("Cart RAM C", MemoryDomain.Endian.Little, C.cart_RAM, true, 1);
domains.Add(CartRamC); domains.Add(cartRamC);
} }
if (R.cart_RAM != null) if (R.cart_RAM != null)
{ {
var CartRamR = new MemoryDomainByteArray("Cart RAM R", MemoryDomain.Endian.Little, R.cart_RAM, true, 1); var cartRamR = new MemoryDomainByteArray("Cart RAM R", MemoryDomain.Endian.Little, R.cart_RAM, true, 1);
domains.Add(CartRamR); domains.Add(cartRamR);
} }
MemoryDomains = new MemoryDomainList(domains); MemoryDomains = new MemoryDomainList(domains);

View File

@ -7,29 +7,29 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink3x
{ {
public byte[] CloneSaveRam() public byte[] CloneSaveRam()
{ {
if ((L.cart_RAM != null) || (C.cart_RAM != null) || (R.cart_RAM != null)) if (L.cart_RAM != null || C.cart_RAM != null || R.cart_RAM != null)
{ {
int Len1 = 0; int len1 = 0;
int Len2 = 0; int len2 = 0;
int Len3 = 0; int len3 = 0;
int index = 0; int index = 0;
if (L.cart_RAM != null) if (L.cart_RAM != null)
{ {
Len1 = L.cart_RAM.Length; len1 = L.cart_RAM.Length;
} }
if (C.cart_RAM != null) if (C.cart_RAM != null)
{ {
Len2 = C.cart_RAM.Length; len2 = C.cart_RAM.Length;
} }
if (R.cart_RAM != null) if (R.cart_RAM != null)
{ {
Len3 = R.cart_RAM.Length; len3 = R.cart_RAM.Length;
} }
byte[] temp = new byte[Len1 + Len2 + Len3]; byte[] temp = new byte[len1 + len2 + len3];
if (L.cart_RAM != null) if (L.cart_RAM != null)
{ {

View File

@ -10,15 +10,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink3x
{ {
public partial class GBHawkLink3x : IEmulator, IStatable, ISettable<GBHawkLink3x.GBLink3xSettings, GBHawkLink3x.GBLink3xSyncSettings> public partial class GBHawkLink3x : IEmulator, IStatable, ISettable<GBHawkLink3x.GBLink3xSettings, GBHawkLink3x.GBLink3xSyncSettings>
{ {
public GBLink3xSettings GetSettings() public GBLink3xSettings GetSettings() => Link3xSettings.Clone();
{
return Link3xSettings.Clone();
}
public GBLink3xSyncSettings GetSyncSettings() public GBLink3xSyncSettings GetSyncSettings() => Link3xSyncSettings.Clone();
{
return Link3xSyncSettings.Clone();
}
public bool PutSettings(GBLink3xSettings o) public bool PutSettings(GBLink3xSettings o)
{ {
@ -34,7 +28,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink3x
} }
private GBLink3xSettings Link3xSettings = new GBLink3xSettings(); private GBLink3xSettings Link3xSettings = new GBLink3xSettings();
public GBLink3xSyncSettings Link3xSyncSettings = new GBLink3xSyncSettings(); private GBLink3xSyncSettings Link3xSyncSettings = new GBLink3xSyncSettings();
public class GBLink3xSettings public class GBLink3xSettings
{ {
@ -66,15 +60,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink3x
[DefaultValue(AudioSrc.Left)] [DefaultValue(AudioSrc.Left)]
public AudioSrc AudioSet { get; set; } public AudioSrc AudioSet { get; set; }
public GBLink3xSettings Clone() public GBLink3xSettings Clone() => (GBLink3xSettings)MemberwiseClone();
{
return (GBLink3xSettings)MemberwiseClone();
}
public GBLink3xSettings() public GBLink3xSettings() => SettingsUtil.SetDefaultValues(this);
{
SettingsUtil.SetDefaultValues(this);
}
} }
public class GBLink3xSyncSettings public class GBLink3xSyncSettings
@ -177,15 +165,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink3x
[JsonIgnore] [JsonIgnore]
public ushort _DivInitialTime_R = 8; public ushort _DivInitialTime_R = 8;
public GBLink3xSyncSettings Clone() public GBLink3xSyncSettings Clone() => (GBLink3xSyncSettings)MemberwiseClone();
{
return (GBLink3xSyncSettings)MemberwiseClone();
}
public GBLink3xSyncSettings() public GBLink3xSyncSettings() => SettingsUtil.SetDefaultValues(this);
{
SettingsUtil.SetDefaultValues(this);
}
public static bool NeedsReboot(GBLink3xSyncSettings x, GBLink3xSyncSettings y) public static bool NeedsReboot(GBLink3xSyncSettings x, GBLink3xSyncSettings y)
{ {

View File

@ -39,50 +39,49 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink3x
CoreComm = comm; CoreComm = comm;
var temp_set_L = new GBHawk.GBHawk.GBSettings(); var tempSetL = new GBHawk.GBHawk.GBSettings();
var temp_set_C = new GBHawk.GBHawk.GBSettings(); var tempSetC = new GBHawk.GBHawk.GBSettings();
var temp_set_R = new GBHawk.GBHawk.GBSettings(); var tempSetR = new GBHawk.GBHawk.GBSettings();
var temp_sync_L = new GBHawk.GBHawk.GBSyncSettings(); var tempSyncL = new GBHawk.GBHawk.GBSyncSettings();
var temp_sync_C = new GBHawk.GBHawk.GBSyncSettings(); var tempSyncC = new GBHawk.GBHawk.GBSyncSettings();
var temp_sync_R = new GBHawk.GBHawk.GBSyncSettings(); var tempSyncR = new GBHawk.GBHawk.GBSyncSettings();
temp_sync_L.ConsoleMode = Link3xSyncSettings.ConsoleMode_L; tempSyncL.ConsoleMode = Link3xSyncSettings.ConsoleMode_L;
temp_sync_C.ConsoleMode = Link3xSyncSettings.ConsoleMode_C; tempSyncC.ConsoleMode = Link3xSyncSettings.ConsoleMode_C;
temp_sync_R.ConsoleMode = Link3xSyncSettings.ConsoleMode_R; tempSyncR.ConsoleMode = Link3xSyncSettings.ConsoleMode_R;
temp_sync_L.GBACGB = Link3xSyncSettings.GBACGB; tempSyncL.GBACGB = Link3xSyncSettings.GBACGB;
temp_sync_C.GBACGB = Link3xSyncSettings.GBACGB; tempSyncC.GBACGB = Link3xSyncSettings.GBACGB;
temp_sync_R.GBACGB = Link3xSyncSettings.GBACGB; tempSyncR.GBACGB = Link3xSyncSettings.GBACGB;
temp_sync_L.RTCInitialTime = Link3xSyncSettings.RTCInitialTime_L; tempSyncL.RTCInitialTime = Link3xSyncSettings.RTCInitialTime_L;
temp_sync_C.RTCInitialTime = Link3xSyncSettings.RTCInitialTime_C; tempSyncC.RTCInitialTime = Link3xSyncSettings.RTCInitialTime_C;
temp_sync_R.RTCInitialTime = Link3xSyncSettings.RTCInitialTime_R; tempSyncR.RTCInitialTime = Link3xSyncSettings.RTCInitialTime_R;
temp_sync_L.RTCOffset = Link3xSyncSettings.RTCOffset_L; tempSyncL.RTCOffset = Link3xSyncSettings.RTCOffset_L;
temp_sync_C.RTCOffset = Link3xSyncSettings.RTCOffset_C; tempSyncC.RTCOffset = Link3xSyncSettings.RTCOffset_C;
temp_sync_R.RTCOffset = Link3xSyncSettings.RTCOffset_R; tempSyncR.RTCOffset = Link3xSyncSettings.RTCOffset_R;
L = new GBHawk.GBHawk(new CoreComm(comm.ShowMessage, comm.Notify) { CoreFileProvider = comm.CoreFileProvider }, L = new GBHawk.GBHawk(new CoreComm(comm.ShowMessage, comm.Notify) { CoreFileProvider = comm.CoreFileProvider },
game_L, rom_L, temp_set_L, temp_sync_L); game_L, rom_L, tempSetL, tempSyncL);
C = new GBHawk.GBHawk(new CoreComm(comm.ShowMessage, comm.Notify) { CoreFileProvider = comm.CoreFileProvider }, C = new GBHawk.GBHawk(new CoreComm(comm.ShowMessage, comm.Notify) { CoreFileProvider = comm.CoreFileProvider },
game_C, rom_C, temp_set_C, temp_sync_C); game_C, rom_C, tempSetC, tempSyncC);
R = new GBHawk.GBHawk(new CoreComm(comm.ShowMessage, comm.Notify) { CoreFileProvider = comm.CoreFileProvider }, R = new GBHawk.GBHawk(new CoreComm(comm.ShowMessage, comm.Notify) { CoreFileProvider = comm.CoreFileProvider },
game_R, rom_R, temp_set_R, temp_sync_R); game_R, rom_R, tempSetR, tempSyncR);
ser.Register<IVideoProvider>(this); ser.Register<IVideoProvider>(this);
ser.Register<ISoundProvider>(this); ser.Register<ISoundProvider>(this);
_tracer = new TraceBuffer { Header = L.cpu.TraceHeader }; _tracer = new TraceBuffer { Header = L.cpu.TraceHeader };
ser.Register<ITraceable>(_tracer); ser.Register(_tracer);
_lStates = L.ServiceProvider.GetService<IStatable>(); _lStates = L.ServiceProvider.GetService<IStatable>();
_cStates = C.ServiceProvider.GetService<IStatable>(); _cStates = C.ServiceProvider.GetService<IStatable>();
_rStates = R.ServiceProvider.GetService<IStatable>(); _rStates = R.ServiceProvider.GetService<IStatable>();
SetupMemoryDomains(); SetupMemoryDomains();
HardReset(); HardReset();
} }
@ -100,11 +99,5 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink3x
private readonly GBHawkLink3xControllerDeck _controllerDeck; private readonly GBHawkLink3xControllerDeck _controllerDeck;
private readonly ITraceable _tracer; private readonly ITraceable _tracer;
private void ExecFetch(ushort addr)
{
uint flags = (uint)(MemoryCallbackFlags.AccessExecute);
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
}
} }
} }