From c6c96f004821ca237eafb3b8872c5d88dcc0f20f Mon Sep 17 00:00:00 2001
From: Rinnegatamante <rinnegatamante@gmail.com>
Date: Thu, 8 Jul 2021 16:26:33 +0200
Subject: [PATCH] Added a check for libshacccg.suprx existence at boot.

---
 Source/SysVita/main.cpp | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/Source/SysVita/main.cpp b/Source/SysVita/main.cpp
index 854915dd..32f1119f 100644
--- a/Source/SysVita/main.cpp
+++ b/Source/SysVita/main.cpp
@@ -894,6 +894,25 @@ int callbacks_thread(unsigned int args, void* arg) {
 int main(int argc, char* argv[]) {
 	char *rom;
 	
+	// Checking for libshacccg.suprx existence
+	SceIoStat st1, st2;
+	if (!(sceIoGetstat("ur0:/data/libshacccg.suprx", &st1) >= 0 || sceIoGetstat("ur0:/data/external/libshacccg.suprx", &st2) >= 0)) {
+		vglInit(0);
+		SceMsgDialogUserMessageParam msg_param;
+		sceClibMemset(&msg_param, 0, sizeof(SceMsgDialogUserMessageParam));
+		msg_param.buttonType = SCE_MSG_DIALOG_BUTTON_TYPE_OK;
+		msg_param.msg = (const SceChar8*)"Error: Runtime shader compiler (libshacccg.suprx) is not installed.";
+		SceMsgDialogParam param;
+		sceMsgDialogParamInit(&param);
+		param.mode = SCE_MSG_DIALOG_MODE_USER_MSG;
+		param.userMsgParam = &msg_param;
+		sceMsgDialogInit(&param);
+		while (sceMsgDialogGetStatus() != SCE_COMMON_DIALOG_STATUS_FINISHED) {
+			vglSwapBuffers(GL_TRUE);
+		}
+		sceKernelExitProcess(0);
+	}
+	
 	// Initializing sceAppUtil
 	SceAppUtilInitParam appUtilParam;
 	SceAppUtilBootParam appUtilBootParam;