剛好換了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 |
[yyyyyyyy]=[yyyyyyyy]-xxxxxxxx |
|
subtraction |
302000xx yyyyyyyy |
[yyyyyyyy]=[yyyyyyyy]-xx |
3040xxxx yyyyyyyy |
[yyyyyyyy]=[yyyyyyyy]-xxxx |
|
30600000 yyyyyyyy |
[yyyyyyyy]=[yyyyyyyy]-xxxxxxxx |
|
addition |
301000xx yyyyyyyy |
[yyyyyyyy]=[yyyyyyyy]+xx |
3030xxxx yyyyyyyy |
[yyyyyyyy]=[yyyyyyyy]+xxxx |
|
30500000 yyyyyyyy |
[yyyyyyyy]=[yyyyyyyy]+xxxxxxxx |
|
serial code |
4xxxxxxx yyyyzzzz |
由 [xxxxxxx] 開始將 yyyy 筆 data 設值為 aaaaaaaa,每筆間隔為 zzzz words |
byte copy |
5xxxxxxx yyyyyyyy |
由 [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上都會看到有人在用,
所以兩個都要會才行。