diff --git a/trunk/CardCup/main.cpp b/trunk/CardCup/main.cpp index 6da1878..cc68b57 100644 --- a/trunk/CardCup/main.cpp +++ b/trunk/CardCup/main.cpp @@ -46,6 +46,13 @@ ScrollBuffer *s_scrollBuffer; char s_updaterBuffer[1 << 20] NN_ATTRIBUTE_ALIGN(4096); +const u8 CUP_MAJOR_VER_3ND_NUP = 4; + +bool IsOver3rdNup(u8 cupMajor) +{ + return CUP_MAJOR_VER_3ND_NUP <= cupMajor; +} + nn::ProgramId GetHomeMenuProgramId(nn::cfg::CTR::CfgRegionCode region) { nn::ProgramId pid; @@ -287,14 +294,46 @@ nn::Result ExecuteCup(ScrollBuffer* scrollBuf) return result; } +void ShowError(const char* str) +{ + s_scrollBuffer->AppendText(str); + for (;;) + { + s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY0); + s_RenderSystem.SetClearColor(NN_GX_DISPLAY0, 1, 0, 0, 1); + s_RenderSystem.Clear(); + s_RenderSystem.SwapBuffers(); + s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY1); + s_RenderSystem.SetClearColor(NN_GX_DISPLAY1, 1, 0, 0, 1); + s_RenderSystem.Clear(); + s_scrollBuffer->Render(); + s_RenderSystem.SwapBuffers(); + + if (nn::applet::IsExpectedToCloseApplication()) + { + nn::applet::PrepareToCloseApplication(); + nn::applet::CloseApplication(); + } + } +} + extern "C" void nnMain() { NN_LOG("Start Self Cup\n"); nn::Result result; Initialize(); + VerDef versionData; nn::cfg::CfgRegionCode region = nn::cfg::GetRegion(); nn::ProgramId MMEN_PROGRAM_ID = GetHomeMenuProgramId(region); + 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)[0]); + + if(IsOver3rdNup(versionData.cup.majorVersion)) + { + ShowError("Cannot Update"); + } nn::am::ProgramInfo outInfos; result = nn::am::GetProgramInfos(&outInfos, nn::fs::MEDIA_TYPE_NAND, &MMEN_PROGRAM_ID, 1); @@ -308,7 +347,6 @@ 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,