こんにちは、レトロゲーム大好きAibarです。
前回の実機レビューは普通にプレイしての感想でしたが、今回は一歩踏み込んで内部解析をしてみました。
結果的に収録タイトルのロムファイルだけでなく、カートリッジから起動したゲームのロムファイルも吸い出すことができました。ロムの追加方法なども説明しているので、そういった内容に興味がある方はぜひ読んでみてください。
本体内部
本体を開けるには、まず裏側についているネジ(7本)をはずします。ラベルの下にもネジが1本あるので、ラベルをはがすか穴をあけるかする必要があります。
本体が上と下の部品はケーブルでつながっているので、開く際に切断しないよう気をつけてください。
本体を持った時の軽さから大体予想はしてましたが、内部はかなりスカスカです。
この基板サイズからすると本体をもっと小さくすることは可能ですが、カートリッジを挿した時の見た目のバランスを考えて、このサイズにしたんだろうと思います。
メイン基板
SoCにはRockchip製のRK3036が使われています。
SoC | Rockchip RK3036 |
---|---|
CPU | ARM Cortex-A7 デュアルコア |
GPU | Mali-400 MP |
メイン基板はRaspberry Piより少し大きいぐらいでしょうか。カートリッジのコネクタが付いているのでこれより小さくするのは厳しそうですね。
メイン基盤にはUSB端子(ミニUSB)がついており、USBケーブルでPCと接続することによって内部にアクセスすることができます。
サブ基板
コントローラーの端子や電源スイッチ、メニューボタンが付いています。
準備編
最近のゲーム機はOS(オペレーティングシステム)にLinuxやAndroid OSが採用されていることが多いですが、「SEGA GENESIS FLASHBACK」も例に漏れずAndroid OSで動作しています。
しかも最初からroot権限が与えられているので、全ファイルシステムに自由にアクセスすることができます。
ただし、ちょっとした操作でシステムを破壊してしまうこともあり得るので、システムにアクセスする際は慎重に行ったほうがいいでしょう。
adb(Android Debug Bridge)のインストール
まずは、Androidデバイスにアクセスする際に必要なadb(Android Debug Bridge)をPCにインストールします。
Androidアプリの開発をされている方なら、既にインストールされていると思いますが。そういった方でなければ、新たにadbをインストールする必要があります。
方法としては以下の2つの方法があるので、好きな方法でadbをインストールしてください。
方法1:Androidの開発環境をインストールする
ADBはAndroidの開発環境の中に入っているので、「Android Studio」または「SDK Tools」をインストールすることでadbも一緒にインストールされます。
この方法は、adb以外にもかなり多くのものがインストールされるため時間がかかります。もしadbを使いたいだけであれば、ちょっと面倒ですね。
方法2:「15 Seconds ADB」を使う
「15 Seconds ADB」はadbを簡単にインストールするためのインストーラのようなもので、今回のようにadbだけを使いたい場合に重宝します。
ただWindows版のみなので、Macを使われている方はこの方法は使えません。
PCとの接続
メイン基盤のミニUSB端子とPCをUSBケーブルで接続します。電源はUSB端子から供給されるので電源アダプターを接続する必要はありません。
ちなみにミニUSBは、スマホの充電などに使うmicroUSBとは別ものです。
PCからの接続確認
まずコマンドプロンプトを起動します。(ここからはWindowsを使っているものとして記述していきます)
adbのパスが通っている状態で以下のコマンドを入力します。
adb devices
接続している「SEGA GENESIS FLASHBACK」がAndroidデバイスとして認識されていれば以下のように表示されます。
実践編1:収録されているゲームのロムを吸い出してみる
「SEGA GENESIS FLASHBACK」はAndoridアプリとしてジェネシス(メガドライブ)のエミュレーターが動作しており、ゲームのロムファイルは内部ストレージに保存されています。
ということは、ロムファイルのパスが分かれば吸い出しが可能です。
ロムファイル取得方法(個別に)
「SEGA GENESIS FLASHBACK」の設定ファイルである all-games.ini からファイルパスを取得し、「adb pull」コマンドでロムファイルを取得します。
all-games.ini からファイルパスを取得する
まずは、ロムファイルのパスが記述されている all-games.ini を取り出します。コマンドプロンプトから以下のコマンドを実行してください。ちなみに「adb pull」というのはAndroidデバイスからファイルを取得するコマンドです。
adb pull /system/atgames/all-games.ini
以下のように表示されていれば、現在のフォルダ(この例では C:Users\work)に all-games.ini が取得されています。
all-games.ini をテキストエディタ(メモ帳など)で開いて確認すると、ゲーム名の次の行にファイルパスが記述されています。
ここに記述されているファイルパスは「/system」からの相対パスになっているので、実際のファイルパスは頭に「/system/」を付けて以下のようになります。
/system/atgames/Genesis/PhantasyStarIvUsa.bin.gz
ロムファイルを取得する
ロムファイルのパスが分かれば、all-games.ini を取得した時と同様に「adb pull」コマンドを使ってロムファイルを取得します。
adb pull /system/atgames/Genesis/PhantasyStarIvUsa.bin.gz
以下のように表示されれば、ロムファイルが取得できています。
ロムファイル取得方法(まとめて)
ファイル名を調べるとか面倒だし、全部まとめて取得したい場合のやり方です。
全てのロムファイルをまとめて取得する
ファイルを全部まとめて取得する場合は、以下のようにコマンドを入力します。
adb pull /system/atgames/Genesis
取得したロムファイル(.gz)はgzip形式の圧縮がかかっているので、ツールで解凍すればエミュレーター等で動作させることができます。
実践編2:カートリッジのゲームを吸い出してみる
カートリッジを挿して電源を入れると最初にローディングが行われますが、その際に読み込まれたロムのデータはファイルとして「/mnt/asec」に格納されます。
ローディング完了後に以下のコマンドを入力するとファイルの存在を確認できます。
adb shell ls /mnt/asec
以下のコマンドで「/mnt/asec」のファイルを取得できます。
adb pull /mnt/asec
取得したロムファイルはエミュレーターで動作させることができます。
実践編3:新しいゲームを追加してみる
ゲームを追加するためには以下の手順を行う必要があります。
- ロムファイルを追加するためのフォルダを作成する
- ロムファイルを追加する
- all-games.ini に設定を追加する
- all-games.ini の参照設定を行う
- システムを再起動する
2回目以降は、「フォルダ作成」と「all-games.ini の参照設定」は必要ありません。以下の手順でOKです。
- ロムファイルを追加する
- all-games.ini に設定を追加する
- システムを再起動する
ロムファイルを追加するためのフォルダを作成する
この操作はコマンドプロンプトではなくエクスプローラーから行います。
エクスプローラーを開いてPC(コンピューター)を選択すると、デバイスとして「MTP USBデバイス」(または「rk3036」)が存在します。
このデバイスを開くと「NAND FLASH」が存在するので
さらに開くと、「SEGA GENESIS FLASHBACK」の内部フォルダが表示されます。
ここに「Games」フォルダを作成します。これがロムファイル追加用のフォルダになります。
ロムファイルを追加する
先ほど作成した「Games」フォルダにロムファイルを置きます。
(この例ではカートリッジから吸い出した「rom-0DEB.bin」を使っています)
追加するファイルの種類によって拡張子を以下のように設定する必要があります。
機種 | ファイルの種類 | 拡張子 |
---|---|---|
ジェネシス (メガドライブ) |
ロムファイル | .bin |
パッケージ画像 | .bin.png | |
マスターシステム | ロムファイル | .sms |
パッケージ画像 | .sms.png | |
ゲームギア | ロムファイル | .gg |
パッケージ画像 | .gg.png |
もしパッケージ画像も追加するのであれば、ロムファイルと同名で拡張子に .png を追加したもの(今回の例であれば「rom-0DEB.bin.png」)をロムファイルと同じ場所に置きます。
all-games.ini に設定を追加する
all-games.ini の取得はロムファイル取得の際に行っていますが、もし取得していない場合はコマンドプロンプトから以下のコマンドで取得しておきます。
adb pull /system/atgames/all-games.ini
all-games.ini をテキストエディタ(メモ帳など)で開き、ファイルの一番最後に以下の内容を追加します。
ゲーム名やファイルパスは、自分の設定する内容に合わせて変更してください。
[Daisenpuu] File=/sdcard/Games/rom-0DEB.bin Platform=Genesis Genre=Sega Description=this is a description of the game Dpad=Directional movement Start=Start game A=Shot B=Bomb C=Shot
各項目は以下のような内容になっています。
項目 | 設定内容 |
---|---|
[xxxxxx] | ゲーム選択画面で表示されるゲーム名(例ではDaisenpuu) |
File | ファイルパス 「NAND FLASH」は内部的に「/sdcard」というパスになっているので、「Games」フォルダは「/sdcard/Games」になる |
Platform | 常に「Genesis」 |
Genre | 常に「Sega」 |
Description | (ゲームの説明画面で表示される)ゲーム内容の説明 |
Dpad | (ゲームの説明画面で表示される)十字ボタンの説明 |
Start | (ゲームの説明画面で表示される)スタートボタンの説明 |
A | (ゲームの説明画面で表示される)Aボタンの説明 |
B | (ゲームの説明画面で表示される)Bボタンの説明 |
C | (ゲームの説明画面で表示される)Cボタンの説明 |
all-games.ini をロムファイルと同じ「Games」フォルダに置きます。
all-games.ini の参照設定を行う
「Games」フォルダに all-games.ini を置くだけではどこからも参照されないので、追加したゲームは有効になりません。
以下の1~4の操作を行うことによって、「SEGA GENESIS FLASHBACK」のシステムから「Games」フォルダの all-games.ini が参照されるようになります。
1./system を書き込み可能にする
これ以降(2、3)の操作で「/system」に書き込みを行う必要があるため、以下のコマンドで書き込み可能に変更します。
adb shell mount -o rw,remount,rw /system
2.元のall-games.ini をバックアップ用にリネームする
「/system/atgames」の all-games.ini を all-games.bak にリネームします。
adb shell mv /system/atgames/all-games.ini /system/atgames/all-games.bak
3.all-games.ini のシンボリックリンクを作成する
「Games」フォルダに置いた all-games.ini に対してのシンボリックリンク(Windowsのショートカットのようなもの)を作成します。
以下のコマンドを実行するとシンボリックリンクが作成されます。
adb shell ln -s /sdcard/Games/all-games.ini /system/atgames/all-games.ini
シンボリックリンクが作成された状態で「/system/atgames/all-games.ini」にアクセスすると、リンク先の「/sdcard/Games/all-games.ini」にアクセスすることになります。
4./system を読み取り専用にする
最初に「/system」を書き込み可能に変更したのを、以下のコマンドで元に戻します。
adb shell mount -o ro,remount,ro /system
システムを再起動する
以下のコマンドを入力することで、システム(Android OS)を再起動することができます。
adb reboot
再起動後にゲーム選択画面で追加したゲームが表示されればOKです。
おまけ:元の状態への戻し方
新しいゲームを追加する際に、「Games」フォルダに all-games.ini を作成してシンボリックリンクを張っているのは簡単に元に戻せるようにするためです。
以下の手順で元の状態に戻すことができます。
1./system を書き込み可能にする
adb shell mount -o rw,remount,rw /system
2.シンボリックリンクを削除する
adb shell rm /system/atgames/all-games.ini
3.バックアップ用にリネームした all-games.ini を元に戻す
「/system/atgames」の all-games.bakを all-games.ini にリネームします。
adb shell mv /system/atgames/all-games.bak /system/atgames/all-games.ini
4./system を読み取り専用にする
adb shell mount -o ro,remount,ro /system
5.「Games」フォルダを削除する
作成時と同じように、エクスプローラーでアクセスして「Games」フォルダを削除します。
まとめ
adbを使えるようにするまでが少し面倒ですが、それさえ乗り越えれば「SEGA GENESIS FLASHBACK」をいろいろイジることができます。
カートリッジの吸い出しも簡単にできるので、吸い出したロムファイルで自分だけの「SEGA GENESIS FLASHBACK」を作ることも可能です。
肝心のエミュレーター部分の動作がイマイチなためか評価はあまりよくないようですが、ゲーム以外の部分でもいろいろ遊べるので買っても損はないと思いますよ。
コメント