2020年07月28日

「透明」処理

X68kではテキスト・グラフィックス・BG/スプライトと大きく分けて3画面あってそれらを最終的に重ねて画面に表示していますが、裏の面が表示されるには手前の面が透明になっている必要があります。
各画素をどのように設定すると透明扱いになるのかの明確な資料が見つけられなかったため、適当にカット&トライで今まで決めていましたが、正常に表示できないソフトがありましたので、資料をあさってみたり、実際のソフトの動きと他のエミュレータの動作とを見比べてみて、下記が何となく正しそうだ、ということで下記の様にしてみました。
・グラフィックス画面はパレット番号0番で且つパレットの内容が0000の場合に透明
・テキストはパレット番号0で且つパレットの内容が0000の場合に透明
・BG/スプライトはドットの色番号が0又はFで且つパレットの内容が0000の場合に透明
手持ちのソフトはこの設定で正常に表示されるようです。
RTLをこの設定で修正しました。
DE0-CV(ディスクエミュレーション無):release-F68k_DE0CV.200728.qar
DE0-CV ディスクエミュレーション:release-F68k_DE0CVDEMU.200728.qar
DE10-nano MiSTer:release-F68k_MiSTer.200728.qar

いや、そうじゃなくてこれが正しい、という情報をお持ちの方がいらっしゃれば教えてください。
posted by プー at 23:35| Comment(0) | リリース/X68k | 更新情報をチェックする

2020年07月17日

ディスクエミュレーションバグfix

MiSTerのFDDエミュレーションにバグがありました。
2番目のドライブで書き込みをすると、ディスクイメージが破壊されます。また、
他のソフトで作成したD88ファイルに書き込むときも破壊されます。これを修正しました。
合わせて割り込み関係を若干、修正しましたが目立った改善は見られないようです。
(コードは多少、見やすくはなったと思いますが)
release-F68k_MiSTer.200717.qar
posted by プー at 20:25| Comment(0) | リリース/X68k | 更新情報をチェックする

2020年07月15日

キャッシュ効率アップ

1つのSDRAMでメインメモリ・テキストVRAM・グラフィックスDRAMを兼ねていますので画面データ処理中にCPUが停止しないようにメモリデータをキャッシュで補う動作をしています。
今まではキャッシュの1ブロックが埋まるまでは別のアドレスの読み出しが来ても待つ設計でしたが、別のアドレスの読み出しがあった場合は読み出しを中断し、次のアドレスの読み出しを行うように変更しました。中断したところまでのデータは破棄してしまうので必ずしも早くなるばかりではありませんが、キャッシュ効率は多少なりとも増えたと思います。
一定期間内(例えば水平同期期間内)に処理が完了しないと永久ループに入ってしまうようなソフトの場合は改善する可能性があります。
(苦労してデバグした割に、あまり目に見えた効果がないですが。。。)

DE0-CV(ディスクエミュレーション無):release-F68k_DE0CV.200715.qar
DE0-CV ディスクエミュレーション:release-F68k_DE0CVDEMU.200715.qar
DE10-nano MiSTer:release-F68k_MiSTer.200715.qar
posted by プー at 22:46| Comment(0) | リリース/X68k | 更新情報をチェックする