[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
[OSASK 2239] Re: Mandelbrot
- Subject: [OSASK 2239] Re: Mandelbrot
- From: Hidemi KAWAI <kawai !Atmark! imasy.org>
- Date: Sun, 30 Sep 2001 13:39:02 -0000
こんばんは、川合です。
MITSUNARI shigeo さんは 2001/09/30 19:56:51 の「[OSASK 2237] Re:
Mandelbrot」で書きました:
>返事が送れて申し訳ありません。風邪(嘔吐+下痢)でくだばってました。
え?送れて申し訳ない???・・・って、これは「遅れて」のタイプ
ミスですか。すみません、ちょっとびっくりしただけです。
お体を大切になさってください。ご無理はなさらないでください。お
早い回復をお祈りいたします。
>>拡大画面でやると、少しずれているような気がします。・
>>・・って僕の思い違いのせいかもしれません(笑)。
>はい。ずれてます。私も気にしてましたが仕様にしてました(^^;
>けど今回直しました。
おお、仕様だったんですか(笑)。しかも、直ったんですか。それは
ありがたいです(笑)。
>> タイミングによっては、起動直後に一部しか表示されない状態が続くので
>>動作がおかしいのかなと疑いました。
>この現象に遭遇したことはないのでよく分かりません。
僕もこれは分かりません。小柳さんの文の調子からすると、おかしい
のかと疑っただけで、結局は正常だったように読み取れますが・・・。
どうなんでしょう? >小柳さん
>今のコードは毎回全画面を更新しているからだと思います。
ご存知なのかどうかは分かりませんが、128〜134行目を以下と入れ替
えて、
void putCur(int cx, int cy, struct LIB_GRAPHBOX *gbox)
{
cx += WX / 2;
cy += WY / 2;
/* 0x0F は下位4bit(16色)のみ反転 */
lib_drawline0(0x00c0 /* xor */, gbox, 0x0f, 0, cy, WX - 1, cy);
lib_drawline0(0x00c0 /* xor */, gbox, 0x0f, cx, 0, cx, WY - 1);
return;
}
さらに、233行を
putCur( cx, cy, sys->graphbox);
と変更し、268〜277行目を以下と差し替えれば、
if( touch == 2 ){ /* マンデルブロー再描画 */
x0 += cx / ( prev_zoom * WX/2 );
y0 += cy / ( prev_zoom * WY/2 );
putMandel( x0, y0, zoom, buf );
cx = cy = pcx = pcy = 0; /* 中央にカーソルを持ってくる */
putCur( pcx, pcy, sys->graphbox);
SYS_graphFlush( &sys );
} else {
putCur( pcx, pcy, sys->graphbox); /* 前回のカーソルを消す */
putCur( cx, cy, sys->graphbox); /* 新しい位置のカーソル */
}
カーソル移動の際のフラッシュがなくなるので、多分高速になります。
先ほど公開したloadfac0でカーソル移動の際の負荷を測定すれば、速く
なったかどうかが測定できるはずです。
>互換機でもzを押しっぱなしにするとキーを離しても動作しつづけるので
>おそらくカーソルキーの移動でも動きつづけるのはTOWNS(のVRAM)が遅いからかと。
>本当はキーを離したときすぐにキーバッファをフラッシュすればよいと思いますが、
>今はそれを調べる気力がないです。
キーバッファという概念は特になく、あるのはシグナルボックスだけ
です。シグナルボックスはフラッシュできませんが、空読みすることは
できます。
while (getsignal());
mandelの場合、キー以外のシグナルを扱っていないので、これで目的を
達することができるでしょう。
また違う解決方法もあります。たとえば、zのリピートを拾わないよ
うに設定することです。これは、
static int keyTable[] = {
KEY_LEFT, KEY_RIGHT, KEY_UP, KEY_DOWN, KEY_Z, KEY_X, KEY_Q
};
の部分を変更するだけでできます。KEY_Zの部分を
KEY_Z | 0x00701000
に書き換えるだけです。なお、この変更をすると、大文字でも小文字で
も入力できるようになってしまいますが、きっとこっちのほうがお気に
召すでしょう。この謎の16進数の意味については、introcのkeytstc0.c
を参照してください。
>#あ、そういやP4マシンでもOSASKが動くことを確認しました。まあ当たり前ですけど。
ご報告ありがとうございます。
---
mandelもこれで"q"を押しても落ちなくなりましたし、バイナリーサ
イズに申し分ないですし、川合秀実推奨を付けてもよさそうな雰囲気に
なってきました。
難を挙げるとすればカーソル移動が遅いので、Shiftを押しながら押
した時は16ドットくらいずつ動くようにしてもらえると便利ではないか
と思います(もっといいのはマウスが使えるようになることなんですが
、それはOSASK側にまだマウス機能がないので・・・すみません(笑)
)。
十分に体力が回復なさった時に、ご配慮していただけるとうれしいで
す。
それでは。
--
川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/