【GBA自制软件】宝可梦跨代传宠工具《Pokémover for gba》发布 图章 图章 GBA GBC

五级用户 卧看微尘 5月前 5934

主logo.png

前言:

本工具是第二世代到第三世代的跨代传宠用GBA自制软件。

众所周知,宝可梦在第三世代断代了,

但近几年国外社区已有一些解决方案,可以实现跨代传宠。

本工具的开发也是受到国外已有成果的启发,

他们实现了类似第二世代跟第一世代互相交换的时光胶囊的效果,

能够让第二世代跟第三世代的宝可梦进行双向交换,

但因为第二世代跟第三世代的数据结构有很大的差异,

这样的双向交换会使得第三世代的宝可梦的数据大量丢失,

而且这种方法不能直接传盒子中的宝可梦。


为了解决这个问题,我们采用了不一样的技术路线开发了《Pokémover for gba》

实现了单向传输,并且能够对整个盒子的宝可梦进行操作,使用体验上更接近官方软件。

另外,因为三代的数据结构与二代有很大的差异,我们在想办法转换这些数据的同时,

也尽可能确保传过来的宝可梦在三代游戏中的合法性。

最终,经过我们的努力,可以确保传过来的宝可梦能够通过pkhex的检测,

具体做了哪些方面的处理,后文会详细解释。



大致原理:

本工具的原理是使用一台gba主机读取gba宝可梦系列的存档,

然后通过gb(c)连接线连接另外一台作为副机的gb/gbc/gba,

利用连接线发送传输工具至副机,

在副机上读取金银水晶的存档,然后将盒子中的宝可梦传到主机中。

注意,GBA连接线不可用,请使用如图所示右侧的gb(c)连接线

如连接线使用错误,则本程序所有连接均无法正常运行。

gb-gba link new.jpg

为了顺利发送传输工具,

副机为gba时,利用了multiboot,以及切换至gb模式的隐藏特性,

副机为gb/gbc时,利用漏洞实现了远程代码执行,然后再发送传输工具

(其中水晶版利用了速通社区发现的漏洞,原定在儿童节前后发布的v1.0,只包括了水晶版的漏洞利用,

但在v1.0发布前夕我们发现了金银中新的漏洞利用方式,故而推迟了发布)



兼容性:

主机:gba/gbasp/ngc的gbplayer

副机:gba/gbasp/gbc/gb/sfc的sgb2(其中gb/sgb2未测试,理论可行)

软件:gba宝可梦正作(含所有官方语言以及群星sp汉化的火叶绿宝石)

gb(c)的宝可梦金银水晶(含所有官方语言、Tom_C基于韩版汉化的金银以及CKN/DMG/口袋群星SP联合汉化的水晶版)

另外,本工具除了支持gba官方的Flash 1M存档外,还能识别非官方的SRAM 1M存档。


我们还测试了Analogue Pocket的兼容性,

由于ap既可以支持卡带模式运行(等同于一台gba实机),

也可以通过openfpga模式第三方内核读取sd卡内的rom运行,故分为两种情况进行介绍。

卡带模式:

在ap作为主机,另一台gba/gbc作为副机的情况下,本工具能正常使用。

在gba作为主机,ap作为副机的情况下,multiboot法无效,漏洞法可以使用。

openfpga模式:

在ap作为主机,另一台gba/gbc作为副机的情况下,本工具无法使用,

这是由于openfpga模式的第三方内核目前不支持读取ap卡槽内的3代卡带导致。(本程序集成在3代汉化中的情况时,

可以正常使用,可直接读取对应3代存档)。

在gba作为主机,ap作为副机的情况下,multiboot法无效,漏洞法可以使用

(截止至本工具v1.1发布,openfpga模式现有第三方gb/gbc内核中,Spiritualized v1.3.0可以较为稳定使用漏洞法,而budude2 v1.2.1对漏洞法的支持极不稳定。故建议使用Spiritualized内核进行连接。)。

兼容性.png

发送传输工具的方法有2种

1.multiboot法:

此法适用于2台gba之间进行连接的情况,gba上所谓的单卡联机也是靠multiboot实现的

2台GBA之间同样也可以使用下文提到的漏洞法,我们也更建议使用漏洞法

2.漏洞法:

此法适用于1台gba跟1台gb/gbc进行连接的情况

漏洞法支持大部分语言版本的金银,以及全部语言版本的水晶版不受支持的是D商汉化的金银

基于韩语版汉化的金银,在工具内选择语言的时候请选择韩语版

水晶版汉化请注意区分原始版本是日语版还是国际版,

如果用联合汉化的水晶汉化版来触发漏洞,请选择国际版

如果要用D商汉化的水晶版来触发漏洞,因为D商汉化的水晶基于日版制作,

请在工具内选择日语版,sss888修正过的D商汉化版也是同理。

(但是本工具不支持d商汉化的汉字编码,建议仅作触发漏洞用)

具体的操作步骤在工具内会有详细的说明,请在工具内查看。

【具体传送的操作演示,可见视频:https://www.bilibili.com/video/BV1jS411N7Kh/


合法性:

为了确保数据的合法性,我们做了如下方面的处理,经过了如下处理之后,能够通过pkhex等工具的合法性验证

名字的处理:

昵称跟初训家名字中只能使用gen3中可用的取名字符

像部分gen2中可用的括号等字符,在gen3的取名中不可用,这种字符就会被转换。

同时支持转码汉化版的汉字字符,受支持的汉化版为Tom_C基于韩版制作的新金银汉化,

以及联合汉化的新水晶版汉化,但除了本工具,只有口袋群星sp的火叶绿宝石汉化版

才能正常查看汉字字符(金银汉化有部分非gb2312汉字视情况转换成近似汉字或转为问号)

注意,韩文原版金银会被当作汉化版处理,

韩文字符编码也会被强制当作中文编码处理,

并且韩文原版以及汉化能够使用10个字节的玩家名字,而非三代的7个字节,

所以传输完成后,初训家名字长度超过7个字节的话,将被截断。

比如4个汉字占8个字节,会截断为3个汉字,也就是6个字节。

对于梦幻,因为只有日版绿宝石存在可能的合法入手渠道,

所以还会将名字进一步调整到符合日版的格式(长度最长为5个字节,

5个日语版可用取名字符,汉字在内的双字节字符会转为问号)

对于时拉比,只有日版圆形竞技场特典光盘里的那只是合法的,

昵称、初训家名字以及id会完全改成这只的,

并且由于不能是闪光的,本工具无法传输闪光时拉比


初训家id:

除时拉比外,表id直接继承,因为gen2没有里id,传过来之后里id在大多数情况下设为0


相遇:

蛋生宝可梦都将以从蛋中孵化作为相遇的方式,相遇地点则是当前记录保存的地点

对于百变怪、未知图腾、神兽等非蛋生宝可梦,

为了确保合法性,捕捉地点也会调整到三代游戏中相应的地点。

炎帝、雷公、水君因为火叶的bug,个体值好几项为0,

因此相遇地点放在了圆形竞技场中


pid:

pid跟性格、性别、闪光、未知图腾形态等相关,

除此之外,非蛋生宝可梦的个体值也跟生成pid的随机数有关。

本工具会根据性格、是否闪光、性别(如果存在性别差异)、

未知图腾形态(如果有)生成pid,实现了2套pid算法,

一套gba一套圆形竞技场,视情况选择

对于闪光宝可梦,因为要生成同时满足性格、性别、闪光要求的pid

要更久的时间,平均每只多花大概1秒的时间(30只闪光可能要多花30秒),请耐心等待

对于闪光未知图腾,为了减少pid的计算量,会专门修改里id,其余情况里id均为0

非蛋生宝可梦的个体值也由生成pid相关的随机数决定


等级:

由于蛋生宝可梦的相遇方式都设成了从蛋中孵化,

因此某些低于进化等级的宝可梦的等级将会被提升

如金银15级的臭臭花,在传过来之后,会提升到21级。

对于非蛋生的宝可梦,也会提升到最低的可能相遇等级,

比如40级的凤王会一下子升到70级(肚脐岩那只凤王的等级)


个体值:

蛋生宝可梦的个体值=原始个体值x2,

然后再根据觉醒力量的属性,再决定是否+1,

如果觉醒力量为恶属性,则全部在x2的基础上+1,

非蛋生宝可梦,个体值来自与pid相关的随机数


努力值:

因为gen3的努力值有累计上限,故全部清空


性格:

由经验值除以25的余数决定,然后pid会生成符合条件的


特性:

官方软件会统一使用梦特,但gen3没有梦特,所以特性由pid的奇偶随机决定


招式的处理:

所学招式必须是三代能合法习得的招式,对于三代中无法合法习得的招式,会被删除掉

蛋招式方面,因为xy之前只能从父方遗传招式,某些蛋招式不可能共存,

本工具会判断能否共存,对于不能共存的组合,将删除掉不能共存的招式(这点比当前的pkhex还严格)

此外,对于只能通过升级才能学会的招式,会判断它在gen3的学习等级,

比如洛奇亚的气旋攻击在gen3中的学习等级与金银水晶不同,

要到77级才能学会,传来的洛奇亚如果低于该等级,将遗忘掉这个招式。


无法传输的宝可梦:

携带道具的宝可梦

闪光时拉比

掌握了秘传学习器招式的宝可梦


开发团队:

程序:enler

协力、测试:卧看微尘

美术:crossztc

测试存档提供:海のLUGIA、Tom_C


以下是开发过程中参考的来自海外社区的成果

Goppier:基于自制连接线转接器实现了世界首个跨世代交换方案(硬件解决方案)

Lorenzooone:基于通信协议模拟实现的纯软件跨世代交换工具Gen3-to-Gen-X的开发者(通信协议模拟方案)

AntonioND:gba的gb模式的相关研究

pret:宝可梦游戏反编译工程

pkhex:知名的宝可梦存档修改器

pokefinder:宝可梦乱数工具

luckytyphlosion:宝可梦水晶版任意代码执行漏洞的发现者

(漏洞也被用于水晶版邪道速通,老实说这个漏洞也是我们在查阅速通的资料中了解到的)


下载地址:

链接:https://pan.baidu.com/s/1Hdn-K06jueJXKNmVBlta2Q

提取码:MOVE

其中附上了我们开发过程中修改过的mGBA模拟器,可以进行测试


上一篇:[自购拆书首发-更新V1版]实况足球2000-Konami Official Guide
下一篇:世嘉MD经典射击游戏《武者雅士达》Musha Aleste 简中汉化版分享
最新回复 (16)
  • 四级用户 yjx781700993 5月前
    0 2
    太强啦
  • 四级用户 punkheng 5月前
    0 3
    gbm不支持?
  • 五级用户 卧看微尘 5月前
    0 4
    punkheng gbm不支持?
    gbm连接线接口跟常规gba连接线不同,需要转接器。但是gbm的官方转接器很可能没有引出针脚,即便用转接器也不行。民间自制转接器如果有引出完整针脚的,那么有可能是可以的。
  • 四级用户 punkheng 5月前
    0 5
    卧看微尘 gbm连接线接口跟常规gba连接线不同,需要转接器。但是gbm的官方转接器很可能没有引出针脚,即便用转接器也不行。民间自制转接器如果有引出完整针脚的,那么有可能是可以的。
    ok,万幸不完口袋,哈哈哈
  • 三级用户 欢乐大基佬 5月前
    0 6
    大佬NB啊
  • 五级用户 三水一米田 5月前
    0 7
    太强了,大佬!!!
  • 五级用户 sh7820xx 5月前
    0 8
    感谢分享~
  • 四级用户 lamtheH 5月前
    0 9
    牛逼,但感觉像是照着模板重新生成一只宝可梦:(
  • 五级用户 卧看微尘 5月前
    1 10
    lamtheH 牛逼,但感觉像是照着模板重新生成一只宝可梦:(
    关于宝可梦数据的变更、保留以及其合法性,可以看文内合法性处理的章节介绍。
  • 版主 fjh212 5月前
    0 11
    大佬又发力了
  • 二级用户 enler 5月前
    1 12
    lamtheH 牛逼,但感觉像是照着模板重新生成一只宝可梦:(
    初代二代的数据结构非常原始简单,跟三代以后的兼容性本来就很差,3ds的宝可梦虚拟传送也基本上要按照原始的数据重新生成,能直接保留的原始数据也就id技能等级,不到10个字节(初代二代的技能用1字节存储),连昵称都需要转码,都不是原始数据,只不过我们的工具需要为了满足在3代的要求,确实要对技能等级进行必要的调整
  • 四级用户 wNg333 5月前
    0 13
    来围观大佬。
  • 三级用户 10100110011 5月前
    0 14
    这么搞的pm会显示“令人怀念的城都/关都地区”么?
  • 五级用户 卧看微尘 5月前
    0 15

     

  • 五级用户 卧看微尘 5月前
    0 16
    10100110011 这么搞的pm会显示“令人怀念的城都/关都地区”么?
    按3代本身的来
  • 四级用户 cfi1000 5月前
    0 17
    根据提供的网页内容,以下是一篇手把手教学,指导用户如何使用《Pokémover for gba》宝可梦跨代传宠工具:

    《Pokémover for gba》使用教程
    1. 准备工作
    确保您拥有两台GBA兼容设备(主机和副机)。
    准备GB连接线,注意不要使用GBA连接线。
    确保副机设备上安装有兼容的宝可梦游戏。
    2. 下载与安装
    访问提供的下载地址,输入提取码MOVE下载《Pokémover for gba》工具。
    下载完成后,将工具复制到主机GBA的存储设备中。
    3. 兼容性检查
    确认您的设备和游戏版本是否在兼容性列表中。例如,GBA/GBASP/NGC的GBPlayer作为主机,GBA/GBASP/GBC/GB/SFC的SGB2作为副机。
    4. 启动工具
    在主机GBA上启动《Pokémover for gba》工具。
    5. 选择传输方法
    根据您设备的类型,选择multiboot法或漏洞法进行连接。
    6. 使用multiboot法
    适用于两台GBA之间的连接。
    按照工具内的说明进行操作。
    7. 使用漏洞法
    适用于GBA与GB/GBC之间的连接。
    根据游戏的语言版本,在工具内选择正确的语言设置。
    8. 发送传输工具
    按照所选方法,将传输工具发送至副机。
    9. 传输宝可梦
    在副机上读取宝可梦游戏的存档。
    选择要传输的宝可梦,并按照工具提示操作。
    10. 接收宝可梦
    主机GBA将接收来自副机的宝可梦。
    确保传输过程中不要中断连接。
    11. 检查宝可梦合法性
    传输完成后,使用pkhex等工具检查宝可梦的合法性。
    12. 注意事项
    某些宝可梦可能无法传输,例如携带道具的宝可梦、蛋、闪光时拉比等。
    传输过程中,宝可梦的某些属性(如等级、个体值等)可能会被调整以确保合法性。
    13. 观看演示视频
    如果需要更直观的操作指导,可以观看Bilibili视频演示。
    14. 问题解决
    如果遇到问题,可以参考开发团队提供的技术支持或在论坛上寻求帮助。
    15. 享受游戏
    完成上述步骤后,您就可以在第三代宝可梦游戏中使用从第二代传输过来的宝可梦了。
    请确保在整个过程中遵循所有指示,并注意保护您的设备和游戏数据。祝您使用《Pokémover for gba》工具愉快!
    • 老男人游戏网配套论坛
      18
        立即登录 立即注册
发新帖
本论坛禁止发布SWITCH和PS4相关资源,若有其他侵权内容,请致邮3360342659#qq.com(#替换成@)删除。