我目前正在编写一个GameBoy类仿真器。这是GitHub-repo (https://github.com/FelixWeichselgartner/GameBoy-Classic-Emulator)。
CPU指令似乎工作正常。我将这些指令与这个游戏男孩调试器(http://bgb.bircd.org/)的指令进行了比较。对于俄罗斯方块,我正在执行相同的指令。
我的问题是关于图形的。我已经实现了一个函数,它从正确的地址获取瓦片(取决于使用哪个瓦片集)。然而,我不知道如何初始化Video Ram (@ adress 0x8000)。我将内存中的32kB俄罗斯方块rom从地址0x0000复制到0x7FFF。因此,从0x8000开始的所有内容都不会在这里初始化。无论是在调试工具中,还是在我的代码中,都没有写入vram的内容(来自cpu操作码指令)。
因此,我预计我将不得不初始化VRAM。然而,当一些东西被写入VRAM时,我在网上找不到任何资源。
所以我的问题是:哪个游戏男孩模拟器的实例负责复制VRAM中的磁贴。
我已经尝试过了:
使用另一个模拟器->进行调试这告诉我没有任何cpu指令复制到VRAM中。
查看Github ->上的各种游戏男孩模拟器,找不到任何人初始化内存
如果有人能帮助我,我将非常感激。
问候schnauzbartS
发布于 2019-03-23 07:13:02
在Gameboy Classic上,只有一种方法可以初始化VRAM -用CPU指令手动复制数据。这是游戏的责任。例如,您可以在bootstrap ROM中看到以下内容
XOR A ; $0003 Zero the memory from $8000-$9FFF (VRAM)
LD HL,$9fff ; $0004
Addr_0007:
LD (HL-),A ; $0007
BIT 7,H ; $0008
JR NZ, Addr_0007 ; $000a在Gameboy Color上,还有另一种写入VRAM的方式- DMA。但是,再说一次,游戏必须明确地触发它。Gameboy本身不会做任何事情。
https://stackoverflow.com/questions/55307702
复制相似问题