![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() 猫猫猫 ![]() ![]() ![]() Group: Power Cat Posts: 626 Joined: 2006-12-8 Member No.: 2 ![]() |
直接寫入碼
單字節/8 bits 0x0aa aa aa a 0x000000bb ※將aa aa aa a地址上的數値修改成bb並鎖定不變。 雙字節/16 bits 0x1aa aa aa a 0x0000bb bb ※將aa aa aa a地址上的數値修改成bb bb並鎖定不變,地址尾數必須是0、2、4、6、8、A、C或E。 四字節/32 bits 0x2aa aa aa a 0xbb bb bbbb ※將aa aa aa a地址上的數値修改成bb bb bbbb並鎖定不變,地址尾數必須是0、4、8或C。 這些就是最普通的代碼了,CM的碼也可以直接轉成這種碼。 |
|
|
![]()
Post
#2
|
|
![]() 猫猫猫 ![]() ![]() ![]() Group: Power Cat Posts: 626 Joined: 2006-12-8 Member No.: 2 ![]() |
多行寫入碼
單字節/8 bits 0x8aa aa aa a 0xnn nncc cc 0x000000bb 0x000000dd ※從aa aa aa a地址開始連續作nn nn行的修改,每行地址間隔cc cc,第一行修改値爲bb,之後每行修改値遞增dd。 雙字節/16 bits 0x8aa aa aa a 0xnn nncc cc 0x1000bb bb 0x0000dd dd ※從aa aa aa a地址開始連續作nn nn行的修改,每行地址間隔cc cc×2,第一行修改値爲bb bb,之後每行修改値遞增dd dd,地址尾數必須是0、2、4、6、8、A、C或E。 四字節/32 bits 0x4aa aa aa a0xnn nncc cc 0xbb bb bbbb 0xdd dd dd dd ※從aa aa aa a地址開始連續作nn nn行的修改,每行地址間隔cc cc×4,第一行修改値爲bb bb bb bb,之後每行修改値遞增dd dd dd dd,地址尾數必須是0、4、8或C。 這些就是俗稱的壓縮碼了,是實用度非常高的碼,可以將連續多行有規律的碼壓縮成短短的兩行。單字節和雙字節的壓縮碼的區別就以第二行的開頭是0還是1來決定。 比如 0x00320267 0x00000002 0x00320269 0x00000003 0x0032026B 0x00000004 0x0032026D 0x00000005 0x0032026F 0x00000006 可以壓縮成 0x80320267 0x00050002 0x00000002 0x00000001 又比如 0x105603BC 0x00000201 0x105603C0 0x00000403 0x105603C4 0x00000605 0x105603C8 0x00000807 0x105603CC 0x00000A09 可以壓縮成 0x805603BC 0x00050002 0x10000201 0x00000202 擧了兩例各位應該看出名堂了吧。通常遊戲中的全道具之類的碼就是壓縮碼發揮的最好地方,衹要道具代碼連續,幾百行的全道具碼也可以縮短爲二到四行。 |
|
|
![]()
Post
#3
|
|
![]() 猫猫猫 ![]() ![]() ![]() Group: Power Cat Posts: 626 Joined: 2006-12-8 Member No.: 2 ![]() |
條件碼
單字節/8 bits 0xDaa aa aa a 0x200000bb ※當aa aa aa a地址上的數値等於bb時執行下一行代碼,否則下一行代碼不執行。 0xDaa aa aa a 0x201000bb ※當aa aa aa a地址上的數値不等於bb時執行下一行代碼,否則下一行代碼不執行。 0xDaa aa aa a 0x202000bb ※當aa a aa aa地址上的數値小於bb時執行下一行代碼,否則下一行代碼不執行。 0xDaa aa aaa 0x203000bb ※當aa aa aa a地址上的數値大於bb時執行下一行代碼,否則下一行代碼不執行。 雙字節/16 bits 0xDaa aa aaa 0x0000bb bb ※當aa aa aaa地址上的數値等於bb bb時執行下一行代碼,否則下一行代碼不執行,地址尾數必須是0、2、4、6、8、A、C或E。 0xDaa a aa aa 0x0010bb bb ※當a aa a a aa地址上的數値不等於bb bb時執行下一行代碼,否則下一行代碼不執行,地址尾數必須是0、2、4、6、8、A、C或E。 0xDaa aa aaa 0x0020bb bb ※當aa aa a aa地址上的數値小於bb bb時執行下一行代碼,否則下一行代碼不執行,地址尾數必須是0、2、4、6、8、A、C或E。 0xDaaa aa aa 0x0030bb bb ※當aa aa aaa地址上的數値大於bb bb時執行下一行代碼,否則下一行代碼不執行,地址尾數必須是0、2、4、6、8、A、C或E。 條件碼也是很常用的且必不可少的碼,它單獨存在沒有任何意義,要配合其它的碼才能發揮作用。條件碼最大的作用就是可以和PSP遊戲的按鍵地址搭配成按鍵 碼,通過按不同的鍵位(包括組合鍵)就可以啓動不同的碼而無需頻繁地呼出CW界麵來切換效果,非常的方便。另外每個PSP遊戲的按鍵地址也是各不相同的, 需要各位去搜索了。 |
|
|
![]()
Post
#4
|
|
![]() 猫猫猫 ![]() ![]() ![]() Group: Power Cat Posts: 626 Joined: 2006-12-8 Member No.: 2 ![]() |
萬能鍵位碼
0xD00000nn 0x1bb bb bbb ※當鍵位値等於bbbbbbb時執行該行代碼下的nn+1行代碼,否則跳過nn+1行代碼。 0xD00000nn 0x3bb bb bbb ※當鍵位値等於bb bb bbb時跳過該行代碼下的nn+1行代碼,否則執行nn+1行代碼。 每個按鍵對應的鍵位値如下: Button Code 如果想配組合鍵的話可以將每個按鍵的値相加,最多可以將3個按鍵組合。而鍵位碼的地址不用自己尋找,CW會自動檢測到的。 雖然自己找鍵位碼的地址也不是甚麼難事,但旣然CW能自動找到地址還是能省掉不少麻煩的。 |
|
|
![]()
Post
#5
|
|
![]() 猫猫猫 ![]() ![]() ![]() Group: Power Cat Posts: 626 Joined: 2006-12-8 Member No.: 2 ![]() |
多行條件碼
單字節/8 bits 0xE1nn00bb 0x0aaa aa aa ※當aaa aa aa地址上的數値等於bb時執行下麵nn行代碼,否則下麵nn行代碼不執行。 0xE1nn00bb 0x1aaa aa aa ※當aaa aaaa地址上的數値不等於bb時執行下麵nn行代碼,否則下麵nn行代碼不執行。 0xE1nn00bb 0x2aaa aaa a ※當aaa aaa a地址上的數値小於bb時執行下麵nn行代碼,否則下麵nn行代碼不執行。 0xE1nn00bb 0x3aaa aaa a ※當aaa aaa a地址上的數値大於bb時執行下麵nn行代碼,否則下麵nn行代碼不執行。 0xDaaa aa aa 0x4bbb bbb b 0xnnnnnnnn 0x00000000 0xYYYYYYYY 0xZZZZZZZZ (起始行) ※當aaa aaa a地址上的數値等於bbb bbb bb地址上的數値時執行從起始行開始的nnnnnnnn行代碼,否則下麵nnnnnnnn行代碼不執行。 0xDaaa aaa a 0x5bbb bbb b 0xnnnnnnnn 0x00000000 0xYYYYYYYY 0xZZZZZZZZ (起始行) ※當aaa aaa a地址上的數値不等於bbb bbb bb地址上的數値時執行從起始行開始的nnnnnnnn行代碼,否則下麵nnnnnnnn行代碼不執行。 0xDaaa aaa a 0x6bbb bbb b 0xnnnnnnnn 0x00000000 0xYYYYYYYY 0xZZZZZZZZ (起始行) ※當aaa aaa a地址上的數値小於bbb bbb bb地址上的數値時執行從起始行開始的nnnnnnnn行代碼,否則下麵nnnnnnnn行代碼不執行。 0xDaaa aaa a 0x7bbb bbb b 0xnnnnnnnn 0x00000000 0xYYYYYYYY 0xZZZZZZZZ (起始行) ※當aaa aaa a地址上的數値大於bbb bbb bb地址上的數値時執行從起始行開始的nnnnnnnn行代碼,否則下麵nnnnnnnn行代碼不執行。 雙字節/16 bits 0xE0nnbbb b 0x0aaa aaa a ※當aaa aaa a地址上的數値等於bbbb時執行下麵nn行代碼,否則下麵nn行代碼不執行,地址尾數必須是0、2、4、6、8、A、C或E。 0xE0nnbbbb 0x1aaa aaa a ※當aaa aaa a地址上的數値不等於bbbb時執行下麵nn行代碼,否則下麵nn行代碼不執行,地址尾數必須是0、2、4、6、8、A、C或E。 0xE0nnbbbb 0x2aaa aaa a ※當aaa aaa a地址上的數値小於bbbb時執行下麵nn行代碼,否則下麵nn行代碼不執行,地址尾數必須是0、2、4、6、8、A、C或E。 0xE0nnbbbb 0x3aaa aaa a ※當aaa aaa a地址上的數値大於bbbb時執行下麵nn行代碼,否則下麵nn行代碼不執行,地址尾數必須是0、2、4、6、8、A、C或E。 0xDaaa aaa a 0x4bbbbbbb 0xnnnnnnnn 0x00000001 0xYYYYYYYY 0xZZZZZZZZ (起始行) ※當aaa aaa a地址上的數値等於bbbbbbbb地址上的數値時執行從起始行開始的nnnnnnnn行代碼,否則下麵nnnnnnnn行代碼不執行,地址尾數必須是0、2、4、6、8、A、C或E。 0xDaaa aaa a 0x5bbbbbbb 0xnnnnnnnn 0x00000001 0xYYYYYYYY 0xZZZZZZZZ (起始行) ※當aaa aaa a地址上的數値不等於bbbbbbbb地址上的數値時執行從起始行開始的nnnnnnnn行代碼,否則下麵nnnnnnnn行代碼不執行,地址尾數必須是0、2、4、6、8、A、C或E。 0xDaaa aaa a 0x6bbbbbbb 0xnnnnnnnn 0x00000001 0xYYYYYYYY 0xZZZZZZZZ (起始行) ※當aaa aaa a地址上的數値小於bbbbbbbb地址上的數値時執行從起始行開始的nnnnnnnn行代碼,否則下麵nnnnnnnn行代碼不執行,地址尾數必須是0、2、4、6、8、A、C或E。 0xDaaa aaa a 0x7bbbbbbb 0xnnnnnnnn 0x00000001 0xYYYYYYYY 0xZZZZZZZZ (起始行) ※當aaa aaa a地址上的數値大於bbbbbbbb地址上的數値時執行從起始行開始的nnnnnnnn行代碼,否則下麵nnnnnnnn行代碼不執行,地址尾數必須是0、2、4、6、8、A、C或E。 四字節/32 bits 0xDaaa aaa a 0x4bbbbbbb 0xnnnnnnnn 0x00000002 0xYYYYYYYY 0xZZZZZZZZ (起始行) ※當aaa aaa a地址上的數値等於bbbbbbbb地址上的數値時執行從起始行開始的nnnnnnnn行代碼,否則下麵nnnnnnnn行代碼不執行,地址尾數必須是0、4、8或C。 0xDaaa aaa a 0x5bbbbbbb 0xnnnnnnnn 0x00000002 0xYYYYYYYY 0xZZZZZZZZ (起始行) ※當aaa aaa a地址上的數値不等於bbbbbbbb地址上的數値時執行從起始行開始的nnnnnnnn行代碼,否則下麵nnnnnnnn行代碼不執行,地址尾數必須是0、4、8或C。 0xDaaa aaa a 0x6bbbbbbb 0xnnnnnnnn 0x00000002 0xYYYYYYYY 0xZZZZZZZZ (起始行) ※當aaa aaa a地址上的數値小於bbbbbbbb地址上的數値時執行從起始行開始的nnnnnnnn行代碼,否則下麵nnnnnnnn行代碼不執行,地址尾數必須是0、4、8或C。 0xDaaa aaa a 0x7bbbbbbb 0xnnnnnnnn 0x00000002 0xYYYYYYYY 0xZZZZZZZZ (起始行) ※當aaa aaa a地址上的數値大於bbbbbbbb地址上的數値時執行從起始行開始的nnnnnnnn行代碼,否則下麵nnnnnnnn行代碼不執行,地址尾數必須是0、4、8或C。 之前介紹的條件碼衹能控製下麵一行代碼,而當多行代碼都需要同一個條件控製時,或者要控製壓縮碼這樣的不能分離的兩行碼時,又或者有兩個以上的條件碼要嵌 套使用時,就要選擇條件壓縮碼了。衹是可惜條件壓縮碼無法作單字節的比較,但兩組雙字節的條件壓縮碼嵌套使用時卻可以作四字節的比較。 比如 0xE0020A0D 0x00320ACE 0x40320B00 0x00B00001 0x00630001 0x00000001 這個就是和壓縮碼搭配的組合。 又比如 0xE002FB7F 0x002FDA9C 0xD079597E 0x0000453B 0x20795978 0x453B7FFF 這個就是兩個條件碼嵌套的組合。 |
|
|
![]()
Post
#6
|
|
![]() 猫猫猫 ![]() ![]() ![]() Group: Power Cat Posts: 626 Joined: 2006-12-8 Member No.: 2 ![]() |
加減碼
單字節/8 bits 0x301000nn 0x0aaaa a aa ※將aaaa a aa地址上的數値每經過一幀就增加nn。 0x302000nn 0x0aaaa a aa ※將aaaa a aa地址上的數値每經過一幀就減去nn。 雙字節/16 bits 0x3030nnnn 0x0aaaa a aa ※將aaaa a aa地址上的數値每經過一幀就增加nnnn,地址尾數必須是0、2、4、6、8、A、C或E。 0x3040nnnn 0x0aaaa a aa ※將aaaa a aa地址上的數値每經過一幀就減去nnnn,地址尾數必須是0、2、4、6、8、A、C或E。 四字節/32 bits 0x305 00000 0x0aaaa a aa 0xnnnnnnnn 0x0000 0000 ※將aaaa a aa地址上的數値每經過一幀就增加nnnnnnnn,地址尾數必須是0、4、8或C。 0x306 00000 0x0aaaa a aa 0xnnnnnnnn 0x0000 0000 ※將aaa aa aa地址上的數値每經過一幀就減去nnnnnnnn,地址尾數必須是0、4、8或C。 這些碼可以把地址上的原數値作加減法運算,但是是以幀(通常遊戲1秒鐘有30~60幀)爲速度單位作運算的,所以加減的速度非常快,通常要配合條件碼使用。 |
|
|
![]()
Post
#7
|
|
![]() 猫猫猫 ![]() ![]() ![]() Group: Power Cat Posts: 626 Joined: 2006-12-8 Member No.: 2 ![]() |
邏輯運算碼
單字節/8 bits 0x7aaaa aaa 0x000000bb ※將aaaa aaa地址上的數値作或運算,由bb決定哪些比特作比較。 0x7aaaa aaa 0x000200bb ※將aaaa aaa地址上的數値作與運算,由bb決定哪些比特作比較。 0x7aaaa aaa 0x000400bb ※將aaaa aaa地址上的數値作非運算,由bb決定哪些比特作比較。 雙字節/16 bits 0x7aaaa aaa 0x0001bbbb ※將aaaa aaa地址上的數値作或運算,由bbbb決定哪些比特作比較,地址尾數必須是0、2、4、6、8、A、C或E。 0x7aaaa aaa 0x0003bbbb ※將aaaa aaa地址上的數値作與運算,由bbbb決定哪些比特作比較,地址尾數必須是0、2、4、6、8、A、C或E。 0x7aaaa aaa 0x0005bbbb ※將aaaa aaa地址上的數値作非運算,由bbbb決定哪些比特作比較,地址尾數必須是0、2、4、6、8、A、C或E。 這些碼要著重講解一下,所謂邏輯運算就是將某字節上的若幹比特(bit)作或、與、非之類的運算。 比特是計算機中最小的單位,(1個字節可以拆分爲8個比特,方法是用函數型計算器輸入十六進製的數値然後轉成二進製)不是0就是1,所以邏輯運算碼是修改 精度最高的命令碼。(使用它可以修改某字節中某個或是數個比特而不影響其它的比特,而單字節持續寫入碼則是8個比特一起受到影響被修改)或運算用來將比特置1,與運算用來將比特清0,非運算則是取反(卽原來是0的就置1,原來是1的就清0)。 比如 0x70032095 0x00000023 最後麵的23轉成二進製就是00100011b(最後的小寫b是二進製的符號,實際運算時不用去看它)。由於是作或運算,所以就看其中1的部分,0的部分不看。從右向左數第1、2、6位是1,所以0032095地址上的原數値的這幾個位置的比特就被置1,其餘不變。 又比如 0x70032095 0x00020023 這次是作與運算,所以就看其中0的部分,1的部分不看。從右向左數第3、4、5、7、8位是0,所以0032095地址上的原數値的這幾個位置的比特就被清0,其餘不變。 再比如 0x70032095 0x00040023 這次改作非運算,所以就看其中1的部分,0的部分不看。從右向左數第1、2、6位是1,所以0032095地址上的原數値的這幾個位置的比特就取反,其餘不變。 |
|
|
![]()
Post
#8
|
|
![]() 猫猫猫 ![]() ![]() ![]() Group: Power Cat Posts: 626 Joined: 2006-12-8 Member No.: 2 ![]() |
複製碼
0x5aaaa aaa 0xnnnnnnnn 0xbbbb bbbb 0x00000000 ※從aaaa aaa地址開始連續將nnnnnnnn個字節的數値複製到bbbb bbbb地址開始的地址段中。 這個碼通常可以在RPG中用來把HP、MP之類的最大値複製成現在値,這樣就可以達到HP、MP自動補滿而不超出最大値的效果了。 |
|
|
![]()
Post
#9
|
|
![]() 猫猫猫 ![]() ![]() ![]() Group: Power Cat Posts: 626 Joined: 2006-12-8 Member No.: 2 ![]() |
指針複製碼
0x6aaaa aaa 0xbbbb bbbb 0xqqq00002 0xccc ccc cc 0x1ssss sss 0x00000000 ※nnnn必須等於0002,作用是從地址A複製bbbb bbbb個字節到地址B。 地址A=aaaa aaa上的値減08800000加ccc cc ccc 地址B=(aaaa aaa+qqq×4)上的値減08800000加ssss sss 這個指針碼是專門用來解決那些動態地址的遊戲的。某些遊戲如《天地之門》、《天誅 忍大全》、《寂靜嶺 起源》中的HP地址是會隨場景或關卡的變化而變化的,但並不是完全無規律的變化,而是根據某個地址上的四字節的數値作爲基地址再進行一個固定的偏移後形成 的實際地址。衹要能找到基地址和偏移量就能用指針碼牢牢鎖定住實際地址了,不管那個地址偏移到哪都一樣。不過找基地址的難度非常大,國內會做指針碼的人 (比如我)眞的不多。 指針壓縮碼和指針複製碼是我和CW作者一起協商後設計出來的,用來實現《星之海洋FD》這樣的遊戲中的全道具和HP不減之類的修改的。 |
|
|
![]()
Post
#10
|
|
![]() 猫猫猫 ![]() ![]() ![]() Group: Power Cat Posts: 626 Joined: 2006-12-8 Member No.: 2 ![]() |
指針碼
單字節/8 bits 0x6aaa aaaa 0x0000 00bb 0xqqq0nnnn 0xccc ccc cc 0x9sss ssss 0x0000 00dd ※從aaa aaaa地址開始讀取四字節的數値後減去0880000 0 再加上ccc ccc cc,把此數値當作實際地址,把此實際地址上的數値修改成bb。aaaa aaa的尾數必須是0、4、8或C。 如果想用指針壓縮碼的話需要9 開頭的那行附加行,共壓縮nnnn組有規律的普通的指針碼,每次aaaa aaa遞增qqq×4,ccc ccc cc遞增sss ssss,bb遞增dd。 0x6aaaa aaa 0x0000 00bb 0xqqq3nnnn 0xccc ccc cc 0x9sss ssss 0x0000 00dd ※從aaa aaaa地址開始讀取四字節的數値後減去0880 0000再減去ccc ccc cc,把此數値當作實際地址,把此實際地址上的數値修改成bb。aaaa aaa的尾數必須是0、4、8或C。 如果想用指針壓縮碼的話需要9 開頭的那行附加行,共壓縮nnnn組有規律的普通的指針碼,每次aaaa aaa遞增qqq×4,ccc ccc cc遞增sss ssss,bb遞增dd。 雙字節/16 bits 0x6aaaa aaa 0x0000bbbb 0xqqq1nnnn 0xccc ccc cc 0x9ssss sss 0x0000dddd ※從aaaa aaa地址開始讀取四字節的數値後減去0880000 0再加上ccc ccc cc,把此數値當作實際地址,把此實際地址上的數値修改成bbbb。aaa aaaa的尾數必須是0、4、8或C。 如果想用指針壓縮碼的話需要9 開頭的那行附加行,共壓縮nnnn組有規律的普通的指針碼,每次aaa aaaa遞增qqq×4,ccc c c ccc遞增ssss sss×2,bbbb遞增dddd。 0x6aaa aaaa 0x0000bbbb 0xqqq4nnnn 0xccc ccc cc 0x9ssss sss 0x0000dddd ※從aaaa aaa地址開始讀取四字節的數値後減去0880 0000再減去ccc ccc cc,把此數値當作實際地址,把此實際地址上的數値修改成bbbb。aaa aaaa的尾數必須是0、4、8或C。 如果想用指針壓縮碼的話需要9 開頭的那行附加行,共壓縮nnnn組有規律的普通的指針碼,每次aaaa aaa遞增qqq×4,ccc ccc cc遞增ssss sss×2,bbbb遞增dddd。 四字節/32 bits 0x6aaaa aaa 0xbbbb bbbb 0xqqq2nnnn 0xccc ccc cc 0x9ssss sss 0xdddd dddd ※從aaa aaaa地址開始讀取四字節的數値後減去088 0000 0再加上ccc ccc cc,把此數値當作實際地址,把此實際地址上的數値修改成bbbb bbbb。aaaa aaa的尾數必須是0、4、8或C。 如果想用指針壓縮碼的話需要9 開頭的那行附加行,共壓縮nnnn組有規律的普通的指針碼,每次aaa aaaa遞增qqq×4,ccc ccc cc遞增ssss sss×4,bbbb bbbb遞增dddd dddd。 0x6aaa aaaa 0xbbbb bbbb 0xqqq5nnnn 0xccc ccc cc 0x9ssss sss 0xdddd dddd ※從aaaa aaa地址開始讀取四字節的數値後減去088 00000再減去ccc ccc cc,把此數値當作實際地址,把此實際地址上的數値修改成bbbb bbbb。aaaa aaa的尾數必須是0、4、8或C。 如果想用指針壓縮碼的話需要9 開頭的那行附加行,共壓縮nnnn組有規律的普通的指針碼,每次aaaa aaa遞增qqq×4,ccc ccc cc遞增ssss sss×4,bbbb bbbb遞增dddd dddd。 舉例 0x60020000 0x0000 0063 0x00100002 0x0000 0002 0x90000 000 0x0000 0000 等於 0x60020000 0x0000 0063 0x0000 0001 0x0000 0 002 0x60020004 0x0000 0063 0x0000 0001 0x0000 0002 再舉一例 0x60020000 0x0000 0063 0x00230003 0x0000 0002 0x90000 001 0x0000 0002 等於 0x60020000 0x0000 0063 0x00030001 0x0000 0002 0x60020008 0x0000 0065 0x00030001 0x0000 0003 0x60020010 0x0000 0067 0x00030001 0x0000 0004 |
|
|
![]()
Post
#11
|
|
![]() 猫猫猫 ![]() ![]() ![]() Group: Power Cat Posts: 626 Joined: 2006-12-8 Member No.: 2 ![]() |
多級指針碼
單字節/8 bits 0x6aaa aaaa 0x000000bb 0x0000nnnn 0xccc cc ccc 0x2ssss sss 0x3tttt ttt …… 0x6aaa aaaa 0x000000bb 0x0003nnnn 0xccc ccc cc 0x2sss ssss 0x3ttt tttt …… 雙字節/16 bits 0x6aaa aaaa 0x0000bbbb 0x0001nnnn 0xccc ccc cc 0x2ssss sss 0x3tttt ttt …… 0x6aaa aaaa 0x0000bbbb 0x0004nnnn 0xccc ccc cc 0x2ssss sss 0x3ttt tttt …… 四字節/32 bits 0x6aaa aaaa 0xbbbb bbbb 0x0002nnnn 0xccc ccc cc 0x2ssss sss 0x3ttt tttt …… 0x6aaaa aaa 0xbbbb bbbb 0x0005nnnn 0xccc ccc cc 0x2ssss sss 0x3ttt tttt …… ※多級指針碼的格式類似普通的指針碼,區別在於附加行的開頭數字是2或3,而且附加行可以有多行,這個要視nnnn部分而定。nnnn表示有多少級指針,比如3級指針就是0003;ssss sss和tttt ttt分別是第1和第2級偏移値,第3、第4級偏移値就依次在後麵的省略號部分追加;附加行開頭的2表示正向偏移値,開頭的3表示逆向偏移値;ccc ccc cc則是末級偏移値,也就是最後要寫入數據bb部分時用的偏移値,正向還是逆向由前麵的粗體字部分確定。 舉例 vosman找到的《戰神》中的體力地址公式 [[[0x346B00]+0xA8]+0x68]+0x64 轉換後就是 0x60346B00 0x43480000 0x00020003 0x00000064 0x200000A8 0x20000068 dc4找到的《戰神》中的無限二段跳地址(僅GOD難度有效) [[0x0033614C] - 0x60] + 0x2C8 轉換後就是 0x6033614C 0x00000001 0x00020002 0x000002C8 0x30000060 0x00000000 |
|
|
![]()
Post
#12
|
|
![]() 猫猫猫 ![]() ![]() ![]() Group: Power Cat Posts: 626 Joined: 2006-12-8 Member No.: 2 ![]() |
附1:部分PS碼的格式轉換
PS的金手指分AR/GS和CB Caetla格式部分命令相同。但CB Caetla格式支持一些長度是16位的碼,而CW Cheat for POPS則用的是AR/GS格式的碼,長度全部是12位,所以下麵將講解一下如何將CB Caetla格式的碼轉成AR/GS格式。 CB Caetla格式 9 aaaa aaa ccc cbbbb 轉成AR/GS格式後 8aaaa aaa bbbb 8aaaa aaa+2 c ccc ※其實就是一個四字節的碼轉成兩個雙字節的碼。 比如 90028508 0098967F 轉換後 80028508 967F 8002850A 0098 CB Caetla格式 Bnnnccc c 000000dd 3aaaa aaa 00bb 轉成AR/GS格式後 5000nncc 00dd 3aaaa aaa 00bb CB Caetla格式 Bnnnc ccc 0000dddd 8aaaa aaa bbbb 轉成AR/GS格式後 5000nncc dddd 8aaaa aaa bbbb ※其實就是壓縮碼的轉換。 比如 B0800002 00000202 8005DEFA 0100 轉換後 50008002 0202 8005DEFA 0100 CB Caetla格式 Eaaaa aaa bbbbnnnn 轉成AR/GS格式後就是nnnn行的 Daaa aaaa bbbb ※其實就是將條件壓縮碼展開,衹是展開後就無法嵌套其它壓縮碼了,但要嵌套的場合實在不多。 比如 E052DA50 24020003 8052DA52 0000 8052DA54 2463 8052DA56 0001 轉換後 D052DA50 2402 8052DA52 0000 D052DA50 2402 8052DA54 2463 D052DA50 2402 8052DA56 0001 |
|
|
![]()
Post
#13
|
|
![]() 猫猫猫 ![]() ![]() ![]() Group: Power Cat Posts: 626 Joined: 2006-12-8 Member No.: 2 ![]() |
附2:PS碼轉換成CM Fusion用的方法
這部分教程CW用戶大可不必去看,因爲cwcheatpops.prx可以直接用AR/GS格式的PS碼。但國內用戶仍有許多喜歡使用CM Fusion的,因此有必要爲這些用戶簡單講解一下幾個常用的轉換方法。 30aaaa aa 00bb 轉換後 0x01aaaa aa 0x000 000bb 80aaaa aa bbbb 轉換後 0x11aaaa aa 0x0000bbbb 90aaaa aa bbbb bbbb 轉換後 0x21aaaa aa 0xbbbb bbbb Bnnnc ccc 0000 00dd 30aaaa aa 00bb 轉換後 0x81aaaa aa 0x0nnnc ccc 0x000 000bb 0x000 000dd Bnnnc ccc 0000dddd 80aaaa aa bbbb 轉換後 0x81aaaa aa 0x0nnneeee 0x1000bbbb 0x0000dddd ※eeee=c ccc÷2 Bnnnc ccc dddd dddd 90aaaa aa bbbb bbbb 轉換後 0x41aaaa aa 0x0nnneeee 0xbbbb bbbb 0xdddd dddd ※eeee=cc cc÷4 5000nncc 00dd 30aaaa aa 00bb 轉換後 0x81aaa aaa 0x00nn00cc 0x0000 00bb 0x0000 00dd 5000nncc dddd 80aaaa aa bbbb 轉換後 0x81aaaa aa 0x00nn00ee 0x1000bbbb 0x0000dddd ※ee=cc÷2 D0aaaa aa 0000bbbb 轉換後 0xD1aaaa aa 0x0000bbbb E0aaaa aa bbbbnnnn 轉換後 0xE0nnbbbb 0x01aaaa aa |
|
|
![]() ![]() |
Lo-Fi Version | Time is now: 2024-10-25 05:25 |