问题标签 [game-boy-advance]

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

image - “BM6”的格式是什么?

我正在使用旧的托盘系统。当我导出图像时,它还会创建一个 15/16 色的调色板。但是当我尝试复制相同的结果时,程序无法识别我刚刚创建的图像。为了分析发生了什么,我用记事本打开了一些图像,并将它们与我的“创作”进行了比较,我注意到了一些差异。

但最有趣的是,我的图像代码的开头是“BM6”类型,而它们应该是“png”或“bmp”。我认为这是编纂的东西,但我找不到任何关于它的东西。

0 投票
0 回答
224 浏览

assembly - 使用 ASM THUMB 将值写入 GBA 上的内存

嘿,我正在做一个简单的大学项目,并为 GameBoy Advanced 制作游戏。

我一直在玩 asm,打算通过 ASM 和 THUMB 模式创建我的调色板。

我尝试使用ldr并将str内存地址(调色板内存)加载0x0500000到寄存器中并存储诸如0x253F(红色)之类的值并将其存储到调色板地址中。怎么可能做到这一点?我也尝试过使用 MOV 但也没有成功。

下面的代码编译,但它似乎不工作

我真的很感激任何帮助

0 投票
0 回答
26 浏览

makefile - Make - 依赖构建不同于显式构建

我的makefile中有一条规则:

它从不同的图像构建单个 c 文件,这些文件在 for 循环中迭代(它们是,我使用回显检查)

依赖于此的规则是

这是通过执行

如果我通过调用“make $(OW_GROUP_ONE_C)”来执行规则,一切正常,但是一旦通过另一个规则的依赖执行规则,循环似乎只是读取第一个文件。我再次使用 echo 进行检查,但循环累积列表中的所有文件。我不知道我的交易是什么,该工具(GRIT - GBA 光栅图像变换器)应该能够处理这个问题,但是如果它以这种方式工作,那么显式调用规则之间肯定会有区别......

提前感谢您的任何提示!

0 投票
2 回答
85 浏览

c - 如何在两个 2D 对象的每次碰撞中移除一个生命?

我正在编写一个有趣的游戏并更熟悉 C 和 GBA 模式 3。不过,我遇到了一个问题。

我在屏幕上有这两个块,一个是好人,另一个是坏人。当好人与坏人相撞时,它应该消除生命。这就是问题所在。

我在运行游戏的while循环中有这个:

生命确实会下降,但是在玩家与敌人接触时会夺走很多生命。也就是说,在接触的过程中,生命下降得非常快,每一次碰撞我都想删除一个,我该如何做到这一点?

0 投票
1 回答
64 浏览

c - gba 中的初始值设定项无效

我是 Lino,我是这个社区的新手。基本上,我试图将数据保存到 GBA 的 GAMEPAK_RAM 中,并且指针不起作用。代码行是这样的:

错误是这样的:

有人可以帮助我吗?如果需要其他信息,请告诉我

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

compression - 为什么要结合霍夫曼和lz77?

我正在对 Gameboy Advance 的游戏进行逆向工程,我注意到原始开发人员编写的代码有两个系统调用来使用 Huffman 和 lz77(按此顺序)解压缩关卡。

但是为什么要使用霍夫曼+ lzZ7?这种方法有什么好处?

0 投票
1 回答
205 浏览

c++ - 模拟 GBA 的半进位标志

我看过一些关于检测 GBA 的 HALF CARRY 标志更改的文档。我正在用 C++ 编写一个模拟器,当我减去两个不同的数字时,我很难思考如何检测 HALF CARRY 标志的变化。(这在 shift 和 rotate 操作中也应该很明显,ADD 在 Stack Overflow 和不同的指南上都有很好的记录)。

到目前为止,我有这个功能可以检测一个操作是否触发了 HALF CARRY 设置(我很肯定这仅适用于添加):

谢谢!

0 投票
0 回答
387 浏览

android - 对“jniRegisterNativeMethods”Android NDK 的未定义引用

我正在尝试从可用的 NDK 项目构建 .so 文件。undefined reference to 'jniRegisterNativeMethods'但是当我尝试使用 cmd 编译代码时遇到 错误ndk-build

在这里,我发布了该执行的块

libgba.so如果您需要更多信息来调查此问题,我希望它构建一个名为 Let me know 在评论中的 .so 文件。提前致谢。

0 投票
1 回答
3223 浏览

c - ARM 汇编 - 添加两个寄存器

我试图通过取消引用前两个寄存器,然后将结果存储在第三个寄存器中,在 ARM Assembly 中将两个寄存器添加在一起。

目前我有3个变量和一个函数,如下所示;

这个函数执行以下操作

对于前两个寄存器,我试图取消引用它们,将它们加在一起并将结果存储在第三个寄存器中。这是我的汇编代码;

当我打印出来时,答案是 0。我的问题是,当我在汇编中执行前两行时,是否ldr r4, [r0] 被替换ldr r4, [r1]为导致输出为 0 的?他们每个人都需要存储在自己的寄存器中吗?或者我只是基本上打印出总数(r2)?