int main(int argc, char *argv[]) { //does more than it should VIDEO_Init(); int have_sd = initFAT(); if (have_sd){ FILE *fp = fopen("fat:/autoexec.dol", "rb"); if (fp) { fseek(fp, 0, SEEK_END); int size = ftell(fp); fseek(fp, 0, SEEK_SET); if ((size > 0) && (size < (AR_GetSize() - (64*1024)))) { u8 *dol = (u8*) memalign(32, size); if (dol) { fread(dol, 1, size, fp); DOLtoARAM(dol, 0, NULL); } //We shouldn't reach this point if (dol != NULL) free(dol); } fclose(fp); } } return 0; }
int main(void) { fatfs fs; initData( &fs ); fs.diskSize = DEFAULT_DISK * 1024 * 1024; fs.clusterSize = DEFAULT_CLUSTER * 1024; fs.fsname = "somefile.bin"; fs.currentPath = "/"; printf("Initializing file system...\n"); fs.fp = fopen( fs.fsname, "w+b" ); for( int i = 0; i < fs.clusterSize * 5; i++ ) { fputc( '\0', fs.fp ); } initMBR( &fs ); initDirTable( &fs ); initFAT( &fs ); unsigned char* pie = (unsigned char*) malloc( fs.clusterSize ); unsigned char* hi = (unsigned char*) malloc( fs.clusterSize ); FILE* testFile = fopen("test.file", "r"); if ( fread( pie, 1, fs.clusterSize, testFile ) ){ printf("Read the test file\n"); if ( writeClusterSafe( &fs, 3, pie, fs.clusterSize ) ){ printf("Wrote the cluster, attemping to read\n"); readClusterSafe( &fs, 3, hi, fs.clusterSize ); printf( hi ); } else { printf("Failed to write cluster\n"); } } free( hi ); free( pie ); /* if(findDirTableEmpty(&fs)) { printf("findDirTableEmpty() = True\n"); } else { printf("findDirTableEmpty() = False\n"); } if(findDirTableEntry(&fs, "DNE")) { printf("Found a file that does not exist???\n"); } else { printf("Cannot find a file that doesn't exist.\n"); } printf("Creating a file using touch()...\n"); touch(&fs, "file.txt"); printf("Performing ls()...\n\n"); ls(&fs); printf("\n\nClosing fp...\n"); fclose(fs.fp);*/ }
/**************************************************************************** * Main ****************************************************************************/ int main () { int have_sd = 0; #ifdef HW_DOL int *psoid = (int *) 0x80001800; void (*PSOReload) () = (void (*)()) 0x80001800; #endif Initialise (); /*** Start video ***/ FT_Init (); /*** Start FreeType ***/ ClearScreen(); ShowScreen(); #ifdef HW_RVL initialise_power(); have_sd = initFAT(WaitPromptChoice ("Use internal SD or FAT32 USB device?", "USB", "SD")); #else //Returns 1 (memory card in slot B, sd gecko in slot A) if A button was pressed and 0 if B button was pressed MEM_CARD = WaitPromptChoice ("Please select the slot where SD Gecko is inserted", "SLOT B", "SLOT A"); have_sd = initFAT(MEM_CARD); #endif for (;;) { /*** Select Mode ***/ ClearScreen(); setfontsize (FONT_SIZE); freecardbuf(); cancel = 0;/******a global value to track action aborted by user pressing button B********/ doall = 0; mode = SelectMode (); #ifdef HW_RVL if ((mode != 500 ) && (mode != 100) && (mode != 600)){ if (WaitPromptChoice ("Please select a memory card slot", "Slot B", "Slot A") == 1) { MEM_CARD = CARD_SLOTA; }else { MEM_CARD = CARD_SLOTB; } } #endif /*** Mode == 100 for backup, 200 for restore ***/ switch (mode) { case 100 : //User pressed A so keep looping //SMB_BackupMode(); //WaitPrompt ("Inactive"); break; case 200 : //User wants to delete MC_DeleteMode(MEM_CARD); break; case 300 : //User wants to backup if (have_sd) SD_BackupMode(); else WaitPrompt("Reboot aplication with a FAT device"); break; case 400 : //User wants to restore if (have_sd) SD_RestoreMode(); else WaitPrompt("Reboot aplication with a FAT device"); break; case 500 ://exit ShowAction ("Exiting..."); deinitFAT(); #ifdef HW_RVL //if there's a loader stub load it, if not return to wii menu. if (!!*(u32*)0x80001800) exit(1); else SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0); #else if (psoid[0] == PSOSDLOADID) PSOReload (); else SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0); #endif break; //PSO_Reload case 600 : //User wants to backup full card /* if (have_sd) SD_BackupModeAllFiles(); else WaitPrompt("Reboot aplication with an SD card"); */ break; case 700 : //Raw backup mode if (have_sd) { SD_RawBackupMode(); }else { WaitPrompt("Reboot aplication with a FAT device"); } break; case 800 : //Raw restore mode //These two lines are a work around for the second call of CARD_Probe to detect a newly inserted memory card CARD_Probe(MEM_CARD); VIDEO_WaitVSync (); if (CARD_Probe(MEM_CARD) > 0) { if (have_sd) SD_RawRestoreMode(); else WaitPrompt("Reboot aplication with a FAT device"); }else if (MEM_CARD) { WaitPrompt("Please insert a memory card in slot B"); }else { WaitPrompt("Please insert a memory card in slot A"); } break; case 900 : //Format card mode //These two lines are a work around for the second call of CARD_Probe to detect a newly inserted memory card CARD_Probe(MEM_CARD); VIDEO_WaitVSync (); if (CARD_Probe(MEM_CARD) > 0) { clearRightPane(); DrawText(390,224,"____________________"); DrawText(390,248,"F o r m a t C a r d"); DrawText(460,268,"M o d e"); DrawText(390,272,"____________________"); MC_FormatMode(MEM_CARD); }else if (MEM_CARD) { WaitPrompt("Please insert a memory card in slot B"); }else { WaitPrompt("Please insert a memory card in slot A"); } break; } offsetchanged = true; } while (1); return 0; }