问题标签 [gbdk]

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 回答
332 浏览

assembly - GBDK 编译器中的二次幂乘法错误

我目前正在开发一个gameboy模拟器并测试我的模拟器的正确性,我正在使用GBDK为我的模拟器编译c程序。

我注意到编译器(如预期的那样)通过旋转来优化乘法与常量的乘法,这些常量是 2 的幂。但是,对于给定的功率,它似乎不会产生正确的旋转量。

例如以下非常简单的程序:

生成以下程序集:

对我来说这似乎是不正确的,因为 RR 指令实际上是通过进位标志旋转的,有效地使其成为 9 位旋转。这意味着应该有一个额外的旋转来产生正确的结果,而不是当前 (0x40) 的错误结果。

可视化:

谁能验证这确实是GBDK附带的SDCC编译器中的一个错误?我也对旋转后使用 and 指令感兴趣。

使用来自 sourceforge 的最新 (3-2.93) 版本的 GBDK for windows。

0 投票
1 回答
260 浏览

c - 在 GBDK C 项目中包含静态库 (GBExtended)

我想在我的游戏中使用GBExtended 库,但我很难理解如何包含该库。

我可以看到 GBExtended 库(至少来自 loderunner 示例源)包含目录includes/lib/并且src/我需要包含的文件是lib/gbext.lib.

我假设您必须根据需要在文件中包含该库:

您必须将哪些标志传递给lcc编译器才能包含这些库?我无法从示例中识别出这一点。

0 投票
1 回答
414 浏览

c - GBDK C 中 typedef 结构的前向声明

我正在使用 GBDK C 为原始的 Game Boy 创建游戏,但遇到了一个小问题。我游戏中的每个房间都需要有不同portals的 ,但每个房间都portal需要引用一个房间。这是代码的缩减版:

关于如何实现这一目标的任何建议?我尝试在文件顶部添加前向声明,struct Portal;但没有帮助。


使用以下代码:

给我这个错误:

0 投票
0 回答
115 浏览

c - 在 C 中连接字符串和字符文字

在我的代码中,我定义了一些编译器常量,如下所示:

(这些可能是字符,整数,等等......)

我想以两种方式使用它们,一种是在字符串文字中,其次是在 switch 语句中。

我遇到的问题是我正在混合类型并且收到编译器警告。

有什么方法可以让这两种情况都适用吗?

0 投票
1 回答
274 浏览

sdcc - 在 ASM 中为 SDCC/LCC 编译字符串文字

我正在尝试在 ASM 中为 GBDK 的 LCC 编写字符串文字。我可以编写每个单独的字符并且编译器工作正常。

但是,当我尝试将字符组合成一个字符串以使其更具可读性时:

我得到一个编译错误:

有没有办法解决这个问题?

版本信息

0 投票
0 回答
213 浏览

c - 如何在 Game Boy 中显示 Tilemap

我正在尝试使用 Game Boy Developer Kit 显示此图像,但在运行模拟器时没有看到它显示

在此处输入图像描述

我使用的代码是这个

我在这里为同一个项目创建了一个要点

0 投票
1 回答
75 浏览

c - Makefile 输出到子文件夹

我正在为 GameBoy 游戏设置项目,我希望将文件输出到项目的子文件夹而不是根目录。在文件名前面添加文件夹名似乎不起作用,我在网上找到的任何建议也不起作用。

这是我目前拥有的makefile。

谢谢。

0 投票
1 回答
364 浏览

c - SDCC / GBDK,将结构数组传递给函数

我正在尝试将一对结构数组传递给 C 中的函数。

我必须使用 SDCC 编译器,因为我正在使用 GBDK 为 Gameboy 进行编译。

当我传递结构数组时,会出现如下所示的错误,但是,如果我完全取出函数定义并剪切并粘贴整个函数体来代替函数调用,那么代码将编译并顺利运行。

为简洁起见,我只包括相关的代码。

当我尝试使用 GBDK 和 SDCC 编译器进行编译时,出现以下错误:

当我删除对函数的调用,并简单地剪切和粘贴完整的函数体来代替函数调用时,它就可以顺利编译,我得到一个漂亮的随机游戏小贴图。

可以在此处看到图像,因为我没有图像代表:

测试游戏画面

0 投票
2 回答
270 浏览

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

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

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

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

在此处输入图像描述

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

0 投票
0 回答
288 浏览

c - GBDK C-Compiler Parsing Errors:为什么不让我在这些特定的地方声明变量?

我目前正在学习 C,以便使用 GBDK 库和 C 编译器对原始 Game Boy 进行编程。无论出于何种原因,每当我尝试在主函数的某些部分中声明变量以及尝试在其他函数中声明变量时,C 编译器都会继续遇到解析器错误。这可能是一个问题,因为没有足够的内存空间来存储这些变量,所以解析器创建了最大数量的变量..?我不知道。

我试图在错误日志指示的行中使用不同的数据类型来解决问题(见下文)。我也试图移动声明这些变量的位置,但无济于事。 编辑:更具体地说,我改变了一些变量的声明顺序,但它只交换了解析错误所说的有问题的标记。这个问题肯定与声明的顺序有关,但只是在声明了一定数量的变量之后才发生。

这是我的源代码:

'''

'''

这是我在尝试编译时不断进入 Windows 命令控制台的错误日志:

'''

'''

当前对该代码的期望只是将动画精灵放在屏幕上,该精灵由运行游戏的任何模拟器分配给 Game Boy D-Pad 的任何键移动。但是,我什至无法判断它是否会有正确的输出,因为它甚至无法正确解析。任何帮助,将不胜感激。