ど~もeagle0wlです(再)

140文字では収まらないネタを記録するブログ

GAMERnium版kazzoクローンをWindows10で動作させる&本体のレトロブライト化

秋葉原ラジオセンター内の『家電のケンちゃん』(危なっかしい名前だ)のジャンク市を覗いてみた。ここはFM音源ガチャなど奇抜な企画が見られ、ガチャで入手したFMサウンドチップを実際に動作させている人もいる。
togetter.com

FM音源は全く触れたことがなく、メガドラではなくスーファミ派だったし、PC-98も86ボードを持っておらずBeep音しか知らないので、PSGからPCMに一足飛びである。FM音源のチューニングとか超難しいと聞いている。
www.nintendo.co.jp

肝心のジャンク市は刺さるものが見つからなかった。坊主で帰るのもアレと思い、同人ハードウェアに手を出してみることにした。kazzo互換機って言って分かるだろうか。ファミコンのROMイメージを吸い出したり書き込んだりできるオープンソース・オープンハードの装置である。いわゆるマ●コン的な使い方もできなくはないが、それでは明らかに効率が悪いので(身も蓋もない言い方だが全てのROMイメージはネット上にある)、自作のファミコンソフトを実機で動かしたいといったニッチな用途に向いている。

エミュでも十分だと思うでしょ? 相当枯れたハードとは言えエミュは完全ではない。特にファミコンのようにカートリッジが単なるストレージではなく、バンク切り替えやVRAM拡張、音源などを追加できるハードウェアであるため、そのハードウェアの種類(Mapperと呼称される)だけエミュレートが必要になる。それ以前に、ゲーム機のエミュレータは概してアーキテクチャの再現よりも既存のゲームソフトの再現性が優先される。事実、Nestopiaなどはゲーム毎にパッチをして無理矢理動作させている。したがって、自作プログラムで少しズレたことをやると結構エミュの再現度に引っかかってしまうのだ。コピープロテクトの範疇になるが、プログラムから実機とエミュを判別する方法はいくつかある。

GAMERniumのGMN-02-Aを組んでみる

f:id:eagle0wl:20170415030444j:plain
ということで、今回はGAMERniumのGMN-02-Aを購入した。
gamernium.com
このkazzoクローン(GMN-02-A)は「赤白ファミコン本体のハウジングに収めて使用する」ことを前提としたレイアウトになっている(そうでない簡易基板もある)。赤白ファミコンから流用する部品は以下の4つ。

・ハウジング(ファミコンのガワ)
・リセットボタン(基板から取り外す)
・電源ボタン(同上)
・拡張端子(同上)

f:id:eagle0wl:20170415030507j:plain
ハンダ吸い取り線だけで取り外した。拡張端子は足が15本もあるので、基板を壊さないと取り外せなかった。赤白ファミコンのメイン基板は使わないので諦めてニッパーで切ってラジオペンチで毟り取った。メイン基板はもう使い物にならないが、すでに壊れているかジャンク扱いの品物を用意できれば多少気が楽になる。

あとは公式サイトの通りにはんだ付けする。
f:id:eagle0wl:20170415030522j:plain
f:id:eagle0wl:20170415030537j:plain

うまく取り付けてPCと接続し、デバイスマネージャーを確認すると「不明なデバイス」にkazzoが表示される。問題はドライバである。
f:id:eagle0wl:20170415030645p:plain

Windows10 にドライバを入れる

私のメインのWindows機はWindows10(64bit)である。しかし、Windows10からはセキュリティ上の理由により、未署名のドライバを「新規に」インストールすることはできなくなった。kazzo本家サイトで提供されているWindows用のドライバは、2010年から更新されていない。
ja.osdn.net
未署名ゆえこのままではWindows10にインストールができない。解決方法の候補をいくつか考えた(正解は別にあるので読み飛ばして構わない)。

古いWindowsを使う

ある意味確実。マイクロソフト直々に非推奨されたSafeDiscのせいでWindows10で動かないゲームは、割り切って古いWindowsに入れて遊んでいる。風来のシレン外伝 女剣士アスカ見参!』とかSteamで出してくださいよ…。訳あってWindows Vista2017/04/11サポート終了)、WindowsXPを使いたい場合、サポート切れのOSを使うことは危険なことではあるが、オフラインかつ用途を限定すれば問題はないだろう。

署名なしのままインストールする

Windows10のセキュリティレベルを一時的に下げる手順を踏んでからインストールする方法。ネット上にはこの方法が多く紹介されている。テストモードを有効にしている間は署名なしのドライバが動作することを利用する。

ドライバに正規の方法で署名する

デバイスドライバの開発者が行う本来の手順で、マイクロソフトに申請または認定してもらう。自作のドライバではないものを申請すること自体おかしいのでこの方法はない。

ドライバにテスト署名する

マイクロソフトが提供するSDKを使ってドライバにテスト署名する方法。本来はデバイスドライバの開発者がデバッグの際に行うものである。最も安全。SDKを使わないお手軽な方法としてdseoという第三者が提供する署名ツールがあるが(現在配布元は繋がらない模様)、明らかにセキュリティリスクがあるので推奨できない

「ドライバにテスト署名する」の線で試行錯誤するも、どーーーしてもうまくいかなかった。

さらに調べてみた所、別のkazzoクローンである『Kazoo cartridge "INL Retro" Dumper-Programmer』で提供されているドライバやツール群がそのまま使えることが分かった。しかもこっちの販売基板の方が高性能(NESSFCに対応?)かつ安価っぽい。むむむ。
INFINITE NES LIVES

software/firmware package: download からドライバ・ツール一式をダウンロードできる。

ドライバのインストールから吸い出しまでの手順は、以下のページの通りでできた(Windows10 64bitで確認)。
ayasuke2.exblog.jp

Windows 10でドライバのインストール時に「System policy has been modified to reject unsigned drivers」と出て失敗した場合は、テストモードに移行すれば良い。やり方はいくらでも解説されているので省略する。

あっけなさすぎて泣けた。オープンソース、オープンハードゆえの懐の深さと解釈することにする。それはともかく、GMN-02-Aの準備は整った。

先日発売されたばかりの『8BIT MUSIC POWER FINAL』を吸い出してみた。

前作と同じ構成(MMC3, PRG=512KB, CHR=256KB)だったので、難なく吸い出せた。基板についているのは純粋なROMではなくフラッシュメモリらしい。そりゃそうだよなあ…。

拡張端子に繋げるオーディオジャックも合わせて買ってみた。問題なく動作した。拡張端子から音声信号出てるのねえ…と思ったが当時からサードパーティ製のハードがあったな。スピタル産業とか。
f:id:eagle0wl:20170415033538j:plain

レトロブライトで漂白する

基板の動作確認ができたのでハウジングを用意したい。ガラスエポキシな緑色の基板は目の保養になるが、ホコリとケーブル断線が怖いので赤白ファミコンのハウジングに収める。今回購入したkazzoクローンは赤白ファミコンに収めることを前提とした構成になっている。少しサイズは大きくなるが、オリジナルのハウジングのためにプラスチックを加工する手間は省ける。

レトロハードの経年劣化で必ず起こる黄ばみが気になる。しかし、ファミコンに限らずマイコンなど経年によるABS樹脂の黄ばみは「Retr0bright(レトロブライト)」と呼ばれる化合物、化学的な手法で本来の色に戻すことができる。この手法が発見されたのは、ほんの10年前のことだったらしい。
Retr0bright - Wikipedia

Wikipediaで紹介されている中で最も安全な方法を試してみた。手順はシンプルで、

・黄ばみを取りたいハウジングをワイドハイターEXパワー(過酸化水素)に浸す
・日光(紫外線)に数日曝す

ウェブ上にも実践された方の記事が複数ある。日光に含まれる紫外線の量は真冬<真夏で、そもそも日照時間も異なるが、真冬でも晴れの日が続いて時間をかければ問題なくできる。雪が降る地域だと厳しいかもしれないがわからない。紫外線ライト(=ブラックライト)があれば24時間曝すことができるが、そんなものは普通持っていないだろう。

これに先立って初代ゲームボーイでレトロブライト化を行なったが、(画像ではわかりにくいが)電池蓋を外して見える箇所は白いままのはずなので、黄ばみ具合が把握できる。白っぽい方がレトロブライト済みのもの。ゲームボーイは数台レトロブライト化を行なったが、いちばん白くできたものを選んでみた。紫外線の量の違いによるものなのか、純粋な個体差によるものなのかは解らない。
f:id:eagle0wl:20170415030942j:plain
f:id:eagle0wl:20170415031056j:plain
f:id:eagle0wl:20170415031102j:plain

ワイドハイターで満たしたジップロックに入れて真冬に数日間曝したところ、新品同様の白さにすることができた。もちろん通常の汚れは落ちないので、前もって中性洗剤でガシガシやる。

さて問題のファミコンである。中古で買った漂白済みの改造品と、かなり黄ばんでいる本体を並べてみた。
f:id:eagle0wl:20170415033837j:plain
黄ばんだ側を漂白する。前もって簡単に清掃を行なったが、経年でプラスチックが脆くなっているので、取り外しは慎重に行う。前面のロゴシールと背面の黒シールを剥がしてみると綺麗な白が出てきた。これが元の色なのだろう。
f:id:eagle0wl:20170415031119j:plain
f:id:eagle0wl:20170415031131j:plain
シール類はドライヤーを当てて温めると綺麗にはがせる(粘着力は残るのでまた貼れる)。コツとしては、十分に温めて、先の鋭いピンセットを使ってゆっくりと剥がすこと。電源・リセットボタンのガイドシールは特に慎重にやらないと、粘着物が綺麗にはがれずムラになり再利用する際に見栄えが悪くなる。
f:id:eagle0wl:20170415031153j:plain

ワイドハイターに漬け込む際は、浮いてしまわないようにペットボトルを上に乗せると良い。蒸発を防ぐためにラップをかけた。
f:id:eagle0wl:20170415031211j:plain

この写真では、ワイドハイターEXパワー大サイズボトル専用詰替を4つも使っている。レトロブライト化したいハウジングが収まるサイズのジップロックを用意して、ワイドハイターを満たした中にハウジングを閉じ込めると液を大幅に節約できたはずである。反省点としたい。

レトロブライト結果

漬け込んだのは4月。あまり天候は良くなく雨の日も2日あったので7日間放置した。その結果がこちら。
f:id:eagle0wl:20170422235856j:plain
f:id:eagle0wl:20170422235901j:plain
f:id:eagle0wl:20170422235907j:plain

レトロブライト化前の写真と比較して欲しい。写真では完全に伝わらないが、シールを剥がした後に出る本物の白と比べると黄ばみは残っているものの、その効果は抜群である。

あとはファミコンのハウジングに組み込むだけ。kazzoクローンにコントローラは不要だが、コントローラのないファミコンは明らかにおかしいので(NESは可)残すことにした。ケーブルは邪魔だが切り落とすのも躊躇したので本体内部に押し込んで、リャンメンテープでコントローラを固定した。
f:id:eagle0wl:20170423015722j:plain
f:id:eagle0wl:20170423015730j:plain

次にやりたいこと

一応NESのHomebrewは少しかじったことがあるので、次は開発用のカートリッジを自作したい。マ●コン的なものは持っているが、自作プログラムは自作カートリッジに収めたいものである。気分が向いたら挑戦したい。