【问题标题】:How can I display sprites on screen on the Nintendo DS using nflib?如何使用 nflib 在 Nintendo DS 的屏幕上显示精灵?
【发布时间】:2021-03-29 03:19:03
【问题描述】:

我在网上找到的文档很模糊。我发现唯一一个不错的论坛是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;
}

【问题讨论】:

    标签: c nintendo-ds libnds


    【解决方案1】:

    你没有创建精灵。

    使用NF_CreateSprite(),例如:

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

    创建精灵后,更新oam。

    【讨论】:

      猜你喜欢
      • 2010-09-05
      • 2010-09-13
      • 1970-01-01
      • 2017-04-25
      • 2012-07-07
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多