问题标签 [gameboy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
653 浏览

emulation - Difference between RL n and RLA CPU instructions

According to the GameBoy manual, these instructions are as follows:

rla 17 4 000c rotate akku left through carry

rl r CB 1x 8 z00c rotate left through carry

However, I'm having hard time understanding the difference between them from the implementation point of view. Can someone clarify?

0 投票
0 回答
252 浏览

c - Game Boy GPU 和任天堂徽标

我正在尝试开发自己的 GB 模拟器,但在实现 GPU 时遇到了一些麻烦。我决定开始打印任天堂的启动标志,但没有成功。显然,问题是字节顺序,根据这个已经解决的问题:How to decode the Nintendo logo from gameboy?. 但是,我不明白对十六进制字符串进行排序所遵循的标准。有人可以请赐教吗?整个模拟器都需要这个排序过程吗(我的意思是,对于实际的游戏模拟。我在阅读 CPU 手册时没有注意到它)?

0 投票
1 回答
2304 浏览

intel - 带有 Z80 处理器的任何东西都可以运行 Gameboy 游戏吗?

由于 Gameboy 的处理器 LR35902 是 Z80 和 Intel 8080 的混合体,请记住,Z80 和 Intel 8080 的设计基本上是交叉兼容的,任何具有 Z80 处理器的东西都可以运行以下操作码吗?适用于LR35902?我想知道不是因为我希望用我的 TI84 在自习室玩口袋妖怪。

编辑:我知道我必须重新编程控件,可能还有游戏访问 RAM 的方式,但我宁愿这样做,也不愿移植整个游戏。

0 投票
2 回答
3320 浏览

gpu - GPU/PPU 计时如何在 Gameboy 上运行?

我正在编写一个游戏机模拟器,我已经开始实现图形了。但是,就时序/时钟周期而言,我不太清楚它是如何与 cpu 一起工作的。CPU 是否执行一定数量的周期(如果有的话)然后将其交给 GPU?还是游戏机总是处于 hblank/vblank 状态,而 GPU 在它们之间使用 CPU?我找不到任何可以帮助我的信息,只有如何使用控制寄存器。

0 投票
0 回答
135 浏览

c - GBDK -- 无法检查“If 语句”条件

我是 C 语言编程的新手。我只是决定把它捡起来玩;我有 Javascript、Java 和其他一些语言的爱好者经验。无论出于何种原因,我决定在为 Gameboy Classic 开发程序的背景下学习 C。所以我安装了GBDK,我知道它已经过时了。它带有一个 LCC 编译器。我使用 VisualBoy Advance 来模拟我的程序。

我正在尝试创建一个简单的 Breakout 克隆。到目前为止,我已经成功地使用用户输入对桨进行了编程。但是,我遇到了球的问题:它没有检查与桨的碰撞。在其他网站上进行了大量测试、研究和询问后,我仍然无法解决这个问题。

这是完整的代码:

问题在于一个“if 语句”。具体来说,:

健康)状况。它只是不工作。我换了一个在程序的其余部分根本没有改变的测试变量;失败。它工作的唯一方法是如果我硬编码一个值(例如 96)。但是,这显然很糟糕,因为无论何时桨移动它都不会改变。

我完全被这个问题难住了。我是 C 新手,但这似乎是一件简单的事情。我的编译器坏了吗?我是不是在无意中做错了什么?请记住,这是使用 Gameboy Dev Kit 设计的,模拟为经典的 Gameboy 游戏。

任何帮助表示赞赏。谢谢!

已解决:奇怪的解决方案。我没有将 24 添加到paddleX,而是减去 -24。无论出于何种原因,这都按预期工作。

0 投票
1 回答
389 浏览

c - 在 C 中定义宏时遇到问题 - 初始值设定项元素不是常量

我正在为 Game Boy Advance 编程,我需要为每个区域(一堆 RAM 和 ROM)列出内存位置。

但是,在头文件中定义宏时,编译器指出在一个宏中,error: initializer element is not constant.

在此处输入图像描述

这是我从 Tonc 借来的完整头文件(大约 90 行):

但是,我最初的代码中没有这两行:

#define GAMEPAK_RAM 0x0E000000

#define save_mem ((u8*)GAMEPAK_RAM)

如果你注意到了,我故意定义save_mem几乎完全一样vid_mem,只是我需要将其转换为,u8因为 RAM 一次只能读/写 8 位。

然后我想如果有错误,那么两条线都应该有错误。然而,只有save_mem被抓住了error: initializer element is not constant。(我个人注释掉了这save_mem条线,看看是否vid_mem会有这个问题。)

另外,我已经在为 GBA 编写游戏,而且我已经多次使用 vid_mem,所以这让我更加困惑。

我想知道为什么会发生这种情况以及如何解决它。(很确定我的编译器很好)

提前致谢。

编辑:

这是我使用save_mem宏的代码:

0 投票
1 回答
199 浏览

c - 获取游戏男孩 ROM 映像

我已经开始用 C 语言为游戏男孩开发一个非常简单的模拟器,我已经研究过 Z80 的 cpu 和相关的操作码,但我心中有一个问题我从未找到答案。当我使用 fopen(filename,"rb") 打开 ROM 映像时,如何获得模拟指令?我尝试过这样做: fp = fopen(filename,"rb"); fread(buf,sizeof(buf),1,fp);但我不知道 Game Boy 的 ROM 是如何构成的。有人可以解释一下如何从 ROM 中获取指令及其结构吗?

0 投票
1 回答
278 浏览

c++ - GameBoy Classis 模拟器 - 如何初始化 VRAM (0x8000)

我目前正在编写一个 GameBoy Classis 模拟器。这是 GitHub-repo ( https://github.com/FelixWeichselgartner/GameBoy-Classic-Emulator )。

CPU指令似乎工作正常。我将这些指令与这个 gameboy 调试器 ( http://bgb.bircd.org/ ) 的指令进行了比较。对于俄罗斯方块即时执行相同的指令。

我的问题是关于图形的。我已经实现了一个从正确地址获取图块的函数(取决于使用的图块集)。但是我不知道如何初始化视频 RAM(@地址 0x8000)。我将内存中的 32kB 俄罗斯方块 rom 从地址 0x0000 复制到 0x7FFF。因此,从 0x8000 开始的所有内容都没有在这里初始化。在调试工具和我的代码中都没有写入 vram 的内容(来自 cpu 操作码指令)。

因此,我预计我将不得不初始化 VRAM。但是,当某些内容写入 VRAM 时,我无法在线找到任何资源。

所以我的问题是:gameboy 模拟器的哪个实例负责复制 VRAM 中的图块。

我已经尝试过的:

使用另一个模拟器进行调试-> 这表明没有 cpu 指令复制到 VRAM。

查看 Github 上的各种游戏机模拟器 -> 找不到任何人初始化 VRAM

我有人能够帮助我,我将非常感激。

问候 schnauzbartS

0 投票
2 回答
270 浏览

c - "\r" 从字面上打印回车符号

我正在自学 C 编程语言。除了我在设计 Gameboy 游戏(使用 GBDEK)的背景下学习。

我正在制作一个简单的 Breakout 克隆,并决定使用 printf() 函数来显示玩家的得分。当玩家的分数增加时,显示的分数也应该有明显的变化。以下是相关代码:

游戏开始时,控制台会打印一堆空行来定位分数。当分数改变时(在这种情况下,当球击中桨时),它应该返回到行的开头并打印一个新的数字。但是,它会打印回车符号(一个奇怪的 CR 符号)并且不会删除之前的乐谱。这是一个屏幕截图,向您展示我的意思。

在此处输入图像描述

我不确定如何解决这个问题。帮助?

0 投票
0 回答
240 浏览

c# - 如何在 GameBoy Color 中获得正确的颜色?

我写GameBoy Color Emulator是为了好玩和学习。为Gameboy 经典版生成颜色效果很好,但在彩色版模拟器中生成的颜色不好。

我声明了 BPI, BPD 和 OPI, OPD。我设置了从背景内存和精灵中提取颜色,并像在经典版本中一样将其更改为十六进制颜色。在某些情况下,某些元素具有正确的颜色。

BPI、BPD 和 OPI、OPD

从内存中写入BPI、BPD、OPI、OPD

从内存中读取BPI、BPD、OPI、OPD

更新背景

更新精灵

更新窗口

更新图形

获取 GBCColor

它应该如何工作菜单: https
://photos.app.goo.gl/M2QTHVTzoPS1jiKS9 就像他们现在 所做的那样: https
: //photos.app.goo.gl/GW7SCm3ZXHyxRikGA 第一个游戏男孩颜色的房间: https://photos .app.goo.gl/BNHDgmuPw5j1c9Lq6
在我的模拟器第一个房间: https ://photos.app.goo.gl/934tm2X1jEazkcPK7


我关心最简单的解决方案提前谢谢