二足歩行ロボットコミュニティサイト

【サイトの使い方】  【サイトマップ】  【お問い合わせ】 
ロボット動画  |   ロボット写真  |   BBS  |   ダウンロード  |   イベント予定  |   スタッフ日記  |   リンク  |  
ログイン パスワード    新規登録   パスワード紛失  

[掲示板に戻る全部  1-  最新50
1 RobovieMaker2小ネタ
combat-e
長老

combat-e 2007-11-14 17:24  [返信] [編集]

冷蔵庫2.0よろしくある意味自分への備忘録として。

RobovieMaker2で追加された条件分岐のブロックですが、こちらで「ビット合致」の条件を設定すると、本来16ビットの変数に対して会8ビットしか値を参照できません。
これは、実際にモーションに書き込まれる際に、比較数値とビットマスクをそれぞれ8ビットずつ使用しているためです。

ビット合致を使うと、ゲームパッドのボタン入力でも「ほかのボタンの状態によらず特定のボタンだけが押されていることを判断する」という場合に重宝しますが、ゲームパッドのボタン入力の情報は16ビットすべてに値が割り当てられており、ビット合致では下位8ビットの「○×△□L1R1L2R2」のボタンしか情報を取得できません。

では、ビット合致で上位8ビットの値を使うことができるのでしょうか?
実は変数演算ブロックとユーザ変数ひとつを使うことで実現できます。

具体例をあげながら説明しましょう。




図のように、まず任意の変数(図中では変数85)にゲームパッドのボタン入力の値(変数241)を代入します。
続いて変数85を「256」で除算すると、上位8ビットの値がそのまま下位8ビットに入ります。
これにより、「ビット合致」でこれまで使えなかった、十字ボタン,L3,R3,START,SELECTの情報が変数85に入ります。。

ちょっと専門的な説明をすると、これはビットのシフト演算と同じことをやっています。
古のマイコンプログラムでは、乗算よりビットのシフトのほうがクロックが少ないということで、よく2倍、4倍などの乗数や1/2,1/4などの演算をビットシフトでまかなっていた歴史があります。
[掲示板に戻る全部 次100 最新50
BluesBB ©Sting_Band
検索
Loading
メインメニュー