C语言中的Game Boy高级自制映像问题

C语言中的Game Boy高级自制映像问题,c,image,gba,C,Image,Gba,我制作一个自制gba游戏只是为了好玩,我遇到了一个小问题,我可以在屏幕上很好地绘制一个图像,我可以读取按键输入,当我尝试在用户按下ENTER键时显示另一个图像时,这是映射到我使用的模拟器(Visual Boy Advanced)中的开始按钮的,什么都没有发生,当我编译游戏时没有错误,所以我不知道什么是错误的,请注意我只是刚刚进入这个领域,我知道的不多,我有人知道如何让这个工作我会非常高兴:D 这是我的密码: typedef unsigned short u16; // two type defi

我制作一个自制gba游戏只是为了好玩,我遇到了一个小问题,我可以在屏幕上很好地绘制一个图像,我可以读取按键输入,当我尝试在用户按下ENTER键时显示另一个图像时,这是映射到我使用的模拟器(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;
}
typedef无符号短u16;//两种类型定义
typedef无符号长u32;
#包括“ppic.h”
#包括“ui.h”
#包括“keypad.h”
#定义REG_DISPCNT*(u32*)0x4000000
#定义模式_4 0x4
#定义BG2_启用0x400
u16*调色板=(u16*)0x5000000;
u16*视频缓冲区=(u16*)0x6000000;
无效绘图像素(整数x、整数y、无符号短整数c)
{
视频缓冲区[(y)*120+(x)]=(c);
}
内部主(空)
{
int x,y,blockX,blockY,loop;
REG_DISPCNT=模式4|BG2_启用;
用于(循环=0;循环<256;循环++)
Paletteme[loop]=ppicPalette[loop];
while(1)//永远跑
{
如果(!((*键)和键启动))
PlotPixel(x,y,uiData[y*120+x]);
对于(y=0;y<160;y++)
{
对于(x=0;x<120;x++)
{
PlotPixel(x,y,ppicData[y*120+x]);
}
}
}
返回0;
}
ui.h是我要显示的图像的头文件,
ppic.h是启动时显示的图像的头文件。

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

if条件后面的语句似乎只设置了一个像素。这是想要的效果吗?如果你说的是uiData,那是ui.h中的一个方法,它包含每个像素的数据。我想我弄错了。我的理解正确吗?如果没有按任何键,则应绘制一个单独的像素,如果按开始,则应显示
ppicData
中的数据?不,如果这是我正在做的,请纠正我,我对此有点陌生