From ffa01a182b5523fe7b1fda3315e22f090f0d8ca3 Mon Sep 17 00:00:00 2001 From: Greg Date: Wed, 30 Nov 2022 18:44:18 -0700 Subject: [PATCH] Port to use GoldHEN for kernel, add libjbc project and API Daemon --- .gitmodules | 5 +- External/GoldHEN_Plugins_SDK | 2 +- External/ps4-libjbc | 1 + Orbis Suite 3.0.sln | 20 ++++- .../ORBS30000/sce_module/libSceFios2.prx | Bin 0 -> 3200 bytes .../pkg/Daemons/ORBS30000/sce_module/libc.prx | Bin 0 -> 3424 bytes .../pkg/Daemons/ORBS30000/sce_sys/icon0.png | Bin 0 -> 41360 bytes .../Build/pkg/Daemons/ORBS30000/sce_sys/param | Bin 0 -> 656 bytes Playstation/Build/pkg/Orbis Suite.gp4 | 12 ++- Playstation/Build/pkg/sce_module/libjbc.sprx | Bin 10480 -> 0 bytes Playstation/OrbisLibAPI/Common.h | 1 + Playstation/OrbisLibAPI/OrbisLibAPI.vcxproj | 71 ++++++++++++++++++ .../OrbisLibAPI/OrbisLibAPI.vcxproj.filters | 28 +++++++ Playstation/OrbisLibAPI/build.bat | 31 ++++++++ Playstation/OrbisLibAPI/main.cpp | 7 ++ Playstation/OrbisSuite/OrbisSuite.vcxproj | 2 + Playstation/OrbisSuite/Utilities.cpp | 5 -- Playstation/OrbisSuite/build.bat | 6 +- Playstation/OrbisSuite/main.cpp | 31 +++++--- .../OrbisToolbox-2.0/OrbisToolbox-2.0.vcxproj | 1 + .../OrbisToolbox-2.0.vcxproj.filters | 18 ++--- Playstation/OrbisToolbox-2.0/Version.h | 22 +++--- Playstation/OrbisToolbox-2.0/build.bat | 20 ++--- .../Resources/BuildNumber.txt | 2 +- .../Resources/BuildString.txt | 2 +- 25 files changed, 233 insertions(+), 54 deletions(-) create mode 160000 External/ps4-libjbc create mode 100644 Playstation/Build/pkg/Daemons/ORBS30000/sce_module/libSceFios2.prx create mode 100644 Playstation/Build/pkg/Daemons/ORBS30000/sce_module/libc.prx create mode 100644 Playstation/Build/pkg/Daemons/ORBS30000/sce_sys/icon0.png create mode 100644 Playstation/Build/pkg/Daemons/ORBS30000/sce_sys/param delete mode 100644 Playstation/Build/pkg/sce_module/libjbc.sprx create mode 100644 Playstation/OrbisLibAPI/Common.h create mode 100644 Playstation/OrbisLibAPI/OrbisLibAPI.vcxproj create mode 100644 Playstation/OrbisLibAPI/OrbisLibAPI.vcxproj.filters create mode 100644 Playstation/OrbisLibAPI/build.bat create mode 100644 Playstation/OrbisLibAPI/main.cpp diff --git a/.gitmodules b/.gitmodules index 7edd423..fb18d61 100644 --- a/.gitmodules +++ b/.gitmodules @@ -5,4 +5,7 @@ [submodule "External/GoldHEN_Plugins_SDK"] path = External/GoldHEN_Plugins_SDK url = https://github.com/GoldHEN/GoldHEN_Plugins_SDK - shallow = true \ No newline at end of file + shallow = true +[submodule "External/ps4-libjbc"] + path = External/ps4-libjbc + url = https://github.com/OSM-Made/ps4-libjbc diff --git a/External/GoldHEN_Plugins_SDK b/External/GoldHEN_Plugins_SDK index 20991d2..4d706c6 160000 --- a/External/GoldHEN_Plugins_SDK +++ b/External/GoldHEN_Plugins_SDK @@ -1 +1 @@ -Subproject commit 20991d2244ae510847c0ccf6549591352084cb73 +Subproject commit 4d706c61238949be07e0204a7f33f34ee59b86f3 diff --git a/External/ps4-libjbc b/External/ps4-libjbc new file mode 160000 index 0000000..9910dcc --- /dev/null +++ b/External/ps4-libjbc @@ -0,0 +1 @@ +Subproject commit 9910dcc1465d606d7791741986a6eeb6f01e49da diff --git a/Orbis Suite 3.0.sln b/Orbis Suite 3.0.sln index 3904063..71e2ace 100644 --- a/Orbis Suite 3.0.sln +++ b/Orbis Suite 3.0.sln @@ -11,7 +11,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Playstation", "Playstation" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{DBCE3AAD-373D-4EB6-8964-2A4BE1E9F575}" ProjectSection(SolutionItems) = preProject - Misc\DriverDefinitions.h = Misc\DriverDefinitions.h Misc\Increment.bat = Misc\Increment.bat EndProjectSection EndProject @@ -50,6 +49,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SetupBA", "Windows\Installe EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OrbisLibraryManager", "Windows\OrbisLibraryManager\OrbisLibraryManager.csproj", "{53869FE9-BAFF-4FED-B8E3-20660865426C}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OrbisLibAPI", "Playstation\OrbisLibAPI\OrbisLibAPI.vcxproj", "{22E600CA-B7A4-4FA1-A1DB-6BA4736E6121}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -206,6 +207,22 @@ Global {53869FE9-BAFF-4FED-B8E3-20660865426C}.Release|x64.Build.0 = Release|Any CPU {53869FE9-BAFF-4FED-B8E3-20660865426C}.Release|x86.ActiveCfg = Release|Any CPU {53869FE9-BAFF-4FED-B8E3-20660865426C}.Release|x86.Build.0 = Release|Any CPU + {22E600CA-B7A4-4FA1-A1DB-6BA4736E6121}.Debug|Any CPU.ActiveCfg = Debug|x64 + {22E600CA-B7A4-4FA1-A1DB-6BA4736E6121}.Debug|Any CPU.Build.0 = Debug|x64 + {22E600CA-B7A4-4FA1-A1DB-6BA4736E6121}.Debug|Win32.ActiveCfg = Debug|x64 + {22E600CA-B7A4-4FA1-A1DB-6BA4736E6121}.Debug|Win32.Build.0 = Debug|x64 + {22E600CA-B7A4-4FA1-A1DB-6BA4736E6121}.Debug|x64.ActiveCfg = Debug|x64 + {22E600CA-B7A4-4FA1-A1DB-6BA4736E6121}.Debug|x64.Build.0 = Debug|x64 + {22E600CA-B7A4-4FA1-A1DB-6BA4736E6121}.Debug|x86.ActiveCfg = Debug|x64 + {22E600CA-B7A4-4FA1-A1DB-6BA4736E6121}.Debug|x86.Build.0 = Debug|x64 + {22E600CA-B7A4-4FA1-A1DB-6BA4736E6121}.Release|Any CPU.ActiveCfg = Release|x64 + {22E600CA-B7A4-4FA1-A1DB-6BA4736E6121}.Release|Any CPU.Build.0 = Release|x64 + {22E600CA-B7A4-4FA1-A1DB-6BA4736E6121}.Release|Win32.ActiveCfg = Release|x64 + {22E600CA-B7A4-4FA1-A1DB-6BA4736E6121}.Release|Win32.Build.0 = Release|x64 + {22E600CA-B7A4-4FA1-A1DB-6BA4736E6121}.Release|x64.ActiveCfg = Release|x64 + {22E600CA-B7A4-4FA1-A1DB-6BA4736E6121}.Release|x64.Build.0 = Release|x64 + {22E600CA-B7A4-4FA1-A1DB-6BA4736E6121}.Release|x86.ActiveCfg = Release|x64 + {22E600CA-B7A4-4FA1-A1DB-6BA4736E6121}.Release|x86.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -222,6 +239,7 @@ Global {A37095E9-80BD-4A6B-AF8B-33D278CF92F3} = {6046C772-BE17-4BC8-A362-AD8C77F9178E} {33C378F9-36C5-4C2C-8350-FD1C8DD5AB66} = {6046C772-BE17-4BC8-A362-AD8C77F9178E} {53869FE9-BAFF-4FED-B8E3-20660865426C} = {8F0E1457-FB1E-47A4-9DA8-74A6B757CAA4} + {22E600CA-B7A4-4FA1-A1DB-6BA4736E6121} = {8E8E4C8D-E3E1-4CB9-BD78-7ADAB2F2CF45} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {4B6EE1D0-5ADF-44A2-B6EE-E5C8E110EE47} diff --git a/Playstation/Build/pkg/Daemons/ORBS30000/sce_module/libSceFios2.prx b/Playstation/Build/pkg/Daemons/ORBS30000/sce_module/libSceFios2.prx new file mode 100644 index 0000000000000000000000000000000000000000..1f83bdc8f1fd0ddf6a56f0d5faa1d914e35095fa GIT binary patch literal 3200 zcmeHKOHUI~6h5~d1riJ|i3my>h>DMb4^RxC16qUxEtG{ZAt6vkQ?0Z>Ns1eB;m(Ee z7odrI;?j*(F&bAaS-Q~Zl7$;L;<@LZ)5i@3W8#KzlbLV6^PR`sb7wlY;o6?Vpj5R| z0IU90|6)1ND1|0M2dW5{N{l^V00f;DW5}?+#=4*bXUMWtYJ>pmf=){%Su(8Gu`cMq z2wA=qjps~dCQ#x89he~@z&d;9-G7pFmvz@~@(4Z*4fXq!Viln7_a(qqWrxdG%WtzL zaG?{*@LUBIM{A4h;1;6HPy7Y-z3tVm8GXXBNarj{oS?+{ zq+X`bU*g4Ike356j_SD|InIK0ZkC|L>BoiUXZaVS((~bOsVN<|;u_Bt4iMbWTrjT& z^>h6LJ6Is=EoSpn3j237Zx3|J{o9#Nyc!QCBaI8MXBJ*wi@%FC)tnl5@~eL6N7d)& zT`#)7^W$iT?eg6Y?2rx=doy;(^#1cS+TyWEFYQI!;!{B{e!F!p(P}=pT=)Gp^>z2< zsJDE@o;72w(Wo~Rn~V-lr@Yzei8$5+wBAGF5s}|r^&kQ&U8x$%OG=+&B5gl}M{;9h zL+8yOs=?p&iS1*EU-8J-x4K^2O8g5=zGrWK)^yW+9}VYyGPX|;9uD0INBRawg9G8~ zp}t7yCdcHulAKNJ9@(8^vuWKX4s7a=CFagT`h5G?Rc~_s&X~zW)>d3_=pAkE7)jh3 zxEpP6?rrXc`-!RfxHmqRN+fgF6SJx9rvjUOYhoBzjZa8`<7Mp@kc*8ag2zSdI!^C{ zBwp_ubUnM-M{pm4W@ur@9_9gU#L>ZA*6jlGXGVsL%$J#8W}ar=WyQBKmwNc}Ps1&IwL3=j}1nN@B)Fi%WlOtYAMxy1%2y6>i#vpC;~u8rH99j>iG! yk`L?W;?d(EbF;x!`u<3#e7L(S)O~>SARSZFz&PSz=KGjaeFgg8LxDfLW#JE)-l}c@ literal 0 HcmV?d00001 diff --git a/Playstation/Build/pkg/Daemons/ORBS30000/sce_module/libc.prx b/Playstation/Build/pkg/Daemons/ORBS30000/sce_module/libc.prx new file mode 100644 index 0000000000000000000000000000000000000000..e49b25d011281d52131a34d5a18106dd49605919 GIT binary patch literal 3424 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 literal 0 HcmV?d00001 diff --git a/Playstation/Build/pkg/Daemons/ORBS30000/sce_sys/param b/Playstation/Build/pkg/Daemons/ORBS30000/sce_sys/param new file mode 100644 index 0000000000000000000000000000000000000000..54664db14153e37bf6f9158b0cc69550486e748d GIT binary patch literal 656 zcmb_WyH3L}6um_eqQC$W8;b|#5~*L{)-G5IvE`UPSfZ4s52;P0BpulJI7U8-leCp8 zb?Jbm>vPV%=RU|pgI0^^hlqUO4Uow5y!vlAQJcIAl;~=oyFaSmBKL^;!G8z+wD0jfvgF$c7B1CGMP6 zy>}<6&z*eHc0zp}IvKiH2@-k~2AYdlaL40FeMlN;`^Fs^tA|QpfKx7zyT9(h%t+}F z>rUQcHap3klgJiJ;!GszCeK*4Oe$7vvl1+2x|puYU^QjjD7G!r8Jp(?E8whB_L*l@ tk*`@kZ@gxme3eyFtuQ45OE;Z!w(mTLMdx??uT$Gz)b;T&*6(&2`~&{TOtb(1 literal 0 HcmV?d00001 diff --git a/Playstation/Build/pkg/Orbis Suite.gp4 b/Playstation/Build/pkg/Orbis Suite.gp4 index 04e59c9..a81df46 100644 --- a/Playstation/Build/pkg/Orbis Suite.gp4 +++ b/Playstation/Build/pkg/Orbis Suite.gp4 @@ -33,6 +33,11 @@ + + + + + @@ -40,6 +45,11 @@ - + + + + + + \ No newline at end of file diff --git a/Playstation/Build/pkg/sce_module/libjbc.sprx b/Playstation/Build/pkg/sce_module/libjbc.sprx deleted file mode 100644 index 93b937fca3abb38ebb7437f4d49e8c6f641cc786..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10480 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 diff --git a/Playstation/OrbisLibAPI/Common.h b/Playstation/OrbisLibAPI/Common.h new file mode 100644 index 0000000..6f70f09 --- /dev/null +++ b/Playstation/OrbisLibAPI/Common.h @@ -0,0 +1 @@ +#pragma once diff --git a/Playstation/OrbisLibAPI/OrbisLibAPI.vcxproj b/Playstation/OrbisLibAPI/OrbisLibAPI.vcxproj new file mode 100644 index 0000000..1088826 --- /dev/null +++ b/Playstation/OrbisLibAPI/OrbisLibAPI.vcxproj @@ -0,0 +1,71 @@ + + + + + Debug + x64 + + + Release + x64 + + + + 15.0 + {22e600ca-b7a4-4fa1-a1db-6ba4736e6121} + Win32Proj + + + + Makefile + true + v141 + + + Makefile + false + v141 + + + + + + + + + + + + + + + eboot.bin + _DEBUG;$(NMakePreprocessorDefinitions) + call build.bat $(IntDir) "$(TargetName)" "$(SolutionDir)" + del /s /q /f $(IntDir)\*.o +del /s /q /f $(IntDir)\*.elf +del /s /q /f $(IntDir)\*.oelf +call build.bat $(IntDir) "$(TargetName)" "$(SolutionDir)" + del /s /q /f $(IntDir)\*.o +del /s /q /f $(IntDir)\*.elf +del /s /q /f $(IntDir)\*.oelf + $(SolutionDir) + $(OO_PS4_TOOLCHAIN)\include;$(NMakeIncludeSearchPath) + + + eboot.bin + NDEBUG;$(NMakePreprocessorDefinitions) + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Playstation/OrbisLibAPI/OrbisLibAPI.vcxproj.filters b/Playstation/OrbisLibAPI/OrbisLibAPI.vcxproj.filters new file mode 100644 index 0000000..2929653 --- /dev/null +++ b/Playstation/OrbisLibAPI/OrbisLibAPI.vcxproj.filters @@ -0,0 +1,28 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + + + + Header Files + + + \ No newline at end of file diff --git a/Playstation/OrbisLibAPI/build.bat b/Playstation/OrbisLibAPI/build.bat new file mode 100644 index 0000000..d60c721 --- /dev/null +++ b/Playstation/OrbisLibAPI/build.bat @@ -0,0 +1,31 @@ +SETLOCAL EnableDelayedExpansion + +Rem Libraries to link in +set libraries=-lc++ -lc -lSceSysModule -lkernel -lSceVideoOut -lSceSystemService -lSceSysCore -lSceSystemStateMgr -lSceNet -lScePad -lSceUserService -lSceRegMgr -lSceFreeType -lSceMsgDialog -lSceCommonDialog -lGoldHEN_Hook + +Rem Read the script arguments into local vars +set intdir=%1 +set targetname=%~2 +set outputPath=%3 + +set outputElf=%intdir%%targetname%.elf +set outputOelf=%intdir%%targetname%.oelf + +Rem Compile object files for all the source files +for %%f in (*.cpp) do ( + clang++ -cc1 -triple x86_64-scei-ps4-elf -I"%OO_PS4_TOOLCHAIN%\\include" -I"%OO_PS4_TOOLCHAIN%\\include\\c++\\v1" -I"..\\..\\External\\GoldHEN_Plugins_SDK\\include" -DORBISLIB_DEBUG -emit-obj -o %intdir%\%%~nf.o %%~nf.cpp +) + +Rem Get a list of object files for linking +set obj_files= +for %%f in (%1\\*.o) do set obj_files=!obj_files! .\%%f + +Rem Link the input ELF +ld.lld -m elf_x86_64 -pie --script "%OO_PS4_TOOLCHAIN%\link.x" --eh-frame-hdr -o "%outputElf%" "-L%OO_PS4_TOOLCHAIN%\\lib" "-L..\\..\\External\\GoldHEN_Plugins_SDK" %libraries% --verbose "%OO_PS4_TOOLCHAIN%\lib\crt1.o" %obj_files% + +Rem Create the eboot +%OO_PS4_TOOLCHAIN%\bin\windows\create-fself.exe -in "%outputElf%" --out "%outputOelf%" --eboot "eboot.bin" + +Rem Cleanup +copy "eboot.bin" %outputPath%\Playstation\Build\pkg\Daemons\ORBS30000\eboot.bin +del "eboot.bin" \ No newline at end of file diff --git a/Playstation/OrbisLibAPI/main.cpp b/Playstation/OrbisLibAPI/main.cpp new file mode 100644 index 0000000..1bc6e14 --- /dev/null +++ b/Playstation/OrbisLibAPI/main.cpp @@ -0,0 +1,7 @@ +#include "Common.h" + +int main() +{ + // Your code here... + return 0; +} \ No newline at end of file diff --git a/Playstation/OrbisSuite/OrbisSuite.vcxproj b/Playstation/OrbisSuite/OrbisSuite.vcxproj index e3c222d..699ce2f 100644 --- a/Playstation/OrbisSuite/OrbisSuite.vcxproj +++ b/Playstation/OrbisSuite/OrbisSuite.vcxproj @@ -76,6 +76,8 @@ del /s /q /f $(IntDir)\*.elf del /s /q /f $(IntDir)\*.oelf $(SolutionDir) $(OO_PS4_TOOLCHAIN)\include;$(NMakeIncludeSearchPath) + External\GoldHEN_Plugins_SDK\include;$(IncludePath) + External\GoldHEN_Plugins_SDK\source;$(SourcePath) $(OO_PS4_TOOLCHAIN)\include;$(NMakeIncludeSearchPath) diff --git a/Playstation/OrbisSuite/Utilities.cpp b/Playstation/OrbisSuite/Utilities.cpp index 818e153..2010265 100644 --- a/Playstation/OrbisSuite/Utilities.cpp +++ b/Playstation/OrbisSuite/Utilities.cpp @@ -99,11 +99,6 @@ void InstallDaemon(const char* Daemon) sprintf(IconPath, "%s%s/sce_sys/icon0.png", DAEMONPATH, Daemon); CopyFile(IconFromPath, IconPath); - char LibjbcFromPath[0x100], LibjbcPath[0x100]; - sprintf(LibjbcFromPath, "%s%s/sce_module/libjbc.sprx", DAEMONGETPATH, Daemon); - sprintf(LibjbcPath, "%s%s/sce_module/libjbc.sprx", DAEMONPATH, Daemon); - CopyFile(LibjbcFromPath, LibjbcPath); - klog("[%s] Installation Success!\n", Daemon); } diff --git a/Playstation/OrbisSuite/build.bat b/Playstation/OrbisSuite/build.bat index b5995f8..29510b1 100644 --- a/Playstation/OrbisSuite/build.bat +++ b/Playstation/OrbisSuite/build.bat @@ -1,7 +1,7 @@ SETLOCAL EnableDelayedExpansion Rem Libraries to link in -set libraries=-lc++ -lc -lSceSysModule -lkernel -lSceVideoOut -lSceSystemService -lSceSysCore -lSceSystemStateMgr -lSceNet -lScePad -lSceUserService -lSceRegMgr -lSceFreeType -lSceMsgDialog -lSceCommonDialog +set libraries=-lc++ -lc -lSceSysModule -lkernel -lSceVideoOut -lSceSystemService -lSceSysCore -lSceSystemStateMgr -lSceNet -lScePad -lSceUserService -lSceRegMgr -lSceFreeType -lSceMsgDialog -lSceCommonDialog -lGoldHEN_Hook Rem Read the script arguments into local vars set intdir=%1 @@ -13,7 +13,7 @@ set outputOelf=%intdir%%targetname%.oelf Rem Compile object files for all the source files for %%f in (*.cpp) do ( - clang++ -cc1 -triple x86_64-scei-ps4-elf -I"%OO_PS4_TOOLCHAIN%\\include" -I"%OO_PS4_TOOLCHAIN%\\include\\c++\\v1" -DORBISLIB_DEBUG -emit-obj -o %intdir%\%%~nf.o %%~nf.cpp + clang++ -cc1 -triple x86_64-scei-ps4-elf -I"%OO_PS4_TOOLCHAIN%\\include" -I"%OO_PS4_TOOLCHAIN%\\include\\c++\\v1" -I"..\\..\\External\\GoldHEN_Plugins_SDK\\include" -DORBISLIB_DEBUG -emit-obj -o %intdir%\%%~nf.o %%~nf.cpp ) Rem Get a list of object files for linking @@ -21,7 +21,7 @@ set obj_files= for %%f in (%1\\*.o) do set obj_files=!obj_files! .\%%f Rem Link the input ELF -ld.lld -m elf_x86_64 -pie --script "%OO_PS4_TOOLCHAIN%\link.x" --eh-frame-hdr -o "%outputElf%" "-L%OO_PS4_TOOLCHAIN%\\lib" %libraries% --verbose "%OO_PS4_TOOLCHAIN%\lib\crt1.o" %obj_files% +ld.lld -m elf_x86_64 -pie --script "%OO_PS4_TOOLCHAIN%\link.x" --eh-frame-hdr -o "%outputElf%" "-L%OO_PS4_TOOLCHAIN%\\lib" "-L..\\..\\External\\GoldHEN_Plugins_SDK" %libraries% --verbose "%OO_PS4_TOOLCHAIN%\lib\crt1.o" %obj_files% Rem Create the eboot %OO_PS4_TOOLCHAIN%\bin\windows\create-fself.exe -in "%outputElf%" --out "%outputOelf%" --eboot "eboot.bin" diff --git a/Playstation/OrbisSuite/main.cpp b/Playstation/OrbisSuite/main.cpp index 6d5a524..5c6eb17 100644 --- a/Playstation/OrbisSuite/main.cpp +++ b/Playstation/OrbisSuite/main.cpp @@ -1,6 +1,5 @@ #include "Common.h" - -#define DEBUG_BUILD +#include "../../External/GoldHEN_Plugins_SDK/include/GoldHEN.h" int main() { @@ -12,9 +11,19 @@ int main() return 0; } + //TODO: Bug? This doesnt seem to work for some reason. // Check GoldHEN SDK Version make sure we can run! + auto sdkVersion = sys_sdk_version(); + if (sdkVersion < GOLDHEN_SDK_VERSION) + { + Notify("Invalid GoldHEN SDK Version %d Orbis Toolbox supports %d+", sdkVersion, GOLDHEN_SDK_VERSION); + sceSystemServiceLoadExec("exit", 0); + return 0; + } // Use future GoldHEN JB + jailbreak_backup jb1; + sys_sdk_jailbreak(&jb1); //MakeDirs MakeDir("/data/Orbis Suite"); @@ -23,19 +32,21 @@ int main() mount_large_fs("/dev/da0x4.crypt", "/system", "exfatfs", "511", MNT_UPDATE); // Install all the things! :D - //InstallDaemon("ORBS30000"); // Orbis Lib + InstallDaemon("ORBS30000"); // Orbis Lib InstallOrbisToolbox(); - // Pull module list of SceShellUI to see if we should unload the toolbox. + //TODO: Pull module list of SceShellUI to see if we should unload the toolbox. // Use GoldHEN SDK to load PRX to SceShellUI. - /* - - auto Handle = OrbisDriver::LoadSPRX("SceShellUI", "/data/Orbis Toolbox/OrbisToolbox-2.0.sprx"); - if (Handle > 0) - klog("Orbis Toolbox loaded! %d\n", Handle); + auto Handle = sys_sdk_proc_prx_load("SceShellUI", "/user/data/Orbis Toolbox/OrbisToolbox-2.0.sprx"); - */ + if (Handle > 0) + klog("Orbis Toolbox loaded! %d\n", Handle); + else + { + klog("error: %d\n", Handle); + Notify("Failed to load Orbis Toolbox!"); + } sceSystemServiceLoadExec("exit", 0); diff --git a/Playstation/OrbisToolbox-2.0/OrbisToolbox-2.0.vcxproj b/Playstation/OrbisToolbox-2.0/OrbisToolbox-2.0.vcxproj index 7919a57..aed5004 100644 --- a/Playstation/OrbisToolbox-2.0/OrbisToolbox-2.0.vcxproj +++ b/Playstation/OrbisToolbox-2.0/OrbisToolbox-2.0.vcxproj @@ -54,6 +54,7 @@ del /s /q /f $(IntDir)\*.elf del /s /q /f $(IntDir)\*.oelf $(SolutionDir) $(OO_PS4_TOOLCHAIN)\include;$(NMakeIncludeSearchPath) + External\GoldHEN_Plugins_SDK\include;$(ExternalIncludePath) WIN32;NDEBUG;$(NMakePreprocessorDefinitions) diff --git a/Playstation/OrbisToolbox-2.0/OrbisToolbox-2.0.vcxproj.filters b/Playstation/OrbisToolbox-2.0/OrbisToolbox-2.0.vcxproj.filters index 55a86c9..f9d55ca 100644 --- a/Playstation/OrbisToolbox-2.0/OrbisToolbox-2.0.vcxproj.filters +++ b/Playstation/OrbisToolbox-2.0/OrbisToolbox-2.0.vcxproj.filters @@ -174,9 +174,6 @@ Header Files\Utilities\Memory Utils - - Header Files\Utilities\Memory Utils - Header Files\Utilities\Memory Utils @@ -195,9 +192,6 @@ Header Files\Utilities\Mono - - Header Files\Utilities\Memory Utils - Header Files\Utilities\PS Utils @@ -216,6 +210,12 @@ Header Files\Utilities\Mono + + Header Files\Utilities\Memory Utils + + + Header Files\Utilities\Memory Utils + @@ -308,9 +308,6 @@ Source Files\Utilities\Memory Utils - - Source Files\Utilities\Memory Utils - Source Files\Utilities\Memory Utils @@ -332,6 +329,9 @@ Source Files\Utilities\Mono + + Source Files\Utilities\Memory Utils + diff --git a/Playstation/OrbisToolbox-2.0/Version.h b/Playstation/OrbisToolbox-2.0/Version.h index 8ebf8ed..e343861 100644 --- a/Playstation/OrbisToolbox-2.0/Version.h +++ b/Playstation/OrbisToolbox-2.0/Version.h @@ -1,11 +1,11 @@ -#pragma once -#define ORBIS_TOOLBOX_MAJOR 2 -#define ORBIS_TOOLBOX_MINOR 0 -#define ORBIS_TOOLBOX_BUILDVERSION 198 -#define stringify(a) stringify_(a) -#define stringify_(a) #a -#if defined(ORBIS_TOOLBOX_DEBUG) -#define ORBIS_TOOLBOX_BUILDSTRING ("[Orbis Toolbox " stringify(ORBIS_TOOLBOX_MAJOR) "." stringify(ORBIS_TOOLBOX_MINOR) "] Dev Build " stringify(ORBIS_TOOLBOX_BUILDVERSION) " " __DATE__ " " __TIME__) -#else -#define ORBIS_TOOLBOX_BUILDSTRING ("[Orbis Toolbox " stringify(ORBIS_TOOLBOX_MAJOR) "." stringify(ORBIS_TOOLBOX_MINOR) "] Build " stringify(ORBIS_TOOLBOX_BUILDVERSION) " " __DATE__ " " __TIME__) -#endif +#pragma once +#define ORBIS_TOOLBOX_MAJOR 2 +#define ORBIS_TOOLBOX_MINOR 0 +#define ORBIS_TOOLBOX_BUILDVERSION 218 +#define stringify(a) stringify_(a) +#define stringify_(a) #a +#if defined(ORBIS_TOOLBOX_DEBUG) +#define ORBIS_TOOLBOX_BUILDSTRING ("[Orbis Toolbox " stringify(ORBIS_TOOLBOX_MAJOR) "." stringify(ORBIS_TOOLBOX_MINOR) "] Dev Build " stringify(ORBIS_TOOLBOX_BUILDVERSION) " " __DATE__ " " __TIME__) +#else +#define ORBIS_TOOLBOX_BUILDSTRING ("[Orbis Toolbox " stringify(ORBIS_TOOLBOX_MAJOR) "." stringify(ORBIS_TOOLBOX_MINOR) "] Build " stringify(ORBIS_TOOLBOX_BUILDVERSION) " " __DATE__ " " __TIME__) +#endif diff --git a/Playstation/OrbisToolbox-2.0/build.bat b/Playstation/OrbisToolbox-2.0/build.bat index 1db648b..2fea6d5 100644 --- a/Playstation/OrbisToolbox-2.0/build.bat +++ b/Playstation/OrbisToolbox-2.0/build.bat @@ -13,7 +13,7 @@ set outputOelf=%intdir%%targetname%.oelf set outputPrx=%intdir%%targetname%.prx set outputStub=%intdir%%targetname%_stub.so -Rem Compile object files for all the source files -DORBIS_TOOLBOX_DEBUG +Rem Compile object files for all the source files for %%f in (*.cpp) do ( clang++ -cc1 -triple x86_64-scei-ps4-elf -I"%OO_PS4_TOOLCHAIN%\include" -I"%OO_PS4_TOOLCHAIN%\\include\\c++\\v1" -emit-obj -o %intdir%\%%~nf.o %%~nf.cpp ) @@ -28,7 +28,7 @@ set obj_files= for %%f in (%intdir%\\*.o) do set obj_files=!obj_files! .\%%f Rem Link the input ELF -ld.lld -m elf_x86_64 -pie --script "%OO_PS4_TOOLCHAIN%\link.x" --eh-frame-hdr -o "%outputElf%" "-L%OO_PS4_TOOLCHAIN%\lib" %libraries% --verbose "%OO_PS4_TOOLCHAIN%\lib\crtlib.o" %obj_files% +ld.lld -m elf_x86_64 -pie --script "%OO_PS4_TOOLCHAIN%\link.x" --eh-frame-hdr -o "%outputElf%" "-L%OO_PS4_TOOLCHAIN%\lib" %libraries% --verbose "..\\..\\External\\GoldHEN_Plugins_SDK\\build\\crtprx.o" %obj_files% Rem Create stub shared libraries for %%f in (*.cpp) do ( @@ -49,15 +49,15 @@ del "%outputPrx%" REM Generate the script. Will overwrite any existing temp.txt REM echo open 192.168.0.54 1337> temp.txt -echo open 192.168.0.54 2121> temp.txt -echo anonymous>> temp.txt -echo anonymous>> temp.txt -echo cd "/data/Orbis Toolbox/">> temp.txt -echo send "%outputPath%\Playstation\Build\pkg\Orbis Toolbox\%targetname%.sprx">> temp.txt -echo quit>> temp.txt +REM echo open 192.168.0.54 2121> temp.txt +REM echo anonymous>> temp.txt +REM echo anonymous>> temp.txt +REM echo cd "/data/Orbis Toolbox/">> temp.txt +REM echo send "%outputPath%\Playstation\Build\pkg\Orbis Toolbox\%targetname%.sprx">> temp.txt +REM echo quit>> temp.txt REM Launch FTP and pass it the script -ftp -s:temp.txt +REM ftp -s:temp.txt REM Clean up. -del temp.txt \ No newline at end of file +REM del temp.txt \ No newline at end of file diff --git a/Windows/OrbisNeighborHood/Resources/BuildNumber.txt b/Windows/OrbisNeighborHood/Resources/BuildNumber.txt index 66227ac..b6e4b18 100644 --- a/Windows/OrbisNeighborHood/Resources/BuildNumber.txt +++ b/Windows/OrbisNeighborHood/Resources/BuildNumber.txt @@ -1 +1 @@ -1369 +1382 diff --git a/Windows/OrbisNeighborHood/Resources/BuildString.txt b/Windows/OrbisNeighborHood/Resources/BuildString.txt index 3fde21b..45e9184 100644 --- a/Windows/OrbisNeighborHood/Resources/BuildString.txt +++ b/Windows/OrbisNeighborHood/Resources/BuildString.txt @@ -1 +1 @@ -Version 3.0.1369 Debug Build Sunday November 13 2022 10:27 AM +Version 3.0.1382 Debug Build Wednesday November 30 2022 3:20 PM