优化virtuaNes核心的gc开销
This commit is contained in:
parent
0314647af0
commit
ec41530a12
@ -5,11 +5,11 @@ namespace VirtualNes
|
||||
public static class MMU
|
||||
{
|
||||
// CPU 儊儌儕僶儞僋
|
||||
public static ArrayRef<byte>[] CPU_MEM_BANK = new ArrayRef<byte>[8]; // 8K扨埵
|
||||
public static ArrayRef<byte>[] CPU_MEM_BANK = new ArrayRef<byte>[8] { new ArrayRef<byte>(), new ArrayRef<byte>(), new ArrayRef<byte>(), new ArrayRef<byte>(), new ArrayRef<byte>(), new ArrayRef<byte>(), new ArrayRef<byte>(), new ArrayRef<byte>() }; // 8K扨埵
|
||||
public static byte[] CPU_MEM_TYPE = new byte[8];
|
||||
public static int[] CPU_MEM_PAGE = new int[8]; // 僗僥乕僩僙乕僽梡
|
||||
// PPU 儊儌儕僶儞僋
|
||||
public static ArrayRef<byte>[] PPU_MEM_BANK = new ArrayRef<byte>[12]; // 1K扨埵
|
||||
public static ArrayRef<byte>[] PPU_MEM_BANK = new ArrayRef<byte>[12] { new ArrayRef<byte>(), new ArrayRef<byte>(), new ArrayRef<byte>(), new ArrayRef<byte>(), new ArrayRef<byte>(), new ArrayRef<byte>(), new ArrayRef<byte>(), new ArrayRef<byte>(), new ArrayRef<byte>(), new ArrayRef<byte>(), new ArrayRef<byte>(), new ArrayRef<byte>(), }; // 1K扨埵
|
||||
public static byte[] PPU_MEM_TYPE = new byte[12];
|
||||
public static int[] PPU_MEM_PAGE = new int[12]; // 僗僥乕僩僙乕僽梡
|
||||
public static byte[] CRAM_USED = new byte[16]; // 僗僥乕僩僙乕僽梡
|
||||
@ -72,7 +72,7 @@ namespace VirtualNes
|
||||
|
||||
internal static void SetPROM_Bank(byte page, byte[] ptr, byte type)
|
||||
{
|
||||
CPU_MEM_BANK[page] = new ArrayRef<byte>(ptr, 0, ptr.Length);
|
||||
CPU_MEM_BANK[page].SetArray(ptr, 0, ptr.Length);
|
||||
CPU_MEM_TYPE[page] = type;
|
||||
CPU_MEM_PAGE[page] = 0;
|
||||
}
|
||||
@ -101,7 +101,7 @@ namespace VirtualNes
|
||||
internal static void SetPROM_8K_Bank(byte page, int bank)
|
||||
{
|
||||
bank %= PROM_8K_SIZE;
|
||||
CPU_MEM_BANK[page] = new ArrayRef<byte>(MMU.PROM, 0x2000 * bank, MMU.PROM.Length - 0x2000 * bank);
|
||||
CPU_MEM_BANK[page].SetArray(MMU.PROM, 0x2000 * bank, MMU.PROM.Length - 0x2000 * bank);
|
||||
CPU_MEM_TYPE[page] = BANKTYPE_ROM;
|
||||
CPU_MEM_PAGE[page] = bank;
|
||||
}
|
||||
@ -139,7 +139,7 @@ namespace VirtualNes
|
||||
internal static void SetVROM_1K_Bank(byte page, int bank)
|
||||
{
|
||||
bank %= VROM_1K_SIZE;
|
||||
PPU_MEM_BANK[page] = new ArrayRef<byte>(VROM, 0x0400 * bank, VROM.Length - (0x0400 * bank));
|
||||
PPU_MEM_BANK[page].SetArray(VROM, 0x0400 * bank, VROM.Length - (0x0400 * bank));
|
||||
PPU_MEM_TYPE[page] = BANKTYPE_VROM;
|
||||
PPU_MEM_PAGE[page] = bank;
|
||||
}
|
||||
@ -182,7 +182,7 @@ namespace VirtualNes
|
||||
internal static void SetCRAM_1K_Bank(byte page, int bank)
|
||||
{
|
||||
bank &= 0x1F;
|
||||
PPU_MEM_BANK[page] = new ArrayRef<byte>(MMU.CRAM, 0x0400 * bank, MMU.CRAM.Length - 0x0400 * bank);
|
||||
PPU_MEM_BANK[page].SetArray(MMU.CRAM, 0x0400 * bank, MMU.CRAM.Length - 0x0400 * bank);
|
||||
PPU_MEM_TYPE[page] = BANKTYPE_CRAM;
|
||||
PPU_MEM_PAGE[page] = bank;
|
||||
|
||||
@ -214,7 +214,7 @@ namespace VirtualNes
|
||||
internal static void SetVRAM_1K_Bank(byte page, int bank)
|
||||
{
|
||||
bank &= 3;
|
||||
PPU_MEM_BANK[page] = new ArrayRef<byte>(VRAM, 0x0400 * bank, VRAM.Length - 0x0400 * bank);
|
||||
PPU_MEM_BANK[page].SetArray(VRAM, 0x0400 * bank, VRAM.Length - 0x0400 * bank);
|
||||
PPU_MEM_TYPE[page] = BANKTYPE_VRAM;
|
||||
PPU_MEM_PAGE[page] = bank;
|
||||
}
|
||||
|
||||
@ -426,7 +426,7 @@ namespace VirtualNes.Core
|
||||
// 僨僼僅儖僩僶儞僋愝掕
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
MMU.CPU_MEM_BANK[i] = null;
|
||||
MMU.CPU_MEM_BANK[i] = new ArrayRef<byte>();
|
||||
MMU.CPU_MEM_TYPE[i] = MMU.BANKTYPE_ROM;
|
||||
MMU.CPU_MEM_PAGE[i] = 0;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user