2023年9月30日から2023年9月1日までの日記を表示中

2023年 9月30日 (土)

セガ

しまむらでまたセガの収納ボックスなどのグッズが発売になるということだったので行ってみました。午後からだったんですが、一応行ったらまだ在庫あり。ただ、多分ここにあるだけ。相変わらず厳しいですね。

行った先のしまむらのセガグッズ在庫

収納ボックスをたくさん買いたかったんですが、今回も残っていた2種類のみの購入となりました。あとはゲームギア本体柄の枕みたいなクッションを購入。

買ったもの

基板

CPicSKのマニュアル作成を開始しました。CPicS2と共通している部分も多いので、割と楽できるかな・・・?

2023年 9月29日 (金)

基板

ジャンクの麻雀学園2です。生きてい てくれ!

麻雀学園2

電池を外して、動作実績のあるスーパーパンから持ってきたCPicSKを取り付け、PICに麻雀学園2用のキー情報を書き込んでみました。

スーパーパンからCPicSKを持ってきて取り付け

起動した!何か色がちょっと変な気もするけどw

起動した

他にも音が出なかったり、麻雀コンパネを繋いでも操作ができなかったりと色々怪しかったんですが、エッジコネクタを清掃したりしているうちに改善。

入力が効くようになったのでテストモードから画面の向きを修正

色も正常になった模様

キャラ化けのようなものも見受けられませんでした。86S105も無事なようです。ふぅ。

キャラ化けなどもなさそう

おまけ。テストモードでロケでの稼働時間とかの情報と思しきものを見ることができました。かなりのインカムがあったようですね。

テストモードで出てくる稼働時間などの情報

X68000Z

X68000Zのグラディウスが横長表示になってしまう問題、何かもっと別の解決策はないのかと思い、試しにX68000ZのHDMIをFramemeisterのHDMI入力につないで、Framemeister側でアスペクトをノーマルに設定して映してみました。まあまあいい感じかも

X68000ZをFramemeisterのHDMI入力に繋いでアスペクトをノーマルに

いい感じの比率に見える

3面に出てくるマザーもだいぶ丸く見える気がする

あと、REGZA側でもアスペクトを変えられることを思い出したので、こちらも試してみました。X68000ZをREGZAのHDMI入力に直結して、リモコンの画面サイズボタンを押して「ゲームノーマル」にしたら同じようにいい感じに。こんなモードがあったこと、すっかり忘れてたよw

REGZAの画面サイズボタンで調整

ゲームノーマルにしてみた

こちらもいい感じの比率に見える

マザーも丸そう

2023年 9月28日 (木)

基板

昨日、1ピン分コネクタ位置をずらさないと問題があると判明したCPicS1 TYPE-G、コネクタの配置を修正して、配線を直し、そのままElecrowに試作を出してみました。明日から国慶節でお休みらしいので、基板が上がってくるのはだいぶ先になりそうですが。その間、CPicSKの方のマニュアル作成とCPicS1 TYPE-Fの方のデザイン検討を進めますかね。

X68000Z

X68000Zのスターターパックが届きました。

X68000Zのスターターパック届いた

中に化粧箱

おおー、これが。

本体

SDカードケース、かっこいいけど何か開けにくいっすねw。コツがあるのかな

SDカードケースが結構開けにくい

Human68kを起動させてみました。

Human68kを起動

重いw。正しくエミュレーションしていることの証?

結構重たいw

グラディウスを動かしてみました。何か左側に出ているサムネイルの時点で横長な感じですが、実際に動かしても凄く横長感ありますねw

グラディウスを動かしてみた

ドットバイドットで正方形の画素として表示しちゃうからこうなるのかな。ということは16:9の入力を潰して強制的に4:3にして映すKVC液晶に入れるとちょうど良いのでは・・・と思ってやってみたらいい感じの比率になりました。本体側にこの辺を調整する機能、あっても良さそうに思うんですが、ないのかな。

KVC液晶だとちょうどいい感じ?

続いて超連射68Kを試してみます。黒い本体にはついてこないらしいので、普通にWebからダウンロードして、普通のSDカードにディスクイメージを入れて起動させました。こっちはKVC液晶だと縦長な感じになりますね。

超連射68KはKVC液晶だと縦長感?

16:9のモニタに映した方が縦横比が自然に見えます。ブラウン管の調整で横に広げる前提なのかな。この辺の調整、基板より気を遣いますw

普通に16:9の液晶に出した方が自然?

何か楽しくなってきたので、昔買ったこの本を引っ張り出してきました。『究極!! X68000エミュレータ』です。普通に当時、本屋さんで買ったやつですね。

究極!! X68000エミュレータ

って、付属のメディアがない!?

付属のメディアがない!?

CD-ROM類をまとめてある場所にもなくて焦ったんですが、X68000の実機関連の機材と同じところに収納されているのを発見。ふぅー。

CD発見

念願のファランクスを動かしてみます。両ドライブを使う場合、SDカードを2枚使う必要があるようです。

SDカードを2枚使う模様

10年以上前に、実機で2HDbootというディスクエミュレータを使って挑戦したときは、このZOOMのロゴの先に行けなかったんですよね。どうなるか・・・

ZOOMロゴ

おおお、ちゃんとドライブ1側でデータディスクを選択したら起動した!

タイトル画面出た

おおお、これがオリジナルかー。無事遊べました。音楽をMIDIで鳴らすとかはできないんですかね。そのうち何とかなったりするのかな?

無事遊べた

おまけ。最近話題のレリクスも入っていたので動かしてみました。こちらも無事起動したようなんですが、ゲームとして正しく動いているのかどうかはよくわからず・・・。

レリクスも動かしてみた

2023年 9月27日 (水)

基板

CPicS1 TYPE-Gの基板、コネクタ以外の部品の配置を手直ししました。こんなもんかな。

コネクタ以外の部品の配置を手直し

印刷して、CPS1.5で位置合わせしてみます。

印刷して位置合わせ

あ、マッスルボマーのサブボードと合わせて気づいたんですが、この辺のROMがオスコネクタのピンと干渉しますね。同じようにROMの上にせり出す90631C-5とかだとピンが干渉しないんですが、これはBボードの接続に使っているメスコネクタが若干長めだからのようです。うーん、見落としていた。ハンダ付けする前に、干渉する位置のピンの飛び出たところをニッパで刈り取るとか、折り曲げるとかするのが無難かなぁ。

この辺のROMがオスコネクタのピンと干渉

オスコネクタのピンが当たる

・・・などと考えていたら、別の深刻な問題も発覚しました。今のコネクタの配置だと、Cボードがケースと干渉してカバーが閉まらなくなるようです。以前、コネクタの位置合わせの実験をした際は、Cボード側のオスコネクタの位置を、Bボード側のメスコネクタの位置から4ピン分ずらせば蓋が閉まることを確認したので、それに基づいて基板を設計したんですが、これだとダメだったようです。うーん、なぜ・・・。一応、オスのコネクタの位置を1ピン分内側にずらす (メスコネクタと5ピン分ずらす) とカバーが閉まるようになるんですが、まあ配線はやり直しですよね。あー、せっかく結構いい感じに引けたのに(泣)

2023年 9月26日 (火)

基板

CPicS1 TYPE-Gの基板、配線の調整が終わりました。コネクタ回りはただ繋いでるだけですが、これくらい線があると結構迫力ありますねw

CPicS1 TYPE-Gの配線調整完了

一方、コネクタ部分以外は何かスカスカで不安になりますw

コネクタ部分以外はスカスカ

2023年 9月25日 (月)

基板

CPicS1 TYPE-G、回路図から基板に落として、ざっくり配線してみました。どうしてもコネクタ接続用のスルーホール (2.54mmピッチ) のランドの間に配線を2本通す必要があるのがちょっと怖いところ。なるべく不良が出ないように、後で調整するのが良いかな。

CPicS1 TYPE-G、一応配線できた

2023年 9月24日 (日)

基板

CPicS1 TYPE-Gの回路図を作成してみました。バスの信号のラベル付けが非常に面倒くさい・・・。

CPicS1 TYPE-Gの回路図を作成

ビール

またサントリー生を箱買い。このところ、ずっとこればかり飲んでますw

サントリー生を箱買い

2023年 9月23日 (土)

地球防衛軍6

地球防衛軍6を久しぶりにプレーしてみました。購入してからそのままだったDLC第2弾で遊んでみましたが、まあ見たことのない敵がいきなり出てくるのは相当なストレスがかかりますねw

ワクチン

副反応らしきものが一切わからないまま接種から24時間が経過しました。これがファイザー製ワクチンの力なのか・・・w

ドルチェグスト

ドルチェグストを使ったら、タンクに残っていた水が盛大に漏れ出るという事故が。何か本体内から漏れ出ているような感じがしたので、カバーを外して確認してみましたが、特に怪しそうな箇所は見当たりません。

水漏れするドルチェグストを開けてみた

というか、開ける過程でカバーの爪が折れまくってほとんどなくなりました。分解しにくすぎ(汗)

カバーの爪がほぼ全滅

ググってみると、タンクと本体の接合部のパッキンが劣化するとこんな状態になるみたいな話もあるようです。パッキンはこんな状態。切れたりはしていないようですが・・・

パッキン

そしてこのパッキン、数百円で買える水道用のパッキンで代替できるっぽいです。うーん、他にダメそうなところもわからないので、ひとまず試してみますかね。というわけで、近所のホームセンターで16mm径の水道用のパッキン (パイプ外径16mm用) を買ってきました。

水道用のパッキンを購入

取り付けてみます。ぴったりはまりますね。

取り付けた

タンクを取り付けてみました。・・・むむ、まったく漏れなくなった!? 昨日の時点では中の方から漏れているように見えていましたが、どうもこれは接合部から漏れたものが、ケースの底に広がって流れ出ていただけだったようです。

漏れなくなった?

まあ、本体買い替えも覚悟していたんですが、200円くらいで直すことができてよかったです。結果的に分解自体が無駄で、片側のカバーの爪が犠牲になったのはちょっと勿体無かったですがw (パッキン自体は分解しなくてもピンセットで引き出すとかして交換できるっぽい)。ちなみに、このパッキンだと、何かタンクが押し返されて最後まで入らないときがありますね。すっとスムーズに入る場合もあるんですが、その差は何だろう。

2023年 9月22日 (金)

基板

昨日作ったキー合成ツールを使って、ワンダー3でキーに含まれるCHECK1・CHECK2のレジスタ位置をオリジナルと同等にし、なおかつキーにオリジナルと同じCHECK1・CHECK2の期待値を埋め込む実験をしてみました。

ワンダー3でCHECK1・CHECK2の実験

が、全然思ったようにいかず、クレジットを入れてゲームを開始すると、ステージ開始直後にブラックアウトするという症状のまま。5年前に実験したとき と何も変わっていません・・・。

期待値の部分をバイトスワップしたり、ビット順序を逆にしてみたりしても改善しません。もしや解析情報が間違っているのでは・・・と回路図を見てみたところ、まさにその通りでした。解析資料 に記載されているCHECK1とCHECK2の期待値の格納位置 (CHECK1-DとCHECK2-D) が回路図と逆になっており、ここを回路図に合わせた配置に直したところ、ブラックアウトがなくなりました。

画面が部落アウトしなくなった

というわけで、5年前に調べた際はよくわからないまま終わったブラックアウト問題も、これでスッキリ解消ですw。正しいキー情報のフォーマットはこうですね。

キー情報のフォーマット

しかしこのブラックアウト問題、最初にはまったのは12年以上も前のこと なんでよすね。思えば遠くへ来たものですw

ワクチン

近くの病院に5回目の接種に行ってきました。今回は初のファイザー製です (今までずっとモデルナ製だった)。今のところ副反応っぽいもの特になし。

日記みたいな

昨日に引き続きここの中身を少しいじってみました。何か変になってたらすいません。ちなみに、いじっていて気づいたんですが、先月でここはなんと20周年だったんですね。恐ろし過ぎるw

2023年 9月21日 (木)

日記みたいな

今頃ここの8月分の記録を整形したりしているんですが、動画のためにXのポストを埋め込むのも微妙な感じだったので、試しにMPEG4形式の動画を埋め込むようにしてみました。HTML5だとこんなに簡単に済むのか・・・。

基板

CPicS1向けに、CPS1のゲームごとのレジスタの配置などのコンフィギュレーション情報を読み込んで、そこからキーを生成するプログラムを作成してみました。ビット単位の切り出しとシフトがひたすら面倒くさいw

2023年 9月20日 (水)

誕生日

誕生日が来ましたが、今年は上のお子様が急に熱を出したりして、例年以上に特に何もない一日となりました(汗)

基板

92631C-6 のCPS-B-21の下にピッチ変換基板を割り込ませてセキュリティ回りの配線を90631C-5相当に変更して起動時キー書き込みができるかどうかを確認する実験の続きです。ピッチ変換基板の41番ピン側が十分に固定できていないのが気になっていたんですが、よく見たらちょうどCPS-B-21の角のところにGNDとつながっているスルーホールがあり、これを使って固定することができました。

ピッチ変換基板をGNDのスルーホールを使って追加固定

では、実際にPICによる起動時キー書き込みを試してみます。

起動時キー書き込みでキンドラを動かしてみる

あっさり起動しました。やった。またひとつ気になっていたことを確認することができました。

無事起動

続いて、Cボード (90630C-4) のパターンを確認したいのと、次の実験で使いたいのとで、ワンダー3の基板を出してきました。

ワンダー3の基板

むむむ、電池周辺が嫌な雰囲気に(汗)。電池交換時に、手の脂がついちゃったとかですかね。

電池周辺が嫌な感じ

まあ、液漏れなどは特にないようで、普通にゲームも立ち上がりました。ふぅ。

ゲーム自体は普通に起動

2023年 9月19日 (火)

基板

92631C-6 (電池なしCPS-B-21搭載Cボード) のCPS-B-21の足を浮かせて、例のピッチ変換基板を切ったものを滑り込ませて電池ありCボード (90631C-5) 相当にできるかどうかの実験。ずっと気になっていたのでw

92631C-6で実験

例のピッチ変換基板はこんな風に2個切り出して組み合わせると具合がよいです。

ピッチ変換基板はこんな感じで切り出し

ピンを浮かせて、下に絶縁用のカプトンテープを貼り、切り出しておいたピッチ変換基板を差し込んで、浮かせたピンとハンダ付け。

ピンを浮かせてカプトンテープを貼ったところ

ピッチ変換基板を差し込んで、ピンとハンダ付け

で、ピッチ変換基板のスルーホールの方にハンダを流し込み、2箇所でCボードに固定した上で、必要な信号線を引き出します。Cボードとの固定は、コネクタ CNA の9番ピンとピッチ変換基板の使っていないスルーホール (一番右端) の間およびピッチ変換基板のGNDとコネクタCNAの15番ピンの間をブリッジさせることで行いました。続きはまた明日。

スルーホールにハンダを流し込み

Cボードに2箇所で固定して、配線を引き出し

2023年 9月18日 (月)

基板

積みっぱなしだったCPicSK Rev1.0cの基板を組み立てて動作を確認してみました。

CPicSK Rev1.0c

まずは8bit基板向けの通常実装の方。

通常実装

問題なく動きました。

スーパーパンが起動

続いてCPS1.5向けに高さを抑えたロープロファイル実装の方。R2に92636D-3向けのBUSREQプルアップ抵抗を追加してあります。

CPS1.5向けのロープロファイル実装

こちらも問題なく動作しました。

天地を喰らうIIが起動

R2に搭載する抵抗の値はもう少し考えても良さそうですが、ひとまず基板の設計としてはこれで確定で良さそうです。ふぅ。

基板

CPS1.5でCPicS1をBボードとCボードの間に入れた際に、ケースがちゃんと閉まるのか、ユニバーサル基板を利用して確認してみました。

CPS1.5 + CPicS1でケースがちゃんと閉まるかどうか実験

Cボード接続用のオスコネクタを、Bボード接続用のメスコネクタの真横に配置すると蓋が閉まらなくなりますが、オスコネクタを基板の内側方向に4ピン分ずらしてあげるとギリギリ大丈夫なようです。 (追記: 再実験したらずらしが4ピン分だとカバーが閉まらず、5ピン分必要ということが判明しました。このとき何で4ピン分でOKだったのかは謎です・・・)

配置をちゃんとすれば蓋が閉まることを確認

点検に行ってきました。何となくバッテリーを交換してみたり。次はまた車検か・・・。

2023年 9月17日 (日)

基板

起動時キー書き込みの仕切り直しということで、まずはピン上げする形で信号に割り込むようにした 92641C-1 の改造を手直ししてみます。この基板、先日までのデータバスに横付けする形でキーを書き込む実験に使っていた関係で 61番ピンと62番ピンのところはピン上げを戻していました。今回は、ここを改めて上げて外に引き出せるようにするのと、雑につけていたプルダウン抵抗を何とかすることを目指します

92641C-1の改造を手直し

まずは61番ピン・62番ピンを引き出すところから。前回はピッチ変換基板を固定する良い方法がなくて強度に不安が残る状態となってしまいました。今回は信号を引き出すのに使う2ピン分のピッチ変換基板に、こんな風に使わないスルーホールをたくさん残しておくことでこの問題に対処します。

ピッチ変換基板の切り方を改善

こうしておくと、どこにも繋がっていないスルーホールを利用して基板を固定することが可能になります。今回のケースでは、61番ピン・62番ピン用のピッチ変換基板の右側は電池跡地を使って固定し、左側は元々あった41番ピンから47番ピンに繋がっているピッチ変換基板と重ねて、スルーホールのところではんだ付けして結合させてます。

しっかりCボードの基板に固定できるようになった

で、ここから必要な線を引き出します。しっかり固定できていると安心感が全然違いますねw。将来基板を起こす際は、ここはひと続きの基板として作ることになるとは思いますが、この固定方法はそのまま使えそうです。

信号線を引き出し

プルダウン抵抗の方は、PICを載せているCPicSKの基板に移設しました。デバッグ用LEDのパターンがそのまま使えていい感じにw

プルダウン抵抗はCPicSK基板に移設

動かしてみます。

動作確認

おお、動きました。よしよし。

起動時キー書き込み成功

チキチキボーイズも安定して起動します。あー気持ち良いw

チキチキボーイズもテスト

安定して起動

ここでふと、BボードとCボードのデータバスに4053 (マルチプレクサ) を挟むのは速度的に大丈夫なのか気になり、データシート見たり波形を取ったりして調べてみました。確かに4053の入り口と出口で比べるとデータシートに書いてあるくらいの遅延が入ってはいるようですが、元々ゆっくり動いているようなので、そこまで心配しなくてもいいのかな。

オシロで遅延具合を確認

2023年 9月16日 (土)

FDSKEY

家電のケンちゃんさんからFDSKEYが届きました。FDSStickがあるから要らないかなーと思っていたんですが、中の人の入荷ツイートを見てたら何か欲しくなってしまい・・・w。デザインがかっこいいですね。

FDSKEY届いた

2023年 9月15日 (金)

PIC

前々からPICのコードを書いていて気になっていたことの1つに、GPIOを入力から出力に変えたとき、なぜかデフォルトで1になっている場合があるというのがあったりするんですが、PICのマニュアルをよく読んだら何か書いてありました。理解が間違っていなければ、以下のようです。

  • GPIOの出力ポートの値をBCF命令もしくはBSF命令で1bitずつ変更する場合、GPIOからの出力用のデータを保持したラッチをRead-Modify-Writeをすることになる
  • Read-Modify-WriteのReadのときに、GPIOに入力属性のポートがあると、そのポートについては外から入力されている値を読み込んでしまう (出力属性のポートは、出力している値が読み取られる?)
  • Read-Modify-WriteのWriteによって、入力属性のポートから読み取った値が、出力用のデータを保持したラッチの、そのポートに対応したビットに設定される
  • 後々になって、入力属性のポートを出力属性に変えると、上記でラッチに設定された値が初期値として出てしまう

これが正しいとするなら、GPIOを出力に変える際の初期値をコントロールするには、まず入力属性の状態のうちにそのポートの初期値を設定して、その上で、そのポートだけを出力に切り替えればよいのかな。必ず1ポートずつ操作する感じで。

基板

これまでの実験結果などから考えると、CPS1の起動時キー書き込みをやってチキチキボーイズが起動しなくなるのは、CPS-A-01がデータバスに信号を流してくるタイミングで、PICが衝突回避のためにGPIOを入力に切り替えているからっぽいですね。その場合、こんな感じの波形が出てくるわけで、CPS-A-01によるバス操作が、(たとえ一瞬であっても)そのままCPS-B-21に認識されちゃうんだと思われます。

中央のパルスみたいなのが拾われてしまう

ていうか、普通に考えたらそうですよね。何でこれでいけると思ったんだっけ・・・(汗)。あー、当初はCPS-A-01がバスアクセスしている中でも起動時キー書き込みに成功していたからそう思ったのか。今考えてみると、あれはPICのGPIOを出力属性にしたままで、さらにデフォルトはLOWにして書き込んでいたから、そのタイミングでCPS-A-01がデータを流しても、バス上の信号はLOWのままとなり、影響を受けなかったということなのでは・・・。データをデフォルトHIGHにしたら不安定になって、クロックをデフォルトHIGHにしたらまったく起動しなくなったのも、これと辻褄が合いそうです。で、今回、律儀に衝突を避けるようにしたことで、CPS-A-01のアクセスが100% ノイズとして割り込むようになり、キー書き込みの前のロック解除すらうまくいかなくなった、みたいな。

PICのGPIOは出力にしたまま、デフォルトLOWとして、バスアクセスのタイミングだけCPS-A-01とずらすというやり方をすると衝突の影響を無効化できる可能性はありそうですが、多分電気的によろしくない状態ですよね。うーん、やはりバスに横付けする形の起動時キー書き込みは諦めて、当初のようにキー書き込み中はデータバスをBボードから切り離すことにすべきか。この1週間、何も得られなかったわけではないのが救いですが、かなり無駄なことにエネルギーを注いてでしまいましたな。はぁ。

2023年 9月14日 (木)

基板

CPS1の信号回りを見ていて、ふと気になってロジアナの設定を確認したところ、トリガレベルがTTLになっていました。もしかして、これ、CMOSレベルで見ないとだめだった・・・?とりあえず、PICが何もしていないとき、普段はHIGHになっていたデータバスが、スレッショルドが変わったことでLOW表示になりましたw

CMOS設定に変えたらデータバスの信号の雰囲気が一変w

で、今日は、CPS-A-01によるメモリアクセスを避ける上で、OBJEOに代わってHSYNC同期できないか実験してみました。OBJEOだとトグルする回数が少ない関係で、これに同期しちゃうとどうしてもCPUリセット解除までにできることが限られてしまうんで。HSYNCなら60μ秒程度の周期でずっと出続けているはずです。

HSYNCを引き出すための配線を追加

Cボードの116番ピンから信号を引き出して観測してみると、HSYNCはOBJEOと同じくらいの時間LOWになっていることが判明 (波形のグレーがHSYNC、紫がOBJEO)。CPS-A-01によるデータバスへのアクセスタイミング (波形の緑と青) とほぼ同時にHIGHに戻ってる感じですが、ここを狙って同期すれば、PICの遅さも相まって、ちょうどいい感じに処理を挟めそうです。

HSYNCに同期すれば良さそう

HSYNCに同期してキーを書くようにし、さらにメモリアクセス競合を避けるようにプログラムを修正してみたところ、チキチキボーイズでも起動してくれました。ただ、不安定で、ダメなときも多めです。

波形を観察してみると、今まで見てきた通り電源投入直後からデータが流れまくるパターンと、逆に一切データが流れないパターンの2種類があることがわかりました。後者のようなケースになる場合があったとは気が付かなかった・・・。そして、後者のパターンに当たるとうまく起動して、逆に前者のパターンに当たると起動しない傾向にあるようです。うむむ、これはもしや・・・。

2023年 9月13日 (水)

基板

CPS1の起動時キー書き込みに関して、昨日試したOBJEOに同期させた方式を実用化すべく、CPUリセット解除前にデータバスに余計な信号が流れない殿様の野望2の基板を利用して、既存のコードを段階的に変更。が、修正とテストを繰り返していたところ、突然ある変更で動かなくなり、その後、さっきまで動いていた状態にまでコードを戻しても動かないみたいな事態となってしまいました。まさかと思いながらもPICを別個体に替えたら改善。PICがヘタったのか・・・?

そして、別個体で実験を継続してわかってきたんですが、キー書き込みに使うデータ信号をデフォルトHIGHにして、書き込むタイミングで正しい値に設定するようにするとキー書き込みが不安定になるようです。さらには、クロック信号の方をデフォルトHIGHにするとまったく動かなくなるという謎現象も。うーん、ちゃんと回路的に問題ない動きになってると思うんですが、何でダメなのか・・・。うーん、苦しい。

2023年 9月12日 (火)

基板

CPS1での起動時キー書き込み、何かしらのCボード近くの信号を見張ってタイミングを合わせることで、CPS-A-01によるバスアクセスとの衝突を回避できるのではないかと考え、調査・実験してみました。それっぽそうな信号をいくつか見てみたところ、Cボードの56番ピンに来ているOBJEOというCボードへの入力信号が、(フレーム境界と思われる一部の期間だけですが) ちょうどCPS-A-01によるデータバスアクセスが発生するタイミングと同じようなタイミングで数マイクロ秒ほどHIGHになるようです (波形の黄色の信号)。

OBJEO (黄色) に同期すると良さそう?

というわけで、試しにこの信号をPICのGP3でポーリングして (PIC12F509には割り込みとかがないので・・・)、これに同期する形でデータバスを操作するようにコードを修正。結果、PIC12F509の処理能力でもいい感じに同期できて、OBJEOが1回立ち上がるたびに1回クロック信号を上げ下げできることを確認できました。写真の紫の波形がOBJEOで、緑がクロックです (ここではクロックやデータを、デフォルトでHIGHの状態にしてします)。

OBJEO (紫) に同期してクロック (緑) を動かしている

ただ、次に書き込む1bitのデータの用意に結構時間がかかるようで、このときはOBJEO 2周期分かかってしまうようですw。一応、OBJEOに同期しても、CPUリセットが解除されるまでの300ミリ秒の間に書き込みは終わるようですが、ギリギリですね・・・ (波形の黄色がHIGHになっている期間がキー書き込み期間で、右下の緑と青で塗りつぶされているところがCPUが動き出したところ)

300ミリ秒ギリギリになるw

2023年 9月11日 (月)

基板

CPS-A-01が起動直後に、どの状態になったことでバスを触ってくるのか調べるために、内部状態と関係する信号が出ていそうな112番ピンから116番ピンまでを観測してみることにしました。こんなときも秋月電子のピッチ変換基板が役立ちますw

CPS-A-01の信号を引き出し

信号を観測した結果、WSTOBJ信号が定常的に有効になっているということがわかりました (写真の波形の緑色)。どうやらCPS-A-01はCPUリセット解除前に、WSTOBJ状態になってメモリアクセスを引き起こしているようです。この状態は垂直5スキャンライン分を除いて、毎スキャンライン遷移するようです。

WSTOBJ (緑) が動きまくっていた

そしてもう一つ、大事なこともわかりました。これまで見てきた波形から、起動直後、データバスにデータが出てくるケースでも、データがまったく流れない隙間の時間帯が広く存在すると考えていたんですが、どうもこれは間違いだったようです。適当なロジアナの内部クロックではなく、きちんとCボードに供給されている16MHzのクロックを参照して波形を取ったところ、WSTOBJ信号は、起動直後から常にトグルし続けており、データ転送も60μ秒程度の間隔で常時発生していました。

実は大きな隙間時間なんてなかった

上の波形からもちょっとわかるかもしれませんが、隙間は16.6ミリ秒周期でわずかに300μ秒程度発生しているだけのようです。これはおそらく、CPS-A-01がWSTOBJ状態にならない5スキャンライン分の時間と思われます。これまで数十ミリ秒単位でデータバスに信号が流れない時間帯があるように見えていたのは、サンプリング周波数が100KHz程度と低すぎたことで周期的に信号を取りこぼすフェーズが現れ、それがデータが流れない時間帯のように見えていたということなのかもしれません。はぁ・・・。

で、改めてどうするか考えてみたんですが、これまでも、こんな状況の中、CPS-A-01のメモリアクセスを気にせずキーを書き込んだ場合、特に問題なくキーが書けていました。ということは、一瞬データが流れるくらいなら、セキュリティの書き換えに影響しないのかもしれません。そうだとすると、CPS-A-01がバスにデータを流すタイミングを避けながらキーを書き込めば、データの衝突を回避しつつキーを書き込める可能性がありそうです。これを狙ってみたいと思います。 (追記: 後々になって、これは誤解とわかりました。キー書き込み中、マザーボード側に起因するCLK信号のトグルが混ざると、それが一瞬でも起動しなくなるようです。衝突しながらも起動時キー書き込みが成功していたのは、PICの信号が出力に入りっぱなしになっていることで、衝突時にPIC側が勝っていたからだと推測されます)

2023年 9月10日 (日)

基板

昨日、CPS-B-21のピン上げ改造を試した結果、やはり起動時キー書き込みの実施において、61番ピンと62番ピンのピン上げは回避したいという思いが強まりました。しかし、そのためにはCPUリセット解除前にデータバス側に出てくる信号を抑制しなければなりません。というわけで、CPS-A-01がどういう経緯でメモリアクセスを引き起こすのかについてちょっと調べてみました。

ひとまずCPS-A-01の解析ドキュメントにヒントがないか探してみたところ、こちらのドキュメントにCPS-A-01によるバスアクセスに関する記述がありました。 ドキュメントによると、CPS1では、CPU以外でバスを利用するデバイスはCPS-A-01だけらしく、また、普通に68000のバスプロトコル (使いたい人が要求 (Bus Request (BR)) を出した後、CPUが許可 (Bus Grant (BG)) を出して、使う人が使っている間 Bus Grant Ack (BGACK) を上げておく) に従っているようです。

ただ、CPS-A-01のピンアサインを見るとBRとBGACKはあるのにBGがありません。しかもBGACKは出力ではなく入力のようです。つまり、CPS-A-01がBRを出してCPUがBGを出したら、CPS-A-01以外の誰かがBGACKを出して、それをCPUとCPS-A-01の双方が受け取るようになっているということなんですかね。

この辺の信号がどう作られているのかを調べて、キー書き込み中にBGACKが出ないように何らかの方法で抑え込んでやれば、CPS-A-01がバスにデータを流すこともなくなるのでは・・・と思って回路を追ったりロジアナで観察したりしてみたんですが、どうも68000はRESETやHALTが有効になっている間も普通にBGを出す一方、BGACKも周辺の汎用ロジックで組まれた回路によってBGが出た一定サイクル後に勝手に出るような作りになっているように見えます。というわけでこの作戦はボツに。残念。

他に手はないかと、改めて先程の解析ドキュメントを見てみたところ、「CPS-A-01は特定の動作状態に入った場合に外部メモリにアクセスをする」といったことが書かれていました。そしてIDLE状態にいる限りは外にアクセスをしないようです。ということは、CPUが起動するよりも前に、何らかの理由で勝手にIDLE以外の状態に遷移してしまうということなのかな?この状態遷移の要因を排除できれば安全にキー書き込みができるかもしれません。次はこれか・・・。

2023年 9月 9日 (土)

基板

これまでCPS1での起動時キー書き込みは、BボードとCボードの間にアダプタを入れて、そこで一部の信号をバイパスする形で行ってきましたが、これだとどうしても基板の高さが増してしまうため、例のカプコンワールド2やVARTHのケースに収まらないという問題が生じます。

で、ちょっと前にこの問題を回避するナイスな方法を閃いたので、今日はそれを試してみることにしました。使うのは秋月電子で売っている超薄型の0.65mmピッチ SSOP28用ピッチ変換基板です。 正直、思いついた時点では基板を起こす覚悟だったんですが、まさかこんなドンピシャなものが市販されていようとはw

SSOP28用のピッチ変換基板

これをこんな風に7ピン分を切り出します。カッターよりもハサミで切った方が楽ですね。

7ピン分を切り出し

もう一つ、こんな感じで2ピン分を切り出します。

2ピン分を切り出し

次にCボード (今回は 92641C-1) のCPS-B-21のピンを上げていきます。まずは41番ピンから47番ピンまで。

41番ピンから47番ピンをリフトアップ

そして同様に61番ピンと62番ピンも上げます。

61番ピンと62番ピンも持ち上げ

41番ピンの近くにカプトンテープを貼り、絶縁処理 (この後もうちょっと貼り足しました)。

テープを貼って絶縁処理

そしたら、最初に切り出したピッチ変換基板を上げたピンの下に差し込みます。

ピッチ変換基板の断片を差し込む

そして先程持ち上げた7本のピンをハンダ付けします。

持ち上げたピンをハンダ付け

41番ピン、43番ピン、45〜47番ピンはGNDに配線すべき信号なので、繋ぎつつ、ちょうど変換基板の左右にあったGNDのパターンに適当な端材でCボードに固定w

GNDを配線しつつCボードに固定

もう一つの切り出したピッチ変化基板も、同様に61番ピンと62番ピンの下に滑り込ませて、持ち上げたピンをハンダ付けします (写真はその後、上からカプトンテープを貼った状態なのでわかりにくいですが・・・)

同様に61番ピンと62番ピンにもピッチ変換基板を装着

後は42番ピン、44番ピン、61番ピンおよび62番ピンの信号を個別に引き出します。ついでに+5V とGNDも引き出し。61番ピン・62番ピンの下に入れたピッチ変換基板は、うまくCボードに固定できていないため、ひとまずカプトンテープを上から貼って補強しています。非常に見苦しい・・・w

信号線をピッチ変換基板から引き出し

早速VARTHで試してみます。マルチプレクサに入れるBボード側の信号は、Cボードのコネクタ部分から取得しています。

早速テスト

起動しました!やった!

無事起動

が、しばらく放置していたところ、いつの間にか画面がブラックアウト。何やら不安定なようです・・・って、42番ピンと44番ピンをCボードから外した後、プルダウンするのを忘れていました (元々はR1とR2でプルダウンされている)。というわけで、雑にプルダウン抵抗を追加w

雑にプルダウン抵抗を追加

これで安定したっぽいです。いやー、イメージしていた方法が実際に可能であることが実証できて良かったです。ただ、実装難易度は置いておくにしても、61番ピン・62番ピンの下に割り込ませたピッチ変換基板が固定できていないなど、課題も多いですね。というか、M/B側から変な信号が来なければ、そもそも61番ピンと62番ピンには細工が不要なんですよね。うーん、何とかできないかなぁ。

2023年 9月 8日 (金)

コネクタ

CPicS1で使えるであろう 40ピンのキー付きのメスコネクタ (ワイドタイプ) が届きました。AliExpressのショップに在庫がなくて、いつ頃入荷するか問い合わせたら、わざわざ仕入れてくれた模様。ありがたい。量産することになったらたくさん買いますw

キー付きの40ピン メスコネクタワイドタイプ

基板

昨日の続き。起動時にCPS-B-21にキーを書き込む間だけ、CPS-B-21のデータバスの下位2bitをサブボード側から切り離しておく実験です。CPicSKと同じ74HC4053 (マルチプレクサ・デマルチプレクサ) を使うことで簡単に実現できそうだったので、CPicSKの試作基板の余りを使って作ってみましたw

CPicSKの基板を使ってCPS1に起動時キー書き込み

おお、動いた。殿様の野望2が動きました。大成功です。

殿様の野望2が起動

チキチキボーイズもVARTHも、それぞれのマザーボードで試してみましたが、いずれも問題なく起動時キー書き込みに成功しました。

チキチキボーイズで確認

無事起動

VARTHで確認

これも無事起動

とにかく非常に安定していますね。素晴らしい。

2023年 9月 7日 (木)

ティアーズオブザキングダム

パトリシアちゃんが教えてくれた座標に向かったところ、そのままガノンドロフとの戦いになり、クリアにw

言われた座標に向かったらガノンドロフとの決戦に

クリア後の達成率は68% ちょっとでした。

基板

CPicSKのRev1.0cの基板が届きました。92636D-3にも対応するよう、抵抗のパターンを追加したバージョンです。

CPicSK Rev1.0cの基板が届いた

今回は基板の厚さを1.6mmから1.2mmに減らしています。これでピンヘッダのハンダ付けも、多少はやりやすくなるかな?

厚さは1.2mmに

基板

昨日の調査で、CPS1のM/BにおいてCPUリセット解除前にデータバスにデータを流しているのはCPS-A-01っぽいということはわかったんですが、そういうM/Bでも起動時のキー書き込みを安全に行えるようにするには、キー書き込み中、CPS-B-21のデータバスの下位2bitをBボードから切り離した状態としておく必要がありそうです。

というわけで、これを試すために、新たにデータバスに割り込むためのコネクタを作成しました (写真下側)。単にBボード - Cボード間で61番ピンと62番ピンを繋がないようにして、Bボード側とCボード側の両方から配線を引き出しています。

61番ピンと62番ピンについてBボード-Cボード間を切り離して個別に引き出し

これを使って、CPS-B-21に対して、Bボード側の信号とPICの信号のどちらを繋ぐか、マルチプレクサで切り替えるようにする作戦。

2023年 9月 6日 (水)

基板

CPUがリセットを解除する前にデータバスに信号を出しているのは誰なのか、VARTHのM/Bを使って調べてみました。

VARTHのM/Bで調査

とりあえずM/B単体だと、リセット解除までの間にデータバスに信号が出ることはなさそうです。

M/B単体だとデータバスに信号は流れないもよう

続いてプログラムROMがほとんど載っていないマジックソードのサブボードを載せてみましたが、こちらも無風。なるほど・・・

プログラムROMがほとんど載っていないマジックソードのサブボードを装着

同様にデータバスに変化なし

VARTHのサブボードに交換してみたら、データバスに信号が出てきました。

VARTHのサブボードに交換

信号が出てきた

うーん、プログラムROMが怪しそうですね。そこで、試しにVARTHのプログラムROMの先頭の方のやつを抜いてやったらデータバスに信号が出なくなりました。

プログラムROMの下位を外してみた

データバスに信号が出なくなった

つまり、だれかがCPU起動前にROMを読みに行っていて、そのデータがデータバス上で見えてしまっているようです。プログラムROMからデータが出ているということは、プログラムROMのOEを操作しているのが誰かを追えば、読み出し主がわかるかもしれません。

ROMのOEはどこから来ているのかを追ってみたところ、ROM1というPALから来ていました。このPAL自体はM/B間で共通のはずです。だとすると、PALのロジック自体が原因ではなく、そこに入力されている信号に違いがあって、VARTHのM/BではOEが動いてしまっているものと推測されます。

OEはROM1から来ている模様

PALの入力と思われる線を追ってみると、CPS-A-01の方から来ているものがあるようです。うーん、なるほど、Aチップか。しかし、M/Bによって差があるというのはどういう違いなのか。まさかCPS-A-01のロットによって違ったりするんですかね・・・。

SSD

安くなっていたのでSATAのSSD (EXCERIA 960GB) を買いましたw。デスクトップ機に細々とした容量のやつが載っているので、これを統合しつつ、空いた小さいやつは古いデスクトップにつけてLinuxを入れて・・・とかやりたいけど結局増設して終わりになりそうw

EXCERIA 960GB購入

2023年 9月 5日 (火)

基板

起動時キー書き込みがうまくいかないチキチキボーイズについて調査しています。ひとまずマザーボードを殿様の野望2のものに交換して、Cボード無しで信号を見てみたところ、電源投入から300ミリ秒くらいの間、データバスが動かなくなりました。

マザーボードを殿様の野望2のものに交換

データバス動かず

この状態で改めて92641C-1で起動時キー書き込みを試してみたところ、あっさり立ち上がりました。

起動時キー書き込みを試してみる

起動した!

というわけで、電源投入直後からデータバスに信号が出てしまうのは、元々チキチキボーイズについていたM/Bの方に何かしらの原因があるようです。ひょっとしてM51953Bのタンタルコンデンサが容量抜けか何かを起こしていて、CPUリセット解除が異常に早くなっちゃってるとか・・・?

CPUリセット解除を遅らせるタンタルコンデンサ

が、チキチキボーイズのマザーボードで波形を確認してみたところ、電源投入からリセット解除まで約300ミリ秒程度の遅延がついており、殿様の野望2のマザーボードと同程度でした。ここに異常はなさそうです。うーん。

電源投入 (赤) から リセット解除 (黄色) まで約300ミリ秒

元々チキチキボーイズについていたM/Bのバスの波形を観察してみたところ、起動時に何も信号が出ていない期間があるようです (波形の画像で緑や青が途切れている区間)。一定ではないようですが。ここをうまく狙うことができれば、安全にキーを書き切れたりするのかも? 追記: これはどうもロジアナのサンプリング間隔が低くて、タイミングによってはしばらくうまく信号変化を拾えなくなり、このように見えていたようです。きちんと16MHzのクロックに同期させてサンプリングしたところ、このような広い隙間は存在しないことがわかりました・・・。

データバスに信号が出ない期間もある?

試しにキー書き込みを始めるタイミングを適当に遅らせてみたところ、元のマザーボードでもチキチキボーイズが起動時キー書き込みで立ち上がりました。やった!

チキチキボーイズが立ち上がるようになった

続いてVARTHでも起動時キー書き込みを試してみました。

VARTHで起動時キー書き込みを実験

成功しました。

VARTHで起動時キー書き込み成功

ただ、波形を見ると、チキチキボーイズと同様に、キーを書き始める前や書き終えた後、CPUリセットが解除されるまでの間に、データバスに信号が出ているようです。チキチキボーイズのマザーボード固有の現象ではないということか・・・。

CPUリセット解除まえからデータバスに信号が

ちなみにチキチキボーイズについていたM/Bは 88617A-7bの10MHz版で、殿様の野望2についていたM/Bは 88617A-7bの12MHz版 (いわゆるCPS DASH)、VARTHについていたM/Bは 88617A-5の12MHz版 (CPS DASH) でした。CPUの動作周波数は違えど同型の殿様の野望2のM/BとチキチキボーイズのM/Bとで挙動が全然違うことを考えると、型番によってCPUリセット解除前の挙動が違ってくるというわけでもないのかな・・・。うーん。

2023年 9月 4日 (月)

基板

92641C-1だとPICによる起動時キー書き込みがうまくいかない問題、ロジアナで波形を見てみたら、クロック (波形画像の緑色の信号)やStrobe (波形画像のオレンジ色の信号) を LOW→HIGH→LOWと信号を変化させる際、信号がHIGHになっている時間がやたらと短いことがわかりました。

ロジアナで波形を確認

クロックがパルス信号のようになっていた

試しにHIGHになったら10μ秒くらい待つように処理に待ち時間を入れたところ92641C-1でも起動時キー書き込みがうまくいくようになったようで、ゲームが起動するようになりました。うーん、どういうことだろう・・・w

クロックがHIGHになったら10μ秒くらい待つように変更

92641C-1 でも起動時キー書き込みに成功

次に、CPS-B-21より前のBチップを搭載した基板で起動時キー書き込みの実験してみます。ターゲットはとりあえずチキチキボーイズ。過去にArduinoでキーを書いて動かす実験には成功しているので、起動時キー書き込みも普通に行けるはず。

チキチキボーイズの基板

が、92641C-1でも90631C-5でも起動してくれませんでした。波形を見ると、何やら電源投入後、PICが動き始めるよりも相当前からデータバスに信号が流れているようです。先日、殿様の野望2で確認した際は、CPUがリセットを解除するまでデータバスに信号らしきものは見られなかったので、だいぶ状況が違いますね。これがキーの書き込みと衝突して失敗してしまっている?

PICが動き始めるよりも前にデータバスに信号が出ている

2023年 9月 3日 (日)

基板

CPS1 Desuicider のコードをいつものPIC (PIC12F509) に移植してみたので、これを使って起動時キー書き込みが可能かどうか試してみました。

まず準備として、BボードとCボードの間に割り込むためのアダプタを作成していきます。40ピン (20ピン x 2段) のキー付きのコネクタのオスとメスの足同士を直接ハンダ付けしてこんなのを作成。

40ピンコネクタのオスとメスのピン同士を直接ハンダ付け

4セット作成

試しにCボードに装着してみました。なかなかいい感じですw

Cボードに装着

さらにそのままBボードに装着してみました。下側のピンずれには注意が必要ですが、これまた非常にいい感じです。

Bボードに装着

「こんなのわざわざ作らなくとも、直接Cボードのコネクタのハンダ部分に配線すれば良いのでは?」と思われるかもしれませんが、キー書き込みで使うピンのうち、19番ピンと20番ピンはBボード側でGNDに配線されてしまっているため、こういう下駄を作るなどしてBボード側と切り離さないといけないんですよね。なので、今回作成したコネクタでも19番ピンと20番ピンのところだけはメスコネクタ側のピンを抜いてあります。

で、改めて、ここからキーの書き込みに必要な信号の線を引き出します。引き出すのは 19番ピン (Cボード側)、20番ピン (Cボード側)、61番ピン、62番ピンの4信号 と 電源 & GNDという感じ。

キー書き込みに必要な信号を引き出し

改めて殿様の野望2のBボードに装着してみました。こんな具合。

Bボードに装着したところ

カプコンワールド2のサブボードに作ったアダプタを装着し、キンドラのCボード (90631C-5) を装着。

92641C-1を載せた

とりあえずPIC側はこんな感じの簡素な構成ですw

PIC側

起動時キー書き込みでいきなり立ち上がりました。凄いw

カプコンワールド2起動した

Bボードを殿様の野望2に交換。

殿様の野望2に交換

PICから、電池なしのときと同じ挙動になるようなキーを書き込むようにしてやったらこちらも起動しました。素晴らしい。

こっちも起動した

ただ、Cボードが92641C-1だと起動してくれませんでした。

92641C-1だと起動せず

このCボードに電池を載せて、CPS1 Desuiciderでキーを書いてやったらマッスルボマーが起動したので、Cボード自体はまったく問題ないと思うんですよね。うーん、なぜだ。

電池を載せてArduinoでキーを書き込み

マッスルボマーが起動したのでCボードは問題ないと思われる

2023年 9月 2日 (土)

基板

CPS1 Desuiciderのコードとこちらの回路図を見比べてみたりしてました。CPS1 Desuicider側にちょっとだけ冗長な処理があるので、そこは省略できそうですが、それ以外で大きく削れるところはないかな。あと、こっちの回路図ではCD0がSEC-DATAでCD1がSEC-CLKってなってるけど、これ逆ですね。一瞬混乱しましたw

また、殿様の野望2の基板で、電源投入直後の信号の様子を観察したりもしてみました。CPUが動き出すまでがだいたい300ミリ秒で、それまでの間はデータバス (下位2bitをキー書き込みに使う) 上に特に何も信号は流れていないようです。これくらい時間が空いているなら、起動時キー書き込みも余裕かな?

Cボードにロジアナをつないで信号を観察

300ミリ秒くらいデータバスには何も流れていない

2023年 9月1日 (金)

ティアーズオブザキングダム

うろうろしていたら、まだやっていないカバンダの看板を発見したんですが、カバンダがいませんw。よじ登っても看板が倒れることはなく、気持ち悪いですw。こんなバグもあるんですなぁ。

なぜか自立している看板w

基板

CPS1の調査を始めるに当たり、遠い昔に入手してそのままだった殿様の野望2を1枚出してきました。梱包的に、これは☆さんで買ったやつっぽいですねw

入手して未チェックのままだった殿様の野望2

おお、きれいだ。

状態良し

普通に動きました。よしよし。

動作も問題なし

2023年9月30日から2023年9月1日までの日記を表示中

中の人情報

名前:
nosuke (のすけ)
メール:
sasugaanijaのgmail.com
「の」は「@」みたいな
関連リンク:

カレンダー

2023年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

<<先月分

翌月分>>

最新の10件のエントリ

最近の10件のコメント

過去ログ