Home > スポンサー広告 > TempAR - パッドコード1 デジタル&ビットマスク

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

コメント: -

Home > スポンサー広告 > TempAR - パッドコード1 デジタル&ビットマスク

Home > TempAR Usage > TempAR - パッドコード1 デジタル&ビットマスク

TempAR - パッドコード1 デジタル&ビットマスク


TH2DTでマップスクロールコードを作りましたがその際、
アナログパッドのFake Address(TempAR)を利用してみました。

デジタルの十字キーでスクロール方向を決めるようにすると十字キーで
キャラが動いてしまうためアナログパッドを使うのが最良だと判断しました。
コード利用中はキャラ移動が無効になるように別途コードを用意すれば
アナログパッドを使用しなくても可能ですが、その分だけコードが長くなるので
絶対必要というわけで無ければなるべく短く抑えたいのが人情。


パッドコード早見表

DeviceTypeAddressValuecomment
CWCheat Joker 0xD00000dd0x1000nnnnボタンを押している間dd+1行分下のコード実行。
nnnnはパッドの合計値
Inverse Joker 0xD00000dd0x3000nnnnボタンを押している間dd+1行分下のコード無効。
nnnnはパッドの合計値
TempAR buttons 0x9A0000000x0000YYYYボタンを押している間実行ステータスをtrueにする。
YYYYはパッドの合計値
0xAA0000000x0000YYYYボタンが押されていない間実行ステータスをtrueにする。
YYYYはパッドの合計値
0x9A0000000xZZZZYYYYボタンを押している間実行ステータスをtrueにする。
YYYYはパッドの合計値。ZZZZはビットマスク。
0xAA0000000xZZZZYYYYボタンが押されていない間実行ステータスをtrueにする。
YYYYはパッドの合計値。ZZZZはビットマスク。
X-axis of
analog nub.
0x7A0000040x000000YYアナログパッドX方向の値がYYより大きい時
実行ステータスをtrueにする。
YYはアナログパッドX方向の値。
0x8A0000040x000000YYアナログパッドX方向の値がYYより小さい時
実行ステータスをtrueにする。
YYはアナログパッドX方向の値。
Y-axis of
analog nub.
0x7A0000080x000000YYアナログパッドY方向の値がYYより大きい時
実行ステータスをtrueにする。
YYはアナログパッドY方向の値。
0x8A0000080x000000YYアナログパッドY方向の値がYYより小さい時
実行ステータスをtrueにする。
YYはアナログパッドY方向の値。

TempARでCWCheatのパッドコードを再現する。


上記の通りTempARにもパッドコードはあるのですが
日本語での情報が少なく、使い方を知る術に乏しいため
なかなかわかりにくいかもしれません。
もちろん日本人でPSPAR書式を好んで使う人が超少数派という
事情もあるわけですが。

CWCheatのパッドコードをTempARではどのように表現するのか
サンプルを挙げて説明してみたいと思います。


_C0 CWCheat Joker Code
_L 0xD00000dd 0x1000nnnn  # dd+1=実行行数 nnnn=パッド合計値

_C0 Pad Tri+Squ+SEL
_L 0xD0000001 0x10009001 
_L 0x20001000 0x11111111
_L 0x20001004 0x22222222

dd=01 01+1 2行分下のコードを実行 
9001=8000(□)+1000(△)+1(SELECT)
□と△とSELECTボタンの3つが押されている間~
(他のボタンが押されていても良い)
アドレス0x00001000に0x11111111を書き込む。
アドレス0x00001004に0x22222222を書き込む。
_C0 TempAR Fake Address
_M 0x9A000000 0x0000YYYY

_C0 Masking 0x0000
_M 0x9A000000 0x00009001
_M 0x08801000 0x11111111
_M 0x08801004 0x22222222
_M 0xD2000000 0x00000000

9001=8000(□)+1000(△)+1(SELECT)
□と△とSELECTボタンの3つのみが押されている間~
(他のボタンが押されていてはいけない)
アドレス0x00001000に0x11111111を書き込む。
アドレス0x00001004に0x22222222を書き込む。
_C0 TempAR Fake Address
_M 0x9A000000 0xZZZZYYYY

_C0 Masking 0x6FFE
_M 0x9A000000 0x6FFE9001
_M 0x08801000 0x11111111
_M 0x08801004 0x22222222
_M 0xD2000000 0x00000000

9001=8000(□)+1000(△)+1(SELECT)
□と△とSELECTボタンの3つが押されている間~
(他のボタンが押されていても良い)
アドレス0x00001000に0x11111111を書き込む。
アドレス0x00001004に0x22222222を書き込む。

『_C0 Masking 0x0000』の例では
3つのボタン以外に他のボタンが押されていると
動かなくなってしまいます。
『×ボタンでダッシュ(十字キー)』、のようなコードを作る際には
×ボタンに加え、カーソル方向成分もパッドに加わるので
これを許容しなくてはなりません。

許容せずに上下左右4方向*2(斜め)のどこに入るかをそれぞれ
振り分けてコードを作成したらコードの長さが8倍になってしまいます。

これはビットマスクという形で解決します。

ビットマスク


ビットマスクそのものについてはwikipedia等で調べて下さい。
ビット演算 - wikipedia
マスク(情報工学) - wikipedia

実際に何をすれば良いのかのみを記述します。

1.パッドの値を合計する。
2.Windows付属の電卓を起動する。
3.表示→プログラマを選択する
4.16進、wordのラジオボタンを選択する。
5.パッドの合計値を入力する。
6.Notを押す。
7.Ctrl+Cでクリップボードに値をコピー。
8.パッド値の左側に貼り付ける。(0xZZZZYYYYのZZZZの部分)

ビットマスクを使うことで、目的のパッド値以外のビットを
無視するようになり、数値がきちんと取り出せるというわけです。
難しそうですが、原理を理解出来なくても使い方さえ覚えればOKです。

『_C0 Masking 0x6FFE』のようにビットマスクを使うことで
CWCheatと同じパッドコードの使いやすさを実現可能になります。


関連記事
スポンサーサイト

コメント: -

Home > TempAR Usage > TempAR - パッドコード1 デジタル&ビットマスク

Return to page top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。