今晩のリリースで漸く一段落つきました。
くれゆに様のサイトでPC-88のメモリウェイトの調査が公開されたり、
X1センターの佐藤様からX1のVRAMのウェイトの情報を頂いたり、
といったことがトリガーで始まった作業でしたが。
そのまま勢いで、MB8877やuPD765Aを、フロッピードライブの回転速度に
あわせたタイミングで動作するようにしたり、
Z80DMAのバスリクエストや開放、データ転送に掛かる時間を再現したり、
それに合わせて各CPUにDMA中のクロックだけ空転する処理を入れたり。
思いのほか、大工事になってしまいました(苦笑)
FDCのタイミング調整は、来年辺りにやる予定だったんだけどなー。
X1で長年の懸案だった、アークスのオープニングの暴走が解決したり、
PC-88のヴァリス2のオープニングが、結構な按配で動くようになったり、
投入した工数に見合うだけの成果は得られたんじゃないかなあと思います。
かなり気合入れて作業しましたので、よろしければチェックプリーズです。
(2013/8/4 2:15追記)
仮バイナリを以下にアップしました。
http://homepage3.nifty.com/takeda-toshiya/00tmp/x1.zip
X1turboでD'がリードエラーになる問題を修正しました。
Z80DMAの問題で、最後の1byteを読みに行かずにLOST DATAしてたようです。
TVRAMのウェイトを、仮に0に変更しました。
PCG定義で失敗するソフトで、これで動くようにならないかご確認お願いいたします。
Worryは、先日の修正より以前から動いてないようです。
これとは別件の問題なんじゃないかと思います。
(2013/8/6 1:50追記)
アルファの件の対応をした仮バイナリをアップしました。
URLは上記と同様です。
ディスクの読み込みが遅い件ですが、スキューの影響のようです。
D88形式であれば、実ディスク上のセクタの並びが確認できるのですが、
2D形式などのベタイメージではその辺の情報がわかりませんので、
セクタ番号順に並んでいると仮定してトラックイメージを作っています。
そのため、最悪のケースで、次のセクタを読むのにディスクが1周回るまで
待つことになってしまって、タイミングがずれるようです。
ゲーム開始後、画面の右上が化ける件は、ちょっと難しいです。
軽くログを確認した限りでは、ディスクを読みつつ何か別の作業をしてて、
そちらが終わったら、ディスクの読み込みが完了していなくても、
Z80DMAをリセットして、読み込みを打ち切ってしまっているようでした。
従来の実装では、ディスク読み込みが高速だったため、問題なかったのですが。
取り敢えず、ベタイメージの場合は、次のセクタを読み込むまでの待ち時間を
固定値にするのと、アルファ限定で、ディスクの読み込み速度を速くすることで
逃げています。
(2013/8/7 0:30追記)
DOMEでFM音源を認識しない不具合を修正しました。
仮バイナリのURLは同上。
FM音源にデータを書き込んで、ステータスのBUSYがたつのを確認することで、
FM音源の存在判定をしていました。
現状の実装では、常にBUSYはオフになっていたのが問題だったようです。
(2013/8/8 1:40追記)
メインサイトの方で正式リリースしました。
仮バイナリの変更のほか、テキスト画面の表示上の不具合も修正しています。
(2013/8/9 0:40追記)
X1turboでローグアライアンスが起動しない件の修正をしました。
ついでにCZ-8BM2とマウス対応も。
#後はWorryとばってんタヌキかな?こっちはまだ目処が立ってません。
#音関係もちょっと時間ください。
(2013/8/10 2:00追記)
テープ版のWorryが動作するようになりました。
APSSもサポート出来てるような、出来てないような。
明日から帰省するため、数日IP Unreachableになるかもです。
(2013/8/23 1:00追記)
ばってんタヌキが起動しない件、ZENONでスペースキーに反応しない件を修正しました。
仮バイナリは以下略。
ばってんタヌキは、EMMが存在する場合に、ディスクを丸ごとEMMに読み込みますが、
このときトラック0の存在しないセクタを読みにいくようになっています。
このとき、REC NOT FOUNDを返すと、存在しないセクタを延々と読もうとして、
結局タイムアウトしてしまっていたようです。
取り敢えず、ドライブレジスタを弄った後、最初にセクタが見つかるまでは、
REC NOT FOUNDを返さないように修正しましたが、これでいいのかなあ。
ZENONは、キーを押してサブCPUから割り込み要求があったときに、
Z80では割り込みは発生しないけど、サブCPUにベクタとキー情報を読みに来るようです。
このとき、サブCPU内で、次の割込みが発生しなくなってしまっていました。
割り込みへの応答でなくても、サブCPUからデータを受信したら、割り込み状態を
解除するように修正することで解決しています。
#別件が終わったらリリースします。