Example #1
0
def prepare_attachxbe(iso_filename):
	iso_name	= iso_filename[:-4].replace('_1','').replace('_2','').replace('.1','').replace('.2','').split('(',1)[0]
	iso_folder_name	= (iso_name[:36]) if len(iso_name) > 36 else iso_name # truncate the name to 42 characters, reason is the .iso.
	iso_folder		= os.path.join(ISO_Directory, iso_folder_name+' (ISO)')
	copyfile(os.path.join(Working_Directory,"attach.xbe"), os.path.join(iso_folder,"attach.xbe"))
	## DEFAULT XBE TITLE
	default_xbe_file = open(os.path.join(iso_folder,'default.xbe'),'rb')
	#move to base address
	default_xbe_file.seek(260, 0)
	base = default_xbe_file.read(4)
	#move to cert address
	default_xbe_file.seek(280, 0)
	cert = default_xbe_file.read(4)
	#get the location of the cert
	certAddress = unpack("i", cert) # init32 values
	baseAddress = unpack("i", base) # init32 values
	loc = certAddress[0] - baseAddress[0]
	#move to the titleid
	default_xbe_file.seek(loc+8, 0)
	xbe_certificate = default_xbe_file.read(168)
	default_xbe_file.close()
	##
	# I'm not too worried about reuising all these vars...
	# ATTACH XBE FILE
	attach_xbe_file = open(os.path.join(iso_folder,'attach.xbe'), 'r+b')
	#move to base address
	attach_xbe_file.seek(260, 0)
	base = attach_xbe_file.read(4)
	#move to cert address
	attach_xbe_file.seek( 280, 0)
	cert = attach_xbe_file.read(4)
	#get the location of the cert
	certAddress = unpack("i", cert) # init32 values
	baseAddress = unpack("i", base) # init32 values
	loc = certAddress[0] - baseAddress[0]
	#move to the titleid
	attach_xbe_file.seek(loc+8, 0)
	attach_xbe_file.write(xbe_certificate)
	attach_xbe_file.close()
	##	
	try: # this is to move on if there is an error with extracting the image.
		xbeinfo(os.path.join(iso_folder,"default.xbe")).image_png()
	except:
		print "| Error: Memory ran out when trying to extract TitleImage.xbx."
		print "|        So using alternative way."
		try: # if the memory runs out this one works.
			XBE(os.path.join(iso_folder,"default.xbe")).Get_title_image().Write_PNG(os.path.join("Z:\\default.png"))
		except:
			print "| Error: Cannot extract the default.png, haven't a clue why maybe its in DDS format?"
	if os.path.isfile('Z:\\default.png'):	shutil.move('Z:\\default.png',os.path.join(iso_folder,'default.tbn'))
	if os.path.isfile(os.path.join(iso_folder,'default.tbn')):	shutil.copy2(os.path.join(iso_folder,'default.tbn'),os.path.join(iso_folder,'icon.png'))
	if os.path.isfile('Z:\\TitleImage.xbx'):	os.remove('Z:\\TitleImage.xbx')
	os.remove(os.path.join(iso_folder,"default.xbe"))
	os.rename(os.path.join(iso_folder,"attach.xbe"),os.path.join(iso_folder,"default.xbe"))
Example #2
0
def prepare_attachxbe( iso_filename ):
	iso_name	= os.path.splitext( os.path.basename( iso_filename ) )[0]
	iso_folder_name	= (iso_name[:36]) if len(iso_name) > 36 else iso_name # truncate the name to 42 characters, reason is the .iso.
	iso_folder		= os.path.join( ISO_Directory, iso_folder_name + ' (ISO)' )
	
	
	print iso_folder

	copyfile( os.path.join( Working_Directory,"attach.xbe" ), os.path.join( iso_folder,"attach.xbe" ) )

	## DEFAULT XBE TITLE
	default_xbe_file = open( os.path.join( ISO_Directory,'default.xbe' ),'rb' )

	#move to base address
	default_xbe_file.seek( 260, 0 )
	base = default_xbe_file.read( 4 )

	#move to cert address
	default_xbe_file.seek( 280, 0 )
	cert = default_xbe_file.read( 4 )

	#get the location of the cert
	certAddress = unpack( "i", cert ) # init32 values
	baseAddress = unpack( "i", base ) # init32 values
	loc = certAddress[0] - baseAddress[0]

	#move to the titleid
	default_xbe_file.seek( loc + 8, 0 )
	xbe_certificate = default_xbe_file.read( 168 )
	default_xbe_file.close()
	
	##
	# I'm not too worried about reuising all these vars...
	# ATTACH XBE FILE
	attach_xbe_file = open( os.path.join( iso_folder,'attach.xbe' ), 'r+b' )

	#move to base address
	attach_xbe_file.seek( 260, 0 )
	base = attach_xbe_file.read( 4 )

	#move to cert address
	attach_xbe_file.seek(  280, 0)
	cert = attach_xbe_file.read( 4 )

	#get the location of the cert
	certAddress = unpack( "i", cert ) # init32 values
	baseAddress = unpack( "i", base ) # init32 values
	loc = certAddress[0] - baseAddress[0]

	#move to the titleid
	attach_xbe_file.seek( loc + 8, 0 )
	attach_xbe_file.write( xbe_certificate )
	attach_xbe_file.close()
	##	
	try: # this is to move on if there is an error with extracting the image.
		xbeinfo( os.path.join( ISO_Directory,"default.xbe" ) ).image_png()
	except:
		print "| Error: Memory ran out when trying to extract TitleImage.xbx."
		print "|        So using alternative way."
		try: # if the memory runs out this one works.
			XBE( os.path.join( ISO_Directory,"default.xbe" ) ).Get_title_image().Write_PNG( os.path.join( "Z:\\default.png" ) )
		except:
			print "| Error: Cannot extract the default.png, haven't a clue why maybe its in DDS format?"
	if os.path.isfile( 'Z:\\default.png' ):	shutil.move( 'Z:\\default.png',os.path.join( iso_folder,'default.tbn' ) )
	if os.path.isfile( os.path.join( iso_folder,'default.tbn' ) ):	shutil.copy2( os.path.join( iso_folder,'default.tbn' ),os.path.join( iso_folder,'icon.png' ) )
	if os.path.isfile( 'Z:\\TitleImage.xbx' ):	os.remove( 'Z:\\TitleImage.xbx' )
	os.remove( os.path.join( ISO_Directory,"default.xbe" ) )
	os.rename( os.path.join( iso_folder,"attach.xbe" ),os.path.join( iso_folder,"default.xbe" ) )
Example #3
0
def prepare_loaderxbe(self):

    print Game_Path

    ## DEFAULT XBE TITLE
    default_xbe_file = open(os.path.join(Game_Path, 'default.xbe'), 'rb')

    #move to base address
    default_xbe_file.seek(260, 0)
    base = default_xbe_file.read(4)

    #move to cert address
    default_xbe_file.seek(280, 0)
    cert = default_xbe_file.read(4)

    #get the location of the cert
    certAddress = unpack("i", cert)  # init32 values
    baseAddress = unpack("i", base)  # init32 values
    loc = certAddress[0] - baseAddress[0]

    #move to the titleid
    default_xbe_file.seek(loc + 8, 0)
    xbe_certificate = default_xbe_file.read(168)
    default_xbe_file.close()

    ##
    # I'm not too worried about reuising all these vars...
    # ATTACH XBE FILE
    attach_xbe_file = open(os.path.join(Game_Path, 'loader_default.xbe'),
                           'r+b')

    #move to base address
    attach_xbe_file.seek(260, 0)
    base = attach_xbe_file.read(4)

    #move to cert address
    attach_xbe_file.seek(280, 0)
    cert = attach_xbe_file.read(4)

    #get the location of the cert
    certAddress = unpack("i", cert)  # init32 values
    baseAddress = unpack("i", base)  # init32 values
    loc = certAddress[0] - baseAddress[0]

    #move to the titleid
    attach_xbe_file.seek(loc + 8, 0)
    attach_xbe_file.write(xbe_certificate)

    # Custom fix for Men of Valor, but the game resets when you select one of the training mission, so this patch is pointless :/
    if TitleID == "56550019":
        attach_xbe_file.seek(62, 0)
        MOV_Fix = attach_xbe_file.read(1)
        attach_xbe_file.seek(280, 0)
        attach_xbe_file.write(MOV_Fix)

    attach_xbe_file.close()
    ##
    try:  # this is to move on if there is an error with extracting the image.
        xbeinfo(os.path.join(Game_Path, "default.xbe")).image_png()
    except:
        print "| Error: Memory ran out when trying to extract TitleImage.xbx."
        print "|        So using alternative way."
        try:  # if the memory runs out this one works.
            XBE(os.path.join(
                Game_Path,
                "default.xbe")).Get_title_image().Write_PNG("Z:\\default.png")
        except:
            print "| Error: Cannot extract the default.png, haven't a clue why maybe its in DDS format?"
    if os.path.isfile('Z:\\default.png'):
        shutil.move('Z:\\default.png', os.path.join(Game_Path, 'default.tbn'))
    if os.path.isfile(os.path.join(Game_Path, 'default.tbn')):
        shutil.copy2(os.path.join(Game_Path, 'default.tbn'),
                     os.path.join(Game_Path, 'icon.png'))
    if os.path.isfile('Z:\\TitleImage.xbx'): os.remove('Z:\\TitleImage.xbx')
    os.rename(os.path.join(Game_Path, "default.xbe"),
              os.path.join(Game_Path, "game_default.xbe"))
    os.rename(os.path.join(Game_Path, "loader_default.xbe"),
              os.path.join(Game_Path, "default.xbe"))

    if Loader == Loader1:
        if not os.path.isdir(os.path.join(Game_Path, "480loadr")):
            os.mkdir(Game_Path + "480loadr")
        ldr_xpr = os.path.join(Game_Path, "480loadr\ldr.xpr")
        ldr_inx = os.path.join(Game_Path, "480loadr\ldr.inx")
        ldr_ttf = os.path.join(Game_Path, "480loadr\ldr.ttf")
        ldr_xpr_bytes = binascii.unhexlify(
            '585052300010000000080000010004000000000000000000290C110100000000010004008000000000000000290C510500000000010004008002000000000000290C110100000000010004000003000000000000290C110100000000010004008003000000000000290C110100000000010004000004000000000000290C110100000000010004008004000000000000290C110100000000010004000005000000000000290C110100000000FFFFFFFFADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD6111ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD00000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD0000ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD0000ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD44CAADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD0000ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD0000ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD'
        )
        ldr_inx_bytes = binascii.unhexlify(
            'FFFE5B0043006F006E006600690067005D000D000A004100700070005400690074006C0065003D00220034003800300070002000470061006D00650020006C006F00610064006500720022000D000A0041007400740072006100630074004D006F0064006500440065006C00610079003D002200300022000D000A000D000A005B004D00610069006E004D0065006E0075005D000D000A00470061006D00650031000D000A000D000A005B00470061006D00650031005D000D000A0041006300740069006F006E003D002200440065006D006F0022000D000A0044006900730070006C00610079004E0061006D0065003D002200500072006F0062006C0065006D002000470061006D00650022000D000A00460069006C0065004E0061006D0065003D002200670061006D0065005F00640065006600610075006C0074002E0078006200650022000D000A00460075006C006C00530063007200650065006E0056006F006C0075006D0065003D00220031003000300022000D000A00520065006D006100700050006100740068003D002200310022000D000A000D000A005B00490064006C00650041007400740072006100630074005D000D000A00470061006D0065003100'
        )
        ldr_ttf_bytes = binascii.unhexlify(
            '00010000000B0080000300304F532F32BB42883B0000013800000056636D6170D07E3EE600000BC4000005D267617370FFFF000300002F2400000008676C79665F5397FB000016B40000002468656164DF088070000000BC000000366868656108D50DFD000000F400000024686D747802B700000000019000000A326C6F636111CA11DC000011980000051C6D61787006ED003600000118000000206E616D656C583E5D000016D8000004DF706F7374E7591CF300001BB80000136C0001000000010000BA14BA145F0F3CF5000B080000000000BF4C92F000000000BF4CA2590000025D015203CC00000009000100000000000000010000073EFE4E004308C000000462015200010000000000000000000000000000028C00010000028D000500010000000000020010002F00420000040C00000000000000010388019000050008059A05330000011B059A0533000003D100660212000002000000000000000000A00002AF500078FB0000000000000000484C202000400020FB0205D3FE510133073E01B26000019FDFF700000000060000000000000002390000023900000239000002D700000473000004730000071D0000055600000187000002AA000002AA0000031D000004AC00000239000002AA0000023900000239000004730000047300000473000004730000047300000473000004730000047300000473000004730000023900000239000004AC000004AC000004AC000004730000081F0000055600000556000005C7000005C700000556000004E300000639000005C700000239000004000000055600000473000006AA000005C7000006390000055600000639000005C700000556000004E3000005C7000005560000078D0000055600000556000004E3000002390000023900000239000003C100000473000002AA0000047300000473000004000000047300000473000002390000047300000473000001C7000001C700000400000001C7000006AA00000473000004730000047300000473000002AA00000400000002390000047300000400000005C7000004000000040000000400000002AC00000214000002AC000004AC0000055600000556000005C700000556000005C700000639000005C7000004730000047300000473000004730000047300000473000004000000047300000473000004730000047300000239000002390000023900000239000004730000047300000473000004730000047300000473000004730000047300000473000004730000047300000333000004730000047300000473000002CD0000044C000004E3000005E5000005E500000800000002AA000002AA000004640000080000000639000005B4000004640000046400000464000004730000049C000003F4000005B4000006960000046400000231000002F6000002EC000006250000071D000004E3000004E3000002AA000004AC000004640000047300000464000004E5000004730000047300000800000005560000055600000639000008000000078D0000047300000800000002AA000002AA000001C7000001C700000464000003F400000400000005560000015600000473000002AA000002AA00000400000004000000047300000239000001C7000002AA00000800000005560000055600000556000005560000055600000239000002390000023900000239000006390000063900000639000005C7000005C7000005C700000239000002AA000002AA000002AA000002AA000002AA000002AA000002AA000002AA000002AA000002AA00000473000001C70000055600000400000004E30000040000000214000005C70000047300000556000004000000055600000473000004AC000004AC000002AA000002AA000002AA000006AC000006AC000006AC000004730000063900000473000002390000055600000400000005C700000400000005C70000040000000473000004730000046B000005560000047300000556000004730000055600000473000005C700000400000005C700000400000005C7000004EB000005C700000556000004730000055600000473000005560000047300000556000004730000055600000473000006390000047300000639000004730000063900000473000005C700000473000005C70000047300000239000002390000023900000239000002390000023900000239000001C7000005E10000038D00000400000001C700000556000004000000040000000473000001C700000473000001C7000004730000025500000473000002AC000005C700000473000005C700000473000005C700000473000004D5000005C900000473000006390000047300000639000004730000063900000473000005C7000002AA000005C7000002AA000005C7000002AA00000556000004000000055600000400000004E300000239000004E300000300000004E300000239000005C700000473000005C700000473000005C700000473000005C700000473000005C700000473000005C7000004730000078D000005C70000055600000400000004E300000400000004E300000400000001C70000055600000473000008000000071D00000639000004E3000002AA000002AA000005570000023900000646000006B40000031200000632000006D800000605000001C70000055600000556000004680000055800000556000004E3000005C700000639000002390000055600000558000006AA000005C70000053300000639000005C700000556000004F2000004E3000005560000066200000556000006AF000005FB0000023900000556000004A00000039100000473000001C700000460000004A00000049A000004000000047400000391000003870000047300000473000001C700000400000004000000049C000004000000039500000473000005850000048D000003DB000004F000000329000004600000053000000433000005B40000063F000001C70000046000000473000004600000063F00000557000006EB00000455000005C0000005560000023900000239000004000000087500000815000006D5000004A900000515000005C0000005560000054000000556000004550000056B0000055600000763000004D5000005C0000005C0000004A900000540000006AA000005C700000639000005C000000556000005C7000004E3000005150000061500000556000005EB000005550000075500000780000006550000071500000540000005C000000815000005C7000004730000049500000440000002EB000004AB000004730000055A000003AB000004780000047800000380000004AB000005800000046B00000473000004550000047300000400000003AA000004000000069500000400000004950000042B0000066B0000069500000500000005C00000042B0000041500000600000004550000047300000473000002EB0000041500000400000001C700000239000001C700000740000006800000047300000380000004000000046B000003E90000034A0000078D000005C70000078D000005C70000078D000005C70000055600000400000008000000046B000001C700000180000002D500000400000002AA000002EB00000473000008C0000007150000029600000895000004CD000006AC000006AC000006AC000006AC00000800000004000000080000000400000008000000040000000400000007D5000005C0000004AB000004D5000004AC000004D5000004D5000005AB00000500000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005D5000004D5000004D5000002D6000002D600000800000007EB000007EB000007EB000007EB000004D5000004D5000004D5000004D5000002D60000082B0000086B0000075500000600000006000000044000000540000004C0000004150000040000000600000002AA000000000000000000020001000000000014000300010000011A0000010600000100000000000000010200000002000000000000000000000000000000010000030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F60610062636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAAB03ACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD000D1D2D3D4D5D6D7D8D9DADBDCDDDEDF000404B8000000D6008000060056007E0111011D011F012F01310140014201510153015D01610177017F019201FF02C702C902DD037E038A038C03A103CE040C044F045C045F04911E851EF32015201E2022202620302033203A203C203E2044207F20A420A720AC21052113211621222126212E215E219521A822022206220F22122215221A221F2229222B22482261226523022310232125002502250C251025142518251C2524252C2534253C256C258025842588258C259325A125AC25B225BA25BC25C425CB25CF25D925E6263C26402642266026632666266BF002F005FB02FFFF0000002000A00112011E0120013001320141014301520154015E01620178019201FA02C602C902D8037E0384038C038E03A30401040E0451045E04901E801EF22013201720202026203020322039203C203E2044207F20A320A720AC21052113211621222126212E215B219021A822022206220F221122152219221E2229222B22482260226423022310232025002502250C251025142518251C2524252C2534253C2550258025842588258C259025A025AA25B225BA25BC25C425CA25CF25D825E6263A26402642266026632665266AF001F004FB01FFFFFFE30000FFFD0000FFFB0000FFF90000FFF70000FFF50000FFF10000FF14FF740000FE0F0000FCA0FDF0FDEFFDEEFDEDFDBBFDBAFDB9FDB8FD88E39AE32E000000000000E085E095E1F3E084E1EBE1EAE077E1AA0000E184E010E127E11AE118DF6ADF79E101E0D5E0A4E092DE96DEA2DE8B0000DEA600000000E013DE71DE5F0000DE30DF3CDF2FDF20DD42DD41DD38DD35DD32DD2FDD2CDD25DD1EDD17DD10DCFDDCEADCE7DCE4DCE1DCDEDCD2DCCADCC5DCBEDCBDDCB60000DCADDCA5DC99DC46DC43DC42DC25DC23DC22DC1F10BE128705BE0001000000D4000001B4000001B4000001B4000001B4000001B4000001B80000000001C2000001C200000000000000000000000000000000000000000000000001B401B801C60000000000000000000000000000000001BA0000000000000000000000000000000000000000000000000000000001A0000001A001A2000000000000019E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016A00000000000000000000000000000000000000000000000000000000000300A3008400850100009600E60086008E008B009D00A900A40010008A01010083009300F000F1008D0097008800C200DC00EF009E00AA00F300F200F400A200AC00C800C600AD006200630090006400CA006500C700C900CE00CB00CC00CD00E7006600D100CF00D000AE006700EE009100D400D200D3006800E900EB0089006A0069006B006D006C006E00A0006F0071007000720073007500740076007700E80078007A0079007B007D007C00B700A1007F007E0080008100EA00EC00B901020103010401050106010700FB00FC01080109010A010B00FD00FE010C010D010E00FF00F600F700F800D500E000E100AF00B000F900FA00E200E300BA0169016A016B016C00E400E5016D00D600DF00D900DA00DB00DE00D700DD00B100B20222022300B500B600C3022400B300B400C4008200C1008700F5022A009900ED00C200A50092023B008F023D00B8027B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200010000025D015203CC000400001B0237017649840FFEAE03AFFEAE016807FE990000000000002801E600010000000000000034000000010000000000010009003B00010000000000020007003400010000000000030016003B00010000000000040009003B00010000000000050030005100010000000000060009003B000100000000000A004000810003000104030002000C02AF0003000104050002001000C10003000104060002000C00D10003000104070002001000DD0003000104080002001000ED0003000104090000006800FD0003000104090001001201730003000104090002000E01650003000104090003002C017300030001040900040012017300030001040900050060019F000300010409000600120173000300010409000A008001FF00030001040A0002000C02AF00030001040B00020010027F00030001040C0002000C02AF00030001040E0002000C02CD0003000104100002000E028F00030001041300020012029D0003000104140002000C02AF0003000104150002001002AF0003000104160002000C02AF0003000104190002000E02BF00030001041B0002001002CD00030001041D0002000C02AF00030001041F0002000C02AF0003000104240002000E02DD00030001042D0002000E02EB00030001080A0002000C02AF0003000108160002000C02AF000300010C0A0002000C02AF000300010C0C0002000C02AF'
        )
        with open(ldr_xpr, 'wb') as f:
            f.write(ldr_xpr_bytes)
            f.close()
        with open(ldr_inx, 'wb') as f:
            f.write(ldr_inx_bytes)
            f.close()
        with open(ldr_ttf, 'wb') as f:
            f.write(ldr_ttf_bytes)
            f.close()
    elif Loader == Loader2:
        evox_ini = '[Misc]\n\
AutoLaunchGames		= No\n\
AutoLaunchDVDh		= No\n\
UseFDrive			= Yes\n\
UseGDrive			= Yes\n\
SkinName			= loader\n\
IGR					= No\n\
UseItems			= No\n\
[Network]\n\
[Clock]\n\
[FTP]\n\
[Telnet]\n\
[RDTOOLS]\n\
[BIOS]\n\
[Skin_Original]\n\
[Menu]\n\
Section "Root"\n\
{\n\
	Item "Press (A) to launch ' + Game_Title + '","%s\game_default.xbe"\n\
}'

        WriteINI = open(Game_Path + "evox.ini", 'w')
        WriteINI.write(evox_ini % (Game_Path[:-1]))
        WriteINI.close()

        if not os.path.isdir(os.path.join(Game_Path, "skin")):
            os.mkdir(Game_Path + "skin")
        if not os.path.isdir(os.path.join(Game_Path, "skin\\loader")):
            os.mkdir(Game_Path + "skin\\loader")
        background = os.path.join(Game_Path, "skin\\loader\\1.jpg")
        background_bytes = binascii.unhexlify(
            '89504E470D0A1A0A0000000D4948445200000280000001E00803000000020F2CD6000001C5504C54450000000201020000010404050F0F1205050610101333333C27272E11111441414C35353E2929302323291D1D2243434E3D3D4724242A1E1E231212150606072B2B3225252B1F1F2419191D3A3A432D2D3426262C2020251313163C3C4535353D2E2E351B1B1F37373F2222271515180E0E1007070816161927272C26262B17171A28282D18181B0808091A1A1D09090A0A0A0B0B0B0C0C0C0D0D0D0E44455145465247485441424D4E4F5C494A5643444F4C4D594B4C584748534647524F505C4D4E5A494A5548495451525E50515D4B4C574A4B564E4F5A4D4E594F505B3738423D3E483738413637403F404A393A4338394240414B3B3C453A3B4442434D3D3E473C3D4645465044454F3F40493E3F4846475141424B4A4B5548495343444D30313931323A33343C2D2E3535363E2E2F3638394132333A31323934353C33343B36373E21222823242A28292F27282E292A302A2B312C2D332B2C322F30363233391D1E2320212621222723242925262B27282D292A2F191A1E1B1C201C1D2144464F1F202411121513141715161917181B191A1D1B1C1F1D1E210B0C0E0D0E100F1012141517070809090A0B0B0C0D010202030404050606030303020202010101FFFFFF0E73829B0000009774524E53FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F19F9813000015DA4944415478DAEDDDFF6393459EC0716AA95B0465C12E0211A458A0574185AE9830CF53661E6F268FB7B8F2A580C0EA75DDBAE07187A2E7ADC29D7B6E593D77B9DD2D24FFEFCDD7346993B4E9D2F2C3BD5F94A4499E3C4FD24C663EF3F5D9B20500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FE1F1B9E9A5898989878E82E161E1C19F8F9CD67271E4E3CB0FB587868F770FC68FB63CF6CB38FB99F070F2692870FC3F542BC39B1B0B030F1203CB2E06E6FED73AC030FD24E1EFA1DFB27D89F87FE7777D9EEA13BD883E98E3DBC786C21BC24FFB2C606FF732DBD8D870BC75E6C9280FE5ECDD7AB55213221AB5288B3F5E707FC9336769C95A51452BAFFD5777635DA1FFCD7B352B8DDCA52887ADD5E57AB7643BBBDDBB80CCFA90BFFEC708FDDBA2EF7F67CA99FFFA3AC8AD2BED2BAA896EE09A2AC977E3FA5CCFC6E4BB717FB8AC4BB6E8F75BFE73FB4EFE3E4EC3BF6A5C877AB7617557975D02FDC1B17CE96A2EEDE93F5CEEC9BA49F27E0CD5F654AA942E585514ADE1C1EE4B923F3D23ED3FE18FB7C91777CD65BC66551D87DBA8B9ADBA22854E1B72EF2C25F2965DC8FFFC5B87BDDAF35F1628F83EDB2FBB3C7712FB3F05BFB97ED6E29777C7FCB3E6AEF50B93B52EE37D1E664FB4E1E7F218D7B557E73A3C707FAC22DA8CCBFE0BCC895AA7EF198C4F3644AE18FAB313DD88F535C38B9F667FE38AB8BF8B92B955D39D1F1E01161E24EED67E6929F4B772E15DA84916B77690F67AFDD5D46F9C4E7F655988F8E763DD8949C2962820B4939A444FF5CE59270D84748D3B9DFD26FA82F2C76E4A32F94DA7F0FEC46C69CFDBCB1F6C2E255A9C27BB1295BD77753FE3EB162F8DF84FBE8DCD7DA7D90136B7DDE5E97C48C0A8957EEEFF89CB72CBE1D1260A1522EA77C82B319531E92867B280FB962C80D7DF2544A1CEEF6D1BEE1D2AACB27E34E7D6E171360785EAEC2BB708FE42A26679BCECB2F3AF7B4F58630E9551BF94F6B0D04876FD5435A775F259D6F23DD3C41C76A35FB69E6FE63D5F55D436B0AFF5EAB86CFDF25A29A7C6959AA9914BEFC0DC56C487F2185A79C4BA55253E5F1634DD960B54B18D83C27C2738AB4B15ADAA7CD557D21EE33D93C266A7FE4C2A6F8422E4B2C47DF2FDDC63EC116D95B6B0B04DFBC2EE281ED31B28B4749344FD4C90BA2083989FD5F7F6564F5678C1D4E219ECD6DB2FCC515195611129E69A5B19079B9B4E2E3CD3CE664A1E8B5419C3131A2331FAC0C448F577DA6E55F63AB308F795F4C7A210DB7B2D358F8BB30F0FAB272B671B76A5AC736E2FB35FC81265CF8A9C2619424FCDB8040B0DE2A0C95985D35103C352B4C4A0145F6D313CB1FFF248B65A03229C7323AE484DA8400CD840CD2F872DF1813C3497BAF7C79C5CB3B6323AF3C6E5DF3E9D5EDC3982296C5213D29ED6B1726A57697CBD94D5666A9E342A7AC3757D55503C1E63765C8705D1CA0E5FF10FE3D79431569626DC0550F8FF5DFFA7866426A70A59FFC6471F9E37F1131FC9BA985CA6DEE8B4677A9F2D3EE69A7DD651EF2B13CD45A8B5097B505FA99E559E0B88C419B4B7FB6AA1CBE2A3E8874A56E91C7141863CD2216956EAF36E5EA0B2B52D891AB42A54C5389F7FA0782C3FF522F5AFB36847F1B64CA978121D052624F9F5CA15191B5988DB94DBBD407EF48DF0C6294FE786C646464CC5E3C1A7B34E6AEED7F7B6D6F3C1A79E41FF037ED1D23472FE9585FA91E5F76C06BBE88B6E9AD7C3E6D3FF2A875FDC85E3C8A77FB5D3D7207197973B688556CB9B0E2151E7D5FE4BE24B7A9DFE8FF9EEE1B9F6421F9BB542D2EFD2F4965839C9A2D558CACEC67D63B101C99F701A3CFB60A5174C9108667E2E765C4208DB5DB64C8809539DF99A6B7D50BE3EBC0E65783445FDFCB58B5D79F3ED3A50DDD666BEE3B67F3E4BC5F20F820342DDAC3DBA45ABF4BF8B77146B697A14C72598378FBC71EE97467D96A37C9BB847FD681324673E26703B5076DD7BEA833A6EC4CB79FC818D1D58F0FB2BFC62F429C69134FB757F9BAB0D1646E429A9777BA67F9CD5D65A89AF9966BF102E1DF466A54446ABBB301BD9EEA1EFE69D58A87EAFB17BB6DB35FC766E5EC8D818EFFAC0CF9AF91BB3B33541D7A4ABA0473FD9B97A4FF1EE4851CEFF6F0F419DDAA5817F2DC48D7CAD9BB2EE185FA5936F32C696483F9DA858A155C5969AC4CA2D5D888EB3A1964F7EE80C5AB2677798B119F0CF805B8125284C93A1AA3B78990000AF1C380FB9B35A12EAE6F3ED3B52DE95CDD95AEBE2DB1103B570682279F132A75F2A9721FAD7F1B6F7AA7F08DBABE9415F323CBC33F199A92DD27D2B33B605AC60CB01C34C718AF874E6355B41F78342B42FFEDCCC880FB7B29F49E15EA46F73EEEC61D191B3F5DA34EF6C795F5B2D8A747EBDFE6058287658877DC9F3DEBCC154EBD2D62A3B2FD44CACB277AECE25B11FB297ED918F0E08F520F89681B96D5BCA843E5447C31E89B39A1C38085BCFEA71E5BECCD74ECC653AA26EEB7BFE0C61E598BA316D487A6FC3DE1DF26B5088E96A1AFD42535A3DBC2FE3F8A56778052F2373D338443A12E51887B831EFB99B9183D8AB6207044C536EDEAC02D70CDC3A1F5BBA87EDBBBEE1F4A59DF7D2C6E2FE5B123AF883486C706B36F11FE6D9EBD65E6837E9FD795295718DA234DABFAA1C57FF4CC1086AEF8E12F46955B073EF49438AD6C0059E8B6E8713A0D6B786B78E0FDBD2043A55EDCED93E597796C91769D40D3ADDC5EA7BB6DF14BE7EF660782451A5B5288F9B19021C8A248BDFF65BFEE80E110D417E6EAE009E684CB735CEABDBC54184ED543739EF8C9E0EFE464E81254FAB7CD3E75FFD22CF548C72C7F4A87D6673FF8AABE9FF06F738D9D93A114759F897681E0A9D9D059EBFB58BBB7FE256E20824B467A7EF0A8A9F18B2C74AADD582A0BDD383C9728CBDD83BF91C5336180AA9AED9784A6321306B8BAB75BDABA7FA322D39B3536B727FCDB748D3B5553A4C8C864531326CB8BD8615BAC9221B85613F7D4FA37EB38F09759EE7BDDDA5A107F96C53AC83AC2B0E6BC8EC3A7FB76F79EDAE9DF5EE85B2C3F9DFE54F8CE645F85CEDEDA4A7A780ABE17BA35CEDD164CBE60F47993E913FE7913320C0B1507D671D87111861C2F55389AAFA441CF27D6B1BF7B220FEFA07F93F8C876A1E2A809FB66B58EFD23B6865C5E22FC7B3A8E5CF51F43CA177CF1E4AA07377A64448D5D77EE8CDE1F7D6DF4BC0E09B03657A9ECD953B95FA9DCBB5719AD542AA3A3EE8E3DF746ED5DD61E7B35EA1F1B750FDFB3FF2AF73EF6C734F2622BB535F7F99A6C71FA83E175BC8B6FCB3006ACBACAB8D3C63DA963AF487ACFAE08A0F3F7690682E7AB6988531879E0DB470EF6CA87160B294A214416A66DB82850C8CC4DB92BEDDD65E66692B9C7B5F033D944A6DDA57F38CB8C7B28B3FFDD883B955D9F581A95DDB81CE679E8CBEB89C40EC81090CA3FAFB6E51F75EC898E430ADDD3B4F89674F01403C1BB553F75278DC5B3C9B0DA3BFC7B3C1B07D2C421F6298ACF559A8556A4796C3E7B4973E37CD99EDA3BFC58F9EC50A363BFB5F08CF3EB49805B45CDCF24E939D9AEADC63CEBBBFC8CF6DD88EED76C86F0EFA96A8EFB9A8749E38C8DEA33176C713674D2A5D1EE31898574A8546BF4BDCDCB8A348FB22DBDA611D436B5D45FEAD8EFCE10039AC3EB4980D37188599721812B03C18F6B45DB4BFE50BF4FF8F7B48D8B30C43844E8F2A53E9B3E8E0D356936B06A4DFA0843E67D4ACE8BD4939C26B6A5BA8D0A434E5D86287ED7D1AC78D58F5355B58FD793004F9571B0CB1A12E096C6791DBF38AE13585F1B26013C655BAFC5C943A16AA07ED9A725C4E5802ACCDA314B53E0D2B4A4D4E71FDA99E3A3B1FD376D9BFA59C4CB9D4D7971B2C82BEB49804742479B5A4B026CBE1ADBA37DF5C35EEEA002F274ED153ACCF78E03103E52E2F7CFAC120386E2562D4DCF588AFED282084528A0F39994FA72A55B133A6C3217958E6CE982BFD7A8DFAE2701FE59FA569DBCBE7A9BD0F04FA40DFEDCB43D1D5FADDC374622788A75903BB2162738E6AD09C0F52F7BE50A8B6F695373A3864D6B8290D646FB196FAA6644AD666AC6DF117EDC3439E51FAFD9FFDACA8C16359F80EFB6055F6E42884F9B571AEB781313223CBBBEEA400637F62F4CD5CB5386ADC4074748074FCBC8B9B29579153E8BF23543D9AB61F6F17B072F5E3C78E9E2C1D958D2AA6B17ED1D97AF5CBC78C95E5F39E86E1D3C78E5CA45FBEB9583EED783EE0E77B77FC8DE79E5D273BEB4D5EAE5566A6B5EAA855771633D21D96E19E60F88D552D2B142A73ABAF2EB8784725F8C3F4352782AA6AF8A3005DC7D245ABB19397E366FEF96E8A633D46C7E5F353EB1CAE3EE56B3F9377B39E4D8ABC650B86FC8DDE3EF6D0E0D85270E35FF66FFBDE47B2466CCD9A59E90DB71104EB69E9E902F74882075FF9E90A15D52877E46575712591C96E816EFF8BC4162782AE19F694DD83562F7B8083559573AE9B2FFD49C1785CF2B0BB1AEBEE090EC55DBB4A4433A8C825D4353DECA2FC545131B1BFB467323AF6445AA2B1572DF1FF6C93814C31E5A9C2710DCFCF0EF7EDDF7BCF90533845B78635B2E425564C626C8DE81A00FA6B2381C6BFB3A46C35C37612999D38F5AF7ED2A438BB67875F0373216EB3DFD47C39C9C95AAB5A09638B4B8E5F1FE6A1A215898EC2A81E0261B7BAF353BCE4641D77DE975E2A048CBA9D84CA25F0FFDC8E9308EC6CCAC633C601656D628AE2D157C7BCB9036B2738327E817ABA14AA1F7F579EE941161C919B7EE429867DFDC5DD6FC1A83AE0B9C4070939DFA40FA06159FE355D3C21B8FF7CBB4F099AD93F499A1D8B89CA6160F9E731C0B7586427FDA6C6BCAF3B1A74D1C83774CEC285D02344AECEF1DFE5564EAFFC895FE2895F3DB8A4CA561AA4579974070F34CC579143E4B902FB75242F33B118A65BF9269BD7720386742FB5EF6FCC0C7FEF7302040895D6DF9716CD751F5BD83EEEEF13F87F99C4AF61CCC3AB25DAA3404A1109797EA2A27AEB89E70152A54757AE536CB50458486623FB15C75B4DF1E38AD5BDD154AF61CA8B45BC445D2AE0D0D78F09199D80C576DAB700C5D71E395DDDA1C030FB1DE26C302C04AF6CAB04FED14795CF672A69073ED41C3E22111EBC27E7E01E31236A7F56F5EA8D89B962B71ED2F9D8FBE71BD8C1D1AAEB1A2D744EDAD698D19393D68092C7C638FDD79FBAEEF8AD82E9C0DBA2CF87E9DFAF97ACC283E2E749E5A3B6BE2EBCE04DEFCAE0C3D347EB4B4186760FE26847F6FEB344EA528EA732B16DE189E93715CB4CD9044FE6C8F7CCC8458B1CF5CB4EE8D26874518FBD539F4EA98F44920CFB31D83EDEFA889434C75F79134AEB21F7AAF7DC7F4CAC5890FD88CD7F15F495A0437DE319DD689CC7323BFEEF2A935BFAE87693EEE43E9355BFBA688C5F447832D65704AC4D1D765478BCBD1B45C8DFA70B026B9E7AB710DCCEEF3991EB9F46EE27282D92FBB65AF6F5CCFC2BAF8AE4C2809043738FCDB255BEBB329AD7A74DF4F14591AB56E03C1AE03548FD7431A1EB4E9EE908E43FFC5A9CE8CD1C41513C4CB83EC6EF82D13D711E9BA4A9C5F85240D352B7B9CA062F1905B553F0E1DD337080437D0F0A7225771D1511BFEF5ECBB7AF342E91AC7C2FAB75DA76C8FA9D88FA5F24703BC8093C2F786D944F1D3CEC26E4AA491341F2C0EB0BFF16A9C59DAB515706F560BEBA8BA1C5DEEE915E035BF93264F8BF26BF10381E046F9EB85B270A3915CE36B51CEF569441EBE295BE3FB6C90D42510FC8D080BF09A724773CDFEE64AEE193F17FE856507FCB91F8F630FF7EEEB5BD6DC26FCF87A187D684C97F69BC69D7A5C22D8E5F6A6DF92C407C2088530284C32496923C3BF78F60225FB9FB3ABD95656DBBAC8CA40705A9A341AF5DCFCFCF6DBF3F3B70FDB8BF9C3B70FDBEBDBEEB6BBE9EE71BFDDDE6EAF0FEF8BD56F9BD296877ADFA405DAD499B95FCFDD72FFAC9B37BFB2975FCDB91B73376FDDBCF5D5CD5BFE7E7B73EED7B7CEA5F0AE4B97CCD8F96A3A5F842D7EDFFE6BDF3FCD1B97CBD68924E81ADE18CD7B32B53E2B23563F59CD54A6F3D65A962B172E6BCEEB7016195BFC193F2C50B84180DA4FB935220C00B417991035FB4BE61F8AA713B155904A97323DCDCD136ECBCC0861B2CCEE2A7337B576D76E869D7D24CB327F9C2C068E459755F78FECCC8A744E25537D6FB5AAD2E25C75E9B4268289EA1B10FE7D2CE2F9366C92C99E5B43739B5BA92DAC23E88609AC58B9FB4F422D9D1C2E4DFB08E5689ECEEED03A5F9C0E134272DF7F57A85A6D651EF37519CF0117CEC890C76F8B49BB486D293E45A9B623B8DF7EBE3C037C5D8693CE85DCBEB27AEB4AF377B2B508BF51E207BA869F2C779E9AB00C8CCB2FD676C2C291F7649A566993D08DE5038E0FC9D6E2B7262FD2F4E25613A30933300B954ED295C7DCCFF587FDAE4B3CF79C56C5D21996D2B5693B15581C869DCEA754F86E3477E3EC7F2D0BFF3E17A6F5A2B458DBB2D3AE4530255A53FD9216C12769C24F82089F5D2DFB668DF5BCC66BD5A5498CB5E5CB778FF9D5BFC35A5A793AA59C699D97302FD23A04A17211CE59E8CF3053BBDEEDD3FDB348292FCEAB33E98420B96FF089D3068AD8F092E72A9ECBB0D0CB06D18C9DCF54EB8B909D596B67CD9BD7C4D2099868117C92E1DF377ED9D370D619638EADFD997B852EC2A4395B7D5E3E657DA1EECE6894A78971ADF3D084A273698E9C4A67C789419EE96C036C79BE9A32B9D4BB61425B63E13B2B8A306D2F6F4D418E3BB6B73B07526FBD5A860DDD36E5B9B5D728166FC9B8EFDC86B54C597F62E1DFCD7A1103275BFAFDEAE420CF9D3E93A5A2D0E4E2626720E8463999A57312C6BCD214711A66D19A6F12CACA34FEB0FA7A8FEFC94DD1B64643CA8AD2ADBC55296FAD7B1F4FED2B3BDBD3C7DD5E66D2BAE43B06294A9B5F0B13D7757063A559B4E389F8F16A35B3954829DCF22C039EAFDAAD2378362CFA22EC1EAA59C767DD3C74B6F48BC1F82DCACC2D0793B9F55FCA2C2BEB6E8D18A15D6DD6DE692BB3E1A4EA429CADF46CD67BBFEA579AC9DC8BD56EDBCC1F3A135511D6951159F8C9B474C72CDD5A35D5DF777CDBE6CEBA27496977A3CB8187174CD86A7B29EAE1C0EFCC2D927CFEFEFC6F74475CB76A72F21FEEBC30E8F0A92D8DEF5EB3CFBD5F99742B5F7DF67947EF49E3D5CF2AF681CAA4DF7DC55DDFB7BF4EDEB11B8F4E4EDA9F70E117CB1AAD8CDA1BA3A37DD6FE18BEF7D9A47767D2ED6174F2FE64E533B7A7FBF689F677773539E9DF8DBBEDB7F9CF8EFCB439FE85BB73F4FEFDCFEC7677061F2F7BF2B3F0D2EF4FDA5FBE64780C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C05AFD1FD66DAA696E4836270000000049454E44AE426082'
        )
        with open(background, 'wb') as f:
            f.write(background_bytes)
            f.close()

        skin_ini = 'SkinName "loader","loader"\n\
[Skin_loader]\n\
LogoType		=	4\n\
Main			=	"\skin\loader\\1.jpg"\n\
Launch			=	"\skin\loader\\1.jpg"\n\
BarColor1		= 0x\n\
BarColor2		= 0x\n\
BarAlpha		= 0.0\n\
MenuColor1		= 0x4a4a56\n\
MenuColor2		= 0x4a4a56'

        WriteINI = open(Game_Path + "skin\\loader\\skin.ini", 'w')
        WriteINI.write(skin_ini)
        WriteINI.close()
Example #4
0
def prepare_loaderxbe( self ):
	
	print Game_Path

	## DEFAULT XBE TITLE
	default_xbe_file = open( os.path.join( Game_Path,'default.xbe' ),'rb' )

	#move to base address
	default_xbe_file.seek( 260, 0 )
	base = default_xbe_file.read( 4 )

	#move to cert address
	default_xbe_file.seek( 280, 0 )
	cert = default_xbe_file.read( 4 )

	#get the location of the cert
	certAddress = unpack( "i", cert ) # init32 values
	baseAddress = unpack( "i", base ) # init32 values
	loc = certAddress[0] - baseAddress[0]

	#move to the titleid
	default_xbe_file.seek( loc + 8, 0 )
	xbe_certificate = default_xbe_file.read( 168 )
	default_xbe_file.close()
	
	##
	# I'm not too worried about reuising all these vars...
	# ATTACH XBE FILE
	attach_xbe_file = open( os.path.join( Game_Path,'loader_default.xbe' ), 'r+b' )

	#move to base address
	attach_xbe_file.seek( 260, 0 )
	base = attach_xbe_file.read( 4 )

	#move to cert address
	attach_xbe_file.seek(  280, 0)
	cert = attach_xbe_file.read( 4 )

	#get the location of the cert
	certAddress = unpack( "i", cert ) # init32 values
	baseAddress = unpack( "i", base ) # init32 values
	loc = certAddress[0] - baseAddress[0]

	#move to the titleid
	attach_xbe_file.seek( loc + 8, 0 )
	attach_xbe_file.write( xbe_certificate )
	
	# Custom fix for Men of Valor, but the game resets when you select one of the training mission, so this patch is pointless :/
	if TitleID == "56550019":
		attach_xbe_file.seek( 62, 0 )
		MOV_Fix = attach_xbe_file.read( 1 ) 
		attach_xbe_file.seek( 280, 0 )
		attach_xbe_file.write( MOV_Fix )

	attach_xbe_file.close()
	try: # this is to move on if there is an error with extracting the image.
		xbeinfo( os.path.join( Game_Path,"default.xbe" ) ).image_png()
	except:
		print "| Error: Memory ran out when trying to extract TitleImage.xbx."
		print "|        So using alternative way."
		try: # if the memory runs out this one works.
			XBE( os.path.join( Game_Path,"default.xbe" ) ).Get_title_image().Write_PNG( "Z:\\default.png" )
		except:
			print "| Error: Cannot extract the default.png, haven't a clue why maybe its in DDS format?"
	if os.path.isfile( 'Z:\\default.png' ):	shutil.move( 'Z:\\default.png',os.path.join( Game_Path,'default.tbn' ) )
	if os.path.isfile( os.path.join( Game_Path,'default.tbn' ) ):	shutil.copy2( os.path.join( Game_Path,'default.tbn' ),os.path.join( Game_Path,'icon.png' ) )
	if os.path.isfile( 'Z:\\TitleImage.xbx' ):	os.remove( 'Z:\\TitleImage.xbx' )
	os.rename( os.path.join( Game_Path,"default.xbe" ),os.path.join( Game_Path,"game_default.xbe" ) )
	os.rename( os.path.join( Game_Path,"loader_default.xbe" ),os.path.join( Game_Path,"default.xbe" ) )

	if Loader == Loader1:
		if not os.path.isdir( os.path.join( Game_Path,"480loadr" ) ): os.mkdir( Game_Path + "480loadr" )
		ldr_xpr				= os.path.join( Game_Path,"480loadr\ldr.xpr")
		ldr_inx				= os.path.join( Game_Path,"480loadr\ldr.inx")
		ldr_ttf				= os.path.join( Game_Path,"480loadr\ldr.ttf")
		ldr_xpr_bytes		= binascii.unhexlify( '585052300010000000080000010004000000000000000000290C110100000000010004008000000000000000290C510500000000010004008002000000000000290C110100000000010004000003000000000000290C110100000000010004008003000000000000290C110100000000010004000004000000000000290C110100000000010004008004000000000000290C110100000000010004000005000000000000290C110100000000FFFFFFFFADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD6111ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD00000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD0000ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD0000ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD44CAADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD0000ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD0000ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAD' )
		ldr_inx_bytes		= binascii.unhexlify( 'FFFE5B0043006F006E006600690067005D000D000A004100700070005400690074006C0065003D00220034003800300070002000470061006D00650020006C006F00610064006500720022000D000A0041007400740072006100630074004D006F0064006500440065006C00610079003D002200300022000D000A000D000A005B004D00610069006E004D0065006E0075005D000D000A00470061006D00650031000D000A000D000A005B00470061006D00650031005D000D000A0041006300740069006F006E003D002200440065006D006F0022000D000A0044006900730070006C00610079004E0061006D0065003D002200500072006F0062006C0065006D002000470061006D00650022000D000A00460069006C0065004E0061006D0065003D002200670061006D0065005F00640065006600610075006C0074002E0078006200650022000D000A00460075006C006C00530063007200650065006E0056006F006C0075006D0065003D00220031003000300022000D000A00520065006D006100700050006100740068003D002200310022000D000A000D000A005B00490064006C00650041007400740072006100630074005D000D000A00470061006D0065003100' )
		ldr_ttf_bytes		= binascii.unhexlify( '00010000000B0080000300304F532F32BB42883B0000013800000056636D6170D07E3EE600000BC4000005D267617370FFFF000300002F2400000008676C79665F5397FB000016B40000002468656164DF088070000000BC000000366868656108D50DFD000000F400000024686D747802B700000000019000000A326C6F636111CA11DC000011980000051C6D61787006ED003600000118000000206E616D656C583E5D000016D8000004DF706F7374E7591CF300001BB80000136C0001000000010000BA14BA145F0F3CF5000B080000000000BF4C92F000000000BF4CA2590000025D015203CC00000009000100000000000000010000073EFE4E004308C000000462015200010000000000000000000000000000028C00010000028D000500010000000000020010002F00420000040C00000000000000010388019000050008059A05330000011B059A0533000003D100660212000002000000000000000000A00002AF500078FB0000000000000000484C202000400020FB0205D3FE510133073E01B26000019FDFF700000000060000000000000002390000023900000239000002D700000473000004730000071D0000055600000187000002AA000002AA0000031D000004AC00000239000002AA0000023900000239000004730000047300000473000004730000047300000473000004730000047300000473000004730000023900000239000004AC000004AC000004AC000004730000081F0000055600000556000005C7000005C700000556000004E300000639000005C700000239000004000000055600000473000006AA000005C7000006390000055600000639000005C700000556000004E3000005C7000005560000078D0000055600000556000004E3000002390000023900000239000003C100000473000002AA0000047300000473000004000000047300000473000002390000047300000473000001C7000001C700000400000001C7000006AA00000473000004730000047300000473000002AA00000400000002390000047300000400000005C7000004000000040000000400000002AC00000214000002AC000004AC0000055600000556000005C700000556000005C700000639000005C7000004730000047300000473000004730000047300000473000004000000047300000473000004730000047300000239000002390000023900000239000004730000047300000473000004730000047300000473000004730000047300000473000004730000047300000333000004730000047300000473000002CD0000044C000004E3000005E5000005E500000800000002AA000002AA000004640000080000000639000005B4000004640000046400000464000004730000049C000003F4000005B4000006960000046400000231000002F6000002EC000006250000071D000004E3000004E3000002AA000004AC000004640000047300000464000004E5000004730000047300000800000005560000055600000639000008000000078D0000047300000800000002AA000002AA000001C7000001C700000464000003F400000400000005560000015600000473000002AA000002AA00000400000004000000047300000239000001C7000002AA00000800000005560000055600000556000005560000055600000239000002390000023900000239000006390000063900000639000005C7000005C7000005C700000239000002AA000002AA000002AA000002AA000002AA000002AA000002AA000002AA000002AA000002AA00000473000001C70000055600000400000004E30000040000000214000005C70000047300000556000004000000055600000473000004AC000004AC000002AA000002AA000002AA000006AC000006AC000006AC000004730000063900000473000002390000055600000400000005C700000400000005C70000040000000473000004730000046B000005560000047300000556000004730000055600000473000005C700000400000005C700000400000005C7000004EB000005C700000556000004730000055600000473000005560000047300000556000004730000055600000473000006390000047300000639000004730000063900000473000005C700000473000005C70000047300000239000002390000023900000239000002390000023900000239000001C7000005E10000038D00000400000001C700000556000004000000040000000473000001C700000473000001C7000004730000025500000473000002AC000005C700000473000005C700000473000005C700000473000004D5000005C900000473000006390000047300000639000004730000063900000473000005C7000002AA000005C7000002AA000005C7000002AA00000556000004000000055600000400000004E300000239000004E300000300000004E300000239000005C700000473000005C700000473000005C700000473000005C700000473000005C700000473000005C7000004730000078D000005C70000055600000400000004E300000400000004E300000400000001C70000055600000473000008000000071D00000639000004E3000002AA000002AA000005570000023900000646000006B40000031200000632000006D800000605000001C70000055600000556000004680000055800000556000004E3000005C700000639000002390000055600000558000006AA000005C70000053300000639000005C700000556000004F2000004E3000005560000066200000556000006AF000005FB0000023900000556000004A00000039100000473000001C700000460000004A00000049A000004000000047400000391000003870000047300000473000001C700000400000004000000049C000004000000039500000473000005850000048D000003DB000004F000000329000004600000053000000433000005B40000063F000001C70000046000000473000004600000063F00000557000006EB00000455000005C0000005560000023900000239000004000000087500000815000006D5000004A900000515000005C0000005560000054000000556000004550000056B0000055600000763000004D5000005C0000005C0000004A900000540000006AA000005C700000639000005C000000556000005C7000004E3000005150000061500000556000005EB000005550000075500000780000006550000071500000540000005C000000815000005C7000004730000049500000440000002EB000004AB000004730000055A000003AB000004780000047800000380000004AB000005800000046B00000473000004550000047300000400000003AA000004000000069500000400000004950000042B0000066B0000069500000500000005C00000042B0000041500000600000004550000047300000473000002EB0000041500000400000001C700000239000001C700000740000006800000047300000380000004000000046B000003E90000034A0000078D000005C70000078D000005C70000078D000005C70000055600000400000008000000046B000001C700000180000002D500000400000002AA000002EB00000473000008C0000007150000029600000895000004CD000006AC000006AC000006AC000006AC00000800000004000000080000000400000008000000040000000400000007D5000005C0000004AB000004D5000004AC000004D5000004D5000005AB00000500000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005AB000005D5000004D5000004D5000002D6000002D600000800000007EB000007EB000007EB000007EB000004D5000004D5000004D5000004D5000002D60000082B0000086B0000075500000600000006000000044000000540000004C0000004150000040000000600000002AA000000000000000000020001000000000014000300010000011A0000010600000100000000000000010200000002000000000000000000000000000000010000030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F60610062636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAAB03ACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD000D1D2D3D4D5D6D7D8D9DADBDCDDDEDF000404B8000000D6008000060056007E0111011D011F012F01310140014201510153015D01610177017F019201FF02C702C902DD037E038A038C03A103CE040C044F045C045F04911E851EF32015201E2022202620302033203A203C203E2044207F20A420A720AC21052113211621222126212E215E219521A822022206220F22122215221A221F2229222B22482261226523022310232125002502250C251025142518251C2524252C2534253C256C258025842588258C259325A125AC25B225BA25BC25C425CB25CF25D925E6263C26402642266026632666266BF002F005FB02FFFF0000002000A00112011E0120013001320141014301520154015E01620178019201FA02C602C902D8037E0384038C038E03A30401040E0451045E04901E801EF22013201720202026203020322039203C203E2044207F20A320A720AC21052113211621222126212E215B219021A822022206220F221122152219221E2229222B22482260226423022310232025002502250C251025142518251C2524252C2534253C2550258025842588258C259025A025AA25B225BA25BC25C425CA25CF25D825E6263A26402642266026632665266AF001F004FB01FFFFFFE30000FFFD0000FFFB0000FFF90000FFF70000FFF50000FFF10000FF14FF740000FE0F0000FCA0FDF0FDEFFDEEFDEDFDBBFDBAFDB9FDB8FD88E39AE32E000000000000E085E095E1F3E084E1EBE1EAE077E1AA0000E184E010E127E11AE118DF6ADF79E101E0D5E0A4E092DE96DEA2DE8B0000DEA600000000E013DE71DE5F0000DE30DF3CDF2FDF20DD42DD41DD38DD35DD32DD2FDD2CDD25DD1EDD17DD10DCFDDCEADCE7DCE4DCE1DCDEDCD2DCCADCC5DCBEDCBDDCB60000DCADDCA5DC99DC46DC43DC42DC25DC23DC22DC1F10BE128705BE0001000000D4000001B4000001B4000001B4000001B4000001B4000001B80000000001C2000001C200000000000000000000000000000000000000000000000001B401B801C60000000000000000000000000000000001BA0000000000000000000000000000000000000000000000000000000001A0000001A001A2000000000000019E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016A00000000000000000000000000000000000000000000000000000000000300A3008400850100009600E60086008E008B009D00A900A40010008A01010083009300F000F1008D0097008800C200DC00EF009E00AA00F300F200F400A200AC00C800C600AD006200630090006400CA006500C700C900CE00CB00CC00CD00E7006600D100CF00D000AE006700EE009100D400D200D3006800E900EB0089006A0069006B006D006C006E00A0006F0071007000720073007500740076007700E80078007A0079007B007D007C00B700A1007F007E0080008100EA00EC00B901020103010401050106010700FB00FC01080109010A010B00FD00FE010C010D010E00FF00F600F700F800D500E000E100AF00B000F900FA00E200E300BA0169016A016B016C00E400E5016D00D600DF00D900DA00DB00DE00D700DD00B100B20222022300B500B600C3022400B300B400C4008200C1008700F5022A009900ED00C200A50092023B008F023D00B8027B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200010000025D015203CC000400001B0237017649840FFEAE03AFFEAE016807FE990000000000002801E600010000000000000034000000010000000000010009003B00010000000000020007003400010000000000030016003B00010000000000040009003B00010000000000050030005100010000000000060009003B000100000000000A004000810003000104030002000C02AF0003000104050002001000C10003000104060002000C00D10003000104070002001000DD0003000104080002001000ED0003000104090000006800FD0003000104090001001201730003000104090002000E01650003000104090003002C017300030001040900040012017300030001040900050060019F000300010409000600120173000300010409000A008001FF00030001040A0002000C02AF00030001040B00020010027F00030001040C0002000C02AF00030001040E0002000C02CD0003000104100002000E028F00030001041300020012029D0003000104140002000C02AF0003000104150002001002AF0003000104160002000C02AF0003000104190002000E02BF00030001041B0002001002CD00030001041D0002000C02AF00030001041F0002000C02AF0003000104240002000E02DD00030001042D0002000E02EB00030001080A0002000C02AF0003000108160002000C02AF000300010C0A0002000C02AF000300010C0C0002000C02AF' )
		with open(ldr_xpr, 'wb') as f:
			f.write(ldr_xpr_bytes)
			f.close()
		with open(ldr_inx, 'wb') as f:
			f.write(ldr_inx_bytes)
			f.close()
		with open(ldr_ttf, 'wb') as f:
			f.write(ldr_ttf_bytes)
			f.close()
	elif Loader == Loader2:
		evox_ini = '[Misc]\n\
AutoLaunchGames		= No\n\
AutoLaunchDVDh		= No\n\
UseFDrive			= Yes\n\
UseGDrive			= Yes\n\
SkinName			= loader\n\
IGR					= No\n\
UseItems			= No\n\
[Network]\n\
[Clock]\n\
[FTP]\n\
[Telnet]\n\
[RDTOOLS]\n\
[BIOS]\n\
[Skin_Original]\n\
[Menu]\n\
Section "Root"\n\
{\n\
	Item "Press (A) to launch ' + Game_Title + '","%s\game_default.xbe"\n\
}'
		WriteINI = open( Game_Path + "evox.ini",'w' )
		WriteINI.write( evox_ini % ( Game_Path[:-1] ) )
		WriteINI.close()

		if not os.path.isdir( os.path.join( Game_Path,"skin" ) ): os.mkdir( Game_Path + "skin" )
		if not os.path.isdir( os.path.join( Game_Path,"skin\\loader" ) ): os.mkdir( Game_Path + "skin\\loader" )
		background	= os.path.join( Game_Path,"skin\\loader\\1.jpg")
		background_bytes	= binascii.unhexlify( '89504E470D0A1A0A0000000D4948445200000280000001E00803000000020F2CD6000001C5504C54450000000201020000010404050F0F1205050610101333333C27272E11111441414C35353E2929302323291D1D2243434E3D3D4724242A1E1E231212150606072B2B3225252B1F1F2419191D3A3A432D2D3426262C2020251313163C3C4535353D2E2E351B1B1F37373F2222271515180E0E1007070816161927272C26262B17171A28282D18181B0808091A1A1D09090A0A0A0B0B0B0C0C0C0D0D0D0E44455145465247485441424D4E4F5C494A5643444F4C4D594B4C584748534647524F505C4D4E5A494A5548495451525E50515D4B4C574A4B564E4F5A4D4E594F505B3738423D3E483738413637403F404A393A4338394240414B3B3C453A3B4442434D3D3E473C3D4645465044454F3F40493E3F4846475141424B4A4B5548495343444D30313931323A33343C2D2E3535363E2E2F3638394132333A31323934353C33343B36373E21222823242A28292F27282E292A302A2B312C2D332B2C322F30363233391D1E2320212621222723242925262B27282D292A2F191A1E1B1C201C1D2144464F1F202411121513141715161917181B191A1D1B1C1F1D1E210B0C0E0D0E100F1012141517070809090A0B0B0C0D010202030404050606030303020202010101FFFFFF0E73829B0000009774524E53FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F19F9813000015DA4944415478DAEDDDFF6393459EC0716AA95B0465C12E0211A458A0574185AE9830CF53661E6F268FB7B8F2A580C0EA75DDBAE07187A2E7ADC29D7B6E593D77B9DD2D24FFEFCDD7346993B4E9D2F2C3BD5F94A4499E3C4FD24C663EF3F5D9B20500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FE1F1B9E9A5898989878E82E161E1C19F8F9CD67271E4E3CB0FB587868F770FC68FB63CF6CB38FB99F070F2692870FC3F542BC39B1B0B030F1203CB2E06E6FED73AC030FD24E1EFA1DFB27D89F87FE7777D9EEA13BD883E98E3DBC786C21BC24FFB2C606FF732DBD8D870BC75E6C9280FE5ECDD7AB55213221AB5288B3F5E707FC9336769C95A51452BAFFD5777635DA1FFCD7B352B8DDCA52887ADD5E57AB7643BBBDDBB80CCFA90BFFEC708FDDBA2EF7F67CA99FFFA3AC8AD2BED2BAA896EE09A2AC977E3FA5CCFC6E4BB717FB8AC4BB6E8F75BFE73FB4EFE3E4EC3BF6A5C877AB7617557975D02FDC1B17CE96A2EEDE93F5CEEC9BA49F27E0CD5F654AA942E585514ADE1C1EE4B923F3D23ED3FE18FB7C91777CD65BC66551D87DBA8B9ADBA22854E1B72EF2C25F2965DC8FFFC5B87BDDAF35F1628F83EDB2FBB3C7712FB3F05BFB97ED6E29777C7FCB3E6AEF50B93B52EE37D1E664FB4E1E7F218D7B557E73A3C707FAC22DA8CCBFE0BCC895AA7EF198C4F3644AE18FAB313DD88F535C38B9F667FE38AB8BF8B92B955D39D1F1E01161E24EED67E6929F4B772E15DA84916B77690F67AFDD5D46F9C4E7F655988F8E763DD8949C2962820B4939A444FF5CE59270D84748D3B9DFD26FA82F2C76E4A32F94DA7F0FEC46C69CFDBCB1F6C2E255A9C27BB1295BD77753FE3EB162F8DF84FBE8DCD7DA7D90136B7DDE5E97C48C0A8957EEEFF89CB72CBE1D1260A1522EA77C82B319531E92867B280FB962C80D7DF2544A1CEEF6D1BEE1D2AACB27E34E7D6E171360785EAEC2BB708FE42A26679BCECB2F3AF7B4F58630E9551BF94F6B0D04876FD5435A775F259D6F23DD3C41C76A35FB69E6FE63D5F55D436B0AFF5EAB86CFDF25A29A7C6959AA9914BEFC0DC56C487F2185A79C4BA55253E5F1634DD960B54B18D83C27C2738AB4B15ADAA7CD557D21EE33D93C266A7FE4C2A6F8422E4B2C47DF2FDDC63EC116D95B6B0B04DFBC2EE281ED31B28B4749344FD4C90BA2083989FD5F7F6564F5678C1D4E219ECD6DB2FCC515195611129E69A5B19079B9B4E2E3CD3CE664A1E8B5419C3131A2331FAC0C448F577DA6E55F63AB308F795F4C7A210DB7B2D358F8BB30F0FAB272B671B76A5AC736E2FB35FC81265CF8A9C2619424FCDB8040B0DE2A0C95985D35103C352B4C4A0145F6D313CB1FFF248B65A03229C7323AE484DA8400CD840CD2F872DF1813C3497BAF7C79C5CB3B6323AF3C6E5DF3E9D5EDC3982296C5213D29ED6B1726A57697CBD94D5666A9E342A7AC3757D55503C1E63765C8705D1CA0E5FF10FE3D79431569626DC0550F8FF5DFFA7866426A70A59FFC6471F9E37F1131FC9BA985CA6DEE8B4677A9F2D3EE69A7DD651EF2B13CD45A8B5097B505FA99E559E0B88C419B4B7FB6AA1CBE2A3E8874A56E91C7141863CD2216956EAF36E5EA0B2B52D891AB42A54C5389F7FA0782C3FF522F5AFB36847F1B64CA978121D052624F9F5CA15191B5988DB94DBBD407EF48DF0C6294FE786C646464CC5E3C1A7B34E6AEED7F7B6D6F3C1A79E41FF037ED1D23472FE9585FA91E5F76C06BBE88B6E9AD7C3E6D3FF2A875FDC85E3C8A77FB5D3D7207197973B688556CB9B0E2151E7D5FE4BE24B7A9DFE8FF9EEE1B9F6421F9BB542D2EFD2F4965839C9A2D558CACEC67D63B101C99F701A3CFB60A5174C9108667E2E765C4208DB5DB64C8809539DF99A6B7D50BE3EBC0E65783445FDFCB58B5D79F3ED3A50DDD666BEE3B67F3E4BC5F20F820342DDAC3DBA45ABF4BF8B77146B697A14C72598378FBC71EE97467D96A37C9BB847FD681324673E26703B5076DD7BEA833A6EC4CB79FC818D1D58F0FB2BFC62F429C69134FB757F9BAB0D1646E429A9777BA67F9CD5D65A89AF9966BF102E1DF466A54446ABBB301BD9EEA1EFE69D58A87EAFB17BB6DB35FC766E5EC8D818EFFAC0CF9AF91BB3B33541D7A4ABA0473FD9B97A4FF1EE4851CEFF6F0F419DDAA5817F2DC48D7CAD9BB2EE185FA5936F32C696483F9DA858A155C5969AC4CA2D5D888EB3A1964F7EE80C5AB2677798B119F0CF805B8125284C93A1AA3B78990000AF1C380FB9B35A12EAE6F3ED3B52DE95CDD95AEBE2DB1103B570682279F132A75F2A9721FAD7F1B6F7AA7F08DBABE9415F323CBC33F199A92DD27D2B33B605AC60CB01C34C718AF874E6355B41F78342B42FFEDCCC880FB7B29F49E15EA46F73EEEC61D191B3F5DA34EF6C795F5B2D8A747EBDFE6058287658877DC9F3DEBCC154EBD2D62A3B2FD44CACB277AECE25B11FB297ED918F0E08F520F89681B96D5BCA843E5447C31E89B39A1C38085BCFEA71E5BECCD74ECC653AA26EEB7BFE0C61E598BA316D487A6FC3DE1DF26B5088E96A1AFD42535A3DBC2FE3F8A56778052F2373D338443A12E51887B831EFB99B9183D8AB6207044C536EDEAC02D70CDC3A1F5BBA87EDBBBEE1F4A59DF7D2C6E2FE5B123AF883486C706B36F11FE6D9EBD65E6837E9FD795295718DA234DABFAA1C57FF4CC1086AEF8E12F46955B073EF49438AD6C0059E8B6E8713A0D6B786B78E0FDBD2043A55EDCED93E597796C91769D40D3ADDC5EA7BB6DF14BE7EF660782451A5B5288F9B19021C8A248BDFF65BFEE80E110D417E6EAE009E684CB735CEABDBC54184ED543739EF8C9E0EFE464E81254FAB7CD3E75FFD22CF548C72C7F4A87D6673FF8AABE9FF06F738D9D93A114759F897681E0A9D9D059EBFB58BBB7FE256E20824B467A7EF0A8A9F18B2C74AADD582A0BDD383C9728CBDD83BF91C5336180AA9AED9784A6321306B8BAB75BDABA7FA322D39B3536B727FCDB748D3B5553A4C8C864531326CB8BD8615BAC9221B85613F7D4FA37EB38F09759EE7BDDDA5A107F96C53AC83AC2B0E6BC8EC3A7FB76F79EDAE9DF5EE85B2C3F9DFE54F8CE645F85CEDEDA4A7A780ABE17BA35CEDD164CBE60F47993E913FE7913320C0B1507D671D87111861C2F55389AAFA441CF27D6B1BF7B220FEFA07F93F8C876A1E2A809FB66B58EFD23B6865C5E22FC7B3A8E5CF51F43CA177CF1E4AA07377A64448D5D77EE8CDE1F7D6DF4BC0E09B03657A9ECD953B95FA9DCBB5719AD542AA3A3EE8E3DF746ED5DD61E7B35EA1F1B750FDFB3FF2AF73EF6C734F2622BB535F7F99A6C71FA83E175BC8B6FCB3006ACBACAB8D3C63DA963AF487ACFAE08A0F3F7690682E7AB6988531879E0DB470EF6CA87160B294A214416A66DB82850C8CC4DB92BEDDD65E66692B9C7B5F033D944A6DDA57F38CB8C7B28B3FFDD883B955D9F581A95DDB81CE679E8CBEB89C40EC81090CA3FAFB6E51F75EC898E430ADDD3B4F89674F01403C1BB553F75278DC5B3C9B0DA3BFC7B3C1B07D2C421F6298ACF559A8556A4796C3E7B4973E37CD99EDA3BFC58F9EC50A363BFB5F08CF3EB49805B45CDCF24E939D9AEADC63CEBBBFC8CF6DD88EED76C86F0EFA96A8EFB9A8749E38C8DEA33176C713674D2A5D1EE31898574A8546BF4BDCDCB8A348FB22DBDA611D436B5D45FEAD8EFCE10039AC3EB4980D37188599721812B03C18F6B45DB4BFE50BF4FF8F7B48D8B30C43844E8F2A53E9B3E8E0D356936B06A4DFA0843E67D4ACE8BD4939C26B6A5BA8D0A434E5D86287ED7D1AC78D58F5355B58FD793004F9571B0CB1A12E096C6791DBF38AE13585F1B26013C655BAFC5C943A16AA07ED9A725C4E5802ACCDA314B53E0D2B4A4D4E71FDA99E3A3B1FD376D9BFA59C4CB9D4D7971B2C82BEB49804742479B5A4B026CBE1ADBA37DF5C35EEEA002F274ED153ACCF78E03103E52E2F7CFAC120386E2562D4DCF588AFED282084528A0F39994FA72A55B133A6C3217958E6CE982BFD7A8DFAE2701FE59FA569DBCBE7A9BD0F04FA40DFEDCB43D1D5FADDC374622788A75903BB2162738E6AD09C0F52F7BE50A8B6F695373A3864D6B8290D646FB196FAA6644AD666AC6DF117EDC3439E51FAFD9FFDACA8C16359F80EFB6055F6E42884F9B571AEB781313223CBBBEEA400637F62F4CD5CB5386ADC4074748074FCBC8B9B29579153E8BF23543D9AB61F6F17B072F5E3C78E9E2C1D958D2AA6B17ED1D97AF5CBC78C95E5F39E86E1D3C78E5CA45FBEB9583EED783EE0E77B77FC8DE79E5D273BEB4D5EAE5566A6B5EAA855771633D21D96E19E60F88D552D2B142A73ABAF2EB8784725F8C3F4352782AA6AF8A3005DC7D245ABB19397E366FEF96E8A633D46C7E5F353EB1CAE3EE56B3F9377B39E4D8ABC650B86FC8DDE3EF6D0E0D85270E35FF66FFBDE47B2466CCD9A59E90DB71104EB69E9E902F74882075FF9E90A15D52877E46575712591C96E816EFF8BC4162782AE19F694DD83562F7B8083559573AE9B2FFD49C1785CF2B0BB1AEBEE090EC55DBB4A4433A8C825D4353DECA2FC545131B1BFB467323AF6445AA2B1572DF1FF6C93814C31E5A9C2710DCFCF0EF7EDDF7BCF90533845B78635B2E425564C626C8DE81A00FA6B2381C6BFB3A46C35C37612999D38F5AF7ED2A438BB67875F0373216EB3DFD47C39C9C95AAB5A09638B4B8E5F1FE6A1A215898EC2A81E0261B7BAF353BCE4641D77DE975E2A048CBA9D84CA25F0FFDC8E9308EC6CCAC633C601656D628AE2D157C7BCB9036B2738327E817ABA14AA1F7F579EE941161C919B7EE429867DFDC5DD6FC1A83AE0B9C4070939DFA40FA06159FE355D3C21B8FF7CBB4F099AD93F499A1D8B89CA6160F9E731C0B7586427FDA6C6BCAF3B1A74D1C83774CEC285D02344AECEF1DFE5564EAFFC895FE2895F3DB8A4CA561AA4579974070F34CC579143E4B902FB75242F33B118A65BF9269BD7720386742FB5EF6FCC0C7FEF7302040895D6DF9716CD751F5BD83EEEEF13F87F99C4AF61CCC3AB25DAA3404A1109797EA2A27AEB89E70152A54757AE536CB50458486623FB15C75B4DF1E38AD5BDD154AF61CA8B45BC445D2AE0D0D78F09199D80C576DAB700C5D71E395DDDA1C030FB1DE26C302C04AF6CAB04FED14795CF672A69073ED41C3E22111EBC27E7E01E31236A7F56F5EA8D89B962B71ED2F9D8FBE71BD8C1D1AAEB1A2D744EDAD698D19393D68092C7C638FDD79FBAEEF8AD82E9C0DBA2CF87E9DFAF97ACC283E2E749E5A3B6BE2EBCE04DEFCAE0C3D347EB4B4186760FE26847F6FEB344EA528EA732B16DE189E93715CB4CD9044FE6C8F7CCC8458B1CF5CB4EE8D26874518FBD539F4EA98F44920CFB31D83EDEFA889434C75F79134AEB21F7AAF7DC7F4CAC5890FD88CD7F15F495A0437DE319DD689CC7323BFEEF2A935BFAE87693EEE43E9355BFBA688C5F447832D65704AC4D1D765478BCBD1B45C8DFA70B026B9E7AB710DCCEEF3991EB9F46EE27282D92FBB65AF6F5CCFC2BAF8AE4C2809043738FCDB255BEBB329AD7A74DF4F14591AB56E03C1AE03548FD7431A1EB4E9EE908E43FFC5A9CE8CD1C41513C4CB83EC6EF82D13D711E9BA4A9C5F85240D352B7B9CA062F1905B553F0E1DD337080437D0F0A7225771D1511BFEF5ECBB7AF342E91AC7C2FAB75DA76C8FA9D88FA5F24703BC8093C2F786D944F1D3CEC26E4AA491341F2C0EB0BFF16A9C59DAB515706F560BEBA8BA1C5DEEE915E035BF93264F8BF26BF10381E046F9EB85B270A3915CE36B51CEF569441EBE295BE3FB6C90D42510FC8D080BF09A724773CDFEE64AEE193F17FE856507FCB91F8F630FF7EEEB5BD6DC26FCF87A187D684C97F69BC69D7A5C22D8E5F6A6DF92C407C2088530284C32496923C3BF78F60225FB9FB3ABD95656DBBAC8CA40705A9A341AF5DCFCFCF6DBF3F3B70FDB8BF9C3B70FDBEBDBEEB6BBE9EE71BFDDDE6EAF0FEF8BD56F9BD296877ADFA405DAD499B95FCFDD72FFAC9B37BFB2975FCDB91B73376FDDBCF5D5CD5BFE7E7B73EED7B7CEA5F0AE4B97CCD8F96A3A5F842D7EDFFE6BDF3FCD1B97CBD68924E81ADE18CD7B32B53E2B23563F59CD54A6F3D65A962B172E6BCEEB7016195BFC193F2C50B84180DA4FB935220C00B417991035FB4BE61F8AA713B155904A97323DCDCD136ECBCC0861B2CCEE2A7337B576D76E869D7D24CB327F9C2C068E459755F78FECCC8A744E25537D6FB5AAD2E25C75E9B4268289EA1B10FE7D2CE2F9366C92C99E5B43739B5BA92DAC23E88609AC58B9FB4F422D9D1C2E4DFB08E5689ECEEED03A5F9C0E134272DF7F57A85A6D651EF37519CF0117CEC890C76F8B49BB486D293E45A9B623B8DF7EBE3C037C5D8693CE85DCBEB27AEB4AF377B2B508BF51E207BA869F2C779E9AB00C8CCB2FD676C2C291F7649A566993D08DE5038E0FC9D6E2B7262FD2F4E25613A30933300B954ED295C7DCCFF587FDAE4B3CF79C56C5D21996D2B5693B15581C869DCEA754F86E3477E3EC7F2D0BFF3E17A6F5A2B458DBB2D3AE4530255A53FD9216C12769C24F82089F5D2DFB668DF5BCC66BD5A5498CB5E5CB778FF9D5BFC35A5A793AA59C699D97302FD23A04A17211CE59E8CF3053BBDEEDD3FDB348292FCEAB33E98420B96FF089D3068AD8F092E72A9ECBB0D0CB06D18C9DCF54EB8B909D596B67CD9BD7C4D2099868117C92E1DF377ED9D370D619638EADFD997B852EC2A4395B7D5E3E657DA1EECE6894A78971ADF3D084A273698E9C4A67C789419EE96C036C79BE9A32B9D4BB61425B63E13B2B8A306D2F6F4D418E3BB6B73B07526FBD5A860DDD36E5B9B5D728166FC9B8EFDC86B54C597F62E1DFCD7A1103275BFAFDEAE420CF9D3E93A5A2D0E4E2626720E8463999A57312C6BCD214711A66D19A6F12CACA34FEB0FA7A8FEFC94DD1B64643CA8AD2ADBC55296FAD7B1F4FED2B3BDBD3C7DD5E66D2BAE43B06294A9B5F0B13D7757063A559B4E389F8F16A35B3954829DCF22C039EAFDAAD2378362CFA22EC1EAA59C767DD3C74B6F48BC1F82DCACC2D0793B9F55FCA2C2BEB6E8D18A15D6DD6DE692BB3E1A4EA429CADF46CD67BBFEA579AC9DC8BD56EDBCC1F3A135511D6951159F8C9B474C72CDD5A35D5DF777CDBE6CEBA27496977A3CB8187174CD86A7B29EAE1C0EFCC2D927CFEFEFC6F74475CB76A72F21FEEBC30E8F0A92D8DEF5EB3CFBD5F99742B5F7DF67947EF49E3D5CF2AF681CAA4DF7DC55DDFB7BF4EDEB11B8F4E4EDA9F70E117CB1AAD8CDA1BA3A37DD6FE18BEF7D9A47767D2ED6174F2FE64E533B7A7FBF689F677773539E9DF8DBBEDB7F9CF8EFCB439FE85BB73F4FEFDCFEC7677061F2F7BF2B3F0D2EF4FDA5FBE64780C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C05AFD1FD66DAA696E4836270000000049454E44AE426082' )
		with open(background, 'wb') as f:
			f.write(background_bytes)
			f.close()
		skin_ini = 'SkinName "loader","loader"\n\
[Skin_loader]\n\
LogoType		=	4\n\
Main			=	"\skin\loader\\1.jpg"\n\
Launch			=	"\skin\loader\\1.jpg"\n\
BarColor1		= 0x\n\
BarColor2		= 0x\n\
BarAlpha		= 0.0\n\
MenuColor1		= 0x4a4a56\n\
MenuColor2		= 0x4a4a56'
		WriteINI = open( Game_Path + "skin\\loader\\skin.ini",'w' )
		WriteINI.write( skin_ini )
		WriteINI.close()