void init_consoles(void) { /* debug console on top */ mainConsole = consoleDemoInit(); debugConsole = (PrintConsole *) malloc(sizeof(PrintConsole)); if (!debugConsole) exit(1); memcpy(debugConsole, consoleGetDefault(), sizeof(PrintConsole)); videoSetMode(MODE_0_2D); vramSetBankA(VRAM_A_MAIN_BG); consoleInit(debugConsole, debugConsole->bgLayer, BgType_Text4bpp, BgSize_T_256x256, debugConsole->mapBase, debugConsole->gfxBase, true, true); #ifdef DEBUG printf("Test debug console\n"); #endif consoleSelect(mainConsole); #ifdef DEBUG printf("Test main console\n"); #endif return; }
void __attribute__((noreturn)) __sassert(const char* file, int line, const char* cond, const char* msg) { if (isUserMode()) FeOS_swi_assertfail(file, line, cond, msg); videoReset(); videoSetMode(MODE_0_2D); videoSetModeSub(MODE_0_2D); PrintConsole* conmain = consoleInit(NULL, 0, BgType_Text4bpp, BgSize_T_256x256, 0, 1, true, true); memcpy(&oConSub, consoleGetDefault(), sizeof(PrintConsole)); PrintConsole* consub = consoleInit(&oConSub, 0, BgType_Text4bpp, BgSize_T_256x256, 0, 1, false, true); InstallConThunks(); consoleSelect(conmain); BG_PALETTE[0] = RGB15(31,0,31); BG_PALETTE[255] = RGB15(31,31,31); BG_PALETTE_SUB[0] = RGB15(31,0,31); BG_PALETTE_SUB[255] = RGB15(31,31,31); iprintf("\x1b[5CKernel assertion failure!\n\nCondition: %s\n\n%s:%d\n\nMessage: %s\n", cond, file, line, msg); consoleSelect(consub); iprintf("\x1b[5CStacktrace coming soon\n\nInstead, here's a kitten:\n\n"); const char** i; for (i = meow; *i; i ++) iprintf("%s\n", *i); for (;;) swiWaitForVBlank(); }
inline void DSGM_SetTextColor(u8 screen, u16 color) { if(DSGM_text[screen][DSGM_textLayer[screen]].font.gfx == consoleGetDefault()->font.gfx) { (screen == DSGM_TOP ? BG_PALETTE : BG_PALETTE_SUB)[15 + (15 * 16)] = color; } else { (screen == DSGM_TOP ? BG_PALETTE : BG_PALETTE_SUB)[1] = color; } }
/// A very bad implementation for consoleExit, only for debug. PrintConsole* consoleExit(gfxScreen_t screen, PrintConsole* console) { // TODO Future implementation! *currentConsole = *consoleGetDefault(); gfxSetScreenFormat(screen, GSP_BGR8_OES); gfxSetDoubleBuffering(screen, true); gspWaitForVBlank(); return console; }
void updateProgressBar(u32 offset, u32 total) { const int nbBars = 40; std::string bar(nbBars*offset/total, '#'); bar += std::string(nbBars - nbBars*offset/total, '-'); PrintConsole* csl = consoleGetDefault(); std::string centerPadding((49 - (nbBars + 5 + csl->tabSize))/2, ' '); printf("\r%s[%s]\t%2d%%", centerPadding.c_str(), bar.c_str(), (int)(100*offset/total)); fflush(stdout); }
void setMenuDefaults() { for (int i=0; i<numMenus; i++) { for (int j=0; j<menuList[i].numOptions; j++) { menuList[i].options[j].selection = menuList[i].options[j].defaultSelection; menuList[i].options[j].enabled = true; if (menuList[i].options[j].numValues != 0) { menuList[i].options[j].function(menuList[i].options[j].defaultSelection); } } } menuConsole = (PrintConsole*)malloc(sizeof(PrintConsole)); memcpy(menuConsole, consoleGetDefault(), sizeof(PrintConsole)); }
CtrUi::CtrUi(int width, int height) : BaseUi() { frame = 0; fullscreen = false; trigger_state = false; sf2d_init(); current_display_mode.width = width; current_display_mode.height = height; current_display_mode.bpp = 32; const DynamicFormat format( 32, 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000, PF::NoAlpha); Bitmap::SetFormat(Bitmap::ChooseFormat(format)); main_surface = Bitmap::Create(width, height, true, 32); main_texture = sf2d_create_texture_mem_RGBA8(main_surface->pixels(), main_surface->GetWidth(), main_surface->GetHeight(), TEXFMT_RGBA8, SF2D_PLACE_VRAM); #ifdef SUPPORT_AUDIO audio_.reset(new CtrAudio()); #endif #ifdef NO_DEBUG // Loading bottom screen keyboard u8* key_buffer = (u8*)&keyboard_bmp[0x36]; u32 key_buffer_size = keyboard_bmp_size - 0x36; u8* key_buffer_rgba = (u8*)malloc((key_buffer_size/3)<<2); int z = 0; for(int i=0;i<key_buffer_size;i=i+3){ key_buffer_rgba[z+2] = key_buffer[i]; key_buffer_rgba[z+1] = key_buffer[i+1]; key_buffer_rgba[z] = key_buffer[i+2]; key_buffer_rgba[z+3] = 0xFF; z = z + 4; } keyboard_texture = sf2d_create_texture_mem_RGBA8(key_buffer_rgba, 320, 240, TEXFMT_RGBA8, SF2D_PLACE_RAM); free(key_buffer_rgba); // Disabling debug console devoptab_list[STD_OUT] = &dotab_null; devoptab_list[STD_ERR] = &dotab_null; consoleGetDefault()->frameBuffer = NULL; gfxSetScreenFormat(GFX_BOTTOM,GSP_BGR8_OES); gfxSetDoubleBuffering(GFX_BOTTOM,true); // Drawing keyboard once then unloading it for (int i=0;i<5;i++){ // If we don't print this a couple of time, image is corrupted sf2d_start_frame(GFX_BOTTOM, GFX_LEFT); sf2d_draw_texture(keyboard_texture, 0, 0); sf2d_end_frame(); sf2d_swapbuffers(); } sf2d_free_texture(keyboard_texture); #endif }