使用 DMA 将图像加载到 Visual Boy Advance (VBA)
我是 C 语言新手;我有一个通过在线工具翻译成 .h 和 .c 文件的图像文件。 C 文件包含 1024 个 16 位十六进制数的数组,用于表示位的开/关。我想读取这个文件并使用 DMA 在屏幕上绘制图像...但我非常不知道如何做到这一点。有人可以帮忙吗?有人知道我在说什么吗?
I am new to C; I have an image file translated by means of online tools into a .h and .c file. The C file contains an array of 1024 16 bit hexadecimal numbers, used to denote on/off of bits. I want to read this file and draw the image onscreen using DMA...but I'm very much at a loss as to how to do this. Can anybody out there help? Does anyone even know what I'm talking about?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
要在屏幕上绘制图像,请使用 DMA[3]。这是图像 DMA 的通道 3。
这是在 .h 文件中设置 DMA 的方法:
http://nocash.emubase.de/gbatek.htm#gbadmatransfers
然后进行绘制使用 DMA 的图像:
在您的场景中,我认为您在源中指明了文件的名称。
请记住,您正在使用指向 src 和 dst 图像的指针。
以下是一些标志:
DMA_SOURCE_FIXED
表示您一遍又一遍地从同一像素进行绘制。如果这是您想要的,请在 cnt 中打开此位。DMA_DESTINATION_FIXED
适用于您一遍又一遍地绘制同一像素的情况。如果这是您想要的,请打开 cnt 中的该位。否则,
DMA_SOURCE_INCRMENT
和DMA_DESTINATION_INCRMENT
默认情况下处于打开状态(如果没有,您也可以在 cnt 中打开它们)。这是我用于 VBA 的,所以如果这不能回答你的问题,我很抱歉(我对 C 也缺乏经验......)。
@Michael 是的,我的意思是 Visual Boy Advance
To draw an image onscreen, use DMA[3]. This is channel 3 of DMA for images.
This is how you set up DMA in a .h file:
http://nocash.emubase.de/gbatek.htm#gbadmatransfers
And then to draw an image using DMA:
In your scenario, I think you indicate the name of the file in your source.
Keep in mind you're using POINTERS to images for src and dst.
Here are some flags:
DMA_SOURCE_FIXED
means you draw from the same pixel over and over again. If this is what you want, then turn this bit on in cnt.DMA_DESTINATION_FIXED
applies that you're drawing TO the same pixel over and over again. If this is what you want, then turn on this bit in cnt.Otherwise,
DMA_SOURCE_INCREMENT
andDMA_DESTINATION_INCREMENT
are on by default (if not, you can turn them on in cnt anyway).This is what I used for VBA, so I'm sorry if this does not answer your question (I'm kind of inexperienced with C as well...).
@Michael Yes, I mean the Visual Boy Advance