Dom*_*mra 4 testing unit-testing emulation
我正在编写一个gameboy模拟器,并且正在努力确保操作码被正确模拟.某些操作设置了标志寄存器,很难跟踪标志是否设置正确,以及在哪里.
我想写一些测试框架,但认为值得在这里寻求帮助.目前我看到几个选项:
用几个测试用例对每个操作码进行单元测试.问题是有256个8位操作码和50个(不记得确切数字)16位操作码.这需要很长时间才能正常完成.
编写某种日志记录框架,记录每个操作的堆栈跟踪,并将其与其他已建立的仿真器进行比较.这样做很快,并且可以快速概览出现了什么问题.日志文件看起来有点像这样:
...
PC = 212 Just executed opcode 7c - Register: AF: 5 30 BC: 0 13 HL: 5 ce DE: 1 cd SP: ffad
PC = 213 Just executed opcode 12 - Register: AF: 5 30 BC: 0 13 HL: 5 ce DE: 1 cd SP: ffad
...
Run Code Online (Sandbox Code Playgroud)
缺点是我需要修改另一个模拟器的源以输出相同的表单.并且不能保证操作码是正确的,因为它假定其他仿真器是.
我还应该考虑什么?
如果它有帮助,这是我的代码:https://github.com/dbousamra/scalagb
你可以使用已经建立的测试roms.我会推荐Blargg的测试roms.你可以从这里得到它们:http://gbdev.gg8.se/files/roms/blargg-gb-tests/.
对我来说最好的想法是你已经提到的:
我认为这个有更多的优点:
| 归档时间: |
|
| 查看次数: |
2327 次 |
| 最近记录: |