From bd2bafe8aec4477ae1dbb79a90a73ae3006c676f Mon Sep 17 00:00:00 2001 From: str1k3r <115313679+S1l3ntStr1ke87@users.noreply.github.com> Date: Mon, 7 Sep 2026 14:10:31 -0400 Subject: [PATCH] feat: more profile stuff --- 4J_Profile/Windows64/4J_Profile.cpp | 9 ++++- 4J_Profile/Windows64/PRO_Data.cpp | 61 ++++++++++++++++++++--------- 4J_Profile/Windows64/PRO_Data.h | 30 +++++--------- 4J_Profile/Windows64/PRO_Main.cpp | 41 +------------------ 4J_Profile/Windows64/PRO_Main.h | 6 +-- 4J_Profile/Windows64/PRO_Sys.cpp | 13 +++--- 6 files changed, 68 insertions(+), 92 deletions(-) diff --git a/4J_Profile/Windows64/4J_Profile.cpp b/4J_Profile/Windows64/4J_Profile.cpp index 82d9e35..fa30daf 100644 --- a/4J_Profile/Windows64/4J_Profile.cpp +++ b/4J_Profile/Windows64/4J_Profile.cpp @@ -3,12 +3,12 @@ void C_4JProfile::LoadSettings(void* gs, size_t gsSize) { - InternalProfileManager.LoadSettings(gs, gsSize); + InternalProfileManager.m_ProfileData.LoadSettings(gs, gsSize); } void C_4JProfile::SaveSettings(void* gs, size_t gsSize) { - InternalProfileManager.SaveSettings(gs, gsSize); + InternalProfileManager.m_ProfileData.SaveSettings(gs, gsSize); } bool C_4JProfile::IsSignedIn(int iQuadrant) @@ -70,3 +70,8 @@ bool C_4JProfile::IsSystemUIDisplayed() { return 0; //str1k3r - matches durango profile lib } + +void C_4JProfile::SetDebugFullOverride(bool bVal) +{ + InternalProfileManager.m_Sys.SetDebugFullOverride(bVal); +} diff --git a/4J_Profile/Windows64/PRO_Data.cpp b/4J_Profile/Windows64/PRO_Data.cpp index 3bf1bb5..0e375f8 100644 --- a/4J_Profile/Windows64/PRO_Data.cpp +++ b/4J_Profile/Windows64/PRO_Data.cpp @@ -1,23 +1,46 @@ -/* -MIT License +#include "PRO_Data.h" +#include "4J_Profile.h" -Copyright (c) 2026 Patoke +C_4JProfile::PROFILESETTINGS * CProfileData::GetDashboardProfileSettings(int iPad) +{ + ; //str1k3r - stubbed out for now +} -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +//str1k3r - GetSettings is basically snatched from smartCMD +void GetSettings(wchar_t *outPath, DWORD size) +{ + GetModuleFileNameW(NULL, outPath, size); //str1k3r - unlike smartCMD we use wide so we can handle non english characters + wchar_t *lastSlash = wcsrchr(outPath, '\\'); + if (lastSlash) *(lastSlash + 1) = '\0'; + wcsncat_s(outPath, size, L"settings.dat", _TRUNCATE); +} -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +void CProfileData::LoadSettings(void* gs, size_t gsSize) +{ + if (!gs || gsSize == 0) return; -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ + wchar_t settingsPath[MAX_PATH] = {}; + GetSettings(settingsPath, MAX_PATH); + + FILE *file = NULL; + if (_wfopen_s(&file, settingsPath, L"rb") == 0 && file) //str1k3r - fun fact theres a version of fopen_s but for wide :3 + { + fread(gs, 1, gsSize, file); + fclose(file); + } +} + +void CProfileData::SaveSettings(void* gs, size_t gsSize) +{ + if (!gs || gsSize == 0) return; + + wchar_t settingsPath[MAX_PATH] = {}; + GetSettings(settingsPath, MAX_PATH); + + FILE *file = NULL; + if (_wfopen_s(&file, settingsPath, L"wb") == 0 && file) + { + fwrite(gs, 1, gsSize, file); + fclose(file); + } +} diff --git a/4J_Profile/Windows64/PRO_Data.h b/4J_Profile/Windows64/PRO_Data.h index 604a3e9..39006ee 100644 --- a/4J_Profile/Windows64/PRO_Data.h +++ b/4J_Profile/Windows64/PRO_Data.h @@ -1,24 +1,12 @@ #pragma once -/* -MIT License -Copyright (c) 2026 Patoke +class CProfileData +{ +public: + // PROFILE DATA + C_4JProfile::PROFILESETTINGS * GetDashboardProfileSettings(int iPad); -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ + // SETTINGS + void LoadSettings(void* gs, size_t gsSize); + void SaveSettings(void* gs, size_t gsSize); +}; \ No newline at end of file diff --git a/4J_Profile/Windows64/PRO_Main.cpp b/4J_Profile/Windows64/PRO_Main.cpp index d071963..61bb5a0 100644 --- a/4J_Profile/Windows64/PRO_Main.cpp +++ b/4J_Profile/Windows64/PRO_Main.cpp @@ -1,42 +1,3 @@ #include "PRO_Main.h" -CProfile InternalProfileManager; - -//str1k3r - GetSettings is basically snatched from smartCMD -void GetSettings(wchar_t *outPath, DWORD size) -{ - GetModuleFileNameW(NULL, outPath, size); //str1k3r - unlike smartCMD we use wide so we can handle non english characters - wchar_t *lastSlash = wcsrchr(outPath, '\\'); - if (lastSlash) *(lastSlash + 1) = '\0'; - wcsncat_s(outPath, size, L"settings.dat", _TRUNCATE); -} - -void CProfile::LoadSettings(void* gs, size_t gsSize) -{ - if (!gs || gsSize == 0) return; - - wchar_t settingsPath[MAX_PATH] = {}; - GetSettings(settingsPath, MAX_PATH); - - FILE *file = NULL; - if (_wfopen_s(&file, settingsPath, L"rb") == 0 && file) //str1k3r - fun fact theres a version of fopen_s but for wide :3 - { - fread(gs, 1, gsSize, file); - fclose(file); - } -} - -void CProfile::SaveSettings(void* gs, size_t gsSize) -{ - if (!gs || gsSize == 0) return; - - wchar_t settingsPath[MAX_PATH] = {}; - GetSettings(settingsPath, MAX_PATH); - - FILE *file = NULL; - if (_wfopen_s(&file, settingsPath, L"wb") == 0 && file) - { - fwrite(gs, 1, gsSize, file); - fclose(file); - } -} \ No newline at end of file +CProfile InternalProfileManager; \ No newline at end of file diff --git a/4J_Profile/Windows64/PRO_Main.h b/4J_Profile/Windows64/PRO_Main.h index f5b9666..464eade 100644 --- a/4J_Profile/Windows64/PRO_Main.h +++ b/4J_Profile/Windows64/PRO_Main.h @@ -1,15 +1,13 @@ #pragma once #include "PRO_Sys.h" +#include "PRO_Data.h" class CProfile { public: - // SETTINGS - void LoadSettings(void* gs, size_t gsSize); - void SaveSettings(void* gs, size_t gsSize); - CSys m_Sys; + CProfileData m_ProfileData; }; // Singleton diff --git a/4J_Profile/Windows64/PRO_Sys.cpp b/4J_Profile/Windows64/PRO_Sys.cpp index b2ca8f0..ac0612f 100644 --- a/4J_Profile/Windows64/PRO_Sys.cpp +++ b/4J_Profile/Windows64/PRO_Sys.cpp @@ -15,14 +15,15 @@ bool CSys::IsSignedInLive(int iProf) return InputManager.IsPadConnected(iProf); } +//str1k3r - set every pad that isnt pad 0 as a guest bool CSys::IsGuest(int iQuadrant) { - //if(iQuadrant == 0) - //{ - // return false; - //} + if(iQuadrant == 0) + { + return false; + } - return false;//true; + return true; } void CSys::SetFakeGamertag(char *name) @@ -54,7 +55,7 @@ wstring CSys::GetDisplayName(int iPad) return fakeGamerTagW; } - wchar_t iPadGamertagW[32]; + wchar_t iPadGamertagW[16]; _snwprintf_s(iPadGamertagW, _countof(iPadGamertagW), L"%s (%d)", fakeGamerTagW, iPad);