honeylab's blog

各種ハードウェアの改造、主にファミコンミニなどをやってます(ました)

DDRMini解析まとめ

honeylab.hatenablog.jp

honeylab.hatenablog.jp

honeylab.hatenablog.jp

上の3つの記事と私のTwitterで随時解析情報をお知らせしてきましたが、一定の成果を

得られたためここに記しておきます。

 

ハードウェア、ファームウェアについて

・CPUはAllWinnerの8コア 2.0GHz A572という割と豪華な奴

・ストレージ8G,うち2GをゲームROM含むrootsとして使用

Linux Kernel 5.15

Linux version 5.15.123-yocto-standard (oe-user@oe-host) (aarch64-poky-linux-gcc (GCC) 11.2.0, GNU ld (GNU Binutils) 2.38.20220313) #1 SMP PREEMPT Mon Jan 29 02:33:21 UTC 2024

一応サポート情報のOSSからダウンロードしたソースコードコンパイル可能ではある

・が、書き換えて動く保証はない(BROMでの検証がきつい)し、ENVを書き換えてLinuxコマンドラインを改変しようとしたら文鎮化した。

・eGON ヘッダバージョンが4.0

・u-bootはtina 2018-07ベース

・rootfsについては特に検証されていないので書き換えは可能

・SDカードスロットのパターンがあるので、これにSyterKitというツールキットで作ったブートローダやベアメタル実行ファイルを書きこんで動かすことが可能(mmc0)

・これで実行ファイルを作り、ROOTFSをフルダンプしたうえで、initスクリプトUSBメモリのマウントとシェルスクリプトを読み込むようなバックドアを書き込み、システムを自由に書き換えることに成功した。

 

 

・↑SDカードスロットと配線のはんだ付けが必要

 

・↑はんだ付けを必要としてないFELモードからの独自バイナリも起動できるらしいが、私はまだ試していない

 

・普通に使えるシリアルコンソールは出ていないが、DTSを定義するなりレジスタを設定するなりすれば使える2系統は出てるっぽい。

あと、SDカードをあきらめればPF2,4も使えるのかも。

・ハードウェアシリアルを復活させるのは一寸めんどいけど、Linux起動後であればUSB Serial Gadgetをコンパイルして読み込ませ、gettyを起動するようにすれば起動後にはシェルに入ることができるようになる。passwdの書き換えが必要

 

ソフトウェアについて

・メニュー画面の実行ファイルとエミュレータ部分の2つに分かれている

ゲームエンジンMAMEベースのエミュレータ。ベースっていうか、DDR以外の部分を削ったものに独自パッチとROMの暗号・復号化ルーチンを付け足したり、デモの制御などを行うための改変が行われている

 

・DDR2ndMIXの未収録曲は、ゲーム用CDDAのCHDのトラックを無音化することで鳴らないようにされている。白看板はMAME改側で対応。

 

・そのほか付属のROMはおそらくMAMEのROMセットと全く同じものらしい

 (ただし、暗号化されている)

 

・暗号、複合ルーチンは解析済みのため、必要であればCHDの中身を書き換えるか、拾ってきて(ダメ)差し替えるだけで選曲・ステージで鳴らすことができる。白看板を消すにはプログラムへのパッチが必要

 

・本来MAMEでエミュレーションするときには基板のセルフチェックを通るため時間がかかるが、収録時に通過後に保存したステートセーブを読み込んで起動している

・3rdMIXも同様にデータが削られているような気がする。加えて、起動時に本体内に音源データをプリロードしているのでステートセーブを読まないようにしたうえで、CHDを差し替えると読み込まれた時点のデータがロード、再生される(ような気がする)。追加でプログラムにもパッチが必要かもしれない。当てたものが↓

 

・USBでファームアップがあったが、この手法で曲が追加される可能性はゼロではない。ゼロではないが。

 

というわけで、少なくとも私のDDRMiniは、再生できない曲が無音で足譜だけ流れるような残念な状態ではない状態にすることができました。

しかし、まぁ権利の問題でこうなっているので、これをあれこれするようなことをこれ以上私からどうこうすることはできないのです。

しかし、筐体の出来やLEDの演出は大変よく作られていて、ゲーセンに通いまくっていた青春時代を思い出させてくれるとても良い飾りだと思います。

あとは、そうね、普通にaarch64なのでそれ用のMAMEなりStepManiaコンパイルして突っ込む、ことは可能かと思いますので、追々やっていきたいと思います。まずはここまで。