unify coreinputcomm and coreoutputcomm. there is a slight chance your console will be messed up until i fix a teeny tiny something, since i didnt test them all, since with more recent cores i dunno what roms are working anyway. let me know if i broke anything.
This commit is contained in:
parent
6ef2913ed8
commit
a4b442abda
|
@ -40,13 +40,13 @@ namespace BizHawk.Emulation.Computers.Commodore64
|
||||||
InitMedia();
|
InitMedia();
|
||||||
|
|
||||||
// configure video
|
// configure video
|
||||||
CoreOutputComm.VsyncDen = board.vic.CyclesPerFrame;
|
CoreComm.VsyncDen = board.vic.CyclesPerFrame;
|
||||||
CoreOutputComm.VsyncNum = board.vic.CyclesPerSecond;
|
CoreComm.VsyncNum = board.vic.CyclesPerSecond;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitDisk(Region initRegion)
|
private void InitDisk(Region initRegion)
|
||||||
{
|
{
|
||||||
string sourceFolder = CoreInputComm.C64_FirmwaresPath;
|
string sourceFolder = CoreComm.C64_FirmwaresPath;
|
||||||
if (sourceFolder == null)
|
if (sourceFolder == null)
|
||||||
sourceFolder = @".\C64\Firmwares";
|
sourceFolder = @".\C64\Firmwares";
|
||||||
string diskFile = "dos1541";
|
string diskFile = "dos1541";
|
||||||
|
@ -78,7 +78,7 @@ namespace BizHawk.Emulation.Computers.Commodore64
|
||||||
|
|
||||||
private void InitRoms()
|
private void InitRoms()
|
||||||
{
|
{
|
||||||
string sourceFolder = CoreInputComm.C64_FirmwaresPath;
|
string sourceFolder = CoreComm.C64_FirmwaresPath;
|
||||||
if (sourceFolder == null)
|
if (sourceFolder == null)
|
||||||
sourceFolder = @".\C64\Firmwares";
|
sourceFolder = @".\C64\Firmwares";
|
||||||
|
|
||||||
|
|
|
@ -13,15 +13,14 @@ namespace BizHawk.Emulation.Computers.Commodore64
|
||||||
private string extension;
|
private string extension;
|
||||||
private byte[] inputFile;
|
private byte[] inputFile;
|
||||||
|
|
||||||
public C64(GameInfo game, byte[] rom, string romextension)
|
public C64(CoreComm comm, GameInfo game, byte[] rom, string romextension)
|
||||||
{
|
{
|
||||||
|
CoreComm = comm;
|
||||||
inputFile = rom;
|
inputFile = rom;
|
||||||
extension = romextension;
|
extension = romextension;
|
||||||
CoreOutputComm = new CoreOutputComm();
|
|
||||||
CoreInputComm = new CoreInputComm();
|
|
||||||
Init(Region.PAL);
|
Init(Region.PAL);
|
||||||
cyclesPerFrame = (uint)board.vic.CyclesPerFrame;
|
cyclesPerFrame = (uint)board.vic.CyclesPerFrame;
|
||||||
CoreOutputComm.UsesDriveLed = true;
|
CoreComm.UsesDriveLed = true;
|
||||||
SetupMemoryDomains();
|
SetupMemoryDomains();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,8 +30,7 @@ namespace BizHawk.Emulation.Computers.Commodore64
|
||||||
private int _frame = 0;
|
private int _frame = 0;
|
||||||
|
|
||||||
// bizhawk I/O
|
// bizhawk I/O
|
||||||
public CoreInputComm CoreInputComm { get; set; }
|
public CoreComm CoreComm { get; private set; }
|
||||||
public CoreOutputComm CoreOutputComm { get; private set; }
|
|
||||||
|
|
||||||
// game/rom specific
|
// game/rom specific
|
||||||
public GameInfo game;
|
public GameInfo game;
|
||||||
|
@ -126,7 +124,7 @@ namespace BizHawk.Emulation.Computers.Commodore64
|
||||||
|
|
||||||
Console.WriteLine("CPUPC: " + C64Util.ToHex(board.cpu.PC, 4) + " 1541PC: " + C64Util.ToHex(disk.PC, 4));
|
Console.WriteLine("CPUPC: " + C64Util.ToHex(board.cpu.PC, 4) + " 1541PC: " + C64Util.ToHex(disk.PC, 4));
|
||||||
|
|
||||||
CoreOutputComm.DriveLED = DriveLED;
|
CoreComm.DriveLED = DriveLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleFirmwareError(string file)
|
private void HandleFirmwareError(string file)
|
||||||
|
|
|
@ -113,9 +113,9 @@ namespace BizHawk
|
||||||
{
|
{
|
||||||
byte temp = mapper.ReadMemory((ushort)(addr&0x1FFF));
|
byte temp = mapper.ReadMemory((ushort)(addr&0x1FFF));
|
||||||
|
|
||||||
if (CoreInputComm.MemoryCallbackSystem.HasRead)
|
if (CoreComm.MemoryCallbackSystem.HasRead)
|
||||||
{
|
{
|
||||||
CoreInputComm.MemoryCallbackSystem.TriggerRead(addr);
|
CoreComm.MemoryCallbackSystem.TriggerRead(addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
return temp;
|
return temp;
|
||||||
|
@ -132,9 +132,9 @@ namespace BizHawk
|
||||||
{
|
{
|
||||||
mapper.WriteMemory((ushort)(addr & 0x1FFF), value);
|
mapper.WriteMemory((ushort)(addr & 0x1FFF), value);
|
||||||
|
|
||||||
if (CoreInputComm.MemoryCallbackSystem.HasWrite)
|
if (CoreComm.MemoryCallbackSystem.HasWrite)
|
||||||
{
|
{
|
||||||
CoreInputComm.MemoryCallbackSystem.TriggerWrite(addr);
|
CoreComm.MemoryCallbackSystem.TriggerWrite(addr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -195,7 +195,7 @@ namespace BizHawk
|
||||||
//cpu.PC = 0x0000; //set the initial PC
|
//cpu.PC = 0x0000; //set the initial PC
|
||||||
|
|
||||||
// show mapper class on romstatusdetails
|
// show mapper class on romstatusdetails
|
||||||
CoreOutputComm.RomStatusDetails =
|
CoreComm.RomStatusDetails =
|
||||||
string.Format("{0}\r\nSHA1:{1}\r\nMD5:{2}\r\nMapper Impl \"{3}\"",
|
string.Format("{0}\r\nSHA1:{1}\r\nMD5:{2}\r\nMapper Impl \"{3}\"",
|
||||||
game.Name,
|
game.Name,
|
||||||
Util.BytesToHexString(System.Security.Cryptography.SHA1.Create().ComputeHash(rom)),
|
Util.BytesToHexString(System.Security.Cryptography.SHA1.Create().ComputeHash(rom)),
|
||||||
|
@ -215,8 +215,8 @@ namespace BizHawk
|
||||||
tia.execute(1);
|
tia.execute(1);
|
||||||
|
|
||||||
m6532.timer.tick();
|
m6532.timer.tick();
|
||||||
if (CoreInputComm.Tracer.Enabled)
|
if (CoreComm.Tracer.Enabled)
|
||||||
CoreInputComm.Tracer.Put(cpu.TraceState());
|
CoreComm.Tracer.Put(cpu.TraceState());
|
||||||
cpu.ExecuteOne();
|
cpu.ExecuteOne();
|
||||||
//if (cpu.PendingCycles <= 0)
|
//if (cpu.PendingCycles <= 0)
|
||||||
//{
|
//{
|
||||||
|
@ -236,7 +236,7 @@ namespace BizHawk
|
||||||
|
|
||||||
public byte ReadControls1(bool peek)
|
public byte ReadControls1(bool peek)
|
||||||
{
|
{
|
||||||
if (CoreInputComm.InputCallback != null) CoreInputComm.InputCallback();
|
if (CoreComm.InputCallback != null) CoreComm.InputCallback();
|
||||||
byte value = 0xFF;
|
byte value = 0xFF;
|
||||||
|
|
||||||
if (Controller["P1 Up"]) value &= 0xEF;
|
if (Controller["P1 Up"]) value &= 0xEF;
|
||||||
|
@ -250,7 +250,7 @@ namespace BizHawk
|
||||||
|
|
||||||
public byte ReadControls2(bool peek)
|
public byte ReadControls2(bool peek)
|
||||||
{
|
{
|
||||||
if (CoreInputComm.InputCallback != null) CoreInputComm.InputCallback();
|
if (CoreComm.InputCallback != null) CoreComm.InputCallback();
|
||||||
byte value = 0xFF;
|
byte value = 0xFF;
|
||||||
|
|
||||||
if (Controller["P2 Up"]) value &= 0xEF;
|
if (Controller["P2 Up"]) value &= 0xEF;
|
||||||
|
|
|
@ -9,22 +9,20 @@ namespace BizHawk
|
||||||
public string SystemId { get { return "A26"; } }
|
public string SystemId { get { return "A26"; } }
|
||||||
public GameInfo game;
|
public GameInfo game;
|
||||||
|
|
||||||
public CoreInputComm CoreInputComm { get; set; }
|
public CoreComm CoreComm { get; private set; }
|
||||||
public CoreOutputComm CoreOutputComm { get; private set; }
|
|
||||||
public IVideoProvider VideoProvider { get { return tia; } }
|
public IVideoProvider VideoProvider { get { return tia; } }
|
||||||
public ISoundProvider SoundProvider { get { return dcfilter; } }
|
public ISoundProvider SoundProvider { get { return dcfilter; } }
|
||||||
public ISyncSoundProvider SyncSoundProvider { get { return new FakeSyncSound(dcfilter, 735); } }
|
public ISyncSoundProvider SyncSoundProvider { get { return new FakeSyncSound(dcfilter, 735); } }
|
||||||
public bool StartAsyncSound() { return true; }
|
public bool StartAsyncSound() { return true; }
|
||||||
public void EndAsyncSound() { }
|
public void EndAsyncSound() { }
|
||||||
|
|
||||||
public Atari2600(GameInfo game, byte[] rom)
|
public Atari2600(CoreComm comm, GameInfo game, byte[] rom)
|
||||||
{
|
{
|
||||||
|
CoreComm = comm;
|
||||||
var domains = new List<MemoryDomain>(1);
|
var domains = new List<MemoryDomain>(1);
|
||||||
domains.Add(new MemoryDomain("Main RAM", 128, Endian.Little, addr => ram[addr & 127], (addr, value) => ram[addr & 127] = value));
|
domains.Add(new MemoryDomain("Main RAM", 128, Endian.Little, addr => ram[addr & 127], (addr, value) => ram[addr & 127] = value));
|
||||||
memoryDomains = domains.AsReadOnly();
|
memoryDomains = domains.AsReadOnly();
|
||||||
CoreOutputComm = new CoreOutputComm();
|
CoreComm.CpuTraceAvailable = true;
|
||||||
CoreOutputComm.CpuTraceAvailable = true;
|
|
||||||
CoreInputComm = new CoreInputComm();
|
|
||||||
this.rom = rom;
|
this.rom = rom;
|
||||||
this.game = game;
|
this.game = game;
|
||||||
Console.WriteLine("Game uses mapper " + game.GetOptionsDict()["m"]);
|
Console.WriteLine("Game uses mapper " + game.GetOptionsDict()["m"]);
|
||||||
|
|
|
@ -699,12 +699,12 @@ namespace BizHawk.Emulation.Consoles.Atari
|
||||||
|
|
||||||
// Pick the pixel color from collisions
|
// Pick the pixel color from collisions
|
||||||
uint pixelColor = 0x000000;
|
uint pixelColor = 0x000000;
|
||||||
if (core.CoreInputComm.Atari2600_ShowBG)
|
if (core.CoreComm.Atari2600_ShowBG)
|
||||||
{
|
{
|
||||||
pixelColor = palette[playField.bkColor];
|
pixelColor = palette[playField.bkColor];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((collisions & CXPF) != 0 && core.CoreInputComm.Atari2600_ShowPF)
|
if ((collisions & CXPF) != 0 && core.CoreComm.Atari2600_ShowPF)
|
||||||
{
|
{
|
||||||
if (playField.score)
|
if (playField.score)
|
||||||
{
|
{
|
||||||
|
@ -726,7 +726,7 @@ namespace BizHawk.Emulation.Consoles.Atari
|
||||||
if ((collisions & CXBL) != 0)
|
if ((collisions & CXBL) != 0)
|
||||||
{
|
{
|
||||||
ball.collisions |= collisions;
|
ball.collisions |= collisions;
|
||||||
if (core.CoreInputComm.Atari2600_ShowBall)
|
if (core.CoreComm.Atari2600_ShowBall)
|
||||||
{
|
{
|
||||||
pixelColor = palette[playField.pfColor];
|
pixelColor = palette[playField.pfColor];
|
||||||
}
|
}
|
||||||
|
@ -735,7 +735,7 @@ namespace BizHawk.Emulation.Consoles.Atari
|
||||||
if ((collisions & CXM1) != 0)
|
if ((collisions & CXM1) != 0)
|
||||||
{
|
{
|
||||||
player1.missile.collisions |= collisions;
|
player1.missile.collisions |= collisions;
|
||||||
if (core.CoreInputComm.Atari2600_ShowMissle2)
|
if (core.CoreComm.Atari2600_ShowMissle2)
|
||||||
{
|
{
|
||||||
pixelColor = palette[player1.color];
|
pixelColor = palette[player1.color];
|
||||||
}
|
}
|
||||||
|
@ -744,7 +744,7 @@ namespace BizHawk.Emulation.Consoles.Atari
|
||||||
if ((collisions & CXP1) != 0)
|
if ((collisions & CXP1) != 0)
|
||||||
{
|
{
|
||||||
player1.collisions |= collisions;
|
player1.collisions |= collisions;
|
||||||
if (core.CoreInputComm.Atari2600_ShowPlayer2)
|
if (core.CoreComm.Atari2600_ShowPlayer2)
|
||||||
{
|
{
|
||||||
pixelColor = palette[player1.color];
|
pixelColor = palette[player1.color];
|
||||||
}
|
}
|
||||||
|
@ -753,7 +753,7 @@ namespace BizHawk.Emulation.Consoles.Atari
|
||||||
if ((collisions & CXM0) != 0)
|
if ((collisions & CXM0) != 0)
|
||||||
{
|
{
|
||||||
player0.missile.collisions |= collisions;
|
player0.missile.collisions |= collisions;
|
||||||
if (core.CoreInputComm.Atari2600_ShowMissle1)
|
if (core.CoreComm.Atari2600_ShowMissle1)
|
||||||
{
|
{
|
||||||
pixelColor = palette[player0.color];
|
pixelColor = palette[player0.color];
|
||||||
}
|
}
|
||||||
|
@ -762,13 +762,13 @@ namespace BizHawk.Emulation.Consoles.Atari
|
||||||
if ((collisions & CXP0) != 0)
|
if ((collisions & CXP0) != 0)
|
||||||
{
|
{
|
||||||
player0.collisions |= collisions;
|
player0.collisions |= collisions;
|
||||||
if (core.CoreInputComm.Atari2600_ShowPlayer1)
|
if (core.CoreComm.Atari2600_ShowPlayer1)
|
||||||
{
|
{
|
||||||
pixelColor = palette[player0.color];
|
pixelColor = palette[player0.color];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (playField.priority && (collisions & CXPF) != 0 && core.CoreInputComm.Atari2600_ShowPF)
|
if (playField.priority && (collisions & CXPF) != 0 && core.CoreComm.Atari2600_ShowPF)
|
||||||
{
|
{
|
||||||
if (playField.score)
|
if (playField.score)
|
||||||
{
|
{
|
||||||
|
|
|
@ -29,8 +29,7 @@ namespace BizHawk
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TODO */
|
/* TODO */
|
||||||
public CoreInputComm CoreInputComm { get; set; }
|
public CoreComm CoreComm { get; private set; }
|
||||||
public CoreOutputComm CoreOutputComm { get; private set; }
|
|
||||||
public ISyncSoundProvider SyncSoundProvider { get { return null; } }
|
public ISyncSoundProvider SyncSoundProvider { get { return null; } }
|
||||||
public bool StartAsyncSound() { return true; }
|
public bool StartAsyncSound() { return true; }
|
||||||
public void EndAsyncSound() { }
|
public void EndAsyncSound() { }
|
||||||
|
@ -89,14 +88,14 @@ namespace BizHawk
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
public Atari7800(GameInfo game, byte[] rom, byte[] ntsc_bios, byte[] pal_bios, byte[] highscoreBIOS)
|
public Atari7800(CoreComm comm, GameInfo game, byte[] rom, byte[] ntsc_bios, byte[] pal_bios, byte[] highscoreBIOS)
|
||||||
{
|
{
|
||||||
|
CoreComm = comm;
|
||||||
|
|
||||||
//TODO: store both the ntsc bios and the pal bios
|
//TODO: store both the ntsc bios and the pal bios
|
||||||
var domains = new List<MemoryDomain>(1);
|
var domains = new List<MemoryDomain>(1);
|
||||||
domains.Add(new MemoryDomain("Main RAM", 1, Endian.Little, addr => 0xFF, null)); //TODO
|
domains.Add(new MemoryDomain("Main RAM", 1, Endian.Little, addr => 0xFF, null)); //TODO
|
||||||
memoryDomains = domains.AsReadOnly();
|
memoryDomains = domains.AsReadOnly();
|
||||||
CoreOutputComm = new CoreOutputComm();
|
|
||||||
CoreInputComm = new CoreInputComm();
|
|
||||||
this.rom = rom;
|
this.rom = rom;
|
||||||
this.game = game;
|
this.game = game;
|
||||||
this.hsbios = highscoreBIOS;
|
this.hsbios = highscoreBIOS;
|
||||||
|
@ -111,7 +110,7 @@ namespace BizHawk
|
||||||
{
|
{
|
||||||
_lagcount = 0;
|
_lagcount = 0;
|
||||||
// show mapper class on romstatusdetails
|
// show mapper class on romstatusdetails
|
||||||
CoreOutputComm.RomStatusDetails =
|
CoreComm.RomStatusDetails =
|
||||||
string.Format("{0}\r\nSHA1:{1}\r\nMD5:{2}\r\nMapper Impl \"{3}\"",
|
string.Format("{0}\r\nSHA1:{1}\r\nMD5:{2}\r\nMapper Impl \"{3}\"",
|
||||||
game.Name,
|
game.Name,
|
||||||
Util.BytesToHexString(System.Security.Cryptography.SHA1.Create().ComputeHash(rom)),
|
Util.BytesToHexString(System.Security.Cryptography.SHA1.Create().ComputeHash(rom)),
|
||||||
|
|
|
@ -39,9 +39,9 @@ namespace BizHawk.Emulation.Consoles.Calculator
|
||||||
ret = rom[romPage * 0x4000 + addr - 0x4000]; //other rom page
|
ret = rom[romPage * 0x4000 + addr - 0x4000]; //other rom page
|
||||||
else ret = ram[addr - 0x8000];
|
else ret = ram[addr - 0x8000];
|
||||||
|
|
||||||
if (CoreInputComm.MemoryCallbackSystem.HasRead)
|
if (CoreComm.MemoryCallbackSystem.HasRead)
|
||||||
{
|
{
|
||||||
CoreInputComm.MemoryCallbackSystem.TriggerRead(addr);
|
CoreComm.MemoryCallbackSystem.TriggerRead(addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -55,9 +55,9 @@ namespace BizHawk.Emulation.Consoles.Calculator
|
||||||
return; //other rom page
|
return; //other rom page
|
||||||
else ram[addr - 0x8000] = value;
|
else ram[addr - 0x8000] = value;
|
||||||
|
|
||||||
if (CoreInputComm.MemoryCallbackSystem.HasWrite)
|
if (CoreComm.MemoryCallbackSystem.HasWrite)
|
||||||
{
|
{
|
||||||
CoreInputComm.MemoryCallbackSystem.TriggerWrite(addr);
|
CoreComm.MemoryCallbackSystem.TriggerWrite(addr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,7 +136,7 @@ namespace BizHawk.Emulation.Consoles.Calculator
|
||||||
|
|
||||||
byte ReadKeyboard()
|
byte ReadKeyboard()
|
||||||
{
|
{
|
||||||
if (CoreInputComm.InputCallback != null) CoreInputComm.InputCallback();
|
if (CoreComm.InputCallback != null) CoreComm.InputCallback();
|
||||||
//ref TI-9X
|
//ref TI-9X
|
||||||
|
|
||||||
int ret = 0xFF;
|
int ret = 0xFF;
|
||||||
|
@ -326,9 +326,9 @@ namespace BizHawk.Emulation.Consoles.Calculator
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public TI83(GameInfo game, byte[] rom)
|
public TI83(CoreComm comm, GameInfo game, byte[] rom)
|
||||||
{
|
{
|
||||||
CoreOutputComm = new CoreOutputComm();
|
CoreComm = comm;
|
||||||
cpu.ReadMemory = ReadMemory;
|
cpu.ReadMemory = ReadMemory;
|
||||||
cpu.WriteMemory = WriteMemory;
|
cpu.WriteMemory = WriteMemory;
|
||||||
cpu.ReadHardware = ReadHardware;
|
cpu.ReadHardware = ReadHardware;
|
||||||
|
@ -362,8 +362,7 @@ namespace BizHawk.Emulation.Consoles.Calculator
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public CoreInputComm CoreInputComm { get; set; }
|
public CoreComm CoreComm { get; private set; }
|
||||||
public CoreOutputComm CoreOutputComm { get; private set; }
|
|
||||||
|
|
||||||
protected byte[] vram = new byte[0x300];
|
protected byte[] vram = new byte[0x300];
|
||||||
class MyVideoProvider : IVideoProvider
|
class MyVideoProvider : IVideoProvider
|
||||||
|
|
|
@ -20,8 +20,10 @@ namespace BizHawk.Emulation.Consoles.Coleco
|
||||||
public SN76489 PSG;
|
public SN76489 PSG;
|
||||||
public byte[] Ram = new byte[1024];
|
public byte[] Ram = new byte[1024];
|
||||||
|
|
||||||
public ColecoVision(GameInfo game, byte[] rom, string biosPath, bool skipbios)
|
public ColecoVision(CoreComm comm, GameInfo game, byte[] rom, string biosPath, bool skipbios)
|
||||||
{
|
{
|
||||||
|
CoreComm = comm;
|
||||||
|
|
||||||
Cpu = new Z80A();
|
Cpu = new Z80A();
|
||||||
Cpu.ReadMemory = ReadMemory;
|
Cpu.ReadMemory = ReadMemory;
|
||||||
Cpu.WriteMemory = WriteMemory;
|
Cpu.WriteMemory = WriteMemory;
|
||||||
|
@ -34,11 +36,8 @@ namespace BizHawk.Emulation.Consoles.Coleco
|
||||||
// TODO: hack to allow bios-less operation would be nice, no idea if its feasible
|
// TODO: hack to allow bios-less operation would be nice, no idea if its feasible
|
||||||
BiosRom = File.ReadAllBytes(biosPath);
|
BiosRom = File.ReadAllBytes(biosPath);
|
||||||
|
|
||||||
CoreOutputComm = new CoreOutputComm();
|
if (game["NoSkip"])
|
||||||
CoreInputComm = new CoreInputComm();
|
skipbios = false;
|
||||||
|
|
||||||
if (game["NoSkip"])
|
|
||||||
skipbios = false;
|
|
||||||
LoadRom(rom, skipbios);
|
LoadRom(rom, skipbios);
|
||||||
this.game = game;
|
this.game = game;
|
||||||
SetupMemoryDomains();
|
SetupMemoryDomains();
|
||||||
|
@ -239,8 +238,7 @@ namespace BizHawk.Emulation.Consoles.Coleco
|
||||||
|
|
||||||
public string SystemId { get { return "Coleco"; } }
|
public string SystemId { get { return "Coleco"; } }
|
||||||
public GameInfo game;
|
public GameInfo game;
|
||||||
public CoreInputComm CoreInputComm { get; set; }
|
public CoreComm CoreComm { get; private set; }
|
||||||
public CoreOutputComm CoreOutputComm { get; private set; }
|
|
||||||
public IVideoProvider VideoProvider { get { return VDP; } }
|
public IVideoProvider VideoProvider { get { return VDP; } }
|
||||||
public ISoundProvider SoundProvider { get { return PSG; } }
|
public ISoundProvider SoundProvider { get { return PSG; } }
|
||||||
|
|
||||||
|
|
|
@ -38,8 +38,10 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
||||||
if (GraphicsRom.Length != 2048) throw new ApplicationException("GROM file is wrong size - expected 2048 bytes");
|
if (GraphicsRom.Length != 2048) throw new ApplicationException("GROM file is wrong size - expected 2048 bytes");
|
||||||
}
|
}
|
||||||
|
|
||||||
public Intellivision(GameInfo game, byte[] rom)
|
public Intellivision(CoreComm comm, GameInfo game, byte[] rom)
|
||||||
{
|
{
|
||||||
|
CoreComm = comm;
|
||||||
|
|
||||||
Rom = rom;
|
Rom = rom;
|
||||||
Game = game;
|
Game = game;
|
||||||
Cart = new Intellicart();
|
Cart = new Intellicart();
|
||||||
|
@ -65,8 +67,6 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
||||||
|
|
||||||
Connect();
|
Connect();
|
||||||
|
|
||||||
CoreOutputComm = new CoreOutputComm();
|
|
||||||
|
|
||||||
Cpu.LogData();
|
Cpu.LogData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,8 +162,7 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
||||||
return new byte[0];
|
return new byte[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
public CoreInputComm CoreInputComm { get; set; }
|
public CoreComm CoreComm { get; private set; }
|
||||||
public CoreOutputComm CoreOutputComm { get; private set; }
|
|
||||||
|
|
||||||
public IList<MemoryDomain> MemoryDomains
|
public IList<MemoryDomain> MemoryDomains
|
||||||
{
|
{
|
||||||
|
|
|
@ -115,9 +115,9 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CoreInputComm.MemoryCallbackSystem.HasRead)
|
if (CoreComm.MemoryCallbackSystem.HasRead)
|
||||||
{
|
{
|
||||||
CoreInputComm.MemoryCallbackSystem.TriggerRead(addr);
|
CoreComm.MemoryCallbackSystem.TriggerRead(addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cart != null)
|
if (cart != null)
|
||||||
|
@ -286,9 +286,9 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CoreInputComm.MemoryCallbackSystem.HasWrite)
|
if (CoreComm.MemoryCallbackSystem.HasWrite)
|
||||||
{
|
{
|
||||||
CoreInputComm.MemoryCallbackSystem.TriggerWrite(addr);
|
CoreComm.MemoryCallbackSystem.TriggerWrite(addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (cart || stic || psg);
|
return (cart || stic || psg);
|
||||||
|
|
|
@ -21,6 +21,17 @@ namespace BizHawk.Emulation.Consoles.Nintendo.GBA
|
||||||
public ControllerDefinition ControllerDefinition { get { return GBAController; } }
|
public ControllerDefinition ControllerDefinition { get { return GBAController; } }
|
||||||
public IController Controller { get; set; }
|
public IController Controller { get; set; }
|
||||||
|
|
||||||
|
public GBA(CoreComm comm)
|
||||||
|
{
|
||||||
|
CoreComm = comm;
|
||||||
|
comm.VsyncNum = 262144;
|
||||||
|
comm.VsyncDen = 4389;
|
||||||
|
comm.CpuTraceAvailable = true;
|
||||||
|
comm.TraceHeader = " -Addr--- -Opcode- -Instruction------------------- -R0----- -R1----- -R2----- -R3----- -R4----- -R5----- -R6----- -R7----- -R8----- -R9----- -R10---- -R11---- -R12---- -R13(SP) -R14(LR) -R15(PC) -CPSR--- -SPSR---";
|
||||||
|
comm.NominalWidth = 240;
|
||||||
|
comm.NominalHeight = 160;
|
||||||
|
}
|
||||||
|
|
||||||
public void Load(byte[] rom, byte[] bios)
|
public void Load(byte[] rom, byte[] bios)
|
||||||
{
|
{
|
||||||
if (bios.Length != 16384)
|
if (bios.Length != 16384)
|
||||||
|
@ -43,7 +54,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo.GBA
|
||||||
if (Controller["Power"])
|
if (Controller["Power"])
|
||||||
LibMeteor.libmeteor_hardreset();
|
LibMeteor.libmeteor_hardreset();
|
||||||
// due to the design of the tracing api, we have to poll whether it's active each frame
|
// due to the design of the tracing api, we have to poll whether it's active each frame
|
||||||
LibMeteor.libmeteor_settracecallback(CoreInputComm.Tracer.Enabled ? tracecallback : null);
|
LibMeteor.libmeteor_settracecallback(CoreComm.Tracer.Enabled ? tracecallback : null);
|
||||||
if (!coredead)
|
if (!coredead)
|
||||||
LibMeteor.libmeteor_frameadvance();
|
LibMeteor.libmeteor_frameadvance();
|
||||||
if (IsLagFrame)
|
if (IsLagFrame)
|
||||||
|
@ -169,20 +180,8 @@ namespace BizHawk.Emulation.Consoles.Nintendo.GBA
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public CoreInputComm CoreInputComm { get; set; }
|
public CoreComm CoreComm { get; private set; }
|
||||||
|
|
||||||
CoreOutputComm _CoreOutputComm = new CoreOutputComm
|
|
||||||
{
|
|
||||||
VsyncNum = 262144,
|
|
||||||
VsyncDen = 4389,
|
|
||||||
CpuTraceAvailable = true,
|
|
||||||
TraceHeader = " -Addr--- -Opcode- -Instruction------------------- -R0----- -R1----- -R2----- -R3----- -R4----- -R5----- -R6----- -R7----- -R8----- -R9----- -R10---- -R11---- -R12---- -R13(SP) -R14(LR) -R15(PC) -CPSR--- -SPSR---",
|
|
||||||
NominalWidth = 240,
|
|
||||||
NominalHeight = 160
|
|
||||||
};
|
|
||||||
|
|
||||||
public CoreOutputComm CoreOutputComm { get { return _CoreOutputComm; } }
|
|
||||||
|
|
||||||
#region memorydomains
|
#region memorydomains
|
||||||
|
|
||||||
List<MemoryDomain> _MemoryDomains = new List<MemoryDomain>();
|
List<MemoryDomain> _MemoryDomains = new List<MemoryDomain>();
|
||||||
|
@ -377,7 +376,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo.GBA
|
||||||
|
|
||||||
void Trace(string msg)
|
void Trace(string msg)
|
||||||
{
|
{
|
||||||
CoreInputComm.Tracer.Put(msg);
|
CoreComm.Tracer.Put(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
Action EndOfFrameCallback = null;
|
Action EndOfFrameCallback = null;
|
||||||
|
|
|
@ -26,8 +26,10 @@ namespace BizHawk.Emulation.Consoles.GB
|
||||||
/// </summary>
|
/// </summary>
|
||||||
LibGambatte.Buttons CurrentButtons = 0;
|
LibGambatte.Buttons CurrentButtons = 0;
|
||||||
|
|
||||||
public Gameboy(GameInfo game, byte[] romdata)
|
public Gameboy(CoreComm comm, GameInfo game, byte[] romdata)
|
||||||
{
|
{
|
||||||
|
CoreComm = comm;
|
||||||
|
|
||||||
ThrowExceptionForBadRom(romdata);
|
ThrowExceptionForBadRom(romdata);
|
||||||
|
|
||||||
GambatteState = LibGambatte.gambatte_create();
|
GambatteState = LibGambatte.gambatte_create();
|
||||||
|
@ -64,7 +66,7 @@ namespace BizHawk.Emulation.Consoles.GB
|
||||||
|
|
||||||
InitMemoryDomains();
|
InitMemoryDomains();
|
||||||
|
|
||||||
GbOutputComm.RomStatusDetails = string.Format("{0}\r\nSHA1:{1}\r\nMD5:{2}\r\n",
|
CoreComm.RomStatusDetails = string.Format("{0}\r\nSHA1:{1}\r\nMD5:{2}\r\n",
|
||||||
game.Name,
|
game.Name,
|
||||||
Util.BytesToHexString(System.Security.Cryptography.SHA1.Create().ComputeHash(romdata)),
|
Util.BytesToHexString(System.Security.Cryptography.SHA1.Create().ComputeHash(romdata)),
|
||||||
Util.BytesToHexString(System.Security.Cryptography.MD5.Create().ComputeHash(romdata))
|
Util.BytesToHexString(System.Security.Cryptography.MD5.Create().ComputeHash(romdata))
|
||||||
|
@ -89,7 +91,7 @@ namespace BizHawk.Emulation.Consoles.GB
|
||||||
|
|
||||||
LibGambatte.Buttons ControllerCallback()
|
LibGambatte.Buttons ControllerCallback()
|
||||||
{
|
{
|
||||||
if (CoreInputComm.InputCallback != null) CoreInputComm.InputCallback();
|
if (CoreComm.InputCallback != null) CoreComm.InputCallback();
|
||||||
IsLagFrame = false;
|
IsLagFrame = false;
|
||||||
return CurrentButtons;
|
return CurrentButtons;
|
||||||
}
|
}
|
||||||
|
@ -140,7 +142,7 @@ namespace BizHawk.Emulation.Consoles.GB
|
||||||
LibGambatte.gambatte_reset(GambatteState);
|
LibGambatte.gambatte_reset(GambatteState);
|
||||||
|
|
||||||
RefreshMemoryCallbacks();
|
RefreshMemoryCallbacks();
|
||||||
if (CoreInputComm.Tracer.Enabled)
|
if (CoreComm.Tracer.Enabled)
|
||||||
tracecb = MakeTrace;
|
tracecb = MakeTrace;
|
||||||
else
|
else
|
||||||
tracecb = null;
|
tracecb = null;
|
||||||
|
@ -391,7 +393,7 @@ namespace BizHawk.Emulation.Consoles.GB
|
||||||
|
|
||||||
void RefreshMemoryCallbacks()
|
void RefreshMemoryCallbacks()
|
||||||
{
|
{
|
||||||
var mcs = CoreInputComm.MemoryCallbackSystem;
|
var mcs = CoreComm.MemoryCallbackSystem;
|
||||||
|
|
||||||
// we RefreshMemoryCallbacks() after the triggers in case the trigger turns itself off at that point
|
// we RefreshMemoryCallbacks() after the triggers in case the trigger turns itself off at that point
|
||||||
|
|
||||||
|
@ -412,23 +414,7 @@ namespace BizHawk.Emulation.Consoles.GB
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public CoreInputComm CoreInputComm { get; set; }
|
public CoreComm CoreComm { get; set; }
|
||||||
|
|
||||||
CoreOutputComm GbOutputComm = new CoreOutputComm
|
|
||||||
{
|
|
||||||
VsyncNum = 262144,
|
|
||||||
VsyncDen = 4389,
|
|
||||||
RomStatusAnnotation = null, //"Bizwhackin it up",
|
|
||||||
RomStatusDetails = null, //"LEVAR BURTON",
|
|
||||||
CpuTraceAvailable = true,
|
|
||||||
NominalWidth = 160,
|
|
||||||
NominalHeight = 144
|
|
||||||
};
|
|
||||||
|
|
||||||
public CoreOutputComm CoreOutputComm
|
|
||||||
{
|
|
||||||
get { return GbOutputComm; }
|
|
||||||
}
|
|
||||||
|
|
||||||
LibGambatte.TraceCallback tracecb;
|
LibGambatte.TraceCallback tracecb;
|
||||||
|
|
||||||
|
@ -438,7 +424,7 @@ namespace BizHawk.Emulation.Consoles.GB
|
||||||
System.Runtime.InteropServices.Marshal.Copy(_s, s, 0, 13);
|
System.Runtime.InteropServices.Marshal.Copy(_s, s, 0, 13);
|
||||||
ushort unused;
|
ushort unused;
|
||||||
|
|
||||||
CoreInputComm.Tracer.Put(string.Format(
|
CoreComm.Tracer.Put(string.Format(
|
||||||
"{13} SP:{2:x2} A:{3:x2} B:{4:x2} C:{5:x2} D:{6:x2} E:{7:x2} F:{8:x2} H:{9:x2} L:{10:x2} {11} Cy:{0}",
|
"{13} SP:{2:x2} A:{3:x2} B:{4:x2} C:{5:x2} D:{6:x2} E:{7:x2} F:{8:x2} H:{9:x2} L:{10:x2} {11} Cy:{0}",
|
||||||
s[0],
|
s[0],
|
||||||
s[1] & 0xffff,
|
s[1] & 0xffff,
|
||||||
|
|
|
@ -154,9 +154,9 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
cpu.SetCallbacks(ReadMemory, ReadMemory, PeekMemory, WriteMemory, (h) => DisposeList.Add(h));
|
cpu.SetCallbacks(ReadMemory, ReadMemory, PeekMemory, WriteMemory, (h) => DisposeList.Add(h));
|
||||||
cpu.FetchCallback = () =>
|
cpu.FetchCallback = () =>
|
||||||
{
|
{
|
||||||
if (CoreInputComm.Tracer.Enabled)
|
if (CoreComm.Tracer.Enabled)
|
||||||
{
|
{
|
||||||
CoreInputComm.Tracer.Put(cpu.TraceState());
|
CoreComm.Tracer.Put(cpu.TraceState());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
cpu.BCD_Enabled = false;
|
cpu.BCD_Enabled = false;
|
||||||
|
@ -178,8 +178,8 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
case "NES-PAL-B":
|
case "NES-PAL-B":
|
||||||
apu = new APU(this, apu, true);
|
apu = new APU(this, apu, true);
|
||||||
ppu.region = PPU.Region.PAL;
|
ppu.region = PPU.Region.PAL;
|
||||||
CoreOutputComm.VsyncNum = 50;
|
CoreComm.VsyncNum = 50;
|
||||||
CoreOutputComm.VsyncDen = 1;
|
CoreComm.VsyncDen = 1;
|
||||||
cpuclockrate = 1662607;
|
cpuclockrate = 1662607;
|
||||||
cpu_sequence = cpu_sequence_PAL;
|
cpu_sequence = cpu_sequence_PAL;
|
||||||
break;
|
break;
|
||||||
|
@ -203,8 +203,8 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
case "Dendy":
|
case "Dendy":
|
||||||
apu = new APU(this, apu, false);
|
apu = new APU(this, apu, false);
|
||||||
ppu.region = PPU.Region.Dendy;
|
ppu.region = PPU.Region.Dendy;
|
||||||
CoreOutputComm.VsyncNum = 50;
|
CoreComm.VsyncNum = 50;
|
||||||
CoreOutputComm.VsyncDen = 1;
|
CoreComm.VsyncDen = 1;
|
||||||
cpuclockrate = 1773448;
|
cpuclockrate = 1773448;
|
||||||
cpu_sequence = cpu_sequence_NTSC;
|
cpu_sequence = cpu_sequence_NTSC;
|
||||||
break;
|
break;
|
||||||
|
@ -405,7 +405,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
|
|
||||||
byte read_joyport(int addr)
|
byte read_joyport(int addr)
|
||||||
{
|
{
|
||||||
if (CoreInputComm.InputCallback != null) CoreInputComm.InputCallback();
|
if (CoreComm.InputCallback != null) CoreComm.InputCallback();
|
||||||
return handle_read_joyport(addr, false);
|
return handle_read_joyport(addr, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -602,9 +602,9 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
ret = sysbus_watch[addr].ApplyGameGenie(ret);
|
ret = sysbus_watch[addr].ApplyGameGenie(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CoreInputComm.MemoryCallbackSystem.HasRead)
|
if (CoreComm.MemoryCallbackSystem.HasRead)
|
||||||
{
|
{
|
||||||
CoreInputComm.MemoryCallbackSystem.TriggerRead(addr);
|
CoreComm.MemoryCallbackSystem.TriggerRead(addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
DB = ret;
|
DB = ret;
|
||||||
|
@ -665,9 +665,9 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
board.WritePRG(addr - 0x8000, value);
|
board.WritePRG(addr - 0x8000, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CoreInputComm.MemoryCallbackSystem.HasWrite)
|
if (CoreComm.MemoryCallbackSystem.HasWrite)
|
||||||
{
|
{
|
||||||
CoreInputComm.MemoryCallbackSystem.TriggerWrite(addr);
|
CoreComm.MemoryCallbackSystem.TriggerWrite(addr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,11 +16,10 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
static readonly bool USE_DATABASE = true;
|
static readonly bool USE_DATABASE = true;
|
||||||
public RomStatus RomStatus;
|
public RomStatus RomStatus;
|
||||||
|
|
||||||
public NES(GameInfo game, byte[] rom, byte[] fdsbios = null)
|
public NES(CoreComm comm, GameInfo game, byte[] rom, byte[] fdsbios = null)
|
||||||
{
|
{
|
||||||
CoreOutputComm = new CoreOutputComm();
|
CoreComm = comm;
|
||||||
CoreOutputComm.CpuTraceAvailable = true;
|
CoreComm.CpuTraceAvailable = true;
|
||||||
CoreInputComm = new BizHawk.CoreInputComm();
|
|
||||||
BootGodDB.Initialize();
|
BootGodDB.Initialize();
|
||||||
SetPalette(Palettes.FCEUX_Standard);
|
SetPalette(Palettes.FCEUX_Standard);
|
||||||
videoProvider = new MyVideoProvider(this);
|
videoProvider = new MyVideoProvider(this);
|
||||||
|
@ -33,8 +32,8 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
for (int i = 0; i < b.NumSides; i++)
|
for (int i = 0; i < b.NumSides; i++)
|
||||||
ControllerDefinition.BoolButtons.Add("FDS Insert " + i);
|
ControllerDefinition.BoolButtons.Add("FDS Insert " + i);
|
||||||
|
|
||||||
CoreOutputComm.UsesDriveLed = true;
|
CoreComm.UsesDriveLed = true;
|
||||||
b.SetDriveLightCallback((val) => CoreOutputComm.DriveLED = val);
|
b.SetDriveLightCallback((val) => CoreComm.DriveLED = val);
|
||||||
}
|
}
|
||||||
if (vs_io)
|
if (vs_io)
|
||||||
{
|
{
|
||||||
|
@ -149,8 +148,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
NESWatch[] watches;
|
NESWatch[] watches;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CoreInputComm CoreInputComm { get; set; }
|
public CoreComm CoreComm { get; private set; }
|
||||||
public CoreOutputComm CoreOutputComm { get; private set; }
|
|
||||||
|
|
||||||
public DisplayType DisplayType { get { return BizHawk.DisplayType.NTSC; } }
|
public DisplayType DisplayType { get { return BizHawk.DisplayType.NTSC; } }
|
||||||
|
|
||||||
|
@ -176,8 +174,8 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
public void FillFrameBuffer()
|
public void FillFrameBuffer()
|
||||||
{
|
{
|
||||||
int backdrop = 0;
|
int backdrop = 0;
|
||||||
if (emu.CoreInputComm != null)
|
if (emu.CoreComm != null)
|
||||||
backdrop = emu.CoreInputComm.NES_BackdropColor;
|
backdrop = emu.CoreComm.NES_BackdropColor;
|
||||||
bool useBackdrop = (backdrop & 0xFF000000) != 0;
|
bool useBackdrop = (backdrop & 0xFF000000) != 0;
|
||||||
|
|
||||||
//TODO - we could recalculate this on the fly (and invalidate/recalculate it when the palette is changed)
|
//TODO - we could recalculate this on the fly (and invalidate/recalculate it when the palette is changed)
|
||||||
|
@ -201,7 +199,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
public int BackgroundColor { get { return 0; } }
|
public int BackgroundColor { get { return 0; } }
|
||||||
}
|
}
|
||||||
|
|
||||||
public int FirstDrawLine { get { return videoProvider.top; } set { videoProvider.top = value; CoreOutputComm.ScreenLogicalOffsetY = videoProvider.top; } }
|
public int FirstDrawLine { get { return videoProvider.top; } set { videoProvider.top = value; CoreComm.ScreenLogicalOffsetY = videoProvider.top; } }
|
||||||
public int LastDrawLine { get { return videoProvider.bottom; } set { videoProvider.bottom = value; } }
|
public int LastDrawLine { get { return videoProvider.bottom; } set { videoProvider.bottom = value; } }
|
||||||
|
|
||||||
public void SetClipLeftAndRight(bool clip)
|
public void SetClipLeftAndRight(bool clip)
|
||||||
|
@ -217,7 +215,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
videoProvider.right = 255;
|
videoProvider.right = 255;
|
||||||
}
|
}
|
||||||
|
|
||||||
CoreOutputComm.ScreenLogicalOffsetX = videoProvider.left;
|
CoreComm.ScreenLogicalOffsetX = videoProvider.left;
|
||||||
videoProvider.FillFrameBuffer();
|
videoProvider.FillFrameBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -698,17 +696,17 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
if (origin == EDetectionOrigin.BootGodDB)
|
if (origin == EDetectionOrigin.BootGodDB)
|
||||||
{
|
{
|
||||||
RomStatus = RomStatus.GoodDump;
|
RomStatus = RomStatus.GoodDump;
|
||||||
CoreOutputComm.RomStatusAnnotation = "Identified from BootGod's database";
|
CoreComm.RomStatusAnnotation = "Identified from BootGod's database";
|
||||||
}
|
}
|
||||||
if (origin == EDetectionOrigin.UNIF)
|
if (origin == EDetectionOrigin.UNIF)
|
||||||
{
|
{
|
||||||
RomStatus = RomStatus.NotInDatabase;
|
RomStatus = RomStatus.NotInDatabase;
|
||||||
CoreOutputComm.RomStatusAnnotation = "Inferred from UNIF header; somewhat suspicious";
|
CoreComm.RomStatusAnnotation = "Inferred from UNIF header; somewhat suspicious";
|
||||||
}
|
}
|
||||||
if (origin == EDetectionOrigin.INES)
|
if (origin == EDetectionOrigin.INES)
|
||||||
{
|
{
|
||||||
RomStatus = RomStatus.NotInDatabase;
|
RomStatus = RomStatus.NotInDatabase;
|
||||||
CoreOutputComm.RomStatusAnnotation = "Inferred from iNES header; potentially wrong";
|
CoreComm.RomStatusAnnotation = "Inferred from iNES header; potentially wrong";
|
||||||
}
|
}
|
||||||
if (origin == EDetectionOrigin.GameDB)
|
if (origin == EDetectionOrigin.GameDB)
|
||||||
{
|
{
|
||||||
|
@ -723,7 +721,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
}
|
}
|
||||||
|
|
||||||
LoadReport.Flush();
|
LoadReport.Flush();
|
||||||
CoreOutputComm.RomStatusDetails = LoadReport.ToString();
|
CoreComm.RomStatusDetails = LoadReport.ToString();
|
||||||
|
|
||||||
//create the board's rom and vrom
|
//create the board's rom and vrom
|
||||||
if (iNesHeaderInfo != null)
|
if (iNesHeaderInfo != null)
|
||||||
|
|
|
@ -223,7 +223,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
pixelcolor |= 0x8000; //whats this? i think its a flag to indicate a hidden background to be used by the canvas filling logic later
|
pixelcolor |= 0x8000; //whats this? i think its a flag to indicate a hidden background to be used by the canvas filling logic later
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!nes.CoreInputComm.NES_ShowBG)
|
if (!nes.CoreComm.NES_ShowBG)
|
||||||
pixelcolor = 0x8000; //whats this? i think its a flag to indicate a hidden background to be used by the canvas filling logic later
|
pixelcolor = 0x8000; //whats this? i think its a flag to indicate a hidden background to be used by the canvas filling logic later
|
||||||
|
|
||||||
//look for a sprite to be drawn
|
//look for a sprite to be drawn
|
||||||
|
@ -259,7 +259,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
Reg2002_objhit |= (oam->index == 0 && pixel != 0 && rasterpos < 255);
|
Reg2002_objhit |= (oam->index == 0 && pixel != 0 && rasterpos < 255);
|
||||||
//priority handling, if in front of BG:
|
//priority handling, if in front of BG:
|
||||||
bool drawsprite = !(((oam->oam[2] & 0x20) != 0) && ((pixel & 3) != 0));
|
bool drawsprite = !(((oam->oam[2] & 0x20) != 0) && ((pixel & 3) != 0));
|
||||||
if (drawsprite && nes.CoreInputComm.NES_ShowOBJ)
|
if (drawsprite && nes.CoreComm.NES_ShowOBJ)
|
||||||
{
|
{
|
||||||
//bring in the palette bits and palettize
|
//bring in the palette bits and palettize
|
||||||
spixel |= (oam->oam[2] & 3) << 2;
|
spixel |= (oam->oam[2] & 3) << 2;
|
||||||
|
@ -300,7 +300,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
if (oamcount >= 8 && reg_2001.PPUON)
|
if (oamcount >= 8 && reg_2001.PPUON)
|
||||||
{
|
{
|
||||||
Reg2002_objoverflow = true;
|
Reg2002_objoverflow = true;
|
||||||
if(!nes.CoreInputComm.NES_UnlimitedSprites)
|
if(!nes.CoreComm.NES_UnlimitedSprites)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//just copy some bytes into the internal sprite buffer
|
//just copy some bytes into the internal sprite buffer
|
||||||
|
|
|
@ -405,7 +405,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo.SNES
|
||||||
if (hint == "msu1.rom") return "";
|
if (hint == "msu1.rom") return "";
|
||||||
|
|
||||||
//build romfilename
|
//build romfilename
|
||||||
string test = Path.Combine(CoreInputComm.SNES_FirmwaresPath ?? "", hint);
|
string test = Path.Combine(CoreComm.SNES_FirmwaresPath ?? "", hint);
|
||||||
|
|
||||||
//does it exist?
|
//does it exist?
|
||||||
if (!File.Exists(test))
|
if (!File.Exists(test))
|
||||||
|
@ -422,7 +422,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo.SNES
|
||||||
|
|
||||||
void snes_trace(string msg)
|
void snes_trace(string msg)
|
||||||
{
|
{
|
||||||
CoreInputComm.Tracer.Put(msg);
|
CoreComm.Tracer.Put(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SnesColors.ColorType CurrPalette { get; private set; }
|
public SnesColors.ColorType CurrPalette { get; private set; }
|
||||||
|
@ -435,8 +435,9 @@ namespace BizHawk.Emulation.Consoles.Nintendo.SNES
|
||||||
BizHawk.Emulation.Consoles.Nintendo.SNES.LibsnesDll.snes_set_color_lut((IntPtr)p);
|
BizHawk.Emulation.Consoles.Nintendo.SNES.LibsnesDll.snes_set_color_lut((IntPtr)p);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LibsnesCore()
|
public LibsnesCore(CoreComm comm)
|
||||||
{
|
{
|
||||||
|
CoreComm = comm;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Load(GameInfo game, byte[] romData, byte[] sgbRomData, bool DeterministicEmulation)
|
public void Load(GameInfo game, byte[] romData, byte[] sgbRomData, bool DeterministicEmulation)
|
||||||
|
@ -506,16 +507,16 @@ namespace BizHawk.Emulation.Consoles.Nintendo.SNES
|
||||||
if (LibsnesDll.snes_get_region() == LibsnesDll.SNES_REGION.NTSC)
|
if (LibsnesDll.snes_get_region() == LibsnesDll.SNES_REGION.NTSC)
|
||||||
{
|
{
|
||||||
//similar to what aviout reports from snes9x and seems logical from bsnes first principles. bsnes uses that numerator (ntsc master clockrate) for sure.
|
//similar to what aviout reports from snes9x and seems logical from bsnes first principles. bsnes uses that numerator (ntsc master clockrate) for sure.
|
||||||
CoreOutputComm.VsyncNum = 21477272;
|
CoreComm.VsyncNum = 21477272;
|
||||||
CoreOutputComm.VsyncDen = 4 * 341 * 262;
|
CoreComm.VsyncDen = 4 * 341 * 262;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CoreOutputComm.VsyncNum = 50;
|
CoreComm.VsyncNum = 50;
|
||||||
CoreOutputComm.VsyncDen = 1;
|
CoreComm.VsyncDen = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
CoreOutputComm.CpuTraceAvailable = true;
|
CoreComm.CpuTraceAvailable = true;
|
||||||
|
|
||||||
LibsnesDll.snes_power();
|
LibsnesDll.snes_power();
|
||||||
|
|
||||||
|
@ -547,7 +548,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo.SNES
|
||||||
|
|
||||||
ushort snes_input_state(int port, int device, int index, int id)
|
ushort snes_input_state(int port, int device, int index, int id)
|
||||||
{
|
{
|
||||||
if (!nocallbacks && CoreInputComm.InputCallback != null) CoreInputComm.InputCallback();
|
if (!nocallbacks && CoreComm.InputCallback != null) CoreComm.InputCallback();
|
||||||
//Console.WriteLine("{0} {1} {2} {3}", port, device, index, id);
|
//Console.WriteLine("{0} {1} {2} {3}", port, device, index, id);
|
||||||
|
|
||||||
string key = "P" + (1 + port) + " ";
|
string key = "P" + (1 + port) + " ";
|
||||||
|
@ -663,7 +664,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo.SNES
|
||||||
savestatebuff = ms.ToArray();
|
savestatebuff = ms.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!nocallbacks && CoreInputComm.Tracer.Enabled)
|
if (!nocallbacks && CoreComm.Tracer.Enabled)
|
||||||
LibsnesDll.snes_set_trace_callback(tracecb);
|
LibsnesDll.snes_set_trace_callback(tracecb);
|
||||||
else
|
else
|
||||||
LibsnesDll.snes_set_trace_callback(null);
|
LibsnesDll.snes_set_trace_callback(null);
|
||||||
|
@ -680,18 +681,18 @@ namespace BizHawk.Emulation.Consoles.Nintendo.SNES
|
||||||
bool powerSignal = Controller["Power"];
|
bool powerSignal = Controller["Power"];
|
||||||
if (powerSignal) LibsnesDll.snes_power();
|
if (powerSignal) LibsnesDll.snes_power();
|
||||||
|
|
||||||
LibsnesDll.snes_set_layer_enable(0, 0, CoreInputComm.SNES_ShowBG1_0);
|
LibsnesDll.snes_set_layer_enable(0, 0, CoreComm.SNES_ShowBG1_0);
|
||||||
LibsnesDll.snes_set_layer_enable(0, 1, CoreInputComm.SNES_ShowBG1_1);
|
LibsnesDll.snes_set_layer_enable(0, 1, CoreComm.SNES_ShowBG1_1);
|
||||||
LibsnesDll.snes_set_layer_enable(1, 0, CoreInputComm.SNES_ShowBG2_0);
|
LibsnesDll.snes_set_layer_enable(1, 0, CoreComm.SNES_ShowBG2_0);
|
||||||
LibsnesDll.snes_set_layer_enable(1, 1, CoreInputComm.SNES_ShowBG2_1);
|
LibsnesDll.snes_set_layer_enable(1, 1, CoreComm.SNES_ShowBG2_1);
|
||||||
LibsnesDll.snes_set_layer_enable(2, 0, CoreInputComm.SNES_ShowBG3_0);
|
LibsnesDll.snes_set_layer_enable(2, 0, CoreComm.SNES_ShowBG3_0);
|
||||||
LibsnesDll.snes_set_layer_enable(2, 1, CoreInputComm.SNES_ShowBG3_1);
|
LibsnesDll.snes_set_layer_enable(2, 1, CoreComm.SNES_ShowBG3_1);
|
||||||
LibsnesDll.snes_set_layer_enable(3, 0, CoreInputComm.SNES_ShowBG4_0);
|
LibsnesDll.snes_set_layer_enable(3, 0, CoreComm.SNES_ShowBG4_0);
|
||||||
LibsnesDll.snes_set_layer_enable(3, 1, CoreInputComm.SNES_ShowBG4_1);
|
LibsnesDll.snes_set_layer_enable(3, 1, CoreComm.SNES_ShowBG4_1);
|
||||||
LibsnesDll.snes_set_layer_enable(4, 0, CoreInputComm.SNES_ShowOBJ_0);
|
LibsnesDll.snes_set_layer_enable(4, 0, CoreComm.SNES_ShowOBJ_0);
|
||||||
LibsnesDll.snes_set_layer_enable(4, 1, CoreInputComm.SNES_ShowOBJ_1);
|
LibsnesDll.snes_set_layer_enable(4, 1, CoreComm.SNES_ShowOBJ_1);
|
||||||
LibsnesDll.snes_set_layer_enable(4, 2, CoreInputComm.SNES_ShowOBJ_2);
|
LibsnesDll.snes_set_layer_enable(4, 2, CoreComm.SNES_ShowOBJ_2);
|
||||||
LibsnesDll.snes_set_layer_enable(4, 3, CoreInputComm.SNES_ShowOBJ_3);
|
LibsnesDll.snes_set_layer_enable(4, 3, CoreComm.SNES_ShowOBJ_3);
|
||||||
|
|
||||||
// if the input poll callback is called, it will set this to false
|
// if the input poll callback is called, it will set this to false
|
||||||
IsLagFrame = true;
|
IsLagFrame = true;
|
||||||
|
@ -1015,10 +1016,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo.SNES
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
// Arbitrary extensible core comm mechanism
|
public CoreComm CoreComm { get; private set; }
|
||||||
public CoreInputComm CoreInputComm { get; set; }
|
|
||||||
public CoreOutputComm CoreOutputComm { get { return _CoreOutputComm; } }
|
|
||||||
CoreOutputComm _CoreOutputComm = new CoreOutputComm();
|
|
||||||
|
|
||||||
// ----- Client Debugging API stuff -----
|
// ----- Client Debugging API stuff -----
|
||||||
unsafe MemoryDomain MakeMemoryDomain(string name, LibsnesDll.SNES_MEMORY id, Endian endian)
|
unsafe MemoryDomain MakeMemoryDomain(string name, LibsnesDll.SNES_MEMORY id, Endian endian)
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
|
|
||||||
byte ReadInput()
|
byte ReadInput()
|
||||||
{
|
{
|
||||||
if (CoreInputComm.InputCallback != null) CoreInputComm.InputCallback();
|
if (CoreComm.InputCallback != null) CoreComm.InputCallback();
|
||||||
byte value = 0x3F;
|
byte value = 0x3F;
|
||||||
|
|
||||||
int player = SelectedController + 1;
|
int player = SelectedController + 1;
|
||||||
|
|
|
@ -33,9 +33,9 @@
|
||||||
return 0xFF;
|
return 0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CoreInputComm.MemoryCallbackSystem.HasRead)
|
if (CoreComm.MemoryCallbackSystem.HasRead)
|
||||||
{
|
{
|
||||||
CoreInputComm.MemoryCallbackSystem.TriggerRead(addr);
|
CoreComm.MemoryCallbackSystem.TriggerRead(addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.Error("MEM", "UNHANDLED READ: {0:X6}", addr);
|
Log.Error("MEM", "UNHANDLED READ: {0:X6}", addr);
|
||||||
|
@ -74,9 +74,9 @@
|
||||||
else
|
else
|
||||||
Log.Error("MEM", "UNHANDLED WRITE: {0:X6}:{1:X2}", addr, value);
|
Log.Error("MEM", "UNHANDLED WRITE: {0:X6}:{1:X2}", addr, value);
|
||||||
|
|
||||||
if (CoreInputComm.MemoryCallbackSystem.HasWrite)
|
if (CoreComm.MemoryCallbackSystem.HasWrite)
|
||||||
{
|
{
|
||||||
CoreInputComm.MemoryCallbackSystem.TriggerWrite(addr);
|
CoreComm.MemoryCallbackSystem.TriggerWrite(addr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,10 +51,10 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
|
||||||
// 21,477,270 Machine clocks / sec
|
// 21,477,270 Machine clocks / sec
|
||||||
// 7,159,090 Cpu cycles / sec
|
// 7,159,090 Cpu cycles / sec
|
||||||
|
|
||||||
public PCEngine(GameInfo game, byte[] rom)
|
public PCEngine(CoreComm comm, GameInfo game, byte[] rom)
|
||||||
{
|
{
|
||||||
CoreOutputComm = new CoreOutputComm();
|
CoreComm = comm;
|
||||||
CoreOutputComm.CpuTraceAvailable = true;
|
CoreComm.CpuTraceAvailable = true;
|
||||||
|
|
||||||
switch (game.System)
|
switch (game.System)
|
||||||
{
|
{
|
||||||
|
@ -70,17 +70,17 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
|
||||||
Init(game, rom);
|
Init(game, rom);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PCEngine(GameInfo game, Disc disc, byte[] rom)
|
public PCEngine(CoreComm comm, GameInfo game, Disc disc, byte[] rom)
|
||||||
{
|
{
|
||||||
|
CoreComm = comm;
|
||||||
|
CoreComm.CpuTraceAvailable = true;
|
||||||
|
CoreComm.UsesDriveLed = true;
|
||||||
systemid = "PCECD";
|
systemid = "PCECD";
|
||||||
CoreOutputComm = new CoreOutputComm();
|
|
||||||
CoreOutputComm.CpuTraceAvailable = true;
|
|
||||||
CoreOutputComm.UsesDriveLed = true;
|
|
||||||
Type = NecSystemType.TurboCD;
|
Type = NecSystemType.TurboCD;
|
||||||
this.disc = disc;
|
this.disc = disc;
|
||||||
Init(game, rom);
|
Init(game, rom);
|
||||||
// the default RomStatusDetails don't do anything with Disc
|
// the default RomStatusDetails don't do anything with Disc
|
||||||
CoreOutputComm.RomStatusDetails = string.Format("{0}\r\nDisk partial hash:{1}", game.Name, disc.GetHash());
|
CoreComm.RomStatusDetails = string.Format("{0}\r\nDisk partial hash:{1}", game.Name, disc.GetHash());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Init(GameInfo game, byte[] rom)
|
void Init(GameInfo game, byte[] rom)
|
||||||
|
@ -92,7 +92,7 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
|
||||||
PSG = new HuC6280PSG();
|
PSG = new HuC6280PSG();
|
||||||
SCSI = new ScsiCDBus(this, disc);
|
SCSI = new ScsiCDBus(this, disc);
|
||||||
|
|
||||||
Cpu.Logger = (s) => CoreInputComm.Tracer.Put(s);
|
Cpu.Logger = (s) => CoreComm.Tracer.Put(s);
|
||||||
|
|
||||||
if (TurboGrafx)
|
if (TurboGrafx)
|
||||||
{
|
{
|
||||||
|
@ -244,12 +244,12 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
|
||||||
public void FrameAdvance(bool render, bool rendersound)
|
public void FrameAdvance(bool render, bool rendersound)
|
||||||
{
|
{
|
||||||
lagged = true;
|
lagged = true;
|
||||||
CoreOutputComm.DriveLED = false;
|
CoreComm.DriveLED = false;
|
||||||
Controller.UpdateControls(Frame++);
|
Controller.UpdateControls(Frame++);
|
||||||
PSG.BeginFrame(Cpu.TotalExecutedCycles);
|
PSG.BeginFrame(Cpu.TotalExecutedCycles);
|
||||||
|
|
||||||
Cpu.Debug = CoreInputComm.Tracer.Enabled;
|
Cpu.Debug = CoreComm.Tracer.Enabled;
|
||||||
|
|
||||||
if (SuperGrafx)
|
if (SuperGrafx)
|
||||||
VPC.ExecFrame(render);
|
VPC.ExecFrame(render);
|
||||||
else
|
else
|
||||||
|
@ -268,8 +268,7 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
|
||||||
islag = false;
|
islag = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CoreInputComm CoreInputComm { get; set; }
|
public CoreComm CoreComm { get; private set; }
|
||||||
public CoreOutputComm CoreOutputComm { get; private set; }
|
|
||||||
|
|
||||||
public IVideoProvider VideoProvider
|
public IVideoProvider VideoProvider
|
||||||
{
|
{
|
||||||
|
|
|
@ -166,7 +166,7 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
|
||||||
if (DataReadInProgress && pce.Cpu.TotalExecutedCycles > DataReadWaitTimer)
|
if (DataReadInProgress && pce.Cpu.TotalExecutedCycles > DataReadWaitTimer)
|
||||||
{
|
{
|
||||||
if (SectorsLeftToRead > 0)
|
if (SectorsLeftToRead > 0)
|
||||||
pce.CoreOutputComm.DriveLED = true;
|
pce.CoreComm.DriveLED = true;
|
||||||
|
|
||||||
if (DataIn.Count == 0)
|
if (DataIn.Count == 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -108,8 +108,8 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
|
||||||
if (ActiveLine >= FrameHeight)
|
if (ActiveLine >= FrameHeight)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
RenderBackgroundScanline(pce.CoreInputComm.PCE_ShowBG1);
|
RenderBackgroundScanline(pce.CoreComm.PCE_ShowBG1);
|
||||||
RenderSpritesScanline(pce.CoreInputComm.PCE_ShowOBJ1);
|
RenderSpritesScanline(pce.CoreComm.PCE_ShowOBJ1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderBackgroundScanline(bool show)
|
void RenderBackgroundScanline(bool show)
|
||||||
|
|
|
@ -267,16 +267,16 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
|
||||||
switch (EffectivePriorityMode)
|
switch (EffectivePriorityMode)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
RenderBackgroundScanline(VDC1, 12, PCE.CoreInputComm.PCE_ShowBG1);
|
RenderBackgroundScanline(VDC1, 12, PCE.CoreComm.PCE_ShowBG1);
|
||||||
RenderBackgroundScanline(VDC2, 2, PCE.CoreInputComm.PCE_ShowBG2);
|
RenderBackgroundScanline(VDC2, 2, PCE.CoreComm.PCE_ShowBG2);
|
||||||
RenderSpritesScanline(VDC1, 11, 14, PCE.CoreInputComm.PCE_ShowOBJ1);
|
RenderSpritesScanline(VDC1, 11, 14, PCE.CoreComm.PCE_ShowOBJ1);
|
||||||
RenderSpritesScanline(VDC2, 1, 3, PCE.CoreInputComm.PCE_ShowOBJ2);
|
RenderSpritesScanline(VDC2, 1, 3, PCE.CoreComm.PCE_ShowOBJ2);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
RenderBackgroundScanline(VDC1, 12, PCE.CoreInputComm.PCE_ShowBG1);
|
RenderBackgroundScanline(VDC1, 12, PCE.CoreComm.PCE_ShowBG1);
|
||||||
RenderBackgroundScanline(VDC2, 2, PCE.CoreInputComm.PCE_ShowBG2);
|
RenderBackgroundScanline(VDC2, 2, PCE.CoreComm.PCE_ShowBG2);
|
||||||
RenderSpritesScanline(VDC1, 11, 14, PCE.CoreInputComm.PCE_ShowOBJ1);
|
RenderSpritesScanline(VDC1, 11, 14, PCE.CoreComm.PCE_ShowOBJ1);
|
||||||
RenderSpritesScanline(VDC2, 1, 13, PCE.CoreInputComm.PCE_ShowOBJ2);
|
RenderSpritesScanline(VDC2, 1, 13, PCE.CoreComm.PCE_ShowOBJ2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,8 +14,7 @@ namespace BizHawk.Emulation.Consoles.PSX
|
||||||
|
|
||||||
private int[] frameBuffer = new int[0];
|
private int[] frameBuffer = new int[0];
|
||||||
private Random rand = new Random();
|
private Random rand = new Random();
|
||||||
public CoreInputComm CoreInputComm { get; set; }
|
public CoreComm CoreComm { get; private set; }
|
||||||
public CoreOutputComm CoreOutputComm { get; private set; }
|
|
||||||
public IVideoProvider VideoProvider { get { return this; } }
|
public IVideoProvider VideoProvider { get { return this; } }
|
||||||
public ISoundProvider SoundProvider { get { return this; } }
|
public ISoundProvider SoundProvider { get { return this; } }
|
||||||
public ISyncSoundProvider SyncSoundProvider { get { return new FakeSyncSound(this, 735); } }
|
public ISyncSoundProvider SyncSoundProvider { get { return new FakeSyncSound(this, 735); } }
|
||||||
|
@ -50,11 +49,10 @@ namespace BizHawk.Emulation.Consoles.PSX
|
||||||
//BizHawk.Emulation.Consoles.Nintendo.SNES.LibsnesDll.snes_set_audio_sample(null);
|
//BizHawk.Emulation.Consoles.Nintendo.SNES.LibsnesDll.snes_set_audio_sample(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Octoshock()
|
public Octoshock(CoreComm comm)
|
||||||
{
|
{
|
||||||
var domains = new List<MemoryDomain>();
|
var domains = new List<MemoryDomain>();
|
||||||
CoreOutputComm = new CoreOutputComm();
|
CoreComm = comm;
|
||||||
CoreInputComm = new CoreInputComm();
|
|
||||||
VirtualWidth = BufferWidth = 256;
|
VirtualWidth = BufferWidth = 256;
|
||||||
BufferHeight = 192;
|
BufferHeight = 192;
|
||||||
}
|
}
|
||||||
|
@ -121,7 +119,7 @@ namespace BizHawk.Emulation.Consoles.PSX
|
||||||
if (parts[0] != "$psx") throw new InvalidOperationException("Octoshock using some weird path we dont handle yet");
|
if (parts[0] != "$psx") throw new InvalidOperationException("Octoshock using some weird path we dont handle yet");
|
||||||
if (parts[1] == "firmware")
|
if (parts[1] == "firmware")
|
||||||
{
|
{
|
||||||
fname = Path.Combine(CurrOctoshockCore.CoreInputComm.PSX_FirmwaresPath, parts[2]);
|
fname = Path.Combine(CurrOctoshockCore.CoreComm.PSX_FirmwaresPath, parts[2]);
|
||||||
if (!File.Exists(fname))
|
if (!File.Exists(fname))
|
||||||
{
|
{
|
||||||
System.Windows.Forms.MessageBox.Show("the Octoshock core is referencing a firmware file which could not be found. Please make sure it's in your configured PSX firmwares folder. The referenced filename is: " + parts[1]);
|
System.Windows.Forms.MessageBox.Show("the Octoshock core is referencing a firmware file which could not be found. Please make sure it's in your configured PSX firmwares folder. The referenced filename is: " + parts[1]);
|
||||||
|
|
|
@ -73,9 +73,9 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
WriteCallback write32;
|
WriteCallback write32;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public Genesis(GameInfo game, byte[] rom)
|
public Genesis(CoreComm comm, GameInfo game, byte[] rom)
|
||||||
{
|
{
|
||||||
CoreOutputComm = new CoreOutputComm();
|
CoreComm = comm;
|
||||||
MainCPU = new MC68000();
|
MainCPU = new MC68000();
|
||||||
SoundCPU = new Z80A();
|
SoundCPU = new Z80A();
|
||||||
YM2612 = new YM2612() { MaxVolume = 23405 };
|
YM2612 = new YM2612() { MaxVolume = 23405 };
|
||||||
|
@ -250,8 +250,7 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
unchecked { VDP.VdpStatusWord &= (ushort)~GenVDP.StatusVerticalInterruptPending; }
|
unchecked { VDP.VdpStatusWord &= (ushort)~GenVDP.StatusVerticalInterruptPending; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public CoreInputComm CoreInputComm { get; set; }
|
public CoreComm CoreComm { get; private set; }
|
||||||
public CoreOutputComm CoreOutputComm { get; private set; }
|
|
||||||
|
|
||||||
public IVideoProvider VideoProvider
|
public IVideoProvider VideoProvider
|
||||||
{
|
{
|
||||||
|
|
|
@ -106,7 +106,7 @@
|
||||||
|
|
||||||
void ReadController(ref byte data)
|
void ReadController(ref byte data)
|
||||||
{
|
{
|
||||||
if (CoreInputComm.InputCallback != null) CoreInputComm.InputCallback();
|
if (CoreComm.InputCallback != null) CoreComm.InputCallback();
|
||||||
data &= 0xC0;
|
data &= 0xC0;
|
||||||
if ((data & 0x40) != 0) // TH high
|
if ((data & 0x40) != 0) // TH high
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
byte ReadControls1()
|
byte ReadControls1()
|
||||||
{
|
{
|
||||||
if (CoreInputComm.InputCallback != null) CoreInputComm.InputCallback();
|
if (CoreComm.InputCallback != null) CoreComm.InputCallback();
|
||||||
lagged = false;
|
lagged = false;
|
||||||
byte value = 0xFF;
|
byte value = 0xFF;
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
|
|
||||||
byte ReadControls2()
|
byte ReadControls2()
|
||||||
{
|
{
|
||||||
if (CoreInputComm.InputCallback != null) CoreInputComm.InputCallback();
|
if (CoreComm.InputCallback != null) CoreComm.InputCallback();
|
||||||
lagged = false;
|
lagged = false;
|
||||||
byte value = 0xFF;
|
byte value = 0xFF;
|
||||||
|
|
||||||
|
|
|
@ -43,9 +43,9 @@
|
||||||
ret = SystemRam[address & RamSizeMask];
|
ret = SystemRam[address & RamSizeMask];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CoreInputComm.MemoryCallbackSystem.HasRead)
|
if (CoreComm.MemoryCallbackSystem.HasRead)
|
||||||
{
|
{
|
||||||
CoreInputComm.MemoryCallbackSystem.TriggerRead(address);
|
CoreComm.MemoryCallbackSystem.TriggerRead(address);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -81,9 +81,9 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CoreInputComm.MemoryCallbackSystem.HasWrite)
|
if (CoreComm.MemoryCallbackSystem.HasWrite)
|
||||||
{
|
{
|
||||||
CoreInputComm.MemoryCallbackSystem.TriggerWrite(address);
|
CoreComm.MemoryCallbackSystem.TriggerWrite(address);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -85,12 +85,13 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
public DisplayType DisplayType { get; set; }
|
public DisplayType DisplayType { get; set; }
|
||||||
public bool DeterministicEmulation { get { return true; } }
|
public bool DeterministicEmulation { get { return true; } }
|
||||||
|
|
||||||
public SMS(GameInfo game, byte[] rom)
|
public SMS(CoreComm comm, GameInfo game, byte[] rom)
|
||||||
{
|
{
|
||||||
IsGameGear = game.System == "GG";
|
CoreComm = comm;
|
||||||
|
|
||||||
|
IsGameGear = game.System == "GG";
|
||||||
RomData = rom;
|
RomData = rom;
|
||||||
CoreOutputComm = new CoreOutputComm();
|
CoreComm.CpuTraceAvailable = true;
|
||||||
CoreOutputComm.CpuTraceAvailable = true;
|
|
||||||
|
|
||||||
if (RomData.Length % BankSize != 0)
|
if (RomData.Length % BankSize != 0)
|
||||||
Array.Resize(ref RomData, ((RomData.Length / BankSize) + 1) * BankSize);
|
Array.Resize(ref RomData, ((RomData.Length / BankSize) + 1) * BankSize);
|
||||||
|
@ -98,8 +99,8 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
|
|
||||||
DisplayType = DisplayType.NTSC;
|
DisplayType = DisplayType.NTSC;
|
||||||
if (game["PAL"]) DisplayType = DisplayType.PAL;
|
if (game["PAL"]) DisplayType = DisplayType.PAL;
|
||||||
CoreOutputComm.VsyncNum = DisplayType == DisplayType.NTSC ? 60 : 50;
|
CoreComm.VsyncNum = DisplayType == DisplayType.NTSC ? 60 : 50;
|
||||||
CoreOutputComm.VsyncDen = 1;
|
CoreComm.VsyncDen = 1;
|
||||||
|
|
||||||
if (game["Japan"]) Region = "Japan";
|
if (game["Japan"]) Region = "Japan";
|
||||||
if (game.NotInDatabase || game["FM"] && game["UseFM"])
|
if (game.NotInDatabase || game["FM"] && game["UseFM"])
|
||||||
|
@ -201,9 +202,9 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
lagged = true;
|
lagged = true;
|
||||||
Controller.UpdateControls(Frame++);
|
Controller.UpdateControls(Frame++);
|
||||||
PSG.BeginFrame(Cpu.TotalExecutedCycles);
|
PSG.BeginFrame(Cpu.TotalExecutedCycles);
|
||||||
Cpu.Debug = CoreInputComm.Tracer.Enabled;
|
Cpu.Debug = CoreComm.Tracer.Enabled;
|
||||||
if (Cpu.Debug && Cpu.Logger == null) // TODO, lets not do this on each frame. But lets refactor CoreInputComm/CoreOutputComm first
|
if (Cpu.Debug && Cpu.Logger == null) // TODO, lets not do this on each frame. But lets refactor CoreComm/CoreComm first
|
||||||
Cpu.Logger = (s) => CoreInputComm.Tracer.Put(s);
|
Cpu.Logger = (s) => CoreComm.Tracer.Put(s);
|
||||||
|
|
||||||
if (IsGameGear == false)
|
if (IsGameGear == false)
|
||||||
Cpu.NonMaskableInterrupt = Controller["Pause"];
|
Cpu.NonMaskableInterrupt = Controller["Pause"];
|
||||||
|
@ -359,8 +360,7 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
}
|
}
|
||||||
|
|
||||||
public IVideoProvider VideoProvider { get { return Vdp; } }
|
public IVideoProvider VideoProvider { get { return Vdp; } }
|
||||||
public CoreInputComm CoreInputComm { get; set; }
|
public CoreComm CoreComm { get; private set; }
|
||||||
public CoreOutputComm CoreOutputComm { get; private set; }
|
|
||||||
|
|
||||||
ISoundProvider ActiveSoundProvider;
|
ISoundProvider ActiveSoundProvider;
|
||||||
public ISoundProvider SoundProvider { get { return ActiveSoundProvider; } }
|
public ISoundProvider SoundProvider { get { return ActiveSoundProvider; } }
|
||||||
|
|
|
@ -289,7 +289,7 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
|
|
||||||
if (mode == VdpMode.GameGear)
|
if (mode == VdpMode.GameGear)
|
||||||
{
|
{
|
||||||
if (Sms.CoreInputComm.GG_ShowClippedRegions == false)
|
if (Sms.CoreComm.GG_ShowClippedRegions == false)
|
||||||
{
|
{
|
||||||
int yStart = (FrameHeight - 144)/2;
|
int yStart = (FrameHeight - 144)/2;
|
||||||
for (int y = 0; y < 144; y++)
|
for (int y = 0; y < 144; y++)
|
||||||
|
@ -297,7 +297,7 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
GameGearFrameBuffer[(y * 160) + x] = FrameBuffer[((y + yStart) * 256) + x + 48];
|
GameGearFrameBuffer[(y * 160) + x] = FrameBuffer[((y + yStart) * 256) + x + 48];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Sms.CoreInputComm.GG_HighlightActiveDisplayRegion && Sms.CoreInputComm.GG_ShowClippedRegions)
|
if (Sms.CoreComm.GG_HighlightActiveDisplayRegion && Sms.CoreComm.GG_ShowClippedRegions)
|
||||||
{
|
{
|
||||||
// Top 24 scanlines
|
// Top 24 scanlines
|
||||||
for (int y = 0; y < 24; y++)
|
for (int y = 0; y < 24; y++)
|
||||||
|
|
|
@ -377,28 +377,28 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderBackgroundCurrentLine(Sms.CoreInputComm.SMS_ShowBG);
|
RenderBackgroundCurrentLine(Sms.CoreComm.SMS_ShowBG);
|
||||||
|
|
||||||
if (EnableDoubledSprites)
|
if (EnableDoubledSprites)
|
||||||
RenderSpritesCurrentLineDoubleSize(Sms.CoreInputComm.SMS_ShowOBJ);
|
RenderSpritesCurrentLineDoubleSize(Sms.CoreComm.SMS_ShowOBJ);
|
||||||
else
|
else
|
||||||
RenderSpritesCurrentLine(Sms.CoreInputComm.SMS_ShowOBJ);
|
RenderSpritesCurrentLine(Sms.CoreComm.SMS_ShowOBJ);
|
||||||
}
|
}
|
||||||
else if (TmsMode == 2)
|
else if (TmsMode == 2)
|
||||||
{
|
{
|
||||||
if (render == false)
|
if (render == false)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
RenderBackgroundM2(Sms.CoreInputComm.SMS_ShowBG);
|
RenderBackgroundM2(Sms.CoreComm.SMS_ShowBG);
|
||||||
RenderTmsSprites(Sms.CoreInputComm.SMS_ShowOBJ);
|
RenderTmsSprites(Sms.CoreComm.SMS_ShowOBJ);
|
||||||
}
|
}
|
||||||
else if (TmsMode == 0)
|
else if (TmsMode == 0)
|
||||||
{
|
{
|
||||||
if (render == false)
|
if (render == false)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
RenderBackgroundM0(Sms.CoreInputComm.SMS_ShowBG);
|
RenderBackgroundM0(Sms.CoreComm.SMS_ShowBG);
|
||||||
RenderTmsSprites(Sms.CoreInputComm.SMS_ShowOBJ);
|
RenderTmsSprites(Sms.CoreComm.SMS_ShowOBJ);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -496,7 +496,7 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
|
|
||||||
public int[] GetVideoBuffer()
|
public int[] GetVideoBuffer()
|
||||||
{
|
{
|
||||||
if (mode == VdpMode.SMS || Sms.CoreInputComm.GG_ShowClippedRegions)
|
if (mode == VdpMode.SMS || Sms.CoreComm.GG_ShowClippedRegions)
|
||||||
return FrameBuffer;
|
return FrameBuffer;
|
||||||
return GameGearFrameBuffer;
|
return GameGearFrameBuffer;
|
||||||
}
|
}
|
||||||
|
@ -506,7 +506,7 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (mode == VdpMode.SMS || Sms.CoreInputComm.GG_ShowClippedRegions)
|
if (mode == VdpMode.SMS || Sms.CoreComm.GG_ShowClippedRegions)
|
||||||
return 256;
|
return 256;
|
||||||
return 160; // GameGear
|
return 160; // GameGear
|
||||||
}
|
}
|
||||||
|
@ -516,7 +516,7 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (mode == VdpMode.SMS || Sms.CoreInputComm.GG_ShowClippedRegions)
|
if (mode == VdpMode.SMS || Sms.CoreComm.GG_ShowClippedRegions)
|
||||||
return FrameHeight;
|
return FrameHeight;
|
||||||
return 144; // GameGear
|
return 144; // GameGear
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,21 +11,19 @@ namespace BizHawk
|
||||||
|
|
||||||
private int[] frameBuffer = new int[256 * 192];
|
private int[] frameBuffer = new int[256 * 192];
|
||||||
private Random rand = new Random();
|
private Random rand = new Random();
|
||||||
public CoreInputComm CoreInputComm { get; set; }
|
public CoreComm CoreComm { get; private set; }
|
||||||
public CoreOutputComm CoreOutputComm { get; private set; }
|
|
||||||
public IVideoProvider VideoProvider { get { return this; } }
|
public IVideoProvider VideoProvider { get { return this; } }
|
||||||
public ISoundProvider SoundProvider { get { return this; } }
|
public ISoundProvider SoundProvider { get { return this; } }
|
||||||
public ISyncSoundProvider SyncSoundProvider { get { return new FakeSyncSound(this, 735); } }
|
public ISyncSoundProvider SyncSoundProvider { get { return new FakeSyncSound(this, 735); } }
|
||||||
public bool StartAsyncSound() { return true; }
|
public bool StartAsyncSound() { return true; }
|
||||||
public void EndAsyncSound() { }
|
public void EndAsyncSound() { }
|
||||||
|
|
||||||
public NullEmulator()
|
public NullEmulator(CoreComm comm)
|
||||||
{
|
{
|
||||||
|
CoreComm = comm;
|
||||||
var domains = new List<MemoryDomain>(1);
|
var domains = new List<MemoryDomain>(1);
|
||||||
domains.Add(new MemoryDomain("Main RAM", 1, Endian.Little, addr => 0, (a, v) => { }));
|
domains.Add(new MemoryDomain("Main RAM", 1, Endian.Little, addr => 0, (a, v) => { }));
|
||||||
memoryDomains = domains.AsReadOnly();
|
memoryDomains = domains.AsReadOnly();
|
||||||
CoreOutputComm = new CoreOutputComm();
|
|
||||||
CoreInputComm = new CoreInputComm();
|
|
||||||
}
|
}
|
||||||
public void ResetFrameCounter()
|
public void ResetFrameCounter()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
using System.Text;
|
using System.Text;
|
||||||
namespace BizHawk
|
namespace BizHawk
|
||||||
{
|
{
|
||||||
public class CoreInputComm
|
public class CoreComm
|
||||||
{
|
{
|
||||||
public int NES_BackdropColor;
|
public int NES_BackdropColor;
|
||||||
public bool NES_UnlimitedSprites;
|
public bool NES_UnlimitedSprites;
|
||||||
|
@ -32,10 +32,7 @@ namespace BizHawk
|
||||||
public System.Action InputCallback;
|
public System.Action InputCallback;
|
||||||
|
|
||||||
public MemoryCallbackSystem MemoryCallbackSystem = new MemoryCallbackSystem();
|
public MemoryCallbackSystem MemoryCallbackSystem = new MemoryCallbackSystem();
|
||||||
}
|
|
||||||
|
|
||||||
public class CoreOutputComm
|
|
||||||
{
|
|
||||||
public double VsyncRate
|
public double VsyncRate
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|
|
@ -62,9 +62,10 @@ namespace BizHawk
|
||||||
void LoadStateBinary(BinaryReader reader);
|
void LoadStateBinary(BinaryReader reader);
|
||||||
byte[] SaveStateBinary();
|
byte[] SaveStateBinary();
|
||||||
|
|
||||||
// Arbitrary extensible core comm mechanism
|
/// <summary>
|
||||||
CoreInputComm CoreInputComm { get; set; }
|
/// the corecomm module in use by this core.
|
||||||
CoreOutputComm CoreOutputComm { get; }
|
/// </summary>
|
||||||
|
CoreComm CoreComm { get; }
|
||||||
|
|
||||||
// ----- Client Debugging API stuff -----
|
// ----- Client Debugging API stuff -----
|
||||||
IList<MemoryDomain> MemoryDomains { get; }
|
IList<MemoryDomain> MemoryDomains { get; }
|
||||||
|
|
|
@ -85,8 +85,8 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
private void buttonAuto_Click(object sender, EventArgs e)
|
private void buttonAuto_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
numericTextBoxW.Text = Global.Emulator.CoreOutputComm.NominalWidth.ToString();
|
numericTextBoxW.Text = Global.Emulator.CoreComm.NominalWidth.ToString();
|
||||||
numericTextBoxH.Text = Global.Emulator.CoreOutputComm.NominalHeight.ToString();
|
numericTextBoxH.Text = Global.Emulator.CoreComm.NominalHeight.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buttonOK_Click(object sender, EventArgs e)
|
private void buttonOK_Click(object sender, EventArgs e)
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace BizHawk.MultiClient
|
||||||
public static DisplayManager DisplayManager = new DisplayManager();
|
public static DisplayManager DisplayManager = new DisplayManager();
|
||||||
public static Config Config;
|
public static Config Config;
|
||||||
public static IEmulator Emulator;
|
public static IEmulator Emulator;
|
||||||
public static CoreInputComm CoreInputComm;
|
public static CoreComm CoreComm;
|
||||||
public static GameInfo Game;
|
public static GameInfo Game;
|
||||||
public static Controller SMSControls;
|
public static Controller SMSControls;
|
||||||
public static Controller PCEControls;
|
public static Controller PCEControls;
|
||||||
|
|
|
@ -650,8 +650,8 @@ namespace BizHawk.MultiClient
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dx -= Global.Emulator.CoreOutputComm.ScreenLogicalOffsetX;
|
dx -= Global.Emulator.CoreComm.ScreenLogicalOffsetX;
|
||||||
dy -= Global.Emulator.CoreOutputComm.ScreenLogicalOffsetY;
|
dy -= Global.Emulator.CoreComm.ScreenLogicalOffsetY;
|
||||||
}
|
}
|
||||||
|
|
||||||
Global.OSD.AddGUIText(luaStr.ToString(), dx, dy, alert, GetColor(background), GetColor(forecolor),
|
Global.OSD.AddGUIText(luaStr.ToString(), dx, dy, alert, GetColor(background), GetColor(forecolor),
|
||||||
|
@ -871,8 +871,8 @@ namespace BizHawk.MultiClient
|
||||||
Graphics GetGraphics()
|
Graphics GetGraphics()
|
||||||
{
|
{
|
||||||
var g = luaSurface.GetGraphics();
|
var g = luaSurface.GetGraphics();
|
||||||
int tx = Global.Emulator.CoreOutputComm.ScreenLogicalOffsetX;
|
int tx = Global.Emulator.CoreComm.ScreenLogicalOffsetX;
|
||||||
int ty = Global.Emulator.CoreOutputComm.ScreenLogicalOffsetY;
|
int ty = Global.Emulator.CoreComm.ScreenLogicalOffsetY;
|
||||||
if (tx != 0 || ty != 0)
|
if (tx != 0 || ty != 0)
|
||||||
{
|
{
|
||||||
var transform = g.Transform;
|
var transform = g.Transform;
|
||||||
|
@ -1159,23 +1159,23 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
if (Global.Emulator is BizHawk.Emulation.Consoles.Nintendo.NES)
|
if (Global.Emulator is BizHawk.Emulation.Consoles.Nintendo.NES)
|
||||||
{
|
{
|
||||||
Global.CoreInputComm.NES_ShowOBJ = Global.Config.NESDispSprites = (bool)lua_p[0];
|
Global.CoreComm.NES_ShowOBJ = Global.Config.NESDispSprites = (bool)lua_p[0];
|
||||||
Global.CoreInputComm.NES_ShowBG = Global.Config.NESDispBackground = (bool)lua_p[1];
|
Global.CoreComm.NES_ShowBG = Global.Config.NESDispBackground = (bool)lua_p[1];
|
||||||
}
|
}
|
||||||
else if (Global.Emulator is BizHawk.Emulation.Consoles.TurboGrafx.PCEngine)
|
else if (Global.Emulator is BizHawk.Emulation.Consoles.TurboGrafx.PCEngine)
|
||||||
{
|
{
|
||||||
Global.CoreInputComm.PCE_ShowOBJ1 = Global.Config.PCEDispOBJ1 = (bool)lua_p[0];
|
Global.CoreComm.PCE_ShowOBJ1 = Global.Config.PCEDispOBJ1 = (bool)lua_p[0];
|
||||||
Global.CoreInputComm.PCE_ShowBG1 = Global.Config.PCEDispBG1 = (bool)lua_p[1];
|
Global.CoreComm.PCE_ShowBG1 = Global.Config.PCEDispBG1 = (bool)lua_p[1];
|
||||||
if (lua_p.Length > 2)
|
if (lua_p.Length > 2)
|
||||||
{
|
{
|
||||||
Global.CoreInputComm.PCE_ShowOBJ2 = Global.Config.PCEDispOBJ2 = (bool)lua_p[2];
|
Global.CoreComm.PCE_ShowOBJ2 = Global.Config.PCEDispOBJ2 = (bool)lua_p[2];
|
||||||
Global.CoreInputComm.PCE_ShowBG2 = Global.Config.PCEDispBG2 = (bool)lua_p[3];
|
Global.CoreComm.PCE_ShowBG2 = Global.Config.PCEDispBG2 = (bool)lua_p[3];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (Global.Emulator is BizHawk.Emulation.Consoles.Sega.SMS)
|
else if (Global.Emulator is BizHawk.Emulation.Consoles.Sega.SMS)
|
||||||
{
|
{
|
||||||
Global.CoreInputComm.SMS_ShowOBJ = Global.Config.SMSDispOBJ = (bool)lua_p[0];
|
Global.CoreComm.SMS_ShowOBJ = Global.Config.SMSDispOBJ = (bool)lua_p[0];
|
||||||
Global.CoreInputComm.SMS_ShowBG = Global.Config.SMSDispBG = (bool)lua_p[1];
|
Global.CoreComm.SMS_ShowBG = Global.Config.SMSDispBG = (bool)lua_p[1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1183,7 +1183,7 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
if (luaf != null)
|
if (luaf != null)
|
||||||
{
|
{
|
||||||
Global.Emulator.CoreInputComm.InputCallback = delegate()
|
Global.Emulator.CoreComm.InputCallback = delegate()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -1198,7 +1198,7 @@ namespace BizHawk.MultiClient
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Global.Emulator.CoreInputComm.InputCallback = null;
|
Global.Emulator.CoreComm.InputCallback = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------
|
//----------------------------------------------------
|
||||||
|
@ -2609,7 +2609,7 @@ namespace BizHawk.MultiClient
|
||||||
public void nes_setdispbackground(bool show)
|
public void nes_setdispbackground(bool show)
|
||||||
{
|
{
|
||||||
Global.Config.NESDispBackground = show;
|
Global.Config.NESDispBackground = show;
|
||||||
Global.MainForm.SyncCoreInputComm();
|
Global.MainForm.SyncCoreCommInputSignals();
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool nes_getdispsprites()
|
public bool nes_getdispsprites()
|
||||||
|
@ -2620,7 +2620,7 @@ namespace BizHawk.MultiClient
|
||||||
public void nes_setdispsprites(bool show)
|
public void nes_setdispsprites(bool show)
|
||||||
{
|
{
|
||||||
Global.Config.NESDispSprites = show;
|
Global.Config.NESDispSprites = show;
|
||||||
Global.MainForm.SyncCoreInputComm();
|
Global.MainForm.SyncCoreCommInputSignals();
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool nes_getallowmorethaneightsprites()
|
public bool nes_getallowmorethaneightsprites()
|
||||||
|
@ -2633,7 +2633,7 @@ namespace BizHawk.MultiClient
|
||||||
Global.Config.NESAllowMoreThanEightSprites = allow;
|
Global.Config.NESAllowMoreThanEightSprites = allow;
|
||||||
if (Global.Emulator is NES)
|
if (Global.Emulator is NES)
|
||||||
{
|
{
|
||||||
(Global.Emulator as NES).CoreInputComm.NES_UnlimitedSprites = allow;
|
(Global.Emulator as NES).CoreComm.NES_UnlimitedSprites = allow;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2722,8 +2722,8 @@ namespace BizHawk.MultiClient
|
||||||
_addr = LuaInt(address);
|
_addr = LuaInt(address);
|
||||||
}
|
}
|
||||||
|
|
||||||
Global.Emulator.CoreInputComm.MemoryCallbackSystem.ReadAddr = _addr;
|
Global.Emulator.CoreComm.MemoryCallbackSystem.ReadAddr = _addr;
|
||||||
Global.Emulator.CoreInputComm.MemoryCallbackSystem.SetReadCallback(delegate(uint addr)
|
Global.Emulator.CoreComm.MemoryCallbackSystem.SetReadCallback(delegate(uint addr)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -2740,7 +2740,7 @@ namespace BizHawk.MultiClient
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Global.Emulator.CoreInputComm.MemoryCallbackSystem.SetReadCallback(null);
|
Global.Emulator.CoreComm.MemoryCallbackSystem.SetReadCallback(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2760,8 +2760,8 @@ namespace BizHawk.MultiClient
|
||||||
_addr = LuaInt(address);
|
_addr = LuaInt(address);
|
||||||
}
|
}
|
||||||
|
|
||||||
Global.Emulator.CoreInputComm.MemoryCallbackSystem.WriteAddr = _addr;
|
Global.Emulator.CoreComm.MemoryCallbackSystem.WriteAddr = _addr;
|
||||||
Global.Emulator.CoreInputComm.MemoryCallbackSystem.SetWriteCallback(delegate(uint addr)
|
Global.Emulator.CoreComm.MemoryCallbackSystem.SetWriteCallback(delegate(uint addr)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -2777,7 +2777,7 @@ namespace BizHawk.MultiClient
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Global.Emulator.CoreInputComm.MemoryCallbackSystem.SetWriteCallback(null);
|
Global.Emulator.CoreComm.MemoryCallbackSystem.SetWriteCallback(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
private void DumpStatus_Click(object sender, EventArgs e)
|
private void DumpStatus_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
string details = Global.Emulator.CoreOutputComm.RomStatusDetails;
|
string details = Global.Emulator.CoreComm.RomStatusDetails;
|
||||||
if (string.IsNullOrEmpty(details)) return;
|
if (string.IsNullOrEmpty(details)) return;
|
||||||
Global.Sound.StopSound();
|
Global.Sound.StopSound();
|
||||||
LogWindow.ShowReport("Dump Status Report", details, this);
|
LogWindow.ShowReport("Dump Status Report", details, this);
|
||||||
|
@ -670,7 +670,7 @@ namespace BizHawk.MultiClient
|
||||||
tAStudioToolStripMenuItem.ShortcutKeyDisplayString = Global.Config.TASTudio;
|
tAStudioToolStripMenuItem.ShortcutKeyDisplayString = Global.Config.TASTudio;
|
||||||
virtualPadToolStripMenuItem.ShortcutKeyDisplayString = Global.Config.OpenVirtualPadBinding;
|
virtualPadToolStripMenuItem.ShortcutKeyDisplayString = Global.Config.OpenVirtualPadBinding;
|
||||||
|
|
||||||
if (Global.Emulator.CoreOutputComm.CpuTraceAvailable)
|
if (Global.Emulator.CoreComm.CpuTraceAvailable)
|
||||||
{
|
{
|
||||||
traceLoggerToolStripMenuItem.Enabled = true;
|
traceLoggerToolStripMenuItem.Enabled = true;
|
||||||
}
|
}
|
||||||
|
@ -884,21 +884,21 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
NESGraphicsConfig g = new NESGraphicsConfig();
|
NESGraphicsConfig g = new NESGraphicsConfig();
|
||||||
g.ShowDialog();
|
g.ShowDialog();
|
||||||
SyncCoreInputComm();
|
SyncCoreCommInputSignals();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void pceGraphicsSettingsToolStripMenuItem_Click(object sender, EventArgs e)
|
private void pceGraphicsSettingsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
PCEGraphicsConfig g = new PCEGraphicsConfig();
|
PCEGraphicsConfig g = new PCEGraphicsConfig();
|
||||||
g.ShowDialog();
|
g.ShowDialog();
|
||||||
SyncCoreInputComm();
|
SyncCoreCommInputSignals();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void smsGraphicsSettingsToolStripMenuItem_Click(object sender, EventArgs e)
|
private void smsGraphicsSettingsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
SMSGraphicsConfig g = new SMSGraphicsConfig();
|
SMSGraphicsConfig g = new SMSGraphicsConfig();
|
||||||
g.ShowDialog();
|
g.ShowDialog();
|
||||||
SyncCoreInputComm();
|
SyncCoreCommInputSignals();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void MainForm_MouseClick(object sender, MouseEventArgs e)
|
public void MainForm_MouseClick(object sender, MouseEventArgs e)
|
||||||
|
@ -1815,7 +1815,7 @@ namespace BizHawk.MultiClient
|
||||||
if (Global.Emulator is LibsnesCore)
|
if (Global.Emulator is LibsnesCore)
|
||||||
{
|
{
|
||||||
Global.Config.SNES_ShowBG1_1 = Global.Config.SNES_ShowBG1_0 ^= true;
|
Global.Config.SNES_ShowBG1_1 = Global.Config.SNES_ShowBG1_0 ^= true;
|
||||||
SyncCoreInputComm();
|
SyncCoreCommInputSignals();
|
||||||
if (Global.Config.SNES_ShowBG1_1)
|
if (Global.Config.SNES_ShowBG1_1)
|
||||||
{
|
{
|
||||||
Global.OSD.AddMessage("BG 1 Layer On");
|
Global.OSD.AddMessage("BG 1 Layer On");
|
||||||
|
@ -1832,7 +1832,7 @@ namespace BizHawk.MultiClient
|
||||||
if (Global.Emulator is LibsnesCore)
|
if (Global.Emulator is LibsnesCore)
|
||||||
{
|
{
|
||||||
Global.Config.SNES_ShowBG2_1 = Global.Config.SNES_ShowBG2_0 ^= true;
|
Global.Config.SNES_ShowBG2_1 = Global.Config.SNES_ShowBG2_0 ^= true;
|
||||||
SyncCoreInputComm();
|
SyncCoreCommInputSignals();
|
||||||
if (Global.Config.SNES_ShowBG2_1)
|
if (Global.Config.SNES_ShowBG2_1)
|
||||||
{
|
{
|
||||||
Global.OSD.AddMessage("BG 2 Layer On");
|
Global.OSD.AddMessage("BG 2 Layer On");
|
||||||
|
@ -1849,7 +1849,7 @@ namespace BizHawk.MultiClient
|
||||||
if (Global.Emulator is LibsnesCore)
|
if (Global.Emulator is LibsnesCore)
|
||||||
{
|
{
|
||||||
Global.Config.SNES_ShowBG3_1 = Global.Config.SNES_ShowBG3_0 ^= true;
|
Global.Config.SNES_ShowBG3_1 = Global.Config.SNES_ShowBG3_0 ^= true;
|
||||||
SyncCoreInputComm();
|
SyncCoreCommInputSignals();
|
||||||
if (Global.Config.SNES_ShowBG3_1)
|
if (Global.Config.SNES_ShowBG3_1)
|
||||||
{
|
{
|
||||||
Global.OSD.AddMessage("BG 3 Layer On");
|
Global.OSD.AddMessage("BG 3 Layer On");
|
||||||
|
@ -1866,7 +1866,7 @@ namespace BizHawk.MultiClient
|
||||||
if (Global.Emulator is LibsnesCore)
|
if (Global.Emulator is LibsnesCore)
|
||||||
{
|
{
|
||||||
Global.Config.SNES_ShowBG4_1 = Global.Config.SNES_ShowBG4_0 ^= true;
|
Global.Config.SNES_ShowBG4_1 = Global.Config.SNES_ShowBG4_0 ^= true;
|
||||||
SyncCoreInputComm();
|
SyncCoreCommInputSignals();
|
||||||
if (Global.Config.SNES_ShowBG4_1)
|
if (Global.Config.SNES_ShowBG4_1)
|
||||||
{
|
{
|
||||||
Global.OSD.AddMessage("BG 4 Layer On");
|
Global.OSD.AddMessage("BG 4 Layer On");
|
||||||
|
@ -1883,7 +1883,7 @@ namespace BizHawk.MultiClient
|
||||||
if (Global.Emulator is LibsnesCore)
|
if (Global.Emulator is LibsnesCore)
|
||||||
{
|
{
|
||||||
Global.Config.SNES_ShowOBJ1 ^= true;
|
Global.Config.SNES_ShowOBJ1 ^= true;
|
||||||
SyncCoreInputComm();
|
SyncCoreCommInputSignals();
|
||||||
if (Global.Config.SNES_ShowOBJ1)
|
if (Global.Config.SNES_ShowOBJ1)
|
||||||
{
|
{
|
||||||
Global.OSD.AddMessage("OBJ 1 Layer On");
|
Global.OSD.AddMessage("OBJ 1 Layer On");
|
||||||
|
@ -1900,7 +1900,7 @@ namespace BizHawk.MultiClient
|
||||||
if (Global.Emulator is LibsnesCore)
|
if (Global.Emulator is LibsnesCore)
|
||||||
{
|
{
|
||||||
Global.Config.SNES_ShowOBJ2 ^= true;
|
Global.Config.SNES_ShowOBJ2 ^= true;
|
||||||
SyncCoreInputComm();
|
SyncCoreCommInputSignals();
|
||||||
if (Global.Config.SNES_ShowOBJ2)
|
if (Global.Config.SNES_ShowOBJ2)
|
||||||
{
|
{
|
||||||
Global.OSD.AddMessage("OBJ 2 Layer On");
|
Global.OSD.AddMessage("OBJ 2 Layer On");
|
||||||
|
@ -1917,7 +1917,7 @@ namespace BizHawk.MultiClient
|
||||||
if (Global.Emulator is LibsnesCore)
|
if (Global.Emulator is LibsnesCore)
|
||||||
{
|
{
|
||||||
Global.Config.SNES_ShowOBJ3 ^= true;
|
Global.Config.SNES_ShowOBJ3 ^= true;
|
||||||
SyncCoreInputComm();
|
SyncCoreCommInputSignals();
|
||||||
if (Global.Config.SNES_ShowOBJ3)
|
if (Global.Config.SNES_ShowOBJ3)
|
||||||
{
|
{
|
||||||
Global.OSD.AddMessage("OBJ 3 Layer On");
|
Global.OSD.AddMessage("OBJ 3 Layer On");
|
||||||
|
@ -1934,7 +1934,7 @@ namespace BizHawk.MultiClient
|
||||||
if (Global.Emulator is LibsnesCore)
|
if (Global.Emulator is LibsnesCore)
|
||||||
{
|
{
|
||||||
Global.Config.SNES_ShowOBJ4 ^= true;
|
Global.Config.SNES_ShowOBJ4 ^= true;
|
||||||
SyncCoreInputComm();
|
SyncCoreCommInputSignals();
|
||||||
if (Global.Config.SNES_ShowOBJ4)
|
if (Global.Config.SNES_ShowOBJ4)
|
||||||
{
|
{
|
||||||
Global.OSD.AddMessage("OBJ 4 Layer On");
|
Global.OSD.AddMessage("OBJ 4 Layer On");
|
||||||
|
|
|
@ -129,8 +129,8 @@ namespace BizHawk.MultiClient
|
||||||
return Util.ReadAllBytes(NesCartFile.GetStream());
|
return Util.ReadAllBytes(NesCartFile.GetStream());
|
||||||
};
|
};
|
||||||
Global.MainForm = this;
|
Global.MainForm = this;
|
||||||
Global.CoreInputComm = new CoreInputComm();
|
//Global.CoreComm = new CoreComm();
|
||||||
SyncCoreInputComm();
|
//SyncCoreCommInputSignals();
|
||||||
|
|
||||||
Database.LoadDatabase(Path.Combine(PathManager.GetExeDirectoryAbsolute(), "gamedb", "gamedb.txt"));
|
Database.LoadDatabase(Path.Combine(PathManager.GetExeDirectoryAbsolute(), "gamedb", "gamedb.txt"));
|
||||||
|
|
||||||
|
@ -165,7 +165,9 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
Input.Initialize();
|
Input.Initialize();
|
||||||
InitControls();
|
InitControls();
|
||||||
Global.Emulator = new NullEmulator();
|
Global.CoreComm = new CoreComm();
|
||||||
|
SyncCoreCommInputSignals();
|
||||||
|
Global.Emulator = new NullEmulator(Global.CoreComm);
|
||||||
Global.ActiveController = Global.NullControls;
|
Global.ActiveController = Global.NullControls;
|
||||||
Global.AutoFireController = Global.AutofireNullControls;
|
Global.AutoFireController = Global.AutofireNullControls;
|
||||||
Global.AutofireStickyXORAdapter.SetOnOffPatternFromConfig();
|
Global.AutofireStickyXORAdapter.SetOnOffPatternFromConfig();
|
||||||
|
@ -308,7 +310,7 @@ namespace BizHawk.MultiClient
|
||||||
LoadSNESGraphicsDebugger();
|
LoadSNESGraphicsDebugger();
|
||||||
if (Global.Config.TraceLoggerAutoLoad)
|
if (Global.Config.TraceLoggerAutoLoad)
|
||||||
{
|
{
|
||||||
if (Global.Emulator.CoreOutputComm.CpuTraceAvailable)
|
if (Global.CoreComm.CpuTraceAvailable)
|
||||||
{
|
{
|
||||||
LoadTraceLogger();
|
LoadTraceLogger();
|
||||||
}
|
}
|
||||||
|
@ -356,47 +358,52 @@ namespace BizHawk.MultiClient
|
||||||
base.Dispose(disposing);
|
base.Dispose(disposing);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SyncCoreInputComm()
|
public void SyncCoreCommInputSignals(CoreComm target)
|
||||||
{
|
{
|
||||||
Global.CoreInputComm.NES_BackdropColor = Global.Config.NESBackgroundColor;
|
target.NES_BackdropColor = Global.Config.NESBackgroundColor;
|
||||||
Global.CoreInputComm.NES_UnlimitedSprites = Global.Config.NESAllowMoreThanEightSprites;
|
target.NES_UnlimitedSprites = Global.Config.NESAllowMoreThanEightSprites;
|
||||||
Global.CoreInputComm.NES_ShowBG = Global.Config.NESDispBackground;
|
target.NES_ShowBG = Global.Config.NESDispBackground;
|
||||||
Global.CoreInputComm.NES_ShowOBJ = Global.Config.NESDispSprites;
|
target.NES_ShowOBJ = Global.Config.NESDispSprites;
|
||||||
Global.CoreInputComm.PCE_ShowBG1 = Global.Config.PCEDispBG1;
|
target.PCE_ShowBG1 = Global.Config.PCEDispBG1;
|
||||||
Global.CoreInputComm.PCE_ShowOBJ1 = Global.Config.PCEDispOBJ1;
|
target.PCE_ShowOBJ1 = Global.Config.PCEDispOBJ1;
|
||||||
Global.CoreInputComm.PCE_ShowBG2 = Global.Config.PCEDispBG2;
|
target.PCE_ShowBG2 = Global.Config.PCEDispBG2;
|
||||||
Global.CoreInputComm.PCE_ShowOBJ2 = Global.Config.PCEDispOBJ2;
|
target.PCE_ShowOBJ2 = Global.Config.PCEDispOBJ2;
|
||||||
Global.CoreInputComm.SMS_ShowBG = Global.Config.SMSDispBG;
|
target.SMS_ShowBG = Global.Config.SMSDispBG;
|
||||||
Global.CoreInputComm.SMS_ShowOBJ = Global.Config.SMSDispOBJ;
|
target.SMS_ShowOBJ = Global.Config.SMSDispOBJ;
|
||||||
|
|
||||||
Global.CoreInputComm.PSX_FirmwaresPath = PathManager.MakeAbsolutePath(Global.Config.PathPSXFirmwares, "PSX");
|
target.PSX_FirmwaresPath = PathManager.MakeAbsolutePath(Global.Config.PathPSXFirmwares, "PSX");
|
||||||
|
|
||||||
Global.CoreInputComm.C64_FirmwaresPath = PathManager.MakeAbsolutePath(Global.Config.PathC64Firmwares, "C64");
|
target.C64_FirmwaresPath = PathManager.MakeAbsolutePath(Global.Config.PathC64Firmwares, "C64");
|
||||||
|
|
||||||
Global.CoreInputComm.SNES_FirmwaresPath = PathManager.MakeAbsolutePath(Global.Config.PathSNESFirmwares, "SNES");
|
target.SNES_FirmwaresPath = PathManager.MakeAbsolutePath(Global.Config.PathSNESFirmwares, "SNES");
|
||||||
Global.CoreInputComm.SNES_ShowBG1_0 = Global.Config.SNES_ShowBG1_0;
|
target.SNES_ShowBG1_0 = Global.Config.SNES_ShowBG1_0;
|
||||||
Global.CoreInputComm.SNES_ShowBG1_1 = Global.Config.SNES_ShowBG1_1;
|
target.SNES_ShowBG1_1 = Global.Config.SNES_ShowBG1_1;
|
||||||
Global.CoreInputComm.SNES_ShowBG2_0 = Global.Config.SNES_ShowBG2_0;
|
target.SNES_ShowBG2_0 = Global.Config.SNES_ShowBG2_0;
|
||||||
Global.CoreInputComm.SNES_ShowBG2_1 = Global.Config.SNES_ShowBG2_1;
|
target.SNES_ShowBG2_1 = Global.Config.SNES_ShowBG2_1;
|
||||||
Global.CoreInputComm.SNES_ShowBG3_0 = Global.Config.SNES_ShowBG3_0;
|
target.SNES_ShowBG3_0 = Global.Config.SNES_ShowBG3_0;
|
||||||
Global.CoreInputComm.SNES_ShowBG3_1 = Global.Config.SNES_ShowBG3_1;
|
target.SNES_ShowBG3_1 = Global.Config.SNES_ShowBG3_1;
|
||||||
Global.CoreInputComm.SNES_ShowBG4_0 = Global.Config.SNES_ShowBG4_0;
|
target.SNES_ShowBG4_0 = Global.Config.SNES_ShowBG4_0;
|
||||||
Global.CoreInputComm.SNES_ShowBG4_1 = Global.Config.SNES_ShowBG4_1;
|
target.SNES_ShowBG4_1 = Global.Config.SNES_ShowBG4_1;
|
||||||
Global.CoreInputComm.SNES_ShowOBJ_0 = Global.Config.SNES_ShowOBJ1;
|
target.SNES_ShowOBJ_0 = Global.Config.SNES_ShowOBJ1;
|
||||||
Global.CoreInputComm.SNES_ShowOBJ_1 = Global.Config.SNES_ShowOBJ2;
|
target.SNES_ShowOBJ_1 = Global.Config.SNES_ShowOBJ2;
|
||||||
Global.CoreInputComm.SNES_ShowOBJ_2 = Global.Config.SNES_ShowOBJ3;
|
target.SNES_ShowOBJ_2 = Global.Config.SNES_ShowOBJ3;
|
||||||
Global.CoreInputComm.SNES_ShowOBJ_3 = Global.Config.SNES_ShowOBJ4;
|
target.SNES_ShowOBJ_3 = Global.Config.SNES_ShowOBJ4;
|
||||||
|
|
||||||
Global.CoreInputComm.GG_HighlightActiveDisplayRegion = Global.Config.GGHighlightActiveDisplayRegion;
|
target.GG_HighlightActiveDisplayRegion = Global.Config.GGHighlightActiveDisplayRegion;
|
||||||
Global.CoreInputComm.GG_ShowClippedRegions = Global.Config.GGShowClippedRegions;
|
target.GG_ShowClippedRegions = Global.Config.GGShowClippedRegions;
|
||||||
|
|
||||||
Global.CoreInputComm.Atari2600_ShowBG = Global.Config.Atari2600_ShowBG;
|
target.Atari2600_ShowBG = Global.Config.Atari2600_ShowBG;
|
||||||
Global.CoreInputComm.Atari2600_ShowPlayer1 = Global.Config.Atari2600_ShowPlayer1;
|
target.Atari2600_ShowPlayer1 = Global.Config.Atari2600_ShowPlayer1;
|
||||||
Global.CoreInputComm.Atari2600_ShowPlayer2 = Global.Config.Atari2600_ShowPlayer2;
|
target.Atari2600_ShowPlayer2 = Global.Config.Atari2600_ShowPlayer2;
|
||||||
Global.CoreInputComm.Atari2600_ShowMissle1 = Global.Config.Atari2600_ShowMissle1;
|
target.Atari2600_ShowMissle1 = Global.Config.Atari2600_ShowMissle1;
|
||||||
Global.CoreInputComm.Atari2600_ShowMissle2 = Global.Config.Atari2600_ShowMissle2;
|
target.Atari2600_ShowMissle2 = Global.Config.Atari2600_ShowMissle2;
|
||||||
Global.CoreInputComm.Atari2600_ShowBall = Global.Config.Atari2600_ShowBall;
|
target.Atari2600_ShowBall = Global.Config.Atari2600_ShowBall;
|
||||||
Global.CoreInputComm.Atari2600_ShowPF = Global.Config.Atari2600_ShowPlayfield;
|
target.Atari2600_ShowPF = Global.Config.Atari2600_ShowPlayfield;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SyncCoreCommInputSignals()
|
||||||
|
{
|
||||||
|
SyncCoreCommInputSignals(Global.CoreComm);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SyncPresentationMode()
|
void SyncPresentationMode()
|
||||||
|
@ -467,7 +474,7 @@ namespace BizHawk.MultiClient
|
||||||
Global.ForceNoThrottle = unthrottled || fastforward;
|
Global.ForceNoThrottle = unthrottled || fastforward;
|
||||||
|
|
||||||
// realtime throttle is never going to be so exact that using a double here is wrong
|
// realtime throttle is never going to be so exact that using a double here is wrong
|
||||||
throttle.SetCoreFps(Global.Emulator.CoreOutputComm.VsyncRate);
|
throttle.SetCoreFps(Global.Emulator.CoreComm.VsyncRate);
|
||||||
|
|
||||||
throttle.signal_paused = EmulatorPaused || Global.Emulator is NullEmulator;
|
throttle.signal_paused = EmulatorPaused || Global.Emulator is NullEmulator;
|
||||||
throttle.signal_unthrottle = unthrottled;
|
throttle.signal_unthrottle = unthrottled;
|
||||||
|
@ -1588,6 +1595,8 @@ namespace BizHawk.MultiClient
|
||||||
IEmulator nextEmulator = null;
|
IEmulator nextEmulator = null;
|
||||||
RomGame rom = null;
|
RomGame rom = null;
|
||||||
GameInfo game = null;
|
GameInfo game = null;
|
||||||
|
CoreComm nextComm = new CoreComm();
|
||||||
|
SyncCoreCommInputSignals(nextComm);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -1649,11 +1658,10 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
case "PSX":
|
case "PSX":
|
||||||
{
|
{
|
||||||
var psx = new BizHawk.Emulation.Consoles.PSX.Octoshock();
|
var psx = new BizHawk.Emulation.Consoles.PSX.Octoshock(nextComm);
|
||||||
nextEmulator = psx;
|
nextEmulator = psx;
|
||||||
psx.CoreInputComm = Global.CoreInputComm;
|
|
||||||
psx.LoadCuePath(file.CanonicalFullPath);
|
psx.LoadCuePath(file.CanonicalFullPath);
|
||||||
nextEmulator.CoreOutputComm.RomStatusDetails = "PSX etc.";
|
nextEmulator.CoreComm.RomStatusDetails = "PSX etc.";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1690,7 +1698,7 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
game.FirmwareHash = Util.BytesToHexString(System.Security.Cryptography.SHA1.Create().ComputeHash(rom.RomData));
|
game.FirmwareHash = Util.BytesToHexString(System.Security.Cryptography.SHA1.Create().ComputeHash(rom.RomData));
|
||||||
|
|
||||||
nextEmulator = new PCEngine(game, disc, rom.RomData);
|
nextEmulator = new PCEngine(nextComm, game, disc, rom.RomData);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1706,9 +1714,8 @@ namespace BizHawk.MultiClient
|
||||||
case "SNES":
|
case "SNES":
|
||||||
{
|
{
|
||||||
game.System = "SNES";
|
game.System = "SNES";
|
||||||
var snes = new LibsnesCore();
|
var snes = new LibsnesCore(nextComm);
|
||||||
nextEmulator = snes;
|
nextEmulator = snes;
|
||||||
nextEmulator.CoreInputComm = Global.CoreInputComm;
|
|
||||||
snes.Load(game, rom.FileData, null, deterministicemulation);
|
snes.Load(game, rom.FileData, null, deterministicemulation);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1718,15 +1725,15 @@ namespace BizHawk.MultiClient
|
||||||
if (Global.Config.SmsAllowOverlock) game.AddOption("AllowOverclock");
|
if (Global.Config.SmsAllowOverlock) game.AddOption("AllowOverclock");
|
||||||
if (Global.Config.SmsForceStereoSeparation) game.AddOption("ForceStereo");
|
if (Global.Config.SmsForceStereoSeparation) game.AddOption("ForceStereo");
|
||||||
if (Global.Config.SmsSpriteLimit) game.AddOption("SpriteLimit");
|
if (Global.Config.SmsSpriteLimit) game.AddOption("SpriteLimit");
|
||||||
nextEmulator = new SMS(game, rom.RomData);
|
nextEmulator = new SMS(nextComm, game, rom.RomData);
|
||||||
break;
|
break;
|
||||||
case "GG":
|
case "GG":
|
||||||
if (Global.Config.SmsAllowOverlock) game.AddOption("AllowOverclock");
|
if (Global.Config.SmsAllowOverlock) game.AddOption("AllowOverclock");
|
||||||
if (Global.Config.SmsSpriteLimit) game.AddOption("SpriteLimit");
|
if (Global.Config.SmsSpriteLimit) game.AddOption("SpriteLimit");
|
||||||
nextEmulator = new SMS(game, rom.RomData);
|
nextEmulator = new SMS(nextComm, game, rom.RomData);
|
||||||
break;
|
break;
|
||||||
case "A26":
|
case "A26":
|
||||||
nextEmulator = new Atari2600(game, rom.FileData);
|
nextEmulator = new Atari2600(nextComm, game, rom.FileData);
|
||||||
((Atari2600)nextEmulator).SetBw(Global.Config.Atari2600_BW);
|
((Atari2600)nextEmulator).SetBw(Global.Config.Atari2600_BW);
|
||||||
((Atari2600)nextEmulator).SetP0Diff(Global.Config.Atari2600_LeftDifficulty);
|
((Atari2600)nextEmulator).SetP0Diff(Global.Config.Atari2600_LeftDifficulty);
|
||||||
((Atari2600)nextEmulator).SetP1Diff(Global.Config.Atari2600_RightDifficulty);
|
((Atari2600)nextEmulator).SetP1Diff(Global.Config.Atari2600_RightDifficulty);
|
||||||
|
@ -1735,13 +1742,13 @@ namespace BizHawk.MultiClient
|
||||||
case "PCECD":
|
case "PCECD":
|
||||||
case "SGX":
|
case "SGX":
|
||||||
if (Global.Config.PceSpriteLimit) game.AddOption("ForceSpriteLimit");
|
if (Global.Config.PceSpriteLimit) game.AddOption("ForceSpriteLimit");
|
||||||
nextEmulator = new PCEngine(game, rom.RomData);
|
nextEmulator = new PCEngine(nextComm, game, rom.RomData);
|
||||||
break;
|
break;
|
||||||
case "GEN":
|
case "GEN":
|
||||||
nextEmulator = new Genesis(game, rom.RomData);
|
nextEmulator = new Genesis(nextComm, game, rom.RomData);
|
||||||
break;
|
break;
|
||||||
case "TI83":
|
case "TI83":
|
||||||
nextEmulator = new TI83(game, rom.RomData);
|
nextEmulator = new TI83(nextComm, game, rom.RomData);
|
||||||
if (Global.Config.TI83autoloadKeyPad)
|
if (Global.Config.TI83autoloadKeyPad)
|
||||||
LoadTI83KeyPad();
|
LoadTI83KeyPad();
|
||||||
break;
|
break;
|
||||||
|
@ -1762,7 +1769,7 @@ namespace BizHawk.MultiClient
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
NES nes = new NES(game, rom.FileData, bios);
|
NES nes = new NES(nextComm, game, rom.FileData, bios);
|
||||||
nes.SoundOn = Global.Config.SoundEnabled;
|
nes.SoundOn = Global.Config.SoundEnabled;
|
||||||
nes.FirstDrawLine = Global.Config.NESTopLine;
|
nes.FirstDrawLine = Global.Config.NESTopLine;
|
||||||
nes.LastDrawLine = Global.Config.NESBottomLine;
|
nes.LastDrawLine = Global.Config.NESBottomLine;
|
||||||
|
@ -1783,7 +1790,7 @@ namespace BizHawk.MultiClient
|
||||||
if (Global.Config.GB_ForceDMG) game.AddOption("ForceDMG");
|
if (Global.Config.GB_ForceDMG) game.AddOption("ForceDMG");
|
||||||
if (Global.Config.GB_GBACGB) game.AddOption("GBACGB");
|
if (Global.Config.GB_GBACGB) game.AddOption("GBACGB");
|
||||||
if (Global.Config.GB_MulticartCompat) game.AddOption("MulitcartCompat");
|
if (Global.Config.GB_MulticartCompat) game.AddOption("MulitcartCompat");
|
||||||
Emulation.Consoles.GB.Gameboy gb = new Emulation.Consoles.GB.Gameboy(game, rom.FileData);
|
Emulation.Consoles.GB.Gameboy gb = new Emulation.Consoles.GB.Gameboy(nextComm, game, rom.FileData);
|
||||||
nextEmulator = gb;
|
nextEmulator = gb;
|
||||||
if (gb.IsCGBMode())
|
if (gb.IsCGBMode())
|
||||||
{
|
{
|
||||||
|
@ -1832,7 +1839,7 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
game.System = "SNES";
|
game.System = "SNES";
|
||||||
game.AddOption("SGB");
|
game.AddOption("SGB");
|
||||||
var snes = new LibsnesCore();
|
var snes = new LibsnesCore(nextComm);
|
||||||
nextEmulator = snes;
|
nextEmulator = snes;
|
||||||
game.FirmwareHash = Util.BytesToHexString(System.Security.Cryptography.SHA1.Create().ComputeHash(sgbrom));
|
game.FirmwareHash = Util.BytesToHexString(System.Security.Cryptography.SHA1.Create().ComputeHash(sgbrom));
|
||||||
snes.Load(game, rom.FileData, sgbrom, deterministicemulation);
|
snes.Load(game, rom.FileData, sgbrom, deterministicemulation);
|
||||||
|
@ -1849,13 +1856,13 @@ namespace BizHawk.MultiClient
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ColecoVision c = new ColecoVision(game, rom.RomData, colbiosPath, Global.Config.ColecoSkipBiosIntro);
|
ColecoVision c = new ColecoVision(nextComm, game, rom.RomData, colbiosPath, Global.Config.ColecoSkipBiosIntro);
|
||||||
nextEmulator = c;
|
nextEmulator = c;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "INTV":
|
case "INTV":
|
||||||
{
|
{
|
||||||
Intellivision intv = new Intellivision(game, rom.RomData);
|
Intellivision intv = new Intellivision(nextComm, game, rom.RomData);
|
||||||
string eromPath = PathManager.MakeAbsolutePath(Global.Config.PathINTVEROM, "INTV");
|
string eromPath = PathManager.MakeAbsolutePath(Global.Config.PathINTVEROM, "INTV");
|
||||||
if (!File.Exists(eromPath))
|
if (!File.Exists(eromPath))
|
||||||
throw new InvalidOperationException("Specified EROM path does not exist:\n\n" + eromPath);
|
throw new InvalidOperationException("Specified EROM path does not exist:\n\n" + eromPath);
|
||||||
|
@ -1898,12 +1905,11 @@ namespace BizHawk.MultiClient
|
||||||
byte[] PAL_BIOS7800 = File.ReadAllBytes(pal_biospath);
|
byte[] PAL_BIOS7800 = File.ReadAllBytes(pal_biospath);
|
||||||
byte[] HighScoreBIOS = File.ReadAllBytes(hsbiospath);
|
byte[] HighScoreBIOS = File.ReadAllBytes(hsbiospath);
|
||||||
|
|
||||||
Atari7800 a78 = new Atari7800(game, rom.RomData, NTSC_BIOS7800, PAL_BIOS7800, HighScoreBIOS);
|
Atari7800 a78 = new Atari7800(nextComm, game, rom.RomData, NTSC_BIOS7800, PAL_BIOS7800, HighScoreBIOS);
|
||||||
nextEmulator = a78;
|
nextEmulator = a78;
|
||||||
break;
|
break;
|
||||||
case "C64":
|
case "C64":
|
||||||
C64 c64 = new C64(game, rom.RomData, rom.Extension);
|
C64 c64 = new C64(nextComm, game, rom.RomData, rom.Extension);
|
||||||
c64.CoreInputComm = Global.CoreInputComm;
|
|
||||||
c64.HardReset();
|
c64.HardReset();
|
||||||
nextEmulator = c64;
|
nextEmulator = c64;
|
||||||
break;
|
break;
|
||||||
|
@ -1922,7 +1928,7 @@ namespace BizHawk.MultiClient
|
||||||
MessageBox.Show("Unable to find the required GBA BIOS file - \n" + gbabios, "Unable to load BIOS", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
MessageBox.Show("Unable to find the required GBA BIOS file - \n" + gbabios, "Unable to load BIOS", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
}
|
}
|
||||||
GBA gba = new GBA();
|
GBA gba = new GBA(nextComm);
|
||||||
gba.Load(rom.RomData, gbabios);
|
gba.Load(rom.RomData, gbabios);
|
||||||
nextEmulator = gba;
|
nextEmulator = gba;
|
||||||
}
|
}
|
||||||
|
@ -1932,7 +1938,6 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
if (nextEmulator == null)
|
if (nextEmulator == null)
|
||||||
throw new Exception("No core could load the rom.");
|
throw new Exception("No core could load the rom.");
|
||||||
nextEmulator.CoreInputComm = Global.CoreInputComm;
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@ -1945,7 +1950,9 @@ namespace BizHawk.MultiClient
|
||||||
CloseGame();
|
CloseGame();
|
||||||
Global.Emulator.Dispose();
|
Global.Emulator.Dispose();
|
||||||
Global.Emulator = nextEmulator;
|
Global.Emulator = nextEmulator;
|
||||||
|
Global.CoreComm = nextComm;
|
||||||
Global.Game = game;
|
Global.Game = game;
|
||||||
|
SyncCoreCommInputSignals();
|
||||||
SyncControls();
|
SyncControls();
|
||||||
|
|
||||||
if (nextEmulator is LibsnesCore)
|
if (nextEmulator is LibsnesCore)
|
||||||
|
@ -1966,9 +1973,9 @@ namespace BizHawk.MultiClient
|
||||||
Text = DisplayNameForSystem(game.System) + " - " + game.Name;
|
Text = DisplayNameForSystem(game.System) + " - " + game.Name;
|
||||||
ResetRewindBuffer();
|
ResetRewindBuffer();
|
||||||
|
|
||||||
if (Global.Emulator.CoreOutputComm.RomStatusDetails == null)
|
if (Global.Emulator.CoreComm.RomStatusDetails == null)
|
||||||
{
|
{
|
||||||
Global.Emulator.CoreOutputComm.RomStatusDetails =
|
Global.Emulator.CoreComm.RomStatusDetails =
|
||||||
string.Format("{0}\r\nSHA1:{1}\r\nMD5:{2}\r\n",
|
string.Format("{0}\r\nSHA1:{1}\r\nMD5:{2}\r\n",
|
||||||
game.Name,
|
game.Name,
|
||||||
Util.BytesToHexString(System.Security.Cryptography.SHA1.Create().ComputeHash(rom.RomData)),
|
Util.BytesToHexString(System.Security.Cryptography.SHA1.Create().ComputeHash(rom.RomData)),
|
||||||
|
@ -1993,7 +2000,7 @@ namespace BizHawk.MultiClient
|
||||||
////setup the throttle based on platform's specifications
|
////setup the throttle based on platform's specifications
|
||||||
////(one day later for some systems we will need to modify it at runtime as the display mode changes)
|
////(one day later for some systems we will need to modify it at runtime as the display mode changes)
|
||||||
//{
|
//{
|
||||||
// throttle.SetCoreFps(Global.Emulator.CoreOutputComm.VsyncRate);
|
// throttle.SetCoreFps(Global.Emulator.CoreComm.VsyncRate);
|
||||||
// SyncThrottle();
|
// SyncThrottle();
|
||||||
//}
|
//}
|
||||||
RamSearch1.Restart();
|
RamSearch1.Restart();
|
||||||
|
@ -2117,8 +2124,8 @@ namespace BizHawk.MultiClient
|
||||||
DumpStatus.Image = BizHawk.MultiClient.Properties.Resources.GreenCheck;
|
DumpStatus.Image = BizHawk.MultiClient.Properties.Resources.GreenCheck;
|
||||||
annotation = "Verified good dump";
|
annotation = "Verified good dump";
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(Global.Emulator.CoreOutputComm.RomStatusAnnotation))
|
if (!string.IsNullOrEmpty(Global.Emulator.CoreComm.RomStatusAnnotation))
|
||||||
annotation = Global.Emulator.CoreOutputComm.RomStatusAnnotation;
|
annotation = Global.Emulator.CoreComm.RomStatusAnnotation;
|
||||||
|
|
||||||
DumpStatus.ToolTipText = annotation;
|
DumpStatus.ToolTipText = annotation;
|
||||||
}
|
}
|
||||||
|
@ -2146,22 +2153,6 @@ namespace BizHawk.MultiClient
|
||||||
catch (IOException) { }
|
catch (IOException) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CloseGame()
|
|
||||||
{
|
|
||||||
if (Global.Config.AutoSavestates && Global.Emulator is NullEmulator == false)
|
|
||||||
SaveState("Auto");
|
|
||||||
if (Global.Emulator.SaveRamModified)
|
|
||||||
SaveRam();
|
|
||||||
StopAVI();
|
|
||||||
Global.Emulator.Dispose();
|
|
||||||
Global.Emulator = new NullEmulator();
|
|
||||||
Global.ActiveController = Global.NullControls;
|
|
||||||
Global.AutoFireController = Global.AutofireNullControls;
|
|
||||||
Global.MovieSession.Movie.Stop();
|
|
||||||
NeedsReboot = false;
|
|
||||||
SetRebootIconStatus();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void SaveRam()
|
private static void SaveRam()
|
||||||
{
|
{
|
||||||
string path = PathManager.SaveRamPath(Global.Game);
|
string path = PathManager.SaveRamPath(Global.Game);
|
||||||
|
@ -3397,10 +3388,34 @@ namespace BizHawk.MultiClient
|
||||||
LoadRom(file.FullName);
|
LoadRom(file.FullName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
//whats the difference between these two methods??
|
||||||
|
//its very tricky. rename to be more clear or combine them.
|
||||||
|
|
||||||
|
private void CloseGame()
|
||||||
|
{
|
||||||
|
if (Global.Config.AutoSavestates && Global.Emulator is NullEmulator == false)
|
||||||
|
SaveState("Auto");
|
||||||
|
if (Global.Emulator.SaveRamModified)
|
||||||
|
SaveRam();
|
||||||
|
StopAVI();
|
||||||
|
Global.Emulator.Dispose();
|
||||||
|
Global.CoreComm = new CoreComm();
|
||||||
|
SyncCoreCommInputSignals();
|
||||||
|
Global.Emulator = new NullEmulator(Global.CoreComm);
|
||||||
|
Global.ActiveController = Global.NullControls;
|
||||||
|
Global.AutoFireController = Global.AutofireNullControls;
|
||||||
|
Global.MovieSession.Movie.Stop();
|
||||||
|
NeedsReboot = false;
|
||||||
|
SetRebootIconStatus();
|
||||||
|
}
|
||||||
|
|
||||||
public void CloseROM()
|
public void CloseROM()
|
||||||
{
|
{
|
||||||
CloseGame();
|
CloseGame();
|
||||||
Global.Emulator = new NullEmulator();
|
Global.CoreComm = new CoreComm();
|
||||||
|
SyncCoreCommInputSignals();
|
||||||
|
Global.Emulator = new NullEmulator(Global.CoreComm);
|
||||||
Global.Game = GameInfo.GetNullGame();
|
Global.Game = GameInfo.GetNullGame();
|
||||||
MemoryPulse.Clear();
|
MemoryPulse.Clear();
|
||||||
RewireSound();
|
RewireSound();
|
||||||
|
@ -3426,6 +3441,8 @@ namespace BizHawk.MultiClient
|
||||||
UpdateDumpIcon();
|
UpdateDumpIcon();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
|
||||||
private void SaveConfig()
|
private void SaveConfig()
|
||||||
{
|
{
|
||||||
if (Global.Config.SaveWindowPosition)
|
if (Global.Config.SaveWindowPosition)
|
||||||
|
@ -3818,7 +3835,7 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
aw.SetMovieParameters(Global.Emulator.CoreOutputComm.VsyncNum, Global.Emulator.CoreOutputComm.VsyncDen);
|
aw.SetMovieParameters(Global.Emulator.CoreComm.VsyncNum, Global.Emulator.CoreComm.VsyncDen);
|
||||||
if (avwriter_resizew > 0 && avwriter_resizeh > 0)
|
if (avwriter_resizew > 0 && avwriter_resizeh > 0)
|
||||||
aw.SetVideoParameters(avwriter_resizew, avwriter_resizeh);
|
aw.SetVideoParameters(avwriter_resizew, avwriter_resizeh);
|
||||||
else
|
else
|
||||||
|
@ -3945,10 +3962,10 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
if (CurrAviWriter != null)
|
if (CurrAviWriter != null)
|
||||||
{
|
{
|
||||||
long nsampnum = 44100 * (long)Global.Emulator.CoreOutputComm.VsyncDen + SoundRemainder;
|
long nsampnum = 44100 * (long)Global.Emulator.CoreComm.VsyncDen + SoundRemainder;
|
||||||
long nsamp = nsampnum / Global.Emulator.CoreOutputComm.VsyncNum;
|
long nsamp = nsampnum / Global.Emulator.CoreComm.VsyncNum;
|
||||||
// exactly remember fractional parts of an audio sample
|
// exactly remember fractional parts of an audio sample
|
||||||
SoundRemainder = nsampnum % Global.Emulator.CoreOutputComm.VsyncNum;
|
SoundRemainder = nsampnum % Global.Emulator.CoreComm.VsyncNum;
|
||||||
|
|
||||||
short[] temp = new short[nsamp * 2];
|
short[] temp = new short[nsamp * 2];
|
||||||
AviSoundInput.GetSamples(temp);
|
AviSoundInput.GetSamples(temp);
|
||||||
|
@ -4571,13 +4588,13 @@ namespace BizHawk.MultiClient
|
||||||
private void showClippedRegionsToolStripMenuItem_Click(object sender, EventArgs e)
|
private void showClippedRegionsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.Config.GGShowClippedRegions ^= true;
|
Global.Config.GGShowClippedRegions ^= true;
|
||||||
Global.CoreInputComm.GG_ShowClippedRegions = Global.Config.GGShowClippedRegions;
|
Global.CoreComm.GG_ShowClippedRegions = Global.Config.GGShowClippedRegions;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void highlightActiveDisplayRegionToolStripMenuItem_Click(object sender, EventArgs e)
|
private void highlightActiveDisplayRegionToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.Config.GGHighlightActiveDisplayRegion ^= true;
|
Global.Config.GGHighlightActiveDisplayRegion ^= true;
|
||||||
Global.CoreInputComm.GG_HighlightActiveDisplayRegion = Global.Config.GGHighlightActiveDisplayRegion;
|
Global.CoreComm.GG_HighlightActiveDisplayRegion = Global.Config.GGHighlightActiveDisplayRegion;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadConfigToolStripMenuItem_Click_1(object sender, EventArgs e)
|
private void loadConfigToolStripMenuItem_Click_1(object sender, EventArgs e)
|
||||||
|
@ -4612,43 +4629,43 @@ namespace BizHawk.MultiClient
|
||||||
private void showBGToolStripMenuItem_Click(object sender, EventArgs e)
|
private void showBGToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.Config.Atari2600_ShowBG ^= true;
|
Global.Config.Atari2600_ShowBG ^= true;
|
||||||
SyncCoreInputComm();
|
SyncCoreCommInputSignals();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showPlayer1ToolStripMenuItem_Click(object sender, EventArgs e)
|
private void showPlayer1ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.Config.Atari2600_ShowPlayer1 ^= true;
|
Global.Config.Atari2600_ShowPlayer1 ^= true;
|
||||||
SyncCoreInputComm();
|
SyncCoreCommInputSignals();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showPlayer2ToolStripMenuItem_Click(object sender, EventArgs e)
|
private void showPlayer2ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.Config.Atari2600_ShowPlayer2 ^= true;
|
Global.Config.Atari2600_ShowPlayer2 ^= true;
|
||||||
SyncCoreInputComm();
|
SyncCoreCommInputSignals();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showMissle1ToolStripMenuItem_Click(object sender, EventArgs e)
|
private void showMissle1ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.Config.Atari2600_ShowMissle1 ^= true;
|
Global.Config.Atari2600_ShowMissle1 ^= true;
|
||||||
SyncCoreInputComm();
|
SyncCoreCommInputSignals();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showMissle2ToolStripMenuItem_Click(object sender, EventArgs e)
|
private void showMissle2ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.Config.Atari2600_ShowMissle2 ^= true;
|
Global.Config.Atari2600_ShowMissle2 ^= true;
|
||||||
SyncCoreInputComm();
|
SyncCoreCommInputSignals();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showBallToolStripMenuItem_Click(object sender, EventArgs e)
|
private void showBallToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.Config.Atari2600_ShowBall ^= true;
|
Global.Config.Atari2600_ShowBall ^= true;
|
||||||
SyncCoreInputComm();
|
SyncCoreCommInputSignals();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showPlayfieldToolStripMenuItem_Click(object sender, EventArgs e)
|
private void showPlayfieldToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.Config.Atari2600_ShowPlayfield ^= true;
|
Global.Config.Atari2600_ShowPlayfield ^= true;
|
||||||
SyncCoreInputComm();
|
SyncCoreCommInputSignals();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void gPUViewerToolStripMenuItem_Click(object sender, EventArgs e)
|
private void gPUViewerToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
@ -4675,13 +4692,13 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
if (StatusSlot0.Visible)
|
if (StatusSlot0.Visible)
|
||||||
{
|
{
|
||||||
if (Global.Emulator.CoreOutputComm.UsesDriveLed)
|
if (Global.Emulator.CoreComm.UsesDriveLed)
|
||||||
{
|
{
|
||||||
if (!StatusBarLedLight.Visible)
|
if (!StatusBarLedLight.Visible)
|
||||||
{
|
{
|
||||||
StatusBarLedLight.Visible = true;
|
StatusBarLedLight.Visible = true;
|
||||||
}
|
}
|
||||||
if (Global.Emulator.CoreOutputComm.DriveLED)
|
if (Global.Emulator.CoreComm.DriveLED)
|
||||||
{
|
{
|
||||||
StatusBarLedLight.Image = BizHawk.MultiClient.Properties.Resources.LightOn;
|
StatusBarLedLight.Image = BizHawk.MultiClient.Properties.Resources.LightOn;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1376,8 +1376,8 @@ namespace BizHawk.MultiClient
|
||||||
RefreshBGENCheckStatesFromConfig();
|
RefreshBGENCheckStatesFromConfig();
|
||||||
suppression = false;
|
suppression = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Global.MainForm.SyncCoreInputComm();
|
Global.MainForm.SyncCoreCommInputSignals();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void lblEnPrio0_Click(object sender, EventArgs e)
|
private void lblEnPrio0_Click(object sender, EventArgs e)
|
||||||
|
|
|
@ -32,7 +32,7 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
public void SaveConfigSettings()
|
public void SaveConfigSettings()
|
||||||
{
|
{
|
||||||
Global.CoreInputComm.Tracer.Enabled = false;
|
Global.CoreComm.Tracer.Enabled = false;
|
||||||
Global.Config.TraceLoggerWndx = this.Location.X;
|
Global.Config.TraceLoggerWndx = this.Location.X;
|
||||||
Global.Config.TraceLoggerWndy = this.Location.Y;
|
Global.Config.TraceLoggerWndy = this.Location.Y;
|
||||||
}
|
}
|
||||||
|
@ -63,7 +63,7 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
ClearList();
|
ClearList();
|
||||||
LoggingEnabled.Checked = true;
|
LoggingEnabled.Checked = true;
|
||||||
Global.CoreInputComm.Tracer.Enabled = true;
|
Global.CoreComm.Tracer.Enabled = true;
|
||||||
SetTracerBoxTitle();
|
SetTracerBoxTitle();
|
||||||
Restart();
|
Restart();
|
||||||
}
|
}
|
||||||
|
@ -81,10 +81,10 @@ namespace BizHawk.MultiClient
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (Global.Emulator.CoreOutputComm.CpuTraceAvailable)
|
if (Global.Emulator.CoreComm.CpuTraceAvailable)
|
||||||
{
|
{
|
||||||
ClearList();
|
ClearList();
|
||||||
TraceView.Columns[0].Text = Global.Emulator.CoreOutputComm.TraceHeader;
|
TraceView.Columns[0].Text = Global.Emulator.CoreComm.TraceHeader;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -107,7 +107,7 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
private void LoggingEnabled_CheckedChanged(object sender, EventArgs e)
|
private void LoggingEnabled_CheckedChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.CoreInputComm.Tracer.Enabled = LoggingEnabled.Checked;
|
Global.CoreComm.Tracer.Enabled = LoggingEnabled.Checked;
|
||||||
SetTracerBoxTitle();
|
SetTracerBoxTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,13 +133,13 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
using (StreamWriter sw = new StreamWriter(LogFile.FullName, true))
|
using (StreamWriter sw = new StreamWriter(LogFile.FullName, true))
|
||||||
{
|
{
|
||||||
sw.Write(Global.CoreInputComm.Tracer.TakeContents());
|
sw.Write(Global.CoreComm.Tracer.TakeContents());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LogToWindow()
|
private void LogToWindow()
|
||||||
{
|
{
|
||||||
string[] instructions = Global.CoreInputComm.Tracer.TakeContents().Split('\n');
|
string[] instructions = Global.CoreComm.Tracer.TakeContents().Split('\n');
|
||||||
if (!String.IsNullOrWhiteSpace(instructions[0]))
|
if (!String.IsNullOrWhiteSpace(instructions[0]))
|
||||||
{
|
{
|
||||||
foreach (string s in instructions)
|
foreach (string s in instructions)
|
||||||
|
@ -207,7 +207,7 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
private void SetTracerBoxTitle()
|
private void SetTracerBoxTitle()
|
||||||
{
|
{
|
||||||
if (Global.CoreInputComm.Tracer.Enabled)
|
if (Global.CoreComm.Tracer.Enabled)
|
||||||
{
|
{
|
||||||
if (ToFileRadio.Checked)
|
if (ToFileRadio.Checked)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue