1

我在网上找到的文档很模糊。我发现唯一一个很好的论坛是https://gbatemp.net/threads/ds-programming-for-newbies.322106/page-8#post-4445495。我按照屏幕上的代码,制作了一个精灵(16 x 16, 256 调色板)并编写了代码。精灵似乎没有显示,我得到的只是在我的物理 DSi 上顶部屏幕为黑色,底部屏幕为白色。Desmume 抛出“ROM 标头无效。对于提供的文件大小,设备大小已增加”。我错过了什么吗?因为我正在尝试为一个 15 岁的控制台编写代码,所以我真的找不到我缺少的东西,所以如果有人知道我做错了什么,请告诉我。nitrofiles 文件夹下的文件名为“stickman.img”和“stickman.pal”。这是我的代码:

#include <gl2d.h>
#include <nds.h>
#include <nf_lib.h>
#include <stdio.h>

int main(int argc, char **argv){
    NF_Set2D(0, 0);
    NF_SetRootFolder("NITROFS");

    NF_InitSpriteBuffers();
    NF_InitSpriteSys(0);
    
    NF_LoadSpriteGfx("stickman", 0, 16, 16);
    NF_LoadSpritePal("stickman", 0);

    NF_VramSpriteGfx(0, 0, 0, false);
    NF_VramSpritePal(0, 0, 0);
    while(1) {
        NF_SpriteOamSet(0);
        swiWaitForVBlank();
        oamUpdate(&oamMain);
    }
    return 0;
}
4

1 回答 1

0

你没有创建精灵。

使用NF_CreateSprite(),例如:

NF_CreateSprite(0, 0, 0, 0, 8, 16);

创建精灵后,更新 oam。

于 2021-11-04T15:21:50.813 回答