int main(int argc, char **argv) { /* Initialize subsystems */ Sys_Init(); /* Set video mode */ Video_SetMode(); /* Initialize console */ Gui_InitConsole(); /* Draw background */ Gui_DrawBackground(); /* Initialize Wiimote */ Wpad_Init(); /* Print disclaimer */ Disclaimer(); /* Menu loop */ Menu_Loop(); /* Restart Wii */ Restart_Wait(); return 0; }
int main(int argc, char **argv) { s32 ret; /* Load Custom IOS */ ret = IOS_ReloadIOS(249); /* Initialize subsystems */ Sys_Init(); /* Set video mode */ Video_SetMode(); /* Initialize console */ Gui_InitConsole(); /* Draw bckground */ Gui_DrawBackground(); /* Initialize Wiimote subsystem */ Wpad_Init(); /* Check for Custom IOS */ if (ret < 0) { printf("[+] ERROR: Could not load Custom IOS! (ret = %d)\n", ret); goto out; } /* Initialize ISFS */ ret = ISFS_Initialize(); if (ret < 0) { printf("[+] ERROR: Could not initialize ISFS! (ret = %d)\n", ret); goto out; } /* Mount ISFS */ ret = ISFS_Mount(); if (ret < 0) { printf("[+] ERROR: Could not mount ISFS! (ret = %d)\n", ret); goto out; } /* Menu loop */ Menu_Loop(); out: /* Restart */ Restart_Wait(); return 0; }
void Menu_Device(void) { u32 timeout = 30; s32 ret; /* Ask user for device */ for (;;) { char *devname = "Unknown!"; /* Set device name */ switch (wbfsDev) { case WBFS_DEVICE_USB: devname = "USB Mass Storage Device"; break; case WBFS_DEVICE_SDHC: devname = "SD/SDHC Card"; break; } /* Clear console */ Con_Clear(); printf("[+] Select WBFS device:\n"); printf(" < %s >\n\n", devname); printf(" Press LEFT/RIGHT to select device.\n"); printf(" Press A button to continue.\n\n"); u32 buttons = Wpad_WaitButtons(); /* LEFT/RIGHT buttons */ if (buttons & WPAD_BUTTON_LEFT) { if ((--wbfsDev) < WBFS_MIN_DEVICE) wbfsDev = WBFS_MAX_DEVICE; } if (buttons & WPAD_BUTTON_RIGHT) { if ((++wbfsDev) > WBFS_MAX_DEVICE) wbfsDev = WBFS_MIN_DEVICE; } /* A button */ if (buttons & WPAD_BUTTON_A) break; } printf("[+] Mounting device, please wait...\n"); printf(" (%d seconds timeout)\n\n", timeout); fflush(stdout); /* Initialize WBFS */ ret = WBFS_Init(wbfsDev, timeout); if (ret < 0) { printf(" ERROR! (ret = %d)\n", ret); /* Restart wait */ Restart_Wait(); } /* Try to open device */ while (WBFS_Open() < 0) { /* Clear console */ Con_Clear(); printf("[+] WARNING:\n\n"); printf(" No WBFS partition found!\n"); printf(" You need to format a partition.\n\n"); printf(" Press A button to format a partition.\n"); printf(" Press B button to restart.\n\n"); /* Wait for user answer */ for (;;) { u32 buttons = Wpad_WaitButtons(); /* A button */ if (buttons & WPAD_BUTTON_A) break; /* B button */ if (buttons & WPAD_BUTTON_B) Restart(); } /* Format device */ Menu_Format(); } /* Get game list */ __Menu_GetEntries(); }
void Menu_Format(void) { partitionEntry partitions[MAX_PARTITIONS]; u32 cnt, sector_size; s32 ret, selected = 0; /* Clear console */ Con_Clear(); /* Get partition entries */ ret = Partition_GetEntries(wbfsDev, partitions, §or_size); if (ret < 0) { printf("[+] ERROR: No partitions found! (ret = %d)\n", ret); /* Restart */ Restart_Wait(); } loop: /* Clear console */ Con_Clear(); printf("[+] Selected the partition you want to \n"); printf(" format:\n\n"); /* Print partition list */ for (cnt = 0; cnt < MAX_PARTITIONS; cnt++) { partitionEntry *entry = &partitions[cnt]; /* Calculate size in gigabytes */ f32 size = entry->size * (sector_size / GB_SIZE); /* Selected entry */ (selected == cnt) ? printf(">> ") : printf(" "); fflush(stdout); /* Valid partition */ if (size) printf("Partition #%d: (size = %.2fGB)\n", cnt + 1, size); else printf("Partition #%d: (cannot be formatted)\n", cnt + 1); } partitionEntry *entry = &partitions[selected]; u32 buttons = Wpad_WaitButtons(); /* UP/DOWN buttons */ if (buttons & WPAD_BUTTON_UP) { if ((--selected) <= -1) selected = MAX_PARTITIONS - 1; } if (buttons & WPAD_BUTTON_DOWN) { if ((++selected) >= MAX_PARTITIONS) selected = 0; } /* B button */ if (buttons & WPAD_BUTTON_B) return; /* Valid partition */ if (entry->size) { /* A button */ if (buttons & WPAD_BUTTON_A) goto format; } goto loop; format: /* Clear console */ Con_Clear(); printf("[+] Are you sure you want to format\n"); printf(" this partition?\n\n"); printf(" Partition #%d\n", selected + 1); printf(" (size = %.2fGB - type: %02X)\n\n", entry->size * (sector_size / GB_SIZE), entry->type); printf(" Press A button to continue.\n"); printf(" Press B button to go back.\n\n\n"); /* Wait for user answer */ for (;;) { u32 buttons = Wpad_WaitButtons(); /* A button */ if (buttons & WPAD_BUTTON_A) break; /* B button */ if (buttons & WPAD_BUTTON_B) goto loop; } printf("[+] Formatting, please wait..."); fflush(stdout); /* Format partition */ ret = WBFS_Format(entry->sector, entry->size); if (ret < 0) { printf("\n ERROR! (ret = %d)\n", ret); goto out; } else printf(" OK!\n"); out: printf("\n"); printf(" Press any button to continue...\n"); /* Wait for any button */ Wpad_WaitButtons(); }