Graphics/Backgrounds/rotation/source/main.cpp
#include <nds.h>
#include <nds/arm9/console.h>
#include <nds/arm9/trig_lut.h>
#include <stdio.h>
#include "drunkenlogo_bin.h"
#include "palette_bin.h"
int main(void) {
videoSetMode(MODE_5_2D );
vramSetBankA(VRAM_A_MAIN_BG);
consoleDemoInit();
int bg3 = bgInit(3, BgType_Bmp8, BgSize_B8_256x256, 0,0);
dmaCopy(drunkenlogo_bin, bgGetGfxPtr(bg3), 256*256);
dmaCopy(palette_bin, BG_PALETTE, 256*2);
s16 angle = 0;
s16 scrollX = 128;
s16 scrollY = 128 ;
s16 scaleX = 1 << 8;
s16 scaleY = 1 << 8;
s16 rcX = 128;
s16 rcY = 96;
while(1) {
iprintf("\n\n\tHello DS devers\n");
iprintf("\twww.drunkencoders.com\n");
iprintf("\tBG Rotation demo\n");
iprintf("Angle %3d(actual) %3d(degrees)\n", angle, (angle * 360) / (1<<15));
iprintf("Scroll X: %4d Y: %4d\n", scrollX, scrollY);
iprintf("Rot center X: %4d Y: %4d\n", rcX, rcY);
iprintf("Scale X: %4d Y: %4d\n", scaleX, scaleY);
scanKeys();
u32 keys = keysHeld();
if( keys & KEY_L ) angle+=20;
if( keys & KEY_R ) angle-=20;
if( keys & KEY_LEFT ) scrollX++;
if( keys & KEY_RIGHT ) scrollX--;
if( keys & KEY_UP ) scrollY++;
if( keys & KEY_DOWN ) scrollY--;
if( keys & KEY_A ) scaleX++;
if( keys & KEY_B ) scaleX--;
if( keys & KEY_START ) rcX ++;
if( keys & KEY_SELECT ) rcY++;
if( keys & KEY_X ) scaleY++;
if( keys & KEY_Y ) scaleY--;
swiWaitForVBlank();
bgSetCenter(bg3, rcX, rcY);
bgSetRotateScale(bg3, angle, scaleX, scaleY);
bgSetScroll(bg3, scrollX, scrollY);
bgUpdate();
iprintf("\x1b[2J");
}
return 0;
}