我正在考虑创建一个有趣的街机。像this one这样的东西。我想知道是否有可能从某些游戏获得事件,例如超级马里奥。假设我完成了一个级别,我希望通过得分和其他一些数据得到该事件,并对该数据执行一些操作。我正在考虑在Windows中运行模拟器。有没有人在做这样的事情?从旧的NES游戏获取事件和数据是否有太难的方法?可能是我应该运行不是Windows,而是一些Linux呢?好吧,请分享一下你如何做软件部分的想法。
答案 0 :(得分:5)
FCEUX等现代模拟器可以通过Lua脚本(see example video)与正在运行的ROM进行交互。使用this API,您可以将Lua脚本写入:
为了知道要检查哪些内存位置,您需要反汇编ROM或通过调试器运行它,或者两者兼而有之。至于超级马里奥兄弟,已经有commented disassembly available。 FCEUX仿真器还有一个可以使用的内置调试器/反汇编器。
所有这些都需要付出很多努力,你需要了解Lua,6502程序集以及NES的内部工作原理。对于您的街机机器,您可能最好只使用UberNES这样的模拟器,它可以自动track your highscore用于许多热门游戏。
答案 1 :(得分:2)
NES类游戏没有成就报告的标准钩子。我能想到的唯一选择如下:
这两个选项都要求您真正了解NES ROM的内部结构。
答案 2 :(得分:0)
IRQ ...转到Interrupt_requests ..他们中断一个中断......我已经阅读/看到了某个地方的代码......甚至x86也使用IRQ与各种设备通信一个简单的例子:键盘当a按下键,调用ti PIC和IRQ生成,系统知道按下哪个键,并在NES中使用相同的机械