misc cleanup of related Gambatte files
This commit is contained in:
parent
21aa648318
commit
2426cfa31a
|
@ -1,55 +1,74 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using BizHawk.Emulation.Common;
|
||||
|
||||
namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
||||
{
|
||||
partial class Gameboy
|
||||
public partial class Gameboy : ICodeDataLogger
|
||||
{
|
||||
void ICodeDataLogger.SetCDL(ICodeDataLog cdl)
|
||||
public void SetCDL(ICodeDataLog cdl)
|
||||
{
|
||||
CDL = cdl;
|
||||
if(cdl == null)
|
||||
LibGambatte.gambatte_setcdcallback(GambatteState, null);
|
||||
else
|
||||
LibGambatte.gambatte_setcdcallback(GambatteState, CDCallback);
|
||||
_cdl = cdl;
|
||||
LibGambatte.gambatte_setcdcallback(GambatteState, cdl == null ? null : _cdCallback);
|
||||
}
|
||||
|
||||
void ICodeDataLogger.NewCDL(ICodeDataLog cdl)
|
||||
public void NewCDL(ICodeDataLog cdl)
|
||||
{
|
||||
cdl["ROM"] = new byte[MemoryDomains["ROM"].Size];
|
||||
|
||||
//cdl["HRAM"] = new byte[_memoryDomains["HRAM"].Size]; //this is probably useless, but it's here if someone needs it
|
||||
// cdl["HRAM"] = new byte[_memoryDomains["HRAM"].Size]; //this is probably useless, but it's here if someone needs it
|
||||
cdl["WRAM"] = new byte[MemoryDomains["WRAM"].Size];
|
||||
|
||||
if (MemoryDomains.Has("CartRAM"))
|
||||
{
|
||||
cdl["CartRAM"] = new byte[MemoryDomains["CartRAM"].Size];
|
||||
}
|
||||
|
||||
cdl.SubType = "GB";
|
||||
cdl.SubVer = 0;
|
||||
}
|
||||
|
||||
//not supported
|
||||
void ICodeDataLogger.DisassembleCDL(Stream s, ICodeDataLog cdl) { }
|
||||
|
||||
ICodeDataLog CDL;
|
||||
LibGambatte.CDCallback CDCallback;
|
||||
void CDCallbackProc(int addr, LibGambatte.CDLog_AddrType addrtype, LibGambatte.CDLog_Flags flags)
|
||||
[FeatureNotImplemented]
|
||||
void ICodeDataLogger.DisassembleCDL(Stream s, ICodeDataLog cdl)
|
||||
{
|
||||
if (CDL == null) return;
|
||||
if (!CDL.Active) return;
|
||||
}
|
||||
|
||||
private ICodeDataLog _cdl;
|
||||
private readonly LibGambatte.CDCallback _cdCallback;
|
||||
|
||||
private void CDCallbackProc(int addr, LibGambatte.CDLog_AddrType addrtype, LibGambatte.CDLog_Flags flags)
|
||||
{
|
||||
if (_cdl == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_cdl.Active)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
string key;
|
||||
switch (addrtype)
|
||||
{
|
||||
case LibGambatte.CDLog_AddrType.ROM: key = "ROM"; break;
|
||||
case LibGambatte.CDLog_AddrType.HRAM: key = "HRAM"; break;
|
||||
case LibGambatte.CDLog_AddrType.WRAM: key = "WRAM"; break;
|
||||
case LibGambatte.CDLog_AddrType.CartRAM: key = "CartRAM"; break;
|
||||
default: throw new InvalidOperationException("Juniper lightbulb proxy");
|
||||
case LibGambatte.CDLog_AddrType.ROM:
|
||||
key = "ROM";
|
||||
break;
|
||||
case LibGambatte.CDLog_AddrType.HRAM:
|
||||
key = "HRAM";
|
||||
break;
|
||||
case LibGambatte.CDLog_AddrType.WRAM:
|
||||
key = "WRAM";
|
||||
break;
|
||||
case LibGambatte.CDLog_AddrType.CartRAM:
|
||||
key = "CartRAM";
|
||||
break;
|
||||
default:
|
||||
throw new InvalidOperationException("Juniper lightbulb proxy");
|
||||
}
|
||||
CDL[key][addr] |= (byte)flags;
|
||||
|
||||
_cdl[key][addr] |= (byte)flags;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
using BizHawk.Emulation.Common;
|
||||
|
||||
|
@ -40,7 +39,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
}
|
||||
|
||||
[FeatureNotImplemented]
|
||||
public void Step(StepType type) { throw new NotImplementedException(); }
|
||||
public void Step(StepType type)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
[FeatureNotImplemented]
|
||||
public int TotalExecutedCycles
|
||||
|
@ -48,21 +50,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
get { throw new NotImplementedException(); }
|
||||
}
|
||||
|
||||
public IMemoryCallbackSystem MemoryCallbacks
|
||||
{
|
||||
get { return _memorycallbacks; }
|
||||
}
|
||||
public IMemoryCallbackSystem MemoryCallbacks => _memorycallbacks;
|
||||
|
||||
private LibGambatte.MemoryCallback readcb;
|
||||
private LibGambatte.MemoryCallback writecb;
|
||||
private LibGambatte.MemoryCallback execcb;
|
||||
private LibGambatte.MemoryCallback _readcb;
|
||||
private LibGambatte.MemoryCallback _writecb;
|
||||
private LibGambatte.MemoryCallback _execcb;
|
||||
|
||||
private MemoryCallbackSystem _memorycallbacks = new MemoryCallbackSystem();
|
||||
|
||||
/// <summary>
|
||||
/// for use in dual core
|
||||
/// </summary>
|
||||
/// <param name="ics"></param>
|
||||
internal void ConnectMemoryCallbackSystem(MemoryCallbackSystem mcs)
|
||||
{
|
||||
_memorycallbacks = mcs;
|
||||
|
@ -70,9 +68,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
|
||||
private void InitMemoryCallbacks()
|
||||
{
|
||||
readcb = (addr) => MemoryCallbacks.CallReads(addr);
|
||||
writecb = (addr) => MemoryCallbacks.CallWrites(addr);
|
||||
execcb = (addr) => MemoryCallbacks.CallExecutes(addr);
|
||||
_readcb = addr => MemoryCallbacks.CallReads(addr);
|
||||
_writecb = addr => MemoryCallbacks.CallWrites(addr);
|
||||
_execcb = addr => MemoryCallbacks.CallExecutes(addr);
|
||||
_memorycallbacks.ActiveChanged += RefreshMemoryCallbacks;
|
||||
}
|
||||
|
||||
|
@ -80,9 +78,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
{
|
||||
var mcs = MemoryCallbacks;
|
||||
|
||||
LibGambatte.gambatte_setreadcallback(GambatteState, mcs.HasReads ? readcb : null);
|
||||
LibGambatte.gambatte_setwritecallback(GambatteState, mcs.HasWrites ? writecb : null);
|
||||
LibGambatte.gambatte_setexeccallback(GambatteState, mcs.HasExecutes ? execcb : null);
|
||||
LibGambatte.gambatte_setreadcallback(GambatteState, mcs.HasReads ? _readcb : null);
|
||||
LibGambatte.gambatte_setwritecallback(GambatteState, mcs.HasWrites ? _writecb : null);
|
||||
LibGambatte.gambatte_setexeccallback(GambatteState, mcs.HasExecutes ? _execcb : null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
public partial class Gameboy
|
||||
{
|
||||
private readonly List<MemoryDomain> _memoryDomains = new List<MemoryDomain>();
|
||||
internal IMemoryDomains MemoryDomains { get; set; }
|
||||
internal IMemoryDomains MemoryDomains { get; private set; }
|
||||
|
||||
private void CreateMemoryDomain(LibGambatte.MemoryAreas which, string name)
|
||||
{
|
||||
|
|
|
@ -10,9 +10,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
get
|
||||
{
|
||||
if (LibGambatte.gambatte_savesavedatalength(GambatteState) == 0)
|
||||
{
|
||||
return false;
|
||||
else
|
||||
return true; // need to wire more stuff into the core to actually know this
|
||||
}
|
||||
|
||||
return true; // need to wire more stuff into the core to actually know this
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -26,8 +28,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
LibGambatte.gambatte_savesavedata(GambatteState, ret);
|
||||
return ret;
|
||||
}
|
||||
else
|
||||
return new byte[0];
|
||||
|
||||
return new byte[0];
|
||||
}
|
||||
|
||||
public void StoreSaveRam(byte[] data)
|
||||
|
@ -46,6 +48,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
data = FixRTC(data, 40);
|
||||
break;
|
||||
}
|
||||
|
||||
LibGambatte.gambatte_loadsavedata(GambatteState, data);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
using BizHawk.Common;
|
||||
|
@ -20,9 +19,14 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
{
|
||||
_settings = o;
|
||||
if (IsCGBMode())
|
||||
{
|
||||
SetCGBColors(_settings.CGBColors);
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangeDMGColors(_settings.GBPalette);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -43,12 +47,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
|
||||
public class GambatteSettings
|
||||
{
|
||||
private static readonly int[] DefaultPalette = new[]
|
||||
{
|
||||
10798341, 8956165, 1922333, 337157,
|
||||
10798341, 8956165, 1922333, 337157,
|
||||
10798341, 8956165, 1922333, 337157
|
||||
};
|
||||
private static readonly int[] DefaultPalette =
|
||||
{
|
||||
10798341, 8956165, 1922333, 337157,
|
||||
10798341, 8956165, 1922333, 337157,
|
||||
10798341, 8956165, 1922333, 337157
|
||||
};
|
||||
|
||||
public int[] GBPalette;
|
||||
public GBColors.ColorType CGBColors;
|
||||
|
@ -106,20 +110,20 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
}
|
||||
|
||||
[JsonIgnore]
|
||||
int _RTCInitialTime;
|
||||
private int _RTCInitialTime;
|
||||
|
||||
[DisplayName("Equal Length Frames")]
|
||||
[Description("When false, emulation frames sync to vblank. Only useful for high level TASing.")]
|
||||
[DefaultValue(true)]
|
||||
public bool EqualLengthFrames
|
||||
{
|
||||
get { return _EqualLengthFrames; }
|
||||
set { _EqualLengthFrames = value; }
|
||||
get { return _equalLengthFrames; }
|
||||
set { _equalLengthFrames = value; }
|
||||
}
|
||||
|
||||
[JsonIgnore]
|
||||
[DeepEqualsIgnore]
|
||||
private bool _EqualLengthFrames;
|
||||
private bool _equalLengthFrames;
|
||||
|
||||
public GambatteSyncSettings()
|
||||
{
|
||||
|
|
|
@ -5,20 +5,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
{
|
||||
public partial class Gameboy : ISoundProvider
|
||||
{
|
||||
public bool CanProvideAsync
|
||||
{
|
||||
get { return false; }
|
||||
}
|
||||
public bool CanProvideAsync => false;
|
||||
|
||||
public void DiscardSamples()
|
||||
{
|
||||
soundoutbuffcontains = 0;
|
||||
_soundoutbuffcontains = 0;
|
||||
}
|
||||
|
||||
public void GetSamplesSync(out short[] samples, out int nsamp)
|
||||
{
|
||||
samples = soundoutbuff;
|
||||
nsamp = soundoutbuffcontains;
|
||||
samples = _soundoutbuff;
|
||||
nsamp = _soundoutbuffcontains;
|
||||
}
|
||||
|
||||
public void SetSyncMode(SyncSoundMode mode)
|
||||
|
@ -29,95 +26,90 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
}
|
||||
}
|
||||
|
||||
public SyncSoundMode SyncMode
|
||||
{
|
||||
get { return SyncSoundMode.Sync; }
|
||||
}
|
||||
public SyncSoundMode SyncMode => SyncSoundMode.Sync;
|
||||
|
||||
public void GetSamplesAsync(short[] samples)
|
||||
{
|
||||
throw new InvalidOperationException("Async mode is not supported.");
|
||||
}
|
||||
|
||||
internal bool Muted
|
||||
{
|
||||
get { return _settings.Muted; }
|
||||
}
|
||||
internal bool Muted => _settings.Muted;
|
||||
|
||||
// sample pairs before resampling
|
||||
private short[] soundbuff = new short[(35112 + 2064) * 2];
|
||||
private readonly short[] _soundbuff = new short[(35112 + 2064) * 2];
|
||||
|
||||
private int soundoutbuffcontains = 0;
|
||||
private int _soundoutbuffcontains = 0;
|
||||
|
||||
private short[] soundoutbuff = new short[2048];
|
||||
private readonly short[] _soundoutbuff = new short[2048];
|
||||
|
||||
private int latchL = 0;
|
||||
private int latchR = 0;
|
||||
private int _latchL = 0;
|
||||
private int _latchR = 0;
|
||||
|
||||
private BlipBuffer blipL, blipR;
|
||||
private uint blipAccumulate;
|
||||
private BlipBuffer _blipL, _blipR;
|
||||
private uint _blipAccumulate;
|
||||
|
||||
private void ProcessSound(int nsamp)
|
||||
{
|
||||
for (uint i = 0; i < nsamp; i++)
|
||||
{
|
||||
int curr = soundbuff[i * 2];
|
||||
int curr = _soundbuff[i * 2];
|
||||
|
||||
if (curr != latchL)
|
||||
if (curr != _latchL)
|
||||
{
|
||||
int diff = latchL - curr;
|
||||
latchL = curr;
|
||||
blipL.AddDelta(blipAccumulate, diff);
|
||||
int diff = _latchL - curr;
|
||||
_latchL = curr;
|
||||
_blipL.AddDelta(_blipAccumulate, diff);
|
||||
}
|
||||
|
||||
curr = soundbuff[i * 2 + 1];
|
||||
curr = _soundbuff[(i * 2) + 1];
|
||||
|
||||
if (curr != latchR)
|
||||
if (curr != _latchR)
|
||||
{
|
||||
int diff = latchR - curr;
|
||||
latchR = curr;
|
||||
blipR.AddDelta(blipAccumulate, diff);
|
||||
int diff = _latchR - curr;
|
||||
_latchR = curr;
|
||||
_blipR.AddDelta(_blipAccumulate, diff);
|
||||
}
|
||||
|
||||
blipAccumulate++;
|
||||
_blipAccumulate++;
|
||||
}
|
||||
}
|
||||
|
||||
private void ProcessSoundEnd()
|
||||
{
|
||||
blipL.EndFrame(blipAccumulate);
|
||||
blipR.EndFrame(blipAccumulate);
|
||||
blipAccumulate = 0;
|
||||
_blipL.EndFrame(_blipAccumulate);
|
||||
_blipR.EndFrame(_blipAccumulate);
|
||||
_blipAccumulate = 0;
|
||||
|
||||
soundoutbuffcontains = blipL.SamplesAvailable();
|
||||
if (soundoutbuffcontains != blipR.SamplesAvailable())
|
||||
_soundoutbuffcontains = _blipL.SamplesAvailable();
|
||||
if (_soundoutbuffcontains != _blipR.SamplesAvailable())
|
||||
{
|
||||
throw new InvalidOperationException("Audio processing error");
|
||||
}
|
||||
|
||||
blipL.ReadSamplesLeft(soundoutbuff, soundoutbuffcontains);
|
||||
blipR.ReadSamplesRight(soundoutbuff, soundoutbuffcontains);
|
||||
_blipL.ReadSamplesLeft(_soundoutbuff, _soundoutbuffcontains);
|
||||
_blipR.ReadSamplesRight(_soundoutbuff, _soundoutbuffcontains);
|
||||
}
|
||||
|
||||
private void InitSound()
|
||||
{
|
||||
blipL = new BlipBuffer(1024);
|
||||
blipL.SetRates(TICKSPERSECOND, 44100);
|
||||
blipR = new BlipBuffer(1024);
|
||||
blipR.SetRates(TICKSPERSECOND, 44100);
|
||||
_blipL = new BlipBuffer(1024);
|
||||
_blipL.SetRates(TICKSPERSECOND, 44100);
|
||||
_blipR = new BlipBuffer(1024);
|
||||
_blipR.SetRates(TICKSPERSECOND, 44100);
|
||||
}
|
||||
|
||||
private void DisposeSound()
|
||||
{
|
||||
if (blipL != null)
|
||||
if (_blipL != null)
|
||||
{
|
||||
blipL.Dispose();
|
||||
blipL = null;
|
||||
_blipL.Dispose();
|
||||
_blipL = null;
|
||||
}
|
||||
if (blipR != null)
|
||||
|
||||
if (_blipR != null)
|
||||
{
|
||||
blipR.Dispose();
|
||||
blipR = null;
|
||||
_blipR.Dispose();
|
||||
_blipR = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,40 +1,40 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
using BizHawk.Emulation.Common;
|
||||
|
||||
|
||||
namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
||||
{
|
||||
public partial class Gameboy : IStatable
|
||||
{
|
||||
public bool BinarySaveStatesPreferred { get { return true; } }
|
||||
public bool BinarySaveStatesPreferred => true;
|
||||
|
||||
public void SaveStateText(System.IO.TextWriter writer)
|
||||
public void SaveStateText(TextWriter writer)
|
||||
{
|
||||
var s = SaveState();
|
||||
ser.Serialize(writer, s);
|
||||
|
||||
// write extra copy of stuff we don't use
|
||||
writer.WriteLine();
|
||||
writer.WriteLine("Frame {0}", Frame);
|
||||
}
|
||||
|
||||
public void LoadStateText(System.IO.TextReader reader)
|
||||
public void LoadStateText(TextReader reader)
|
||||
{
|
||||
var s = (TextState<TextStateData>)ser.Deserialize(reader, typeof(TextState<TextStateData>));
|
||||
LoadState(s);
|
||||
}
|
||||
|
||||
public void SaveStateBinary(System.IO.BinaryWriter writer)
|
||||
public void SaveStateBinary(BinaryWriter writer)
|
||||
{
|
||||
if (!LibGambatte.gambatte_newstatesave(GambatteState, savebuff, savebuff.Length))
|
||||
if (!LibGambatte.gambatte_newstatesave(GambatteState, _savebuff, _savebuff.Length))
|
||||
{
|
||||
throw new Exception("gambatte_newstatesave() returned false");
|
||||
}
|
||||
|
||||
writer.Write(savebuff.Length);
|
||||
writer.Write(savebuff);
|
||||
writer.Write(_savebuff.Length);
|
||||
writer.Write(_savebuff);
|
||||
|
||||
// other variables
|
||||
writer.Write(IsLagFrame);
|
||||
|
@ -44,16 +44,20 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
writer.Write(_cycleCount);
|
||||
}
|
||||
|
||||
public void LoadStateBinary(System.IO.BinaryReader reader)
|
||||
public void LoadStateBinary(BinaryReader reader)
|
||||
{
|
||||
int length = reader.ReadInt32();
|
||||
if (length != savebuff.Length)
|
||||
if (length != _savebuff.Length)
|
||||
{
|
||||
throw new InvalidOperationException("Savestate buffer size mismatch!");
|
||||
}
|
||||
|
||||
reader.Read(savebuff, 0, savebuff.Length);
|
||||
reader.Read(_savebuff, 0, _savebuff.Length);
|
||||
|
||||
if (!LibGambatte.gambatte_newstateload(GambatteState, savebuff, savebuff.Length))
|
||||
if (!LibGambatte.gambatte_newstateload(GambatteState, _savebuff, _savebuff.Length))
|
||||
{
|
||||
throw new Exception("gambatte_newstateload() returned false");
|
||||
}
|
||||
|
||||
// other variables
|
||||
IsLagFrame = reader.ReadBoolean();
|
||||
|
@ -65,26 +69,29 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
|
||||
public byte[] SaveStateBinary()
|
||||
{
|
||||
MemoryStream ms = new MemoryStream(savebuff2);
|
||||
MemoryStream ms = new MemoryStream(_savebuff2);
|
||||
BinaryWriter bw = new BinaryWriter(ms);
|
||||
SaveStateBinary(bw);
|
||||
bw.Flush();
|
||||
if (ms.Position != savebuff2.Length)
|
||||
if (ms.Position != _savebuff2.Length)
|
||||
{
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
|
||||
ms.Close();
|
||||
return savebuff2;
|
||||
return _savebuff2;
|
||||
}
|
||||
|
||||
private byte[] savebuff;
|
||||
private byte[] savebuff2;
|
||||
private byte[] _savebuff;
|
||||
private byte[] _savebuff2;
|
||||
|
||||
private void NewSaveCoreSetBuff()
|
||||
{
|
||||
savebuff = new byte[LibGambatte.gambatte_newstatelen(GambatteState)];
|
||||
savebuff2 = new byte[savebuff.Length + 4 + 21];
|
||||
_savebuff = new byte[LibGambatte.gambatte_newstatelen(GambatteState)];
|
||||
_savebuff2 = new byte[_savebuff.Length + 4 + 21];
|
||||
}
|
||||
|
||||
private JsonSerializer ser = new JsonSerializer { Formatting = Formatting.Indented };
|
||||
private readonly JsonSerializer ser = new JsonSerializer { Formatting = Formatting.Indented };
|
||||
|
||||
// other data in the text state besides core
|
||||
internal class TextStateData
|
||||
|
|
|
@ -7,8 +7,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
{
|
||||
public partial class Gameboy
|
||||
{
|
||||
private ITraceable Tracer { get; set; }
|
||||
private LibGambatte.TraceCallback tracecb;
|
||||
private ITraceable Tracer { get; }
|
||||
private LibGambatte.TraceCallback _tracecb;
|
||||
|
||||
private void MakeTrace(IntPtr _s)
|
||||
{
|
||||
|
@ -20,7 +20,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
{
|
||||
Disassembly =
|
||||
NewDisassembler
|
||||
.Disassemble((ushort)s[1], (addr) => LibGambatte.gambatte_cpuread(GambatteState, addr), out unused)
|
||||
.Disassemble((ushort)s[1], addr => LibGambatte.gambatte_cpuread(GambatteState, addr), out unused)
|
||||
.PadRight(36),
|
||||
RegisterInfo =
|
||||
string.Format(
|
||||
|
@ -38,8 +38,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
|||
s[10] & 0xff,
|
||||
s[11] != 0 ? "skip" : "",
|
||||
s[12] & 0xff,
|
||||
s[13] & 0xff
|
||||
)
|
||||
s[13] & 0xff)
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,44 +1,25 @@
|
|||
using System;
|
||||
using BizHawk.Emulation.Common;
|
||||
|
||||
namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
||||
namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
|
||||
{
|
||||
public partial class Gameboy
|
||||
{
|
||||
/// <summary>
|
||||
/// stored image of most recent frame
|
||||
/// </summary>
|
||||
private int[] VideoBuffer = new int[160 * 144];
|
||||
private readonly int[] VideoBuffer = new int[160 * 144];
|
||||
|
||||
public int[] GetVideoBuffer()
|
||||
{
|
||||
return VideoBuffer;
|
||||
}
|
||||
|
||||
public int VirtualWidth
|
||||
{
|
||||
// only sgb changes this, which we don't emulate here
|
||||
get { return 160; }
|
||||
}
|
||||
public int VirtualWidth => 160; // only sgb changes this, which we don't emulate here
|
||||
|
||||
public int VirtualHeight
|
||||
{
|
||||
get { return 144; }
|
||||
}
|
||||
public int VirtualHeight => 144;
|
||||
|
||||
public int BufferWidth
|
||||
{
|
||||
get { return 160; }
|
||||
}
|
||||
public int BufferWidth => 160;
|
||||
|
||||
public int BufferHeight
|
||||
{
|
||||
get { return 144; }
|
||||
}
|
||||
public int BufferHeight => 144;
|
||||
|
||||
public int BackgroundColor
|
||||
{
|
||||
get { return 0; }
|
||||
}
|
||||
public int BackgroundColor => 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CDL/@EntryIndexedValue">CDL</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CGB/@EntryIndexedValue">CGB</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=DB/@EntryIndexedValue">DB</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=DMG/@EntryIndexedValue">DMG</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GB/@EntryIndexedValue">GB</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GBA/@EntryIndexedValue">GBA</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GBC/@EntryIndexedValue">GBC</s:String>
|
||||
|
@ -42,6 +43,7 @@
|
|||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PCECD/@EntryIndexedValue">PCECD</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PSP/@EntryIndexedValue">PSP</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PSX/@EntryIndexedValue">PSX</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RTC/@EntryIndexedValue">RTC</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SG/@EntryIndexedValue">SG</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SGB/@EntryIndexedValue">SGB</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SGX/@EntryIndexedValue">SGX</s:String>
|
||||
|
|
Loading…
Reference in New Issue