Editing PlayStation archive (PSARC)

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 8: Line 8:




The compression algorithms, the PS3 system, and the .psarc format, allows for 9 compression levels but in the practise only are used level 0 (no compression) or 9 (max compression used as the default compression level)


The compression algorithms, the PS3 system, and the .psarc format, allows for 9 compression levels but in the practice only are used level 0 (no compression) or 9 (max compression used as the default compression level)
Compression level 9 for generic file types results as a compression ratio of around 50% of the original size, the final compression ratio can vary for different types of files, usually multimedia files (video, audio, etc) doesnt admits much compression because are already compressed originally (as example, max compression ratio for .BIK video and .MP3 audio doesnt reachs 1% or 2%). For this reason is better to dont compress multimedia files because the size reduction is ridiculous and read access times can be reduced (causing a delay/lag/freeze when trying to load the file)


Compression level 9 for generic file types results as a compression ratio of around 50% of the original size, the final compression ratio can vary for different types of files, usually multimedia files (video, audio, etc) doesn't allow much compression because are already compressed originally (as example, max compression ratio for .BIK video and .MP3 audio doesn't reach 1% or 2%). For this reason is better not to compress multimedia files because the size reduction is ridiculous and read access times can be reduced (causing a delay/lag/freeze when trying to load the file)
Very small files (smaller than 100 bytes or so) as well as dummy files (0 bytes) doesnt admits compression because are so small that the compression algorithm is not able to reduce them, they will be stored without compression inside the .psarc archive even when is applyed compression over them. When listing the contents of a .psarc with this kind of files will be displayed with a percentage of 100% and both his compressed and decompressed sizes the same value
 
Very small files (smaller than 100 bytes or so) as well as dummy files (0 bytes) doesn't admits compression because are so small that the compression algorithm is not able to reduce them, they will be stored without compression inside the .psarc archive even when is applied compression over them. When listing the contents of a .psarc with this kind of files will be displayed with a percentage of 100% and both his compressed and decompressed sizes the same value


<small>
<small>
Line 51: Line 50:


*'''Relative''' (default, no flags)
*'''Relative''' (default, no flags)
**Default value when the .psarc is created from command line or an .xml and no special access paths modes are specified
**Default value when the .psarc is created from command line or an .xml and no special access paths modes are specifyed
**The paths in the '''manifest''' doesn't have an slash character at the start of every line, the system accesses the files exactly like if the .psarc was a folder itself
**The paths in the '''manifest''' doesnt have an slash character at the start of every line, the system accesses the files exactly like if the .psarc was a folder itself
**e.g: '''Folder/File.bin"'''
**e.g: '''Folder/File.bin"'''
**In the games that uses .psarc's without flags (like ''uncharted'' series or ''the last of us'') is possible to replace the psarc by a folder with the same name of the psarc and his contents decompressed inside
**In the games that uses .psarc's without flags (like ''uncharted'' series or ''the last of us'') is posible to replace the psarc by a folder with the same name of the psarc and his contents decompressed inside


*'''Ignorecase''' flag
*'''Ignorecase''' flag
Line 80: Line 79:
! Offset !! Size !! Name !! Example !! Value (conversion) !! Notes
! Offset !! Size !! Name !! Example !! Value (conversion) !! Notes
|+PSARC TOC
|+PSARC TOC
| style="background-color:#ff6666;" | 0x20 || style="background-color:#ff6666;" | 0x10 || '''name digest''' || 00 00 ... 00 00  || - || 128-bit md5 hash
| style="background-color:#ff6666;" | 0x20 || style="background-color:#ff6666;" | 0x16 || '''name digest''' || 00 00 ... 00 00  || - || 128-bit md5 hash
|-
|-
| style="background-color:#66ff66;" | 0x30 || style="background-color:#66ff66;" | 0x04 || '''block offset''' || 00 00 00 00 || 0 || Offset in block list.
| style="background-color:#66ff66;" | 0x30 || style="background-color:#66ff66;" | 0x04 || '''block offset''' || 00 00 00 00 || 0 || Offset in block list.
Line 105: Line 104:


==File table==
==File table==
The compression is applied "per-block", is possible to know the compression level by looking at the zlib header
The compression is applyed "per-block", is posible to know the compression level by looking at the zlib header


===Manifest===
===Manifest===
Manifest is the first file inside the psarc filetable, doesn't appears as a file when using the '''--list''' command and doesn't have an assigned '''ID'''
Manifest is the first file inside the psarc filetable, doesnt appears as a file when using the '''--list''' command and doesnt have an assigned '''ID'''


In windows all the paths uses the slash "\" but when the psarc is created the paths are stored inside the manifest as "/". When making a '''--list''' command over a psarc the slashes will appear as "/"
In windows all the paths uses the slash "\" but when the psarc is created the paths are stored inside the manifest as "/". When making a '''--list''' command over a psarc the slashes will appear as "/"
Line 117: Line 116:
There are several versions of PSARC related tools, features has been implemented along the different versions and is hard to keep a record of them, please help filling the info in the page
There are several versions of PSARC related tools, features has been implemented along the different versions and is hard to keep a record of them, please help filling the info in the page


GUI versions are derived from the command line versions
GUI versions are derivated from the command line versions


==Open PSARC PS3 Extractor==
==Open PSARC PS3 Extractor==
Line 138: Line 137:


==PSARC Extractor==
==PSARC Extractor==
{{Missingfiles}}
By Insomniac @ xentax forums, download link: http://www.ps3hax.net/downloads.php?do=file&id=452 and http://www.modcontrol.com/Board/pc-tools/28869-psarc-ps3-extractor.html
By Insomniac @ xentax forums, download link: <s>http://www.ps3hax.net/downloads.php?do=file&id=452</s> and <s>http://www.modcontrol.com/Board/pc-tools/28869-psarc-ps3-extractor.html</s>


  '''Usage:'''
  '''Usage:'''
Line 165: Line 163:


==PSARC==
==PSARC==
{{Missingfiles}}
  1.60.008 SDK : x
  1.60.008 SDK : x
  1.92.001 SDK : x
  1.92.001 SDK : x
Line 175: Line 172:
  4.50.001 SDK : psarc-1310.001 (C++), built on Nov 16 2011 at 03:31:36
  4.50.001 SDK : psarc-1310.001 (C++), built on Nov 16 2011 at 03:31:36


*From xentax forums: http://forum.xentax.com/viewtopic.php?p=44228&sid=0a7b5167ba4599f71f85471119c918a6#p44228 Download link: <s>http://www.mediafire.com/?o3wy35uublreh</s>
*From xentax forums: http://forum.xentax.com/viewtopic.php?p=44228&sid=0a7b5167ba4599f71f85471119c918a6#p44228 Download link: http://www.mediafire.com/?o3wy35uublreh


===help===
===help===
{{Keyboard|content=<syntaxhighlight lang="bash">
{{Keyboard|content=
C:\>psarc.exe --help
'''C:\>psarc.exe --help'''
usage:
'''usage:'''
  psarc verb [options] [file...]
  psarc verb [options] [file...]
  psarc --xml=XMLFILE
  psarc --xml=XMLFILE
   
   
verbs:
'''verbs:'''
  create                                  Create an archive. (default)
  create                                  Create an archive. (default)
  extract                                Extract contents of an existing archive.
  extract                                Extract contents of an existing archive.
Line 192: Line 189:
  dtd                                    Display a DTD describing psarc's XML input syntax.
  dtd                                    Display a DTD describing psarc's XML input syntax.


general options:
'''general options:'''
  -h, --help                              Show this help message and exit.
  -h, --help                              Show this help message and exit.
     --version                          Display version and exit.
     --version                          Display version and exit.
Line 201: Line 198:
  --xml=XMLFILE                          XML list of actions to perform.
  --xml=XMLFILE                          XML list of actions to perform.


create options:
'''create options:'''
  -oFILE, --output=FILE                  Archive filename to create.
  -oFILE, --output=FILE                  Archive filename to create.
  -IINPUTFILE, --inputfile=INPUTFILE      Inputfile listing files to archive. Consider --xml instead, which gives you more control.
  -IINPUTFILE, --inputfile=INPUTFILE      Inputfile listing files to archive. Consider --xml instead, which gives you more control.
Line 220: Line 217:
  --mergedups                            Compare the content of all files, and merge identical files so that only one copy of the data is included.
  --mergedups                            Compare the content of all files, and merge identical files so that only one copy of the data is included.


extract options:
'''extract options:'''
  --input=FILE                            Archive to extract files from. (default is first file argument)
  --input=FILE                            Archive to extract files from. (default is first file argument)
  --to=DIRECTORY                          Directory to write extracted files to. (default is current directory)
  --to=DIRECTORY                          Directory to write extracted files to. (default is current directory)
</syntaxhighlight>}}
}}


===dtd===
===dtd===
Line 230: Line 227:
The output of this command is a layout that defines the structure of an .xml document. See: http://www.w3schools.com/DTD/
The output of this command is a layout that defines the structure of an .xml document. See: http://www.w3schools.com/DTD/


{{Keyboard|content=<syntaxhighlight lang="DTD">
{{Keyboard|content=
C:\>psarc.exe dtd
'''C:\>psarc.exe dtd'''<nowiki>
<!ELEMENT psarc (create|extract)+>
<!ELEMENT psarc (create|extract)+>


Line 284: Line 281:
                   skipmissingfiles (true|false) "false"
                   skipmissingfiles (true|false) "false"
                   overwrite (true|false) "false">
                   overwrite (true|false) "false">
</syntaxhighlight>}}
</nowiki>}}


*DTD Notes:
*DTD Notes:
Line 299: Line 296:


To use an .xml is needed to prepare it based in this layout
To use an .xml is needed to prepare it based in this layout
{{Boxcode|title=This is the xml representation of the DTD layout containing all the elements and attributes availables together, for wiki purposes only|code=<syntaxhighlight lang=xml>
{{Boxframe2|content=
This is the xml representation of the DTD layout containing all the elements and attributes availables together, is only for wiki purpose
{{Boxcode|content=<syntaxhighlight lang="xml">
<psarc>
<psarc>
<create archive="" absolute="false" ignorecase="false" mergedups="false" stripall="false" blocksize="65536" jobs="" skipmissingfiles="false" format="psarc" overwrite="false">
<create archive="" absolute="false" ignorecase="false" mergedups="false" stripall="false" blocksize="65536" jobs="" skipmissingfiles="false" format="psarc" overwrite="false">
Line 314: Line 313:
</psarc>
</psarc>
</syntaxhighlight>}}
</syntaxhighlight>}}
*The purpose of this XML is to use it as a base layout containing all, but is not possible to use it like that, is needed to delete the tags that are not needed for a specific case, the ones that are incompatibles with other tags, and is needed to add paths, etc...
*The purpose of this XML is to use it as a base layout containing all, but is not posible to use it like that, is needed to delete the tags that are not needed for a specific case, the ones that are incompatibles with other tags, and is needed to add paths, etc...
*Some attributes appears as common in the DTD for "create" and "extract" but are not common, some of them has been deleted to avoid mistakes... but probably is needed to delete some more
*Some attributes appears as common in the DTD for "create" and "extract" but are not common, some of them has been deleted to avoid mistakes... but probably is needed to delete some more
}}


When the xml is ready you can run it this way:
When the xml is ready you can run it this way:
{{Keyboard|content=<syntaxhighlight lang="bash">C:\>psarc.exe --xml=C:\DTD_Layout.xml</syntaxhighlight>}}
{{Keyboard|content=
'''C:\>psarc.exe --xml=C:\DTD_Layout.xml'''
}}


The options '''--verbose''', '''--debug''', and '''--quiet''' cant be used inside the xml, so if needed are specifyed in the command line, this way:
The options '''--verbose''', '''--debug''', and '''--quiet''' cant be used inside the xml, so if needed are specifyed in the command line, this way:
{{Keyboard|content=<syntaxhighlight lang="bash">C:\>psarc.exe --debug --xml=C:\DTD_Layout.xml</syntaxhighlight>}}
{{Keyboard|content=
'''C:\>psarc.exe --debug --xml=C:\DTD_Layout.xml'''
}}


===verify===
===verify===
Line 327: Line 331:
*Output info per-file is: Validating <file ID/number>: - file path inside psarc archive - (file original size in bytes)
*Output info per-file is: Validating <file ID/number>: - file path inside psarc archive - (file original size in bytes)


{{Keyboard|content=<syntaxhighlight lang="bash">
{{Keyboard|content=
C:\>psarc.exe verify "C:\psarctests\source files\test.psarc"
'''C:\>psarc.exe verify "C:\psarctests\source files\test.psarc"'''
Verifying C:\psarctests\source files\test.psarc
Verifying C:\psarctests\source files\test.psarc
Validating 1: dummy.txt (0 bytes)
Validating 1: dummy.txt (0 bytes)
Line 335: Line 339:
Validating 4: PNGfolder1/PNGfolder2/PNGfolder3/Image3.png (6142 bytes)
Validating 4: PNGfolder1/PNGfolder2/PNGfolder3/Image3.png (6142 bytes)
Archive OK
Archive OK
</syntaxhighlight>}}
}}


===dump===
===dump===
Line 341: Line 345:
*Output info per-file is: file path inside psarc archive - file original size - file compressed size - file block start offset ?
*Output info per-file is: file path inside psarc archive - file original size - file compressed size - file block start offset ?


{{Keyboard|content=<syntaxhighlight lang="bash">
{{Keyboard|content=
C:\>psarc.exe dump "C:\psarctests\source files\test.psarc"
'''C:\>psarc.exe dump "C:\psarctests\source files\test.psarc"'''
Dumping C:\psarctests\source files\test.psarc
Dumping C:\psarctests\source files\test.psarc
dummy.txt  os=0 cs=0 fb=1
dummy.txt  os=0 cs=0 fb=1
Line 348: Line 352:
JPGfolder1/JPGfolder2/Image2.jpg  os=12524 cs=209 fb=97
JPGfolder1/JPGfolder2/Image2.jpg  os=12524 cs=209 fb=97
PNGfolder1/PNGfolder2/PNGfolder3/Image3.png  os=6142 cs=6142 fb=98
PNGfolder1/PNGfolder2/PNGfolder3/Image3.png  os=6142 cs=6142 fb=98
</syntaxhighlight>}}
}}


===list===
===list===
Line 355: Line 359:
*In the compression percentage: 100% is no reduction, 0% is a huge reduction
*In the compression percentage: 100% is no reduction, 0% is a huge reduction


{{Keyboard|content=<syntaxhighlight lang="bash">
{{Keyboard|content=
C:\>psarc.exe list "C:\psarctests\source files\test.psarc"
'''C:\>psarc.exe list "C:\psarctests\source files\test.psarc"'''
Listing C:\psarctests\source files\test.psarc
Listing C:\psarctests\source files\test.psarc
dummy.txt (0/0 100%)
dummy.txt (0/0 100%)
Line 362: Line 366:
JPGfolder1/JPGfolder2/Image2.jpg (209/12524 1%)
JPGfolder1/JPGfolder2/Image2.jpg (209/12524 1%)
PNGfolder1/PNGfolder2/PNGfolder3/Image3.png (6142/6142 100%)
PNGfolder1/PNGfolder2/PNGfolder3/Image3.png (6142/6142 100%)
</syntaxhighlight>}}
}}


{{Boxframe2|content=
{{Boxframe2|content=
{{Boxtip1|content=Is posible to generate a text file containing the output of the '''list''' command by using the character '''>''' (right arrow) and the path/name of the destination file, this is usefull to convert the generated file to a '''filelist.txt''' for rebuilding the psarc archive later}}
{{Boxtip1|content=Is posible to generate a text file containing the output of the '''list''' command by using the character '''>''' (right arrow) and the path/name of the destination file, this is usefull to convert the generated file to a '''filelist.txt''' for rebuilding the psarc archive later}}
{{Keyboard|content=<syntaxhighlight lang="bash">C:\>psarc.exe list "C:\psarctests\source files\test.psarc" > c:\psarctests\filelist.txt</syntaxhighlight>}}
{{Keyboard|content='''C:\>psarc.exe list "C:\psarctests\source files\test.psarc" > c:\psarctests\filelist.txt'''}}
}}
}}


Line 375: Line 379:


====create by directory====
====create by directory====
Creates a psarc using the contents of a specified folder and all subfolders. Is only available when using an .xml because command line doesn't allow to specify a source folder
Creates a psarc using the contents of a specifyed folder and all subfolders. Is only available when using an .xml because command line doesnt allows to specify a source folder


Is the most rude method to create a psarc because all folders and files will be archived alphabetically based in his names (there is no control of the ID's that will be assigned to each file in the '''manifest'''). Cant be used to rebuild psarcs
Is the most rude method to create a psarc because all folders and files will be archived alphabetically based in his names (there is no controll of the ID's that will be assigned to each file in the '''manifest'''). Cant be used to rebuild psarcs


Note in the next example the file dummy.txt (located in the root of the folder in windows, so considered first) has been archived after BMPfolder1
Note in the next examle the file dummy.txt (located in the root of the folder in windows, so considered first) has been archived after BMPfolder1


{{Boxcode|title=Create_by_directory.xml|code=<syntaxhighlight lang="xml">
{{Boxcode|title=Create_by_directory.xml|content=<syntaxhighlight lang="xml">
<psarc>
<psarc>
<create archive="C:\psarctests\by_directory.psarc" absolute="false" ignorecase="false">
<create archive="C:\psarctests\by_directory.psarc" absolute="false" ignorecase="false">
Line 390: Line 394:
</psarc>
</psarc>
</syntaxhighlight>}}
</syntaxhighlight>}}
{{Keyboard|content=<syntaxhighlight lang="bash">
{{Keyboard|content=
C:\>psarc.exe --xml="c:\psarctests\CREATE by_directory.xml"
'''C:\>psarc.exe --xml="c:\psarctests\CREATE by_directory.xml"'''
Strip: C:\psarctests\source files\test
Strip: C:\psarctests\source files\test
Flags: relative
Flags: relative
Line 413: Line 417:
       99.9%: Compression Ratio
       99.9%: Compression Ratio
           9: Compression Level
           9: Compression Level
C:\>psarc.exe list C:\psarctests\by_directory.psarc
'''C:\>psarc.exe list C:\psarctests\by_directory.psarc'''
Listing C:\psarctests\by_directory.psarc
Listing C:\psarctests\by_directory.psarc
BMPfolder1/Image1.bmp (8018/6220854 0%)
BMPfolder1/Image1.bmp (8018/6220854 0%)
Line 419: Line 423:
JPGfolder1/JPGfolder2/Image2.jpg (209/12524 1%)
JPGfolder1/JPGfolder2/Image2.jpg (209/12524 1%)
PNGfolder1/PNGfolder2/PNGfolder3/Image3.png (157/6142 2%)
PNGfolder1/PNGfolder2/PNGfolder3/Image3.png (157/6142 2%)
</syntaxhighlight>}}
}}


====create by filelist====
====create by filelist====
Line 439: Line 443:


The psarc archive is created by using the filelist as the '''--inputfile''' and uses an explicit path to '''--strip''' from every file inside the filelist, this way:
The psarc archive is created by using the filelist as the '''--inputfile''' and uses an explicit path to '''--strip''' from every file inside the filelist, this way:
{{Keyboard|content=<syntaxhighlight lang="bash">C:\>psarc.exe create --strip="C:\psarctests\source files\test" --output=C:\psarctests\by_filelist.psarc --inputfile="C:\psarctests\source files\filelist.txt"</syntaxhighlight>}}
{{Keyboard|content='''C:\>psarc.exe create --strip="C:\psarctests\source files\test" --output=C:\psarctests\by_filelist.psarc --inputfile="C:\psarctests\source files\filelist.txt"'''}}


Or you can prepare an .xml that contains the path to the filelist.txt
Or you can prepare an .xml that contains the path to the filelist.txt
{{Boxcode|title=Create_by_filelist.xml|code=<syntaxhighlight lang="xml">
{{Boxcode|title=Create_by_filelist.xml|content=<syntaxhighlight lang="xml">
<psarc>
<psarc>
<create archive="C:\psarctests\by_filelist.psarc" absolute="false" ignorecase="false">
<create archive="C:\psarctests\by_filelist.psarc" absolute="false" ignorecase="false">
Line 453: Line 457:


Then run the contents of the .xml this way:
Then run the contents of the .xml this way:
{{Keyboard|content=<syntaxhighlight lang="bash">C:\>psarc.exe --xml="c:\psarctests\CREATE by_filelist.xml"</syntaxhighlight>}}
{{Keyboard|content='''C:\>psarc.exe --xml="c:\psarctests\CREATE by_filelist.xml"'''}}


The output of the tool is the same in both cases (except the InputFile not present when using an xml)
The output of the tool is the same in both cases (except the InputFile not present when using an xml)
{{Keyboard|content=<syntaxhighlight lang="bash">
{{Keyboard|content=
Strip: C:\psarctests\source files\test
Strip: C:\psarctests\source files\test
Flags: relative
Flags: relative
Line 482: Line 486:
       99.9%: Compression Ratio
       99.9%: Compression Ratio
           9: Compression Level
           9: Compression Level
C:\>psarc.exe list C:\psarctests\by_filelist.psarc
'''C:\>psarc.exe list C:\psarctests\by_filelist.psarc'''
Listing C:\psarctests\by_filelist.psarc
Listing C:\psarctests\by_filelist.psarc
dummy.txt (0/0 100%)
dummy.txt (0/0 100%)
Line 488: Line 492:
JPGfolder1/JPGfolder2/Image2.jpg (209/12524 1%)
JPGfolder1/JPGfolder2/Image2.jpg (209/12524 1%)
PNGfolder1/PNGfolder2/PNGfolder3/Image3.png (157/6142 2%)
PNGfolder1/PNGfolder2/PNGfolder3/Image3.png (157/6142 2%)
</syntaxhighlight>}}
}}


====create by file====
====create by file====
Line 499: Line 503:
The other per-file attribute avoids the tool to output an error in the case the file dummy.txt is missing in the source folder
The other per-file attribute avoids the tool to output an error in the case the file dummy.txt is missing in the source folder


{{Boxcode|title=Create_by_file.xml|code=<syntaxhighlight lang="xml">
{{Boxcode|title=Create_by_file.xml|content=<syntaxhighlight lang="xml">
<psarc>
<psarc>
<create archive="C:\psarctests\by_file.psarc" absolute="false" ignorecase="false">
<create archive="C:\psarctests\by_file.psarc" absolute="false" ignorecase="false">
Line 512: Line 516:
</psarc>
</psarc>
</syntaxhighlight>}}
</syntaxhighlight>}}
{{Keyboard|content=<syntaxhighlight lang="bash">
{{Keyboard|content=
C:\>psarc.exe --xml="c:\psarctests\CREATE by_file.xml"
C:\>psarc.exe --xml="c:\psarctests\CREATE by_file.xml"
Strip: C:\psarctests\source files\test
Strip: C:\psarctests\source files\test
Line 538: Line 542:
       99.8%: Compression Ratio
       99.8%: Compression Ratio
           9: Compression Level
           9: Compression Level
C:\>psarc.exe list C:\psarctests\by_file.psarc
'''C:\>psarc.exe list C:\psarctests\by_file.psarc'''
Listing C:\psarctests\by_file.psarc
Listing C:\psarctests\by_file.psarc
dummy.txt (0/0 100%)
dummy.txt (0/0 100%)
Line 544: Line 548:
JPGfolder1/JPGfolder2/Image2.jpg (209/12524 1%)
JPGfolder1/JPGfolder2/Image2.jpg (209/12524 1%)
PNGfolder1/PNGfolder2/PNGfolder3/Image3.png (6142/6142 100%)
PNGfolder1/PNGfolder2/PNGfolder3/Image3.png (6142/6142 100%)
</syntaxhighlight>}}
}}


Batch. This is an useless example to show how the .psarcs are created sequentially and how to create several .psarc's with only one .xml, it uses all default values for compressions, formats, flags etc...
Batch. This is an useless example to show how the .psarcs are created sequentially and how to create several .psarc's with only one .xml, it uses all default values for compressions, formats, flags etc...
Line 550: Line 554:
In step 1 it creates an egg.psarc containing a dummy.txt. In step 2 it creates a chiken.psarc containing the egg.psarc made in step 1. In step 3 it creates an egg.psarc containing the chicken.psarc made in step 2 (egg.psarc created in step 3 overwrites egg.psarc made in step 1)
In step 1 it creates an egg.psarc containing a dummy.txt. In step 2 it creates a chiken.psarc containing the egg.psarc made in step 1. In step 3 it creates an egg.psarc containing the chicken.psarc made in step 2 (egg.psarc created in step 3 overwrites egg.psarc made in step 1)


{{Boxcode|title=Create_by_file_paradox.xml|code=<syntaxhighlight lang="xml">
{{Boxcode|title=Create_by_file_paradox.xml|content=<syntaxhighlight lang="xml">
<psarc>
<psarc>
<create archive="C:\psarctests\egg.psarc">
<create archive="C:\psarctests\egg.psarc">
Line 568: Line 572:
</psarc>
</psarc>
</syntaxhighlight>}}
</syntaxhighlight>}}
{{Keyboard|content=<syntaxhighlight lang="bash">
{{Keyboard|content=
C:\>psarc.exe --xml="c:\psarctests\CREATE by_file_paradox.xml"
'''C:\>psarc.exe --xml="c:\psarctests\CREATE by_file_paradox.xml"'''
Strip: C:\psarctests\source files\test
Strip: C:\psarctests\source files\test
Flags: relative
Flags: relative
Line 626: Line 630:
       -44.8%: Compression Ratio
       -44.8%: Compression Ratio
           9: Compression Level
           9: Compression Level
C:\>psarc.exe list C:\psarctests\egg.psarc
'''C:\>psarc.exe list C:\psarctests\egg.psarc
Listing C:\psarctests\egg.psarc
Listing C:\psarctests\egg.psarc
chicken.psarc (143/174 82%)
chicken.psarc (143/174 82%)
C:\>psarc.exe list C:\psarctests\chicken.psarc
'''C:\>psarc.exe list C:\psarctests\chicken.psarc
Listing C:\psarctests\chicken.psarc
Listing C:\psarctests\chicken.psarc
egg.psarc (69/105 65%)
egg.psarc (69/105 65%)
</syntaxhighlight>}}
}}


----
----
Line 650: Line 654:
When using this options the command line output is the same, there is no mention of wich files are stripped, overwritten, or missing in the extraction process
When using this options the command line output is the same, there is no mention of wich files are stripped, overwritten, or missing in the extraction process


{{Keyboard|content=<syntaxhighlight lang="bash">
{{Keyboard|content=
C:\>psarc.exe extract --input="C:\psarctests\source files\test.psarc" --to="C:\psarctests\test"
'''C:\>psarc.exe extract --input="C:\psarctests\source files\test.psarc" --to="C:\psarctests\test"'''
Extracting: dummy.txt (0 bytes)
Extracting: dummy.txt (0 bytes)
Extracting: BMPfolder1/Image1.bmp (6220854 bytes)
Extracting: BMPfolder1/Image1.bmp (6220854 bytes)
Extracting: JPGfolder1/JPGfolder2/Image2.jpg (12524 bytes)
Extracting: JPGfolder1/JPGfolder2/Image2.jpg (12524 bytes)
Extracting: PNGfolder1/PNGfolder2/PNGfolder3/Image3.png (6142 bytes)
Extracting: PNGfolder1/PNGfolder2/PNGfolder3/Image3.png (6142 bytes)
C:\>psarc.exe extract --overwrite --strip-all --skip-missing-files --input="C:\psarctests\source files\test.psarc" --to="C:\psarctests\test"
'''C:\>psarc.exe extract --overwrite --strip-all --skip-missing-files --input="C:\psarctests\source files\test.psarc" --to="C:\psarctests\test"'''
Extracting: dummy.txt (0 bytes)
Extracting: dummy.txt (0 bytes)
Extracting: BMPfolder1/Image1.bmp (6220854 bytes)
Extracting: BMPfolder1/Image1.bmp (6220854 bytes)
Extracting: JPGfolder1/JPGfolder2/Image2.jpg (12524 bytes)
Extracting: JPGfolder1/JPGfolder2/Image2.jpg (12524 bytes)
Extracting: PNGfolder1/PNGfolder2/PNGfolder3/Image3.png (6142 bytes)
Extracting: PNGfolder1/PNGfolder2/PNGfolder3/Image3.png (6142 bytes)
</syntaxhighlight>}}
}}


'''extract all (xml)'''
'''extract all (xml)'''


{{Boxcode|title=Extract_all.xml|code=<syntaxhighlight lang="xml">
{{Boxcode|title=Extract_all.xml|content=<syntaxhighlight lang="xml">
<psarc>
<psarc>
<extract archive="C:\psarctests\source files\test.psarc" to="C:\psarctests\all">
<extract archive="C:\psarctests\source files\test.psarc" to="C:\psarctests\all">
Line 671: Line 675:
</psarc>
</psarc>
</syntaxhighlight>}}
</syntaxhighlight>}}
{{Keyboard|content=<syntaxhighlight lang="bash">
{{Keyboard|content=
C:\>psarc.exe --xml="c:\psarctests\EXTRACT all.xml"
'''C:\>psarc.exe --xml="c:\psarctests\EXTRACT all.xml"'''
Extracting: dummy.txt (0 bytes)
Extracting: dummy.txt (0 bytes)
Extracting: BMPfolder1/Image1.bmp (6220854 bytes)
Extracting: BMPfolder1/Image1.bmp (6220854 bytes)
Extracting: JPGfolder1/JPGfolder2/Image2.jpg (12524 bytes)
Extracting: JPGfolder1/JPGfolder2/Image2.jpg (12524 bytes)
Extracting: PNGfolder1/PNGfolder2/PNGfolder3/Image3.png (6142 bytes)
Extracting: PNGfolder1/PNGfolder2/PNGfolder3/Image3.png (6142 bytes)
</syntaxhighlight>}}
}}


====extract by file====
====extract by file====
This extraction method is only available when using an xml because command line doesnt allows to specify files inside the archive
This extraction method is only available when using an xml because command line doesnt allows to specify files inside the archive


{{Boxcode|title=Extract_by_file.xml|code=<syntaxhighlight lang="xml">
{{Boxcode|title=Extract_by_file.xml|content=<syntaxhighlight lang="xml">
<psarc>
<psarc>
<extract archive="C:\psarctests\source files\test.psarc" to="C:\psarctests\by_file">
<extract archive="C:\psarctests\source files\test.psarc" to="C:\psarctests\by_file">
Line 689: Line 693:
</psarc>
</psarc>
</syntaxhighlight>}}
</syntaxhighlight>}}
{{Keyboard|content=<syntaxhighlight lang="bash">
{{Keyboard|content=
C:\>psarc.exe --xml="c:\psarctests\EXTRACT by_file.xml"
'''C:\>psarc.exe --xml="c:\psarctests\EXTRACT by_file.xml"'''
Extracting: BMPfolder1/Image1.bmp (6220854 bytes)
Extracting: BMPfolder1/Image1.bmp (6220854 bytes)
</syntaxhighlight>}}
}}


When extracting single files is also posible to use the same attributes availables in command line, and attributes per-file, but they uses different names inside the xml (see the DTD example)
When extracting single files is also posible to use the same attributes availables in command line, and attributes per-file, but they uses different names inside the xml (see the DTD example)
{{Boxcode|title=Extract_by_file.xml|code=<syntaxhighlight lang="xml">
{{Boxcode|title=Extract_by_file.xml|content=<syntaxhighlight lang="xml">
<psarc>
<psarc>
<extract archive="C:\psarctests\source files\test.psarc" to="C:\psarctests\by_file" stripall="true" skipmissingfiles="false" overwrite="true">
<extract archive="C:\psarctests\source files\test.psarc" to="C:\psarctests\by_file" stripall="true" skipmissingfiles="false" overwrite="true">
Line 722: Line 726:
**when --level is not defined at creation time, the info about compression level in the creation process window appears with a value of 9, even when using --nocompress
**when --level is not defined at creation time, the info about compression level in the creation process window appears with a value of 9, even when using --nocompress


{{Boxcode|code=<syntaxhighlight lang="xml">
{{Boxcode|content=<syntaxhighlight lang="xml">
<psarc>
<psarc>
<create archive="C:\psarctests\by_file.psarc">
<create archive="C:\psarctests\by_file.psarc">
Line 772: Line 776:


Most important ones are the '''<span style="background:#ffff66;">compression method</span>''' (zlib/lzma) and the '''<span style="background:#d0000d;">archive flags</span>''' (relative/absolute, and ignorecase), this settings will be used when rebuilding from command line or from xml this way:
Most important ones are the '''<span style="background:#ffff66;">compression method</span>''' (zlib/lzma) and the '''<span style="background:#d0000d;">archive flags</span>''' (relative/absolute, and ignorecase), this settings will be used when rebuilding from command line or from xml this way:
{{Boxcode|code=<syntaxhighlight lang="xml">
{{Boxcode|content=<syntaxhighlight lang="xml">
<psarc>
<psarc>
<create archive="C:\psarctests\by_file.psarc" absolute="true" ignorecase="true">
<create archive="C:\psarctests\by_file.psarc" absolute="true" ignorecase="true">
Line 780: Line 784:


The other values in the header that needs to be verifyed are the '''<span style="background:#dd00dd;">TOC entry size</span>''' and the '''<span style="background:#dddddd;">Block size</span>''', is needed to know if the original psarc we are trying to rebuild uses the default values (all i found used defaults), otherway is posible to use non-default values this way: <!-- not sure if is posible to change the "TOC entry size" -->
The other values in the header that needs to be verifyed are the '''<span style="background:#dd00dd;">TOC entry size</span>''' and the '''<span style="background:#dddddd;">Block size</span>''', is needed to know if the original psarc we are trying to rebuild uses the default values (all i found used defaults), otherway is posible to use non-default values this way: <!-- not sure if is posible to change the "TOC entry size" -->
{{Boxcode|code=<syntaxhighlight lang="xml">
{{Boxcode|content=<syntaxhighlight lang="xml">
<psarc>
<psarc>
<create archive="C:\psarctests\by_file.psarc" absolute="true" ignorecase="true" blocksize="65536">
<create archive="C:\psarctests\by_file.psarc" absolute="true" ignorecase="true" blocksize="65536">
Line 799: Line 803:
**If there some files with the 100%, normal sizes (not minimal), using the same file extension, and can be identifyed (like audio or video formats) then you have a psarc with per-file compression
**If there some files with the 100%, normal sizes (not minimal), using the same file extension, and can be identifyed (like audio or video formats) then you have a psarc with per-file compression
**If all the files appears as 100% it means the psarc has been created with the compression attibute set as "false" this way:
**If all the files appears as 100% it means the psarc has been created with the compression attibute set as "false" this way:
{{Boxcode|code=<syntaxhighlight lang="xml">
{{Boxcode|content=<syntaxhighlight lang="xml">
<psarc>
<psarc>
<create archive="C:\psarctests\by_file.psarc" absolute="true" ignorecase="true" blocksize="65536">
<create archive="C:\psarctests\by_file.psarc" absolute="true" ignorecase="true" blocksize="65536">
Line 843: Line 847:
Generate a .txt file containing the output of the '''list''' comand
Generate a .txt file containing the output of the '''list''' comand
{{Boxframe1|content=
{{Boxframe1|content=
{{Keyboard|content=<syntaxhighlight lang="bash">C:\>psarc.exe list "C:\psarctests\source files\test.psarc" > "C:\psarctests\filelist.txt"</syntaxhighlight>}}
{{Keyboard|content='''C:\>psarc.exe list "C:\psarctests\source files\test.psarc" > "C:\psarctests\filelist.txt"'''}}
The file generated by the list command will have this content (note there is en empty line at the end):
The file generated by the list command will have this content (note there is en empty line at the end):
  Listing C:\psarctests\source files\test.psarc
  Listing C:\psarctests\source files\test.psarc
Line 949: Line 953:
Generate a list.txt file containing the output of the '''list''' command
Generate a list.txt file containing the output of the '''list''' command
{{Boxframe1|content=
{{Boxframe1|content=
{{Keyboard|content=<syntaxhighlight lang="bash">C:\>psarc.exe list "C:\psarctests\source files\test.psarc" > "C:\psarctests\list.txt"</syntaxhighlight>}}
{{Keyboard|content='''C:\>psarc.exe list "C:\psarctests\source files\test.psarc" > "C:\psarctests\list.txt"'''}}
The file generated by the list command will have this content:
The file generated by the list command will have this content:
{{Boxcode|code=<syntaxhighlight lang="xml">
{{Boxcode|content=<syntaxhighlight lang="xml">
Listing C:\psarctests\source files\test.psarc
Listing C:\psarctests\source files\test.psarc
/dummy.txt (0/0 100%)
/dummy.txt (0/0 100%)
Line 974: Line 978:
  \\
  \\
The resulting file:
The resulting file:
{{Boxcode|code=<syntaxhighlight lang="xml">
{{Boxcode|content=<syntaxhighlight lang="xml">
Listing C:\psarctests\source files\test.psarc
Listing C:\psarctests\source files\test.psarc
\dummy.txt (0\0 100%)
\dummy.txt (0\0 100%)
Line 991: Line 995:
  <psarc>\r\n\t<create archive="
  <psarc>\r\n\t<create archive="
The resulting file:
The resulting file:
{{Boxcode|code=<syntaxhighlight lang="xml">
{{Boxcode|content=<syntaxhighlight lang="xml">
<psarc>
<psarc>
<create archive="C:\psarctests\source files\test.psarc
<create archive="C:\psarctests\source files\test.psarc
Line 1,009: Line 1,013:
  \.psarc" absolute="false" ignorecase="false">\r\n\t\t<compression type="zlib" />\r\n\t\t<strip regex="C:\\source\\folder\\" />\r\n\r\n\t\t<file path="C:\\source\\folder\\
  \.psarc" absolute="false" ignorecase="false">\r\n\t\t<compression type="zlib" />\r\n\t\t<strip regex="C:\\source\\folder\\" />\r\n\r\n\t\t<file path="C:\\source\\folder\\
The resulting file:
The resulting file:
{{Boxcode|code=<syntaxhighlight lang="xml">
{{Boxcode|content=<syntaxhighlight lang="xml">
<psarc>
<psarc>
<create archive="C:\psarctests\source files\test.psarc" absolute="false" ignorecase="false">
<create archive="C:\psarctests\source files\test.psarc" absolute="false" ignorecase="false">
Line 1,030: Line 1,034:
  \.psarc" absolute="true" ignorecase="false">\r\n\t\t<compression type="zlib" />\r\n\t\t<strip regex="C:\\source\\folder\\" />\r\n\r\n\t\t<file path="C:\\source\\folder\\\\
  \.psarc" absolute="true" ignorecase="false">\r\n\t\t<compression type="zlib" />\r\n\t\t<strip regex="C:\\source\\folder\\" />\r\n\r\n\t\t<file path="C:\\source\\folder\\\\
The resulting file:
The resulting file:
{{Boxcode|code=<syntaxhighlight lang="xml">
{{Boxcode|content=<syntaxhighlight lang="xml">
<psarc>
<psarc>
<create archive="C:\psarctests\source files\test.psarc" absolute="true" ignorecase="false">
<create archive="C:\psarctests\source files\test.psarc" absolute="true" ignorecase="false">
Line 1,051: Line 1,055:
  " compressed="false" />\r\n\t\t<file path="C:\\source\\folder\\
  " compressed="false" />\r\n\t\t<file path="C:\\source\\folder\\
The resulting file:
The resulting file:
{{Boxcode|code=<syntaxhighlight lang="xml">
{{Boxcode|content=<syntaxhighlight lang="xml">
<psarc>
<psarc>
<create archive="C:\psarctests\source files\test.psarc" absolute="true" ignorecase="false">
<create archive="C:\psarctests\source files\test.psarc" absolute="true" ignorecase="false">
Line 1,073: Line 1,077:
  " />\r\n\t\t<file path="C:\\source\\folder\\
  " />\r\n\t\t<file path="C:\\source\\folder\\
The resulting file:
The resulting file:
{{Boxcode|code=<syntaxhighlight lang="xml">
{{Boxcode|content=<syntaxhighlight lang="xml">
<psarc>
<psarc>
<create archive="C:\psarctests\source files\test.psarc" absolute="true" ignorecase="false">
<create archive="C:\psarctests\source files\test.psarc" absolute="true" ignorecase="false">
Line 1,095: Line 1,099:
  \t</create>\r\n</psarc>
  \t</create>\r\n</psarc>
The resulting file:
The resulting file:
{{Boxcode|code=<syntaxhighlight lang="xml">
{{Boxcode|content=<syntaxhighlight lang="xml">
<psarc>
<psarc>
<create archive="C:\psarctests\source files\test.psarc" absolute="true" ignorecase="false">
<create archive="C:\psarctests\source files\test.psarc" absolute="true" ignorecase="false">
Line 1,120: Line 1,124:
  \\
  \\
The resulting file:
The resulting file:
{{Boxcode|code=<syntaxhighlight lang="xml">
{{Boxcode|content=<syntaxhighlight lang="xml">
<psarc>
<psarc>
<create archive="C:\psarctests\source files\test.psarc" absolute="true" ignorecase="false">
<create archive="C:\psarctests\source files\test.psarc" absolute="true" ignorecase="false">
Line 1,205: Line 1,209:
|-
|-
| All others || 00010003 || zlib || 0000001E || 00010000 || 00000003 (ignorecase + absolute) || compress all ||  
| All others || 00010003 || zlib || 0000001E || 00010000 || 00000003 (ignorecase + absolute) || compress all ||  
|-
|Sonic the Fighters
|rom.psarc
|
|
|
|
|
|
|Contains arcade ROM files, audio, and UI graphics
|-
|-
| The Last Of Us || All ? || 00010003 || zlib || 0000001E || 00010000 || 00000000 (no flags) ||  ||  
| The Last Of Us || All ? || 00010003 || zlib || 0000001E || 00010000 || 00000000 (no flags) ||  ||  
Line 1,264: Line 1,258:


{{File Formats}}
{{File Formats}}
<noinclude>
<noinclude>[[Category:Main]]</noinclude>
[[Category:Main]]
</noinclude>
Please note that all contributions to PS3 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS3 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)