9999年12月31日金曜日

当ブログにおける注意点

全般的な注意点


本ブログは個人の意見を発信する場となっています。ここで記述された情報、意見は所属する組織とは一切関係ありません。

また、記述された情報を利用する事で発生した問題についても当方では一切責任は負えません。自己責任でお願いします。


電子工作・アーケード基板系の記事について


趣味で書いてる記事のため、わりと軽い感じで書いてたりはしますが、当方一応は電子工学学士、情報理工学修士です。元LSIの論理設計者でもあり、現役のソフトウェアエンジニアでもあります。適当にやってるようで実は難しい・あるいは危険を伴う事もあるので、専門的な知識、記事の理解なしに見よう見真似で試すのはやめて下さい。ソフトと違って不可逆な失敗のリスクはいたるところに転がっています。最悪、命を脅かすような事故にも繋がりますのでご留意下さい。

特にアーケード基板ですが、国内でもそれなりに情報が出回るようになった事で素人知識で修理して基板を壊す人が増えてるんじゃないかと危惧しています。ヤフオクでも普通に修理すれば直ったんじゃないかって基板がボロボロになって出品されてるのを見て少し心を痛めてます。どうやったらこんな壊れ方するんだよ……。


ソフトウェア系の記事について


ソフトウェアに関しても低レイヤーの情報は一歩操作を誤るとデバイスの文鎮化、データの消失など重大な被害に繋がります。こちらも十分な知識なく、記事を鵜呑みにして実行するのはやめて下さい。


際どい技術情報について


特にメーカー保証の終了した基板の修理などは、修理・調査の過程で本来開示されていなかった技術情報、あるいは守秘義務によって守られるべき技術情報を偶発的に知ることが多々あります。調べた事は可能な限り共有しあう文化で育ってきたため、自分で調べた事は積極的に発信しています。その際、関係各所には配慮するなり、不利益がないよう考えてはいますが、所詮こちらの立場しか見えておらず、権利者からみたら不都合があるかもしれません。その際には連絡頂ければ直ちに双方にとって良い状況になるよう対処したいと考えています。よろしくお願いします。

2018年9月29日土曜日

ジャンピュータの画面反転パッチ

前回のジャンピュータ配列の続きです。

Twitterに投稿した時の写真を見て、やえ㊇なㄘさんから「これって画面逆さまに映らないのですか?」というコメントを頂きました。
実際には画面は反転していて、写真の段階で180度回転していました。だからいつもモニタ左側から撮った写真が多いのに、この時の写真は右側から撮ったように見えてる。

ジャンピュータは家庭用モニタに映すと上下が反転するんですね。いわゆる1Pと2Pで画面が反転するカクテルモード、ようはテーブル筐体前提なんですが、家庭用に映すと1Pが反転側なんです。その後の時代には当たり前のようについていた反転スイッチがDIPに存在していないので家庭環境で利用するには何かと不便。アテナとかも同様みたいですが、ROMにパッチをあてて矯正補正している人をみかけたので、同じようにできないかと調査はしてありました。
というお話をしたところ、どうもやえ㊇なㄘさんの基板は自分の持っているものとは構成が違う模様。ROMの数もサイズも違い、お手数をかけてしまいました。修正が必要な場所を探すための情報をお伝えしたところ……
やえ㊇なㄘさんの基板はタイトルに「サンリツ ギケン」の文字もあるし、基板構成も良く知られたタイトー版T.T Mahjongと同じように見えます。一方で自分のところにある基板はこんな感じ。


という事は、自分のやつ(C)なのかなー。あるいはROMの大容量化と基板の小型化が進んでいるので、ライセンス後の日本物産製とか?Wikipediaによるとタイトーも日本物産も商標問題があって名前を変えて売っていたらしいんだけど、日本物産はジャンピュータの名前で出してるチラシがあったみたいだし、その時期の物の可能性もなくはない。今となっては真実を知るのは難しいですね。あ、ちなみに1つだけ載せ替えられているROMは自分も画面反転のためにパッチをあてたROMを刺したからで、オリジナルは別途保存してあります。


今度こそ正真正銘、上下が正しく表示されているタイトル画面です。

2018年9月9日日曜日

NAOMIとセガサターンのコントローラを繋げる

今までNAOMI使う時は自作のJVS-JAMMA変換器を使ってたんですが、バーチャロンの入力に興味を持ったことがきっかけでサターンのコントローラを繋げる変換器を作る事に。

バーチャロンのツインスティックについては、とある魔術の〜でタニタさんのプロジェクトが話題でしたが、やはり目標が難しかった。残念……って事で実際にツインスティックの入力がどうなっていたのか調べ始めたのが発端。アナログかと思ってたけど実はデジタル入力だったんですね。そんなわけで、実際には(方向+2ボタン)×2で合計12ボタンってだけの簡単な装置でした。サターン用のツインスティックならヤフオクで1,000円前後で手に入りますので、今押さえておくのが吉かと判断しまして。サターンのコントローラは2bitの選択信号と4bitのデータ入力で4×4の16ボタンの入力が取れるようになっていて扱うのはかなり簡単な類いなんですね。

通常のサターンパッドだと入力の組み合わせはこんな感じ。データ側の信号はactive lowで、入力側でpull-upが必要です。sel[1:0] = b11の時にdata[2:0]が0b100の固定値を返すので、これでコントローラが刺さっているかどうか判断できます。

sel[1]sel[0]data[3]data[2]data[1]data[0]
00RXYZ
01StartACB
10
11L100

これがツインスティックだとこんな感じになる。わりとサターンパッドの物理的な配置が考慮されてて、ツインスティック向けの操作をパッドで遊んでもある程度なんとかなるようになっています。左スティックがそのまま方向ボタン、トリガーとボタンがL/Rに対応して、右スティックはサターンのXYZ/ABCボタン中央付近が上下左右に対応し、両端でトリガー、ボタンに対応しています。

sel[1]sel[0]data[3]data[2]data[1]data[0]
00L ButtonR →R ↑R →
01StartR TriggerR buttonR ↓
10L →L ←L ↓L ↑
11L Trigger100

あと、確認していて気づいたんですが、サターンのコントローラはGNDさえ通していれば動作しちゃうみたいです。あれ?って事は中でもpull-upされてて、pull-up経由で電源漏れてきてるのかな?ちょっと未確認です。まぁ、ロジックIC数個とスイッチだけで作れそうな構成ですしね。同時押しすると流石に黙るとは思いますが。

いずれにせよ、信号線が6本しかないのでJAMMAに変換するより配線が楽で助かります。今まで通りArduino Nanoベースで作るなら、今回はやらなかったけど、2P分のコネクタまで用意する事も可能ですね。

一方で、これをNAOMIに繋げようと思った場合、JVSの入力信号にどう対応させるか。JVSは入力信号の標準配置があって、2P対応してると基本こんな配置になります。

b7b6b5b4b3b2b1b0
B1TestTilt 1Tilt 2Tilt 3----
B21P Start1P Service1P ↑1P ↓1P ←1P →1P B11P B2
B31P B31P B41P B51P B61P B71P B8--
B42P Start2P Service2P ↑2P ↓2P ←2P →2P B12P B2
B52P B32P B42P B52P B62P B72P B8--

で、これがバーチャロンの場合には以下のような感じになっていて、1P/2Pそれぞれの方向+2ボタンが左スティック、右スティックそれぞれに対応しているようです。

b7b6b5b4b3b2b1b0
B1TestTilt 1Tilt 2Tilt 3----
B2StartServiceL ↑L ↓L ←L →L TriggerL Button
B3QM-------
B4--R ↑R ↓R ←R →R TriggerR Button
B3--------

ここまで分かればあとはちょろっと既存のコードをいじるだけです。ちなみにNAOMI側の配置は先に調べてあって、元のJVS I/Oボードの方にも方向+4ボタンの一般的なコントローラで無理やりバーチャロンを操作するための謎の修正を入れてあります。ボタンはL-Shot/Shift/Turbo/R-Shotみたいなアサインになっていて、Shiftを入れてると方向キーで旋回、ジャンプ、キャンセルができるようになる感じですね。

で、とりあえず作ってみたプロトタイプがこちら。


コントローラ用の端子は延長ケーブルを半分にして作りました。Amazonだと2,000円前後かなぁ。AliExpressで探せば300円くらいで見つかるはず。たぶんモノは同じで、少しサイズが甘い。コントローラによっては接触不良が出るので、その場合は間に1〜2mmの物を挟んで端子同士が密着するようにしてやればOKです。

そうそう、前回はたまたま気づかずに正しく間違えたんだけど、JVSの仕様書に書かれてるSeries Bコネクタの配列、間違ってますね。Zの順で1から4ではなく、左上から時計回りで1から4。USB Type Bと同じなのが正解です。


その後、基板に乗せて配線。ブレッドボードの実験からそのまま持ち込んだので、サターンのケーブルとかArduino Nanoなんかは下駄つき。これをいつものケースに入れてデコレーション。

という事で完成。JVSはUSBの電源相当の線がSense信号になってて、別口で電源用意しないといけないのが残念です。いや、他にも色々残念ですが。

ソースコードと回路の詳細についてはこちら。そうそう、僕が作っている物の改造や基板化などは、ご自由にどうぞ。質問があればTwitterとかで気軽に聞いて下さい。

Startをコインにして、L/Rを1P Start/2P Startにも配置。他の入力は1Pだけじゃなく2P側にも反映……とかやるのはありかも。JAMMAは同じような方法で1P/2Pを切り替えて遊べるようにしてます。コード的にはコイン入力SWは別口で入れてありますが、自分は面倒なので実装しなかったんですよね……でも、コイン入力ないと、まもるクンで隠しのふるるが出せない……。

2018年9月3日月曜日

7月後半から8月のゲーム:3D/G、ぐわんげ、スプライツ、ガレッガ、ほか

ゼビウス3D/G

前回の予告どおり、机に常設してる基板はゼビウス3D/Gになりました。前回のエントリで書いた気もするけど、このゲーム「STGの作品別難易度を格付けするWiki」で格付けされてないので難易度が不明。まぁ、この格付けも傾向が違うタイトル通しの相対評価がアテにならない事もわかってきたし、そもそも個人の得手不得手があるんだけど。たぶん僕にとっては25前後になる気がする。つまりは相当に難しい。まぁ、難しい原因が情報不足ってのもあるんです。それこそスペシャルフラッグ出せなくて残機足らなすぎとか、そういうレベルで辛い。全7ステージのところ、現状は5面道中までで止まってます。
それはそうとこのゲーム、20年経ってようやく気づいたというか。それなりに忠実だと思っていたPS版の移植、画面周りが大きく違っていたんですね。当時はアーケード版をそこまでやってなかったんで気づかなかったな。


上が基板で下がPS移植(をPSP上でプレイ、スクリーンショット化した物)。おそらくはポリゴン数を減らしたというよりは、グーローシェーディングを切ってるのかな。自然物は滑らかに、人工物はポリゴンらしさを活かしたデザインって棲み分けだったんだけど、むしろ全体にポリゴンらしさを押し出した移植版の方が全体的に統一感もあり、仮想空間にダイブして戦ったる感がむしろ好みとも言える。

まだまだクリアは遠そうだけど、間にコンシューマはさみつつもう少し頑張るつもり。

ぐわんげ

360版。シューティングコレクションについてるダウンロード版なんだけど、このゲームはcave作品の中で唯一Xboxの後方互換対応なのね。そんな事もあってリビングのOneや自分の部屋のOne Xでもぱっと遊べるのが利点。で、ひさしぶりに360モードを遊んでみました。んで、なんとか1CC。
回復アイテムの条件はfacebookで教えてもらったので大丈夫w

ティンクルスタースプライツ

NEOGEO miniが来たので試しプレイ的に1CC。ママん強いよ。

バトルガレッガ

M2STGにて再び真面目に練習中。ぼちぼちラス面まで行けるようになってきた。Quick Load使って6面あたりからやり直すとクリアできる事もチラホラ……って感じなのでクリア近いと信じたい。しかし、初めて6面いけるようになってから7面いけるようになるまで、1年以上かかってた。
ちなみに、こんな感じで。Xbox One版はスコアラー全然集まってなくてな。
同じくらいのスコアでもXbox Oneならベストテン、PS4だと400番付近デス。
今の所、BH mkIIがワンコイン最高記録でございます。

ストリートファイターV

なんか安売りのタイミングで買ってしまった。自分は格ゲーのコンボっていうと鉄拳2のポールで10連コンボやってたくらいで。月華の剣士もそれなりにやってるけど、ほぼほぼコンボなし。それと比べると最近のゲームのコンボはタイミングシビアだなぁ……って感じで苦労してます。まぁ、今どきリュウとか使ってるのもいかんよね。みんな対戦慣れしてるキャラだろうし。

2018年8月23日木曜日

ジャンピュータ配列

おまけで動作未確認ジャンク基板がたくさん送られてきて。その中にジャンピュータがありました。エミュレータでも対応されていない類いの子なので、駄目元で配線してみたら動作した!


電源と画面の信号はついてきた表を見ながら配線してハーネス作りました。



この表ですね。で、入力については気力のあるうちにマトリクスを調べたら以下のようになりました。

11 ③12 ②13 ⑥14 ⑩
ABCDC ④
EFGHD ⑤
IJKLE ⑧
MNチーポンF ⑨
カンリーチロンH ⑪
スタートJ ①

麻雀コネクタとの対応は以下の通り。

ジャンピュータ11 ③12 ②13 ⑥14 ⑩C ④D ⑤E ⑧F ⑨H ⑪J ①
麻雀コネクタA1B2MNPRST

変換ハーネスは、一般的な麻雀コネクタに存在しない-5Vを用意する必要があるので少々面倒です。省略すると音がでないとかそういう半端な問題じゃなくて、たぶんDRAMが動かないので起動しないはず。基板最上部に並んでる74シリーズと間違えそうな小さなICの集まりがN-MOSのDRAMで、12V、±5V、GNDの4種類の電圧が必要となります。


という事で、ハーネスは麻雀コネクタへの変換基板としてではなく、麻雀→JAMMA変換コネクタ兼コントローラに別口を付け足す形で作りました。

しかし、なんでwikipediaのエントリとか良く見る呼称が「ジャンピューター」なんですかね。タイトル画面では「ジャンピュータ」ってなってるのに。

追記:DIP SWは3,4のみ使われていて、ON/ON、OFF/ON、ON/OFF、OFF/OFFの順に持ち時間減少スピードが早くなるらしい。OFF/ONが標準かな、手持ちの基板はそこに長く設定されていた日焼け跡がある。

2018年8月18日土曜日

retro-bit GENERATIONSのUSBコントローラ

表題の件、少し調べたので文章でもまとめておきます。

細かい認証やVID/PIDなんかでも制限はない模様。基本的には必要な内容を含むレポートを出してくれれば動作する。

  • desktop page - X(アナログ入力、レンジはたぶん問わない)
  • desktop page - Y(アナログ入力、レンジはたぶん問わない)
  • button page - 0x01〜0x0a

至って普通の組み合わせだとは思うんだけど、方向キーは使えるけどボタンが反応しないコントローラが多いみたい。

ボタンの割当については

  • 0x01 - Y
  • 0x02 - B
  • 0x03 - A
  • 0x04 - X
  • 0x05 - Z
  • 0x06 - C
  • 0x07 - 未使用
  • 0x08 - 未使用
  • 0x09 - mode
  • 0x0a - start

みたいです。未使用の0x07と0x08については存在してなくても大丈夫みたいです。あとVID/PIDが公式と一致する場合に限り、AとB、XとYがスワップされる謎仕様。GENERATIONS IVでしか確認してないので、もしかしたら過去のコントローラの割り当てが何パタンかあって、その差異を吸収するための手当かも。

自分のアケコン内蔵のLinux向けのドライバはこちら。レポートが最小サイズ(2バイト)になるよう、フォーマットを最適化してます。このドライバを動かすと自作アケコンをUSBでretro-bit GENERATIONSに繋げられるようになる。

クレヨンしんちゃんF2 1枚基板とCGA-HDMI変換基板

タイトーの正体不明基板を520円で入手。ROMの番号がわかればタイトルも一発なんだけど、だいたい不明基板は(わざと?)肝心なシールの部分が光ってたりぼやけてたりで見えないんだよね。そもそもこの基板は本来タイトルの名前が書いてあるシールが剥がされてるし。動作しない時に基板の故障なのか誰かがコンバートに失敗した後なのか調査が難しくなるのでやめて欲しい……。まぁ、でもたぶんF2の1枚基板かな?くらいの雰囲気で。基板の写真漁ればその辺はすぐに確証とれたと思う。


んで、電源入れてみると矢島さんの野原しんのすけボイス。F2だとクイズ〜とオラと遊ぼの2種類出てるんだけど、これは後者でした。うちの基本環境だとF2は唯一画面がまったくでない基板なので、故障よりは相性の可能性の方が高そう。基本環境ではJAMMAからアナログ信号変換で15kHzのままS端子でモニタまで持っていってるんですね。なのでモニタ側の追従性能に左右されちゃう。で、次の環境作成用に手配してたCGAからHDMIに直接変換できる基板があったので、そっちの動作範囲確認も兼ねて映るか試してみました。


VGAに変換するタイプのやつは国内でもお馴染みですが、同じ会社のHDMI版です。送料込みで3500円弱でした。VGA版がF2いけたので、たぶんHDMI版も問題ないだろうと。これが通るなら安心してこれを使ったコントロールボックス作れますし。という事で、ボックスあけてCGAの入力先だけこっちのボードに一時的に差し替え。


出た画面がこんな感じ。同期も完璧に取れてて信号流れたり画面端の色がおかしくなったりとかもありません。HDMIなのでモニタ相性も出ないし完璧。どうせフレームバッファとるなら画面回転とかできれば最高なんだけど……業務用装置以外ではそういう事ができる変換基板は見たことないですね。