Skip to content

Commit

Permalink
Added ability to mount game card
Browse files Browse the repository at this point in the history
  • Loading branch information
TheOfficialFloW committed Mar 5, 2017
1 parent 8678f74 commit 04f932e
Show file tree
Hide file tree
Showing 8 changed files with 60 additions and 14 deletions.
11 changes: 8 additions & 3 deletions language.c
Original file line number Diff line number Diff line change
Expand Up @@ -196,28 +196,33 @@ void loadLanguage(int id) {
LANGUAGE_ENTRY(VITASHELL_SETTINGS_MAIN),
LANGUAGE_ENTRY(VITASHELL_SETTINGS_LANGUAGE),
LANGUAGE_ENTRY(VITASHELL_SETTINGS_THEME),
LANGUAGE_ENTRY(VITASHELL_SETTINGS_THEME),
LANGUAGE_ENTRY(VITASHELL_SETTINGS_USBDEVICE),
LANGUAGE_ENTRY(VITASHELL_SETTINGS_SELECT_BUTTON),
LANGUAGE_ENTRY(VITASHELL_SETTINGS_NO_AUTO_UPDATE),
LANGUAGE_ENTRY(VITASHELL_SETTINGS_POWER),
LANGUAGE_ENTRY(VITASHELL_SETTINGS_REBOOT),
LANGUAGE_ENTRY(VITASHELL_SETTINGS_POWEROFF),
LANGUAGE_ENTRY(VITASHELL_SETTINGS_STANDBY),
LANGUAGE_ENTRY(VITASHELL_SETTINGS_USB_MEMORY_CARD),
LANGUAGE_ENTRY(VITASHELL_SETTINGS_USB_GAME_CARD),
LANGUAGE_ENTRY(VITASHELL_SETTINGS_SELECT_BUTTON_USB),
LANGUAGE_ENTRY(VITASHELL_SETTINGS_SELECT_BUTTON_FTP),

// USB strings
LANGUAGE_ENTRY(USB_CONNECTED),
LANGUAGE_ENTRY(USB_NOT_CONNECTED),
LANGUAGE_ENTRY(USB_CONNECTION_NOT_AVAILABLE),
LANGUAGE_ENTRY(USB_WAIT_ATTACH),
LANGUAGE_ENTRY(USB_UMA0_MOUNTED),
LANGUAGE_ENTRY(USB_UX0_MOUNTED),
LANGUAGE_ENTRY(USB_UX0_UMOUNTED),
LANGUAGE_ENTRY(USB_NOT_CONNECTED),
LANGUAGE_ENTRY(USB_CONNECTION_NOT_AVAILABLE),
LANGUAGE_ENTRY(USB_WAIT_ATTACH),

// Others
LANGUAGE_ENTRY(SAFE_MODE),
LANGUAGE_ENTRY(UNSAFE_MODE),
LANGUAGE_ENTRY(PLEASE_WAIT),
LANGUAGE_ENTRY(GAME_CARD_NOT_FOUND),
LANGUAGE_ENTRY(NO_SPACE_ERROR),
LANGUAGE_ENTRY(EXTENDED_PERMISSIONS_REQUIRED),
LANGUAGE_ENTRY(WIFI_ERROR),
Expand Down
4 changes: 4 additions & 0 deletions language.h
Original file line number Diff line number Diff line change
Expand Up @@ -155,12 +155,15 @@ enum LanguageContainer {
VITASHELL_SETTINGS_MAIN,
VITASHELL_SETTINGS_LANGUAGE,
VITASHELL_SETTINGS_THEME,
VITASHELL_SETTINGS_USBDEVICE,
VITASHELL_SETTINGS_SELECT_BUTTON,
VITASHELL_SETTINGS_NO_AUTO_UPDATE,
VITASHELL_SETTINGS_POWER,
VITASHELL_SETTINGS_REBOOT,
VITASHELL_SETTINGS_POWEROFF,
VITASHELL_SETTINGS_STANDBY,
VITASHELL_SETTINGS_USB_MEMORY_CARD,
VITASHELL_SETTINGS_USB_GAME_CARD,
VITASHELL_SETTINGS_SELECT_BUTTON_USB,
VITASHELL_SETTINGS_SELECT_BUTTON_FTP,

Expand All @@ -177,6 +180,7 @@ enum LanguageContainer {
SAFE_MODE,
UNSAFE_MODE,
PLEASE_WAIT,
GAME_CARD_NOT_FOUND,
NO_SPACE_ERROR,
EXTENDED_PERMISSIONS_REQUIRED,
WIFI_ERROR,
Expand Down
29 changes: 22 additions & 7 deletions main.c
Original file line number Diff line number Diff line change
Expand Up @@ -492,14 +492,29 @@ static void initFtp() {
}

static void initUsb() {
char *path = "sdstor0:xmc-lp-ign-userext";
char *path = "";

SceUID fd = sceIoOpen(path, SCE_O_RDONLY, 0);

if (fd < 0)
path = "sdstor0:int-lp-ign-userext";
else
sceIoClose(fd);
if (vitashell_config.usbdevice == USBDEVICE_MODE_MEMORY_CARD) {
path = "sdstor0:xmc-lp-ign-userext";

SceUID fd = sceIoOpen(path, SCE_O_RDONLY, 0);

if (fd < 0)
path = "sdstor0:int-lp-ign-userext";
else
sceIoClose(fd);
} else if (vitashell_config.usbdevice == USBDEVICE_MODE_GAME_CARD) {
path = "sdstor0:gcd-lp-ign-gamero";

SceUID fd = sceIoOpen(path, SCE_O_RDONLY, 0);

if (fd < 0) {
infoDialog(language_container[GAME_CARD_NOT_FOUND]);
return;
} else {
sceIoClose(fd);
}
}

usbdevice_modid = startUsb("ux0:VitaShell/module/usbdevice.skprx", path, SCE_USBSTOR_VSTOR_TYPE_FAT);
if (usbdevice_modid >= 0) {
Expand Down
8 changes: 7 additions & 1 deletion modules/usbdevice/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,13 @@ static int first = 1;

static SceUID ksceIoOpenPatched(const char *file, int flags, SceMode mode) {
first = 1;
return TAI_CONTINUE(SceUID, ksceIoOpenRef, file, flags, mode);

SceUID fd = TAI_CONTINUE(SceUID, ksceIoOpenRef, file, flags, mode);

if (fd == 0x800F090D)
return TAI_CONTINUE(SceUID, ksceIoOpenRef, file, flags & ~SCE_O_WRONLY, mode);

return fd;
}

static int ksceIoReadPatched(SceUID fd, void *data, SceSize size) {
Expand Down
10 changes: 7 additions & 3 deletions resources/english_us.txt
Original file line number Diff line number Diff line change
Expand Up @@ -135,28 +135,32 @@ HENKAKU_UNSAFE_HOMEBREW_MESSAGE = "Unsafe homebrews can damage your device\
VITASHELL_SETTINGS_MAIN = "Main settings"
VITASHELL_SETTINGS_LANGUAGE = "Language"
VITASHELL_SETTINGS_THEME = "Theme"
VITASHELL_SETTINGS_USBDEVICE = "USB device"
VITASHELL_SETTINGS_SELECT_BUTTON = "SELECT button"
VITASHELL_SETTINGS_NO_AUTO_UPDATE = "Disable auto-update"
VITASHELL_SETTINGS_POWER = "Power"
VITASHELL_SETTINGS_REBOOT = "Reboot"
VITASHELL_SETTINGS_POWEROFF = "Power off"
VITASHELL_SETTINGS_STANDBY = "Standby"
VITASHELL_SETTINGS_USB_MEMORY_CARD = "Memory Card"
VITASHELL_SETTINGS_USB_GAME_CARD = "Game Card"
VITASHELL_SETTINGS_SELECT_BUTTON_USB = "USB"
VITASHELL_SETTINGS_SELECT_BUTTON_FTP = "FTP"

# USB strings
USB_CONNECTED = "USB connected"
USB_NOT_CONNECTED = "Connect this system to a PC system using a USB cable."
USB_CONNECTION_NOT_AVAILABLE = "USB connection is not available on this device."
USB_WAIT_ATTACH = "Please attach an USB flash drive to continue.\If it has already been attached, please detach\and reattach it."
USB_UMA0_MOUNTED = "uma0: mounted."
USB_UX0_MOUNTED = "USB ux0: mounted."
USB_UX0_UMOUNTED = "USB ux0: umounted."
USB_NOT_CONNECTED = "Connect this system to a PC system using a USB cable."
USB_CONNECTION_NOT_AVAILABLE = "USB connection is not available on this device."
USB_WAIT_ATTACH = "Please attach an USB flash drive to continue.\If it has already been attached, please detach\and reattach it."

# Others
SAFE_MODE = "SAFE MODE"
UNSAFE_MODE = "UNSAFE MODE"
PLEASE_WAIT = "Please wait..."
GAME_CARD_NOT_FOUND = "Please insert a game card."
NO_SPACE_ERROR = "There is not enough free space on the memory\card.\At least %s more space is needed."
EXTENDED_PERMISSIONS_REQUIRED = "This feature requires extended permissions.\Please activate 'Enable unsafe homebrew' first."
WIFI_ERROR = "You must use Wi-Fi to do this."
Expand Down
Binary file modified resources/usbdevice.skprx
Binary file not shown.
8 changes: 8 additions & 0 deletions settings.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,11 @@ static char spoofed_version[6];
static SettingsMenuEntry *settings_menu_entries = NULL;
static int n_settings_entries = 0;

static char *usbdevice_options[2];
static char *select_button_options[2];

static ConfigEntry settings_entries[] = {
{ "USBDEVICE", CONFIG_TYPE_DECIMAL, (int *)&vitashell_config.usbdevice },
{ "SELECT_BUTTON", CONFIG_TYPE_DECIMAL, (int *)&vitashell_config.select_button },
{ "DISABLE_AUTOUPDATE", CONFIG_TYPE_BOOLEAN, (int *)&vitashell_config.disable_autoupdate },
};
Expand All @@ -86,6 +88,9 @@ SettingsMenuOption main_settings[] = {
// { VITASHELL_SETTINGS_LANGUAGE, SETTINGS_OPTION_TYPE_BOOLEAN, NULL, NULL, 0, NULL, 0, &language },
// { VITASHELL_SETTINGS_THEME, SETTINGS_OPTION_TYPE_BOOLEAN, NULL, NULL, 0, NULL, 0, &theme },

{ VITASHELL_SETTINGS_USBDEVICE, SETTINGS_OPTION_TYPE_OPTIONS, NULL, NULL, 0,
usbdevice_options, sizeof(usbdevice_options) / sizeof(char **),
&vitashell_config.usbdevice },
{ VITASHELL_SETTINGS_SELECT_BUTTON, SETTINGS_OPTION_TYPE_OPTIONS, NULL, NULL, 0,
select_button_options, sizeof(select_button_options) / sizeof(char **),
&vitashell_config.select_button },
Expand Down Expand Up @@ -168,6 +173,9 @@ void initSettingsMenu() {
for (i = 0; i < n_settings_entries; i++)
settings_menu.n_options += settings_menu_entries[i].n_options;

usbdevice_options[0] = language_container[VITASHELL_SETTINGS_USB_MEMORY_CARD];
usbdevice_options[1] = language_container[VITASHELL_SETTINGS_USB_GAME_CARD];

select_button_options[0] = language_container[VITASHELL_SETTINGS_SELECT_BUTTON_USB];
select_button_options[1] = language_container[VITASHELL_SETTINGS_SELECT_BUTTON_FTP];
}
Expand Down
4 changes: 4 additions & 0 deletions vitashell_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,14 @@
#ifndef __VITASHELL_CONFIGURATION_H__
#define __VITASHELL_CONFIGURATION_H__

#define USBDEVICE_MODE_MEMORY_CARD 0
#define USBDEVICE_MODE_GAME_CARD 1

#define SELECT_BUTTON_MODE_USB 0
#define SELECT_BUTTON_MODE_FTP 1

typedef struct {
int usbdevice;
int select_button;
int disable_autoupdate;
} VitaShellConfig;
Expand Down

0 comments on commit 04f932e

Please sign in to comment.