4cade/bin/packhgrfile.py

27 lines
713 B
Python
Executable File

#!/usr/bin/env python3
import sys
infile = sys.argv[1]
outfile = sys.argv[2]
with open(infile,"rb") as i:
filedata = i.read()
# If the file has a JMP in the last screen hole, the
# game has an animated title, skip packing and copy
# the file as is instead.
# Some HGR files were saved as 8184 bytes (without
# final screen hole) so check file length first.
if(len(filedata) >= 8192 and filedata[8189] == 0x4c):
print (infile, "has animation, not packing")
outdata = bytearray(filedata[0:8192])
else:
outdata = bytearray(filedata[0:7680])
for h in range(60):
oh = h*128+120
ih = h*8+7680+(int(h/15)*8)
outdata[oh:oh+8] = filedata[ih:ih+8]
with open(outfile,"wb") as o:
o.write(outdata)