ちゃんと自機がカーソルに従って動いた理由の解析

確認の意味で、謎だった部分を書き出してみましょ。「暗記しましょう」はいいんだけど、訳がわからないと悔しいもんね^^;


*JIKI
	STICK PAT,15
	XV=(PAT>>2&1)-(PAT&1)
	YV=(PAT>>3&1)-(PAT>>1&1)
	MX=XV*MOVE+MX : MY=YV*MOVE+MY
	IF MX<0   : MX=O
	IF MX>566 : MX=566
	IF MY<0   : MY=0
	IF MY>364 : MY=364
	POS MX,MY : GMODE 2 : GCOPY 2,0,0,32,32
RETURN

※ MX , MY ・・・ 自機の座標
※ MOVE ・・・ 自機の移動速度

んで、STICK命令で返される値が次の通りね。

1248

ここで注意なのは、同時に押された場合。←→が同時に押されてる場合、返される値は「 5 」になる。↑→なら「 6 」だね。論理演算は2進法で考えざるを得ないんで、全部の組み合わせを2進法になおして表記してみましょう。

-%00000
%00011
%00102
←↑%00113
%01004
←→%01015
↑→%01106
←↑→%01117
%10008
←↓%10019
↑↓%101010
←↑↓%101111
→↓%110012
←→↓%110113
↑→↓%111014
←↑→↓%111115

見事に全部違う値が返されました。これはあくまで想像だけど、STICKの命令で返される値は、全部の組み合わせが違う数値になるんじゃないかな?こんなこと考える人って天才か変態かどっちかだと思う。あっしのような凡人にはとても真似できない^^;

閑話休題

さて、←↑が押された場合ってのを考えてみましょう。この場合「PAT=3」なので、この2行はこんな感じになる。


	XV = (%0011)>>2 & %0001 - %0011 & %0001
	YV = (%0011)>>3 & %0001 - (%0011)>>1 & %0001
		↓
	XV = %0000 & %0001 - %0011 & %0001
	YV = %0000 & %0001 - %0001 & %0001
		↓
	XV = %0000 - %0001
	YV = %0000 - %0001

はい、見事にXVもYVも-1になりました。はっきり言って、お見事!の一言です。さすがに全部の組み合わせを試してみる気にはなれないけど、完璧に動いてるってことは、全ての組み合わせがちゃんとこういう感じになるってことですね。ちなみに←→っていうような、相反する組み合わせで押された場合でも、ちゃーんとx軸の運動量は0になります。つまり動かないっつーこと。こうやって論理演算で処理させてるから、キビキビとカーソルに反応するプログラムにできるんですね。CPUに優しく、操作する人にも優しく、プログラムを組む人には厳しく・・・(爆)

前のページへ戻る 奮闘記のメニューへ戻る 次のページへ進む