public void WriteBytes(uint addr, byte[] buf, int length) { if (!GckMemoryRange.ValidAddress(addr)) { throw new GckException("Invalid memory range."); } Stream.WriteCommand(GckCommands.UploadMemory); Stream.WriteUInt32(addr); Stream.WriteUInt32(addr + (uint)length); Stream.WriteBytes(buf, length); Stream.Flush(); }
public void WriteDouble(uint addr, double val) { if (!GckMemoryRange.ValidAddress(addr)) { throw new GckException("Invalid memory range."); } Stream.WriteCommand(GckCommands.UploadMemory); Stream.WriteUInt32(addr); Stream.WriteUInt32(addr + sizeof(double)); Stream.WriteDouble(val); Stream.Flush(); }
public void WriteSingle(uint addr, float val) { if (!GckMemoryRange.ValidAddress(addr)) { throw new GckException("Invalid memory range."); } Stream.WriteCommand(GeckoCommand.UploadMemory); Stream.WriteUInt32(addr); Stream.WriteUInt32(addr + sizeof(float)); Stream.WriteSingle(val); Stream.Flush(); }
public static int RangeCheckId(UInt32 address) { for (int i = 0; i < ValidRanges.Length; i++) { GckMemoryRange range = ValidRanges[i]; if (address >= range.low && address < range.high) { return(i); } } return(-1); }
public uint ReadUInt32(uint addr) { if (!GckMemoryRange.ValidAddress(addr)) { throw new GckException("Invalid memory range."); } Stream.WriteCommand(GckCommands.ReadMemory); Stream.WriteUInt32(addr); Stream.WriteUInt32(addr + sizeof(uint)); Stream.Flush(); if (Stream.ReadUInt8() == BYTES_ONLY_ZEROS) { return(0); } return(Stream.ReadUInt32()); }
public byte[] ReadBytes(uint addr, int length) { if (!GckMemoryRange.ValidAddress(addr)) { throw new GckException("Invalid memory range."); } Stream.WriteCommand(GckCommands.ReadMemory); Stream.WriteUInt32(addr); Stream.WriteUInt32(addr + (uint)length); Stream.Flush(); if (Stream.ReadUInt8() == BYTES_ONLY_ZEROS) { return(new byte[length]); } return(Stream.ReadBytes(length)); }