diff --git a/memtest.py b/memtest.py index 18ef0a3..32c74b5 100644 --- a/memtest.py +++ b/memtest.py @@ -213,7 +213,7 @@ class Dolphin(object): size, ctypes.pointer(read)) - return result and read == size, buffer + return result and read.value == size, buffer def write_ram(self, offset, data): buffer = (ctypes.c_char*len(data))(*data) @@ -226,8 +226,26 @@ class Dolphin(object): len(data), ctypes.pointer(read)) - return result and read == len(data) + return result and read.value == len(data) + + def read_uint32(self, addr): + assert addr >= 0x80000000 + success, value = self.read_ram(addr-0x80000000, 4) + if success: + return struct.unpack(">I", value)[0] + else: + return None + + def read_float(self, addr): + assert addr >= 0x80000000 + success, value = self.read_ram(addr - 0x80000000, 4) + + if success: + return struct.unpack(">f", value)[0] + else: + return None + """with open("ctypes.txt", "w") as f: for a in ctypes.__dict__: f.write(str(a)) @@ -248,10 +266,23 @@ if __name__ == "__main__": print("We found MEM1 and/or MEM2!", dolphin.address_start, dolphin.mem2_start) else: print("We didn't find it...") - print(dolphin.write_ram(0, b"GMS")) + """print(dolphin.write_ram(0, b"GMS")) success, result = dolphin.read_ram(0, 8) print(result[0:8]) print(dolphin.write_ram(0, b"AWA")) success, result = dolphin.read_ram(0, 8) - print(result[0:8]) \ No newline at end of file + print(result[0:8])""" + + kartctrlPtr = dolphin.read_uint32(0x803CC588) + print(hex(kartctrlPtr)) + for i in range(8): + kartPtr = dolphin.read_uint32(kartctrlPtr+0xA0+i*4) + print(hex(kartPtr)) + x = dolphin.read_float(kartPtr + 0x23C) + y = dolphin.read_float(kartPtr + 0x240) + z = dolphin.read_float(kartPtr + 0x244) + + #self.karts[i].x = x + #self.karts[i].y = y + #self.karts[i].z = z \ No newline at end of file