From 120532553af640aaaa484dda9971775634d9a39f Mon Sep 17 00:00:00 2001 From: N2614 Date: Mon, 31 Oct 2011 11:02:12 +0000 Subject: [PATCH] =?UTF-8?q?ROMFS=E3=81=8C=E5=90=AB=E3=81=BE=E3=82=8C?= =?UTF-8?q?=E3=81=A6=E3=81=84=E3=81=AA=E3=81=8B=E3=81=A3=E3=81=9F=E3=81=AE?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3=20=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E7=99=BA=E7=94=9F=E6=99=82=E3=81=AB=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E3=82=A2=E3=83=97=E3=83=AC=E3=83=83=E3=83=88=E3=82=92=E5=91=BC?= =?UTF-8?q?=E3=81=B6=20=E6=8F=8F=E7=94=BB=E3=81=AE=E5=90=8C=E6=9C=9F?= =?UTF-8?q?=E3=81=8C=E5=8F=96=E3=82=8C=E3=81=AA=E3=81=84=3F=E3=81=AE?= =?UTF-8?q?=E3=81=A7=E3=81=A8=E3=82=8A=E3=81=82=E3=81=88=E3=81=9A1?= =?UTF-8?q?=E7=A7=92=E5=BE=85=E3=81=A3=E3=81=A6=E3=81=8B=E3=82=89=E3=82=A8?= =?UTF-8?q?=E3=83=A9=E3=83=BC=E8=A1=A8=E7=A4=BA?= 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@467 385bec56-5757-e545-9c3a-d8741f4650f1 --- branches/CardCupForNBD/CardCup/CardCup.rsf | 3 + branches/CardCupForNBD/CardCup/Drawer.cpp | 100 ++++++++++++--------- branches/CardCupForNBD/CardCup/main.cpp | 4 +- 3 files changed, 61 insertions(+), 46 deletions(-) diff --git a/branches/CardCupForNBD/CardCup/CardCup.rsf b/branches/CardCupForNBD/CardCup/CardCup.rsf index 29cec33..f2c77c7 100644 --- a/branches/CardCupForNBD/CardCup/CardCup.rsf +++ b/branches/CardCupForNBD/CardCup/CardCup.rsf @@ -23,3 +23,6 @@ SystemControlInfo: - cecd - boss - ndm +Rom: + # ROM に含めるファイルシステムのルートパスを指定します。 + HostRoot: "$(ROMFS_ROOT)" diff --git a/branches/CardCupForNBD/CardCup/Drawer.cpp b/branches/CardCupForNBD/CardCup/Drawer.cpp index c5cbc4d..cb0b704 100644 --- a/branches/CardCupForNBD/CardCup/Drawer.cpp +++ b/branches/CardCupForNBD/CardCup/Drawer.cpp @@ -49,7 +49,7 @@ void DrawThreadMain(); namespace { -const size_t DRAWER_STACK_SIZE = 0x1000; +const size_t DRAWER_STACK_SIZE = 0x4000; nn::os::Thread s_DrawerThread; nn::os::StackBuffer s_DrawerThreadStack; @@ -59,6 +59,11 @@ bool s_IsExpectedToFinalize = false; // 終了処理が完了したかどうか bool s_IsPreparedToFinalize = false; +// エラーコード表示が必要かどうか +bool s_NeedShowErrorCode = false; +// エラーコード +s32 s_ErrorCode; + enum LayoutType { LAYOUT_UPPER_LOGO, @@ -440,24 +445,8 @@ void RestoreGraphics() void NotifyFailed(s32 error) { - nn::applet::AppletWakeupState wstate; - nn::erreula::Parameter ere_param; // エラーEULAの設定構造体 - - // 設定構造体初期化 - nn::erreula::InitializeConfig(&ere_param.config); - - ere_param.config.errorType = nn::erreula::ERROR_TYPE_ERROR_CODE; - ere_param.config.errorCode = error; - ere_param.config.upperScreenFlag = nn::erreula::UPPER_SCREEN_NORMAL; - ere_param.config.homeButton = true; - ere_param.config.softwareReset = false; - ere_param.config.appJump = false; - - nn::erreula::CancelPreloadErrEulaApplet(); - nn::erreula::StartErrEulaApplet(&wstate, &ere_param); - - // GPU レジスタ設定の復帰 - RestoreGraphics(); + s_ErrorCode = error; + s_NeedShowErrorCode = true; } void NotifyFinished() @@ -465,6 +454,27 @@ void NotifyFinished() s_IsExpectedToFinalize = true; } +void ShowError() +{ + NN_LOG("Show Error\n"); + nn::applet::AppletWakeupState wstate; + nn::erreula::Parameter ere_param; // エラーEULAの設定構造体 + + // 設定構造体初期化 + nn::erreula::InitializeConfig(&ere_param.config); + + ere_param.config.errorType = nn::erreula::ERROR_TYPE_ERROR_CODE; + ere_param.config.errorCode = s_ErrorCode; + ere_param.config.upperScreenFlag = nn::erreula::UPPER_SCREEN_NORMAL; + ere_param.config.homeButton = true; + ere_param.config.softwareReset = false; + ere_param.config.appJump = false; + + nn::erreula::StartErrEulaApplet(&wstate, &ere_param); + + // GPU レジスタ設定の復帰 + RestoreGraphics(); +} /*---------------------------------------------------------------------------* @brief サンプルのメイン関数です。 @@ -558,9 +568,7 @@ DrawThreadMain() pUpperLayoutAnim = &layoutAnim[upperLayoutAnimIndex.layoutType]; pLowerLayoutAnim = &layoutAnim[lowerLayoutAnimIndex.layoutType]; - const s32 KEEP_FRAME_INTERVAL = 180; - s32 keepFrame = KEEP_FRAME_INTERVAL; - + nn::os::Tick startTick = nn::os::Tick::GetSystemCurrent(); while (mainloop) { padReader.ReadLatest(&padStatus); @@ -632,29 +640,16 @@ DrawThreadMain() { if (drawState < DRAW_STATE_FADE_OUT) { - if (!(drawState == DRAW_STATE_LOGO_DRAW && --keepFrame > 0)) + // 次のアニメーションへ遷移 + GetNextLayoutAnimationIndex(upperLayoutAnimIndex, drawState, demoApp.DISPLAY0); + GetNextLayoutAnimationIndex(lowerLayoutAnimIndex, drawState, demoApp.DISPLAY1); + pUpperLayoutAnim = &layoutAnim[upperLayoutAnimIndex.layoutType]; + pLowerLayoutAnim = &layoutAnim[lowerLayoutAnimIndex.layoutType]; + + // 終了処理を依頼されたときのみロゴフェードアウト移行に進む + if (drawState < DRAW_STATE_LOGO_DRAW || s_IsExpectedToFinalize) { - // 次のアニメーションへ遷移 - GetNextLayoutAnimationIndex(upperLayoutAnimIndex, drawState, demoApp.DISPLAY0); - GetNextLayoutAnimationIndex(lowerLayoutAnimIndex, drawState, demoApp.DISPLAY1); - pUpperLayoutAnim = &layoutAnim[upperLayoutAnimIndex.layoutType]; - pLowerLayoutAnim = &layoutAnim[lowerLayoutAnimIndex.layoutType]; - - // 終了処理を依頼されたときのみロゴフェードアウト移行に進む - if(drawState < DRAW_STATE_LOGO_DRAW || s_IsExpectedToFinalize) - { - drawState++; - } - - if(drawState == DRAW_STATE_LOGO_FADE_IN) - { - animFrame = 11.f; - } - else - { - animFrame = 0; - } - + drawState++; NN_LOG("State = %d\n", drawState); NN_LOG( "Upper: layout: %d, anim: %d\n", upperLayoutAnimIndex.layoutType, upperLayoutAnimIndex.animIndex); @@ -662,6 +657,14 @@ DrawThreadMain() "Lower: layout: %d, anim: %d\n\n", lowerLayoutAnimIndex.layoutType, lowerLayoutAnimIndex.animIndex); } + if (drawState == DRAW_STATE_LOGO_FADE_IN) + { + animFrame = 11.f; + } + else + { + animFrame = 0; + } } else { @@ -672,7 +675,16 @@ DrawThreadMain() pUpperLayoutAnim->pAnimTrans[upperLayoutAnimIndex.animIndex]->SetFrame(animFrame); pLowerLayoutAnim->pAnimTrans[lowerLayoutAnimIndex.animIndex]->SetFrame(animFrame); + demoApp.SwapBuffer(demoApp.DISPLAY_BOTH); + + if(s_NeedShowErrorCode && DRAW_STATE_LOGO_DRAW <= drawState) + { + if((nn::os::Tick::GetSystemCurrent() - startTick).ToTimeSpan().GetSeconds() > 1) + { + ShowError(); + } + } } delete pResAccessor; diff --git a/branches/CardCupForNBD/CardCup/main.cpp b/branches/CardCupForNBD/CardCup/main.cpp index b51b510..a084361 100644 --- a/branches/CardCupForNBD/CardCup/main.cpp +++ b/branches/CardCupForNBD/CardCup/main.cpp @@ -194,8 +194,6 @@ extern "C" void nnMain() // TODO:HOMEメニューが無いエラーをエラーアプレットで表示する } - NotifyFinished(); - nn::os::Tick before = nn::os::Tick::GetSystemCurrent(); const u8 SHUTDOWN_WAIT_SECONDS = 2; for(;;) @@ -207,6 +205,7 @@ extern "C" void nnMain() nn::os::Tick current = nn::os::Tick::GetSystemCurrent(); if ((current - before).ToTimeSpan().GetSeconds() > SHUTDOWN_WAIT_SECONDS) { + NotifyFinished(); break; } @@ -222,6 +221,7 @@ extern "C" void nnMain() nn::applet::PrepareToCloseApplication(); nn::applet::CloseApplication(); } + nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(16)); } FinalizeDrawerThread();