斜めの線が階段状に変に描画される事があるのは何でだろうと思ったらWAITやVSYNCが入ってないのが原因のようですねTCHXとTCHYを取得する中間で、プチコンのシステム割り込みが入りタッチ位置の値が更新されることがあるのが原因っぽそうですとは言え今のまま安易にWAITを入れるだけだと難燃性になってしまうので(笑)プログラムの流れの見直しが必要になってきちゃいますけどね。
閃いたTCHXとTCHYを取得するのはプチコンのシステム割り込みが入った直後の時だけに制限すればWAITを入れなくてもバグを減らせるつまりX=TCHX:Y=TCHY付近を次のように書き換えるX=BX:Y=BYIF MO!=MAINCNTL THEN X=TCHX:Y=TCHYMO=MAINCNTLこれで概ねうまくいくはず本当はもっと根本的な解決を目指したほうがいいんだろうけど
やっぱり、気づく人は気づくんですね。階段状になっちゃうの。今回はお絵かきソフトではなくジョークソフトだったので、そこらへんの対策は無しにして、できるだけシンプルな作りにしました。対策するとしたら、単純にVSYNC 1を入れるのが無難かなぁと思います。
斜めの線が階段状に変に描画される事があるのは何でだろうと思ったら
返信削除WAITやVSYNCが入ってないのが原因のようですね
TCHXとTCHYを取得する中間で、プチコンのシステム割り込みが入り
タッチ位置の値が更新されることがあるのが原因っぽそうです
とは言え今のまま安易にWAITを入れるだけだと
難燃性になってしまうので(笑)
プログラムの流れの見直しが必要になってきちゃいますけどね。
閃いた
削除TCHXとTCHYを取得するのはプチコンのシステム割り込みが入った
直後の時だけに制限すればWAITを入れなくてもバグを減らせる
つまりX=TCHX:Y=TCHY付近を次のように書き換える
X=BX:Y=BY
IF MO!=MAINCNTL THEN X=TCHX:Y=TCHY
MO=MAINCNTL
これで概ねうまくいくはず
本当はもっと根本的な解決を目指したほうがいいんだろうけど
やっぱり、気づく人は気づくんですね。階段状になっちゃうの。
削除今回はお絵かきソフトではなくジョークソフトだったので、そこらへんの対策は無しにして、できるだけシンプルな作りにしました。
対策するとしたら、単純にVSYNC 1を入れるのが無難かなぁと思います。