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等で気軽に話しかけてもらえればアドバイスできる事もあるかもしれません。


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


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


際どい技術情報について


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

2019年10月28日月曜日

2019年夏前後のゲーム記録

今年前半はシューティングがそこそこ捗ってたので夏前後はシューティング以外をわりとやってた気がします。Oculus Quest買ったせいもあるかな。そこでシューティングは少しおいといて……という気分になって。個人的には東京クロノスが気になってQuestを買ったので、対応版が出たらすぐに入手してコンプしました。なんかVRの中のキャラが一回り大きく感じる事はあったんだけど、演出面では色々と面白い体験を味わえました。その流れでPSVRも使う頻度が上がって。7月あたりはVRで酔い耐性を高めようと頑張ってました。SKYRIM VR、Wipeout Omega Collectionあたりを寝る前にやって吐き気を抑えながら布団に入る日々。竜から逃げ回っておぇっぷ……洞窟少し歩いておぇっぷ……って感じで。Wipeoutとか1レースだけなんとか吐き気に耐えて、真っ青な顔してお腹痛いーってゴーグル外して。なかなか厳しい。

8月、9月は閃の軌跡I改をやってました。うっかり始めちゃったけどイース出るまでに終わらせないと……って感じで。いざ終わったらIIに繋がってて「しまったー」って感じですが。年内にIIにも手を付けたい。英雄伝説シリーズと軌跡シリーズ、どちらの伝統も大切に作られていて。シナリオや音楽の節々に思い入れを感じます。

10月はイースIXをずっとやってました。VIIIはツカミが強力で始めて一瞬で「イース、これだよ」って気分で夢中にさせてくれたし、総合的に見ても間違いなくシリーズ最高峰。それと比べるとIXは導入に意外性はあるもののツカミとしては非常に弱く、ナンバリング的にも記念碑的なXへの助走的な作品に感じられちゃうのが難点。ゲームシステム的にはVIIIより進化してて、同じシステムを維持したままよくここまで別のゲームにしたなぁ、という思いもあり、ツカミの弱さ以外は全くもって良くできた新作でした。シナリオとしては終盤になってようやく本領発揮ってところで、謎が解き明かされてくるとグイグイ引き込まれます。

トロフィー関連は慎重に進ませてればだいたい回収できるし、回収不能のイベントを落とすと露骨に表示してくれるので安心。足りないやつがあったらラスボス直前から調べて尻拭いできます。唯一困るのはナイトメアでクリアってやつ。一周目をサクッとクリアして二周目ナイトメアでコンプ目指すのが良いのかも。それ以外だと、お金とスキルレベルマックスがかなり時間かかりそうなので自分は諦めた。しかし、かなり面倒なトロフィーが多いなかで、みんな驚くほどトロフィーを埋めていて。コアなファンが多いなー、と思いました。何年後になるかわからないけどXが楽しみ。

メガドラミニも間にやってるんだけど時間足りない。魂斗羅はコンティニューしまくりで最後までいったけど悪い誘いにのってバッドエンド?大魔界村とザ・スーパー忍もやってるけど、なかなか最後までいけるようになりません。

2019年10月26日土曜日

基板修理:達人王

故障品でもなければなかなか手がでない達人王、御縁で入手させて頂きました。

カスタムのHK-1000の故障でした。海外の人がすでにrepro品を作ったりしてたので、ロジアナ当てりゃ理解できるだろうって事で調べた結果が前回のエントリHK-1000 チョットデキルです。

修理にあたって大変だったのは、解析よりも刺さってる部品の取り外しでした。普段はヒートガンあてて引っこ抜くんですが、ちっとも溶けない、動かない。特に電源周りが合金化が進んでる?感じの嫌な手応え。仕方ないので足をペンチで切って、一つ一つ丁寧にハンダを当てて抜くことにしました。それでも電源周りはうまくいかず、例によってハンドドリルで削ってます。

リプロは後々の人が見たら簡単にコピーできるよう、作るのが楽なよう、DIP部品だけで構成しました。ギチギチに詰め込んでオリジナルサイズを維持してます。



で、とりあえず部品がなかなか届かないので240だけでも落札して試作。



ほんとにびっしり配置。未実装のソケットはコインロック用の回路が入りますが、自分の環境では不要なので空きのまま実験。不要なら実装しなくて済むようにはなってます。

しかし、74Sだからか電力食って熱い。回路が正しいのか不安になるくらい熱くなります(汗



超連射やバツグンから縦シューに入った人なので、改めて達人王をやると両者の原点って印象を受けますね。難しいって話ばかりが独り歩きしてるけど、めちゃくちゃ面白いのは間違いない。あとはアレだ、どっかに壊れたバツグン落ちてないかなぁ……。

2019年10月13日日曜日

HK-1000 チョットデキル

ToaplanのHK-1000について調べたのでメモ。達人王の基板で調べてます。

1 5V 5V48
2 GND 12V 47
3 D1 D0 46
4 D3 D2 45
5 D5 D4 44
6 D7 D6 43
7 N/A(*1) N/A(*1) 42
8 2P Coin Counter 1P Coin Counter 41
9 2P Coin Lockout 1P Coin Lockout 40
10 Service N/A(*2) 39
11 Tilt Test 38
12 2P Coin 1P Coin 37
13 2P Start 1P Start 36
14 2P Up 1P Up 35
15 2P Down 1P Down 34
16 2P Left 1P Left 33
17 2P Right 1P Right 32
18 2P Button1 1P Button1 31
19 2P Button2 1P Button2 30
20 2P Button3 1P Button3 29
21 2P Button4 1P Button4 28
22 /RESET /WR 27
23 /RD_2P /RD_SYS 26
24 GND /RD_1P 25

(*1) おそらくpull-downされてるのかな?lowが出てるけど基板には繋がっていない。コインカウンタ/ロックアウトのレジスタで未使用ビットがアサインされてるか、するための予備端子?

(*2) このあたりはJAMMAのコネクタとほぼ1対1対応。サービスの裏はVideo GND、と入出力とは無関係な事から未使用の模様。

テストモードではボタンは3つまでしか確認でいないけど、バス上の信号を見るとボタン4まで対応している。

b7b6b5b4b3b2b1b0
/RD_1P 1P Button41P Button31P Button21P Button11P Right1P Left1P Down1P Up
/RD_2P 2P Button42P Button32P Button22P Button12P Right2P Left2P Down2P Up
/RD_SYS - 2P Start 1P Start 2P Coin 1P Coin-TiltService
/WR - - - - 2P Coin Lockout1P Coin Lockout2P Coin Count1P Coin Count

データバスは双方向なので制御信号が指定したタイミング以外でデータを出さないよう注意。

入力信号は240でpull-upのactive lowで受けて、反転したactive high値を返せば良い。
出力(コインカウンタ、コインロック、未使用7/42ピン)は174で保持した書き込み値を出すだけ。

基板修理:達人・それから

前回苦労して修理したのに、遊ぼうと思ったらまた化けてる(笑)
そんなわけで前回とは違うビットが壊れておりましたが、回路はもう理解してたので調査・修理はすぐに完了。

前回のポストで

ちなみに最上段に並んでる163のうちA15のやつだけは4-bits中2-bitsしか使ってなくて、未使用ピンは浮いてます。なので74LS163じゃないと駄目。CMOS版使うなら5ピンと6ピンをpull-up/pull-downどちらかで処理する必要がありそうでした。参考まで。

って書いてたんだけど、この残ってたA15の故障です。前回の部品調達難の後にすぐ中国からLS163をまとめ買いしてあったので在庫は手元にありました。備えあれば憂いなし。



しかし本当にここの部品は壊れやすいんだなぁ。

2019年10月12日土曜日

基板修理:ケツイ絆地獄たち


今回はこんなの。一部のスプライトが影絵みたいに単色で塗りつぶされちゃう。実はこれ、基板を見たらROMが1枚割れてるのがわかりまして。


さらに言えば、左にあるアレイ抵抗も割れてる。前のオーナーが落下させたりとかしたのかな?ここまでわかったら確認する事は決まっていて、エミュレータで該当のU7をゼロで塗りつぶして何が壊れるか調べるとビンゴ。そんなわけでやる事は簡単なはずなんだけど……PGMで使ってるROMって64Mbitとか32Mbitのやつで、代替のEPROMが存在しない。フラッシュで同系列の配置のやつで26L6420ってのがあるにはあるんだけど電源が3.6Vなんだな。しかも手持ちのTL866やtop3000では焼けない。同じSOP44でもガンバードの8MbitのAM29F800はギリギリ焼けたんだけど……残念。そんなわけでbuyICnowってサイトを使ってチップ購入ついでにデータ送って焼いてもらいました。厳密には著作権的にNGなんだろうけど已む無し。

26L6420で置き換える際に注意すべきなのは電源を3.6Vに置き換える事と、ROMには存在しない/WE信号をHIGHに釣る事。ガンバードの時もそうだったけど、今回も/WEを忘れててアバンギャルドな絵が出てきて「直らない、おかしいなー」とか考えてしまった。バスに関しては-1Vから電源電圧+1Vまでの入力が認められているので、厳密には4.6Vが限界値なんだけど、まぁハズレじゃなければ動く範囲だと思います。

3.6Vについてはツェナーダイオードを使ったシャントレギュレータ回路を構成しました。使ったツェナーダイオードは1N5226Bなので正確にはツェナー電圧3.3Vです。Zz=28Ω、Iz=20mAで、26L6420の最大電流を45mAとして計算。ワーストケースで計算するとRs=38Ωを使えば良さそうです。ツェナーダイオードと抵抗での最大消費電力は200mWくらい。もったいない。実際にはRs=33Ωを使ったところ実測ベースで3.6Vになってました。波形をみた感じノイズが載ってるわけでもなかったので、このままの値で処理しました。


こんな感じ。もう少し綺麗にしたかった。抵抗に表面実装を使えば見た目も綺麗になるだろうと思ってレギュレーター使わずにツェナーで組む道を選んだのに……いざやってみようとしたらハンダ付け難しくて途中で面倒になって普通の抵抗にチェンジ。しかも後から気づいた/WEの処置とかあって、いきあたりばったり感が凄い。


でもまぁ、はい。画面は綺麗に直りました。

ちなみにU7はとなりのU8とバス配線は共通です。なので/OEと/WE以外は同じピン同士がショートしてるか確認する事でハンダ付けのチェックができます。

2019年9月8日日曜日

基板修理:達人

いかにも良くありそうなスプライト化けの基板。


ぱっと見でアトリビュートRAMかその周辺の配線切れなら楽勝かなー、と思えるくらいには慣れてきました。TOAPLAN系の基板では疾風魔法大作戦の調査をしているので、ぱっと見でおおよその流れはわかります。

A4に陣取っているFCU-2がスプライト制御用のカスタムチップなので、こいつを中心に調査します。すぐ近くのA1/C1にあるSRAM 2KBx2がスプライトアトリビュート用のSRAMですね。アドレス共通、データはパラで16-bitsの構成。前のオーナーが修理済でソケット化されてたので片方ずつ抜いて動作確認できたので助かりました。A1が奇数アドレス、C1が偶数アドレス担当かと思われます。データは直接FCU-2に繋がっていました。CPUからの書き込み時や表示スプライトの選定時にFCU-2からアクセスされるようです。とりあえずCPUからは正常読み書きできてるようだし、配線は全部繋がっていたので、こっち側は問題ないと判断。一応SRAM故障時のオブジェ化けパターンを一通り調べてみたけど基板とは一致せず。となると論理かデータが怪しい。

データに関してはB65-01から04のマスクROMからの読み出し。28pinで128KBというEPROMにはないタイプですが、27C512の/GをA16に読み替えれば大丈夫。自分は27C010に変換する下駄を作って読み出してみました。


で、読んでみるとB65-04がなんか既知の物とは若干違う。ただ、読ませて見ても別段問題あるデータではなかったので原因ではない様子。そうそう、ちなみにB65-01-04はアドレス共通、データはパラで32-bitバス。8ピクセルで4プレーンに分かれてるって予想をしてるけど確信もつまでは調べてない。ただ、そういった事情もありデータ故障の可能性は低い。

データは大丈夫そうなのでROMから逆に辿ってアドレスバスを調べていく事にした。下位3-bitsはA13の74LS175に繋がっていたので、おそらくY方向の8ライン分のアドレス生成結果が出てくるのかな。だとすると連続8Bx4プレーンで8x8サイズのスプライトのデータを構成。A[15:3]は14-bitsで指定するオブジェクト番号のはずで。これらはMSBから順にA15/A14/A17/A16の位置にある72LS163のカウンタに繋がってた。C14/C16のSRAM出力をLOAD時に取り込み、クロックでインクリメント。キャリーも順番どおりに上位のENに入っている。SRAMにソート済みスプライト情報が入っていて表示期間には読み出しながらスプライトを合成する感じか。カウンタの制御信号はSRAMより手前のロジックIC郡が作ってる模様。

ここまで論理が絞れてくると、壊れてる可能性があるのは74LS163のうちのどれか。エミュレーションで適当に壊してみると上位ビットが怪しいかなぁ……という事でロジアナで観測。どうもA14の74LS163が出力も弱く、出力論理も不安定。出力AとDがなんとなくHIGHに張り付いている事が多い。

そんなわけでスプライト番号に0x0900を被せてエミュレーションしてみたのがこれ。


静止画だとそこまではっきりわからないかもしれないけど、動いている様子を見るとだいたい化け方は一致したと思って良さそう。

って事で秋葉にて部品調達。たまたま大試遊祭に遊びに行こうと思ってたので丁度良い。というか、順番が逆で、それまでに故障部品を特定しようと思って作業してた。しかし、ツイッターでも書いたけどロジックICもだいぶ入手が難しくなってきた気がします。自分はマルツ、秋月、千石くらいしかお店を知らないですが、どこが品揃え良いってわけでもなく、たまたまそのお店が在庫多く持ってたやつが残って今も売られている感じで。今回の163は千石にしか置いてありませんでした。161だったら他でも見かけたしロジアナで見た感じ/CLEARは積極的に使ってなかったから161でも動くかも。でもまぁ、本来のやつを使うに越したことはない。ちなみに最上段に並んでる163のうちA15のやつだけは4-bits中2-bitsしか使ってなくて、未使用品は浮いてます。なので74LS163じゃないと駄目。CMOS版使うなら5ピンと6ピンをpull-up/pull-downどちらかで処理する必要がありそうでした。参考まで。


そして交換後の基板なんですが……ありゃー、まだ不完全でした。再びエミュレーションで確認したら、bit3が0に張り付いているようです。


そんなわけでA16にあった163も交換。


無事に完治です。

参考までにB65-[01-04]のアドレスバスについて調査中に作った表を残しておきます。


自分用のメモなので意味不明だと思うのでざっくり参考にできる程度に説明しておくと、FUC-2がスプライトのコントローラ。この表にはない近くのSRAMx2と反対側で繋がっていて、それを読みながら各ラインに表示するスプライトを決定してTC5565の方に格納してくれます。一方でTC5565の下にあるロジック郡が画面表示のタイミングに合わせてSRAMから最上段にある74LS163郡に表示スプライト番号を送り出してくれる。あとはスプライトサイズに合わせて適切な桁の加算機にクロック送って8x8ブロック単位でスプライト番号がインクリメントされるような制御もしてくれてる。そんなわけで74LS163はSRAMが裏で使われてる際にスプライト番号を保持する役目と、サイズに合わせて次の番号を計算する2つの役目を持ちます。GP9001とかが載ってる基板だと、おそらくこの計算までの論理がカスタムチップ内部に入ってます。
で、最後にこの出力がマスクROM01-04のアドレスに入り、32-bitsバスで4-bitsパレット番号×8ピクセルのデータを出します。パレットに関しては前の方にも書いた通り、ROM毎に1-bitでプレーン方式のはず。出てきたデータはシフタで1pixel毎に送り出され、パレット展開・他の面との合成ののち、DACからアナログRGB信号として外に、という流れですね。