37:ゼロウイング/起動しない

最終状態:完了
report#37.1
投稿者:na6ko
時刻:2018-02-25 23:45:11
状態:新規
頻度:必ず起きる
再現方法:
設定のVSYNC FREQUENCYをORIGINALにする
PUSH RUN BUTTON で起動する
VSYNC FREQUENCY が 60.00Hz または 59.83.Hz では起動する.
report#37.2
投稿者:na6ko
時刻:2018-02-25 23:50:11
状態:受付済
頻度:必ず起きる
read(6)と同時期にvceレジスタを操作していると思われる.
report#37.3
投稿者:na6ko
時刻:2018-02-26 01:09:42
状態:受付済
頻度:必ず起きる
00] 00 00 00 00 00 00
disc #004B
DE.00]x01
DE.01]x01
DE.02]x02
08> 000E06 02->6280
08> 000E08 10->6280
DE.02]x01
08> 000E28 08->6280
08> 000E30 01->6280

08> 000E08 10->6280 と DE.02]x01 の間に address 0x1fe000 へ data 04, 01 の順に書かれている.

address 0x1fe000 に書かれる値は 01, 04, 05 である. 問題なのは bit2 の変更. この処理に従って vsync frequency を切り替えているがこれがかなり遅い.この問題は以前からあるが、重要度は低かったが、重要度が高くなるようにプログラムされているのは珍しい.
report#37.4
投稿者:na6ko
時刻:2018-02-26 01:14:12
状態:保留
頻度:必ず起きる
この問題は把握していていたが明文化していなかった.問題の対処方法は下記の2つ.
- 短期間に書かれる無意味な VCE レジスタの更新を無視する仕組みをつくる
- I2C の初期化を高速化する (もしくは別途処理が出来るハードウェア I2C 専用コントローラとかそれ専用のMCU)

回避方法は VSYNC FREQUENCY の設定を変えることがわかっている.
優先度は現状では低く、対処は先のため保留.

短期的な対処として VSYNC FREQUENCY が ORIGINAL でも動作できるパッチは提供できる.
report#37.5
投稿者:na6ko
時刻:2018-09-19 02:02:24
状態:修正済
頻度:必ず起きる
720p 側の Vsync 周波数が original のときに VSync を変更するための MCU への割り込み条件を下記に変更.

(旧) 6280 から address 0x1fe400.w への書込み
(新) VCE の VSYNC = L のときに scanline / frame が変わったとき

このため MCU 内部の割り込みベクタの並べ替え、該当ソースの対応などファームウェア側で対処を増やした. また PCE を RESET したときの VSync の設定も下記へ変更した.

(旧) RESET から 6280 から address 0x1fe400.w への書込みの割り込み経由
(新) PCE RESET = H から一定時間経過後 scanline / frame count を取得

ゼロウイングの場合、xaddress 0x1fe400.w.2 = 0, (数命令) address 0x1fe400.w = 1 としていたので不必要な VSync の割り込みの発生が減り、動作が安定した.
放置していた激写ボーイの絵がでない問題もこれで改善する.
report#37.6
投稿者:na6ko
時刻:2018-10-30 19:57:40
状態:完了
頻度:必ず起きる
終了