/* * 2D グラフィック */ // arm7.c #include int main() { while(1){ swiWaitForVBlank(); } } // for arm9 #include u8 Tile1[64] = { 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1 }; u8 Tile2[64] = { 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2 }; int main(void) { videoSetMode(MODE_5_2D); videoSetModeSub(MODE_0_2D); vramSetMainBanks(VRAM_A_LCD, VRAM_B_LCD, VRAM_C_MAIN_BG_0x06040000, VRAM_D_MAIN_BG_0x06060000); vramSetBankF(VRAM_F_MAIN_SPRITE_0x06400000); vramSetBankH(VRAM_H_SUB_BG); vramSetBankI(VRAM_I_SUB_SPRITE); int bg_main2 = bgInit(2, BgType_Bmp16, BgSize_B16_256x256, 0, 0); int bg_sub0 = bgInitSub(0, BgType_Text8bpp, BgSize_T_256x256, 0, 1); u16* backBuffer = (u16*)bgGetGfxPtr(bg_main2) + 256*256*2; u8* tileMemorySub = (u8*)BG_TILE_RAM_SUB(1); u16* mapMemorySub = (u16*)BG_MAP_RAM_SUB(0); swiCopy(Tile1, tileMemorySub, 32); swiCopy(Tile2, tileMemorySub + 64, 32); for(int i = 0; i < 32 * 32; i++){ mapMemorySub[i] = i & 1; } lcdSwap(); oamInit(&oamMain, SpriteMapping_1D_32, false); oamInit(&oamSub, SpriteMapping_1D_32, false); u16* gfxMain = oamAllocateGfx(&oamMain, SpriteSize_16x16, SpriteColorFormat_256Color); u16* gfxSub = oamAllocateGfx(&oamSub, SpriteSize_16x16, SpriteColorFormat_256Color); for(int i = 0; i < 16 * 16; i++){ gfxMain[i] = 1 | (1 << 8); } for(int i = 0; i < 16 * 16 / 2; i++){ gfxSub[i] = 1 | (1 << 8); } for(int i = 16 * 16 / 2; i < 16 * 16; i++){ gfxSub[i] = 2 | (2 << 8); } BG_PALETTE_SUB[1] = RGB15(31,0,0); BG_PALETTE_SUB[2] = RGB15(0,31,0); SPRITE_PALETTE[1] = RGB15(31,0,31); SPRITE_PALETTE_SUB[1] = RGB15(0,0,31); SPRITE_PALETTE_SUB[2] = RGB15(31,31,0); REG_BG0HOFS_SUB = 4; while(1){ for(int iy = 0; iy < SCREEN_HEIGHT; iy++){ for(int ix = 0; ix < SCREEN_WIDTH; ix++){ backBuffer[iy * 256 + ix] = rand() | BIT(15); } } oamSet(&oamMain, 0, 5, 5, 0, 0, SpriteSize_16x16, SpriteColorFormat_256Color, gfxMain, -1, false, false, false, false, false); oamSet(&oamSub, 0, 5, 5, 0, 0, SpriteSize_16x16, SpriteColorFormat_256Color, gfxSub, -1, false, false, false, false, false); oamSet(&oamSub, 1, 16, 16, 0, 0, SpriteSize_16x16, SpriteColorFormat_256Color, gfxSub + 16 * 16 / 2, -1, false, false, false, false, false); swiWaitForVBlank(); oamUpdate(&oamMain); oamUpdate(&oamSub); backBuffer = (u16*)bgGetGfxPtr(bg_main2); if(bgGetMapBase(bg_main2) == 24){ bgSetMapBase(bg_main2, 16); } else{ bgSetMapBase(bg_main2, 24); } } return 0; }