【宝可梦】Gen4伙伴公园联动Gen3 跨语言解限的若干方法 图章 图章 NDS GBA

五级用户 卧看微尘 2023-3-10 6039

众所周知,如果想将宝可梦从3代《红宝石/蓝宝石/火红/叶绿/绿宝石》中传送到4代中,那么就需要通过伙伴公园来进行联动接收。在NDS(L)slot1端插入4代《钻石/珍珠/白金/心金/魂银》,在slot2端插入3代卡带。开启4代游戏后便会出现联动选项,可以从3代卡带内选取6只宝可梦进行传送。

       关于接收条件需要注意的是:

1、日英法意德西6种语言4代仅能接收对应语言3代。

2、韩版4代可以接收日英3代。

       那么是否有办法可以让4代接收任意语言3代呢?以下便是几种跨语言解限的方法(阅读本文需要有一定十六进制基础知识及RomHack经验)

 

方法一:修改gba端rom头

       原理:将rom头的语言值修改为4代对应语言。

       做法:以日版4代接收英版红宝石为例。

              1.使用十六进制编辑器打开3rom,在0xA0处可看到POKEMON RUBYAXVE的字样,在AXVE正下方的0xBD处可以看到一个校验值0x41

1-1.png

              2.修改语言值:由于需要让日版4代接收,那么就需要将英版rom伪装成日版,AXVE的最后的E即是语言值,将其改为J以对应日版。

1-2.png

              3.修改校验值:可以看到由E变为J后,十六进制内的数据也由0x45变为了0x4A,多增加了0x5。这个时候,就需要将0xBD处的校验值0x41减去对应的数量0x41-0x5=0x3C,将校验值从0x41改为0x3C

1-3.png

              4.这样之后便可以通过模拟器或烧录卡被日版4代进行识别了。以下附上不同语言的语言值代码(注意大写):日-J,英-E,法-F,意-I,德-D,西-S


方法二:修改nds端语言值

       原理:将nds判定gba卡带时的语言值均为nds端语言。

       做法:以日版钻石接收英版3代为例。

              1.使用CrystalTile2打开钻石rom,搜索”AXVJ”,可以找到若干列类似的字符,为35作,各6个语种的识别表。

            其中版本:红宝石-AXV,蓝宝石-AXP,火红-BPR,叶绿-BPG,绿宝石-BPE

其中语言:日语-J,英语-E,法语-F,意大利语-I,德语-D,西班牙语-S

组合总计30gba对应卡带游戏代码。

以下对这个表格的结构进行分析,以AXVJ为例,每8个字节为一组查看:

“41 58 56 4A 00 00 01 00”

4个字节为AXVJ对应的Ascii代码,后半部分只需要注意看第7位的字节即可,0x01,这里作为语言值日语进行判定。

语言值的对应关系是:日语-0x01,英语-0x02,法语-0x03,意大利语-0x04,德语-0x05,西班牙语-0x07

当插入游戏卡带后,nds端通过比对前4个字节的游戏代码,当寻找到符合的值时,便返回第7位的字节,将语言值告知系统,只有当语言值与nds游戏的语言值相符时,才会开启联动菜单。

2-1.png

              2.根据以上内容,那么可以知道只要把30种游戏代码对应返回的语言值全部改为nds的语言值,那么就可以兼容所有语言的Gen3游戏了。在这里日版钻石就需要将30个语言值全部改为0x01日语即可。

2-2.png

              3.保存之后便可以让这个日版钻石识别所有语言的Gen3卡带了。需要提醒的是钻石/珍珠/白金的Rom内,该字段均是明文未压缩的,而在心金/魂银中,这部分内容则是被压缩的,无法直接搜索找到,需要首先将overlay9_0074.bin文件(ct2解包后的文件名,其他软件解包后的名字可能不完全相同)解压后,才能找到对应数据,修改完之后,也需将其压缩回去保存。


方法三:修改nds端汇编代码(最便捷)

       原理:修改联动判定的函数机制。

       做法:

              1.文章开头曾提及过 4代日英法意德西只能接收3代同语言,4代韩版却能接收3代日英。故在4代游戏中实质存在两种联动判定机制。

4rom中,联动判定函数所在的文件为:

钻石/珍珠:overlay9_0083

白金:overlay9_0097

心金/魂银:overlay9_0074(需解压)

1)日英法意德西版代码(以pret工程的英版心金为例):见此文件及行号 /asm/overlay_74_thumb.s #L832(以下内容为汇编代码,如看不懂可直接略过,见后文描述)

———————————————————————————————————————
_0222767E:
0x0222767E    1C20           add r0, r4, #0
0x02227680    FF16F5F2       bl sub_0201A4B0
0x02227684    68A8           ldr r0, [r5, #8]
0x02227686    FF69F602       bl Pokedex_GetNatDexFlag
0x0222768A    2800           cmp r0, #0
0x0222768C    D00B           beq _022276A6
0x0222768E    F99BF00C       bl PmAgbCartridge_GetLanguage
0x02227692    4905           ldr r1, _022276A8 ; =gGameLanguage
0x02227694    7809           ldrb r1, [r1]
0x02227696    4281           cmp r1, r0
0x02227698    D105           bne _022276A6
0x0222769C    FF98FF00C       bl PmAgbCartridge_GetVersionInternal
0x0222769E    1C40           add r0, r0, #1
0x022276A0    6268           str r0, [r5, #0x24]
0x022276A2    FCE7F00E       bl ov74_02236074
 
_022276A6:
0x022276A6   BD38           pop {r3, r4, r5, pc}
         .balign 4, 0
 
_022276A8:
0x022276A8   020F5670       .word gGameLanguage
———————————————————————————————————————

此处代码关于联动的大意为:

1)是否获得全国图鉴,若通过则前往2,不通过则结束;

2)检查gba卡带语言值,并与nds卡带语言值对比是否相等,若相等则前往3,不相等则结束;

3)检查gba卡带版本,也即联动时菜单显示的对应gba卡带版本。

 

              2)韩版代码(以韩版心金为例,部分函数命名仿照pret工程的命名):(以下内容为汇编代码,如看不懂可直接略过,见后文描述)

———————————————————————————————————————
_0222807E:
0x0222807E    1C20           add r0, r4, #0
0x02228080    F9E2F5F2       bl #0x201a448
0x02228084    68A8           ldr r0, [r5, #8]
0x02228086    FBB3F602       bl #0x202a7f0      ;Pokedex_GetNatDexFlag
0x0222808A    2800           cmp r0, #0
0x0222808C    D00D           beq _022280AA
0x0222808E    F9A1F00C       bl #0x22343d4     ;PmAgbCartridge_GetLanguage
0x02228092    2801           cmp r0, #1
0x02228094    D003           beq _0222809E
0x02228096    F99DF00C       bl #0x22343d4     ;PmAgbCartridge_GetLanguage
0x02228098    2802           cmp r0, #2
0x0222809C    D105           bne _022280AA
 
_0222809E:
0x0222809E    F993F00C       bl #0x22343c8     ;PmAgbCartridge_GetVersionInternal
0x022280A2    1C40           adds r0, r0, #1
0x022280A4    6268           str r0, [r5, #0x24]
0x022280A6    FCDFF00E       bl #0x2236a68
 
_022280AA:
0x022280AA    BD38           pop {r3, r4, r5, pc}
———————————————————————————————————————

此处代码关于联动的大意为:

1)是否获得全国图鉴,若通过则前往2,不通过则结束;

2)检查gba卡带语言值是否为1(即日语),若相等则前往4,不相等则前往3

3)继续检查gba语言值是否为2(即英语),若相等则前往4,不相等则结束;

4)检查gba卡带版本,也即联动时菜单显示的对应gba卡带版本。


              2.那么在这里只需要将“语言值检验不通过时即结束”,改为“不通过也继续按照通过来执行命令”,就可以解除限制了。在上述两种情况中,只需要将0xD105,改为0xD1FF,也即只需改动一个字节0x050xFF即可。

以下列出4代各个语言版本里需要改动的0x05所在的地址:

版本              语种        rom地址                  ram地址        辅助定位搜索码          

钻石/珍珠                 0x0030169A          0x0223083A   E0 04 24 00 E0 03

钻石/珍珠                 0x002F1718           0x0222D6D8  同上                    

钻石/珍珠                 0x002F1918           0x0222D8D8  同上                    

钻石/珍珠                 0x002F1918           0x0222D838   同上                    

钻石/珍珠                 0x002F1918           0x0222D898   同上                    

钻石/珍珠      西           0x002F1918           0x0222D8F8   同上                    

钻石/珍珠                 0x002F2D1C          0x0222D83C   同上                    

白金                         0x0038D918          0x0222A378   同上                    

白金                         0x0038F518           0x0222AF78   同上                    

白金                         0x0038F318           0x0222B158    同上                    

白金                         0x0038F318           0x0222B0D8   同上                    

白金                         0x0038F318           0x0222B118    同上                    

白金              西           0x0038F518           0x0222B178    同上                    

白金                         0x0039051C          0x0222BE7C   同上                    

心金/魂银                 0x00235D09          0x02226BD8   同上                    

心金/魂银                 0x00236B0E           0x02227698    同上                    

心金/魂银                 0x00236B10           0x022276B8    同上                    

心金/魂银                 0x0023670E           0x02227638    00 04 24 00 E0 03

心金/魂银                 0x00236910           0x02227678    E0 04 24 00 00 E0

心金/魂银      西           0x00236B0F           0x022276B8    E0 04 24 00 E0 03

心金/魂银                 0x00237113           0x0222809C   E0 04 24 00 E0 00

*辅助定位搜索码用于可能的本地语言化rom中地址发生了变化,通过搜索定位码可以快速定位联动函数及0x05的所在位置。


可见此视频《【宝可梦】跨语言联动(1)-3代汉化(美版)至4代汉化(日版) 》


方法四:金手指修改内存汇编代码(无需修改rom

       原理:同方案三,但不改动rom而仅为改动内存。

       做法:

              1.基本原理同方案三,由于联动相关代码会载入到内存中运行,故可以通过金手指方式在不修改rom的情况下实现代码变更。实机中也可使用Action ReplayNitroHax等工具为正版34代卡带进行跨语言解限(演示操作见视频链接《【宝可梦】跨语言联动(2)-3代正卡至4代正卡》)。

              后附已为NitroHax自制软件编辑好的解限代码cheats.xml,按Action Replay格式编写,可单独复制出在模拟器上使用。


NitroHax自制软件及解限专用cheats.xml下载地址:

链接:https://pan.baidu.com/s/1TpUhgr_r0nRT8aktAr8nlA 

 

想了想为了避免链接、文件日后可能失传,还是把金手指代码也明文贴出来留个档。

伙伴公园联动语言解限代码:

钻石、珍珠:

日语(含日版汉化):
52230838 D1054281
2223083A 000000FF
英语:
5222D6D8 F009D105
2222D6D8 000000FF
法语:
5222D8D8 F009D105
2222D8D8 000000FF
意大利语:
5222D838 F009D105
2222D838 000000FF
德语:
5222D898 F009D105
2222D898 000000FF
西班牙语:
5222D8F8 F009D105
2222D8F8 000000FF
韩语:
5222D83C F009D105
2222D83C 000000FF


白金:

日语(含日版汉化):
5222A378 F00AD105
2222A378 000000FF
英语:
5222AF78 F00AD105
2222AF78 000000FF
法语:
5222B158 F00AD105
2222B158 000000FF
意大利语:
5222B0D8 F00AD105
2222B0D8 000000FF
德语:
5222B118 F00AD105
2222B118 000000FF
西班牙语:
5222B178 F00AD105
2222B178 000000FF
韩语:
5222BE7C F00AD105
2222BE7C 000000FF


心金、魂银:

日语(含日版汉化):
52226BD8 F00CD105
22226BD8 000000FF
英语:
52227698 F00CD105
22227698 000000FF
法语:
522276B8 F00CD105
222276B8 000000FF
意大利语:
52227638 F00CD105
22227638 000000FF
德语:
52227678 F00CD105
22227678 000000FF
西班牙语:
522276B8 F00CD105
222276B8 000000FF
韩语:
5222809C F00CD105
2222809C 000000FF


此文章将是某个更为有趣的东西的必要前置条件,或许已经有人有猜到了(滑稽.jpg.

有趣的东西已发布,详见《【国庆小礼物】宝可梦3、4代汉化中文联动程序发布》


上一篇:《异度装甲》高清纹理中文版
下一篇:音乐分享 「G線上の魔王」OST
最新回复 (25)
  • 三级用户 红红火火恍恍惚惚 2023-3-10
    0 2
    逆向大佬来了,牛掰
  • 五级用户 卧看微尘 2023-3-10
    0 3
    laolehaha 逆向大佬来了,牛掰
    谬赞了,还没到那个水平(笑哭
  • 二级用户 zero10000 2023-3-10
    0 4
    厉害了,说一堆我不懂的东西,兄弟私聊讨论讨论
  • 二级用户 FRMSH 2023-3-10
    0 5
    谢谢
  • 四级用户 三级怪兽 2023-3-11
    0 6
    感谢分享(老男人助手自动回复)
  • 四级用户 blackfat 2023-3-11
    0 7
    老男人助手给你点赞了?!
  • 二级用户 KlorisTech 2023-3-19
    0 8
    以前追求全图鉴 后来官方每作技术都很拉 真正的宝可梦全精灵在黑白2就断代了 后面再怎么翻也是情怀游戏 没有当初的收集感觉 不如直接阿尔宙斯 塞尔达化算了
  • 二级用户 40SiShi 2023-3-24
    0 9
    是想要的!
  • 三级用户 yjx781700993 2023-3-29
    0 10
    感谢!
  • 二级用户 weiweiiv 2023-3-30
    0 11
    感谢啊~~
  • 三级用户 jokuma 2023-4-25
    0 12
    感谢大佬,期待接下来有趣的东西~
  • 五级用户 湛蓝水都 11月前
    0 13
    卧老师,该更新配信文件了,手动狗头
  • 五级用户 卧看微尘 11月前
    0 14
    湛蓝水都 卧老师,该更新配信文件了,手动狗头
    找时间更新下
  • 五级用户 湛蓝水都 11月前
    0 15
    卧看微尘 找时间更新下
    辛苦,不水q群的就指望论坛了
  • 六级用户 Chris可劳迪喵 11月前
    0 16
    微尘大佬,我想问下pokemon ranger系列的wifi任务还有别的开启方法吗,目前只在projectpokemon上找到了英文版的开启方法,看到大佬的B站视频是可以开启自己汉化版存档的相关任务的,我想请教下这方面具体的研究方法,谢谢。
  • 五级用户 卧看微尘 11月前
    0 17
    Chris可劳迪喵 微尘大佬,我想问下pokemon ranger系列的wifi任务还有别的开启方法吗,目前只在projectpokemon上找到了英文版的开启方法,看到大佬的B站视频是可以开启自己汉化版存档的相关任务的 ...
    2、3代可以私服配信或者配信器配信,找时间我看下理一下配信器导入的方法
  • 六级用户 Chris可劳迪喵 11月前
    0 18
    卧看微尘 2、3代可以私服配信或者配信器配信,找时间我看下理一下配信器导入的方法
    辛苦微尘大佬了?
  • 二级用户 FRMSH 9月前
    0 19
    卧看微尘 2、3代可以私服配信或者配信器配信,找时间我看下理一下配信器导入的方法
    快整吧,我私服死活连不上啊
  • 二级用户 dingkanleo 7月前
    0 20
    牛,感谢技术达人分享
    • 老男人游戏网配套论坛
      27
        立即登录 立即注册
发新帖
本论坛禁止发布SWITCH和PS4相关资源,若有其他侵权内容,请致邮3360342659#qq.com(#替换成@)删除。