GBHawk: memory ap optimizations
This commit is contained in:
parent
7d293bdb1a
commit
ced37c45c3
|
@ -7,12 +7,22 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
{
|
||||
public GBHawk Core { get; set; }
|
||||
|
||||
public virtual byte ReadMemory(ushort addr)
|
||||
public virtual byte ReadMemoryLow(ushort addr)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
public virtual byte PeekMemory(ushort addr)
|
||||
public virtual byte ReadMemoryHigh(ushort addr)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
public virtual byte PeekMemoryLow(ushort addr)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
public virtual byte PeekMemoryHigh(ushort addr)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -28,39 +28,40 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
regs_enable = false;
|
||||
}
|
||||
|
||||
public override byte ReadMemory(ushort addr)
|
||||
public override byte ReadMemoryLow(ushort addr)
|
||||
{
|
||||
if (addr < 0x4000)
|
||||
{
|
||||
return Core._rom[addr];
|
||||
}
|
||||
else if (addr < 0x8000)
|
||||
else
|
||||
{
|
||||
return Core._rom[(addr - 0x4000) + ROM_bank * 0x4000];
|
||||
}
|
||||
}
|
||||
|
||||
public override byte ReadMemoryHigh(ushort addr)
|
||||
{
|
||||
if (regs_enable)
|
||||
{
|
||||
if ((addr & 0x7F) == 0)
|
||||
{
|
||||
return 0;// regs[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (regs_enable)
|
||||
if (/*RAM_enable && */(((addr - 0xA000) + RAM_bank * 0x2000) < Core.cart_RAM.Length))
|
||||
{
|
||||
if ((addr & 0x7F) == 0)
|
||||
{
|
||||
return 0;// regs[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return Core.cart_RAM[(addr - 0xA000) + RAM_bank * 0x2000];
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
if (/*RAM_enable && */(((addr - 0xA000) + RAM_bank * 0x2000) < Core.cart_RAM.Length))
|
||||
{
|
||||
return Core.cart_RAM[(addr - 0xA000) + RAM_bank * 0x2000];
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
return 0xFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -92,9 +93,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte PeekMemory(ushort addr)
|
||||
public override byte PeekMemoryLow(ushort addr)
|
||||
{
|
||||
return ReadMemory(addr);
|
||||
return ReadMemoryLow(addr);
|
||||
}
|
||||
|
||||
public override void WriteMemory(ushort addr, byte value)
|
||||
|
|
|
@ -10,22 +10,20 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
// nothing to initialize
|
||||
}
|
||||
|
||||
public override byte ReadMemory(ushort addr)
|
||||
public override byte ReadMemoryLow(ushort addr)
|
||||
{
|
||||
if (addr < 0x8000)
|
||||
return Core._rom[addr];
|
||||
}
|
||||
|
||||
public override byte ReadMemoryHigh(ushort addr)
|
||||
{
|
||||
if (Core.cart_RAM != null)
|
||||
{
|
||||
return Core._rom[addr];
|
||||
return Core.cart_RAM[addr - 0xA000];
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Core.cart_RAM != null)
|
||||
{
|
||||
return Core.cart_RAM[addr - 0xA000];
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -48,9 +46,14 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte PeekMemory(ushort addr)
|
||||
public override byte PeekMemoryLow(ushort addr)
|
||||
{
|
||||
return ReadMemory(addr);
|
||||
return ReadMemoryLow(addr);
|
||||
}
|
||||
|
||||
public override byte PeekMemoryHigh(ushort addr)
|
||||
{
|
||||
return ReadMemoryHigh(addr);
|
||||
}
|
||||
|
||||
public override void WriteMemory(ushort addr, byte value)
|
||||
|
|
|
@ -31,17 +31,21 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte ReadMemory(ushort addr)
|
||||
public override byte ReadMemoryLow(ushort addr)
|
||||
{
|
||||
if (addr < 0x4000)
|
||||
{
|
||||
return Core._rom[addr];
|
||||
}
|
||||
else if (addr < 0x8000)
|
||||
else
|
||||
{
|
||||
return Core._rom[(addr - 0x4000) + ROM_bank * 0x4000];
|
||||
}
|
||||
else if ((addr >= 0xA000) && (addr < 0xC000))
|
||||
}
|
||||
|
||||
public override byte ReadMemoryHigh(ushort addr)
|
||||
{
|
||||
if ((addr >= 0xA000) && (addr < 0xC000))
|
||||
{
|
||||
if (RAM_enable)
|
||||
{
|
||||
|
@ -115,9 +119,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte PeekMemory(ushort addr)
|
||||
public override byte PeekMemoryLow(ushort addr)
|
||||
{
|
||||
return ReadMemory(addr);
|
||||
return ReadMemoryLow(addr);
|
||||
}
|
||||
|
||||
public override void WriteMemory(ushort addr, byte value)
|
||||
|
|
|
@ -44,17 +44,21 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte ReadMemory(ushort addr)
|
||||
public override byte ReadMemoryLow(ushort addr)
|
||||
{
|
||||
if (addr < 0x4000)
|
||||
{
|
||||
return Core._rom[addr];
|
||||
}
|
||||
else if (addr < 0x8000)
|
||||
else
|
||||
{
|
||||
return Core._rom[(addr - 0x4000) + ROM_bank * 0x4000];
|
||||
}
|
||||
else if ((addr >= 0xA000) && (addr < 0xC000))
|
||||
}
|
||||
|
||||
public override byte ReadMemoryHigh(ushort addr)
|
||||
{
|
||||
if ((addr >= 0xA000) && (addr < 0xC000))
|
||||
{
|
||||
if ((control >= 0xB) && (control < 0xE))
|
||||
{
|
||||
|
@ -64,7 +68,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
return chip_read;
|
||||
}
|
||||
|
||||
|
||||
if (RAM_enable)
|
||||
{
|
||||
if (Core.cart_RAM != null)
|
||||
|
@ -136,9 +140,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte PeekMemory(ushort addr)
|
||||
public override byte PeekMemoryLow(ushort addr)
|
||||
{
|
||||
return ReadMemory(addr);
|
||||
return ReadMemoryLow(addr);
|
||||
}
|
||||
|
||||
public override void WriteMemory(ushort addr, byte value)
|
||||
|
|
|
@ -32,42 +32,43 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte ReadMemory(ushort addr)
|
||||
public override byte ReadMemoryLow(ushort addr)
|
||||
{
|
||||
if (addr < 0x4000)
|
||||
{
|
||||
// lowest bank is fixed, but is still effected by mode
|
||||
// lowest bank is fixed, but is still effected by mode
|
||||
if (sel_mode)
|
||||
{
|
||||
return Core._rom[(ROM_bank & 0x60) * 0x4000 + addr];
|
||||
return Core._rom[(ROM_bank & 0x60) * 0x4000 + addr];
|
||||
}
|
||||
else
|
||||
{
|
||||
return Core._rom[addr];
|
||||
}
|
||||
}
|
||||
else if (addr < 0x8000)
|
||||
else
|
||||
{
|
||||
return Core._rom[(addr - 0x4000) + ROM_bank * 0x4000];
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Core.cart_RAM != null)
|
||||
{
|
||||
if (RAM_enable && (((addr - 0xA000) + RAM_bank * 0x2000) < Core.cart_RAM.Length))
|
||||
{
|
||||
return Core.cart_RAM[(addr - 0xA000) + RAM_bank * 0x2000];
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
public override byte ReadMemoryHigh(ushort addr)
|
||||
{
|
||||
if (Core.cart_RAM != null)
|
||||
{
|
||||
if (RAM_enable && (((addr - 0xA000) + RAM_bank * 0x2000) < Core.cart_RAM.Length))
|
||||
{
|
||||
return Core.cart_RAM[(addr - 0xA000) + RAM_bank * 0x2000];
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -110,9 +111,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte PeekMemory(ushort addr)
|
||||
public override byte PeekMemoryLow(ushort addr)
|
||||
{
|
||||
return ReadMemory(addr);
|
||||
return ReadMemoryLow(addr);
|
||||
}
|
||||
|
||||
public override void WriteMemory(ushort addr, byte value)
|
||||
|
|
|
@ -28,7 +28,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte ReadMemory(ushort addr)
|
||||
public override byte ReadMemoryLow(ushort addr)
|
||||
{
|
||||
if (addr < 0x4000)
|
||||
{
|
||||
|
@ -42,28 +42,29 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
return Core._rom[addr];
|
||||
}
|
||||
}
|
||||
else if (addr < 0x8000)
|
||||
else
|
||||
{
|
||||
return Core._rom[(addr - 0x4000) + (((ROM_bank & 0x60) >> 1) | (ROM_bank & 0xF)) * 0x4000];
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Core.cart_RAM != null)
|
||||
{
|
||||
if (RAM_enable && (((addr - 0xA000) + RAM_bank * 0x2000) < Core.cart_RAM.Length))
|
||||
{
|
||||
return Core.cart_RAM[(addr - 0xA000) + RAM_bank * 0x2000];
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
public override byte ReadMemoryHigh(ushort addr)
|
||||
{
|
||||
if (Core.cart_RAM != null)
|
||||
{
|
||||
if (RAM_enable && (((addr - 0xA000) + RAM_bank * 0x2000) < Core.cart_RAM.Length))
|
||||
{
|
||||
return Core.cart_RAM[(addr - 0xA000) + RAM_bank * 0x2000];
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -106,9 +107,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte PeekMemory(ushort addr)
|
||||
public override byte PeekMemoryLow(ushort addr)
|
||||
{
|
||||
return ReadMemory(addr);
|
||||
return ReadMemoryLow(addr);
|
||||
}
|
||||
|
||||
public override void WriteMemory(ushort addr, byte value)
|
||||
|
|
|
@ -19,17 +19,21 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
ROM_mask = Core._rom.Length / 0x4000 - 1;
|
||||
}
|
||||
|
||||
public override byte ReadMemory(ushort addr)
|
||||
public override byte ReadMemoryLow(ushort addr)
|
||||
{
|
||||
if (addr < 0x4000)
|
||||
{
|
||||
return Core._rom[addr];
|
||||
}
|
||||
else if (addr < 0x8000)
|
||||
else
|
||||
{
|
||||
return Core._rom[(addr - 0x4000) + ROM_bank * 0x4000];
|
||||
}
|
||||
else if ((addr >= 0xA000) && (addr < 0xA200))
|
||||
}
|
||||
}
|
||||
|
||||
public override byte ReadMemoryHigh(ushort addr)
|
||||
{
|
||||
if ((addr >= 0xA000) && (addr < 0xA200))
|
||||
{
|
||||
if (RAM_enable)
|
||||
{
|
||||
|
@ -67,9 +71,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte PeekMemory(ushort addr)
|
||||
public override byte PeekMemoryLow(ushort addr)
|
||||
{
|
||||
return ReadMemory(addr);
|
||||
return ReadMemoryLow(addr);
|
||||
}
|
||||
|
||||
public override void WriteMemory(ushort addr, byte value)
|
||||
|
|
|
@ -45,47 +45,48 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
RTC_regs_latch_wr = true;
|
||||
}
|
||||
|
||||
public override byte ReadMemory(ushort addr)
|
||||
public override byte ReadMemoryLow(ushort addr)
|
||||
{
|
||||
if (addr < 0x4000)
|
||||
{
|
||||
return Core._rom[addr];
|
||||
}
|
||||
else if (addr < 0x8000)
|
||||
else
|
||||
{
|
||||
return Core._rom[(addr - 0x4000) + ROM_bank * 0x4000];
|
||||
}
|
||||
else
|
||||
{
|
||||
if (RAM_enable)
|
||||
{
|
||||
if ((Core.cart_RAM != null) && (RAM_bank <= RAM_mask))
|
||||
{
|
||||
if (((addr - 0xA000) + RAM_bank * 0x2000) < Core.cart_RAM.Length)
|
||||
{
|
||||
return Core.cart_RAM[(addr - 0xA000) + RAM_bank * 0x2000];
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((RAM_bank >= 8) && (RAM_bank <= 0xC))
|
||||
public override byte ReadMemoryHigh(ushort addr)
|
||||
{
|
||||
if (RAM_enable)
|
||||
{
|
||||
if ((Core.cart_RAM != null) && (RAM_bank <= RAM_mask))
|
||||
{
|
||||
if (((addr - 0xA000) + RAM_bank * 0x2000) < Core.cart_RAM.Length)
|
||||
{
|
||||
//Console.WriteLine("reg: " + (RAM_bank - 8) + " value: " + RTC_regs_latch[RAM_bank - 8] + " cpu: " + Core.cpu.TotalExecutedCycles);
|
||||
return RTC_regs_latch[RAM_bank - 8];
|
||||
return Core.cart_RAM[(addr - 0xA000) + RAM_bank * 0x2000];
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0x0;
|
||||
return 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
if ((RAM_bank >= 8) && (RAM_bank <= 0xC))
|
||||
{
|
||||
//Console.WriteLine("reg: " + (RAM_bank - 8) + " value: " + RTC_regs_latch[RAM_bank - 8] + " cpu: " + Core.cpu.TotalExecutedCycles);
|
||||
return RTC_regs_latch[RAM_bank - 8];
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0x0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0x0;
|
||||
}
|
||||
}
|
||||
|
||||
public override void MapCDL(ushort addr, LR35902.eCDLogMemFlags flags)
|
||||
|
@ -130,9 +131,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte PeekMemory(ushort addr)
|
||||
public override byte PeekMemoryLow(ushort addr)
|
||||
{
|
||||
return ReadMemory(addr);
|
||||
return ReadMemoryLow(addr);
|
||||
}
|
||||
|
||||
public override void WriteMemory(ushort addr, byte value)
|
||||
|
|
|
@ -31,34 +31,35 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte ReadMemory(ushort addr)
|
||||
public override byte ReadMemoryLow(ushort addr)
|
||||
{
|
||||
if (addr < 0x4000)
|
||||
{
|
||||
return Core._rom[addr];
|
||||
}
|
||||
else if (addr < 0x8000)
|
||||
else
|
||||
{
|
||||
return Core._rom[(addr - 0x4000) + ROM_bank * 0x4000];
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Core.cart_RAM != null)
|
||||
{
|
||||
if (RAM_enable && (((addr - 0xA000) + RAM_bank * 0x2000) < Core.cart_RAM.Length))
|
||||
{
|
||||
return Core.cart_RAM[(addr - 0xA000) + RAM_bank * 0x2000];
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
public override byte ReadMemoryHigh(ushort addr)
|
||||
{
|
||||
if (Core.cart_RAM != null)
|
||||
{
|
||||
if (RAM_enable && (((addr - 0xA000) + RAM_bank * 0x2000) < Core.cart_RAM.Length))
|
||||
{
|
||||
return Core.cart_RAM[(addr - 0xA000) + RAM_bank * 0x2000];
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -93,9 +94,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte PeekMemory(ushort addr)
|
||||
public override byte PeekMemoryLow(ushort addr)
|
||||
{
|
||||
return ReadMemory(addr);
|
||||
return ReadMemoryLow(addr);
|
||||
}
|
||||
|
||||
public override void WriteMemory(ushort addr, byte value)
|
||||
|
|
|
@ -10,7 +10,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
// nothing to initialize
|
||||
}
|
||||
|
||||
public override byte ReadMemory(ushort addr)
|
||||
public override byte ReadMemoryLow(ushort addr)
|
||||
{
|
||||
if (addr < 0x8000)
|
||||
{
|
||||
|
@ -29,6 +29,18 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte ReadMemoryHigh(ushort addr)
|
||||
{
|
||||
if (Core.cart_RAM != null)
|
||||
{
|
||||
return Core.cart_RAM[addr - 0xA000];
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public override void MapCDL(ushort addr, LR35902.eCDLogMemFlags flags)
|
||||
{
|
||||
if (addr < 0x8000)
|
||||
|
@ -48,9 +60,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte PeekMemory(ushort addr)
|
||||
public override byte PeekMemoryLow(ushort addr)
|
||||
{
|
||||
return ReadMemory(addr);
|
||||
return ReadMemoryLow(addr);
|
||||
}
|
||||
|
||||
public override void WriteMemory(ushort addr, byte value)
|
||||
|
|
|
@ -57,17 +57,21 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
instr_bit_counter = instr = EE_addr = instr_case = instr_clocks = EE_value = countdown = 0;
|
||||
}
|
||||
|
||||
public override byte ReadMemory(ushort addr)
|
||||
public override byte ReadMemoryLow(ushort addr)
|
||||
{
|
||||
if (addr < 0x4000)
|
||||
{
|
||||
return Core._rom[addr];
|
||||
}
|
||||
else if (addr < 0x8000)
|
||||
else
|
||||
{
|
||||
return Core._rom[(addr - 0x4000) + ROM_bank * 0x4000];
|
||||
}
|
||||
else if (addr < 0xA000)
|
||||
}
|
||||
|
||||
public override byte ReadMemoryHigh(ushort addr)
|
||||
{
|
||||
if (addr < 0xA000)
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
|
@ -119,9 +123,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte PeekMemory(ushort addr)
|
||||
public override byte PeekMemoryLow(ushort addr)
|
||||
{
|
||||
return ReadMemory(addr);
|
||||
return ReadMemoryLow(addr);
|
||||
}
|
||||
|
||||
public override void WriteMemory(ushort addr, byte value)
|
||||
|
|
|
@ -10,7 +10,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
// nothing to initialize
|
||||
}
|
||||
|
||||
public override byte ReadMemory(ushort addr)
|
||||
public override byte ReadMemoryLow(ushort addr)
|
||||
{
|
||||
if (addr < 0x8000)
|
||||
{
|
||||
|
@ -29,6 +29,18 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte ReadMemoryHigh(ushort addr)
|
||||
{
|
||||
if (Core.cart_RAM != null)
|
||||
{
|
||||
return Core.cart_RAM[addr - 0xA000];
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public override void MapCDL(ushort addr, LR35902.eCDLogMemFlags flags)
|
||||
{
|
||||
if (addr < 0x8000)
|
||||
|
@ -48,9 +60,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte PeekMemory(ushort addr)
|
||||
public override byte PeekMemoryLow(ushort addr)
|
||||
{
|
||||
return ReadMemory(addr);
|
||||
return ReadMemoryLow(addr);
|
||||
}
|
||||
|
||||
public override void WriteMemory(ushort addr, byte value)
|
||||
|
|
|
@ -18,7 +18,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
if (ROM_mask > 4) { ROM_mask |= 3; }
|
||||
}
|
||||
|
||||
public override byte ReadMemory(ushort addr)
|
||||
public override byte ReadMemoryLow(ushort addr)
|
||||
{
|
||||
if (addr < 0x4000)
|
||||
{
|
||||
|
@ -26,14 +26,15 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
return Core._rom[addr];
|
||||
|
||||
}
|
||||
else if (addr < 0x8000)
|
||||
else
|
||||
{
|
||||
return Core._rom[(addr - 0x4000) + ROM_bank * 0x4000];
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
public override byte ReadMemoryHigh(ushort addr)
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
public override void MapCDL(ushort addr, LR35902.eCDLogMemFlags flags)
|
||||
|
@ -54,9 +55,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte PeekMemory(ushort addr)
|
||||
public override byte PeekMemoryLow(ushort addr)
|
||||
{
|
||||
return ReadMemory(addr);
|
||||
return ReadMemoryLow(addr);
|
||||
}
|
||||
|
||||
public override void WriteMemory(ushort addr, byte value)
|
||||
|
|
|
@ -33,7 +33,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
counter = 0;
|
||||
}
|
||||
|
||||
public override byte ReadMemory(ushort addr)
|
||||
public override byte ReadMemoryLow(ushort addr)
|
||||
{
|
||||
if (addr < 0x4000)
|
||||
{
|
||||
|
@ -60,14 +60,15 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
|
||||
return Core._rom[addr + BASE_ROM_Bank * 0x4000];
|
||||
}
|
||||
else if (addr < 0x8000)
|
||||
else
|
||||
{
|
||||
return Core._rom[(addr - 0x4000) + ROM_bank * 0x4000];
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
public override byte ReadMemoryHigh(ushort addr)
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
public override void MapCDL(ushort addr, LR35902.eCDLogMemFlags flags)
|
||||
|
@ -107,9 +108,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte PeekMemory(ushort addr)
|
||||
public override byte PeekMemoryLow(ushort addr)
|
||||
{
|
||||
return ReadMemory(addr);
|
||||
return ReadMemoryLow(addr);
|
||||
}
|
||||
|
||||
public override void WriteMemory(ushort addr, byte value)
|
||||
|
|
|
@ -35,7 +35,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
counter = 0;
|
||||
}
|
||||
|
||||
public override byte ReadMemory(ushort addr)
|
||||
public override byte ReadMemoryLow(ushort addr)
|
||||
{
|
||||
if (addr < 0x4000)
|
||||
{
|
||||
|
@ -60,21 +60,22 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
|
||||
return Core._rom[addr + BASE_ROM_Bank * 0x4000];
|
||||
}
|
||||
else if (addr < 0x8000)
|
||||
else
|
||||
{
|
||||
int temp_bank = (ROM_bank & ~ROM_bank_mask) | (ROM_bank_mask & BASE_ROM_Bank);
|
||||
temp_bank &= ROM_mask;
|
||||
|
||||
return Core._rom[(addr - 0x4000) + temp_bank * 0x4000];
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
public override void MapCDL(ushort addr, LR35902.eCDLogMemFlags flags)
|
||||
{
|
||||
public override byte ReadMemoryHigh(ushort addr)
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
public override void MapCDL(ushort addr, LR35902.eCDLogMemFlags flags)
|
||||
{
|
||||
if (addr < 0x4000)
|
||||
{
|
||||
// header is scrambled
|
||||
|
@ -111,9 +112,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte PeekMemory(ushort addr)
|
||||
public override byte PeekMemoryLow(ushort addr)
|
||||
{
|
||||
return ReadMemory(addr);
|
||||
return ReadMemoryLow(addr);
|
||||
}
|
||||
|
||||
public override void WriteMemory(ushort addr, byte value)
|
||||
|
|
|
@ -46,35 +46,35 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
ctrl = 0;
|
||||
}
|
||||
|
||||
public override byte ReadMemory(ushort addr)
|
||||
public override byte ReadMemoryLow(ushort addr)
|
||||
{
|
||||
if (addr < 0x4000)
|
||||
{
|
||||
return Core._rom[addr];
|
||||
}
|
||||
else if (addr < 0x8000)
|
||||
else
|
||||
{
|
||||
return Core._rom[(addr - 0x4000) + ROM_bank * 0x4000];
|
||||
}
|
||||
else
|
||||
}
|
||||
|
||||
public override byte ReadMemoryHigh(ushort addr)
|
||||
{
|
||||
switch (ctrl)
|
||||
{
|
||||
|
||||
switch (ctrl)
|
||||
{
|
||||
case 0xA:
|
||||
// The game won't proceed unless this value (anded with 3) is 1
|
||||
// see bank 0: 0x1A7D to 0x1A89
|
||||
return 1;
|
||||
case 0xC:
|
||||
//Console.WriteLine("read low: " + Chip_return_low);
|
||||
return Chip_return_low;
|
||||
case 0xD:
|
||||
//Console.WriteLine("read high: " + Chip_return_high);
|
||||
return Chip_return_high;
|
||||
}
|
||||
|
||||
return 0x0;
|
||||
case 0xA:
|
||||
// The game won't proceed unless this value (anded with 3) is 1
|
||||
// see bank 0: 0x1A7D to 0x1A89
|
||||
return 1;
|
||||
case 0xC:
|
||||
//Console.WriteLine("read low: " + Chip_return_low);
|
||||
return Chip_return_low;
|
||||
case 0xD:
|
||||
//Console.WriteLine("read high: " + Chip_return_high);
|
||||
return Chip_return_high;
|
||||
}
|
||||
|
||||
return 0x0;
|
||||
}
|
||||
|
||||
public override void MapCDL(ushort addr, LR35902.eCDLogMemFlags flags)
|
||||
|
@ -93,9 +93,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte PeekMemory(ushort addr)
|
||||
public override byte PeekMemoryLow(ushort addr)
|
||||
{
|
||||
return ReadMemory(addr);
|
||||
return ReadMemoryLow(addr);
|
||||
}
|
||||
|
||||
public override void WriteMemory(ushort addr, byte value)
|
||||
|
|
|
@ -19,16 +19,14 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
if (ROM_mask > 0x100) { ROM_mask |= 0xFF; }
|
||||
}
|
||||
|
||||
public override byte ReadMemory(ushort addr)
|
||||
public override byte ReadMemoryLow(ushort addr)
|
||||
{
|
||||
if (addr < 0x8000)
|
||||
{
|
||||
return Core._rom[ROM_bank * 0x8000 + addr];
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
return Core._rom[ROM_bank * 0x8000 + addr];
|
||||
}
|
||||
|
||||
public override byte ReadMemoryHigh(ushort addr)
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
public override void MapCDL(ushort addr, LR35902.eCDLogMemFlags flags)
|
||||
|
@ -43,9 +41,14 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
|
||||
public override byte PeekMemory(ushort addr)
|
||||
public override byte PeekMemoryLow(ushort addr)
|
||||
{
|
||||
return ReadMemory(addr);
|
||||
return ReadMemoryLow(addr);
|
||||
}
|
||||
|
||||
public override byte PeekMemoryHigh(ushort addr)
|
||||
{
|
||||
return ReadMemoryHigh(addr);
|
||||
}
|
||||
|
||||
public override void WriteMemory(ushort addr, byte value)
|
||||
|
|
|
@ -42,7 +42,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
else
|
||||
{
|
||||
return mapper.ReadMemory(addr);
|
||||
return mapper.ReadMemoryLow(addr);
|
||||
}
|
||||
}
|
||||
else if ((addr >= 0xE000) && (addr < 0xF000))
|
||||
|
@ -74,7 +74,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
{
|
||||
if (addr >= 0x900)
|
||||
{
|
||||
return mapper.ReadMemory(addr);
|
||||
return mapper.ReadMemoryLow(addr);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -87,7 +87,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
else
|
||||
{
|
||||
return mapper.ReadMemory(addr);
|
||||
return mapper.ReadMemoryLow(addr);
|
||||
}
|
||||
}
|
||||
else if (addr >= 0x200)
|
||||
|
@ -99,12 +99,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
else
|
||||
{
|
||||
return mapper.ReadMemory(addr);
|
||||
return mapper.ReadMemoryLow(addr);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return mapper.ReadMemory(addr);
|
||||
return mapper.ReadMemoryLow(addr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -115,7 +115,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
else if (addr < 0xC000)
|
||||
{
|
||||
return mapper.ReadMemory(addr);
|
||||
return mapper.ReadMemoryHigh(addr);
|
||||
}
|
||||
else if (addr < 0xFE00)
|
||||
{
|
||||
|
@ -266,7 +266,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
else
|
||||
{
|
||||
return mapper.ReadMemory(addr);
|
||||
return mapper.PeekMemoryLow(addr);
|
||||
}
|
||||
}
|
||||
else if ((addr >= 0xE000) && (addr < 0xF000))
|
||||
|
@ -297,7 +297,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
{
|
||||
if (addr >= 0x900)
|
||||
{
|
||||
return mapper.ReadMemory(addr);
|
||||
return mapper.PeekMemoryLow(addr);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -310,7 +310,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
else
|
||||
{
|
||||
return mapper.ReadMemory(addr);
|
||||
return mapper.PeekMemoryLow(addr);
|
||||
}
|
||||
}
|
||||
else if (addr >= 0x200)
|
||||
|
@ -322,12 +322,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
else
|
||||
{
|
||||
return mapper.ReadMemory(addr);
|
||||
return mapper.PeekMemoryLow(addr);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return mapper.ReadMemory(addr);
|
||||
return mapper.PeekMemoryLow(addr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -338,7 +338,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
else if (addr < 0xC000)
|
||||
{
|
||||
return mapper.PeekMemory(addr);
|
||||
return mapper.PeekMemoryHigh(addr);
|
||||
}
|
||||
else if (addr < 0xFE00)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue