ラベル 基板修理 の投稿を表示しています。 すべての投稿を表示
ラベル 基板修理 の投稿を表示しています。 すべての投稿を表示

2024年2月28日水曜日

X68000 EXPERT SASIポートの修理

昨年にX68000 修理にて復活!という投稿をしました。

電源をATX電源化、電池はケース化したうえで交換、VRAMが1つ故障していたので交換したところまでが修理の内容でした。ハードディスクはXVIを使って吸い出したもののEXPERTのSASIポートではうまく動作しないままでした。今回はその残るSASIポートの修理についてのメモです。

SASIポート周りについてはOutside X68000付属の初代機の回路図が参考になります。各ポートの制御はIX0909というカスタムチップが1つ鎮座しており、ソフトに見えるレジスタはおそらくその中に入っています。SASIはハードでは制御らしい制御はなく、このカスタムがレジスタアクセスに応じて直接SASIバスの信号を出し入れし、その外にある回路はバッファ程度なので、壊れるとしたらカスタムかバッファに使われているロジックIC、後者なら交換で簡単に直せるはずです。

初代機とEXPERTではカスタムチップの型番とピン配置が少し違います。ロジックICも使っているピンが違ったりはするのですが、基本的には同じ構成です。データバスは74LS642で出し受けしており、双方向バッファの方向は外から入ってくるI/Oで決まりますが、開放時は出力方向になっています。制御信号のうち入力は74LS19がシュミットトリガーで受け、出力は74LS38でオープンコレクタ。すべての信号がロジックの内側は5V、外側は約3Vで動いており、抵抗で分圧したうえでpull-upされてます。

場所的には底面基板に各種IOやFM音源がいます。CPU側のメイン基板から来てるケーブルにバスが全部載っており、電源側の基板からは電源と各ポートの入出力が繋がってます。Sと書かれた2本線がサウンド出力で内蔵スピーカーに向かっているようです。

投稿でカスタムと642の場所を説明してますが、さらに38は642の右に2つ並んでる38のうち左側のものがSASIとカスタムの間にあるやつです。今回は642にあたりを付けて交換しましたが、制御がおかしい場合にはこの38を交換する必要があるかもしれません。他にはアレイ抵抗が壊れてショートしていないかなども注意した方が良いと思いますが、底面基板なので電源入れて直接電圧を確認するのは難しいです。もし怪しいと思ったら、外に出てるSASIポートの電圧で確認するのが良いと思います。

データバスに関してはソフトでレジスタ叩いて出力の変化を見るのが良いかもしれません。

カスタムは出力中でもピンの電位を読み出せるようです。つまり、書いた後に読んだ値が実際にカスタムと642の間のデータバスの電位になります。ここで値がおかしいようなら642が外向きになっていなかったり、バッファが死んで常にGNDやVCCに張り付いているような状況が疑われます。一部張り付いているなら642を、全部張り付いてるなら38から入ってるI/Oを疑うのが良いかもしれません。またこの値は反転した形でSASIのデータバスに出ますから、ポートの電圧を測る事で642経由で期待通りの信号が出てるか確認できます。bitの値が0なら約3V、1なら約0Vですね。

今回は交換するまでは良かったんですが、交換時にソケット化したせいでICの位置が高くなってしまいシールドに接触するという大失態を侵しました。場所的にまさにシールドが出っ張っている位置なので要注意です。C1とか81あたりしか書けなかったら同じことをやらかしてる可能性大(笑)

という事でSASIポートが直ったのでSxSIを使ってBlueSCSIを接続するわけですが、それはまた別のエントリで詳しく書こうと思います。

ちなみにSASIのバスを3Vで駆動しているけど、これは何もバスが3V論理だという事ではないようです。SCSIの仕様書をみると5Vも許容範囲ですし、EXPERTや初代の回路的にも5Vを受けられるように設計されてます。3Vでpull-upしているのはターミネーターの推奨値だからかな?初代機の抵抗値はSCSIリファレンスの分圧でターミネートする時の推奨値でした。EXPERTはもう少し小さい値で近い比率で分圧してたように思います(具体的な数字はメモしてなくて忘れてしまった)。

2023年1月30日月曜日

X68000 修理にて復活!

はじめに

X68Z ハッカーズエディションを試せる事になったので、それに先立ってずっと故障したままだったX68k EXPERTの修理をし、無事元気になったのでその報告です。

壊れた経緯は例にもれず電源です。ただ大学のサークルの部室に置き去りにしてたのが、煙を吹いて動かなくなったという連絡があって。それを回収してそのまま20年近く放置してたのかな?それ以来、ハードディスクも火を入れずにずっとしまい込んでた。

ちなみに他にcompact XVIというかredzoneも所有していて、あとはサンデーネットが閉じる時にもらったXVIを所有してますが、両方とも電源が理由で死んでました。XVIも電源修理であっさり直ってますが、特に新しい話題はないのでEXPERTの修理の話を発掘しやすいようにまとめとこうと思います。

まずは電源から

という事で、まずは電源交換の本スレがこちら。

BEEPさんで購入した、同人サークルさんがセットで用意してくれたPico PSU換装キット。今回は日和ってまずは確実に動く状態にしようと安全側に倒しました。キットがなくても12V、5V、-12Vを拝借できれば良いので、この手のがなくなっても最悪どうにでもなるのかな、と思いました。今なら修理方法も世の中に出回ってるし、ヤフオクで交換部品のセットを安くまとめてくれてる人もいるので、そういうのを利用すれば数千円くらいで直せるんじゃないかな?Pico PSUだと5Vの供給が足りないかもアドバイスもあったので、Phantomで強力なラズパイを使うとか、拡張ボードを挿してるなんて場合は電源を修理した方が良いのでしょうね。

エラーが発生しました。リセットして下さい。

電源は入ったものの最初みたメッセージはこれ。やっぱり何か壊れてる?

って事で、この時点で一番怪しいのはSRAMのデータが飛んでる事態。まぁ、長年放置してたわけで、当然バックアップの電池は死んでますね。SRAMの内容が壊れてるとブートデバイスの情報も消えてるので、結果としてさっきの画面に飛ぶのかな。なのでOpt.1を押してFDから強制起動を試すことで先に進めます。まぁ、普通はここでFDDが死んでて起動できない気もしますが。しまい込んでたと言っても、ずっとマンション内で空調の効いた仕事部屋に安置されてたので状態は良かったようです。

電池交換

続けて電池交換はこちら。EXPERTだと+側の2端子のうち1つはN/Cなので、パターンを見て繋がってるほうにハンダしてあげて下さい。使ったのはCR2450だけど3Vならなんでも良いのかな?

電池が入ればOpt.1でHumanなりを起動してswitch.xで設定してやればエラーは出なくなります。

テキストVRAMの交換

何事もなければこれで修理完了だったんでしょうけど、残念ながら他にも壊れてました。

こんな感じで画面の上の方に点線が現れます。これだけなら少しノイズがあるだけで我慢できますが、テキスト面で画面上方となると、スクロール等で画面中にコピーされまくります。特にテキストはピクセル単位じゃなくプレーン方式なので、特定のプレーンだけゴミが撒き散らされて。用途によってはパレットをうまく使ってマスク用プレーンにしてたりするんで文字がまったく見えなくなっちゃったりします。

という事で奮闘開始したのがこのスレ。

まずはメモリーテストでテキストVRAMでエラーするのを確認。M51C262相当品は新品入手は難しそうだったのでAliExpressでリサイクル品を探して発注。HM53461ZPを見つけて購入しました。ワードアクセスと平行してシフトしながらビット読み出しもできる感じのマルチポートなのかな?こういうタイプのメモリは初めてだったので、変換ボード組んで載せ替えるとかは避けました。

メモリが届いてからは実際に壊れてるチップの特定作業。XVIとかはサービスマニュアルが公式から公開されてるけどEXPERTにはないんですよね。ただまぁ、そこまで変わってる部分じゃないだろうって事でXVIの回路図は確認しました。それでテキストVRAMはこの4bitのチップを4つ並べて16bitにし、各チップのメモリ空間がちょうど1プレーン分ある事がわかります。なので、それをx4で4プレーン分載せて合計16枚でテキストVRAMを構成してる。シルクで書かれてるIC番号は当然XVIとは違うけど、まぁ同じような順番だよねっていう想像もできるので、若い番号からプレーンごとに並んでるんだろうな、という予想もできます。

実際に壊れた箇所は自分でテストプログラムを書いて詳細に調べました。$00e60e00 - $00e60fff にかけてbit 10-11の2bitがhighにならなくなってたので、最終プレーンでbit 8-11を担当してるチップを交換すれば良い事になります。プレーン内の並びは回路図の信号名で当たりをつけてLSB側から並んでると判断。という事で、16個中の15番目のメモリが怪しい。

VICONから配線を追うことができればEnableがどこに繋がってるかで並びは確定できるんですが、拡張スロットの下にあって調べられませんでした。拡張スロットって外せるんですかね?

そんなわけでメモリ交換はシュッ太郎の出番。ただ電源ピンはかなり苦戦します。昔は原因理解してなかったんだけど、これって当時の基板はthermal reliefとか考えてなかったからですよね。ベタで繋がってるんで熱が逃げちゃうから基板全体を温めるか火力を上げるか、みたいな。この辺はベテランの人のノウハウを知りたいところなんですが、自分はわりと細いドリルで掘りがち。今回もチップは抜けたけどGNDの穴は再び塞がっちゃって。グリグリやって穴を確保しました。

という事で、EXPERTは左からplane 1の3:0、7:4、11:8、15:12、plane 2の同じく、plane 3、4って順に並んでるので、もしテキストVRAMが壊れて交換が必要って人がいましたら参考まで。

ハードディスク

SxSIでSCSI読めてたはずなんですが、どうもsusieで認識しない。ハードディスクも怪しいし、68も怪しいし、加えてPhantomを載せてたから問題の切り分けが難しい。という事で、ハードディスクはXVIを直してそっちで救出しました。SCSIボードも持ってたはずなんだけど、誰かにあげた記憶もあって見つからず。本体にSCSIついてるXVIで面倒だけど確実にチェックする方法を選びました。

ハードディスクのサルベージに関してはPhantomさんが本当にスグレモノで。SDカード上に仮想ディスクを作ってくれるので、ハードディスクが無事認識したらmintで仮想ディスクに全部コピーしました。奇跡的にも全部読めたんですよ、もうびっくりです。吸い上げたディスクイメージはクラウドとバックアップストレージに入ったので、たぶんもう僕の命より堅牢。

吸い出し後はPhantomを今回修理した長年の相棒でもあるEXPERTに戻し本格的に再運用を開始しました。

SxSIはおそらく自作で追加したパリティ回路の74が壊れてるんじゃないかと予想。バスリセットとかは飛んでディスクは反応してるんですよね。パリティエラーでネゴれてない印象でした。

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年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画面出力)

2020年8月13日木曜日

基板修理:続・ムーンクレスタ

以前、メインボードだけの状態からサブボードを全部自作して復活させたムーンクレスタですが、追加で少し直した場所があるので記録。

1つ目はこれで。まぁ、ぶっちゃけマルチになってるんだけど。 

で、最後の修理はショット音。ざっくり信号の流れを書くと、9Lで0xA805へのアクセスを受けてショット音のトリガの一方はそのままダイオードとコンデンサを使って徐々に減衰する信号となり、他方は8LのNANDの1番、2番へ入り、要はINVとして使って反転した出力が3番から外へ出て7SのNE555へ。この555からの出力と先程の減衰信号が7Rにある4066へ入りショット音を形成し、最終的には7Tのオペアンプを通った後に他のサウンドと合成されてボリューム回路部分へ流れていく。で、最初はサウンドの要であろう555を疑ったんだけど、それは間違いで。よくよくオペアンプの入力を圧電ブザーに繋げてみたら、それっぽい効果音が作られてた。そんなわけで7Tのオペアンプを交換したら無事にショット音も鳴るようになりました。

これで一応、自分で気づける範囲ではすべて正常動作するようになりました。めでたし。 

2020年8月12日水曜日

基板修理:鉄拳3

久しぶりの基板修理。あまり精神的な余裕がなくて……と思ってやってなかったけど、違うな。修理した方が気分がスッキリした。

という事で、起動しないSystem12の鉄拳3の修理。まずはどのボードに不具合があるのか調べるためにSONYの基板COH-700を同じくSystem12のワースタ99と交換。これであっさり起動してくれました。

COH-700に関してはあまり個人でできる事はないような気がしてたんだけど、とりあえず電解コンデンサの交換は海外の掲示板でそれなりに見かけたので練習がてら実施。表面実装のところを敢えてリードタイプに置き換え。表面実装は古くなってから載せ替えるとパターン剥がしちゃいそうだし。

画面の同期信号は来ていたのでCPUまわりかなぁ……と右下のやつから交換してったのですがハズレ。下のがCPUで真ん中がGPU、上の2枚がGPUフレームバッファ用のメモリかな。一番上のnamcoロゴの横のやつが天井に穴っぽいのが空いていて容量が半分くらいになってました。ここまで交換した時点でたまに起動したり、起動しなくても最初に画面周りの初期化が走る際に画面が点滅したり。他のコンデンサは「念の為のノイズ対策」で動作に大きく影響しなさそうだったんだけど、今回は経験値上げるって事で一通り交換。やっぱり変化なし。

その後、接触の悪いICがないか調査。大きなやつの足がきちんとハンダ付けされてるか、オシレータとかも含めて表面実装の小さいやつが欠けてないかとか目視で確認したんだけど気づくような問題はなし。各チップを押したり基板に少し力を加えたりすると不安定になるのはわかる。止まるときは画面も音楽も固まってしばらくしたらリセット、という動作。クロックとかリセットを疑ったんだけど違う。CPUのバス化けかなぁ……とメモリのハンダ付けをし直してみたけど効果なし。


触ると不安定になる事は多かったんだけど関係ないだろうと思ってた左上のMC44200FTを最後に確認。基板の中央側に当たるチップ右側の足をハンダ補強したところ……安定しました。うーん、このチップについてはデータシートが見当たらなくて、でもまぁ見てわかるようにRGBのDACなんですよね。不具合あっても画面でなくなるくらいでCPUやサウンドは動くと思ってたんですけど、そうでもないんですね。基板むずかしい。

2020年1月25日土曜日

基板修理:ムーンクレスタ


っていう。結局、サブボード一通り作って動作確認したら、やっぱり動かなくて調査したところメインRAMが死亡。交換して修理できました、という話。

手始めにまず面倒なコネクタをJAMMAに変換するところから。


合致したコネクタを探すのも面倒なので、直接ハンダ付けで済ませようと、こんな基板を用意しました。


裏側からこんな形でハンダ付けする事もできますし、表面からピンをホールに通してハンダ付けする事もできます。今回、表でハンダ付けすると変換基板にミスがあった時に取り外すのが難しくなりそうだったので、炙れば剥がせる裏面から攻めました。


表はこんな感じになるので、万が一オリジナルのO/P/Q端子が必要になっても大丈夫。

で、サブボード系のうちまずはメモリ。同じチップが入手できればボード起こす必要はなかったんだけど、探す手間とコスト、今後のメンテナンス性を考えたら基板を起こした方が早かったので。


一番右上に並ぶ1ビットx5のRAM。これらは全部同じアドレス、同じタイミングでアクセスされるので普通の8ビットSRAMで置き換えました。4044ではデータ入力と出力それぞれが別ピンになっているため、入出力共通の今どきのSRAMに繋げるにはtri-stateで受けてR/Wで出力を切り替えてあげる必要があります。本来の挙動を忠実に再現するためには、書き込み中にZを出力するためにもう1つtri-stateが必要なのですが、書き込み値をそのまま外に垂れ流しても外部回路的にOKだったため省略しています。


もう1つはこれ。VRAMに使われているメモリだった気がする。うっかりtri-stateに繋ぐ信号を間違えて基板を作ってしまったため、パッチで直してます。下をくぐってる3本の線は関係ありません。元々ムーンクレスタで使ってるオブジェクトのバンク切り替え用の配線です。本来(ギャラクシアンが)coin lockの出力に使っていたレジスタの値をバンク指定に流用しているようです。


これはオブジェクト用のROM。16bit幅で元々は複数の8-bit ROMに分割されていました。サイズも小さいので16-bit幅のEPROMを使用。それでも容量あまりまくりなので、とりあえずDIPSWで4面分データを入れられるようにしてあります。接続されてる3本の線は先程の説明の通り、coin lockから。バンク制御はDIPSWの値を見ながらGALで制御できるようにしてあります。


これはPROMの置き換え。PROMは入手はできるけど書き込み環境を揃えるのが困難なので……。ちなみにパレット用です。


最後にこれはプログラム用のROM。本来はEPROMが8枚ささった大きめのサブボードになってるやつです。Enable信号のANDを取るために74の論理が1枚載ってます。また、このメインのROMは暗号化されてるのが普通なのかな?アドレスとデータで軽くシャッフルされていて、CPU側の周辺回路でdecryptしながら実行するようです。今回は面倒なのでdecrypt済みのデータを置くことに。ちなみにムーンクエーサーはM1サイクルのみdecryptするのかな?なのでdecrypt済みのデータを作るのは実行時データが必要なのでちょっと面倒そう。そのうち実験がてらdecrypt側の論理を入れたCPUボードを起こすかも。あと、もしギャラクシアンとの共通化を考えるなら、CPUボードでI/Oのアドレス変換までやっちゃうのが楽かな。

ここまで作って起動してみた状況はこちら。


SYNCはちゃんと取れてるけど、横長のドットがちょろちょろっと表示されるだけの画面。音もたまにぴーひゃららーと鳴ったり鳴らなかったり。この段階でCPUから出てるアドレス線の観測をして、正しそうな順序でリクエストが出ている事を確認。最初のリターン命令で壊れたスタックから戻りアドレスを読みだして暴走している、と予想。

という事でメインボードからメインRAMを交換。プログラムROMに近くにある2枚の2114がメインRAMです。こいつもサブボード起こしても良かったんだけど、たまたま秋葉行く用事があったし、若松通商に在庫があるようだったので、今回は2114そのままで置き換えました。



これで基本ロジックはほぼ動作する事が確認できた。オブジェクトが読めてない気がしたので作ったサブボードのGALを確認したら……論理書き込み忘れてたorz


という事で、論理を入れたら絵もでました。ただ、16ビットの上下を焼き間違えていたみたいで色がちょっと変、という事にあとから気づきましたが……。

あと、現状で気づいた問題は自機のショット音が鳴っていない点。サウンド周りはディスクリートなので難しい。後で追ってみます。

最後に基板全体像をパシャり。


備考:ここまで大規模な修理になると、お前はその破れた一万円を交換するにあたり本当に一万円札の2/3を持っていたのか?的な気分になります……特に今回はソフトウェア部分が丸々欠落していましたし。ただ、この点に関しては過去の裁判の判例をいくつか踏まえた上で、現状でエミュレーションベースの移植版を正式に保有しているので、そこからの私的複製という立場をとらせて頂きます。

備考2:コメント欄で質問があったので2枚目のVRAMボードの回路図を載せておきます。J1とJ2の名前に2101って書いてあるけど5101だな。


SOPをDIPで置き換える基板

1.27mmピッチのSOPを置き換えたい事がわりとある。ROMの類いだとパッケージ互換のEPROMが存在しなかったり、近い形状のフラッシュとかあっても若干ピン配置が違ったり。修理に際してはちょっとしたリスクだったりします。

巷でみる方法では、同サイズの基板を作り周辺にスルーホールをはみ出す形で配置、スルーホールを二分する形で基板をカットする事で足の代わりするのが一般的でしょうか。より小さい表面実装部品で代用できる場合にはこの手の基板を作るのも手です。特定のハード限定の改造などではCPUの上からソケットを被せて信号を引き出す荒業とかもみかけるけど……汎用性はいまいち。追加のパッチワークが必要な事も多いです。

で、思いついた方法があったので試してみました、という記事。


作った基板はこんな感じ。2.54mmピッチを入れ子にしたようなホールを打ってあるのですが、ここに写真のタイプのL字型ピンヘッダを使います。


こんな形で入れ子にして二列ずつ。外に向けて出して……


最後に足の長さを揃える。これで1.27mmピッチの足のできあがり。あとは表側にDIPソケットを実装して、裏に出たこの足を基板にハンダ付け。


この1.27mmピッチの部分に載せます。ハンダ面は基板の影に隠れるのでやや作業難易度が高い。最低限、となりのピンとショートしてない事は電源投入前にテスターで確認したい。


で、こんな感じ。がっつりハンダ付けされるので安定性は抜群。問題があるならば、影に入ってしまう部分の修理がしづらくなる事と、高密度な部分だと連続して何枚も置き換えるのが難しい事。でもまぁ、追加の選択肢としてもっていると安心。

基板修理:がんばれギンくん

ぱっと見、問題なさそうなものの、実はオブジェが表示されてなかった基板。遊べそうでいて、いざミニゲームが始まると何も表示されてなかったりと難易度が高いw

で、最初は曲がって刺さってるROMがあったので、これが原因かな、と思ったんだけど違った。ただ故障原因は関連してそうで。


このカスタムチップ、4辺のうち3辺で足が浮いていました。実際にピンセットとかで動かしてみないと分かりにくいのだけど。この写真で言うと右側160ピンから左に3ピン分くらいが少しずれてるのがわかるかと。

また、左のTECMO-5って書いてあるチップにも傷、すぐわきの基板面にも引っかき傷って事で、曲がってたROMも含めて物理的なダメージが入っていた可能性が大。


この辺もダメージでショートしちゃってる。

でまぁ、修理後は無事に動いております。ありがたや。


しかしギンくんもそうだけど、大学のサークルで流行ってたやはり線画で書かれたWindowsのゲームなんだっけ……としばらく考えこんだんだけど、そうそう「まさしくんハイ!」でした。懐かしい。って作者ABAさんだったのか……相変わらず世界は狭い。

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