简体   繁体   English

用精灵碰撞破解C64游戏

[英]Crack C64 game with sprite collision

I'm trying to crack an old commodore game called "Katz und maus". 我正试图破解一个名为“Katz und maus”的旧商品游戏。 I already realized the infinite lives, rewrite scores and I'm halfway on implementing the level jump. 我已经意识到无限的生命,重写分数,而且我已经实现了跳跃的一半。 I think sprite collision will be the key to finish the level jump. 我认为精灵碰撞将是完成关卡跳跃的关键。

The problem is I could not find any part in the code which might responsible for sprite/character collision. 问题是我在代码中找不到任何可能导致精灵/字符冲突的部分。

I tried to find it with an action replay emulator: no results. 我试图用动作重播模拟器找到它:没有结果。

In MC monitor I searched D01E and D01F but all the matches caused because of opcodes: 在MC监视器中,我搜索了D01E和D01F,但由于操作码导致所有匹配:

H 0000 FFFF 1E D0

H 0000 FFFF 1F D0

I also tried to look for LDA $D01E and LDA $D01F, but no results: 我也试图寻找LDA $ D01E和LDA $ D01F,但没有结果:

H 0000 FFFF AD 1E D0

H 0000 FFFF AD 1F D0

What else can I check? 我还能检查什么? Thanks! 谢谢!

Were I writing a game that used the VIC2 heavily (I suppose all games do), I would consider storing the base address of the VIC2 somewhere and then accessing the registers in it using indexed addressing. 如果我正在编写一个大量使用VIC2的游戏(我想所有游戏都会这样做),我会考虑在某处存储VIC2的基地址,然后使用索引寻址访问其中的寄存器。 So you could look for any code that stores the base address (or any address in the VIC2 range) at a location. 因此,您可以查找在某个位置存储基址(或VIC2范围内的任何地址)的任何代码。 Any such code would first have to do LDA #$D0 at some point (or LDX or LDY ). 任何此类代码首先必须在某个时刻(或LDXLDY )执行LDA #$D0

Another thing to check is whether your program messes with the interrupt routines. 要检查的另一件事是你的程序是否与中断例程混淆。 The VIC2 can be programmed to raise an interrupt when it detects a sprite collision. 可以对VIC2进行编程,以便在检测到子画面冲突时引发中断。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM