2018年6月19日火曜日

赤が出ない基板

簡単だったやつも。

RGBで赤が出ないっていう基板。


目視だけで原因判明。TR2が取れてなくなってる。出口付近にトランジスタが3回路並んでたらほぼ間違いなくRGBの増幅回路。

表面実装の型番についてはMARKING CODE @wkiで調べるとLYが2SC2712 Grade Yだとわかる。幸い秋月でも扱ってるNPNの定番汎用トランジスタだったのでサクッとハンダ付けして修理完了。材料費5円。


写真もハンダも下手だけど完成図、そして記念撮影。


F2大マザー

今度は1200円のF2大マザー。起動しないってやつの修理に挑戦。(そう言えばTAITOロゴのAとASAHIネットのロゴ、少し似てる。僕にとってはどちらもUTMC繋がりなんだけど、何か関係あるのかな……zakさんなら知ってそう)


まずは目視で診断。このカスタムの160ピン側の角が3本ほど潰れてショートしてました。QFPには良くあるやつ。足を揃え直してハンダで補強。他にも潰れっぽいのがあったけどテスターで見る限りきちんと絶縁されてるようだったのでそのまま。

ここでひとまず電源を入れてみる……と5秒くらいで画面信号が出てくるんだけど真っ暗。仕方ないので68000のバスをロジアナで眺めてみると、普通に初期化はパスしてゲーム起動までいっているような雰囲気。

という事で音を確認。実はうちの環境、-5Vの電源はあるのにJAMMAハーネスには出してなかった。だって必要な基板今までなかったし。でもF2大マザーは-5Vがないと音が出ない子。という事で-5Vも配線して起動してみたら……音楽は普通になってた。コイン投入〜ゲームスタートできているので画面の問題っぽい。
って事で、少しやる気を無くしたんだけど、F2は同期が少し特殊で環境によっては画面がぶれる〜みたいな情報があったので、普段使ってるCGA→S端子ではなく、もう1つのCGA→VGAの変換基板で試してみると……


ふむふむ……出てるじゃないか……画面化けてるけど!そこまで難しい症状じゃないのでしばらく調べてみる事に。幸いロジックICは少なく、FFを中心に故障がないかざっとチェック。次にSRAMの塊を疑うことに。

SRAMに関しては/CSを強制pull-upしたり、/WEを強制pull-downしたりする事で該当チップがある程度予測可能。今回SRAMはIC1〜8、IC11〜18の合計16個あるわけですが、/CSは奇数番ICと偶数番ICの2系列だけでした。こいつらピクセルクロックの半分の速度で交互にアサートされて、奇数・偶数合わせてピクセルクロックで画像を送り出してます。今回、奇数側の動作を止めることでノイズが消えたため、問題は奇数番ICと判断しました。次に/WEで絞り込み。常に書き込みを指示する事で、バスにデータを出させないようにして疑似的な休眠状態を作ります。これでノイズ部分が消えたり同じ部分に別種のノイズが乗るところが怪しい。/WEから推測されるのはIC3,4,13,14のうちどれかの故障。/CSの条件と合わせて考えるとIC3かIC13の不良です。

最後はデータバスにゴミを載せて化け方を比較し、IC13の不良と判断……としたのですが……正しくはIC3だった。おかげで面倒なSRAM載せ替えを2枚分。ソケット化してたのでIC13には元々のチップを載せて、IC3だけ手元の在庫と交換しました。20年近く前に秋葉で買ったSRAM、最後の1枚。

木星に着いたよお〜       着いた〜!!(なぜ全裸?)
流石TAITO、クイズでも地球が割れる

IC3の差し替え中にうっかりIC13からIC12へ伸びてるA12の線を切ってしまったらしく画面が大きく乱れて焦りましたが……断線によってピンが浮いてしまった場合、触ると0/1揺れてノイズ乗るので問題特定しやすい。ちなみにIC18→IC11→IC1→IC8って方向にチェイン状に接続されているので、IC13からIC12への接続が切れると、IC1からIC12まで全部の足が浮きます。逆に接続は1から12のどこかのA12を13から18のどこかのA12へ繋いであげれば大丈夫。ここはソケット化した3と13と繋ぐことにしました。無駄にジャンパーorz


修理後のSRAM群。右にあるカスタム0200OBJ、0210FBCに繋がってます。アドレスもデータも両チップに分割して接続されており、両チップが密に連携してスプライトとオブジェ面を合成してる様子が伺えます。CPUから見えない場所にあるのでテストモードの診断とかでは検出されない。一応、必要なとこだけ作った雑なメモを貼っときます。


それと何かの確認で役にたつかもしれない最終的なボード写真。右下がサウンドで、左ほぼ半分が画面ですね。配線も素直だし、これくらいの部品点数なら調査も楽で助かる。値段分以上に楽しめた。



しかしチップの取り外し難しい。特にVCCとGNDのピンがハンダとれない事が多い。昔のトラ技の動画に従いヒートガンで温めながらチップを抜く……ところまでは綺麗にいく。でも残ったハンダを表からコテで温めて裏から吸引器で〜ってやってもハンダが溶けてくれずに吸えない箇所が必ず出てくる。VCCとGNDとかは常に吸い取れなくて。基板の内側に配線層があって接続されてる場合なのか、それとも電流多く流れると合金化が進むのか……。良い方法知っている人いれば教えてください。とりあえずヒートガンで温めて針形の工具で貫通させて吸い取ったりとかはそこそこうまくいってる。

2018年6月13日水曜日

飛翔鮫・修理(もうちっとだけ続くんじゃ)

遊幻さん@ヤフオクにてジャンクの飛翔鮫(伏せ字IDバレちゃう……)を入手。わりと簡単に治せると踏んでたんですが……ちょっと手こずってる。気力が続かないし、次に時間できるまで少し間が空きそうなので、軽くメモを残しておこうかと。

元の状態はオークションの写真の通り。BG面は正しく描画されてるっぽいけど、スプライト面がゴミまみれ。というかハード性能以上の枚数スプライト出てる(笑)

で、基板を見ると……


ガッツリ修理跡。しかもハンダ面めちゃくちゃ汚い。SRAMは2面対になっているうちの1面がソケット化されてて、しかも刺さってるやつオリジナルは120nsなのに200nsの遅いやつ。これは勝ったか!と思って120nsのやつに差し替えてみたけど世の中そんなに甘くない。症状かわりませんでした、残念。そのくらいは遊幻さんでも試してそう。ちなみに後に調べた感じだとこのSRAMx2はオブジェクトRAMっぽいですぞ。スプライトのパタン番号や座標なんかが出てきてる。

そしてこの頃、nosuke様の俺基板(いた)本がBEEPに再入荷してたので、先人の知恵として有り難く購入。
ロジックICも壊れるんだ、つらそー……とか他人事のように思いたかったんだけど、SRAM以外にもロジックIC何個か交換されてて。前のオーナーが怪しいと思って修理した箇所か、壊した箇所のいずれかだろうと。自分も先人に習って周辺のロジックを疑ってみる事にしました。
まじかよーって感じでインバータが壊れてた。なんかこういう故障モードは学生実験でトランジスタ描いてSPICE回してた頃に見たことあるような気がするけど、波形が鈍ってたり電源足りなかったりとか、あとゲート壊れかけてたり?そっちはあまり得意じゃなかったから自信ないけど。
って事で、スプライトは表示されるんだけど、何もないはずの後方位置に同じスプライトデータが何度もリピートされる感じ。
とまぁ、そんな感じで少しだけ前進。

ちなみにPROMはアドレスに回り続けるカウンタの値をもらってデータを読み出し、それがデコーダに入って負論理のワンホット信号が出てく感じ。シーケンサのタイミング生成的に使われてる。ここでPROMの後段、タイミング信号を受け取ってるdemuxの先を追いかければ面合成部分の論理にたどり着くかなーって思ったんだけど。demuxの信号調べてるうちにクロック波形が崩れてるんじゃないかって気がしてきて。先のNOTの故障もクロック鈍ってた影響で特性悪い個体がノイズ出してただけって可能性もある。という事でクロックツリーをテスターで追いかけてみたら、すぐに壊れたFFを見つけることができました。CLKと出力1bitが内部でショートしてる模様。実際に波形とってみたら出力がCLKに引きずられてた。そんなわけで該当ICも交換。
IC取り外すの大変なので、事前に短時間で検証できる事はやっておき、ある程度の確信が持てたら交換。
という事で、これだけでは全ては直らず。おそらく似たような故障がもう1箇所ある……。キャラが常に化けるというよりは、スプライトが何かの影に入っている時だけ縦縞が入る感じです。自機も出撃時に建物の影で縞々になる。縦縞なので同じピクセルクロックで動いてる素子だと思うんだけど……。まぁ、ロジック追って少し満足してしまいモチベーションがぐっと下がったのでしばし休憩。

今まで論理回路はチップの中ばかりみてきたので基板上の回路を追うのはちょっと新鮮だった。ほんと学生実験以来な感じ。流石にチップと比べると規模は桁違いに小さいけど、物理的な配線を追うのはちょっと手間。見えてないとこテスターで総当たりしないとだし。そして当時のシステム、わりと愚直にロジックIC積み上げただけなんだなーって。当たり前の事なんだろうけど感心。バスがそれぞれ独立してるのとかも汎用PCになれちゃってると不思議な感じ。画像データとかROM使ってると確かにCPUから読み書きする必要はないもんね。

2018年6月4日月曜日

沙羅曼蛇2用のサウンドデータ作成方法

興味持ってる人がいるようだったので、とりあえず手元でデータ生成に使ってるツール一式をまとめてみました。と言っても、データ生成はほぼほぼarm用のアセンブリでやってます。本来はm68k用を使うべきなんでしょうが、命令を吐く必要がないのでbig endianが指定できればなんでも良いのです。

ツール一式は前エントリのサンプルデータと共にGitHubにて。

data/ 以下にサンプルデータとデータ生成スクリプトが入ってます。スクリプトはPOSIX環境向けなのでWindowsの人はWSLなりCygwin、MinGWあたりを使って道具を揃えてもらえれば、と。とは言ってもpureなWindows環境向けに同等のツールを揃えることは、ある程度の知識があれば大きな手間はかからないと思います。

生成に使っている開発ツールですが、自分はmac上のbrewでarm-none-eabi-gccを使ってます。Ubuntuでもパッケージでさくっと入れられるかと思いますので、Windowsの人はWSLを使っていれば同様に簡単に環境が揃うかと。

data/gxsnd.S がサンプルデータなので中を覗いてみてください。gxsnd.hっていうヘッダの中で色々とコマンドを定義して、それを使ってアセンブリ言語向けのデータを埋めてく感じです。

先頭の.org 0x00108000はデータを配置するメモリ上のアドレスを表しており、この値はmame向けのテスト環境で前提にしている値です。サウンド用のサブCPU内のアドレスを表しており、このアドレスは沙羅曼蛇2では未使用のRAM領域です。実機で試したい場合には、既存のデータを上書きする形でROM内に配置する必要があります。また、その際にはROMチェックを通るようにチェックサムの辻褄を合わせる必要もあります。このあたりの解析情報も持ち合わせているのですが、今回はこの点については割愛。

続くHEAD:部は、全16チャンネルのデータ位置とデータ末尾を示すラベルで埋めます。この部分はいじらないで下さい。

続けてCH_1からCH_16まで、実際のデータが続きます。各チャンネルのデータは必ずENDで終わらせて下さい。またデータ末尾にも必ずENDが必要です。

データについてはMMLを知っていればある程度推測できる範囲にあるとは思うのですが、わかりにくい部分だけ補足します。

一般的なMMLでは音程と音長を組み合わせてA4などと指定するのが一般的です。またLコマンドで省略時の音長も指定でき、単純にAと書けばラの音が指定できます。一方、このシステムでは、音程に対して、音長、ゲートタイム、音量を合わせて指定するのが基本になります。A4LG(L4,100,127)と書くと、ラの音を100%のゲートタイム、音量最大127で指定する事になります。Aの後の4は音長ではなくオクターブです。また2音目以降はゲートタイム、または音長とゲートタイムを省略可能です。A4LGではなく、A4Lと書けばゲートタイムが省略、A4と書けば音長とゲートタイムが省略され、前回の値が再利用されます。ただし音量は必ず毎回指定する必要があります。この点が少し不便。音量は96が四分音符相当で最大255までしかとれません。よって直接指定するのは二分音符までとし、それより長い場合にはタイ(TIE)で繋いで下さい。タイも音長とゲートタイムを引数に取ります。音調に関しては直接数字で記述しても良いですし、gxsnd.hで定義されているL4などの文字を使っても構いません。付点はL4_などとアンダーバーで表現できます。

ドラムに関してはRHYTHM_ONでリズム音源モードというか。ノート毎に違うサンプリングデータがアサインされてるモードになります。C0からBb2まで、バスドラ数種、スネア数種、シンセタム、生タム、ハット、金物各種、色物系みたいな順で並んでます。そうそう、通常の音色もサンプリング番号+ADSRチックなエンベロープ個別指定になってます。よって沙羅曼蛇2をベースにする限り、沙羅曼蛇2のROMに入ってるサンプリング音色しか使えません。65音色くらいあったと思います。一応音色一覧的なのもあるけど主観で命名してるので環境手に入れたら自分の耳で確認してもらうほうが確か。

各コマンドの値に指定できる値は基本的には0-255の8-bitsの値になります。が、コマンドによって成約もあります。PANは1が左、8が中央、16が右でその間の値もとれます。REVERBは2つの引数ともに0-15までしか取れません。DETUNEに関してはsigned charで-128から127で考えて良いかと思います。

繰り返しについてはREPEAT_START / REPEAT_ENDで囲んで下さい。REPEAT_ENDの第1引数が繰り返し回数です。第2、第3については不明ですが、既知のデータでは0が指定されていました。

ループポイントについてはLOOPコマンドに続けて戻りたい場所のシンボル名を後続の.dc.lラインで指定して下さい。内部的な挙動はマクロ呼出しと同じですが、コマンドは別途アサインされていました。マクロについてはサンプルでは使っていませんが、CALLコマンドに続けて.dc.lでシンボルを指定すると、任意シンボル内のデータを演奏してから呼び出し元に再生位置が戻ります。これらのデータはDATA_ENDより手前、通常はCH_16の後ろに置かれ、他のデータ同様にENDで終了します。

再生環境についてはmameを流用するのが簡単です。とは言っても沙羅曼蛇2のROMを所有している必要がありますので、この点に関しては著作権遵守でお願いします。駿河屋で2万ちょっとが店頭での最安値かな?ヤフオクで見張ればもっと安く手に入ることもありますが、慣れてない人にはおすすめできません。基板環境ない人でもプラス数万払えば実機で演奏する環境も夢ではありませんよ。

mame/mame.diff のパッチをあててmameをbuildする必要があります。あるいはdebugモードで起動すれば本体に手を入れずともデバッガコマンドから再生する事は可能なのですが……実際にデータ作って〜となると面倒でやってられません。このパッチは特定アドレスにデータを読み込むフックをかけてます。実際には0x00800000を叩くとgxsnd.datというファイル名をメモリに読み、サウンドチェック用の曲ヘッダが指す先を読み込んだメモリ上のデータに差し替え、再生用のホストコマンドを入れて割り込みをあげます。

該当アドレスを叩くのはmame/cheat/salmndr2.xmlのcheatを通して行います。mame以下に「cheat 1」と書いたmame.iniファイルを置くとcheat以下の定義が読み込まれ、cheatメニューにLoad GXSND、BGM Test、Loop 1 BGMなどが追加されます。この中のLoad GXSNDを選ぶと該当アドレスが叩かれてデータの再生が始まるはずです。

BGM Test、Loop 1 BGMはおまけ。前者は曲を選んで再生できます。後者は1週目から2週目BGMを再生するハック。

ざっくりこんな感じで。何か質問があればTwitterなどで質問して頂ければ。あと、著作者からの要望があれば、前置きなく解析情報を削除することもあるかと思います。まぁ、68アセンブリ読めれば誰でも数時間でわかるような内容ではありますが。

ちなみにSilver Wings Againに使われているコマンドは0xd0以外は解析できてます。引数の数はコード見ればすぐにわかるんだけど、効果はROM書き換えながら耳で確かめたり、コード見たりでまちまち。0xd0に関しては聴覚上に違いがなかったような気もするけど、mameで確認してる関係上、きちんとエミュレートされてない部分で変化してる可能性も。他の曲でまだ未確認なコマンドだとフルタイムポルタメントとかもありそう。ROM内のサウンドデータを同ツールでbuild可能なソースに変換する解析ツールも作ってあるんだけど、コード適当だし、解析ツールについて権利者がどう思うかもわからないので、今の所公開は考えてません。

2018年6月3日日曜日

沙羅曼蛇2のサウンドドライバを攻略するの巻

とりあえず、ROMの指定アドレスからサウンドデータをデコードして、アセンブラから再びドライバが認識するデータに再コンパイルする環境を整えた。

で、実機でROM焼きながら曲作るわけにもいかないので、開発用環境としてmameをほげって、特定のアドレスを叩くとファイルからデータを読んでサウンド側のRAMに配置するような環境を用意した。実際にはcheat機能も使って、cheatメニューからLOADを選ぶと該当アドレスが叩かれ、続けてK056800経由でサウンド再生の命令が飛ぶようになってる。

現状で把握してるサウンドドライバ用の命令は以下の通り。

  • ノート(音長指定あり/なし、ゲート指定あり/なし、音量指定あり)
  • タイ
  • 休符
  • ドラムモード(ON/OFF)
  • 繰り返し制御
  • マクロ呼出し
  • パン指定
  • オートパン(指定した時間で2点間を移動)
  • 音色指定
  • テンポ指定(チャンネルごと)
  • アタックレート指定
  • ディケイ指定
  • リリースレート指定
  • デチューン指定
  • LFO
  • LFOオートメーション(深さの時間変化)
  • リバーブ(チャンネルごと)
  • ループ指定
ヘッダ情報とかマクロやループポイントは絶対アドレスで指定するので、ROM配置に合わせてデータをコンパイルしてやる必要がある。このあたり、開発環境がかなり原始的だった可能性あるなぁ……。MSX時代だとほぼほぼバイナリエディタみたいなので作曲してるっていう話もあったけど、それとMMLの中間くらい?自分はとりあえずアセンブリのマクロを使って読みやすくした状態でアセンブラかけてデータを作ってるけど。ノート毎に音量指定するのが結構面倒で、あとから音量変えるのも手間。MMLから専用コンパイラでアセンブラのソースに変換してた可能性が高いかな?



とりあえず簡単な曲を作って再生させてみた。実験の延長なので曲自体凝ったことはできてないけど。音色からなんとなく沙羅曼蛇2感みたいなのは伝わってくるかな。

FMPSGの新譜はSystem GXの実機でいきたいなぁ。

2018年5月24日木曜日

沙羅曼蛇2を2周目BGMでスタートするパッチ

なんとなく沙羅曼蛇2のサウンドCPU側のコードを眺めてました。ホストからのコマンド、初期化の手順、全体的なデータのレイアウトくらいはわかったので少しメモ。たぶん他のSystem GXも同じ系譜なんじゃないかと(ヤッホー!軽く見てみたけど、ほぼほぼ同じだった。未使用曲は等に目新しいモノはなくMagical Melodyだけだった)

ホストからのコマンド

K056800を経由して8-bits x 4のデータを受け取ります。割り込みあがったらデータを呼んでコマンドを解釈。最初のバイトが0xF0以上の時は初期化やメモリチェック、サウンドチェック用の曲の再生など、特殊な要求がアサインされてます。それ以外の場合、最初のバイトに曲番号、2バイト目にバンク番号を指定して演奏開始。BGMはバンク1に、SEはバンク2から6にアサインされてました(ただし沙羅曼蛇2だと4〜6は同一)。

特殊コマンドはディスパッチするとこまでは追いかけたけど個別の処理は全部は追ってませんが、わかりやすいのだと0xF0が基板のテストモードから入れるSOUND SCALE CHECK。内部的に[0x0E, 0x01, 0x00, 0x00]のコマンドに置き換えられてテスト用のシーケンスが再生されます。0xF9はワークエリアの初期化、0xFEは起動時のROM RAM CHECKで7C/S、9C/S(沙羅曼蛇2の場合)のチェックの実体です。本格的にサウンドプログラムにパッチあてる場合には、このコマンドが成功するように修正する必要がある。

データ構造

0x000067e4 から 4Bytes x 8 x 2のアドレステーブルがあります。前半の4Bytes x 8が1周目、後半の4Bytes x 8が2周目のBGM/SE情報で、それぞれがバンク0〜7に対応する情報を格納する構造体のアドレスです。

各バンクの情報を格納する構造体は、単純に楽曲情報ヘッダのアドレスの配列です。1周目のBGM用バンク1の場合

.dc.b $00,$00,$6a,$fc ; SILVER WINGS AGAIN (STAGE 1)
.dc.b $00,$00,$6b,$08 ; SENSATION (STAGE 2)
.dc.b $00,$00,$6b,$14 ; ALL IS VANITY (STAGE 3)
.dc.b $00,$00,$6b,$20 ; SERIOUS! SERIOUS! SERIOUS (STAGE 4)
.dc.b $00,$00,$6b,$2c ; SPEED (STAGE 5)
.dc.b $00,$00,$6b,$38 ; DEAR BLUE (STAGE 6)
.dc.b $00,$00,$6b,$44 ; DEAR BLUE (STAGE 6)
.dc.b $00,$00,$6c,$16 ; DEAR BLUE (STAGE 6)
.dc.b $00,$00,$6c,$28 ; THEME OF THE LIVING BODY BOSS (3, 5 STAGE BOSS)
.dc.b $00,$00,$6b,$c8 ; WHAT'S YOUR NAME (NAMING)
.dc.b $00,$00,$6b,$98 ; AND THEN ...... (GAME OVER)
.dc.b $00,$00,$6b,$a4 ; A THEME OF THE SALAMANDER2 (TITLE)
.dc.b $00,$00,$6b,$b0 ; BEGINING FROM THE ENDLESS (ENDING)
.dc.b $00,$00,$6b,$f8 ; SOUND SCALE CHECK
.dc.b $00,$00,$6b,$5c ; THEME OF THE MECHANICAL BOSS (2, 4, 6 STAGE BOSS)
.dc.b $00,$00,$6b,$68 ; THEME OF THE LIVING BODY BOSS (3, 5 STAGE BOSS)
.dc.b $00,$00,$6b,$c8 ; WHAT'S YOUR NAME (NAMING)
.dc.b $00,$00,$6b,$50 ; NO FUTURE
.dc.b $00,$00,$6b,$74 ; PRELUDE OF THE LAST BATTLE (LAST STAGE)
.dc.b $00,$00,$6c,$04 ; THEME OF THE GOREM (STAGE 1 BOSS)
.dc.b $00,$00,$6b,$d4 ; THEME OF THE GOREM (STAGE 1 BOSS)
.dc.b $00,$00,$6b,$80 ; GIGA'S RAGE (LAST BOSS)
.dc.b $00,$00,$6b,$bc ; ENDING - AM SHOW VER.
.dc.b $00,$00,$6b,$e0 ; NERVOUS BREAKDOWN
.dc.b $00,$00,$6b,$ec ; FIRE TRIPPER
.dc.b $ff,$ff,$ff,$ff ; [n/a]
.dc.b $ff,$ff,$ff,$ff ; [n/a]
.dc.b $00,$00,$00,$00 ; [null]

こんな順に並んでました。ホストからのコマンドで最初のバイトで指定する順です。CD等に収録されてる未収録曲もばっちりアサインされてます(が、YOU TAKAMINE版のThunderboltは見つからず)。2周目用テーブルでは1面、4面、5面の箇所に別アドレスが入っており、POWER OF ANGER、LAST EXIT、PLANET PATISを指してます。同じ曲が複数入っているのは使い分けよくわかってないんだけど、曲番号に応じて特殊な初期化が走るコードを見かけたので、たぶん状況によって曲がうまく切り替わらない時があって、その時はワークアラウンド的に強制初期化+再生が無理やり走るような仕組みになってる気がする。

各楽曲情報を示すアドレスは、12Bytesだったかの構造体になっていて、なんらかのフラグ情報とシーケンスデータのアドレスを含んでる模様。この先はまだ調べてないけど、シーケンスデータもそのうち調べたい、というか沙羅曼蛇2音源で好き勝手演奏させたい(その後の調査でだいたい理解できた。基本演奏と音色、LFO、パンくらいは好き勝手できるようになったので簡単な曲くらいは作れそう)

ワークエリア

RAMの先頭(0x00100000)からいきなりチャンネルごとのワークが並んでいるっぽい。各チャンネル512Bytesで16チャンネル分。詳細はシーケンスフォーマットの調査と合わせていずれ。

1周目と2周目のBGMを入れ替えるパッチ

一番最初のテーブルで入れ替えちゃうのが楽です。7CのROMに対して以下の2Bytesを書き換えればOK。

0x000033f5 : 0xc4 => 0x54
0x00003405 : 0x54 => 0xc4

この入れ替えだったら起動時のチェックも素通りできます。

一応、mame用のcheatも紹介しておくとこんな感じ。
<mamecheat version="1">
  <cheat desc="Loop 1 BGM">
    <parameter>
      <item value="0xc4">Loop 1</item>
      <item value="0x54">Loop 2</item>
    </parameter>
    <script state="run">
      <action>soundcpu.rb@67EB=param</action>
    </script>
  </cheat>
</mamecheat>

2018年5月3日木曜日

ジャンク遊び - naomi編

ジャンクでDIMMボードとnaomi2を入手したので少しメモ。

DIMMボード

ERROR 22が出るというボードを入手。元々PC133 256MBが1枚載ったDIMMボードを持っていたので、故障ボードからDIMMだけ抜いて2枚刺しで512MBに……と思っていたんだけど、ばらしてみたらPC100 128MB x2だったので野望はついえた(笑)。ただ、バッテリーは生きてたので今まで使ってた方に移植。

あと、実際に我が家のnaomiで起動した際にはそもそもボードを刺すと本体が起動しなくなる、という症状でした。これ、実は単純にコネクタの接触不良って事が多いみたいで、今回もばらしてみたら内部の2層基板を繋いでるコネクタが抜けかかっており、そこを刺し直したら普通に認識されました。

naomi2

いわゆる動作未確認ジャンク。ジャンクを買ったら動作しなかったので転売します、の意味のヤフオクスラングだと思ってる。

今回のnaomi2も試したら画面信号も確認できず真っ暗のまま。さっそく分解してみたら……
バックパネルのコネクタ周辺になんか焦げてるパタンが……。反対側のコネクタのハンダ面を見たら、足が曲がって隣のピンと接触すれすれになってた。おそらく最初に手放したオーナーがショートさせたんだろうな。曲がってた足はペンチで治して調査続行。焦げてるパタンの前後をテスターで調べてみたら、やっぱり断線。接続先はVGAコネクタのGND。そりゃ何も表示されないわな。という事で「安心しろ、傷は浅い」と周辺にたくさんあるGNDピンと接続。幸いにしてバックパネルは初代naomiと共通のようだったので、初代もばらして修理したバックパネルが動作する事は確認できました。

で、これで治れば御の字だったんですが、そうは問屋が降ろさず……。結局またもやチップの接触不良。ファンの載ってないヒートシンクだけの石が2つあるんですが、それを押さえてると綺麗に起動してくれる。ちょっと力加減が悪いと画面にクロスハッチ状のマスクがかかったり、スローモーションになったり、とイマイチご機嫌ななめ。力で基板が歪む事もあり、実際にどのチップのどのあたりの足に問題があるのかまでは特定困難でした。しかもBGAなんですよね……素人がリワークやったところで不具合再発は時間の問題。わざわざ修理する価値があるかは微妙なところですね。

まぁ、naomi2が動いても追加で遊べるのバーチャ4くらいだし。どちらかと言えばDIMMボードと色が揃ったケースが欲しかっただけって感じでもあるので。まぁ、いいかなー、とか。

2018年5月1日火曜日

続・【修理】System GX【4枚目】

昨日のブログの後、忘れないうちにと問題箇所の恒久的な処置をしました。とりあえずダメ元で問題のviaにハンダを流し込んでみる。するとアドレス線とコネクタは無事に電気通るようになったので、残るラダー抵抗までの配線を線材使ってパッチする事にしました。
こんな感じで、傷は浅い!外観を損なわない修理で済んでよかったー。日本ではあまり基板修理ログブックみたいなのは見かけないんだけど、海外にはあるとこにはあって(笑)以前読んだ記事にやっぱりviaの接続不良ってケースがあったので発見の時はヒントになりました。

で、この時点で試しに電源入れたら……



サウンドROM刺しても無事に起動。チェックも全部通りましたが、その後にだんまり。流石に何も思いつかなかったので、この日はそのまま作業終了。

そして翌日。ひとまずメインCPUからのチェックは通ってるので、サウンドCPU側のバスが化けててサウンドCPUが暴走〜ってあたりを想定してサウンドROMの足にロジアナ仕込もうと思ってたんですが……念の為、だんまりの後にチップを叩いて回ってみたらセキュリティチップを叩くとワーニングメッセージに進むことが判明。という事で、セキュリティチップのコマンド完了割り込み待ちで固まってる線で再調査。



重りを載せてる間は動くけど、外すと固まったりリセットかかったり。割り込み線が浮いててノイズで予期しない割り込みが出てリセットしてるとかかな?
この子。下側の右端の方が浮いてたみたい。昨日、清掃・リフローした箇所が左下だったりするので、その時に反対側を浮かせてしまった可能性も(笑)

でもまぁ、このチップ、サブボード交換の時に歪みやすい箇所に載ってるんだよね。頻繁に抜き差ししてるとこの足が浮くって故障はそれなりに多いんじゃないかなぁ。

その後、問題の箇所を再リフローする事で、重りとかなしで安定動作するようになりました。重い調査作業を想定してたけど、ものの5分で原因特定、作業自体も30分かからずに終了しました。

【修理】System GX【4枚目】

ジャンクの沙羅曼蛇2とセットでお安く入手。たまにしか起動せず、起動してもキャラ化けが酷いとの事で、まぁ起動するなら大怪我ではあるまい、と踏んで甘くみておりました。とりあえず手元で試した限りでは画面まっくらで何も表示されません。というか同期信号すら出てきてない。という事で王道に従いmameのソース(konamigx.cpp)見つつ修理。まだ未解決だけど、とりあえずログ。コメント歓迎。

最初に疑ったのがソケットに刺さったサウンドプログラム用EEPROM。9cのほうに変な力がかかって斜めによれて全部の足が曲がってた。これならいいなー、と思って直してみたけど世の中そんなに甘くなかった。あとソケットのROMは念の為読んでみて既知のCRC/SHA1と一致する事は確認した。

次に疑ったのがカスタムのセキュリティチップ。これが死んでたら or 壊したら、もう直せないやつ(笑)。いっきにハードになった。
写真左上のピン5本くらいが、若干錆びて相互に接触してる雰囲気を醸し出してるんですよね。この子はDMAでスプライトの並び替えとかまでやらかすので、足がショートしてたらキャラ化けとか確かにありそう。という事で、ループで眺めながらピンセットで足元の掃除。最後に最近使い始めたヒートガン的なもので軽くハンダを溶かして再固定。テスターで周辺のピンとの接続、隣接ピンがショートしてない事を確認。

……でも変化なし……

で、とりあえずプログラムROMの足をロジアナで調べて、どこで止まってるか見てみようと思ったら……アドレス線が0に張り付いたまま動かない。どうもメインCPUが起きてきてない模様。サブボードからそんな事できるんだ……セキュリティチップかサウンドCPUが初期化後にリセット解除するのかなぁ……的な想像だけど不明。でも、ダメ元でサウンドプログラムROMを引っこ抜いて起動を試みる。
やった!ちなみに沙羅曼蛇2は画面信号が出てROMチェックが始まるまでに5秒弱かかり、他のサブボードと比べるとかなり遅め。この画面をじっと見つめると、文字コードに0x08がORされてる事がわかる。一行目がROM RAM CHECKなので、RがZ、AがIとか対応はすぐわかるはず。

これが元所有者の言うキャラ化けだとしたら、スプライト(セキュリティチップ)は問題なさそう。おそらくタイルを読み出すアドレス線が上位のほうで浮いてるんだろうと推測して、プルダウン抵抗片手に17h、15h、13cの足を調べてみる。と、17h、15hの3番ピン、13cの4番ピンを落とすとZがRに戻った(文字コードに0xF7でANDとってる事になるので、別の文字が一部化ける事になるけど問題なし)。ピン配列同じはずのROMのうち、13cだけピンが違うのは、おそらく他のが16-bitsでこいつだけ8-bitsで使ってるから。

でこのピンから出てる配線を追って裏面、表面といったりきたりしたら、何もないつきあたりで線が途絶えてた。
下のラダー抵抗の上に(DH)って文字があると思うけど、その「(」と「D」の間の部分。汚れを削ったら下からviaらしき穴が……。なんかラダー抵抗も汚れてるし、この部分になんらかのダメージがあった可能性が高いなー。本来、この行き止まりの配線はvia越しにラダー抵抗に繋がって、その先で(DH)の文字上部裏側にあるコネクタに接続されていた模様。ピン的には「(」のすぐ上の部品面からは配線されていないピンがそれ。
という事で、ひとまずコネクタとEEPROMの足をショートさせてみる。うまくいくようなら、後でハンダ付け配線。
やった!キャラ化けに関しては解決!後半のBADはサウンドのROMを抜いてるせいですね。サウンドROMは刺すとやっぱりメインCPUが起きてこないので、まだ別箇所に似たような問題があると推測。ひとまず疲れたので記録だけとって次号にコンティニュー。

2018年4月28日土曜日

4月までのゲームまとめ

またサボりがちだったので、連休前にまとめ。

原始島2(AC - MVS)

という事で、唯一クリアに至ったゲーム(汗。20連入れてる。

ツインビーヤッホー!(AC - System GX)


こんな感じではじめたけど、今一番力入れてます。Bボタンに20連入れて、ボタンは分けずにAボタンで溜めオプションと併用するスタイル。ランク調整のためにミカエルは1つ目逃して2つ目からとってる……けど、滅多に4面まで持ち越せないので、あまり取る意味ないかも。
だいたいいつもクリアまで3コインかなぁ。けど、
こんな感じでボチボチ。エース再戦も瞬殺できるようになったし、5ボス、6中ボスは完全に見きったと思う。ときめきレーザーも避けられるようになったのでワンコインクリアも見えてきた感じ。

ガレッガ(Xbox One)

魔法大作戦もクリアしたし、と戻ってきたけど、ようやく去年のとこまで調子が戻ったって感じかな。箱版でハイスコア更新した。箱は人少ないんで世界ランク12位とかだった記憶w我こそは!って人は箱版も買ってランクインするのだ!
ってな感じで、まだ6面で苦しんでます。ツインビーに次いで遊んでる感じ。まぁ、ツインビーは勲章取る訓練なので(とか

式神の城II(AC - naomi)

ゆかりん出てるしって事ではじめてみたけど、まだやり込んでない。3-2ボスで撃沈。15kHzばかりやってると、たまに見る31kHzは綺麗(笑)。

赤い刀 真(Xbox360)

って事でその後も少しやってみたけど、まだ5面のまま。これは少しやればいけそうな気もするし、最終面まではすぐ行けて、そこからが時間かかるパターンのような気もする。僕くらいの初心者レベルだと楽しみつつ訓練できる丁度よい難易度かも。


真はアーケードから元々なのかもしれないけど、ケイブ直々(時に開発M2だったりもするけど)の360移植はどれも高解像度化されてて嬉しい。ここ重要。m2stgのケツイにも期待。

ストライカーズ1945PLUS(AC - MVS)

弾の速いのが苦手なので(雷電とかほぼ1面で死ぬし)、少し彩京シューの練習を……という事で、中でも弾の遅い1945PLUSを手始めにやってたんですが、あまり上達せず。


5面ボスで撃沈ですねー。わりと好きになってきたんですが、まだ先は長い。

という事で、もっと集中せにゃ駄目ですな。

2018年3月23日金曜日

基板修理

MV-1AGX以外にも修理関係の話があったので、それも記録に。

まず1つ目は修理とは少し違うけど、画面がモノクロになっちゃう問題を調べた話。
これ、基板側を色々調べたわりには結局は相性問題の一種だった。間に別の機器を挟むことで似たような問題を回避してる人もいるみたい。この並列に抵抗を挟む解決方法はかなり雑かつノイズも乗りやすいので、真面目に対処したい人は分圧なりの回路を挟むほうが良いかと。基板にあまり手を入れたくなかったのでこういう対処になったんだけど、考えたらハーネスにSYNCのボリューム回路でも挟んでおけば万全だったのかもしれず。RGBはS端子に変換するとこで個別のボリューム付いてたんだけどSYNCはなかったので。

もう1件は起動最初の画面で固まっちゃう基板。もともとこの事は明記されてたジャンクで、基板には液漏れの跡があり、一部のコンデンサの足がやや腐食気味。1つだけ完全に腐ってて、電解ではないんだけど容量抜けの状態って言って良いのかな?セラミックなんだけど、ほぼ足しか残ってないような状態で。このコンデンサ取り替えれば生き返るかなぁ、というのが最初の目論見だったんだけど、見事に外れて。
その後、こんな感じでエミュレータで動作確認してみたりとか。まぁ、サポート追加と言っても共通のベースボード使ってるタイトルがあったので、タイトル追加してサブボード部分のコードを追加したくらい。ほんの30分くらいのハックで起動してます。

で、起動してみてわかったのが起動時には日時が表示されていて、実機ではその直前に固まってるようにみえる。なので、とりあえずRTCとして使われてるM6242Bのクロックをエミュレーション上で止めてみたところ同じところで固まった。という事で、基板ではM6242Bのすぐ横にあった32.768kHzのクリスタル、少し変色してたので交換してみたところ、すんなり起動しました。


外したクリスタル。宇宙人じゃないよ、うじゃじゃ。

これで今のところ直せてないのはOBJ RAMが死んでるヴァンパイアハンターのみ。

2018年3月22日木曜日

うちのアーケード基板用コントローラの話

公私共に忙しくなってきて、ちょっと暫くはアップデートできそうにないので。この辺りで一度整理しておこうかと。ウェブで色々公開している人達は仕上げも凄い綺麗なんだけど、僕はそっち方面にはズボラなのでご容赦。ものすごーく雑です。

まず、コントローラの基本的な部分。


Xbox360向けのコントローラを安く入手して改造してあります。この辺りの詳しい解析結果なんかはQiitaの記事Xbox360のコントローラをばらして*Piに繋げるにまとめてあります。


で、裏面を見るとこの通り。電源刺すと単体でHDMI出力できて、そのままゲームが遊べたりする(笑)。X68000のエミュレータが動くので超連射68kとか結構快適。実体はRetrOrangePi / OrangePi ONEですが、追加で色々とドライバが突っ込んであります。この辺りはGitHubでopipadとして公開しているもの。GPIOに繋いだコントローラがそのままjoystickに見えたり、モードを切り替えるとキーボードエミュレーションしてくれたり。あと、ドライバ自体に連射サポート機能がついてます。Xboxボタン押しながら各ボタンを押すと連射ON/OFFみたいな感じで。連射が入ってるボタンはLEDでわかったりします。ドナーの機能をフル活用してる!またUSBでPCに繋げる事でUSBコントローラとしても認識されるようになってます。


でまぁ、我が家の場合、JAMMA用電源側にUSBコントローラ挿せるようにしちゃってたんで、そっちにUSBで挿せばそのまま使えはしたんですが。JVSに繋げる時に直接あった方が便利かなーってのと、電源側には1Pしか刺せなかったので。2P側として挟めると便利かなーとか思って。いつもボッチで遊んでるけど!でも2P側で入ったほうが簡単なシューティングってそこそこあるし。って事でJAMMAコネクタ用のブリッジが2種類ついてます。

ここはちょっと配線……ってわけにはいかなくて、Orange PiのGPIO側と共通で繋がっているためにちょっと面倒な事に。整流なりしときゃよかったんですが直結しちゃってるんで、Orange Piの電源が入ってないとGND側に1kΩくらいで吸い込まれる。なので、わりとで電気もったいないなーって思うくらいの値でpull-upしてあげる必要がありました。忘れないうちに……って書いてるのにもう忘れてる!たぶん100とか200Ωくらい。でもまぁ、このおかげで、ほとんどのケースはこのコントローラで用が足りちゃってます。


あと使ってるうちにどうしても欲しくなって付けちゃったもう1つの便利回路がコレ。連射装置+α。高橋くんと命名してGitHubに公開してあります。ATMEGA-88があれば作れるので数百円くらい。主に3つ機能があって、

  • ボタン1〜4の連射
  • 4ボタン・6ボタン配置の変更
  • 2ボタン時に連射ボタンを別割り当て
という。あまり融通は利かないんですが、よくあるユースケースはカバーしてる感じの機能になってます。まぁ、完全に自分の好みに合わせて作ってますね。

連射については速度切替がついていて毎秒10/15/20/30連射の切り替えが可能。

4ボタン・6ボタン配置の変更ってのは分かりにくいんですが……コントローラのボタン配置って

         (X)    (Y)
   (B)
        (L)    (R)
  (A)
みたいになってて。これを通常は
         (3)    (4)
   (2)
        (5)    (6)
  (1)
この配置で使ってる。これだとNEOGEO系の4ボタンで遊びやすいし、シューティングで2ボタン、3ボタンでもこっちの配置の方が手の形に馴染む。

で、6ボタンモードをONにすると
         (2)    (3)
   (1)
        (5)    (6)
  (4)
こっちの配置に切り替わる。CPS2で6ボタンのゲームやろうと思うとこっちの配置でないと辛い。Atomiswave系で使いやすいのはケースバイケースかなぁ……5ボタンはほとんどやり込んでなかったので特に好みはないし、BAXLYみたいな配置だと今の作りじゃ実現できない。そもそもその時期ゲーセン行ってないので、本物がどう配置されてたのか知らない。

で、これらの機能とは独立して2x2ボタンモードってのがあって。このモードをONにすると、ボタン3/4の入力がボタン1/2にも反映される。利用方法としては2ボタンで手連射が必要なシューティング対策。2x2ボタンモードONでボタン3の連射をONにすれば、ボタン3が連射付きボタン1として機能する。作戦名ラグナロクとかGダライアスVer.1向けにどうしても欲しくて……。

とまぁ、そんな感じ。


あとオマケ。麻雀用のコントローラ。配線面倒だった。麻雀コネクタからJAMMAへの変換ブリッジも兼ねてる。

だいたいコントローラ回りでやるべき事は尽きてきた感じで。あとは麻雀コネクタをJVSの変換ボードに繋げるようにするくらいかな。そうそう、JVS変換ボードのionaも、少しアップデートして特殊なコントローラを要求しないnaomiのゲームなら試した限りは通るようになってます。思った以上にデバイス名のSEGA〜をチェックしてるゲーム多いみたいだったけど。あと2Pがないと駄目とか。なので他社のJVS基板では弾かれる可能性は高いなー。まぁ、そこはArduinoになってるんで、カジュアルにデバイス名を修正して対処、と。

MV-1A 修理とマルチBIOS化

3,000円そこそこでジャンクとして入手したMV-1A基板。とりあえず基板の掃除と接触不良の確認とか、基本的なメンテをしたら起動するようになった。


最初はこんな感じで画面が少し崩れてたけど、最終的にはほぼほぼ完璧に動作するようになった。「ほぼほぼ」って言ってるのは、なぜかKOF'99だけで音が出ないため。他のカートリッジでは音が出てるので原因は良くわからないんだけど……このカートリッジ自体、接触悪めなので、あまり気にしないことにした。

で、この子はBIOS簡単に差し替えられるので、せっかくだから複数のBIOSが切り替えられるように魔改造してみた。前回の基板もあるのでASIA/EUROPE版と日本版のBIOSが手元にあるので……0x00000401だけ望みのリージョンに書き換えとくとかじゃなくて、普通に両方のBIOSを胸張って載せられる!まぁ、個人的にはBIOSメニューが日本語になっても嬉しくないけど。日本語フォント綺麗じゃないし。UniBIOSはまぁ解釈は人それぞれだろうけど、OKと思えばそれだって切り替え可能にする事は可能。

(マルチだから、はわわ)

こんな感じですね。本来のEPROMの4倍サイズのEPROMを載せてます。右上の2ピンが役割が違っていて、アドレスの上位2ビットになってます。なので、この2ピンはソケットから外してあって抵抗で強制的にpull-down。DIPスイッチ入れるとHIGHになるように空中配線してます。これで4種類のBIOSが切替可能。

普通の人は2倍にしといてオリジナルとUniBIOSを切替可能にしとけば十分かも。いや、UniBIOSだけで十分なのかもしれませんが。

2018年3月15日木曜日

【修理】System GX 基板【3枚目】

名作揃いのKonami System GX基板。サブボード形式になっているものの設置が面倒なためか、ほぼほぼマザーとセットで売買されてますね。そんなわけで自分もヤッホー、メモ玉の2セット持っていたのですが、起動できないというGXマザーがほとんど入札されないまま1,600円というお手軽価格で出品されていたので、ついつい修理ゲームのために入手してしまいました。

ジャンク基板も高値で取り引きされてる昨今のヤフオクアーケード基板事情を考えると、これはかなりラッキーです。表立って名前は出てこないものの、基板を中古販売しているお店の大半がヤフオクを仕入れ元、あるいはオンライン店舗として利用しているため、(お店で修理できそうな)ジャンク品も含めて相場が高止まりしてるのが現状です。

と、そんなわけで運良く安く手に入れたGXマザー。手元に届いて現状を確認してみるとJAMMAコネクタ付近のDIP8をソケット化改造した跡がみられました。


写真だと分かりにくいけど、裏面から見ると基板表面のコーティングが解けてるので半田ごてあてたのが良く分かる。

で、このICを調べてみたら3線式のEEPROMでした。この時点でGX触ったことある人ならピンと来ますよね。サブボード交換した時に明示的に初期化しないといけないEEPROMの実体がこのICのようです。となると起動しない原因はこのEEPROMにありそう。

ちなみにサブボード交換時にEEPROM初期化を忘れると

  • EEPROM Errorの表示
  • 画面が真っ暗
といった症状が発生します。普通は前者っぽいけど、一部のサブボードで後者のパタンがあるようです。EEPROM初期化はTEST押しながらPONですよ、マニュアル持ってない人のために念の為。

で、ソケットを見るとNational SemiconductorのNM93C46が載ってました。調べてみると93C46は各社から互換品が出てるんですが、微妙な型番違いで8-bits/16-bits選択のできるORGピンがあったりなかったりします。で、今回載ってたのはORG線のない16-bits固定のやつ。一方、自分のマザーに載ってたのはSTMicroのORG線ありのやつ。という事で高確率でこいつが原因。秋月で25円で売ってるATMELのAT93C46Dに交換してみます。この後ろについてる「D」が重要。


あとは順に確認なんですが、まずはサブボードなしで起動するのが良いですね。「警告:サブボード刺さってませんよ、確認して再起動してね、コナミより」的な英語のメッセージが画面全体を右から左にスクロールしていく画面が表示されればマザーは最低限生きてる。面倒なんで未確認だけど、もしかしたらこの時もEEPROMに正しくアクセスできるかくらいは確認してて、最低限のゲーム非依存の初期化をしてる可能性はありそう。でなければ出品主だって気づいたろうし。実は今回も交換後すぐにサブボードありで起動しようとしたら起動しなかったのでした。

その後はサブボード刺した状態でTEST押しながらPONで無事に起動を確認できました、めでたしめでたし。

サブボードとセットでEEPROMも交換すれば毎回データ初期化しなくても良いので、サブボードを真面目に交換して運用したい人にとってはこの改造は便利ですね。自分で高値で買ったボードを改造する気にはなかなかなれないので、最初から手が入っててお安いのは嬉しい買い物でした。問題はサブボードだけが安く売り出されてることがほとんどないという現実なのですが!!

本当は沙羅曼蛇2のサブボードが欲しいのよー。

2018年3月9日金曜日

Montage 7が修理から帰ってきた

先週の土曜日、スタジオで片付けをしている際、ソフトケースに入れて立てかけてあったMontage 7が……バタンorz

よりによって、上面から落下です。ノブの破損を心配したのですがノブは全て無事。しかし、鍵盤が2本折れてしまいました。これ、限界以上に鍵盤を押し込んだ時に折れるみたいですね。転倒時にケースに入ってたペダルがあたったのかもしれません。

ヤマハのサイトに修理料金の目安が掲載されており、シンセは鍵盤1つ交換で1〜1.5万とあります。対応地域では出張修理もできるという事で、この時点ではざっくり5万くらいあれば練習に穴をあけずに修理できるかなぁ、くらいの気持ちで現実を受け入れます。

で、週があけて修理センターに問い合わせ。送ってもらえれば到着後2〜3日で直せます、自分で持ち込み、ピックアップできるなら配送時間も短縮できます、との事だったので、出張はお願いせず、センター側で直してもらう事にしました。

翌日、見積もり連絡があり、だいたい1.8万との事。その翌日には修理完了したので配送しますって連絡があったかな? で、木曜に到着して明細が入ってました。

こんな感じで。目安では鍵盤1つにつき〜って書いてあったので、まぁ技術料はあるにしてもおおよそリニアに値段増えるのかな、と思ってたんですが、実は鍵盤はたったの280円(笑)。なので、もっと派手に壊れてもそこまで値段は変わらなかったみたいですね。

まぁ、お値打ち価格とは思いますが、部品だけ購入可能なら購入したいかもって価格差ですね。嘘でも鍵盤代3,000円 x2、技術料1万円くらいで言っといた方が良いんじゃなかろうか。まぁ、Montageは元の値段が高いからこのくらいの修理費は受け入れちゃうけど、10万くらいのシンセでこの明細見ると悲しくなりそう。

そうそう、JUNO-Gは2度目の液晶故障でそのまま放置してます。修理後の液晶基板も設計ミス残ったままのやつだったのねぇ……。

MV-1C BIOS交換に挑戦

中国から買ったらBIOSがASIA版だった……と以前お話したMV-1C、その気になったのでBIOS交換に挑戦。


後期の小型基板は、差し替え可能なDIPソケットではなく、SOP40ハンダ付け。写真の中央にあるTOSHIBAのROMがソレです。ハンダ付け得意でもないのに大丈夫なのか……まぁ、CP/Mega作った時にSOPのSRAM配線したしな……と自分に言い聞かせる。

んで、ヒートガンとか持ってないので、元のROMとか気にしないでザクザク足をカットしてしまえば楽ちん……だったのですが、欲を出して工具で足を一つ一つ弾きながらハンダを外していくと……。

じゃじゃーん。なんとランドが4つも剥がれてしまいました(涙。もうね、この時点で駿河屋でMVS基板の値段調べちゃいましたよ。「え、音声出力に不具合あって8,000円ちょい?これステレオ直出しすれば回避できるかな?」みたいな感じで。しかしまぁ、すぐ上に68000が鎮座しているので「こんな状況でも最悪CPUからパッチすりゃなんとかなるんじゃない?練習に良いんじゃないの?」という気分にもなって、もう少し頑張ってみる事に。

まずはランドが剥がれた端子それぞれについて、周辺の配線をカリカリと削り、UEWを無理やりハンダ付け。近くのスルーホールとUEWにテスタをあてて配線できている事を確認。ここまでは良かったんだけど、折り曲げたUEWの方向が気に入らなかったので、ククッと回そうとしたら、ベリベリベリ……っと。信じられないことに基板上の配線が剥がれてしまいました。これにはめちゃくちゃ焦った。7ピンの配線が上側のランドより上の方までめくれ上がってる(汗。上の写真は、仕方ないのでそれっぽい位置に絶縁テープで固定したところ。これで基板の寿命がぐっと縮む気がしたけど、動かないよりはマシ、な心で。リトルライオンハート。もはや、ただ雑なだけ。

でまぁ、一応テスターあててショートとかない事を確認したりはしてみたんだけど。まぁ、絶対動かないよなー、ですよねー、くらいの気持ちでおりました。で、電源オン。

わー、動いてるよ。日本語でタイトル出てるよ……本当かよ、これ。

そんなわけで無事にBIOS載せ替え成功。基板の寿命と引き換えに。いずれお値打ちなタイミングを見つけてもう1機確保せねば。

しかし、ホント眼鏡してると配線見えない。ハンダ付け確認してるとすぐに目が霞んでくる。老眼ですね、そうですねー、と。思いました。

2018年2月27日火曜日

楽曲作家探検

音楽を参加アーティストで辿れると面白いのに、そういうサービスって出てこない。っていうか、情報が残ってないんでしょうね。スタジオミュージシャン自身、自分が参加してる楽曲を把握しきれてなかったりするようですし。

なので、たまに今まで好きだった曲を作家で辿ってみたりすると楽しかったり。でもまぁ、結局はスタジオミュージシャンまでは滅多に追えないので作曲、作詞、編曲で追うくらいしかできないんですけど。で、まぁ、そんなのを記録に残しておけば、誰か反応してくれたり、未来の自分が喜んだりするかな、って事で雑談メモ的なのも残してみる事に。

という事で、今回は某田村ゆかりさんがライブでカバーしてた高橋由美子さんのGood Loveが起点。Tenderly TOUR '94のLDで歌ってたのでTenderlyのアルバム曲かと思ってたんだけど普通にドラマ主題歌のシングルだった。ドラマ見ない人だったからなー。というか今気づいたけど、このツアー、アルバムの曲あんまり歌ってない(笑)

で、高橋由美子さんで好きな曲を上から順にいくつか調査。

  • 3年過ぎた頃には
    • 作詞が白峰美津子さん。白峰さんと言えば個人的ベストはribbonのVirgin Snow。そしてVirgin Snowの作曲は松浦有希さんなんですよね。この時、松浦さん21歳、若い。白峰さんは名曲多いわりに個人情報あまり出てこなくて正体不明。80年代から作品出てるのでもう1世代前からいる人かとは思うんだけど。田村さん関係だとブラックダリアとか。
  • コートダジュールで逢いましょう
    • ふぅ、作詞は秋元康さん。この人はいつの時代にも物凄い頻度で出現する魔王。収録アルバムのParadiseは他にも後藤次利さん、及川眠子さん、筒美京平さんとか強すぎる布陣。
  • 笑顔の魔法
    • 川井憲次さんっぽい音使ってるけど、根岸貴幸さんだった。根岸さん今までノーマーク。
  • Good Love
    • 作詞の柚木美祐さん、笑顔に会いたいの人ですよ。編曲の岩本正樹さんはBaby's Breath、9月の扉、Bon Voyage!とかキングレコード系に繋がる。なるほど、岩本さんの曲は結構個人的お気に入りに入ってるな。
  • 友達でいいから
    • TAMTAM、初仕事で37.5万枚売ったのに、ほぼほぼ一発屋になってしまった。南くんの恋人抜きにしても良い曲だったと思うけど…。
で、今までノーマークだった根岸貴幸さん掘り下げ
  • Fight!(編曲)- 他の高橋由美子さんの曲は定額制にあるんだけど、これだけ無い!
  • コンディション・グリーン(編曲)
  • もっと!モット!ときめき(編曲)
  • 教えてMr.Sky(編曲)
なるほど。この辺は一度了解すればわかる。「全部同じじゃないですか!」
  • 初恋はかなわない(編曲)
岡崎律子さんとのコラボあったー。普段より昭和感たっぷり。

しかし、アニメ関係はもっぱら定額制サービスに無くて、あってもアニュータだけとか。すごく面倒。

あと、当時から曲は若手に書かせても作詞は実績のある人、みたいな風潮あったんですかね。西脇辰弥さんがribbonの編曲をメインで担当してた頃も20代半ばだったと思うし。わりと今活躍してる人達は20代から大きな仕事してる。もちろん消えていった人も多い。作曲家・編曲家が入れ替わり激しいのに比べ、作詞家は少数で長命な印象だなぁ。

2018年2月23日金曜日

俺のIOボードでスーチーパイが動かないわけがない。

しばらく前に作ったJVS IOボードの実験も兼ねてスーチーパイIIIを入手してみた。JVS 3版に麻雀基板向けの入力の扱いが定義されてたんで、それをサポートするだけで良いのかと思ってたんだけど、予想に反して独自プロトコルだったので少し調べて対応してみた。

ちなみにNAOMIはJVS最初期のボードなので麻雀まわりが決まる前だったんでしょうね。独自プロトコルをとっている以上、I/Oボードは選ばざるを得ないという……。

ちなみに対応してないIOボードの時はこんなメッセージが出てゲームは起動しません。


まぁ、自作なんで最悪どうにでもなるかな、と。まずは情報収集。

BONZE ADVENTUREさんによると「NAOMIの麻雀はカプコンコンバータでは動かずセガコンバータなら動く」と。セガコンバータのEXT I/Oの結線方法なんかも書いてあり、中で何をやってるのか朧気ながら想像つきます。出力ドライバと組合させてJAMMAに似たスキャンを使った入力の多重化をやってるんですね。

さらにGAME屋萬年堂さんが動作するIOボードのJVS TESTのスクリーンショットを公開してくれていました。これを元に同じcapabilityを持つボードをエミュレートすれば最低限動作するだろう、と。

で、無事に動作して、少しずつ情報を落として動作するだけの最低要件をまとめたら、必要なのは二点でした。JVS的に必須項目になってる機能は条件から落としてます。


  • I/O IDで返す名前は「SEGA ENTERPRISES,LTD.」から開始していなければならない(User-Agent問題……)
  • 汎用ドライバ出力を8スロット備えている
前者はセガを名乗るのか……と気がひけますが、後ろに「compat」とか付ければ嘘じゃないのでいいでしょう(User-Agent問題……)。出力ドライバも実際に出力できる事は要求されてないので大丈夫。スキャンラインの切り替えに使ってるだけなので「持ってるよ」と機能チェックで返してあげればOK。


JVS TESTで見える情報はこんな感じですね。DIPスイッチで切り替えた時のみ、このモードに切り替わるようにしました。幸いJVSは3版を名乗っても大丈夫そう。


スーチーパイさんも怒りません。


無事に起動しました、よしよし。

実際のプロトコルについてはゲーム側のテストモード使って入力に探りを入れて解決。ざっくり以下のようなプロトコルでした。
  • 8-bitsの出力ドライバに対し、bit 4からbit 7に対してone-hotを出力
  • その時に出力されているbitに応じて、SW入力のうち各プレイヤー向けの情報の第1バイト(元々START/SERVICE/UP/DOWN/LEFT/RIGHT/B1/B2がアサインされてたバイト)の意味が変わる
スキャンは負論理じゃなくて正論理なんですね。もしかしたらセガコンバータはJAMMA側のスイッチがpull-upじゃなくてpull-downになってるのかも。でなければドライバの出力をどっかで反転させないとだし。JVS側が正論理だからこの作りもわからないこともないけど、そっちはパケットだし、回路側は負論理のままの方がすっきりするんだけど……。

で、その後テストモードで調べた入力マトリクスは以下の通り。

|OUT\Bit||  B7 |  B6 |  B5 |  B4 |  B3 |  B2 |  B1 |  B0 |
+-------++-----+-----+-----+-----+-----+-----+-----+-----+
|  0x40 ||  A  |  -  |  E  |  I  |  M  | KAN |  -  |  -  |
|  0x20 ||  B  |  -  |  F  |  J  |  N  |REACH|START|  -  |
|  0x10 ||  C  |  -  |  G  |  K  | CHI | RON |  -  |  -  |
|  0x80 ||  D  |  -  |  H  |  L  | PON |  -  |  -  |  -  |

伝統的な麻雀コンパネと同じ組み合わせになってますね。まぁ、無理して変える必要もなかったんでしょう。ひとまず十字とボタンの組み合わせで入力とるようにしたバージョンをコミット。そのうち麻雀エッジに直接対応させようかと。

はて、通常のJVSの麻雀配列は何でテストしたら良いのやら……。

2018年2月17日土曜日

MVS入手の話とステレオ化

MVS(いわゆるNeoGeoの業務用基板)を入手するのに色々と調べていたら、国内だと安いタイプでも1万円以上が相場らしいのだけど、中国から輸入すれば6〜7千円くらいで済むことがわかった。出回ってるタイプはMV-1BとMV-1Cで、どちらも後期型と呼ばれる音声ステレオ出力には改造が必要なタイプ。値段にそこまで差はなく、MV-1Cの方が改造の手間が少ないのでMV-1Cを購入する事に。

そして誤算。写真を見る限り基板に日本語で注意書きとか入ってたので、てっきり日本から流出した基板かと思ってたんだけど、BIOSはしっかりアジア版でした。特に差し替えた形跡もないので純粋にアジア向けに作られた基板ぽい。しかも後期型はBIOSだけ交換しようにもDIPのソケットじゃなくSOPで要ハンダ。まぁ、これは後で気が向いた時に考えよう。

ステレオ化は色々なサイトで紹介されてる通り。


スピーカーのボリューム+用途不明8pin端子のすぐ近くにある9480Fって書いてある8pinチップが音声が出てくるD/Aコンバータになります。データシート見る限りピン割り当ては

1. 右チャンネル出力
2. REF
3. GND
4. 左チャンネル出力
5. LRCK
6. SDAT
7. BCLK
8. VCC

となってます。5〜7はI2Sの信号ですね。ここから出力を取るには、1、3、4の信号を貰えば良い事になります。上の写真では左側の奥から赤、1つ開けて黒、白とケーブルを繋いでいます。一般的なカラーに従い、赤が右、白が左、黒はGNDとしました。

ちなみに奥に寝てるレギュレータに大きくGNDと書いてあるのでそこからGNDを取りたくもなるのですが……ハンダのノリがめちゃくちゃ悪い上に、テスターで調べた限りGND通ってません。なので、ちょっと狭いけどD/AからGNDも取っちゃいましょう。D/Aが見てるGNDなので、引き回し的には理想的なGNDがとれるはず。

ケーブルはそのままRCAとかミニジャックでも良かったのですが、部品代をケチってSYSTEM-GXと同じ端子を付けてます。


もともとGX用に作ったケーブルで手持ち最後のステレオRCAのメスを使ってしまったんですよね……。

まぁ、そんなわけで音声だけでも無事にステレオ化できたので良しとします。

しかしあれだな、MVS使えばFM音源からの出力をI2Sで簡単にデジタルで捕捉できるのね。

2018年2月12日月曜日

今度は今時の新JAMMA(JVS)環境とか

なんか新JAMMAも作れそうな気がしたので、I/Oボードが作りたいがゆえにNAOMIを入手しました(なんか違う)。


元々JAMMAのコンパネ持ってた人は、旧JAMMAに変換するブリッジを通してたりしたんでしょうが、現状で考えると画面や音声はJAMMAに変換するまでもなく直接扱った方が簡単です。だって画面はVGAだし、音声はステレオのラインなんだもの。VGAも一部15kHzのタイトルがあるものの、基本31kHzで出てくれるので特に変換する事もなく現行のモニタで対応できる事が多いかと思います。(ちなみにNAOMIはDIPSWの一番左のやつで31kHz/15kHzの切り替えっぽいです。前のオーナーが15kHzで使ってたみたいなんですが、最初映らなくて焦りました。)電源は右下に見える四角が並んだ端子なので、ちょっと工作が必要。ヤフオクではAT電源改造したJVS用電源が5,000円くらいで売ってました。電源容量も十分に大きいやつだったし、下手に材料揃えて作るよりは安いかも。電源が一番お金かかるのは新JAMMAでも同じですね。

少し難しいのがI/Oボードと呼ばれる部分。見た目はUSBなんだけど中身は独自規格という代物です。主にコントローラを繋げる部分ですが、ボタンの数とかかなり融通が効くし、電光掲示板的な物に文字を表示させたりとか、外部機器との通信一般が行えるようになってます。まぁ、ざっくりHID/USBで出来ることをもっと簡単に実装したもの、だと思えば良いです。タイミングが悪かったんでしょうね、新JAMMAはUSB1.0と1.1の間に制定されたようなので。USBがまだ海の物とも山の物ともつかない頃の話です。USBがここまで成功するとわかってればそのままUSB使ったんでしょうけど……いや、でもなんでコネクタだけ採用したんだろう……闇だ。

で、このI/Oボード、旧JAMMAより難しいってだけで、最近の技術と比べれば簡単な部類。それこそ本物のUSBよりずっとずっと簡単です。そんなわけでArduino Nanoを使って試しに自作してみたのがこちら。


Arduinoの足をポチポチっと短絡させれば入力が入ります(笑)。デバイス名とか適当。写真撮った時はver0.1だったけど、最終的に0.9にしました。名前はIONA。なんか当時のセガのアーケード基板っぽい感じに命名。

で、このままじゃ遊べないので、結局自分も手軽にコントローラを繋げる入力インタフェースとしてJAMMAの口を出すことに。


Arduino Nanoも基板に直接ハンダ付けしてしまうのが俺流!まぁ、中国製の互換機が凄く安いですしね。5個入りで2,000円以下。日本じゃ部品代にもなりません。とりあえずJAMMA側からの電源はON/OFFできるようにしてみました。あと、将来の拡張用にDIPSW付き。たぶん麻雀配線と内部的に切り替えたり、連射のON/OFFしたり。いずれバージョナップで載せそうなものは予め載せてみました。ピンの節約って事でアナログ入力にしか使えないA6/A7にアナログ値で入力。ちなみに同等の変換基板買うとお店だと5,000円より高いかな、くらい。今回の部品は手持ちの在庫からだけど、だいたい500円くらい。

前に作ったJAMMA環境と繋げることで、真のUSBゲームパッドを新JAMMAに繋げることができます。とりあえずPS4とか360のコントローラで遊べてます。外見だけ見るとなんでUSBを大げさな装置通してUSBに繋げてるんだよって感じかもしれませんが……。


そんなわけで新JAMMA向けのIOボード、GitHubの方にコードと回路の説明をアップロードしてみました。JAMMAしか環境ないけどexA-Arcadia買うんだ……って人は自作に挑戦してみてもらえると。電源必要なのが玉に瑕ですが、その気になればメガドラやサターンのコントローラを分解して中身にArduino Nanoを内蔵、とかできそうです。

2018年1月28日日曜日

アーケード環境その後

その後、77円で子育てクイズマイエンジェル2を落札しましてですね。いわゆる悪循環ってやつですか。で、CPS-2はJAMMAから音声とらなくてもラインからステレオで出てるんで音声は配線してなかったんですが、他の基板となると音声もJAMMAから取れるようにしておかないと……という事で、最初何も考えずにライン端子を追加して配線したんですが、ミキサーに入れるとノイズしかでないし画面にノイズが乗る。まぁ、配線的によろしくない事をして電源不安定になってるんだろうな……みたいな緩い感じで調べはじめたら……。

JAMMAの音声はスピーカーレベルなんですね。確かにダイナミックスピーカー直結でちゃんと鳴ってる。って事でまじめにラインレベルに落とすためにインピーダンス変換回路作るの面倒だなーって思ってたら……Amazonにお安いの売ってる。安いやつだと300円以下で、こりゃ自分で作る部品代より安いんじゃ……ってレベル。でもまぁ、今回は到着を待つの面倒だし、とりあえず動けばいいやって事でパスコン用に大量に持ってた0.1uFのコンデンサを+と-両方に挟むだけで良しとしてしまいました。

……と、これだけだと文字だけで味気ないので、少し秘密兵器の紹介。


じゃーん。AndroidのChrome上からDigisparkを経由してCPS-2のセキュリティチップを以下略〜。ただ、今回入手したジャンク基板は残念ながら暗号テーブル復元しただけでは起動してくれませんでした。たぶん。無念。

それはそうと、格ゲーの基板も手に入れてしまったりして、そろそろキックハーネスも作らないと……な感じです。

最近の魔法大作戦(2)とその後

そうだ、近況を記録するんだった……という事で、はやくもすっかり忘れてた。

その後16日の深夜、ノーミスでツムジ丸。遂にいけるか?!と思ったんだけど、緊張のあまりに手が震えまくって凡ミス連発、Stage 6.5で死ぬという残念な結果に……ツムジ丸からはボム連打しててもクリアできるくらいの余裕進行だったのにな。
すぐ近くの80位にディレクターがおる(笑)。Xbox One版ガレッガでも近くに氏がいるのを確認しております。

で、翌日17日の夜、改めてもう1プレイしたら再びノーミスでツムジ丸。今度は失敗しないように安全プレイを……と思ってたのに、やっぱりキョドりまくり。王様はタイムアウト狙いでようやく1コイン達成できたのでした。チッタだと王様はホーミングで最低でもレベル2はないと発狂までに倒せないのだよな。

という事で、ランキングは57位が自己ベストとなりました。
STG格付け的にも、今回のランク18はクリアしたタイトルの中では最高ランクになりました。

しかし、なんでちまたではチッタは弱い機体扱いなんだろう。確かに他のゲームにゲスト出演してる時は弱いこと多いんだけど、本編では自分的には一番使いやすいんだけどな。だって、ホーミングとったらゴールデンバットのボムが打ち放題だぜー。

で、魔法大作戦を1周したらガレッガに戻るー、とか思ってたんだけど、なんとなく「まもるクンは呪われてしまった!」に寄り道。とりあえず3ステージ〜ラスボス戦のバッドルートだけど1コイン。
以前やった時はクソ難しいなー、とか思ってたけど「これは稼ぎ要素」「この操作で弾消し」とか、シューティングの文脈で理解できるようになったら、クリア優先的な割り切りプレイができてどうにかこうにか……って感じ。ちなみにPS3版アーケードでプレイ。360版も持ってるけど、たまにはPS3も動かさないとな、って。

2018年1月13日土曜日

いまさらアーケード基板の環境をぷち自作

なんか基板に配線するのが楽しくなっちゃって、ついCPS-2を今更入手してしまいました。電池切れ問題とかゲーム本体以外にも楽しめそうな所が多かったので。とりあえず現状ではグレート魔法大作戦のみが手元に。で、遊ぶ環境を作ってみたので適当にまとめてみます。有り物+αなんだけど1万円程度で作れました。まぁ、ほぼ電源代。

必要になる物

  • 電源
  • RGB+CSYNC(いわゆるCGA)を画面に映す手段
  • ゲームコントローラ
ですね。コントローラ部分だけ自作して、任意のUSBコントローラを繋げるようにしてみました。JAMMAのコネクタなんかはAliexpressで10枚1000円みたいなノリで買えます。Amazonでハーネスとして売ってるやつもあるので配線で楽したい人はそういうの買った方がそんなに高くもないし楽かも。

2018年にもなってこういう記事を書いてる人はほとんどいないと思うので、このタイミングで作ろうと思ったら、どこで何が入手できてどんな感じになるのか、まぁ参考になるかな、と。


わりとコンパクト。

電源

コスパの良い定番は三和電子のSWN-7Fでしょうか。
  • +5V 7A
  • -5V 1A
  • +12V 1A
となっており、出力としてはギリギリの線ですね。基板によっては足らない事もありそうです。JAMMA的にはこの3つの電圧が必要ですが、CPS-2だけ考えるなら+5Vと+12Vだけで動きます(少なくともマニュアルでは-5Vの端子にはN.C.と書かれている)。

実は-5Vが不要だったらもう少し安くあがる選択肢もあって、例えばMEAN WELL RD-65Aなんかは
  • +5V 8A
  • +12V 4A
と、もう少しだけ余裕のある定格になっています。しかも4,000円くらいで買える。



ただ、電源は怖いので今回は実績のある三和を選びました。いずれ-5Vが必要になる日が来るかもしれないし。購入に際しては、お店によって値段が2割くらいは違うんですが、今回は安定の千石電商にて。オンラインにもありますが、店頭なら1号店の1階、スティックやボタンなどアーケード関連部品が置いてあるエリアにひっそりと白い箱に入って置かれていました。6,500円。ただ、後で気づいたんですがこのSWN-7Fも実はMEAN WELL社製っぽいですね。裏面にきっちりMWのロゴが入ってました。なので、どちらでも一緒だったかな。

RGB+CSYNC

とりあえずお手軽に実現できる方針は2つ。1つはアップスキャンしてVGAで映す方法、もう1つは15kHzのままコンポジットかS端子に変換して、これらの入力を持つモニタに頼る方法。それ以外にも昔ながらの15kHzのVGAが映るモニタを入手してCSYNCからVSYNCを分離して突っ込むって方法もありますが今回は触れません。最近は小型で1万円以下の液晶が色々と手に入り、15kHz対応している物も多く存在するようなので、今でも有効な選択肢かもしれませんが……やはり大きいモニタで遊びたいですしね。

アップスキャンしてVGA

SODIALから出てる高清解霜III代ってボードが安くてお手軽。普通はこの手の製品は5桁の価格帯なんですが、こいつはなんと2,000円ちょっと。日本でも扱ってるお店はボチボチあるようですが、もう少し高めの値段のようです。昔のPCのアップスキャンにも使えそう。入力はVGAだけじゃなくCGAも食ってくれるので、VSYNC信号を分離する事無く、JAMMAから配線だけで繋ぎ込めます。使ってみた感じ、遅延も少なく画面も綺麗だったのでお勧め。とても2,000円とは思えない。



コンポジットかS端子に変換

昔は秋月に行けばエンコーダーのチップが手軽に入手できたんですが、今はわりと手段が限られてきてるようです。チップさえ入手できればそこそこ簡単に電子工作できるのですが、今回はなんとaitendoさんの特売品を発見。たったの999円でCGAからS端子にエンコードできます。これを利用しない手はありません。8-15V電源でマニュアルによれば最大消費電力1.5Wですので、12Vの電源を流用しても最大0.125A程度と安心です。コンポジットが使えないための特売のようです。確かにコンポジットで繋げるとそれなりに画面は出るものの水平方向に激しく乱れます。

VGAより画質は劣りますが、S端子なら気になるほどの劣化ではありませんし、そのままブラウン管モニタに突っ込めば遅延が皆無というメリットも。液晶モニタを使う場合にはモニタ内で変換が発生しているはずですが、ディスプレイドライバの作りによっては外でVGAにアップスキャンするより低遅延の可能性も。ただ、手元のディスプレイ2台で試した限りは遅延は同程度か、下手をすると大きいくらいでした。あと片方のディスプレイでは垂直方向に揺れてました。ディスプレイ側のインタレース処理がおかしいのかも。

現時点で在庫数156の売り切り処分品のようなので、RGB 15kHzを出力する何かを持ってる人なら今のうちに確保しておいて損はないかもしれません。ちなみに表示中の画面を近くから写真で撮ったものがこれ。まぁ、多少の滲みはやむを得ないですね。



ゲームコントローラ

遅延が気になる人には受け入れがたい選択かもしれませんが、まぁ追加1フレくらいいいかなって人にお勧めかもしれないのがUSBから変換する方法。探せばこれも既存品ありそうですが、細かいカスタマイズできると嬉しいのと、SBCが有り余ってることから自作する事にしました。

使うことにしたSBCはOrange Pi 2G-IOT。選んだ理由は512MBと少ないながらもNAND flashを内蔵していてそこから起動できる事、USB OTGから電源が供給できるって程度に消費電力が少ない事、USB入力が可能な事、安いこと、などが上げられます。購入はAliexpressにて、送料合わせて1,475円です。

NAND flash内蔵は地味にありがたく、SD CardからLinuxを起動しようとするとだいたい30秒から1分くらいはかかってしまうのですが、NAND flashからの起動は8秒そこそこ。systemd-analyzeを使って最適化を進めると、だいたい電源投入から5秒でコントローラの変換ロジックを起動するところまで漕ぎ着けます。これなら基板の起動を待っている間にはreadyになります。

また消費電力が小さいので基板用の5V電源をそのまま流用できます。電源ピンは出ていないのですが、回路図を見て試した限り、ピンヘッダの5Vから電源供給できました。

あとは自分で作ったブリッジが中で動作していて、自分の持ってるUSBコントローラが刺さると適切な変換マップを通してGPIO越しに入力信号を出力。この出力をJAMMAに繋ぎこんでます。一応ソースはGitHubに置いてあります。C言語が読める人なら自分向けに書き換えて使うことも難しくないかと。Orange Pi向けの3種類のツールが含まれてて

  • GPIOに繋いだコントローラをジョイスティックとして/dev/inputに見せる
  • 同上をUSB OTGを使いUSBのジョイスティックとしてPCなどに見せる
  • USBに繋がったコントローラの入力をGPIOに出力する
といった事ができます。自分はだいたいこの辺りのコードを使ってXbox360用のコントローラを使いまわしてる感じです。

まとめ

そんなわけで、安く仕上げようとすると
  • 電源 4,000円
  • CGAからS端子に変換 1,000円
  • コントローラ 1,500円
って感じでしょうか。コントローラは上記の変換基板を作っても、安い360用のコントローラを手に入れて改造して直接繋いでも、だいたい似たような値段ですね。