示例#1
0
        public void GetMemoryData(uint address, out UInt32 data)
        {
            IMemoryData md;

            if (SpecialMemory.TryGetValue(address, out md))
            {
                data = (UInt32)(md.Read() << 24);
                return;
            }
            var mem = Memory;

            if (address >= 0x10000000)
            {
                address -= 0x10000000;
                mem      = ExternalRam;
            }
            data = BitConverter.ToUInt32(mem, (int)address);
        }
示例#2
0
        public void GetMemoryData(uint address, out byte data)
        {
            IMemoryData md;

            if (SpecialMemory.TryGetValue(address, out md))
            {
                data = (byte)md.Read();
                return;
            }
            var mem = Memory;

            if (address >= 0x10000000)
            {
                address -= 0x10000000;
                mem      = ExternalRam;
            }
            data = mem[(int)address];
        }
示例#3
0
        public void SetMemoryData(uint address, byte data)
        {
            IMemoryData md;

            if (SpecialMemory.TryGetValue(address, out md))
            {
                md.Write(((uint)data));
                return;
            }
            var mem = Memory;

            if (address >= 0x10000000)
            {
                address -= 0x10000000;
                mem      = ExternalRam;
            }
            mem[(int)address] = data;
        }
示例#4
0
        public void SetMemoryData(uint address, UInt16 data)
        {
            IMemoryData md;

            if (SpecialMemory.TryGetValue(address, out md))
            {
                md.Write(((uint)(data)) >> 8);
                return;
            }
            var mem = Memory;

            if (address >= 0x10000000)
            {
                address -= 0x10000000;
                mem      = ExternalRam;
            }
            var dt = BitConverter.GetBytes(data);

            Array.Copy(dt, 0, mem, (int)address, 2);
        }