This commit is contained in:
adelikat 2016-02-20 08:38:51 -05:00
commit 13e274cba5
5 changed files with 75 additions and 0 deletions

View File

@ -25,6 +25,11 @@ namespace BizHawk.Client.EmuHawk
SaveTASMenuItem.Enabled =
!string.IsNullOrWhiteSpace(CurrentTasMovie.Filename) &&
(CurrentTasMovie.Filename != DefaultTasProjName());
SaveTASMenuItem.Enabled =
SaveAsTASMenuItem.Enabled =
!_saveBackgroundWorker.IsBusy;
}
private void RecentSubMenu_DropDownOpened(object sender, EventArgs e)

View File

@ -667,6 +667,36 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx
mm.Add(MemoryDomain.FromIntPtrSwap16(name, size, MemoryDomain.Endian.Big, area, writable: true, byteSize: byteSize));
}
}
mm.Add(new MemoryDomain("M68K BUS", 0x1000000, MemoryDomain.Endian.Big,
delegate(long addr)
{
var a = (uint)addr;
if (a >= 0x1000000)
throw new ArgumentOutOfRangeException();
return LibGPGX.gpgx_peek_m68k_bus(a);
},
delegate(long addr, byte val)
{
var a = (uint)addr;
if (a >= 0x1000000)
throw new ArgumentOutOfRangeException();
LibGPGX.gpgx_write_m68k_bus(a, val);
}, 2));
mm.Add(new MemoryDomain("S68K BUS", 0x1000000, MemoryDomain.Endian.Big,
delegate(long addr)
{
var a = (uint)addr;
if (a >= 0x1000000)
throw new ArgumentOutOfRangeException();
return LibGPGX.gpgx_peek_s68k_bus(a);
},
delegate(long addr, byte val)
{
var a = (uint)addr;
if (a >= 0x1000000)
throw new ArgumentOutOfRangeException();
LibGPGX.gpgx_write_s68k_bus(a, val);
}, 2));
MemoryDomains = new MemoryDomainList(mm);
(ServiceProvider as BasicServiceProvider).Register<IMemoryDomains>(MemoryDomains);
}

View File

@ -320,5 +320,15 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx
[DllImport("libgenplusgx.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void gpgx_set_draw_mask(DrawMask mask);
[DllImport("libgenplusgx.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void gpgx_write_m68k_bus(uint addr, byte data);
[DllImport("libgenplusgx.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void gpgx_write_s68k_bus(uint addr, byte data);
[DllImport("libgenplusgx.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern byte gpgx_peek_m68k_bus(uint addr);
[DllImport("libgenplusgx.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern byte gpgx_peek_s68k_bus(uint addr);
}
}

View File

@ -423,6 +423,36 @@ GPGX_EX const char* gpgx_get_memdom(int which, void **area, int *size)
}
}
GPGX_EX void gpgx_write_m68k_bus(unsigned addr, unsigned data)
{
unsigned char *base = m68k.memory_map[addr >> 16 & 0xff].base;
if (base)
base[addr & 0xffff ^ 1] = data;
}
GPGX_EX void gpgx_write_s68k_bus(unsigned addr, unsigned data)
{
unsigned char *base = s68k.memory_map[addr >> 16 & 0xff].base;
if (base)
base[addr & 0xffff ^ 1] = data;
}
GPGX_EX unsigned gpgx_peek_m68k_bus(unsigned addr)
{
unsigned char *base = m68k.memory_map[addr >> 16 & 0xff].base;
if (base)
return base[addr & 0xffff ^ 1];
else
return 0xff;
}
GPGX_EX unsigned gpgx_peek_s68k_bus(unsigned addr)
{
unsigned char *base = s68k.memory_map[addr >> 16 & 0xff].base;
if (base)
return base[addr & 0xffff ^ 1];
else
return 0xff;
}
GPGX_EX void gpgx_get_sram(void **area, int *size)
{
if (!area || !size)

Binary file not shown.