diff --git a/MAME.Unity/Assets/Plugins/UMAME/Motion/cheatMotion.cs b/MAME.Unity/Assets/Plugins/UMAME/Motion/cheatMotion.cs index 0f0922b..1a77acf 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/Motion/cheatMotion.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/Motion/cheatMotion.cs @@ -5,7 +5,7 @@ using System.Collections.Generic; namespace MAME.Core { - public partial class CheatMotion + public unsafe partial class CheatMotion { public enum LockState { @@ -41,8 +41,8 @@ namespace MAME.Core case "Taito B": case "Konami 68000": case "Capcom": - CheatReadByte = (int i1) => { return Memory.mainram[i1]; }; - CheatWriteByte = (int i1, byte b1) => { Memory.mainram[i1] = b1; }; + CheatReadByte = (int i1) => { return Memory.mainram_Ptr[i1]; }; + CheatWriteByte = (int i1, byte b1) => { Memory.mainram_Ptr[i1] = b1; }; break; case "Namco System 1": CheatReadByte = (int i1) => { return Namcos1.N0ReadMemory((ushort)i1); }; diff --git a/MAME.Unity/Assets/Plugins/UMAME/Motion/m68000Motion.cs b/MAME.Unity/Assets/Plugins/UMAME/Motion/m68000Motion.cs index 7aa9ff6..6da2f8d 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/Motion/m68000Motion.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/Motion/m68000Motion.cs @@ -179,7 +179,7 @@ namespace MAME.Core // } // if (iStatus == 0) // { - // /*if(Memory.mainram[0xd1b]==0x05) + // /*if(Memory.mainram_Ptr[0xd1b]==0x05) // { // iStatus = 1; // GetData(); diff --git a/MAME.Unity/Assets/Plugins/UMAME/emu/Memory.cs b/MAME.Unity/Assets/Plugins/UMAME/emu/Memory.cs index 38daf39..c3cf50b 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/emu/Memory.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/emu/Memory.cs @@ -1,8 +1,15 @@ -namespace MAME.Core +using System; +using System.IO; +using System.Runtime.InteropServices; + +namespace MAME.Core { - public class Memory + public unsafe class Memory { - public static byte[] mainrom, audiorom, mainram, audioram; + //public static byte[] mainrom, audiorom, mainram, audioram; + public static byte[] audioram; + + static byte[] mainrom, audiorom, mainram; public static void memory_reset() { switch (Machine.sBoard) @@ -322,5 +329,101 @@ break; } } + + static GCHandle mainrom_handle; + public static byte* mainrom_Ptr; + public static int mainrom_Lenght; + public static bool mainrom_IsNull => mainrom == null; + + public static void Set_mainrom(byte[] data) + { + Release_mainrom(); + mainrom = data; + mainrom_handle = GCHandle.Alloc(mainrom, GCHandleType.Pinned); + mainrom_Ptr = (byte*)mainrom_handle.AddrOfPinnedObject(); + mainrom_Lenght = data.Length; + } + static void Release_mainrom() + { + if (mainrom != null) + { + if (mainrom_handle.IsAllocated) + mainrom_handle.Free(); + } + mainrom = null; + mainrom_handle = default; + mainrom_Ptr = null; + mainrom_Lenght = default; + } + + + static GCHandle audiorom_handle; + public static byte* audiorom_Ptr; + + public static bool audiorom_IsNull => audiorom == null; + + public static void Set_audiorom(byte[] data) + { + Release_audiorom(); + audiorom = data; + audiorom_handle = GCHandle.Alloc(audiorom, GCHandleType.Pinned); + audiorom_Ptr = (byte*)audiorom_handle.AddrOfPinnedObject(); + } + static void Release_audiorom() + { + if (audiorom != null) + { + if (audiorom_handle.IsAllocated) + audiorom_handle.Free(); + } + audiorom = null; + audiorom_handle = default; + audiorom_Ptr = null; + } + + static GCHandle mainram_handle; + public static byte* mainram_Ptr; + public static int mainram_Lenght; + public static bool mainram_IsNull => mainram == null; + + public static void Set_mainram(byte[] data) + { + Release_mainram(); + mainram = data; + mainram_handle = GCHandle.Alloc(mainram, GCHandleType.Pinned); + mainram_Ptr = (byte*)mainram_handle.AddrOfPinnedObject(); + mainram_Lenght = data.Length; + } + static void Release_mainram() + { + if (mainram != null) + { + if (mainram_handle.IsAllocated) + mainram_handle.Free(); + } + mainram = null; + mainram_handle = default; + mainram_Ptr = null; + mainram_Lenght = default; + } + + + } + + public unsafe static class MemoryEx + { + // 创建一个临时数组来存储从指针指向的数据中复制的内容 + static byte[] tempBuffer = new byte[0x20000]; + public static void Write(this BinaryWriter bw, byte* buffer, int index, int count) + { + fixed (byte* pTempBuffer = tempBuffer) + { + // 使用指针复制数据到临时数组 + Buffer.MemoryCopy(buffer + index, pTempBuffer, count, count); + } + + // 使用BinaryWriter写入临时数组 + bw.Write(tempBuffer, 0, count); + } } } \ No newline at end of file diff --git a/MAME.Unity/Assets/Plugins/UMAME/emu/Video.cs b/MAME.Unity/Assets/Plugins/UMAME/emu/Video.cs index 7f36dba..906897d 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/emu/Video.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/emu/Video.cs @@ -631,13 +631,17 @@ namespace MAME.Core bitmapbase_Ptrs = null; } - bitmapbase_handles = new GCHandle[bitmapbase.Length]; - bitmapbase_Ptrs = new IntPtr[bitmapbase.Length]; - for (int i = 0; i < bitmapbase.Length; i++) + if (bitmapbase != null) { - bitmapbase_handles[i] = GCHandle.Alloc(bitmapbase[i], GCHandleType.Pinned); - bitmapbase_Ptrs[i] = bitmapbase_handles[i].AddrOfPinnedObject(); + bitmapbase_handles = new GCHandle[bitmapbase.Length]; + bitmapbase_Ptrs = new IntPtr[bitmapbase.Length]; + for (int i = 0; i < bitmapbase.Length; i++) + { + bitmapbase_handles[i] = GCHandle.Alloc(bitmapbase[i], GCHandleType.Pinned); + bitmapbase_Ptrs[i] = bitmapbase_handles[i].AddrOfPinnedObject(); + } } + /** end **/ diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/capcom/Capcom.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/capcom/Capcom.cs index 1ba4059..3208056 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/capcom/Capcom.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/capcom/Capcom.cs @@ -30,8 +30,9 @@ namespace MAME.Core case "diamond": Generic.spriteram = new byte[0x200]; Generic.buffered_spriteram = new byte[0x200]; - Memory.mainrom = Machine.GetRom("maincpu.rom"); - Memory.audiorom = Machine.GetRom("audiocpu.rom"); + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); + //Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); + Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); gfx12rom = Machine.GetRom("gfx1.rom"); n = gfx12rom.Length; gfx1rom = new byte[n * 2]; @@ -56,11 +57,11 @@ namespace MAME.Core gfx3rom[i * 2] = (byte)(gfx32rom[i] >> 4); gfx3rom[i * 2 + 1] = (byte)(gfx32rom[i] & 0x0f); } - Memory.mainram = new byte[0x1e00]; + Memory.Set_mainram(new byte[0x1e00]); Memory.audioram = new byte[0x800]; Generic.paletteram = new byte[0x100]; Generic.paletteram_2 = new byte[0x100]; - if (Memory.mainrom == null || Memory.audiorom == null || gfx12rom == null || gfx22rom == null || gfx32rom == null) + if (Memory.mainrom_IsNull|| Memory.audiorom_IsNull || gfx12rom == null || gfx22rom == null || gfx32rom == null) { Machine.bRom = false; } @@ -74,8 +75,9 @@ namespace MAME.Core sf_objectram = new ushort[0x1000]; sf_videoram = new ushort[0x800]; Generic.paletteram16 = new ushort[0x400]; - Memory.mainrom = Machine.GetRom("maincpu.rom"); - Memory.audiorom = Machine.GetRom("audiocpu.rom"); + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); + //Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); + Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); audiorom2 = Machine.GetRom("audio2.rom"); gfx12rom = Machine.GetRom("gfx1.rom"); n = gfx12rom.Length; @@ -110,9 +112,9 @@ namespace MAME.Core gfx4rom[i * 2 + 1] = (byte)(gfx42rom[i] & 0x0f); } gfx5rom = Machine.GetRom("gfx5.rom"); - Memory.mainram = new byte[0x6000]; + Memory.Set_mainram(new byte[0x6000]); Memory.audioram = new byte[0x800]; - if (Memory.mainrom == null || Memory.audiorom == null || gfx12rom == null || gfx22rom == null || gfx32rom == null || gfx42rom == null || gfx5rom == null) + if (Memory.mainrom_IsNull || Memory.audiorom_IsNull || gfx12rom == null || gfx22rom == null || gfx32rom == null || gfx42rom == null || gfx5rom == null) { Machine.bRom = false; } diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/capcom/Memory.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/capcom/Memory.cs index 91581c9..9d304db 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/capcom/Memory.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/capcom/Memory.cs @@ -2,7 +2,7 @@ namespace MAME.Core { - public partial class Capcom + public unsafe partial class Capcom { public static sbyte sbyte1, sbyte2, sbyte3, sbyte4; public static sbyte sbyte1_old, sbyte2_old, sbyte3_old, sbyte4_old; @@ -15,16 +15,16 @@ namespace MAME.Core byte result = 0; if (address <= 0x1dff) { - result = Memory.mainram[address]; + result = Memory.mainram_Ptr[address]; } else if (address >= 0x4000 && address <= 0x5fff) { int offset = address - 0x4000; - result = Memory.mainrom[basebankmain + offset]; + result = Memory.mainrom_Ptr[basebankmain + offset]; } else if (address >= 0x6000 && address <= 0xffff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } else { @@ -37,7 +37,7 @@ namespace MAME.Core byte result = 0; if (address <= 0x1dff) { - result = Memory.mainram[address]; + result = Memory.mainram_Ptr[address]; } else if (address >= 0x1e00 && address <= 0x1fff) { @@ -85,11 +85,11 @@ namespace MAME.Core else if (address >= 0x4000 && address <= 0x5fff) { int offset = address - 0x4000; - result = Memory.mainrom[basebankmain + offset]; + result = Memory.mainrom_Ptr[basebankmain + offset]; } else if (address >= 0x6000 && address <= 0xffff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } return result; } @@ -98,7 +98,7 @@ namespace MAME.Core byte result = 0; if (address <= 0x1dff) { - result = Memory.mainram[address]; + result = Memory.mainram_Ptr[address]; } else if (address >= 0x1e00 && address <= 0x1fff) { @@ -146,7 +146,7 @@ namespace MAME.Core else if (address >= 0x4000 && address <= 0x5fff) { int offset = address - 0x4000; - result = Memory.mainrom[basebankmain + offset]; + result = Memory.mainrom_Ptr[basebankmain + offset]; } else if (address == 0x6000) { @@ -154,7 +154,7 @@ namespace MAME.Core } else if (address >= 0x6001 && address <= 0xffff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } return result; } @@ -162,7 +162,7 @@ namespace MAME.Core { if (address <= 0x1dff) { - Memory.mainram[address] = value; + Memory.mainram_Ptr[address] = value; } else if (address >= 0x1e00 && address <= 0x1fff) { @@ -222,7 +222,7 @@ namespace MAME.Core } else if (address >= 0x4000 && address <= 0xffff) { - Memory.mainrom[address] = value; + Memory.mainrom_Ptr[address] = value; } } public static byte ZReadOp_gng(ushort address) @@ -230,7 +230,7 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0xc000 && address <= 0xc7ff) { @@ -248,7 +248,7 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0xc000 && address <= 0xc7ff) { @@ -269,7 +269,7 @@ namespace MAME.Core { if (address >= 0x0000 && address <= 0x7fff) { - Memory.audiorom[address] = value; + Memory.audiorom_Ptr[address] = value; } else if (address >= 0xc000 && address <= 0xc7ff) { @@ -299,9 +299,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x04ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -316,9 +316,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x04ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -428,7 +428,7 @@ namespace MAME.Core else if (address >= 0xff8000 && address <= 0xffdfff) { int offset = address - 0xff8000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } else if (address >= 0xffe000 && address <= 0xffffff) { @@ -450,9 +450,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x04ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -562,7 +562,7 @@ namespace MAME.Core else if (address >= 0xff8000 && address <= 0xffdfff) { int offset = address - 0xff8000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } else if (address >= 0xffe000 && address <= 0xffffff) { @@ -584,9 +584,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x04ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -696,7 +696,7 @@ namespace MAME.Core else if (address >= 0xff8000 && address <= 0xffdfff) { int offset = address - 0xff8000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } else if (address >= 0xffe000 && address <= 0xffffff) { @@ -718,9 +718,9 @@ namespace MAME.Core short result = 0; if (address <= 0x04ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -735,9 +735,9 @@ namespace MAME.Core short result = 0; if (address <= 0x04ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -784,7 +784,7 @@ namespace MAME.Core else if (address >= 0xff8000 && address + 1 <= 0xffdfff) { int offset = address - 0xff8000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } else if (address >= 0xffe000 && address + 1 <= 0xffffff) { @@ -799,9 +799,9 @@ namespace MAME.Core short result = 0; if (address <= 0x04ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -848,7 +848,7 @@ namespace MAME.Core else if (address >= 0xff8000 && address + 1 <= 0xffdfff) { int offset = address - 0xff8000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } else if (address >= 0xffe000 && address + 1 <= 0xffffff) { @@ -863,9 +863,9 @@ namespace MAME.Core short result = 0; if (address <= 0x04ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -912,7 +912,7 @@ namespace MAME.Core else if (address >= 0xff8000 && address + 1 <= 0xffdfff) { int offset = address - 0xff8000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } else if (address >= 0xffe000 && address + 1 <= 0xffffff) { @@ -927,9 +927,9 @@ namespace MAME.Core int result = 0; if (address <= 0x04ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -944,9 +944,9 @@ namespace MAME.Core int result = 0; if (address <= 0x04ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -961,7 +961,7 @@ namespace MAME.Core else if (address >= 0xff8000 && address + 3 <= 0xffdfff) { int offset = address - 0xff8000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } else if (address >= 0xffe000 && address + 3 <= 0xffffff) { @@ -975,9 +975,9 @@ namespace MAME.Core address &= 0xffffff; if (address >= 0x000000 && address <= 0x04ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - Memory.mainrom[address] = (byte)value; + Memory.mainrom_Ptr[address] = (byte)value; } } else if (address >= 0x800000 && address <= 0x800fff) @@ -1073,7 +1073,7 @@ namespace MAME.Core else if (address >= 0xff8000 && address <= 0xffdfff) { int offset = address - 0xff8000; - Memory.mainram[offset] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)value; } else if (address >= 0xffe000 && address <= 0xffffff) { @@ -1093,10 +1093,10 @@ namespace MAME.Core address &= 0xffffff; if (address >= 0x000000 && address + 1 <= 0x04ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - Memory.mainrom[address] = (byte)(value >> 8); - Memory.mainrom[address + 1] = (byte)value; + Memory.mainrom_Ptr[address] = (byte)(value >> 8); + Memory.mainrom_Ptr[address + 1] = (byte)value; } } else if (address >= 0x800000 && address + 1 <= 0x800fff) @@ -1136,8 +1136,8 @@ namespace MAME.Core else if (address >= 0xff8000 && address + 1 <= 0xffdfff) { int offset = address - 0xff8000; - Memory.mainram[offset] = (byte)(value >> 8); - Memory.mainram[offset + 1] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 1] = (byte)value; } else if (address >= 0xffe000 && address + 1 <= 0xffffff) { @@ -1150,12 +1150,12 @@ namespace MAME.Core address &= 0xffffff; if (address >= 0x000000 && address + 3 <= 0x04ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - Memory.mainrom[address] = (byte)(value >> 24); - Memory.mainrom[address + 1] = (byte)(value >> 16); - Memory.mainrom[address + 2] = (byte)(value >> 8); - Memory.mainrom[address + 3] = (byte)value; + Memory.mainrom_Ptr[address] = (byte)(value >> 24); + Memory.mainrom_Ptr[address + 1] = (byte)(value >> 16); + Memory.mainrom_Ptr[address + 2] = (byte)(value >> 8); + Memory.mainrom_Ptr[address + 3] = (byte)value; } } else if (address >= 0x800000 && address + 3 <= 0x800fff) @@ -1173,10 +1173,10 @@ namespace MAME.Core else if (address >= 0xff8000 && address + 3 <= 0xffdfff) { int offset = address - 0xff8000; - Memory.mainram[offset] = (byte)(value >> 24); - Memory.mainram[offset + 1] = (byte)(value >> 16); - Memory.mainram[offset + 2] = (byte)(value >> 8); - Memory.mainram[offset + 3] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 24); + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[offset + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 3] = (byte)value; } else if (address >= 0xffe000 && address + 3 <= 0xffffff) { @@ -1190,7 +1190,7 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0xc000 && address <= 0xc7ff) { @@ -1208,7 +1208,7 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0xc000 && address <= 0xc7ff) { @@ -1233,7 +1233,7 @@ namespace MAME.Core { if (address >= 0x0000 && address <= 0x7fff) { - Memory.audiorom[address] = value; + Memory.audiorom_Ptr[address] = value; } else if (address >= 0xc000 && address <= 0xc7ff) { diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/capcom/State.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/capcom/State.cs index d0af37c..7f28367 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/capcom/State.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/capcom/State.cs @@ -5,7 +5,7 @@ using System.IO; namespace MAME.Core { - public partial class Capcom + public unsafe partial class Capcom { public static void SaveStateBinary_gng(BinaryWriter writer) { @@ -25,7 +25,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x1e00); + writer.Write(Memory.mainram_Ptr, 0, 0x1e00); M6809.mm1[0].SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x800); Z80A.zz1[0].SaveStateBinary(writer); @@ -71,7 +71,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x1e00); + Memory.Set_mainram(reader.ReadBytes(0x1e00)); M6809.mm1[0].LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x800); Z80A.zz1[0].LoadStateBinary(reader); @@ -124,7 +124,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x6000); + writer.Write(Memory.mainram_Ptr, 0, 0x6000); MC68000.m1.SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x800); Z80A.zz1[0].SaveStateBinary(writer); @@ -173,7 +173,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x6000); + Memory.Set_mainram(reader.ReadBytes(0x6000)); MC68000.m1.LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x800); Z80A.zz1[0].LoadStateBinary(reader); diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/cps/CPS.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/cps/CPS.cs index dcfab11..50ac8cd 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/cps/CPS.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/cps/CPS.cs @@ -49,10 +49,10 @@ namespace MAME.Core cps_a_regs = new ushort[0x20]; cps_b_regs = new ushort[0x20]; gfxram = new byte[0x30000]; - Memory.mainram = new byte[0x10000]; + Memory.Set_mainram(new byte[0x10000]); Memory.audioram = new byte[0x800]; Machine.bRom = true; - Memory.mainrom = Machine.GetRom("maincpu.rom"); + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); gfxrom = Machine.GetRom("gfx.rom"); n = gfxrom.Length; gfx1rom = new byte[n * 2]; @@ -62,14 +62,15 @@ namespace MAME.Core gfx1rom[i * 2 + 1] = (byte)(gfxrom[i] >> 4); } total_elements = n / 0x80; - Memory.audiorom = Machine.GetRom("audiocpu.rom"); + //Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); + Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); switch (Machine.sBoard) { case "CPS-1": cps_version = 1; starsrom = Machine.GetRom("stars.rom"); OKI6295.okirom = Machine.GetRom("oki.rom"); - if (Memory.mainrom == null || gfxrom == null || Memory.audiorom == null || OKI6295.okirom == null) + if (Memory.mainrom_IsNull || gfxrom == null || Memory.audiorom_IsNull || OKI6295.okirom == null) { Machine.bRom = false; } @@ -81,7 +82,7 @@ namespace MAME.Core audioromop = Machine.GetRom("audiocpuop.rom"); user1rom = Machine.GetRom("user1.rom"); QSound.qsoundrom = ByteToSbyte(Machine.GetRom("qsound.rom")); - if (Memory.mainrom == null || audioromop == null || gfxrom == null || Memory.audiorom == null || QSound.qsoundrom == null) + if (Memory.mainrom_IsNull || audioromop == null || gfxrom == null || Memory.audiorom_IsNull || QSound.qsoundrom == null) { Machine.bRom = false; } @@ -105,7 +106,7 @@ namespace MAME.Core } audioromop = Machine.GetRom("audiocpu.rom"); QSound.qsoundrom = ByteToSbyte(Machine.GetRom("qsound.rom")); - if (Memory.mainrom == null || (Machine.sManufacturer != "bootleg" && mainromop == null) || audioromop == null || gfxrom == null || Memory.audiorom == null || QSound.qsoundrom == null) + if (Memory.mainrom_IsNull || (Machine.sManufacturer != "bootleg" && mainromop == null) || audioromop == null || gfxrom == null || Memory.audiorom_IsNull || QSound.qsoundrom == null) { Machine.bRom = false; } diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/cps/Memory.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/cps/Memory.cs index dc93efb..222861c 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/cps/Memory.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/cps/Memory.cs @@ -2,7 +2,7 @@ namespace MAME.Core { - public partial class CPS + public unsafe partial class CPS { public static short short0, short1, short2; public static sbyte sbyte0, sbyte3; @@ -14,9 +14,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x3fffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -31,9 +31,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x3fffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)Memory.mainrom[address]; + result = (sbyte)Memory.mainrom_Ptr[address]; } else { @@ -82,7 +82,7 @@ namespace MAME.Core } else if (address >= 0xff0000 && address <= 0xffffff) { - result = (sbyte)Memory.mainram[address & 0xffff]; + result = (sbyte)Memory.mainram_Ptr[address & 0xffff]; } return result; } @@ -92,9 +92,9 @@ namespace MAME.Core short result = 0; if (address <= 0x3fffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -107,7 +107,7 @@ namespace MAME.Core } else if (address >= 0xff0000 && address + 1 <= 0xffffff) { - result = (short)(Memory.mainram[(address & 0xffff)] * 0x100 + Memory.mainram[(address & 0xffff) + 1]); + result = (short)(Memory.mainram_Ptr[(address & 0xffff)] * 0x100 + Memory.mainram_Ptr[(address & 0xffff) + 1]); } return result; } @@ -117,9 +117,9 @@ namespace MAME.Core short result = 0; if (address <= 0x3fffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -150,7 +150,7 @@ namespace MAME.Core } else if (address >= 0xff0000 && address + 1 <= 0xffffff) { - result = (short)(Memory.mainram[(address & 0xffff)] * 0x100 + Memory.mainram[(address & 0xffff) + 1]); + result = (short)(Memory.mainram_Ptr[(address & 0xffff)] * 0x100 + Memory.mainram_Ptr[(address & 0xffff) + 1]); } return result; } @@ -160,9 +160,9 @@ namespace MAME.Core int result = 0; if (address <= 0x3fffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -175,7 +175,7 @@ namespace MAME.Core } else if (address >= 0xff0000 && address + 3 <= 0xffffff) { - result = (int)(Memory.mainram[(address & 0xffff)] * 0x1000000 + Memory.mainram[(address & 0xffff) + 1] * 0x10000 + Memory.mainram[(address & 0xffff) + 2] * 0x100 + Memory.mainram[(address & 0xffff) + 3]); + result = (int)(Memory.mainram_Ptr[(address & 0xffff)] * 0x1000000 + Memory.mainram_Ptr[(address & 0xffff) + 1] * 0x10000 + Memory.mainram_Ptr[(address & 0xffff) + 2] * 0x100 + Memory.mainram_Ptr[(address & 0xffff) + 3]); } return result; } @@ -185,9 +185,9 @@ namespace MAME.Core int result = 0; if (address <= 0x3fffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -217,7 +217,7 @@ namespace MAME.Core } else if (address >= 0xff0000 && address + 3 <= 0xffffff) { - result = (int)(Memory.mainram[(address & 0xffff)] * 0x1000000 + Memory.mainram[(address & 0xffff) + 1] * 0x10000 + Memory.mainram[(address & 0xffff) + 2] * 0x100 + Memory.mainram[(address & 0xffff) + 3]); + result = (int)(Memory.mainram_Ptr[(address & 0xffff)] * 0x1000000 + Memory.mainram_Ptr[(address & 0xffff) + 1] * 0x10000 + Memory.mainram_Ptr[(address & 0xffff) + 2] * 0x100 + Memory.mainram_Ptr[(address & 0xffff) + 3]); } return result; } @@ -258,7 +258,7 @@ namespace MAME.Core } else if (address >= 0xff0000 && address <= 0xffffff) { - Memory.mainram[(address & 0xffff)] = (byte)(value); + Memory.mainram_Ptr[(address & 0xffff)] = (byte)(value); } else { @@ -296,8 +296,8 @@ namespace MAME.Core } else if (address >= 0xff0000 && address + 1 <= 0xffffff) { - Memory.mainram[(address & 0xffff)] = (byte)(value >> 8); - Memory.mainram[(address & 0xffff) + 1] = (byte)(value); + Memory.mainram_Ptr[(address & 0xffff)] = (byte)(value >> 8); + Memory.mainram_Ptr[(address & 0xffff) + 1] = (byte)(value); } else { @@ -340,22 +340,22 @@ namespace MAME.Core } else if (address >= 0xff0000 && address + 3 <= 0xffffff) { - Memory.mainram[(address & 0xffff)] = (byte)(value >> 24); - Memory.mainram[(address & 0xffff) + 1] = (byte)(value >> 16); - Memory.mainram[(address & 0xffff) + 2] = (byte)(value >> 8); - Memory.mainram[(address & 0xffff) + 3] = (byte)(value); + Memory.mainram_Ptr[(address & 0xffff)] = (byte)(value >> 24); + Memory.mainram_Ptr[(address & 0xffff) + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[(address & 0xffff) + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[(address & 0xffff) + 3] = (byte)(value); } else { int i1 = 1; } } - public static byte ZCReadOp(ushort address) + public unsafe static byte ZCReadOp(ushort address) { byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address & 0x7fff]; + result = Memory.audiorom_Ptr[address & 0x7fff]; } else { @@ -363,16 +363,16 @@ namespace MAME.Core } return result; } - public static byte ZCReadMemory(ushort address) + public unsafe static byte ZCReadMemory(ushort address) { byte result = 0; if (address < 0x8000) { - result = Memory.audiorom[address & 0x7fff]; + result = Memory.audiorom_Ptr[address & 0x7fff]; } else if (address >= 0x8000 && address <= 0xbfff) { - result = Memory.audiorom[basebanksnd + (address & 0x3fff)]; + result = Memory.audiorom_Ptr[basebanksnd + (address & 0x3fff)]; } else if (address >= 0xd000 && address <= 0xd7ff) { @@ -437,9 +437,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x3fffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -458,9 +458,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x3fffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)Memory.mainrom[address]; + result = (sbyte)Memory.mainrom_Ptr[address]; } else { @@ -532,7 +532,7 @@ namespace MAME.Core } else if (address >= 0xff0000 && address <= 0xffffff) { - result = (sbyte)Memory.mainram[address & 0xffff]; + result = (sbyte)Memory.mainram_Ptr[address & 0xffff]; } return result; } @@ -542,9 +542,9 @@ namespace MAME.Core short result = 0; if (address <= 0x3fffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -557,7 +557,7 @@ namespace MAME.Core } else if (address >= 0xff0000 && address + 1 <= 0xffffff) { - result = (short)(Memory.mainram[(address & 0xffff)] * 0x100 + Memory.mainram[(address & 0xffff) + 1]); + result = (short)(Memory.mainram_Ptr[(address & 0xffff)] * 0x100 + Memory.mainram_Ptr[(address & 0xffff) + 1]); } return result; } @@ -567,9 +567,9 @@ namespace MAME.Core short result = 0; if (address <= 0x3fffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -623,7 +623,7 @@ namespace MAME.Core } else if (address >= 0xff0000 && address + 1 <= 0xffffff) { - result = (short)(Memory.mainram[(address & 0xffff)] * 0x100 + Memory.mainram[(address & 0xffff) + 1]); + result = (short)(Memory.mainram_Ptr[(address & 0xffff)] * 0x100 + Memory.mainram_Ptr[(address & 0xffff) + 1]); } return result; } @@ -633,9 +633,9 @@ namespace MAME.Core int result = 0; if (address <= 0x3fffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -648,7 +648,7 @@ namespace MAME.Core } else if (address >= 0xff0000 && address + 3 <= 0xffffff) { - result = (int)(Memory.mainram[(address & 0xffff)] * 0x1000000 + Memory.mainram[(address & 0xffff) + 1] * 0x10000 + Memory.mainram[(address & 0xffff) + 2] * 0x100 + Memory.mainram[(address & 0xffff) + 3]); + result = (int)(Memory.mainram_Ptr[(address & 0xffff)] * 0x1000000 + Memory.mainram_Ptr[(address & 0xffff) + 1] * 0x10000 + Memory.mainram_Ptr[(address & 0xffff) + 2] * 0x100 + Memory.mainram_Ptr[(address & 0xffff) + 3]); } return result; } @@ -658,9 +658,9 @@ namespace MAME.Core int result = 0; if (address <= 0x3fffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -709,7 +709,7 @@ namespace MAME.Core } else if (address >= 0xff0000 && address + 3 <= 0xffffff) { - result = (int)(Memory.mainram[(address & 0xffff)] * 0x1000000 + Memory.mainram[(address & 0xffff) + 1] * 0x10000 + Memory.mainram[(address & 0xffff) + 2] * 0x100 + Memory.mainram[(address & 0xffff) + 3]); + result = (int)(Memory.mainram_Ptr[(address & 0xffff)] * 0x1000000 + Memory.mainram_Ptr[(address & 0xffff) + 1] * 0x10000 + Memory.mainram_Ptr[(address & 0xffff) + 2] * 0x100 + Memory.mainram_Ptr[(address & 0xffff) + 3]); } return result; } @@ -777,7 +777,7 @@ namespace MAME.Core } else if (address >= 0xff0000 && address <= 0xffffff) { - Memory.mainram[(address & 0xffff)] = (byte)(value); + Memory.mainram_Ptr[(address & 0xffff)] = (byte)(value); } else { @@ -830,8 +830,8 @@ namespace MAME.Core } else if (address >= 0xff0000 && address + 1 <= 0xffffff) { - Memory.mainram[(address & 0xffff)] = (byte)(value >> 8); - Memory.mainram[(address & 0xffff) + 1] = (byte)(value); + Memory.mainram_Ptr[(address & 0xffff)] = (byte)(value >> 8); + Memory.mainram_Ptr[(address & 0xffff) + 1] = (byte)(value); } else { @@ -889,10 +889,10 @@ namespace MAME.Core } else if (address >= 0xff0000 && address + 3 <= 0xffffff) { - Memory.mainram[(address & 0xffff)] = (byte)(value >> 24); - Memory.mainram[(address & 0xffff) + 1] = (byte)(value >> 16); - Memory.mainram[(address & 0xffff) + 2] = (byte)(value >> 8); - Memory.mainram[(address & 0xffff) + 3] = (byte)(value); + Memory.mainram_Ptr[(address & 0xffff)] = (byte)(value >> 24); + Memory.mainram_Ptr[(address & 0xffff) + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[(address & 0xffff) + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[(address & 0xffff) + 3] = (byte)(value); } else { @@ -944,9 +944,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x3fffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)Memory.mainrom[address]; + result = (sbyte)Memory.mainrom_Ptr[address]; } else { @@ -1060,7 +1060,7 @@ namespace MAME.Core } else if (address >= 0xff0000 && address <= 0xffffff) { - result = (sbyte)Memory.mainram[address & 0xffff]; + result = (sbyte)Memory.mainram_Ptr[address & 0xffff]; } return result; } @@ -1108,9 +1108,9 @@ namespace MAME.Core short result = 0; if (address <= 0x3fffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -1203,7 +1203,7 @@ namespace MAME.Core } else if (address >= 0xff0000 && address + 1 <= 0xffffff) { - result = (short)(Memory.mainram[(address & 0xffff)] * 0x100 + Memory.mainram[(address & 0xffff) + 1]); + result = (short)(Memory.mainram_Ptr[(address & 0xffff)] * 0x100 + Memory.mainram_Ptr[(address & 0xffff) + 1]); } return result; } @@ -1251,9 +1251,9 @@ namespace MAME.Core int result = 0; if (address <= 0x3fffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -1354,7 +1354,7 @@ namespace MAME.Core } else if (address >= 0xff0000 && address + 3 <= 0xffffff) { - result = (int)(Memory.mainram[(address & 0xffff)] * 0x1000000 + Memory.mainram[(address & 0xffff) + 1] * 0x10000 + Memory.mainram[(address & 0xffff) + 2] * 0x100 + Memory.mainram[(address & 0xffff) + 3]); + result = (int)(Memory.mainram_Ptr[(address & 0xffff)] * 0x1000000 + Memory.mainram_Ptr[(address & 0xffff) + 1] * 0x10000 + Memory.mainram_Ptr[(address & 0xffff) + 2] * 0x100 + Memory.mainram_Ptr[(address & 0xffff) + 3]); } return result; } @@ -1465,7 +1465,7 @@ namespace MAME.Core } else if (address >= 0xff0000 && address <= 0xffffff) { - Memory.mainram[(address & 0xffff)] = (byte)(value); + Memory.mainram_Ptr[(address & 0xffff)] = (byte)(value); } else { @@ -1570,8 +1570,8 @@ namespace MAME.Core } else if (address >= 0xff0000 && address + 1 <= 0xffffff) { - Memory.mainram[address & 0xffff] = (byte)(value >> 8); - Memory.mainram[(address & 0xffff) + 1] = (byte)value; + Memory.mainram_Ptr[address & 0xffff] = (byte)(value >> 8); + Memory.mainram_Ptr[(address & 0xffff) + 1] = (byte)value; } else { @@ -1694,10 +1694,10 @@ namespace MAME.Core } else if (address >= 0xff0000 && address + 3 <= 0xffffff) { - Memory.mainram[(address & 0xffff)] = (byte)(value >> 24); - Memory.mainram[(address & 0xffff) + 1] = (byte)(value >> 16); - Memory.mainram[(address & 0xffff) + 2] = (byte)(value >> 8); - Memory.mainram[(address & 0xffff) + 3] = (byte)(value); + Memory.mainram_Ptr[(address & 0xffff)] = (byte)(value >> 24); + Memory.mainram_Ptr[(address & 0xffff) + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[(address & 0xffff) + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[(address & 0xffff) + 3] = (byte)(value); } else { @@ -1717,16 +1717,16 @@ namespace MAME.Core } return result; } - public static byte ZQReadMemory(ushort address) + public unsafe static byte ZQReadMemory(ushort address) { byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address & 0x7fff]; + result = Memory.audiorom_Ptr[address & 0x7fff]; } else if (address >= 0x8000 && address <= 0xbfff) { - result = Memory.audiorom[basebanksnd + (address & 0x3fff)]; + result = Memory.audiorom_Ptr[basebanksnd + (address & 0x3fff)]; } else if (address >= 0xc000 && address <= 0xcfff) { diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/cps/Memory2.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/cps/Memory2.cs index 942a69d..89fe0c2 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/cps/Memory2.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/cps/Memory2.cs @@ -1,6 +1,6 @@ namespace MAME.Core { - public partial class CPS + public unsafe partial class CPS { public static sbyte MCReadByte_forgottn(int address) { @@ -193,9 +193,9 @@ sbyte result = 0; if (address <= 0x3fffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)Memory.mainrom[address]; + result = (sbyte)Memory.mainrom_Ptr[address]; } else { @@ -233,7 +233,7 @@ } else if (address >= 0xff0000 && address <= 0xffffff) { - result = (sbyte)Memory.mainram[address & 0xffff]; + result = (sbyte)Memory.mainram_Ptr[address & 0xffff]; } return result; } @@ -243,9 +243,9 @@ short result = 0; if (address <= 0x3fffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -276,7 +276,7 @@ } else if (address >= 0xff0000 && address + 1 <= 0xffffff) { - result = (short)(Memory.mainram[(address & 0xffff)] * 0x100 + Memory.mainram[(address & 0xffff) + 1]); + result = (short)(Memory.mainram_Ptr[(address & 0xffff)] * 0x100 + Memory.mainram_Ptr[(address & 0xffff) + 1]); } return result; } @@ -286,9 +286,9 @@ int result = 0; if (address <= 0x3fffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -318,7 +318,7 @@ } else if (address >= 0xff0000 && address + 3 <= 0xffffff) { - result = (int)(Memory.mainram[(address & 0xffff)] * 0x1000000 + Memory.mainram[(address & 0xffff) + 1] * 0x10000 + Memory.mainram[(address & 0xffff) + 2] * 0x100 + Memory.mainram[(address & 0xffff) + 3]); + result = (int)(Memory.mainram_Ptr[(address & 0xffff)] * 0x1000000 + Memory.mainram_Ptr[(address & 0xffff) + 1] * 0x10000 + Memory.mainram_Ptr[(address & 0xffff) + 2] * 0x100 + Memory.mainram_Ptr[(address & 0xffff) + 3]); } return result; } @@ -367,7 +367,7 @@ } else if (address >= 0xff0000 && address <= 0xffffff) { - Memory.mainram[(address & 0xffff)] = (byte)(value); + Memory.mainram_Ptr[(address & 0xffff)] = (byte)(value); } else { @@ -413,8 +413,8 @@ } else if (address >= 0xff0000 && address + 1 <= 0xffffff) { - Memory.mainram[(address & 0xffff)] = (byte)(value >> 8); - Memory.mainram[(address & 0xffff) + 1] = (byte)(value); + Memory.mainram_Ptr[(address & 0xffff)] = (byte)(value >> 8); + Memory.mainram_Ptr[(address & 0xffff) + 1] = (byte)(value); } else { @@ -466,10 +466,10 @@ } else if (address >= 0xff0000 && address + 3 <= 0xffffff) { - Memory.mainram[(address & 0xffff)] = (byte)(value >> 24); - Memory.mainram[(address & 0xffff) + 1] = (byte)(value >> 16); - Memory.mainram[(address & 0xffff) + 2] = (byte)(value >> 8); - Memory.mainram[(address & 0xffff) + 3] = (byte)(value); + Memory.mainram_Ptr[(address & 0xffff)] = (byte)(value >> 24); + Memory.mainram_Ptr[(address & 0xffff) + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[(address & 0xffff) + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[(address & 0xffff) + 3] = (byte)(value); } else { @@ -482,9 +482,9 @@ sbyte result = 0; if (address <= 0x3fffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)Memory.mainrom[address]; + result = (sbyte)Memory.mainrom_Ptr[address]; } else { @@ -538,7 +538,7 @@ } else if (address >= 0xff0000 && address <= 0xffffff) { - result = (sbyte)Memory.mainram[address & 0xffff]; + result = (sbyte)Memory.mainram_Ptr[address & 0xffff]; } return result; } @@ -548,9 +548,9 @@ short result = 0; if (address <= 0x3fffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -593,7 +593,7 @@ } else if (address >= 0xff0000 && address + 1 <= 0xffffff) { - result = (short)(Memory.mainram[(address & 0xffff)] * 0x100 + Memory.mainram[(address & 0xffff) + 1]); + result = (short)(Memory.mainram_Ptr[(address & 0xffff)] * 0x100 + Memory.mainram_Ptr[(address & 0xffff) + 1]); } return result; } @@ -603,9 +603,9 @@ int result = 0; if (address <= 0x3fffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -647,7 +647,7 @@ } else if (address >= 0xff0000 && address + 3 <= 0xffffff) { - result = (int)(Memory.mainram[(address & 0xffff)] * 0x1000000 + Memory.mainram[(address & 0xffff) + 1] * 0x10000 + Memory.mainram[(address & 0xffff) + 2] * 0x100 + Memory.mainram[(address & 0xffff) + 3]); + result = (int)(Memory.mainram_Ptr[(address & 0xffff)] * 0x1000000 + Memory.mainram_Ptr[(address & 0xffff) + 1] * 0x10000 + Memory.mainram_Ptr[(address & 0xffff) + 2] * 0x100 + Memory.mainram_Ptr[(address & 0xffff) + 3]); } return result; } @@ -704,7 +704,7 @@ } else if (address >= 0xff0000 && address <= 0xffffff) { - Memory.mainram[(address & 0xffff)] = (byte)(value); + Memory.mainram_Ptr[(address & 0xffff)] = (byte)(value); } else { @@ -760,8 +760,8 @@ } else if (address >= 0xff0000 && address + 1 <= 0xffffff) { - Memory.mainram[(address & 0xffff)] = (byte)(value >> 8); - Memory.mainram[(address & 0xffff) + 1] = (byte)(value); + Memory.mainram_Ptr[(address & 0xffff)] = (byte)(value >> 8); + Memory.mainram_Ptr[(address & 0xffff) + 1] = (byte)(value); } else { @@ -827,10 +827,10 @@ } else if (address >= 0xff0000 && address + 3 <= 0xffffff) { - Memory.mainram[(address & 0xffff)] = (byte)(value >> 24); - Memory.mainram[(address & 0xffff) + 1] = (byte)(value >> 16); - Memory.mainram[(address & 0xffff) + 2] = (byte)(value >> 8); - Memory.mainram[(address & 0xffff) + 3] = (byte)(value); + Memory.mainram_Ptr[(address & 0xffff)] = (byte)(value >> 24); + Memory.mainram_Ptr[(address & 0xffff) + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[(address & 0xffff) + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[(address & 0xffff) + 3] = (byte)(value); } else { @@ -958,9 +958,9 @@ sbyte result = 0; if (address <= 0x3fffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -975,9 +975,9 @@ sbyte result = 0; if (address <= 0x3fffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)Memory.mainrom[address]; + result = (sbyte)Memory.mainrom_Ptr[address]; } else { @@ -1091,7 +1091,7 @@ } else if (address >= 0xff0000 && address <= 0xffffef) { - result = (sbyte)Memory.mainram[address & 0xffff]; + result = (sbyte)Memory.mainram_Ptr[address & 0xffff]; } else if (address >= 0xfffff0 && address <= 0xfffffb) { @@ -1110,9 +1110,9 @@ short result = 0; if (address <= 0x3fffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -1127,9 +1127,9 @@ short result = 0; if (address <= 0x3fffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -1222,7 +1222,7 @@ } else if (address >= 0xff0000 && address + 1 <= 0xffffef) { - return (short)(Memory.mainram[(address & 0xffff)] * 0x100 + Memory.mainram[(address & 0xffff) + 1]); + return (short)(Memory.mainram_Ptr[(address & 0xffff)] * 0x100 + Memory.mainram_Ptr[(address & 0xffff) + 1]); } else if (address >= 0xfffff0 && address + 1 <= 0xfffffb) { @@ -1241,9 +1241,9 @@ int result = 0; if (address <= 0x3fffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -1258,9 +1258,9 @@ int result = 0; if (address <= 0x3fffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -1362,7 +1362,7 @@ } else if (address >= 0xff0000 && address + 3 <= 0xffffef) { - result = (int)(Memory.mainram[(address & 0xffff)] * 0x1000000 + Memory.mainram[(address & 0xffff) + 1] * 0x10000 + Memory.mainram[(address & 0xffff) + 2] * 0x100 + Memory.mainram[(address & 0xffff) + 3]); + result = (int)(Memory.mainram_Ptr[(address & 0xffff)] * 0x1000000 + Memory.mainram_Ptr[(address & 0xffff) + 1] * 0x10000 + Memory.mainram_Ptr[(address & 0xffff) + 2] * 0x100 + Memory.mainram_Ptr[(address & 0xffff) + 3]); } else if (address >= 0xfffff0 && address + 3 <= 0xfffffb) { @@ -1483,7 +1483,7 @@ } else if (address >= 0xff0000 && address <= 0xffffef) { - Memory.mainram[(address & 0xffff)] = (byte)(value); + Memory.mainram_Ptr[(address & 0xffff)] = (byte)(value); } else if (address >= 0xfffff0 && address <= 0xfffffb) { @@ -1599,8 +1599,8 @@ } else if (address >= 0xff0000 && address + 1 <= 0xffffef) { - Memory.mainram[address & 0xffff] = (byte)(value >> 8); - Memory.mainram[(address & 0xffff) + 1] = (byte)value; + Memory.mainram_Ptr[address & 0xffff] = (byte)(value >> 8); + Memory.mainram_Ptr[(address & 0xffff) + 1] = (byte)value; } else if (address >= 0xfffff0 && address + 1 <= 0xfffffb) { @@ -1732,10 +1732,10 @@ } else if (address >= 0xff0000 && address + 3 <= 0xffffef) { - Memory.mainram[(address & 0xffff)] = (byte)(value >> 24); - Memory.mainram[(address & 0xffff) + 1] = (byte)(value >> 16); - Memory.mainram[(address & 0xffff) + 2] = (byte)(value >> 8); - Memory.mainram[(address & 0xffff) + 3] = (byte)(value); + Memory.mainram_Ptr[(address & 0xffff)] = (byte)(value >> 24); + Memory.mainram_Ptr[(address & 0xffff) + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[(address & 0xffff) + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[(address & 0xffff) + 3] = (byte)(value); } else if (address >= 0xfffff0 && address + 3 <= 0xfffffb) { diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/cps/State.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/cps/State.cs index 5aedc36..a8e2b37 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/cps/State.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/cps/State.cs @@ -4,7 +4,7 @@ using System.IO; namespace MAME.Core { - public partial class CPS + public unsafe partial class CPS { public static void SaveStateBinaryC(BinaryWriter writer) { @@ -25,7 +25,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x10000); + writer.Write(Memory.mainram_Ptr, 0, 0x10000); writer.Write(gfxram, 0, 0x30000); MC68000.m1.SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x800); @@ -95,7 +95,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x10000); + writer.Write(Memory.mainram_Ptr, 0, 0x10000); writer.Write(gfxram, 0, 0x30000); MC68000.m1.SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x800); @@ -158,7 +158,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x10000); + writer.Write(Memory.mainram_Ptr, 0, 0x10000); writer.Write(gfxram, 0, 0x30000); MC68000.m1.SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x800); @@ -206,7 +206,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x10000); + Memory.Set_mainram(reader.ReadBytes(0x10000)); gfxram = reader.ReadBytes(0x30000); MC68000.m1.LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x800); @@ -276,7 +276,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x10000); + Memory.Set_mainram(reader.ReadBytes(0x10000)); gfxram = reader.ReadBytes(0x30000); MC68000.m1.LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x800); @@ -339,7 +339,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x10000); + Memory.Set_mainram(reader.ReadBytes(0x10000)); gfxram = reader.ReadBytes(0x30000); MC68000.m1.LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x800); diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/dataeast/Memory.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/dataeast/Memory.cs index 2f28b40..5f549cf 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/dataeast/Memory.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/dataeast/Memory.cs @@ -1,6 +1,6 @@ namespace MAME.Core { - public partial class Dataeast + public unsafe partial class Dataeast { public static byte byte1, byte2; public static byte byte1_old, byte2_old; @@ -9,21 +9,21 @@ byte result = 0; if (address <= 0x7ff) { - result = Memory.mainram[address]; + result = Memory.mainram_Ptr[address]; } else if (address >= 0x4000 && address <= 0x5fff) { int offset = address - 0x4000; - result = Memory.mainrom[basebankmain1 + offset]; + result = Memory.mainrom_Ptr[basebankmain1 + offset]; } else if (address >= 0x6000 && address <= 0x7fff) { int offset = address - 0x6000; - result = Memory.mainrom[basebankmain2 + offset]; + result = Memory.mainrom_Ptr[basebankmain2 + offset]; } else if (address >= 0x8000 && address <= 0xffff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } return result; } @@ -32,21 +32,21 @@ byte result = 0; if (address <= 0x7ff) { - result = Memory.mainram[address]; + result = Memory.mainram_Ptr[address]; } else if (address >= 0x4000 && address <= 0x5fff) { int offset = address - 0x4000; - result = Memory.mainrom[basebankmain1 + offset]; + result = Memory.mainrom_Ptr[basebankmain1 + offset]; } else if (address >= 0x6000 && address <= 0x7fff) { int offset = address - 0x6000; - result = Memory.mainrom[basebankmain2 + offset]; + result = Memory.mainrom_Ptr[basebankmain2 + offset]; } else if (address >= 0x8000 && address <= 0xffff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } return result; } @@ -55,7 +55,7 @@ byte result = 0; if (address <= 0x7ff) { - result = Memory.mainram[address]; + result = Memory.mainram_Ptr[address]; } else if (address == 0x1800) { @@ -72,16 +72,16 @@ else if (address >= 0x4000 && address <= 0x5fff) { int offset = address - 0x4000; - result = Memory.mainrom[basebankmain1 + offset]; + result = Memory.mainrom_Ptr[basebankmain1 + offset]; } else if (address >= 0x6000 && address <= 0x7fff) { int offset = address - 0x6000; - result = Memory.mainrom[basebankmain2 + offset]; + result = Memory.mainrom_Ptr[basebankmain2 + offset]; } else if (address >= 0x8000 && address <= 0xffff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } return result; } @@ -89,7 +89,7 @@ { if (address <= 0x7ff) { - Memory.mainram[address] = data; + Memory.mainram_Ptr[address] = data; } else if (address >= 0x800 && address <= 0xfff) { @@ -115,7 +115,7 @@ } else if (address >= 0x4000 && address <= 0xffff) { - Memory.mainrom[address] = data; + Memory.mainrom_Ptr[address] = data; } } public static byte D1ReadOp(ushort address) @@ -147,11 +147,11 @@ else if (address >= 0x4000 && address <= 0x7fff) { int offset = address - 0x4000; - result = Memory.audiorom[basebanksnd + offset]; + result = Memory.audiorom_Ptr[basebanksnd + offset]; } else if (address >= 0x8000 && address <= 0xffff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } return result; } @@ -165,11 +165,11 @@ else if (address >= 0x4000 && address <= 0x7fff) { int offset = address - 0x4000; - result = Memory.audiorom[basebanksnd + offset]; + result = Memory.audiorom_Ptr[basebanksnd + offset]; } else if (address >= 0x8000 && address <= 0xffff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } return result; } @@ -191,11 +191,11 @@ else if (address >= 0x4000 && address <= 0x7fff) { int offset = address - 0x4000; - result = Memory.audiorom[basebanksnd + offset]; + result = Memory.audiorom_Ptr[basebanksnd + offset]; } else if (address >= 0x8000 && address <= 0xffff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } return result; } @@ -231,7 +231,7 @@ } else if (address >= 0x4000 && address <= 0xffff) { - Memory.audiorom[address] = data; + Memory.audiorom_Ptr[address] = data; } } } diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/dataeast/Pcktgal.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/dataeast/Pcktgal.cs index ca4f5f8..202dc6c 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/dataeast/Pcktgal.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/dataeast/Pcktgal.cs @@ -9,7 +9,7 @@ { int i, n; Machine.bRom = true; - Memory.mainram = new byte[0x800]; + Memory.Set_mainram(new byte[0x800]); Memory.audioram = new byte[0x800]; Generic.spriteram = new byte[0x200]; Generic.videoram = new byte[0x800]; @@ -17,13 +17,14 @@ { case "pcktgal": case "pcktgalb": - Memory.mainrom = Machine.GetRom("maincpu.rom"); - Memory.audiorom = Machine.GetRom("audiocpu.rom"); + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); + //Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); + Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); audioromop = Machine.GetRom("audiocpuop.rom"); gfx1rom = Machine.GetRom("gfx1.rom"); gfx2rom = Machine.GetRom("gfx2.rom"); prom = Machine.GetRom("proms.rom"); - if (Memory.mainrom == null || Memory.audiorom == null || audioromop == null || gfx1rom == null || gfx2rom == null || prom == null) + if (Memory.mainrom_IsNull || Memory.audiorom_IsNull || audioromop == null || gfx1rom == null || gfx2rom == null || prom == null) { Machine.bRom = false; } @@ -32,12 +33,13 @@ case "pcktgal2j": case "spool3": case "spool3i": - Memory.mainrom = Machine.GetRom("maincpu.rom"); - Memory.audiorom = Machine.GetRom("audiocpu.rom"); + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); + //Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); + Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); gfx1rom = Machine.GetRom("gfx1.rom"); gfx2rom = Machine.GetRom("gfx2.rom"); prom = Machine.GetRom("proms.rom"); - if (Memory.mainrom == null || Memory.audiorom == null || gfx1rom == null || gfx2rom == null || prom == null) + if (Memory.mainrom_IsNull || Memory.audiorom_IsNull || gfx1rom == null || gfx2rom == null || prom == null) { Machine.bRom = false; } diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/dataeast/State.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/dataeast/State.cs index 0ffad93..e93a6b6 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/dataeast/State.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/dataeast/State.cs @@ -3,7 +3,7 @@ using System.IO; namespace MAME.Core { - public partial class Dataeast + public unsafe partial class Dataeast { public static void SaveStateBinary_pcktgal(BinaryWriter writer) { @@ -18,7 +18,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x800); + writer.Write(Memory.mainram_Ptr, 0, 0x800); writer.Write(Generic.videoram, 0, 0x800); writer.Write(Generic.spriteram, 0, 0x200); writer.Write(Memory.audioram, 0, 0x800); @@ -61,7 +61,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x800); + Memory.Set_mainram(reader.ReadBytes(0x800)); Generic.videoram = reader.ReadBytes(0x800); Generic.spriteram = reader.ReadBytes(0x200); Memory.audioram = reader.ReadBytes(0x800); diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/igs011/IGS011.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/igs011/IGS011.cs index 8fd1576..0a093de 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/igs011/IGS011.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/igs011/IGS011.cs @@ -29,13 +29,13 @@ case "drgnwrldv10c": case "drgnwrldv11h": case "drgnwrldv40k": - Memory.mainrom = Machine.GetRom("maincpu.rom"); + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); gfx1rom = Machine.GetRom("gfx1.rom"); OKI6295.okirom = Machine.GetRom("oki.rom"); dsw1 = 0xff; dsw2 = 0xff; dsw3 = 0xff; - if (Memory.mainrom == null || gfx1rom == null || OKI6295.okirom == null) + if (Memory.mainrom_IsNull || gfx1rom == null || OKI6295.okirom == null) { Machine.bRom = false; } @@ -44,7 +44,7 @@ case "lhbv33c": case "dbc": case "ryukobou": - Memory.mainrom = Machine.GetRom("maincpu.rom"); + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); gfx1rom = Machine.GetRom("gfx1.rom"); OKI6295.okirom = Machine.GetRom("oki.rom"); dsw1 = 0xf7; @@ -52,13 +52,13 @@ dsw3 = 0xff; dsw4 = 0xf0; dsw5 = 0xff; - if (Memory.mainrom == null || gfx1rom == null || OKI6295.okirom == null) + if (Memory.mainrom_IsNull || gfx1rom == null || OKI6295.okirom == null) { Machine.bRom = false; } break; case "lhb2": - Memory.mainrom = Machine.GetRom("maincpu.rom"); + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); gfx1rom = Machine.GetRom("gfx1.rom"); gfx2rom = Machine.GetRom("gfx2.rom"); diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/igs011/Memory.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/igs011/Memory.cs index 9db2224..af526b8 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/igs011/Memory.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/igs011/Memory.cs @@ -1,6 +1,6 @@ namespace MAME.Core { - public partial class IGS011 + public unsafe partial class IGS011 { public static byte bkey0, bkey1, bkey2, bkey3, bkey4; public static byte bkey0_old, bkey1_old, bkey2_old, bkey3_old, bkey4_old; @@ -23,7 +23,7 @@ } else if (address >= 0 && address <= 0x7ffff) { - result = (sbyte)Memory.mainrom[address]; + result = (sbyte)Memory.mainrom_Ptr[address]; } return result; } @@ -44,7 +44,7 @@ } else if (address >= 0 && address <= 0x7ffff) { - result = (sbyte)Memory.mainrom[address]; + result = (sbyte)Memory.mainrom_Ptr[address]; } else if (address >= 0x100000 && address <= 0x103fff) { @@ -117,7 +117,7 @@ } else if (address >= 0 && address + 1 <= 0x7ffff) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } return result; } @@ -131,7 +131,7 @@ } else if (address >= 0 && address + 1 <= 0x7ffff) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else if (address >= 0x100000 && address + 1 <= 0x103fff) { @@ -179,7 +179,7 @@ int result = 0; if (address >= 0 && address + 3 <= 0x7ffff) { - result = Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]; + result = Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]; } return result; } @@ -189,7 +189,7 @@ int result = 0; if (address >= 0 && address + 3 <= 0x7ffff) { - result = Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]; + result = Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]; } else if (address >= 0x100000 && address + 3 <= 0x103fff) { diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/igs011/Memory2.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/igs011/Memory2.cs index c25a1db..05ff710 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/igs011/Memory2.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/igs011/Memory2.cs @@ -1,6 +1,6 @@ namespace MAME.Core { - public partial class IGS011 + public unsafe partial class IGS011 { public static sbyte MReadByte_drgnwrld_igs012(int address) { @@ -352,7 +352,7 @@ } else if (address >= 0x000000 && address <= 0x07ffff) { - result = (sbyte)Memory.mainrom[address]; + result = (sbyte)Memory.mainrom_Ptr[address]; } else if (address >= 0x100000 && address <= 0x103fff) { @@ -436,7 +436,7 @@ } else if (address >= 0 && address + 1 <= 0x7ffff) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } return result; } @@ -454,7 +454,7 @@ } else if (address >= 0x000000 && address + 1 <= 0x07ffff) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else if (address >= 0x100000 && address + 1 <= 0x103fff) { @@ -496,7 +496,7 @@ int result = 0; if (address >= 0x000000 && address + 3 <= 0x07ffff) { - result = Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]; + result = Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]; } else if (address >= 0x100000 && address + 3 <= 0x103fff) { @@ -790,7 +790,7 @@ } else if (address >= 0x000000 && address + 1 <= 0x07ffff) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else if (address >= 0x100000 && address + 1 <= 0x103fff) { @@ -840,7 +840,7 @@ } else if (address >= 0x000000 && address + 1 <= 0x07ffff) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else if (address >= 0x100000 && address + 1 <= 0x103fff) { @@ -900,9 +900,9 @@ } else if (address >= 0x000000 && address <= 0x07ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -935,9 +935,9 @@ } else if (address >= 0x000000 && address <= 0x07ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -1023,9 +1023,9 @@ } else if (address >= 0x000000 && address + 1 <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -1048,9 +1048,9 @@ } else if (address >= 0x000000 && address + 1 <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -1101,9 +1101,9 @@ int result = 0; if (address >= 0x000000 && address + 3 <= 0x07ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -1118,9 +1118,9 @@ int result = 0; if (address >= 0x000000 && address + 3 <= 0x07ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -1435,9 +1435,9 @@ } else if (address >= 0x000000 && address <= 0x07ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -1474,9 +1474,9 @@ } else if (address >= 0x000000 && address <= 0x07ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -1486,7 +1486,7 @@ else if (address >= 0x100000 && address <= 0x103fff) { int offset = address - 0x100000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } else if (address >= 0x1f0000 && address <= 0x1f3fff) { @@ -1553,9 +1553,9 @@ } else if (address >= 0x000000 && address + 1 <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -1578,9 +1578,9 @@ } else if (address >= 0x000000 && address + 1 <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -1590,7 +1590,7 @@ else if (address >= 0x100000 && address + 1 <= 0x103fff) { int offset = address - 0x100000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } else if (address >= 0x1f0000 && address + 1 <= 0x1f3fff) { @@ -1632,9 +1632,9 @@ int result = 0; if (address <= 0x010001) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -1644,7 +1644,7 @@ else if (address >= 0x100000 && address + 3 <= 0x103fff) { int offset = address - 0x100000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } return result; } @@ -1654,10 +1654,10 @@ int result = 0; if (address >= 0x000000 && address + 3 <= 0x07ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { int offset = (address - 0x010000) / 2; - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -1667,7 +1667,7 @@ else if (address >= 0x100000 && address + 3 <= 0x103fff) { int offset = address - 0x100000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } else if (address >= 0x1f0000 && address + 3 <= 0x1f3fff) { @@ -1718,7 +1718,7 @@ else if (address >= 0x100000 && address <= 0x103fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)(value); + Memory.mainram_Ptr[offset] = (byte)(value); } else if (address >= 0x1f0000 && address <= 0x1f3fff) { @@ -1841,8 +1841,8 @@ else if (address >= 0x100000 && address + 1 <= 0x103fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)(value >> 8); - Memory.mainram[offset + 1] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 1] = (byte)value; } else if (address >= 0x1f0000 && address + 1 <= 0x1f3fff) { @@ -1929,10 +1929,10 @@ if (address >= 0x100000 && address + 3 <= 0x103fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)(value >> 24); - Memory.mainram[offset + 1] = (byte)(value >> 16); - Memory.mainram[offset + 2] = (byte)(value >> 8); - Memory.mainram[offset + 3] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 24); + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[offset + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 3] = (byte)value; } else if (address >= 0x1f0000 && address + 3 <= 0x1f3fff) { @@ -1978,9 +1978,9 @@ } else if (address >= 0x000000 && address <= 0x07ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -2021,9 +2021,9 @@ } else if (address >= 0x000000 && address <= 0x07ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -2105,9 +2105,9 @@ } else if (address >= 0x000000 && address + 1 <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -2130,9 +2130,9 @@ } else if (address >= 0x000000 && address + 1 <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -2187,9 +2187,9 @@ int result = 0; if (address >= 0x000000 && address + 3 <= 0x07ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -2204,10 +2204,10 @@ int result = 0; if (address >= 0x000000 && address + 3 <= 0x07ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { int offset = (address - 0x000000) / 2; - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -2501,9 +2501,9 @@ } else if (address >= 0x000000 && address <= 0x07ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -2562,9 +2562,9 @@ } else if (address >= 0x000000 && address <= 0x07ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -2682,9 +2682,9 @@ } else if (address >= 0x000000 && address + 1 <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -2723,9 +2723,9 @@ } else if (address >= 0x000000 && address + 1 <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -2799,9 +2799,9 @@ int result = 0; if (address >= 0x000000 && address + 3 <= 0x07ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -2816,10 +2816,10 @@ int result = 0; if (address >= 0x000000 && address + 3 <= 0x07ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { int offset = (address - 0x000000) / 2; - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -3265,9 +3265,9 @@ } else if (address >= 0x000000 && address <= 0x07ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -3297,9 +3297,9 @@ } else if (address >= 0x000000 && address <= 0x07ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -3381,9 +3381,9 @@ } else if (address >= 0x000000 && address + 1 <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -3406,9 +3406,9 @@ } else if (address >= 0x000000 && address + 1 <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -3459,9 +3459,9 @@ int result = 0; if (address >= 0x000000 && address + 3 <= 0x07ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -3476,10 +3476,10 @@ int result = 0; if (address >= 0x000000 && address + 3 <= 0x07ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { int offset = (address - 0x023000) / 2; - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/konami68000/Konami68000.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/konami68000/Konami68000.cs index 2d09396..5775e38 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/konami68000/Konami68000.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/konami68000/Konami68000.cs @@ -21,7 +21,7 @@ namespace MAME.Core Generic.spriteram16 = new ushort[0x2000]; init_eeprom_count = 10; toggle = 0; - Memory.mainram = new byte[0x4000]; + Memory.Set_mainram(new byte[0x4000]); Memory.audioram = new byte[0x2000];//0x800 prmrsocr_0x2000 mainram2 = new byte[0x4000];//0x4000 tmnt2_ssriders_0x80 layer_colorbase = new int[3]; @@ -60,8 +60,8 @@ namespace MAME.Core layerpri = new int[3]; sorted_layer = new int[3]; Machine.bRom = true; - Memory.mainrom = Machine.GetRom("maincpu.rom"); - Memory.audiorom = Machine.GetRom("audiocpu.rom"); + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); + Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); gfx1rom = Machine.GetRom("gfx1.rom"); n1 = gfx1rom.Length; gfx12rom = new byte[n1 * 2]; @@ -84,7 +84,7 @@ namespace MAME.Core case "cuebrick": K052109_memory_region = Machine.GetRom("k052109.rom"); K051960_memory_region = Machine.GetRom("k051960.rom"); - if (Memory.mainrom == null || gfx1rom == null || gfx2rom == null || K052109_memory_region == null || K051960_memory_region == null) + if (Memory.mainrom_IsNull || gfx1rom == null || gfx2rom == null || K052109_memory_region == null || K051960_memory_region == null) { Machine.bRom = false; } @@ -94,7 +94,7 @@ namespace MAME.Core K052109_memory_region = Machine.GetRom("k052109.rom"); K051960_memory_region = Machine.GetRom("k051960.rom"); K007232.k007232rom = Machine.GetRom("k007232.rom"); - if (Memory.mainrom == null || gfx1rom == null || gfx2rom == null || K052109_memory_region == null || K051960_memory_region == null || Memory.audiorom == null || K007232.k007232rom == null) + if (Memory.mainrom_IsNull || gfx1rom == null || gfx2rom == null || K052109_memory_region == null || K051960_memory_region == null || Memory.audiorom_IsNull || K007232.k007232rom == null) { Machine.bRom = false; } @@ -117,7 +117,7 @@ namespace MAME.Core K007232.k007232rom = Machine.GetRom("k007232.rom"); Upd7759.updrom = Machine.GetRom("upd.rom"); titlerom = Machine.GetRom("title.rom"); - if (Memory.mainrom == null || gfx1rom == null || gfx2rom == null || K052109_memory_region == null || K051960_memory_region == null || Memory.audiorom == null || K007232.k007232rom == null || Upd7759.updrom == null || titlerom == null) + if (Memory.mainrom_IsNull || gfx1rom == null || gfx2rom == null || K052109_memory_region == null || K051960_memory_region == null || Memory.audiorom_IsNull || K007232.k007232rom == null || Upd7759.updrom == null || titlerom == null) { Machine.bRom = false; } @@ -131,7 +131,7 @@ namespace MAME.Core K052109_memory_region = Machine.GetRom("k052109.rom"); K051960_memory_region = Machine.GetRom("k051960.rom"); K053260.k053260rom = Machine.GetRom("k053260.rom"); - if (Memory.mainrom == null || gfx1rom == null || gfx2rom == null || K052109_memory_region == null || K051960_memory_region == null || Memory.audiorom == null || K053260.k053260rom == null) + if (Memory.mainrom_IsNull || gfx1rom == null || gfx2rom == null || K052109_memory_region == null || K051960_memory_region == null || Memory.audiorom_IsNull || K053260.k053260rom == null) { Machine.bRom = false; } @@ -165,7 +165,7 @@ namespace MAME.Core K052109_memory_region = Machine.GetRom("k052109.rom"); K053245_memory_region[0] = Machine.GetRom("k053245.rom"); K053260.k053260rom = Machine.GetRom("k053260.rom"); - if (Memory.mainrom == null || gfx1rom == null || gfx2rom == null || K052109_memory_region == null || K053245_memory_region[0] == null || Memory.audiorom == null || K053260.k053260rom == null) + if (Memory.mainrom_IsNull || gfx1rom == null || gfx2rom == null || K052109_memory_region == null || K053245_memory_region[0] == null || Memory.audiorom_IsNull || K053260.k053260rom == null) { Machine.bRom = false; } @@ -177,7 +177,7 @@ namespace MAME.Core zoomrom = Machine.GetRom("zoom.rom"); user1rom = Machine.GetRom("user1.rom"); K053260.k053260rom = Machine.GetRom("k053260.rom"); - if (Memory.mainrom == null || gfx1rom == null || gfx2rom == null || K052109_memory_region == null || K053245_memory_region[0] == null || zoomrom == null || user1rom == null || Memory.audiorom == null || K053260.k053260rom == null) + if (Memory.mainrom_IsNull || gfx1rom == null || gfx2rom == null || K052109_memory_region == null || K053245_memory_region[0] == null || zoomrom == null || user1rom == null || Memory.audiorom_IsNull || K053260.k053260rom == null) { Machine.bRom = false; } @@ -189,7 +189,7 @@ namespace MAME.Core zoomrom = Machine.GetRom("zoom.rom"); user1rom = Machine.GetRom("user1.rom"); K054539.k054539rom = Machine.GetRom("k054539.rom"); - if (Memory.mainrom == null || gfx1rom == null || gfx2rom == null || K052109_memory_region == null || K053245_memory_region[0] == null || zoomrom == null || user1rom == null || Memory.audiorom == null || K054539.k054539rom == null) + if (Memory.mainrom_IsNull || gfx1rom == null || gfx2rom == null || K052109_memory_region == null || K053245_memory_region[0] == null || zoomrom == null || user1rom == null || Memory.audiorom_IsNull || K054539.k054539rom == null) { Machine.bRom = false; } @@ -920,17 +920,17 @@ namespace MAME.Core { Cpuint.cpunum_set_input_line(1, 0, LineState.HOLD_LINE); } - public static byte tmnt2_get_byte(int addr) + public unsafe static byte tmnt2_get_byte(int addr) { byte result = 0; if (addr <= 0x07ffff) { - result = Memory.mainrom[addr]; + result = Memory.mainrom_Ptr[addr]; } else if (addr >= 0x104000 && addr <= 0x107fff) { int offset = addr - 0x104000; - result = Memory.mainram[offset]; + result = Memory.mainram_Ptr[offset]; } else if (addr >= 0x180000 && addr <= 0x183fff) { @@ -946,18 +946,18 @@ namespace MAME.Core } return result; } - public static ushort tmnt2_get_word(int addr) + public unsafe static ushort tmnt2_get_word(int addr) { ushort result = 0; addr *= 2; if (addr <= 0x07ffff) { - result = (ushort)(Memory.mainrom[addr] * 0x100 + Memory.mainrom[addr + 1]); + result = (ushort)(Memory.mainrom_Ptr[addr] * 0x100 + Memory.mainrom_Ptr[addr + 1]); } else if (addr >= 0x104000 && addr <= 0x107fff) { int offset = addr - 0x104000; - result = (ushort)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (ushort)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } else if (addr >= 0x180000 && addr <= 0x183fff) { @@ -966,7 +966,7 @@ namespace MAME.Core } return result; } - public static void tmnt2_put_word(int addr, ushort data) + public unsafe static void tmnt2_put_word(int addr, ushort data) { addr *= 2; if (addr >= 0x180000 && addr <= 0x183fff) @@ -987,8 +987,8 @@ namespace MAME.Core else if (addr >= 0x104000 && addr <= 0x107fff) { int offset = (addr - 0x104000) / 2; - Memory.mainram[offset] = (byte)(data >> 8); - Memory.mainram[offset + 1] = (byte)data; + Memory.mainram_Ptr[offset] = (byte)(data >> 8); + Memory.mainram_Ptr[offset + 1] = (byte)data; } } public static void tmnt2_1c0800_w(int offset, ushort data) diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/konami68000/Memory.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/konami68000/Memory.cs index ad695a1..d88e2b4 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/konami68000/Memory.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/konami68000/Memory.cs @@ -2,7 +2,7 @@ namespace MAME.Core { - public partial class Konami68000 + public unsafe partial class Konami68000 { public static sbyte sbyte0, sbyte1, sbyte2, sbyte3, sbyte4; public static sbyte sbyte0_old, sbyte1_old, sbyte2_old, sbyte3_old, sbyte4_old; @@ -13,9 +13,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x01ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -25,7 +25,7 @@ namespace MAME.Core else if (address >= 0x040000 && address <= 0x043fff) { int offset = address - 0x040000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } else if (address >= 0x060000 && address <= 0x063fff) { @@ -40,9 +40,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x01ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -52,7 +52,7 @@ namespace MAME.Core else if (address >= 0x040000 && address <= 0x043fff) { int offset = address - 0x040000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } else if (address >= 0x060000 && address <= 0x063fff) { @@ -190,9 +190,9 @@ namespace MAME.Core short result = 0; if (address <= 0x01ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -202,7 +202,7 @@ namespace MAME.Core else if (address >= 0x040000 && address + 1 <= 0x043fff) { int offset = address - 0x040000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } else if (address >= 0x060000 && address + 1 <= 0x063fff) { @@ -217,9 +217,9 @@ namespace MAME.Core short result = 0; if (address <= 0x01ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -229,7 +229,7 @@ namespace MAME.Core else if (address >= 0x040000 && address + 1 <= 0x043fff) { int offset = address - 0x040000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } else if (address >= 0x060000 && address + 1 <= 0x063fff) { @@ -297,9 +297,9 @@ namespace MAME.Core int result = 0; if (address <= 0x01ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -309,7 +309,7 @@ namespace MAME.Core else if (address >= 0x040000 && address + 3 <= 0x043fff) { int offset = address - 0x040000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } else if (address >= 0x060000 && address + 3 <= 0x063fff) { @@ -324,9 +324,9 @@ namespace MAME.Core int result = 0; if (address <= 0x01ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -336,7 +336,7 @@ namespace MAME.Core else if (address >= 0x040000 && address + 3 <= 0x043fff) { int offset = address - 0x040000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } else if (address >= 0x060000 && address + 3 <= 0x063fff) { @@ -380,7 +380,7 @@ namespace MAME.Core if (address >= 0x040000 && address <= 0x043fff) { int offset = address - 0x040000; - Memory.mainram[offset] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)value; } else if (address >= 0x060000 && address <= 0x063fff) { @@ -490,8 +490,8 @@ namespace MAME.Core if (address >= 0x040000 && address + 1 <= 0x043fff) { int offset = address - 0x040000; - Memory.mainram[offset] = (byte)(value >> 8); - Memory.mainram[offset + 1] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 1] = (byte)value; } else if (address >= 0x060000 && address + 1 <= 0x063fff) { @@ -555,10 +555,10 @@ namespace MAME.Core if (address >= 0x040000 && address + 3 <= 0x043fff) { int offset = address - 0x040000; - Memory.mainram[offset] = (byte)(value >> 24); - Memory.mainram[offset + 1] = (byte)(value >> 16); - Memory.mainram[offset + 2] = (byte)(value >> 8); - Memory.mainram[offset + 3] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 24); + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[offset + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 3] = (byte)value; } else if (address >= 0x060000 && address + 3 <= 0x063fff) { @@ -615,9 +615,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -627,7 +627,7 @@ namespace MAME.Core else if (address >= 0x040000 && address <= 0x043fff) { int offset = address - 0x040000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } else if (address >= 0x060000 && address <= 0x063fff) { @@ -642,9 +642,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -654,7 +654,7 @@ namespace MAME.Core else if (address >= 0x040000 && address <= 0x043fff) { int offset = address - 0x040000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } else if (address >= 0x060000 && address <= 0x063fff) { @@ -769,9 +769,9 @@ namespace MAME.Core short result = 0; if (address <= 0x03ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -781,7 +781,7 @@ namespace MAME.Core else if (address >= 0x040000 && address + 1 <= 0x043fff) { int offset = address - 0x040000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } else if (address >= 0x060000 && address + 1 <= 0x063fff) { @@ -796,9 +796,9 @@ namespace MAME.Core short result = 0; if (address <= 0x03ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -808,7 +808,7 @@ namespace MAME.Core else if (address >= 0x040000 && address + 1 <= 0x043fff) { int offset = address - 0x040000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } else if (address >= 0x060000 && address + 1 <= 0x063fff) { @@ -867,9 +867,9 @@ namespace MAME.Core int result = 0; if (address <= 0x03ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -879,7 +879,7 @@ namespace MAME.Core else if (address >= 0x040000 && address + 3 <= 0x043fff) { int offset = address - 0x040000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } else if (address >= 0x060000 && address + 3 <= 0x063fff) { @@ -894,10 +894,10 @@ namespace MAME.Core int result = 0; if (address <= 0x03ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { int offset = (address - 0x000000) / 2; - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -907,7 +907,7 @@ namespace MAME.Core else if (address >= 0x040000 && address + 3 <= 0x043fff) { int offset = address - 0x040000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } else if (address >= 0x060000 && address + 3 <= 0x063fff) { @@ -942,7 +942,7 @@ namespace MAME.Core if (address >= 0x040000 && address <= 0x043fff) { int offset = address - 0x040000; - Memory.mainram[offset] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)value; } else if (address >= 0x060000 && address <= 0x063fff) { @@ -1016,8 +1016,8 @@ namespace MAME.Core if (address >= 0x040000 && address + 1 <= 0x043fff) { int offset = address - 0x040000; - Memory.mainram[offset] = (byte)(value >> 8); - Memory.mainram[offset + 1] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 1] = (byte)value; } else if (address >= 0x060000 && address + 1 <= 0x063fff) { @@ -1066,10 +1066,10 @@ namespace MAME.Core if (address >= 0x040000 && address + 3 <= 0x043fff) { int offset = address - 0x040000; - Memory.mainram[offset] = (byte)(value >> 24); - Memory.mainram[offset + 1] = (byte)(value >> 16); - Memory.mainram[offset + 2] = (byte)(value >> 8); - Memory.mainram[offset + 3] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 24); + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[offset + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 3] = (byte)value; } else if (address >= 0x060000 && address + 3 <= 0x063fff) { @@ -1114,9 +1114,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x05ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -1126,7 +1126,7 @@ namespace MAME.Core else if (address >= 0x060000 && address <= 0x063fff) { int offset = address - 0x060000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } return result; } @@ -1136,9 +1136,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x05ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -1148,7 +1148,7 @@ namespace MAME.Core else if (address >= 0x060000 && address <= 0x063fff) { int offset = address - 0x060000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } else if (address >= 0x080000 && address <= 0x080fff) { @@ -1280,9 +1280,9 @@ namespace MAME.Core short result = 0; if (address <= 0x05ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -1292,7 +1292,7 @@ namespace MAME.Core else if (address >= 0x060000 && address + 1 <= 0x063fff) { int offset = address - 0x060000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } return result; } @@ -1302,9 +1302,9 @@ namespace MAME.Core short result = 0; if (address <= 0x05ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -1314,7 +1314,7 @@ namespace MAME.Core else if (address >= 0x060000 && address + 1 <= 0x063fff) { int offset = address - 0x060000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } else if (address >= 0x080000 && address + 1 <= 0x080fff) { @@ -1376,9 +1376,9 @@ namespace MAME.Core int result = 0; if (address <= 0x05ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -1388,7 +1388,7 @@ namespace MAME.Core else if (address >= 0x060000 && address + 3 <= 0x063fff) { int offset = address - 0x060000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } return result; } @@ -1398,9 +1398,9 @@ namespace MAME.Core int result = 0; if (address <= 0x05ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -1410,7 +1410,7 @@ namespace MAME.Core else if (address >= 0x060000 && address + 3 <= 0x063fff) { int offset = address - 0x060000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } else if (address >= 0x080000 && address + 3 <= 0x080fff) { @@ -1440,7 +1440,7 @@ namespace MAME.Core if (address >= 0x060000 && address <= 0x063fff) { int offset = address - 0x060000; - Memory.mainram[offset] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)value; } else if (address >= 0x080000 && address <= 0x080fff) { @@ -1513,8 +1513,8 @@ namespace MAME.Core if (address >= 0x060000 && address + 1 <= 0x063fff) { int offset = address - 0x060000; - Memory.mainram[offset] = (byte)(value >> 8); - Memory.mainram[offset + 1] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 1] = (byte)value; } else if (address >= 0x080000 && address + 1 <= 0x080fff) { @@ -1561,10 +1561,10 @@ namespace MAME.Core if (address >= 0x060000 && address + 3 <= 0x063fff) { int offset = address - 0x060000; - Memory.mainram[offset] = (byte)(value >> 24); - Memory.mainram[offset + 1] = (byte)(value >> 16); - Memory.mainram[offset + 2] = (byte)(value >> 8); - Memory.mainram[offset + 3] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 24); + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[offset + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 3] = (byte)value; } else if (address >= 0x080000 && address + 3 <= 0x080fff) { @@ -1601,9 +1601,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -1613,7 +1613,7 @@ namespace MAME.Core else if (address >= 0x080000 && address <= 0x083fff) { int offset = address - 0x080000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } return result; } @@ -1623,9 +1623,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -1635,7 +1635,7 @@ namespace MAME.Core else if (address >= 0x080000 && address <= 0x083fff) { int offset = address - 0x080000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } else if (address >= 0x090000 && address <= 0x090fff) { @@ -1739,9 +1739,9 @@ namespace MAME.Core short result = 0; if (address <= 0x03ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -1751,7 +1751,7 @@ namespace MAME.Core else if (address >= 0x080000 && address + 1 <= 0x083fff) { int offset = address - 0x080000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } return result; } @@ -1761,9 +1761,9 @@ namespace MAME.Core short result = 0; if (address <= 0x03ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -1773,7 +1773,7 @@ namespace MAME.Core else if (address >= 0x080000 && address + 1 <= 0x083fff) { int offset = address - 0x080000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } else if (address >= 0x090000 && address + 1 <= 0x090fff) { @@ -1828,9 +1828,9 @@ namespace MAME.Core int result = 0; if (address <= 0x03ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -1840,7 +1840,7 @@ namespace MAME.Core else if (address >= 0x080000 && address + 3 <= 0x083fff) { int offset = address - 0x080000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } return result; } @@ -1850,10 +1850,10 @@ namespace MAME.Core int result = 0; if (address <= 0x03ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { int offset = (address - 0x000000) / 2; - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -1863,7 +1863,7 @@ namespace MAME.Core else if (address >= 0x080000 && address + 3 <= 0x083fff) { int offset = address - 0x080000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } else if (address >= 0x090000 && address + 3 <= 0x090fff) { @@ -1902,7 +1902,7 @@ namespace MAME.Core if (address >= 0x080000 && address <= 0x083fff) { int offset = address - 0x080000; - Memory.mainram[offset] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)value; } else if (address >= 0x090000 && address <= 0x090fff) { @@ -1983,8 +1983,8 @@ namespace MAME.Core if (address >= 0x080000 && address + 1 <= 0x083fff) { int offset = address - 0x080000; - Memory.mainram[offset] = (byte)(value >> 8); - Memory.mainram[offset + 1] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 1] = (byte)value; } else if (address >= 0x090000 && address + 1 <= 0x090fff) { @@ -2032,10 +2032,10 @@ namespace MAME.Core if (address >= 0x080000 && address + 3 <= 0x083fff) { int offset = address - 0x080000; - Memory.mainram[offset] = (byte)(value >> 24); - Memory.mainram[offset + 1] = (byte)(value >> 16); - Memory.mainram[offset + 2] = (byte)(value >> 8); - Memory.mainram[offset + 3] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 24); + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[offset + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 3] = (byte)value; } else if (address >= 0x090000 && address + 3 <= 0x090fff) { @@ -2078,9 +2078,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -2090,7 +2090,7 @@ namespace MAME.Core else if (address >= 0x090000 && address <= 0x093fff) { int offset = address - 0x090000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } return result; } @@ -2100,9 +2100,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -2124,7 +2124,7 @@ namespace MAME.Core else if (address >= 0x090000 && address <= 0x093fff) { int offset = address - 0x090000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } else if (address >= 0x0a0000 && address <= 0x0a0001) { @@ -2248,9 +2248,9 @@ namespace MAME.Core short result = 0; if (address <= 0x03ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -2260,7 +2260,7 @@ namespace MAME.Core else if (address >= 0x090000 && address + 1 <= 0x093fff) { int offset = address - 0x090000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } return result; } @@ -2270,9 +2270,9 @@ namespace MAME.Core short result = 0; if (address <= 0x03ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -2287,7 +2287,7 @@ namespace MAME.Core else if (address >= 0x090000 && address + 1 <= 0x093fff) { int offset = address - 0x090000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } else if (address >= 0x0a0000 && address + 1 <= 0x0a0001) { @@ -2347,9 +2347,9 @@ namespace MAME.Core int result = 0; if (address <= 0x03ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -2359,7 +2359,7 @@ namespace MAME.Core else if (address >= 0x090000 && address + 3 <= 0x093fff) { int offset = address - 0x090000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } return result; } @@ -2369,10 +2369,10 @@ namespace MAME.Core int result = 0; if (address <= 0x03ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { int offset = (address - 0x000000) / 2; - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -2387,7 +2387,7 @@ namespace MAME.Core else if (address >= 0x090000 && address + 3 <= 0x093fff) { int offset = address - 0x090000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } else if (address >= 0x0a0020 && address + 3 <= 0x0a0023) { @@ -2429,7 +2429,7 @@ namespace MAME.Core else if (address >= 0x090000 && address <= 0x093fff) { int offset = address - 0x090000; - Memory.mainram[offset] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)value; } else if (address >= 0x0a0018 && address <= 0x0a0019) { @@ -2517,8 +2517,8 @@ namespace MAME.Core else if (address >= 0x090000 && address + 1 <= 0x093fff) { int offset = address - 0x090000; - Memory.mainram[offset] = (byte)(value >> 8); - Memory.mainram[offset + 1] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 1] = (byte)value; } else if (address >= 0x0a0018 && address + 1 <= 0x0a0019) { @@ -2565,10 +2565,10 @@ namespace MAME.Core else if (address >= 0x090000 && address + 3 <= 0x093fff) { int offset = address - 0x090000; - Memory.mainram[offset] = (byte)(value >> 24); - Memory.mainram[offset + 1] = (byte)(value >> 16); - Memory.mainram[offset + 2] = (byte)(value >> 8); - Memory.mainram[offset + 3] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 24); + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[offset + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 3] = (byte)value; } else if (address >= 0x0b0000 && address + 3 <= 0x0b3fff) { @@ -2601,11 +2601,11 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x0bffff) { - result = (sbyte)Memory.mainrom[address]; + result = (sbyte)Memory.mainrom_Ptr[address]; } else if (address >= 0x104000 && address <= 0x107fff) { - result = (sbyte)Memory.mainram[address - 0x104000]; + result = (sbyte)Memory.mainram_Ptr[address - 0x104000]; } return result; } @@ -2615,11 +2615,11 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x0bffff) { - result = (sbyte)Memory.mainrom[address]; + result = (sbyte)Memory.mainrom_Ptr[address]; } else if (address >= 0x104000 && address <= 0x107fff) { - result = (sbyte)Memory.mainram[address - 0x104000]; + result = (sbyte)Memory.mainram_Ptr[address - 0x104000]; } else if (address >= 0x140000 && address <= 0x140fff) { @@ -2774,9 +2774,9 @@ namespace MAME.Core short result = 0; if (address <= 0x0bffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -2785,7 +2785,7 @@ namespace MAME.Core } else if (address >= 0x104000 && address + 1 <= 0x107fff) { - result = (short)(Memory.mainram[address - 0x104000] * 0x100 + Memory.mainram[address - 0x104000 + 1]); + result = (short)(Memory.mainram_Ptr[address - 0x104000] * 0x100 + Memory.mainram_Ptr[address - 0x104000 + 1]); } return result; } @@ -2795,9 +2795,9 @@ namespace MAME.Core short result = 0; if (address <= 0x0bffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -2806,7 +2806,7 @@ namespace MAME.Core } else if (address >= 0x104000 && address + 1 <= 0x107fff) { - result = (short)(Memory.mainram[address - 0x104000] * 0x100 + Memory.mainram[address - 0x104000 + 1]); + result = (short)(Memory.mainram_Ptr[address - 0x104000] * 0x100 + Memory.mainram_Ptr[address - 0x104000 + 1]); } else if (address >= 0x140000 && address + 1 <= 0x140fff) { @@ -2877,9 +2877,9 @@ namespace MAME.Core int result = 0; if (address <= 0x0bffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -2888,7 +2888,7 @@ namespace MAME.Core } else if (address >= 0x104000 && address + 3 <= 0x107fff) { - result = (int)(Memory.mainram[address - 0x104000] * 0x1000000 + Memory.mainram[address - 0x104000 + 1] * 0x10000 + Memory.mainram[address - 0x104000 + 2] * 0x100 + Memory.mainram[address - 0x104000 + 3]); + result = (int)(Memory.mainram_Ptr[address - 0x104000] * 0x1000000 + Memory.mainram_Ptr[address - 0x104000 + 1] * 0x10000 + Memory.mainram_Ptr[address - 0x104000 + 2] * 0x100 + Memory.mainram_Ptr[address - 0x104000 + 3]); } return result; } @@ -2898,9 +2898,9 @@ namespace MAME.Core int result = 0; if (address <= 0x0bffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -2909,7 +2909,7 @@ namespace MAME.Core } else if (address >= 0x104000 && address + 3 <= 0x107fff) { - result = (int)(Memory.mainram[address - 0x104000] * 0x1000000 + Memory.mainram[address - 0x104000 + 1] * 0x10000 + Memory.mainram[address - 0x104000 + 2] * 0x100 + Memory.mainram[address - 0x104000 + 3]); + result = (int)(Memory.mainram_Ptr[address - 0x104000] * 0x1000000 + Memory.mainram_Ptr[address - 0x104000 + 1] * 0x10000 + Memory.mainram_Ptr[address - 0x104000 + 2] * 0x100 + Memory.mainram_Ptr[address - 0x104000 + 3]); } else if (address >= 0x140000 && address + 3 <= 0x140fff) { @@ -2948,7 +2948,7 @@ namespace MAME.Core if (address >= 0x104000 && address <= 0x107fff) { int offset = address - 0x104000; - Memory.mainram[offset] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)value; } else if (address >= 0x140000 && address <= 0x140fff) { @@ -3071,8 +3071,8 @@ namespace MAME.Core if (address >= 0x104000 && address + 1 <= 0x107fff) { int offset = address - 0x104000; - Memory.mainram[offset] = (byte)(value >> 8); - Memory.mainram[offset + 1] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 1] = (byte)value; } else if (address >= 0x140000 && address + 1 <= 0x140fff) { @@ -3141,10 +3141,10 @@ namespace MAME.Core if (address >= 0x104000 && address + 3 <= 0x107fff) { int offset = address - 0x104000; - Memory.mainram[offset] = (byte)(value >> 24); - Memory.mainram[offset + 1] = (byte)(value >> 16); - Memory.mainram[offset + 2] = (byte)(value >> 8); - Memory.mainram[offset + 3] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 24); + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[offset + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 3] = (byte)value; } else if (address >= 0x140000 && address + 3 <= 0x140fff) { @@ -3196,7 +3196,7 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0x8000 && address <= 0x87ff) { @@ -3214,7 +3214,7 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0x8000 && address <= 0x87ff) { @@ -3262,7 +3262,7 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0x8000 && address <= 0x87ff) { @@ -3280,7 +3280,7 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0x8000 && address <= 0x87ff) { @@ -3348,7 +3348,7 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0xf000 && address <= 0xf7ff) { @@ -3366,7 +3366,7 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0xf000 && address <= 0xf7ff) { @@ -3414,7 +3414,7 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0x8000 && address <= 0x87ff) { @@ -3432,7 +3432,7 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0x8000 && address <= 0x87ff) { @@ -3476,7 +3476,7 @@ namespace MAME.Core byte result = 0; if (address <= 0xefff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0xf000 && address <= 0xf7ff) { @@ -3494,7 +3494,7 @@ namespace MAME.Core byte result = 0; if (address <= 0xefff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0xf000 && address <= 0xf7ff) { diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/konami68000/Memory2.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/konami68000/Memory2.cs index 0fdb3e1..055c221 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/konami68000/Memory2.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/konami68000/Memory2.cs @@ -1,6 +1,6 @@ namespace MAME.Core { - public partial class Konami68000 + public unsafe partial class Konami68000 { public static sbyte MReadOpByte_blswhstl(int address) { @@ -8,9 +8,9 @@ sbyte result = 0; if (address <= 0x07ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -20,7 +20,7 @@ else if (address >= 0x204000 && address <= 0x207fff) { int offset = address - 0x204000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } return result; } @@ -30,9 +30,9 @@ sbyte result = 0; if (address <= 0x07ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -54,7 +54,7 @@ else if (address >= 0x204000 && address <= 0x207fff) { int offset = address - 0x204000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } else if (address >= 0x300000 && address <= 0x303fff) { @@ -170,9 +170,9 @@ short result = 0; if (address <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -182,7 +182,7 @@ else if (address >= 0x204000 && address + 1 <= 0x207fff) { int offset = address - 0x204000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } return result; } @@ -192,9 +192,9 @@ short result = 0; if (address <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -209,7 +209,7 @@ else if (address >= 0x204000 && address + 1 <= 0x207fff) { int offset = address - 0x204000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } else if (address >= 0x300000 && address + 1 <= 0x303fff) { @@ -264,9 +264,9 @@ int result = 0; if (address <= 0x07ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -276,7 +276,7 @@ else if (address >= 0x204000 && address + 3 <= 0x207fff) { int offset = address - 0x204000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } return result; } @@ -286,10 +286,10 @@ int result = 0; if (address <= 0x07ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { int offset = (address - 0x000000) / 2; - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -304,7 +304,7 @@ else if (address >= 0x204000 && address + 3 <= 0x207fff) { int offset = address - 0x204000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } else if (address >= 0x300000 && address + 3 <= 0x303fff) { @@ -356,7 +356,7 @@ else if (address >= 0x204000 && address <= 0x207fff) { int offset = address - 0x204000; - Memory.mainram[offset] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)value; } else if (address >= 0x300000 && address <= 0x303fff) { @@ -472,8 +472,8 @@ else if (address >= 0x204000 && address + 1 <= 0x207fff) { int offset = address - 0x204000; - Memory.mainram[offset] = (byte)(value >> 8); - Memory.mainram[offset + 1] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 1] = (byte)value; } else if (address >= 0x300000 && address + 1 <= 0x303fff) { @@ -534,10 +534,10 @@ else if (address >= 0x204000 && address + 3 <= 0x207fff) { int offset = address - 0x204000; - Memory.mainram[offset] = (byte)(value >> 24); - Memory.mainram[offset + 1] = (byte)(value >> 16); - Memory.mainram[offset + 2] = (byte)(value >> 8); - Memory.mainram[offset + 3] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 24); + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[offset + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 3] = (byte)value; } else if (address >= 0x300000 && address + 3 <= 0x303fff) { @@ -576,9 +576,9 @@ sbyte result = 0; if (address <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -588,7 +588,7 @@ else if (address >= 0x100000 && address <= 0x103fff) { int offset = address - 0x100000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } return result; } @@ -598,9 +598,9 @@ sbyte result = 0; if (address <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -610,7 +610,7 @@ else if (address >= 0x100000 && address <= 0x103fff) { int offset = address - 0x100000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } else if (address >= 0x104000 && address <= 0x107fff) { @@ -760,9 +760,9 @@ short result = 0; if (address <= 0x03ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -772,7 +772,7 @@ else if (address >= 0x100000 && address + 1 <= 0x103fff) { int offset = address - 0x100000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } return result; } @@ -782,9 +782,9 @@ short result = 0; if (address <= 0x03ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -794,7 +794,7 @@ else if (address >= 0x100000 && address + 1 <= 0x103fff) { int offset = address - 0x100000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } else if (address >= 0x104000 && address + 1 <= 0x107fff) { @@ -864,9 +864,9 @@ int result = 0; if (address <= 0x03ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -876,7 +876,7 @@ else if (address >= 0x100000 && address + 3 <= 0x103fff) { int offset = address - 0x100000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } return result; } @@ -886,10 +886,10 @@ int result = 0; if (address <= 0x03ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { int offset = (address - 0x000000) / 2; - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -899,7 +899,7 @@ else if (address >= 0x100000 && address + 3 <= 0x103fff) { int offset = address - 0x100000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } else if (address >= 0x104000 && address + 3 <= 0x107fff) { @@ -944,7 +944,7 @@ if (address >= 0x100000 && address <= 0x103fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)(value); + Memory.mainram_Ptr[offset] = (byte)(value); } else if (address >= 0x104000 && address <= 0x107fff) { @@ -1077,8 +1077,8 @@ if (address >= 0x100000 && address + 1 <= 0x103fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)(value >> 8); - Memory.mainram[offset + 1] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 1] = (byte)value; } else if (address >= 0x104000 && address + 1 <= 0x107fff) { @@ -1141,10 +1141,10 @@ if (address >= 0x100000 && address + 3 <= 0x103fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)(value >> 24); - Memory.mainram[offset + 1] = (byte)(value >> 16); - Memory.mainram[offset + 2] = (byte)(value >> 8); - Memory.mainram[offset + 3] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 24); + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[offset + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 3] = (byte)value; } else if (address >= 0x104000 && address + 3 <= 0x107fff) { @@ -1207,9 +1207,9 @@ sbyte result = 0; if (address <= 0x0fffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -1219,7 +1219,7 @@ else if (address >= 0x104000 && address <= 0x107fff) { int offset = address - 0x104000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } return result; } @@ -1229,9 +1229,9 @@ sbyte result = 0; if (address <= 0x0fffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -1241,7 +1241,7 @@ else if (address >= 0x104000 && address <= 0x107fff) { int offset = address - 0x104000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } else if (address >= 0x140000 && address <= 0x140fff) { @@ -1386,9 +1386,9 @@ short result = 0; if (address <= 0x0fffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -1398,7 +1398,7 @@ else if (address >= 0x104000 && address + 1 <= 0x107fff) { int offset = address - 0x104000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } return result; } @@ -1408,9 +1408,9 @@ short result = 0; if (address <= 0x0fffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -1420,7 +1420,7 @@ else if (address >= 0x104000 && address + 1 <= 0x107fff) { int offset = address - 0x104000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } else if (address >= 0x140000 && address + 1 <= 0x140fff) { @@ -1494,9 +1494,9 @@ int result = 0; if (address <= 0x0fffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -1506,7 +1506,7 @@ else if (address >= 0x104000 && address + 3 <= 0x107fff) { int offset = address - 0x104000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } return result; } @@ -1516,10 +1516,10 @@ int result = 0; if (address <= 0x0fffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { int offset = (address - 0x000000) / 2; - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -1529,7 +1529,7 @@ else if (address >= 0x104000 && address + 3 <= 0x107fff) { int offset = address - 0x104000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } else if (address >= 0x140000 && address + 3 <= 0x140fff) { @@ -1569,7 +1569,7 @@ if (address >= 0x104000 && address <= 0x107fff) { int offset = address - 0x104000; - Memory.mainram[offset] = (byte)(value); + Memory.mainram_Ptr[offset] = (byte)(value); } else if (address >= 0x140000 && address <= 0x140fff) { @@ -1699,8 +1699,8 @@ if (address >= 0x104000 && address + 1 <= 0x107fff) { int offset = address - 0x104000; - Memory.mainram[offset] = (byte)(value >> 8); - Memory.mainram[offset + 1] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 1] = (byte)value; } else if (address >= 0x140000 && address + 1 <= 0x140fff) { @@ -1768,10 +1768,10 @@ if (address >= 0x104000 && address + 3 <= 0x107fff) { int offset = address - 0x104000; - Memory.mainram[offset] = (byte)(value >> 24); - Memory.mainram[offset + 1] = (byte)(value >> 16); - Memory.mainram[offset + 2] = (byte)(value >> 8); - Memory.mainram[offset + 3] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 24); + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[offset + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 3] = (byte)value; } else if (address >= 0x140000 && address + 3 <= 0x140fff) { @@ -1824,9 +1824,9 @@ sbyte result = 0; if (address <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -1836,7 +1836,7 @@ else if (address >= 0x100000 && address <= 0x103fff) { int offset = address - 0x100000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } return result; } @@ -1846,9 +1846,9 @@ sbyte result = 0; if (address <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -1858,7 +1858,7 @@ else if (address >= 0x100000 && address <= 0x103fff) { int offset = address - 0x100000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } else if (address >= 0x200000 && address <= 0x200fff) { @@ -1948,9 +1948,9 @@ short result = 0; if (address <= 0x03ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -1960,7 +1960,7 @@ else if (address >= 0x100000 && address + 1 <= 0x103fff) { int offset = address - 0x100000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } return result; } @@ -1970,9 +1970,9 @@ short result = 0; if (address <= 0x03ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -1982,7 +1982,7 @@ else if (address >= 0x100000 && address + 1 <= 0x103fff) { int offset = address - 0x100000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } else if (address >= 0x200000 && address + 1 <= 0x200fff) { @@ -2030,9 +2030,9 @@ int result = 0; if (address <= 0x03ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -2042,7 +2042,7 @@ else if (address >= 0x100000 && address + 3 <= 0x103fff) { int offset = address - 0x100000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } return result; } @@ -2052,10 +2052,10 @@ int result = 0; if (address <= 0x03ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { int offset = (address - 0x000000) / 2; - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -2065,7 +2065,7 @@ else if (address >= 0x100000 && address + 3 <= 0x103fff) { int offset = address - 0x100000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } else if (address >= 0x200000 && address + 3 <= 0x200fff) { @@ -2105,7 +2105,7 @@ if (address >= 0x100000 && address <= 0x103fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)(value); + Memory.mainram_Ptr[offset] = (byte)(value); } else if (address >= 0x200000 && address <= 0x200fff) { @@ -2199,8 +2199,8 @@ if (address >= 0x100000 && address + 1 <= 0x103fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)(value >> 8); - Memory.mainram[offset + 1] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 1] = (byte)value; } else if (address >= 0x200000 && address + 1 <= 0x200fff) { @@ -2255,10 +2255,10 @@ if (address >= 0x100000 && address + 3 <= 0x103fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)(value >> 24); - Memory.mainram[offset + 1] = (byte)(value >> 16); - Memory.mainram[offset + 2] = (byte)(value >> 8); - Memory.mainram[offset + 3] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 24); + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[offset + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 3] = (byte)value; } else if (address >= 0x200000 && address + 3 <= 0x200fff) { @@ -2307,9 +2307,9 @@ sbyte result = 0; if (address <= 0x07ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -2319,7 +2319,7 @@ else if (address >= 0x100000 && address <= 0x103fff) { int offset = address - 0x100000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } return result; } @@ -2329,9 +2329,9 @@ sbyte result = 0; if (address <= 0x07ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -2341,7 +2341,7 @@ else if (address >= 0x100000 && address <= 0x103fff) { int offset = address - 0x100000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } else if (address >= 0x104000 && address <= 0x107fff) { @@ -2456,9 +2456,9 @@ short result = 0; if (address <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -2468,7 +2468,7 @@ else if (address >= 0x100000 && address + 1 <= 0x103fff) { int offset = address - 0x100000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } return result; } @@ -2478,9 +2478,9 @@ short result = 0; if (address <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -2490,7 +2490,7 @@ else if (address >= 0x100000 && address + 1 <= 0x103fff) { int offset = address - 0x100000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } else if (address >= 0x104000 && address + 1 <= 0x107fff) { @@ -2545,9 +2545,9 @@ int result = 0; if (address <= 0x07ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -2557,7 +2557,7 @@ else if (address >= 0x100000 && address + 3 <= 0x103fff) { int offset = address - 0x100000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } return result; } @@ -2567,10 +2567,10 @@ int result = 0; if (address <= 0x07ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { int offset = (address - 0x000000) / 2; - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -2580,7 +2580,7 @@ else if (address >= 0x100000 && address + 3 <= 0x103fff) { int offset = address - 0x100000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } else if (address >= 0x104000 && address + 3 <= 0x107fff) { @@ -2620,7 +2620,7 @@ if (address >= 0x100000 && address <= 0x103fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)(value); + Memory.mainram_Ptr[offset] = (byte)(value); } else if (address >= 0x104000 && address <= 0x107fff) { @@ -2756,8 +2756,8 @@ if (address >= 0x100000 && address + 1 <= 0x103fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)(value >> 8); - Memory.mainram[offset + 1] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 1] = (byte)value; } else if (address >= 0x104000 && address + 1 <= 0x107fff) { @@ -2823,10 +2823,10 @@ if (address >= 0x100000 && address + 3 <= 0x103fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)(value >> 24); - Memory.mainram[offset + 1] = (byte)(value >> 16); - Memory.mainram[offset + 2] = (byte)(value >> 8); - Memory.mainram[offset + 3] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 24); + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[offset + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 3] = (byte)value; } else if (address >= 0x104000 && address + 3 <= 0x107fff) { @@ -2888,7 +2888,7 @@ byte result = 0; if (address <= 0xefff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0xf000 && address <= 0xf7ff) { @@ -2906,7 +2906,7 @@ byte result = 0; if (address <= 0xefff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0xf000 && address <= 0xf7ff) { @@ -2942,7 +2942,7 @@ byte result = 0; if (address <= 0xefff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0xf000 && address <= 0xf7ff) { @@ -2960,7 +2960,7 @@ byte result = 0; if (address <= 0xefff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0xf000 && address <= 0xf7ff) { @@ -3008,12 +3008,12 @@ byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0x8000 && address <= 0xbfff) { int offset = address - 0x8000; - result = Memory.audiorom[basebanksnd + offset]; + result = Memory.audiorom_Ptr[basebanksnd + offset]; } else if (address >= 0xc000 && address <= 0xdfff) { @@ -3031,12 +3031,12 @@ byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0x8000 && address <= 0xbfff) { int offset = address - 0x8000; - result = Memory.audiorom[basebanksnd + offset]; + result = Memory.audiorom_Ptr[basebanksnd + offset]; } else if (address >= 0xc000 && address <= 0xdfff) { @@ -3068,7 +3068,7 @@ if (address >= 0x8000 && address <= 0xbfff) { int offset = address - 0x8000; - Memory.audiorom[basebanksnd + offset] = value; + Memory.audiorom_Ptr[basebanksnd + offset] = value; } else if (address >= 0xc000 && address <= 0xdfff) { diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/konami68000/State.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/konami68000/State.cs index 37db83c..f7858cd 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/konami68000/State.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/konami68000/State.cs @@ -4,7 +4,7 @@ using System.IO; namespace MAME.Core { - public partial class Konami68000 + public unsafe partial class Konami68000 { public static void SaveStateBinary_cuebrick(BinaryWriter writer) { @@ -45,7 +45,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x4000); + writer.Write(Memory.mainram_Ptr, 0, 0x4000); writer.Write(mainram2, 0, 0x4000); MC68000.m1.SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x800); @@ -101,7 +101,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x4000); + Memory.Set_mainram(reader.ReadBytes(0x4000)); mainram2 = reader.ReadBytes(0x4000); MC68000.m1.LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x800); @@ -151,7 +151,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x4000); + writer.Write(Memory.mainram_Ptr, 0, 0x4000); writer.Write(mainram2, 0, 0x4000); MC68000.m1.SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x800); @@ -213,7 +213,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x4000); + Memory.Set_mainram(reader.ReadBytes(0x4000)); mainram2 = reader.ReadBytes(0x4000); MC68000.m1.LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x800); @@ -280,7 +280,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x4000); + writer.Write(Memory.mainram_Ptr, 0, 0x4000); MC68000.m1.SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x800); Z80A.zz1[0].SaveStateBinary(writer); @@ -352,7 +352,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x4000); + Memory.Set_mainram(reader.ReadBytes(0x4000)); MC68000.m1.LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x800); Z80A.zz1[0].LoadStateBinary(reader); @@ -419,7 +419,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x4000); + writer.Write(Memory.mainram_Ptr, 0, 0x4000); MC68000.m1.SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x800); Z80A.zz1[0].SaveStateBinary(writer); @@ -472,7 +472,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x4000); + Memory.Set_mainram(reader.ReadBytes(0x4000)); MC68000.m1.LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x800); Z80A.zz1[0].LoadStateBinary(reader); @@ -525,7 +525,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x4000); + writer.Write(Memory.mainram_Ptr, 0, 0x4000); MC68000.m1.SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x800); Z80A.zz1[0].SaveStateBinary(writer); @@ -578,7 +578,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x4000); + Memory.Set_mainram(reader.ReadBytes(0x4000)); MC68000.m1.LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x800); Z80A.zz1[0].LoadStateBinary(reader); @@ -629,7 +629,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x4000); + writer.Write(Memory.mainram_Ptr, 0, 0x4000); MC68000.m1.SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x800); Z80A.zz1[0].SaveStateBinary(writer); @@ -681,7 +681,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x4000); + Memory.Set_mainram(reader.ReadBytes(0x4000)); MC68000.m1.LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x800); Z80A.zz1[0].LoadStateBinary(reader); @@ -736,7 +736,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x4000); + writer.Write(Memory.mainram_Ptr, 0, 0x4000); MC68000.m1.SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x800); Z80A.zz1[0].SaveStateBinary(writer); @@ -787,7 +787,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x4000); + Memory.Set_mainram(reader.ReadBytes(0x4000)); MC68000.m1.LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x800); Z80A.zz1[0].LoadStateBinary(reader); @@ -838,7 +838,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x4000); + writer.Write(Memory.mainram_Ptr, 0, 0x4000); writer.Write(mainram2, 0, 0x80); MC68000.m1.SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x800); @@ -894,7 +894,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x4000); + Memory.Set_mainram(reader.ReadBytes(0x4000)); mainram2 = reader.ReadBytes(0x80); MC68000.m1.LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x800); @@ -946,7 +946,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x4000); + writer.Write(Memory.mainram_Ptr, 0, 0x4000); writer.Write(mainram2, 0, 0x80); MC68000.m1.SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x800); @@ -998,7 +998,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x4000); + Memory.Set_mainram(reader.ReadBytes(0x4000)); mainram2 = reader.ReadBytes(0x80); MC68000.m1.LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x800); @@ -1051,7 +1051,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x4000); + writer.Write(Memory.mainram_Ptr, 0, 0x4000); MC68000.m1.SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x800); Z80A.zz1[0].SaveStateBinary(writer); @@ -1103,7 +1103,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x4000); + Memory.Set_mainram(reader.ReadBytes(0x4000)); MC68000.m1.LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x800); Z80A.zz1[0].LoadStateBinary(reader); @@ -1156,7 +1156,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x4000); + writer.Write(Memory.mainram_Ptr, 0, 0x4000); MC68000.m1.SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x2000); Z80A.zz1[0].SaveStateBinary(writer); @@ -1214,7 +1214,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x4000); + Memory.Set_mainram(reader.ReadBytes(0x4000)); MC68000.m1.LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x2000); Z80A.zz1[0].LoadStateBinary(reader); diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/m72/M72.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/m72/M72.cs index 1382d22..893446b 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/m72/M72.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/m72/M72.cs @@ -46,8 +46,8 @@ namespace MAME.Core Machine.bRom = true; EmuTimer.setvector = setvector_callback; protection_ram = new byte[0x1000]; - Memory.mainrom = Machine.GetRom("maincpu.rom"); - Memory.audiorom = Machine.GetRom("soundcpu.rom"); + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); + Memory.Set_audiorom(Machine.GetRom("soundcpu.rom")); //Memory.audiorom = new byte[0x10000]; spritesrom = Machine.GetRom("sprites.rom"); n1 = spritesrom.Length; @@ -77,10 +77,10 @@ namespace MAME.Core } } samplesrom = Machine.GetRom("samples.rom"); - Memory.mainram = new byte[0x4000]; + Memory.Set_mainram(new byte[0x4000]); Memory.audioram = new byte[0x10000]; dsw = 0xffbf; - if (Memory.mainrom == null || Memory.audiorom == null || sprites1rom == null || gfx21rom == null || samplesrom == null) + if (Memory.mainrom_IsNull || Memory.audiorom_IsNull || sprites1rom == null || gfx21rom == null || samplesrom == null) { Machine.bRom = false; } diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/m72/Memory.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/m72/Memory.cs index 76f558e..82e3d51 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/m72/Memory.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/m72/Memory.cs @@ -1,6 +1,6 @@ namespace MAME.Core { - public partial class M72 + public unsafe partial class M72 { public static ushort ushort0, ushort1, dsw; public static ushort ushort0_old, ushort1_old; @@ -10,7 +10,7 @@ byte result = 0; if (address >= 0 && address <= 0xfffff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } return result; } @@ -20,11 +20,11 @@ byte result = 0; if (address >= 0 && address <= 0x7ffff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } else if (address >= 0xa0000 && address <= 0xa3fff) { - result = Memory.mainram[address - 0xa0000]; + result = Memory.mainram_Ptr[address - 0xa0000]; } else if (address >= 0xc0000 && address <= 0xc03ff) { @@ -58,7 +58,7 @@ } else if (address >= 0xffff0 && address <= 0xfffff) { - result = Memory.mainrom[address & 0xfffff]; + result = Memory.mainrom_Ptr[address & 0xfffff]; } return result; } @@ -68,11 +68,11 @@ ushort result = 0; if (address >= 0 && address + 1 <= 0x7ffff) { - result = (ushort)(Memory.mainrom[address] + Memory.mainrom[address + 1] * 0x100); + result = (ushort)(Memory.mainrom_Ptr[address] + Memory.mainrom_Ptr[address + 1] * 0x100); } else if (address >= 0xa0000 && address + 1 <= 0xa3fff) { - result = (ushort)(Memory.mainram[address - 0xa0000] + Memory.mainram[address - 0xa0000 + 1] * 0x100); + result = (ushort)(Memory.mainram_Ptr[address - 0xa0000] + Memory.mainram_Ptr[address - 0xa0000 + 1] * 0x100); } else if (address >= 0xc0000 && address + 1 <= 0xc03ff) { @@ -106,7 +106,7 @@ } else if (address >= 0xffff0 && address + 1 <= 0xfffff) { - result = (ushort)(Memory.mainrom[address] + Memory.mainrom[address + 1] * 0x100); + result = (ushort)(Memory.mainrom_Ptr[address] + Memory.mainrom_Ptr[address + 1] * 0x100); } return result; } @@ -115,7 +115,7 @@ address &= 0xfffff; if (address >= 0xa0000 && address <= 0xa3fff) { - Memory.mainram[address - 0xa0000] = value; + Memory.mainram_Ptr[address - 0xa0000] = value; } else if (address >= 0xc0000 && address <= 0xc03ff) { @@ -153,8 +153,8 @@ address &= 0xfffff; if (address >= 0xa0000 && address + 1 <= 0xa3fff) { - Memory.mainram[address - 0xa0000] = (byte)value; - Memory.mainram[address - 0xa0000 + 1] = (byte)(value >> 8); + Memory.mainram_Ptr[address - 0xa0000] = (byte)value; + Memory.mainram_Ptr[address - 0xa0000 + 1] = (byte)(value >> 8); } else if (address >= 0xc0000 && address + 1 <= 0xc03ff) { @@ -305,7 +305,7 @@ byte result = 0; if (address >= 0 && address <= 0x7ffff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } else if (address >= 0x80000 && address <= 0x83fff) { @@ -334,11 +334,11 @@ } else if (address >= 0xe0000 && address <= 0xe3fff) { - result = Memory.mainram[address - 0xe0000]; + result = Memory.mainram_Ptr[address - 0xe0000]; } else if (address >= 0xffff0 && address <= 0xfffff) { - result = Memory.mainrom[address & 0xfffff]; + result = Memory.mainrom_Ptr[address & 0xfffff]; } return result; } @@ -348,7 +348,7 @@ ushort result = 0; if (address >= 0 && address + 1 <= 0x7ffff) { - result = (ushort)(Memory.mainrom[address] + Memory.mainrom[address + 1] * 0x100); + result = (ushort)(Memory.mainrom_Ptr[address] + Memory.mainrom_Ptr[address + 1] * 0x100); } else if (address >= 0x80000 && address + 1 <= 0x83fff) { @@ -377,11 +377,11 @@ } else if (address >= 0xe0000 && address + 1 <= 0xe3fff) { - result = (ushort)(Memory.mainram[address - 0xe0000] + Memory.mainram[address - 0xe0000 + 1] * 0x100); + result = (ushort)(Memory.mainram_Ptr[address - 0xe0000] + Memory.mainram_Ptr[address - 0xe0000 + 1] * 0x100); } else if (address >= 0xffff0 && address + 1 <= 0xfffff) { - result = (ushort)(Memory.mainrom[address] + Memory.mainrom[address + 1] * 0x100); + result = (ushort)(Memory.mainrom_Ptr[address] + Memory.mainrom_Ptr[address + 1] * 0x100); } return result; } @@ -423,7 +423,7 @@ } else if (address >= 0xe0000 && address <= 0xe3fff) { - Memory.mainram[address - 0xe0000] = value; + Memory.mainram_Ptr[address - 0xe0000] = value; } } public static void NWriteWord_kengo(int address, ushort value) @@ -464,8 +464,8 @@ } else if (address >= 0xe0000 && address + 1 <= 0xe3fff) { - Memory.mainram[address - 0xe0000] = (byte)value; - Memory.mainram[address - 0xe0000 + 1] = (byte)(value >> 8); + Memory.mainram_Ptr[address - 0xe0000] = (byte)value; + Memory.mainram_Ptr[address - 0xe0000 + 1] = (byte)(value >> 8); } } public static void NWriteIOByte_kengo(int address, byte value) @@ -535,7 +535,7 @@ byte result = 0; if (address >= 0 && address <= 0xffff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } return result; } @@ -553,7 +553,7 @@ byte result = 0; if (address >= 0 && address <= 0xefff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0xf000 && address <= 0xffff) { diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/m72/Memory2.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/m72/Memory2.cs index b6271b4..7a8eb36 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/m72/Memory2.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/m72/Memory2.cs @@ -2,7 +2,7 @@ namespace MAME.Core { - public partial class M72 + public unsafe partial class M72 { public static byte NReadOpByte_airduel(int address) { @@ -15,7 +15,7 @@ namespace MAME.Core } else { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } return result; } diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/m72/State.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/m72/State.cs index 901eed6..c9223fe 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/m72/State.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/m72/State.cs @@ -4,7 +4,7 @@ using System.IO; namespace MAME.Core { - public partial class M72 + public unsafe partial class M72 { public static void SaveStateBinary(BinaryWriter writer) { @@ -45,7 +45,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x4000); + writer.Write(Memory.mainram_Ptr, 0, 0x4000); Nec.nn1[0].SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x10000); Z80A.zz1[0].SaveStateBinary(writer); @@ -106,7 +106,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x4000); + Memory.Set_mainram(reader.ReadBytes(0x4000)); Nec.nn1[0].LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x10000); Z80A.zz1[0].LoadStateBinary(reader); diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/m92/M92.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/m92/M92.cs index c9e929e..690202b 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/m92/M92.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/m92/M92.cs @@ -231,11 +231,15 @@ namespace MAME.Core m92_vram_data = new ushort[0x8000]; m92_spritecontrol = new ushort[8]; bb1 = Machine.GetRom("maincpu.rom"); - Memory.mainrom = new byte[0x190000]; - Array.Copy(bb1, Memory.mainrom, bb1.Length); - Memory.audiorom = Machine.GetRom("soundcpu.rom"); + //Memory.mainrom = new byte[0x190000]; + //Array.Copy(bb1, Memory.mainrom, bb1.Length); + byte[] temp_mainrom = new byte[0x190000]; + Array.Copy(bb1, temp_mainrom, bb1.Length); + Memory.Set_mainrom(temp_mainrom); + + Memory.Set_audiorom(Machine.GetRom("soundcpu.rom")); Iremga20.iremrom = Machine.GetRom("irem.rom"); - Memory.mainram = new byte[0x10000]; + Memory.Set_mainram(new byte[0x10000]); Memory.audioram = new byte[0x4000]; gfx1rom = Machine.GetRom("gfx1.rom"); n1 = gfx1rom.Length; @@ -292,7 +296,7 @@ namespace MAME.Core m92_irq_vectorbase = 0x20; break; } - if (Memory.mainrom == null || Memory.audiorom == null || gfx11rom == null || gfx21rom == null) + if (Memory.mainrom_IsNull || Memory.audiorom_IsNull || gfx11rom == null || gfx21rom == null) { Machine.bRom = false; } diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/m92/Memory.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/m92/Memory.cs index 0087419..83ae46e 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/m92/Memory.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/m92/Memory.cs @@ -1,6 +1,6 @@ namespace MAME.Core { - public partial class M92 + public unsafe partial class M92 { public static ushort ushort0, ushort1, ushort2, dsw; public static ushort ushort0_old, ushort1_old, ushort2_old; @@ -10,7 +10,7 @@ byte result = 0; if (address >= 0 && address <= 0xfffff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } return result; } @@ -20,16 +20,16 @@ byte result = 0; if (address >= 0 && address <= 0x9ffff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } else if (address >= 0xa0000 && address <= 0xbffff) { int offset = address - 0xa0000; - result = Memory.mainrom[bankaddress + offset]; + result = Memory.mainrom_Ptr[bankaddress + offset]; } else if (address >= 0xc0000 && address <= 0xcffff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } else if (address >= 0xd0000 && address <= 0xdffff) { @@ -46,7 +46,7 @@ else if (address >= 0xe0000 && address <= 0xeffff) { int offset = address - 0xe0000; - result = Memory.mainram[offset]; + result = Memory.mainram_Ptr[offset]; } else if (address >= 0xf8000 && address <= 0xf87ff) { @@ -60,7 +60,7 @@ } else if (address >= 0xffff0 && address <= 0xfffff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } return result; } @@ -70,16 +70,16 @@ ushort result = 0; if (address >= 0 && address + 1 <= 0x9ffff) { - result = (ushort)(Memory.mainrom[address] + Memory.mainrom[address + 1] * 0x100); + result = (ushort)(Memory.mainrom_Ptr[address] + Memory.mainrom_Ptr[address + 1] * 0x100); } else if (address >= 0xa0000 && address + 1 <= 0xbffff) { int offset = address - 0xa0000; - result = (ushort)(Memory.mainrom[bankaddress + offset] + Memory.mainrom[bankaddress + offset + 1] * 0x100); + result = (ushort)(Memory.mainrom_Ptr[bankaddress + offset] + Memory.mainrom_Ptr[bankaddress + offset + 1] * 0x100); } else if (address >= 0xc0000 && address + 1 <= 0xcffff) { - result = (ushort)(Memory.mainrom[address] + Memory.mainrom[address + 1] * 0x100); + result = (ushort)(Memory.mainrom_Ptr[address] + Memory.mainrom_Ptr[address + 1] * 0x100); } else if (address >= 0xd0000 && address + 1 <= 0xdffff) { @@ -89,7 +89,7 @@ else if (address >= 0xe0000 && address + 1 <= 0xeffff) { int offset = address - 0xe0000; - result = (ushort)(Memory.mainram[offset] + Memory.mainram[offset + 1] * 0x100); + result = (ushort)(Memory.mainram_Ptr[offset] + Memory.mainram_Ptr[offset + 1] * 0x100); } else if (address >= 0xf8000 && address + 1 <= 0xf87ff) { @@ -103,7 +103,7 @@ } else if (address >= 0xffff0 && address + 1 <= 0xfffff) { - result = (ushort)(Memory.mainrom[address] + Memory.mainrom[address + 1] * 0x100); + result = (ushort)(Memory.mainrom_Ptr[address] + Memory.mainrom_Ptr[address + 1] * 0x100); } return result; } @@ -126,7 +126,7 @@ else if (address >= 0xe0000 && address <= 0xeffff) { int offset = address - 0xe0000; - Memory.mainram[offset] = value; + Memory.mainram_Ptr[offset] = value; } else if (address >= 0xf8000 && address <= 0xf87ff) { @@ -170,8 +170,8 @@ else if (address >= 0xe0000 && address + 1 <= 0xeffff) { int offset = address - 0xe0000; - Memory.mainram[offset] = (byte)value; - Memory.mainram[offset + 1] = (byte)(value >> 8); + Memory.mainram_Ptr[offset] = (byte)value; + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 8); } else if (address >= 0xf8000 && address + 1 <= 0xf87ff) { @@ -363,12 +363,12 @@ byte result = 0; if (address >= 0 && address <= 0x1ffff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0xffff0 && address <= 0xfffff) { int offset = address - 0xe0000; - result = Memory.audiorom[offset]; + result = Memory.audiorom_Ptr[offset]; } return result; } @@ -378,7 +378,7 @@ byte result = 0; if (address >= 0 && address <= 0x1ffff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0xa0000 && address <= 0xa3fff) { @@ -401,7 +401,7 @@ else if (address >= 0xffff0 && address <= 0xfffff) { int offset = address - 0xe0000; - result = Memory.mainrom[offset]; + result = Memory.mainrom_Ptr[offset]; } return result; } @@ -411,7 +411,7 @@ ushort result = 0; if (address >= 0 && address + 1 <= 0x1ffff) { - result = (ushort)(Memory.audiorom[address] + Memory.audiorom[address + 1] * 0x100); + result = (ushort)(Memory.audiorom_Ptr[address] + Memory.audiorom_Ptr[address + 1] * 0x100); } else if (address >= 0xa0000 && address + 1 <= 0xa3fff) { @@ -434,7 +434,7 @@ else if (address >= 0xffff0 && address + 1 <= 0xfffff) { int offset = address - 0xe0000; - result = (ushort)(Memory.mainrom[offset] + Memory.mainrom[offset + 1] * 0x100); + result = (ushort)(Memory.mainrom_Ptr[offset] + Memory.mainrom_Ptr[offset + 1] * 0x100); } return result; } diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/m92/Memory2.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/m92/Memory2.cs index 98482c9..4fbdf63 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/m92/Memory2.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/m92/Memory2.cs @@ -1,6 +1,6 @@ namespace MAME.Core { - public partial class M92 + public unsafe partial class M92 { public static byte N0ReadByte_lethalth(int address) { @@ -8,7 +8,7 @@ byte result = 0; if (address >= 0 && address <= 0x7ffff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } else if (address >= 0x80000 && address <= 0x8ffff) { @@ -25,7 +25,7 @@ else if (address >= 0xe0000 && address <= 0xeffff) { int offset = address - 0xe0000; - result = Memory.mainram[offset]; + result = Memory.mainram_Ptr[offset]; } else if (address >= 0xf8000 && address <= 0xf87ff) { @@ -39,7 +39,7 @@ } else if (address >= 0xffff0 && address <= 0xfffff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } return result; } @@ -49,7 +49,7 @@ ushort result = 0; if (address >= 0 && address + 1 <= 0x7ffff) { - result = (ushort)(Memory.mainrom[address] + Memory.mainrom[address + 1] * 0x100); + result = (ushort)(Memory.mainrom_Ptr[address] + Memory.mainrom_Ptr[address + 1] * 0x100); } else if (address >= 0x80000 && address + 1 <= 0x8ffff) { @@ -59,7 +59,7 @@ else if (address >= 0xe0000 && address + 1 <= 0xeffff) { int offset = address - 0xe0000; - result = (ushort)(Memory.mainram[offset] + Memory.mainram[offset + 1] * 0x100); + result = (ushort)(Memory.mainram_Ptr[offset] + Memory.mainram_Ptr[offset + 1] * 0x100); } else if (address >= 0xf8000 && address + 1 <= 0xf87ff) { @@ -73,7 +73,7 @@ } else if (address >= 0xffff0 && address + 1 <= 0xfffff) { - result = (ushort)(Memory.mainrom[address] + Memory.mainrom[address + 1] * 0x100); + result = (ushort)(Memory.mainrom_Ptr[address] + Memory.mainrom_Ptr[address + 1] * 0x100); } return result; } @@ -96,7 +96,7 @@ else if (address >= 0xe0000 && address <= 0xeffff) { int offset = address - 0xe0000; - Memory.mainram[offset] = value; + Memory.mainram_Ptr[offset] = value; } else if (address >= 0xf8000 && address <= 0xf87ff) { @@ -140,8 +140,8 @@ else if (address >= 0xe0000 && address + 1 <= 0xeffff) { int offset = address - 0xe0000; - Memory.mainram[offset] = (byte)value; - Memory.mainram[offset + 1] = (byte)(value >> 8); + Memory.mainram_Ptr[offset] = (byte)value; + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 8); } else if (address >= 0xf8000 && address + 1 <= 0xf87ff) { diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/m92/State.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/m92/State.cs index f145f4e..6043392 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/m92/State.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/m92/State.cs @@ -3,7 +3,7 @@ using System.IO; namespace MAME.Core { - public partial class M92 + public unsafe partial class M92 { public static void SaveStateBinary(BinaryWriter writer) { @@ -59,7 +59,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x10000); + writer.Write(Memory.mainram_Ptr, 0, 0x10000); Nec.nn1[0].SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x4000); Nec.nn1[1].SaveStateBinary(writer); @@ -136,7 +136,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x10000); + Memory.Set_mainram(reader.ReadBytes(0x10000)); Nec.nn1[0].LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x4000); Nec.nn1[1].LoadStateBinary(reader); diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/Memory.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/Memory.cs index 670821e..c27b381 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/Memory.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/Memory.cs @@ -2,7 +2,7 @@ namespace MAME.Core { - public partial class Neogeo + public unsafe partial class Neogeo { public static short short0, short1, short2, short3, short4, short5, short6; public static short short0_old, short1_old, short2_old, short3_old, short4_old, short5_old, short6_old; @@ -18,20 +18,20 @@ namespace MAME.Core } else if (main_cpu_vector_table_source == 1) { - result = (sbyte)Memory.mainrom[address]; + result = (sbyte)Memory.mainrom_Ptr[address]; } } else if (address >= 0x000080 && address <= 0x0fffff) { - result = (sbyte)Memory.mainrom[address]; + result = (sbyte)Memory.mainrom_Ptr[address]; } else if (address >= 0x100000 && address <= 0x1fffff) { - result = (sbyte)Memory.mainram[address & 0xffff]; + result = (sbyte)Memory.mainram_Ptr[address & 0xffff]; } else if (address >= 0x200000 && address <= 0x2fffff) { - result = (sbyte)Memory.mainrom[main_cpu_bank_address + (address - 0x200000)]; + result = (sbyte)Memory.mainrom_Ptr[main_cpu_bank_address + (address - 0x200000)]; } else if (address >= 0xc00000 && address <= 0xcfffff) { @@ -55,20 +55,20 @@ namespace MAME.Core } else if (main_cpu_vector_table_source == 1) { - result = (sbyte)Memory.mainrom[address]; + result = (sbyte)Memory.mainrom_Ptr[address]; } } else if (address >= 0x000080 && address <= 0x0fffff) { - result = (sbyte)Memory.mainrom[address]; + result = (sbyte)Memory.mainrom_Ptr[address]; } else if (address >= 0x100000 && address <= 0x1fffff) { - result = (sbyte)Memory.mainram[address & 0xffff]; + result = (sbyte)Memory.mainram_Ptr[address & 0xffff]; } else if (address >= 0x200000 && address <= 0x2fffff) { - result = (sbyte)Memory.mainrom[main_cpu_bank_address + (address - 0x200000)]; + result = (sbyte)Memory.mainrom_Ptr[main_cpu_bank_address + (address - 0x200000)]; } /*else if (address >= 0x300000 && address <= 0x300001) { @@ -187,7 +187,7 @@ namespace MAME.Core } else if (main_cpu_vector_table_source == 1) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } } else if (address >= 0x000080 && address + 1 <= 0x0fffff) @@ -196,15 +196,15 @@ namespace MAME.Core { //m68000Form.iStatus = 1; } - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else if (address >= 0x100000 && address + 1 <= 0x1fffff) { - result = (short)(Memory.mainram[address & 0xffff] * 0x100 + Memory.mainram[(address & 0xffff) + 1]); + result = (short)(Memory.mainram_Ptr[address & 0xffff] * 0x100 + Memory.mainram_Ptr[(address & 0xffff) + 1]); } else if (address >= 0x200000 && address + 1 <= 0x2fffff) { - result = (short)(Memory.mainrom[main_cpu_bank_address + (address & 0xfffff)] * 0x100 + Memory.mainrom[main_cpu_bank_address + (address & 0xfffff) + 1]); + result = (short)(Memory.mainrom_Ptr[main_cpu_bank_address + (address & 0xfffff)] * 0x100 + Memory.mainrom_Ptr[main_cpu_bank_address + (address & 0xfffff) + 1]); } else if (address >= 0xc00000 && address + 1 <= 0xcfffff) { @@ -228,7 +228,7 @@ namespace MAME.Core } else if (main_cpu_vector_table_source == 1) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } } else if (address >= 0x000080 && address + 1 <= 0x0fffff) @@ -237,7 +237,7 @@ namespace MAME.Core { //m68000Form.iStatus = 1; } - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else if (address >= 0x100000 && address + 1 <= 0x1fffff) { @@ -245,11 +245,11 @@ namespace MAME.Core { int i1 = 1; } - result = (short)(Memory.mainram[address & 0xffff] * 0x100 + Memory.mainram[(address & 0xffff) + 1]); + result = (short)(Memory.mainram_Ptr[address & 0xffff] * 0x100 + Memory.mainram_Ptr[(address & 0xffff) + 1]); } else if (address >= 0x200000 && address <= 0x2fffff) { - result = (short)(Memory.mainrom[main_cpu_bank_address + (address & 0xfffff)] * 0x100 + Memory.mainrom[main_cpu_bank_address + (address & 0xfffff) + 1]); + result = (short)(Memory.mainrom_Ptr[main_cpu_bank_address + (address & 0xfffff)] * 0x100 + Memory.mainrom_Ptr[main_cpu_bank_address + (address & 0xfffff) + 1]); } /*else if (address >= 0x300000 && address <= 0x300001) { @@ -317,7 +317,7 @@ namespace MAME.Core } else if (main_cpu_vector_table_source == 1) { - result = Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]; + result = Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]; } } else if (address >= 0x000080 && address + 3 <= 0x0fffff) @@ -326,15 +326,15 @@ namespace MAME.Core { //m68000Form.iStatus = 1; } - result = Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]; + result = Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]; } else if (address >= 0x100000 && address + 3 <= 0x1fffff) { - result = Memory.mainram[address & 0xffff] * 0x1000000 + Memory.mainram[(address & 0xffff) + 1] * 0x10000 + Memory.mainram[(address & 0xffff) + 2] * 0x100 + Memory.mainram[(address & 0xffff) + 3]; + result = Memory.mainram_Ptr[address & 0xffff] * 0x1000000 + Memory.mainram_Ptr[(address & 0xffff) + 1] * 0x10000 + Memory.mainram_Ptr[(address & 0xffff) + 2] * 0x100 + Memory.mainram_Ptr[(address & 0xffff) + 3]; } else if (address >= 0x200000 && address + 3 <= 0x2fffff) { - result = Memory.mainrom[main_cpu_bank_address + (address & 0xfffff)] * 0x1000000 + Memory.mainrom[main_cpu_bank_address + (address & 0xfffff) + 1] * 0x10000 + Memory.mainrom[main_cpu_bank_address + (address & 0xfffff) + 2] * 0x100 + Memory.mainrom[main_cpu_bank_address + (address & 0xfffff) + 3]; + result = Memory.mainrom_Ptr[main_cpu_bank_address + (address & 0xfffff)] * 0x1000000 + Memory.mainrom_Ptr[main_cpu_bank_address + (address & 0xfffff) + 1] * 0x10000 + Memory.mainrom_Ptr[main_cpu_bank_address + (address & 0xfffff) + 2] * 0x100 + Memory.mainrom_Ptr[main_cpu_bank_address + (address & 0xfffff) + 3]; } else if (address >= 0xc00000 && address + 3 <= 0xcfffff) { @@ -358,7 +358,7 @@ namespace MAME.Core } else if (main_cpu_vector_table_source == 1) { - result = Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]; + result = Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]; } } else if (address >= 0x000080 && address + 3 <= 0x0fffff) @@ -367,15 +367,15 @@ namespace MAME.Core { //m68000Form.iStatus = 1; } - result = Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]; + result = Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]; } else if (address >= 0x100000 && address + 3 <= 0x1fffff) { - result = Memory.mainram[address & 0xffff] * 0x1000000 + Memory.mainram[(address & 0xffff) + 1] * 0x10000 + Memory.mainram[(address & 0xffff) + 2] * 0x100 + Memory.mainram[(address & 0xffff) + 3]; + result = Memory.mainram_Ptr[address & 0xffff] * 0x1000000 + Memory.mainram_Ptr[(address & 0xffff) + 1] * 0x10000 + Memory.mainram_Ptr[(address & 0xffff) + 2] * 0x100 + Memory.mainram_Ptr[(address & 0xffff) + 3]; } else if (address >= 0x200000 && address + 3 <= 0x2fffff) { - result = Memory.mainrom[main_cpu_bank_address + (address & 0xfffff)] * 0x1000000 + Memory.mainrom[main_cpu_bank_address + (address & 0xfffff) + 1] * 0x10000 + Memory.mainrom[main_cpu_bank_address + (address & 0xfffff) + 2] * 0x100 + Memory.mainrom[main_cpu_bank_address + (address & 0xfffff) + 3]; + result = Memory.mainrom_Ptr[main_cpu_bank_address + (address & 0xfffff)] * 0x1000000 + Memory.mainrom_Ptr[main_cpu_bank_address + (address & 0xfffff) + 1] * 0x10000 + Memory.mainrom_Ptr[main_cpu_bank_address + (address & 0xfffff) + 2] * 0x100 + Memory.mainrom_Ptr[main_cpu_bank_address + (address & 0xfffff) + 3]; } else if (address >= 0x300000 && address <= 0x31ffff) { @@ -429,7 +429,7 @@ namespace MAME.Core int i2 = 1; //m68000Form.iStatus = 1; } - Memory.mainram[address & 0xffff] = (byte)value; + Memory.mainram_Ptr[address & 0xffff] = (byte)value; } else if (address >= 0x2ffff0 && address <= 0x2fffff) { @@ -504,8 +504,8 @@ namespace MAME.Core { int i1 = 1; } - Memory.mainram[address & 0xffff] = (byte)(value >> 8); - Memory.mainram[(address & 0xffff) + 1] = (byte)value; + Memory.mainram_Ptr[address & 0xffff] = (byte)(value >> 8); + Memory.mainram_Ptr[(address & 0xffff) + 1] = (byte)value; } else if (address >= 0x2ffff0 && address <= 0x2fffff) { @@ -557,10 +557,10 @@ namespace MAME.Core { int i1 = 1; } - Memory.mainram[address & 0xffff] = (byte)(value >> 24); - Memory.mainram[(address & 0xffff) + 1] = (byte)(value >> 16); - Memory.mainram[(address & 0xffff) + 2] = (byte)(value >> 8); - Memory.mainram[(address & 0xffff) + 3] = (byte)value; + Memory.mainram_Ptr[address & 0xffff] = (byte)(value >> 24); + Memory.mainram_Ptr[(address & 0xffff) + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[(address & 0xffff) + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[(address & 0xffff) + 3] = (byte)value; } else if (address >= 0x2ffff0 && address <= 0x2fffff) { @@ -1981,23 +1981,23 @@ namespace MAME.Core byte result = 0; if (address >= 0x0000 && address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0x8000 && address <= 0xbfff) { - result = Memory.audiorom[audio_cpu_banks[3] * 0x4000 + address - 0x8000]; + result = Memory.audiorom_Ptr[audio_cpu_banks[3] * 0x4000 + address - 0x8000]; } else if (address >= 0xc000 && address <= 0xdfff) { - result = Memory.audiorom[audio_cpu_banks[2] * 0x2000 + address - 0xc000]; + result = Memory.audiorom_Ptr[audio_cpu_banks[2] * 0x2000 + address - 0xc000]; } else if (address >= 0xe000 && address <= 0xefff) { - result = Memory.audiorom[audio_cpu_banks[1] * 0x1000 + address - 0xe000]; + result = Memory.audiorom_Ptr[audio_cpu_banks[1] * 0x1000 + address - 0xe000]; } else if (address >= 0xf000 && address <= 0xf7ff) { - result = Memory.audiorom[audio_cpu_banks[0] * 0x800 + address - 0xf000]; + result = Memory.audiorom_Ptr[audio_cpu_banks[0] * 0x800 + address - 0xf000]; } else if (address >= 0xf800 && address <= 0xffff) { @@ -2010,23 +2010,23 @@ namespace MAME.Core byte result = 0; if (address >= 0x0000 && address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0x8000 && address <= 0xbfff) { - result = Memory.audiorom[audio_cpu_banks[3] * 0x4000 + address - 0x8000]; + result = Memory.audiorom_Ptr[audio_cpu_banks[3] * 0x4000 + address - 0x8000]; } else if (address >= 0xc000 && address <= 0xdfff) { - result = Memory.audiorom[audio_cpu_banks[2] * 0x2000 + address - 0xc000]; + result = Memory.audiorom_Ptr[audio_cpu_banks[2] * 0x2000 + address - 0xc000]; } else if (address >= 0xe000 && address <= 0xefff) { - result = Memory.audiorom[audio_cpu_banks[1] * 0x1000 + address - 0xe000]; + result = Memory.audiorom_Ptr[audio_cpu_banks[1] * 0x1000 + address - 0xe000]; } else if (address >= 0xf000 && address <= 0xf7ff) { - result = Memory.audiorom[audio_cpu_banks[0] * 0x800 + address - 0xf000]; + result = Memory.audiorom_Ptr[audio_cpu_banks[0] * 0x800 + address - 0xf000]; } else if (address >= 0xf800 && address <= 0xffff) { diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/Neogeo.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/Neogeo.cs index 0e99890..fe240f4 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/Neogeo.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/Neogeo.cs @@ -35,7 +35,7 @@ namespace MAME.Core { audio_cpu_banks = new byte[4]; pvc_cartridge_ram = new byte[0x2000]; - Memory.mainram = new byte[0x10000]; + Memory.Set_mainram(new byte[0x10000]); mainram2 = new byte[0x10000]; Memory.audioram = new byte[0x800]; Machine.bRom = true; @@ -44,13 +44,13 @@ namespace MAME.Core zoomyrom = MameMainMotion.resource._000_lo; audiobiosrom = MameMainMotion.resource.sm1; mainbiosrom = MameMainMotion.resource.mainbios; - Memory.mainrom = Machine.GetRom("maincpu.rom"); - Memory.audiorom = Machine.GetRom("audiocpu.rom"); + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); + Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); fixedrom = Machine.GetRom("fixed.rom"); FM.ymsndrom = Machine.GetRom("ymsnd.rom"); YMDeltat.ymsnddeltatrom = Machine.GetRom("ymsnddeltat.rom"); spritesrom = Machine.GetRom("sprites.rom"); - if (fixedbiosrom == null || zoomyrom == null || audiobiosrom == null || mainbiosrom == null || Memory.mainrom == null || Memory.audiorom == null || fixedrom == null || FM.ymsndrom == null || spritesrom == null) + if (fixedbiosrom == null || zoomyrom == null || audiobiosrom == null || mainbiosrom == null || Memory.mainrom_IsNull || Memory.audiorom_IsNull || fixedrom == null || FM.ymsndrom == null || spritesrom == null) { Machine.bRom = false; } @@ -262,7 +262,7 @@ namespace MAME.Core public static void main_cpu_bank_select_w(int data) { int bank_address; - int len = Memory.mainrom.Length; + int len = Memory.mainrom_Lenght; if ((len <= 0x100000) && ((data & 0x07) != 0)) { int i1 = 1; @@ -313,7 +313,7 @@ namespace MAME.Core } public static void machine_start_neogeo() { - if (Memory.mainrom.Length > 0x100000) + if (Memory.mainrom_Lenght > 0x100000) { main_cpu_bank_address = 0x100000; } diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/Neoprot.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/Neoprot.cs index 4e7d03a..7c4bcc9 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/Neoprot.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/Neoprot.cs @@ -2,7 +2,7 @@ namespace MAME.Core { - public partial class Neogeo + public unsafe partial class Neogeo { public static ushort fatfury2_protection_16_r(int offset) { @@ -63,16 +63,16 @@ namespace MAME.Core switch (value) { case 0x0090: - Memory.mainrom[0x100] = 0x00; - Memory.mainrom[0x101] = 0xc2; - Memory.mainrom[0x102] = 0x00; - Memory.mainrom[0x103] = 0xfd; + Memory.mainrom_Ptr[0x100] = 0x00; + Memory.mainrom_Ptr[0x101] = 0xc2; + Memory.mainrom_Ptr[0x102] = 0x00; + Memory.mainrom_Ptr[0x103] = 0xfd; break; case 0x00f0: - Memory.mainrom[0x100] = 0x4e; - Memory.mainrom[0x101] = 0x45; - Memory.mainrom[0x102] = 0x4f; - Memory.mainrom[0x103] = 0x2d; + Memory.mainrom_Ptr[0x100] = 0x4e; + Memory.mainrom_Ptr[0x101] = 0x45; + Memory.mainrom_Ptr[0x102] = 0x4f; + Memory.mainrom_Ptr[0x103] = 0x2d; break; default: break; @@ -305,7 +305,7 @@ namespace MAME.Core extra_ram[0x1ff1] = 0xa0; extra_ram[0x1ff2] &= 0x7f; main_cpu_bank_address = address + 0x100000; - Memory.mainrom[0x58197] = prt; + Memory.mainrom_Ptr[0x58197] = prt; } } public static void kof2003p_w(int offset) @@ -317,12 +317,12 @@ namespace MAME.Core extra_ram[0x1ff1] &= 0xfe; extra_ram[0x1ff2] &= 0x7f; main_cpu_bank_address = address + 0x100000; - Memory.mainrom[0x58197] = prt; + Memory.mainrom_Ptr[0x58197] = prt; } } public static byte sbp_protection_r(int offset) { - byte origdata = Memory.mainrom[offset + 0x200]; + byte origdata = Memory.mainrom_Ptr[offset + 0x200]; byte data = (byte)BITSWAP8(origdata, 3, 2, 1, 0, 7, 6, 5, 4); int realoffset = 0x200 + offset; if (realoffset == 0xd5e || realoffset == 0xd5f) @@ -348,7 +348,7 @@ namespace MAME.Core { if (extra_ram[0x1ffc] == 0 && extra_ram[0x1ffd] == 0) { - Memory.mainrom[0xe0000 + offset] = (byte)data; + Memory.mainrom_Ptr[0xe0000 + offset] = (byte)data; } else { @@ -359,8 +359,8 @@ namespace MAME.Core { if (extra_ram[0x1ffc] == 0 && extra_ram[0x1ffd] == 0) { - Memory.mainrom[0xe0000 + offset] = (byte)(data >> 8); - Memory.mainrom[0xe0000 + offset + 1] = (byte)data; + Memory.mainrom_Ptr[0xe0000 + offset] = (byte)(data >> 8); + Memory.mainrom_Ptr[0xe0000 + offset + 1] = (byte)data; } else { @@ -380,7 +380,13 @@ namespace MAME.Core } else if (offset == 0xbfff8 && (extra_ram[0x1ff8] * 0x100 + extra_ram[0x1ff9] != data)) { - Array.Copy(Memory.mainrom, ((data & 1) != 0) ? 0x810000 : 0x710000, Memory.mainrom, 0x10000, 0xcffff); + //Array.Copy(Memory.mainrom, ((data & 1) != 0) ? 0x810000 : 0x710000, Memory.mainrom, 0x10000, 0xcffff); + + //TODO 验证拷贝可靠性 + byte* source = Memory.mainrom_Ptr + ((data & 1) != 0 ? 0x810000 : 0x710000); + byte* destination = Memory.mainrom_Ptr + 0x10000; + int length = 0xcffff; // 注意:这个长度是否正确取决于你的实际需求 + Buffer.MemoryCopy(source, destination, length, length); } extra_ram[(offset - 0xbe000) & 0x1fff] = (byte)data; } @@ -398,7 +404,14 @@ namespace MAME.Core } else if (offset == 0xbfff8 && (extra_ram[0x1ff8] * 0x100 + extra_ram[0x1ff9] != data)) { - Array.Copy(Memory.mainrom, ((data & 1) != 0) ? 0x810000 : 0x710000, Memory.mainrom, 0x10000, 0xcffff); + //Array.Copy(Memory.mainrom, ((data & 1) != 0) ? 0x810000 : 0x710000, Memory.mainrom, 0x10000, 0xcffff); + + //TODO 验证拷贝可靠性 + byte* source = Memory.mainrom_Ptr + ((data & 1) != 0 ? 0x810000 : 0x710000); + byte* destination = Memory.mainrom_Ptr + 0x10000; + int length = 0xcffff; // 注意:这个长度是否正确取决于你的实际需求 + Buffer.MemoryCopy(source, destination, length, length); + } extra_ram[(offset - 0xbe000) & 0x1fff] = (byte)(data >> 8); extra_ram[((offset - 0xbe000) & 0x1fff) + 1] = (byte)data; diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/State.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/State.cs index d110763..02cb80f 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/State.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/State.cs @@ -4,7 +4,7 @@ using System.IO; namespace MAME.Core { - public partial class Neogeo + public unsafe partial class Neogeo { public static void SaveStateBinary(BinaryWriter writer) { @@ -46,7 +46,7 @@ namespace MAME.Core writer.Write(auto_animation_disabled); writer.Write(auto_animation_counter); writer.Write(auto_animation_frame_counter); - writer.Write(Memory.mainram, 0, 0x10000); + writer.Write(Memory.mainram_Ptr, 0, 0x10000); MC68000.m1.SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x800); Z80A.zz1[0].SaveStateBinary(writer); @@ -117,7 +117,7 @@ namespace MAME.Core auto_animation_disabled = reader.ReadByte(); auto_animation_counter = reader.ReadInt32(); auto_animation_frame_counter = reader.ReadInt32(); - Memory.mainram = reader.ReadBytes(0x10000); + Memory.Set_mainram(reader.ReadBytes(0x10000)); MC68000.m1.LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x800); Z80A.zz1[0].LoadStateBinary(reader); diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/pgm/Memory.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/pgm/Memory.cs index 696c328..6a9ffdf 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/pgm/Memory.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/pgm/Memory.cs @@ -1,6 +1,6 @@ namespace MAME.Core { - public partial class PGM + public unsafe partial class PGM { public static short short0, short1, short2, short3, short4, short5, short6; public static short short0_old, short1_old, short2_old, short3_old, short4_old, short5_old, short6_old; @@ -14,9 +14,9 @@ } else if (address >= 0x100000 && address <= 0x3fffff) { - if (address < 0x100000 + Memory.mainrom.Length) + if (address < 0x100000 + Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address - 0x100000]); + result = (sbyte)(Memory.mainrom_Ptr[address - 0x100000]); } else { @@ -25,7 +25,7 @@ } /*else if (address >= 0x800000 && address <= 0x81ffff) { - result = (sbyte)Memory.mainram[address - 0x800000]; + result = (sbyte)Memory.mainram_Ptr[address - 0x800000]; }*/ return result; } @@ -39,9 +39,9 @@ } else if (address >= 0x100000 && address <= 0x3fffff) { - if (address < 0x100000 + Memory.mainrom.Length) + if (address < 0x100000 + Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address - 0x100000]); + result = (sbyte)(Memory.mainrom_Ptr[address - 0x100000]); } else { @@ -50,7 +50,7 @@ } else if (address >= 0x800000 && address <= 0x81ffff) { - result = (sbyte)Memory.mainram[address - 0x800000]; + result = (sbyte)Memory.mainram_Ptr[address - 0x800000]; } else if (address >= 0x900000 && address <= 0x903fff) { @@ -128,9 +128,9 @@ } else if (address >= 0x100000 && address + 1 <= 0x3fffff) { - if (address + 1 < 0x100000 + Memory.mainrom.Length) + if (address + 1 < 0x100000 + Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address - 0x100000] * 0x100 + Memory.mainrom[address - 0x100000 + 1]); + result = (short)(Memory.mainrom_Ptr[address - 0x100000] * 0x100 + Memory.mainrom_Ptr[address - 0x100000 + 1]); } else { @@ -139,7 +139,7 @@ } else if (address >= 0x800000 && address + 1 <= 0x81ffff) { - result = (short)(Memory.mainram[address - 0x800000] * 0x100 + Memory.mainram[address - 0x800000 + 1]); + result = (short)(Memory.mainram_Ptr[address - 0x800000] * 0x100 + Memory.mainram_Ptr[address - 0x800000 + 1]); } return result; } @@ -153,9 +153,9 @@ } else if (address >= 0x100000 && address + 1 <= 0x3fffff) { - if (address + 1 < 0x100000 + Memory.mainrom.Length) + if (address + 1 < 0x100000 + Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address - 0x100000] * 0x100 + Memory.mainrom[address - 0x100000 + 1]); + result = (short)(Memory.mainrom_Ptr[address - 0x100000] * 0x100 + Memory.mainrom_Ptr[address - 0x100000 + 1]); } else { @@ -164,7 +164,7 @@ } else if (address >= 0x800000 && address + 1 <= 0x81ffff) { - result = (short)(Memory.mainram[address - 0x800000] * 0x100 + Memory.mainram[address - 0x800000 + 1]); + result = (short)(Memory.mainram_Ptr[address - 0x800000] * 0x100 + Memory.mainram_Ptr[address - 0x800000 + 1]); } else if (address >= 0x900000 && address + 1 <= 0x903fff) { @@ -235,9 +235,9 @@ } else if (address >= 0x100000 && address + 3 <= 0x3fffff) { - if (address + 3 < 0x100000 + Memory.mainrom.Length) + if (address + 3 < 0x100000 + Memory.mainrom_Lenght) { - result = Memory.mainrom[address - 0x100000] * 0x1000000 + Memory.mainrom[address - 0x100000 + 1] * 0x10000 + Memory.mainrom[address - 0x100000 + 2] * 0x100 + Memory.mainrom[address - 0x100000 + 3]; + result = Memory.mainrom_Ptr[address - 0x100000] * 0x1000000 + Memory.mainrom_Ptr[address - 0x100000 + 1] * 0x10000 + Memory.mainrom_Ptr[address - 0x100000 + 2] * 0x100 + Memory.mainrom_Ptr[address - 0x100000 + 3]; } else { @@ -246,7 +246,7 @@ } else if (address >= 0x800000 && address + 3 <= 0x81ffff) { - result = Memory.mainram[address - 0x800000] * 0x1000000 + Memory.mainram[address - 0x800000 + 1] * 0x10000 + Memory.mainram[address - 0x800000 + 2] * 0x100 + Memory.mainram[address - 0x800000 + 3]; + result = Memory.mainram_Ptr[address - 0x800000] * 0x1000000 + Memory.mainram_Ptr[address - 0x800000 + 1] * 0x10000 + Memory.mainram_Ptr[address - 0x800000 + 2] * 0x100 + Memory.mainram_Ptr[address - 0x800000 + 3]; } return result; } @@ -260,9 +260,9 @@ } else if (address >= 0x100000 && address + 3 <= 0x3fffff) { - if (address + 3 < 0x100000 + Memory.mainrom.Length) + if (address + 3 < 0x100000 + Memory.mainrom_Lenght) { - result = Memory.mainrom[address - 0x100000] * 0x1000000 + Memory.mainrom[address - 0x100000 + 1] * 0x10000 + Memory.mainrom[address - 0x100000 + 2] * 0x100 + Memory.mainrom[address - 0x100000 + 3]; + result = Memory.mainrom_Ptr[address - 0x100000] * 0x1000000 + Memory.mainrom_Ptr[address - 0x100000 + 1] * 0x10000 + Memory.mainrom_Ptr[address - 0x100000 + 2] * 0x100 + Memory.mainrom_Ptr[address - 0x100000 + 3]; } else { @@ -271,7 +271,7 @@ } else if (address >= 0x800000 && address + 3 <= 0x81ffff) { - result = Memory.mainram[address - 0x800000] * 0x1000000 + Memory.mainram[address - 0x800000 + 1] * 0x10000 + Memory.mainram[address - 0x800000 + 2] * 0x100 + Memory.mainram[address - 0x800000 + 3]; + result = Memory.mainram_Ptr[address - 0x800000] * 0x1000000 + Memory.mainram_Ptr[address - 0x800000 + 1] * 0x10000 + Memory.mainram_Ptr[address - 0x800000 + 2] * 0x100 + Memory.mainram_Ptr[address - 0x800000 + 3]; } else if (address >= 0x900000 && address + 3 <= 0x903fff) { @@ -342,7 +342,7 @@ else if (address >= 0x800000 && address <= 0x81ffff) { int offset = address - 0x800000; - Memory.mainram[offset] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)value; } else if (address >= 0x900000 && address <= 0x903fff) { @@ -431,8 +431,8 @@ else if (address >= 0x800000 && address + 1 <= 0x81ffff) { int offset = address - 0x800000; - Memory.mainram[offset] = (byte)(value >> 8); - Memory.mainram[offset + 1] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 1] = (byte)value; } else if (address >= 0x900000 && address + 1 <= 0x903fff) { @@ -507,10 +507,10 @@ else if (address >= 0x800000 && address + 3 <= 0x81ffff) { int offset = address - 0x800000; - Memory.mainram[offset] = (byte)(value >> 24); - Memory.mainram[offset + 1] = (byte)(value >> 16); - Memory.mainram[offset + 2] = (byte)(value >> 8); - Memory.mainram[offset + 3] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 24); + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[offset + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 3] = (byte)value; } else if (address >= 0x900000 && address + 3 <= 0x903fff) { diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/pgm/PGM.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/pgm/PGM.cs index 050ba0e..7e55728 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/pgm/PGM.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/pgm/PGM.cs @@ -41,19 +41,19 @@ namespace MAME.Core tiles1rom[i3 * 2] = (byte)(tilesrom[i3] & 0x0f); tiles1rom[i3 * 2 + 1] = (byte)(tilesrom[i3] >> 4); } - Memory.mainrom = Machine.GetRom("maincpu.rom"); + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); sprmaskrom = Machine.GetRom("sprmask.rom"); sprcolrom = Machine.GetRom("sprcol.rom"); expand_32x32x5bpp(); expand_colourdata(); - Memory.mainram = new byte[0x20000]; + Memory.Set_mainram(new byte[0x20000]); pgm_bg_videoram = new byte[0x4000]; pgm_tx_videoram = new byte[0x2000]; pgm_rowscrollram = new byte[0x800]; Generic.paletteram16 = new ushort[0x900]; pgm_videoregs = new byte[0x10000]; Memory.audioram = new byte[0x10000]; - if (Memory.mainrom == null || sprmaskrom == null || pgm_sprite_a_region == null) + if (Memory.mainrom_IsNull || sprmaskrom == null || pgm_sprite_a_region == null) { Machine.bRom = false; } diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/pgm/State.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/pgm/State.cs index 6ef7da8..5570fbe 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/pgm/State.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/pgm/State.cs @@ -6,7 +6,7 @@ namespace MAME.Core { public partial class PGM { - public static void SaveStateBinary(BinaryWriter writer) + public unsafe static void SaveStateBinary(BinaryWriter writer) { int i, j; writer.Write(pgm_tx_videoram, 0, 0x2000); @@ -33,7 +33,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x20000); + writer.Write(Memory.mainram_Ptr, 0, 0x20000); MC68000.m1.SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x10000); Z80A.zz1[0].SaveStateBinary(writer); @@ -85,7 +85,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x20000); + Memory.Set_mainram(reader.ReadBytes(0x20000)); MC68000.m1.LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x10000); Z80A.zz1[0].LoadStateBinary(reader); diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/pgm/Video.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/pgm/Video.cs index ba98608..3d02985 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/pgm/Video.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/pgm/Video.cs @@ -393,12 +393,12 @@ namespace MAME.Core pgm_tx_tilemap.tilemap_set_scrollx(0, pgm_videoregs[0x6000] * 0x100 + pgm_videoregs[0x6000 + 1]); pgm_tx_tilemap.tilemap_draw_primask(new_clip, 0x10, 0); } - public static void video_eof_pgm() + public unsafe static void video_eof_pgm() { int i; for (i = 0; i < 0x500; i++) { - pgm_spritebufferram[i] = (ushort)(Memory.mainram[i * 2] * 0x100 + Memory.mainram[i * 2 + 1]); + pgm_spritebufferram[i] = (ushort)(Memory.mainram_Ptr[i * 2] * 0x100 + Memory.mainram_Ptr[i * 2 + 1]); } } } diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/suna8/Memory.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/suna8/Memory.cs index 9e8d013..beb75c2 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/suna8/Memory.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/suna8/Memory.cs @@ -2,7 +2,7 @@ namespace MAME.Core { - public partial class SunA8 + public unsafe partial class SunA8 { public static byte byte1, byte2; public static byte byte1_old, byte2_old; @@ -16,7 +16,7 @@ namespace MAME.Core else if (address >= 0x8000 && address <= 0xbfff) { int offset = address - 0x8000; - result = Memory.mainrom[basebankmain + offset]; + result = Memory.mainrom_Ptr[basebankmain + offset]; } else { @@ -29,12 +29,12 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } else if (address >= 0x8000 && address <= 0xbfff) { int offset = address - 0x8000; - result = Memory.mainrom[basebankmain + offset]; + result = Memory.mainrom_Ptr[basebankmain + offset]; } else if (address == 0xc000) { @@ -64,7 +64,7 @@ namespace MAME.Core else if (address >= 0xc800 && address <= 0xdfff) { int offset = address - 0xc800; - result = Memory.mainram[offset]; + result = Memory.mainram_Ptr[offset]; } else if (address >= 0xe000 && address <= 0xffff) { @@ -77,12 +77,12 @@ namespace MAME.Core { if (address <= 0x7fff) { - Memory.mainrom[address] = value; + Memory.mainrom_Ptr[address] = value; } else if (address >= 0x8000 && address <= 0xbfff) { int offset = address - 0x8000; - Memory.mainrom[basebankmain + offset] = value; + Memory.mainrom_Ptr[basebankmain + offset] = value; } else if (address == 0xc200) { @@ -116,7 +116,7 @@ namespace MAME.Core else if (address >= 0xc800 && address <= 0xdfff) { int offset = address - 0xc800; - Memory.mainram[offset] = value; + Memory.mainram_Ptr[offset] = value; } else if (address >= 0xe000 && address <= 0xffff) { @@ -141,7 +141,7 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } return result; } @@ -150,7 +150,7 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0xc000 && address <= 0xc7ff) { @@ -171,7 +171,7 @@ namespace MAME.Core { if (address <= 0x7fff) { - Memory.audiorom[address] = value; + Memory.audiorom_Ptr[address] = value; } else if (address >= 0xa000 && address <= 0xa001) { diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/suna8/SunA8.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/suna8/SunA8.cs index f266265..5e7b663 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/suna8/SunA8.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/suna8/SunA8.cs @@ -25,8 +25,8 @@ namespace MAME.Core case "starfigh": Generic.spriteram = new byte[0x4000]; mainromop = Machine.GetRom("maincpuop.rom"); - Memory.mainrom = Machine.GetRom("maincpu.rom"); - Memory.audiorom = Machine.GetRom("audiocpu.rom"); + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); + Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); samplesrom = Machine.GetRom("samples.rom"); gfx12rom = Machine.GetRom("gfx1.rom"); n = gfx12rom.Length; @@ -36,10 +36,10 @@ namespace MAME.Core gfx1rom[i * 2] = (byte)(gfx12rom[i] >> 4); gfx1rom[i * 2 + 1] = (byte)(gfx12rom[i] & 0x0f); } - Memory.mainram = new byte[0x1800]; + Memory.Set_mainram(new byte[0x1800]); Memory.audioram = new byte[0x800]; Generic.paletteram = new byte[0x200]; - if (mainromop == null || Memory.mainrom == null || Memory.audiorom == null || samplesrom == null || gfx12rom == null) + if (mainromop == null || Memory.mainrom_IsNull || Memory.audiorom_IsNull || samplesrom == null || gfx12rom == null) { Machine.bRom = false; } diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/taito/Memory.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/taito/Memory.cs index 71077bb..be8ad7d 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/taito/Memory.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/taito/Memory.cs @@ -2,7 +2,7 @@ namespace MAME.Core { - public partial class Taito + public unsafe partial class Taito { public static sbyte sbyte0, sbyte1, sbyte2, sbyte3, sbyte4, sbyte5; public static sbyte sbyte0_old, sbyte1_old, sbyte2_old, sbyte3_old, sbyte4_old, sbyte5_old; @@ -12,12 +12,12 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } else if (address >= 0x8000 && address <= 0xbfff) { int offset = address - 0x8000; - result = Memory.mainrom[basebankmain + offset]; + result = Memory.mainrom_Ptr[basebankmain + offset]; } else if (address >= 0xc000 && address <= 0xdcff) { @@ -32,7 +32,7 @@ namespace MAME.Core else if (address >= 0xe000 && address <= 0xf7ff) { int offset = address - 0xe000; - result = Memory.mainram[offset]; + result = Memory.mainram_Ptr[offset]; } else if (address == 0xfa03) { @@ -73,12 +73,12 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } else if (address >= 0x8000 && address <= 0xbfff) { int offset = address - 0x8000; - result = Memory.mainrom[basebankmain + offset]; + result = Memory.mainrom_Ptr[basebankmain + offset]; } else if (address >= 0xc000 && address <= 0xdcff) { @@ -93,7 +93,7 @@ namespace MAME.Core else if (address >= 0xe000 && address <= 0xf7ff) { int offset = address - 0xe000; - result = Memory.mainram[offset]; + result = Memory.mainram_Ptr[offset]; } else if (address == 0xfa03) { @@ -134,12 +134,12 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } else if (address >= 0x8000 && address <= 0xbfff) { int offset = address - 0x8000; - result = Memory.mainrom[basebankmain + offset]; + result = Memory.mainrom_Ptr[basebankmain + offset]; } else if (address >= 0xc000 && address <= 0xdcff) { @@ -154,7 +154,7 @@ namespace MAME.Core else if (address >= 0xe000 && address <= 0xf7ff) { int offset = address - 0xe000; - result = Memory.mainram[offset]; + result = Memory.mainram_Ptr[offset]; } else if (address >= 0xfc00 && address <= 0xfcff) { @@ -202,12 +202,12 @@ namespace MAME.Core { if (address >= 0x0000 && address <= 0x7fff) { - Memory.audiorom[address] = value; + Memory.audiorom_Ptr[address] = value; } else if (address >= 0x8000 && address <= 0xbfff) { int offset = address - 0x8000; - Memory.mainrom[basebankmain + offset] = value; + Memory.mainrom_Ptr[basebankmain + offset] = value; } else if (address >= 0xc000 && address <= 0xdcff) { @@ -222,7 +222,7 @@ namespace MAME.Core else if (address >= 0xe000 && address <= 0xf7ff) { int offset = address - 0xe000; - Memory.mainram[offset] = value; + Memory.mainram_Ptr[offset] = value; } else if (address >= 0xf800 && address <= 0xf9ff) { @@ -258,12 +258,12 @@ namespace MAME.Core { if (address >= 0x0000 && address <= 0x7fff) { - Memory.audiorom[address] = value; + Memory.audiorom_Ptr[address] = value; } else if (address >= 0x8000 && address <= 0xbfff) { int offset = address - 0x8000; - Memory.mainrom[basebankmain + offset] = value; + Memory.mainrom_Ptr[basebankmain + offset] = value; } else if (address >= 0xc000 && address <= 0xdcff) { @@ -278,7 +278,7 @@ namespace MAME.Core else if (address >= 0xe000 && address <= 0xf7ff) { int offset = address - 0xe000; - Memory.mainram[offset] = value; + Memory.mainram_Ptr[offset] = value; } else if (address >= 0xf800 && address <= 0xf9ff) { @@ -340,7 +340,7 @@ namespace MAME.Core else if (address >= 0x8000 && address <= 0x97ff) { int offset = address - 0x8000; - result = Memory.mainram[offset]; + result = Memory.mainram_Ptr[offset]; } return result; } @@ -354,7 +354,7 @@ namespace MAME.Core else if (address >= 0x8000 && address <= 0x97ff) { int offset = address - 0x8000; - result = Memory.mainram[offset]; + result = Memory.mainram_Ptr[offset]; } return result; } @@ -367,7 +367,7 @@ namespace MAME.Core else if (address >= 0x8000 && address <= 0x97ff) { int offset = address - 0x8000; - Memory.mainram[offset] = value; + Memory.mainram_Ptr[offset] = value; } } public static byte Z2ReadMemory_tokio(ushort address) @@ -375,7 +375,7 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0x8000 && address <= 0x8fff) { @@ -400,7 +400,7 @@ namespace MAME.Core } else if (address >= 0xe000 && address <= 0xffff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } return result; } @@ -408,7 +408,7 @@ namespace MAME.Core { if (address <= 0x7fff) { - Memory.audiorom[address] = value; + Memory.audiorom_Ptr[address] = value; } else if (address >= 0x8000 && address <= 0x8fff) { @@ -437,7 +437,7 @@ namespace MAME.Core } else if (address >= 0xe000 && address <= 0xffff) { - Memory.audiorom[address] = value; + Memory.audiorom_Ptr[address] = value; } } public static byte Z0ReadOp_bublbobl(ushort address) @@ -445,12 +445,12 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } else if (address >= 0x8000 && address <= 0xbfff) { int offset = address - 0x8000; - result = Memory.mainrom[basebankmain + offset]; + result = Memory.mainrom_Ptr[basebankmain + offset]; } else { @@ -463,12 +463,12 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } else if (address >= 0x8000 && address <= 0xbfff) { int offset = address - 0x8000; - result = Memory.mainrom[basebankmain + offset]; + result = Memory.mainrom_Ptr[basebankmain + offset]; } else if (address >= 0xc000 && address <= 0xdcff) { @@ -483,7 +483,7 @@ namespace MAME.Core else if (address >= 0xe000 && address <= 0xf7ff) { int offset = address - 0xe000; - result = Memory.mainram[offset]; + result = Memory.mainram_Ptr[offset]; } else if (address >= 0xfc00 && address <= 0xffff) { @@ -500,12 +500,12 @@ namespace MAME.Core { if (address >= 0x0000 && address <= 0x7fff) { - Memory.audiorom[address] = value; + Memory.audiorom_Ptr[address] = value; } else if (address >= 0x8000 && address <= 0xbfff) { int offset = address - 0x8000; - Memory.mainrom[basebankmain + offset] = value; + Memory.mainrom_Ptr[basebankmain + offset] = value; } else if (address >= 0xc000 && address <= 0xdcff) { @@ -520,7 +520,7 @@ namespace MAME.Core else if (address >= 0xe000 && address <= 0xf7ff) { int offset = address - 0xe000; - Memory.mainram[offset] = value; + Memory.mainram_Ptr[offset] = value; } else if (address >= 0xf800 && address <= 0xf9ff) { @@ -567,7 +567,7 @@ namespace MAME.Core else if (address >= 0xe000 && address <= 0xf7ff) { int offset = address - 0xe000; - result = Memory.mainram[offset]; + result = Memory.mainram_Ptr[offset]; } return result; } @@ -581,7 +581,7 @@ namespace MAME.Core else if (address >= 0xe000 && address <= 0xf7ff) { int offset = address - 0xe000; - result = Memory.mainram[offset]; + result = Memory.mainram_Ptr[offset]; } return result; } @@ -594,7 +594,7 @@ namespace MAME.Core else if (address >= 0xe000 && address <= 0xf7ff) { int offset = address - 0xe000; - Memory.mainram[offset] = value; + Memory.mainram_Ptr[offset] = value; } } public static byte Z1ReadHardware(ushort address) @@ -617,7 +617,7 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0x8000 && address <= 0x8fff) { @@ -631,7 +631,7 @@ namespace MAME.Core byte result = 0; if (address <= 0x7fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0x8000 && address <= 0x8fff) { @@ -656,7 +656,7 @@ namespace MAME.Core } else if (address >= 0xe000 && address <= 0xffff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } return result; } @@ -664,7 +664,7 @@ namespace MAME.Core { if (address <= 0x7fff) { - Memory.audiorom[address] = value; + Memory.audiorom_Ptr[address] = value; } else if (address >= 0x8000 && address <= 0x8fff) { @@ -697,7 +697,7 @@ namespace MAME.Core } else if (address >= 0xe000 && address <= 0xffff) { - Memory.audiorom[address] = value; + Memory.audiorom_Ptr[address] = value; } } public static byte Z2ReadHardware(ushort address) @@ -896,9 +896,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -914,9 +914,9 @@ namespace MAME.Core int add1; if (address <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -953,7 +953,7 @@ namespace MAME.Core else if (address >= 0x100000 && address <= 0x107fff) { int offset = address - 0x100000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } else if (address >= 0x200000 && address <= 0x200fff) { @@ -1038,9 +1038,9 @@ namespace MAME.Core short result = 0; if (address <= 0x03ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -1056,9 +1056,9 @@ namespace MAME.Core int add1; if (address <= 0x03ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -1081,7 +1081,7 @@ namespace MAME.Core else if (address >= 0x100000 && address + 1 <= 0x107fff) { int offset = address - 0x100000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } else if (address >= 0x200000 && address + 1 <= 0x200fff) { @@ -1124,9 +1124,9 @@ namespace MAME.Core int result = 0; if (address <= 0x03ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -1142,10 +1142,10 @@ namespace MAME.Core int add1; if (address <= 0x03ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { int offset = (address - 0x000000) / 2; - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -1164,7 +1164,7 @@ namespace MAME.Core else if (address >= 0x100000 && address + 3 <= 0x107fff) { int offset = address - 0x100000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } else if (address >= 0x200000 && address + 3 <= 0x200fff) { @@ -1198,9 +1198,9 @@ namespace MAME.Core address &= 0xffffff; if (address >= 0x000000 && address <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - Memory.mainrom[address] = (byte)value; + Memory.mainrom_Ptr[address] = (byte)value; } } else if (address >= 0x0ff000 && address <= 0x0ff7ff) @@ -1229,7 +1229,7 @@ namespace MAME.Core else if (address >= 0x100000 && address <= 0x107fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)value; } else if (address >= 0x200000 && address <= 0x200fff) { @@ -1340,10 +1340,10 @@ namespace MAME.Core address &= 0xffffff; if (address >= 0x000000 && address + 1 <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - Memory.mainrom[address] = (byte)(value >> 8); - Memory.mainrom[address + 1] = (byte)value; + Memory.mainrom_Ptr[address] = (byte)(value >> 8); + Memory.mainrom_Ptr[address + 1] = (byte)value; } } else if (address >= 0x0ff000 && address + 1 <= 0x0ff7ff) @@ -1362,8 +1362,8 @@ namespace MAME.Core else if (address >= 0x100000 && address + 1 <= 0x107fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)(value >> 8); - Memory.mainram[offset + 1] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 1] = (byte)value; } else if (address >= 0x200000 && address + 1 <= 0x200fff) { @@ -1424,12 +1424,12 @@ namespace MAME.Core address &= 0xffffff; if (address >= 0x000000 && address + 3 <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - Memory.mainrom[address] = (byte)(value >> 24); - Memory.mainrom[address + 1] = (byte)(value >> 16); - Memory.mainrom[address + 2] = (byte)(value >> 8); - Memory.mainrom[address + 3] = (byte)value; + Memory.mainrom_Ptr[address] = (byte)(value >> 24); + Memory.mainrom_Ptr[address + 1] = (byte)(value >> 16); + Memory.mainrom_Ptr[address + 2] = (byte)(value >> 8); + Memory.mainrom_Ptr[address + 3] = (byte)value; } } else if (address >= 0x0ff000 && address + 3 <= 0x0ff7ff) @@ -1441,10 +1441,10 @@ namespace MAME.Core else if (address >= 0x100000 && address + 3 <= 0x107fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)(value >> 24); - Memory.mainram[offset + 1] = (byte)(value >> 16); - Memory.mainram[offset + 2] = (byte)(value >> 8); - Memory.mainram[offset + 3] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 24); + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[offset + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 3] = (byte)value; } else if (address >= 0x200000 && address + 3 <= 0x200fff) { @@ -1483,9 +1483,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -1519,7 +1519,7 @@ namespace MAME.Core else if (address >= 0x100000 && address <= 0x107fff) { int offset = address - 0x100000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } else if (address >= 0x200000 && address <= 0x200fff) { @@ -1604,9 +1604,9 @@ namespace MAME.Core short result = 0; if (address <= 0x03ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -1621,9 +1621,9 @@ namespace MAME.Core short result = 0; if (address <= 0x03ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -1643,7 +1643,7 @@ namespace MAME.Core else if (address >= 0x100000 && address + 1 <= 0x107fff) { int offset = address - 0x100000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } else if (address >= 0x200000 && address + 1 <= 0x200fff) { @@ -1686,9 +1686,9 @@ namespace MAME.Core int result = 0; if (address <= 0x03ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -1703,10 +1703,10 @@ namespace MAME.Core int result = 0; if (address <= 0x03ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { int offset = (address - 0x000000) / 2; - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -1726,7 +1726,7 @@ namespace MAME.Core else if (address >= 0x100000 && address + 3 <= 0x107fff) { int offset = address - 0x100000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } else if (address >= 0x200000 && address + 3 <= 0x200fff) { @@ -1760,9 +1760,9 @@ namespace MAME.Core address &= 0xffffff; if (address >= 0x000000 && address <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - Memory.mainrom[address] = (byte)value; + Memory.mainrom_Ptr[address] = (byte)value; } } else if (address >= 0x0ff000 && address <= 0x0fffff) @@ -1780,7 +1780,7 @@ namespace MAME.Core else if (address >= 0x100000 && address <= 0x107fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)value; } else if (address >= 0x200000 && address <= 0x200fff) { @@ -1891,10 +1891,10 @@ namespace MAME.Core address &= 0xffffff; if (address >= 0x000000 && address + 1 <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - Memory.mainrom[address] = (byte)(value >> 8); - Memory.mainrom[address + 1] = (byte)value; + Memory.mainrom_Ptr[address] = (byte)(value >> 8); + Memory.mainrom_Ptr[address + 1] = (byte)value; } } else if (address >= 0x0ff000 && address + 1 <= 0x0fffff) @@ -1905,8 +1905,8 @@ namespace MAME.Core else if (address >= 0x100000 && address + 1 <= 0x107fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)(value >> 8); - Memory.mainram[offset + 1] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 1] = (byte)value; } else if (address >= 0x200000 && address + 1 <= 0x200fff) { @@ -1967,12 +1967,12 @@ namespace MAME.Core address &= 0xffffff; if (address >= 0x000000 && address + 3 <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - Memory.mainrom[address] = (byte)(value >> 24); - Memory.mainrom[address + 1] = (byte)(value >> 16); - Memory.mainrom[address + 2] = (byte)(value >> 8); - Memory.mainrom[address + 3] = (byte)value; + Memory.mainrom_Ptr[address] = (byte)(value >> 24); + Memory.mainrom_Ptr[address + 1] = (byte)(value >> 16); + Memory.mainrom_Ptr[address + 2] = (byte)(value >> 8); + Memory.mainrom_Ptr[address + 3] = (byte)value; } } else if (address >= 0x0ff000 && address + 3 <= 0x0fffff) @@ -1984,10 +1984,10 @@ namespace MAME.Core else if (address >= 0x100000 && address + 3 <= 0x107fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)(value >> 24); - Memory.mainram[offset + 1] = (byte)(value >> 16); - Memory.mainram[offset + 2] = (byte)(value >> 8); - Memory.mainram[offset + 3] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 24); + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[offset + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 3] = (byte)value; } else if (address >= 0x200000 && address + 3 <= 0x200fff) { @@ -2026,9 +2026,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else { @@ -2038,7 +2038,7 @@ namespace MAME.Core else if (address >= 0x100000 && address <= 0x107fff) { int offset = address - 0x100000; - result = (sbyte)Memory.mainram[offset]; + result = (sbyte)Memory.mainram_Ptr[offset]; } else if (address >= 0x200000 && address <= 0x200fff) { @@ -2123,9 +2123,9 @@ namespace MAME.Core short result = 0; if (address <= 0x03ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -2135,7 +2135,7 @@ namespace MAME.Core else if (address >= 0x100000 && address + 1 <= 0x107fff) { int offset = address - 0x100000; - result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]); + result = (short)(Memory.mainram_Ptr[offset] * 0x100 + Memory.mainram_Ptr[offset + 1]); } else if (address >= 0x200000 && address + 1 <= 0x200fff) { @@ -2178,10 +2178,10 @@ namespace MAME.Core int result = 0; if (address <= 0x03ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { int offset = (address - 0x000000) / 2; - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -2191,7 +2191,7 @@ namespace MAME.Core else if (address >= 0x100000 && address + 3 <= 0x107fff) { int offset = address - 0x100000; - result = (int)(Memory.mainram[offset] * 0x1000000 + Memory.mainram[offset + 1] * 0x10000 + Memory.mainram[offset + 2] * 0x100 + Memory.mainram[offset + 3]); + result = (int)(Memory.mainram_Ptr[offset] * 0x1000000 + Memory.mainram_Ptr[offset + 1] * 0x10000 + Memory.mainram_Ptr[offset + 2] * 0x100 + Memory.mainram_Ptr[offset + 3]); } else if (address >= 0x200000 && address + 3 <= 0x200fff) { @@ -2225,15 +2225,15 @@ namespace MAME.Core address &= 0xffffff; if (address >= 0x000000 && address <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - Memory.mainrom[address] = (byte)value; + Memory.mainrom_Ptr[address] = (byte)value; } } else if (address >= 0x100000 && address <= 0x107fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)value; } else if (address >= 0x200000 && address <= 0x200fff) { @@ -2344,17 +2344,17 @@ namespace MAME.Core address &= 0xffffff; if (address >= 0x000000 && address + 1 <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - Memory.mainrom[address] = (byte)(value >> 8); - Memory.mainrom[address + 1] = (byte)value; + Memory.mainrom_Ptr[address] = (byte)(value >> 8); + Memory.mainrom_Ptr[address + 1] = (byte)value; } } else if (address >= 0x100000 && address + 1 <= 0x107fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)(value >> 8); - Memory.mainram[offset + 1] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 1] = (byte)value; } else if (address >= 0x200000 && address + 1 <= 0x200fff) { @@ -2415,21 +2415,21 @@ namespace MAME.Core address &= 0xffffff; if (address >= 0x000000 && address + 3 <= 0x03ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - Memory.mainrom[address] = (byte)(value >> 24); - Memory.mainrom[address + 1] = (byte)(value >> 16); - Memory.mainrom[address + 2] = (byte)(value >> 8); - Memory.mainrom[address + 3] = (byte)value; + Memory.mainrom_Ptr[address] = (byte)(value >> 24); + Memory.mainrom_Ptr[address + 1] = (byte)(value >> 16); + Memory.mainrom_Ptr[address + 2] = (byte)(value >> 8); + Memory.mainrom_Ptr[address + 3] = (byte)value; } } else if (address >= 0x100000 && address + 3 <= 0x107fff) { int offset = address - 0x100000; - Memory.mainram[offset] = (byte)(value >> 24); - Memory.mainram[offset + 1] = (byte)(value >> 16); - Memory.mainram[offset + 2] = (byte)(value >> 8); - Memory.mainram[offset + 3] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 24); + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[offset + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 3] = (byte)value; } else if (address >= 0x200000 && address + 3 <= 0x200fff) { @@ -2467,12 +2467,12 @@ namespace MAME.Core byte result = 0; if (address <= 0x3fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0x4000 && address <= 0x7fff) { int offset = address - 0x4000; - result = Memory.audiorom[basebanksnd + offset]; + result = Memory.audiorom_Ptr[basebanksnd + offset]; } return result; } @@ -2481,12 +2481,12 @@ namespace MAME.Core byte result = 0; if (address <= 0x3fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0x4000 && address <= 0x7fff) { int offset = address - 0x4000; - result = Memory.audiorom[basebanksnd + offset]; + result = Memory.audiorom_Ptr[basebanksnd + offset]; } else if (address >= 0x8000 && address <= 0x8fff) { @@ -2512,12 +2512,12 @@ namespace MAME.Core { if (address <= 0x3fff) { - Memory.audiorom[address] = value; + Memory.audiorom_Ptr[address] = value; } else if (address >= 0x4000 && address <= 0x7fff) { int offset = address - 0x4000; - Memory.audiorom[basebanksnd + offset] = value; + Memory.audiorom_Ptr[basebanksnd + offset] = value; } else if (address >= 0x8000 && address <= 0x8fff) { diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/taito/Opwolf.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/taito/Opwolf.cs index 9d7ac45..7a2a4d4 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/taito/Opwolf.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/taito/Opwolf.cs @@ -2,7 +2,7 @@ namespace MAME.Core { - public partial class Taito + public unsafe partial class Taito { public static int opwolf_region; public static byte[] cchip_ram, adpcmrom; @@ -700,8 +700,8 @@ namespace MAME.Core { if (coin_table[slot] != 0) { - cchip_coins_for_credit[slot] = (byte)((Memory.mainrom[(coin_table[slot] + coin_offset[slot] + 0) / 2 * 2] * 0x100 + Memory.mainrom[(coin_table[slot] + coin_offset[slot] + 0) / 2 * 2 + 1]) & 0xff); - cchip_credits_for_coin[slot] = (byte)((Memory.mainrom[(coin_table[slot] + coin_offset[slot] + 2) / 2 * 2] * 0x100 + Memory.mainrom[(coin_table[slot] + coin_offset[slot] + 2) / 2 * 2 + 1]) & 0xff); + cchip_coins_for_credit[slot] = (byte)((Memory.mainrom_Ptr[(coin_table[slot] + coin_offset[slot] + 0) / 2 * 2] * 0x100 + Memory.mainrom_Ptr[(coin_table[slot] + coin_offset[slot] + 0) / 2 * 2 + 1]) & 0xff); + cchip_credits_for_coin[slot] = (byte)((Memory.mainrom_Ptr[(coin_table[slot] + coin_offset[slot] + 2) / 2 * 2] * 0x100 + Memory.mainrom_Ptr[(coin_table[slot] + coin_offset[slot] + 2) / 2 * 2 + 1]) & 0xff); } } } @@ -741,8 +741,8 @@ namespace MAME.Core { if (coin_table[slot] != 0) { - cchip_coins_for_credit[slot] = (byte)((Memory.mainrom[(coin_table[slot] + coin_offset[slot] + 0) / 2 * 2] * 0x100 + Memory.mainrom[(coin_table[slot] + coin_offset[slot] + 0) / 2 * 2 + 1]) & 0xff); - cchip_credits_for_coin[slot] = (byte)((Memory.mainrom[(coin_table[slot] + coin_offset[slot] + 2) / 2 * 2] * 0x100 + Memory.mainrom[(coin_table[slot] + coin_offset[slot] + 2) / 2 * 2 + 1]) & 0xff); + cchip_coins_for_credit[slot] = (byte)((Memory.mainrom_Ptr[(coin_table[slot] + coin_offset[slot] + 0) / 2 * 2] * 0x100 + Memory.mainrom_Ptr[(coin_table[slot] + coin_offset[slot] + 0) / 2 * 2 + 1]) & 0xff); + cchip_credits_for_coin[slot] = (byte)((Memory.mainrom_Ptr[(coin_table[slot] + coin_offset[slot] + 2) / 2 * 2] * 0x100 + Memory.mainrom_Ptr[(coin_table[slot] + coin_offset[slot] + 2) / 2 * 2 + 1]) & 0xff); } } } diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/taito/State.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/taito/State.cs index 36d4dc6..a29b0da 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/taito/State.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/taito/State.cs @@ -6,7 +6,7 @@ using System.IO; namespace MAME.Core { - public partial class Taito + public unsafe partial class Taito { public static void SaveStateBinary_tokio(BinaryWriter writer) { @@ -25,7 +25,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x1800); + writer.Write(Memory.mainram_Ptr, 0, 0x1800); writer.Write(Memory.audioram, 0, 0x1000); for (i = 0; i < 3; i++) { @@ -74,7 +74,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x1800); + Memory.Set_mainram(reader.ReadBytes(0x1800)); Memory.audioram = reader.ReadBytes(0x1000); for (i = 0; i < 3; i++) { @@ -133,7 +133,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x1800); + writer.Write(Memory.mainram_Ptr, 0, 0x1800); writer.Write(Memory.audioram, 0, 0x1000); writer.Write(mcuram, 0, 0xc0); for (i = 0; i < 3; i++) @@ -197,7 +197,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x1800); + Memory.Set_mainram(reader.ReadBytes(0x1800)); Memory.audioram = reader.ReadBytes(0x1000); mcuram = reader.ReadBytes(0xc0); for (i = 0; i < 3; i++) @@ -250,7 +250,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x1800); + writer.Write(Memory.mainram_Ptr, 0, 0x1800); writer.Write(mainram2, 0, 0x100); writer.Write(mainram3, 0, 0x100); writer.Write(Memory.audioram, 0, 0x1000); @@ -304,7 +304,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x1800); + Memory.Set_mainram(reader.ReadBytes(0x1800)); mainram2 = reader.ReadBytes(0x100); mainram3 = reader.ReadBytes(0x100); Memory.audioram = reader.ReadBytes(0x1000); @@ -362,7 +362,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x1800); + writer.Write(Memory.mainram_Ptr, 0, 0x1800); writer.Write(Memory.audioram, 0, 0x1000); writer.Write(mcuram, 0, 0xc0); for (i = 0; i < 3; i++) @@ -420,7 +420,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x1800); + Memory.Set_mainram(reader.ReadBytes(0x1800)); Memory.audioram = reader.ReadBytes(0x1000); mcuram = reader.ReadBytes(0xc0); for (i = 0; i < 3; i++) @@ -565,7 +565,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x8000); + writer.Write(Memory.mainram_Ptr, 0, 0x8000); writer.Write(mainram2, 0, 0x10000); MC68000.m1.SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x1000); @@ -702,7 +702,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x8000); + Memory.Set_mainram(reader.ReadBytes(0x8000)); mainram2 = reader.ReadBytes(0x10000); MC68000.m1.LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x1000); diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/taito/Taito.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/taito/Taito.cs index 022c905..04aa3fa 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/taito/Taito.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/taito/Taito.cs @@ -18,13 +18,14 @@ namespace MAME.Core case "tokiob": videoram = new byte[0x1d00]; bublbobl_objectram = new byte[0x300]; - Memory.mainram = new byte[0x1800]; + Memory.Set_mainram(new byte[0x1800]); Memory.audioram = new byte[0x1000]; Generic.paletteram = new byte[0x200]; //bublbobl_mcu_sharedram = new byte[0x400]; - Memory.mainrom = Machine.GetRom("maincpu.rom"); + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); slaverom = Machine.GetRom("slave.rom"); - Memory.audiorom = Machine.GetRom("audiocpu.rom"); + Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); + //Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); gfx12rom = Machine.GetRom("gfx1.rom"); n = gfx12rom.Length; gfx1rom = new byte[n * 2]; @@ -35,7 +36,7 @@ namespace MAME.Core } prom = Machine.GetRom("proms.rom"); bublbobl_video_enable = 1; - if (Memory.mainrom == null || slaverom == null || Memory.audiorom == null || gfx1rom == null || prom == null) + if (Memory.mainrom_IsNull || slaverom == null || Memory.audiorom_IsNull || gfx1rom == null || prom == null) { Machine.bRom = false; } @@ -55,14 +56,15 @@ namespace MAME.Core case "bublcave10": videoram = new byte[0x1d00]; bublbobl_objectram = new byte[0x300]; - Memory.mainram = new byte[0x1800]; + Memory.Set_mainram(new byte[0x1800]); Memory.audioram = new byte[0x1000]; mcuram = new byte[0xc0]; Generic.paletteram = new byte[0x200]; bublbobl_mcu_sharedram = new byte[0x400]; - Memory.mainrom = Machine.GetRom("maincpu.rom"); + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); slaverom = Machine.GetRom("slave.rom"); - Memory.audiorom = Machine.GetRom("audiocpu.rom"); + //Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); + Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); mcurom = Machine.GetRom("mcu.rom"); gfx12rom = Machine.GetRom("gfx1.rom"); n = gfx12rom.Length; @@ -74,7 +76,7 @@ namespace MAME.Core } prom = Machine.GetRom("proms.rom"); bublbobl_video_enable = 0; - if (Memory.mainrom == null || slaverom == null || Memory.audiorom == null || mcurom == null || gfx1rom == null || prom == null) + if (Memory.mainrom_IsNull || slaverom == null || Memory.audiorom_IsNull || mcurom == null || gfx1rom == null || prom == null) { Machine.bRom = false; } @@ -96,12 +98,13 @@ namespace MAME.Core mainram3 = new byte[0x100]; videoram = new byte[0x1d00]; bublbobl_objectram = new byte[0x300]; - Memory.mainram = new byte[0x1800]; + Memory.Set_mainram(new byte[0x1800]); Memory.audioram = new byte[0x1000]; Generic.paletteram = new byte[0x200]; - Memory.mainrom = Machine.GetRom("maincpu.rom"); + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); slaverom = Machine.GetRom("slave.rom"); - Memory.audiorom = Machine.GetRom("audiocpu.rom"); + //Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); + Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); gfx12rom = Machine.GetRom("gfx1.rom"); n = gfx12rom.Length; gfx1rom = new byte[n * 2]; @@ -112,7 +115,7 @@ namespace MAME.Core } prom = Machine.GetRom("proms.rom"); bublbobl_video_enable = 0; - if (Memory.mainrom == null || slaverom == null || Memory.audiorom == null || gfx1rom == null || prom == null) + if (Memory.mainrom_IsNull || slaverom == null || Memory.audiorom_IsNull || gfx1rom == null || prom == null) { Machine.bRom = false; } @@ -128,12 +131,13 @@ namespace MAME.Core mainram3 = new byte[0x100]; videoram = new byte[0x1d00]; bublbobl_objectram = new byte[0x300]; - Memory.mainram = new byte[0x1800]; + Memory.Set_mainram(new byte[0x1800]); Memory.audioram = new byte[0x1000]; Generic.paletteram = new byte[0x200]; - Memory.mainrom = Machine.GetRom("maincpu.rom"); + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); slaverom = Machine.GetRom("slave.rom"); - Memory.audiorom = Machine.GetRom("audiocpu.rom"); + //Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); + Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); gfx12rom = Machine.GetRom("gfx1.rom"); n = gfx12rom.Length; gfx1rom = new byte[n * 2]; @@ -144,7 +148,7 @@ namespace MAME.Core } prom = Machine.GetRom("proms.rom"); bublbobl_video_enable = 0; - if (Memory.mainrom == null || slaverom == null || Memory.audiorom == null || gfx1rom == null || prom == null) + if (Memory.mainrom_IsNull || slaverom == null || Memory.audiorom_IsNull || gfx1rom == null || prom == null) { Machine.bRom = false; } @@ -158,118 +162,137 @@ namespace MAME.Core case "opwolfa": case "opwolfj": case "opwolfu": - mainram2 = new byte[0x10000]; - cchip_ram = new byte[0x2000]; - Generic.paletteram16 = new ushort[0x800]; - Memory.mainram = new byte[0x8000]; - Memory.audioram = new byte[0x1000]; - Memory.mainrom = Machine.GetRom("maincpu.rom"); - bb1 = Machine.GetRom("audiocpu.rom"); - Memory.audiorom = new byte[0x20000]; - Array.Copy(bb1, 0, Memory.audiorom, 0, 0x10000); - gfx12rom = Machine.GetRom("gfx1.rom"); - n = gfx12rom.Length; - gfx1rom = new byte[n * 2]; - for (i = 0; i < n; i++) { - gfx1rom[i * 2] = (byte)(gfx12rom[i] >> 4); - gfx1rom[i * 2 + 1] = (byte)(gfx12rom[i] & 0x0f); - } - gfx22rom = Machine.GetRom("gfx2.rom"); - n = gfx22rom.Length; - gfx2rom = new byte[n * 2]; - for (i = 0; i < n; i++) - { - gfx2rom[i * 2] = (byte)(gfx22rom[i] >> 4); - gfx2rom[i * 2 + 1] = (byte)(gfx22rom[i] & 0x0f); - } - adpcmrom = Machine.GetRom("adpcm.rom"); - Taitosnd.taitosnd_start(); - if (Memory.mainrom == null || Memory.audiorom == null || gfx1rom == null || gfx2rom == null || adpcmrom == null) - { - Machine.bRom = false; - } - if (Machine.bRom) - { - dswa = 0xff; - dswb = 0x7f; + mainram2 = new byte[0x10000]; + cchip_ram = new byte[0x2000]; + Generic.paletteram16 = new ushort[0x800]; + Memory.Set_mainram(new byte[0x8000]); + Memory.audioram = new byte[0x1000]; + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); + bb1 = Machine.GetRom("audiocpu.rom"); + //Memory.audiorom = new byte[0x20000]; + //Array.Copy(bb1, 0, Memory.audiorom, 0, 0x10000); + byte[] temprom = new byte[0x20000]; + Array.Copy(bb1, 0, temprom, 0, 0x10000); + Memory.Set_audiorom(temprom); + + gfx12rom = Machine.GetRom("gfx1.rom"); + n = gfx12rom.Length; + gfx1rom = new byte[n * 2]; + for (i = 0; i < n; i++) + { + gfx1rom[i * 2] = (byte)(gfx12rom[i] >> 4); + gfx1rom[i * 2 + 1] = (byte)(gfx12rom[i] & 0x0f); + } + gfx22rom = Machine.GetRom("gfx2.rom"); + n = gfx22rom.Length; + gfx2rom = new byte[n * 2]; + for (i = 0; i < n; i++) + { + gfx2rom[i * 2] = (byte)(gfx22rom[i] >> 4); + gfx2rom[i * 2 + 1] = (byte)(gfx22rom[i] & 0x0f); + } + adpcmrom = Machine.GetRom("adpcm.rom"); + Taitosnd.taitosnd_start(); + if (Memory.mainrom_IsNull || Memory.audiorom_IsNull || gfx1rom == null || gfx2rom == null || adpcmrom == null) + { + Machine.bRom = false; + } + if (Machine.bRom) + { + dswa = 0xff; + dswb = 0x7f; + } } break; case "opwolfb": - mainram2 = new byte[0x10000]; - cchip_ram = new byte[0x2000]; - Generic.paletteram16 = new ushort[0x800]; - Memory.mainram = new byte[0x8000]; - Memory.audioram = new byte[0x1000]; - Memory.mainrom = Machine.GetRom("maincpu.rom"); - bb1 = Machine.GetRom("audiocpu.rom"); - Memory.audiorom = new byte[0x20000]; - Array.Copy(bb1, 0, Memory.audiorom, 0, 0x10000); - subrom = Machine.GetRom("sub.rom"); - gfx12rom = Machine.GetRom("gfx1.rom"); - n = gfx12rom.Length; - gfx1rom = new byte[n * 2]; - for (i = 0; i < n; i++) { - gfx1rom[i * 2] = (byte)(gfx12rom[i] >> 4); - gfx1rom[i * 2 + 1] = (byte)(gfx12rom[i] & 0x0f); - } - gfx22rom = Machine.GetRom("gfx2.rom"); - n = gfx22rom.Length; - gfx2rom = new byte[n * 2]; - for (i = 0; i < n; i++) - { - gfx2rom[i * 2] = (byte)(gfx22rom[i] >> 4); - gfx2rom[i * 2 + 1] = (byte)(gfx22rom[i] & 0x0f); - } - adpcmrom = Machine.GetRom("adpcm.rom"); - Taitosnd.taitosnd_start(); - if (Memory.mainrom == null || Memory.audiorom == null || subrom == null || gfx1rom == null || gfx2rom == null || adpcmrom == null) - { - Machine.bRom = false; - } - if (Machine.bRom) - { - dswa = 0xff; - dswb = 0xff; + mainram2 = new byte[0x10000]; + cchip_ram = new byte[0x2000]; + Generic.paletteram16 = new ushort[0x800]; + Memory.Set_mainram(new byte[0x8000]); + Memory.audioram = new byte[0x1000]; + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); + bb1 = Machine.GetRom("audiocpu.rom"); + //Memory.audiorom = new byte[0x20000]; + //Array.Copy(bb1, 0, Memory.audiorom, 0, 0x10000); + byte[] temprom = new byte[0x20000]; + Array.Copy(bb1, 0, temprom, 0, 0x10000); + Memory.Set_audiorom(temprom); + + subrom = Machine.GetRom("sub.rom"); + gfx12rom = Machine.GetRom("gfx1.rom"); + n = gfx12rom.Length; + gfx1rom = new byte[n * 2]; + for (i = 0; i < n; i++) + { + gfx1rom[i * 2] = (byte)(gfx12rom[i] >> 4); + gfx1rom[i * 2 + 1] = (byte)(gfx12rom[i] & 0x0f); + } + gfx22rom = Machine.GetRom("gfx2.rom"); + n = gfx22rom.Length; + gfx2rom = new byte[n * 2]; + for (i = 0; i < n; i++) + { + gfx2rom[i * 2] = (byte)(gfx22rom[i] >> 4); + gfx2rom[i * 2 + 1] = (byte)(gfx22rom[i] & 0x0f); + } + adpcmrom = Machine.GetRom("adpcm.rom"); + Taitosnd.taitosnd_start(); + if (Memory.mainrom_IsNull || Memory.audiorom_IsNull || subrom == null || gfx1rom == null || gfx2rom == null || adpcmrom == null) + { + Machine.bRom = false; + } + if (Machine.bRom) + { + dswa = 0xff; + dswb = 0xff; + } } break; case "opwolfp": - mainram2 = new byte[0x10000]; - cchip_ram = new byte[0x2000]; - Generic.paletteram16 = new ushort[0x800]; - Memory.mainram = new byte[0x8000]; - Memory.audioram = new byte[0x1000]; - Memory.mainrom = Machine.GetRom("maincpu.rom"); - bb1 = Machine.GetRom("audiocpu.rom"); - Memory.audiorom = new byte[0x20000]; - Array.Copy(bb1, 0, Memory.audiorom, 0, 0x10000); - gfx12rom = Machine.GetRom("gfx1.rom"); - n = gfx12rom.Length; - gfx1rom = new byte[n * 2]; - for (i = 0; i < n; i++) { - gfx1rom[i * 2] = (byte)(gfx12rom[i] >> 4); - gfx1rom[i * 2 + 1] = (byte)(gfx12rom[i] & 0x0f); - } - gfx22rom = Machine.GetRom("gfx2.rom"); - n = gfx22rom.Length; - gfx2rom = new byte[n * 2]; - for (i = 0; i < n; i++) - { - gfx2rom[i * 2] = (byte)(gfx22rom[i] >> 4); - gfx2rom[i * 2 + 1] = (byte)(gfx22rom[i] & 0x0f); - } - adpcmrom = Machine.GetRom("adpcm.rom"); - Taitosnd.taitosnd_start(); - if (Memory.mainrom == null || Memory.audiorom == null || gfx1rom == null || gfx2rom == null || adpcmrom == null) - { - Machine.bRom = false; - } - if (Machine.bRom) - { - dswa = 0xff; - dswb = 0xff; + mainram2 = new byte[0x10000]; + cchip_ram = new byte[0x2000]; + Generic.paletteram16 = new ushort[0x800]; + Memory.Set_mainram(new byte[0x8000]); + Memory.audioram = new byte[0x1000]; + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); + bb1 = Machine.GetRom("audiocpu.rom"); + //Memory.audiorom = new byte[0x20000]; + //Array.Copy(bb1, 0, Memory.audiorom, 0, 0x10000); + + byte[] temprom = new byte[0x20000]; + Array.Copy(bb1, 0, temprom, 0, 0x10000); + Memory.Set_audiorom(temprom); + + gfx12rom = Machine.GetRom("gfx1.rom"); + n = gfx12rom.Length; + gfx1rom = new byte[n * 2]; + for (i = 0; i < n; i++) + { + gfx1rom[i * 2] = (byte)(gfx12rom[i] >> 4); + gfx1rom[i * 2 + 1] = (byte)(gfx12rom[i] & 0x0f); + } + gfx22rom = Machine.GetRom("gfx2.rom"); + n = gfx22rom.Length; + gfx2rom = new byte[n * 2]; + for (i = 0; i < n; i++) + { + gfx2rom[i * 2] = (byte)(gfx22rom[i] >> 4); + gfx2rom[i * 2 + 1] = (byte)(gfx22rom[i] & 0x0f); + } + adpcmrom = Machine.GetRom("adpcm.rom"); + Taitosnd.taitosnd_start(); + if (Memory.mainrom_IsNull || Memory.audiorom_IsNull || gfx1rom == null || gfx2rom == null || adpcmrom == null) + { + Machine.bRom = false; + } + if (Machine.bRom) + { + dswa = 0xff; + dswb = 0xff; + } } break; } @@ -282,24 +305,24 @@ namespace MAME.Core { Cpuint.cpunum_set_input_line(2, 0, irq != 0 ? LineState.ASSERT_LINE : LineState.CLEAR_LINE); } - public static void driver_init_opwolf() + public unsafe static void driver_init_opwolf() { - opwolf_region = Memory.mainrom[0x03ffff]; + opwolf_region = Memory.mainrom_Ptr[0x03ffff]; opwolf_cchip_init(); - opwolf_gun_xoffs = 0xec - Memory.mainrom[0x03ffb1]; - opwolf_gun_yoffs = 0x1c - Memory.mainrom[0x03ffaf]; + opwolf_gun_xoffs = 0xec - Memory.mainrom_Ptr[0x03ffb1]; + opwolf_gun_yoffs = 0x1c - Memory.mainrom_Ptr[0x03ffaf]; basebanksnd = 0x10000; } - public static void driver_init_opwolfb() + public unsafe static void driver_init_opwolfb() { - opwolf_region = Memory.mainrom[0x03ffff]; + opwolf_region = Memory.mainrom_Ptr[0x03ffff]; opwolf_gun_xoffs = -2; opwolf_gun_yoffs = 17; basebanksnd = 0x10000; } - public static void driver_init_opwolfp() + public unsafe static void driver_init_opwolfp() { - opwolf_region = Memory.mainrom[0x03ffff]; + opwolf_region = Memory.mainrom_Ptr[0x03ffff]; opwolf_gun_xoffs = 5; opwolf_gun_yoffs = 30; basebanksnd = 0x10000; diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/taitob/Memory.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/taitob/Memory.cs index 523ce2d..3b16cfc 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/taitob/Memory.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/taitob/Memory.cs @@ -2,7 +2,7 @@ namespace MAME.Core { - public partial class Taitob + public unsafe partial class Taitob { public static sbyte sbyte0, sbyte1, sbyte2, sbyte3, sbyte4, sbyte5; public static sbyte sbyte0_old, sbyte1_old, sbyte2_old, sbyte3_old, sbyte4_old, sbyte5_old; @@ -12,7 +12,7 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x07ffff) { - result = (sbyte)(Memory.mainrom[address]); + result = (sbyte)(Memory.mainrom_Ptr[address]); } else if (address >= 0x800000 && address <= 0x801fff) { @@ -28,7 +28,7 @@ namespace MAME.Core } else if (address >= 0x900000 && address <= 0x90ffff) { - result = (sbyte)Memory.mainram[address - 0x900000]; + result = (sbyte)Memory.mainram_Ptr[address - 0x900000]; } return result; } @@ -38,9 +38,9 @@ namespace MAME.Core sbyte result = 0; if (address <= 0x07ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)Memory.mainrom[address]; + result = (sbyte)Memory.mainrom_Ptr[address]; } else { @@ -185,7 +185,7 @@ namespace MAME.Core } else if (address >= 0x900000 && address <= 0x90ffff) { - result = (sbyte)Memory.mainram[address - 0x900000]; + result = (sbyte)Memory.mainram_Ptr[address - 0x900000]; } return result; } @@ -195,9 +195,9 @@ namespace MAME.Core short result = 0; if (address <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -211,7 +211,7 @@ namespace MAME.Core } else if (address >= 0x900000 && address + 1 <= 0x90ffff) { - result = (short)(Memory.mainram[address - 0x900000] * 0x100 + Memory.mainram[address - 0x900000 + 1]); + result = (short)(Memory.mainram_Ptr[address - 0x900000] * 0x100 + Memory.mainram_Ptr[address - 0x900000 + 1]); } return result; } @@ -221,9 +221,9 @@ namespace MAME.Core short result = 0; if (address <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -292,7 +292,7 @@ namespace MAME.Core } else if (address >= 0x900000 && address + 1 <= 0x90ffff) { - result = (short)(Memory.mainram[address - 0x900000] * 0x100 + Memory.mainram[address - 0x900000 + 1]); + result = (short)(Memory.mainram_Ptr[address - 0x900000] * 0x100 + Memory.mainram_Ptr[address - 0x900000 + 1]); } return result; } @@ -302,9 +302,9 @@ namespace MAME.Core int result = 0; if (address <= 0x07ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -318,7 +318,7 @@ namespace MAME.Core } else if (address >= 0x900000 && address + 3 <= 0x90ffff) { - result = (int)(Memory.mainram[address - 0x900000] * 0x1000000 + Memory.mainram[address - 0x900000 + 1] * 0x10000 + Memory.mainram[address - 0x900000 + 2] * 0x100 + Memory.mainram[address - 0x900000 + 3]); + result = (int)(Memory.mainram_Ptr[address - 0x900000] * 0x1000000 + Memory.mainram_Ptr[address - 0x900000 + 1] * 0x10000 + Memory.mainram_Ptr[address - 0x900000 + 2] * 0x100 + Memory.mainram_Ptr[address - 0x900000 + 3]); } return result; } @@ -328,9 +328,9 @@ namespace MAME.Core int result = 0; if (address <= 0x07ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -379,7 +379,7 @@ namespace MAME.Core } else if (address >= 0x900000 && address + 3 <= 0x90ffff) { - result = (int)(Memory.mainram[address - 0x900000] * 0x1000000 + Memory.mainram[address - 0x900000 + 1] * 0x10000 + Memory.mainram[address - 0x900000 + 2] * 0x100 + Memory.mainram[address - 0x900000 + 3]); + result = (int)(Memory.mainram_Ptr[address - 0x900000] * 0x1000000 + Memory.mainram_Ptr[address - 0x900000 + 1] * 0x10000 + Memory.mainram_Ptr[address - 0x900000 + 2] * 0x100 + Memory.mainram_Ptr[address - 0x900000 + 3]); } return result; } @@ -388,9 +388,9 @@ namespace MAME.Core address &= 0xffffff; if (address >= 0x000000 && address <= 0x07ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - Memory.mainrom[address] = (byte)value; + Memory.mainrom_Ptr[address] = (byte)value; } } else if (address >= 0x400000 && address <= 0x40ffff) @@ -515,7 +515,7 @@ namespace MAME.Core else if (address >= 0x900000 && address <= 0x90ffff) { int offset = address - 0x900000; - Memory.mainram[offset] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)value; } } public static void MWriteWord_pbobble(int address, short value) @@ -523,10 +523,10 @@ namespace MAME.Core address &= 0xffffff; if (address >= 0x000000 && address + 1 <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - Memory.mainrom[address] = (byte)(value >> 8); - Memory.mainrom[address + 1] = (byte)value; + Memory.mainrom_Ptr[address] = (byte)(value >> 8); + Memory.mainrom_Ptr[address + 1] = (byte)value; } } else if (address >= 0x400000 && address + 1 <= 0x40ffff) @@ -594,8 +594,8 @@ namespace MAME.Core else if (address >= 0x900000 && address + 1 <= 0x90ffff) { int offset = address - 0x900000; - Memory.mainram[offset] = (byte)(value >> 8); - Memory.mainram[offset + 1] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 1] = (byte)value; } } public static void MWriteLong_pbobble(int address, int value) @@ -603,12 +603,12 @@ namespace MAME.Core address &= 0xffffff; if (address >= 0x000000 && address + 3 <= 0x07ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - Memory.mainrom[address] = (byte)(value >> 24); - Memory.mainrom[address + 1] = (byte)(value >> 16); - Memory.mainrom[address + 2] = (byte)(value >> 8); - Memory.mainrom[address + 3] = (byte)value; + Memory.mainrom_Ptr[address] = (byte)(value >> 24); + Memory.mainrom_Ptr[address + 1] = (byte)(value >> 16); + Memory.mainrom_Ptr[address + 2] = (byte)(value >> 8); + Memory.mainrom_Ptr[address + 3] = (byte)value; } } else if (address >= 0x400000 && address + 3 <= 0x40ffff) @@ -670,10 +670,10 @@ namespace MAME.Core else if (address >= 0x900000 && address + 3 <= 0x90ffff) { int offset = address - 0x900000; - Memory.mainram[offset] = (byte)(value >> 24); - Memory.mainram[offset + 1] = (byte)(value >> 16); - Memory.mainram[offset + 2] = (byte)(value >> 8); - Memory.mainram[offset + 3] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 24); + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[offset + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 3] = (byte)value; } } public static byte ZReadOp(ushort address) @@ -681,7 +681,7 @@ namespace MAME.Core byte result = 0; if (address <= 0x3fff) { - result = Memory.audiorom[address & 0x7fff]; + result = Memory.audiorom_Ptr[address & 0x7fff]; } else { @@ -694,11 +694,11 @@ namespace MAME.Core byte result = 0; if (address <= 0x3fff) { - result = Memory.audiorom[address & 0x7fff]; + result = Memory.audiorom_Ptr[address & 0x7fff]; } else if (address >= 0x4000 && address <= 0x7fff) { - result = Memory.audiorom[basebanksnd + (address & 0x3fff)]; + result = Memory.audiorom_Ptr[basebanksnd + (address & 0x3fff)]; } else if (address >= 0xc000 && address <= 0xdfff) { @@ -734,7 +734,7 @@ namespace MAME.Core { if (address <= 0x7fff) { - Memory.audiorom[address] = value; + Memory.audiorom_Ptr[address] = value; } else if (address >= 0xc000 && address <= 0xdfff) { diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/taitob/Memory2.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/taitob/Memory2.cs index 1373c8c..b2c2b4a 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/taitob/Memory2.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/taitob/Memory2.cs @@ -1,6 +1,6 @@ namespace MAME.Core { - public partial class Taitob + public unsafe partial class Taitob { public static sbyte MReadOpByte_silentd(int address) { @@ -8,9 +8,9 @@ sbyte result = 0; if (address <= 0x07ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)Memory.mainrom[address]; + result = (sbyte)Memory.mainrom_Ptr[address]; } else { @@ -31,7 +31,7 @@ } else if (address >= 0x400000 && address <= 0x403fff) { - result = (sbyte)Memory.mainram[address - 0x400000]; + result = (sbyte)Memory.mainram_Ptr[address - 0x400000]; } return result; } @@ -41,9 +41,9 @@ sbyte result = 0; if (address <= 0x07ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - result = (sbyte)Memory.mainrom[address]; + result = (sbyte)Memory.mainrom_Ptr[address]; } else { @@ -124,7 +124,7 @@ } else if (address >= 0x400000 && address <= 0x403fff) { - result = (sbyte)Memory.mainram[address - 0x400000]; + result = (sbyte)Memory.mainram_Ptr[address - 0x400000]; } else if (address >= 0x500000 && address <= 0x50ffff) { @@ -198,9 +198,9 @@ short result = 0; if (address <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -214,7 +214,7 @@ } else if (address >= 0x400000 && address + 1 <= 0x403fff) { - result = (short)(Memory.mainram[address - 0x400000] * 0x100 + Memory.mainram[address - 0x400000 + 1]); + result = (short)(Memory.mainram_Ptr[address - 0x400000] * 0x100 + Memory.mainram_Ptr[address - 0x400000 + 1]); } return result; } @@ -224,9 +224,9 @@ short result = 0; if (address <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - result = (short)(Memory.mainrom[address] * 0x100 + Memory.mainrom[address + 1]); + result = (short)(Memory.mainrom_Ptr[address] * 0x100 + Memory.mainrom_Ptr[address + 1]); } else { @@ -265,7 +265,7 @@ } else if (address >= 0x400000 && address + 1 <= 0x403fff) { - result = (short)(Memory.mainram[address - 0x400000] * 0x100 + Memory.mainram[address - 0x400000 + 1]); + result = (short)(Memory.mainram_Ptr[address - 0x400000] * 0x100 + Memory.mainram_Ptr[address - 0x400000 + 1]); } else if (address >= 0x500000 && address + 1 <= 0x50ffff) { @@ -304,9 +304,9 @@ int result = 0; if (address <= 0x07ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -320,7 +320,7 @@ } else if (address >= 0x400000 && address + 3 <= 0x403fff) { - result = (int)(Memory.mainram[address - 0x400000] * 0x1000000 + Memory.mainram[address - 0x400000 + 1] * 0x10000 + Memory.mainram[address - 0x400000 + 2] * 0x100 + Memory.mainram[address - 0x400000 + 3]); + result = (int)(Memory.mainram_Ptr[address - 0x400000] * 0x1000000 + Memory.mainram_Ptr[address - 0x400000 + 1] * 0x10000 + Memory.mainram_Ptr[address - 0x400000 + 2] * 0x100 + Memory.mainram_Ptr[address - 0x400000 + 3]); } return result; } @@ -330,9 +330,9 @@ int result = 0; if (address <= 0x07ffff) { - if (address + 3 < Memory.mainrom.Length) + if (address + 3 < Memory.mainrom_Lenght) { - result = (int)(Memory.mainrom[address] * 0x1000000 + Memory.mainrom[address + 1] * 0x10000 + Memory.mainrom[address + 2] * 0x100 + Memory.mainrom[address + 3]); + result = (int)(Memory.mainrom_Ptr[address] * 0x1000000 + Memory.mainrom_Ptr[address + 1] * 0x10000 + Memory.mainrom_Ptr[address + 2] * 0x100 + Memory.mainrom_Ptr[address + 3]); } else { @@ -351,7 +351,7 @@ } else if (address >= 0x400000 && address + 1 <= 0x403fff) { - result = (int)(Memory.mainram[address - 0x400000] * 0x1000000 + Memory.mainram[address - 0x400000 + 1] * 0x10000 + Memory.mainram[address - 0x400000 + 2] * 0x100 + Memory.mainram[address - 0x400000 + 3]); + result = (int)(Memory.mainram_Ptr[address - 0x400000] * 0x1000000 + Memory.mainram_Ptr[address - 0x400000 + 1] * 0x10000 + Memory.mainram_Ptr[address - 0x400000 + 2] * 0x100 + Memory.mainram_Ptr[address - 0x400000 + 3]); } else if (address >= 0x500000 && address + 1 <= 0x50ffff) { @@ -389,9 +389,9 @@ address &= 0xffffff; if (address >= 0x000000 && address <= 0x07ffff) { - if (address < Memory.mainrom.Length) + if (address < Memory.mainrom_Lenght) { - Memory.mainrom[address] = (byte)value; + Memory.mainrom_Ptr[address] = (byte)value; } } else if (address >= 0x100000 && address <= 0x100001) @@ -432,7 +432,7 @@ else if (address >= 0x400000 && address <= 0x403fff) { int offset = address - 0x400000; - Memory.mainram[offset] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)value; } else if (address >= 0x500000 && address <= 0x50ffff) { @@ -505,10 +505,10 @@ address &= 0xffffff; if (address >= 0x000000 && address + 1 <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - Memory.mainrom[address] = (byte)(value >> 8); - Memory.mainrom[address + 1] = (byte)value; + Memory.mainrom_Ptr[address] = (byte)(value >> 8); + Memory.mainrom_Ptr[address + 1] = (byte)value; } } else if (address >= 0x100000 && address + 1 <= 0x100001) @@ -536,8 +536,8 @@ else if (address >= 0x400000 && address + 1 <= 0x403fff) { int offset = address - 0x400000; - Memory.mainram[offset] = (byte)(value >> 8); - Memory.mainram[offset + 1] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 1] = (byte)value; } else if (address >= 0x500000 && address + 1 <= 0x50ffff) { @@ -576,12 +576,12 @@ address &= 0xffffff; if (address >= 0x000000 && address + 3 <= 0x07ffff) { - if (address + 1 < Memory.mainrom.Length) + if (address + 1 < Memory.mainrom_Lenght) { - Memory.mainrom[address] = (byte)(value >> 24); - Memory.mainrom[address + 1] = (byte)(value >> 16); - Memory.mainrom[address + 2] = (byte)(value >> 8); - Memory.mainrom[address + 3] = (byte)value; + Memory.mainrom_Ptr[address] = (byte)(value >> 24); + Memory.mainrom_Ptr[address + 1] = (byte)(value >> 16); + Memory.mainrom_Ptr[address + 2] = (byte)(value >> 8); + Memory.mainrom_Ptr[address + 3] = (byte)value; } } else if (address >= 0x200000 && address + 3 <= 0x20000f) @@ -599,10 +599,10 @@ else if (address >= 0x400000 && address + 3 <= 0x403fff) { int offset = address - 0x400000; - Memory.mainram[offset] = (byte)(value >> 24); - Memory.mainram[offset + 1] = (byte)(value >> 16); - Memory.mainram[offset + 2] = (byte)(value >> 8); - Memory.mainram[offset + 3] = (byte)value; + Memory.mainram_Ptr[offset] = (byte)(value >> 24); + Memory.mainram_Ptr[offset + 1] = (byte)(value >> 16); + Memory.mainram_Ptr[offset + 2] = (byte)(value >> 8); + Memory.mainram_Ptr[offset + 3] = (byte)value; } else if (address >= 0x500000 && address + 3 <= 0x50ffff) { diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/taitob/State.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/taitob/State.cs index 16d9ccb..29cf9b3 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/taitob/State.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/taitob/State.cs @@ -1,10 +1,11 @@ using cpu.m68000; using cpu.z80; +using System; using System.IO; namespace MAME.Core { - public partial class Taitob + public unsafe partial class Taitob { public static void SaveStateBinary(BinaryWriter writer) { @@ -52,7 +53,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x10000); + writer.Write(Memory.mainram_Ptr, 0, 0x10000); writer.Write(mainram2, 0, 0x1e80); MC68000.m1.SaveStateBinary(writer); writer.Write(Memory.audioram, 0, 0x2000); @@ -141,7 +142,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x10000); + Memory.Set_mainram(reader.ReadBytes(0x10000)); mainram2 = reader.ReadBytes(0x1e80); MC68000.m1.LoadStateBinary(reader); Memory.audioram = reader.ReadBytes(0x2000); diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/taitob/Taitob.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/taitob/Taitob.cs index 228eac9..fe555ed 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/taitob/Taitob.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/taitob/Taitob.cs @@ -19,7 +19,7 @@ namespace MAME.Core TC0220IOC_port = 0; TC0640FIO_regs = new byte[8]; taitob_scroll = new ushort[0x400]; - Memory.mainram = new byte[0x10000]; + Memory.Set_mainram(new byte[0x10000]); mainram2 = new byte[0x1e80]; mainram3 = new byte[0x2000]; Memory.audioram = new byte[0x2000]; @@ -39,8 +39,9 @@ namespace MAME.Core TC0180VCU_ctrl[i] = 0; } Machine.bRom = true; - Memory.mainrom = Machine.GetRom("maincpu.rom"); - Memory.audiorom = Machine.GetRom("audiocpu.rom"); + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); + //Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); + Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); gfxrom = Machine.GetRom("gfx1.rom"); n = gfxrom.Length; gfx0rom = new byte[n * 2]; @@ -56,7 +57,7 @@ namespace MAME.Core } FM.ymsndrom = Machine.GetRom("ymsnd.rom"); YMDeltat.ymsnddeltatrom = Machine.GetRom("ymsnddeltat.rom"); - if (Memory.mainrom == null || gfxrom == null || Memory.audiorom == null || FM.ymsndrom == null) + if (Memory.mainrom_IsNull || gfxrom == null || Memory.audiorom_IsNull || FM.ymsndrom == null) { Machine.bRom = false; } diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/tehkan/Memory.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/tehkan/Memory.cs index e50f311..ccd2d6e 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/tehkan/Memory.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/tehkan/Memory.cs @@ -2,7 +2,7 @@ namespace MAME.Core { - public partial class Tehkan + public unsafe partial class Tehkan { public static byte byte0, byte1, byte2; public static byte byte0_old, byte1_old, byte2_old; @@ -11,11 +11,11 @@ namespace MAME.Core byte result = 0; if (address >= 0 && address <= 0x7fff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } else if (address >= 0x8000 && address <= 0xbfff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } return result; } @@ -28,7 +28,7 @@ namespace MAME.Core } else if (address >= 0x8000 && address <= 0xbfff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } return result; } @@ -37,16 +37,16 @@ namespace MAME.Core byte result = 0; if (address >= 0 && address <= 0x7fff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } else if (address >= 0x8000 && address <= 0xbfff) { - result = Memory.mainrom[address]; + result = Memory.mainrom_Ptr[address]; } else if (address >= 0xc000 && address <= 0xcfff) { int offset = address - 0xc000; - result = Memory.mainram[offset]; + result = Memory.mainram_Ptr[offset]; } else if (address >= 0xd000 && address <= 0xd3ff) { @@ -121,16 +121,16 @@ namespace MAME.Core { if (address >= 0x0000 && address <= 0x7fff) { - Memory.mainrom[address] = value; + Memory.mainrom_Ptr[address] = value; } else if (address >= 0x8000 && address <= 0xbfff) { - Memory.mainrom[address] = value; + Memory.mainrom_Ptr[address] = value; } else if (address >= 0xc000 && address <= 0xcfff) { int offset = address - 0xc000; - Memory.mainram[offset] = value; + Memory.mainram_Ptr[offset] = value; } else if (address >= 0xd000 && address <= 0xd3ff) { @@ -196,7 +196,7 @@ namespace MAME.Core byte result = 0; if (address >= 0 && address <= 0x1fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } return result; } @@ -205,7 +205,7 @@ namespace MAME.Core byte result = 0; if (address >= 0 && address <= 0x1fff) { - result = Memory.audiorom[address]; + result = Memory.audiorom_Ptr[address]; } else if (address >= 0x4000 && address <= 0x47ff) { @@ -222,7 +222,7 @@ namespace MAME.Core { if (address >= 0 && address <= 0x1fff) { - Memory.audiorom[address] = value; + Memory.audiorom_Ptr[address] = value; } else if (address >= 0x4000 && address <= 0x47ff) { diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/tehkan/Pbaction.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/tehkan/Pbaction.cs index 8a086ff..73dcaef 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/tehkan/Pbaction.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/tehkan/Pbaction.cs @@ -14,13 +14,14 @@ namespace MAME.Core { case "pbaction": case "pbaction2": - Memory.mainrom = Machine.GetRom("maincpu.rom"); - Memory.audiorom = Machine.GetRom("audiocpu.rom"); + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); + //Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); + Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); gfx1rom = Machine.GetRom("gfx1.rom"); gfx2rom = Machine.GetRom("gfx2.rom"); gfx3rom = Machine.GetRom("gfx3.rom"); gfx32rom = Machine.GetRom("gfx32.rom"); - Memory.mainram = new byte[0x1000]; + Memory.Set_mainram(new byte[0x1000]); Memory.audioram = new byte[0x800]; Generic.videoram = new byte[0x400]; pbaction_videoram2 = new byte[0x400]; @@ -28,7 +29,7 @@ namespace MAME.Core pbaction_colorram2 = new byte[0x400]; Generic.spriteram = new byte[0x80]; Generic.paletteram = new byte[0x200]; - if (Memory.mainrom == null || Memory.audiorom == null || gfx1rom == null || gfx2rom == null || gfx3rom == null || gfx32rom == null) + if (Memory.mainrom_IsNull || Memory.audiorom_IsNull || gfx1rom == null || gfx2rom == null || gfx3rom == null || gfx32rom == null) { Machine.bRom = false; } @@ -36,14 +37,15 @@ namespace MAME.Core case "pbaction3": case "pbaction4": case "pbaction5": - Memory.mainrom = Machine.GetRom("maincpu.rom"); + Memory.Set_mainrom(Machine.GetRom("maincpu.rom")); mainromop = Machine.GetRom("maincpuop.rom"); - Memory.audiorom = Machine.GetRom("audiocpu.rom"); + //Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); + Memory.Set_audiorom(Machine.GetRom("audiocpu.rom")); gfx1rom = Machine.GetRom("gfx1.rom"); gfx2rom = Machine.GetRom("gfx2.rom"); gfx3rom = Machine.GetRom("gfx3.rom"); gfx32rom = Machine.GetRom("gfx32.rom"); - Memory.mainram = new byte[0x1000]; + Memory.Set_mainram(new byte[0x1000]); Memory.audioram = new byte[0x800]; Generic.videoram = new byte[0x400]; pbaction_videoram2 = new byte[0x400]; @@ -51,7 +53,7 @@ namespace MAME.Core pbaction_colorram2 = new byte[0x400]; Generic.spriteram = new byte[0x80]; Generic.paletteram = new byte[0x200]; - if (Memory.mainrom == null || mainromop == null || Memory.audiorom == null || gfx1rom == null || gfx2rom == null || gfx3rom == null || gfx32rom == null) + if (Memory.mainrom_IsNull || mainromop == null || Memory.audiorom_IsNull || gfx1rom == null || gfx2rom == null || gfx3rom == null || gfx32rom == null) { Machine.bRom = false; } @@ -81,7 +83,7 @@ namespace MAME.Core { Cpuint.cpunum_set_input_line_and_vector2(1, 0, LineState.HOLD_LINE, 0x02); } - public static byte pbaction3_prot_kludge_r() + public unsafe static byte pbaction3_prot_kludge_r() { byte result; if (Z80A.zz1[0].PC == 0xab80) @@ -90,7 +92,7 @@ namespace MAME.Core } else { - result = Memory.mainram[0]; + result = Memory.mainram_Ptr[0]; } return result; } diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/tehkan/State.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/tehkan/State.cs index 9cb86e8..73db2d0 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/tehkan/State.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/tehkan/State.cs @@ -5,7 +5,7 @@ namespace MAME.Core { public partial class Tehkan { - public static void SaveStateBinary_pbaction(BinaryWriter writer) + public unsafe static void SaveStateBinary_pbaction(BinaryWriter writer) { int i; writer.Write(dsw1); @@ -15,7 +15,7 @@ namespace MAME.Core { writer.Write(Palette.entry_color[i]); } - writer.Write(Memory.mainram, 0, 0x1000); + writer.Write(Memory.mainram_Ptr, 0, 0x1000); writer.Write(Generic.videoram, 0, 0x400); writer.Write(pbaction_videoram2, 0, 0x400); writer.Write(Generic.colorram, 0, 0x400); @@ -56,7 +56,7 @@ namespace MAME.Core { Palette.entry_color[i] = reader.ReadUInt32(); } - Memory.mainram = reader.ReadBytes(0x1000); + Memory.Set_mainram(reader.ReadBytes(0x1000)); Generic.videoram = reader.ReadBytes(0x400); pbaction_videoram2 = reader.ReadBytes(0x400); Generic.colorram = reader.ReadBytes(0x400);