Difference between revisions of "Creating images of PSX games using Linux"
(cat) |
|||
Line 143: | Line 143: | ||
[[Category:Tutorials]] | [[Category:Tutorials]] | ||
− | [[Category: | + | [[Category:Emulators]] |
Revision as of 13:54, 19 April 2011
This pages describes a rather simple way for creating images for usage with an emulator like PSX4Pandora. Everything listed here does require the program cdrdao which is often already installed in common Linux distributions once some burner software is installed.
Single command
This command creates a dump of your disc. It does also extract subchannel data which is required for the copy protection of some of the games to work correctly. It does save the image in .bin format and also does create a .cue file.
Assuming that your optical drive is called /dev/sr0 and you want to name the image GAME_NAME, this is the command you can use to create the image in the current dir:
cdrdao read-cd --read-raw --read-subchan rw_raw --datafile GAME_NAME.bin --device /dev/sr0 --driver generic-mmc-raw GAME_NAME.cue
Of course you have to adjust the parameters according to your desires and your system setup.
Useful script
Following is a script doing some useful stuff. It does by default rip the current disc in your drive /dev/sr0 into the folder ~/psxrip/ with the name you give as parameter. If the folder does not exist, it is created. It does extract subchannel data by default, saves the image as .bin and creates a .cue.
You can also copy the following code into a text file and make it executable. To do so, lets assume you named the text file psxrip, then run chmod +x psxrip. For usage information just type ./psxrip --help. The script does check if you got the required program installed, if you provided the parameters and all the likes. If you do something that you are not supposed to do, it will print an error message as well as some (hopefully) helpful output.
Here is the script:
#!/bin/bash # # This is a script to create a .bin image with corresponding .cue out of your # PSX game discs as backup and/or for usage with emulators. # # Run-time requirements: cdrdao # # This script is partly based upon the "wesnoth-optipng" script from the # Battle for Wesnoth team. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or, # at your option any later version. This program is distributed in the # hope that it will be useful, but WITHOUT ANY WARRANTY. PSXDIR=$HOME/psxrip DRIVE=/dev/sr0 report_absent_tool() { echo "$1 is not present in PATH. $(basename ${0}) requires it in order to work properly." if [ -n "$2" ]; then echo "You can obtain $1 at <${2}>." fi exit -1 } print_help() { cat << EOSTREAM Script for ripping PSX game discs into .bin files with corresponding .cue files. Usage: $(basename ${0}) [{--outputdir} <value>] [{--drive} <value>] [{--no-subchan] [{--help|-h}] [filename] The parameter [filename] is mandatory. Without it, the script will abort. Plain spaces in the filename are prohibited! Available switches: --drive Define the device to be used. If this parameter is not provided, /dev/sr0 will be used. --help / -h Displays this help text. --no-subchan Don't extract subchannel data. Subchannel data might be required for some PSX copy protection though it *could* create problems. Retry with this parameter set if any problems occur when trying to use the resulting image. --outputdir Define the folder in which the resulting image should be saved. If the folder does not exist, it will be created. If no --outputdir parameter is given, the folder ~/psxrip will be used. This tool requires cdrdao (http://cdrdao.sourceforge.net/) to be installed and available in PATH. EOSTREAM } # go through provided parameters while [ "${1}" != "" ]; do if [ "${1}" = "--drive" ]; then DRIVE=$2 shift 2 elif [ "${1}" = "--outputdir" ]; then PSXDIR=$2 shift 2 elif [ "${1}" = "--nosubchan" ]; then NOSUBCHAN="true" shift 2 elif [ "${1}" = "--help" ] || [ "${1}" = "-h" ]; then print_help exit 0 elif [ "${2}" != "" ] ; then echo "ERROR: Inval id usage. Displaying help:" echo "" print_help exit -1 else IMAGENAME=$1 shift fi done # check for required dependencies which cdrdao &> /dev/null || report_absent_tool cdrdao 'http://cdrdao.sourceforge.net/' # output recognized parameters echo "Program "$(basename ${0})" called. The following parameters will be used for" echo "creating an image of a PSX disc:" echo "Folder for saving images: "$PSXDIR echo "Drive used for reading the image: "$DRIVE echo "Resulting filenames: "$PSXDIR"/"$IMAGENAME"[.bin|.cue]" if [ "$NOSUBCHAN" = "true" ]; then echo "Not extracting subchan data." else echo "Extracting subchan data." fi echo "" # check if imagename is defined if [ "$IMAGENAME" = "" ]; then echo "ERROR: Invalid usage. Found no name for resulting image. Displaying help:" echo "" print_help exit -1 fi # create dir for resulting image if it does not exist yet if ! [ -d "$PSXDIR" ]; then echo "outputdir not found, creating folder: "$PSXDIR echo "" mkdir -p $PSXDIR fi echo "starting ripping the disc" echo "" # final commandline for reading the disc and creating the image if [ "$NOSUBCHAN" = "true" ]; then cdrdao read-cd --read-raw --datafile $PSXDIR/$IMAGENAME.bin --device $DRIVE --driver generic-mmc-raw $PSXDIR/$IMAGENAME.cue else cdrdao read-cd --read-raw --read-subchan rw_raw --datafile $PSXDIR/$IMAGENAME.bin --device $DRIVE --driver generic-mmc-raw $PSXDIR/$IMAGENAME.cue fi
Compressing the images
If you want to compress the images you can try to use the program PocketISO via wine. There seems to be no native program doing this task in a nice way.