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さんだったのか……相変わらず世界は狭い。

2020年1月24日金曜日

2019年冬のゲーム

予定どおりドラゴンクエストヒーローズをクリア。



そんなに時間かかるタイトルってわけじゃないんだけど。4年前はまだゲームは厳しく制限してたし。ゲーム自体は少したるいというか。最近のイースくらいのアクション性があれば戦ってるだけでも楽しいんだけど、万人向けに簡単化されすぎちゃってて、ただ硬かったり大量だったりの敵を無双してても眠くなっちゃうという。でもまぁ、資産重要っていうか。名シーンを思い出す名曲の数々がずるいよねっていう。おまけ程度のシナリオでもラーミアの曲が流れただけで涙腺緩むから。

とりあえず2019年中に片付けたゲームはここまで。

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ヒーローズあたりを消さないと……)