summaryrefslogtreecommitdiff
path: root/datrom
diff options
context:
space:
mode:
authorMyrika Fuwa2022-01-16 21:01:09 -0500
committerMyrika Fuwa2022-01-16 21:01:09 -0500
commit6b23ebc7d3c7da68e008adfa9a129e0f727aa53d (patch)
tree569ea69de5dfc2c5e00099cdb7727336dddbc5d7 /datrom
downloaddatsum-master.tar.gz
datsum-master.zip
Initial commitHEADmaster
Diffstat (limited to 'datrom')
-rwxr-xr-xdatrom54
1 files changed, 54 insertions, 0 deletions
diff --git a/datrom b/datrom
new file mode 100755
index 0000000..052542b
--- /dev/null
+++ b/datrom
@@ -0,0 +1,54 @@
+#!/usr/bin/env python3
+# vim: set encoding=utf-8 noet ts=4
+# TODO: NES headers
+
+"""Identify ROM with DAT file."""
+
+import binascii, os, sys
+from dat import DAT
+
+def identify(datafile, romfile):
+ """
+ ROM file to identify.
+ """
+ with open(romfile,'rb') as f:
+ crc = "{:08x}".format(binascii.crc32(f.read()))
+ print("CRC: {0}".format(crc))
+
+ size = os.path.getsize(romfile)
+ print("Size: {0}".format(size))
+
+ dat = DAT(datafile)
+ name = dat.name(crc, size)
+ print("Name: {0}".format(name))
+ return name
+
+def rename(romfile, name):
+ """
+ Rename ROM file from name in DAT.
+ """
+ romfile = os.path.abspath(romfile)
+ name = os.path.join(os.path.dirname(romfile), name)
+ os.rename(romfile, name)
+ print("\nSource: {0}\nDestination: {1}".format(romfile, name))
+
+if __name__ == '__main__':
+ import argparse
+ parser = argparse.ArgumentParser(add_help=False, description=__doc__)
+
+ parser.add_argument('DAT', help=DAT.__doc__)
+ parser.add_argument('ROM', help=identify.__doc__)
+
+ parser.add_argument(
+ '-h', '--help', action='help', default=argparse.SUPPRESS,
+ help='Show this help message and exit.'
+ )
+ parser.add_argument(
+ '-r', '--rename', action='store_true',
+ help=rename.__doc__
+ )
+
+ args = parser.parse_args()
+ name = identify(args.DAT, args.ROM)
+ if args.rename:
+ rename(args.ROM, name)