2019年12月23日月曜日

基板修理:マグマックス

まったく起動しないやつ。数ヶ月くらい気分がのってる時にチョコチョコと思いつきで捜査を進めてました。この基板はマニュアルに回路図が載ってたみたいで資料は探せば見つかるので助かります。

起動しない時に最初に疑うのはメインCPU周り……とすぐに調査を開始したらリセットが入りっぱなしになっていました。リセットに関してはD3/R11/C21でPON後のリセット解除信号を作っており、1Eのシュミットトリガ・インバータを2段経由して68000の/RESETと/HALTに入る、という流れ。HALTは双方向なのでロジックの出力が直で入ってるのは危険な気もするけど、ダブルバスフォールトは絶対に起きない、という設計なのかな。/BERRがpull-upされてるのでそれで良い気がするけど、たくさんの信号が束ねられた上で共通のレジスタでpull-upされてるので、ぶら下がってるチップのどれかが壊れると入力が不安定になりそうではある。その辺が今回の故障部分の原因かもしれない。故障はこの1Eのシュミットトリガ・インバータでした。

1Eの交換後はバスが動き始め、メインCPUはそれっぽく動いている模様。余裕の修理かな?と期待してたんだけど、画面はまだでません。音も確認したけど無音。


しばらく放置したのち、音が出てないのと電圧がやや下がり気味なのもあり試しに電コンの全交換。よくタイムラインで電コン交換修理の報告をみかける岩崎さんからアドバイスをもらえたからってのもあった。


同じ故障基板を買い漁る系なんだけど、なぜか今まで自分が引いてるのはロジック系の故障が多い。そして今回もこれだけでは状況は改善しませんでした。

画面がでないと気持ちが高まらないので画面周りの信号の確認を進めます。画面は故障のヒントになる情報も多いし。で、まずはCSYNCを観測してみたら、なんと7.791kHzという半端な信号が出ていました。期待では15.58kHzと59.5Hzの混合が出てるので15.58kHzが観測されるはずなんだけど。という事で同期信号合成回路を遡って確認。SYNC生成部はCPU(2)の図面にあって、11EのNANDがV_SYNCとH_SYNCの合成、V_BLANKとH_BLANKの合成をやってます。負論理のORで書かれてるけどチップは等価なNANDなので紛らわしい(けど、意味は負論理のORの方が素直)。で、確認したらこの時点でV_SYNC/V_BLANKの入力が壊れていました。V_SYNCが7.791kHzだったため、7.791kHzと15.58kHzのORでデューティー比1:3の7.791kHzが出力されるわけですね。

そのままV_SYNCの生成を追いかけます。VIDEO BUSを通って裏ボードに回ります。VIDEO BUSの裏ボードで見た際の33ピンがV_SYNCです。34ピンがV_BLANK、31/32がH_*です。回路図で見るとMAGMAX_VSCで、/V_SYNCと表記されてるのが出力。CPUボード側の図面ではバーなし表記だったので紛らわしいけど、同一信号。

V_SYNCのタイミング生成では、裏ボードの3A、4A、5Aの3つの4-bitsカウンタを使って9-bitsのカウンタで表示ラインを数え、最上位桁がV_SYNCとして出力される。カウンタの初期値が12'b1110_1111_1010に固定されているので、最後の繰り上がりでカウンタが初期値に戻る事を考えると262カウント。15.58k/262=59.5Hzになります。この論理が壊れているわけですね。

信号を確認すると3Aに入る前段からの入力が中間電位に浮いています。4Aの出力を見ると全て中間電位を出しているようなので交換。手元に74*161の在庫がなかったけどリセットはpull-up固定だったので、リセットしない限り機能的な差はないはずの74*163を使って実験。


お、モニタが同期を拾った……けど何か変。BGMが早巻きで鳴っているので、これはおそらくV_SYNCが4倍の速度で出ているのではないか……と想像。画面も4分割だし、V_SYNC割り込みで演奏してる演奏も4倍速になっているのでは、という推測から。

4倍速になってるなら下位ビット担当がおかしいのかな、と5Aを確認したら出力がやはりおかしいのでこいつも交換。やはり高速に回ってるカウンタは壊れやすいのかな。達人のスプライト周りのカウンタも壊れやすいみたいだったし。



おっしゃ、直った!!

と思ったのも束の間、この体たらくです(笑)



あちゃー。スクロール値とBGパタンの読み出しラインがうまくライン毎にインクリメントされていないような感じですね。それと不定期にメインCPUにリセットがかかる。

もうしばらく修理は続きそう……って事で数日後にラスタースクロール周りの調査。まずは前回見たV_SYNC生成回路の後ろでデータが壊れていないかの調査。ここはINV線を見て通常画面と反転画面用の回路が選択されるようになっているので、2Pで動かしてみて画面反転時に結果が変わるかの確認でスキップ。同じ問題が出てました。なので次はスクロールと画面縮小のパラメータを格納してる表基板18B/20BのEPROMを確認。データは壊れてないけど、どうやら入力アドレスのA7(pin 3)が浮いている模様。


こんな感じで中途半端な電位をフラフラ……と他の入出力に影響されながら。典型的な故障パタンですね。追いかけると19Aと20Aでスキャン中のオフセット付きライン番号にスクロール値を加算してEPROMのアドレスに入れる、となっており19AのΣ3が該当出力ピン。という事で交換してみたところ……


正常動作するようになりました。この手の283も壊れやすいなぁ。

ただこの子、実はメインの68000が少し不安定で。電圧あげないと頻繁にリセットがかかってしまう。裏面の電源とか見てるとノイズも多く、電圧も4.6Vくらいまで下がってるので、他にも壊れた素子があって大きめのリーク電流が流れているか、そもそも電源容量が心もとないのか。安定して動かすにはもう少し調査が必要。ボタン2で早送りした時にノイズがいっぱい載るんだけど、これはこういうモノ?

→その後、自作じゃない環境で試したら低い電圧で安定動作。改めて確認してみたら、むしろ電圧低い方が安定する様子。


こんな感じで普通に遊べたので良しとする。

2019年12月15日日曜日

基板修理:五月陣戦

タイトル不明・起動不可のジャンク1000円。ROMのシールから五月陣戦だってのはわかってたけど。

 電源入れるとこんな感じ。これだけみると表示系のロジックが死んでるような気もするんだけど。
基板をチェックしたら傷跡が。傷の部分を洗浄して拡大鏡で見ると一番太い傷になってる部分でパターンが切れてそう。テスターで確認したらやっぱり切れてました。ここはROMが載ってる部分なのでバスが切れてた感じですね。なのでプログラムが化けて初期化できずに画面が出てなかっただけの模様。
真っ暗な時間が長くて直らなかったかな?って思ったけど、少ししたらチェック画面が出てきた。
んで、無事に起動。今回はとても簡単に修理できたケースでした。
とりあえず傷の部分が錆びると嫌なのでパッチだけじゃなくレジスト塗布も。

2019年12月2日月曜日

2019年秋のゲーム

おっさんホイホイな新作が続く秋でした。

前回のエントリに書いたイースIXの後はBloodstained: Ritual of the Nightになだれ込み。海外ではとっくに発売してたのがようやく国内流通って事で。本当はXboxのダウンロード版で買いたかったんだけど、情報が出てくる気配がないのでPS4のメディア版。最近Xboxのセールの一覧に出てきたので今だったら国内からもDL版が変えるのかも。その気あるなら一言情報出して欲しかった。ゲーム自体は主人公の動作速度に馴染まなかったのと緊急回避動作がしっくりこなかったのとで最初は違和感ありまくり。あとは洋ゲーちっくな声とか、人格破綻してる村人とか、イメージと違って全く儚くない主人公とか。ただ進めていくと操作にもなれてきて、あー、これが現行世代で作るドラキュラなんだなーって納得する感じで。このままシリーズ継続できたら良いなーと思うんですが。操作系が不安定だったり基本画面のマップ表示が化け化けだったり、テストするまでもなく遊べばすぐ気になるバグがそのままになってたのが気がかり。海外版出て長いのにそのままって事は直す気ないというか、余裕ないって事なのかなって。

そのまま慌ただしくDEATH STRANDINGに突入。元コナミ勢の新規IP立ち上げタイトルが続いて嬉しい。導入部の演出は流石だなぁ、と思う。画面を見てここまで手に汗握って主人公とともに心臓ドックンドックンさせた経験なんて未だかつて映画でもゲームでもなかった。VR以上の没入感。ゲーム自体は、普通にやったらストレスでしかないような作業の積み上げをゲームとしてきっちり仕上げてて凄い。俺、なんでゲームでこんな苦しんでるんだろ、とか思いながら楽しめる。その辺りはシナリオや演出に見え隠れする演出なのかな、と思いました。キャラクターやシナリオの魅力はいつも通りB級感を絶妙に織り交ぜた安定したAAAというか。いつもどおりに楽しめました。フラジャイルのお姉ちゃんとか、スナッチャーのランダム・ハジルっぽさが好き。

で、ここまで来てようやく閃の軌跡IIに戻るチャンス。いっきにクリアしておきました。なんか好感度システムとか、もはや葉鍵と言っても良い感じで。アリサで進めたけど、まさかのキスシーンとかあってびっくりした。そもそもBGMとか僕が知ってる範囲でも葉鍵やKIDのオマージュがちょこちょこ混ざってるし。これ男子の高感度上げて進めると何が起きるのか怖い。あと、ちょこちょこヨシュアとかエステルの名前が出てくるので空の軌跡もやりかけたSCの続きをやらないとかなぁ……という気がしてきて困った。閃の軌跡I/IIはPS4版では高速モードが付いてるので半分の時間で通せるけど、他の軌跡やってたら時間いくらあっても足らない。そうそう高速モードと言えばミニゲームやけに難しいなぁ、と思ったら高速モードのせいだった。Iの時は気づかずに頑張ってた……。

細かいところでMomodora: 月下のレクイエムがしばらく放置されてたのでクリア。BadとTrueでエンディング。PSドラキュラをSNES風に作った感じのゲーム。てっきり日本の同人かと思ったけど海外のインディーズかな。良く出来てました。

あとは出張中にザ・スーパー忍をステージ単位でのQuick Save/Loadを使わせてもらってなんとか初クリア。中学生の頃やった時は何ステージあるのかわからずに頑張ってたけど、オーラスまで行ってたみたい。やっぱり子供の頃は根性あるな。それとSwitchでアーケードの忍をやって、こっちは97コインで初クリア。現在はまだ32コインでのクリアが最高記録。1面ボスがちっとも安定しない。

PS4のディスクがパンパンなので、もう少しやりかけゲーを崩したい……(DQヒーローズあたりを消さないと……)

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信号として外に、という流れですね。

2019年9月1日日曜日

基板修理:続続・タンブルポップ

前回はPALで作ってると思われる/DTACKに課題を残して終了となったわけですが。

とりあえずTG-1、TG-4あたりの論理を読み解いてみました。TG4はバスタイミング系の信号とメモリの参照クラスFC[2:0]をとって、より細分化されたタイミングを作る組み合わせ回路の詰め合わせでした。一部はTG-1でも入力に使ってる(ので調べた)。

TG-1はまさに/DTACKを作る回路そのもの。A21が立ってないとメモリアクセスだと思って、/AS、/*DS、Rに連動して即時/DTACKをアサートする。A21が立ってるとI/Oへのアクセスだと思って、8番からの入力に連動してWRITEなら次サイクル、READなら2サイクル後に/DTACKをアサートする。プログラムはIOアクセスまで進むのでメモリ側は問題ないんだな。そっちが動かなければプログラムがそもそも動かないから。そうなると8番の入力が怪しい。

で8番からの入力を追ってみたら15AのDFFと繋がってる。Dは/ASを2サイクル遅延させたもの、CLKがChip 56のPin 151に繋がってる。となるとChip 56が応答しないのが問題に思える。Chip 56は全体的に静止状態に見えるため、そもそもクロックが入ってない気がする。Pin 153が他のFFのクロックと繋がってるためクロック入力か出力に思えるんだけど、こっちの信号も動いてない。

ところでこの基板、クロックは21.4772MHz、32.220MHz、28MHzの3系統あるんだけど、32.220MHzはYM2151用、21.4772MHzはメインCPUとOKI、で最後の28MHzはスプライト制御のChip 52に直接入ってるところまでは確認してる。Chip 52には発振回路を通さずに正弦波で直接入れてるので、中で発振させた後、クロック出力でChip 56に供給してる可能性は高いかな。どっかで断線とかなら良いけど、クロック出力が壊れてるとかだと面倒。いや、面倒という意味ではこれら2つのカスタムは128ピンと160ピンのチップなので何をするにも面倒。

TG-1周辺のロジアナ観測結果はこの通り。


予想通り、最初にIOに書き込みに行ったままだんまり。/DTACK生成周りは理解の通りに動いてる様子。となるとChip 56の入力クロック探しか……これは面倒。もし情報をもっている方がいたら提供して頂けると助かります。最悪、入力ピンと分周比さえわかれば外で作って入れても良い気はする。

そうそう、某エミュのCPUクロックはもう直ってる。

追記:まずは28MHzが入ってる97-128ピン面だけでも……と調査してみた。112-126,127がすぐ隣のRAMと8-bits x2で繋がってました。RAMのアドレスはセレクタに繋がってたからいわゆるspriteram、アトリビュートRAMみたいです。MSBのA10がGNDに繋がってたので容量半分潰してる……リッチだな。故障時はVCCに釣り上げれば交換せずに直る可能性ありですね。電源は簡単に調べられるとして、それ以外で調べきれてないのは、98-102, 108-110だけです。111が2分周で14MHzのクロックを出力してました。B16にある7404の3番に入ってるので、とりあえず問題はChip 52の外っぽい気がしてきました。よかった。

2019年8月31日土曜日

基板修理:タンブルポップ番外編

DECO製の基板はDATA EASTのロゴの入ったカスタムチップが色々と使われてるんだけど、ちょっと気になってたのが45番。チップはなんか黒塗りしたような跡があり、刻印代わりに銀色のシールで番号と社名が入っていて少し味気ないやつ。


これ、実は中身はHuC6280っぽい。基板長い人には知られた事実なのかもしれないけど、アーケード基板にPC-Engineの石が載ってるのはちょっと胸アツ。しかし、ハチ助さん隠すのに黒塗りしてたのかー。
下のはWikipediaより素の状態のHuC6280の写真。

Wikipedia HuC62のページより
あと、そうそう。mameのメインCPUに入ってるクロック、間違ってるなぁ……。14MHzが入ってるけど、CPUに来てるのは21.4772の2分周です。まぁ、すぐ直るだろう。

基板修理:続・タンブルポップ

前回の調査でCPUがどのチップなのか、ピン配置はどんな感じなのか把握できたので調査の第一ステップの基盤は整った感じ。クロックやリセットの確認はできたものの、ビデオ信号も出ずに一切だんまり状態なので今回ばかりは観測を進めるしかありません。

ひとまずバスの状態を確認して手がかりを探します。

確認したところ、/AS、/UDS、/LDS、Rは全てLOW、/DTACKはやや電圧低め(3.6V)で気になるもののHIGHの範疇でした。/BERRはしっかりとHIGHを維持しているので、CPUからの書き込み完了待ちで固まっているようです。/ASがアサートされているのでアドレス値を確認したところ、0x30_0000でした。中央のChip 56(背景のタイル処理をしているカスタム)へのアクセスですね。ここより先のChipはアクティブに動作していた事を考えると、Chip 56へのアクセスに対して/DTACKを返す論理が故障なり断線なりしている、と考えるのが良さそうです。エミュレータ上でCPUの動作を確認したところ、確かに最初にI/Oに出ていく際のアドレスは0x30_0000でした。

少しCPU周りの配線を整理すると、データバスはEPROMやChip 56に直結している様子。アドレスバスはE10/11にある74245で分離されているようです。B面がCPU、A面がEPROMやChip 56に繋がっていました。デバイス側からのバスへのアクセスなら/BRを使えば良いはずなのですが、本来の並びだと/BGACKや/BRが存在するはずのピンがVCCとなっているため、もしかしたらこの68カスタムは外部からのバス開放が要求できないのかな?その代替として外部でバスを切り離せるようにしているのかも。にしてもHALTとか他にも代替方法ある気がするので、いまいち必要性が理解できていません。

/DTACKについてはTG-1とタグの打たれたPALに繋がっていました。タンブルポップに関して言えばPALの論理は全部解析済みなので、万が一壊れてても問題なさそう。おそらくアドレスデコーダとバス応答をTU-1/2、TG-1/4あたりで組んでいるだろう、と踏んでおり、次回はその辺の接続関係の確認と論理の理解かな。

という事で、見えない進展ばかりだけど今回はここまで。西遊降魔録の件でかなり基板設計の気持ちがわかってきた気がする。

2019年8月30日金曜日

基板修理:西遊降魔録・完

SRAM待ちかと思ってたんだけど、画面の壊れ方を考えてたらSRAM出力のbit1がHIGHに張り付いてる気がしてきて。とりあえずエミュレーションで試してみたところ……


うん、壊れ方は完全に一致だ。パタンが2個毎に繰り返してたのは、パタンがループしてたわけじゃなくて、元データでたまたまインクリメンタルに並んでたはずのタイル番号がbit1がHIGHに張り付くことで0,1,2,3....となるはずのデータが2,3,2,3,...ってなってただけという。

ここまで来て、スクロールがなんかカクカクしてるのは「そういうもんか」と思ってたんだけど、もしかしたら同じ理由なんじゃないかと思えてきて。回路上はスクロールを保持するレジスタはX、Yともに2枚目の基板に並んでる。ちなみにXがIC3、YがIC42だと思います。んで、背景のアトリビュートRAMに入る直前の双方向バッファがIC41、アトリビュートRAMはIC40。さらに追ってないけどスプライト関連も同じデータバスの後段にぶら下がってる。そうなるとSRAMの故障というよりは手前でデータバスが破損してるんじゃないかと思えてくる。

という事で、データバスの破損をエミュレーションしてみたところ、ガクガクのスクロールや画面端でスプライトがチラチラする現象も再現できました。




そんなわけで希望をもって調べたら、ボード間接続のコネクタから出てるデータバスが、2枚目のボードの最初のICに繋がる手前で断線してた。見た目じゃわからないし、それなりに余裕ある配線には見えるんだけど。クロックも同じように断線してたし、flipの多い配線は疲労破壊しやすいんですかね。

そんなわけで、最後はわりとあっさり完動までいきました。結局のところ不具合は2枚目ボードの接続コネクタ付近で断線が2箇所って事になります。



しっかし悪役ヅラな主人公。デーモン閣下みたいな孫悟空。

2019年8月26日月曜日

基板修理:続・西遊降魔録

タイル化けがわりと簡単かもって事で少し見てたんだけど、実はこいつのタイル周りはあまり解析されていないようでした。背景用のROMも実は正規基板からダンプされた事はないらしく、基板上のどこにデータがあるのか不明、とされている……。

そんなわけで少し調べてみたところ2枚目の基板に載ってるTRJ-100ってやつに入ってるらしい。V'BALLにこれの後継のTRJ-101ってのが載ってるんだけどピン数も少なくて参考にはならなそう。まぁ、周辺回路を調べてDounble Dragonの回路図と見比べれば何かわかるかなー、って事で、ここ数日暇を見つけてばストレス解消にテスターあててました。

ってことでTRJ-100の中身は掌握。タイルの回路もだいたい理解できました。

TRJ-100について先に記録しておくと、これはただのメモリではなく、複数サイクルに分かれてるアトリビュートデータからキャラクタ番号やパレットを取り出し、タイミング信号と合わせてメモリの読み出しアドレスを作ったり、読んだデータをピクセルクロックに合わせてシフトして送り出したり、さらにはキャラ反転や画面フリップなんかを処理したりする回路も込みでワンチップ化されていました。

Double Dragonの回路で言うと、IC38/39, IC58/59あたりの回路がアトリビュートをラッチしてキャラクタ番号やパレット番号を取り出す部分ですね。で、出回ってる回路図でいう2枚目のボードの9ページ目がタイミング情報(生成中のX/Y座標の下位4ビットずつ)を使ってアドレスを作っている部分、メモリ本体、読みだしたデータをタイミングに合わせてシフトしてピクセルデータを作ってる部分、あとはパレット番号を表示期間分に引き伸ばして出力してる部分。あとは細かくフリップ情報見てシフトする向きやらアドレスの回転方向を変えてる部分。これが全部まとまったのがTRJ-100のようです。

という事で、頑張ればアダプター作ってダンプして確認とかできるんですが、間接的な観測しかできないので、期待するデータが外まで出てくる入力条件を作ってやるのちょっと面倒。

そこまでわかった上でキャラ化けを考えてみたいところなんだけど。タイルが2枚とか4枚で変なループができてたりするので、考えられる線でいうとタイミング情報で0か1に張り付いてるビットがいる可能性。これは経路上でスクロールのための加算器とか挟まってるので、壊れ得る箇所は複数ある。あとはアトリビュート用のRAMが壊れてるパタン。これも良くある故障パターンなので説明できる。あとはTRJ-100の中にあるROMのアドレス線が壊れてるパタンかな。化け方的には中で論理が挟まってる場所ではなさそう、という判断。気になるのはX方向、Y方向に似たようなパタンのループが発生する化け方って点。これに関しては1点の故障では説明できなく、たまたま対象的に壊れたとしか思えない。

とりあえずタイミングに関してはIC17/18っていうDouble Dragonと同じ番号の石がHPOSを作っていて、これを見る限りは0〜255、0〜64、191〜255っていうカウントを続けており、最初の256カウントが水平表示期間、それ以外の部分が水平帰線期間で少なくとも表示期間に問題が起きるようには思えない。アトリビュートRAMの入力値も確認したけど途中で壊れてはいなそう。そうなるとメモリ系だなぁ……。という事で、今回は進展がないままSRAMを発注して一時休止。

ちなみにSRAMは2Kx8bitのやつがボード上に点在してるんだけど、IC40がいわゆるbgvideoramで確定。回路図8ページで言うと上がX、下がYの扱いになってて、最初にあるFFがCPUが直接スクロール値を書き込む場所。それを4bitずつに分けて加算、その計算結果がタイル描画用にSRAMを読み出すための情報になります。もう一方でデータバスの値も入ってきていて最集段でアトリビュートRAMへのアクセスかどうかでSRAMの入力を選択。CPUからの書き込みが優先されるので、表示期間中に触ると読み書き時のデータが画像表示系に流入してノイズが表示されるはず。

スプライト側の回路を読めてないので間違っているかもだけど、おそらくfgvideoram側はタイル側の回路ではなくスプライト側の回路で処理されている気がする。文字とかステータス表示に使われてる部分です。

2019年8月20日火曜日

基板修理:タンブルポップ(進展なし)

完全無反応系ジャンク。カスタムばかりでCPUがどこにあるのかも分かりにくい。

タンブルポップとは直接関係ないけど、deco16ic.cppを見るとデータイースト製のカスタムについて一覧がある。これによれば上方にある52番はスプライト用の画像処理チップ、中央の56はタイル用の画像処理チップ、んで肝心のCPUは少し小さい59番らしい。

横長のQFPって事で標準的な68Kとはピン配置が違うのかなぁ、と思って調べる前に検索してみたら、Porchyさんが主要なピンは調べてくれてた。

CLKが57番って事で確認したら正しく入ってた。この基板、オープンだと中間電位取るみたいでCMOSから入った人間としてはギョッとなるんだけど、バスはきっちり0に張り付いてたのでHALTが入ってるわけでもなさそう。/RESETはPorchyさんの資料にはないんだけど、今回はわかりやすくPST518Aっていうリセット用トランジスタが近くにいたので、それを追いかけてみたらフィルタ→シュミットトリガINV→INVって流れで60に入ってたので、/RESETは60番で確定で良いと思う。となりの59にもHIGHが入ってたから並びの傾向的にここがHALTの可能性は高いかな。というかこれ、DIPの23→64→1→22って並びかも。ならHALTも確定。んー、そうなるとDTACK待ちか、バス解放待ちか、残りのピンを調べてみないとか。

ボード全体で見るとカスタム52はそれっぽく信号が流れてるけど、56と59は動いてない。PALも中間電位で浮いてるピンがあって怪しいなーって思ったんだけど、論理を展開して覗いてみたら未使用入力ピンだった。この辺りを壊してCMOSのGALでreproするって時は気をつけないと怖い。

2019年8月19日月曜日

基板修理:西遊降魔録(不完全)

今日手を付けようと思っていたまったく起動しない基板3枚のうちの1つ。

電源を入れると


こんな感じの画面で固まりっぱなし。映像系が最低限生きてる事は確認できるんだけど。

ひとまずCPUが動いてないか暴走してるのは確かだろうから、その辺から確認。まずはクロックを調べたんだけど、入ってないかなぁ……って事で、しばらくクロックを追いかけてました。12MHzを分周した1.5MHzで動いてるはずなので12MHzを探すと、なんか下ボードに。Double Dragonの回路図は探すと見つかったりするんだけど、チップ番号とか使ってる74は微妙に違う。けど論理はわりと似てるようなので参考にする事にしました。ボード繋いでるJ1、J2の端子とか、信号の並びが同じかも。少なくともタイミング系の信号は同じ。HCLKっていう6MHzがコネクタ通って上ボードに来ていて。ただ、このクロックがどこを通ってHD6809まで辿り着いてるのかなかなか追えない。

6809はハード側はあまり詳しくないので、気分転換がてら資料を漁っていると……どうやら同じHD6809でもEがつくやつはピン配置とクロックの扱いが違うらしい……って見るとHD6809Eって書いてあるし!通常の6809はXTAL/EXTALにクロック繋いで発振させ、EとQのクロックを外に出す事になってるんだけど、6809EはXTAL/EXTAL端子がなくて。外部で作ったEとQに合わせて動く仕様らしい。で、見たらEは1.5MHzが入ってた。

んじゃクロックは良いのかなって事で他の端子を見ていて/NMIが下がりっぱなしなのが気になっちゃって。調べたらVSYNC割り込みが入ってるらしいんだけど、これが下がりっぱなし。しばらく回路図見てたら、DFFの/Qが繋がってて、VSYNC来たら5Vに釣り上げられてるDを拾って/QがLOWになって割り込み。近くのデコーダ出力の1つがCLRに入ってて、同じく5Vに釣り上げられた/PREを拾って/QがHIGHに戻って割り込み解除。たぶんCPUからアドレス叩いて解除とかかな?ってなると、これはこれで正しそう。

って事でもう1度CPUに戻ってクロック周りみたら、Eは入ってるけどQが中間電位でフラフラしてた。あれ?なんでこんなに露骨に怪しいのに気づかなかったんだろう……。やっぱり慣れてない物をデバッグしてると決定的な状況証拠があってもスルーしがち。気づくと当たり前すぎて「なんで気づかないの?!」とか思っちゃうけど、やっぱり難しい。

で、Qはやっぱり下ボードから来てる。見た目じゃ全然わからないけど、テスターで追ってたら基板上のパタンで断線してました。パタンというか、たぶんビアですね。ガチガチに錆びてて半田も寄せ付けない状況だったので、ビアを補強で復活させる事はあきらめ、出力元チップの足からパッチしました。


ホコリだらけなのも気になるけど、下手に洗うとパタン壊しそうで……。これで電源を入れたら……


わーい、起動したけど化け化け(笑)背景パタンが崩れてスプライトは表示されず画面端でチラチラしてる物がある。起動時テストは通ってるのでCPUから見える範囲ではエラーないはずなんだけど。スプライトアトリビュートとかタイルマップ保存用のRAMあたりが死んでるかなぁ。ひとまず進展ありなのでメモだけとって、あとは次回のお楽しみ(?)

2019年8月18日日曜日

基板修理:ガンバード

詳細不明の彩京基板って事で手に入れたガンバード。基板の外見からガンバードだってとこまではわかってたんだけど基本ジャンク。起動してみたら一部のオブジェクトが化けていました。数ライン置きに黒く横ラインが入る感じ。それ以外は正常なので怪我として小さい。


この症状だと考えられるパタンは大きく2つあって。1つはオブジェ面やスプライトを合成する論理の故障。古めのタイトルなら基板上に汎用ロジックで組まれているので、面倒だけど流れる信号をモニタして出力間違ってるやつを探せばなんとかなる。新しめでカスタムチップの中だとお手上げ。もう1つはデータ格納してるROM周り。この手の化け方だとアドレス線かデータ線で断線がある可能性が濃厚だけど、メモリの故障パタンも同じような症例になる。

という事で、最初の切り分けは合成論理なのかデータなのか、という点。前者はキャラ化けが表示面についてくる、後者はパタンについてくる、という特徴がある。この辺はエミュレータ使って切り分けると楽で、画像系のROMを1つずつオール0の空ROMと置き換えて様子をみてやると良い。


こんな感じで、化けてたパタンのみが豆腐になった。って事でデータ側を疑う事に。一通り調べた限り、他のROMは正常のようです。

次はROMなのか配線なのか確認。本当なら外して読んでみるのが早いんだけど、今回対象だったu25はSOPのマスクROM。画像系はわりとマスクROMで基板に直半田って事が多いし、外すことを考えると実はSOPの方がDIPより楽、かな。でも、まずは配線の確認。u14、u15、u24、u25の4枚が並んでおり、ペアではなくそれぞれが16-bitsデータバスでリニアに配置されてるのがpsikyo.cppからわかります。ただ、故障のu25だけサイズが半分。だから他のがOKI製なのに、こいつだけSHARP製で仲間外れなのね。そこだけ気をつけて配線の確認に入ります。マスクROMのピンアサインは見つからない事も多いんですが、今回はOKIのM531602のデータが手に入りました。

NC1M53160244NC
A18244 PIN SOP43A19
A17342A8
A7441A9
A6540A10
A5639A11
A4738A12
A3837A13
A2936A14
A11035A15
A01134A16
/CE1233/BYTE
GND1332GND
/OE1431D15/A-1
D01530D7
D81629D14
D11728D6
D91827D13
D21926D5
D102025D12
D32124D4
D112123VCC

アドレスとデータは全部共有バスに繋がってるはずなので、u25とu24の対応する足の導通チェックをしていきます。調べたところ全部問題ありませんし、どうやらSHARPのLH538BNTとOKIのM531602は、サイズは違うけどピン配置は完全に同じようです。A19も繋がっているので、他のROMと同様に倍サイズ載せることもできるようです。

このサイズのROMを置き換えようとするとフラッシュしかなくて、フラッシュはだいたい3.3Vだったりするのですが、このサイズだとギリギリ5Vのフラッシュがありますね。AMDのAM29F800Bを使う事にしました。配置もほぼ一緒。ここでフラッシュを手配して、届くまでしばらくは修理はおあずけ。

届いてから修理再開です。



ヒートガンで綺麗に剥がれる。というか自作基板で表面実装を散々こなしてきたので、既存基板をいじるのも怖くなくなりました。外したROMを読んでエミュレータに突っ込んでみます。


化け方、完全一致。という事でフラッシュを焼いて半田付けします。

この際、フラッシュはピン配置が若干違うので注意が必要。


RY//BY1AM29F800B44/RESET
A18244 PIN SOP43/WE
A17342A8
A7441A9
A6540A10
A5639A11
A4738A12
A3837A13
A2936A14
A11035A15
A01134A16
/CE1233/BYTE
GND1332GND
/OE1431D15/A-1
D01530D7
D81629D14
D11728D6
D91827D13
D21926D5
D102025D12
D32124D4
D112123VCC

1番、43番、44番の3つ。

1番はBUSY出力でマスクROMではNCだった箇所なので特に対処しなくても良いのかもしれません。が、基板上でGNDや5Vにターミネートされてる可能性もあるので、安全のため足を上げておきます。

43番は書き込み制御。A19が来ているピンなので0になったり1になったりしますし、この石を読みに来た時は確実に0になってるのでアウトです(笑)。足を上げて電源に繋ぐ必要があります。

44番はリセット。これもNCでふらついていると動作しないので、同様に足を上げて電源に。


こんな感じで。見た目はイマイチだけど基板側にダメージ残すよりはこっちの方が好み。


はい、ばっちり。ってことで

大儲け〜♪

(ただし、人件費については考えない事とする)