|
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