我正在制作一个自制的gba游戏,只是为了好玩,我遇到了一个小问题,我可以在屏幕上画一个图像fine,我可以读取键输入,除了当用户按下映射到我正在使用的Emulator(Visual Boy Advanced(中的START按钮的ENTER时,我尝试显示不同的图像时,什么都没发生,当我编译游戏时没有错误,所以我不知道出了什么问题,请注意,我刚刚进入这个领域,我知道的不多,我有人知道如何让它发挥作用,我会很高兴:D
这是我的代码:
typedef unsigned short u16; // two type definitions
typedef unsigned long u32;
#include "ppic.h"
#include "ui.h"
#include "keypad.h"
#define REG_DISPCNT *(u32*)0x4000000
#define MODE_4 0x4
#define BG2_ENABLE 0x400
u16* paletteMem = (u16*)0x5000000;
u16* videoBuffer = (u16*)0x6000000;
void PlotPixel(int x,int y, unsigned short int c)
{
videoBuffer[(y) *120 + (x)] = (c);
}
int main(void)
{
int x, y, blockX, blockY, loop;
REG_DISPCNT = MODE_4 | BG2_ENABLE;
for(loop = 0; loop < 256; loop++)
paletteMem[loop] = ppicPalette[loop];
while (1) // run forever
{
if(!((*KEYS) & KEY_START))
PlotPixel(x,y,uiData[y*120+x]);
for(y = 0; y < 160; y++)
{
for(x = 0; x < 120; x++)
{
PlotPixel(x,y,ppicData[y*120+x]);
}
}
}
return 0;
}
ui.h是我想要显示的图像的头文件,ppic.h是我在启动时显示的图像的头文件。
如果if
语句中的条件为true,则不会在x
和y
坐标上进行循环,而是只设置一个像素。此外,由于缺少else
,所以不管条件如何,都执行下面的循环(绘制ppicData
的内容(;因此这一个像素被覆盖。