- 精华
- 0
- 帖子
- 478
- 威望
- 0 点
- 积分
- 629 点
- 种子
- 12 点
- 注册时间
- 2008-3-13
- 最后登录
- 2024-8-5
|
本帖最后由 ly63 于 2016-6-19 21:48 编辑
首先介绍以下什么是Caetla
Caetla是一个日本知名的雨伞、阳伞品牌。而下面讨论的内容跟雨伞毫无关系。
Caetla在电玩界的定义是一款由日本HACKer K-comm开发的AR2兼容BIOS软件。
什么是AR2?
AR2是一种硬件实现的游戏调试工具,对于不同主机有不同版本的硬件,有扩展端口(并口)可以与PC通讯
这需要硬件PClink卡--一块ISA扩展卡,插在PC 的ISA总线上,与配套的PC端软件一同工作。
我们用的金手指码(在当年)都是用这样的工具制作出来的。
对于普通的游戏者,只需要将AR2卡插在游戏机上并输入代码即可实现修改游戏功能。
大多数人(在国内)应该没有机会见到正版的AR2硬件,多数都是港、台商人破解了原版硬件、软件制作的
***,并汉化为中文,称中文金手指,种类很多,但软件大多是hack版的Caetla。
现在这些东西随着时间的流逝,在市场上流通的已经非常稀少了。
而Caetla则是另一个可以替换原有的AR2 BIOS的软件,相比原版AR2,功能有不少增加,支持的代码种类也更多
----------------------
在国内难以找到这种年代久远的资料,所以我利用了一点空闲时间搜集了一些资料,并加以翻译,
填补一下中文世界的这个空白。
下面就介绍一下Caetla支持的金手指代码
数值写入类:
30XXXXXX 00DD
将地址为80XXXXXX的1字节数值改为DD(8bit)
80XXXXXX DDDD
将地址为80XXXXXX的2字节数值改为DDDD(16bit)
90XXXXXX DDDDDDDD
将地址为80XXXXXX的4字节数值改为DDDDDDDD(32bit)
间接寻址写入类:
70XXXXXX AAAAAAAA
将地址为80XXXXXX的1字节数值改写为地址为AAAAAAAA处的1字节数值(8bit)
将地址为80AAAAAA的1字节数值改写为地址为80XXXXXX处的1字节数值(8bit)
71XXXXXX AAAAAAAA
将地址为80XXXXXX的2字节数值改写为地址为AAAAAAAA处的2字节数值(16bit)
将地址为80AAAAAA的2字节数值改写为地址为80XXXXXX处的2字节数值(16bit)
72XXXXXX AAAAAAAA
将地址为80XXXXXX的4字节数值改写为地址为AAAAAAAA处的4字节数值(32bit)
将地址为80AAAAAA的4字节数值改写为地址为80XXXXXX处的4字节数值(32bit)
位操作类:将XX地址的数值相关位 置1(50-52)或置0(58-5A)
50XXXXXX 00DD
将地址为80XXXXXX的1字节数据与DD做逻辑OR运算,并将结果保存到80XXXXXX
51XXXXXX DDDD
将地址为80XXXXXX的2字节数据与DDDD做逻辑OR运算,并将结果保存到80XXXXXX
52XXXXXX DDDDDDDD
将地址为80XXXXXX的4字节数据与DDDDDDDD做逻辑OR运算,并将结果保存到80XXXXXX
58XXXXXX 00DD
先将DD做NOT运算,结果为TT,再将地址为80XXXXXX的1字节数据与TT做逻辑AND运算,并将结果保存到80XXXXXX
59XXXXXX DDDD
先将DDDD做NOT运算,结果为TTTT,再将地址为80XXXXXX的1字节数据与TTTT做逻辑AND运算,
并将结果保存到80XXXXXX
5AXXXXXX DDDDDDDD
先将DDDDDDDD做NOT运算,结果为TTTTTTTT,再将地址为80XXXXXX的1字节数据与TTTTTTTT做逻辑AND运算,
并将结果保存到80XXXXXX
Scratch Pad区域写入类:
3F8XXXXX 00DD
将地址为1F8XXXXX的1字节数值改为DD(8bit)
8F8XXXXX DDDD
将地址为1F8XXXXX的2字节数值改为DDDD(16bit)
循环写入代码:
BXXXYYYY 000000ZZ
30AAAAAA 00DD
循环XXX次,
第一次将地址为AAAAAA的1字节数值改为DD
从第二次开始,将地址为AAAAAA+YYYY 的1字节数值改为DD+ZZ
BXXXYYYY 0000ZZZZ
80AAAAAA DDDD
循环XXX次,
第一次将地址为AAAAAA的2字节数值改为DDDD
从第二次开始,将地址为AAAAAA+YYYY 的2字节数值改为DDDD+ZZZZ
BXXXYYYY ZZZZZZZZ
90AAAAAA DDDDDDDD
循环XXX次,
第一次将地址为AAAAAA的4字节数值改为DDDDDDDD
从第二次开始,将地址为AAAAAA+YYYY 的4字节数值改为DDDDDD+ZZZZZZZZ
条件判断类:
D0XXXXXX DDDD
当地址为80XXXXXX的2字节数值等于DDDD时,执行下一行代码。
E0XXXXXX DDDDCCCC
当地址为80XXXXXX的2字节数值等于DDDD时,执行下面CCCC行代码。
注意不要与AR2的E代码搞混了。
位操作条件判断代码:
60XXXXXX 00DD
将地址为80XXXXXX的1字节数据与DD做逻辑AND运算,结果不为0的话,执行下面1行代码
61XXXXXX DDDD
将地址为80XXXXXX的2字节数据与DDDD做逻辑AND运算,结果不为0的话,执行下面1行代码
62XXXXXX DDDDDDDD
将地址为80XXXXXX的4字节数据与DDDDDDDD做逻辑AND运算,结果不为0的话,执行下面1行代码
68XXXXXX 00DD
将地址为80XXXXXX的1字节数据与DD做逻辑AND运算,结果为0的话,执行下面1行代码
69XXXXXX DDDD
将地址为80XXXXXX的2字节数据与DDDD做逻辑AND运算,结果为0的话,执行下面1行代码
6AXXXXXX DDDDDDDD
将地址为80XXXXXX的4字节数据与DDDDDDDD做逻辑AND运算,结果为0的话,执行下面1行代码
运行简短MIPS程序代码:
AXXXXXXX DDDDDDDD
DDDDDDDD DDDDDDDD
...
......
在地址XXXXXXX处写入MIPS机器码程序段,Caetla会在每次Hook期间调用此程序。
每次HOOK期间caetla会调用DDDDDDD ...... 代表的MIPS程序代码...(此代码原文档并没有给出使用方法)。
自写程序可以安全使用哪些寄存器、最大长度限制等问题仍然未知,日文世界也无法搜索到相关说明。
模式切换代码
FFFFFFFF 000D
当D=1时,模式切换为AR2模式,此模式支持AR2的一些代码。
当D=0时,模式切换为Caetla模式,此模式下仅支持上面介绍的Caetla代码。
例如,你可以像下面这样混合Caetla、AR2代码:
E00A01E8 01000003 Caetla的多行条件判断代码E0
FFFFFFFF 0001 模式切换到AR模式
E00A02E9 0001 AR2的8位条件判断代码
80120DCC 270F
FFFFFFFF 0000 模式切换为Caetla模式
90120DC0 05F5E0FF Caetla的32位数值写入代码
AR2模式
AR模式下支持以下代码:
30,80,D0,D1,D2,D3,E0,E1,E2,E3,50,10,11,20,21
注意Caetla 0.34版存在一个bug导致AR2的21代码无法正常工作,
这个BUG在0.35版本得到修正。
===================EOF |
|