Genesis-Plus-GX/gcw0/utils.c

171 lines
5.4 KiB
C

#include <sys/stat.h>
#include <dirent.h>
#include "utils.h"
#include "osd.h"
void create_default_directories(void) {
const char *homedir;
if ((homedir = getenv("HOME")) == NULL) {
homedir = getpwuid(getuid())->pw_dir;
}
char pathname[MAXPATHLEN];
/* base directory */
sprintf (pathname, "%s%s", homedir, DEFAULT_PATH);
DIR *dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
/* default SRAM & Savestate files directories */
sprintf (pathname, "%s%s/saves", homedir, DEFAULT_PATH);
dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
sprintf (pathname, "%s%s/saves/md", homedir, DEFAULT_PATH);
dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
sprintf (pathname, "%s%s/saves/ms", homedir, DEFAULT_PATH);
dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
sprintf (pathname, "%s%s/saves/gg", homedir, DEFAULT_PATH);
dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
sprintf (pathname, "%s%s/saves/sg", homedir, DEFAULT_PATH);
dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
sprintf (pathname, "%s%s/saves/cd", homedir, DEFAULT_PATH);
dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
/* default Snapshot files directories */
sprintf (pathname, "%s%s/snaps", homedir, DEFAULT_PATH);
dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
sprintf (pathname, "%s%s/snaps/md", homedir, DEFAULT_PATH);
dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
sprintf (pathname, "%s%s/snaps/ms", homedir, DEFAULT_PATH);
dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
sprintf (pathname, "%s%s/snaps/gg", homedir, DEFAULT_PATH);
dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
sprintf (pathname, "%s%s/snaps/sg", homedir, DEFAULT_PATH);
dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
sprintf (pathname, "%s%s/snaps/cd", homedir, DEFAULT_PATH);
dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
/* default Cheat files directories */
sprintf (pathname, "%s%s/cheats", homedir, DEFAULT_PATH);
dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
sprintf (pathname, "%s%s/cheats/md", homedir, DEFAULT_PATH);
dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
sprintf (pathname, "%s%s/cheats/ms", homedir, DEFAULT_PATH);
dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
sprintf (pathname, "%s%s/cheats/gg", homedir, DEFAULT_PATH);
dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
sprintf (pathname, "%s%s/cheats/sg", homedir, DEFAULT_PATH);
dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
sprintf (pathname, "%s%s/cheats/cd", homedir, DEFAULT_PATH);
dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
/* default BIOS ROM files directories */
sprintf (pathname, "%s%s/bios", homedir, DEFAULT_PATH);
dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
/* default LOCK-ON ROM files directories */
sprintf (pathname, "%s%s/lock-on", homedir, DEFAULT_PATH);
dir = opendir(pathname);
if (dir) closedir(dir);
else mkdir(pathname,S_IRWXU);
}
char* get_save_directory(void) {
const char *homedir;
const char *system_dir;
if ((homedir = getenv("HOME")) == NULL) {
homedir = getpwuid(getuid())->pw_dir;
}
char pathname[MAXPATHLEN];
if(system_hw < SYSTEM_MARKIII){
system_dir = "/saves/sg";
} else if (system_hw >= SYSTEM_MARKIII && system_hw <= SYSTEM_SMS2) {
system_dir = "/saves/ms";
} else if (system_hw > SYSTEM_SMS2 && system_hw <= SYSTEM_GGMS) {
system_dir = "/saves/gg";
} else if (system_hw == SYSTEM_MD) {
system_dir = "/saves/md";
} else if (system_hw == SYSTEM_MCD) {
system_dir = "/saves/cd";
} else {
system_dir = "/saves/";
}
sprintf (pathname, "%s%s%s", homedir, DEFAULT_PATH, system_dir);
return pathname;
}
char* gcw0_get_key_name(int keycode)
{
if (keycode == SDLK_UP) return "Up";
else if (keycode == SDLK_DOWN) return "Down";
else if (keycode == SDLK_LEFT) return "Left";
else if (keycode == SDLK_RIGHT) return "Right";
else if (keycode == SDLK_LCTRL) return "A";
else if (keycode == SDLK_LALT) return "B";
else if (keycode == SDLK_LSHIFT) return "X";
else if (keycode == SDLK_SPACE) return "Y";
else if (keycode == SDLK_TAB) return "L";
else if (keycode == SDLK_BACKSPACE) return "R";
else if (keycode == SDLK_RETURN) return "Start";
else if (keycode == SDLK_ESCAPE) return "Select";
else return "...";
}
char *get_file_name(char *full_path) {
char file_name[256];
sprintf(file_name, "%s", basename(full_path));
/* remove file extension */
int i = strlen(file_name) - 1;
while ((i > 0) && (file_name[i] != '.')) i--;
if (i > 0) file_name[i] = 0;
return file_name;
}