|
272 | 272 |
|
273 | 273 | void draw_text(short x, short y, char *string, bool ext, bool current) {
|
274 | 274 | int length = !ext ? strlen(string) : strlen(string)-(strlen(EXTENSIONS[STEP])+1);
|
| 275 | + if(length > 64){length = 64;} |
275 | 276 | int rows = 7;
|
276 | 277 | int cols = 5;
|
277 | 278 | for(int n = 0; n < length; n++) {
|
|
894 | 895 |
|
895 | 896 | void get_files() {
|
896 | 897 |
|
| 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 | + |
897 | 903 | char path[256] = "/sd/roms/";
|
898 | 904 | strcat(&path[strlen(path) - 1], DIRECTORIES[STEP]);
|
899 | 905 | strcat(&path[strlen(path) - 1],folder_path);
|
|
915 | 921 |
|
916 | 922 | DIR *directory = opendir(path);
|
917 | 923 | 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); |
918 | 928 | printf("\nopendir(%s):failed\nERR: %d\n", path, errno);
|
919 | 929 | return NULL;
|
920 | 930 | } else {
|
921 | 931 | if(directory == NULL) {
|
922 | 932 | 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); |
923 | 937 | } else {
|
924 | 938 | printf("\nfiles found in:\t%s", path);
|
925 | 939 | FILES = (char**)malloc(MAX_FILES * sizeof(void*));
|
|
955 | 969 |
|
956 | 970 | ROMS.pages = ROMS.total/ROMS.limit;
|
957 | 971 | 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 | + } |
959 | 980 |
|
960 | 981 | }
|
961 | 982 |
|
962 | 983 | 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 |
| - */ |
1005 | 984 | }
|
1006 | 985 |
|
1007 | 986 | void draw_files() {
|
|
1024 | 1003 | for(int n = ROMS.offset; n < limit; n++) {
|
1025 | 1004 | draw_text(x+24,y,FILES[n],true,n == ROMS.offset ? true : false);
|
1026 | 1005 |
|
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 ? |
1029 | 1008 | draw_folder(x,y-6,n == ROMS.offset ? true : false) :
|
1030 | 1009 | draw_media(x,y-6,n == ROMS.offset ? true : false);
|
1031 | 1010 | if(n == ROMS.offset) {
|
|
1034 | 1013 | }
|
1035 | 1014 | y+=20;
|
1036 | 1015 | }
|
1037 |
| - |
1038 |
| - |
1039 | 1016 | draw_numbers();
|
1040 | 1017 | }
|
1041 | 1018 |
|
1042 |
| - void has_save_file(char *name) { |
| 1019 | + void has_save_file(char *save_name) { |
1043 | 1020 | 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 | + } |
1057 | 1059 | }
|
1058 | 1060 | }
|
1059 |
| - closedir(directory); |
| 1061 | + printf("\n---------------------\n"); |
1060 | 1062 | }
|
1061 | 1063 | //}#pragma endregion Files
|
1062 | 1064 |
|
|
1089 | 1091 | }
|
1090 | 1092 | draw_mask(0,0,SCREEN.w - 56,32);
|
1091 | 1093 | draw_text(16,16,EMULATORS[STEP], false, true);
|
| 1094 | + draw_contrast(); |
1092 | 1095 | STEP == 0 ? draw_settings() : get_files();
|
1093 | 1096 | clean_up();
|
1094 | 1097 | }
|
|
1522 | 1525 | OPTION = 0;
|
1523 | 1526 | char file_to_load[256] = "";
|
1524 | 1527 | 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; |
1526 | 1529 |
|
1527 |
| - if(directory) { |
| 1530 | + if(is_directory) { |
1528 | 1531 | FOLDER = true;
|
1529 | 1532 | PREVIOUS = ROMS.offset;
|
1530 | 1533 | ROMS.offset = 0;
|
|
1569 | 1572 | printf("\n------\nfolder_path:%s\n-----\n", folder_path);
|
1570 | 1573 | get_files();
|
1571 | 1574 | } else {
|
1572 |
| - STEP == 0 ? draw_settings() : draw_files(); |
| 1575 | + STEP == 0 ? draw_settings() : get_files(); |
1573 | 1576 | }
|
1574 | 1577 | } else {
|
1575 | 1578 | if(FOLDER) {
|
|
0 commit comments