Assembly 破解C64游戏与精灵碰撞

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

我正在尝试破解一个叫做“卡兹和毛斯”的老海军准将游戏。我已经意识到了无限的生命,重写了分数,我已经完成了水平跳跃的一半。我认为精灵碰撞将是完成水平跳跃的关键

问题是我在代码中找不到任何可能导致精灵/角色冲突的部分

我试图用动作回放模拟器找到它:没有结果

在MC monitor中,我搜索了D01E和D01F,但所有匹配都是由操作码引起的:

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

我还能查什么?谢谢LDA#$D0(或
LDX
LDY


另一件需要检查的事情是,您的程序是否干扰了中断例程。VIC2可编程为在检测到精灵碰撞时触发中断

嗯,我想知道这是关于这个主题还是更好。如果冲突导致变量改变,比如健康、生命、分数,尝试搜索其中一个变量,然后搜索引用其中一个变量的代码。如果计算了这些变量的地址,这可能是一个问题。@NickWestgate:或者可能是开的,但是是的,对于在6502这样的旧处理器上破解旧游戏来说,反向计算可能是一个更好的选择。@NickWestgate这是一个关于编程的主题。这个问题是否与另一个网站的主题无关。这里没有规定要求问题必须与足够现代的技术有关,也没有反求工程的问题。你在模拟器中运行它吗?如果是,请尝试断开VIC2冲突寄存器中的读取(例如,在Vice的控制台中断开加载$d01e$d01f)