街机模拟游戏逆向工程(HACKROM)教程:[5]中断

街机模拟游戏逆向工程(HACKROM)教程:[5]中断_第1张图片

在上一章中,我们搜索到了"恐龙新世纪"模拟游戏中1号机台玩家血量的地址,那么,这个地址在对该游戏的逆向工程中可以起到什么作用呢?我们可以考虑,玩家血量的变动有多少种情况:

1、被敌人攻击

        - 得到敌人某个技能的攻击力,自身的防御力。

2、被队友攻击

        - 得到队友的攻击力。

3、被道具击中

        - 得到道具的攻击力。

4、使用扣血技能

        - 得到使用技能扣除的血量值。

5、拾取回血道具

        - 得到某个回血道具回复的血量值。

也许有更多的情况,这里只列出常见的几种情况。

那么,我们需要MAME的中断功能来得到这些我们想要得到的数据。

一、中断是什么

中断的意思是在某个条件下,中断程序的运行,这个条件可以是多种多样的,比如说最基本的。程序运行到某行时中断。但我们并不知道程序在哪一行改变玩家血量的值,所以,我们利用另一种中断来找到程序在哪一行对玩家血量的值进行改变。

二、MAME的中断指令

MAME的中断指令有两种:

1、断点指令

bpset

bp[set] 
[:][,[,]] 在指定的
处设置新的执行断点。
后面可以选择跟随一个冒号和一个标记或调试器 CPU 编号,以便为特定 CPU 设置断点。 如果未指定 CPU,则将为调试器中当前可见的 CPU 设置断点。 可选的 参数允许您指定每次命中断点地址时将计算的表达式。 如果表达式的结果为真(非零),断点将停止执行; 否则,执行将继续而不通知。 可选的 参数提供每当遇到断点并且 为 true 时要执行的命令。 请注意,需要用大括号 { } 将操作括起来,以确保命令中的逗号和分号不会在 bpset 命令本身的上下文中进行解释。 设置的每个断点都分配有一个数字索引,可用于在其他断点命令中引用它。

你可能感兴趣的:(网络)