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

标签 c gameboy

我是 C 的新手;我有一个通过在线工具翻译成 .h 和 .c 文件的图像文件。 C 文件包含 1024 个 16 位十六进制数的数组,用于表示位的开/关。我想读取此文件并使用 DMA 在屏幕上绘制图像……但我对如何执行此操作一筹莫展。有人可以帮忙吗?有谁知道我在说什么?

最佳答案

要在屏幕上绘制图像,请使用 DMA[3]。这是 DMA 的图像 channel 3。

这是在 .h 文件中设置 DMA 的方式: http://nocash.emubase.de/gbatek.htm#gbadmatransfers

然后使用 DMA 绘制图像:

#######include image.h 

DMA[3].src = (specify your image source here, where you're drawing from)

DMA[3].dst = (where you're drawing pixels to)

在您的场景中,我认为您在源代码中指明了文件的名称。

请记住,您正在使用 POINTERS 指向 src 和 dst 的图像。

DMA[3].cnt = (how many times you want to do it) | flag1 | flag2...

这里有一些标志:
DMA_SOURCE_FIXED 意味着您一遍又一遍地从同一个像素绘制。如果这是你想要的,那么在 cnt 中打开这个位。
DMA_DESTINATION_FIXED 适用于您一遍又一遍地绘制到同一像素。如果这是你想要的,那么在 cnt 中打开这个位。

否则,DMA_SOURCE_INCREMENTDMA_DESTINATION_INCREMENT 是默认打开的(如果没有,您可以在 cnt 中打开它们)。

这是我在 VBA 中使用的,所以如果这不能回答您的问题,我很抱歉(我对 C 也有点缺乏经验...)。

@Michael 是的,我是说 Visual Boy Advance

关于c - 使用 DMA 将图像加载到 Visual Boy Advance (VBA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6639134/

相关文章:

c - 函数指针的问题

c - 为什么在这个 switch 语句中匹配 default 大小写?

c - 在 C/Gameboy 编程中使用两个数组

emulation - golang 中的函数表与 switch

z80 - Gameboy 处理器 LR35902 操作码 0x08 含义

c - 无法在 C 中定义宏 - Initializer 元素不是常量

mysql - 通过 Structured Con 在 C/MySQL 中的 SegFaults

C 编程 - 允许/确定/检查整数 "space (&#32)"输入

c++ - 为什么分配给堆栈中的局部变量的内存比 C++ 中所需的多?

c - 带有系统寄存器和中断的 GameBoy 编译器