diff --git a/bin/packhgrfile.py b/bin/packhgrfile.py index 59480096f..b2bb3107b 100755 --- a/bin/packhgrfile.py +++ b/bin/packhgrfile.py @@ -4,25 +4,24 @@ import sys infile = sys.argv[1] outfile = sys.argv[2] -i = open(infile,"rb") -filedata = i.read() -i.close +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] - -o = open(outfile,"wb") -o.write(outdata) -o.close +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)