我目前正在编程GameBoy Classis Emulator。这是GitHub仓库(https://github.com/FelixWeichselgartner/GameBoy-Classic-Emulator)。
CPU指令似乎工作正常。我将指令与该Gameboy调试器(http://bgb.bircd.org/)的指令进行了比较。对于俄罗斯方块,im执行相同的指令。
我的问题是关于图形的。我实现了一个从正确的地址中获取图块的功能(取决于所使用的图块集)。但是我不知道如何初始化Video Ram(@地址0x8000)。我将内存中的32kB Tetris rom从地址0x0000复制到0x7FFF。因此,从0x8000开始的所有内容都不会在此处初始化。在Debugging工具中或在我的代码中,都没有将任何内容写入vram(根据cpu opcode指令)。
因此,我希望必须初始化VRAM。但是,当某些内容写入VRAM时,我无法在线找到任何资源。
所以我的问题是: 哪个Gameboy模拟器实例负责复制VRAM中的图块。
我已经尝试过的:
使用其他仿真器进行调试->这表明没有cpu指令复制到VRAM。
在Github上查看各种Gameboy模拟器->找不到任何人初始化VRAM
我有人能够帮助我,我将非常感激。
问候 schnauzbartS
答案 0 :(得分:1)
在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不会自己做任何事情。