2020年08月10日

画面・割り込み修正

画面の透明処理でまだおかしな表示になるソフトがありましたので修正しています。
スプライト/BGの処理で、色番号が0又はFでパレットが0000の場合に透明になるように前回修正しましたが、ソフトの動作を見ると色番号0は無条件で透明でもよさそうです。したがって、色番号が0の時、または色番号がFでパレットが0000の場合は透明になるように変更しました。
これもあっているかどうか、間違えているという情報をお持ちの方は教示願います。
合わせて、6/30バージョンだと正常に動作し、7/15以降のバージョンだと正常に動作しないソフトがあるという情報より、動作有無にかかわる修正はこのタイミングでは割り込みの修正が考えられますので割り込み関係を6/30以前の物に戻しています。
DE0-CV(ディスクエミュレータ無);release-F68k_DE0CV.200810.qar
DE0-CV ディスクエミュレーション:release-F68k_DE0CVDEMU.200810.qar
DE10-nano MiSTer:release-F68k_MiSTer.200810.qar
posted by プー at 23:12| Comment(1) | 日記 | 更新情報をチェックする

2020年05月23日

PC88もMiSTerに移植

やっとPC88もMiSTerに移植できました。
移植の中で、FDCにまたまたBUGを発見してしまいました。FDCのステータス ST2のbit0に入るMD(データアドレスマークが見つからない)が定義のみで何も書き込まれていませんでした。当方環境では0に変換されていたため問題になりませんでしたがMiSTer用にコンパイルしたところ、これが1に変換されたため、ディスクからの起動ができない状態になっていました。
該当部分、PC88のみならずX68kでも同じRTLですので変更が必要です。また、すべてのバージョンに関係しますのですべて、アップします。
ここではまず、PC88用のものです。
(1chip MSXのものは過去のいろいろな修正も含めた結果、PSG音源すら入らなくなってしまいました。OPNはタイマのみ機能します。)
1chipMSXバージョン:release-1chip-200522.qar
DE0バージョン:release-de0.200522.qar
DE0-CVバージョン(ディスクエミュレーション無):release-de0.200522.qar
DE0-CVディスクエミュレーションバージョン:release-de0cvdemu2.200522.qar
DE10-nano MiSTerバージョン:release-MiSTerDEMU2.200522.qar続きを読む
posted by プー at 01:15| Comment(1) | 日記 | 更新情報をチェックする

2020年05月10日

MiSTerバージョンリリース

先日DE10-nanoを購入し、オンボードのDDR3DRAMでは様々な理由で動作しないコアがあるとのことでMiSTerプロジェクトの方でSDRAMを外付けするP板を開発して居るようですのでそれも(実装する電子部品も含め)購入し、Stay homeというのもあり家で組立・動作確認し、最新版のX68k FPGAコアをDE10-nano+MiSTer SDRAMボードに移植を行いました。
実は移植作業自体はそれほど難易度の高いものではなかった筈なのですが、あまりドキュメント(というより回路図)を読まずに移植作業を行っていたため、色々と勘違いがありまして。。。
MiSTerのSDRAMボードは40pinのGPIOコネクタに接続するのですが、40pinとはいっても電源で4pinを取られてしまうため、実質36pinしかI/Oとして使用できません。そうすると、SDRAMのピンをすべて接続することができない為、回路図を参照するとDQM端子(16bitのバス幅を上下8bitずつ分け、上位側だけ更新、下位側だけ更新等を制御するピン)が回路図に記載がありません。
このピン、GNDに接続することで常に全部更新、ということも可能ではあるためその様になっているのでは?と勝手に予測し、今まで書き込み動作だったものをRead modify writeに書き換えたりしながら何とか動かないか、試行錯誤をしていましたが、実は回路図上にピン名記載がなくピン番号記載のみになっているピンがアドレス11,12に接続されており、SDRAMのアドレス11,12に並列に接続されています。実はこのピンがDQM信号でした。
DQM信号を参照するタイミングでアドレス11,12は参照しない為、信号線の共有が可能であり、基板の回路設計がそのようにされていました。なかなか賢い設計です。
まずはSDRAMコントローラの該当部分を修正し、FPGAをARMコアからの起動ではなくDE0-CV同様ActiveSerial起動とし、起動FlashにBIOSコードをコピーして従来通り、FPGA単体で起動できる状態とし、動作確認ができたところでARM側からのBIOSコードロード等を接続し、本来のMiSTerとしての動作が出来るようにしています。
(ディスクエミュレーションは従来通り、ARMではなくNiosIIにて実行)
DE10-nanoに内蔵のSDカードコントローラはARM側に接続されており、NiosIIから簡単にはアクセスできないのでMiSTerのIOドーターボード側のSDカードソケットを使用します。(が、こちらは購入していないのでMicroSDカードにおまけで付いてきたSD-MicroSDアダプタに電線をはんだ付けしてDE10-nanoの該当端子に接続)

release-F68k_MiSTerDEMU.200329.qar

MiSTerのARMコアプログラムを使用するのでMiSTerを先に起動させる必要があります。また、MiSTer側のSDカードに/X68000/ディレクトリを作成し、アーカイブに含まれるBIOS/boot.romをそのディレクトリにコピーしてください。
(CGROMはX上で動作するWineでex68を用いて生成したcgrom.tmpですのでライセンス上はクリアだと思います)

コンパイル後に生成されるoutput_files/の.rbfファイルをMiSTer側SDカードのルートディレクトリに保存してMiSTerを起動するか.sofファイルをJTAGで書き込めば起動します。

追記:
忘れていました。MiSTer用SDRAMの標準容量は32MBです。DE0-CVのSDRAM容量は64MBです。FDエミュレーションではアドレス各bitにトラック番号・表/裏・ユニット番号を割り当てている関係で余りが出てしまうため、また更新フラグとFM/MFM、ミッシングクロック保持で記録1バイト当たり1ワード(2バイト)の容量を使用する為、ドライブ1台あたり8MBを消費します。
X68kでは4台のドライブが接続可能であるためFDエミュレーションにDE0-CVではSDRAMの上位半分のアドレス(32MB)をFDエミュレーション用に割り当てていましたが、MiSTer用標準SDRAMは32MBですので後半16MBのみ、FDエミュレーションに割り当てています。その際、ドライブ選択bitの上位を未結線とすることで16MBに収めていますので、ドライブ0と2、ドライブ1と3が同じアドレスを参照してしまいます。
従い、ドライブ0と1のみの2ドライブ構成(ドライブ2,3=NONE)で使用するか、0,1か2,3のどちらかを実ドライブに割り当てる(現時点で必要な信号は外部に出せていませんが)必要があります。

ディスクエミュレーションと本体画面との切り替えはF11に割り当てられているようです。F12はMiSTer側の設定との切り替えのようです。
posted by プー at 18:15| Comment(2) | 日記 | 更新情報をチェックする