ロムの吸い出しも可能?「SEGA GENESIS FLASHBACK」をイジってみた

ゲーム

こんにちは、レトロゲーム大好きAibarです。

前回の実機レビューは普通にプレイしての感想でしたが、今回は一歩踏み込んで内部解析をしてみました。

結果的に収録タイトルのロムファイルだけでなく、カートリッジから起動したゲームのロムファイルも吸い出すことができました。ロムの追加方法なども説明しているので、そういった内容に興味がある方はぜひ読んでみてください。

本体内部

本体を開けるには、まず裏側についているネジ(7本)をはずします。ラベルの下にもネジが1本あるので、ラベルをはがすか穴をあけるかする必要があります。

本体が上と下の部品はケーブルでつながっているので、開く際に切断しないよう気をつけてください。

本体を持った時の軽さから大体予想はしてましたが、内部はかなりスカスカです。

この基板サイズからすると本体をもっと小さくすることは可能ですが、カートリッジを挿した時の見た目のバランスを考えて、このサイズにしたんだろうと思います。

メイン基板

SoCにはRockchip製のRK3036が使われています。

SoC Rockchip RK3036
CPU ARM Cortex-A7 デュアルコア
GPU Mali-400 MP

メイン基板はRaspberry Piより少し大きいぐらいでしょうか。カートリッジのコネクタが付いているのでこれより小さくするのは厳しそうですね。

上:Raspberry Pi 3、下:メイン基板

メイン基盤にはUSB端子(ミニUSB)がついており、USBケーブルでPCと接続することによって内部にアクセスすることができます。

サブ基板

コントローラーの端子や電源スイッチ、メニューボタンが付いています。

準備編

最近のゲーム機はOS(オペレーティングシステム)にLinuxやAndroid OSが採用されていることが多いですが、「SEGA GENESIS FLASHBACK」も例に漏れずAndroid OSで動作しています。

しかも最初からroot権限が与えられているので、全ファイルシステムに自由にアクセスすることができます。

ただし、ちょっとした操作でシステムを破壊してしまうこともあり得るので、システムにアクセスする際は慎重に行ったほうがいいでしょう。

この記事の内容に関しては動作確認を行っていますが、ちょっとしたミスで「SEGA GENESIS FLASHBACK」を文鎮化してしまう可能性があります。実際に試される方は自己責任でお願いします。

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ケーブルを挿そうとするとケースの一部と干渉するので、メイン基板をケースからはずしたほうがいいと思います。

ちなみにミニUSBは、スマホの充電などに使うmicroUSBとは別ものです。

左:ミニUSB、右:microUSB

PCからの接続確認

まずコマンドプロンプトを起動します。(ここからはWindowsを使っているものとして記述していきます)

adbのパスが通っている状態で以下のコマンドを入力します。

adb devices

接続している「SEGA GENESIS FLASHBACK」Androidデバイスとして認識されていれば以下のように表示されます。

シリアルナンバー(WQCBI8N48Eの部分)は接続する機器によって異なるので、何かしらの文字列が表示されていればOKです。

実践編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

170個のファイル(ロムファイル:85、パッケージ画像:85)が取得できる

取得したロムファイル(.gz)はgzip形式の圧縮がかかっているので、ツールで解凍すればエミュレーター等で動作させることができます。

実践編2:カートリッジのゲームを吸い出してみる

カートリッジを挿して電源を入れると最初にローディングが行われますが、その際に読み込まれたロムのデータはファイルとして「/mnt/asec」に格納されます。

ローディング画面

ローディング完了後に以下のコマンドを入力するとファイルの存在を確認できます。

adb shell ls /mnt/asec

「rom-0DEB.bin」がロムファイル

 

以下のコマンドで「/mnt/asec」のファイルを取得できます。

adb pull /mnt/asec

取得したロムファイルはエミュレーターで動作させることができます。

実践編3:新しいゲームを追加してみる

ゲームを追加するためには以下の手順を行う必要があります。

  • ロムファイルを追加するためのフォルダを作成する
  • ロムファイルを追加する
  • all-games.ini に設定を追加する
  • all-games.ini の参照設定を行う
  • システムを再起動する

2回目以降は、「フォルダ作成」「all-games.ini の参照設定」は必要ありません。以下の手順でOKです。

  • ロムファイルを追加する
  • all-games.ini に設定を追加する
  • システムを再起動する
この内容についてはこちらのブログを参考にしています。http://www.instructables.com/id/Adding-Games-to-Atgames-Genesis-Flashback-HD/

ロムファイルを追加するためのフォルダを作成する

この操作はコマンドプロンプトではなくエクスプローラーから行います。

エクスプローラーを開いてPC(コンピューター)を選択すると、デバイスとして「MTP USBデバイス」(または「rk3036」)が存在します。

このデバイスを開くと「NAND FLASH」が存在するので

さらに開くと、「SEGA GENESIS FLASHBACK」の内部フォルダが表示されます。

ここに「Games」フォルダを作成します。これがロムファイル追加用のフォルダになります。

「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~4の操作は間違わないように、気を付けて行ってください

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です。

パッケージ画像を追加していないのでデフォルトの白い画像になっている

all-games.ini で設定した内容が表示されている

 

おまけ:元の状態への戻し方

新しいゲームを追加する際に、「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」を作ることも可能です。

肝心のエミュレーター部分の動作がイマイチなためか評価はあまりよくないようですが、ゲーム以外の部分でもいろいろ遊べるので買っても損はないと思いますよ。

コメント