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

发布时间:2024年01月16日

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

1、被敌人攻击

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

2、被队友攻击

        - 得到队友的攻击力。

3、被道具击中

        - 得到道具的攻击力。

4、使用扣血技能

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

5、拾取回血道具

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

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

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

一、中断是什么

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

二、MAME的中断指令

MAME的中断指令有两种:

1、断点指令

bpset

bp[set] <address>[:<CPU>][,<condition>[,<action>]]

在指定的<address>处设置新的执行断点。  <address> 后面可以选择跟随一个冒号和一个标记或调试器 CPU 编号,以便为特定 CPU 设置断点。  如果未指定 CPU,则将为调试器中当前可见的 CPU 设置断点。

可选的 <condition> 参数允许您指定每次命中断点地址时将计算的表达式。  如果表达式的结果为真(非零),断点将停止执行;  否则,执行将继续而不通知。  可选的 <action> 参数提供每当遇到断点并且 <condition> 为 true 时要执行的命令。  请注意,需要用大括号 { } 将操作括起来,以确保命令中的逗号和分号不会在 bpset 命令本身的上下文中进行解释。

设置的每个断点都分配有一个数字索引,可用于在其他断点命令中引用它。 
文章来源:https://blog.csdn.net/m0_50114967/article/details/135433506
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。