PR
PR

UbuntuでPS1のゲームをバックアップする方法

記事内に広告が含まれています。

PS1のゲームをUbuntuでバックアップする方法です。

※自分が調べた結果を残しておきます。

【免責事項とご注意】

  • 本記事は、所有するゲームソフトの経年劣化対策(保存)を目的とした技術的な解説記事です。
  • 記載内容は、ご自身が所有しているゲームソフトのバックアップを、私的使用の範囲内で行うことを前提としています。
  • バックアップした後、元のソフトを売却したり譲渡したりした場合、手元のバックアップデータは削除しなければなりません(所有権がなくなるため)。
  • 違法にアップロードされたデータをダウンロードすることや、作成したバックアップデータを他者に譲渡・配布することは法律で固く禁じられています。
  • コピープロテクト(技術的保護手段)を回避・解除しての複製は、著作権法により規制されています。
  • 本記事の内容を実行した結果、発生したいかなるトラブルや損害についても、著者は一切の責任を負いません。自己責任において行ってください。

バックアップ手順

「cdrdao」を使用することで、Ubuntu上でPS1のゲームディスク(CD-ROM)からデータを吸い出し、バックアップを作成することができます。

cdrdaoインストール

「cdrdao」がインストールされていない場合は、aptコマンドを使用してインストールしてください。

$ sudo apt update
$ sudo apt install cdrdao

バックアップの方法

以下のコマンドを実行することで、PS1のCD-ROMからゲームのデータを吸い出してバックアップできます。

cdrdao read-cd --device デバイス名 --driver generic-mmc-raw --speed 4 --paranoia-mode 3 -v 2 --read-raw --datafile "ゲーム名.bin" "ゲーム名.toc" && eject

吸い出しが完了すると、以下の2つのファイルが作成されます。

  • ゲーム本体:ゲーム名.bin
  • CDのトラック構成情報:ゲーム名.toc

実行例

実際の実行例です。

$ cdrdao read-cd --device /dev/cdrom --driver generic-mmc-raw --speed 4 --paranoia-mode 3 -v 2 --read-raw --datafile "AC.bin" "AC.toc" && eject
Cdrdao version 1.2.4 - (C) Andreas Mueller 
WARNING: SCSI device is currently in use. Only read commands are supported.
/dev/cdrom: Optiarc DVD RW AD-7740H	Rev: 1.V0
Using driver: Generic SCSI-3/MMC (raw writing) - Version 2.0 (options 0x0000)

Reading toc and track data...

Track   Mode    Flags  Start                Length
------------------------------------------------------------
 1      DATA    4      00:00:00(     0)     51:29:46(231721)
Leadout DATA    4      51:29:46(231721)

PQ sub-channel reading (data track) is supported, data format is BCD.
Raw P-W sub-channel reading (data track) is supported.
Cooked R-W sub-channel reading (data track) is supported.
Copying data track 1 (MODE2_RAW): start 00:00:00, length 51:29:46 to "AC.bin"...
Reading of toc and track data finished successfully.

「AC.bin」と「AC.toc」2つのファイルが作成されました。

$ ls
AC.bin  AC.toc

コマンドとオプションの解説

コマンド内で指定している各オプションの意味を解説します。

read-cd

CDのデータを読み込み、イメージファイルを作成するメインコマンドです。

--device デバイス名

使用するCD/DVDドライブを指定します。

※Ubuntuでは通常「/dev/sr0」や「/dev/cdrom」が割り当てられます。

--driver generic-mmc-raw

ドライブを制御するドライバーに「generic-mmc-raw」を指定します。

PS1のゲームは通常のデータCDと異なり、「サブチャンネルデータ(Sub-channel data)」と呼ばれる領域にコピーガード(LibCryptなど)情報が含まれていることがあります。

「generic-mmc-raw」を指定することで、ドライブの生(Raw)の読み込み機能を使い、ディスクを丸ごとコピーします。

これを指定しないと、特殊なフォーマットが正しくコピーされません。

--speed 4

読み込みスピードの速度を「4倍速」に制限します。

古いゲームディスクは経年劣化していることも多いため、読み込み速度を落とすことで物理的な読み取り精度を向上させ、エラーを防ぐ効果があります。

※低速(4倍速〜8倍速程度)での読み込みが推奨されています。

--paranoia-mode 3

音声トラック(CD-DA)の読み取り補正モードを最大(レベル3)にします。

PS1のゲームには、BGMがCD-DA(音楽CDと同じ形式)で収録されているものが多くあります。

ディスクに傷があるとノイズ(音飛び)が発生しやすいため、このオプションで強力に補正を行い、正確な音質で吸い出します。

このオプションは「cdparanoia」という技術を使い、読み取りミスをリトライ・補正して、完璧な音質で吸い出す手助けをしてくれます。

-v 2

実行中の表示レベル(Verbosity)を「2」にします。

このオプションを指定すると、進行状況や詳細なステータスが画面に表示されるため、処理が止まっていないか確認するのに役立ちます。

--read-raw

サブチャンネルデータ(Sub-channel Data)を明示的に読み込みます。

一部のゲームに施されているコピーガード「LibCrypt」の鍵情報は、メインデータではなくサブチャンネルに記録されています

完全なバックアップを作成するために必須のオプションです。

--datafile "ゲーム名.bin"

実際のゲームデータ(バイナリ)を保存するファイル名を指定します。

ゲーム名.toc

CDのトラック構成情報(TOC: Table of Contents)を保存するファイル名を指定します。

&& eject

吸い出しが正常に完了した場合のみ、ディスクトレイを開きます。

「cdrdao」コマンドのオプションではなくシェルの機能ですが、完了の合図として便利です。

自動的にディスクトレイを開きたくない場合は、この部分を削除してください。

tocをcueに変換する方法

toc形式ではなく、cue形式が必要な場合は「toc2cue」コマンドを使用すると、「.toc」から「.cue」に変換できます。

toc2cue "ゲーム名.toc" "ゲーム名.cue"

実際の実行例です。

$ toc2cue AC.toc AC.cue
toc2cue version 1.2.4 - (C) Andreas Mueller 

Converted toc-file 'AC.toc' to cue file 'AC.cue'.

Please note that the resulting cue file is only valid if the
toc-file was created with cdrdao using the commands 'read-toc'
or 'read-cd'. For manually created or edited toc-files the
cue file may not be correct. This program just checks for
the most obvious toc-file features that cannot be converted to
a cue file.
Furthermore, if the toc-file contains audio tracks the byte
order of the image file will be wrong which results in static
noise when the resulting cue file is used for recording
(even with cdrdao itself).

「AC.cue」が作成されました。

$ ls
AC.bin  AC.cue  AC.toc

※toc2cueコマンドは、cdrdaoをインストールすると一緒にインストールされます。

おまけ:バックアップ用シェルスクリプト

バックアップする枚数が多い場合、毎回長いコマンドを入力するのは大変です。

以下のようなシェルスクリプト(例: ps1_backup.sh)を作成しておくと、コマンド一発で処理できて便利です。

#!/bin/bash

# 使用法: ./ps1_backup.sh デバイス名 "ゲームタイトル"

# $1 = デバイス名 
# $2 = ゲーム名

DEVICE="$1"
GAME_NAME="$2"

# 引数が2つ揃っているかチェック
if [ -z "$DEVICE" ] || [ -z "$GAME_NAME" ]; then
    echo "エラー: 引数が足りません。"
    echo "使い方: $0 デバイス名 ゲーム名"
    echo "   例: $0 /dev/cdrom \"gamename\""
    exit 1
fi

echo "デバイス [ $DEVICE ] から [ $GAME_NAME ] を吸い出します..."

# データバックアップ
# 成功したらトレイを開く

cdrdao read-cd \
--device "$DEVICE" \
--driver generic-mmc-raw \
--speed 4 \
--paranoia-mode 3 \
-v 2 \
--read-raw \
--datafile "${GAME_NAME}.bin" "${GAME_NAME}.toc" && eject

# tocをcueに変換(不要なら削除して構いません)
# tocファイルの生成に成功していたら、cueファイルも作っておく

if [ -f "${GAME_NAME}.toc" ]; then
    echo "cueファイルへの変換を行います..."
    toc2cue "${GAME_NAME}.toc" "${GAME_NAME}.cue"
    echo "完了しました。"
fi

作成したシェルスクリプトには、実行権限を与えてください。

$ chmod +x ps1_backup.sh 

使用する場合は、以下のように第1引数に使用するデバイス名、第2引数にゲームの名前を指定してください。

$ ./ps1_backup.sh /dev/cdrom "gamename"

コメント

タイトルとURLをコピーしました