首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GameBoy类模拟器-如何初始化GameBoy (0x8000)

GameBoy类模拟器-如何初始化GameBoy (0x8000)
EN

Stack Overflow用户
提问于 2019-03-23 04:59:25
回答 1查看 260关注 0票数 3

我目前正在编写一个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

EN

回答 1

Stack Overflow用户

发布于 2019-03-23 07:13:02

在Gameboy Classic上,只有一种方法可以初始化VRAM -用CPU指令手动复制数据。这是游戏的责任。例如,您可以在bootstrap ROM中看到以下内容

代码语言:javascript
复制
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本身不会做任何事情。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55307702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档