パッドコードのキーの変更の仕方
PS2PARでのパッドコードのキー割り当ての変更の方法を説明します。
変更をするには、仕組みを理解しなければなりません。
そのために、ここではパッドの仕組みを説明します
実際の操作ではツールを使うことで簡単に行えますが、
仕組みを理解していないとツールを見ても意味がわかりません。
ですので、きちんとマスターしてください。
●パッドコードとは
コントローラーの操作によってコードの効果を変更するコードです。
例えば、
<セレクト+上でON>
<セレクト+下でOFF>
などのコードがそうです。
●パッドコードの構造
パッドコードは2つの部分から構成されています。
A.キーの判定部分
B.実行部分
Aのキー判定がなくBの実行部分だけなら普通のコードと変りありません。
つまり、通常のコードの実行をパッドキーの状態によって実行制御したものがパッドコードということです。
例えば、
「HP9999」というコードがあったとします。
このコードにキー判定を付け加えればパッドコードになってしまいます。
<キー判定コード>
<HP9999のコード>
●キー判定部分
PARのコードで、DコードやEコードと呼ばれるコードは指定されたアドレスの状態によって、
それに続くコードを実行するかどうかの制御が可能です。
キーの状態はメモリに格納されていますので、これらのコードを使うことでパッドコードを実現しています。
どこに格納されているのかはゲームによって異なります。
しかし、同一のゲームでは共通であるため、1度見つければ他のコードをパッドコードに
することは容易です。
では、パッドコードで使われるDコード、Eコードを説明します。
●Dコード
復号化状態のコードの1桁目がDであるコードです。
Daaaaaaa 0000dddd
aaaaaaa:アドレス
dddd :アドレスの状態(2バイト)
アドレスaaaaaaaからの2バイトがddddでない場合に、次の1行をスキップします。
D0123456 00000001
コード1
コード2
というコードでは、アドレス0123456hからの2バイトが0001である場合、
コード1
コード2
が実行されます。
そうでない場合は、コード1は実行されず、コード2だけが実行されます。
●Eコード
復号化状態のコードの1桁目がEであるコードです。
E0nndddd 0aaaaaaa
aaaaaaa:アドレス
dddd :アドレスの状態(2バイト)
nn :スキップ行数
アドレスaaaaaaaからの2バイトがddddでない場合に、次のnn行をスキップします。
nnを1とした場合は、Dコードと同じ動作となります。
●注意点
DコードやEコードは必ずパッドコードで使うというわけではありません。
パッドコードは、あくまでもDコードやEコードの使い方のひとつです。
●アドレス部をどうするか
先ほども説明したとおり、アドレス部はゲームによって異なります。
コード解析をしたことのある人ならともかく、そうでない人は自分で見つけることはできません。
既にあるパッドコードのアドレスを利用してください。
●キー判定の値をどうするか
パッドの値は、ほとんどのゲームで共通です(例外はあります)。
しかし、「プラス形式」と「マイナス形式」という2種類があり、それぞれで値は変ります。
どちらの形式であるかは、パッドコードから判断して下さい。
●パッド値の構造
パッドの各キーには、それぞれonとoffの状態があります。
onはキーが押されいる状態、offはキーを離した状態です。
「プラス形式」ではonが1、offが0となり、
「マイナス形式」ではonが0、offが1となります。
PS2のコントローラーには16種類のキーがありますが、
これらを決められた順に並べ、それぞれの状態を2進数とみなし、
16進数にしたものがパッド値になります。
ためしに、プラス形式の「セレクト+×」の値を作ってみます。
プラス形式でのキーの順序は次の通りです。
←
↓
→
↑
start
R3
L3
select
□
×
〇
△
R1
L1
R2
L2
これに各キーの状態を付け加えます。
今回は「セレクト+×」ですので、「セレクト」と「×」はonで1、
その他はoffの0となります。
0:←
0:↓
0:→
0:↑
0:start
0:R3
0:L3
1:select
0:□
1:×
0:〇
0:△
0:R1
0:L1
0:R2
0:L2
縦では見にくいので、状態のみを横に表示します。
0000 0001 0100 0000
これを2進数とみなして、16進数にすると、
0000 0001 0100 0000
0 1 4 0
となり、0140hとなります。
同じキーをマイナス形式で作ってみます。
マイナス形式でのキーの順番は、
□
×
〇
△
R1
L1
R2
L2
←
↓
→
↑
start
R3
L3
select
となります。
「マイナス形式」ではonが0、offが1ですので、「セレクト」と「×」はonで0、
その他はoffの1となります。
1:□
0:×
1:〇
1:△
1:R1
1:L1
1:R2
1:L2
1:←
1:↓
1:→
1:↑
1:start
1:R3
1:L3
0:select
縦では見にくいので、状態のみを横に表示します。
1011 1111 1111 1110
これを2進数とみなして、16進数にすると、
1011 1111 1111 1110
B F F E
となり、BFFEhとなります。
●パッド値の変更
それでは、実際の例を使ってパッド値の変更をしてみましょう。
L3ボタンでHP999
0CBAEA26 1456E5A5
1C87C3A8 1456E404
というコードがあったとします。
これを、L1+L2でHP999に変更してみます。
1.まずコードを復号化します。
L3ボタンでHP999
D02F6902 00000200
20104080 000003E7
1行目がDコードで、これがキー判定部です。
2.パッド値を確認します。
Dコードのパッド値は最後の4桁です。
つまり、0200がパッド値だと思われます。
念のため確認すると、確かにL3ボタンは0200です。
従ってここを変更すればいいわけです。
3.L1+L2のパッド値を計算します。
計算すると、0005になります。
4.パッド値を変更します。
D02F6902 00000200を
D02F6902 00000005にします。
この段階で、コードは
L1+L2ボタンでHP999
D02F6902 00000005
20104080 000003E7
となっています。
5.コードを暗号化します。
L1+L2ボタンでHP999
0CBAEA26 1456E7A2
1C87C3A8 1456E404
これで完成です。
仕組みがわかったら、実際の作業はツールを使って行えばもっと簡単にできます。
当サイトで公開しているツールのうち、
・携帯用パッド計算
・ParCodeEditor
・PS2-PAR暗号化スクリプト
・PS2PAR携帯用暗号化4
はパッド値計算ができます。
活用して下さい。
●パッド値表
<プラス形式>
L1(0004)
L2(0001)
L3(0200)
R1(0008)
R2(0002)
R3(0400)
〇(0020)
×(0040)
△(0010)
□(0080)
select(0100)
start(0800)
↑(1000)
↓(4000)
←(8000)
→(2000)
<マイナス形式>
L1(0400)
L2(0100)
L3(0002)
R1(0800)
R2(0200)
R3(0004)
〇(2000)
×(4000)
△(1000)
□(8000)
select(0001)
start(0008)
↑(0010)
↓(0040)
←(0080)
→(0020)
戻る
Copyright (C) 2007 ugnag all rights Reserved.