honeylab's blog

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

任天堂 GAME & WATCHを分解してあれこれしてSTM32評価ボードとして使う

「GAME & WATCH スーパーマリオブラザーズ」、例のごとく分解・魔改造していきます。

 

基板の詳細な画像などは、例えばこちらとか

mazu-bunkai.com

もっときれいに分解しているほかの方のサイトがありますので、
そちらのほうを是非参照してください…

 

 

 はい、我々甘ちゃんなので、このハード、いつものようにLinux+エミュで構成されているものと思い込んでNintendoのOSSサイトをリロードしまくっていたのですが、その期待を全力で裏切って、STM32という極めて効率的なハードを選定してきました。

 

 基板をよく見るとわかるのですが、メインクロックの水晶振動子は実装されず、代わりに32.768の時計 RTC用の水晶が実装されています。

 


このため、スペック表にきちんと月差を記載することができたんですね。

 

任天堂さすがすぎる。

 

液晶はINNOLUX製おそらく320x240と思われました。

 

 この型番でググっても何の情報も出てきません。カスタムだと思われます。

 

基板上にはゲームのROMや動画像データが収録されていると思われるFlashが実装されていました。

 中身を読みだしてみましたが、完全にランダムであり、圧縮か暗号化が全体にかけられているものと推測されました。この時点で私は割とスキル不足で完全解析をあきらめましたw

仮に内蔵されているROMイメージを既存の別のROMイメージに書き換えたとしても、内蔵エミュレータはおそらくマリオブラザーズほぼ専用になっていて、それ以降に発売された、標準マッパー以外のROMイメージなどに対応させるのは困難だと思われます。
そのため、そういった改造を行うには汎用のNESエミュレータをポーティングすることが一番の近道になります。

この評価基板(言い切った)、CPU内蔵Flashへの書き込みやデバッグのためのSWDポートがきちんと残されています。

 

ST謹製の開発ツールでCPUを指定し、C言語でプログラムを書き込むことで自由にプログラムを動作させることができます。
また、通常の開発環境であれば、書き込まれたプログラムの読出しやデバッグが可能ですが、さすがにこの辺はプロテクトがかかっていて、単純に読み出すことは不可能でした。加えて、私の持っているツールでは高度なデバッグ操作ができないようで、その辺はもうあきらめることにしました。

 ということで、この基板をSTM32H7の評価基板として使い倒すための調査を行いました。

 
ボタン配線などは割と簡単にパターンをたどることでわかります。
LCDの配線もデータ、クロックなどはSTM32内蔵のLCDドライバのピンアサインをもとに推測、およびトレースで判別させました。

 

f:id:honeylab:20201126011227p:plain

しかし、どうやらLCDの初期化にはSPIでコマンドを投げてやる必要があるらしいということがわかり、ロジックアナライザでの解析を行いました。

 

どうにか初期化シーケンスが判明し、LCDフレームバッファの内容を表示させるところまでは到達しました。
後はボタン、音声周りですが、ここはまぁそんなに難しくないと思います

 

が、まぁここから先はぶっちゃけ誰でもできるので…w

なんか面白いネタ無いかなぁ…w

 

海外のハッカーの人がFlash内の解読、再Packに成功したようで、ROMイメージの書き換えなどには成功しているようです。

おそらくこちらの方が最速で突っ走っているかと

twitter.com

 

ところで、みんなが期待している簡単にROMを差し替えるツール的なもの、
今回のハードに関してはそもそも、USBコネクタの配線がSoCまで届いていないこと、
プログラムの書き換えには専用のハードがいることから、

特定の電子工作マニア以外にはおそらくできないものになると思います。

例えばCPU内蔵のプログラムの書き換えには 

 こういうのが必要

とか

FlashROMの書き換えには

 こういうのとか

 
ここはハードの制限なので、ソフトではどうにもならんですねぇ。