Want more features on Pastebin? Sign Up, it's FREE!
Guest

Make 3.41

By: a guest on Jan 13th, 2011  |  syntax: Python  |  size: 2.95 KB  |  views: 195  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #!/usr/bin/python
  2.  
  3. import os, sys, subprocess, shutil
  4.  
  5. # working directory for messing with big files
  6. curr_dir=os.path.realpath(os.path.dirname(__file__))
  7.  
  8. # path of unself, make_self_npdrm, make_package_npdrm, and psn_package_npdrm.exe
  9. tools_dir=os.path.join(curr_dir, 'bin')
  10.  
  11. def do(cmd):
  12.     """ shorthand for running comands """
  13.     #print cmd
  14.     p=subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
  15.     return p.communicate()
  16.  
  17.  
  18. try:
  19.     sfo=os.path.realpath(sys.argv[1])
  20.     gamedir = os.path.realpath(os.path.dirname(sys.argv[1]))
  21. except IndexError:
  22.     print "You need to specify the location of the PARAM.SFO file."
  23.     sys.exit(1)
  24.  
  25.  
  26. # get gameid
  27. gameid='BRKN00000'
  28. with open(sfo, 'read') as f:
  29.     gameid=f.read()[-24:-15]
  30.  
  31. print "Files need to be copied from PS3_GAME to PS3 into /dev_hdd0/G%s (don't copy USRDIR/EBOOT.bin.)" % gameid[2:]
  32.  
  33. # make a copy of important files for package
  34. os.mkdir(os.path.join(curr_dir, gameid+'-pkg'))
  35. os.mkdir(os.path.join(curr_dir, gameid+'-pkg', 'USRDIR'))
  36.  
  37. shutil.copyfile(os.path.join(gamedir, 'ICON0.PNG'), os.path.join(curr_dir, gameid+'-pkg','ICON0.PNG'))
  38. # shutil.copyfile(os.path.join(gamedir, 'USRDIR','EBOOT.BIN'), os.path.join(curr_dir, gameid + '-EBOOT.BIN.orig'))
  39.  
  40. try:
  41.     shutil.copyfile(os.path.join(gamedir, 'PIC1.PNG'), os.path.join(curr_dir, gameid+'-pkg','PIC1.PNG'))
  42. except:
  43.     pass
  44.  
  45. # unself EBOOT
  46. do("%s %s %s" % (os.path.join(tools_dir,'unself'), os.path.join(gamedir, 'USRDIR', 'EBOOT.BIN'), 'eboot_out.elf'))
  47.  
  48. # find & replace
  49. b=''
  50. with open('eboot_out.elf', 'read') as f:
  51.     b=f.read()
  52. with open('eboot_out.elf', 'write') as f:
  53.     b = b.replace('dev_bdvd', 'dev_hdd0').replace('PS3_GAME','G' + gameid[2:])
  54.     f.write(b)
  55.  
  56. with open(sfo, 'read') as f:
  57.     b=f.read()
  58. with open(os.path.join(curr_dir, gameid+'-pkg','PARAM.SFO'), 'write') as f:
  59.     b = b.replace('DG%c%cLibrary programs' %(0,0), 'HG%c%cLibrary programs' %(0,0))
  60.     f.write(b)
  61.  
  62.  
  63. # re-self EBOOT
  64. do('%s eboot_out.elf %s UP0001-%s_00-0000111122223333' % (os.path.join(tools_dir,'make_self_npdrm'), os.path.join(curr_dir, gameid+'-pkg', 'USRDIR', 'EBOOT.BIN'), gameid))
  65.  
  66. # make conf file for pkg
  67. with open(os.path.join(curr_dir,gameid +'.conf'), 'write') as f:
  68.     f.write("""Content-ID = UP0001-%s_00-0000111122223333
  69. k_licensee = 0x00000000000000000000000000000000
  70. DRM_Type = Free
  71. Content_Type = Game_Exec
  72. PackageVersion = 01.00""" %(gameid))
  73.  
  74. #TODO: this doesn't work! I use wine and psn_package_npdrm to do it.)
  75.  
  76. #make pkg
  77. #do('%s %s %s' % (os.path.join(tools_dir,'make_package_npdrm'), os.path.join(curr_dir, gameid + '.conf'), os.path.join(curr_dir, gameid+'-pkg')))
  78.  
  79. do('wine %s %s %s' % (os.path.join(tools_dir,'psn_package_npdrm.exe'), os.path.join(curr_dir, gameid + '.conf'), os.path.join(curr_dir, gameid+'-pkg')))
  80.  
  81.  
  82. # cleanup
  83. os.unlink('eboot_out.elf')
  84. os.unlink(os.path.join(curr_dir, gameid + '.conf'))
  85. shutil.rmtree(os.path.join(curr_dir, gameid+'-pkg'))
clone this paste RAW Paste Data