Make GB debugger not load by default when a gb game is loaded, misc cleanups gb related
This commit is contained in:
parent
d3f4da39a3
commit
8096316981
|
@ -4,8 +4,8 @@ using BizHawk.Emulation.CPUs.Z80GB;
|
||||||
|
|
||||||
namespace BizHawk.Emulation.Consoles.Gameboy
|
namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
{
|
{
|
||||||
public partial class Gameboy : IEmulator
|
public partial class Gameboy : IEmulator
|
||||||
{
|
{
|
||||||
public interface IDebuggerAPI
|
public interface IDebuggerAPI
|
||||||
{
|
{
|
||||||
void DoEvents();
|
void DoEvents();
|
||||||
|
@ -53,9 +53,9 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
|
|
||||||
public ECartType CartType;
|
public ECartType CartType;
|
||||||
public ESystemType SystemType;
|
public ESystemType SystemType;
|
||||||
|
|
||||||
public struct TCartFlags
|
public struct TCartFlags
|
||||||
{
|
{
|
||||||
public bool GBC; //cart indicates itself as GBC aware
|
public bool GBC; //cart indicates itself as GBC aware
|
||||||
public bool SGB; //cart indicates itself as SGB aware
|
public bool SGB; //cart indicates itself as SGB aware
|
||||||
}
|
}
|
||||||
|
@ -75,12 +75,12 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
return SetBit8(variable, bit, val != 0);
|
return SetBit8(variable, bit, val != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool GetBit8(byte variable, int bit)
|
static bool GetBit8(byte variable, int bit)
|
||||||
{
|
{
|
||||||
return (variable & (1 << bit)) != 0;
|
return (variable & (1 << bit)) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TRegisters
|
public class TRegisters
|
||||||
{
|
{
|
||||||
Gameboy gb;
|
Gameboy gb;
|
||||||
public TRegisters(Gameboy gb)
|
public TRegisters(Gameboy gb)
|
||||||
|
@ -89,7 +89,7 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
STAT = new TSTAT(gb);
|
STAT = new TSTAT(gb);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool BiosMapped = true;
|
public bool BiosMapped = true;
|
||||||
public class TLCDC
|
public class TLCDC
|
||||||
{
|
{
|
||||||
byte val;
|
byte val;
|
||||||
|
@ -174,9 +174,9 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
if ((val & 0x10) == 0)
|
if ((val & 0x10) == 0)
|
||||||
{
|
{
|
||||||
int ret = SetBit8(0, 0, right) | SetBit8(0, 1, left) | SetBit8(0, 2, up) | SetBit8(0, 3, down);
|
int ret = SetBit8(0, 0, right) | SetBit8(0, 1, left) | SetBit8(0, 2, up) | SetBit8(0, 3, down);
|
||||||
return (byte) (~ret);
|
return (byte)(~ret);
|
||||||
}
|
}
|
||||||
else if((val & 0x10) == 0)
|
else if ((val & 0x10) == 0)
|
||||||
{
|
{
|
||||||
int ret = SetBit8(0, 0, a) | SetBit8(0, 1, b) | SetBit8(0, 2, select) | SetBit8(0, 3, start);
|
int ret = SetBit8(0, 0, a) | SetBit8(0, 1, b) | SetBit8(0, 2, select) | SetBit8(0, 3, start);
|
||||||
return (byte)(~ret);
|
return (byte)(~ret);
|
||||||
|
@ -213,12 +213,12 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
sanity++;
|
sanity++;
|
||||||
if (sanity == 100000)
|
if (sanity == 100000)
|
||||||
{
|
{
|
||||||
if(DebuggerAPI != null) DebuggerAPI.DoEvents();
|
if (DebuggerAPI != null) DebuggerAPI.DoEvents();
|
||||||
if (DebugBreak) break;
|
if (DebugBreak) break;
|
||||||
sanity = 0;
|
sanity = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DebugBreak = false;
|
DebugBreak = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -237,7 +237,7 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DetachBios()
|
public void DetachBios()
|
||||||
{
|
{
|
||||||
Registers.BiosMapped = false;
|
Registers.BiosMapped = false;
|
||||||
Cpu.ReadMemory = ReadMemory;
|
Cpu.ReadMemory = ReadMemory;
|
||||||
|
@ -250,24 +250,24 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
|
|
||||||
public TSound Sound;
|
public TSound Sound;
|
||||||
|
|
||||||
public byte[] Rom;
|
public byte[] Rom;
|
||||||
public byte[] WRam;
|
public byte[] WRam;
|
||||||
public byte[] SRam;
|
public byte[] SRam;
|
||||||
public byte[] VRam;
|
public byte[] VRam;
|
||||||
public byte[] HRam;
|
public byte[] HRam;
|
||||||
public byte[] OAM;
|
public byte[] OAM;
|
||||||
|
|
||||||
public Z80 Cpu;
|
public Z80 Cpu;
|
||||||
public MemoryMapper Mapper;
|
public MemoryMapper Mapper;
|
||||||
|
|
||||||
public Gameboy()
|
public Gameboy()
|
||||||
{
|
{
|
||||||
CoreOutputComm = new CoreOutputComm();
|
CoreOutputComm = new CoreOutputComm();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadGame(IGame game)
|
public void LoadGame(IGame game)
|
||||||
{
|
{
|
||||||
Rom = game.GetRomData();
|
Rom = game.GetRomData();
|
||||||
|
|
||||||
//inspect mapper and GBC flags
|
//inspect mapper and GBC flags
|
||||||
CartType = (ECartType)Rom[0x0147];
|
CartType = (ECartType)Rom[0x0147];
|
||||||
|
@ -276,7 +276,7 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
CartFlags.SGB = Rom[0x0146] == 0x03;
|
CartFlags.SGB = Rom[0x0146] == 0x03;
|
||||||
|
|
||||||
HardReset();
|
HardReset();
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool BootFromBios = true;
|
public bool BootFromBios = true;
|
||||||
|
|
||||||
|
@ -333,7 +333,7 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
//we speculate that the bios unmaps itself after the first read of 0x100
|
//we speculate that the bios unmaps itself after the first read of 0x100
|
||||||
if (addr < 0x100)
|
if (addr < 0x100)
|
||||||
return Bios[addr];
|
return Bios[addr];
|
||||||
else if(addr == 0x100)
|
else if (addr == 0x100)
|
||||||
DetachBios();
|
DetachBios();
|
||||||
return ReadMemory(addr);
|
return ReadMemory(addr);
|
||||||
}
|
}
|
||||||
|
@ -365,9 +365,9 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
else return "HRAM";
|
else return "HRAM";
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte ReadMemory(ushort addr)
|
public byte ReadMemory(ushort addr)
|
||||||
{
|
{
|
||||||
if (addr < 0x8000)
|
if (addr < 0x8000)
|
||||||
return Rom[addr];
|
return Rom[addr];
|
||||||
else if (addr < 0xA000)
|
else if (addr < 0xA000)
|
||||||
return VRam[addr - 0x8000];
|
return VRam[addr - 0x8000];
|
||||||
|
@ -388,7 +388,7 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
else if (addr < 0xFFFF)
|
else if (addr < 0xFFFF)
|
||||||
return HRam[addr - 0xFF80];
|
return HRam[addr - 0xFF80];
|
||||||
else return ReadRegister(addr);
|
else return ReadRegister(addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte ReadRegister(ushort addr)
|
public byte ReadRegister(ushort addr)
|
||||||
{
|
{
|
||||||
|
@ -421,7 +421,7 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
case 0xFF14: //REG_NR14 - Sound Mode 1 register, Frequency hi (R/W)
|
case 0xFF14: //REG_NR14 - Sound Mode 1 register, Frequency hi (R/W)
|
||||||
return 0xFF;
|
return 0xFF;
|
||||||
|
|
||||||
//0xFF15 ???????????????
|
//0xFF15 ???????????????
|
||||||
|
|
||||||
case 0xFF16: //REG_NR21 - Sound Mode 2 register, Sound Length; Wave Pattern Duty (R/W)
|
case 0xFF16: //REG_NR21 - Sound Mode 2 register, Sound Length; Wave Pattern Duty (R/W)
|
||||||
return 0xFF;
|
return 0xFF;
|
||||||
|
@ -458,14 +458,22 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
return 0xFF;
|
return 0xFF;
|
||||||
case 0xFF26: //REG_NR52 - Sound on/off (R/W) (Value at reset: $F1-GB, $F0-SGB)
|
case 0xFF26: //REG_NR52 - Sound on/off (R/W) (Value at reset: $F1-GB, $F0-SGB)
|
||||||
return 0xFF;
|
return 0xFF;
|
||||||
case 0xFF30: return Sound.WavePatternRam[0x00]; case 0xFF31: return Sound.WavePatternRam[0x01];
|
case 0xFF30: return Sound.WavePatternRam[0x00];
|
||||||
case 0xFF32: return Sound.WavePatternRam[0x02]; case 0xFF33: return Sound.WavePatternRam[0x03];
|
case 0xFF31: return Sound.WavePatternRam[0x01];
|
||||||
case 0xFF34: return Sound.WavePatternRam[0x04]; case 0xFF35: return Sound.WavePatternRam[0x05];
|
case 0xFF32: return Sound.WavePatternRam[0x02];
|
||||||
case 0xFF36: return Sound.WavePatternRam[0x06]; case 0xFF37: return Sound.WavePatternRam[0x07];
|
case 0xFF33: return Sound.WavePatternRam[0x03];
|
||||||
case 0xFF38: return Sound.WavePatternRam[0x08]; case 0xFF39: return Sound.WavePatternRam[0x09];
|
case 0xFF34: return Sound.WavePatternRam[0x04];
|
||||||
case 0xFF3A: return Sound.WavePatternRam[0x0A]; case 0xFF3B: return Sound.WavePatternRam[0x0B];
|
case 0xFF35: return Sound.WavePatternRam[0x05];
|
||||||
case 0xFF3C: return Sound.WavePatternRam[0x0C]; case 0xFF3D: return Sound.WavePatternRam[0x0D];
|
case 0xFF36: return Sound.WavePatternRam[0x06];
|
||||||
case 0xFF3E: return Sound.WavePatternRam[0x0E]; case 0xFF3F: return Sound.WavePatternRam[0x0F];
|
case 0xFF37: return Sound.WavePatternRam[0x07];
|
||||||
|
case 0xFF38: return Sound.WavePatternRam[0x08];
|
||||||
|
case 0xFF39: return Sound.WavePatternRam[0x09];
|
||||||
|
case 0xFF3A: return Sound.WavePatternRam[0x0A];
|
||||||
|
case 0xFF3B: return Sound.WavePatternRam[0x0B];
|
||||||
|
case 0xFF3C: return Sound.WavePatternRam[0x0C];
|
||||||
|
case 0xFF3D: return Sound.WavePatternRam[0x0D];
|
||||||
|
case 0xFF3E: return Sound.WavePatternRam[0x0E];
|
||||||
|
case 0xFF3F: return Sound.WavePatternRam[0x0F];
|
||||||
case 0xFF40: //REG_LCDC - LCD Control (R/W) (value $91 at reset)
|
case 0xFF40: //REG_LCDC - LCD Control (R/W) (value $91 at reset)
|
||||||
return Registers.LCDC.Read();
|
return Registers.LCDC.Read();
|
||||||
case 0xFF41: //REG_STAT - LCDC Status (R/W)
|
case 0xFF41: //REG_STAT - LCDC Status (R/W)
|
||||||
|
@ -566,14 +574,22 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
return;
|
return;
|
||||||
case 0xFF26: //REG_NR52 - Sound on/off (R/W) (Value at reset: $F1-GB, $F0-SGB)
|
case 0xFF26: //REG_NR52 - Sound on/off (R/W) (Value at reset: $F1-GB, $F0-SGB)
|
||||||
return;
|
return;
|
||||||
case 0xFF30: Sound.WavePatternRam[0x00] = value; break; case 0xFF31: Sound.WavePatternRam[0x01] = value; break;
|
case 0xFF30: Sound.WavePatternRam[0x00] = value; break;
|
||||||
case 0xFF32: Sound.WavePatternRam[0x02] = value; break; case 0xFF33: Sound.WavePatternRam[0x03] = value; break;
|
case 0xFF31: Sound.WavePatternRam[0x01] = value; break;
|
||||||
case 0xFF34: Sound.WavePatternRam[0x04] = value; break; case 0xFF35: Sound.WavePatternRam[0x05] = value; break;
|
case 0xFF32: Sound.WavePatternRam[0x02] = value; break;
|
||||||
case 0xFF36: Sound.WavePatternRam[0x06] = value; break; case 0xFF37: Sound.WavePatternRam[0x07] = value; break;
|
case 0xFF33: Sound.WavePatternRam[0x03] = value; break;
|
||||||
case 0xFF38: Sound.WavePatternRam[0x08] = value; break; case 0xFF39: Sound.WavePatternRam[0x09] = value; break;
|
case 0xFF34: Sound.WavePatternRam[0x04] = value; break;
|
||||||
case 0xFF3A: Sound.WavePatternRam[0x0A] = value; break; case 0xFF3B: Sound.WavePatternRam[0x0B] = value; break;
|
case 0xFF35: Sound.WavePatternRam[0x05] = value; break;
|
||||||
case 0xFF3C: Sound.WavePatternRam[0x0C] = value; break; case 0xFF3D: Sound.WavePatternRam[0x0D] = value; break;
|
case 0xFF36: Sound.WavePatternRam[0x06] = value; break;
|
||||||
case 0xFF3E: Sound.WavePatternRam[0x0E] = value; break; case 0xFF3F: Sound.WavePatternRam[0x0F] = value; break;
|
case 0xFF37: Sound.WavePatternRam[0x07] = value; break;
|
||||||
|
case 0xFF38: Sound.WavePatternRam[0x08] = value; break;
|
||||||
|
case 0xFF39: Sound.WavePatternRam[0x09] = value; break;
|
||||||
|
case 0xFF3A: Sound.WavePatternRam[0x0A] = value; break;
|
||||||
|
case 0xFF3B: Sound.WavePatternRam[0x0B] = value; break;
|
||||||
|
case 0xFF3C: Sound.WavePatternRam[0x0C] = value; break;
|
||||||
|
case 0xFF3D: Sound.WavePatternRam[0x0D] = value; break;
|
||||||
|
case 0xFF3E: Sound.WavePatternRam[0x0E] = value; break;
|
||||||
|
case 0xFF3F: Sound.WavePatternRam[0x0F] = value; break;
|
||||||
case 0xFF40: //REG_LCDC - LCD Control (R/W) (value $91 at reset)
|
case 0xFF40: //REG_LCDC - LCD Control (R/W) (value $91 at reset)
|
||||||
Registers.LCDC.Write(value);
|
Registers.LCDC.Write(value);
|
||||||
break;
|
break;
|
||||||
|
@ -608,8 +624,8 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void WriteMemory(ushort addr, byte value)
|
public void WriteMemory(ushort addr, byte value)
|
||||||
{
|
{
|
||||||
if (addr < 0x8000)
|
if (addr < 0x8000)
|
||||||
return;
|
return;
|
||||||
else if (addr < 0xA000)
|
else if (addr < 0xA000)
|
||||||
|
@ -627,80 +643,81 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
else if (addr < 0xFF00)
|
else if (addr < 0xFF00)
|
||||||
return;
|
return;
|
||||||
else if (addr < 0xFF80)
|
else if (addr < 0xFF80)
|
||||||
WriteRegister(addr,value);
|
WriteRegister(addr, value);
|
||||||
else if (addr < 0xFFFF)
|
else if (addr < 0xFFFF)
|
||||||
HRam[addr - 0xFF80] = value;
|
HRam[addr - 0xFF80] = value;
|
||||||
else WriteRegister(addr, value);
|
else WriteRegister(addr, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void FrameAdvance(bool render)
|
public void FrameAdvance(bool render)
|
||||||
{
|
{
|
||||||
//Cpu.ExecuteCycles(4096);
|
Cpu.ExecuteCycles(4096);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public CoreInputComm CoreInputComm { get; set; }
|
public CoreInputComm CoreInputComm { get; set; }
|
||||||
public CoreOutputComm CoreOutputComm { get; private set; }
|
public CoreOutputComm CoreOutputComm { get; private set; }
|
||||||
|
|
||||||
public IVideoProvider VideoProvider
|
public IVideoProvider VideoProvider
|
||||||
{
|
{
|
||||||
get { return new NullEmulator(); }
|
get { return new NullEmulator(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public ISoundProvider SoundProvider
|
public ISoundProvider SoundProvider
|
||||||
{
|
{
|
||||||
get { return new NullEmulator(); }
|
get { return new NullEmulator(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public int Frame
|
public int Frame
|
||||||
{
|
{
|
||||||
get { throw new NotImplementedException(); }
|
get { return 0; }
|
||||||
}
|
//get { throw new NotImplementedException(); }
|
||||||
|
}
|
||||||
|
|
||||||
public int LagCount { get { return -1; } set { return; } } //TODO: implement
|
public int LagCount { get { return -1; } set { return; } } //TODO: implement
|
||||||
public bool IsLagFrame { get { return false; } } //TODO: implement
|
public bool IsLagFrame { get { return false; } } //TODO: implement
|
||||||
|
|
||||||
public byte[] SaveRam
|
public byte[] SaveRam
|
||||||
{
|
{
|
||||||
get { throw new NotImplementedException(); }
|
get { throw new NotImplementedException(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool SaveRamModified
|
public bool SaveRamModified
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SaveStateText(System.IO.TextWriter writer)
|
}
|
||||||
{
|
}
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void LoadStateText(System.IO.TextReader reader)
|
public void SaveStateText(System.IO.TextWriter writer)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SaveStateBinary(System.IO.BinaryWriter writer)
|
public void LoadStateText(System.IO.TextReader reader)
|
||||||
{
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadStateBinary(System.IO.BinaryReader reader)
|
public void SaveStateBinary(System.IO.BinaryWriter writer)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public byte[] SaveStateBinary()
|
}
|
||||||
{
|
|
||||||
|
public void LoadStateBinary(System.IO.BinaryReader reader)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] SaveStateBinary()
|
||||||
|
{
|
||||||
return new byte[0];
|
return new byte[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RenderOBJLine(int line, byte[] output, bool limit)
|
public void RenderOBJLine(int line, byte[] output, bool limit)
|
||||||
{
|
{
|
||||||
|
@ -723,10 +740,10 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
for (int i = sprites.Count - 1; i >= 0; i--)
|
for (int i = sprites.Count - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
int s = sprites[i];
|
int s = sprites[i];
|
||||||
int y = OAM[s*4 + 0];
|
int y = OAM[s * 4 + 0];
|
||||||
int x = OAM[s*4 + 1];
|
int x = OAM[s * 4 + 1];
|
||||||
int pat = OAM[s*4 + 2];
|
int pat = OAM[s * 4 + 2];
|
||||||
byte flags = OAM[s*4 + 3];
|
byte flags = OAM[s * 4 + 3];
|
||||||
bool priority = GetBit8(flags, 7);
|
bool priority = GetBit8(flags, 7);
|
||||||
bool yflip = GetBit8(flags, 6);
|
bool yflip = GetBit8(flags, 6);
|
||||||
bool xflip = GetBit8(flags, 5);
|
bool xflip = GetBit8(flags, 5);
|
||||||
|
@ -736,7 +753,7 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
x -= 8;
|
x -= 8;
|
||||||
|
|
||||||
int sprline = line - y;
|
int sprline = line - y;
|
||||||
if(yflip)
|
if (yflip)
|
||||||
sprline = height - sprline - 1;
|
sprline = height - sprline - 1;
|
||||||
|
|
||||||
if (height == 16) pat = ~1;
|
if (height == 16) pat = ~1;
|
||||||
|
@ -770,7 +787,7 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
lobits &= 1;
|
lobits &= 1;
|
||||||
hibits &= 1;
|
hibits &= 1;
|
||||||
int pixel = lobits | (hibits << 1);
|
int pixel = lobits | (hibits << 1);
|
||||||
output[x] = (byte) pixel;
|
output[x] = (byte)pixel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -808,7 +825,7 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RenderBGLine(int line, byte[] output, bool scroll)
|
public void RenderBGLine(int line, byte[] output, bool scroll)
|
||||||
{
|
{
|
||||||
ushort tilemap = Registers.LCDC.BgTileMapAddr;
|
ushort tilemap = Registers.LCDC.BgTileMapAddr;
|
||||||
ushort tiledata = Registers.LCDC.TileDataAddr;
|
ushort tiledata = Registers.LCDC.TileDataAddr;
|
||||||
|
@ -816,7 +833,7 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
int tileAdjust = (Registers.LCDC.TileData == TRegisters.TLCDC.ETileData.Region_8800_97FF ? 128 : 0);
|
int tileAdjust = (Registers.LCDC.TileData == TRegisters.TLCDC.ETileData.Region_8800_97FF ? 128 : 0);
|
||||||
|
|
||||||
int py = line;
|
int py = line;
|
||||||
if(scroll) line += Registers.SCY;
|
if (scroll) line += Registers.SCY;
|
||||||
py &= 0xFF;
|
py &= 0xFF;
|
||||||
int ty = py >> 3;
|
int ty = py >> 3;
|
||||||
int tyr = py & 7;
|
int tyr = py & 7;
|
||||||
|
@ -825,7 +842,7 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
for (int x = 0; x < 160; x++)
|
for (int x = 0; x < 160; x++)
|
||||||
{
|
{
|
||||||
int px = x;
|
int px = x;
|
||||||
if(scroll) px += Registers.SCX;
|
if (scroll) px += Registers.SCX;
|
||||||
px &= 0xFF;
|
px &= 0xFF;
|
||||||
int tx = px >> 3;
|
int tx = px >> 3;
|
||||||
int txr = px & 7;
|
int txr = px & 7;
|
||||||
|
@ -834,8 +851,8 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
int tileNum = ReadMemory((ushort)tileAddr);
|
int tileNum = ReadMemory((ushort)tileAddr);
|
||||||
tileNum = (tileNum + tileAdjust) & 0xFF;
|
tileNum = (tileNum + tileAdjust) & 0xFF;
|
||||||
ushort patternAddr = (ushort)(tiledata + (tileNum << 4));
|
ushort patternAddr = (ushort)(tiledata + (tileNum << 4));
|
||||||
patternAddr += (ushort)(tyr<<1);
|
patternAddr += (ushort)(tyr << 1);
|
||||||
|
|
||||||
int lobits = ReadMemory(patternAddr);
|
int lobits = ReadMemory(patternAddr);
|
||||||
patternAddr += 1;
|
patternAddr += 1;
|
||||||
int hibits = ReadMemory(patternAddr);
|
int hibits = ReadMemory(patternAddr);
|
||||||
|
@ -849,12 +866,12 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool DeterministicEmulation { get; set; }
|
public bool DeterministicEmulation { get; set; }
|
||||||
public string SystemId { get { return "GB"; } }
|
public string SystemId { get { return "GB"; } }
|
||||||
|
|
||||||
public IList<MemoryDomain> MemoryDomains { get { throw new NotImplementedException(); } }
|
public IList<MemoryDomain> MemoryDomains { get { throw new NotImplementedException(); } }
|
||||||
public MemoryDomain MainMemory { get { throw new NotImplementedException(); } }
|
public MemoryDomain MainMemory { get { throw new NotImplementedException(); } }
|
||||||
|
|
||||||
public void Dispose() {}
|
public void Dispose() { }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,27 +1,17 @@
|
||||||
namespace BizHawk.Emulation.Consoles.Gameboy
|
namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
{
|
{
|
||||||
public partial class Gameboy
|
public partial class Gameboy
|
||||||
{
|
{
|
||||||
public static readonly ControllerDefinition GbController = new ControllerDefinition
|
public static readonly ControllerDefinition GbController = new ControllerDefinition
|
||||||
{
|
{
|
||||||
Name = "Gameboy Controller",
|
Name = "Gameboy Controller",
|
||||||
BoolButtons =
|
BoolButtons =
|
||||||
{
|
{
|
||||||
"Up", "Down", "Left", "Right", "A", "B", "Select", "Start"
|
"Up", "Down", "Left", "Right", "A", "B", "Select", "Start"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
public void SetControllersAsMnemonic(string mnemonic)
|
public ControllerDefinition ControllerDefinition { get { return GbController; } }
|
||||||
{
|
public IController Controller { get; set; }
|
||||||
//TODO
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public string GetControllersAsMnemonic()
|
|
||||||
{
|
|
||||||
return "|........|0|";
|
|
||||||
}
|
|
||||||
|
|
||||||
public ControllerDefinition ControllerDefinition { get { return GbController; } }
|
|
||||||
public IController Controller { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,79 +1,79 @@
|
||||||
namespace BizHawk.Emulation.Consoles.Sega
|
namespace BizHawk.Emulation.Consoles.Sega
|
||||||
{
|
{
|
||||||
public partial class SMS
|
public partial class SMS
|
||||||
{
|
{
|
||||||
public static readonly ControllerDefinition SmsController = new ControllerDefinition
|
public static readonly ControllerDefinition SmsController = new ControllerDefinition
|
||||||
{
|
{
|
||||||
Name = "SMS Controller",
|
Name = "SMS Controller",
|
||||||
BoolButtons =
|
BoolButtons =
|
||||||
{
|
{
|
||||||
"Reset", "Pause",
|
"Reset", "Pause",
|
||||||
"P1 Up", "P1 Down", "P1 Left", "P1 Right", "P1 B1", "P1 B2",
|
"P1 Up", "P1 Down", "P1 Left", "P1 Right", "P1 B1", "P1 B2",
|
||||||
"P2 Up", "P2 Down", "P2 Left", "P2 Right", "P2 B1", "P2 B2"
|
"P2 Up", "P2 Down", "P2 Left", "P2 Right", "P2 B1", "P2 B2"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
public ControllerDefinition ControllerDefinition { get { return SmsController; } }
|
public ControllerDefinition ControllerDefinition { get { return SmsController; } }
|
||||||
public IController Controller { get; set; }
|
public IController Controller { get; set; }
|
||||||
|
|
||||||
private byte ReadControls1()
|
private byte ReadControls1()
|
||||||
{
|
{
|
||||||
lagged = false;
|
lagged = false;
|
||||||
byte value = 0xFF;
|
byte value = 0xFF;
|
||||||
|
|
||||||
if (Controller["P1 Up"]) value &= 0xFE;
|
if (Controller["P1 Up"]) value &= 0xFE;
|
||||||
if (Controller["P1 Down"]) value &= 0xFD;
|
if (Controller["P1 Down"]) value &= 0xFD;
|
||||||
if (Controller["P1 Left"]) value &= 0xFB;
|
if (Controller["P1 Left"]) value &= 0xFB;
|
||||||
if (Controller["P1 Right"]) value &= 0xF7;
|
if (Controller["P1 Right"]) value &= 0xF7;
|
||||||
if (Controller["P1 B1"]) value &= 0xEF;
|
if (Controller["P1 B1"]) value &= 0xEF;
|
||||||
if (Controller["P1 B2"]) value &= 0xDF;
|
if (Controller["P1 B2"]) value &= 0xDF;
|
||||||
|
|
||||||
if (Controller["P2 Up"]) value &= 0xBF;
|
if (Controller["P2 Up"]) value &= 0xBF;
|
||||||
if (Controller["P2 Down"]) value &= 0x7F;
|
if (Controller["P2 Down"]) value &= 0x7F;
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
private byte ReadControls2()
|
private byte ReadControls2()
|
||||||
{
|
{
|
||||||
lagged = false;
|
lagged = false;
|
||||||
byte value = 0xFF;
|
byte value = 0xFF;
|
||||||
|
|
||||||
if (Controller["P2 Left"]) value &= 0xFE;
|
if (Controller["P2 Left"]) value &= 0xFE;
|
||||||
if (Controller["P2 Right"]) value &= 0xFD;
|
if (Controller["P2 Right"]) value &= 0xFD;
|
||||||
if (Controller["P2 B1"]) value &= 0xFB;
|
if (Controller["P2 B1"]) value &= 0xFB;
|
||||||
if (Controller["P2 B2"]) value &= 0xF7;
|
if (Controller["P2 B2"]) value &= 0xF7;
|
||||||
|
|
||||||
if (Controller["Reset"]) value &= 0xEF;
|
if (Controller["Reset"]) value &= 0xEF;
|
||||||
|
|
||||||
if ((Port3F & 0x0F) == 5)
|
if ((Port3F & 0x0F) == 5)
|
||||||
{
|
{
|
||||||
if (region == "Japan")
|
if (region == "Japan")
|
||||||
{
|
{
|
||||||
value &= 0x3F;
|
value &= 0x3F;
|
||||||
}
|
}
|
||||||
else // US / Europe
|
else // US / Europe
|
||||||
{
|
{
|
||||||
if (Port3F >> 4 == 0x0F)
|
if (Port3F >> 4 == 0x0F)
|
||||||
value |= 0xC0;
|
value |= 0xC0;
|
||||||
else
|
else
|
||||||
value &= 0x3F;
|
value &= 0x3F;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
private byte ReadPort0()
|
private byte ReadPort0()
|
||||||
{
|
{
|
||||||
if (IsGameGear == false)
|
if (IsGameGear == false)
|
||||||
return 0xFF;
|
return 0xFF;
|
||||||
byte value = 0xFF;
|
byte value = 0xFF;
|
||||||
if (Controller["Pause"])
|
if (Controller["Pause"])
|
||||||
value ^= 0x80;
|
value ^= 0x80;
|
||||||
if (Region == "US")
|
if (Region == "US")
|
||||||
value ^= 0x40;
|
value ^= 0x40;
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -234,6 +234,10 @@
|
||||||
public int NESBackgroundColor = 0;
|
public int NESBackgroundColor = 0;
|
||||||
public string NESPaletteFile = "";
|
public string NESPaletteFile = "";
|
||||||
|
|
||||||
|
//GB Debugger settings
|
||||||
|
public bool AutoloadGBDebugger = false;
|
||||||
|
public bool GBDebuggerSaveWindowPosition = true;
|
||||||
|
|
||||||
// Cheats Dialog
|
// Cheats Dialog
|
||||||
public bool AutoLoadCheats = false;
|
public bool AutoLoadCheats = false;
|
||||||
public bool CheatsSaveWindowPosition = true;
|
public bool CheatsSaveWindowPosition = true;
|
||||||
|
|
|
@ -57,6 +57,7 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
this.label12 = new System.Windows.Forms.Label();
|
this.label12 = new System.Windows.Forms.Label();
|
||||||
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
|
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
|
||||||
this.vScrollBar1 = new System.Windows.Forms.VScrollBar();
|
this.vScrollBar1 = new System.Windows.Forms.VScrollBar();
|
||||||
|
this.viewDisassembly = new BizHawk.Core.ViewportPanel();
|
||||||
this.btnSeekPC = new System.Windows.Forms.Button();
|
this.btnSeekPC = new System.Windows.Forms.Button();
|
||||||
this.btnSeekUser = new System.Windows.Forms.Button();
|
this.btnSeekUser = new System.Windows.Forms.Button();
|
||||||
this.txtSeekUser = new System.Windows.Forms.TextBox();
|
this.txtSeekUser = new System.Windows.Forms.TextBox();
|
||||||
|
@ -74,22 +75,28 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
this.txtLine = new System.Windows.Forms.TextBox();
|
this.txtLine = new System.Windows.Forms.TextBox();
|
||||||
this.txtDot = new System.Windows.Forms.TextBox();
|
this.txtDot = new System.Windows.Forms.TextBox();
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
|
this.panelMemory = new BizHawk.Core.ScrollableViewportPanel();
|
||||||
this.checkViewBg = new System.Windows.Forms.CheckBox();
|
this.checkViewBg = new System.Windows.Forms.CheckBox();
|
||||||
this.checkViewObj = new System.Windows.Forms.CheckBox();
|
this.checkViewObj = new System.Windows.Forms.CheckBox();
|
||||||
this.label7 = new System.Windows.Forms.Label();
|
this.label7 = new System.Windows.Forms.Label();
|
||||||
this.label16 = new System.Windows.Forms.Label();
|
this.label16 = new System.Windows.Forms.Label();
|
||||||
this.checkViewObjNoLimit = new System.Windows.Forms.CheckBox();
|
this.checkViewObjNoLimit = new System.Windows.Forms.CheckBox();
|
||||||
this.lblInputActive = new System.Windows.Forms.Label();
|
this.lblInputActive = new System.Windows.Forms.Label();
|
||||||
this.viewTiles0x9000 = new ViewportPanel();
|
this.viewTiles0x9000 = new BizHawk.Core.ViewportPanel();
|
||||||
this.viewTiles0x8000 = new ViewportPanel();
|
this.viewTiles0x8000 = new BizHawk.Core.ViewportPanel();
|
||||||
this.panelMemory = new ScrollableViewportPanel();
|
this.viewBG = new BizHawk.Core.ViewportPanel();
|
||||||
this.viewDisassembly = new ViewportPanel();
|
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
|
||||||
this.viewBG = new ViewportPanel();
|
this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.autoloadToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.saveWindowPositionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.restoreWindowSizeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.groupBox1.SuspendLayout();
|
this.groupBox1.SuspendLayout();
|
||||||
this.tableLayoutPanel1.SuspendLayout();
|
this.tableLayoutPanel1.SuspendLayout();
|
||||||
this.tableLayoutPanel2.SuspendLayout();
|
this.tableLayoutPanel2.SuspendLayout();
|
||||||
this.menuContextBreakpoints.SuspendLayout();
|
this.menuContextBreakpoints.SuspendLayout();
|
||||||
this.panel1.SuspendLayout();
|
this.panel1.SuspendLayout();
|
||||||
|
this.menuStrip1.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// btnRun
|
// btnRun
|
||||||
|
@ -372,6 +379,15 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
this.vScrollBar1.TabIndex = 20;
|
this.vScrollBar1.TabIndex = 20;
|
||||||
this.vScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.vScrollBar1_Scroll);
|
this.vScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.vScrollBar1_Scroll);
|
||||||
//
|
//
|
||||||
|
// viewDisassembly
|
||||||
|
//
|
||||||
|
this.viewDisassembly.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.viewDisassembly.Location = new System.Drawing.Point(3, 3);
|
||||||
|
this.viewDisassembly.Name = "viewDisassembly";
|
||||||
|
this.viewDisassembly.Size = new System.Drawing.Size(328, 199);
|
||||||
|
this.viewDisassembly.TabIndex = 0;
|
||||||
|
this.viewDisassembly.Paint += new System.Windows.Forms.PaintEventHandler(this.viewDisassembly_Paint);
|
||||||
|
//
|
||||||
// btnSeekPC
|
// btnSeekPC
|
||||||
//
|
//
|
||||||
this.btnSeekPC.Location = new System.Drawing.Point(489, 100);
|
this.btnSeekPC.Location = new System.Drawing.Point(489, 100);
|
||||||
|
@ -405,7 +421,7 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
//
|
//
|
||||||
this.listBreakpoints.ContextMenuStrip = this.menuContextBreakpoints;
|
this.listBreakpoints.ContextMenuStrip = this.menuContextBreakpoints;
|
||||||
this.listBreakpoints.FormattingEnabled = true;
|
this.listBreakpoints.FormattingEnabled = true;
|
||||||
this.listBreakpoints.Location = new System.Drawing.Point(915, 245);
|
this.listBreakpoints.Location = new System.Drawing.Point(564, 386);
|
||||||
this.listBreakpoints.Name = "listBreakpoints";
|
this.listBreakpoints.Name = "listBreakpoints";
|
||||||
this.listBreakpoints.Size = new System.Drawing.Size(120, 95);
|
this.listBreakpoints.Size = new System.Drawing.Size(120, 95);
|
||||||
this.listBreakpoints.TabIndex = 25;
|
this.listBreakpoints.TabIndex = 25;
|
||||||
|
@ -434,7 +450,7 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
// label10
|
// label10
|
||||||
//
|
//
|
||||||
this.label10.AutoSize = true;
|
this.label10.AutoSize = true;
|
||||||
this.label10.Location = new System.Drawing.Point(912, 227);
|
this.label10.Location = new System.Drawing.Point(561, 370);
|
||||||
this.label10.Name = "label10";
|
this.label10.Name = "label10";
|
||||||
this.label10.Size = new System.Drawing.Size(63, 13);
|
this.label10.Size = new System.Drawing.Size(63, 13);
|
||||||
this.label10.TabIndex = 26;
|
this.label10.TabIndex = 26;
|
||||||
|
@ -521,6 +537,19 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
this.panel1.Size = new System.Drawing.Size(545, 181);
|
this.panel1.Size = new System.Drawing.Size(545, 181);
|
||||||
this.panel1.TabIndex = 38;
|
this.panel1.TabIndex = 38;
|
||||||
//
|
//
|
||||||
|
// panelMemory
|
||||||
|
//
|
||||||
|
this.panelMemory.AutoSize = true;
|
||||||
|
this.panelMemory.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.panelMemory.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.panelMemory.Name = "panelMemory";
|
||||||
|
this.panelMemory.ScrollLargeChange = 10;
|
||||||
|
this.panelMemory.ScrollMax = 4095;
|
||||||
|
this.panelMemory.Size = new System.Drawing.Size(541, 177);
|
||||||
|
this.panelMemory.TabIndex = 37;
|
||||||
|
this.panelMemory.Paint += new System.Windows.Forms.PaintEventHandler(this.panelMemory_Paint);
|
||||||
|
this.panelMemory.Scroll += new System.Windows.Forms.ScrollEventHandler(this.panelMemory_Scroll);
|
||||||
|
//
|
||||||
// checkViewBg
|
// checkViewBg
|
||||||
//
|
//
|
||||||
this.checkViewBg.AutoSize = true;
|
this.checkViewBg.AutoSize = true;
|
||||||
|
@ -603,28 +632,6 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
this.viewTiles0x8000.TabIndex = 41;
|
this.viewTiles0x8000.TabIndex = 41;
|
||||||
this.viewTiles0x8000.Paint += new System.Windows.Forms.PaintEventHandler(this.viewTiles0x8000_Paint);
|
this.viewTiles0x8000.Paint += new System.Windows.Forms.PaintEventHandler(this.viewTiles0x8000_Paint);
|
||||||
//
|
//
|
||||||
// panelMemory
|
|
||||||
//
|
|
||||||
this.panelMemory.AutoSize = true;
|
|
||||||
this.panelMemory.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.panelMemory.Location = new System.Drawing.Point(0, 0);
|
|
||||||
this.panelMemory.Name = "panelMemory";
|
|
||||||
this.panelMemory.ScrollLargeChange = 10;
|
|
||||||
this.panelMemory.ScrollMax = 4095;
|
|
||||||
this.panelMemory.Size = new System.Drawing.Size(541, 177);
|
|
||||||
this.panelMemory.TabIndex = 37;
|
|
||||||
this.panelMemory.Paint += new System.Windows.Forms.PaintEventHandler(this.panelMemory_Paint);
|
|
||||||
this.panelMemory.Scroll += new System.Windows.Forms.ScrollEventHandler(this.panelMemory_Scroll);
|
|
||||||
//
|
|
||||||
// viewDisassembly
|
|
||||||
//
|
|
||||||
this.viewDisassembly.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.viewDisassembly.Location = new System.Drawing.Point(3, 3);
|
|
||||||
this.viewDisassembly.Name = "viewDisassembly";
|
|
||||||
this.viewDisassembly.Size = new System.Drawing.Size(328, 199);
|
|
||||||
this.viewDisassembly.TabIndex = 0;
|
|
||||||
this.viewDisassembly.Paint += new System.Windows.Forms.PaintEventHandler(this.viewDisassembly_Paint);
|
|
||||||
//
|
|
||||||
// viewBG
|
// viewBG
|
||||||
//
|
//
|
||||||
this.viewBG.Location = new System.Drawing.Point(564, 27);
|
this.viewBG.Location = new System.Drawing.Point(564, 27);
|
||||||
|
@ -638,11 +645,58 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
this.viewBG.Enter += new System.EventHandler(this.viewBG_Enter);
|
this.viewBG.Enter += new System.EventHandler(this.viewBG_Enter);
|
||||||
this.viewBG.KeyDown += new System.Windows.Forms.KeyEventHandler(this.viewBG_KeyDown);
|
this.viewBG.KeyDown += new System.Windows.Forms.KeyEventHandler(this.viewBG_KeyDown);
|
||||||
//
|
//
|
||||||
|
// menuStrip1
|
||||||
|
//
|
||||||
|
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.settingsToolStripMenuItem});
|
||||||
|
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.menuStrip1.Name = "menuStrip1";
|
||||||
|
this.menuStrip1.Size = new System.Drawing.Size(867, 24);
|
||||||
|
this.menuStrip1.TabIndex = 47;
|
||||||
|
this.menuStrip1.Text = "menuStrip1";
|
||||||
|
//
|
||||||
|
// settingsToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.settingsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.autoloadToolStripMenuItem,
|
||||||
|
this.saveWindowPositionToolStripMenuItem,
|
||||||
|
this.toolStripSeparator1,
|
||||||
|
this.restoreWindowSizeToolStripMenuItem});
|
||||||
|
this.settingsToolStripMenuItem.Name = "settingsToolStripMenuItem";
|
||||||
|
this.settingsToolStripMenuItem.Size = new System.Drawing.Size(58, 20);
|
||||||
|
this.settingsToolStripMenuItem.Text = "&Settings";
|
||||||
|
this.settingsToolStripMenuItem.DropDownOpened += new System.EventHandler(this.settingsToolStripMenuItem_DropDownOpened);
|
||||||
|
//
|
||||||
|
// autoloadToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.autoloadToolStripMenuItem.Name = "autoloadToolStripMenuItem";
|
||||||
|
this.autoloadToolStripMenuItem.Size = new System.Drawing.Size(190, 22);
|
||||||
|
this.autoloadToolStripMenuItem.Text = "Autoload";
|
||||||
|
this.autoloadToolStripMenuItem.Click += new System.EventHandler(this.autoloadToolStripMenuItem_Click);
|
||||||
|
//
|
||||||
|
// saveWindowPositionToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.saveWindowPositionToolStripMenuItem.Name = "saveWindowPositionToolStripMenuItem";
|
||||||
|
this.saveWindowPositionToolStripMenuItem.Size = new System.Drawing.Size(190, 22);
|
||||||
|
this.saveWindowPositionToolStripMenuItem.Text = "Save Window Position";
|
||||||
|
//
|
||||||
|
// restoreWindowSizeToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.restoreWindowSizeToolStripMenuItem.Name = "restoreWindowSizeToolStripMenuItem";
|
||||||
|
this.restoreWindowSizeToolStripMenuItem.Size = new System.Drawing.Size(190, 22);
|
||||||
|
this.restoreWindowSizeToolStripMenuItem.Text = "Restore Window Size";
|
||||||
|
//
|
||||||
|
// toolStripSeparator1
|
||||||
|
//
|
||||||
|
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||||
|
this.toolStripSeparator1.Size = new System.Drawing.Size(187, 6);
|
||||||
|
//
|
||||||
// Debugger
|
// Debugger
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(1065, 483);
|
this.ClientSize = new System.Drawing.Size(867, 483);
|
||||||
|
this.Controls.Add(this.menuStrip1);
|
||||||
this.Controls.Add(this.lblInputActive);
|
this.Controls.Add(this.lblInputActive);
|
||||||
this.Controls.Add(this.checkViewObjNoLimit);
|
this.Controls.Add(this.checkViewObjNoLimit);
|
||||||
this.Controls.Add(this.viewTiles0x9000);
|
this.Controls.Add(this.viewTiles0x9000);
|
||||||
|
@ -659,10 +713,10 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
this.Controls.Add(this.label14);
|
this.Controls.Add(this.label14);
|
||||||
this.Controls.Add(this.btnBreak);
|
this.Controls.Add(this.btnBreak);
|
||||||
this.Controls.Add(this.txtFrame);
|
this.Controls.Add(this.txtFrame);
|
||||||
this.Controls.Add(this.label10);
|
|
||||||
this.Controls.Add(this.tableLayoutPanel2);
|
this.Controls.Add(this.tableLayoutPanel2);
|
||||||
this.Controls.Add(this.listBreakpoints);
|
this.Controls.Add(this.label10);
|
||||||
this.Controls.Add(this.txtSeekUser);
|
this.Controls.Add(this.txtSeekUser);
|
||||||
|
this.Controls.Add(this.listBreakpoints);
|
||||||
this.Controls.Add(this.viewBG);
|
this.Controls.Add(this.viewBG);
|
||||||
this.Controls.Add(this.groupBox1);
|
this.Controls.Add(this.groupBox1);
|
||||||
this.Controls.Add(this.btnSeekUser);
|
this.Controls.Add(this.btnSeekUser);
|
||||||
|
@ -682,8 +736,10 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
this.Controls.Add(this.btnRun);
|
this.Controls.Add(this.btnRun);
|
||||||
this.Controls.Add(this.label1);
|
this.Controls.Add(this.label1);
|
||||||
this.KeyPreview = true;
|
this.KeyPreview = true;
|
||||||
|
this.MainMenuStrip = this.menuStrip1;
|
||||||
this.Name = "Debugger";
|
this.Name = "Debugger";
|
||||||
this.Text = "Debugger";
|
this.Text = "Game Boy Debugger";
|
||||||
|
this.Load += new System.EventHandler(this.Debugger_Load);
|
||||||
this.groupBox1.ResumeLayout(false);
|
this.groupBox1.ResumeLayout(false);
|
||||||
this.groupBox1.PerformLayout();
|
this.groupBox1.PerformLayout();
|
||||||
this.tableLayoutPanel1.ResumeLayout(false);
|
this.tableLayoutPanel1.ResumeLayout(false);
|
||||||
|
@ -692,6 +748,8 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
this.menuContextBreakpoints.ResumeLayout(false);
|
this.menuContextBreakpoints.ResumeLayout(false);
|
||||||
this.panel1.ResumeLayout(false);
|
this.panel1.ResumeLayout(false);
|
||||||
this.panel1.PerformLayout();
|
this.panel1.PerformLayout();
|
||||||
|
this.menuStrip1.ResumeLayout(false);
|
||||||
|
this.menuStrip1.PerformLayout();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
this.PerformLayout();
|
this.PerformLayout();
|
||||||
|
|
||||||
|
@ -753,6 +811,12 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
private System.Windows.Forms.Label label16;
|
private System.Windows.Forms.Label label16;
|
||||||
private System.Windows.Forms.CheckBox checkViewObjNoLimit;
|
private System.Windows.Forms.CheckBox checkViewObjNoLimit;
|
||||||
private System.Windows.Forms.Label lblInputActive;
|
private System.Windows.Forms.Label lblInputActive;
|
||||||
|
private System.Windows.Forms.MenuStrip menuStrip1;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem settingsToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem autoloadToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem saveWindowPositionToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem restoreWindowSizeToolStripMenuItem;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -9,6 +9,7 @@ using System.Runtime.InteropServices;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using BizHawk.Core;
|
using BizHawk.Core;
|
||||||
|
using BizHawk.MultiClient;
|
||||||
|
|
||||||
namespace BizHawk.Emulation.Consoles.Gameboy
|
namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
{
|
{
|
||||||
|
@ -384,5 +385,20 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void Debugger_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void autoloadToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Config.AutoloadGBDebugger ^= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void settingsToolStripMenuItem_DropDownOpened(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
autoloadToolStripMenuItem.Checked = Global.Config.AutoloadGBDebugger;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,4 +123,7 @@
|
||||||
<metadata name="timerRunUpdate.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="timerRunUpdate.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>193, 17</value>
|
<value>193, 17</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>325, 17</value>
|
||||||
|
</metadata>
|
||||||
</root>
|
</root>
|
|
@ -197,6 +197,8 @@
|
||||||
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.helpToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
this.helpToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.gBToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.debuggerToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||||
this.DumpError = new System.Windows.Forms.ToolStripDropDownButton();
|
this.DumpError = new System.Windows.Forms.ToolStripDropDownButton();
|
||||||
this.EmuStatus = new System.Windows.Forms.ToolStripStatusLabel();
|
this.EmuStatus = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
|
@ -234,11 +236,12 @@
|
||||||
this.toolsToolStripMenuItem,
|
this.toolsToolStripMenuItem,
|
||||||
this.NESToolStripMenuItem,
|
this.NESToolStripMenuItem,
|
||||||
this.tI83ToolStripMenuItem,
|
this.tI83ToolStripMenuItem,
|
||||||
|
this.gBToolStripMenuItem,
|
||||||
this.helpToolStripMenuItem});
|
this.helpToolStripMenuItem});
|
||||||
this.menuStrip1.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow;
|
this.menuStrip1.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow;
|
||||||
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
|
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
|
||||||
this.menuStrip1.Name = "menuStrip1";
|
this.menuStrip1.Name = "menuStrip1";
|
||||||
this.menuStrip1.Size = new System.Drawing.Size(470, 21);
|
this.menuStrip1.Size = new System.Drawing.Size(470, 40);
|
||||||
this.menuStrip1.TabIndex = 0;
|
this.menuStrip1.TabIndex = 0;
|
||||||
this.menuStrip1.Text = "menuStrip1";
|
this.menuStrip1.Text = "menuStrip1";
|
||||||
this.menuStrip1.MenuDeactivate += new System.EventHandler(this.menuStrip1_MenuDeactivate);
|
this.menuStrip1.MenuDeactivate += new System.EventHandler(this.menuStrip1_MenuDeactivate);
|
||||||
|
@ -1554,6 +1557,21 @@
|
||||||
this.aboutToolStripMenuItem.Text = "&About";
|
this.aboutToolStripMenuItem.Text = "&About";
|
||||||
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
|
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
|
// gBToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.gBToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.debuggerToolStripMenuItem1});
|
||||||
|
this.gBToolStripMenuItem.Name = "gBToolStripMenuItem";
|
||||||
|
this.gBToolStripMenuItem.Size = new System.Drawing.Size(32, 17);
|
||||||
|
this.gBToolStripMenuItem.Text = "GB";
|
||||||
|
//
|
||||||
|
// debuggerToolStripMenuItem1
|
||||||
|
//
|
||||||
|
this.debuggerToolStripMenuItem1.Name = "debuggerToolStripMenuItem1";
|
||||||
|
this.debuggerToolStripMenuItem1.Size = new System.Drawing.Size(152, 22);
|
||||||
|
this.debuggerToolStripMenuItem1.Text = "Debugger";
|
||||||
|
this.debuggerToolStripMenuItem1.Click += new System.EventHandler(this.debuggerToolStripMenuItem1_Click);
|
||||||
|
//
|
||||||
// statusStrip1
|
// statusStrip1
|
||||||
//
|
//
|
||||||
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
@ -1624,7 +1642,7 @@
|
||||||
this.screenshotToolStripMenuItem1,
|
this.screenshotToolStripMenuItem1,
|
||||||
this.closeROMToolStripMenuItem1});
|
this.closeROMToolStripMenuItem1});
|
||||||
this.contextMenuStrip1.Name = "contextMenuStrip1";
|
this.contextMenuStrip1.Name = "contextMenuStrip1";
|
||||||
this.contextMenuStrip1.Size = new System.Drawing.Size(179, 308);
|
this.contextMenuStrip1.Size = new System.Drawing.Size(179, 286);
|
||||||
this.contextMenuStrip1.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip1_Opening);
|
this.contextMenuStrip1.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip1_Opening);
|
||||||
this.contextMenuStrip1.Closing += new System.Windows.Forms.ToolStripDropDownClosingEventHandler(this.contextMenuStrip1_Closing);
|
this.contextMenuStrip1.Closing += new System.Windows.Forms.ToolStripDropDownClosingEventHandler(this.contextMenuStrip1_Closing);
|
||||||
//
|
//
|
||||||
|
@ -1949,6 +1967,8 @@
|
||||||
private System.Windows.Forms.ToolStripDropDownButton DumpError;
|
private System.Windows.Forms.ToolStripDropDownButton DumpError;
|
||||||
private System.Windows.Forms.ToolStripMenuItem viewSubtitlesToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem viewSubtitlesToolStripMenuItem;
|
||||||
private MenuStripEx menuStrip1;
|
private MenuStripEx menuStrip1;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem gBToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem debuggerToolStripMenuItem1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -64,6 +64,7 @@ namespace BizHawk.MultiClient
|
||||||
public ToolBox ToolBox1 = new ToolBox();
|
public ToolBox ToolBox1 = new ToolBox();
|
||||||
public TI83KeyPad TI83KeyPad1 = new TI83KeyPad();
|
public TI83KeyPad TI83KeyPad1 = new TI83KeyPad();
|
||||||
public TAStudio TAStudio1 = new TAStudio();
|
public TAStudio TAStudio1 = new TAStudio();
|
||||||
|
public Debugger GBDebugger1 = new Debugger(null);
|
||||||
|
|
||||||
public MainForm(string[] args)
|
public MainForm(string[] args)
|
||||||
{
|
{
|
||||||
|
@ -686,14 +687,22 @@ namespace BizHawk.MultiClient
|
||||||
case "TI83":
|
case "TI83":
|
||||||
tI83ToolStripMenuItem.Visible = true;
|
tI83ToolStripMenuItem.Visible = true;
|
||||||
NESToolStripMenuItem.Visible = false;
|
NESToolStripMenuItem.Visible = false;
|
||||||
|
gBToolStripMenuItem.Visible = false;
|
||||||
break;
|
break;
|
||||||
case "NES":
|
case "NES":
|
||||||
NESToolStripMenuItem.Visible = true;
|
NESToolStripMenuItem.Visible = true;
|
||||||
tI83ToolStripMenuItem.Visible = false;
|
tI83ToolStripMenuItem.Visible = false;
|
||||||
|
gBToolStripMenuItem.Visible = false;
|
||||||
|
break;
|
||||||
|
case "GB": //TODO: SGB, etc?
|
||||||
|
NESToolStripMenuItem.Visible = false;
|
||||||
|
tI83ToolStripMenuItem.Visible = false;
|
||||||
|
gBToolStripMenuItem.Visible = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
tI83ToolStripMenuItem.Visible = false;
|
tI83ToolStripMenuItem.Visible = false;
|
||||||
NESToolStripMenuItem.Visible = false;
|
NESToolStripMenuItem.Visible = false;
|
||||||
|
gBToolStripMenuItem.Visible = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -836,11 +845,6 @@ namespace BizHawk.MultiClient
|
||||||
if (File.Exists(game.SaveRamPath))
|
if (File.Exists(game.SaveRamPath))
|
||||||
LoadSaveRam();
|
LoadSaveRam();
|
||||||
|
|
||||||
if (game.System == "GB")
|
|
||||||
{
|
|
||||||
new BizHawk.Emulation.Consoles.Gameboy.Debugger(Global.Emulator as Gameboy).Show();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (UserMovie.GetMovieMode() != MOVIEMODE.INACTIVE)
|
if (UserMovie.GetMovieMode() != MOVIEMODE.INACTIVE)
|
||||||
{
|
{
|
||||||
InputLog.SetHeaderLine(MovieHeader.PLATFORM, Global.Emulator.SystemId);
|
InputLog.SetHeaderLine(MovieHeader.PLATFORM, Global.Emulator.SystemId);
|
||||||
|
@ -2256,5 +2260,14 @@ namespace BizHawk.MultiClient
|
||||||
s.GetMovie(UserMovie);
|
s.GetMovie(UserMovie);
|
||||||
s.ShowDialog();
|
s.ShowDialog();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void debuggerToolStripMenuItem1_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (Global.Emulator is Gameboy)
|
||||||
|
{
|
||||||
|
Debugger gbDebugger = new Debugger(Global.Emulator as Gameboy);
|
||||||
|
gbDebugger.Show();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue