mirror of
https://github.com/sanni/cartreader.git
synced 2024-11-23 21:19:16 +01:00
NES.ino: Factorise Create{PRG,CHR,RAM}FileInSD functions
Also, gets rid of filesCount global. Frees 390 bytes of program space and 21 bytes of global ram space.
This commit is contained in:
parent
64db4ded54
commit
59665bb848
@ -124,6 +124,9 @@ static const byte PROGMEM mapsize[] = {
|
|||||||
255, 7, 7, 8, 8, 0, 0, // 110-in-1 multicart (same as 225) [UNLICENSED]
|
255, 7, 7, 8, 8, 0, 0, // 110-in-1 multicart (same as 225) [UNLICENSED]
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const char _file_name_no_number_fmt[] PROGMEM = "%s.%s";
|
||||||
|
const char _file_name_with_number_fmt[] PROGMEM = "%s.%02d.%s";
|
||||||
|
|
||||||
/******************************************
|
/******************************************
|
||||||
Defines
|
Defines
|
||||||
*****************************************/
|
*****************************************/
|
||||||
@ -192,9 +195,6 @@ byte bytecheck;
|
|||||||
byte firstbyte;
|
byte firstbyte;
|
||||||
boolean flashfound = false; // NESmaker 39SF040 Flash Cart
|
boolean flashfound = false; // NESmaker 39SF040 Flash Cart
|
||||||
|
|
||||||
// Files
|
|
||||||
char fileCount[3];
|
|
||||||
|
|
||||||
// Cartridge Config
|
// Cartridge Config
|
||||||
byte mapper;
|
byte mapper;
|
||||||
byte prgsize;
|
byte prgsize;
|
||||||
@ -1068,79 +1068,39 @@ void CreateROMFolderInSD() {
|
|||||||
sd.chdir(folder);
|
sd.chdir(folder);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreatePRGFileInSD() {
|
FsFile createNewFile(const char *prefix, const char *extension) {
|
||||||
strcpy(fileName, "PRG");
|
char filename[FILENAME_LENGTH];
|
||||||
strcat(fileName, ".bin");
|
snprintf_P(filename, sizeof(filename), _file_name_no_number_fmt, prefix, extension);
|
||||||
for (byte i = 0; i < 100; i++) {
|
for (byte i = 0; i < 100; i++) {
|
||||||
if (!sd.exists(fileName)) {
|
if (!sd.exists(filename)) {
|
||||||
myFile = sd.open(fileName, O_RDWR | O_CREAT);
|
return sd.open(fileName, O_RDWR | O_CREAT);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
sprintf(fileCount, "%02d", i);
|
snprintf_P(filename, sizeof(filename), _file_name_with_number_fmt, prefix, i, extension);
|
||||||
strcpy(fileName, "PRG.");
|
|
||||||
strcat(fileName, fileCount);
|
|
||||||
strcat(fileName, ".bin");
|
|
||||||
}
|
}
|
||||||
if (!myFile) {
|
// Could not find an available name, recompose the original name and error out.
|
||||||
LED_RED_ON;
|
snprintf_P(filename, sizeof(filename), _file_name_no_number_fmt, prefix, extension);
|
||||||
|
|
||||||
display_Clear();
|
LED_RED_ON;
|
||||||
println_Msg(F("PRG FILE FAILED!"));
|
|
||||||
display_Update();
|
|
||||||
print_Error(sd_error_STR, true);
|
|
||||||
|
|
||||||
LED_RED_OFF;
|
display_Clear();
|
||||||
}
|
print_Msg(filename);
|
||||||
|
println_Msg(F(": no available name"));
|
||||||
|
display_Update();
|
||||||
|
print_FatalError(sd_error_STR);
|
||||||
|
|
||||||
|
LED_RED_OFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CreatePRGFileInSD() {
|
||||||
|
myFile = createNewFile("PRG", "bin");
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateCHRFileInSD() {
|
void CreateCHRFileInSD() {
|
||||||
strcpy(fileName, "CHR");
|
myFile = createNewFile("CHR", "bin");
|
||||||
strcat(fileName, ".bin");
|
|
||||||
for (byte i = 0; i < 100; i++) {
|
|
||||||
if (!sd.exists(fileName)) {
|
|
||||||
myFile = sd.open(fileName, O_RDWR | O_CREAT);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
sprintf(fileCount, "%02d", i);
|
|
||||||
strcpy(fileName, "CHR.");
|
|
||||||
strcat(fileName, fileCount);
|
|
||||||
strcat(fileName, ".bin");
|
|
||||||
}
|
|
||||||
if (!myFile) {
|
|
||||||
LED_RED_ON;
|
|
||||||
|
|
||||||
display_Clear();
|
|
||||||
println_Msg(F("CHR FILE FAILED!"));
|
|
||||||
display_Update();
|
|
||||||
print_Error(sd_error_STR, true);
|
|
||||||
|
|
||||||
LED_RED_OFF;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateRAMFileInSD() {
|
void CreateRAMFileInSD() {
|
||||||
strcpy(fileName, "RAM");
|
myFile = createNewFile("RAM", "bin");
|
||||||
strcat(fileName, ".bin");
|
|
||||||
for (byte i = 0; i < 100; i++) {
|
|
||||||
if (!sd.exists(fileName)) {
|
|
||||||
myFile = sd.open(fileName, O_RDWR | O_CREAT);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
sprintf(fileCount, "%02d", i);
|
|
||||||
strcpy(fileName, "RAM.");
|
|
||||||
strcat(fileName, fileCount);
|
|
||||||
strcat(fileName, ".bin");
|
|
||||||
}
|
|
||||||
if (!myFile) {
|
|
||||||
LED_RED_ON;
|
|
||||||
|
|
||||||
display_Clear();
|
|
||||||
println_Msg(F("RAM FILE FAILED!"));
|
|
||||||
display_Update();
|
|
||||||
print_Error(sd_error_STR, true);
|
|
||||||
|
|
||||||
LED_RED_OFF;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef nointro
|
#ifndef nointro
|
||||||
|
Loading…
Reference in New Issue
Block a user