关于MAME DEBUG版用法(如看不清图片请点击图片放大)[更新补充一些命令]
应人要求,就写写关于MAME DEBUG版用法吧。(1)如何加载ROM
先说说如何加载ROM吧
以MAME 0.148 DEBUG版为例:
1.从MAME官网下载MAME 0.148 DEBUG,MAME官网下载页面:http://mamedev.org/release.html
注:MAME官网的MAME是命令行程式,没有GUI。
2.下载完后双击mame0148b_debug.exe安装(也可自行用7zip解压MAME 0.148 DEBUG到任一目录),点击"开始"->"运行",输入CMD后回车进入命令提示符窗口;
3.进入MAME 0.148 DEBUG版所在目录,懂DOS命令者应该知道如何进入MAME 0.148 DEBUG版所在目录吧,不懂的跟我来,例如我把MAME 0.148 DEBUG解压到D:\mame0148b_debug,那么输入:
d:回车
cd mame0148b_debug回车
如图1:
4.输入mamed -createconfig创建mame.ini配置文件,用记事本之类工具打开mame.ini,把WINDOWS VIDEO OPTIONS下面的window选项设为1,不然会以全屏方式运行游戏,然后保存,如图2:
5.把ROM放在mame0148b_debug目录下ROMS目录里,当然你也可以不放在ROMS目录下,改放在其他目录,然后在mame.ini配置文件里CORE SEARCH PATH OPTIONS下rompath选项指定你的ROM目录存放路径;
6.输入"mamed rom档名称"(不包含扩展名)回车即可运行游戏(例如:你要载入龙王战士日版rom,输入mamed kodj回车)。
(2)如何呼出/隐藏调试窗口
1.用记事本之类工具打开mame.ini,把CORE DEBUGGING OPTIONS下面的debug选项设为1,不然没法呼出调试窗口,然后保存,如图3:
2.以龙王战士日版为例,在命令提示下输入mamed kodj回车载入龙王战士日版ROM,当载入ROMS后模拟器会自动弹出调试器,如图4:
3.按F12隐藏调试窗口继续运行游戏,要呼出调试窗口就按“~”键。
(3)如何下读/写内存监视点以及程式地址断点
先说说如何下读/写内存监视点吧
监视点命令格式:wp <address>,<length>,<type>,<condition>
<address>是地址
<length>是数据长度,长度必须用十六进制表示
<type>是监视点类型,r是读,w是写,rw是读写
例子:
例如对ff8569地址下写监视点,数据长度是1个字节
wp ff8569,1,w
例如对ff2235地址下读监视点,数据长度是2个字节
wp ff2235,2,r
例如对ff7533地址下写监视点,数据长度是1个字节,当ff7533地址的数值减至0时才发生中断
wp ff7533,1,w,wpdata == 0
以龙王战士日版为例:
1.我们知道1P生命数地址是FF125D,那么就对FF125D地址下写断点,出现watchpoint 1 set说明监视点设置成功,如图5、图6:
2.按F12继续运行游戏,当死一命时就发生中断,模拟器自动弹出调试窗口,黄色条停在010BA4 addq.b #2,($6,A0),看到前面010BA0 subq.b #1,($3,A0)么?那就是减命指令,后面嘛...你们懂的,我也不说了。如图7:
接下来说说程式地址断点
命令格式:bp <address>
例如对000488汇编指令地址下断点
bp 000488
当程式执行到000488地址时就自动中断
更多命令请打help命令查看,要得到某命令说明例如wp命令就打help wp或help wpset查看
有错误请指正。
补充一些命令:
"wpclear" 清除所有监视点
"wpenabld 数字" 开启监视点
"wpdisabld 数字" 关闭监视点
"wplist" 显示所有监视点
"bpclear" 清除所有断点
"bpenabld 数字" 开启断点
"bpdisabld 数字" 关闭断点
"bplist" 显示所有断点
感谢 疾风之狼 提供本次教程 辛苦了 授人以渔啊,万分感谢 我在想为何要搞的调试器这么隐蔽
以前这调试器都是直接出来的说 谢谢,有空学习一下。 更新补充一些命令 本帖最后由 zsyf 于 2013-1-25 16:55 编辑
太好了,终于有新版MAME的Debug相关的教程了,感谢发布教程。不过还有一点小疑问,还请管理员不吝赐教。
其中“我们知道1P生命数地址是FF125D”这句里的FF125D地址,对MAME稍为熟悉一点就知道,MAME0.127以后就取消了内置的作弊码搜索引擎,而且新版本的MAME也不被很久不更新的EmuCheat所支持。因此,想请教的就是,如何才能得到只有新版MAME才支持游戏的相关内存地址?为何用CheatEngine搜索到的临时地址在MAME里下断点却无效呢?是方法不对还是工具不对?还望继续赐教! 1.新版调试器没内存查看功能?
2.就是ls所说的, 没作弊码的情况下如何查询地址 本帖最后由 银河漫步 于 2013-1-25 21:08 编辑
CheatEngine搜到的临时地址当然无法对应MAME的内存地址
新版MAME没搜索引擎了么?
晚上我看看
MAME查看地址的功能还是有的
菜单里的第一个选项就是显示内存地址
不过确实没有之前的搜索引擎了 回zsyf:
1.DEBUG版MAME有作弊码查找命令
命令如下:
cheatinit [<sign><width><swap>,[<address>,<length>[,<cpu>]]]
<sign>是决定数据是有符号还是无符号,s是有符号类型,u是无符号类型
<width>是决定数据宽度,b是8位(单字节),w是16位(双字节),d是32位(4字节),q是64位(8字节)
<swap>是决定字节是否交换
<address>是地址,地址必须用十六进制表示,例:0x100248
<length>是地址长度,长度必须用十六进制表示,例:0xfffff
<cpu>是决定搜索哪一个CPU空间,0是第一个CPU,1是第二个CPU
请打help cheatinit命令获得更加详细说明
cheatnext <condition>[,<comparisonvalue>]
<condition>是搜索条件,有,,,,
是等于
是不等于
是减少
是增加
是减少或等于
是增加或等于
是小于
是大于
是数据有变化
<comparisonvalue>
要搜索的数值
请打help cheatnext命令获得更加详细说明
cheatnextf <condition>[,<comparisonvalue>]
说明同上
请打help cheatnextf命令获得更加详细说明
cheatlist [<filename>]
显示搜索结果,添加文件名的话,就是把搜索结果以基本xml格式输出到文件
请打help cheatlist命令获得更加详细说明
第一次查找要先用cheatinit对要搜索的内存范围进行定位并初始化
之后进行第一次数据搜索时要用cheatnextf命令来摸索
到第二次、第N次数据搜索时要用cheatnext命令来搜索
举个例子吧:
以合金弹头X为例:
1P生命数是2
先用cheatinit命令来对要搜索的内存进行定位并初始化,无符号类型,单字节,内存范围在100000~1fffff,指定搜索第一个CPU的空间
命令如下:
cheatinit ub,0x100000,0xfffff,0
再用cheatnextf eq,2命令搜索生命数2
cheatlist显示搜索结果
死一命后用cheatnext eq,1搜索生命数1
cheatlist显示搜索结果
.......
直到搜索结果不能再减少,就点击菜单Debug->New Memory Window(或按快捷键Ctrl+M)调出内存查看窗口来试着对各个地址试修改看看效果
还有一些命令,例如:cheatrange、cheatundo,因为没机会用或不用,就不说了。
没作弊码的话....
不同的机板CPU,RAM范围大小不一样,干脆用内存查看窗口看看主CPU空间是多大,然后将其全部定位再搜索(这样做一但改错有死机可能)
或看看硬件资料(有的话,可惜我没有)或MAME源代码里的有无写关于68K RAM起始地址(或其他CPU RAM起始地址)
2.cheat engine搜索的是PC内存地址,不是游戏机内存地址,拿cheat engine搜索到地址来断点当然是不行
要用cheat engine修改或锁定数据并不是不行,要先找到MAME 0.148模拟器基址来定位
回114:
1.Debug版MAME是有内存查看窗口,点击菜单Debug->New Memory Window(或按快捷键Ctrl+M)
2.没地址如何查询地址?看上面我给zsyf的回复
打字真累.......orz....... 查出减命指令后怎么改到roms?完全不会啊 同问,我找不到kodj,不知道少了哪个bios,rom,但是有个三剑圣(wof的改版)的rom,也找到减命的指令,就是不知道如何对应到哪个rom的文件。最后一个个试验,似乎都不对。是不是rom加过密,我记得mame的rom,有变化过,最起码在00年之前和现在的不一样。连名字都不一样,到底这些rom是如何做(是不是叫dump)出来的? 感谢分享{:4_92:} 大狼就是我的老师......!!!!!!!!!!!!!!!{:4_97:} 非常实用谢谢,不过最右边的数据是什么意思啊。 又是一张科普帖,一定要顶,而且要收藏 果断留下技术的脚印 万分感谢{:4_92:}
页:
[1]