简单来谈谈BizHawk内存修改程式
它大致上分成三块
1、RAM Search 搜寻内存
2、RAM Watch 修改位址表单
3、Hex Editor 16位元内存区块监修
如果你有使用过Game Master、Cheat Engine或更早前的FPE、game ice
基本上的操作是差不多的,就是BizHawk没有官方中文化会对英文苦手比较
不好立刻上手
以if4大的46亿年物语汉化繁体版为例
读取ROM档后可以在选单Tools→鼠标点RAM Search,即可叫出RAM Search
程式,画面上显示HP:20/20 EVO.P:0
一般来说大部分的游戏都可以直觉的使用10进位数值来搜寻,这个EVO.P值
就可以用,鼠标在右边Specific Value左边圆点下它右边的输入框方块就是让
你输入数值的,下面Size下拉方块选“1Byte”,Display保持默认Unsigned
1Byte表示0~255,Unsigned表示0~正数,通常我都当它是10进位用
一开始你可以按工具列放大镜图示它有写“Search”搜寻"0",再来操作我们
的鱼攻击第一只多嘴的水母得到10点,我们搜寻"10"会从9000多笔数据剩9笔,
再来攻击第二只得到50点,搜寻"60点"我们会得到唯一一笔数据
Addresss内存位址:0000D2,Value数值:60,点两下可以呼叫RAM Watch
程式并产生第一笔位址数据,对它按鼠标右键Edit或是点一下反白再点工具列剪刀
图示一样是编辑的意思,在Notes文字方块输入EVO.P或是进化点数之类帮助你分
辨这个位址是什么功能
最好是立刻存盘,你可以点选单Files→Save或是工具列磁片图示一样能存盘,若是
有其他需要个别存盘可以点选单Files→Save As..另存一个新的档
依zack867大推文所述HP必须以16进位去搜寻,这算是一个很有趣的数值隐藏
法,也就是呼叫RAM Search程式,Dispay改下拉Hex,这是16进位的状态
正常16进位搜寻是需要以小算盘10进位换算成16进位的,但,这个HP值必须在16进
位状态用10进位数值来搜寻,在搜寻前请先在工具列按NEW图示或是选单Search→
New Search清除所有搜寻
这时请用"20"去搜约13万笔数据,找一只水母碰一下-1,请搜"19"剩下1个位址就是
它了,点两下位址,RAM Watch位址表单就会有第2个位址数值,Notes请填写HP
Addresss内存位址:0000C5,Value数值:19,Notes:HP
模拟器游戏基本上少不了金手指,底下网址是SFC 46亿年物语的金手指
https://www.ptt.cc/man/Emulator/DC9C/D211/DBA6/M.1260334237.A.74E.html
位址 数值 效果
7E00C5 99 现在 HP 十位个位数
7E00C6 09 现在 HP 百位数
7E00C7 99 最大 HP 十位个位数
7E00C8 09 最大 HP 百位数
7E00C9 FF biting point 咬攻击力
7E00CA FF strength point
7E00CB FF kick point
7E00CC FF strike point
7E00CD FF horn point
7E00CF FF defence power 十位个位数
7E00D0 1F agility 游泳速度 (太大游超快)
7E00D1 0F jumping 跳跃能力 (太大跳超高)
7E00D2 3F EVO.P 十位个位数
7E00D3 42 EVO.P 千位百位数
7E00D4 0F EVO.P 十万位万位数
有没有发现HP位址刚好和金手指字尾是C5一样?
EVO.P也是一样字尾是D2?
BizHawk的作者在编写内存修改程式时相当贴心的让位址与金手指一样
7E就是我们搜寻的内存区段,后面的数字就是我们要的位址
辛苦一点手动贴入新的位址就行,不过,要记得在Notes写好注解
C5我会修改成1Byte→2Byte,C7也一样
D2D3D4有三个位址,我的作法是改成4Bite,数值不要超过太多,正常
进化后EVO.P值会清空
最后如果会用到负数的10进位数值的话Display改下拉Signed,大部分的
游戏很少用到负数,除非是隐藏数值或是大富翁类的游戏才会用到!