- Joined
- Feb 17, 2012
- Messages
- 2,642
- Reaction score
- 6,242
- Trophies
- 0
- Location
- The Everfree Forest
- XP
- 6,693
- Country




How about posting a mutated Rayman Legends 3D World screenshot to Miiverse?!
Just kidding. Unfortunately, this proves that my random theory was right and there is no framebuffer in that area of the memory. Sorry Chadderz
NWPlayer123, these screenshots are also used in the browser, so yes.
Could you describe the process of how you got those pictures ripped/rendered because I'm dumping from the same region of memory (I'm on 5.1.0), and getting nowhere near the same results, both with the actual data (and IDK how to render it properly)
Are you all just dumping with rpc.py? Cause when I try to do a dump of that memory region (and about 3MB in size), it just takes ages and never returns for me. I do see network activity, though.
Are you all just dumping with rpc.py? Cause when I try to do a dump of that memory region (and about 3MB in size), it just takes ages and never returns for me. I do see network activity, though.
adr = 0xE3500000 #change this (starting address)
btr = 0x00384000 #this (number of bytes to read)
curb = 0
thefile = open("outputram.bin", "wb") #and this (output file)
while btr - curb > 0:
if btr - curb >= 500:
numbytes = 500
else:
numbytes = btr - curb
buf = rpc.read32(adr + curb, numbytes)
for item in buf:
uselessval = thefile.write(struct.pack(">I", item))
thefile.flush()
curb += numbytes
if curb % 100000 == 0 or btr == curb:
print(str(curb) + " / " + str(btr) + " (" + str(round(curb / btr * 10000) / 100) + "%)")
thefile.close()

img1 = rpc.read32(0xE3500000, 921600)
import struct
file = open("img1.bin", "wb")
for x in xrange(len(img1)):
file.write(struct.pack(">I", img1[x]))
file.close()
This is my code for dumping memory. I haven't tested it after I last modified it, but it should still work. Copy everything into Notepad, change the values you need to, and paste the changed script into the interactive Python shell.
However, there is one problem with it (or maybe it's just my computer), which is that thefile.write writes the buffer 4 times to the file. I had to write a Windows program (FileFixer from this archive) that creates a fixed dump from one that has that problem (drag and drop the dump into FileFixer).
Code:import datetime adr = 0xE3500000 #change this (starting address) btr = 0x00384000 #this (number of bytes to read) curb = 0 thefile = open("outputram.bin", "wb") #and this (output file) while btr - curb > 0: if btr - curb >= 500: numbytes = 500 else: numbytes = btr - curb buf = rpc.read32(adr + curb, numbytes) for item in buf: uselessval = thefile.write(struct.pack(">I", item)) thefile.flush() curb += numbytes if curb % 100000 == 0 or btw == curb: print(str(curb) + " / " + str(btr) + " (" + str(round(curb / btr * 10000) / 100) + "%)") thefile.close()

Hmm, that's the way I'm doing it (mostly), but it just gives me garbage data(not exactly garbage but grey striped nonsense). Are you using a disc or something on your Wii U? Because all I've been doing is
1) Turn on and click my profile
2) Click on the icon of the app on the menu to get it to load
3) Wait till I can switch apps then press the home button and click Web Browser(IE not going back to the menu)
4) Run the RPC script and dump data from that section
5) ???
6) FAILURE
This is the kinda stuff I'm getting.Code:img1 = rpc.read32(0xE3500000, 921600) import struct file = open("img1.bin", "wb") for x in xrange(len(img1)): file.write(struct.pack(">I", img1[x])) file.close()
I keep getting this upon running either code snippet. I assume the forum is mangling the formatting? Python's awful with indentation, I've learned.![]()
Line-by-line was a bit boring so I actually just integrated celcodioc's method into rpc.py itself and...
My TV only takes 1080i, thus why the image appears a bit garbled. Still neat though.![]()
I think you'll have to render it with a width of 1280 for it to look normal.![]()


def dump_img(self, addr, size, output="img.bin"):
curb = 0
thefile = open(output, "wb")
while size - curb > 0:
if size - curb >= 500:
numbytes = 500
else:
numbytes = size - curb
buf = rpc.read32(addr + curb, numbytes)
for item in buf:
uselessval = thefile.write(struct.pack(">I", item))
thefile.flush()
curb += numbytes
if curb % 100000 == 0 or size == curb:
print(str(curb) + " / " + str(size) + " (" + str(round(curb / size * 10000) / 100) + "%)")
thefile.close()