capture/ScreenShot/source/main.cpp
#include <nds.h>
#include <stdio.h>
#include "screenshot.h"
SpriteEntry sprites[128];
pSpriteRotation spriteRotations = (pSpriteRotation)&sprites[0];
void initSprites(void) {
for(int i = 0; i < 128; i++) {
sprites[i].attribute[0] = ATTR0_DISABLED;
sprites[i].attribute[1] = 0;
sprites[i].attribute[2] = 0;
sprites[i].filler = 0;
}
}
void updateOAM(void) {
DC_FlushRange(sprites,128*sizeof(SpriteEntry));
dmaCopy(sprites, OAM, 128 * sizeof(SpriteEntry));
}
int main() {
vramSetMainBanks( VRAM_A_MAIN_SPRITE,
VRAM_B_MAIN_SPRITE,
VRAM_C_MAIN_BG_0x06000000,
VRAM_D_LCD
);
videoSetMode( MODE_0_2D |
DISPLAY_SPR_ACTIVE |
DISPLAY_BG0_ACTIVE |
DISPLAY_SPR_1D |
DISPLAY_SPR_1D_BMP
);
consoleInit(0, 0,BgType_Text4bpp, BgSize_T_256x256, 31,0, true, true);
initSprites();
iprintf("\x1b[1;1HDirect Bitmap:");
sprites[0].attribute[0] = ATTR0_BMP | ATTR0_ROTSCALE_DOUBLE | 10;
sprites[0].attribute[1] = ATTR1_SIZE_32 | 20;
sprites[0].attribute[2] = ATTR2_ALPHA(1)| 0;
for(int i=0;i<32*32;i++)
SPRITE_GFX[i]=RGB15(31,0,0)|(1<<15);
iprintf("\x1b[9;1H256 color:");
sprites[1].attribute[0] = ATTR0_COLOR_256 | ATTR0_ROTSCALE_DOUBLE | 75;
sprites[1].attribute[1] = ATTR1_SIZE_32 | 20;
sprites[1].attribute[2] = 64;
SPRITE_PALETTE[1]=RGB15(0,0,31);
for(int i=0;i<32*16;i++)
SPRITE_GFX[i+64*16]=(1<<8)|1;
iprintf("\x1b[16;1H16 color:");
sprites[2].attribute[0] = ATTR0_COLOR_16 | ATTR0_ROTSCALE_DOUBLE | 135;
sprites[2].attribute[1] = ATTR1_SIZE_32 | 20;
sprites[2].attribute[2] = ATTR2_PALETTE(1) | 96;
SPRITE_PALETTE[17]=RGB15(31,31,0);
for(int i=0;i<32*8;i++)
SPRITE_GFX[i+96*16]=(1<<12)|(1<<8)|(1<<4)|1;
int angle=0;
spriteRotations[0].hdx=256;
spriteRotations[0].hdy=0;
spriteRotations[0].vdx=0;
spriteRotations[0].vdy=256;
while(1)
{
angle+=64;
spriteRotations[0].hdx = cosLerp(angle) >> 4;
spriteRotations[0].hdy = sinLerp(angle) >> 4;
spriteRotations[0].vdx = -spriteRotations[0].hdy;
spriteRotations[0].vdy = spriteRotations[0].hdx;
swiWaitForVBlank();
u32 display_temp = 0;
scanKeys();
if(keysDown()&KEY_A) {
screenshotbmp("shot.bmp");
display_temp=REG_DISPCNT;
REG_DISPCNT=MODE_FB1;
}
if(keysUp()&KEY_A) {
videoSetMode( MODE_0_2D |
DISPLAY_SPR_ACTIVE |
DISPLAY_BG0_ACTIVE |
DISPLAY_SPR_1D |
DISPLAY_SPR_1D_BMP |
DCAP_OFFSET(1));
}
updateOAM();
}
}