CUP自体を実行しないように

CUPが必要な場合黄色画面で終了するように

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@385 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
N2614 2011-07-15 02:49:38 +00:00
parent c766294fe4
commit 3317fbbbd8

View File

@ -114,72 +114,7 @@ namespace
return s_progress[s_progressIndex];
}
nn::Result UpdateCore()
{
nn::Result result;
nn::cup::ProgressInfo info;
/********************** アップデート*******************/
SetTick();
s_scrollBuffer->AppendText("Start Card Update")->Render();
NN_UTIL_RETURN_IF_FAILED(nn::cup::CTR::DoUpdate());
// ステータスがStartedになるまで、プログレスは取得できない
s_scrollBuffer->AppendText("");
do{
s_scrollBuffer->ReplaceText(" %c Initializing", GetProgressChar())->Render();
result = nn::cup::CTR::GetProgressInfo(&info);
NN_UTIL_RETURN_IF_FAILED(result);
nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(40));
}while(info.state==nn::cup::CTR::UPDATE_STATE_INITIALIZING);
// 抜けた際のstateがFAILEDかどうか確認
if(info.state==nn::cup::CTR::UPDATE_STATE_FAILED){
NN_UTIL_RETURN_IF_FAILED(info.lastResult);
}
s_scrollBuffer->ReplaceText(" - Initialized (%lldmsec)", GetConsumedMillisec());
/********************* アップデート中 ******************/
SetTick();
s_scrollBuffer->AppendText("")->Render();
do{
result = nn::cup::CTR::GetProgressInfo(&info);
NN_UTIL_RETURN_IF_FAILED(result);
s_scrollBuffer->ReplaceText(" %c Title %d/%d, size %lld/%lld",
GetProgressChar(),
info.numImportedTitles, info.numTotalTitles,
info.importedSize, info.totalSize)->Render();
nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(40));
}while(info.state==nn::cup::CTR::UPDATE_STATE_STARTED);
// 抜けた際のstateがFAILEDかどうか確認
if(info.state==nn::cup::CTR::UPDATE_STATE_FAILED){
NN_UTIL_RETURN_IF_FAILED(info.lastResult);
}
s_scrollBuffer->AppendText(" - Imported (%lldmsec)", GetConsumedMillisec())->Render();
/***************** アップデート終了中 ******************/
SetTick();
s_scrollBuffer->AppendText("")->Render();
do{
result = nn::cup::CTR::GetProgressInfo(&info);
NN_UTIL_RETURN_IF_FAILED(result);
s_scrollBuffer->ReplaceText(" %c Update Finalizing", GetProgressChar())->Render();
nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(40));
}while(info.state==nn::cup::CTR::UPDATE_STATE_FINALIZING);
// 抜けた際のstateがFAILEDかどうか確認
if(info.state==nn::cup::CTR::UPDATE_STATE_FAILED){
NN_UTIL_RETURN_IF_FAILED(info.lastResult);
}
/******************* アップデート終了 *******************/
s_scrollBuffer->AppendText(" - Finalized (%lldmsec)", GetConsumedMillisec())->Render();
s_scrollBuffer->AppendText("");
return nn::ResultSuccess();
}
nn::Result UpdateSequence(bool *isHandledError)
nn::Result UpdateSequence(bool *isHandledError, bool* needUpdate)
{
nn::Result result;
nn::Result lastResult=nn::ResultSuccess();
@ -209,16 +144,13 @@ namespace
NN_UTIL_RETURN_IF_FAILED(result);
s_scrollBuffer->AppendText(" - Need Update (%lldmsec)", GetConsumedMillisec())->Render();
*needUpdate = true;
s_scrollBuffer->AppendText("")->Render();
lastResult=UpdateCore();
// Initializeに成功した場合のみ、再びInitializeするためにFinalizeが必要
SetTick();
s_scrollBuffer->AppendText("Finalizing Cup Library")->Render();
NN_UTIL_RETURN_IF_FAILED(nn::cup::CTR::Finalize());
s_scrollBuffer->AppendText(" - Complete (%lldmsec)", GetConsumedMillisec())->Render();
s_scrollBuffer->AppendText("")->Render();
return lastResult;
}
@ -258,12 +190,13 @@ extern "C" void nnMain()
nn::am::ProgramInfo outInfos;
result = nn::am::GetProgramInfos(&outInfos, nn::fs::MEDIA_TYPE_NAND, &MMEN_PROGRAM_ID, 1);
bool needUpdate = false;
if (result.IsSuccess())
{
/******************** CUPの実行 *******************/
bool isHandledError = false;
result = UpdateSequence(&isHandledError);
result = UpdateSequence(&isHandledError, &needUpdate);
if (isHandledError == false && result.IsFailure())
{
{
@ -283,7 +216,11 @@ extern "C" void nnMain()
for(;;)
{
s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY0);
if(result.IsSuccess() || result == nn::cup::CTR::ResultUpdateNotRequired())
if(needUpdate)
{
s_RenderSystem.SetClearColor(NN_GX_DISPLAY0, 1, 1, 0, 1);
}
else if(result.IsSuccess() || result == nn::cup::CTR::ResultUpdateNotRequired())
{
s_RenderSystem.SetClearColor(NN_GX_DISPLAY0, 0, 1, 0, 1);
}
@ -294,7 +231,11 @@ extern "C" void nnMain()
s_RenderSystem.Clear();
s_RenderSystem.SwapBuffers();
s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY1);
if(result.IsSuccess() || result == nn::cup::CTR::ResultUpdateNotRequired())
if(needUpdate)
{
s_RenderSystem.SetClearColor(NN_GX_DISPLAY0, 1, 1, 0, 1);
}
else if(result.IsSuccess() || result == nn::cup::CTR::ResultUpdateNotRequired())
{
s_RenderSystem.SetClearColor(NN_GX_DISPLAY1, 0, 1, 0, 1);
}