void gfx_init() {
POWER_CR=POWER_SWAP_LCDS | POWER_ALL_2D;
vramSetMainBanks(VRAM_A_MAIN_BG,VRAM_B_MAIN_BG,VRAM_C_SUB_BG,VRAM_D_LCD);
SUB_DISPLAY_CR=MODE_0_2D|DISPLAY_BG0_ACTIVE|DISPLAY_BG1_ACTIVE;
DISPLAY_CR=MODE_0_2D|DISPLAY_BG0_ACTIVE|DISPLAY_BG1_ACTIVE;
SUB_BG0_CR=BG_TILE_BASE(1);
SUB_BG0_X0=0;
SUB_BG0_Y0=0;
SUB_BG1_CR=BG_TILE_BASE(1)|BG_MAP_BASE(1);
SUB_BG1_X0=0;
SUB_BG1_Y0=0;
BG0_CR=BG_TILE_BASE(1);
BG0_X0=0;
BG0_Y0=0;
BG1_CR=BG_TILE_BASE(1)|BG_MAP_BASE(1);
BG1_X0=0;
BG1_Y0=0;
swiFastCopy(&font_bin,(u16*)(CHAR_BASE_BLOCK_SUB(1)),font_bin_size/4);
swiFastCopy(&font_bin,(u16*)(CHAR_BASE_BLOCK(1)),font_bin_size/4);
}
void load_palette() {
unsigned char i,r,g,b;
for(i=0;i<16;i++) {
r=(i&4)>>2; g=(i&2)>>1; b=(i&1)>>0;
r=r*colorsettings[0]; g=g*colorsettings[0]; b=b*colorsettings[0];
if(i>=8) {r=r+colorsettings[1];g=g+colorsettings[1];b=b+colorsettings[1];}
if(r>31) r=31;
if(g>31) g=31;
if(b>31) b=31;
BG_PALETTE_SUB[i*16+1] = RGB15(r,g,b);
BG_PALETTE[i*16+1] = BG_PALETTE_SUB[i*16+1];
}
}
char fix_menu2(char modulenum) {
u32 i,j,k,sel=0,dig=0;
printtext(LAYER_MAIN0,0,21,12,"RUN");
printtext(LAYER_MAIN0,1,21,12,"DEFAULT");
printtext(LAYER_MAIN0,2,21,12,"CONTINUE");
printtext(LAYER_MAIN0,3,21,12,"EXIT");
printtext(LAYER_MAIN0,9,21,7,"^/v/SELECT");
set_tile(LAYER_MAIN0,9,21,XTILE(7,24));
set_tile(LAYER_MAIN0,9,23,XTILE(7,25));
while(1) {
swiWaitForVBlank();
k=keysDown();
cleartext(LAYER_MAIN1,0,23);
for(i=21;i<32;i++) set_tile(LAYER_MAIN1,sel,i,XTILE(4,219));
ON_BREAK return 1;
if((k&KEY_UP) && sel>0) sel--;
if((k&KEY_DOWN) && sel<3) sel++;
if(k&KEY_SELECT) {
if(sel==0) {
clear_screen();
module_list[modulenum].function_run();
return 1;
}
if(sel==1) {
currentfixmode=FIXMODE_DEFAULT;
module_list[modulenum].function_fix();
currentfixmode=FIXMODE_FIX;
return 0;
}
if(sel==2) return 0;
if(sel==3) return 1;
}
}
}
void set_tile(char layer, char row, char col, u16 tile) {
u16 *p=(u16*)(SCREENBLOCK(layer)+row*64+col*2);
*p=tile;
}
void printtext(char layer, char row, char col, char color, char *str) {
char *s=str;
u16 *p=(u16*)(SCREENBLOCK(layer)+row*64+col*2);
while (*s) *p++=(*s++)|(color*0x1000);
}
void cleartext(char layer, char rowstart, char rowend) {
int i;
for(i=rowstart;i<=rowend;i++) {
printtext(layer,i,0,0," ");
}
}
|