mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
trunk r355,356,357,394のマージ
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@395 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
parent
80dfa3e041
commit
1103dd42a9
59
branches/SelfCupExecChecker/HeapManager.cpp
Normal file
59
branches/SelfCupExecChecker/HeapManager.cpp
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: Horizon
|
||||||
|
File: HeapManager.cpp
|
||||||
|
|
||||||
|
Copyright 2009 Nintendo. All rights reserved.
|
||||||
|
|
||||||
|
These coded instructions, statements, and computer programs contain
|
||||||
|
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||||
|
Company Ltd., and are protected by Federal copyright law. They may
|
||||||
|
not be disclosed to third parties or copied or duplicated in any form,
|
||||||
|
in whole or in part, without the prior written consent of Nintendo.
|
||||||
|
|
||||||
|
$Rev$
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "HeapManager.h"
|
||||||
|
|
||||||
|
nn::fnd::ThreadSafeExpHeap s_AppHeap;
|
||||||
|
|
||||||
|
|
||||||
|
HeapManager::HeapManager(size_t byteSize, s32 alignment, bit8 groupId, nn::fnd::ExpHeapBase::AllocationMode mode, bool reuse)
|
||||||
|
{
|
||||||
|
m_Ptr = s_AppHeap.Allocate(byteSize, alignment, groupId, mode, reuse);
|
||||||
|
}
|
||||||
|
|
||||||
|
HeapManager::~HeapManager()
|
||||||
|
{
|
||||||
|
if(m_Ptr != NULL)
|
||||||
|
{
|
||||||
|
s_AppHeap.Free(m_Ptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void* HeapManager::GetAddr()
|
||||||
|
{
|
||||||
|
return m_Ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void InitializeHeap()
|
||||||
|
{
|
||||||
|
s_AppHeap.Initialize(nn::os::GetDeviceMemoryAddress(), nn::os::GetDeviceMemorySize(), nn::os::ALLOCATE_OPTION_LINEAR);
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t GetAllocatableSize(s32 alignment)
|
||||||
|
{
|
||||||
|
return s_AppHeap.GetAllocatableSize(alignment);
|
||||||
|
}
|
||||||
|
|
||||||
|
void* ForceAllocate(size_t byteSize, s32 alignment, bit8 groupId, nn::fnd::ExpHeapBase::AllocationMode mode, bool reuse)
|
||||||
|
{
|
||||||
|
return s_AppHeap.Allocate(byteSize, alignment, groupId, mode, reuse);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ForceFree(void* ptr)
|
||||||
|
{
|
||||||
|
if(ptr != NULL)
|
||||||
|
{
|
||||||
|
s_AppHeap.Free(ptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
46
branches/SelfCupExecChecker/HeapManager.h
Normal file
46
branches/SelfCupExecChecker/HeapManager.h
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: Horizon
|
||||||
|
File: HeapManager.h
|
||||||
|
|
||||||
|
Copyright 2009 Nintendo. All rights reserved.
|
||||||
|
|
||||||
|
These coded instructions, statements, and computer programs contain
|
||||||
|
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||||
|
Company Ltd., and are protected by Federal copyright law. They may
|
||||||
|
not be disclosed to third parties or copied or duplicated in any form,
|
||||||
|
in whole or in part, without the prior written consent of Nintendo.
|
||||||
|
|
||||||
|
$Rev$
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef HEAPMANAGER_H_
|
||||||
|
#define HEAPMANAGER_H_
|
||||||
|
|
||||||
|
#include <nn.h>
|
||||||
|
#include <nn/fnd.h>
|
||||||
|
|
||||||
|
class HeapManager
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit HeapManager(size_t byteSize, s32 alignment = nn::fnd::ExpHeapBase::DEFAULT_ALIGNMENT, bit8 groupId = 0,
|
||||||
|
nn::fnd::ExpHeapBase::AllocationMode mode = nn::fnd::ExpHeapBase::ALLOCATION_MODE_FIRST_FIT, bool reuse = false);
|
||||||
|
virtual ~HeapManager();
|
||||||
|
|
||||||
|
void* GetAddr();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void* m_Ptr;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
void InitializeHeap();
|
||||||
|
size_t GetAllocatableSize(s32 alignment = nn::fnd::ExpHeapBase::DEFAULT_ALIGNMENT);
|
||||||
|
|
||||||
|
// HeapManagerを使わず確保する場合のみ
|
||||||
|
void* ForceAllocate(size_t byteSize, s32 alignment = nn::fnd::ExpHeapBase::DEFAULT_ALIGNMENT, bit8 groupId = 0,
|
||||||
|
nn::fnd::ExpHeapBase::AllocationMode mode = nn::fnd::ExpHeapBase::ALLOCATION_MODE_FIRST_FIT, bool reuse = false);
|
||||||
|
|
||||||
|
// HeapManagerを使わず解放する場合のみ
|
||||||
|
void ForceFree(void* ptr);
|
||||||
|
|
||||||
|
#endif /* HEAPMANAGER_H_ */
|
||||||
@ -23,12 +23,15 @@ INCLUDES += $(SAMPLED_DEMOS_COMMON_INCLUDE_DIR)
|
|||||||
SOURCES[] =
|
SOURCES[] =
|
||||||
main.cpp
|
main.cpp
|
||||||
scrollBuffer.cpp
|
scrollBuffer.cpp
|
||||||
|
VersionDetect.cpp
|
||||||
|
HeapManager.cpp
|
||||||
|
|
||||||
LIBS += lib_demo \
|
LIBS += lib_demo \
|
||||||
libnn_am \
|
libnn_am \
|
||||||
libnn_cup \
|
libnn_cup \
|
||||||
libnn_ns \
|
libnn_ns \
|
||||||
|
|
||||||
|
ROMFS_ROOT = romfiles
|
||||||
|
|
||||||
DESCRIPTOR = $(HORIZON_ROOT)/resources/specfiles/SelfCup.desc
|
DESCRIPTOR = $(HORIZON_ROOT)/resources/specfiles/SelfCup.desc
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
BIN
branches/SelfCupExecChecker/SelfCupTool.bsf
Normal file
BIN
branches/SelfCupExecChecker/SelfCupTool.bsf
Normal file
Binary file not shown.
26
branches/SelfCupExecChecker/SelfCupTool.rsf
Normal file
26
branches/SelfCupExecChecker/SelfCupTool.rsf
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
BasicInfo:
|
||||||
|
Title: SelfCupTool
|
||||||
|
ProductCode: CTR-P-234A
|
||||||
|
BackupMemoryType: None
|
||||||
|
Logo: Nintendo
|
||||||
|
|
||||||
|
CardInfo:
|
||||||
|
CardDevice: None
|
||||||
|
|
||||||
|
TitleInfo:
|
||||||
|
Use: Evaluation
|
||||||
|
UniqueId: 0xf802a
|
||||||
|
Version: 0
|
||||||
|
|
||||||
|
SystemControlInfo:
|
||||||
|
AppType : Application
|
||||||
|
StackSize : 65536
|
||||||
|
Dependency:
|
||||||
|
- nwm
|
||||||
|
- socket
|
||||||
|
- ssl
|
||||||
|
- friends
|
||||||
|
- ac
|
||||||
|
- cecd
|
||||||
|
- boss
|
||||||
|
- ndm
|
||||||
109
branches/SelfCupExecChecker/VersionDetect.cpp
Normal file
109
branches/SelfCupExecChecker/VersionDetect.cpp
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: Horizon
|
||||||
|
File: VersionDetect.cpp
|
||||||
|
|
||||||
|
Copyright 2009 Nintendo. All rights reserved.
|
||||||
|
|
||||||
|
These coded instructions, statements, and computer programs contain
|
||||||
|
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||||
|
Company Ltd., and are protected by Federal copyright law. They may
|
||||||
|
not be disclosed to third parties or copied or duplicated in any form,
|
||||||
|
in whole or in part, without the prior written consent of Nintendo.
|
||||||
|
|
||||||
|
$Rev$
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include <nn.h>
|
||||||
|
#include <nn/fs.h>
|
||||||
|
#include <nn/fs/CTR/MPCore/fs_FileSystemBasePrivate.h>
|
||||||
|
|
||||||
|
#include "VersionDetect.h"
|
||||||
|
#include "HeapManager.h"
|
||||||
|
|
||||||
|
|
||||||
|
void GetCupVersion(nn::pl::CTR::CardUpdateVersion* cup, nn::cfg::CTR::CfgRegionCode region)
|
||||||
|
{
|
||||||
|
nn::Result result;
|
||||||
|
const size_t BUF_SIZE = 1024;
|
||||||
|
u8 buf[BUF_SIZE];
|
||||||
|
// CUPバージョン
|
||||||
|
{
|
||||||
|
result = nn::fs::MountContent("cver:", nn::fs::MEDIA_TYPE_NAND, cCupVerId[region], 0, 1, 1, buf,
|
||||||
|
BUF_SIZE);
|
||||||
|
|
||||||
|
nn::fs::FileInputStream fis;
|
||||||
|
|
||||||
|
result = fis.TryInitialize(L"cver:/version.bin");
|
||||||
|
if (result.IsSuccess())
|
||||||
|
{
|
||||||
|
s64 fileSize = fis.GetSize();
|
||||||
|
NN_LOG("version.bin size = %lld\n", fileSize);
|
||||||
|
s32 ret;
|
||||||
|
void* addr = NULL;
|
||||||
|
HeapManager heap(fileSize);
|
||||||
|
addr = heap.GetAddr();
|
||||||
|
if (addr != NULL)
|
||||||
|
{
|
||||||
|
result = fis.TryRead(&ret, addr, fileSize);
|
||||||
|
if (result.IsSuccess())
|
||||||
|
{
|
||||||
|
nn::pl::CTR::CardUpdateVersion* ver_buf = reinterpret_cast<nn::pl::CTR::CardUpdateVersion*> (addr);
|
||||||
|
|
||||||
|
std::memcpy(cup, ver_buf, sizeof(nn::pl::CTR::CardUpdateVersion));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fis.Finalize();
|
||||||
|
|
||||||
|
nn::fs::Unmount("cver:");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void GetNupVersion(nn::pl::CTR::NetworkUpdateVersion* nup, nn::cfg::CTR::CfgRegionCode region)
|
||||||
|
{
|
||||||
|
nn::Result result;
|
||||||
|
const size_t BUF_SIZE = 1024;
|
||||||
|
u8 buf[BUF_SIZE];
|
||||||
|
|
||||||
|
// NUPバージョン
|
||||||
|
{
|
||||||
|
result = nn::fs::MountContent("nver:", nn::fs::MEDIA_TYPE_NAND, cNupVerId[region], 0, 1, 1, buf,
|
||||||
|
BUF_SIZE);
|
||||||
|
|
||||||
|
nn::fs::FileInputStream fis;
|
||||||
|
|
||||||
|
result = fis.TryInitialize(L"nver:/version.bin");
|
||||||
|
if (result.IsSuccess())
|
||||||
|
{
|
||||||
|
s64 fileSize = fis.GetSize();
|
||||||
|
NN_LOG("version.bin size = %lld\n", fileSize);
|
||||||
|
s32 ret;
|
||||||
|
void* addr = NULL;
|
||||||
|
HeapManager heap(fileSize);
|
||||||
|
addr = heap.GetAddr();
|
||||||
|
if (addr != NULL)
|
||||||
|
{
|
||||||
|
result = fis.TryRead(&ret, addr, fileSize);
|
||||||
|
if (result.IsSuccess())
|
||||||
|
{
|
||||||
|
nn::pl::CTR::NetworkUpdateVersion* ver_buf =
|
||||||
|
reinterpret_cast<nn::pl::CTR::NetworkUpdateVersion*> (addr);
|
||||||
|
|
||||||
|
std::memcpy(nup, ver_buf, sizeof(nn::pl::CTR::NetworkUpdateVersion));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fis.Finalize();
|
||||||
|
nn::fs::Unmount("nver:");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void GetSystemVersion(VerDef* mVerData, nn::cfg::CTR::CfgRegionCode region)
|
||||||
|
{
|
||||||
|
GetCupVersion(&mVerData->cup, region);
|
||||||
|
GetNupVersion(&mVerData->nup, region);
|
||||||
|
}
|
||||||
55
branches/SelfCupExecChecker/VersionDetect.h
Normal file
55
branches/SelfCupExecChecker/VersionDetect.h
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: Horizon
|
||||||
|
File: VersionDetect.h
|
||||||
|
|
||||||
|
Copyright 2009 Nintendo. All rights reserved.
|
||||||
|
|
||||||
|
These coded instructions, statements, and computer programs contain
|
||||||
|
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||||
|
Company Ltd., and are protected by Federal copyright law. They may
|
||||||
|
not be disclosed to third parties or copied or duplicated in any form,
|
||||||
|
in whole or in part, without the prior written consent of Nintendo.
|
||||||
|
|
||||||
|
$Rev$
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef VERSIONDETECT_H_
|
||||||
|
#define VERSIONDETECT_H_
|
||||||
|
|
||||||
|
#include <nn/cfg/CTR/cfg_RegionCode.h>
|
||||||
|
#include <nn/pl/CTR/pl_SharedDataTitleId.h>
|
||||||
|
#include <nn/pl/CTR/pl_Version.h>
|
||||||
|
|
||||||
|
struct VerDef
|
||||||
|
{
|
||||||
|
nn::pl::CTR::CardUpdateVersion cup;
|
||||||
|
nn::pl::CTR::NetworkUpdateVersion nup;
|
||||||
|
};
|
||||||
|
|
||||||
|
// TODO:リージョン追加時に範囲外アクセスにならないよう注意
|
||||||
|
const nn::ProgramId cCupVerId[] =
|
||||||
|
{
|
||||||
|
nn::pl::CTR::SHAREDDATA_TITLEID_CUP_VERSION_JP,
|
||||||
|
nn::pl::CTR::SHAREDDATA_TITLEID_CUP_VERSION_US,
|
||||||
|
nn::pl::CTR::SHAREDDATA_TITLEID_CUP_VERSION_EU,
|
||||||
|
nn::pl::CTR::SHAREDDATA_TITLEID_CUP_VERSION_EU,
|
||||||
|
nn::pl::CTR::SHAREDDATA_TITLEID_CUP_VERSION_CN,
|
||||||
|
nn::pl::CTR::SHAREDDATA_TITLEID_CUP_VERSION_KR,
|
||||||
|
nn::pl::CTR::SHAREDDATA_TITLEID_CUP_VERSION_TW,
|
||||||
|
};
|
||||||
|
|
||||||
|
const nn::ProgramId cNupVerId[] =
|
||||||
|
{
|
||||||
|
nn::pl::CTR::SHAREDDATA_TITLEID_NUP_VERSION_JP,
|
||||||
|
nn::pl::CTR::SHAREDDATA_TITLEID_NUP_VERSION_US,
|
||||||
|
nn::pl::CTR::SHAREDDATA_TITLEID_NUP_VERSION_EU,
|
||||||
|
nn::pl::CTR::SHAREDDATA_TITLEID_NUP_VERSION_EU,
|
||||||
|
nn::pl::CTR::SHAREDDATA_TITLEID_NUP_VERSION_CN,
|
||||||
|
nn::pl::CTR::SHAREDDATA_TITLEID_NUP_VERSION_KR,
|
||||||
|
nn::pl::CTR::SHAREDDATA_TITLEID_NUP_VERSION_TW,
|
||||||
|
};
|
||||||
|
|
||||||
|
// リージョンコードに基づいてバージョン情報を取得する
|
||||||
|
void GetSystemVersion(VerDef* mVerData, nn::cfg::CTR::CfgRegionCode region);
|
||||||
|
|
||||||
|
#endif /* VERSIONDETECT_H_ */
|
||||||
@ -26,16 +26,18 @@
|
|||||||
#include <nn/am.h>
|
#include <nn/am.h>
|
||||||
#include <nn/ndm.h>
|
#include <nn/ndm.h>
|
||||||
#include <nn/cfg.h>
|
#include <nn/cfg.h>
|
||||||
|
#include <nn/ptm_Private.h>
|
||||||
|
|
||||||
#include <nn/cup.h>
|
#include <nn/cup.h>
|
||||||
|
|
||||||
#include "demo.h"
|
#include "demo.h"
|
||||||
#include "scrollBuffer.h"
|
#include "scrollBuffer.h"
|
||||||
|
#include "VersionDetect.h"
|
||||||
|
#include "HeapManager.h"
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
const int s_GxHeapSize=0x800000;
|
const s32 s_GxHeapSize = 0x800000;
|
||||||
nn::fnd::ExpHeap s_appHeap;
|
|
||||||
uptr s_GxHeap;
|
uptr s_GxHeap;
|
||||||
|
|
||||||
demo::RenderSystemDrawing s_RenderSystem;
|
demo::RenderSystemDrawing s_RenderSystem;
|
||||||
@ -47,9 +49,6 @@ namespace
|
|||||||
// デモの初期化
|
// デモの初期化
|
||||||
void Initialize()
|
void Initialize()
|
||||||
{
|
{
|
||||||
// os の初期化
|
|
||||||
nn::os::Initialize();
|
|
||||||
|
|
||||||
// NuiShellの初期化 (CUPに必須)
|
// NuiShellの初期化 (CUPに必須)
|
||||||
NN_UTIL_PANIC_IF_FAILED(nn::ns::CTR::InitializeForShell());
|
NN_UTIL_PANIC_IF_FAILED(nn::ns::CTR::InitializeForShell());
|
||||||
|
|
||||||
@ -74,15 +73,15 @@ namespace
|
|||||||
nn::cfg::Initialize();
|
nn::cfg::Initialize();
|
||||||
|
|
||||||
// デバイスメモリの設定
|
// デバイスメモリの設定
|
||||||
const int DEVICE_MEMORY_SIZE = 12*1024 * 1024;
|
const s32 DEVICE_MEMORY_SIZE = 32 * 1024 * 1024;
|
||||||
NN_UTIL_PANIC_IF_FAILED(nn::os::SetDeviceMemorySize(DEVICE_MEMORY_SIZE));
|
NN_UTIL_PANIC_IF_FAILED(nn::os::SetDeviceMemorySize(DEVICE_MEMORY_SIZE));
|
||||||
|
|
||||||
// ヒープの初期化
|
// ヒープの初期化
|
||||||
s_appHeap.Initialize(nn::os::GetDeviceMemoryAddress(), nn::os::GetDeviceMemorySize(), nn::os::ALLOCATE_OPTION_LINEAR);
|
InitializeHeap();
|
||||||
|
|
||||||
// 描画インスタンスの初期化
|
// 描画インスタンスの初期化
|
||||||
s_GxHeap = reinterpret_cast<uptr>(s_appHeap.Allocate(s_GxHeapSize));
|
s_GxHeap = reinterpret_cast<uptr>(ForceAllocate(s_GxHeapSize));s_RenderSystem
|
||||||
s_RenderSystem.Initialize(s_GxHeap, s_GxHeapSize);
|
.Initialize(s_GxHeap, s_GxHeapSize);
|
||||||
|
|
||||||
// 描画インスタンスの初期化
|
// 描画インスタンスの初期化
|
||||||
s_scrollBufferInstance.Initialize(&s_RenderSystem);
|
s_scrollBufferInstance.Initialize(&s_RenderSystem);
|
||||||
@ -107,7 +106,7 @@ namespace
|
|||||||
|
|
||||||
// 動いていることを知らせるための、くるくる画面表示取得用メソッド
|
// 動いていることを知らせるための、くるくる画面表示取得用メソッド
|
||||||
const char s_progress[]="-\\|/";
|
const char s_progress[]="-\\|/";
|
||||||
int s_progressIndex=0;
|
s32 s_progressIndex = 0;
|
||||||
char GetProgressChar()
|
char GetProgressChar()
|
||||||
{
|
{
|
||||||
s_progressIndex=(s_progressIndex+1)%(sizeof(s_progress)-1);
|
s_progressIndex=(s_progressIndex+1)%(sizeof(s_progress)-1);
|
||||||
@ -123,25 +122,27 @@ namespace
|
|||||||
s_scrollBuffer->AppendText("Initializing Cup Library")->Render();
|
s_scrollBuffer->AppendText("Initializing Cup Library")->Render();
|
||||||
SetTick(); // 初期化開始前の時間をセット
|
SetTick(); // 初期化開始前の時間をセット
|
||||||
result=nn::cup::CTR::Initialize(s_updaterBuffer,sizeof(s_updaterBuffer));
|
result=nn::cup::CTR::Initialize(s_updaterBuffer,sizeof(s_updaterBuffer));
|
||||||
if(result==nn::cup::CTR::ResultUpdatePartitionNotFound()){
|
if (result == nn::cup::CTR::ResultUpdatePartitionNotFound())
|
||||||
|
{
|
||||||
s_scrollBuffer->AppendText(" - Update Partition Not Found (%lldmsec)", GetConsumedMillisec())->Render();
|
s_scrollBuffer->AppendText(" - Update Partition Not Found (%lldmsec)", GetConsumedMillisec())->Render();
|
||||||
s_scrollBuffer->AppendText("")->Render();
|
s_scrollBuffer->AppendText("")->Render();
|
||||||
*isHandledError=true;
|
*isHandledError=true;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if(result==nn::cup::CTR::ResultUpdateNotRequired()){
|
if (result == nn::cup::CTR::ResultUpdateNotRequired())
|
||||||
|
{
|
||||||
s_scrollBuffer->AppendText(" - Already Updated (%lldmsec)", GetConsumedMillisec())->Render();
|
s_scrollBuffer->AppendText(" - Already Updated (%lldmsec)", GetConsumedMillisec())->Render();
|
||||||
s_scrollBuffer->AppendText("")->Render();
|
s_scrollBuffer->AppendText("")->Render();
|
||||||
*isHandledError=true;
|
*isHandledError=true;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if(result==nn::cup::CTR::ResultInvalidUpdatePartitionFormat()){
|
if (result == nn::cup::CTR::ResultInvalidUpdatePartitionFormat())
|
||||||
|
{
|
||||||
s_scrollBuffer->AppendText(" - Invalid Update Partition (%lldmsec)", GetConsumedMillisec())->Render();
|
s_scrollBuffer->AppendText(" - Invalid Update Partition (%lldmsec)", GetConsumedMillisec())->Render();
|
||||||
s_scrollBuffer->AppendText("")->Render();
|
s_scrollBuffer->AppendText("")->Render();
|
||||||
*isHandledError=true;
|
*isHandledError=true;
|
||||||
return result;
|
return result;
|
||||||
}
|
}NN_UTIL_RETURN_IF_FAILED(result);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
|
||||||
|
|
||||||
s_scrollBuffer->AppendText(" - Need Update (%lldmsec)", GetConsumedMillisec())->Render();
|
s_scrollBuffer->AppendText(" - Need Update (%lldmsec)", GetConsumedMillisec())->Render();
|
||||||
*needUpdate = true;
|
*needUpdate = true;
|
||||||
@ -156,9 +157,26 @@ namespace
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nn::Result ExecuteCup(ScrollBuffer* scrollBuf, bool* needUpdte)
|
||||||
|
{
|
||||||
|
nn::Result result;
|
||||||
|
bool isHandledError = false;
|
||||||
|
result = UpdateSequence(&isHandledError, needUpdte);
|
||||||
|
if (isHandledError == false && result.IsFailure())
|
||||||
|
{
|
||||||
|
{
|
||||||
|
// それ以外の場合は、Resultを表示
|
||||||
|
scrollBuf->AppendText(" - Unhandled Error: 0x%08x", result.GetPrintableBits());
|
||||||
|
scrollBuf->AppendText("")->Render();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
extern "C" void nnMain()
|
extern "C" void nnMain()
|
||||||
{
|
{
|
||||||
NN_LOG("Start cup demo\n");
|
NN_LOG("Start Self Cup\n");
|
||||||
nn::Result result;
|
nn::Result result;
|
||||||
Initialize();
|
Initialize();
|
||||||
|
|
||||||
@ -187,24 +205,12 @@ extern "C" void nnMain()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
nn::am::ProgramInfo outInfos;
|
nn::am::ProgramInfo outInfos;
|
||||||
result = nn::am::GetProgramInfos(&outInfos, nn::fs::MEDIA_TYPE_NAND, &MMEN_PROGRAM_ID, 1);
|
result = nn::am::GetProgramInfos(&outInfos, nn::fs::MEDIA_TYPE_NAND, &MMEN_PROGRAM_ID, 1);
|
||||||
bool needUpdate = false;
|
bool needUpdate = false;
|
||||||
if (result.IsSuccess())
|
if (result.IsSuccess())
|
||||||
{
|
{
|
||||||
|
result = ExecuteCup(s_scrollBuffer, &needUpdate);
|
||||||
/******************** CUPの実行 *******************/
|
|
||||||
bool isHandledError = false;
|
|
||||||
result = UpdateSequence(&isHandledError, &needUpdate);
|
|
||||||
if (isHandledError == false && result.IsFailure())
|
|
||||||
{
|
|
||||||
{
|
|
||||||
// それ以外の場合は、Resultを表示
|
|
||||||
s_scrollBuffer->AppendText(" - Unhandled Error: 0x%08x", result.GetPrintableBits());
|
|
||||||
s_scrollBuffer->AppendText("")->Render();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if(result == nn::am::ResultNotFound())
|
else if(result == nn::am::ResultNotFound())
|
||||||
{
|
{
|
||||||
@ -217,6 +223,11 @@ extern "C" void nnMain()
|
|||||||
}
|
}
|
||||||
|
|
||||||
s_scrollBuffer->AppendText("")->Render();
|
s_scrollBuffer->AppendText("")->Render();
|
||||||
|
VerDef versionData;
|
||||||
|
GetSystemVersion(&versionData, region);
|
||||||
|
|
||||||
|
s_scrollBuffer->AppendText("Version: %d.%d.%d-%d%c", versionData.cup.majorVersion, versionData.cup.minorVersion,
|
||||||
|
versionData.cup.microVersion, versionData.nup.majorVersion, nn::cfg::GetRegionCodeA3(region));
|
||||||
|
|
||||||
for(;;)
|
for(;;)
|
||||||
{
|
{
|
||||||
|
|||||||
1
branches/SelfCupExecChecker/romfiles/nup_version.bin
Normal file
1
branches/SelfCupExecChecker/romfiles/nup_version.bin
Normal file
@ -0,0 +1 @@
|
|||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user