From cc897bb0fa732476c7047cf769d919d06521e517 Mon Sep 17 00:00:00 2001 From: olebeck <31539311+olebeck@users.noreply.github.com> Date: Fri, 4 Jul 2025 01:53:06 +0200 Subject: [PATCH] make config app not crash on launch --- CMakeLists.txt | 15 ++-- CONFIG_vita/cxml/config_plugin.xml | 81 ++---------------- CONFIG_vita/src/app.cpp | 63 +++++++------- CONFIG_vita/src/main.cpp | 65 ++++++-------- ISLE/isleapp.cpp | 1 + miniwin/src/d3drm/backends/gxm/renderer.cpp | 4 +- .../backends/gxm/shaders/main.color.frag.gxp | Bin 1304 -> 1424 bytes .../d3drm/backends/gxm/shaders/main.frag.cg | 11 ++- .../gxm/shaders/main.texture.frag.gxp | Bin 1372 -> 1492 bytes 9 files changed, 83 insertions(+), 157 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a4a4787..79325303 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -733,12 +733,15 @@ if(VITA) ScePafStdc_stub ) - set(VITA_MAKE_FSELF_FLAGS "${VITA_MAKE_FSELF_FLAGS} -a 0x2F00000000000101") - vita_create_self(isle-config.self isle-config - UNSAFE - STRIPPED - REL_OPTIMIZE - ) + block() + set(VITA_MAKE_FSELF_FLAGS "${VITA_MAKE_FSELF_FLAGS} -a 0x2F00000000000101") + vita_create_self(isle-config.self isle-config + CONFIG CONFIG_vita/exports.yml + UNSAFE + STRIPPED + REL_OPTIMIZE + ) + endblock() include(${scepaf_external_SOURCE_DIR}/rco.cmake) make_rco(CONFIG_vita/cxml/config_plugin.xml config_plugin.rco) diff --git a/CONFIG_vita/cxml/config_plugin.xml b/CONFIG_vita/cxml/config_plugin.xml index 716f1934..d6f66d71 100644 --- a/CONFIG_vita/cxml/config_plugin.xml +++ b/CONFIG_vita/cxml/config_plugin.xml @@ -2,92 +2,23 @@ - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - diff --git a/CONFIG_vita/src/app.cpp b/CONFIG_vita/src/app.cpp index a5704745..69720394 100644 --- a/CONFIG_vita/src/app.cpp +++ b/CONFIG_vita/src/app.cpp @@ -17,40 +17,41 @@ void operator delete(void *ptr, unsigned int n) { int paf_main(void); -extern "C" { - typedef struct _ScePafInit { // size is 0x18 - SceSize global_heap_size; - int a2; - int a3; - int cdlg_mode; - int heap_opt_param1; - int heap_opt_param2; - } ScePafInit; +typedef struct _ScePafInit { // size is 0x18 + SceSize global_heap_size; + int a2; + int a3; + int cdlg_mode; + int heap_opt_param1; + int heap_opt_param2; +} ScePafInit; - int module_start(SceSize args, void *argp){ - int load_res; - ScePafInit init_param; - SceSysmoduleOpt sysmodule_opt; +extern "C" int module_start(SceSize args, void *argp) { + int load_res; + ScePafInit init_param; + SceSysmoduleOpt sysmodule_opt; - init_param.global_heap_size = 0x1000000; - init_param.a2 = 0xEA60; - init_param.a3 = 0x40000; - init_param.cdlg_mode = 0; - init_param.heap_opt_param1 = 0; - init_param.heap_opt_param2 = 0; + init_param.global_heap_size = 0x1000000; + init_param.a2 = 0xEA60; + init_param.a3 = 0x40000; + init_param.cdlg_mode = 0; + init_param.heap_opt_param1 = 0; + init_param.heap_opt_param2 = 0; - load_res = 0xDEADBEEF; - sysmodule_opt.flags = 0; - sysmodule_opt.result = &load_res; + load_res = 0xDEADBEEF; + sysmodule_opt.flags = 0; + sysmodule_opt.result = &load_res; - int res = sceSysmoduleLoadModuleInternalWithArg(SCE_SYSMODULE_INTERNAL_PAF, sizeof(init_param), &init_param, &sysmodule_opt); - if((res | load_res) != 0){ - sceClibPrintf("[PAF PRX Loader] Failed to load the PAF prx. (return value 0x%x, result code 0x%x )\n", res, load_res); - } - - paf_main(); - - return SCE_KERNEL_START_SUCCESS; + int res = sceSysmoduleLoadModuleInternalWithArg(SCE_SYSMODULE_INTERNAL_PAF, sizeof(init_param), &init_param, &sysmodule_opt); + if((res | load_res) != 0){ + sceClibPrintf("[PAF PRX Loader] Failed to load the PAF prx. (return value 0x%x, result code 0x%x )\n", res, load_res); } -} \ No newline at end of file + paf_main(); + + return SCE_KERNEL_START_SUCCESS; +} + +extern "C" void _start() { + module_start(0, nullptr); +} diff --git a/CONFIG_vita/src/main.cpp b/CONFIG_vita/src/main.cpp index d0321a64..4f073729 100644 --- a/CONFIG_vita/src/main.cpp +++ b/CONFIG_vita/src/main.cpp @@ -3,60 +3,43 @@ #include -paf::Framework *g_fw; -void *g_rootPage; +paf::Framework* g_fw; +paf::ui::Scene* g_rootPage; void loadPluginCB(paf::Plugin *plugin){ + paf::Plugin::PageOpenParam pageOpenParam; + pageOpenParam.option = paf::Plugin::PageOption_None; - { - paf::Plugin::PageOpenParam pageOpenParam; - pageOpenParam.option = paf::Plugin::PageOption_None; + paf::ui::Scene *pScene = plugin->PageOpen("page_main", pageOpenParam); + g_rootPage = pScene; - paf::ui::Scene *pScene = plugin->PageOpen("page_main", pageOpenParam); - - g_rootPage = pScene; - - paf::ui::Widget *pPlane = pScene->FindChild("plane_sample_black"); - paf::ui::ProgressBar *pProgressbar = (paf::ui::ProgressBar *)pPlane->FindChild("progressbar"); - - pProgressbar->SetMinValue(0); - pProgressbar->SetMaxValue(100); - - pProgressbar->SetValue(24, true); - - wchar_t *msg_progressbar_text = plugin->GetString("msg_progressbar_text"); - - paf::ui::Text *pText = (paf::ui::Text *)pPlane->FindChild("progressbar_text"); - pText->SetString(paf::wstring(msg_progressbar_text)); - } + paf::ui::Widget *pText = pScene->FindChild("test_strings_id"); + pText->SetString(L"Test Text"); } int paf_main(void){ + paf::Framework::InitParam fwParam; + fwParam.mode = paf::Framework::Mode_Normal; - { - paf::Framework::InitParam fwParam; - fwParam.mode = paf::Framework::Mode_Normal; + paf::Framework *paf_fw = new paf::Framework(fwParam); + if(paf_fw != NULL){ + g_fw = paf_fw; - paf::Framework *paf_fw = new paf::Framework(fwParam); - if(paf_fw != NULL){ - g_fw = paf_fw; + paf_fw->LoadCommonResourceSync(); - paf_fw->LoadCommonResourceSync(); + paf::Plugin::InitParam pluginParam; - paf::Plugin::InitParam pluginParam; + pluginParam.name = "config_plugin"; + pluginParam.caller_name = "__main__"; + pluginParam.resource_file = "app0:/config_plugin.rco"; + pluginParam.init_func = NULL; + pluginParam.start_func = loadPluginCB; + pluginParam.stop_func = NULL; + pluginParam.exit_func = NULL; - pluginParam.name = "sample_plugin"; - pluginParam.caller_name = "__main__"; - pluginParam.resource_file = "app0:/sample_plugin.rco"; - pluginParam.init_func = NULL; - pluginParam.start_func = loadPluginCB; - pluginParam.stop_func = NULL; - pluginParam.exit_func = NULL; - - paf::Plugin::LoadSync(pluginParam); - paf_fw->Run(); - } + paf::Plugin::LoadSync(pluginParam); + paf_fw->Run(); } sceClibPrintf("[SAMPLE] Failed to run PAF instance\n"); diff --git a/ISLE/isleapp.cpp b/ISLE/isleapp.cpp index 82fe774a..59530459 100644 --- a/ISLE/isleapp.cpp +++ b/ISLE/isleapp.cpp @@ -275,6 +275,7 @@ SDL_AppResult SDL_AppInit(void** appstate, int argc, char** argv) char buffer[2048]; sceAppUtilAppEventParseLiveArea(&eventParam, buffer); if (strstr(buffer, "-config")) { + sceClibPrintf("Loading Config App.\n"); sceAppMgrLoadExec("app0:/isle-config.self", NULL, NULL); } } diff --git a/miniwin/src/d3drm/backends/gxm/renderer.cpp b/miniwin/src/d3drm/backends/gxm/renderer.cpp index b5c966f6..f5930a0c 100644 --- a/miniwin/src/d3drm/backends/gxm/renderer.cpp +++ b/miniwin/src/d3drm/backends/gxm/renderer.cpp @@ -148,7 +148,9 @@ static void load_razor() } } #else -bool load_razor() {} +bool load_razor() { + return true; +} #endif int gxm_library_init() diff --git a/miniwin/src/d3drm/backends/gxm/shaders/main.color.frag.gxp b/miniwin/src/d3drm/backends/gxm/shaders/main.color.frag.gxp index bc881a9e1941a01d373114fff77b4797dc6b6cde..b7c3853f1ad1d53f26cc56c9ac9a2e8e6fd4f8c4 100644 GIT binary patch delta 644 zcmZ{h!D|yi6vn^V*(IB8*IkQXKqx^<5mD&DLk?}3#h_^+5O4hpJbUoonKWt|YUmP# z7JA4oBI3nBFCKRj5R?izDtL&u;;9D@sR;GWCPH&?VCLI-``-J#_vXOapQ}FHs)1QG zzHb4?pT2GGmV=+%FTenNOqWA?&jg;3+E|90*%@l24F)WdHfcW%t2gd`=YUwJgVvCQ z{^RT9ie#!ENC|*m_-buCiW)0Br`jDTp2IG79jF>4i=IvGOxvx|#9j}gMsaZJeXPGf zaucx{Kk{T#71VmygCkc~6}#3~KMHH!7al{}cs`q7<`C=rFLO!McBQ~J%J&VcUII!% zrmZNR0nc}%te|EPYw-2Y{{yQjxHc_FVe(#K;EI(}&1oOu^ofD@5nSxU(o*tfJGZ zR(^w?Ob4FdygHyj>h(%z*?7EVsx*-_qCe73n@DWz@L|}`SN^%@iT{T9o5X*2iNCbK y&)S;rijgzRr{XjI!RqP~rss1-%pe7sqYhVt)a{hN~?A delta 567 zcmXw!&ubGw9L3-4Ch2A+?4}f1sMU=W5mBtrLk>-yB>@wp5O2K{6hss}^grl#w@FDi zQM*Jz!9#W%dMJnouY#LaywYW;{fyx0_6|#pdeGV4h49%ZB`SCAJUCBE80C5L zvOpZYQKAgRUKt6BGDk`-uZh|}37*H1M*he51MW16iiRW>lH} qf_AgNsz1L`-P=zoBDD7O5rL$S`m6g4C-jcc6NE{a+WeHugzP^CC6#ml diff --git a/miniwin/src/d3drm/backends/gxm/shaders/main.frag.cg b/miniwin/src/d3drm/backends/gxm/shaders/main.frag.cg index 5867df1a..cb8173cf 100644 --- a/miniwin/src/d3drm/backends/gxm/shaders/main.frag.cg +++ b/miniwin/src/d3drm/backends/gxm/shaders/main.frag.cg @@ -30,10 +30,15 @@ void main( float isDirectional = uLights[i].direction.w; float isPositional = uLights[i].position.w; + // TODO: make faster by removing the if statements // directional - float3 pointLightVec = uLights[i].position.xyz - vViewPos; - float3 directionalLightVec = -uLights[i].direction.xyz; - float3 lightVec = normalize(lerp(pointLightVec, directionalLightVec, isDirectional)); + float3 lightVec; + if (isDirectional) { + lightVec = -normalize(uLights[i].direction.xyz); + } else { + lightVec = uLights[i].position.xyz - vViewPos; + } + lightVec = normalize(lightVec); // Diffuse contribution float dotNL = max(dot(vNormal, lightVec), 0.0); diff --git a/miniwin/src/d3drm/backends/gxm/shaders/main.texture.frag.gxp b/miniwin/src/d3drm/backends/gxm/shaders/main.texture.frag.gxp index 08717777e930058b4ab6f9c83d606a9548284f1b..ae023e52a36f11853f9a02e2dfe525183614c4df 100644 GIT binary patch delta 648 zcmZ{h&ubGw6vw}_vr9HV)?GztKqx^<5%JL8BBW)4p{7DGx#chL?7^EtXVa)5w1Fj; z7JA4oBI3nDFCKRj5RobsJb3Vsf`=Y^@Q{iS-|R+c4i4;mXCLohmGlJljrl$0EZ!2S(1_tJSNRy8CD!-XppukX_2%;-xIHPWA!Ho#5!%X zzLO}Eaq^3gGYv@zfcK=&y#2ddzTaNiK2s$?;R0r1kbzr=Wd8G6oT<1mPU5Yy-!6>K z><_JX2UaLbLBp0EH}9?wY-Hq0$z|7v?rDC_{>%eN6EEidWeS1v-%W*n&yoULsNBkQ#pJCVXBK0z@*^t^Bs$hwiugWb!8&bm{75OUHoU)CNqbvFtnUC|$DMjeDEw)u%SOjrMT8b9wTz9q()c|J8C^Y?C#qERS434O>T2}vC!O=cOUa$n*Y&XnE>&dZ}7|HA$P D@b9cs delta 571 zcmXw!!Al!K6vp4|CULVi>_((4sB}|Ast780P%w6u1R7g}lwR6{U@ygk2f;tUw`(FX ziMC66N%4?fg9k4j`UiAZrN`Psk3z}KV~^U4eKV;8J3rpcH{bW|ufc15^~KvVuw+?% zmjqb)vOW2xePFAW1qy)4puYwQmny&(@excwMjkVGNi34+F|kJ9yuUg!w@E_2OdG9r zf-u?Wk5K;45|ILc6BB-WamNWNv%5Fq34ncvDZ8VCTL!P!soJ|YoF%#^*{+7H*gZ8P z4bTayQeP@4NpFFgJCd~^5PGQR!v4L8x9>oQQ21%y#_OWm9*oL@xfBUH}S7y*Tk{Hs?C?y-%~B!Z4Gy#F