mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
NIM以外のデーモンを停止するように
cfgのキャリブレーションをそのまま移行していたので移行先のcal値を使うように PANICしないように git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@34 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
parent
a24aeef87c
commit
db3e51d581
@ -31,6 +31,7 @@
|
||||
#include <nn/cfg/CTR/cfg_ApiNor.h>
|
||||
#include <nn/am/am_ApiSystemMenu.h>
|
||||
#include <nn/os/os_SharedInfo.h>
|
||||
#include <nn/ndm.h>
|
||||
#include "demo.h"
|
||||
|
||||
#include <vector>
|
||||
@ -155,7 +156,7 @@ extern "C" void nnMain(void)
|
||||
|
||||
// hid の初期化
|
||||
result = nn::hid::Initialize();
|
||||
NN_UTIL_PANIC_IF_FAILED(result);
|
||||
NN_ERR_THROW_FATAL_IF_FATAL_ONLY(result);
|
||||
|
||||
// cfg の初期化
|
||||
nn::cfg::CTR::init::Initialize();
|
||||
@ -174,6 +175,18 @@ extern "C" void nnMain(void)
|
||||
nn::mcu::CTR::InitializeHwCheck(&s_McuSession);
|
||||
nn::mcu::CTR::HwCheck mcu(s_McuSession);
|
||||
|
||||
// ndmの初期化
|
||||
result = nn::ndm::Initialize();
|
||||
NN_ERR_THROW_FATAL_IF_FATAL_ONLY(result);
|
||||
|
||||
// NIM以外のデーモンの自律動作を停止
|
||||
result = nn::ndm::Suspend(nn::ndm::DN_CEC);
|
||||
NN_ERR_THROW_FATAL_IF_FATAL_ONLY(result);
|
||||
result = nn::ndm::Suspend(nn::ndm::DN_BOSS);
|
||||
NN_ERR_THROW_FATAL_IF_FATAL_ONLY(result);
|
||||
result = nn::ndm::Suspend(nn::ndm::DN_FRIENDS);
|
||||
NN_ERR_THROW_FATAL_IF_FATAL_ONLY(result);
|
||||
|
||||
// amの初期化
|
||||
nn::am::InitializeForSystemMenu();
|
||||
|
||||
|
||||
@ -510,10 +510,20 @@ void ControlState(::std::vector<std::string>& operationMessage, bool& nextStep,
|
||||
}
|
||||
break;
|
||||
|
||||
// プレイ履歴復元
|
||||
// 削除処理
|
||||
case HISTORY_RECOVER:
|
||||
{
|
||||
nn::ptm::CTR::InvalidateSystemTime();
|
||||
static bool init = true;
|
||||
if (init)
|
||||
{
|
||||
// ptmのセーブデータ移行後に時計を無効化する
|
||||
nn::ptm::CTR::InvalidateSystemTime();
|
||||
|
||||
// cfgのハードウェア固有情報をcal値で初期化する
|
||||
InitializeHardwareDependentSetting();
|
||||
|
||||
init = false;
|
||||
}
|
||||
|
||||
s_RestoreState = TIME_ADJUST;
|
||||
}
|
||||
|
||||
@ -1186,6 +1186,82 @@ void ImportPlayHistory()
|
||||
s_ImportThread.Start(ImportPlayHistoryThreadFunc, s_ImportThreadStack);
|
||||
}
|
||||
|
||||
void ExportTouchPanelCfgData()
|
||||
{
|
||||
using namespace nn::cfg::CTR::detail;
|
||||
|
||||
nn::Result result;
|
||||
nn::cfg::CTR::detail::TouchPanelCfgData touchPanelCfgData;
|
||||
common::SdReaderWriter sdWriter;
|
||||
|
||||
COMMON_LOGGER("Export TouchPanelData\n");
|
||||
|
||||
common::SdMountManager::Mount();
|
||||
|
||||
result = nn::cfg::CTR::init::GetConfig(&touchPanelCfgData, sizeof(TouchPanelCfgData),
|
||||
GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_TOUCHPANEL));
|
||||
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
|
||||
if (result.IsSuccess())
|
||||
{
|
||||
result = sdWriter.WriteBuf(common::TOUCH_PANEL_CALIBRATION_PATHNAME, &touchPanelCfgData, sizeof(touchPanelCfgData));
|
||||
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
|
||||
}
|
||||
|
||||
common::SdMountManager::Unmount();
|
||||
}
|
||||
|
||||
void ImportTouchPanelCfgData(nn::cfg::CTR::detail::TouchPanelCfgData* data)
|
||||
{
|
||||
using namespace nn::cfg::CTR::detail;
|
||||
|
||||
nn::Result result;
|
||||
|
||||
COMMON_LOGGER("Import TouchPanelData\n");
|
||||
|
||||
common::SdMountManager::Mount();
|
||||
|
||||
size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize();
|
||||
void* buf = common::HeapManager::GetHeap()->Allocate(bufSize);
|
||||
if (buf != NULL)
|
||||
{
|
||||
common::SdReaderWriter sdReader;
|
||||
|
||||
size_t readSize;
|
||||
result = sdReader.ReadBuf(common::TOUCH_PANEL_CALIBRATION_PATHNAME, buf, bufSize, &readSize);
|
||||
if(result.IsSuccess())
|
||||
{
|
||||
// SDから読み出し成功
|
||||
std::memcpy(data, buf, readSize);
|
||||
}
|
||||
else
|
||||
{
|
||||
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
|
||||
}
|
||||
common::HeapManager::GetHeap()->Free(buf);
|
||||
}
|
||||
|
||||
common::SdMountManager::Unmount();
|
||||
}
|
||||
|
||||
void InitializeHardwareDependentSetting()
|
||||
{
|
||||
using namespace nn::cfg::CTR::detail;
|
||||
nn::Result result;
|
||||
|
||||
nn::cfg::CTR::detail::TouchPanelCfgData touchPanelCfgData;
|
||||
ImportTouchPanelCfgData(&touchPanelCfgData);
|
||||
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_TOUCHPANEL), &touchPanelCfgData,
|
||||
sizeof(TouchPanelCfgData));
|
||||
|
||||
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
|
||||
|
||||
nn::cfg::CTR::init::ResetCameraCalibration();
|
||||
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
|
||||
|
||||
nn::cfg::CTR::init::ResetAnalogStickCalibration();
|
||||
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
|
||||
}
|
||||
|
||||
void ImportData()
|
||||
{
|
||||
static bool init = true;
|
||||
@ -1206,6 +1282,10 @@ void ImportData()
|
||||
// TWLサウンド領域のデータをNANDに書き込む
|
||||
ImportTwlSoundData();
|
||||
|
||||
// タッチパネルキャリブレーションデータをSDカードに出力する
|
||||
// 本体初期化後はcal値が設定されている
|
||||
ExportTouchPanelCfgData();
|
||||
|
||||
// SDカードのセーブデータをNANDに書き込む
|
||||
ImportSaveData();
|
||||
|
||||
|
||||
@ -69,6 +69,9 @@ void ClearFileReadResult();
|
||||
|
||||
// プレイ履歴を読み込みます。ptmのセーブデータ移行後に呼び出す必要があります
|
||||
void ImportPlayHistory();
|
||||
|
||||
// cfgのハードウェア固有領域をcal値で初期化します
|
||||
void InitializeHardwareDependentSetting();
|
||||
}
|
||||
|
||||
#endif /* IMPORTER_H_ */
|
||||
|
||||
@ -49,6 +49,7 @@ const wchar_t* const INITIALIZED_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/Con
|
||||
const wchar_t* const RTC_SYNC_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/RtcSyncFinished";
|
||||
const wchar_t* const PLAYHISTORY_PATHNAME = L"sdmc:/CTR_Console_Repair/playhistory.bin";
|
||||
const wchar_t* const PLAYHISTORY_COUNT_PATHNAME = L"sdmc:/CTR_Console_Repair/playhistoryCount.bin";
|
||||
const wchar_t* const TOUCH_PANEL_CALIBRATION_PATHNAME = L"sdmc:/CTR_Console_Repair/tpCalibration.bin";
|
||||
|
||||
enum TWL_PATHNAME
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user