Пример #1
0
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;
}
Пример #2
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);*/
}
Пример #3
0
/****************************************************************************
* 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;
}