/// <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))); }
/// <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))); }
/// <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]); }
/// <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)); }
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; }
/// <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)); }