2020年6月6日から2020年6月2日までの日記を表示中
2020年 6月 6日 (土)
■基板
CPS3のBIOSをハックして、インストール時に暗号を解きながらフラッシュメモリに書き込むことでオリジナルのメディアを利用可能にする実験、フラッシュメモリのベンダごとの処理に分岐する前の段階でフックをかけるのにちょうど良い箇所が見つかり、無事パッチを修正することができました。
今までは、これからフラッシュメモリ書くというところでバッファ上の4Byte単位のデータをデコードしていたんですが、修正後は、CD-ROMから8KiB単位でデータを読み出したところでバッファ上のデータを全部デコードする形に。修正自体があっさり完了したのは、C言語の開発環境をしっかり整えておいたお陰でですね。
実機上で、日立のSIMMが混ざった場合でもError 60になることなく正常に起動することが確認できたので、これでCDなし起動に続き、2つ目のやりたかったことが完了したことになります。もう1つ、書き換え高速化というネタもあったりするんですが、これはもういいかな・・・。
2020年 6月 5日 (金)
■基板
今日もCPS3の改造BIOSのError 60問題調査中。ボリュームラベルとタイトルコード(?)を比較した後、結果に関係なく「一致」判定にして先に進むようにいじってみたところ、今度はインストールが終わったところで画面がブラックアウトするようになりました。
エラー画面に遷移していないということは、もしかして、フラッシュメモリも初期化されていないのかも?これは、Security Cassette Utility で中を覗くチャンス!というわけで、見てみました。
・・・むむむ、SIMM1の中身はデコードされていない!? ボリュームラベルと比較するのは、SIMMをデコードすると出てくる文字列なので、デコードできてないのであれば文字列が不一致でエラーとなるのは納得です。問題はなぜデコードされていないのかということ。
おっと、SIMM2はバッチリデコードされているぞ。
SIMM1とSIMM2の差は、フラッシュメモリが富士通版か否か・・・。まさか、富士通版のSIMMに書くときだけ呼ばれるベンダ固有のルーチンにフックをかけてしまったとか?
MAMEの再現させてみようと思い、フラッシュメモリを富士通製のものからシャープ製のものに変えてみたんですが、エミュレーションしているメモリにBIOSが対応していないようで認識すらされず (´・ω・`)。しからばと、実機でプログラム用のSIMMを両方とも富士通版にしたところ、見事にインストールが完走し起動するようになりました。やはりそうか・・・。
解決策としては、日立のフラッシュメモリ向けのルーチンにフックを掛けるという手がありますが、MAMEでデバッグできないのは辛いところ。やはりフラッシュメモリの種類に応じて分岐するよりも手前の段階でデコードするようにパッチを修正する方が無難そうです。さてどこがいいか・・・。
[コメントを書く]
2020年 6月 4日 (木)
■基板
今日もCPS3の改造BIOSでError 60問題を調査。昨日作った、インストール直後のチェックサム確認を潰した版を動かしてみましたが見事に失敗。ここではなかったようです。で、ちょっと作戦を変えて、プログラム上でERROR 60の文字列の先頭アドレスを参照している箇所を探し、そこから遡ってみたところ、CDのボリュームラベルとプログラム中に記録されているゲーム名 (CAP-なんちゃら) が一致しないときに出るエラーっぽいということがわかりました。いやでも、オリジナルのCDでインストールしているわけで、ボリュームラベルを間違うわけがないよなぁ・・・。
ところで文字列といえば、CPS3のセキュリティカートリッジのBIOS、stringsをかけてみると、通常の Security Cassette Utility の他に、Developer's Security Cassette Utility なる文字列があったりするんですよね。そしてその中には「CODE:」という非常に気になる文字列が・・・。この辺追ったら何か新しい発見あったりするのかな? というかもうBIOS端から全部読んだ方がいいのかもw
[コメントを書く]
2020年 6月 3日 (水)
■基板
CPS3の改造BIOSでインストールすると最後にError 60が出てしまう問題を追っています。最後まで行ってから出るので、チェックサム不一致を疑い、チェックサムを比較している箇所を潰してみました。確認は明日以降。
あと、ハードの方は、何か不調で全然フラッシュメモリが認識されないカートリッジをメンテ。どこかでハンダ不良を起こしていたのか、フラックスを塗ってコテを軽く当てててやったところ無事復活しました。ふぅ。
[コメントを書く]
■ゲームギアミニ
とりあえず予約はしたけど、メガドラミニと違ってちょっとモヤモヤするものが・・・まあセガらしいといえばセガらしい判断なんでしょうけど。
[コメントを書く]
2020年 6月 2日 (火)
■基板
CPS3のBIOSをハックして追加した、オリジナルのメディアからデコードしながらSIMMに書き込む機能、実機で動作確認してみました。いい感じで動いているようです。
・・・と思ったら、いつの間にかError 60が出て失敗していました。MAMEだと完走するのになぁ。何が起きているんだ・・・。
フラッシュメモリの中身を確認できれば何が起きているかわかるんですが、CPS3はエラーが出ると勝手にフラッシュメモリ初期化しちゃうみたいで要因調査できないんですよね。この○○な仕様で、当時のサポート現場は困らなかったのかな・・・。
あ、CDスキップ機能の方は実機でもイメージ通り機能してくれました。
[コメントを書く]
2020年6月6日から2020年6月2日までの日記を表示中
[コメントを書く]