パッドコードのキーの変更の仕方


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はキーを離した状態です。

「プラス形式」ではon1off0となり、
「マイナス形式」ではon0off1となります。


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

となります。

「マイナス形式」ではon0off1ですので、「セレクト」と「×」は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


これで完成です。



仕組みがわかったら、実際の作業はツールを使って行えばもっと簡単にできます。

当サイトで公開しているツールのうち、

・携帯用パッド計算ParCodeEditorPS2-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.