C中的Game Boy Advance Homebrew图像问题

时间:2014-05-23 08:04:34

标签: c image gba

我正在制作一个家庭酿造gba游戏只是为了好玩而且我遇到了一个小问题,我可以在屏幕上画出一个图像很好,我可以读取键输入,期待当我当用户按下ENTER时,尝试显示不同的图像,这是映射到我正在使用的模拟器中的START按钮(Visual Boy Advanced)没有任何反应,编译游戏时没有错误,所以我不知道是什么问题,请注意我刚刚进入这个并且我不太了解,我知道如何让它工作我会非常高兴: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是我在启动时显示的图像的头文件。

1 个答案:

答案 0 :(得分:0)

如果if语句中的条件为真,则不会在xy坐标上进行循环,而只会设置一个像素。此外,由于缺少ppicData,因此无论条件如何,都会执行下面的循环(绘制else的内容)。因此这一个像素被覆盖。