问题标签 [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.
image - “BM6”的格式是什么?
我正在使用旧的托盘系统。当我导出图像时,它还会创建一个 15/16 色的调色板。但是当我尝试复制相同的结果时,程序无法识别我刚刚创建的图像。为了分析发生了什么,我用记事本打开了一些图像,并将它们与我的“创作”进行了比较,我注意到了一些差异。
但最有趣的是,我的图像代码的开头是“BM6”类型,而它们应该是“png”或“bmp”。我认为这是编纂的东西,但我找不到任何关于它的东西。
assembly - 使用 ASM THUMB 将值写入 GBA 上的内存
嘿,我正在做一个简单的大学项目,并为 GameBoy Advanced 制作游戏。
我一直在玩 asm,打算通过 ASM 和 THUMB 模式创建我的调色板。
我尝试使用ldr
并将str
内存地址(调色板内存)加载0x0500000
到寄存器中并存储诸如0x253F
(红色)之类的值并将其存储到调色板地址中。怎么可能做到这一点?我也尝试过使用 MOV 但也没有成功。
下面的代码编译,但它似乎不工作
我真的很感激任何帮助
makefile - Make - 依赖构建不同于显式构建
我的makefile中有一条规则:
它从不同的图像构建单个 c 文件,这些文件在 for 循环中迭代(它们是,我使用回显检查)
依赖于此的规则是
这是通过执行
如果我通过调用“make $(OW_GROUP_ONE_C)”来执行规则,一切正常,但是一旦通过另一个规则的依赖执行规则,循环似乎只是读取第一个文件。我再次使用 echo 进行检查,但循环累积列表中的所有文件。我不知道我的交易是什么,该工具(GRIT - GBA 光栅图像变换器)应该能够处理这个问题,但是如果它以这种方式工作,那么显式调用规则之间肯定会有区别......
提前感谢您的任何提示!
c - 如何在两个 2D 对象的每次碰撞中移除一个生命?
我正在编写一个有趣的游戏并更熟悉 C 和 GBA 模式 3。不过,我遇到了一个问题。
我在屏幕上有这两个块,一个是好人,另一个是坏人。当好人与坏人相撞时,它应该消除生命。这就是问题所在。
我在运行游戏的while循环中有这个:
生命确实会下降,但是在玩家与敌人接触时会夺走很多生命。也就是说,在接触的过程中,生命下降得非常快,每一次碰撞我都想删除一个,我该如何做到这一点?
c - gba 中的初始值设定项无效
我是 Lino,我是这个社区的新手。基本上,我试图将数据保存到 GBA 的 GAMEPAK_RAM 中,并且指针不起作用。代码行是这样的:
错误是这样的:
有人可以帮助我吗?如果需要其他信息,请告诉我
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
宏的代码:
compression - 为什么要结合霍夫曼和lz77?
我正在对 Gameboy Advance 的游戏进行逆向工程,我注意到原始开发人员编写的代码有两个系统调用来使用 Huffman 和 lz77(按此顺序)解压缩关卡。
但是为什么要使用霍夫曼+ lzZ7?这种方法有什么好处?
c++ - 模拟 GBA 的半进位标志
我看过一些关于检测 GBA 的 HALF CARRY 标志更改的文档。我正在用 C++ 编写一个模拟器,当我减去两个不同的数字时,我很难思考如何检测 HALF CARRY 标志的变化。(这在 shift 和 rotate 操作中也应该很明显,ADD 在 Stack Overflow 和不同的指南上都有很好的记录)。
到目前为止,我有这个功能可以检测一个操作是否触发了 HALF CARRY 设置(我很肯定这仅适用于添加):
谢谢!
android - 对“jniRegisterNativeMethods”Android NDK 的未定义引用
我正在尝试从可用的 NDK 项目构建 .so 文件。undefined reference to 'jniRegisterNativeMethods'
但是当我尝试使用 cmd 编译代码时遇到
错误ndk-build
在这里,我发布了该执行的块
libgba.so
如果您需要更多信息来调查此问题,我希望它构建一个名为 Let me know 在评论中的 .so 文件。提前致谢。
c - ARM 汇编 - 添加两个寄存器
我试图通过取消引用前两个寄存器,然后将结果存储在第三个寄存器中,在 ARM Assembly 中将两个寄存器添加在一起。
目前我有3个变量和一个函数,如下所示;
这个函数执行以下操作
对于前两个寄存器,我试图取消引用它们,将它们加在一起并将结果存储在第三个寄存器中。这是我的汇编代码;
当我打印出来时,答案是 0。我的问题是,当我在汇编中执行前两行时,是否ldr r4, [r0]
被替换ldr r4, [r1]
为导致输出为 0 的?他们每个人都需要存储在自己的寄存器中吗?或者我只是基本上打印出总数(r2)?