Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from struct import *
- import sys
- print "BS-X SRAM Checksum Fixer v0.2"
- print "By LuigiBlood/Seru-kun"
- #Usage: CHKFIX.py [-f] <SRAM File>
- # -f = Fix Checksum
- #12287
- if sys.argv[1] == "-f" and sys.argv[2] <> "" :
- FILE = sys.argv[2]
- elif sys.argv[1] <> "-f" and sys.argv[1] <> "" :
- FILE = sys.argv[1]
- if FILE <> "" and sys.argv[1] == FILE :
- SRAM = open(FILE,"r+b")
- CHK = 0
- CHK2 = 0
- OFFSET = int("2fff", 16)
- SRAM.seek(4)
- OLD=ord(SRAM.read(1))+ord(SRAM.read(1))*256
- print "Checksum : " + hex(OLD)
- SRAM.seek(2)
- OLDR=ord(SRAM.read(1))+ord(SRAM.read(1))*256
- print "Reversed Checksum : " + hex(OLDR)
- elif FILE <> "" and sys.argv[1] == "-f" and sys.argv[2] == FILE :
- SRAM = open(FILE,"r+b")
- CHK = 0
- CHK2 = 0
- A = 0
- OFFSET = int("fff", 16)
- SRAM.seek(4)
- OLD=ord(SRAM.read(1))+ord(SRAM.read(1))*256
- print "Checksum : " + hex(OLD)
- SRAM.seek(2)
- OLDR=ord(SRAM.read(1))+ord(SRAM.read(1))*256
- print "Reversed Checksum : " + hex(OLDR)
- SRAM.seek(2)
- SRAM.write(chr(255))
- SRAM.write(chr(255))
- SRAM.write(chr(0))
- SRAM.write(chr(0))
- print "Checksum Removed, calculating..."
- while OFFSET >= 0:
- SRAM.seek(OFFSET)
- A = ord(SRAM.read(1))
- A += CHK
- CHK = A
- SRAM.seek(OFFSET + int("1000", 16))
- A = ord(SRAM.read(1))
- A += CHK
- CHK = A
- SRAM.seek(OFFSET + int("2000", 16))
- A = ord(SRAM.read(1))
- A += CHK
- CHK = A
- OFFSET -= 1
- SRAM.seek(2)
- CHK2 = CHK & int("ffff", 16)
- print "NEW Checksum : " + hex(CHK2)
- RCHK = CHK2 ^ int("ffff", 16)
- print "NEW Reversed Checksum : " + hex(RCHK)
- print "Replacing Checksums..."
- SRAM.write(pack("H", RCHK))
- SRAM.write(pack("H", CHK2))
- print "Done !"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement