注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

疾风之狼博客

 
 
 

日志

 
 

[原创]GB游戏简单修改教程  

2008-12-28 21:10:20|  分类: 原创修改资料 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

图片看不清的话请点击图片放大.....
本文教大家如何修改GB游戏,偶以GB《忍者龙剑传》日版为例,修改目标是命不减

准备工具:调试器BGB,Z80指令集资料,WINHEX或UE等十六进制编辑工具,纸笔

先找到GB《忍者龙剑传》日版命数存放地址,偶找到了,命数地址是:C09C

开始罗

(1)打开BGB模拟器,如图1:

[原创]GB游戏简单修改教程 - 疾风之狼 - 疾风之狼博客

 

 

(2)在BGB模拟器窗口中右键点击,在弹出菜单中选择“Load rom...”载入《忍者龙剑传》的ROM,如图2、图3:

[原创]GB游戏简单修改教程 - 疾风之狼 - 疾风之狼博客

 

[原创]GB游戏简单修改教程 - 疾风之狼 - 疾风之狼博客

 

 

(3)进入游戏后,看到主角命数是2,如图4:右键点击在弹出菜单中选择“pause”暂停游戏

[原创]GB游戏简单修改教程 - 疾风之狼 - 疾风之狼博客

 

(4)在模拟器窗口中按鼠标右键,在弹出菜单中选择“other”>“debug mode enabled”,开启debug模式,再在菜单中选择“other”>“debugger”,如图5:

[原创]GB游戏简单修改教程 - 疾风之狼 - 疾风之狼博客

 

(5)解除暂停,弹出如图6窗口:
[原创]GB游戏简单修改教程 - 疾风之狼 - 疾风之狼的博客

(6)接下来设置断点,在图6窗口中选择“Debug”>“access breakpoints”,弹出如图7窗口:
[原创]GB游戏简单修改教程 - 疾风之狼 - 疾风之狼的博客

偶说明一下access breakpoints窗口中各项作用:
addr range左边方框是输入地址,value左边方框是输入数值,on read是读取,on write是写入

Add是添加断点,Delete是删除断点,Replace是用修改已经设置的断点地址和数值,修改断点方法:先选中已经设置好的断点,再在下方addr range和value方框内输入你要修正的地址和数值,再点击Replace OK!

Disable是关闭断点,Enable是激活断点

(7)偶知道忍者龙剑传主角的生命地址是C09C,命数是2,偶在addr range方框输入C09C,value方框输入01,并在on write选项前打勾,再点Add完成断点设置,如图8:
[原创]GB游戏简单修改教程 - 疾风之狼 - 疾风之狼的博客

 

解释一下为什么value方框是输入01,不是输入02?这样设置是当01数值写入到

C09C地址时调试器才发生中断。因为我知道命数现在是2,死一命后命数不就变成

1了吧。

 

(8)之后回到游戏中死掉一命后,模拟器会自动中断停在ROM0:131D EA 9C C0这一行,如图9:
[原创]GB游戏简单修改教程 - 疾风之狼 - 疾风之狼的博客

(9)接下来分析一下:
ROM0:1319 FA 9C C0 ld a,(c09c)->将c09c地址数值载入到累加器a
ROM0:131C 3D       dec a      ->将累加器a的数值减1,结果存入累加器a,将此指令修改成NOP就变成命不减了。
ROM0:131D EA 9C C0 ld (c09c),a->将累加器a的数值载入到c09c地址

如果要想命不减,只要把dec a指令nop掉就OK了。

记下FA 9C C0 3D EA 9C C0,备用。

(10)选中ROM0:131C 3D       dec a这一行右键点击,在弹出菜单中选择“Modify code”,如图10:
[原创]GB游戏简单修改教程 - 疾风之狼 - 疾风之狼的博客

(11)在弹出窗口中方框输入nop,再点OK退出,指令修改完毕。如图11:
[原创]GB游戏简单修改教程 - 疾风之狼 - 疾风之狼的博客

(12)ROM0:131C这一行指令发生变化,dec a变成nop,3D变成00,如图12:
[原创]GB游戏简单修改教程 - 疾风之狼 - 疾风之狼的博客

(13)解除断点,回到游戏中多死几次看看效果,是否命数不减了.....呵呵,如图13:
[原创]GB游戏简单修改教程 - 疾风之狼 - 疾风之狼的博客

(14)命数不减修改成功了。接下来打开WINHEX加载GB《忍者龙剑传》ROM,还记得之前抄下数据么?查找FA 9C C0 3D EA 9C C0,找到后把3D修改00,保存退出WINHEX,完成。

顺便说一下Z80的NOP指令机械码是00。

教程至此完成。

BY 疾风之狼

2008.11.28 完成
2009.03.06 修改

  评论这张
 
阅读(1333)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017