9999年12月31日金曜日

当ブログにおける注意点

全般的な注意点

Basically, all articles are written in Japanese, but please feel free to ask me to translate or explain it via Twitter, etc. At GitHub, I'm using English usually.

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

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

コメントの見落としが多いというか、ほとんどチェックしてなかったので、何かあればTwitter等のソーシャルメディアで突いてもらえれば捕まるかと思います。

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


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


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


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


際どい技術情報について


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

2022年1月1日土曜日

2021年のシューティングたち

ここ何年か遊んだシューティングをまとめてるので2021年も。

ちなみに積みゲー消化を始めてからのシューティングクリア本数は

2017年...9本
2018年...11本
2019年...12本
2020年...5本
2021年...8本

2021年に新たに1CCしたゲームは

GGアレスタ1
GGアレスタ2
コットンリブート
スラップファイト MD版 SPECIAL
R-TYPE Final 2
戦刃アレスタ Casual Mode
Xマルチプライ
デススマイルズ 追加5キャラ

今年達成した中だとXマルチプライが一番の高難易度かな?子供のころCD買って聞くしかできずに想像の中だけで楽しんでたゲームなので、今こうやってやりこんでクリアできたのは感慨深い。

GGアレスタは新作の3をやった後に旧作に進んだ感じだけど、どれも完成度が高く1CCを目指して遊ぶには敷居も低く、ちょっとずつテイストが違うのも魅力。これは現役時代に遊ぶべきゲームだったな、と思いました。

コットンリブートは話題にはなったけど、あまり遊んでる話を聞かないのが残念。現代風アレンジに成功してて、これが発売された時点では最高のコットンになってると思うんだけどなぁ。ぜひこのラインで過去の名作をアレンジ復刻し続けて欲しい。

MD版スラップファイトは古代先生のBGMとSPECIALモードが醍醐味だからNORMALクリア後もSPECIALを練習してました。パタン詰めないとクリアが難しい個所が何か所かあったかな。次はアーケード版がターゲット。NORMALは画面方向だけじゃなく若干システムが変更されて簡単になってるのよね。

R-TYPE Final 2はNORMALモードではノーミスクリアも達成。BYDOモードでも1CC。 実はシリーズで1CCできてるタイトルはなくて。今回家庭用難易度とは言え、1CCできたのは嬉しい。PsytranceなBGMも好き。

戦刃アレスタは老舗シューティングメーカーが悪魔合体して現代に蘇る世界線での新作って感じで(実際はcaveで最大往生の調整を任されてた小泉さんがインディーズでローリングガンナー発売後にM2に移籍して出す完全新作って事だと思うけど、エムツー周辺には元コンパイル/Raizingな人達が多いから、その辺りの影響ですかね)。ゲームシステム的にはオプション使って弾消したり、連射と長押し切り替えながらオプション位置を制御して攻撃したり。あと連続被弾しなければ回復してミスがなかった事になるっていうのはポカミスが増えるお年寄りには嬉しい機能なんですよw ボムが緊急回避じゃなく即時使用ドロップアイテムっていうのが少し特殊かな。あんま使い道わかってない。敵弾を跳ね返すっていう仕組みも斬新。ただうまく逃げないと直後に集中砲火を浴びるので慣れるまで緊急回避には使えないw

デススマイルズは初心者にも優しいシューティング。特にコンシューマ版はアーケードにあったレベル選択の制約がなくなって難易度をある程度自分で調整できるので比較的簡単に1CCまでいけるのでオススメ。お父さんとラスボスは難しそうだけど、ちょっとトレーニングモードで練習すれば慣れるので大丈夫。いまいち進め方がわからなかったらミカドの配信で必要最低限稼いで1CC狙う解説があるので、それでケーキと火山の稼ぎさえ覚えれば、あとはシューティングの真の楽しさがわかる良いタイトル。フォレットさんオススメ。配信後にしれっと座ってプレイし始める人がたぶんSteam版や360版でトップスコアの人なんだけど、見てると地獄で笑える。シティコネ版はランキングにバグがあったり、まだ十分なプレイデータが揃ってなかったりとかあるけど、落ち着いたら上手い人のデータ見てるだけでも楽しいかも。

2021年夏以降に遊んだゲームたち

またしばらく記録とってなくてわからなくなってしまった……覚えてる&メモにある限りで簡単になとめてみます。

Xマルチプライ

PS4のアケアカでやりこんでました。最後はなんとかクリアできたよー。

デススマイルズ

もともと360判で全キャラクリアまではやってたんだけど、今回はゴ魔乙から追加キャラが5人って事で、しばらくやりこんで思い出しつつ5キャラ分も1CCしました。追加分のキャラもそれぞれ癖がうまく出てて楽しませて頂きました。ゴ魔乙モードはBGM初期値でアレンジにしといても良くない?せっかつ追加したのに勿体ない!

Yakuza 0

Xboxで遊んでた。なんか書いた気がするんだけど、見当たらないので。基本的にはベルトスクロールアクションが3D方向に進化してコンソール向けにRGB要素とかおまけゲームで肉付けされた感じ。クリア優先で楽しませてもらったけど、ほかにやるゲームなかったら無限に遊べるなーって思った。シリーズたくさん出てるし、他のもやってみたいけど、こうも積みゲーが増えてく状況だと難しいなぁ。

Cyberpunk 2077

Xboxで始めたんだけど、途中で他のゲームに押されて止まってる。まだそこまで求心力感じてなくて、どうしてもシューティングが発売されるとそっちに流れる。まぁ、でもいずれ先に進めたい。

SCARLET NEXUS

Xboxでストリーミングが来たのでやってみた感じ。バンナムらしいアニメ調のゲーム。VFXとか近未来っぽくて好きだけど、ゲーム自体は例によって死なないベルトスクロールアクション系でやりこみの魅力を感じなかったのでストーリーに引き込まれる前にやめちゃった。やれば面白いんだろうけど、そういう時間ないからなー。

ゼクセクス

基板で遊んでたらアケアカでも出たのでPS4でも遊んでるんだけど、現状まだワンコインでは5面まで。クリアまでの道筋は立ててるんだけど、安定しなくてこの辺までになってる。

バイオハザード4

Quest2で少しずつ進めてます。ちょっとね、やっぱり周囲の物に手をぶつけて危険(笑)思ったより怖い要素がないんだけど、これは「今のところ」なのかなぁ。心臓にくるような怖いのはちょっと苦手だ。

パズルボブルVR

Quest2で遊んでみたけど、正直そこまで面白いゲームには仕上がってないんだよなぁ。VR化し易そうなIPでとりあえず作ってみたけど、思ったほど面白くならなかったって雰囲気が。後半クリア条件を変えたり、お助けアイテムが使えるようになったり、と頑張ってはいるけど、ゲームが面白くなる方向にはなってない。高難易度ステージになるとクリアするのに技術より運依存が強すぎなんだよなぁ。特にお助けアイテムはカジュアルゲームの手法を持ち込んだだけで、むしろ興ざめ要素。いや、運依存回避なのかもしれないけど、遊んでポイント貯めてアイテム買ってランク下げるとか、ほんと作業なので嬉しくない。

その他

あと、最近はシューティング移植が凄い勢いで出てて、しっかり遊ぶ時間が取れてないものが多い。年内に買ったけど十分遊べてなかったやつ、新発売品で主な購入サイトの履歴だけみてもこんだけある。
  • 虫姫さま (switch)
  • エスプガルーダII (switch)
  • 怒首領蜂大復活 (switch)
  • ダライアス コズミックリベレーション (switch/PS4)
  • 究極タイガーヘリ (switch/PS4)
  • コットン ガーディアンフォース サターントリビュート (switch/PS4)
  • コットンロックンロール (switch/PS4)
  • 暴れん坊天狗 & ZOMBIE NATION (switch)
  • イルベロスウォンプ+ラジルギスワッグ (switch)
  • エスカトス (switch)
  • Gleylancer (Xbox)
シューティング以外で買った新作もこんだけ。
  • 時計じかけのアクワリオ (switch)
  • 元祖みんなでスペランカー (PS4)
  • 海腹川背 BaZooKa! (switch)
  • ゲーム&ウオッチ ゼルダの伝説 (専用機)
  • アイドルマスター スターリットシーズン (PS4)
  • GetsuFumaDen: Undying Moon (Steam)
  • El Shaddai ASCENSION OF THE METATRON HD Remaster (Steam)
  • 夢幻戦士ヴァリスCOLLECTION (switch)
  • アイドル麻雀 ファイナルロマンスR (switch)
  • 帰ってきた 魔界村 (switch)
  • G-MODEアーカイブス+ モモコ1200% (switch)
  • Castlevania Advance Collection (switch)
  • アクトレイザー・ルネサンス (switch)
  • かしおり (switch)
  • FIGHTING EX LAYER ANOTHER DASH (switch)
  • Capcom Arcade Stadium Packs 1, 2, 3セット (switch)
  • Ridge Racer 6 (Xbox後方互換)
アーカイブスとかSteamのセールで買った古いもの、アーケード基板まで入れるとキリがない……あきらかに消化が追い付かずに積みゲーフェーズに入ってしまった。おかしい、ここ何年か意識的に積みゲー消化してたはずが。

2021年11月15日月曜日

naomiのROM BOARD TEST

 naomiのROMボード修理中につき、ある程度まとまった情報になったら随時ブログにまとめときます。

今回はシステムのテストから実行できるROM BOARD TESTの話。

このテスト、搭載ROMのチェックサムを確認してくれるのですが、肝心のチェックサムはIC22の中に入っているため、IC22が読めないとチェックできません。故障が多いらしい837-14114-01タイプのROMではバッファの故障が多いため、IC22自体が読めずにROMチェックがほとんど意味をなさないようです。IC22が正しく読めないと、TYPE、RESULTが?で埋まります。この状態で故障等のアタリを付けるのは大変なので、ひとまずIC22に書かれたメタ情報について調べてみました。

IC22は、各ROMについて以下のような6-Bytesのデータを保持します。

struct rom_entry {
  uint16_t type;
  uint16_t byte_sum;
  uint16_t word_sum;
};

メンバーはlittle endianで格納されてます。typeについては

enum type {
  kRomType_16M = 0x0002,
  kRomType_32M = 0x0003,  // maybe?
  kRomType 64M = 0x0004,
  kRomType_NotInstalled = 0xffff,
};

って感じだと思います。NotInstalledだと検査自体されない。

で、IC22のオフセット0x0000015cから、

struct {
  struct rom_entry ic22;
  struct rom_entry ic1;
  struct rom_entry ic2;
  struct rom_entry ic3;
  struct rom_entry ic4;
  struct rom_entry ic5;
  struct rom_entry ic6;
  struct rom_entry ic7;
  struct rom_entry ic8;
  struct rom_entry ic9;
  struct rom_entry ic10;
  struct rom_entry ic11;
  struct rom_entry ic12;
  struct rom_entry ic13;
  struct rom_entry ic14;
  struct rom_entry ic15;
  struct rom_entry ic16;
  struct rom_entry ic17;
  struct rom_entry ic18;
  struct rom_entry ic19;
  struct rom_entry ic20;
  struct rom_entry ic21;
};

といった感じでデータが並んでます。これを見てチェックサムを計算し、byteとwordともに期待値と一致していたらGOODを表示します。IC22自身についてはtypeは参考にするけどチェックサム自体は意味がないので無視して常に`----`を表示するようです。というか、ここは間違った値が入ってたので、単に無視してるのか別の用途で使ってるのか……。またtypeが未知だとTYPEとRESULTを`?`で埋めるんだと思います。GIGA WING2ではIC22が読めずにサイズがわからなくともbyteとwordについて正常時と同じ値が計算されるのは確認しました。ROMタイプが64M以外の時に正しい値になるかは不明です。

ちなみに応答するROMがなかった場合は0xFFではなく0x00が読み出されるようデータバスはpull-downされているようです。

2021年11月6日土曜日

naomiのガンコン対応ゲームをお家で遊ぶぞい

IONA-USを作ったので、USBのコントローラさえ存在すれば、あとはファームウェアなんとかするだけでJVSの特殊コントローラとして動作させる事ができる。そんなわけで、今回はアーケードゲームを家庭で遊ぶ上でやっかいなガンシューに対応してみようと思います。

まず肝心なのは、液晶環境で動作する汎用ガンコンを見つけるところ。調べたところ、どうやらPS3のタイムクライシス4に付属していたガンコン3が液晶でも遊べるとのこと。ヤフオクなどで5,000円前後くらいで入手できそうです。同時期に同じような仕組みでPC向けなどに出ていたガンコン(TopGun III、Single Arcade Guns、ArmTrak)もあるようなのですが、10年前、20年前ならまだしも、今は入手が難しいですね。Cabela's Top Shot Elite Firearm ControllerってのがWii/PS3/Xbox 360のバリエーションがあって辛うじてebayで手に入るかな。playasiaにあったので注文したら「ごめん、やっぱなかった」って払い戻し面倒でした。って事で日本ならガンコン3が入手性の面でもオススメ。現実的な値段で入手するならガンコン3がレア化するギリギリ前の今が最後のチャンスなのかもしれません。おそらくFPS勢は既にVRに行っちゃってますからね。モニタの座標をとる必要のあるUSBデバイスとかPS4世代以降は需要がないんだと思います。Switchのジョイコンのセンサーにアタッチメントってあたりならワンチャン……って感じなのかな。

ガンコン3の設置はそこまで難しくなくて。USBから電源だけとってる2つのマーカーLEDがあり、これをモニタの左上、右上に正面を向けて置くだけ。電源もらってるだけなので、このUSBは充電アダプタとかに繋げるのでもOK。一方でガンコン側のUSBとしての挙動は少し複雑。期待してたのは標準的なPS3互換のレポートでアナログ部分に座標が入ってくるってくらいだったんだけど、完全に独自クラスどころか、表向きは1ポートのUSB Hubで、その向こうにベンダー固有クラスを使ったデバイスが仮想的に接続され、データをシャッフルして通信する独自プロトコルになってます。これ、先行して調べてくれてる人がいなかったら面倒で投げ出してましたね。ちなみにこの人が調べてるのはHubの向こうに仮想的にぶら下がってるデバイスのプロトコルのみ。ハブ部分は標準通りなので一般的なOSならシステムが処理してくれて、ハブ越しに現れるデバイスのドライバさえ書いてやれば動く。という事で、IONA-USにはハブの簡易対応コードを追加し、その上でこの独自デバイスを仮想HIDとして扱い、そこからJVSにマップしてやるコードを追加しました。

JVSへのマップについてはnaomiのDeath Crimson OXに対応してみました。アナログ0と1が1PのX座標とY座標、アナログ2と3が2PのX座標とY座標になってます。それぞれボタン1がショットという素直な配置。スタートボタンも必要だったのでA1っていうボタンをアサインしました。

画面内・外の判定はキャリブレーションをやればゲーム側で勝手に判定してくれます。最初、キャリブレーションをIONA側でやるとしたら大変だなーって思ってたんですよ。マイコン的にはクロックはそこそこ早いとは言えアーキテクチャは8051ですから。ホモグラフィ変換行列の計算(プロジェクションマッピングとかと同種の計算ですね)とか、自前で浮動小数点と三角関数を用意しないとかなーって。でもゲーム側でキャリブレーションするなら生のデータを送ってやれば最低限はOK。デバイス的には見える世界を二次元の投影で理解して、マーカーの位置から向いてる方向を計算しているだけの値が上がってきます。各地点で奥行きの距離とか考えて歪補正したりはしてません(そこまで自動でやるにはマーカーは4つ必要だし)。

ただ、ゲーム側のキャリブレーションもそこまで真面目な計算はやってないんですよね。なので、基本的にはモニタの真正面から、投影に歪みの出ない位置関係で遊んでやるのが望ましい。という事で、本当はIONA側でホモグラフィ変換かけてやれば追跡精度も上がるんだろうなぁ。キャリブレーションが2重になってわかりにくくなっちゃうけど、設定モードつけて画面4隅をマークさせればホモグラフィー行列も求められて、斜めから撃ってもゲーム側では補正された正方形とかで判定できます。まぁ、今の所そこまでやる予定はないですが、興味ある方の改造をお待ちしております(笑)。ただ、ファームウェアサイズ的にはメインに取り込むにはキツイとは思ってるのでマージできるかはサイズ次第かな。

という事で、実際に遊んでみた動画がこちら。

1.31から正式に対応してます。 

2021年9月21日火曜日

Egret II 麻雀用Jコネクタ

Egret IIのコンパネ用のコネクタ情報はArcade Otakuに一通りまとまってるんだけど、麻雀パネルのJコネクタに関する情報が見つからなかったので調べてみた。1番ピンから順に9, 8, 10, 11, 1, 5, 6, 7, 2, 3, NC, NC, NC, NC, 4って配線。これなら麻雀からJAMMAに変換するハーネス作っといて、電源、画像、音声はそのまま繋ぎ、麻雀用のI/OをJ端子上で同じピンになるJAMMAのI/Oに繋げとけば良いのかな?

パドルのパネルも確保したんだけど、こっちは端子が違ったので繋ぎ方はまた後で考える。

追記:最後の4が繋がる端子、マニュアルのWiringを見るとJAMMAのD端子の5Vに繋がってる。トリッキーだけど、ゲーム基板側でこの辺がショートしてなければ独立した端子として機能するのかな?という事で、4はDに繋げれば良さそう。

2021年8月28日土曜日

基板修理:eX-BOARD

動かないeX-BOARDが2つほどあったんだけど、息抜きに少しいじってみたら簡単に直ってしまったのでメモ。のすけさんの修理本も参考にしました。

壊れてた2台は電源入れてもLEDが点かない状態で、電源の故障を疑って放置してました。んで、Pico PSUを用意して作業を開始したのですが、実際はBIOSの電池切れで存在しない電源ボタンを押されるのを待ってる状態でした。

という事で、まずは下側の基板にある電池を交換。普通にCR2032で交換可能なソケットに刺さってるので交換は簡単。この状態で仮組みして電源を入れると、電源ボタン待ち状態になる。

で、電池の左に見える2x8ピン(1ピン欠けてるので実際は15ピンだけど)がフロントパネル用のコネクタ。このへんはマザーボードのマニュアル見っけてくれば載ってる。写真の向きで、

1+5VDUAL2+5V
3+5VDUAL4HD_LED
5-PLED_26PW_BN
7+5V8GND
9NC10RST_SW
11NC12GND
13SPEAK14+5V
15欠落16-SLEEP_LED

らしいので、このうち6番のPW_BNをGNDに瞬間的に落として上げると電源オン、もう一度瞬間的に落とすと電源オフ、の繰り返しかな。基本的には電池を交換してあげれば、あとはここをショートさせて電源を入れるのは1回だけで良いはず。それ以降はマザーボード的には電プチで強制終了されるので、BIOSの電源管理設定により、次回の電源投入時には前の状態に戻ろうとして自動で電源が入ります。

続けてこの状態から電源を入れると、BIOS設定の初期化をちゃんとしろって怒られるところで止まっちゃう。

ここでキーボードが必要になるので、シール封印してある部分を開けるか、下のボードもケースから出すかしてUSBキーボードを指す必要がある。

この部分。シールはピンセットで端からペロってめくればほぼノーダメージではがせます。で、DELキーを押してBIOS設定画面に入るとパスワードを聞かれるので「onestar7」でENTER。しれっと書きますけど。で、BIOSに入ったら初期状態のまま何もせずに保存して終了で問題なし。再起動が始まるのでキーボードはすぐに抜くこと。抜かないとWindows起動後にドライバ云々のダイアログで止まります。

以上で作業完了。あとは元通りに組み立て直して完成。

ちなみに、片方のマザーは下のボードのコンデンサが1つ死んでました。

このままの状態だと電源投入が不安定になってました。一度動き出せば安定するんですが、数秒で落ちちゃう時と動き出すときが半々くらい。まぁ、明らかに良くない状態なので、これに関しては交換で対応。1500uF - 10Vだったかな。基板のハンダは自分の設備だと450度くらいまで上げないと溶けなかった。普段190度のハンダを320度設定くらいで使ってるので、きっと出てる数値は高め。適度に融点低めのハンダと混ぜながら吸い取って引っ張りました。

そんなわけで、のすけ先生の記事はBGAのチップのハンダ不良を直したりという離れ業をやってたのでガクガクブルブルだったのですが、手に入れた故障基板は比較的簡単な修理で済みました。

余談:eX-BOARDの電源はJAMMAから供給するか、裏側の12Vアダプター経由で供給するか選べるようになっているけど、JAMMAから取る場合、12Vのみを取り込んで電源ユニットでATX電源に必要な各種電圧を作る。アダプターの容量から考えると5A必要なのでJAMMA側から供給するのは諦めたほうが無難。あと中の電源基板についても、壊れてたらさっさとPico PSUとかに交換しちゃった方が今なら省電力で発熱も押さえられるかも。

追記:BIOS設定画面は最近のモニタだと映らないかもしれないくらい低解像度かつS端子からも表示出てない気がするので将来の自分のために画面見ずにタイプするためのメモ。DELを押したら数秒待ってパスワードonestar7↩、BIOSに入ったはずなのでカーソルで↑↑でSAVE & EXITに移動して↩↩(2回目は確認ダイアログのYes選択)

おまけ:マザーのDIPSWは

  1. JAMMA経由の音声出力
  2. JAMMA経由の映像出力
  3. タイトル固有設定
  4. タイトル固有設定
  5. タイトル固有設定
  6. タイトル固有設定
  7. タイトル固有設定
  8. タイトル固有設定(AH2では15kHz画面出力)