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