diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2013-01-03 00:26:43 +0100 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2013-01-03 00:26:43 +0100 |
commit | 60b47d78ab377cde847b772a821cc4262ca1bdd4 (patch) | |
tree | 84c6a3f3409ed0289e0d3207bad5e2756d7ba5d6 /tools/fdr_dump_mem.py | |
parent | 434ae4ede9073d699a982fe34b837d708fbe4f30 (diff) |
companion cube replay
need to figure out texture format; texturing currently only functional with a
raw dump of the texture memory from the GL example
Diffstat (limited to 'tools/fdr_dump_mem.py')
-rwxr-xr-x | tools/fdr_dump_mem.py | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/tools/fdr_dump_mem.py b/tools/fdr_dump_mem.py index 7f415ee..f630f41 100755 --- a/tools/fdr_dump_mem.py +++ b/tools/fdr_dump_mem.py @@ -40,7 +40,14 @@ def parse_arguments(): parser.add_argument('size', metavar='SIZE', type=str, help='Memory block size') parser.add_argument('addr2', metavar='ADDR2', type=str, + default='0', nargs='?', help='Starting address (physical)') + parser.add_argument('-r', dest='raw_out', type=str, + help='Export raw data to file') + parser.add_argument('-i', dest='img_out', type=str, + help='Export image to file (type is determined by extension)') + parser.add_argument('-w', dest='img_width', type=int, + help='Width of image to export') return parser.parse_args() def main(): @@ -50,16 +57,32 @@ def main(): args.size = int(args.size,0) args.addr2 = int(args.addr2,0) fdr = FDRLoader(args.input) - print('%-8s %-8s %-8s %s' % ('log', 'phys', 'int', 'float')) + if args.raw_out is None and args.img_out is None: + print('%-8s %-8s %-8s %s' % ('log', 'phys', 'int', 'float')) for seq,rec in enumerate(fdr): - if isinstance(rec, Event): # Print events as they appear in the fdr + if isinstance(rec, Event): if seq == args.seq: data = fdr[args.addr:args.addr+args.size] # extract data - s = args.size//4 - for x in xrange(s): - print('%08x %08x %08x %6.3f' % (args.addr+x*4, args.addr2+x*4, - struct.unpack(b'I', data[x*4:x*4+4])[0], - struct.unpack(b'f', data[x*4:x*4+4])[0])) + if args.img_out is not None: + if args.img_width is None: + print('Specify width of image with -w') + exit(1) + from PIL import Image + width = args.img_width + height = len(data) // (width*4) + img = Image.fromstring("RGBX", (width, height), data) + img = img.convert("RGB") + img.save(args.img_out) + elif args.raw_out is not None: + with open(args.raw_out, 'wb') as f: + f.write(data) + else: + s = args.size//4 + for x in xrange(s): + print('%08x %08x %08x %6.3f' % (args.addr+x*4, args.addr2+x*4, + struct.unpack(b'I', data[x*4:x*4+4])[0], + struct.unpack(b'f', data[x*4:x*4+4])[0])) + if __name__ == '__main__': main() |