diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4012e94 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.vs +Output \ No newline at end of file diff --git a/README.md b/README.md index 262731b..eb16a03 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,10 @@ For other platforms, you can use : ## Issue / Suggestion Please open new [issue](https://github.com/eliboa/TegraRcmGUI/issues) to report a bug or submit a suggestion. +## Development + +Install the [libusbk dev kit](https://sourceforge.net/projects/libusbk/) using the setup program, then create an environment variable `LIBUSBK_DIR` with the installation path as the value. + ## How to backup/restore your Nintendo Switch's NAND ? 1) Use [memloader](https://github.com/rajkosto/memloader) v3 to mount eMMC on your computer diff --git a/TegraRcmGUI/DialogTab02.cpp b/TegraRcmGUI/DialogTab02.cpp index 261060b..8e158b5 100644 --- a/TegraRcmGUI/DialogTab02.cpp +++ b/TegraRcmGUI/DialogTab02.cpp @@ -144,16 +144,16 @@ void DialogTab02::OnBnClickedMountSd() switch (pmyComboBox->GetCurSel()) { case 0: - _tcscpy(args, TEXT(".\\tools\\memloader\\memloader_usb.bin -r --dataini=.\\tools\\memloader\\ums_boot0.ini")); + _tcscpy_s(args, 255, TEXT(".\\tools\\memloader\\memloader_usb.bin -r --dataini=.\\tools\\memloader\\ums_boot0.ini")); break; case 1: - _tcscpy(args, TEXT(".\\tools\\memloader\\memloader_usb.bin -r --dataini=.\\tools\\memloader\\ums_boot1.ini")); + _tcscpy_s(args, 255, TEXT(".\\tools\\memloader\\memloader_usb.bin -r --dataini=.\\tools\\memloader\\ums_boot1.ini")); break; case 2: - _tcscpy(args, TEXT(".\\tools\\memloader\\memloader_usb.bin -r --dataini=.\\tools\\memloader\\ums_emmc.ini")); + _tcscpy_s(args, 255, TEXT(".\\tools\\memloader\\memloader_usb.bin -r --dataini=.\\tools\\memloader\\ums_emmc.ini")); break; default: - _tcscpy(args, TEXT(".\\tools\\memloader\\memloader_usb.bin -r --dataini=.\\tools\\memloader\\ums_sd.ini")); + _tcscpy_s(args, 255, TEXT(".\\tools\\memloader\\memloader_usb.bin -r --dataini=.\\tools\\memloader\\ums_sd.ini")); break; } diff --git a/TegraRcmGUI/DialogTab03.cpp b/TegraRcmGUI/DialogTab03.cpp index aa857b2..54b5b6d 100644 --- a/TegraRcmGUI/DialogTab03.cpp +++ b/TegraRcmGUI/DialogTab03.cpp @@ -45,6 +45,14 @@ BOOL DialogTab03::OnInitDialog() checkbox->SetCheck(BST_CHECKED); } + value = m_TegraRcm->GetPreset("LOGGING"); + if (value == "TRUE") + { + m_TegraRcm->LOGGING_CURR = TRUE; + CMFCButton* checkbox = (CMFCButton*)GetDlgItem(LOGGING); + checkbox->SetCheck(BST_CHECKED); + } + TCHAR szPath[MAX_PATH]; if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, szPath))) { @@ -66,6 +74,7 @@ BEGIN_MESSAGE_MAP(DialogTab03, CDialogEx) ON_BN_CLICKED(MIN_TO_TRAY, &DialogTab03::OnClickedMinToTray) ON_BN_CLICKED(ID_INSTALL_DRIVER, &DialogTab03::OnBnClickedInstallDriver) ON_BN_CLICKED(RUN_WINSTART, &DialogTab03::OnBnClickedWinstart) + ON_BN_CLICKED(LOGGING, &DialogTab03::OnClickedLogging) //ON_BN_CLICKED(IDC_BUTTON2, &DialogTab03::OnBnClickedButton2) END_MESSAGE_MAP() @@ -113,6 +122,20 @@ void DialogTab03::OnClickedMinToTray() } +void DialogTab03::OnClickedLogging() +{ + // Get Minimize to tray checkbox value (checked, unchecked) + CButton* m_ctlCheck = (CButton*)GetDlgItem(LOGGING); + BOOL IsCheckChecked = (m_ctlCheck->GetCheck() == 1) ? true : false; + if (m_TegraRcm->LOGGING_CURR != IsCheckChecked) + { + if (IsCheckChecked) m_TegraRcm->SetPreset("LOGGING", "TRUE"); + else m_TegraRcm->SetPreset("LOGGING", "FALSE"); + m_TegraRcm->LOGGING_CURR = IsCheckChecked; + } +} + + void DialogTab03::OnBnClickedInstallDriver() { m_TegraRcm->InstallDriver(); diff --git a/TegraRcmGUI/DialogTab03.h b/TegraRcmGUI/DialogTab03.h index 8b55158..88445c0 100644 --- a/TegraRcmGUI/DialogTab03.h +++ b/TegraRcmGUI/DialogTab03.h @@ -44,6 +44,7 @@ public: afx_msg void OnClickedMinToTray(); afx_msg void OnBnClickedInstallDriver(); afx_msg void OnBnClickedWinstart(); + afx_msg void OnClickedLogging(); void CreateLink(); afx_msg void CleanRegestry(); diff --git a/TegraRcmGUI/TegraRcm.cpp b/TegraRcmGUI/TegraRcm.cpp index ca247ad..8d2e913 100644 --- a/TegraRcmGUI/TegraRcm.cpp +++ b/TegraRcmGUI/TegraRcm.cpp @@ -37,6 +37,7 @@ TegraRcm::TegraRcm(CDialog* pParent /*=NULL*/) { m_Parent = pParent; m_hWnd = AfxGetMainWnd()->GetSafeHwnd(); + this->LOGGING_CURR = GetPreset("LOGGING") == "TRUE"; GetFavorites(); //SendUserMessage("Waiting for device in RCM mode"); } @@ -543,8 +544,7 @@ void TegraRcm::SaveFavorites() void TegraRcm::AppendLog(string message) { - // DISABLED - return; + if (!this->LOGGING_CURR) return; // Get time @@ -869,10 +869,9 @@ int TegraRcm::Smasher(TCHAR args[4096], BOOL bInheritHandles) CString csPath2(csPath); csPath.Append(TEXT(".\\TegraRcmSmash.exe ")); TCHAR cmd[4096]; - _tcscpy_s(cmd, csPath); + _tcscpy_s(cmd, 4095, csPath); lstrcat(cmd, args); - SECURITY_ATTRIBUTES sa; sa.nLength = sizeof(sa); sa.lpSecurityDescriptor = NULL; @@ -1126,7 +1125,7 @@ char* TegraRcm::GetRelativeFilename(char *currentDirectory, char *absoluteFilena if (currentDirectory[0] != absoluteFilename[0]) { // not on the same drive, so only absolute filename will do - strcpy(relativeFilename, absoluteFilename); + strcpy_s(relativeFilename, MAX_FILENAME_LEN, absoluteFilename); return relativeFilename; } // they are on the same drive, find out how much of the current directory @@ -1147,7 +1146,7 @@ char* TegraRcm::GetRelativeFilename(char *currentDirectory, char *absoluteFilena // file name should not have a leading one... i++; } - strcpy(relativeFilename, &absoluteFilename[i]); + strcpy_s(relativeFilename, MAX_FILENAME_LEN, &absoluteFilename[i]); return relativeFilename; } // The file is not in a child directory of the current directory, so we @@ -1192,6 +1191,6 @@ char* TegraRcm::GetRelativeFilename(char *currentDirectory, char *absoluteFilena relativeFilename[rfMarker++] = SLASH; } // copy the rest of the filename into the result string - strcpy(&relativeFilename[rfMarker], &absoluteFilename[afMarker]); + strcpy_s(&relativeFilename[rfMarker], MAX_FILENAME_LEN, &absoluteFilename[afMarker]); return relativeFilename; } \ No newline at end of file diff --git a/TegraRcmGUI/TegraRcm.h b/TegraRcmGUI/TegraRcm.h index ec926f9..5bf7e35 100644 --- a/TegraRcmGUI/TegraRcm.h +++ b/TegraRcmGUI/TegraRcm.h @@ -72,6 +72,7 @@ public: BOOL WAITING_RECONNECT = FALSE; BOOL ASK_FOR_DRIVER = FALSE; BOOL MIN_TO_TRAY_CURR = FALSE; + BOOL LOGGING_CURR = FALSE; CString csPath; COLORREF LabelColor = RGB(0, 0, 0); diff --git a/TegraRcmGUI/TegraRcmGUI.rc b/TegraRcmGUI/TegraRcmGUI.rc index 6468d51..9c2f7dc 100644 Binary files a/TegraRcmGUI/TegraRcmGUI.rc and b/TegraRcmGUI/TegraRcmGUI.rc differ diff --git a/TegraRcmGUI/TegraRcmGUI.vcxproj b/TegraRcmGUI/TegraRcmGUI.vcxproj index adcbfdd..d7f4de4 100644 --- a/TegraRcmGUI/TegraRcmGUI.vcxproj +++ b/TegraRcmGUI/TegraRcmGUI.vcxproj @@ -1,289 +1,292 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - {2C091C5B-378F-44D0-91F2-53489BA7B83C} - TegraRcmGUI - MFCProj - 10.0.14393.0 - - - - Application - true - v141 - Unicode - Dynamic - - - Application - false - false - Unicode - Dynamic - v141 - - - Application - true - v141 - Unicode - Dynamic - - - Application - false - true - Unicode - Dynamic - v140 - - - - - - - - - - - - - - - - - - - - - true - - - true - - - false - - - false - - - - Use - Level3 - Disabled - WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_DEBUG;%(PreprocessorDefinitions) - true - C:\libusbK-dev-kit\includes;$(LIBUSBK_DIR)\includes\;%(AdditionalIncludeDirectories) - - - Windows - true - Version.lib;libusbK.lib - C:\libusbK-dev-kit\bin\lib\x86;$(LIBUSBK_DIR)\bin\lib\$(PlatformShortName.Replace('x64','amd64'))\;%(AdditionalLibraryDirectories) - $(OutDir)$(TargetName)$(TargetExt) - - - false - true - _DEBUG;%(PreprocessorDefinitions) - - - 0x0409 - _DEBUG;%(PreprocessorDefinitions) - $(IntDir);%(AdditionalIncludeDirectories) - - - - - Use - Level3 - Disabled - _WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - true - C:\libusbK-dev-kit\includes\;$(LIBUSBK_DIR)\includes\;%(AdditionalIncludeDirectories) - - - Windows - true - $(OutDir)$(TargetName)$(TargetExt) - C:\libusbK-dev-kit\bin\lib\amd64\;$(LIBUSBK_DIR)\bin\lib\$(PlatformShortName.Replace('x64','amd64'))\;%(AdditionalLibraryDirectories) - - - false - true - _DEBUG;%(PreprocessorDefinitions) - - - 0x0409 - _DEBUG;%(PreprocessorDefinitions) - $(IntDir);%(AdditionalIncludeDirectories) - - - - - Level3 - Use - MaxSpeed - true - true - WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;NDEBUG;%(PreprocessorDefinitions) - true - C:\libusbK-dev-kit\includes;$(LIBUSBK_DIR)\includes\;%(AdditionalIncludeDirectories) - - - Windows - true - true - true - C:\libusbK-dev-kit\bin\lib\x86;$(LIBUSBK_DIR)\bin\lib\$(PlatformShortName.Replace('x64','amd64'))\;%(AdditionalLibraryDirectories) - Version.lib;libusbK.lib;%(AdditionalDependencies) - AsInvoker - true - false - - - false - true - NDEBUG;%(PreprocessorDefinitions) - - - 0x0409 - NDEBUG;%(PreprocessorDefinitions) - $(IntDir);%(AdditionalIncludeDirectories) - - - - - Level3 - Use - MaxSpeed - true - true - _WINDOWS;NDEBUG;%(PreprocessorDefinitions) - true - $(LIBUSBK_DIR)\includes\;%(AdditionalIncludeDirectories) - - - Windows - true - true - true - $(LIBUSBK_DIR)\bin\lib\$(PlatformShortName.Replace('x64','amd64'))\;%(AdditionalLibraryDirectories) - Version.lib;libusbK.lib;%(AdditionalDependencies) - - - false - true - NDEBUG;%(PreprocessorDefinitions) - - - 0x0409 - NDEBUG;%(PreprocessorDefinitions) - $(IntDir);%(AdditionalIncludeDirectories) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create - Create - Create - Create - - - - - - - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {2C091C5B-378F-44D0-91F2-53489BA7B83C} + TegraRcmGUI + MFCProj + 10.0 + + + + Application + true + v142 + Unicode + Dynamic + + + Application + false + false + Unicode + Dynamic + v142 + + + Application + true + v142 + Unicode + Dynamic + + + Application + false + true + Unicode + Dynamic + v142 + + + + + + + + + + + + + + + + + + + + + true + + + true + $(SolutionDir)\Output\$(Platform)\$(Configuration)\ + Output\$(Platform)\$(Configuration)\ + + + false + + + $(SolutionDir)\Output\$(Platform)\$(Configuration)\ + Output\$(Platform)\$(Configuration)\ + + + + Use + Level3 + Disabled + WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_DEBUG;%(PreprocessorDefinitions) + true + $(LIBUSBK_DIR)\includes\;%(AdditionalIncludeDirectories) + + + Windows + true + Version.lib;libusbK.lib;%(AdditionalDependencies) + $(LIBUSBK_DIR)\bin\lib\$(PlatformShortName.Replace('x64','amd64'))\;%(AdditionalLibraryDirectories) + $(OutDir)$(TargetName)$(TargetExt) + + + false + true + _DEBUG;%(PreprocessorDefinitions) + + + 0x0409 + _DEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + Use + Level3 + Disabled + _WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + $(LIBUSBK_DIR)\includes\;%(AdditionalIncludeDirectories) + + + Windows + true + $(LIBUSBK_DIR)\bin\lib\$(PlatformShortName.Replace('x64','amd64'))\;%(AdditionalLibraryDirectories) + Version.lib;libusbK.lib;%(AdditionalDependencies) + + + false + true + _DEBUG;%(PreprocessorDefinitions) + + + 0x0409 + _DEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + Level3 + Use + MaxSpeed + true + true + WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;NDEBUG;%(PreprocessorDefinitions) + true + $(LIBUSBK_DIR)\includes\;%(AdditionalIncludeDirectories) + + + Windows + true + true + true + $(LIBUSBK_DIR)\bin\lib\$(PlatformShortName.Replace('x64','amd64'))\;%(AdditionalLibraryDirectories) + Version.lib;libusbK.lib;%(AdditionalDependencies) + AsInvoker + true + false + + + false + true + NDEBUG;%(PreprocessorDefinitions) + + + 0x0409 + NDEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + Level3 + Use + MaxSpeed + true + true + _WINDOWS;NDEBUG;%(PreprocessorDefinitions) + true + $(LIBUSBK_DIR)\includes\;%(AdditionalIncludeDirectories) + + + Windows + true + true + true + $(LIBUSBK_DIR)\bin\lib\$(PlatformShortName.Replace('x64','amd64'))\;%(AdditionalLibraryDirectories) + Version.lib;libusbK.lib;%(AdditionalDependencies) + + + false + true + NDEBUG;%(PreprocessorDefinitions) + + + 0x0409 + NDEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create + Create + Create + Create + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TegraRcmGUI/TegraRcmGUIDlg.cpp b/TegraRcmGUI/TegraRcmGUIDlg.cpp index 5f6321a..8b129a3 100644 --- a/TegraRcmGUI/TegraRcmGUIDlg.cpp +++ b/TegraRcmGUI/TegraRcmGUIDlg.cpp @@ -101,6 +101,10 @@ END_MESSAGE_MAP() // BOOL CTegraRcmGUIDlg::OnInitDialog() { + + m_TegraRcm = new TegraRcm(this); + m_TegraRcm->AppendLog("new TegraRcm()"); + CDialog::OnInitDialog(); // Accessibility @@ -187,9 +191,6 @@ BOOL CTegraRcmGUIDlg::OnInitDialog() SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon - m_TegraRcm = new TegraRcm(this); - m_TegraRcm->AppendLog("new TegraRcm()"); - // Kill other running process of app m_TegraRcm->KillRunningProcess(TEXT("TegraRcmGUI.exe")); diff --git a/TegraRcmGUI/resource.h b/TegraRcmGUI/resource.h index 705144c..ba7c72d 100644 Binary files a/TegraRcmGUI/resource.h and b/TegraRcmGUI/resource.h differ