void batchDownloadCover(struct discHdr *gameList) { int i; char id[7]; for(i = 0; i < self.gameCnt; i++) { struct discHdr *header = &gameList[i]; if(self.array_size < MAX_COVERS) { sprintf(id, "%s", header->id); sprintf(self.debugMsg, TX.checkNextCover, header->id); Paint_Progress_Generic(i, self.gameCnt, self.debugMsg); Download_Cover(id, i, self.gameCnt); //sprintf(filepath, USBLOADER_PATH "/covers/%s.png", header->id); } } WindowPrompt (TX.opFinished, TX.pressA, &okButton, 0); }
int Menu_Boot_Options(struct discHdr *header) { int ret_val = 0; if (CFG.disable_options) return 0; struct Game_CFG_2 *game_cfg2 = NULL; struct Game_CFG *game_cfg = NULL; int opt_saved, opt_ios_reload; int redraw_cover = 0; int rows, cols, win_size; CON_GetMetrics(&cols, &rows); if ((win_size = rows-9) < 3) win_size = 3; Con_Clear(); FgColor(CFG.color_header); printf_x(gt("Selected Game")); printf(":"); __console_flush(0); printf(" (%.6s)\n", header->id); DefaultColor(); printf(" %s %s\n\n", CFG.cursor_space, __Menu_PrintTitle(get_title(header))); __console_flush(0); // load_dolmenu((char*)header->id); game_cfg2 = CFG_get_game(header->id); if (!game_cfg2) { printf(gt("ERROR game opt")); printf("\n"); sleep(5); return 0; } game_cfg = &game_cfg2->curr; struct Menu menu; const int NUM_OPT = 16; char active[NUM_OPT]; menu_init(&menu, NUM_OPT); for (;;) { /* // fat on 249? if (wbfs_part_fs && !disc) { if (!is_ios_idx_mload(game_cfg->ios_idx)) { game_cfg->ios_idx = CFG_IOS_222_MLOAD; } } */ menu_init_active(&menu, active, sizeof(active)); opt_saved = game_cfg2->is_saved; // if not mload disable block ios reload opt opt_ios_reload = game_cfg->block_ios_reload; // if not ocarina and not wiird, deactivate hooks if (!game_cfg->ocarina && !CFG.wiird) { active[11] = 0; } //if admin lock is off or they're not in admin // mode then they can't hide/unhide games if (!CFG.admin_lock || CFG.admin_mode_locked) { active[14] = 0; } //These things shouldn't be changed if using a disc...maybe active[0] = 0; active[8] = 0; active[9] = 0; active[14] = 0; Con_Clear(); FgColor(CFG.color_header); printf_x(gt("Selected Game")); printf(":"); printf(" (%.6s)\n", header->id); DefaultColor(); printf(" %s %s\n\n", CFG.cursor_space, __Menu_PrintTitle(get_title(header))); FgColor(CFG.color_header); printf_x(gt("Game Options: %s"), CFG_is_changed(header->id) ? gt("[ CHANGED ]") : opt_saved ? gt("[ SAVED ]") : ""); printf("\n"); DefaultColor(); char c1 = '<', c2 = '>'; //if (opt_saved) { c1 = '['; c2 = ']'; } const char *str_vpatch[3]; str_vpatch[0] = gt("Off"); str_vpatch[1] = gt("On"); str_vpatch[2] = gt("All"); // start menu draw menu_begin(&menu); menu_jump_active(&menu); #define PRINT_OPT_S(N,V) \ printf("%s%c %s %c\n", con_align(N,18), c1, V, c2) #define PRINT_OPT_A(N,V) \ printf("%s%c%s%c\n", con_align(N,18), c1, V, c2) #define PRINT_OPT_B(N,V) \ PRINT_OPT_S(N,(V?gt("On"):gt("Off"))) menu_window_begin(&menu, win_size, NUM_OPT); if (menu_window_mark(&menu)) PRINT_OPT_S(gt("Favorite:"), is_favorite(header->id) ? gt("Yes") : gt("No")); if (menu_window_mark(&menu)) PRINT_OPT_S(gt("Language:"), languages[game_cfg->language]); if (menu_window_mark(&menu)) PRINT_OPT_S(gt("Video:"), videos[game_cfg->video]); if (menu_window_mark(&menu)) PRINT_OPT_S(gt("Video Patch:"), str_vpatch[game_cfg->video_patch]); if (menu_window_mark(&menu)) PRINT_OPT_B("VIDTV:", game_cfg->vidtv); if (menu_window_mark(&menu)) PRINT_OPT_B(gt("Country Fix:"), game_cfg->country_patch); if (menu_window_mark(&menu)) PRINT_OPT_B(gt("Anti 002 Fix:"), game_cfg->fix_002); if (menu_window_mark(&menu)) PRINT_OPT_B(gt("Block IOS Reload:"), opt_ios_reload); if (menu_window_mark(&menu)) PRINT_OPT_B(gt("Ocarina (cheats):"), game_cfg->ocarina); if (menu_window_mark(&menu)) PRINT_OPT_S(gt("Hook Type:"), hook_name[game_cfg->hooktype]); if (menu_window_mark(&menu)) PRINT_OPT_A(gt("Cheat Codes:"), gt("Manage")); if (menu_window_mark(&menu)) printf("%s%s\n", con_align(gt("Cover Image:"), 18), imageNotFound ? gt("< DOWNLOAD >") : gt("[ FOUND ]")); if (menu_window_mark(&menu)) PRINT_OPT_S(gt("Hide Game:"), is_hide_game(header->id) ? gt("Yes") : gt("No")); if (menu_window_mark(&menu)) PRINT_OPT_B(gt("Write Playlog:"), game_cfg->write_playlog); DefaultColor(); menu_window_end(&menu, cols); printf_h(gt("Press %s to start game"), (button_names[CFG.button_confirm.num])); printf("\n"); bool need_save = !opt_saved || CFG_is_changed(header->id); if (need_save) printf_h(gt("Press %s to save options"), (button_names[CFG.button_save.num])); else printf_h(gt("Press %s to discard options"), (button_names[CFG.button_save.num])); printf("\n"); printf_h(gt("Press %s for global options"), (button_names[CFG.button_other.num])); DefaultColor(); __console_flush(0); if (redraw_cover) { Gui_DrawCover(header->id); redraw_cover = 0; } u32 buttons = Wpad_WaitButtonsRpt(); int change = 0; menu_move_active(&menu, buttons); if (buttons & WPAD_BUTTON_LEFT) change = -1; if (buttons & WPAD_BUTTON_RIGHT) change = +1; if (change) { switch (menu.current) { case 0: printf("\n\n"); printf_x(gt("Saving Settings... ")); __console_flush(0); if (set_favorite(header->id, change > 0)) { printf(gt("OK")); } else { printf(gt("ERROR")); sleep(1); } __console_flush(0); Gui_DrawCover(header->id); break; case 1: CHANGE(game_cfg->language, CFG_LANG_MAX); break; case 2: CHANGE(game_cfg->video, CFG_VIDEO_MAX); break; case 3: CHANGE(game_cfg->video_patch, 2); break; case 4: CHANGE(game_cfg->vidtv, 1); break; case 5: CHANGE(game_cfg->country_patch, 1); break; case 6: CHANGE(game_cfg->fix_002, 1); break; case 7: CHANGE(game_cfg->block_ios_reload, 1); break; case 8: CHANGE(game_cfg->ocarina, 1); break; case 9: CHANGE(game_cfg->hooktype, NUM_HOOK-1); break; case 10: Menu_Cheats(header); break; case 11: printf("\n\n"); Download_Cover((char*)header->id, change > 0, true); Cache_Invalidate(); Gui_DrawCover(header->id); Menu_PrintWait(); break; case 12: // hide game printf("\n\n"); printf_x(gt("Saving Settings... ")); __console_flush(0); if (set_hide_game(header->id, change > 0)) { printf(gt("OK")); } else { printf(gt("ERROR")); sleep(1); } __console_flush(0); Gui_DrawCover(header->id); break; case 13: CHANGE(game_cfg->write_playlog, 1); break; } } if (buttons & CFG.button_confirm.mask) { CFG.confirm_start = 0; Menu_Boot(); break; } if (buttons & CFG.button_save.mask) { bool ret; printf("\n\n"); if (need_save) { ret = CFG_save_game_opt(header->id); if (ret) { printf_x(gt("Options saved for this game.")); } else printf(gt("Error saving options!")); } else { ret = CFG_discard_game_opt(header->id); if (ret) printf_x(gt("Options discarded for this game.")); else printf(gt("Error discarding options!")); } sleep(1); } // HOME button if (buttons & CFG.button_exit.mask) { Handle_Home(0); } if (buttons & CFG.button_other.mask) { ret_val = 1; break; } if (buttons & CFG.button_cancel.mask) break; } CFG_release_game(game_cfg2); return ret_val; }