further functions done
This commit is contained in:
parent
c2260e7535
commit
00f4e5b69b
251
src/main.c
251
src/main.c
@ -1082,31 +1082,39 @@ void loadgbrom(display_context_t disp, u8 *buff)
|
|||||||
{
|
{
|
||||||
u8 gb_sram_file[64];
|
u8 gb_sram_file[64];
|
||||||
|
|
||||||
FatRecord rec_tmpf;
|
|
||||||
u8 resp = 0;
|
|
||||||
|
|
||||||
sprintf(gb_sram_file, "/ED64/%s/gblite.SRM", save_path);
|
sprintf(gb_sram_file, "/ED64/%s/gblite.SRM", save_path);
|
||||||
|
|
||||||
resp = fatFindRecord(gb_sram_file, &rec_tmpf, 0); //filename already exists
|
FRESULT result;
|
||||||
resp = fatCreateRecIfNotExist(gb_sram_file, 0);
|
FIL file;
|
||||||
resp = fatOpenFileByName(gb_sram_file, 32768 / 512);
|
UINT bytesread;
|
||||||
|
result = f_open(&file, gb_sram_file, FA_OPEN_ALWAYS);
|
||||||
|
|
||||||
|
if (result == FR_OK)
|
||||||
|
{
|
||||||
|
static uint8_t sram_buffer[36928];
|
||||||
|
|
||||||
|
for (int i = 0; i < 36928; i++)
|
||||||
|
sram_buffer[i] = 0;
|
||||||
|
|
||||||
|
sprintf(sram_buffer, buff);
|
||||||
|
|
||||||
static uint8_t sram_buffer[36928];
|
UINT* bw;
|
||||||
|
result =
|
||||||
|
f_write (
|
||||||
|
&file, /* [IN] Pointer to the file object structure */
|
||||||
|
&sram_buffer, /* [IN] Pointer to the data to be written */
|
||||||
|
32768, /* [IN] Number of bytes to write */ //TODO: why is this shorter than the sram buffer?
|
||||||
|
bw /* [OUT] Pointer to the variable to return number of bytes written */
|
||||||
|
);
|
||||||
|
|
||||||
|
result = f_close(&file);
|
||||||
|
|
||||||
for (int i = 0; i < 36928; i++)
|
sprintf(rom_filename, "gblite");
|
||||||
sram_buffer[i] = 0;
|
gbload = 1;
|
||||||
|
|
||||||
sprintf(sram_buffer, buff);
|
loadrom(disp, "/ED64/gblite.z64", 1);
|
||||||
|
|
||||||
resp = fatWriteFile(&sram_buffer, 32768 / 512);
|
}
|
||||||
|
|
||||||
// while (!(disp = display_lock()))
|
|
||||||
// ;
|
|
||||||
|
|
||||||
sprintf(rom_filename, "gblite");
|
|
||||||
gbload = 1;
|
|
||||||
|
|
||||||
loadrom(disp, "/ED64/gblite.z64", 1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1579,7 +1587,7 @@ int backupSaveData(display_context_t disp)
|
|||||||
result = f_write (
|
result = f_write (
|
||||||
&file, /* [IN] Pointer to the file object structure */
|
&file, /* [IN] Pointer to the file object structure */
|
||||||
&cfg_data, /* [IN] Pointer to the data to be written */
|
&cfg_data, /* [IN] Pointer to the data to be written */
|
||||||
1, /* [IN] Number of bytes to write */ //only override the first byte!!!
|
512, /* [IN] Number of bytes to write */
|
||||||
bw /* [OUT] Pointer to the variable to return number of bytes written */
|
bw /* [OUT] Pointer to the variable to return number of bytes written */
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -1716,10 +1724,7 @@ int saveTypeToSd(display_context_t disp, char *rom_name, int stype)
|
|||||||
if (result == FR_OK)
|
if (result == FR_OK)
|
||||||
{
|
{
|
||||||
//for savegame
|
//for savegame
|
||||||
uint8_t cartsave_data[size];
|
uint8_t cartsave_data[size] = {0};
|
||||||
|
|
||||||
for (int zero = 0; zero < size; zero++) //TODO: why set all to zero when it should be already?
|
|
||||||
cartsave_data[zero] = 0;
|
|
||||||
|
|
||||||
TRACEF(disp, "cartsave_data=%p", &cartsave_data);
|
TRACEF(disp, "cartsave_data=%p", &cartsave_data);
|
||||||
|
|
||||||
@ -1843,13 +1848,17 @@ void initFilesystem(void)
|
|||||||
fs = malloc(sizeof (FATFS)); /* Get work area for the volume */
|
fs = malloc(sizeof (FATFS)); /* Get work area for the volume */
|
||||||
FRESULT result = f_mount(fs,"",1);
|
FRESULT result = f_mount(fs,"",1);
|
||||||
if(result != FR_OK)
|
if(result != FR_OK)
|
||||||
|
{
|
||||||
|
fat_initialized = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
//printText("mount error", 11, -1, disp);
|
//printText("mount error", 11, -1, disp);
|
||||||
}
|
}
|
||||||
|
|
||||||
fatInitRam();
|
fatInitRam();
|
||||||
fatInit();
|
fatInit();
|
||||||
fat_initialized = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//prints the sdcard-filesystem content
|
//prints the sdcard-filesystem content
|
||||||
@ -2199,39 +2208,42 @@ void bootRom(display_context_t disp, int silent)
|
|||||||
if (boot_save != 0)
|
if (boot_save != 0)
|
||||||
{
|
{
|
||||||
u8 cfg_file[32];
|
u8 cfg_file[32];
|
||||||
u8 found = 0;
|
|
||||||
u8 resp = 0;
|
|
||||||
u8 tmp[32];
|
|
||||||
|
|
||||||
//set cfg file with last loaded cart info and save-type
|
//set cfg file with last loaded cart info and save-type
|
||||||
sprintf(cfg_file, "/ED64/%s/LAST.CRT", save_path);
|
sprintf(cfg_file, "/ED64/%s/LAST.CRT", save_path);
|
||||||
|
|
||||||
resp = fatCreateRecIfNotExist(cfg_file, 0);
|
FRESULT result;
|
||||||
resp = fatOpenFileByName(cfg_file, 1); //512 bytes fix one cluster
|
FIL file;
|
||||||
|
result = f_open(&file, cfg_file, FA_OPEN_ALWAYS);
|
||||||
|
|
||||||
|
if (result == FR_OK)
|
||||||
|
{
|
||||||
|
static uint8_t cfg_file_data[512] = {0};
|
||||||
|
cfg_file_data[0] = boot_save;
|
||||||
|
cfg_file_data[1] = boot_cic;
|
||||||
|
scopy(rom_filename, cfg_file_data + 2);
|
||||||
|
|
||||||
|
UINT* bw;
|
||||||
|
result =
|
||||||
|
f_write (
|
||||||
|
&file, /* [IN] Pointer to the file object structure */
|
||||||
|
&cfg_file_data, /* [IN] Pointer to the data to be written */
|
||||||
|
512, /* [IN] Number of bytes to write */
|
||||||
|
bw /* [OUT] Pointer to the variable to return number of bytes written */
|
||||||
|
);
|
||||||
|
|
||||||
|
result = f_close(&file);
|
||||||
|
|
||||||
static uint8_t cfg_file_data[512] = {0};
|
//set the fpga cart-save type
|
||||||
cfg_file_data[0] = boot_save;
|
evd_setSaveType(boot_save);
|
||||||
cfg_file_data[1] = boot_cic;
|
|
||||||
scopy(rom_filename, cfg_file_data + 2);
|
saveTypeFromSd(disp, rom_filename, boot_save);
|
||||||
|
}
|
||||||
fatWriteFile(&cfg_file_data, 1);
|
|
||||||
sleep(500);
|
|
||||||
|
|
||||||
//set the fpga cart-save type
|
|
||||||
evd_setSaveType(boot_save);
|
|
||||||
|
|
||||||
TRACE(disp, "try to restore save from sd");
|
|
||||||
|
|
||||||
resp = saveTypeFromSd(disp, rom_filename, boot_save);
|
|
||||||
|
|
||||||
TRACEF(disp, "saveTypeFromSd returned: %i", resp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TRACE(disp, "Cartridge-Savetype set");
|
TRACE(disp, "Cartridge-Savetype set");
|
||||||
TRACE(disp, "information stored for reboot-save...");
|
TRACE(disp, "information stored for reboot-save...");
|
||||||
|
|
||||||
sleep(50);
|
|
||||||
|
|
||||||
u32 cart, country;
|
u32 cart, country;
|
||||||
u32 info = *(vu32 *)0xB000003C;
|
u32 info = *(vu32 *)0xB000003C;
|
||||||
cart = info >> 16;
|
cart = info >> 16;
|
||||||
@ -2250,7 +2262,7 @@ void bootRom(display_context_t disp, int silent)
|
|||||||
if (ok == 0)
|
if (ok == 0)
|
||||||
{
|
{
|
||||||
printText("cheats found...", 3, -1, disp);
|
printText("cheats found...", 3, -1, disp);
|
||||||
sleep(600);
|
//sleep(600);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2273,7 +2285,7 @@ void bootRom(display_context_t disp, int silent)
|
|||||||
}
|
}
|
||||||
|
|
||||||
evd_lockRegs();
|
evd_lockRegs();
|
||||||
sleep(1000);
|
//sleep(1000);
|
||||||
|
|
||||||
while (!(disp = display_lock()))
|
while (!(disp = display_lock()))
|
||||||
;
|
;
|
||||||
@ -2388,15 +2400,26 @@ void readRomConfig(display_context_t disp, char *short_filename, char *full_file
|
|||||||
|
|
||||||
uint8_t rom_cfg_data[512];
|
uint8_t rom_cfg_data[512];
|
||||||
|
|
||||||
FatRecord rec_tmpf;
|
FRESULT result;
|
||||||
|
FIL file;
|
||||||
|
UINT bytesread;
|
||||||
|
result = f_open(&file, cfg_filename, FA_READ);
|
||||||
|
|
||||||
if (fatFindRecord(cfg_filename, &rec_tmpf, 0) == 0)
|
if (result == FR_OK)
|
||||||
{
|
{
|
||||||
//read rom-config
|
|
||||||
u8 resp = 0;
|
|
||||||
resp = fatOpenFileByName(cfg_filename, 0);
|
|
||||||
resp = fatReadFile(&rom_cfg_data, 1);
|
|
||||||
|
|
||||||
|
result =
|
||||||
|
f_read (
|
||||||
|
&file, /* [IN] File object */
|
||||||
|
&rom_cfg_data, /* [OUT] Buffer to store read data */
|
||||||
|
512, /* [IN] Number of bytes to read */
|
||||||
|
&bytesread /* [OUT] Number of bytes read */
|
||||||
|
);
|
||||||
|
|
||||||
|
result = f_close(&file);
|
||||||
|
|
||||||
|
|
||||||
|
rom_config[0] = 1; //preload cursor position 1 cic
|
||||||
rom_config[1] = rom_cfg_data[0];
|
rom_config[1] = rom_cfg_data[0];
|
||||||
rom_config[2] = rom_cfg_data[1];
|
rom_config[2] = rom_cfg_data[1];
|
||||||
rom_config[3] = rom_cfg_data[2];
|
rom_config[3] = rom_cfg_data[2];
|
||||||
@ -2406,16 +2429,13 @@ void readRomConfig(display_context_t disp, char *short_filename, char *full_file
|
|||||||
rom_config[7] = rom_cfg_data[6];
|
rom_config[7] = rom_cfg_data[6];
|
||||||
rom_config[8] = rom_cfg_data[7];
|
rom_config[8] = rom_cfg_data[7];
|
||||||
rom_config[9] = rom_cfg_data[8];
|
rom_config[9] = rom_cfg_data[8];
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//preload with header data
|
//preload with header data
|
||||||
|
|
||||||
romInfoScreen(disp, full_filename, 1); //silent info screen with readout
|
romInfoScreen(disp, full_filename, 1); //silent info screen with readout
|
||||||
}
|
}
|
||||||
|
|
||||||
//preload cursor position 1 cic
|
|
||||||
rom_config[0] = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void alterRomConfig(int type, int mode)
|
void alterRomConfig(int type, int mode)
|
||||||
@ -3039,22 +3059,42 @@ void loadFile(display_context_t disp)
|
|||||||
case 1:
|
case 1:
|
||||||
if (quick_boot) //write to the file
|
if (quick_boot) //write to the file
|
||||||
{
|
{
|
||||||
u8 resp = 0;
|
FRESULT result;
|
||||||
resp = fatCreateRecIfNotExist("/ED64/LASTROM.CFG", 0);
|
FIL file;
|
||||||
resp = fatOpenFileByName("/ED64/LASTROM.CFG", 1); //512 bytes fix one cluster
|
UINT bytesread;
|
||||||
static uint8_t lastrom_file_data[512] = {0};
|
result = f_open(&file, "/ED64/LASTROM.CFG", FA_OPEN_ALWAYS);
|
||||||
scopy(name_file, lastrom_file_data);
|
|
||||||
fatWriteFile(&lastrom_file_data, 1);
|
if (result == FR_OK)
|
||||||
|
{
|
||||||
|
static uint8_t lastrom_file_data[512] = {0};
|
||||||
|
scopy(name_file, lastrom_file_data);
|
||||||
|
|
||||||
|
UINT* bw;
|
||||||
|
result =
|
||||||
|
f_write (
|
||||||
|
&file, /* [IN] Pointer to the file object structure */
|
||||||
|
&lastrom_file_data, /* [IN] Pointer to the data to be written */
|
||||||
|
512, /* [IN] Number of bytes to write */
|
||||||
|
bw /* [OUT] Pointer to the variable to return number of bytes written */
|
||||||
|
);
|
||||||
|
|
||||||
|
result = f_close(&file);
|
||||||
|
|
||||||
|
if (result == FR_OK)
|
||||||
|
{
|
||||||
|
//read rom_config data
|
||||||
|
readRomConfig(disp, rom_filename, name_file);
|
||||||
|
|
||||||
|
loadrom(disp, name_file, 1);
|
||||||
|
display_show(disp);
|
||||||
|
|
||||||
|
//rom loaded mapping
|
||||||
|
input_mapping = rom_loaded;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//read rom_config data
|
|
||||||
readRomConfig(disp, rom_filename, name_file);
|
|
||||||
|
|
||||||
loadrom(disp, name_file, 1);
|
|
||||||
display_show(disp);
|
|
||||||
|
|
||||||
//rom loaded mapping
|
|
||||||
input_mapping = rom_loaded;
|
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
while (!(disp = display_lock()))
|
while (!(disp = display_lock()))
|
||||||
@ -3995,11 +4035,6 @@ void handleInput(display_context_t disp, sprite_t *contr)
|
|||||||
}
|
}
|
||||||
case rom_config_box:
|
case rom_config_box:
|
||||||
{
|
{
|
||||||
//save rom_cfg[] to
|
|
||||||
// /ED64/CFG/Romname.cfg if not exist create
|
|
||||||
// if exist open/write
|
|
||||||
|
|
||||||
//print confirm msg
|
|
||||||
char name_file[256];
|
char name_file[256];
|
||||||
|
|
||||||
if (strcmp(pwd, "/") == 0)
|
if (strcmp(pwd, "/") == 0)
|
||||||
@ -4014,27 +4049,41 @@ void handleInput(display_context_t disp, sprite_t *contr)
|
|||||||
//set rom_cfg
|
//set rom_cfg
|
||||||
sprintf(rom_cfg_file, "/ED64/CFG/%s.CFG", rom_filename);
|
sprintf(rom_cfg_file, "/ED64/CFG/%s.CFG", rom_filename);
|
||||||
|
|
||||||
resp = fatCreateRecIfNotExist(rom_cfg_file, 0);
|
|
||||||
resp = fatOpenFileByName(rom_cfg_file, 1); //512 bytes fix one cluster
|
|
||||||
|
|
||||||
static uint8_t cfg_file_data[512] = {0};
|
FRESULT result;
|
||||||
cfg_file_data[0] = rom_config[1]; //cic
|
FIL file;
|
||||||
cfg_file_data[1] = rom_config[2]; //save
|
result = f_open(&file, rom_cfg_file, FA_OPEN_ALWAYS);
|
||||||
cfg_file_data[2] = rom_config[3]; //tv
|
|
||||||
cfg_file_data[3] = rom_config[4]; //cheat
|
if (result == FR_OK)
|
||||||
cfg_file_data[4] = rom_config[5]; //chksum
|
{
|
||||||
cfg_file_data[5] = rom_config[6]; //rating
|
static uint8_t cfg_file_data[512] = {0};
|
||||||
cfg_file_data[6] = rom_config[7]; //country
|
cfg_file_data[0] = rom_config[1]; //cic
|
||||||
cfg_file_data[7] = rom_config[8];
|
cfg_file_data[1] = rom_config[2]; //save
|
||||||
cfg_file_data[8] = rom_config[9];
|
cfg_file_data[2] = rom_config[3]; //tv
|
||||||
|
cfg_file_data[3] = rom_config[4]; //cheat
|
||||||
|
cfg_file_data[4] = rom_config[5]; //chksum
|
||||||
|
cfg_file_data[5] = rom_config[6]; //rating
|
||||||
|
cfg_file_data[6] = rom_config[7]; //country
|
||||||
|
cfg_file_data[7] = rom_config[8];
|
||||||
|
cfg_file_data[8] = rom_config[9];
|
||||||
|
|
||||||
|
//copy full rom path to offset at 32 byte - 32 bytes reversed
|
||||||
|
scopy(name_file, cfg_file_data + 32); //filename to rom_cfg file
|
||||||
|
|
||||||
|
UINT* bw;
|
||||||
|
result =
|
||||||
|
f_write (
|
||||||
|
&file, /* [IN] Pointer to the file object structure */
|
||||||
|
&cfg_file_data, /* [IN] Pointer to the data to be written */
|
||||||
|
512, /* [IN] Number of bytes to write */
|
||||||
|
bw /* [OUT] Pointer to the variable to return number of bytes written */
|
||||||
|
);
|
||||||
|
|
||||||
|
result = f_close(&file);
|
||||||
|
|
||||||
//copy full rom path to offset at 32 byte - 32 bytes reversed
|
drawShortInfoBox(disp, " done", 0);
|
||||||
scopy(name_file, cfg_file_data + 32); //filename to rom_cfg file
|
toplist_reload = 1;
|
||||||
fatWriteFile(&cfg_file_data, 1);
|
}
|
||||||
sleep(200);
|
|
||||||
|
|
||||||
drawShortInfoBox(disp, " done", 0);
|
|
||||||
toplist_reload = 1;
|
|
||||||
|
|
||||||
input_mapping = abort_screen;
|
input_mapping = abort_screen;
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user