あらゆるレトロゲームが遊べるBatoceraをVirtualBoxで仮想化する方法を紹介します。
Batoceraを通常の手順で仮想化できない理由とは
Batoceraは、レトロゲーム愛好者向けに設計されたLinuxベースのオペレーティングシステムです。無償で50以上のコンソール(ファミコン、プレイステーションなど)をサポートし、実際のゲーム機のように扱えます。そのため、中華ゲーム機のOSにも採用されているようです。
一方、Batoceraは仮想環境で動作させることを想定していません。実際のハードウェアにインストールすることを前提に提供されています。このため、Batoceraの公式ページからダウンロードしたイメージファイルは、そのままではVirtualBoxから読み込むことができません。
VirtualBoxで動かす方法とは
VirtualBoxなどの仮想環境でBatoceraを動作できるようにするためには、通常と異なるひと手間が必要となります。具体的は、ダウンロードしたBatoceraのイメージファイルを、VirtualBoxから読み込めるファイル形式に変換する必要があります。
本記事では、仮想環境でのBatoceraが実用的かどうかはさておいて、とにかく仮想化したいという方向けに、VirtualBoxで仮想化する方法を紹介します。
準備しておくこととは
- PC
本稿ではWindows PCで検証していますが、macOSやLinuxでも同様の手順で実現可能と思われます。ただし未検証です。 - VirtualBoxをインストール済みであること
- ゲームパッド
本稿ではLogicool F310を使用しました。
Batoceraをダウンロードしよう
上の画像またはこちらのリンクをクリックして、Batoceraの公式ページに移動します。「Desktop PC, Laptop…」をクリックして、PC版をダウンロードします。
本稿執筆時点でのダウンロードしたファイル名は次の通りです。本記事の以降の記述にもこのファイル名が出てきますが、適宜読み替えてください。
batocera-x86_64-x86_64-38-20231014.img.gz
イメージ形式のファイル(IMG)が圧縮されています。
エクスプローラでファイルを右クリックし、[すべて展開]を選択します。
Windowsのバージョンによっては展開ができないケースがあります。その場合は、7-zipなどで解凍します。
VirtualBoxが読み込めるファイル形式に変換しよう
具体的には、コマンドプロンプトからIMG形式ファイルをVDI形式に変換します。変換には、VirtualBoxから提供されているVBoxManageというコマンドを使用します。
VBoxManageコマンドは、VirtualBoxがインストールされたフォルダに配置されています。デフォルトでは以下の場所になるでしょう。
C:\Program Files\Oracle\VirtualBox
変換する際の、VBoxManageの使い方は以下の通りです。
VBoxManage convertfromraw <inputfile> <outputfile>
引数のconvertfromrawが変換の指示に当たります。
<inputfile>に読み込むIMGファイルを、<outputfile>に出力するVDIファイル名を指定します。
カレントフォルダにIMGファイルがある場合、以下の通り実行して変換を行います。ファイル名は適宜読み替えてください。
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" convertfromraw batocera-x86_64-x86_64-38-20231014.img batocera-x86_64-x86_64-38-20231014.vdi
以上で変換が完了しました。
ストレージの容量を拡張するには
変換直後のVDIファイルは、ストレージの容量が8GB未満と小さめです。ストレージの容量の拡張は、同じVBoxManageコマンドで可能です。
以下のmodifymediumが拡張の指示に当たります。
–resize=megabytesオプションで拡張したい容量をMBで指定します。
VBoxManage modifymedium [disk | dvd | floppy] <uuid | filename> [--autoreset=on | off] [--compact] [--description=description] [--move=pathname] [--property=name=[value]] [--resize=megabytes | --resizebyte=bytes] [--setlocation=pathname] [--type=normal | writethrough | immutable | shareable | readonly | multiattach]
例えば、20GB(20,000MB)に拡張する場合は、以下の通り実行します。
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifymedium "C:\Users\ms\VirtualBox VMs\Batocera\batocera-x86_64-x86_64-38-20231014.vdi" --resize=20000
VirtualBoxのビデオメモリーを256MBに拡張するには
VirtualBoxでは、ビデオメモリー(ビデオRAM)の上限は128MBがデフォルトです。この上限値を256MBに拡張することが可能です。ただし、ビデオメモリーを256MBまで拡張する効果には様々な意見があるようです。
方法は以下の通りです。
VBoxManage modifyvm <uuid | vmname> [--vram=size-in-MB]
VBoxManage コマンドを modifyvm オプションで起動します。
–vram=size-in-MB オプションで拡張するサイズを指定します。ただし、拡張できる上限が256MBに決まっており、”512″等を指定してもエラーになります。
実際にビデオメモリーを256MBに変更するには、以下の通り実行します。ここで、”Batocera”は仮想マシン名を指定します。
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyvm "Batocera" --vram=256
VirtualBoxで設定しよう
左ペインから[ツール]を選択し、[新規]アイコンをクリックします。
インストールを「エキスパートモード」で行います。
図の①が[ガイド付きモード]と表示されていれば、エキスパートモードになっています。[エキスパートモード]と表示されている場合は、それを押すことで[エキスパートモード]に切り替わります。切り替えを行うと、それまで入力した値がリセットされてしまうので要注意です。
②は仮想マシンの名称を指定します。
③を[Linux]とします。
④をArch Linux(64-bit)とします。
メインメモリーを2GB以上にします。筆者は8GBとしました。
割り当てるプロセッサーの数を指定します。BatoceraでのCPU負荷は高めなので、プロセッサー数は可能な範囲の上限値が望ましいです。論理プロセッサーの数の1/2程度が良いでしょう。筆者は4としました。 [ハードディスク]を選択します。
[すでにある仮想ハードディスクファイルを使用する]を選択し、右端にあるフォルダアイコンをクリックして「ハードディスク選択」画面を開きます。 [追加]アイコンをクリック。
ここで変換後のVDIファイルを選択し、[開く]を押します。
BatoceraのVDIファイルが選択肢に追加されました。容量に注目すると、約20GBに拡張されています。
左下の[選択]を押します。
以上で、左ペインに新たなBatoceraの仮想マシンが追加されました。
引き続き、設定を施していきます。
画面上の[設定]アイコンを押します。
①左ペインから[ディスプレイ]を選択します。
②ビデオメモリーを最大値にします。上述の手順でビデオメモリーを拡張している場合は256MBまで増やせます。
③筆者は[VMSVGA]としました。
④[3Dアクセラレーションを有効化]にチェックを入れます。
「3Dアクセラレーションを有効化」はゲストOSにGuest Additonsをインストールすると使用できるようになります。性能向上が期待できるとされています。
左ペインから[USB]を選択します。
右端の[+]アイコンをクリックし、一覧からゲームパッドなどのデバイスを選択します。
さあ!Batoceraを起動しよう
上の[起動]をクリック。
スプラッシュ・スクリーンです。
起動に成功しました。
特に何も設定せずに、ゲームパッド:Logicool F310は使用可能となりました。
また、PS5の標準コントローラも同様に使用可能でした。
最後に
Batoceraを仮想化するケースはレアケースといえるでしょう。
しかし、Webには仮想化する方法についての記事が散見されます。しかし、VirtualBoxから提供されるツールのバージョンが古いころの記事が多く、そのままではエラーになるため、最新のVirtualBoxで仮想化を実現する方法をまとめてみました。
おそらくBatoceraだけではなく、Lakkaなど他のIMG形式で提供されるディストリビューションにも適用できるのではないかと思われます。