Pokemon Center | 口袋中心 以口袋妖怪为主题并带有其他动漫游戏的讨论

 找回密码
 加入口袋中心
搜索
查看: 318|回复: 2

《精灵宝可梦 金/银/水晶》主角房间饰品金手指/PkHex数据

[复制链接]

2万

帖子

6014

现金

286

勋章券

管理员

起源の钻角犀兽

Rank: 27Rank: 27Rank: 27

积分
48826
QQ

Missingno论坛十周年纪念物水中王者勋章Lv3时光印记Lv.3Omega红宝石发售确认纪念章Alpha蓝宝石发售确认纪念章

发表于 2018-10-18 23:33:11 | 显示全部楼层 |阅读模式
大约半年前出于一些莫名的理由写了个帖子把主角房间饰品的获得方式都列举了出来:《精灵宝可梦 金/银/水晶》主角房间饰品大全
文中提到我有在刷VC版的金/银/水晶的神秘礼物,然而大半年过去了,还是每个记录各有一点点欠缺,所以我就打算走一下“黑魔法”手段,干脆把所有饰品都搞全了得了(另一方面是收集强迫症使得我想把VC版搞不到的都获得),于是把研究结果贴出来。(不过本文可能需要一点计算机知识才能看懂- -|||)

金银水晶的饰品一共有45个,在内存中用1个位(bit)来表示是否获得,通常我们猜想这些位是连续的,也就是用45个连续的1或0来表示。
通过上文链接中的列表(已按游戏里的顺序排列,事实上也是数据的顺序),我们发现先是4个床,然后4个地毯,3个植物,4个海报,4个游戏机,21个布偶,2个奖杯,3个大型布偶。
结论稍微有点偏差,布偶和奖杯中间插了一个其他作用的位,所以实际用了跨度46位来存储这些饰品的获得。

我们可能搜到过全饰品的金手指,但用了会有bug,一些剧情的做完状态会发生改变,原因很简单,46除以8,余数不是0,那么那串金手指的头尾两个字节你笼统的赋值为FF或00,肯定影响到了饰品以外的其他内容,但是金手指是按字节赋值,又不是按位,所以我们是必须精确明白到所需要的是该字节中的哪几个位才能正确使用那些金手指的。而且46位中混入了一位是其他含义的,并不连续,那么除开头尾字节,中间的也不可盲目赋值。

我在以前写过的文章里也说过类似的知识点,再次引用一下:
英文水晶版
无限抓卡比兽:010060DB

比如这个无限抓卡比兽,卡比兽是否抓掉了,结果就2种,是或者不是,所以只要用0或1一个位的存储空间就行了,但是这个00,是一个字节,等于说你赋值了00000000,足有8个0,另外7个位也被覆盖了0,这就会引起bug

重现地鼠洞前的卡比兽:01XX60DB
XX值怎么确定?打开VBA模拟器,工具—内存查看器,地址栏输入DB60,点击转到
比如查到的数值是0x33,二进制是
00110011
最右边一位就是控制的地方,得置0,于是变成了
00110010
这就是0x32,于是XX为32

所以说,在金手指笼统的赋值为00的情况下可千万不要保存,以此为例,正确使用方法是开抓前看一下该地址的数值,观察捕捉完成后的变化,赋值开抓前的数值而不是00,这样才不会影响到该字节中其他位的意义。


继续上结论,金银和水晶的饰品获得状态存储用的位构造一样,只是起始地址不同,以金银日文版为例,0xD7FE的后4位开始,直到0xD804的头两位
即:
  
0xD7FE
  
  
4位其他作用 | 床1~4
  
  
0xD7FF
  
  
地毯1~4 | 植物1~3 | 海报1
  
  
0xD800
  
  
海报2~4 | 游戏机1~4 | 布偶1
  
  
0xD801
  
  
布偶2~ 9
  
  
0xD802
  
  
布偶10~17
  
  
0xD803
  
  
布偶18~21 | 1位其他作用 | 奖杯1、2 | 大型布偶1
  
  
0xD804
  
  
大型布偶2、3 | 6位其他作用
  


但是你拿实际情况去对比下内存里的值会发现并不相同,细心点展开二进制会发现是反的,那是因为高低位与先进后出的缘故,比如0xD7FF,我用图来表示下“地毯1~4 | 植物1~3 | 海报1”:


如果我现在获得了黄色的地毯和城镇地图,内存里的值是0010 0001 = 0x21吗?
并不是啊,你得反着来,事实上内存里各个位是这么排的:


所以啊,在获得了黄色的地毯和城镇地图的情况下,内存里的值是1000 0100 = 0x84

这么讲我想我应该是把结构讲清楚了,顺手挖掘了下床1~4之前的4个位的含义,是记录阿露福遗迹中的四个拼图是否完成的。
接下来上本帖重点,日文版最终的数据表:
  
金银 / 水晶
  
  
高 → 低
  
  
0xD7FE / 0xDAB9
  
  
皮卡丘的床 | 水玉色的床 | 粉红色的床 | 温馨的床 | 化石翼龙拼图 | 菊石兽拼图 | 化石盔拼图 | 凤王拼图
  
  
0xD7FF / 0xDABA
  
  
城镇地图 | 大的植物 | 南国的植物 | 壮观的植物 | 绿色的地毯 | 黄色的地毯 | 淡蓝色的地毯 | 红色的地毯
  
  
0xD800 / 0xDABB
  
  
皮卡丘布偶 | 虚拟男孩 | N64 | 超任 | 红白机 | 胖丁的海报 | 皮皮的海报 | 皮卡丘的海报
  
  
0xD801 / 0xDABC
  
  
地鼠布偶 | 蚊香蝌蚪布偶 | 杰尼龟布偶 | 小火龙布偶 | 妙蛙种子布偶 | 胖丁布偶 | 皮皮布偶 | 冲浪皮卡丘布偶
  
  
0xD802 / 0xDABD
  
  
独角虫布偶 | 霹雳电球布偶 | 臭泥布偶 | 大舌贝布偶 | 耿鬼布偶 | 走路草布偶 | 鲤鱼王布偶 | 海星星布偶
  
  
0xD803 / 0xDABE
  
  
大的卡比兽 | 银奖杯 | 金奖杯 | 1位其他作用 | 玛瑙水母布偶 | 腕力布偶 | 小拳石布偶 | 未知图腾布偶
  
  
0xD804 / 0xDABF
  
  
6位其他作用 | 大的拉普拉斯 | 大的大岩蛇
  


最后我们再来学习一下金手指的写法吧~

比如水晶日文版中,我想获得未知图腾布偶,查得内存地址是0xDABE,
将值转换成二进制,发现中间的“ 1位其他作用”是1,其他几位的东西我已经有了大的卡比兽和腕力布偶,
那么我要修改的值为1001 0101 = 0x95
金手指的写法为:
0195BEDA
其中01没有意义的,后面几位应该懂了吧,内存地址记得是反写。
当然这格式是模拟器用的,如果你还有20年前的硬件金手指和GB的话,写法是:
0DABE95
第一个0没有意义,接下来不要反写了。

再以水晶日文版为例,内存地址0xDAB9中,我想要获得皮卡丘的床并且完成凤王拼图,
原本已有温馨的床、粉红色的床,四张拼图中我已完成了菊石兽拼图,
那么我要修改的值为1011 0101 = 0xB5
金手指的写法为:
01B5B9DA

如果搞明白的话我再送些数据给大家:
  
事件名称
  
  
内存地址示例(金银日文版)
  
  
内存地址示例(水晶日文版)
  
  
地鼠洞前的卡比兽重现
  
  
D898:33 → 32
  
  
DB53:33 → 32
  
  
愤怒之湖的异色暴鲤龙重现
  
  
D894:DB → D9
  
  
DB4F:EF → ED
  
  
36号道路的树才怪重现
  
  
D889:5D → 5C
  
  
DB44:5D → 5C
  

(异色暴鲤龙和树才怪重现会出现有趣现象233333

========================================================
最后我单独讲一下英文水晶版,因为有PkHex的支持,所以不用控制内存那么麻烦啦,改记录文件就是,以下是Flag编号,想拥有就打钩:

676 = Feathery Bed
677 = Pink Bed
678 = Polka Dot Bed
679 = Pikachu Bed
680 = Red Carpet
681 = Blue Carpet
682 = Yellow Carpet
683 = Green Carpet
684 = MagnaPlant
685 = TropicPlant
686 = JumboPlant
687 = Town Map
688 = Pikachu Poster
689 = Clefairy Poster
690 = Jigglypuff Poster
691 = NES
692 = Super NES
693 = Nintendo64
694 = Virtual Boy
695 = Pikachu Doll
696 = Surf Pikachu Doll
697 = Clefairy Doll
698 = Jigglypuff Doll
699 = Bulbasaur Doll
700 = Charmander Doll
701 = Squirtle Doll
702 = Poliwag Doll
703 = Diglett Doll
704 = Staryu Doll
705 = Magikarp Doll
706 = Oddish Doll
707 = Gengar Doll
708 = Shellder Doll
709 = Grimer Doll
710 = Voltorb Doll
711 = Weedle Doll
712 = Unown Doll
713 = Geodue Doll
714 = Machop Doll
715 = Tentacool Doll
(注意,和内存中当然是一样的,716号并不是哦)
717 = Gold Trophy
718 = Silver Trophy
719 = Big Snorlax Doll
720 = Big Onix Doll
721 = Big Lapras Doll

再附赠下重现卡比兽:
UnSet:1904,
啊咧咧,又挖坑不填哎╮(╯▽╰)╭

告别真新镇后不知经过多久,擦伤,砍伤,朋友的数目,让我有点自豪,那时候因为流行而跑去买的,这双轻便的运动鞋,现在成了,找遍全世界也找不到的,最棒的破鞋子……
口袋中心·绿宝石·改(更新1.6.4版)
【口袋中心出品】魂银·壹式改点壹(全493)
宝可梦卡牌 / 限定精灵图示    好吧,这是官方微博-_-    好吧,这是我的微博-_-
个人制作的FC魂斗罗2代hack版    建了之后就没怎么管理的blog-_,-|||
【科普向】魂银中少有人注意到的洛奇亚传说故事
回复

使用道具 举报

49

帖子

46

现金

17

勋章券

离开家乡的彷徨

Rank: 4Rank: 4

积分
144
发表于 2018-10-19 14:40:17 | 显示全部楼层
  不明觉厉 先占一楼
回复 支持 反对

使用道具 举报

5

帖子

1220

现金

0

勋章券

口袋学堂外的努力

Rank: 2Rank: 2

积分
10
QQ
发表于 2018-12-5 15:06:10 | 显示全部楼层
海姐么么哒!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入口袋中心

本版积分规则

手机版|Archiver|Pokemon Center

GMT+8, 2018-12-14 13:01 , Processed in 0.217853 second(s), 31 queries , Eaccelerator On.

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表