2024年7月15日月曜日

RetroVGen-for-CH32V203 作成してみた

GorryさんのRetroVGenをCH32V203に移植したもので、マイコンの性能が上がることで、高解像度モードも対応しているようです。

Gorryさん RetroVGen、Github
antarcticlionさん RetroVGen-for-CH32V203 Github

mode 0 VGA 31KHz 60Hz
mode 1 NTSC 作業中につき動作不可
mode 2 X1 15KHz
mode 3 X68000 15KHz
mode 4 PC9801 15KHz
mode 5 X1turbo 24kHz 設定値の出典が見つからず要調査
mode 6 PC-9801 24kHz
mode 7 X68000 31kHz
mode 8 SVGA 800x600 60Hz
mode 9 PAL 作業中につき動作不可
mode A XGA 1024x768 60Hz
mode B SXGA 1280x1024 60Hz
mode C MZ-3500 640x400 21KHz
mode D MZ-3500 640x200 15KHz
mode E PC-9801 24kHz
mode F X68000 31kHz

メインのCH32V203。
 STM32みたいな感じの中華32bitマイコン
ベース基板作成して
マイコン載せ、
完成!、arduinoNanoよりも大きいにも関わらず、小型化できました(^^♪

ソフトの実装、
arduino IDE 2.3.2にCH32 MCU EVT Boards by WCHモジュールをインストール。
直接書き込むためには、別途インターフェイスが必要のようなので、自分はWCHISPStudio経由で書き込みしました。少し面倒ですが、そんなに更新しないでしょうから問題なし。
Boot+RSTで書き込みモードにし、Deprotect
再度 Boot 押してDownloadでソフト書き込み
⇒ Automatic Download When Device Connect にチェック入れればソフト側の操作は不要になります。
動作はするものの、なんか表示が変。
調べていくとH-Syncの幅がメチャ狭い。
V-Syncは正常、モードにより幅も変化している。
プログラムを確認してみると、While文で時間稼ぎしているようですが、処理速度が速く機能していないようです。適当に時間かかりそうな命令いれて調整。
 ⇒ 0.1us単位の待機方法いいのがあったら教えてください。 
いい加減な対処方法ですが、それなりに機能してくれました。

2 件のコメント:

  1. 説明に書きそびれていたようで、Arduino IDEのメニューのツールから最適化設定を無し -O0 に設定すると空ループをすっ飛ばさないようになると思います。

    返信削除
    返信
    1. コメントありがとうございます。最適化が関係しているなぁとは思っていましたが、そんなオプションがあるんですね。

      削除