Assembly 破解C64游戏与精灵碰撞
我正在尝试破解一个叫做“卡兹和毛斯”的老海军准将游戏。我已经意识到了无限的生命,重写了分数,我已经完成了水平跳跃的一半。我认为精灵碰撞将是完成水平跳跃的关键 问题是我在代码中找不到任何可能导致精灵/角色冲突的部分 我试图用动作回放模拟器找到它:没有结果 在MC monitor中,我搜索了D01E和D01F,但所有匹配都是由操作码引起的:Assembly 破解C64游戏与精灵碰撞,assembly,sprite,reverse-engineering,6502,Assembly,Sprite,Reverse Engineering,6502,我正在尝试破解一个叫做“卡兹和毛斯”的老海军准将游戏。我已经意识到了无限的生命,重写了分数,我已经完成了水平跳跃的一半。我认为精灵碰撞将是完成水平跳跃的关键 问题是我在代码中找不到任何可能导致精灵/角色冲突的部分 我试图用动作回放模拟器找到它:没有结果 在MC monitor中,我搜索了D01E和D01F,但所有匹配都是由操作码引起的: H 0000 FFFF 1E D0 H 0000 FFFF 1F D0 我还尝试查找LDA$D01E和LDA$D01F,但没有结果: H 0000 FFFF
H 0000 FFFF 1E D0
H 0000 FFFF 1F D0
我还尝试查找LDA$D01E和LDA$D01F,但没有结果:
H 0000 FFFF AD 1E D0
H 0000 FFFF AD 1F D0
我还能查什么?谢谢我写了一个使用VIC2重的游戏(我想所有的游戏都是这样的),我会考虑把VIC2的基本地址存储在某处,然后使用索引寻址访问它的寄存器。因此,您可以查找在某个位置存储基址(或VIC2范围内的任何地址)的任何代码。任何这样的代码首先必须在某个点执行
LDA#$D0
(或LDX
或LDY
)
另一件需要检查的事情是,您的程序是否干扰了中断例程。VIC2可编程为在检测到精灵碰撞时触发中断 嗯,我想知道这是关于这个主题还是更好。如果冲突导致变量改变,比如健康、生命、分数,尝试搜索其中一个变量,然后搜索引用其中一个变量的代码。如果计算了这些变量的地址,这可能是一个问题。@NickWestgate:或者可能是开的,但是是的,对于在6502这样的旧处理器上破解旧游戏来说,反向计算可能是一个更好的选择。@NickWestgate这是一个关于编程的主题。这个问题是否与另一个网站的主题无关。这里没有规定要求问题必须与足够现代的技术有关,也没有反求工程的问题。你在模拟器中运行它吗?如果是,请尝试断开VIC2冲突寄存器中的读取(例如,在Vice的控制台中断开加载$d01e$d01f)