[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[WitchTech 00201] Re: オートリピート関数



c.mos です。
これは、難しい問題だったりします。

Tatsuya Kudoh wrote:
> key_hit_check_with_repeat()の内部で1V期間待っているようですが、
> 仕様には何も書かれていないので、確実に1Vなのかわかりません。

key_hit_check_with_repeat()で、キーがHitされていない場合は、
hlt で割り込みを待機します。通常は、VBLANK割り込みしか入っていませんから、
結果的に、1V待つことになってしまいます。

実は、キー入力にはチャタリングが発生しているようで、key_hit_check()を
空回ししたりすると、入力が不安定になってしまうんです。

> いまのところ、次のような対策を考えています。ご意見を頂けないでしょうか。
> 
> 	1. オートリピートを自前で処理
> 	2. key_hit_check_with_repeat()の処理時間が一定なら、
> 	   画面制御を適当に加速して同期させる。
> 	3. key_hit_check_with_repeat()の前後でTICK値を調べ、
> 	   同期させる。

上記理由により、2,3は使えないと思います。
処理ループは、1Vよりずっと高速なんですよね?
でしたら、1V期間に相当するループごとに、key_hit_...を呼ぶ
のが、一番簡単かも知れません。

あるいは、現在のLCD走査ライン(LCD_LINE)を取得して、底に近づいていたら
key_hit_...を呼ぶようにすれば、効率的かも。

あっ。LCD_LINEの取得って、BIOSでサポートしていなかったような。(^^;
			c.mos



ML Archives