Lameguy64 / mkpsxiso

ISO disc image maker written specifically for PlayStation homebrew development
GNU General Public License v2.0
223 stars 36 forks source link

MKPSXISO

mkpsxiso builds PlayStation CD images from an XML document.

dumpsxiso dumps PlayStation CD images to files and documents the precise structure to a mkpsxiso compatible XML document.

mkpsxiso is meant to provide a faster, cross-platform, modern replacement of the BUILDCD from the official development tools. BUILDCD unfortunately only runs on 16 bit DOS compatible systems and it's output format is unusable by modern CD burning tools. Other ISO creation tools such as MKISOFS do not allow controlling the precise order of files (necessary for optimizing access times) and do not support mixed-mode type files for CD streaming such as XA audio and MDEC video streams used by many PlayStation games. mkpsxiso outputs either a standard .bin and .cue or .iso ready to burn to CD or use in an emulator! The hope is that mkpsxiso tools ease PlayStation homebrew development and ROM hacking and reverse engineer efforts. mkpsxiso can also be used as a regular ISO creation tool that complies with the older ISO9660 standard with no Joliet extensions.

mkpsxiso can properly license the image with the Sony license data during ISO building eliminating the use of the extra program. However, you must supply your own copy. It can be found in the PsyQ SDK, see Starting PSX Development. dumpsxiso can also dump the license data of an existing disk.

Features

Binary Download

Releases for Win32 and ubuntu-latest, both are built by github CI starting at v2.0

Ancient releases (NOT RECOMMENDED)

Compiling

  1. Set up CMake and a compiler toolchain. Install the cmake and build-essential packages provided by your Linux distro, or one of the following kits on Windows:

    • MSVC (do not install CMake through the Visual Studio installer, download it from here instead)
    • MSys2 (use the "MinGW 64-bit" shell) with the following packages: git, mingw-w64-x86_64-make, mingw-w64-x86_64-cmake, mingw-w64-x86_64-gcc
    • Cygwin64 with the following packages: git, make, cmake, gcc
  2. Clone/download the repo, then run the following command from the mkpsxiso directory to ensure tinyxml2 is also downloaded and updated:

    git submodule update --init --recursive
  3. Run the following commands:

    cmake -S . --preset release
    cmake --build ./build --config Release
    cmake --install ./build

    If you wish to build dumpsxiso without libFLAC support (libFLAC is required for encoding CDDA/DA audio as FLAC), add -DMKPSXISO_NO_LIBFLAC=1 to the end of the first command.

    Add sudo to the install command if necessary.

The default installation path is C:\Program Files\mkpsxiso\bin on Windows or /usr/local/bin on Linux. You can change it to any directory by passing --install-prefix to the first command.

Issues

The only known major issue that hasn't (or cannot) be resolved is that if you create a disc image with the following directory structure:

<dir name="dira">
    <dir name="subdir1a">
        <dir name="subdiraa"/>
        <dir name="subdirab"/>
        <dir name="subdirac"/>
    </dir>
    <dir name="subdir1b"/>
    <dir name="subdir1c"/>
</dir>

<dir name="dirb">
    <dir name="subdir2a"/>
    <dir name="subdir2b"/>
    <dir name="subdir2c">
        <dir name="subdirba"/>
        <dir name="subdirbb"/>
        <dir name="subdirbc"/>
    </dir>
</dir>

<dir name="dirc">
    <dir name="subdir3a"/>
    <dir name="subdir3b"/>
    <dir name="subdir3c"/>
</dir>

On Windows browsing the subdirectories in 'dirb' and 'dirc' will not list the contents for some reason and trying to access it in a command prompt leads to a permission denied or similar error message. Disc image tools such as CDmage will display the contents of the aforementioned subdirectories without issue and the issue persists with disc images created with BuildCD, suggesting it is likely a bug with the operating system and not mkpsxiso.

This can be avoided by minimizing identically named directories but its best to test your generated disc image before considering it ready for release.

Changelog

Version 2.10 (10/01/2024)

Version 2.04 (09/18/2023)

Version 2.03 (04/05/2023)

Version 2.02 (06/24/2022)

Version 2.01 (02/10/2022)

Version 2.00 (02/02/2022)

Version 1.27 (10/25/2021)

Version 1.25 (12/30/2020)

Version 1.24 (12/28/2020)

Version 1.23 (12/20/2018)

Version 1.22 (12/4/2018)

Version 1.21 (7/8/2018)

Version 1.20 (6/21/2018)

Version 1.19 (6/12/2018)

Version 1.18 (5/16/2018)

Version 1.15 (6/16/2017)

Version 1.14 (6/4/2017, BIG update because I forgot to release 1.12)

Version 1.10 (2/23/2017)

Version 1.06 (11/28/2016)

Version 1.05 (by electroCupcake)

Version 1.04 (9/1/2016)

Version 1.00 (8/6/2016)