From 04f932ea08eda5b28df0f3b461cd8f05c085ecca Mon Sep 17 00:00:00 2001 From: TheFloW Date: Sun, 5 Mar 2017 12:32:53 +0100 Subject: [PATCH] Added ability to mount game card --- language.c | 11 ++++++++--- language.h | 4 ++++ main.c | 29 ++++++++++++++++++++++------- modules/usbdevice/main.c | 8 +++++++- resources/english_us.txt | 10 +++++++--- resources/usbdevice.skprx | Bin 2082 -> 2134 bytes settings.c | 8 ++++++++ vitashell_config.h | 4 ++++ 8 files changed, 60 insertions(+), 14 deletions(-) diff --git a/language.c b/language.c index 240b3abc..8d728c2c 100644 --- a/language.c +++ b/language.c @@ -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), diff --git a/language.h b/language.h index 4229833e..4ff03088 100644 --- a/language.h +++ b/language.h @@ -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, @@ -177,6 +180,7 @@ enum LanguageContainer { SAFE_MODE, UNSAFE_MODE, PLEASE_WAIT, + GAME_CARD_NOT_FOUND, NO_SPACE_ERROR, EXTENDED_PERMISSIONS_REQUIRED, WIFI_ERROR, diff --git a/main.c b/main.c index e14bd10e..733a8df7 100644 --- a/main.c +++ b/main.c @@ -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) { diff --git a/modules/usbdevice/main.c b/modules/usbdevice/main.c index f04d9dda..5ebdf483 100644 --- a/modules/usbdevice/main.c +++ b/modules/usbdevice/main.c @@ -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) { diff --git a/resources/english_us.txt b/resources/english_us.txt index d61ee05a..616f70bd 100644 --- a/resources/english_us.txt +++ b/resources/english_us.txt @@ -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." diff --git a/resources/usbdevice.skprx b/resources/usbdevice.skprx index c3784dcba3883ad366da63637ff45d2561b34779..0acd64ed75d6d31a45d7d76bdc92eacb749862ea 100644 GIT binary patch delta 1095 zcmV-N1i1U65Y`ZoAOTj9A(sI#k-0Yo#Df3;#F6z=84m*h0000000IC20000000IC2 z00000056ka0UrrF2LJ#70000Rvxxzl0)J0P6j2-p@Zaq2h@|0$BpNESYuS=Ui+Heu zp^J_}LB^I88LZ02ENr^0B6=}hFF_tk)9es!|3I=p4<4+9&|@u~nI5<<=?{AJVeaLf;KFO)b$LPF>W->Z;cEX1_7BtYaQ&epWa7om#f$ltpB8k(I*(CI@`mIUcS_X16}@bGC^t#bT)f6e=x{1YW!V+R{!R4N)wk@ zgsXDU0FlNqnSQr_VEdVy>La?+|L<8W=VN{7Rm7#wLYBXti}ekT(T`2TL(A(u z&ks6-EBAkdQfs?;Y%n6$Fq z-UpZOcRzlA_ulg)Ba-$-KCuM+gWQnc61O*QsmL!mM()T%GP$K((2geEd4|0E@73*%C*TD*x)jNwI>rA)vEy9gdi(P1 z?TZrc*8;y0_z!{K0So#FGk1++$9>~7k!Q>>q;rl^eoDu9NoNgb6}-D)KSrMhGko)& z6XYMAEu4(HJFU;Ef2*MWtup&MoC|elXUHo$)?Wu_Z-TQ``g3GM{haseXKT~>LiPfF NBJYtStOH$6Vg=jaAL0N2 delta 1043 zcmV+u1nm3P5TX!}AORwgA(sIFk-0Yol!E{Ol#%sQ8Q=l{0000000IC20000000IC2 z00000005I=0Urqr2LJ#70000Mvxxzl0)JmfQ&AiT@Za5bBT``|NruXGnyeBUvWN9x zsOWW2kg<}W1)Fl?4#vD}BKl%FUxIot|Ezjy{e$QaOvncsvo#$mi5Gc>`%TC!*l*q}tZ)I#`A<;<^nJLLm zN2rvFvva1$b0PA9m9qKi?3$)*SXf)l;=oRx@%c)Mt7xX;T2=y+!2v#h*nf`Kt;Ru1 z(lA+C4KlOdEF5o8Ykc);#q3qp@%Cuf<7~@jnYB5dFO{#Ur_}E(d#_8B^Hs;x$yv9N zDyPPzL4s&YRoD6`eN%VMPiKNwq5e_uR;#V|Nv6bMm$k(g+1k`5EopNv6R!HE=WatU z7p3;hvld>TGz6k_R42QCd)4|X)YvTBWvb&RrSx@Ol=ykg_uC9tM2L}%X83%!A&Bi; z;Yvym>TC@$?prphdfK;^E7;nHMX62}X5JawW{R<_DOYhqys%}KDczB+Nclb*BbB=< zYJ?ez@tS-Er5(EDC#fl+Ez**8E`N7Yfb6DKzsmC|m4DZSQSr>CR zo?5T{eR_>3zP2CZ&MR`;CDwcTl*^Ic$UuL%$HSVAa9~gg=L&?Lz<}SQD#0L|(V+|m z`jo=+IKZ2UC{cpN3JcdbQJJ>Au=@>-jS{tt{rk3@EV@12&HwWrCEkph$n@9meE%ei z*k|w5`E9}j3-YDOb{YxYk>XQ2UCw^wm%le`5z0S#NiaXx%Y>c>f z=4q_Iy+_S}KcFfhxj%eP35S#*zhBRAq%Rogl?%7~VW{zoi=IBXTRs(ffA-DA=+~;w z7X8c*@6!CC1Uqw*MV!S7iwPDQi%}MT00b}@zIfVWWME)_0000800Ma0O^+c=f>9KO zFOE4za3p6mI3@*%6dZE~f+G+e(P$tV{_rjk2+T1ffe{Ui{fX!d1m_6OU?va@27{5{ zxxT~Rd)wRj?%BET-X{klX;0({SHLgOIa!^rjq571A`A4D+<~siwZ6!9?}NX|_uwCL zs=of81y0C+Gq5ASg9qd>ct~zSPsm;9DR~4v+xzNkV+S6C3l))^S@=((>iN)l-%g&s zog)|W=TW{K