问题标签 [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 投票
2 回答
2832 浏览

assembly - GBZ80:LD HL,(SP+e) 如何影响 H 和 C 标志?

在 Gameboy Z80 上,该操作究竟如何LD HL,(SP+e)影响 H 和 C 标志?(半进位+进位)

参考: http: //www.devrs.com/gb/files/opcodes.html

0 投票
3 回答
6000 浏览

c - GameBoy 颜色模拟器操作码自动化

我正在用 C 编写一个 GameBoy 颜色模拟器,只是为了向这个世界介绍自己,它被解释了,没有动态或静态重新编译:P

现在我正忙于用 C 代码实现所有 CPU 操作码的繁琐任务,我必须编写所有这些: http: //www.pastraiser.com/cpu/gameboy/gameboy_opcodes.html我不想从另一个模拟器中获取它们。

问题是,有什么方法可以自动编写操作码吗?也许这是一个愚蠢的问题,它会有一个愚蠢的答案,但我想尽可能少地工作。:)

0 投票
1 回答
3455 浏览

c - 使用 DMA 将图像加载到 Visual Boy Advance (VBA)

我是 C 新手;我有一个通过在线工具翻译成 .h 和 .c 文件的图像文件。C 文件包含一个由 1024 个 16 位十六进制数组成的数组,用于表示位的开/关。我想读取这个文件并使用 DMA 在屏幕上绘制图像......但我对如何做到这一点非常茫然。有人可以帮忙吗?有人知道我在说什么吗?

0 投票
4 回答
16799 浏览

debugging - 带有完整调试器的 Game Boy 模拟器?

作为我一直在回答这个关于 Pokémon Red 中故障的技术工作问题的工作的一部分,我一直在寻找一种使用标准调试器来调试 Game Boy ROM 的方法。尽管我发现的许多仿真器都支持调试,但到目前为止我还没有发现任何有用的东西。

作为背景,到目前为止,我已经尝试使用 Visual Boy Advance 的内置功能进行调试,但它们对于我正在尝试做的事情并不是特别有用。VBA 缺乏设置断点的能力,并且由于它在帧级别而不是指令级别上向前推进,因此当我真正需要它时,我无法看到代码是如何执行的。虽然 VBA 说它支持 GDB 调试,但我完全无法让它工作。我尝试按照说明为 ARM 交叉编译 GDB,但无法让 GDB 连接到模拟器(它会识别出有要连接的程序,但报告违反了协议)。我在带有 Cygwin 的 Windows 和 Ubuntu Linux 上都以类似的成功重复了这一点。我和一个朋友尝试使用 Insight/GDB,但遇到了完全相同的问题。

我也尝试使用 NO$GBA 调试器,但它拒绝为 Pokémon Red 加载我的 ROM(然后侮辱我说我无法尝试做任何事情来修复它,因为文件完全错误)。

此外,我尝试下载这个版本的 Visual Boy Advance,声称其中有一个调试器,但由于某种原因,我无法让它启用调试器。按照它的说明按 F11 没有任何效果。

我相信我已经尽职尽责地试图让调试器正常工作,但令我惊讶的是,其中没有一个工作正常。有谁知道使用标准调试技术调试 Game Boy 游戏的简单、直接的方法?我最感兴趣的是能够在内存中设置写断点(以查看哪些例程正在破坏内存的某些部分)。如果有第一手经验的人可以提供有关如何执行此操作的详细信息,我将不胜感激,因为有关该主题的在线资源似乎非常有限。

0 投票
3 回答
12096 浏览

emulation - Game Boy:什么是“半进位”?

Game Boy Z80 CPU 有一个半进位标志,我似乎找不到太多关于何时设置/清除它的信息。

到目前为止,我所理解的是,任何 8 位加法、减法、移位或旋转操作(可能还有其他操作?)将其设置为结果的第 4 位(?),并且 DAA 指令以某种方式设置/使用它。我不确定16位指令如何影响它以及它是否受到使用某些寄存器的影响。

0 投票
1 回答
939 浏览

c - C Gameboy 分离函数和主文件

我正在为一个班级作业做一个游戏男孩项目。有人告诉我,我们需要有一个单独的“函数”文件和“主”文件。这样做我会发疯的。我制作了一个头文件“myLib.h”,其中包含了“myLib.c”中函数的定义和原型。在我的主文件中,我从“myLib.c”中调用了一个函数,它可以编译,但不起作用。我已将“myLib.c”添加到我的 make 文件中。文件如下:

我的库

我的库

主程序

生成文件

0 投票
1 回答
1756 浏览

c - Zilog Z80 OP-Code 实现

我目前正在为老式的 GameBoy 开发一个模拟器,但我在理解一些基本操作代码必须如何实现时遇到了一些问题。

现在我正在实施 AND 操作;前几个(0xA0 -> 0xA3;0xA6 和 0xA7)非常简单,但寄存器 H、L 的 AND 操作有点不同。

您可以在此链接下下载 z80 的文档: um0080.pdf(第 172 页)

这里有一些例子来说明我的意思(使用伪代码)以及我所做的基本上是什么:

AND A,H(注意位移)

AND A,L(注意位掩码)

我知道所有的位操作,也知道它们的作用,但似乎我无法弄清楚为什么需要这样做。我有一些理论(如果我错了,请纠正我:-)):

我已经了解的是,寄存器 H 和 L 基本上是寄存器 HL,它是一个 16 位寄存器。由于 CPU/Bus 只能处理 8-Bit 操作,所以需要拆分;或更逻辑的建议:由于它只有一个寄存器,因此 H 和 L 的值在寄存器中被屏蔽,它们只需要彼此分开(高/低半字节?)。

如果有人能让我更清楚这一点,我将不胜感激,因为我只想拥有更多的背景知识(所有这些东西在内部是​​如何工作的),所以我知道自己在做什么对我来说非常重要。

0 投票
2 回答
513 浏览

android - Gameboy-like keys and D-Pad for Android

I wanted to make an RPG for Android 2.3 Mobile Phone and thought that the good old Gameboy had the perfect format for such games. So I want to build a "Case" with a D-Pad and a few keys and connect them with the Android Device over USB. I don't want Bluetooth, because it needs to much energy. I thought about giving the Case its own Battery Cell and maybe loading the Android Device with it. So my Question is:

How can I access the Keys of this Case from the Android Device?

0 投票
3 回答
4867 浏览

emulation - golang中的函数表vs switch

我正在用 go 编写一个简单的模拟器(我应该吗?或者我应该回到 c 吗?)。无论如何,我正在获取指令并对其进行解码。此时我有一个像 0x81 这样的字节,我必须执行正确的函数。

我应该有这样的东西吗

或类似的东西

1.哪个更好?
2.哪个更快?
3.我可以
声明一个内联函数吗?
4.我有一个cpu struct我有寄存器等。如果我有寄存器并且全部作为全局变量会更快吗?(没有struct

非常感谢您。

0 投票
1 回答
669 浏览

assembly - ARM7TDMI(GameBoy Advance)上的操作系统相关操作和模式

我想知道GBA的CPU是否可以使用通常为操作系统保留的任何功能,以及如何做到这一点。
例如,我想访问 cpu 显然支持的特权模式,但我不明白如何首先输入它(并修改要由它运行的代码),因为 gba 在用户中启动模式。
更重要的是,我想知道gba有哪些arm扩展,比如协处理器、mmu、mpu等。

我在cowbite 规范参考中读到特权模式确实存在,但没有进一步提及。