ファイティング武術2ndの修理

 コナミが販売していたファイティング武術2ndという基板にもNVRAM(TimeKeeper RAM, M48T58Y)が使われており、これも電池が切れると起動しなくなってしまいます。
 また、2GBのHDDが使用されており、これもまた時間が経つと故障してしまうことが多いようです。


 これらを解決するためにNVRAMをFRAMへの置き換え、HDDをCFへの置き換えを行ってみたところ、問題無く動作するようになりました。
 ただし、HDDのイメージ化を最近になって行ったのですが、4台入手して1台が最後の方で読めない、3台が全く読み出せない・読み出すと結果が異なる・一部が読み出せないという症状だったため、完全に動作しているHDDのイメージは取得出来ていません。
 最後の方が読み出せない1台が、読み出せていない箇所がゲーム中では使用していないようなので、このHDDを使用することにより動作していますが、すべての領域が読み出せるHDDがあればと考えて探しています。ファイティング武術2ndの基板をお持ちの方で読み出せた方は連絡をいただけるとうれしく思います。

FRAMへの置き換えについて

 FRAMへ書き込む内容ですが、以前書いたスリルドライブと似たような内容で起動するようになります。

 0xe,fの値についても以前書いたスリルドライブと同じ計算式で求めることが出来ますので、値を変えて計算をしてみてください。


 今回使用したFRAMと変換基板ですが、FRAMは以前と同じ物を使用し、変換基板は秋月電子通商で購入したものを使用しました。

品名 型番 詳細など
FRAM FM16W08 Cypress Semiconductor has acquired Ramtron International Corporation
連結ソケット(両端オスピン)28pin 2227P-28G-06 連結ソケット(両端オスピン)28P: パーツ一般 秋月電子通商-電子部品・ネット通販
SOP28pin(1.27mm)DIP変換基板 AE-SOP28-DIP-A SOP28ピン(1.27mm)DIP変換基板 金フラッシュ: パーツ一般 秋月電子通商-電子部品・ネット通販


変換基板にFRAMを半田付けし、連結ソケットを取り付けるとこんな感じになります。

HDDのCF化について

 HDDのイメージ化ですが、maximum forceのHDDをCFに入れ替える際に使用した、mameで使われているchdmanというプログラムを使用しました。linuxのddでも可能だと思われます。
 今回は以下のCF-IDE変換基板とCFカードを使用しました。電源をFDDの電源に変換する必要があるため、電源変換用のケーブルも使用しています。

変換名人 CFカード → 3.5

変換名人 CFカード → 3.5"IDE変換アダプタ 40ピン(オス) CFIDE-401LA

Transcend 4GB CF CARD (133X、 TYPE I ) TS4GCF133

Transcend 4GB CF CARD (133X、 TYPE I ) TS4GCF133

アイネックス コネクタ変換ケーブル大4P-小4 WA-076A

アイネックス コネクタ変換ケーブル大4P-小4 WA-076A

 元のHDDの容量は2GBですが、2GBのCFカードではすべて書き込めないため4GBを使用します。


 まずはHDDのイメージをchdmanを使用して取得します。
 HDDをIDE-USB変換などを使用してパソコンに接続し、フォーマットしますか、などと聞かれますのですべてキャンセルボタンを押して、コントロールパネルにあるディスクの管理でディスク何番で認識しているかを確認します。今回はディスク5として認識しているとしてコマンドラインのオプションは指定しています。


 まずはコマンドプロンプトを立ち上げます。Windows7などの場合は右クリックして管理者権限で実行を選ばないとHDDが見えませんので注意が必要です。
 コマンドプロンプトを起動してchdmanがあるディレクトリまでcdコマンドを使って移動してください。
 chdmanのバージョンでオプションが異なります。
 1.47ぐらいまでのchdmanの場合は

D:\tmp\oldchdman> chdman -createhd \\.\PHYSICALDRIVE5 fightingb.chd 

で読み出しが可能です。
 1.47からは

D:\tmp\chdman> chdman createhd -o fightingb.chd -i \\.\PHYSICALDRIVE5 -chs 4092,16,63 -c none

とする必要があります。オプション-chsでHDDのCHS数を指定する必要があります。これはHDDを見るとcylinder, header, sector数が記載されていますので、それを,で連結して指定します。また、なぜか圧縮についての設定を行わないと取り込みが出来ませんでしたので-cを指定しています。
 オプションについてはchdman -helpや、chdmanと引数なしで実行すると表示されますので、こちらを参考にしてください。


 次にIDE-USB変換にCF-IDE変換を取り付けた物に交換してPCにて認識させて、chdmanで書き戻します。
 1.47以前のchdmanは

D:\tmp\oldchdman> chdman -extract fightingb.chd \\.\PHYSICALDRIVE5

で書き戻すことが出来ます。
 1.47からは

D:\tmp\oldchdman> chdman extracthd -i fightingb.chd -o \\.\PHYSICALDRIVE5 -f

で書き戻すことが出来ます。
 chdmanの新しいバージョンでは引数の位置ではなく、-i, -oで入出力を指定するようになっているため事故が少ないかと思われます。
 また古いバージョンではHDDが読み取れなくてタイムアウトした場合、そこで読み出しを中断しますが、新しいバージョンではある決められた値で1セクタ分を埋めて次を読み出すようになっているようです。


 上記手直しやHDDの入れ替えを行うことにより、基板が壊れていなければ起動するようになるはずです。

OPデモなど

 現時点で動かせる基板でOPデモを取り込んでみました。

 このOPデモがすごく印象に残っていたので、遊ぶことが出来るようになって良かったなと思ってます。

スリルドライブ基板のNVRAMについて

 スリルドライブもNVRAM(TimeKeeper RAM, M48T58Y)が使われていて、これの電池が切れてRAMに書かれている内容が消えると起動しなくなってしまいます。


 スリルドライブのNVRAMもバトルトライストと同じようにFRAMに交換して、一部のみ書き込んで起動してみたところ、最初に内容をチェックして初期化をするかどうか聞かれて、その後問題無く起動するようになりました。


 書き込んだ内容は前と変わらないような内容で

0xE,Fに0xA7,0xABが無いと駄目です。バージョンが違うと立ち上がらない可能性があります。
 上記内容を書き込んだNVRAMで起動すると

このような画面が表示されますので、ここでテストボタンを押すとNVRAMの内容を初期化して立ち上がり、それ以降は何もしなくても立ち上がるようになります。


 立ち上がらなくなったスリルドライブを見つけたらNVRAMをFRAMに置き換えて立ち上げてみてください。


 FRAMにすることによりRTCが無いため、bookkeepingの内容などが意図した動作をしないようになります。それ以外に問題が起こる可能性がありますが、確認出来ていません。


 0xE,0xFバイト目の0xA7,0xABですが、以下のruby scriptにて計算すると得ることが出来ます。0x00~0x0dまでのchecksumを求めています。

# checksum.rb
data = [0x47, 0x43, 0x36, 0x37, 0x36, 0x00, 0x00, 0x00, 0x19, 0x99, 0x4a, 0x41, 0x41, 0x00]
sum = 0
0.step(data.length-1, 2) {|i|  
  sum += data[i]<<8 | data[i+1]
}
sum ^= 0xffff
sum &= 0xffff
printf("%x\n",sum)

実行すると

% ruby checksum.rb
a7ab

0xa7abが求まりますので、そちらを0xE, 0xFに記載してください。

ギャラクティックストームの隠しコマンド入力と連射用の回路

 ギャラクティックストームというゲームの隠しコマンドと連射を行う回路という、需要全く無さそうな回路を作ってみて、無事に動いたので結果をまとめておきます。


 ギャラクティックストームというゲームがあるのですが、これはコインを入れると表示されるタイトル画面で以下のコマンドを入れると様々な効果があります。
2020年6月23日追記
 下記動画で今まで記載していた以外のコマンドが記載されていましたので、SHOT1を使うコマンドを追記しました。また、コマンド入力用の基板を作成していますので、必要な場合は問い合わせいただければ対応します。

  • SHOT1(右トリガー)*55 = 1面で終了
  • SHOT1(右トリガー)*66 = 3面突入時に6000万点加算
  • SHOT3(右ウェポン)*33 = 高速連射モード
  • SHOT2(左トリガー)*77 = ダメージ半減
  • SHOT4(左ウェポン)*44 = 機体サイズ縮小

 これを毎回入れるのは非常にかったるいので、PICを使って上記コマンドを入力出来るような回路と、トリガーに連射を追加する回路を作ってみました。

 仕様としては以下のような仕様となっています。

  • START+ボタンを押すと隠しコマンドを入力した後にSTARTが押される。
  • START+ボタンを押す前・押した後はゲームが始まるまでボタン類に触れないこと。
  • STARTを押せば隠しコマンド入力無しでスタート可能。
  • SHOT2を押しっぱなしで連射可能。
  • START+ボタンを外部に取り付ける場合はSTART_PLUSタグ部分にボタンを追加する。
  • SHOT2, SHOT3, SHOT4, STARTはそれぞれのボタンに配線する。
  • SHOT2_PCB, SHOT3_PCB, SHOT4_PCB, START_PCBはそれぞれ基板の対応した箇所に半田付けを行う。


 回路図は以下のような回路となります。

 デバッグがやりやすいように電源や入出力にコネクタを取り付けていますが、必要無ければコネクタ無しでそのまま半田付けしてしまっても問題ありません。
 実装例として今回作った物の表側は

表だけ見ると全然余裕のように見えますが

裏側を見ると「うわぁ」ですね。部品を何も考えず適当に置いたのが敗因です。抵抗は一つずつ取り付けるのは面倒だったため、集合抵抗を使っています。同じような回路になるように配線やピンアサインなどは好きにいじった方がいいでしょう。


 PICの中身ですが、今回はC言語で作成しています。環境としてはMPLAB X IDE v1.50にXC8を使ってコンパイルしています。デバイスとしてPIC12F683を選び、あとはプログラマで内部クロックを使う・マスタクリア(MCLR,4番ピン)を入力ピンとして使う設定にして書き込めば大丈夫なはずです。
 ソースコード

 コードの通り、START_PLUSが押されていれば順にコマンドを送ってスタートを押して、SHOT2が押されていると連射を行うようなソースになっています。ボタンを押す時間などは適当に大丈夫そうな値にしてありますので、これを変えてみたり、同時に押しても大丈夫そうなので同時に押すように改造すると待ち時間が減るかと思います。STARTを押す時間が短いとゲームが始まらないことがありましたので、長めにしてあります。


 MPLAB X IDEとXC8がインストールされている環境でmakeでhexファイルが作成出来るmakefileも置いておきます。

 ソースコードをgs_command.cというファイル名で保存し、makefileとして上記内容をファイルとして作成してcygwinやMPLAB X IDEにインストールされているmakeを動かせる環境を作って実行するとHEXファイルなどが生成されます。
 xc8の引数はMPLAB X IDEで使用されている引数をほとんどそのまま使っています。またコピペした後にtabがスペースになっていまっていますので、tabに変換してください。


 コンパイルを行った後のHEXファイルはこちらに置いてありますので、コンパイルするのが面倒な方はどうぞ。


 今回の回路はボタン数個にしか対応していませんが、シフトレジスタを使ったりIOが多いPICにしたりすることにより、ボタンとレバーに対応させればコマンドコントローラを作ることが出来るかと思いますので、いろいろと試してみるのも良いかもしれません。

githubソースコードなどをpushしました

 githubソースコードなどをpushしました。http://github.com/ghhin/galacticstorm-commandのurlから参照出来ます。

バトルトライストのNVRAMの内容

 以前の日記でバトルトライストで使われているNVRAMの内容として1種類のみを書いていましたが、別のバトルトライスト基板を修理したところ、別の種類のCD-ROMメディアがあり、そのメディアの場合は以前の内容では起動しませんでした。
 CD-ROMメディアの取り出しですが、電源入れる前からCD-ROMドライブの取り出しボタンを押しっぱなしにしてしばらく待つと取り出せるようになります。


 2種類のメディアの写真は

こんな感じで

  • PN.0000046772 636 JA C02
  • PN.0000042344 636 JA A02

の2種類がありました。


 前回のNVRAMの内容で起動するのは636 JA C02の方で、今回起動しなかったのは636 JA A02でした。
 起動しなかったCD-ROMメディアを吸い出して中身を確認したところ、NVRAMのチェックする内容などいろいろと変わっていました。詳細は調べられていませんが、とりあえず0x0から0x47,0x58,0x36,0x33,0x36と書いて0x08から0x19,0x98,0x4a,0x41,0x41とすると起動するようになりました。JACからJAAに変えるだけで大丈夫です。


636 JA C02の場合は

636 JA A02の場合は

という内容をNVRAMやFRAMに書き込んであげれば起動するようになるはずです。

バージョン違いについて及び起動条件について追記

メディア交換用マニュアル

 バトルトライストのメディアに記載してあるバージョンについて、当時交換用メディア配布時に同梱されていた書類をお借りすることが出来ましたので、下記に追記しておきます。

 マニュアルテスト内における不具合として、GAME OPTIONSの勝敗数設定において、FIGHT COUNT(1P)とFIGHT COUNT(VS)の設定数値が同数手内場合は不具合となります。
(FIGHT COUNT(VS)が優先される場合があります)

となっているため、設定を変えて対戦や一人用をやってみましたが、どちらのバージョンでも意図しない状態になる設定を見つけることが出来ませんでした。
 そのためどちらが不具合を修正されたバージョンなのか判別出来ていません。

書類の裏面

NVRAMの内容とメディアの対応について

 NVRAMの内容をJAA用とJAC用としていましたが、起動する・しないは以下のようになります。

- NVRAM = JAA NVRAM = JAC
CD-ROM = JAA 起動OK 起動NG
CD-ROM = JAC 起動OK 起動OK

 NVRAMの中身としてJAAを書いてあればJAA,JACどちらのCD-ROMも起動します。起動時にNVRAMの中身を書き換える、ということもしていません。
 NVRAMの中身をJACにしているとJAAのCD-ROMは起動しません。


 上記結果からJACの方が修正版なのかな、と考えていますが、正しいかどうかは分かっていません。

バトルトライストのその後

 以前NVRAMを交換したバトルトライストですが、FRAMに変更すると電池気にしなくても良いのではないか、ということでFRAMを買って交換してみました。

 結果としては普通に動きました。日付の表示がされないみたいですが、問題無く動いています。


 買ったのはdigikeyでFRAMはhttp://www.digikey.jp/product-detail/ja/FM16W08-SGTR/1140-1034-1-NDで、変換基板は検索結果が見つかりません | DigiKey Electronicsを購入し、ロムライターで以前書いたデータを書き込みしています。

品名 型番 詳細など
FRAM FM16W08 Cypress Semiconductor has acquired Ramtron International Corporation
変換基板 28-650000-10 SOIC and SOJ-to-DIP Adapter – Series 450001 and 650000


 FRAMですが、SRAMとほぼ同じピン配置ですが動作は若干異なります。違いとしてはアドレス信号を内部で/CEの立ち下がりでラッチし、それを利用しているようです。データシートから転載すると

上のタイミング図のように動作していれば、意図したデータが出力されますが、下のタイミング図のように/CEが変化しない場合はデータが出てきません。

 /CEがFRAMが動作するような動作をしていればそのまま置き換えることが出来るでしょう。

フレームマイスター/XRGB-miniでCPS2やCPS3のRGB信号変換

 フレームマイスターにCPS2を入力しても映らなかったり明るすぎたりするようなのでメモとして書いておきます。
 信号を見てみたところ、信号レベルが大きいため直接接続した場合に映らなかったり、画面が乱れたりします。
 コントロールボックスによってはRGB,Csyncに抵抗が入っていたり、明るさを調整出来るようになっているため、問題なく映る場合もあるようです。

画面が乱れる場合

 同期LEVELを上げるor下げてみると正常になります。数値は環境によりますので、調整を行なってみてください。
 同期LEVELは

  • MENU
    • 画面特殊設定
      • 同期LEVEL

にあります。

画面が明るすぎる

 画面が明るすぎて白っぽくなってしまっている場合、A/D調整を下げてみてください。
 A/D調整は

  • MENU
    • SPECIAL
      • A/D調整

にあります。

アーケードゲーム基板を遊ぶ環境について

 一番良いのは筐体を買っちゃうですが、これ以外の環境を作る場合についてメモを。筐体が一番おすすめです。まぁ、買っちゃえばどうにかなるので是非筐体を。


 最初に結論を書いてしまうと、今筐体以外でアーケードゲーム基板を遊ぶ環境としては

が良いんじゃないかな、と思ってます。ただし、フレームマイスターもファームウェアのページにあるようにF3など映らない基板がありますので、遊びたい基板が映るかについて下調べは行う必要があるかもしれません。
EL1883というsync separatorを使ってH/Vsyncに分離した後にEXORを使って合成を行うとF3も映るようになりました。こちらに回路などを記載しています。

以下思い出話など

 一昔前のアーケードゲーム基板を遊ぶための環境としては

  • 業務用RGBモニタ、ブラウン管TVやRGB入力があるTV
  • コントロールボックス

などでS端子やRGBで接続を行なって遊ぶ、というのが一番多かったのではないかと思います。


 が、時代も変わってブラウン管はほぼ絶滅し、液晶テレビプラズマテレビのみの世界になってしまいました。
 液晶テレビなどにアーケードゲーム基板のRGB信号を映す場合、そのままではほぼ入力することが出来ないため、S端子に変換したり15kHzのRGB信号をアップスキャンして31kHzに変換したりして映す必要があります。
 アーケードゲーム基板の信号を変換する場合、問題になるのが出力しているアーケードゲーム基板の信号に個性がありすぎて、映ったり映らなかったりすることがあり、このコンバータではこの基板が映るが、この基板は映らない、などがあって非常に面倒でした。
 さらに映像信号に何らかの処理を行なって変換する必要があるため、どうしても遅延が発生してしまいます。


 上記のめんどくささと遅延があったため、手持ちのブラウン管を大事に使っていればまぁ行けるかなと思っていたのですが、さすがにこの環境を今後も維持するのは厳しいかと思い、XRGB3を買ってみたものの遅延が厳しく、SC-500N1/DVIも遅延に関しては問題なかったのですが映る・映らないがありなかなか厳しいモノがありました。


 で。キャプチャ用に分配して、ゲーム自体はブラウン管でゲームをやったりしていたのですが、マイコンソフト株式会社からFRAMEMEISTER XRGB-miniが低遅延を謳って発売されたため、入手して試してみたところ映る基板は少なかった物の遅延に関してはなんとかなるかな、という感触でした。しばらくの間あまり映る基板は無いような状態でしたが、その後ファームウェアのアップデートが行われ、手持ちにある基板がほとんど映るようになり、さらに非常に扱うのがめんどくさかった24kHzにも対応しているため、手持ちの基板は大体映るようになりました。
 大体映るに関してですが、アーケードゲーム基板の信号は個性が強いため、設定が標準のままでは映らないことがあります。この場合、設定の中にある「画面特殊設定」の「同期LEVEL」を調整することにより映っています。本当はオシロスコープなどで信号のレベルを見て調整するのが良いのかもしれませんが、減らして増やして…を行なってINPUTのLEDが点灯する値を探しだせばなんとか映せるかと思います。
 上記同期LEVELですが、基板から出力されているC-Syncという信号について調整を行なっています。本来であれば基板からそのままの信号を入力した方が良いのですが、コントロールボックスによってはC-Syncに抵抗が入っていたりしますので、フレームマイスターに入力する場合は基板からそのまま入力出来るようにした方が良いかもしれません。同期LEVELを調整すれば大体映るとは思いますが。


 現時点でかなり使えるなーと思っているフレームマイスターですが、何点か気になっている点もあり、

  • F3などが映らないというか画面がぶれる
  • メガドライブのインターレスなRGBが映らないので悲しい
  • インターレス信号が苦手っぽい
  • 信号の認識に時間が掛かるため、解像度が切り替わるようなタイトルで厳しい

という弱点もあります。
 ただ、これらは映せるタイトルや遅延を考えるとメリットの方が大きいです。


 今だとHDMI信号を取り込めるボードも安価に入手出来るため、フレームマイスターを使えばRGB信号が特殊なアーケードゲーム基板もustreamの配信や動画取り込みも出来て良い時代になりました。
 現在の環境は

  • AV7000
  • フレームマイスター or XRGB-3
  • AVアンプでHDMI*2へ

という環境で遊んでいます。


 テレビでゲームを遊ぶ場合、画質モードにあるMEISTERモードという昔のブラウン管みたいに走査線エフェクトを加えたモードが基板によってはかなりそれっぽく見えて良いので是非試してみることをおすすめします。CPS2とかかなりそれっぽいです。


 というわけで、アーケードゲーム基板のRGB信号を変換して遊ぶ場合、ちと高いですが買うならフレームマイスターかなーと思ってます。

電波新聞社 FRAMEMEISTER DP3913515

電波新聞社 FRAMEMEISTER DP3913515

XRGB-3もあると便利なコンバータでしょうか。
電波新聞社 XRGB-3 DVI対応アップスキャンコンバーター DP3913418

電波新聞社 XRGB-3 DVI対応アップスキャンコンバーター DP3913418

X68kPC-98などを映す場合はXPC-4が良い感じです。PC-98の30行計画を使ったりしても問題なく認識して変換してくれます。おすすめ。