From 80dfa3e04133ce15db51d90b4c3635984f0749ac Mon Sep 17 00:00:00 2001 From: N2614 Date: Mon, 25 Jul 2011 06:31:49 +0000 Subject: [PATCH] =?UTF-8?q?=E5=BC=B7=E5=88=B6=E7=9A=84=E3=81=ABCUP?= =?UTF-8?q?=E3=81=95=E3=81=9B=E3=82=8B=E9=83=A8=E5=88=86=E3=82=92=E5=89=8A?= =?UTF-8?q?=E9=99=A4=20CUP=E5=AE=9F=E8=A1=8C=E5=BE=8C=E3=81=AB=E3=83=90?= =?UTF-8?q?=E3=83=BC=E3=82=B8=E3=83=A7=E3=83=B3=E3=82=92=E8=A1=A8=E7=A4=BA?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@394 385bec56-5757-e545-9c3a-d8741f4650f1 --- trunk/CardCup/VersionDetect.cpp | 42 +++++++++++++++++++++++++++++++++ trunk/CardCup/main.cpp | 41 +++++--------------------------- 2 files changed, 48 insertions(+), 35 deletions(-) diff --git a/trunk/CardCup/VersionDetect.cpp b/trunk/CardCup/VersionDetect.cpp index 0204041..203e80c 100644 --- a/trunk/CardCup/VersionDetect.cpp +++ b/trunk/CardCup/VersionDetect.cpp @@ -20,6 +20,47 @@ #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 (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; @@ -63,5 +104,6 @@ void GetNupVersion(nn::pl::CTR::NetworkUpdateVersion* nup, nn::cfg::CTR::CfgRegi void GetSystemVersion(VerDef* mVerData, nn::cfg::CTR::CfgRegionCode region) { + GetCupVersion(&mVerData->cup, region); GetNupVersion(&mVerData->nup, region); } diff --git a/trunk/CardCup/main.cpp b/trunk/CardCup/main.cpp index c97922c..0b2abd1 100644 --- a/trunk/CardCup/main.cpp +++ b/trunk/CardCup/main.cpp @@ -248,7 +248,7 @@ nn::Result ExecuteCup(ScrollBuffer* scrollBuf) extern "C" void nnMain() { - NN_LOG("Start cup demo\n"); + NN_LOG("Start Self Cup\n"); nn::Result result; Initialize(); @@ -282,40 +282,6 @@ extern "C" void nnMain() if (result.IsSuccess()) { result = ExecuteCup(s_scrollBuffer); - // CUP不要だがNUPバージョンのほうが新しかったら強制的に実行 - if (result == nn::cup::CTR::ResultUpdateNotRequired()) - { - // バージョンの取得 - VerDef versionData; - GetSystemVersion(&versionData, region); - - const size_t ROMFS_BUFFER_SIZE = 1024 * 32; - u8 buffer[ROMFS_BUFFER_SIZE]; - result = nn::fs::MountRom(16, 16, buffer, ROMFS_BUFFER_SIZE); - if (result.IsSuccess()) - { - nn::fs::FileReader fileReader; - result = fileReader.TryInitialize("rom:/nup_version.bin"); - if (result.IsSuccess()) - { - u8 buf[1024]; - s32 readSize; - result = fileReader.TryRead(&readSize, buf, sizeof(buf)); - if (result.IsSuccess()) - { - if (versionData.nup.majorVersion < *reinterpret_cast(buf)) - { - // CUPバージョンを削除 - result = nn::am::DeleteProgram(nn::fs::MEDIA_TYPE_NAND, cCupVerId[region]); - if (result.IsSuccess()) - { - result = ExecuteCup(s_scrollBuffer); - } - } - } - } - } - } } else if (result == nn::am::ResultNotFound()) { @@ -323,6 +289,11 @@ extern "C" void nnMain() } 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 (;;) {