
「ハイパーブラスターの値の取得について。」(libgun.lib:ver.3.5)
・各々の銃の値の取得はvsync_callback()中でする。
  以下にその部分を示す。

	/* vcntが２未満で、且つ銃の時だけ．．．	*/
	if( ( vcnt < PADS_NUM ) & ( pad_kind[vcnt][0] == TYPE_GUN ) ) {
		padN = vcnt;
		/* 値を取れてれば...	*/
		if( gunstate[padN][1] ) {
			/* 経験に基づき３個のＸ値の内変化がある一定値のもの(今回は７)を有効とする	*/
			for( i = 3; i < gunstate[padN][1]; i++ ) {
				x0 = ( (gunstate[padN][5+(i+0)*4]<<0x08 ) | (gunstate[padN][4+(i+0)*4]) );
				x1 = ( (gunstate[padN][5+(i+1)*4]<<0x08 ) | (gunstate[padN][4+(i+1)*4]) );
				x2 = ( (gunstate[padN][5+(i+2)*4]<<0x08 ) | (gunstate[padN][4+(i+2)*4]) );
				d_count = (unsigned short)(abs(x0-x1)+abs(x1-x2));
				if(d_count < 7)
				break;
			}

			/* このときｉがとれている値よりも小さかったらそのまま、違うなら零を使用する	*/
			if(i<gunstate[padN][1]);
			else i = 0;
			pre_h_count = ( (gunstate[padN][5+i*4]<<0x08 ) | (gunstate[padN][4+i*4]) );
			/* 値の矯正(libに従う)	*/
			gun_tmpX[padN] = pre_h_count/5;
			gun_tmpY[padN] = gunstate[padN][2+0*4];
			gun_reload[padN] = OFF;
			/* 毎回、一つ前の値との平均をとる	*/
			gun_tmpX[padN] = ( gun_tmpX[padN] + oldX[padN] )/2;
			gun_tmpY[padN] = ( gun_tmpY[padN] + oldY[padN] )/2;
			oldX[padN] = gun_tmpX[padN];
			oldY[padN] = gun_tmpY[padN];
		} else {
			/* 値がとれてなかったらリロードだろう	*/
			gun_reload[padN] = ON;
		}
	}

	/* １割り込み目は銃２、２割り込み目は銃１。３割以上はとらない	*/
	switch( vcnt ) {
	case 0:
		SelectGun( CHAN0, ON  );
		SelectGun( CHAN1, OFF  );	break;
	case 1:
		SelectGun( CHAN0,  OFF  );
		SelectGun( CHAN1,  ON  );	break;
	default:				break;	
	}

・クリプトキラーは２割り込みなので２割り込み立ったら(簡単に言ってしまえばVSync()の後で)
  それぞれの値を矯正する。




