summaryrefslogtreecommitdiff
path: root/tools/fdr_dump_mem.py
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2013-01-03 00:26:43 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2013-01-03 00:26:43 +0100
commit60b47d78ab377cde847b772a821cc4262ca1bdd4 (patch)
tree84c6a3f3409ed0289e0d3207bad5e2756d7ba5d6 /tools/fdr_dump_mem.py
parent434ae4ede9073d699a982fe34b837d708fbe4f30 (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-xtools/fdr_dump_mem.py37
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()