mirror of
https://github.com/Oibaf66/frodo-wii.git
synced 2024-11-22 03:19:24 +01:00
Fixed Restore key as binding key, install on usb device, case insensitive file order
This commit is contained in:
parent
706fc918dd
commit
99454336cb
@ -970,6 +970,13 @@ uint8 C64::poll_joystick_buttons(int port, uint8 *table, bool *has_event)
|
||||
int kc = ThePrefs.JoystickButtons[i];
|
||||
event_t ev = (event_t)ThePrefs.MenuJoystickButtons[i];
|
||||
|
||||
//Handle special Restore key, since its not actually part of the key mapping
|
||||
if (kc == MATRIX(0, 0x1FF) && cur) {
|
||||
NMI();
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (cur && ev != EVENT_NONE)
|
||||
{
|
||||
Gui::gui->pushJoystickEvent(ev);
|
||||
|
@ -108,7 +108,7 @@ Prefs::Prefs()
|
||||
AlwaysCopy = false;
|
||||
SystemKeys = true;
|
||||
ShowLEDs = true;
|
||||
Port = PORT_SD;
|
||||
Port = PORT_DEFAULT;
|
||||
Rumble = false;
|
||||
|
||||
this->SetupJoystickDefaults();
|
||||
@ -541,9 +541,10 @@ void Prefs::Load(const char *filename)
|
||||
else if (!strcmp(keyword, "CursorKeysForJoystick"))
|
||||
CursorKeysForJoystick = !strcmp(value, "TRUE");
|
||||
else if (!strcmp(keyword, "Port")) {
|
||||
if (!strcmp(value, "USB")) Port = PORT_USB;
|
||||
if (!strcmp(value, "SD")) Port = PORT_SD;
|
||||
else if (!strcmp(value, "USB")) Port = PORT_USB;
|
||||
else if (!strcmp(value, "SMB")) Port = PORT_SMB;
|
||||
else Port = PORT_SD; }
|
||||
else Port = PORT_DEFAULT; }
|
||||
else if (!strcmp(keyword, "Rumble"))
|
||||
Rumble = !strcmp(value, "TRUE");
|
||||
else if (!strcmp(keyword, "SmbUser"))
|
||||
@ -672,6 +673,9 @@ bool Prefs::Save(const char *filename)
|
||||
{
|
||||
fprintf(file, "Port = ");
|
||||
switch (Port) {
|
||||
case PORT_DEFAULT:
|
||||
fprintf(file, "DEFAULT\n");
|
||||
break;
|
||||
case PORT_SD:
|
||||
fprintf(file, "SD\n");
|
||||
break;
|
||||
|
@ -96,6 +96,7 @@ enum {
|
||||
|
||||
// Device Port
|
||||
enum {
|
||||
PORT_DEFAULT, // Load from the device of dol file
|
||||
PORT_SD, // Load from SD card
|
||||
PORT_USB, // Load from USB port
|
||||
PORT_SMB //Load from network
|
||||
@ -181,7 +182,7 @@ public:
|
||||
char Theme[128];
|
||||
|
||||
bool CursorKeysForJoystick;
|
||||
int Port; //SD, USB or SMB
|
||||
int Port; //DEFAULT, SD, USB or SMB
|
||||
|
||||
char SmbUser[32];
|
||||
char SmbPwd[32];
|
||||
|
@ -94,6 +94,7 @@ Gui::Gui()
|
||||
this->metadata_base_path = METADATA_ROOT_PATH;
|
||||
this->game_base_path = GAME_ROOT_PATH;
|
||||
#if defined(GEKKO)
|
||||
this->game_base_path_sd = GAME_ROOT_PATH_SD;
|
||||
this->game_base_path_usb = GAME_ROOT_PATH_USB;
|
||||
this->game_base_path_smb = GAME_ROOT_PATH_SMB;
|
||||
#endif
|
||||
|
@ -17,6 +17,7 @@
|
||||
#define THEME_ROOT_PATH "/frodo/themes"
|
||||
#define METADATA_ROOT_PATH "/frodo/metadata"
|
||||
#define GAME_ROOT_PATH "/frodo/images"
|
||||
#define GAME_ROOT_PATH_SD "sd:/"
|
||||
#define GAME_ROOT_PATH_USB "usb:/"
|
||||
#define GAME_ROOT_PATH_SMB "smb:/"
|
||||
#define TMP_ROOT_PATH "/frodo/tmp"
|
||||
@ -145,6 +146,7 @@ public:
|
||||
const char *metadata_base_path;
|
||||
const char *theme_base_path;
|
||||
const char *game_base_path;
|
||||
const char *game_base_path_sd;
|
||||
const char *game_base_path_usb;
|
||||
const char *game_base_path_smb;
|
||||
const char *tmp_path;
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
extern bool usbismount;
|
||||
extern bool smbismount;
|
||||
extern bool sdismount;
|
||||
|
||||
class KeyboardTypingListener : public KeyboardListener, TimeoutHandler
|
||||
{
|
||||
@ -71,9 +72,10 @@ public:
|
||||
switch (which)
|
||||
{
|
||||
case 0: /* Insert disc */
|
||||
if (Gui::gui->np->Port == PORT_USB && usbismount) Gui::gui->dv->setDirectory(Gui::gui->game_base_path_usb);
|
||||
if (Gui::gui->np->Port == PORT_SD && sdismount) Gui::gui->dv->setDirectory(Gui::gui->game_base_path_sd);
|
||||
else if (Gui::gui->np->Port == PORT_USB && usbismount) Gui::gui->dv->setDirectory(Gui::gui->game_base_path_usb);
|
||||
else if (Gui::gui->np->Port == PORT_SMB && smbismount) Gui::gui->dv->setDirectory(Gui::gui->game_base_path_smb);
|
||||
else Gui::gui->dv->setDirectory(Gui::gui->game_base_path);
|
||||
else Gui::gui->dv->setDirectory(Gui::gui->game_base_path); //DEFAULT
|
||||
|
||||
Gui::gui->pushView(Gui::gui->dv);
|
||||
|
||||
|
@ -248,7 +248,7 @@ const char *options_menu_messages[15] = {
|
||||
/*06*/ "Speed (approx. %)",
|
||||
/*07*/ "^|95|100|110",
|
||||
/*08*/ "Port",
|
||||
/*09*/ "^|SD|USB|SMB",
|
||||
/*09*/ "^|DEFAULT|SD|USB|SMB",
|
||||
/*10*/ "Rumble",
|
||||
/*11*/ "^|ON|OFF",
|
||||
/*12*/ " ",
|
||||
|
@ -68,10 +68,12 @@ public:
|
||||
switch (this->p_submenus[4].sel)
|
||||
{
|
||||
case 0:
|
||||
Gui::gui->np->Port = PORT_SD; break;
|
||||
Gui::gui->np->Port = PORT_DEFAULT; break;
|
||||
case 1:
|
||||
Gui::gui->np->Port = PORT_USB; break;
|
||||
Gui::gui->np->Port = PORT_SD; break;
|
||||
case 2:
|
||||
Gui::gui->np->Port = PORT_USB; break;
|
||||
case 3:
|
||||
Gui::gui->np->Port = PORT_SMB; break;
|
||||
default:
|
||||
panic("Impossible submenu value: %d\n", this->p_submenus[4].sel);
|
||||
@ -102,12 +104,14 @@ public:
|
||||
|
||||
switch (Gui::gui->np->Port)
|
||||
{
|
||||
case PORT_USB:
|
||||
case PORT_SD:
|
||||
submenu_defs[4] = 1; break;
|
||||
case PORT_SMB:
|
||||
case PORT_USB:
|
||||
submenu_defs[4] = 2; break;
|
||||
case PORT_SMB:
|
||||
submenu_defs[4] = 3; break;
|
||||
default:
|
||||
/* If it has some other value... SD */
|
||||
/* If it has some other value... DEFAULT */
|
||||
submenu_defs[4] = 0; break;
|
||||
}
|
||||
|
||||
|
@ -65,7 +65,7 @@ static inline bool IS_INVALID_VIRTKEY(virtkey_t *k)
|
||||
|
||||
static virtkey_t keys[KEY_COLS * KEY_ROWS] = {
|
||||
K("<-",7,1), K("1", 7,0), K("2", 7,3), K("3", 1,0), K("4", 1,3), K("5", 2,0), K("6", 2,3), K("7", 3,0), K("8", 3,3), K("9", 4,0), K("0", 4,3), K("+", 5,0), K("-", 5,3), K("£", 6,0), K("Hom", 6,3),
|
||||
K("Cr", 7,2), K("Q", 7,6), K("W", 1,1), K("E", 1,6), K("R", 2,1), K("T", 2,6), K("Y", 3,1), K("U", 3,6), K("I", 4,1), K("O", 4,6), K("P", 5,1), K("@", 5,6), K("*", 6,1), K("Au", 6,6),K("Rstr",4,0),
|
||||
K("Cr", 7,2), K("Q", 7,6), K("W", 1,1), K("E", 1,6), K("R", 2,1), K("T", 2,6), K("Y", 3,1), K("U", 3,6), K("I", 4,1), K("O", 4,6), K("P", 5,1), K("@", 5,6), K("*", 6,1), K("Au", 6,6),K("Rstr",0,0x1FF),
|
||||
K("R/Stp", 7,7), K(NULL,0,0), K("A", 1,2), K("S", 1,5), K("D", 2,2), K("F", 2,5), K("G", 3,2), K("H", 3,5), K("J", 4,2), K("K", 4,5), K("L", 5,2), K(":", 5,5), K(";", 6,2), K("=", 6,5), K("Ret", 0,1),
|
||||
K("C=", 7,5), S("Shft",1,7),K(NULL,0,0),K("Z", 1,4), K("X", 2,7), K("C", 2,4), K("V", 3,7), K("B", 3,4), K("N", 4,7), K("M", 4,4), K(",", 5,7), K(".", 5,4), K("/", 6,7), K("Dwn",0,7),K("Rgt", 0,2),
|
||||
N("None"), K(NULL,0,0), K(NULL,0,0), K("space", 7,4),K(0, 0,0),K(NULL,0,0), K("f1",0,4), K("f3",0,5), K("f5",0,6), K("f7",0,3), K("Del",0,0),K(NULL,0,0), K(NULL,0,0), K(NULL,0,0), D("DONE"),
|
||||
@ -169,6 +169,9 @@ const char *VirtualKeyboard::keycodeToString(int kc)
|
||||
int kc_raw = kc & ~0x80;
|
||||
const char *out = "Unknown";
|
||||
|
||||
if (kc == MATRIX(0,0x1FF))
|
||||
return "Rstr";
|
||||
|
||||
if (kc < 0)
|
||||
return "None";
|
||||
|
||||
@ -324,9 +327,6 @@ void VirtualKeyboard::runLogic()
|
||||
{
|
||||
virtkey_t *key = &keys[ this->sel_y * KEY_COLS + this->sel_x ];
|
||||
|
||||
//Special case for Restore
|
||||
if (strcmp(key->name,"Rstr")==0) {TheC64->NMI();return;}
|
||||
|
||||
if (!key)
|
||||
return;
|
||||
|
||||
@ -344,7 +344,12 @@ void VirtualKeyboard::runLogic()
|
||||
}
|
||||
else
|
||||
this->pushKey(key);
|
||||
|
||||
//Special case for Restore
|
||||
if (strcmp(key->name,"Rstr")==0) TheC64->NMI();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
void VirtualKeyboard::pushKey(struct virtkey *vk)
|
||||
|
21
Src/main.cpp
21
Src/main.cpp
@ -48,6 +48,7 @@ C64 *TheC64 = NULL; // Global C64 object
|
||||
char AppDirPath[1024]; // Path of application directory
|
||||
bool usbismount = false;
|
||||
bool smbismount = false;
|
||||
bool sdismount = false;
|
||||
|
||||
#ifndef GEKKO
|
||||
bool networkisinit = true;
|
||||
@ -201,14 +202,26 @@ extern "C" int main(int argc, char **argv)
|
||||
printf("\x1b[2;0H");
|
||||
|
||||
//initialize libfat library
|
||||
if (!fatInitDefault())
|
||||
if (fatInitDefault())
|
||||
printf("FAT subsytem initialized\n\n");
|
||||
else
|
||||
{
|
||||
printf("Couldn't initialize SD fat subsytem\n\n");
|
||||
printf("Couldn't initialize FAT subsytem\n\n");
|
||||
sleep(3);
|
||||
exit(0);
|
||||
}
|
||||
else
|
||||
|
||||
DIR *dp;
|
||||
|
||||
dp = opendir ("sd:/");
|
||||
if (dp) sdismount = 1; else sdismount = 0;
|
||||
|
||||
if (sdismount)
|
||||
printf("SD FAT subsytem initialized\n\n");
|
||||
else
|
||||
printf("Couldn't initialize SD fat subsytem\n\n");
|
||||
|
||||
if (sdismount) closedir (dp);
|
||||
|
||||
usbismount = InitUSB();
|
||||
if (usbismount)
|
||||
@ -218,7 +231,7 @@ extern "C" int main(int argc, char **argv)
|
||||
|
||||
networkisinit = InitNetwork();
|
||||
|
||||
sleep(3);
|
||||
sleep(2);
|
||||
|
||||
//create tmp directory if it does not exist
|
||||
dir_tmp = opendir("/frodo/tmp");
|
||||
|
@ -62,7 +62,7 @@ static int cmpstringp(const void *p1, const void *p2)
|
||||
return -1;
|
||||
if (*p1_s != '[' && *p2_s == '[')
|
||||
return 1;
|
||||
return strcmp(* (char * const *) p1, * (char * const *) p2);
|
||||
return strcasecmp(* (char * const *) p1, * (char * const *) p2);
|
||||
}
|
||||
|
||||
/* Return true if name ends with ext (for filenames) */
|
||||
|
Loading…
Reference in New Issue
Block a user