diff options
Diffstat (limited to 'crodump.py')
-rw-r--r-- | crodump.py | 20 |
1 files changed, 12 insertions, 8 deletions
@@ -83,12 +83,12 @@ class Datafile: | |||
83 | return kodecode(idx, encdat) | 83 | return kodecode(idx, encdat) |
84 | 84 | ||
85 | 85 | ||
86 | def dump(self, args, nodecode=False): | 86 | def dump(self, args): |
87 | print("tadhdr: %08x %08x" % tuple(self.tadhdr)) | 87 | print("tadhdr: %08x %08x" % tuple(self.tadhdr)) |
88 | ranges = [] # keep track of used bytes in the .dat file. | 88 | ranges = [] # keep track of used bytes in the .dat file. |
89 | for i, (ofs, ln, chk) in enumerate(self.tadidx): | 89 | for i, (ofs, ln, chk) in enumerate(self.tadidx): |
90 | if ln==0xFFFFFFFF: | 90 | if ln==0xFFFFFFFF: |
91 | print("%5d: %08x %08x %08x" % (i, ofs, ln, chk)) | 91 | print("%5d: %08x %08x %08x" % (i+1, ofs, ln, chk)) |
92 | continue | 92 | continue |
93 | flags = ln>>24 | 93 | flags = ln>>24 |
94 | 94 | ||
@@ -102,7 +102,7 @@ class Datafile: | |||
102 | if not dat: | 102 | if not dat: |
103 | # empty record | 103 | # empty record |
104 | encdat = dat | 104 | encdat = dat |
105 | elif not nodecode and not flags: | 105 | elif self.need_decode and not flags: |
106 | extofs, extlen = struct.unpack("<LL", dat[:8]) | 106 | extofs, extlen = struct.unpack("<LL", dat[:8]) |
107 | infostr = "%08x;%08x" % (extofs, extlen) | 107 | infostr = "%08x;%08x" % (extofs, extlen) |
108 | encdat = dat[8:] | 108 | encdat = dat[8:] |
@@ -119,13 +119,13 @@ class Datafile: | |||
119 | encdat = dat | 119 | encdat = dat |
120 | decflag = '*' | 120 | decflag = '*' |
121 | 121 | ||
122 | if nodecode: | 122 | if self.need_decode: |
123 | decdat = kodecode(i+1, encdat) | ||
124 | else: | ||
123 | decdat = encdat | 125 | decdat = encdat |
124 | decflag = ' ' | 126 | decflag = ' ' |
125 | else: | ||
126 | decdat = kodecode(i+1, encdat) | ||
127 | 127 | ||
128 | print("%5d: %08x-%08x: (%02x:%08x) %s %s%s %s" % (i, ofs, ofs+ln, flags, chk, infostr, decflag, toout(args, decdat), tohex(tail))) | 128 | print("%5d: %08x-%08x: (%02x:%08x) %s %s%s %s" % (i+1, ofs, ofs+ln, flags, chk, infostr, decflag, toout(args, decdat), tohex(tail))) |
129 | 129 | ||
130 | if args.verbose: | 130 | if args.verbose: |
131 | # output parts not referenced in the .tad file. | 131 | # output parts not referenced in the .tad file. |
@@ -195,7 +195,11 @@ def decode_kod(args, data): | |||
195 | """ | 195 | """ |
196 | if args.nokod: | 196 | if args.nokod: |
197 | # plain hexdump, no KOD decode | 197 | # plain hexdump, no KOD decode |
198 | hexdump(args.offset, data) | 198 | if args.ascdump: |
199 | print(asasc(data)) | ||
200 | else: | ||
201 | hexdump(args.offset, data) | ||
202 | |||
199 | elif args.shift: | 203 | elif args.shift: |
200 | # explicitly specified shift. | 204 | # explicitly specified shift. |
201 | args.shift = int(args.shift, 0) | 205 | args.shift = int(args.shift, 0) |