PSP上的GBA
模拟器GPSP是能够使用
金手指的,这点毫无疑问,可惜只支持GS码,需要用到的软件是gpSP cheat creator。 简单来说方法就是这样 新建一个文本文档 输入 [作弊说明](如HP max) 作弊码 [作弊说明] 作弊码 等等 注意作弊码要GS格式(gameshark) 然后保存 修改文档名 要和GBA文件名一样,
后缀名改为cht 放到ggbsp模拟器里cht
文件夹里 玩游戏时按三角选读取作弊文件读取那个cht文件,再激活就OK了 大概就是这样,详细的去BAIDU搜搜看吧
下面我以<机战J>为例,介绍以下如何在PSP上修改GBA游戏的具体步骤: 1.首先随便找个gba的cht文件(附件里的001) 2.把下列代码写入并保存为名字是002的cht文件(可先保存再改文件名) gameshark_v3 991 5A347CA8 6D6CE7DB gameshark_v3 992 2A25150B C28EAA9E 注:991为99个移动力+1的道具,992为99个格斗能力+5的道具 3.使用gpSP cheat creator 打开(file-Open)002.cht,并保存为GPSP用的cht(附件的jzj.cht) 4.在psp上打开机战j这个游戏,打开作弊文件,本文打开的是jzj.cht。在次进入作弊界面,把[991,992设为ON(中文版为旧)。 好了,现在991和992两种道具可以无限卖掉了,这样就不愁钱花了,简单吧。 ————————————————————————————————————————- GS码扫盲: 1.GS就是gameshark,格式AAAAAAAA BBBBBBBB, 2.GS码有有V1和V3这2种版本 gameshark_v1PS gameshark_v3, PAR_v1 PAR_v3 这几种,他们之间并不兼容,使用时要注明 如果你不知道你得到的金手指是哪个版本,请都试试看 3.GPSP支持Gameshark / Pro Action Replay(PAR) 的金手指码 4.完成1个代码后,按回车,再按1次回车后可继续输入另1个代码,全部完成后保存至记忆棒 下面为1个例子 gameshark_v3 MarioInfHP 995fa0d9 0c6720d2, gameshark_v3 MarioMaxHPP 21d58888 c5d0e432 gameshark_v3 InfHlthBat+} 6f4feadb 0581b00e 79af5dc6 5ce0d2b1PS3,Wii,Xbox360,PS2,Xbox,GC,PSP,NDS.GBA,EMU,ROM,MAME,Arcade,Game,汉化游戏,汉化模拟器6L#n3Q5M6V0W2v.` dbbd5995 44b801c9 65f8924d 2fbcd3c4bb gameshark_v3 StopTimer 2b399ca4 ec81f0711. 一、金手指类型介绍: VBA的金手指有3种类型:RAW Code、CodeBreaker Code、GameShark Code。它们分别是:
随机存储器写入代码,译码代码,编码代码(该翻译根据其原理命名,准确名字不祥)。为方便,下文中将分别简称为:RAW、CB、GS。 RAW是我们最常见的类型,一般的金手指都以这种方式出现。如:
绿宝石中文版中的快速升级——02023E94:2710,这就是RAW码。它是最简单的内存写入方式,无论是搜索还是编辑修改都十分方便。当然,它不是完美的。也正因为它有很多限制,所以才出现了CB和GS。 CB和RAW很像,但出现的概率比GS还小。现在见到的只有绿宝石英文版里的一些,如:容易捕捉野生怪兽——C2711CBA 6F6B,72EA7742 0E4D。仔细看看不难发现,它是用空格分离的(RAW用“:”),而且使用了2个代码,这将在下面进行说明。 GS也是比较常见的代码,在
《口袋妖怪》里几乎各版都有,最著名的就是穿墙了:DC507600B95091F6(绿宝石中文),C518E2595ADBAF5B(绿宝石英文)。它的特点是——16位的16进制数,没有任何分割符。它的功能也很强大,大家应该在无拘无束地驰骋于地图上时体会到了吧。 二、金手指的组成及原理: 在介绍组成前,先说明一下GBA内存的分配方式: GBA(VBA的模拟是一样的)采用32位地址,内存地址从00000000到8FFFFFFF,其中被我们修改游戏用到的为:WRAM——02000000~02FFFFFF,IRAM——03000000~03FFFFFF,ROM——08000000~08FFFFFF,即2个随机存储区和1个只读存储区。 1、RAW 代码举例: 020287E8:FE,02023E94:2710,02027DD8:04030201 解释: 这是最简单的代码,由地址和数值构成。地址和数据间使用“:”(注意:是英文的冒号)分隔。其作用是将数据写入所给的地址里,锁定后,该地址里的数据将不再变化。其作用范围为随机存储区,即02000000~03FFFFFF一段。代码形式为:0xxxxxxx:yy,或0xxxxxxx:yyyy,0xxxxxxx:yyyyyyyy。“:”前面是地址,后面是要写入的数据。地址以“02”或“03”开头是其最主要的标志。支持8位、16位、32位数据的写入(就是上面的3种形式)。各种形式之间可以互相转换。如:02027DD8:04030201,这是32位数据的写入,由于1个地址只能放一个8位数据,所以实际上,系统是将数据“04030201”放到了以02027DD8开始的4个地址里,所以转成8位数据的写入就是:02027DD8:01,02027DD9:02,02027DDA:03,以及02027DDB:04(注意,高位的数据在高位地址),换成16位写入也是一样,注意地址的位置就可以了:02027DD8:0201,02027DDA:0403。 2、CodeBreaker 代码举例: 非加密:82031CF0 0003,加密:C2711CBA 6F6B,72EA7742 0E4D 解释: 这种代码也是由地址和数据组成,不同的是,CB码使用空格做
分隔符,通过翻译识别游戏运行时的指令代码控制所要修改的地址数据的变化,所以针对不同的游戏,CB码有加密的CB码和非加密CB码之分。加密的CB码通常会有一个所谓的“开机码”(注意:和硬件的金手指开机码不是一个东西),用来识别游戏的代码格式及是否有加密信息。如:绿宝石英文版中的CB码的开机码就是:9266FA6C 97BD,905B5ED3 5F81,B76A68E5 FAB1,其中的第1个:9266FA6C 97BD就是加密密钥。而非加密的CB码不需要开机码,如火叶中的地点转移CB码:82031CF0 xxxx就不需要开机码的支持。而且CB码的代码顺序是有严格规定,不能随便交换顺序。如开机码必须放第一位。又如:CB码往往带有判断代码。仍以刚才提到的容易捕捉野生怪兽——C2711CBA 6F6B,72EA7742 0E4D举例,还原回非加密CB码为:72024214 BD79,82024214 BD90,其中7xxxxxxx yyyy表示当地址0xxxxxxx的数值为yyyy时,下一条代码生效,8xxxxxxx zzzz就是将16位数据zzzz写入地址0xxxxxxx。所以这条代码的意思就是:当02024214的值为BD79时,才将02024214的值转为BD90。所以也不可以交换。这和RAW、GS完全不同,它们是可以随便交换位置的。这就决定了CB码的修改比较麻烦。对于带条件的锁定,因为当该地址没有出现所需要的值时(这里是BD79),是不会处于锁定状态的。这样就可以解决使用RAW时,因为错误锁定而容易造成死机的问题。CB代码的作用范围覆盖全内存单元,但是因为开机码需要专门的程序获得,加密的代码也要对原CB码进行相关变换,十分繁琐,加上CB在32位输入时,还要进行一些处理,降低了可读性,所以限制了它的广泛使用,不能不说是一种损失。 3、GameShark 代码举例: DC507600B95091F6,C518E2595ADBAF5B 解释: GS是非常特殊的代码,使用32位的代码形式,代码内没有分隔符。虽然作用也是覆盖全内存,但其使用上比CB方便。因为RAW已经基本上解决了随机存储区的修改问题,所以GS通常是解决只读区的修改的。如穿墙金手指:DC507600B95091F6(绿宝石中文),C518E2595ADBAF5B(绿宝石英文),它们实际上是:08087B70:2100(中文),0808820C:2100(英文),但是因为RAW无法写入只读区,所以使用GS解决。因为只读区基本上就是rom的代码段,所以GS通常称为“编码代码”。那么GS的原理是什么呢?我们以中文版为例,看看08087B70到底存了什么。查看游戏的代码发现,原先的指令为and r1,r0,就是进行r1和r2的“与”运算。修改后变成mov r1,0#0,就是将“0”放入r1里。二者的区别就是后者可以使标志寄存器的零标志置“1”,从而达到使游戏始终判断“没有碰墙”的目的。GS虽然不用“开机码”,而且对8位、16位、32位数据的写入都支持,但是没有有效的搜索方法,即使找到了对应的地址,转换为机器可识别的32位代码也是个问题,所以使用上也收到了限制。 从上面的介绍中大家应该发现了:RAW无论使搜索还是编辑都是最方便的,但是局限性很大,特殊的修改不易实现,甚至无法修改。在敏感数据的修改上有很大的问题,常常是死机的罪魁祸首。CB修改很灵活,覆盖范围广,而且具有判断机能,适合敏感数据的修改。但开机码的获得和代码转换上困难比较大,长数据的输入麻烦,代码顺序严格,规则太多。GS兼有RAW的易用性和CB的通用性,但搜索和转换也是它的最大缺点。总之,3种金手指代码各有利弊,在不同的场合使用适当的代码形式就可以扬长避短,达到很好的效果。 三、金手指的添加与删除: 各种金手指在VBA里的输入有一些区别,由于高版本的VBA带有对金手指类型的自动识别功能,所以即使输入错误,有的仍然可以生效。但这并不意味着我们可以随便输入,因为机器的判断往往和我们希望的有区别,所以良好的习惯还是要培养的。下面我们就说说如何输入和删除金手指。 1、RAW 大家应该经常使用这种格式的金手指了,对它的输入不会陌生。打开修改—>修改代码列表,在弹出的窗口里(如图所示),“代码”和“修改”就是输入RAW码的地方(图中的A、B)。不同的是:前者是批量输入,后者是单个输入,具体方法在初级教程里已有,就不再说了。 至于删除,对于RAW码来讲,只要把代码前面的勾去掉就可以了,当然,也可以选中后,按“移除”。2个做法都不会留下任何信息在内存里,所以不会有任何问题。 2、CodeBreaker CB码正确的输入位置应该是“修改译码”(图中的D)。许多人分不清CB和GS,往往写到“金手指”里,虽然在后期的模拟器里可以识别,但早期的模拟器不支持这种输入,会视为非法的输入。和“代码”的使用类似,按下“修改译码”后,将CB码填入弹出的窗口,确定即可。这里要注意:使用CB码时,如果有开机码,必须将开机码首先写入;在填写CB码时,注意代码的先后顺序,绝对不能改变位置,否则后果就严重了。 删除和RAW一样,去掉勾或移除都可以。如果想同时解除多组CB码,直接解除开机码的锁定一样可以。这样以后恢复起来也容易。 3、GameShark “金手指”(图中的C)就是为GS码准备的。也和“代码”的输入类似,只是不像CB这么严格,把需要的写进去,确定就可以了。 GS的删除就比较麻烦了。因为GS通常是改只读区的,所以那里的数据不会像随机存储区一样随游戏进行而复原,所以单纯的去掉勾或移除有时不会起作用。要彻底移除GS码,首先删除代码,之后使用游戏自身的SAV存档储存游戏进度,重新载入游戏(注意:不是重启,要重新读取游戏),读取SAV进度后,GS代码的修改就解除了。 四、各种金手指间的转换: 因为CB码和GS码的特殊性,手动计算代码非常困难,所以转换时,使用2个工具进行辅助——AR Crypt和CBAcrypt,前者是转换GS码的,后者是转换加密CB码的。。界面上2者有相似的地方,就是左边是输入框,右边是输出框。区别就是AR Crypt的功能键稍微多一些,下面就分别介绍它们的使用方法。 1、RAW与GameShark的转换 在AR Crypt下拉菜单“Creat…”里,将类型设置为“AR V1/2”,然后上方下拉菜单处,置为“type 6”。下方单选框是设置转换类型的。左边“From”是原代码类型,右边“To”是目标类型。一般我们只用到“RAW”和“AR V.1/V.2”。 RAW→GS: 对于“02”,“03”开头的RAW码,我们一般不需要使用GS码,但还是可以转换的。将代码填入左边的输入框。注意:对于8位数据的代码,如:020287E8:FE(绿宝石中文,快速生蛋),应该填入020287E8:000000FE,因为AR Crypt默认的格式必须是xxxxxxxx:yyyyyyyy的。而对于16位数据的代码,如:02023E94:2710(绿宝石中文,快速升级),应该填入12023E94:00002710,看清楚,首位的“0”要写成“1”,这是转换位数的识别代码,不要写错。至于32位数据的代码,如:02027dd8:04030201(绿宝石中文,全家具的第一个),应该填入22027DD8:04030201,也就是首位的“0”变成“2”。填写好后,将“From”设置为:RAW,“To”设置为:AR V.1/V.2,直接按下中间的“Proceed”,右边就会出现转换好的GS码了。(由于设置的原因,转换好的GS码可能中间带有空格,使用时请将空格去掉)。 对于“08”开头的代码,方法有一点不同。如:08087B70:2100(绿宝石中文,穿墙),只需补齐为32位的:08087B70:00002100,之后就可以填入左边了。注意:不要改变首字符,还保持原样。之后不做任何设定,直接按下中间的“Creat”按钮。这时会在下方生成一个“64”开头的代码,暂时不理会它。而右边出现的代码就是我们需要的GS码了。使用时仍然要去掉所带的空格。 GS→RAW: 这个其实就是上面的逆过程,但因为事先不知道代码是位于随机存储区还是只读区,所以先采用同样的转换方法,之后再加以区别。 首先将32位的GS码代码写入左边的输入框,“From”选AR V.1/V.2,“To”选RAW,按下“Proceed”,看到右边出来结果了。下面就要看结果进行处理了: 如果结果前8位数是“02”、“12”、“22”开头的,那么只要全部变为“02”就可以了(想想RAW转GS时我们做的变化,实际是一回事)。而后边的8位数就是数值,去掉前面多余的“0”就可以了。 如果结果前8位数是“64”开头,那么就要将“6”去掉,将剩下的7位数转二进制,左移1位(即末尾补“0”),转回十六进制就是地址了。数值就是后8位数,去掉多余的“0”就可以了。为方便说明,我们就来实践一下:将穿墙金手指——DC507600B95091F6输入左边,转换后得到:64043DB8 00002100,前8位数去掉开头的“6”得到:4043DB8,转二进制得到:100000001000011110110111000,左移1位得到:1000000010000111101101110000,转回十六进制得到:8087B70,所以RAW码就是:08087B70:2100。大家是不是都转换对了? 2、RAW与CB的转换 RAW→CB: RAW转非加密CB码比较简单,只要注意数值的位数就可以了。8位的数据就将RAW码的首位“0”变成“3”,16位数值就将首位的“0”变成“8”。之后地址和数值之间的“:”变成空格就可以了。如:02023E94:2710→82023E94 2710,020287E8:FE→320287E8 FE。如果想写带判断的CB码,判断的条件地址,首位“0”变成“7”就是条件地址的数值等于条件数值时时执行下一代码;将首位“0”变成“A”就是条件地址的数值不等于条件数值时执行下一代码。 对于要使用加密的CB码的游戏,先将密钥写入CBAcrypt的左边,然后在密钥下写入转换好的非加密CB码,按下“Encrypt”,左边就会出现加密的CB码了。 CB→RAW: 这个也是上面的逆过程。对于CB码是否加密很容易判断,只要代码使用时,必须加上第1行以“9”开头的开机码,那就是加密的CB码。转换前需要用CBAcrypt先进行解密。解密时也是先填入密钥(就是那个“9”开头的代码),然后填入待解密的CB码,按下“Decrypt”,右边出现的就是解密的CB码。 对于非加密的CB码以及解密完后的CB码,将首位变回“0”就是RAW码了。如果是带判断的CB码,转回RAW码后将无法使用判断功能,所以原来“7”和“A”开头的代码就可以不要了。 3、CB与GS的转换 没有简便的方法,使用RAW做为中间媒介进行转换吧。 为方便大家学习,下面提供一些代码互相转换的结果,大家在实践中慢慢学习体会吧,希望能对大家有所帮助:(加密的CB密钥为9266FA6C 97BD) RAW CB GS 0202076E:0002 D2201D23 7C06 43886F04BF29716A 0202433A:0001 DD3B48F5 DE3F 6D78CDEC1518218F 02023CB0:2710 82023CB0 2710 92472A55471E7A26 080586EE:2100 880586EE 2100 D4603F5DFDF00F02 0806776A: 6F01 8806776A: 6F01 C7EB8672FF85CA2B