5.95ユーロの「104本入りゲーム機」で『DOOM』が動いた!正体不明のSoCを解析して独自ファームウェアを開発

5.95ユーロの「104本入りゲーム機」で『DOOM』が動いた!正体不明のSoCを解析して独自ファームウェアを開発

オランダ発のディスカウントストア「Action」で販売されている、わずか5.95ユーロの携帯ゲーム機で『DOOM』を動かすプロジェクトが公開されました。手掛けたのは、さまざまな小型機器へ『DOOM』を移植しているAaron Christophel氏です。

●開発者のGitHubリポジトリ
https://github.com/atc1441/Action_104_Games_and_Pacman_DOOM

●ビルド済みファームウェアの配布ページ
https://github.com/atc1441/Action_104_Games_and_Pacman_DOOM/releases

同氏はもうひとつの『PAC-MAN』携帯ゲーム機も解析し、両機種で『DOOM』を動作させる独自ファームウェアや技術資料、書き換えツールをGitHubで公開しています。

●Action「104 Games」製品ページ
https://www.action.com/de-de/p/3219232/pac-man-minikonsole/

●Action「PAC-MAN Minikonsole」製品ページ
https://www.action.com/de-de/p/3219232/pac-man-minikonsole/

104本のゲームを収録して5.95ユーロ

今回解析されたのは、Actionで販売されている2種類の携帯ゲーム機です。ひとつは、ゲームコントローラーのような形をした「104 Games」。1980~1990年代風のゲームを104本収録しており、価格はわずか5.95ユーロです。

320×240ドットの液晶ディスプレイと11個のボタンを備え、単4形乾電池3本で動作します。内蔵ファームウェアには、FlyThings/ZKSWEと呼ばれるソフトウェアとNESエミュレーターが使われていました。

もうひとつは、12.95ユーロで販売されている公式ライセンス品の「PAC-MAN Minikonsole」です。こちらは『PAC-MAN』関連作品を3本収録した横長の携帯ゲーム機で、Bandai Namcoのライセンスを受けたアーケードエミュレーターが動作しています。

収録内容や本体形状、販売価格が異なる2機種ですが、分解してみると同じプロセッサーと外部フラッシュメモリーが搭載されていました。

データシートも型番もない正体不明のSoC

基板上に搭載されていたのは、メーカー名や型番が記載されていないQFN48パッケージのSoCです。データシートやSDK、メーカーによる技術資料は一切見つからなかったため、Aaron Christophel氏は既存のファームウェアを解析しながら、プロセッサーや周辺回路の仕様を調べています。

解析の結果、CPUコアはArm Chinaの「STAR-MC1」で、ARMv8-M MainlineとCortex-M33に互換性があることが判明しました。ただし、SoC自体のメーカーや正式な製品名は現在も特定されていません。

周辺機器のベースアドレスはSTM32L4シリーズとよく似ていますが、レジスターの配置は一致しておらず、既存のSTM32向けSDKをそのまま利用することはできなかったそうです。

そこで、2機種の標準ファームウェアを解析し、レジスターマップや液晶パネルの初期化手順、ボタンの配線などを独自に復元。実機でひとつずつ動作を確認しながら、専用のファームウェアを作り上げています。

280KBのRAMと4MBのフラッシュで動作

解析によって判明した主な仕様は、280KBのSRAM、4MBの外部フラッシュメモリー、32KBの内蔵ブートROM、320×240ドットの液晶ディスプレイなどです。CPUの動作クロックは、ブートローダー起動時の16MHzから約62MHzまで引き上げられています。

本来は194MHz付近まで設定できる可能性があるものの、外部フラッシュメモリーから直接プログラムを実行するXIP方式を採用しているため、高クロック化すると命令の読み出しに失敗して停止してしまうとのことです。

『DOOM』の移植には、ゲームボーイアドバンス向けに開発された「GBADoom」を利用。メモリーマップされたSPIフラッシュからWADデータを直接読み出せる仕組みが、今回のゲーム機と相性が良かったと説明されています。

現在はシェアウェア版「E1M1」のみ

公開されたファームウェアでは、両方のゲーム機で『DOOM』をプレイ可能です。「104 Games」では方向キーや右側の4ボタン、START、MENUなど11個の入力を利用できます。「PAC-MAN」機でも8個のボタンが認識され、音量ボタンをSTARTとSELECTに割り当てています。

動作速度については「プレイ可能なフレームレート」とされていますが、現在はいくつかの制限があります。搭載されているフラッシュメモリーが4MBしかないため、収録されているのは再配布可能なシェアウェア版『DOOM』の最初のマップ「E1M1」のみです。

また、現時点では音声が出ません。DACとDMAを使ったドライバーは途中まで実装されており、音を鳴らすことには成功しているものの、バッファを繰り返し再生する処理が正常に動作していないとのことです。

メモリーを節約するために前後の画面バッファーを共有していることから、画面切り替え時のワイプ演出も正しく表示されません。それでも、わずか280KBのRAMと4MBのフラッシュしか持たない5.95ユーロのゲーム機で、実際に『DOOM』を操作できるところまで仕上げているのは驚きです。

元のゲームへ戻すにはバックアップが必須

GitHubでは、2機種それぞれに対応したビルド済みファームウェアと、E1M1のみを収録したWADファイル、書き換えツールなどが公開されています。

基板上のSWD端子を利用して書き換えるため、プロセッサーやメモリーの交換といった改造は不要です。ただし、基板へデバッグ用の配線を接続し、SWDプローブを使用する必要があるため、一般的なゲーム機のアップデートのように簡単に導入できるものではありません。

導入すると工場出荷時のファームウェアが上書きされ、標準で収録されていた104本のゲームや『PAC-MAN』は起動できなくなります。元の状態へ戻すには、書き換え前に4MBの標準ファームウェアを吸い出して保存しておかなければなりません。開発者も「この手順を省略しないように」と強く警告しています。

バックアップがあればSWD経由で復元できますが、保存していなかった場合は元のゲーム機へ戻せなくなる可能性があります。今回のプロジェクトで興味深いのは、単に「安い機械で『DOOM』が動いた」という点だけではありません。

データシートもSDKも存在しない無名SoCを調査し、異なる2種類の標準ファームウェアから液晶画面やボタン、クロック、音声回路の仕様を復元。さらに、独自ファームウェアを動かすところまで到達しています。

安価な「ゲーム内蔵機」の中身がどのような構造になっているのかを知るうえでも、非常に興味深いリバースエンジニアリング事例といえるでしょう。

※本体のファームウェアを書き換えると、正常に起動しなくなる可能性があります。作業を行う場合は必ず標準ファームウェアをバックアップし、自己責任で実施してください。

via.Hackaday

ABOUT US
アバター画像
retrogamer