{"id":31865395,"url":"https://github.com/rupertavery/psxpackager","last_synced_at":"2025-10-12T19:18:46.466Z","repository":{"id":44659442,"uuid":"233335440","full_name":"RupertAvery/PSXPackager","owner":"RupertAvery","description":"A utility to convert Playstation disc images in various formats to PBP format and back","archived":false,"fork":false,"pushed_at":"2025-07-29T01:25:45.000Z","size":2793,"stargazers_count":294,"open_issues_count":10,"forks_count":17,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-07-29T02:32:30.445Z","etag":null,"topics":["bin","converters","csharp","dotnet","iso","pbp","psp","psx","psx2psp"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RupertAvery.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-01-12T03:59:10.000Z","updated_at":"2025-07-29T01:25:49.000Z","dependencies_parsed_at":"2025-07-29T02:24:34.338Z","dependency_job_id":"953d0012-766a-4f16-a9be-c56a17a4397c","html_url":"https://github.com/RupertAvery/PSXPackager","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/RupertAvery/PSXPackager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RupertAvery%2FPSXPackager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RupertAvery%2FPSXPackager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RupertAvery%2FPSXPackager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RupertAvery%2FPSXPackager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RupertAvery","download_url":"https://codeload.github.com/RupertAvery/PSXPackager/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RupertAvery%2FPSXPackager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279012646,"owners_count":26085158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bin","converters","csharp","dotnet","iso","pbp","psp","psx","psx2psp"],"created_at":"2025-10-12T19:18:41.247Z","updated_at":"2025-10-12T19:18:46.459Z","avatar_url":"https://github.com/RupertAvery.png","language":"C#","funding_links":["https://www.paypal.me/rupertavery/5.00?locale.x=en_US","https://www.paypal.me/rupertavery/2.50?locale.x=en_US","https://www.paypal.me/rupertavery/1.50?locale.x=en_US"],"categories":[],"sub_categories":[],"readme":"﻿# PSXPackager\n\nPSXPackager is tool for converting PlayStation 1 Disc images to the EBOOT.PBP format and back.\n\nEBOOT.PBP is a Sony Playstation file format for PS1 Classics on the PSP and PS3 Playstation emulators. The format is also supported by PS1 emulators such as ePSXe, PCSX, Beetle PSX (Mednafen/RetroArch) and DuckStation.\n\nThere is a command-line executable (Windows/Linux/OSX) and a Windows-only GUI available.\n\nThe GUI allows you to select and process several images in a queue (Batch mode).\n\nFeel free to take the Popstation library and use it as you like.\n\nThe Popstation library was ported from the `popstation-md` C source code to C#.\n\nLooking for the Windows-only GUI README? See [PSXPackagerGUI](PSXPackagerGUI/README.md)\n\n# Download\n\n* [Latest Release](https://github.com/RupertAvery/PSXPackager/releases)\n\nNot sure what to download?\n\n* command line tool - psxpackager-win-x64.zip\n* Windows GUI - PsxPackagerGUI.zip\n\n# Features\n\n* Convert .BIN + .CUE or .IMG to .PBP\n* Extract .PBP to .BIN + .CUE file \n* Supports conversion of .7z, .zip, .rar files to .PBP\n* Supports merging of single-disc, multi-track .BIN + .CUE into one .BIN + .CUE\n* Supports writing multi-track CUE information to PBP for audio \n* PBP Compression levels from 0 to 9\n* Supports writing multi-disc PBP using .m3u files\n* Supports extracting multi-disc PBP\n* Windows/Linux/OSX CLI\n* GUI with PSX2PSP-like interface and batch processing\n\n# Requirements\n\n* PSXPackager requires the [.NET 8.0 Runtime](https://dotnet.microsoft.com/en-us/download/dotnet/8.0).\n* PSXPackagerGUI requires the [.NET Desktop Runtime](https://dotnet.microsoft.com/en-us/download/dotnet/8.0).\n\n# Usage\n\nThe basic usage of PSXPackager accepts a file or path to convert.\n\n```\npsxpackager -i \u003cinput_path_or_file\u003e [-o \u003coutput_path_or_file\u003e]\n```\n\nThe `-i` or `input` parameter is required. It specifies a path to a file, or a directory and a wildcard expression. If a wildcard expression is used, it will process all matching files in the directory.\n\nThe application will assume that you want to convert any image to a PBP, and any PBP to a .BIN + .CUE.\n\nThe command:\n\n```\npsxpackager -i \"Final Fantasy VII - Disc 1.cue\"\n```\n\nwill process `Final Fantasy VII - Disc 1.bin` and `Final Fantasy VII - Disc 1.cue` and output `Final Fantasy VII - Disc 1.pbp`.\n\n\nThe `-o` or `output` parameter is optional. It specifies the folder where the the converted or extracted files will be placed. If not specified, the folder specified on the input is ued.\n\nIf the input is a file and the output is also a file, the output will be renamed, instead of reusing the input filename.\n\n## Options\n\n```\n  -i, --input                (Group: input) The input file or path to convert. The filename may contain wildcards.\n\n  -o, --output               The output path where the converted file(s) will be written.\n\n  -l, --level                (Default: 5) Set compression level 0-9, default 5.\n\n  -r, --recursive            Recurse subdirectories\n\n  -d, --discs                A comma-separated list of disc numbers to extract from a PBP.\n\n  -v, --verbosity            (Default: 3) Set level of output messages. 1 = Files, Errors and Warnings only, 2 = No\n                             Info-level messages, 3 = All messages (default), 4 = Include timestamps\n\n  -x                         If specified, overwrite a file if it exists, otherwise ask confirmation.\n\n  -s, --skip                 If specified, will skip existing files.\n\n  -f, --format               (Default: %FILENAME%) Specify the filename format e.g. [%GAMEID%] [%MAINGAMEID%] %TITLE%\n                             (%REGION%) or %FILENAME%\n\n  -g, --log                  If specified, log messages to a file.\n\n  --extract                  If specified, extract resources using the path specified by resource-format. See README for\n                             more details.\n\n  --import                   If specified, import resources using the path specified by resource-format. See README for\n                             more details.\n\n  --generate                 If specified, create empty resources folder specified by resource-format. See README for\n                             more details.\n\n  --resource-format          The format to use with extract/import/generate. See README for more details.\n\n  --resource-root            The path where resource folders will be located. If not specified, the path will be the\n                             same as the input file\n\n  --help                     Display this help screen.\n\n  --version                  Display version information.\n```\n\n## Convert a .BIN, .CUE, .ISO, .IMG or archive to a .PBP\n\nPSXPackager supports several input formats. Simply pass the path to the archive, CUE sheet, or image with the `-i` parameter.\n\n```\npsxpackager -i \u003cpath_to_file\u003e [-o \u003coutput_path\u003e] [-l \u003ccompression_level\u003e] [-y]\n```\n\nThe output path is optional. If not specified, the path of the input file will be used.\n\nPSXPackager will prompt if a file exists before overwriting it. Use the `-x` argument to overwrite all files in the output directory.\n\nSet the compression level to a value from 0 to 9, with 0 being no compression and 9 being the highest compression level. If not specified, it will default to 5.\n\nPSXPackager can automatically extract files from compressed files (archives) anc convert the contents into a PBP. The following formats are supported:\n\n* .zip\n* .7z\n* .rar\n* .tar\n* .gz\n\nArchives will be decompressed to a temporary folder in `%TEMP%\\PSXPackager`, and will be cleaned up on exit.\n\n## Extract a .PBP to a .BIN + .CUE\n\nPSXPackager checks the file extension to decide whether to extract or convert, so the syntax remains the same. The output will always be a `.bin` + `.cue`.\n\nExtracting from Multi-disc PBPs are supported. Specify the discs to extract with the `-d` or `--disc` option, which takes a comma-separated list of disc numbers to extract, e.g. `-d 1,2`. If this option is not specified, all discs will be extracted.\n\n```\npsxpackager -i \u003cpath_to_pbp\u003e [-o \u003coutput_path\u003e] [-d \u003clist_of_discs\u003e]\n```\n\n## Filename formatting\n\nUse the `-f` or `format` option to specify the format of the output filename based on the information found on the disc (Sony GameID) and the `gameInfo.db` file.\n\nThis allows you to generate standardized output filenames that can include the GameID e.g SCUS-94163, the region (NTSC/PAL) and the game name.  \n\nBy default, it will use `%FILENAME%`, i.e. the input filename as the output filename.\n\nSee [Formatting](#formatting) for more info.\n\n## Merging Multi-Track Games\n\nSome games such as Tomb Raider have additional digital audio tracks on the CD, for use as background music.\n\nThese audio tracks are usually extracted by disc rippers as separate `.BIN` files. They usually are named `\u003cGame Name\u003e - Track nn.bin` or similar, where `nn` is a 2-digit number. They usually come with a `.CUE` file which is an index for all the related `.BIN` files.\n\nUsually you would need to use CDMage or some other tool to merge multi-track discs.\n\nWith PSXPackager, all you need to do is pass in the `.CUE` file as the input file and it will automatically merge multi-track discs before converting to PBP as long as  \n\nThe resulting PBP file will contain the audio tracks as disc tracks and you will be able to play your game on your PSP or emulator with music.\n\n## Creating Multi-disc PBPs\n\nThe PBP format can contain more than one disc, and this is supported by PSXPackager. This allows you to merge a multi-disc game such as Final Fantasy VII (3 discs) into a single PBP. \n\nTo do this from the command line, first create an `.m3u` file containing a list of the discs in the order you wish them to appear in the PBP.\n\nFor example, create a text file with the following contents and save as `Final Fantasy VIII.m3u`\n\n```\nFinal Fantasy VIII - Disc 1.cue\nFinal Fantasy VIII - Disc 2.cue\nFinal Fantasy VIII - Disc 3.cue\n```\n\nCall `psxpackager` with the `.m3u` as the input file.\n\n```\npsxpackager -i \"Final Fantasy VIII.m3u\" [-o \u003coutput_path\u003e]\n```\n\nThe file  `Final Fantasy VIII.PBP` will be created which contains the three discs in one file.\n\n## Batch Conversion\n\nWildcards are now supported using the `-i` argument\n\n```\npsxpackager -i \u003cpath_containing_files\u003e\\\u003cwildcard_filter\u003e [-o \u003coutput_path\u003e]\n```\n\nThis will process all supported files in the folder `C:\\Roms`. Use with caution, as you may be overwriting files that exist.\n\n```\npsxpackager -i \"C:\\Roms\\*.*\"\n```\n\nThis will extract all PBP files in the folder `C:\\Roms` to BIN+CUE.\n\n```\npsxpackager -i \"C:\\Roms\\*.PBP\"\n```\n\nThis will convert all files matching `Legend of Dragoon - Disc ?.bin` in the folder `C:\\Roms` to PBP.\n\n```\npsxpackager -i \"C:\\Roms\\Legend of Dragoon - Disc ?.bin\"\n```\n\nIf you want faster batch conversion, use the GUI, as it supports multi-threaded processing.\n\n# Customizing PBPs with Resources\n\nResource files are PBP-specific embedded resources that are normally used by the PSP, PSVita or PS3 to display an image or play audio on the XMB when the game is selected. These files usually named ICON0.PNG, PIC0.PNG, PIC1.PNG and SND0.AT3.\n\nPSXPackager can extract (`--extract`) or embed (`--import`) resource files for a single conversion or batch conversion. To do the latter, the resource files must be located in a specific location.\n\nThere are two options that let you set how and where the resource files are found.\n\nThe `--resource-format` option lets you match a folder based on filename, gameid and other formats. See [Formatting](#formatting). omitting this option defaults the format to `%FILENAME%`, meaning the input filename without the extension will be used.\n\nThe `--resource-root` option sets the root path of your resource folders. This allows you to separate your disc images from your resource folders.  You can omit this option to use the same folder as the input file as the root path of your resource folder.\n\n## Extract Resources\n\nExtracts resources from a PBP.\n\n```\npsxpackager -i \u003cpath_to_file\u003e --extract [--resource-format \u003cresource format\u003e] [--resource-root \u003cresource root folder\u003e] [-o \u003coutput_path\u003e]\n```\n\n`--resource-format` - the format of the folder name to extract the embedded resources to. See [Formatting](#formatting).  If not specified, the default value will be `%FILENAME%\\%RESOURCE%.%EXT%`\n\n`--resource-root` - the root folder where to place the resource folders. Do not specify to place the resource folder next to the input file.\n\nFor example, if you extract the resources from a `Final Fantasy VII (DISC 1).PBP` file using the commande below:\n\n```\npsxpackager -i \"Final Fantasy VII (DISC 1).PBP\" --extract --resource-path %GAMEID%\\%RESOURCE%.%EXT%\n```\n\nYou would have extracted the following files:\n\n```\nSCUS-94163\\ICON0.PNG\nSCUS-94163\\PIC0.PNG\nSCUS-94163\\PIC1.PNG\n```\n\n## Import Resources\n\nImports custom resources into PBP.\n\n```\npsxpackager -i \u003cpath_to_file\u003e --import [--resource-format \u003cresource format\u003e] [--resource-folder \u003cresource root folder\u003e] [-o \u003coutput_path\u003e]\n```\n\n`--resource-format` - the format of the folder name to import the embedded resources from. See [Formatting](#formatting).  If not specified, the default value will be `%FILENAME%\\%RESOURCE%.%EXT%`\n\n`--resource-root` - the root folder where to start searching for the resource folders. Do not specify to look for the resource folder next to the input file.\n\nFor example, if you want to build a PBP from a BIN+CUE file and you have the resources next to the file in a folder such as below:\n\n```\nFinal Fantasy VII (Disc-1).bin\nFinal Fantasy VII (Disc-1).cue\nSCUS-94163\\ICON0.PNG\nSCUS-94163\\PIC0.PNG\nSCUS-94163\\PIC1.PNG\n```\n\nYou can build your PBP using the following command:\n\n```\npsxpackager -i \"Final Fantasy VII (Disc-1).cue\" --import --resource-path %GAMEID%\\%RESOURCE%.%EXT%\n```\n\n## Generate Resource Folders\n\nThis option is provided for the following scenario:\n\nYou have a bunch of images you want to convert to PBP, and you want to customize all of them.  To do this, you will need to generate resource folders, where you will later place the icons and backgrounds you want.\n\nThis option will create empty folders using the specified format.\n\n```\npsxpackager -i \u003cpath_to_file\u003e --generate [--resource-format \u003cresource format\u003e] [--resource-folder \u003cresource root folder\u003e]\n```\n\n`--resource-format` - the format of the folder name to generate. See [Formatting](#formatting).  If not specified, the default value will be `%FILENAME%`\n\nFor example, this will generate the empty folder `SCUS-94163`:\n\n```\npsxpackager -i \"Final Fantasy VII (Disc-1).cue\" --generate --resource-path %GAMEID%\n```\n\n# Formatting\n\n```\n%FILENAME%   - The input filename\n \n%GAMEID%     - The GAMEID of the disc. For multi-disc games, each disc will have a differnt GAMEID. \n\n%MAINGAMEID% - The GAMEID of the first disc in a multi-disc game.\n\n%TITLE%      - The Disc Title of the game. This will contain the Disc number or other identifier in a mult-disc game.\n\n%MAINTITLE%  - The Main title of the game. This will be the actual title of the game.\n\n%REGION%     - The game region, i.e. NTSC or PAL.\n\n%RESOURCE%   - The resource type. (ICON0, ICON1, PIC0, PIC1, SND0). Only used for resource files\n\n%EXT%        - The resource extension. (PNG, AT3). Only used for resource files\n\n```\n\nFor example, processing `Final Fantasy VIII - Disc 1.iso` with the following format:\n\n```\n[%GAMEID%] %TITLE% (%REGION%)\n```\n\nwill generate the filename\n\n```\n[SLUS00892] Final Fantasy VIII - Disc 1 (NTSC).pbp\n```\n\nNote that when extracting from a multi-disc PBP PSXPackager will append the disc number to the file format.\n\n\n# FAQ\n\n### Does PSXPackager support audio tracks? \n\nYes, but only as the original audio (no compression).\n\n### How can I convert a game with audio tracks into a PBP? \n\nIf you have a `.CUE` file with multiple `.BIN` files, pass the `.CUE` file as the input file and PSXPackager will automatically merge the `.BIN` files into a single file in a temporary folder.\n\nA new CUE sheet will also be created with all tracks under the merged `.BIN`, and index positions will be updated.\n\nThis merged `.CUE` file will be used to create a TOC (Table of Contents) for the PBP ISO. This allows audio tracks to be correctly read from the PBP.\n\nTemporary files will be deleted when conversion is complete, if the conversion is cancelled, or if an error occurs.\n\nThe temporary folder location is `%TEMP%\\PSXPackager`.\n\n# Buy me a beer?\n\nHey programming is fun, but it's also tiring. I mean I could have just been drinking a beer. If you saved yourself a week of converting stuff, why not consider...\n\n* [Buy me a nice beer](https://www.paypal.me/rupertavery/5.00?locale.x=en_US)\n* [Buy me a good beer](https://www.paypal.me/rupertavery/2.50?locale.x=en_US)\n* [Buy me a decent beer](https://www.paypal.me/rupertavery/1.50?locale.x=en_US)\n\nand I will raise one to you! Much appreciated!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frupertavery%2Fpsxpackager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frupertavery%2Fpsxpackager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frupertavery%2Fpsxpackager/lists"}