1 #include <sys/stat.h>
2 #include <dirent.h>
3 
4 #include "utils.h"
5 #include "osd.h"
6 
create_default_directories(void)7 void create_default_directories(void) {
8     const char *homedir;
9     if ((homedir = getenv("HOME")) == NULL) {
10         homedir = getpwuid(getuid())->pw_dir;
11     }
12 
13     char pathname[MAXPATHLEN];
14 
15 	/* base directory */
16     sprintf (pathname, "%s%s", homedir, DEFAULT_PATH);
17     DIR *dir = opendir(pathname);
18     if (dir) closedir(dir);
19     else mkdir(pathname,S_IRWXU);
20 
21     /* default SRAM & Savestate files directories */
22     sprintf (pathname, "%s%s/saves", homedir, DEFAULT_PATH);
23     dir = opendir(pathname);
24     if (dir) closedir(dir);
25     else mkdir(pathname,S_IRWXU);
26     sprintf (pathname, "%s%s/saves/md", homedir, DEFAULT_PATH);
27     dir = opendir(pathname);
28     if (dir) closedir(dir);
29     else mkdir(pathname,S_IRWXU);
30     sprintf (pathname, "%s%s/saves/ms", homedir, DEFAULT_PATH);
31     dir = opendir(pathname);
32     if (dir) closedir(dir);
33     else mkdir(pathname,S_IRWXU);
34     sprintf (pathname, "%s%s/saves/gg", homedir, DEFAULT_PATH);
35     dir = opendir(pathname);
36     if (dir) closedir(dir);
37     else mkdir(pathname,S_IRWXU);
38     sprintf (pathname, "%s%s/saves/sg", homedir, DEFAULT_PATH);
39     dir = opendir(pathname);
40     if (dir) closedir(dir);
41     else mkdir(pathname,S_IRWXU);
42     sprintf (pathname, "%s%s/saves/cd", homedir, DEFAULT_PATH);
43     dir = opendir(pathname);
44     if (dir) closedir(dir);
45     else mkdir(pathname,S_IRWXU);
46 
47     /* default Snapshot files directories */
48     sprintf (pathname, "%s%s/snaps", homedir, DEFAULT_PATH);
49     dir = opendir(pathname);
50     if (dir) closedir(dir);
51     else mkdir(pathname,S_IRWXU);
52     sprintf (pathname, "%s%s/snaps/md", homedir, DEFAULT_PATH);
53     dir = opendir(pathname);
54     if (dir) closedir(dir);
55     else mkdir(pathname,S_IRWXU);
56     sprintf (pathname, "%s%s/snaps/ms", homedir, DEFAULT_PATH);
57     dir = opendir(pathname);
58     if (dir) closedir(dir);
59     else mkdir(pathname,S_IRWXU);
60     sprintf (pathname, "%s%s/snaps/gg", homedir, DEFAULT_PATH);
61     dir = opendir(pathname);
62     if (dir) closedir(dir);
63     else mkdir(pathname,S_IRWXU);
64     sprintf (pathname, "%s%s/snaps/sg", homedir, DEFAULT_PATH);
65     dir = opendir(pathname);
66     if (dir) closedir(dir);
67     else mkdir(pathname,S_IRWXU);
68     sprintf (pathname, "%s%s/snaps/cd", homedir, DEFAULT_PATH);
69     dir = opendir(pathname);
70     if (dir) closedir(dir);
71     else mkdir(pathname,S_IRWXU);
72 
73     /* default Cheat files directories */
74     sprintf (pathname, "%s%s/cheats", homedir, DEFAULT_PATH);
75     dir = opendir(pathname);
76     if (dir) closedir(dir);
77     else mkdir(pathname,S_IRWXU);
78     sprintf (pathname, "%s%s/cheats/md", homedir, DEFAULT_PATH);
79     dir = opendir(pathname);
80     if (dir) closedir(dir);
81     else mkdir(pathname,S_IRWXU);
82     sprintf (pathname, "%s%s/cheats/ms", homedir, DEFAULT_PATH);
83     dir = opendir(pathname);
84     if (dir) closedir(dir);
85     else mkdir(pathname,S_IRWXU);
86     sprintf (pathname, "%s%s/cheats/gg", homedir, DEFAULT_PATH);
87     dir = opendir(pathname);
88     if (dir) closedir(dir);
89     else mkdir(pathname,S_IRWXU);
90     sprintf (pathname, "%s%s/cheats/sg", homedir, DEFAULT_PATH);
91     dir = opendir(pathname);
92     if (dir) closedir(dir);
93     else mkdir(pathname,S_IRWXU);
94     sprintf (pathname, "%s%s/cheats/cd", homedir, DEFAULT_PATH);
95     dir = opendir(pathname);
96     if (dir) closedir(dir);
97     else mkdir(pathname,S_IRWXU);
98 
99     /* default BIOS ROM files directories */
100     sprintf (pathname, "%s%s/bios", homedir, DEFAULT_PATH);
101     dir = opendir(pathname);
102     if (dir) closedir(dir);
103     else mkdir(pathname,S_IRWXU);
104 
105     /* default LOCK-ON ROM files directories */
106     sprintf (pathname, "%s%s/lock-on", homedir, DEFAULT_PATH);
107     dir = opendir(pathname);
108     if (dir) closedir(dir);
109     else mkdir(pathname,S_IRWXU);
110 
111 }
112 
get_save_directory(void)113 char* get_save_directory(void) {
114 	const char *homedir;
115 	const char *system_dir;
116     if ((homedir = getenv("HOME")) == NULL) {
117         homedir = getpwuid(getuid())->pw_dir;
118     }
119 
120     char pathname[MAXPATHLEN];
121 
122 	if(system_hw <= SYSTEM_MARKIII){
123 		system_dir = "/saves/sg";
124 	} else if (system_hw > SYSTEM_MARKIII && system_hw <= SYSTEM_SMS2) {
125 		system_dir = "/saves/ms";
126 	} else if (system_hw > SYSTEM_SMS2 && system_hw <= SYSTEM_GGMS) {
127 		system_dir = "/saves/gg";
128 	} else if (system_hw == SYSTEM_MD) {
129 		system_dir = "/saves/md";
130 	} else if (system_hw == SYSTEM_MCD) {
131 		system_dir = "/saves/cd";
132 	} else {
133 		system_dir = "/saves/";
134 	}
135 
136     sprintf (pathname, "%s%s%s", homedir, DEFAULT_PATH, system_dir);
137 
138     return pathname;
139 
140 }
141 
gcw0_get_key_name(int keycode)142 char* gcw0_get_key_name(int keycode)
143 {
144 	     if (keycode == SDLK_UP)			return "Up";
145 	else if (keycode == SDLK_DOWN)  		return "Down";
146 	else if (keycode == SDLK_LEFT)  		return "Left";
147 	else if (keycode == SDLK_RIGHT) 		return "Right";
148 	else if (keycode == SDLK_LCTRL)     	return "A";
149 	else if (keycode == SDLK_LALT)     	return "B";
150 	else if (keycode == SDLK_LSHIFT)     	return "X";
151 	else if (keycode == SDLK_SPACE)     	return "Y";
152 	else if (keycode == SDLK_TAB)     		return "L";
153 	else if (keycode == SDLK_BACKSPACE)	return "R";
154 	else if (keycode == SDLK_RETURN)		return "Start";
155 	else if (keycode == SDLK_ESCAPE)		return "Select";
156 	else return "...";
157 }
158 
get_file_name(char * full_path)159 char *get_file_name(char *full_path) {
160 	char file_name[256];
161 	sprintf(file_name, "%s", basename(full_path));
162 
163 	/* remove file extension */
164 	int i = strlen(file_name) - 1;
165 	while ((i > 0) && (file_name[i] != '.')) i--;
166 	if (i > 0) file_name[i] = 0;
167 
168 	return file_name;
169 }
170 
171