一个多模拟器的 Gameboy 追踪器

主要观点:作者多年来断断续续开发 Gameboy 模拟器,调试过程中使用 blargg 套件等测试 ROM,但测试失败时难以定位 bug。为此添加了dump()函数,后又编写了gbtracer程序,通过dlopen模拟器并运行记录状态到临时文件,利用模拟器中的一些特定函数来实现,如gbtracer_set_*函数在模拟器中为空但在追踪器中有定义,gbtracer_set_pc时追踪器写入临时文件,输出格式可配置且无需重新编译模拟器,示例展示了其运行效果,但需将模拟器构建为共享对象并使用特定标志。
关键信息

  • 多年开发 Gameboy 模拟器且都有问题。
  • 添加dump()函数及gbtracer程序。
  • 相关函数在模拟器和追踪器中的定义及作用。
  • 临时文件记录状态的格式及内容。
  • 需构建共享对象的要求。
    重要细节
  • main.cpp中添加的函数用于向追踪器提供模拟器状态。
  • gbtracer.c中定义的函数用于处理状态记录和输出格式。
  • 示例展示了gbtracer运行后的输出内容。
  • 提到相关的gbit用于差分测试。
阅读 6
0 条评论