Coder Social home page Coder Social logo

rupertavery / psxpackager Goto Github PK

View Code? Open in Web Editor NEW
195.0 11.0 15.0 2.72 MB

A utility to convert Playstation disc images in various formats to PBP format and back

License: Other

C# 99.65% Batchfile 0.16% Makefile 0.16% Shell 0.03%
psx pbp iso bin converters csharp dotnet psp psx2psp

psxpackager's Introduction

PSXPackager

PSXPackager is a port of the popstation-md C source to C#.

There is a command-line executable (Windows/Linux/OSX) and a Windows-only GUI available.

The GUI allows you to select and process several images in a queue (Batch mode).

Feel free to take the Popstation library and use it as you like.

Features

  • Convert .BIN + .CUE or .IMG to .PBP
  • Extract .PBP to .BIN + .CUE file
  • Supports conversion of .7z, .zip, .rar files to .PBP
  • Supports merging of single-disc, multi-track .BIN + .CUE into one .BIN + .CUE
  • Supports writing multi-track CUE information to PBP for audio
  • PBP Compression levels from 0 to 9
  • Supports writing multi-disc PBP using .m3u files
  • Supports extracting multi-disc PBP
  • Windows/Linux/OSX CLI
  • GUI with PSX2PSP-like interface and batch processing

Usage

PSXPackager requires .NET 6.0 Runtime or above.

The basic usage of PSXPackager accepts the file or path to convert.

psxpackager -i <input_path_or_file> [-o <output_path_or_file>]

The -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.

The application will assume that you want to convert any image to a PBP, and any PBP to a .BIN + .CUE.

The command:

psxpackager -i "Final Fantasy VII - Disc 1.cue"

will process Final Fantasy VII - Disc 1.bin and Final Fantasy VII - Disc 1.cue and output Final Fantasy VII - Disc 1.pbp.

The -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.

If the input is a file and the output is also a file, the output will be renamed, instead of reusing the input filename.

Options

  -i, --input                (Group: input) The input file or path to convert. The filename may contain wildcards.

  -o, --output               The output path where the converted file(s) will be written.

  -l, --level                (Default: 5) Set compression level 0-9, default 5.

  -r, --recursive            Recurse subdirectories

  -d, --discs                A comma-separated list of disc numbers to extract from a PBP.

  -v, --verbosity            (Default: 3) Set level of output messages. 1 = Files, Errors and Warnings only, 2 = No
                             Info-level messages, 3 = All messages (default), 4 = Include timestamps

  -x                         If specified, overwrite a file if it exists, otherwise ask confirmation.

  -s, --skip                 If specified, will skip existing files.

  -f, --format               (Default: %FILENAME%) Specify the filename format e.g. [%GAMEID%] [%MAINGAMEID%] %TITLE%
                             (%REGION%) or %FILENAME%

  -g, --log                  If specified, log messages to a file.

  --extract                  If specified, extract resources using the path specified by resource-format. See README for
                             more details.

  --import                   If specified, import resources using the path specified by resource-format. See README for
                             more details.

  --generate                 If specified, create empty resources folder specified by resource-format. See README for
                             more details.

  --resource-format          The format to use with extract/import/generate. See README for more details.

  --resource-root            The path where resource folders will be located. If not specified, the path will be the
                             same as the input file

  --help                     Display this help screen.

  --version                  Display version information.

Convert a .BIN, .CUE, .ISO, .IMG or archive to a .PBP

PSXPackager supports several input formats. Simply pass the path to the archive, CUE sheet, or image with the -i parameter.

psxpackager -i <path_to_file> [-o <output_path>] [-l <compression_level>] [-y]

The output path is optional. If not specified, the path of the input file will be used.

PSXPackager will prompt if a file exists before overwriting it. Use the -x argument to overwrite all files in the output directory.

Set 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.

PSXPackager can automatically extract files from compressed files (archives) anc convert the contents into a PBP. The following formats are supported:

  • .zip
  • .7z
  • .rar
  • .tar
  • .gz

Archives will be decompressed to a temporary folder in %TEMP%\PSXPackager, and will be cleaned up on exit.

Extract a .PBP to a .BIN + .CUE

PSXPackager 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.

Extracting 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.

psxpackager -i <path_to_pbp> [-o <output_path>] [-d <list_of_discs>]

Filename formatting

Use 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.

This allows you to generate standardized output filenames that can include the GameID e.g SCUS-94163, the region (NTSC/PAL) and the game name.

By default, it will use %FILENAME%, i.e. the input filename as the output filename.

See Formatting for more info.

Merging Multi-Track Games

Some games such as Tomb Raider use audio tracks as background music. These are usually extracted by disc rippers as separate .bin files. They usually come with a .cue file that lists the .bins in order and specifies how long each track is.

PSXPackager will automatically merge multi-bin discs before converting to PBP as long as you pass in the .cue file (not the first .bin file). Previously you would need to use CDMage or some other tool to merge multi-bins.

The 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.

Creating Multi-disc PBPs

The 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.

To 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.

For example, create a text file with the following contents and save as Final Fantasy VIII.m3u

Final Fantasy VIII - Disc 1.cue
Final Fantasy VIII - Disc 2.cue
Final Fantasy VIII - Disc 3.cue

Call psxpackager with the .m3u as the input file.

psxpackager -i "Final Fantasy VIII.m3u" [-o <output_path>]

The file Final Fantasy VIII.PBP will be created which contains the three discs in one file.

Batch Conversion

Wildcards are now supported using the -i argument

psxpackager -i <path_containing_files>\<wildcard_filter> [-o <output_path>]

This will process all supported files in the folder C:\Roms. Use with caution, as you may be overwriting files that exist.

psxpackager -i "C:\Roms\*.*"

This will extract all PBP files in the folder C:\Roms to BIN+CUE.

psxpackager -i "C:\Roms\*.PBP"

This will convert all files matching Legend of Dragoon - Disc ?.bin in the folder C:\Roms to PBP.

psxpackager -i "C:\Roms\Legend of Dragoon - Disc ?.bin"

If you want faster batch conversion, use the GUI, as it supports multi-threaded processing.

Customizing PBPs with Resources

Resource 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.

PSXPackager 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.

There are two options that let you set how and where the resource files are found.

The --resource-format option lets you match a folder based on filename, gameid and other formats. See Formatting. omitting this option defaults the format to %FILENAME%, meaning the input filename without the extension will be used.

The --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.

Extract Resources

Extracts resources from a PBP.

psxpackager -i <path_to_file> --extract [--resource-format <resource format>] [--resource-root <resource root folder>] [-o <output_path>]

--resource-format - the format of the folder name to extract the embedded resources to. See Formatting. If not specified, the default value will be %FILENAME%\%RESOURCE%.%EXT%

--resource-root - the root folder where to place the resource folders. Do not specify to place the resource folder next to the input file.

For example, if you extract the resources from a Final Fantasy VII (DISC 1).PBP file using the commande below:

psxpackager -i "Final Fantasy VII (DISC 1).PBP" --extract --resource-path %GAMEID%\%RESOURCE%.%EXT%

You would have extracted the following files:

SCUS-94163\ICON0.PNG
SCUS-94163\PIC0.PNG
SCUS-94163\PIC1.PNG

Import Resources

Imports custom resources into PBP.

psxpackager -i <path_to_file> --import [--resource-format <resource format>] [--resource-folder <resource root folder>] [-o <output_path>]

--resource-format - the format of the folder name to import the embedded resources from. See Formatting. If not specified, the default value will be %FILENAME%\%RESOURCE%.%EXT%

--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.

For 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:

Final Fantasy VII (Disc-1).bin
Final Fantasy VII (Disc-1).cue
SCUS-94163\ICON0.PNG
SCUS-94163\PIC0.PNG
SCUS-94163\PIC1.PNG

You can build your PBP using the following command:

psxpackager -i "Final Fantasy VII (Disc-1).cue" --import --resource-path %GAMEID%\%RESOURCE%.%EXT%

Generate Resource Folders

This option is provided for the following scenario:

You 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.

This option will create empty folders using the specified format.

psxpackager -i <path_to_file> --generate [--resource-format <resource format>] [--resource-folder <resource root folder>]

--resource-format - the format of the folder name to generate. See Formatting. If not specified, the default value will be %FILENAME%

For example, this will generate the empty folder SCUS-94163:

psxpackager -i "Final Fantasy VII (Disc-1).cue" --generate --resource-path %GAMEID%

Formatting

%FILENAME%   - The input filename
 
%GAMEID%     - The GAMEID of the disc. For multi-disc games, each disc will have a differnt GAMEID. 

%MAINGAMEID% - The GAMEID of the first disc in a multi-disc game.

%TITLE%      - The Disc Title of the game. This will contain the Disc number or other identifier in a mult-disc game.

%MAINTITLE%  - The Main title of the game. This will be the actual title of the game.

%REGION%     - The game region, i.e. NTSC or PAL.

%RESOURCE%   - The resource type. (ICON0, ICON1, PIC0, PIC1, SND0). Only used for resource files

%EXT%        - The resource extension. (PNG, AT3). Only used for resource files

For example, processing Final Fantasy VIII - Disc 1.iso with the following format:

[%GAMEID%] %TITLE% (%REGION%)

will generate the filename

[SLUS00892] Final Fantasy VIII - Disc 1 (NTSC).pbp

Note that when extracting from a multi-disc PBP PSXPackager will append the disc number to the file format.

Multi-track .CUE files (Audio tracks)

If the input or compressed file has a .cue with multiple tracks, PSXPackager will merge the .bins into a single file in a temporary folder.

A new CUE sheet will also be created with all tracks under the merged .bin, and index positions will be updated.

This 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.

Temporary files will be deleted when conversion is complete, if the conversion is cancelled, or if an error occurs.

The temporary folder location is %TEMP%\PSXPackager.

Buy me a beer?

Hey 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...

and I will raise one to you! Much appreciated!

psxpackager's People

Contributors

lustyn avatar offdutypirate avatar rupertavery avatar takano32 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

psxpackager's Issues

String reference not set to an instance of a String.

Hello, I found this to try instead of psx2psp. I am trying to convert the newly released title 'Magic Castle' to PBP format. Following your readme I have input the correct command but I do not get any output file.

PS D:\Backup\SONY\PSP\PSX2PSPv1.4.2> .\psxpackager -i T:\Downloads2T\Magic_Castle_2020_23_dec.zip [-o D:\Backup\SONY\PSP\PSX2PSPv1.4.2\Newfolder] [-l 0] [-y]
PSXPackager v1.4 by RupertAvery

Input : T:\Downloads2T\Magic_Castle_2020_23_dec.zip
Output: T:\Downloads2T
Compression Level: 5

Processing started: 01:25:36
Processing T:\Downloads2T\Magic_Castle_2020_23_dec.zip
Decompressing file Magic_Castle_2020_23_dec.cue -
Decompressing file Magic_Castle_2020_23_dec.bin - 100%
Using Title 'Magic_Castle_2020_23_dec'
Writing T:\Downloads2T\Magic_Castle_2020_23_dec.PBP...

String reference not set to an instance of a String.
Parameter name: s
Processing completed: 00h 00m 02s

Add support for .ccd, .chd, .mdf formats

I'm trying to organize my PSX library and compress the roms as low as possible with the .pbp format. However, some roms have these formats and it would be super great to support them in this awesome project. Thanks for putting the time into this @RupertAvery!

Image embeding?

Just a suggestion for embeding images into the eboot for covers ans boxart.

Method not found: 'System.String System.String.Format(System.IFormatProvider, System.String, System.Object)'.

E:\PC\PSXPackager>PSXPackager.exe -l 0 -i "C:\Users\Arthur\Downloads\Rollcage PSX\Rollcage.cue"
PSXPackager v1.4.1 by RupertAvery

Input : C:\Users\Arthur\Downloads\Rollcage PSX\Rollcage.cue
Output: C:\Users\Arthur\Downloads\Rollcage PSX
Compression Level: 0

Processing started: 12:55:04
Processing C:\Users\Arthur\Downloads\Rollcage PSX\Rollcage.cue
Merging .bins...

Method not found: 'System.String System.String.Format(System.IFormatProvider, System.String, System.Object)'.
Processing completed: 00h 00m 04s

OS: Windows 7 SP1 x64 Professional

Resource files cannot be found on case-sensitive filesystems.

When running the latest release on a case-sensitive filesystem, as is typical on Linux, PSXPackager fails to find the default resources files. This is due to PSXPackager searching for Resources/PIC0.png, but the actual file included with the release is Resources/PIC0.PNG. This prevents the file from being found.

A temporary fix is to rename the resource files as any errors occur to match the cases expected by PSXPackager. However, it would be better to handle the cases correctly in the program itself.

Steps:

  • Download and extract v1.6.1 psxpackager-linux-x64.zip to a case-sensitive filesystem, e.g. ext4
  • ./psxpackager -i game.cue -o . -f "%MAINTITLE% [%MAINGAMEID%] (%REGION%)"

Expected results:

PSXPackager runs without error.

Actual results:

Could not find file '/home/user/psxpackager-linux-x64/Resources/PIC0.png'.

Error of Merged file not being found fix

I'm running this on Win 11, and using Parallels. I was receiving an error when trying to convert some games that had multiple tracks in the folder. Error was saying it could not find temp merged file.

Solved this issue by manually creating the temp folder PSXPackager in:
C:\Users*your name*\AppData\Local\Temp\PSXPackager

Just wanted to pass it along in case there is an additional way fix or if someone else has the same issue and needed help.

Batch PBP conversion broke during Action Bass

I just tried your script on a large folder of games, and it broke right within the first few games, but the games that did convert to PBP were successfully tested in Retroarch so they are definitely being converted. I should also mention I've used another utility to make a successful PBP out of this bin/cue so I know the game was ripped properly. Here is the output from the command line:

Processing 15 of 1277: U:\PSX Uncompressed\Action Bass (USA).cue
Could not find gameId !
Object reference not set to an instance of an object.

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
at PSXPackager.Processing.ConvertIso(String srcIso, String srcToc, String outpath, Int32 compressionLevel, Boolean checkIfFileExists, CancellationToken cancellationToken)
at PSXPackager.Processing.ProcessFile(String file, String outPath, String tempPath, String discs, Int32 compressionLevel, Boolean checkIfFileExists, CancellationToken cancellationToken)
at PSXPackager.Program.ProcessFiles(IReadOnlyList1 files, String outputPath, String tempPath, String discs, Boolean checkIfFileExists, Int32 compressionLevel)
at PSXPackager.Program.<>c__DisplayClass2_0.

b__0(Options o)
at CommandLine.ParserResultExtensions.WithParsed[T](ParserResult1 result, Action`1 action)
at PSXPackager.Program.Main(String[] args)
14 files processed

U:\PSXPackager.v1.3.1>

Error when tries to use 'dotnet build' in linux debian based!

Error when tries to use 'dotnet build' in linux debian based!

Pre-Condition:

  • sudo apt install dotnet7

Steps:

Actual results:

  • 1 Error prevent the build:
    /usr/lib/dotnet/sdk/7.0.105/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(1226,3): error MSB4019: The imported project "/usr/lib/dotnet/sdk/7.0.105/Sdks/Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.NET.Sdk.WindowsDesktop.targets" was not found. Confirm that the expression in the Import declaration ";/usr/lib/dotnet/sdk/7.0.105/Sdks/Microsoft.NET.Sdk/targets/../../Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.NET.Sdk.WindowsDesktop.targets" is correct, and that the file exists on disk. [/home/popos/PSXPackager/PSXPackagerGUI/PSXPackagerGUI.csproj]

Expected results:

  • PSXPackager build without error

LOGS:

DOTNET7

popos@pop-os PSXPackager (master) $ sudo apt install dotnet7
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
aspnetcore-runtime-7.0 aspnetcore-targeting-pack-7.0 dotnet-apphost-pack-7.0 dotnet-host-7.0
dotnet-hostfxr-7.0 dotnet-runtime-7.0 dotnet-sdk-7.0 dotnet-targeting-pack-7.0 dotnet-templates-7.0
netstandard-targeting-pack-2.1-7.0
The following packages will be REMOVED:
dotnet-host netstandard-targeting-pack-2.1
The following NEW packages will be installed:
aspnetcore-runtime-7.0 aspnetcore-targeting-pack-7.0 dotnet-apphost-pack-7.0 dotnet-host-7.0
dotnet-hostfxr-7.0 dotnet-runtime-7.0 dotnet-sdk-7.0 dotnet-targeting-pack-7.0 dotnet-templates-7.0
dotnet7 netstandard-targeting-pack-2.1-7.0
0 upgraded, 11 newly installed, 2 to remove and 0 not upgraded.
Need to get 135 MB of archives.
After this operation, 470 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://apt.pop-os.org/ubuntu jammy-updates/universe amd64 dotnet-host-7.0 amd64 7.0.105-0ubuntu122.04.1 [178 kB]
Get:2 http://apt.pop-os.org/ubuntu jammy-updates/universe amd64 netstandard-targeting-pack-2.1-7.0 amd64 7.0.105-0ubuntu1
22.04.1 [1,405 kB]
Get:3 http://apt.pop-os.org/ubuntu jammy-updates/universe amd64 dotnet-hostfxr-7.0 amd64 7.0.105-0ubuntu122.04.1 [163 kB]
Get:4 http://apt.pop-os.org/ubuntu jammy-updates/universe amd64 dotnet-runtime-7.0 amd64 7.0.105-0ubuntu1
22.04.1 [24.5 MB]
Get:5 http://apt.pop-os.org/ubuntu jammy-updates/universe amd64 aspnetcore-runtime-7.0 amd64 7.0.105-0ubuntu122.04.1 [7,812 kB]
Get:6 http://apt.pop-os.org/ubuntu jammy-updates/universe amd64 aspnetcore-targeting-pack-7.0 amd64 7.0.105-0ubuntu1
22.04.1 [1,584 kB]
Get:7 http://apt.pop-os.org/ubuntu jammy-updates/universe amd64 dotnet-apphost-pack-7.0 amd64 7.0.105-0ubuntu122.04.1 [3,756 kB]
Get:8 http://apt.pop-os.org/ubuntu jammy-updates/universe amd64 dotnet-targeting-pack-7.0 amd64 7.0.105-0ubuntu1
22.04.1 [2,748 kB]
Get:9 http://apt.pop-os.org/ubuntu jammy-updates/universe amd64 dotnet-templates-7.0 amd64 7.0.105-0ubuntu122.04.1 [2,848 kB]
Get:10 http://apt.pop-os.org/ubuntu jammy-updates/universe amd64 dotnet-sdk-7.0 amd64 7.0.105-0ubuntu1
22.04.1 [90.4 MB]
Get:11 http://apt.pop-os.org/ubuntu jammy-updates/universe amd64 dotnet7 amd64 7.0.105-0ubuntu1~22.04.1 [28.4 kB]
Fetched 135 MB in 13s (10.1 MB/s)
dpkg: dotnet-host: dependency problems, but removing anyway as you requested:
dotnet-templates-6.0 depends on dotnet-host; however:
Package dotnet-host is to be removed.
Package dotnet-host-7.0 which provides dotnet-host is not installed.
dotnet-hostfxr-6.0 depends on dotnet-host; however:
Package dotnet-host is to be removed.
Package dotnet-host-7.0 which provides dotnet-host is not installed.

(Reading database ... 309252 files and directories currently installed.)
Removing dotnet-host (6.0.116-0ubuntu122.04.1) ...
Selecting previously unselected package dotnet-host-7.0.
(Reading database ... 309186 files and directories currently installed.)
Preparing to unpack .../dotnet-host-7.0_7.0.105-0ubuntu1
22.04.1_amd64.deb ...
Unpacking dotnet-host-7.0 (7.0.105-0ubuntu1~22.04.1) ...
dpkg: netstandard-targeting-pack-2.1: dependency problems, but removing anyway as you requested:
dotnet-sdk-6.0 depends on netstandard-targeting-pack-2.1.

(Reading database ... 309251 files and directories currently installed.)
Removing netstandard-targeting-pack-2.1 (6.0.116-0ubuntu122.04.1) ...
Selecting previously unselected package netstandard-targeting-pack-2.1-7.0.
(Reading database ... 309120 files and directories currently installed.)
Preparing to unpack .../0-netstandard-targeting-pack-2.1-7.0_7.0.105-0ubuntu1
22.04.1_amd64.deb ...
Unpacking netstandard-targeting-pack-2.1-7.0 (7.0.105-0ubuntu122.04.1) ...
Selecting previously unselected package dotnet-hostfxr-7.0.
Preparing to unpack .../1-dotnet-hostfxr-7.0_7.0.105-0ubuntu1
22.04.1_amd64.deb ...
Unpacking dotnet-hostfxr-7.0 (7.0.105-0ubuntu122.04.1) ...
Selecting previously unselected package dotnet-runtime-7.0.
Preparing to unpack .../2-dotnet-runtime-7.0_7.0.105-0ubuntu1
22.04.1_amd64.deb ...
Unpacking dotnet-runtime-7.0 (7.0.105-0ubuntu122.04.1) ...
Selecting previously unselected package aspnetcore-runtime-7.0.
Preparing to unpack .../3-aspnetcore-runtime-7.0_7.0.105-0ubuntu1
22.04.1_amd64.deb ...
Unpacking aspnetcore-runtime-7.0 (7.0.105-0ubuntu122.04.1) ...
Selecting previously unselected package aspnetcore-targeting-pack-7.0.
Preparing to unpack .../4-aspnetcore-targeting-pack-7.0_7.0.105-0ubuntu1
22.04.1_amd64.deb ...
Unpacking aspnetcore-targeting-pack-7.0 (7.0.105-0ubuntu122.04.1) ...
Selecting previously unselected package dotnet-apphost-pack-7.0.
Preparing to unpack .../5-dotnet-apphost-pack-7.0_7.0.105-0ubuntu1
22.04.1_amd64.deb ...
Unpacking dotnet-apphost-pack-7.0 (7.0.105-0ubuntu122.04.1) ...
Selecting previously unselected package dotnet-targeting-pack-7.0.
Preparing to unpack .../6-dotnet-targeting-pack-7.0_7.0.105-0ubuntu1
22.04.1_amd64.deb ...
Unpacking dotnet-targeting-pack-7.0 (7.0.105-0ubuntu122.04.1) ...
Selecting previously unselected package dotnet-templates-7.0.
Preparing to unpack .../7-dotnet-templates-7.0_7.0.105-0ubuntu1
22.04.1_amd64.deb ...
Unpacking dotnet-templates-7.0 (7.0.105-0ubuntu122.04.1) ...
Selecting previously unselected package dotnet-sdk-7.0.
Preparing to unpack .../8-dotnet-sdk-7.0_7.0.105-0ubuntu1
22.04.1_amd64.deb ...
Unpacking dotnet-sdk-7.0 (7.0.105-0ubuntu122.04.1) ...
Selecting previously unselected package dotnet7.
Preparing to unpack .../9-dotnet7_7.0.105-0ubuntu1
22.04.1_amd64.deb ...
Unpacking dotnet7 (7.0.105-0ubuntu122.04.1) ...
Setting up aspnetcore-targeting-pack-7.0 (7.0.105-0ubuntu1
22.04.1) ...
Setting up dotnet-host-7.0 (7.0.105-0ubuntu122.04.1) ...
Setting up dotnet-templates-7.0 (7.0.105-0ubuntu1
22.04.1) ...
Setting up dotnet-targeting-pack-7.0 (7.0.105-0ubuntu122.04.1) ...
Setting up dotnet-apphost-pack-7.0 (7.0.105-0ubuntu1
22.04.1) ...
Setting up netstandard-targeting-pack-2.1-7.0 (7.0.105-0ubuntu122.04.1) ...
Setting up dotnet-hostfxr-7.0 (7.0.105-0ubuntu1
22.04.1) ...
Setting up dotnet-runtime-7.0 (7.0.105-0ubuntu122.04.1) ...
Setting up aspnetcore-runtime-7.0 (7.0.105-0ubuntu1
22.04.1) ...
Setting up dotnet-sdk-7.0 (7.0.105-0ubuntu122.04.1) ...
Setting up dotnet7 (7.0.105-0ubuntu1
22.04.1) ...
Processing triggers for man-db (2.10.2-1) ...

DOTNET BUILD

popos@pop-os PSXPackager (master) $ dotnet build
MSBuild version 17.4.3+7e646be43 for .NET
Determining projects to restore...
Restored /home/popos/PSXPackager/DiscUtils.Streams/DiscUtils.Streams.csproj (in 345 ms).
Restored /home/popos/PSXPackager/Popstation/Popstation.csproj (in 156 ms).
Restored /home/popos/PSXPackager/PSXPackager.Tests/PSXPackager.Tests.csproj (in 569 ms).
Restored /home/popos/PSXPackager/Popstation.Database/Popstation.Database.csproj (in 101 ms).
Restored /home/popos/PSXPackager/PSXPackagerGUI/PSXPackagerGUI.csproj (in 555 ms).
Restored /home/popos/PSXPackager/DiscUtils.Iso9660/DiscUtils.Iso9660.csproj (in 6 ms).
Restored /home/popos/PSXPackager/PSXPackager.Common/PSXPackager.Common.csproj (in 26 ms).
Restored /home/popos/PSXPackager/DiscUtils.Core/DiscUtils.Core.csproj (in 8 ms).
Restored /home/popos/PSXPackager/PSXPackager/PSXPackager.csproj (in 3.86 sec).
/usr/lib/dotnet/sdk/7.0.105/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(1226,3): error MSB4019: The imported project "/usr/lib/dotnet/sdk/7.0.105/Sdks/Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.NET.Sdk.WindowsDesktop.targets" was not found. Confirm that the expression in the Import declaration ";/usr/lib/dotnet/sdk/7.0.105/Sdks/Microsoft.NET.Sdk/targets/../../Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.NET.Sdk.WindowsDesktop.targets" is correct, and that the file exists on disk. [/home/popos/PSXPackager/PSXPackagerGUI/PSXPackagerGUI.csproj]
DiscUtils.Streams -> /home/popos/PSXPackager/DiscUtils.Streams/bin/Debug/net6.0/DiscUtils.Streams.dll
DiscUtils.Core -> /home/popos/PSXPackager/DiscUtils.Core/bin/Debug/net6.0/DiscUtils.Core.dll
DiscUtils.Iso9660 -> /home/popos/PSXPackager/DiscUtils.Iso9660/bin/Debug/net6.0/DiscUtils.Iso9660.dll
Popstation.Database -> /home/popos/PSXPackager/Popstation.Database/bin/Debug/net6.0/Popstation.Database.dll
PSXPackager.Common -> /home/popos/PSXPackager/PSXPackager.Common/bin/Debug/net6.0/PSXPackager.Common.dll
Popstation -> /home/popos/PSXPackager/Popstation/bin/Debug/net6.0/Popstation.dll
PSXPackager.Tests -> /home/popos/PSXPackager/PSXPackager.Tests/bin/Debug/net6.0/PSXPackager.Tests.dll
PSXPackager -> /home/popos/PSXPackager/PSXPackager/bin/Debug/net6.0/PSXPackager.dll

Build FAILED.

/usr/lib/dotnet/sdk/7.0.105/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(1226,3): error MSB4019: The imported project "/usr/lib/dotnet/sdk/7.0.105/Sdks/Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.NET.Sdk.WindowsDesktop.targets" was not found. Confirm that the expression in the Import declaration ";/usr/lib/dotnet/sdk/7.0.105/Sdks/Microsoft.NET.Sdk/targets/../../Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.NET.Sdk.WindowsDesktop.targets" is correct, and that the file exists on disk. [/home/popos/PSXPackager/PSXPackagerGUI/PSXPackagerGUI.csproj]
0 Warning(s)
1 Error(s)

Time Elapsed 00:00:13.41
popos@pop-os PSXPackager (master) $ dotnet --version
7.0.105

NOTES:

Same issue with dotnet6

Build binaries for each commit using GitHub Actions

I tried in my this branch, and it looks work.

https://github.com/takano32/PSXPackager/tree/develop-GitHub-Actions

It makes download binaries available for each commit at the bottom of GitHub Actions Summary page.

I'll create PR with these commit after #36 merging.

Convert multiple .BIN files to a multi-disc .PBP

I'm getting the following error when I try to combine multiple .bin into a single .pbp
Untitled

Here is my .m3u file (I've added the .txt extention in order to upload here)

Advanced Dungeons & Dragons - Iron & Blood - Warriors of Ravenloft.m3u.txt

this is the commandline I've ran: psxpackager -i "Advanced Dungeons & Dragons - Iron & Blood - Warriors of Ravenloft.m3u"

I've tried with multiple oter game and same error: Volume is not ISO-9660

any pointers for this would be great.

Merging a two-disk game to one pbp

Hi there!

I tried to convert Abe's Exoddus to PBP format using your utility, but unfortunately without success so far.
The game consists of two disks (cue + bin). Thus, four files in total need to be merged.
Following your instructions, I created an m3u file with the following lines, which I saved in the files directory:

Oddworld - Abe's Exoddus (USA) (Disc 1).bin
Oddworld - Abe's Exoddus (USA) (Disc 1).cue
Oddworld - Abe's Exoddus (USA) (Disc 2).bin
Oddworld - Abe's Exoddus (USA) (Disc 2).cue

The PBP file was created, but it doesn't work on my PS Vita. Apparently, I did something wrong.
Could you please help me figure out how to create a valid PBP file ? I would appreciate any help in this matter.

Viacheslav

Some errors produce empty files and fail silently

In the case of some errors (an example of an error where this occurs is reported in #48), PSXPackager will write an empty (or almost empty) file and fail silently (exit code 0, which ordinarily indicates success). As a result, automated scripts cannot easily detect these failures and will assume that the output file is valid. For destructive scripts, i.e. scripts that delete the original files once conversion is complete, this will cause loss of data.

Ideally, the program should not return an exit code of 0 if the conversion was unsuccessful, and should also clean up after itself in such cases to prevent empty files from being misinterpreted as successful conversions.

Steps:

  • Reproduce bug detailed in #48
  • echo $?

Expected results:

Conversion is unsuccessful. echo $? returns a non-zero value, indicating failure. No PBP file is produced.

Actual results:

Conversion is unsuccessful. echo $? returns 0, indicating success. A small PBP file containing no ROM data is produced.

Access denied when input files are read-only

Running v1.6.2 on Linux, I discovered that PSXPackager fails with an "access denied" error if it lacks write permission on the input files. I could understand the problem if it lacked write permissions on the output directory, but it should be able to function without write permissions on the inputs.

Steps:

  1. chmod -w game.cue game.bin
  2. ./psxpackager -i game.cue -o . -f "%MAINTITLE% [%MAINGAMEID%] (%REGION%)"

Expected Output:
PSXPackager runs without error.

Actual Results:

$ ./psxpackager -i game.cue -o . -f "%MAINTITLE% [%MAINGAMEID%] (%REGION%)"
PSXPackager v1.6.2 by RupertAvery

Input : game.cue
Output: .
Compression Level: 5

Processing started: 15:03:21
Processing game.cue

Access to the path 'game.bin' is denied.
Processing completed: 00h 00m 00s

This access denied error is fixed by executing chmod +w game.cue game.bin.

This project still active?

Several of us have been looking for a batch PSX bin/cue to PBP application now for quite some time and we recently found this project. I'm wondering if it's still being worked on or not, so if it is please let me know. Thank you

GUI exe doesn't launch

Hi,

I've installed .net 6 and 7 SDKs and desktop runtimes, however when i try to launch the GUI exe, nothing happens. I can't find the process in task manager and have tried running the program in compatibility mode.

I'm on windows 10.

Install .NET Core

Hello,

sorry if this is a stupid question, but I am running into an error that says that I need to install .NET Core.

I have checked my system and I already have .NET Core 5 and 6 installed. I have attached a screenshot to this issue.

Am I missing the correct .NET version or is there something else I am doing wrong?

Thank you for your help
Untitled
.

Multi Disc PBP decompression with more then 2 discs

Hi again

Tried the new multi disc compression out using .m3u files. Seems to work great for 2 disc games, but something isnt going correctly in the decompression stage when the game contains more then 2 discs.

When compressing I noticed it mentions writing "special data" after the last disc, but on decompression it only does the first 2 discs and then says its complete. Have included a copy of the verbose output from compression and decompression below so you can see what I mean, using Legend of Dragoon as an example

PS E:\PSX Packager testing\PSXPackager.v1.2> ./PSXPackager --verbose --input "Legend of Dragoon.m3u"

PSXPackager v1.2 by RupertAvery

Converting single file
Input : Legend of Dragoon.m3u
Output:
Compression Level: 5

Found "Legend of Dragoon, The"
Writing Disc 1
Writing: 100%
Writing Disc 2
Writing: 100%
Writing Disc 3
Writing: 100%
Writing Disc 4
Writing: 100%
Writing special data...

Conversion completed!
PS E:\PSX Packager testing\PSXPackager.v1.2> ./PSXPackager -v -i "Legend of Dragoon, The.PBP"
PSXPackager v1.2 by RupertAvery

Converting single file
Input : Legend of Dragoon, The.PBP
Output:
Compression Level: 5

Extracting: 100%
Conversion completed!

m3u -> pbp : resulting file is empty

Hi,0

first attempt at using your tool, with Abe Exoddus.

m3u file is fine, bin, cue, etc... I mean : I triple checked the usual suspect things.

Here's the output I get from the tool : (note that it displays 1.4.1 even if Idownloaded 1.5.1)


PSXPackager.exe -i "Oddworld - Abe's Exoddus.m3u"
PSXPackager v1.4.1 by RupertAvery

Input : Oddworld - Abe's Exoddus.m3u
Output:
Compression Level: 5

Processing started: 18:57:46
Processing Oddworld - Abe's Exoddus.m3u
Found 2 entries

Processing completed: 00h 00m 00s

pretty fast huh

Result is a directory containing a 0 octets file.

What could I do wrong ?

multidisc m3u playlist converts multiple copies of disc 1

Contents of Final Fantasy IX.m3u

Final Fantasy IX (USA) (Disc 1) (v1.1).cue
Final Fantasy IX (USA) (Disc 2) (v1.1).cue
Final Fantasy IX (USA) (Disc 3) (v1.1).cue
Final Fantasy IX (USA) (Disc 4) (v1.1).cue

Log

/mnt/SSD2/Games/EmulationStation-DE/ROMs$ psxpackager -i "/mnt/SSD2/Games/EmulationStation-DE/ROMs/psx/Final Fantasy IX.m3u" -o psx/
PSXPackager v1.6.1 by RupertAvery

Input : /mnt/SSD2/Games/EmulationStation-DE/ROMs/psx/Final Fantasy IX.m3u
Output: psx/
Compression Level: 5

Processing started: 14:26:46
Processing /mnt/SSD2/Games/EmulationStation-DE/ROMs/psx/Final Fantasy IX.m3u
Found 4 entries
Found SLUS01251 "Final Fantasy IX - Disc 1"
Found SLUS01251 "Final Fantasy IX - Disc 1"
Found SLUS01251 "Final Fantasy IX - Disc 1"
Found SLUS01251 "Final Fantasy IX - Disc 1"
Using Title 'Final Fantasy IX'
Writing Disc 1 - 100%
Writing Disc 2 - 100%
Writing Disc 3 - 100%
Writing Disc 4 - 100%
100%
Processing completed: 00h 00m 59s

On Ubuntu 22.04

Wrong filename

I have a this 7z files:
A2 Racer - Europa Tour (Netherlands).7z
Action Bass (Europe).7z
Actua Soccer 2 (Europe) (En,Fr).7z
Actua Soccer 2 (Italy).7z
Inside these files are bin and cue with the same names.

The result file with default file format or with format %FILENAME% are different from the original file names:
A2 Racer III - Europa Tour.PBP
Action Bass [PAL-Unk].PBP
Actua Soccer 2 [PAL-Unk].PBP
Actua Soccer 2 (Italy) - MERGED.PBP

[GUI] File search in `batch mode` not working properly

So I have a rather.....large compilation of PSX image files, and I would like to convert them .PBP, and ofcourse batch mode would be useful.

But for somereason the search function only finds few titles, when there are infact few hundred in there, with their image, cue etc. files. Also the search never stops, and aborting the search doesn't work, so the only solution is to close the program.

I realise that PSX Packager, and GUI especially are in beta, but I do hope you continue development because this app would be very usefull.

"Must install .Net Core" or wont run on Windows 10, but its obsolete

Getting this:

image

Keep in mind if I click "yes" nothing happens.

I google .net core and I get a warning on .NET Core 3.1:
image

So I download .NET 7.0 instead.............and I keep getting the same error.

Is this a problem on my end? or this program only runs with Core 3.1?

Thanks

[GUI] Stop Command Doesn't Work

I'm running this on Win 11 in Parallels, but the stop Command doesn't actually stop the process. I have to close the app to stop a process.

[BUG] Duplicate App path when trying to access gameinfo.db

Env: Ubuntu Server 18.04 x64, latest dotnet runtime framework installed.
Using release package 1.4 from Github release page.
Executable package uncompressed and executed directly in same folder the PSX isos are in.

Looking at stack trace, it looks like AppPath value is duplicated, leading to wrong absolute path.

$ mono PSXPackager.exe -l 9 -v 1 -g log.txt -i "*.cue" -o "converted/"
PSXPackager v1.4 by RupertAvery

Input : *.cue
Output: converted/
Compression Level: 9


Unhandled Exception:
System.IO.DirectoryNotFoundException: Could not find a part of the path "/media/4TB1/Torrents/complete/1G1R - Redump - Sony - PlayStation/toconvert/media/4TB1/Torrents/complete/1G1R - Redump - Sony - PlayStation/toconvert/Resources/gameinfo.db".
  at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.Boolean anonymous, System.IO.FileOptions options) [0x001cf] in <8f2c484307284b51944a1a13a14c0266>:0
  at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.IO.FileOptions options, System.String msgPath, System.Boolean bFromProxy, System.Boolean useLongPath, System.Boolean checkHost) [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0
  at (wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,int,System.IO.FileOptions,string,bool,bool,bool)
  at System.IO.StreamReader..ctor (System.String path, System.Text.Encoding encoding, System.Boolean detectEncodingFromByteOrderMarks, System.Int32 bufferSize, System.Boolean checkHost) [0x00079] in <8f2c484307284b51944a1a13a14c0266>:0
  at System.IO.StreamReader..ctor (System.String path, System.Text.Encoding encoding, System.Boolean detectEncodingFromByteOrderMarks, System.Int32 bufferSize) [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0
  at System.IO.StreamReader..ctor (System.String path, System.Boolean detectEncodingFromByteOrderMarks) [0x0000d] in <8f2c484307284b51944a1a13a14c0266>:0
  at System.IO.StreamReader..ctor (System.String path) [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0
  at (wrapper remoting-invoke-with-check) System.IO.StreamReader:.ctor (string)
  at System.IO.File.OpenText (System.String path) [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0
  at System.IO.File.ReadAllLines (System.String path) [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0
  at PSXPackager.GameDB..ctor (System.String path) [0x00011] in <aa583565f87241d38006e9f25226904a>:0
  at PSXPackager.Processing..ctor (PSXPackager.INotifier notifier, PSXPackager.IEventHandler eventHandler) [0x00015] in <aa583565f87241d38006e9f25226904a>:0
  at PSXPackager.Program.ProcessFiles (PSXPackager.ProcessOptions options) [0x00055] in <aa583565f87241d38006e9f25226904a>:0
  at PSXPackager.Program+<>c__DisplayClass2_0.<Main>b__0 (PSXPackager.Options o) [0x00305] in <aa583565f87241d38006e9f25226904a>:0
  at CommandLine.ParserResultExtensions.WithParsed[T] (CommandLine.ParserResult`1[T] result, System.Action`1[T] action) [0x00014] in <aa583565f87241d38006e9f25226904a>:0
  at PSXPackager.Program.Main (System.String[] args) [0x00067] in <aa583565f87241d38006e9f25226904a>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.IO.DirectoryNotFoundException: Could not find a part of the path "/media/4TB1/Torrents/complete/1G1R - Redump - Sony - PlayStation/toconvert/media/4TB1/Torrents/complete/1G1R - Redump - Sony - PlayStation/toconvert/Resources/gameinfo.db".
  at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.Boolean anonymous, System.IO.FileOptions options) [0x001cf] in <8f2c484307284b51944a1a13a14c0266>:0
  at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.IO.FileOptions options, System.String msgPath, System.Boolean bFromProxy, System.Boolean useLongPath, System.Boolean checkHost) [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0
  at (wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,int,System.IO.FileOptions,string,bool,bool,bool)
  at System.IO.StreamReader..ctor (System.String path, System.Text.Encoding encoding, System.Boolean detectEncodingFromByteOrderMarks, System.Int32 bufferSize, System.Boolean checkHost) [0x00079] in <8f2c484307284b51944a1a13a14c0266>:0
  at System.IO.StreamReader..ctor (System.String path, System.Text.Encoding encoding, System.Boolean detectEncodingFromByteOrderMarks, System.Int32 bufferSize) [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0
  at System.IO.StreamReader..ctor (System.String path, System.Boolean detectEncodingFromByteOrderMarks) [0x0000d] in <8f2c484307284b51944a1a13a14c0266>:0
  at System.IO.StreamReader..ctor (System.String path) [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0
  at (wrapper remoting-invoke-with-check) System.IO.StreamReader:.ctor (string)
  at System.IO.File.OpenText (System.String path) [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0
  at System.IO.File.ReadAllLines (System.String path) [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0
  at PSXPackager.GameDB..ctor (System.String path) [0x00011] in <aa583565f87241d38006e9f25226904a>:0
  at PSXPackager.Processing..ctor (PSXPackager.INotifier notifier, PSXPackager.IEventHandler eventHandler) [0x00015] in <aa583565f87241d38006e9f25226904a>:0
  at PSXPackager.Program.ProcessFiles (PSXPackager.ProcessOptions options) [0x00055] in <aa583565f87241d38006e9f25226904a>:0
  at PSXPackager.Program+<>c__DisplayClass2_0.<Main>b__0 (PSXPackager.Options o) [0x00305] in <aa583565f87241d38006e9f25226904a>:0
  at CommandLine.ParserResultExtensions.WithParsed[T] (CommandLine.ParserResult`1[T] result, System.Action`1[T] action) [0x00014] in <aa583565f87241d38006e9f25226904a>:0
  at PSXPackager.Program.Main (System.String[] args) [0x00067] in <aa583565f87241d38006e9f25226904a>:0

/media/4TB1/Torrents/complete/1G1R - Redump - Sony - PlayStation/toconvert/media/4TB1/Torrents/complete/1G1R - Redump - Sony - PlayStation/toconvert/Resources/gameinfo.db

the conversion does not work

it just ends the conversion without even creating the file.
Processing completed: 00h 00m 01s
I'm using Windows 8.1 with the latest net framework 4.8

Merge PBP?

As this tool obviously can't create multi-disk PBP files, any idea how to merge them as command line batch?
Edit: Oh this is no command line tool. So never mind.

"Unhandled exception. Could not find file '...\gameInfo.db'

Discussed in #45

Originally posted by RealPhali May 20, 2023
Hi there. I keep getting the same error every time I try to run this:

Unhandled exception. System.IO.FileNotFoundException: Could not find file 'c:\Roms\PS1\Resources\gameInfo.db'.
File name: 'c:\Roms\PS1\Resources\gameInfo.db'
   at Microsoft.Win32.SafeHandles.SafeFileHandle.CreateFile(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
   at System.IO.Strategies.OSFileStreamStrategy..ctor(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
   at System.IO.Strategies.FileStreamHelpers.ChooseStrategyCore(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
   at System.IO.Strategies.FileStreamHelpers.ChooseStrategy(FileStream fileStream, String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, Int64 preallocationSize)
   at System.IO.StreamReader.ValidateArgsAndOpenPath(String path, Encoding encoding, Int32 bufferSize)
   at System.IO.File.InternalReadAllLines(String path, Encoding encoding)
   at System.IO.File.ReadAllLines(String path)
   at Popstation.Database.GameDB..ctor(String path)
   at PSXPackager.Program.ProcessFiles(ProcessOptions options)
   at PSXPackager.Program.<>c__DisplayClass2_0.<Main>b__0(Options o)
   at CommandLine.ParserResultExtensions.WithParsed[T](ParserResult`1 result, Action`1 action)
   at PSXPackager.Program.Main(String[] args)

I've reinstalled NET Runtime, both 6 and 7, and I have no idea where I'm doing something wrong.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.