Advertisement
LuigiBlood

bs-x_sram_chk_rewrite

May 19th, 2020
1,238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.06 KB | None | 0 0
  1. from struct import *
  2. import sys
  3.  
  4. print("BS-X SRAM Checksum Fixer v0.3")
  5. print("By LuigiBlood")
  6.  
  7. if (len(sys.argv) > 1):
  8.     if (sys.argv[1] == "-f" and sys.argv[2] != ""):
  9.         FILE = sys.argv[2]
  10.         FIXflag = 1
  11.     else:
  12.         FILE = sys.argv[1]
  13.         FIXflag = 0
  14.     SRAMfile = open(FILE,"r+b")
  15.     CHK1 = 0
  16.     CHK2 = 0
  17.     SRAMfile.seek(0)
  18.     DATA = SRAMfile.read(0x3000)
  19.     print("Checksum: " + hex(DATA[4] + (DATA[5] * 0x100)))
  20.     print("Reverse Checksum: " + hex(DATA[2] + (DATA[3] * 0x100)))
  21.     for i in range(0,0x3000):
  22.         CHK2 += DATA[i]
  23.     for i in range(2,6):
  24.         CHK2 -= DATA[i]
  25.     CHK2 += 0xFF
  26.     CHK2 += 0xFF
  27.    
  28.     CHK2 &= 0xFFFF
  29.     CHK1 = CHK2 ^ 0xFFFF
  30.     print("Calculated Checksum: " + hex(CHK2))
  31.     print("Calculated Reverse Checksum: " + hex(CHK1))
  32.     if (FIXflag == 1):
  33.         SRAMfile.seek(2)
  34.         SRAMfile.write(pack("2H", CHK1, CHK2))
  35.         print("Checksum Fixed!")
  36. else:
  37.     print("Usage: " + sys.argv[0] + " [-f] <SRAM File Path>")
  38.     print("   -f : Fix Checksum (Optional)")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement