スプライトが全く分からん。3
それとなく分かってきたです。
ピコピコとアニメーションさせてパッドで画面移動処理まで。
NDS sprite sample program.
piyo move test NDS
元ネタはkuran_kuranさんが昔書かれたファミコン用デモ。
多少の改変を含みつつC言語に起こしたものです。
↓
案外覚えてるものですね。>6502アセンブラ
sbc の前に sec したり、adc の前に clc してる訳とか一瞬思い出せなかったのは秘密ですが。(ぉ
以下ソースです。
グラフィックリソースが無いとビルドできないのでごめんなさい。
スプライトはこんな感じで使うという参考になればと。
そのうち場所を確保してプロジェクトをアーカイブしてアップするつもりです。
一夜漬けもいいとこで正直な話、イマイチ分かってないです。
grit ファイルは akkera102 さんのを参考に(というかそのまま(爆))、
Makefile は example の simple のものを流用ですし(汗)。
main.c
/*--------------------------------------------------------------------------------- NDS sprite sample program. piyo move test NDS Version 1.00 Oct 26, 2009 By.REGEKATSU ---------------------------------------------------------------------------------*/ #include <nds.h> #include "piyo.h" //SET_PIYO u8 PiyoX = 0; u8 PiyoY = 0; u8 Offset = 0; //Anime u8 DirOff = 0; u8 Anime = 0; u8 AniCnt = 0; //--------------------------------------------------------------------------------- int main(void) { //--------------------------------------------------------------------------------- int x, y; u16 *gfx; //initVideoMode videoSetMode(MODE_0_2D); //initVRAMBank vramSetBankA(VRAM_A_MAIN_SPRITE); //initOAM oamInit(&oamMain, SpriteMapping_1D_32, false); //allocateOAM gfx = oamAllocateGfx(&oamMain, SpriteSize_8x8, SpriteColorFormat_16Color); //initSpriteTiles swiCopy(piyoTiles, gfx, piyoTilesLen / 2); //initSpritePalette swiCopy(piyoPal, SPRITE_PALETTE, piyoPalLen / 2); //initBGPalette BG_PALETTE[0] = RGB8(32, 0, 176); //initPiyo PiyoX = 112; PiyoY = 160; while(1) { //waitForVBlank swiWaitForVBlank(); //updateOAM oamUpdate(&oamMain); //updateKeys scanKeys(); if(keysHeld() & KEY_UP){ PiyoY--; DirOff = 0; } if(keysHeld() & KEY_DOWN){ PiyoY++; DirOff = 96; } if(keysHeld() & KEY_LEFT){ PiyoX--; DirOff = 32; } if(keysHeld() & KEY_RIGHT){ PiyoX++; DirOff = 64; } //animeCounter AniCnt++; if(AniCnt >= 16){ AniCnt = 0; Anime = 16 - Anime; } //setPiyo Offset = Anime + DirOff; for(y = 0;y < 4;y++){ for(x = 0;x < 4;x++){ //setOAM oamSet(&oamMain, x + (y * 4), PiyoX + (x * 8), PiyoY + (y * 8), 0, 0, SpriteSize_8x8, SpriteColorFormat_16Color, &gfx[(Offset + x + (y * 4)) * 16 ], -1, false, false, false, false, false ); } } } }
piyo.grit
-gt -gB4 -fts -gu16