PS2 金手指碼意義

剛好換了word 2007,
所以來順便測試好不好用。
PS2 已經過時蠻久了,
金手指碼的技術在中文語系地區還是很落後,
所以稍微貼一貼過去整理出來的東西。

類別

金手指碼

意義

value assignment

0xxxxxxx 000000yy

byte assignment

1xxxxxxx 0000yyyy

half-word assignment

2xxxxxxx yyyyyyyy

word assignment

subtraction

300100xx yyyyyyyy

[yyyyyyyy]=[yyyyyyyy]-xx

3002xxxx yyyyyyyy

[yyyyyyyy]=[yyyyyyyy]-xxxx

30030000 yyyyyyyy
xxxxxxxx 00000000

[yyyyyyyy]=[yyyyyyyy]-xxxxxxxx

subtraction
[Ver1.6j以上專用]

302000xx yyyyyyyy

[yyyyyyyy]=[yyyyyyyy]-xx

3040xxxx yyyyyyyy

[yyyyyyyy]=[yyyyyyyy]-xxxx

30600000 yyyyyyyy
xxxxxxxx 00000000

[yyyyyyyy]=[yyyyyyyy]-xxxxxxxx

addition
[Ver1.6j以上專用]

301000xx yyyyyyyy

[yyyyyyyy]=[yyyyyyyy]+xx

3030xxxx yyyyyyyy

[yyyyyyyy]=[yyyyyyyy]+xxxx

30500000 yyyyyyyy
xxxxxxxx 00000000

[yyyyyyyy]=[yyyyyyyy]+xxxxxxxx

serial code
[Ver1.6j以上/Xploder 專用]

4xxxxxxx yyyyzzzz
aaaaaaaa 00000000

由 [xxxxxxx] 開始將 yyyy 筆 data 設值為 aaaaaaaa,每筆間隔為 zzzz words

byte copy

5xxxxxxx yyyyyyyy
zzzzzzzz 00000000

由 [xxxxxxx] 開始複製 yyyyyyyy bytes 至 [zzzzzzzz] 開始的位置

once assignment

Axxxxxxx yyyyyyyy

遊戲啟動時將 [xxxxxxx] 的值設為 yyyyyyyy,不需要 master code 即可動作,常用於修改具不變性的程式碼

timer

B0000000 xxxxxxxx

遊戲啟動時從 xxxxxxxx 開始倒數,倒數結束後 enable 下面一行 code,單位可能為 1/60 secs 或 1/99 secs

conditional execution by checking master code

Cxxxxxxx yyyyyyyy

若 [xxxxxxx] 的值為 yyyyyyyy 的話,就 enable 之後的 code

conditional execution type 1

Dxxxxxxx 0000yyyy

若 [xxxxxxxx] == yyyy 則 enable 下一行 code

Dxxxxxxx 0010yyyy

若 [xxxxxxxx] != yyyy 則 enable 下一行 code

Dxxxxxxx 0020yyyy

若 [xxxxxxxx] < yyyy 則 enable 下一行 code

Dxxxxxxx 0030yyyy

若 [xxxxxxxx] > yyyy 則 enable 下一行 code

conditional execution type 2

E0zzyyyy 0xxxxxxx

若 [xxxxxxxx] == yyyy 則 enable 下 zz 行 code

E0zzyyyy 1xxxxxxx

若 [xxxxxxxx] != yyyy 則 enable 下 zz 行 code

E0zzyyyy 2xxxxxxx

若 [xxxxxxxx] < yyyy 則 enable 下 zz 行 code

E0zzyyyy 3xxxxxxx

若 [xxxxxxxx] > yyyy 則 enable 下 zz 行 code

上面的conditional execution碼常用在「按下某按鍵組合,就會有某某功能」,
這個原理是先找出遊戲中對應game pad的address,
然後將pad value放在yyyy的部分製作而成的,
pad value的合成方法又分為兩種。

一種是PS時代的plus形式:

按鍵

NEUTRAL

0x0000

L2

0x0001

R2

0x0002

L1

0x0004

R1

0x0008

0x0010

0x0020

0x0040

0x0080

SELECT

0x0100

L3

0x0200

R3

0x0400

START

0x0800

0x1000

0x2000

0x4000

0x8000

所謂plus形式就是用加法合成,
以NEUTRAL為基底加上去,
譬如:
L3 + R3 : 0x0000 + 0x0200 + 0x0400 = 0x0600
△ + ↑ : 0x0000 + 0x0010 + 0x1000 = 0x1010

另一種是PS2時代慣用的minus形式:

按鍵

SELECT

0x0001

L3

0x0002

R3

0x0004

START

0x0008

0x0010

0x0020

0x0040

0x0080

L2

0x0100

R2

0x0200

L1

0x0400

R1

0x0800

0x1000

0x2000

0x4000

0x8000

NEUTRAL

0xFFFF

minus形式顧名思義就是用減的合成,
基底值是NEUTRAL,
譬如:
△ + ↑ : 0xFFFF - 0x1000 - 0x0010 = 0xEFEF
不管是plus還是minus形式,
在PS2上都會看到有人在用,
所以兩個都要會才行。