From a523ed83c62940a57619b1e0afbc55444161240b Mon Sep 17 00:00:00 2001 From: XProger Date: Mon, 15 Feb 2021 15:41:59 +0300 Subject: [PATCH] PSV system language detection, fix mutex creation, livearea stuff --- src/platform/psv/CMakeLists.txt | 5 +- src/platform/psv/deploy.sh | 3 + src/platform/psv/main.cpp | 110 ++++++++++++++---- src/platform/psv/sce_sys/icon0.png | Bin 896 -> 2935 bytes .../psv/sce_sys/livearea/contents/bg.png | Bin 1267 -> 13096 bytes .../psv/sce_sys/livearea/contents/startup.png | Bin 924 -> 1754 bytes .../sce_sys/livearea/contents/template.xml | 2 +- 7 files changed, 95 insertions(+), 25 deletions(-) create mode 100644 src/platform/psv/deploy.sh diff --git a/src/platform/psv/CMakeLists.txt b/src/platform/psv/CMakeLists.txt index 733d842..863aac8 100644 --- a/src/platform/psv/CMakeLists.txt +++ b/src/platform/psv/CMakeLists.txt @@ -17,8 +17,8 @@ set(VITA_APP_NAME "OpenLara") set(VITA_TITLEID "OPENLARA1") set(VITA_VERSION "01.00") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -Wall") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++11") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O3 -Wall") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O3 -std=c++11") set(VITA_MKSFOEX_FLAGS "${VITA_MKSFOEX_FLAGS} -d PARENTAL_LEVEL=1") include_directories( @@ -44,6 +44,7 @@ target_link_libraries(OpenLara SceCtrl_stub SceAudio_stub SceTouch_stub + SceAppUtil_stub ) diff --git a/src/platform/psv/deploy.sh b/src/platform/psv/deploy.sh new file mode 100644 index 0000000..8ac45f4 --- /dev/null +++ b/src/platform/psv/deploy.sh @@ -0,0 +1,3 @@ +make +curl --ftp-method nocwd -T OpenLara.self ftp://192.168.1.59:1337/ux0:/app/OPENLARA1/eboot.bin +echo launch OPENLARA1 | ./nc.exe 192.168.1.59 1338 diff --git a/src/platform/psv/main.cpp b/src/platform/psv/main.cpp index 94a1c40..60328e0 100644 --- a/src/platform/psv/main.cpp +++ b/src/platform/psv/main.cpp @@ -11,27 +11,39 @@ #include #include #include +#include +#include #include #include "game.h" // multi-threading -void* osMutexInit() { - SceUID *mutex = new SceUID(); - *mutex = sceKernelCreateMutex(NULL, 0, 0, NULL); +void* osMutexInit() +{ + SceUID mutex = sceKernelCreateMutex(NULL, SCE_KERNEL_MUTEX_ATTR_RECURSIVE, 0, NULL); + if (mutex < 0) + { + return NULL; + } + SceUID* obj = new SceUID(); + *obj = mutex; + return obj; } -void osMutexFree(void *obj) { +void osMutexFree(void *obj) +{ sceKernelDeleteMutex(*(SceUID*)obj); delete (SceUID*)obj; } -void osMutexLock(void *obj) { +void osMutexLock(void *obj) +{ sceKernelLockMutex(*(SceUID*)obj, 1, NULL); } -void osMutexUnlock(void *obj) { +void osMutexUnlock(void *obj) +{ sceKernelUnlockMutex(*(SceUID*)obj, 1); } @@ -39,28 +51,33 @@ void osMutexUnlock(void *obj) { int osStartTime = 0; int osTimerFreq; -int osGetTimeMS() { +int osGetTimeMS() +{ SceRtcTick current; sceRtcGetCurrentTick(¤t); return int(current.tick * 1000 / osTimerFreq - osStartTime); } // input -bool osJoyReady(int index) { +bool osJoyReady(int index) +{ return index == 0; } -void osJoyVibrate(int index, float L, float R) { +void osJoyVibrate(int index, float L, float R) +{ // } -void inputInit() { +void inputInit() +{ sceCtrlSetSamplingMode(SCE_CTRL_MODE_ANALOG); sceTouchSetSamplingState(SCE_TOUCH_PORT_FRONT, SCE_TOUCH_SAMPLING_STATE_START); sceTouchEnableTouchForce(SCE_TOUCH_PORT_FRONT); } -void inputUpdate() { +void inputUpdate() +{ // gamepad SceCtrlData pad; sceCtrlReadBufferPositive(0, &pad, 1); @@ -91,9 +108,12 @@ void inputUpdate() { bool touchState[COUNT(Input::touch)]; for (int i = 0; i < COUNT(Input::touch); i++) + { touchState[i] = Input::down[ikTouchA + i]; + } - for (int i = 0; i < touch.reportNum; i++) { + for (int i = 0; i < touch.reportNum; i++) + { SceTouchReport &t = touch.report[i]; InputKey key = Input::getTouch(t.id); @@ -106,8 +126,12 @@ void inputUpdate() { } for (int i = 0; i < COUNT(Input::touch); i++) + { if (touchState[i]) + { Input::setDown(InputKey(ikTouchA + i), false); + } + } } bool sndTerm; @@ -119,8 +143,10 @@ Sound::Frame *sndBuffer; #define SND_FRAMES 2048 -int sndPrepThread(SceSize args, void *argp) { - while (!sndTerm) { +int sndPrepThread(SceSize args, void *argp) +{ + while (!sndTerm) + { sceKernelWaitSema(sndSema, 1, NULL); sndPartIndex ^= 1; Sound::Frame *part = sndBuffer + SND_FRAMES * sndPartIndex; @@ -129,8 +155,10 @@ int sndPrepThread(SceSize args, void *argp) { return 0; } -int sndOutThread(SceSize args, void *argp) { - while (!sndTerm) { +int sndOutThread(SceSize args, void *argp) +{ + while (!sndTerm) + { Sound::Frame *part = sndBuffer + SND_FRAMES * sndPartIndex; sceKernelSignalSema(sndSema, 1); sceAudioOutOutput(sndPort, part); @@ -138,7 +166,8 @@ int sndOutThread(SceSize args, void *argp) { return 0; } -void sndInit() { +void sndInit() +{ sndTerm = false; sndPartIndex = 0; @@ -158,7 +187,8 @@ void sndInit() { sceKernelStartThread(sndOutTID, 0, NULL); } -void sndFree() { +void sndFree() +{ sndTerm = true; sceKernelSignalSema(sndSema, 1); @@ -173,8 +203,35 @@ void sndFree() { free(sndBuffer); } +int checkLanguage() +{ + int id; + sceAppUtilSystemParamGetInt(SCE_SYSTEM_PARAM_ID_LANG, &id); + + int str = STR_LANG_EN; + switch (id) + { + case SCE_SYSTEM_PARAM_LANG_ENGLISH_US : + case SCE_SYSTEM_PARAM_LANG_ENGLISH_GB : str = STR_LANG_EN; break; + case SCE_SYSTEM_PARAM_LANG_FRENCH : str = STR_LANG_FR; break; + case SCE_SYSTEM_PARAM_LANG_GERMAN : str = STR_LANG_DE; break; + case SCE_SYSTEM_PARAM_LANG_SPANISH : str = STR_LANG_ES; break; + case SCE_SYSTEM_PARAM_LANG_ITALIAN : str = STR_LANG_IT; break; + case SCE_SYSTEM_PARAM_LANG_POLISH : str = STR_LANG_PL; break; + case SCE_SYSTEM_PARAM_LANG_PORTUGUESE_PT : + case SCE_SYSTEM_PARAM_LANG_PORTUGUESE_BR : str = STR_LANG_PT; break; + case SCE_SYSTEM_PARAM_LANG_RUSSIAN : str = STR_LANG_RU; break; + case SCE_SYSTEM_PARAM_LANG_JAPANESE : str = STR_LANG_JA; break; + case SCE_SYSTEM_PARAM_LANG_FINNISH : str = STR_LANG_FI; break; + case SCE_SYSTEM_PARAM_LANG_CHINESE_T : + case SCE_SYSTEM_PARAM_LANG_CHINESE_S : str = STR_LANG_CN; break; + case SCE_SYSTEM_PARAM_LANG_SWEDISH : str = STR_LANG_SV; break; + } + return str - STR_LANG_EN; +} -int main() { +int main() +{ psvDebugScreenInit(); scePowerSetArmClockFrequency(444); @@ -182,25 +239,34 @@ int main() { scePowerSetGpuClockFrequency(222); scePowerSetGpuXbarClockFrequency(166); + { + SceAppUtilInitParam initParam = {}; + SceAppUtilBootParam bootParam = {}; + sceAppUtilInit(&initParam, &bootParam); + } + cacheDir[0] = saveDir[0] = contentDir[0] = 0; strcpy(cacheDir, "ux0:data/OpenLara/"); strcpy(saveDir, "ux0:data/OpenLara/"); strcpy(contentDir, "ux0:data/OpenLara/"); + Core::defLang = checkLanguage(); + sndInit(); inputInit(); osTimerFreq = sceRtcGetTickResolution(); - osStartTime = Core::getTime(); + osStartTime = osGetTimeMS(); - Game::init();//"PSXDATA/LEVEL2.PSX"); -// sceRazorGpuCaptureSetTrigger(100, "ux0:data/OpenLara/capture.sgx"); + Game::init(); while (!Core::isQuit) { inputUpdate(); if (Input::joy[0].down[jkStart]) + { Core::quit(); + } Game::update(); Game::render(); diff --git a/src/platform/psv/sce_sys/icon0.png b/src/platform/psv/sce_sys/icon0.png index bb54cf589a9293b8cb5c8376c5b09adbd6507e3e..94c68fa32aef95bb21592df787afe2104b938477 100644 GIT binary patch delta 2818 zcmV+d3;pzf2lp0`EPn$70|W#F`}_O;{{H>_{rvp=000010RaL60{Z&;1qB89`S}J0 z24Z4j+S=OD(a|a@DhLP&&d$#E_V&WU!U_rs+}zya;^O!B_vq;89UUEgs7}X;4s5prD|(wzfw{M=~-p8yg!WBqY7Py+lMr)YQ}o2?;F!=cR&(F^o7#P#j)2pkijg5_5TwGRGR+pET6B833A0Ie4 zI3pt?dwYA*($YaeLA$%VadC0q-`~l}$!%?IqoboHCMH^1T6A=Dz`(#LC@2>f7rD8) zm6erKQ&XFpo3ymFJ3BiqEiFbyMiv$p4-XGIIyy8oG=Gnek9m1{%F4>t*4B7z?WMpL9+uIQl5h5ZYp`oFusHnfc zzln*79Df`f)z#G*85u)ELwOcrDS&{0u&}UZW@dBQRQUn`00=TkL_t(|+U=X=n;SN-nDnV-ZjLGv7I<(JhKx+ z%ywcYc1&T;1uvXja+h3~;h2(xmivqfI-*6!NQY`fQ>O%#v?#2);|TdWjTOw?0#HLX0iZ^dKRz)U<-$T zG&N3qDV7URg8;081^=-z@nsz6kCFwrf1Q_5y|DB&GfF$+BJP$ZH*7|y)0E(^`EdCt8i|@ahD1b=~?DzAJ zjT23?NF@kh(A0bY2YbhTHc0@M!16o^=u-HPBS}_5NrNj30Xm=RNEV>ul0tyi8Hsj7 zNsA}uB>~IfR~-f=3eYz#4}iyk50f28B<+8god;myvUt-#4FI0IJf{I0=@q0B1Tdr= zq*r+m$^y7pLQ7N7laL%c4V>7#RR%P^z6hY+E>GaK(H4iBckDsK(5Q0C1<7@D@9r8^BL^7T^yK z-crg1Hl|%U5&#DM_(wYVc<%WH|#g?FR2L`2R123`L+|F$;gJJ+B`3pdBDba;$b zYHMvPp-F$UdH&!=*SoDCxB-6^Sa_0Xzit)%Q4n;IY{kOf(|-Qv=jM?~=S5({ovNqxeGmdSMO0yB0GXklr+M`*&h-Vq zRHbNbP6Gn%Ok~h@_JEC5(OiHC_5bZXp8ZEN!LL-@4{pkpA`4e&LP>uwf(5hisz{}v zJb+|}J~#GrtSSqKNU30GmbEuJc`d-bUfVS3D_$v>5h(~L-+dJI{7#?33tpTdgVNk| z0=e0oy|mt2v!dI*f$hEv)__5M>iBB74yWJTp!{TtW_Ib`ke7o?{54A&r;CPYjuHcu zD?S?r8Xx3^3HjO2KY{V7HIr|Bq;M4m?~I(1)3{HN zy)QB7``U+NE2@8>7(glY3U)jAOT$_ZUk29S^3{U!69jl+I1@JxaQ~P=gK+`4;J=49 zq+e$@Drp*lGap4ecZaUu-xg-P8+3zSW}&X*cp63=07>RPbYu2$N|{E<;rt!941mDH z!%o*%87_`(*LMoh0ocPYAnlAl5++|o%bYR*z{<|`zkYwjZ;InNRyKaVYfDQU0Pel` zSNLI@qM3GC0ROzs)Bvk=AJLQCp)x)|z&>rZrq8F83f~{CC~KYj@NQhk)|vFDn$+fQ z(zY|4ph$!-J$AUGHX*^XqAValO* zfyy>Eo>;gL-{fN3|0N&iA8JeGL;_3H0 zu_aKW7n}7Fn)=4K#;h47fMJG~q0tCIUdNL(ssL5J-CzF;i#k9Zpbk(67=3{M11K0c UCx!^!d;kCd07*qoM6N<$f+2TQ0ssI2 literal 896 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H3?#oinD~={ftew|C&cyt|NlUdQ7{?;BQpfJ zmA5|x`kb@CBeIx*fm;ZK886+f`vVkI^K@|xshIQjAR{A?*QD@&eV&H{h=~l|vpF;{ UF#bHgHVq`|>FVdQ&MBb@0H72h0RR91 diff --git a/src/platform/psv/sce_sys/livearea/contents/bg.png b/src/platform/psv/sce_sys/livearea/contents/bg.png index 23a9f3b56cfd1b36c8b5781271251db516148ea5..259af4a3261fb85b01c3277c5d9f4dd5bc9a33d8 100644 GIT binary patch literal 13096 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 Zi2TvSSwVHb0F3*CU@BV5mCs&<{SOrmPA&id literal 1267 zcmeAS@N?(olHy`uVBq!ia0y~yVD?~OVEn?t3=}a~_xBu7fFZyq#P$FG|3HyZFd70Q zGX%Jmw?71CjCGzajv*Cu-X3J+1%|_+1>gO1`PoHAW{?beU$1A&ddI-{>G+=IAg6k| L`njxgN@xNAilZFK diff --git a/src/platform/psv/sce_sys/livearea/contents/startup.png b/src/platform/psv/sce_sys/livearea/contents/startup.png index 9f2bf25eff6f4e53fff95d9925198d5648196c87..ce0ec882d25073c45ca88903e2406375219d7619 100644 GIT binary patch delta 951 zcmV;o14#Uw2igsgEG_^4|D2qhYin!K(b4JY=_V#7xVX6V^z=ePLfzfnSXfw%jg7^{ z#j2{ReSLkgk(dIJpg1wG7$Ud;00WgtL_t(|+U=R!mZT^U02RTz<^TWf?3Oo>1i`ZV z)SQWU>((qVge1YDk&zjHfag$3mv0(1V`F1nrEI*q-)VMh&wQtrsxLj7-x;P$V}1Rd zlcc|R72PD{LA&-&x>LfN^TV;4K?+T_okDr+hQdKqYXN_@sBZJ>;(>~|gL zKwBq@ao7GEVzfLL0!`a9HxiwaVa8BjTB`%rBBk2nd6cw*t;ttOFEL+C6<8;|rsrN5 zGS!_`cFiSqaP$s;^0UuJ2UMidX4BL}t7KXIVK$HK(4N)?F@h z#Z*h8Z~Qw`rcyZit{8I`le#LM#ptb^Sf21F7`@%l*)?ZO%quPWu~o?_E>#umogii} z%l|*i$P+UkQ=k!lK3d+zqJN~0iA;1Qi7D!1$DSv~9M|jiw5=1wOe#70X64(*D&LDW zQxLP)S?!R2C1wT!yZ%(n zaWIlDW)u%R#HN*heiD!VfsG5axUs+jRy zmCeq>yG^g}xKE8v{YGG&`A#QUH^dBD5_7C0mttmr?Jg=#qLN4Qa4KUiqI16zj7>Dj zC4PJwOFElrnQ!z1Sx8t6R!_jGsCpFC=EDcTi zy0M5WF{QsjaW)QP84+WI^|iA%9$vq+^`+o4I{7<_Qf8~FGfuif4En<#m~{b>kt-M9 Z#UEeq8C8db>CylI002ovPDHLkV1g*W>^uMf delta 188 zcmcb`JBNLOPI5y-!~g&P85kJ;{rmUl&!3+^e}4b|{mYjxA3uI%WMpJvVPR)y=j7z% z;o;%u=dY-!sI084s;a84uCA%6sjaQ8tE;Q8uV-dve*gachYue;3=*ojhF}Ln`LHJ=h53 oFdSa+GdTVMM=0aOL@hBJ=CyeYjPtGYKu%=vboFyt=akR{0NW>6761SM diff --git a/src/platform/psv/sce_sys/livearea/contents/template.xml b/src/platform/psv/sce_sys/livearea/contents/template.xml index a4d43f0..b934a29 100644 --- a/src/platform/psv/sce_sys/livearea/contents/template.xml +++ b/src/platform/psv/sce_sys/livearea/contents/template.xml @@ -1,6 +1,6 @@ - + bg.png