Skip to content

Commit c59e716

Browse files
Thu 19 Dec 2019 16:12:17 EST - working on #38
1 parent bcbafe3 commit c59e716

File tree

3 files changed

+71
-68
lines changed

3 files changed

+71
-68
lines changed

Launchers/retro-esp32/main/includes/declarations.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ void draw_launcher_options();
8282
void get_files();
8383
void sort_files(char** files);
8484
void draw_files();
85-
void has_save_file(char *name);
85+
void has_save_file(char *save_name);
8686

8787
/*
8888
Animations
@@ -108,4 +108,4 @@ void rom_delete_save();
108108
/*
109109
Launcher
110110
*/
111-
static void launcher();
111+
static void launcher();

Launchers/retro-esp32/main/includes/definitions.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
3131
*/
3232
#define MAX_FILES 4096
33-
#define MAX_LENGTH 100
33+
#define MAX_LENGTH 64
3434

3535
/*
3636

Launchers/retro-esp32/main/main.c

Lines changed: 68 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,7 @@
272272

273273
void draw_text(short x, short y, char *string, bool ext, bool current) {
274274
int length = !ext ? strlen(string) : strlen(string)-(strlen(EXTENSIONS[STEP])+1);
275+
if(length > 64){length = 64;}
275276
int rows = 7;
276277
int cols = 5;
277278
for(int n = 0; n < length; n++) {
@@ -894,6 +895,11 @@
894895

895896
void get_files() {
896897

898+
char message[100];
899+
sprintf(message, "searching %s roms", DIRECTORIES[STEP]);
900+
int center = ceil((320/2)-((strlen(message)*5)/2));
901+
draw_text(center,134,message,false,false);
902+
897903
char path[256] = "/sd/roms/";
898904
strcat(&path[strlen(path) - 1], DIRECTORIES[STEP]);
899905
strcat(&path[strlen(path) - 1],folder_path);
@@ -915,11 +921,19 @@
915921

916922
DIR *directory = opendir(path);
917923
if(!directory) {
924+
draw_mask(0,132,320,10);
925+
sprintf(message, "unable to open %s directory", DIRECTORIES[STEP]);
926+
int center = ceil((320/2)-((strlen(message)*5)/2));
927+
draw_text(center,134,message,false,false);
918928
printf("\nopendir(%s):failed\nERR: %d\n", path, errno);
919929
return NULL;
920930
} else {
921931
if(directory == NULL) {
922932
printf("\nno files found in:\t%s", path);
933+
draw_mask(0,132,320,10);
934+
sprintf(message, "%s directory not found", DIRECTORIES[STEP]);
935+
int center = ceil((320/2)-((strlen(message)*5)/2));
936+
draw_text(center,134,message,false,false);
923937
} else {
924938
printf("\nfiles found in:\t%s", path);
925939
FILES = (char**)malloc(MAX_FILES * sizeof(void*));
@@ -955,53 +969,18 @@
955969

956970
ROMS.pages = ROMS.total/ROMS.limit;
957971
if(ROMS.offset > ROMS.total) { ROMS.offset = 0;}
958-
draw_files();
972+
draw_mask(0,132,320,10);
973+
if(ROMS.total != 0) {
974+
draw_files();
975+
} else {
976+
sprintf(message, "no %s roms available", DIRECTORIES[STEP]);
977+
int center = ceil((320/2)-((strlen(message)*5)/2));
978+
draw_text(center,134,message,false,false);
979+
}
959980

960981
}
961982

962983
printf("\n---------------------\n");
963-
964-
/*
965-
if(directory == NULL) {
966-
char message[100] = "no games available";
967-
int center = ceil((320/2)-((strlen(message)*5)/2));
968-
draw_text(center,134,message,false,false);
969-
} else {
970-
rewinddir(directory);
971-
struct dirent *file;
972-
while ((file = readdir(directory)) != NULL) {
973-
int rom_length = strlen(file->d_name);
974-
int ext_lext = strlen(EXTENSIONS[STEP]);
975-
bool extenstion = strcmp(&file->d_name[rom_length - ext_lext], EXTENSIONS[STEP]) == 0 && file->d_name[0] != '.';
976-
if(extenstion || (file->d_type == 2)) {
977-
if(ROMS.total >= MAX_FILES) { break; }
978-
size_t length = strlen(file->d_name);
979-
//if(FILES[ROMS.total]) {}
980-
//FILES[ROMS.total] = (file->d_type == 2) ? (char*)malloc(len + 5) : (char*)malloc(len + 1);
981-
if((file->d_type == 2)) {
982-
char dir[256];
983-
strcpy(dir, file->d_name);
984-
char dd[8];
985-
sprintf(dd, "%s", ext_lext == 2 ? "dir" : ".dir");
986-
strcat(&dir[strlen(dir) - 1], dd);
987-
//strcpy(FILES[ROMS.total], dir);
988-
} else {
989-
//strcpy(FILES[ROMS.total], file->d_name);
990-
}
991-
ROMS.total++;
992-
}
993-
}
994-
ROMS.pages = ROMS.total/ROMS.limit;
995-
if(ROMS.offset > ROMS.total) { ROMS.offset = 0;}
996-
997-
closedir(directory);
998-
printf("\n");
999-
//if(ROMS.total < 500) sort_files(FILES);
1000-
//draw_files();
1001-
1002-
//free(FILES);
1003-
}
1004-
*/
1005984
}
1006985

1007986
void draw_files() {
@@ -1024,8 +1003,8 @@
10241003
for(int n = ROMS.offset; n < limit; n++) {
10251004
draw_text(x+24,y,FILES[n],true,n == ROMS.offset ? true : false);
10261005

1027-
bool directory = strcmp(&FILES[n][strlen(FILES[n]) - 3], "dir") == 0;
1028-
directory ?
1006+
bool is_directory = strcmp(&FILES[n][strlen(FILES[n]) - 3], "dir") == 0;
1007+
is_directory ?
10291008
draw_folder(x,y-6,n == ROMS.offset ? true : false) :
10301009
draw_media(x,y-6,n == ROMS.offset ? true : false);
10311010
if(n == ROMS.offset) {
@@ -1034,29 +1013,52 @@
10341013
}
10351014
y+=20;
10361015
}
1037-
1038-
10391016
draw_numbers();
10401017
}
10411018

1042-
void has_save_file(char *name) {
1019+
void has_save_file(char *save_name) {
10431020
SAVED = false;
1044-
DIR *directory;
1045-
struct dirent *file;
1046-
char path[256] = "/sd/odroid/data/";
1047-
strcat(&path[strlen(path) - 1], DIRECTORIES[STEP]);
1048-
directory = opendir(path);
1049-
gets(name);
1050-
while ((file = readdir(directory)) != NULL) {
1051-
char tmp[256] = "";
1052-
strcat(tmp, file->d_name);
1053-
tmp[strlen(tmp)-4] = '\0';
1054-
gets(tmp);
1055-
if(strcmp(name, tmp) == 0){
1056-
SAVED = true;
1021+
1022+
printf("\n----- %s -----", __func__);
1023+
printf("\nsave_name: %s", save_name);
1024+
1025+
char save_dir[256] = "/sd/odroid/data/";
1026+
strcat(&save_dir[strlen(save_dir) - 1], DIRECTORIES[STEP]);
1027+
printf("\nsave_dir: %s", save_dir);
1028+
1029+
char save_file[256] = "";
1030+
sprintf(save_file, "%s/%s", save_dir, save_name);
1031+
strcat(&save_file[strlen(save_file) - 1], ".sav");
1032+
printf("\nsave_file: %s", save_file);
1033+
1034+
if(ROMS.total != 0) {
1035+
while(ROMS.total--) {
1036+
free(FILES[ROMS.total]);
1037+
if(ROMS.total == 0){
1038+
free(FILES);
1039+
break;
1040+
}
1041+
}
1042+
}
1043+
1044+
DIR *directory = opendir(save_dir);
1045+
if(directory == NULL) {
1046+
perror("opendir() error");
1047+
} else {
1048+
gets(save_file);
1049+
struct dirent *file;
1050+
while ((file = readdir(directory)) != NULL) {
1051+
char tmp[256] = "";
1052+
strcat(tmp, file->d_name);
1053+
tmp[strlen(tmp)-4] = '\0';
1054+
gets(tmp);
1055+
printf("\ntmp:%s save_name:%s", tmp, save_name);
1056+
if(strcmp(save_name, tmp) == 0) {
1057+
SAVED = true;
1058+
}
10571059
}
10581060
}
1059-
closedir(directory);
1061+
printf("\n---------------------\n");
10601062
}
10611063
//}#pragma endregion Files
10621064

@@ -1089,6 +1091,7 @@
10891091
}
10901092
draw_mask(0,0,SCREEN.w - 56,32);
10911093
draw_text(16,16,EMULATORS[STEP], false, true);
1094+
draw_contrast();
10921095
STEP == 0 ? draw_settings() : get_files();
10931096
clean_up();
10941097
}
@@ -1522,9 +1525,9 @@
15221525
OPTION = 0;
15231526
char file_to_load[256] = "";
15241527
sprintf(file_to_load, "%s/%s", ROM.path, ROM.name);
1525-
bool directory = strcmp(&file_to_load[strlen(file_to_load) - 3], "dir") == 0;
1528+
bool is_directory = strcmp(&file_to_load[strlen(file_to_load) - 3], "dir") == 0;
15261529

1527-
if(directory) {
1530+
if(is_directory) {
15281531
FOLDER = true;
15291532
PREVIOUS = ROMS.offset;
15301533
ROMS.offset = 0;
@@ -1569,7 +1572,7 @@
15691572
printf("\n------\nfolder_path:%s\n-----\n", folder_path);
15701573
get_files();
15711574
} else {
1572-
STEP == 0 ? draw_settings() : draw_files();
1575+
STEP == 0 ? draw_settings() : get_files();
15731576
}
15741577
} else {
15751578
if(FOLDER) {

0 commit comments

Comments
 (0)