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側はタイル側の回路ではなくスプライト側の回路で処理されている気がする。文字とかステータス表示に使われてる部分です。

0 件のコメント: