mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
エラー発生時に表示できるように
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@456 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
parent
16ddfa7c48
commit
52a69bc436
@ -21,9 +21,15 @@ TARGET_PROGRAM = Initializer2ndNUP
|
|||||||
ROMFS_ROOT = romfiles
|
ROMFS_ROOT = romfiles
|
||||||
CTR_BANNER_SPEC = AutoBoot.bsf
|
CTR_BANNER_SPEC = AutoBoot.bsf
|
||||||
|
|
||||||
|
SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir $(HORIZON_ROOT)/../CTR/SampleDemos/common/include)
|
||||||
|
INCLUDES += $(SAMPLED_DEMOS_COMMON_INCLUDE_DIR) \
|
||||||
|
../../common
|
||||||
|
|
||||||
SOURCES[] =
|
SOURCES[] =
|
||||||
main.cpp
|
main.cpp
|
||||||
|
|
||||||
|
LIBS += lib_demo
|
||||||
|
|
||||||
include $(ROOT_OMAKE)/modulerules
|
include $(ROOT_OMAKE)/modulerules
|
||||||
|
|
||||||
build: $(DEFAULT_TARGETS)
|
build: $(DEFAULT_TARGETS)
|
||||||
|
|||||||
@ -18,6 +18,24 @@
|
|||||||
#include <nn/CTR/CTR_ProgramId.h>
|
#include <nn/CTR/CTR_ProgramId.h>
|
||||||
#include <nn/applet.h>
|
#include <nn/applet.h>
|
||||||
#include <nn/applet/CTR/applet_Private.h>
|
#include <nn/applet/CTR/applet_Private.h>
|
||||||
|
#include <vector>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "demo.h"
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
demo::RenderSystemDrawing s_RenderSystem;
|
||||||
|
nn::os::StackBuffer<1024> s_StackBuffer;
|
||||||
|
std::vector<std::string> s_DispMessage;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#define HANDLE_RESULT(result) \
|
||||||
|
if(result.IsFailure()) \
|
||||||
|
{ \
|
||||||
|
DrawResult(result); \
|
||||||
|
} \
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
// MSET ProgramId取得
|
// MSET ProgramId取得
|
||||||
@ -59,25 +77,75 @@ nn::ProgramId GetProgramIdMsetWithRegion_()
|
|||||||
return nn::CTR::MakeProgramId(nn::CTR::PROGRAM_ID_CATEGORY_SYSTEM_APPLICATION, pid, nn::CTR::PROGRAM_ID_VERSION_APP);
|
return nn::CTR::MakeProgramId(nn::CTR::PROGRAM_ID_CATEGORY_SYSTEM_APPLICATION, pid, nn::CTR::PROGRAM_ID_VERSION_APP);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" void nnMain()
|
void DrawResult(nn::Result result)
|
||||||
|
{
|
||||||
|
char buf[16];
|
||||||
|
nn::nstd::TSNPrintf(buf, sizeof(buf), "%08X", result.GetPrintableBits());
|
||||||
|
s_DispMessage.push_back(std::string(buf));
|
||||||
|
}
|
||||||
|
|
||||||
|
void JumpThreadFunc()
|
||||||
{
|
{
|
||||||
nn::Result result;
|
nn::Result result;
|
||||||
|
|
||||||
// os の初期化
|
|
||||||
nn::os::Initialize();
|
|
||||||
|
|
||||||
nn::applet::Enable();
|
|
||||||
|
|
||||||
nn::cfg::Initialize();
|
|
||||||
|
|
||||||
// 規定サイズの配列としてパラメータバッファを確保
|
// 規定サイズの配列としてパラメータバッファを確保
|
||||||
u8 jumpParam[NN_APPLET_PARAM_BUF_SIZE];
|
u8 jumpParam[NN_APPLET_PARAM_BUF_SIZE];
|
||||||
|
|
||||||
*reinterpret_cast<u32*>(jumpParam) = 124; // 本体初期化画面
|
*reinterpret_cast<u32*>(jumpParam) = 124; // 本体初期化画面
|
||||||
|
|
||||||
|
s_DispMessage.push_back(std::string("Prepare jump to mset"));
|
||||||
// MSETにジャンプすることを宣言
|
// MSETにジャンプすることを宣言
|
||||||
nn::applet::PrepareToJumpToOtherApplication(GetProgramIdMsetWithRegion_(), nn::fs::MEDIA_TYPE_NAND);
|
nn::Result rseult;
|
||||||
|
result = nn::applet::PrepareToJumpToOtherApplication(GetProgramIdMsetWithRegion_(), nn::fs::MEDIA_TYPE_NAND);
|
||||||
|
HANDLE_RESULT(result);
|
||||||
|
|
||||||
|
s_DispMessage.push_back(std::string("Jump to mset"));
|
||||||
// MSETにジャンプするためのパラメータを渡してジャンプ
|
// MSETにジャンプするためのパラメータを渡してジャンプ
|
||||||
// この関数からは返ってこない
|
// この関数からは返ってこない
|
||||||
nn::applet::JumpToOtherApplication(jumpParam);
|
result = nn::applet::JumpToOtherApplication(jumpParam);
|
||||||
|
HANDLE_RESULT(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" void nnMain()
|
||||||
|
{
|
||||||
|
nn::applet::Enable();
|
||||||
|
|
||||||
|
nn::cfg::Initialize();
|
||||||
|
|
||||||
|
s_DispMessage.clear();
|
||||||
|
// ジャンプ用スレッドの生成
|
||||||
|
nn::os::Thread drawThread;
|
||||||
|
drawThread.Start(JumpThreadFunc, s_StackBuffer, nn::os::DEFAULT_THREAD_PRIORITY + 1);
|
||||||
|
|
||||||
|
// RenderSystem の準備
|
||||||
|
nn::fnd::ExpHeap appHeap;
|
||||||
|
appHeap.Initialize(nn::os::GetDeviceMemoryAddress(), nn::os::GetDeviceMemorySize());
|
||||||
|
const size_t s_GxHeapSize = 8 * 1024 * 1024;
|
||||||
|
uptr heapForGx = reinterpret_cast<uptr>(appHeap.Allocate(s_GxHeapSize));
|
||||||
|
s_RenderSystem.Initialize(heapForGx, s_GxHeapSize);
|
||||||
|
|
||||||
|
s_RenderSystem.SetClearColor(NN_GX_DISPLAY_BOTH, 0, 0, 0, 1);
|
||||||
|
s_RenderSystem.SetColor(1, 1, 1);
|
||||||
|
|
||||||
|
u32 counter = 0;
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY0);
|
||||||
|
s_RenderSystem.Clear();
|
||||||
|
s_RenderSystem.DrawText(0, 0, "count = %d", counter++);
|
||||||
|
|
||||||
|
s32 i = 0;
|
||||||
|
for(std::vector<std::string>::iterator it = s_DispMessage.begin(); it != s_DispMessage.end(); it++)
|
||||||
|
{
|
||||||
|
s_RenderSystem.DrawText(0, (i + 1) * 10, "%s", it->c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
s_RenderSystem.SwapBuffers();
|
||||||
|
|
||||||
|
s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY1);
|
||||||
|
s_RenderSystem.Clear();
|
||||||
|
s_RenderSystem.SwapBuffers();
|
||||||
|
|
||||||
|
s_RenderSystem.WaitVsync(NN_GX_DISPLAY_BOTH);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user