Example #1
0
        /// <summary>
        /// 指定したアドレスから4byte読み出します
        /// </summary>
        /// <param name="bus">読み出し対象</param>
        /// <param name="addr">読み出し先</param>
        /// <param name="isNondestructive">非破壊読み出しならtrue</param>
        /// <returns></returns>
        public static uint Read32(this IBusAccessible bus, uint addr, bool isNondestructive = false)
        {
            var dst = new byte[4];

            bus.Read(addr, dst, isNondestructive);
            return((uint)(dst[0] | (dst[1] << 8) | (dst[2] << 16) | (dst[3] << 24)));
        }
Example #2
0
        /// <summary>
        /// 指定したアドレスから2byte読み出します
        /// </summary>
        /// <param name="bus">読み出し対象</param>
        /// <param name="addr">読み出し先</param>
        /// <param name="isNondestructive">非破壊読み出しならtrue</param>
        /// <returns></returns>
        public static ushort Read16(this IBusAccessible bus, uint addr, bool isNondestructive = false)
        {
            var dst = new byte[2];

            bus.Read(addr, dst, isNondestructive);
            return((ushort)(dst[0] | (dst[1] << 8)));
        }
Example #3
0
        /// <summary>
        /// 指定したアドレスから1byte読み出します
        /// </summary>
        /// <param name="bus">読み出し対象</param>
        /// <param name="addr">読み出し先</param>
        /// <param name="isNondestructive">非破壊読み出しならtrue</param>
        /// <returns></returns>
        public static byte Read8(this IBusAccessible bus, uint addr, bool isNondestructive = false)
        {
            var dst = new byte[1];

            bus.Read(addr, dst, isNondestructive);
            return(dst[0]);
        }
Example #4
0
        /// <summary>
        /// 指定したアドレスに1byte書き込みます
        /// </summary>
        /// <param name="bus">書き込み対象</param>
        /// <param name="addr">書き込み先</param>
        /// <param name="data">書き込みデータ</param>
        /// <returns></returns>
        public static bool Write8(this IBusAccessible bus, uint addr, byte data)
        {
            var src = new byte[] {
                data,
            };

            return(bus.Write(addr, src));
        }
Example #5
0
 public Mmu(IBusAccessible wram, IBusAccessible ppu, IBusAccessible apu, IBusAccessible onchip, IBusAccessible dma, IBusAccessible cartridge)
 {
     this.Wram          = wram;
     this.PpuControlReg = ppu;
     this.ApuControlReg = apu;
     this.OnChipIoPort  = onchip;
     this.DmaControlReg = dma;
     this.Cartridge     = cartridge;
 }
Example #6
0
        /// <summary>
        /// 指定したアドレスに2byte書き込みます
        /// </summary>
        /// <param name="bus">書き込み対象</param>
        /// <param name="addr">書き込み先</param>
        /// <param name="data">書き込みデータ</param>
        /// <returns></returns>
        public static bool Write16(this IBusAccessible bus, uint addr, ushort data)
        {
            var src = new byte[] {
                (byte)(data & 0xff),
                (byte)((data >> 8) & 0xff),
            };

            return(bus.Write(addr, src));
        }