From 5eb2259845f67e3b07690180640aaa29eec734e2 Mon Sep 17 00:00:00 2001 From: N2614 Date: Wed, 6 Apr 2011 08:00:08 +0000 Subject: [PATCH] =?UTF-8?q?BOXYARD=E6=B6=88=E5=8E=BB=E7=94=A8=E3=83=84?= =?UTF-8?q?=E3=83=BC=E3=83=AB=E3=81=AE=E3=83=97=E3=83=AD=E3=83=88=E3=82=BF?= =?UTF-8?q?=E3=82=A4=E3=83=97?= 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@179 385bec56-5757-e545-9c3a-d8741f4650f1 --- trunk/BoxyardEraser/BoxyardEraser.bsf | Bin 0 -> 2302 bytes trunk/BoxyardEraser/BoxyardEraser.rsf | 45 ++ trunk/BoxyardEraser/HeapManager.cpp | 39 ++ trunk/BoxyardEraser/HeapManager.h | 40 ++ trunk/BoxyardEraser/OMakefile | 71 +++ trunk/BoxyardEraser/OMakeroot | 73 +++ trunk/BoxyardEraser/RepairTool.desc | 232 ++++++++++ trunk/BoxyardEraser/ResFont.cpp | 417 ++++++++++++++++++ trunk/BoxyardEraser/ResFont.h | 33 ++ trunk/BoxyardEraser/VersionDetect.cpp | 124 ++++++ trunk/BoxyardEraser/VersionDetect.h | 53 +++ trunk/BoxyardEraser/banner/model.cbmd | Bin 0 -> 198785 bytes trunk/BoxyardEraser/banner/sound.cbsd | Bin 0 -> 198785 bytes trunk/BoxyardEraser/banner/unknown24x24.ctpk | 1 + trunk/BoxyardEraser/banner/unknown48x48.ctpk | 1 + trunk/BoxyardEraser/main.cpp | 311 +++++++++++++ ...016102-0_0_0-nup.version.EU-UnfixedKey.cia | Bin 0 -> 31488 bytes ...016202-0_0_0-nup.version.JP-UnfixedKey.cia | Bin 0 -> 31488 bytes ...016302-0_0_0-nup.version.US-UnfixedKey.cia | Bin 0 -> 31488 bytes trunk/BoxyardEraser/romfiles/lc.bcfnt | Bin 0 -> 16840 bytes .../romfiles/nnfont_RectDrawerShader.shbin | Bin 0 -> 964 bytes 21 files changed, 1440 insertions(+) create mode 100644 trunk/BoxyardEraser/BoxyardEraser.bsf create mode 100644 trunk/BoxyardEraser/BoxyardEraser.rsf create mode 100644 trunk/BoxyardEraser/HeapManager.cpp create mode 100644 trunk/BoxyardEraser/HeapManager.h create mode 100644 trunk/BoxyardEraser/OMakefile create mode 100644 trunk/BoxyardEraser/OMakeroot create mode 100644 trunk/BoxyardEraser/RepairTool.desc create mode 100644 trunk/BoxyardEraser/ResFont.cpp create mode 100644 trunk/BoxyardEraser/ResFont.h create mode 100644 trunk/BoxyardEraser/VersionDetect.cpp create mode 100644 trunk/BoxyardEraser/VersionDetect.h create mode 100644 trunk/BoxyardEraser/banner/model.cbmd create mode 100644 trunk/BoxyardEraser/banner/sound.cbsd create mode 100644 trunk/BoxyardEraser/banner/unknown24x24.ctpk create mode 100644 trunk/BoxyardEraser/banner/unknown48x48.ctpk create mode 100644 trunk/BoxyardEraser/main.cpp create mode 100644 trunk/BoxyardEraser/romfiles/000400DB00016102-0_0_0-nup.version.EU-UnfixedKey.cia create mode 100644 trunk/BoxyardEraser/romfiles/000400DB00016202-0_0_0-nup.version.JP-UnfixedKey.cia create mode 100644 trunk/BoxyardEraser/romfiles/000400DB00016302-0_0_0-nup.version.US-UnfixedKey.cia create mode 100644 trunk/BoxyardEraser/romfiles/lc.bcfnt create mode 100644 trunk/BoxyardEraser/romfiles/nnfont_RectDrawerShader.shbin diff --git a/trunk/BoxyardEraser/BoxyardEraser.bsf b/trunk/BoxyardEraser/BoxyardEraser.bsf new file mode 100644 index 0000000000000000000000000000000000000000..104a94da96cd5d963d349ca5c6fcce26ae7e3cbb GIT binary patch literal 2302 zcmb7@%}&BV6ov0r6Q4m6H@Z+KhJ|rsM6B@-iN&}UA&7ugsXvL2;Tss=z?CbPK7-HU z)`;f}40Xb^b~0(1PS3sfyQi1I&zzJblt2oys8<2cr*etalpCCea)sR)c7e2|i~WpD z%Rcro7N2+UHiF)~Uy~`R|H-i|w|LvZ70EsBD^ipPeP2RkjQky)vxJ;2?`%a`MK<2; zYzL^;09`kOt2fp#wk|zHu)7fFWNu`{_Q#rGY=0EX_#@P9p&Pog2InT%2DrMq)-it1 z5bM@4GJuy|>5rV>09lO8Ax`gbHW_E@jjjxRjO#yrP0mrF2RAOE<`)kz2d6kOwUp*I z93`+s$UK?1hPc}iwV4q^!TDfENmN43p675qs~7dEzSM{MR`2Q)_czs1k9R9iC+b3# z6`dZs&Cc53ZE5GPQMHZQ&9SRVZt6E>3%bKUwF@%riEnqMis|N;Ye~iGdv;(iqYmL% zgnF^1x3#kaqppIk4p-ag{~U}rnxmrmV?1-}BHb4wwvf|Jvo7{BYB!CoUDx@U+m9xI zZ~1Ac&QC+NAI&!0$)cen)MPOjjbG&*sbyA9+-82Nvlu4Tel%g~#LiszPN!@7sdh7@sr_j7@Sk?igDXGP`DhB-LF)Z@%5t2-lYH^vj#EOln + +namespace common +{ + +class HeapManager +{ +public: + HeapManager(); + virtual ~HeapManager(); + + static nn::fnd::ThreadSafeExpHeap* GetHeap(); + +private: + // デバイスメモリ管理用拡張ヒープ + static nn::fnd::ThreadSafeExpHeap s_AppHeap; + +}; + +} // namespace common + +#endif /* HEAPMANAGER_H_ */ diff --git a/trunk/BoxyardEraser/OMakefile b/trunk/BoxyardEraser/OMakefile new file mode 100644 index 0000000..9a3ef58 --- /dev/null +++ b/trunk/BoxyardEraser/OMakefile @@ -0,0 +1,71 @@ +#!/usr/bin/env omake +#---------------------------------------------------------------------------- +# Project: Horizon +# File: OMakefile +# +# Copyright (C)2009 Nintendo Co., Ltd. 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$ +#---------------------------------------------------------------------------- +SUPPORTED_TARGETS = CTR-T*.Process.MPCore.* +CTR_APPTYPE = BOTH +CTR_MAKE_DEVELOPMENT_IMAGE = true + +TARGET_PROGRAM = BoxyardEraser + +SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir $(HORIZON_ROOT)/../CTR/SampleDemos/common/include) +INCLUDES += $(SAMPLED_DEMOS_COMMON_INCLUDE_DIR) \ + +SOURCES[] = + main.cpp + ResFont.cpp + HeapManager.cpp + VersionDetect.cpp + +CTR_BANNER_SPEC = $(TARGET_PROGRAM).bsf + +ROMFS_ROOT = romfiles + +SHADER_BIN = nnfont_RectDrawerShader.shbin +SHADER_PATH = $(ROMFS_ROOT)/$(SHADER_BIN) + +ROMFS_DEPENDENCIES = $(SHADER_PATH) + +LIBS += libnn_cfg \ + libnn_driversEeprom \ + libnn_driversi2c \ + libnn_driversCal \ + libnn_crypto \ + libnn_driversCodec \ + libnn_spi \ + libnn_gpio \ + libnn_pdn \ + libnn_mcu \ + libnn_i2c \ + libnn_driversCamera \ + libnn_ps \ + libnn_driversRsa \ + lib_demo \ + libnn_nwm \ + libnn_friends \ + libnn_ns \ + libnn_am \ + libnn_nim_2_x \ + +INSTALL_SDK_TOOL = true + +ROM_SPEC_FILE = $(TARGET_PROGRAM).rsf +#DESCRIPTOR = $(HORIZON_ROOT)/resources/specfiles/_private/RepairTool.desc +DESCRIPTOR = RepairTool.desc + +include $(ROOT_OMAKE)/modulerules + +VERSION_H = $(file version.h) + +build: $(DEFAULT_TARGETS) diff --git a/trunk/BoxyardEraser/OMakeroot b/trunk/BoxyardEraser/OMakeroot new file mode 100644 index 0000000..7ee1cb5 --- /dev/null +++ b/trunk/BoxyardEraser/OMakeroot @@ -0,0 +1,73 @@ +#!/usr/bin/env omake +#---------------------------------------------------------------------------- +# Project: Horizon +# File: OMakeroot +# +# Copyright (C)2009 Nintendo Co., Ltd. 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:$ +#---------------------------------------------------------------------------- + +# fBNgCAEgɂ‚Ă̐ +# +# a) \[XR[h[gfBNgɔzuꍇ +# : +# /OMakeroot +# /foo/bar/OMakefile +# +# : +# OMakefile ƓfBNgȉ objects images ܂B +# +# /foo/bar/objects/... +# /foo/bar/images/.. +# +# +# b) \[XR[h sources ȉɔzuꍇ +# : +# /OMakeroot +# /sources/foo/bar/OMakefile +# +# : +# [gfBNgȉ objects images ܂B +# +# /objects/foo/bar/... +# /images/foo/bar/... +# +# + +# [g‹ϐ̎擾 +public.HORIZON_ROOT = +if $(defined-env HORIZON_ROOT) + HORIZON_ROOT = $(absname $(getenv HORIZON_ROOT)) + export + +if $(defined-env CTRSDK_ROOT) + CTRSDK_ROOT = $(absname $(getenv CTRSDK_ROOT)) + if $(and $(defined-env HORIZON_ROOT), $(not $(equal $(HORIZON_ROOT), $(CTRSDK_ROOT)))) + eprintln(HORIZON_ROOT CTRSDK_ROOT v܂BpXݒ肷邩Aǂ炩`ĉB) + exit(1) + HORIZON_ROOT = $(CTRSDK_ROOT) + export + +if $(not $(HORIZON_ROOT)) + eprintln($"$$CTRSDK_ROOT `Ă܂") + exit(1) + +include $(HORIZON_ROOT)/build/omake/commondefs + +DefineCommandVars() + +.PHONY: all build clean clobber +.PHONY: run run-scripts run-emumem + +# +# OMakefile ̓ǂݍ +# +.SUBDIRS: . + diff --git a/trunk/BoxyardEraser/RepairTool.desc b/trunk/BoxyardEraser/RepairTool.desc new file mode 100644 index 0000000..d3d0e19 --- /dev/null +++ b/trunk/BoxyardEraser/RepairTool.desc @@ -0,0 +1,232 @@ +AccessControlDescriptor: + AffinityMask: 1 + AutoGen: true + CoreVersion: 2 + DescVersion: 2 + Descriptor: | + AP///wAABAACAAAAAAAFGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIEAAAAAAABBUFQ6VQAAACRo + aW9GSU8AJGhvc3RpbzAkaG9zdGlvMWFjOnUAAAAAYm9zczpVAABkc3A6OkRT + UGZyZDp1AAAAZnM6VVNFUgBnc3A6OkdwdWhpZDpVU0VSaHR0cDpDAABuZG06 + dQAAAG53bTo6VURTcHRtOnUAAABweGk6ZGV2AHNvYzpVAAAAc3NsOkMAAABs + ZHI6cm8AAHBzOnBzAAAAY2ZnOm5vcgBtY3U6OkhXQ2FtOnUAAAAAY2ZnOmkA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAD+//vw/7//8ec/APIA8JH/APaR/1D/gf9Y/4H/cP+B/3j/gf8B + AQD/AAIA/v////////////////////////////////////////////////// + ////////////////////////////////////////AAAAAAAAAAAAAAAAAAAA + ABUAAAAAAAAAAAAAAAAAAAI= + DisableDebug: false + EnableInterruptNumbers: [] + EnableSystemCalls: + ArbitrateAddress: 34 + Break: 60 + CancelTimer: 28 + ClearEvent: 25 + ClearTimer: 29 + CloseHandle: 35 + ConnectToPort: 45 + ControlMemory: 1 + CreateAddressArbiter: 33 + CreateEvent: 23 + CreateMemoryBlock: 30 + CreateMutex: 19 + CreateSemaphore: 21 + CreateThread: 8 + CreateTimer: 26 + DuplicateHandle: 39 + ExitProcess: 3 + ExitThread: 9 + GetCurrentProcessorNumber: 17 + GetHandleInfo: 41 + GetProcessAffinityMask: 4 + GetProcessId: 53 + GetProcessIdOfThread: 54 + GetProcessIdealProcessor: 6 + GetProcessInfo: 43 + GetResourceLimit: 56 + GetResourceLimitCurrentValues: 58 + GetResourceLimitLimitValues: 57 + GetSystemInfo: 42 + GetSystemTick: 40 + GetThreadAffinityMask: 13 + GetThreadContext: 59 + GetThreadId: 55 + GetThreadIdealProcessor: 15 + GetThreadInfo: 44 + GetThreadPriority: 11 + MapMemoryBlock: 31 + OutputDebugString: 61 + QueryMemory: 2 + ReleaseMutex: 20 + ReleaseSemaphore: 22 + SendSyncRequest1: 46 + SendSyncRequest2: 47 + SendSyncRequest3: 48 + SendSyncRequest4: 49 + SendSyncRequest: 50 + SetProcessAffinityMask: 5 + SetProcessIdealProcessor: 7 + SetThreadAffinityMask: 14 + SetThreadIdealProcessor: 16 + SetThreadPriority: 12 + SetTimer: 27 + SignalEvent: 24 + SleepThread: 10 + UnmapMemoryBlock: 32 + WaitSynchronization1: 36 + WaitSynchronizationN: 37 + FileSystemAccess: + - Debug + - DirectSdmc + - DirectSdmcWrite + - Core + - CategoryFileSystemTool + HandleTableSize: 512 + IORegisterMapping: + - 1ff50000-1ff57fff + - 1ff70000-1ff77fff + IdealProcessor: 1 + IoAccessControl: + - FsMountCardSpi + - FsMountNand + - FsMountTwln + MemoryMapping: + - 1f000000-1f5fffff:r + MemoryType: Application + Priority: 24 + ProgramId: 0x00040000ffffff00L + ServiceAccessControl: + - APT:U + - $hioFIO + - $hostio0 + - $hostio1 + - ac:u + - boss:U + - dsp::DSP + - frd:u + - fs:USER + - gsp::Gpu + - hid:USER + - http:C + - ndm:u + - nwm::UDS + - ptm:u + - pxi:dev + - soc:U + - ssl:C + - ldr:ro + - ps:ps + - cfg:nor + - mcu::HWC + - am:u + - cfg:i + Signature: | + aktZ4eHHc/0DJOO0+J0yS+OCTUDkOocI441pzjNa56jmsr3CsVoD5IGi9K+R + m+3gVcMc6DJHlflrsjGaEAg7a2s2b/yQ9kZAx8mwHgqihlD33eU73kOo0xV1 + hVLn2kWDDpweFKxPfjyfalqtwZLFAAnaz8HS852tokldYDVU6bchxCvF28aJ + vrVN0hHAvaJ2rVv/OMjgYIGwARPS7z5yDs2DxGbcJH55Q8KetUG0QFuXJZIC + g4eOXC2soHSnve1jKKvPfcaIJyBH+3fUVt1FQX88b8t8H51j5uSMbzTmskJY + rsMv6W6bler0T0zs8tHOS9aXCd75QTvpijFFgLQ14Q== + StorageId: + - 0 +CommonHeaderKey: + D: | + kVlG6tIpWOE416smaUI8k/v3soWJXEmzahOtNDHwHUyIKG/U7TWu2RsPHT+q + PvXaLZ6Rt34GqvZzVTpS0595/hqdkQEvFNQZyWTgi1XZJclnNFztAp4cje+l + c9rYm27XiqN01c4z/mJFf9EOFGDKuVTxS9YgOywWHCiOzsLMLc3bV09LGhGX + pMMtWk8CkubDU03onDLvIXT60Z0wJL2D65+cEtf2bt2CqBtIqBqwf7SYToNq + RnlPTohUQp0pXslnMllZ++PoWMOZhENAY6eA/ddwX43e3oHKDsAQPUtf8aX2 + nPf5fMKohI0SjqpFhsSh8mbBm+Bah02Xtd1OiF0XgQ== + DP: | + KRRQMwUuh9j3rsFqFXmkVfci7cnOObNolT5mISNLjOVyb5oBZSnjQGtwAGy3 + F3uUcdykCQi4ZZq1k+mzfuRr+tkKMfQbt9TJ2hHCUfmH5m7CSVr6uTlHaHmX + qXYgsknFDMEOHbwNFrI+89mAlyXwg0M2J9y5hHD3TYp3OfViHZE= + DQ: | + DsFfTFpoPFZYh5Hkb5apEE2WeS29NBt5wxhbqQ838TYeATtnFRKZJzbrVQ4G + TrNy8/pmaoZIUbK+xVCbO/FTid28jGVBOWQVig1KNrdk5nFjlvw3OHCwLIL7 + FyugGwkS7CTM0z+oNorMF71FRapRX0REE9FaCwmi4SNzi9UK2FM= + Exponent: | + AQAB + InverseQ: | + VhhJpDTD3EGpkm8BsN/SCBYOh9ozOVeMig81EjfFctH0u7TLwlMLVEJ96Z8h + 7oVh2c9ZQqWSBO8t/xhrQKdNjKo781rySHWDBjAewzULhUutV0QKUx1IG0wx + WeR3KdKWEURIsArdxT6dacyqOyb7xWdO40N/awZ+9Jv5G+RjCN4= + Modulus: | + 0DQPmbjwh2wztNIEgD/0To/vEjP93JCVQt71+OwxrsfxQYh3xPjcUSqGsZzv + vknSF68QjS5otNOhWMCGubCqn4+1wiFky5mp84xjSSJE0ji+JBomOaCmaC/q + WrEQGuZHIwWAvuMA68Hj/XC/FEV3nmol37j72CPoO3Aac39pgowuMiY4eshZ + TYmJL9K9mUMOXsJq++KoZl1mXEQmQIHfSQalG93yJwybdQs+TUJZy9LEEdGS + CL7Ei7i0bXb7HzS39AOC+g4OHhdCSGyRzutGkm7HoiiZdlK6ShpmBRUerAIl + ED9SuU+SQi9sjnsq3qTVNKbRF/Gzlr+7WrjWBCaxDw== + P: | + /UQWt9VELddu6yu01cCPt3MvdyGSXP+3xHFd3RDsNWQ3amiLFQf1EuXCiZQA + SzPfYOMZInTiVnvctanE9psQ43ZeMAdD3SPsg3uN11g8fr1O2YvTmKMB67K+ + 59DZhpX4vVdkr1/3NCW0ht/iWH4vhSvREH5rb/LL5aXaP5feKZk= + Q: | + 0nNwlIODzVV0tqZbySDZ4/UDG13lse24DQshAVSSb9/dpQs3POBP4bJBZ8HJ + /8N6CODEYhfkXYuWJi8p3vAXzNC5FcXQkZg0CxPK9jp6HPyadN/dfqFEUJ/8 + G8jqXVQt+aIfUDKOorzKRGE4J6UF8ChMqlZ1WkrfkAkszw+xaOc= +DefaultSpec: + AccessControlInfo: + AffinityMask: 1 + FirmwareVersion: 2 + HandleTableSize: 512 + IORegisterMapping: + - 1ff50000-1ff57fff + - 1ff70000-1ff77fff + IdealProcessor: 0 + MemoryMapping: + - 1f000000-1f5fffff:r + Priority: 16 + BasicInfo: + CompanyCode: "00" + Logo: Nintendo + Title: default + ExeFs: + ReadOnly: + - RO + ReadWrite: + - RW + Text: + - STUP_ENTRY + Media: + MediaType: Card + PlainRegion: + - .module_id + Rom: + DefaultReject: + - .* + File: + - "*" + SystemControlInfo: + Dependency: + ac: 0x0004013000002402L + am: 0x0004013000001502L + boss: 0x0004013000003402L + camera: 0x0004013000001602L + cecd: 0x0004013000002602L + cfg: 0x0004013000001702L + codec: 0x0004013000001802L + csnd: 0x0004013000002702L + dlp: 0x0004013000002802L + dsp: 0x0004013000001a02L + friends: 0x0004013000003202L + gpio: 0x0004013000001b02L + gsp: 0x0004013000001c02L + hid: 0x0004013000001d02L + http: 0x0004013000002902L + i2c: 0x0004013000001e02L + mcu: 0x0004013000001f02L + mic: 0x0004013000002002L + ndm: 0x0004013000002b02L + news: 0x0004013000003502L + nim: 0x0004013000002c02L + nwm: 0x0004013000002d02L + pdn: 0x0004013000002102L + ps: 0x0004013000003102L + ptm: 0x0004013000002202L + socket: 0x0004013000002e02L + spi: 0x0004013000002302L + ssl: 0x0004013000002f02L + StackSize: 16384 diff --git a/trunk/BoxyardEraser/ResFont.cpp b/trunk/BoxyardEraser/ResFont.cpp new file mode 100644 index 0000000..b0183df --- /dev/null +++ b/trunk/BoxyardEraser/ResFont.cpp @@ -0,0 +1,417 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: ResFont.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$ + *---------------------------------------------------------------------------*/ + +//------------------------------------------------------------------ +// デモ: ResFont +// +// 概要 +// nn::font::ResFont の構築と破棄のサンプルです。 +// +// 操作 +// なし。 +// +//------------------------------------------------------------------ + +#include +#include +#include +#include +#include + +#include "ResFont.h" +#include "demo.h" +#include "HeapManager.h" + +namespace common +{ + +namespace +{ +const char s_ShaderBinaryFilePath[] = "rom:/nnfont_RectDrawerShader.shbin"; +const char s_FontFilePath[] = "rom:/lc.bcfnt"; + +const u8 s_Color = 255; + +nn::font::RectDrawer s_Drawer; +void* s_DrawerBuf; +nn::font::ResFont s_Font; +nn::font::DispStringBuffer *s_pDrawStringBuf0; +nn::font::TextWriter s_TextWriter; +void (*s_DrawTextFunc)() = NULL; + +//--------------------------------------------------------------------------- +//! @brief シェーダの初期化を行います。 +//! +//! @param[in,out] pResource 描画用リソースを管理するオブジェクトへのポインタ。 +//--------------------------------------------------------------------------- +void* +InitShaders(nn::font::RectDrawer* pDrawer) +{ + nn::fs::FileReader shaderReader(s_ShaderBinaryFilePath); + + const u32 fileSize = (u32)shaderReader.GetSize(); + + void* shaderBinary = HeapManager::GetHeap()->Allocate(fileSize); + NN_NULL_ASSERT(shaderBinary); + +#ifndef NN_BUILD_RELEASE + s32 read = +#endif // NN_BUILD_RELEASE + shaderReader.Read(shaderBinary, fileSize); + NN_ASSERT(read == fileSize); + + const u32 vtxBufCmdBufSize = + nn::font::RectDrawer::GetVertexBufferCommandBufferSize(shaderBinary, fileSize); + void *const vtxBufCmdBuf = HeapManager::GetHeap()->Allocate(vtxBufCmdBufSize); + NN_NULL_ASSERT(vtxBufCmdBuf); + pDrawer->Initialize(vtxBufCmdBuf, shaderBinary, fileSize); + + HeapManager::GetHeap()->Free(shaderBinary); + + return vtxBufCmdBuf; + +} + +//--------------------------------------------------------------------------- +//! @brief 描画の初期設定を行います。 +//! +//! @param[in] width 画面の幅。 +//! @param[in] height 画面の高さ。 +//--------------------------------------------------------------------------- +void +InitDraw( + s32 width, + s32 height +) +{ + // カラーバッファ情報 + // LCDの向きに合わせて、幅と高さを入れ替えています。 + const nn::font::ColorBufferInfo colBufInfo = { width, height, PICA_DATA_DEPTH24_STENCIL8_EXT }; + + const u32 screenSettingCommands[] = + { + + // ビューポートの設定 + NN_FONT_CMD_SET_VIEWPORT( 0, 0, colBufInfo.width, colBufInfo.height ), + + // シザー処理を無効 + NN_FONT_CMD_SET_DISABLE_SCISSOR( colBufInfo ), + + // wバッファの無効化 + // デプスレンジの設定 + // ポリゴンオフセットの無効化 + NN_FONT_CMD_SET_WBUFFER_DEPTHRANGE_POLYGONOFFSET( + 0.0f, // wScale : 0.0 でWバッファが無効 + 0.0f, // depth range near + 1.0f, // depth range far + 0, // polygon offset units : 0.0 で ポリゴンオフセットが無効 + colBufInfo), + }; + + nngxAdd3DCommand(screenSettingCommands, sizeof(screenSettingCommands), true); + + static const u32 s_InitCommands[] = + { + // カリングを無効 + NN_FONT_CMD_SET_CULL_FACE( NN_FONT_CMD_CULL_FACE_DISABLE ), + + // ステンシルテストを無効 + NN_FONT_CMD_SET_DISABLE_STENCIL_TEST(), + + // デプステストを無効 + // カラーバッファの全ての成分を書き込み可 + NN_FONT_CMD_SET_DEPTH_FUNC_COLOR_MASK( + false, // isDepthTestEnabled + 0, // depthFunc + true, // depthMask + true, // red + true, // green + true, // blue + true), // alpha + + // アーリーデプステストを無効 + NN_FONT_CMD_SET_ENABLE_EARLY_DEPTH_TEST( false ), + + // フレームバッファアクセス制御 + NN_FONT_CMD_SET_FBACCESS( + true, // colorRead + true, // colorWrite + false, // depthRead + false, // depthWrite + false, // stencilRead + false), // stencilWrite + }; + + nngxAdd3DCommand(s_InitCommands, sizeof(s_InitCommands), true); +} + +//--------------------------------------------------------------------------- +//! @brief ResFontを構築します。 +//! +//! @param[out] pFont 構築するフォントへのポインタ。 +//! @param[in] filePath ロードするフォントリソースファイル名。 +//! +//! @return ResFont構築の成否を返します。 +//--------------------------------------------------------------------------- +bool +InitFont( + nn::font::ResFont* pFont, + const char* filePath +) +{ + // フォントリソースをロードします + nn::fs::FileReader fontReader(filePath); + + s32 fileSize = (s32)fontReader.GetSize(); + if ( fileSize <= 0 ) + { + return false; + } + + void* buffer = HeapManager::GetHeap()->Allocate(fileSize, nn::font::GlyphDataAlignment); + if (buffer == NULL) + { + return false; + } + + s32 readSize = fontReader.Read(buffer, fileSize); + if (readSize != fileSize) + { + HeapManager::GetHeap()->Free(buffer); + return false; + } + + // フォントリソースをセットします + bool bSuccess = pFont->SetResource(buffer); + NN_ASSERT(bSuccess); + + //--- 既にリソースをセット済みであるか,ロード済みであるか、リソースが不正な場合に失敗します。 + if (! bSuccess) + { + HeapManager::GetHeap()->Free(buffer); + } + + // 描画用バッファを設定します。 + const u32 drawBufferSize = nn::font::ResFont::GetDrawBufferSize(buffer); + void* drawBuffer = HeapManager::GetHeap()->Allocate(drawBufferSize, 4); + NN_NULL_ASSERT(drawBuffer); + pFont->SetDrawBuffer(drawBuffer); + + return bSuccess; +} + +//--------------------------------------------------------------------------- +//! @brief ResFontを破棄します。 +//! +//! @param[in] pFont 破棄するフォントへのポインタ。 +//--------------------------------------------------------------------------- +void +CleanupFont(nn::font::ResFont* pFont) +{ + // 描画用バッファの無効化 + // 描画用バッファがセットされているなら 構築時に SetDrawBuffer に渡したバッファへの + // ポインタが返ってきます。 + void *const drawBuffer = pFont->SetDrawBuffer(NULL); + if (drawBuffer != NULL) + { + HeapManager::GetHeap()->Free(drawBuffer); + } + + // フォントがセットされているなら SetResource 時に渡したリソースへの + // ポインタが返ってきます。 + void *const resource = pFont->RemoveResource(); + if (resource != NULL) + { + HeapManager::GetHeap()->Free(resource); + } + + // RemoveResource 後は再度 SetResource するまでフォントとして使用できません。 +} + +//--------------------------------------------------------------------------- +//! @brief 表示文字列用バッファを確保します。 +//! +//! @param[in] charMax 表示する文字列の最大文字数。 +//! +//! @return 確保した表示文字列用バッファへのポインタを返します。 +//--------------------------------------------------------------------------- +nn::font::DispStringBuffer* +AllocDispStringBuffer(s32 charMax) +{ + const u32 DrawBufferSize = nn::font::CharWriter::GetDispStringBufferSize(charMax); + void *const bufMem = HeapManager::GetHeap()->Allocate(DrawBufferSize); + NN_NULL_ASSERT(bufMem); + + return nn::font::CharWriter::InitDispStringBuffer(bufMem, charMax); +} + +//--------------------------------------------------------------------------- +//! @brief 文字列表示用にモデルビュー行列と射影行列を設定します。 +//! +//! @param[in] pDrawer RectDrawerオブジェクトへのポインタ。 +//! @param[in] width 画面の幅。 +//! @param[in] height 画面の高さ。 +//--------------------------------------------------------------------------- +void +SetupTextCamera( + nn::font::RectDrawer* pDrawer, + s32 width, + s32 height +) +{ + // 射影行列を正射影に設定 + { + // 左上原点とし、Y軸とZ軸の向きが逆になるように設定します。 + nn::math::MTX44 proj; + f32 znear = 0.0f; + f32 zfar = -1.0f; + f32 t = 0; + f32 b = static_cast(width); + f32 l = 0; + f32 r = static_cast(height); + nn::math::MTX44OrthoPivot(&proj, l, r, b, t, znear, zfar, nn::math::PIVOT_UPSIDE_TO_TOP); + pDrawer->SetProjectionMtx(proj); + } + + // モデルビュー行列を単位行列に設定 + { + nn::math::MTX34 mv; + nn::math::MTX34Identity(&mv); + pDrawer->SetViewMtxForText(mv); + } +} + +//--------------------------------------------------------------------------- +//! @brief ASCII文字列を描画します。 +//! +//! @param[in] pDrawer RectDrawerオブジェクトへのポインタ。 +//! @param[in] pDrawStringBuf DispStringBufferオブジェクトへのポインタ。 +//! @param[in] pFont フォントへのポインタ。 +//! @param[in] width 画面の幅。 +//! @param[in] height 画面の高さ。 +//--------------------------------------------------------------------------- +void +DrawAscii( + nn::font::RectDrawer* pDrawer, + nn::font::DispStringBuffer* pDrawStringBuf, + nn::font::ResFont* pFont, + s32 width, + s32 height +) +{ + s_TextWriter.SetDispStringBuffer(pDrawStringBuf); + s_TextWriter.SetFont(pFont); + + s_TextWriter.SetCursor(0, 0, 1.f); + + s_TextWriter.StartPrint(); + if(s_DrawTextFunc != NULL) + { + s_DrawTextFunc(); + } + + s_TextWriter.EndPrint(); + pDrawer->BuildTextCommand(&s_TextWriter); + + + // 文字の色は、文字列の描画コマンドを再作成しなくても変更できます。 + s_TextWriter.SetTextColor(nn::util::Color8(s_Color, s_Color, s_Color, s_Color)); + + pDrawer->DrawBegin(); + + SetupTextCamera(pDrawer, width, height); + s_TextWriter.UseCommandBuffer(); + + pDrawer->DrawEnd(); +} + +} // namespace + +void SetDrawTextHandler(void (*func)()) +{ + s_DrawTextFunc = func; +} + + +//--------------------------------------------------------------------------- +//! @brief サンプルのメイン関数です。 +//--------------------------------------------------------------------------- +void +InitializeResFont() +{ + const size_t ROMFS_BUFFER_SIZE = 1024 * 64; + static char buffer[ROMFS_BUFFER_SIZE]; + NN_UTIL_PANIC_IF_FAILED( + nn::fs::MountRom(16, 16, buffer, ROMFS_BUFFER_SIZE)); + + // フォントの構築 + { +#ifndef NN_BUILD_RELEASE + bool bSuccess = +#endif // NN_BUILD_RELEASE + InitFont(&s_Font, s_FontFilePath); + NN_ASSERTMSG(bSuccess, "Fail to load ResFont."); + } + + // 描画リソースの構築 + s_DrawerBuf = InitShaders(&s_Drawer); + + // 描画文字列用バッファの確保 + s_pDrawStringBuf0 = AllocDispStringBuffer(512); + + nn::fs::Unmount("rom:"); + +} + +void DrawResFont(s32 display) +{ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + if(display == NN_GX_DISPLAY0) + { + InitDraw(NN_GX_DISPLAY0_WIDTH, NN_GX_DISPLAY0_HEIGHT); + + DrawAscii(&s_Drawer, s_pDrawStringBuf0, &s_Font, NN_GX_DISPLAY0_WIDTH, NN_GX_DISPLAY0_HEIGHT); + } + else if(display == NN_GX_DISPLAY1) + { + InitDraw(NN_GX_DISPLAY1_WIDTH, NN_GX_DISPLAY1_HEIGHT); + + DrawAscii(&s_Drawer, s_pDrawStringBuf0, &s_Font, NN_GX_DISPLAY1_WIDTH, NN_GX_DISPLAY1_HEIGHT); + } + + nngxUpdateState(NN_GX_STATE_ALL); +} + +void FinalizeResFont() +{ + s_Drawer.Finalize(); + + // 描画リソースの破棄 + HeapManager::GetHeap()->Free(s_DrawerBuf); + + // フォントの破棄 + CleanupFont(&s_Font); + + // 描画文字列用バッファの解放 + HeapManager::GetHeap()->Free(s_pDrawStringBuf0); +} + +nn::font::TextWriter* GetTextWriter() +{ + return &s_TextWriter; +} + +} diff --git a/trunk/BoxyardEraser/ResFont.h b/trunk/BoxyardEraser/ResFont.h new file mode 100644 index 0000000..ca53420 --- /dev/null +++ b/trunk/BoxyardEraser/ResFont.h @@ -0,0 +1,33 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: ResFont.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 RESFONT_H_ +#define RESFONT_H_ + +#include + +namespace common +{ + +void InitializeResFont(); +void DrawResFont(s32 display); +void SetDrawTextHandler(void (*func)()); +nn::font::TextWriter* GetTextWriter(); + + +} + + +#endif /* RESFONT_H_ */ diff --git a/trunk/BoxyardEraser/VersionDetect.cpp b/trunk/BoxyardEraser/VersionDetect.cpp new file mode 100644 index 0000000..21352ab --- /dev/null +++ b/trunk/BoxyardEraser/VersionDetect.cpp @@ -0,0 +1,124 @@ +/*---------------------------------------------------------------------------* + 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 +#include +#include + +#include "VersionDetect.h" +#include "HeapManager.h" + +namespace common +{ + +nn::Result 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, common::cCupVerId[region], 0, 1, 1, buf, + BUF_SIZE); + NN_UTIL_RETURN_IF_FAILED(result); + + nn::fs::FileInputStream fis; + + result = fis.TryInitialize(L"cver:/version.bin"); + NN_UTIL_RETURN_IF_FAILED(result); + if (result.IsSuccess()) + { + s64 fileSize = fis.GetSize(); + NN_LOG("version.bin size = %lld\n", fileSize); + s32 ret; + void* addr = NULL; + addr = common::HeapManager::GetHeap()->Allocate(fileSize); + if (addr != NULL) + { + result = fis.TryRead(&ret, addr, fileSize); + NN_UTIL_RETURN_IF_FAILED(result); + if (result.IsSuccess()) + { + nn::pl::CTR::CardUpdateVersion* ver_buf = reinterpret_cast (addr); + + std::memcpy(cup, ver_buf, sizeof(nn::pl::CTR::CardUpdateVersion)); + } + common::HeapManager::GetHeap()->Free(addr); + } + } + fis.Finalize(); + + nn::fs::Unmount("cver:"); + } + + return result; +} + +nn::Result 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, common::cNupVerId[region], 0, 1, 1, buf, + BUF_SIZE); + NN_UTIL_RETURN_IF_FAILED(result); + + nn::fs::FileInputStream fis; + + result = fis.TryInitialize(L"nver:/version.bin"); + NN_UTIL_RETURN_IF_FAILED(result); + if (result.IsSuccess()) + { + s64 fileSize = fis.GetSize(); + NN_LOG("version.bin size = %lld\n", fileSize); + s32 ret; + void* addr = NULL; + addr = common::HeapManager::GetHeap()->Allocate(fileSize); + if (addr != NULL) + { + result = fis.TryRead(&ret, addr, fileSize); + NN_UTIL_RETURN_IF_FAILED(result); + if (result.IsSuccess()) + { + nn::pl::CTR::NetworkUpdateVersion* ver_buf = + reinterpret_cast (addr); + + std::memcpy(nup, ver_buf, sizeof(nn::pl::CTR::NetworkUpdateVersion)); + } + common::HeapManager::GetHeap()->Free(addr); + } + } + + fis.Finalize(); + nn::fs::Unmount("nver:"); + } + + return result; +} + +nn::Result GetSystemVersion(common::VerDef* mVerData, nn::cfg::CTR::CfgRegionCode region) +{ + nn::Result result; + result = GetCupVersion(&mVerData->cup, region); + NN_UTIL_RETURN_IF_FAILED(result); + result = GetNupVersion(&mVerData->nup, region); + NN_UTIL_RETURN_IF_FAILED(result); +} + +} + diff --git a/trunk/BoxyardEraser/VersionDetect.h b/trunk/BoxyardEraser/VersionDetect.h new file mode 100644 index 0000000..e9f3b28 --- /dev/null +++ b/trunk/BoxyardEraser/VersionDetect.h @@ -0,0 +1,53 @@ +/*---------------------------------------------------------------------------* + 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 +#include +#include + +namespace common +{ + +// 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, +}; + +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, +}; + + +struct VerDef +{ + nn::pl::CTR::CardUpdateVersion cup; + nn::pl::CTR::NetworkUpdateVersion nup; +}; + +nn::Result GetSystemVersion(common::VerDef* mVerData, nn::cfg::CTR::CfgRegionCode region); + +} + + +#endif /* VERSIONDETECT_H_ */ diff --git a/trunk/BoxyardEraser/banner/model.cbmd b/trunk/BoxyardEraser/banner/model.cbmd new file mode 100644 index 0000000000000000000000000000000000000000..f1c7b6279e13f5278c419d615d7d03d5660005e5 GIT binary patch literal 198785 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 MDvwobWH +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "demo.h" +#include "ResFont.h" +#include "HeapManager.h" +#include "VersionDetect.h" + +#define UTIL_RETURN_IF_NOT_AM_NOT_FOUND(result) \ + if(result.IsFailure()) \ + { \ + if(result != nn::am::ResultNotFound()) \ + { \ + return result; \ + } \ + nn::dbg::PrintResult(result); \ +} \ + +namespace { + +nn::Result DeleteBoxyard(nn::ProgramId programId); +nn::Result DownGradeNupVersion(nn::cfg::CTR::CfgRegionCode region); +void FatalDrawing(nn::Result result); + +const size_t ERASE_THREAD_STACK_SIZE = 0x1000; +nn::os::Thread s_EraseThread; +nn::os::StackBuffer s_EraseThreadStack; + +demo::RenderSystemDrawing s_RenderSystem; + +// バージョン情報 +common::VerDef s_VerData; + +// グラフィックスに割り当てるメモリ +const size_t s_GxHeapSize = 0x800000; + +::std::vector* s_pOperationMessage; + +// インポートする +bit8 s_ReadBuf[64 * 1024]; + +const nn::ProgramId BOXYARD_PROGRAM_ID[] = +{ + 0x0004001000023000ULL, // JP + 0x0004001000024000ULL, // US + 0x0004001000025000ULL // EU +}; + +const nn::ProgramId NUP_VERSION_PROGRAM_ID[] = +{ + 0x000400DB00016202ULL, // JP + 0x000400DB00016302ULL, // US + 0x000400DB00016102ULL // EU +}; + +const wchar_t* ROM_NUP_VERSION_PATH[] = +{ +#ifndef USE_PROD_CIA + L"rom:/000400DB00016202-0_0_0-nup.version.JP-UnfixedKey.cia", // JP + L"rom:/000400DB00016302-0_0_0-nup.version.US-UnfixedKey.cia", // US + L"rom:/000400DB00016102-0_0_0-nup.version.EU-UnfixedKey.cia" // EU +#else + L"rom:/000400DB00016202-0_0_0-nup.version.JP.master.ols.cia", // JP + L"rom:/000400DB00016302-0_0_0-nup.version.US.master.ols.cia", // US + L"rom:/000400DB00016102-0_0_0-nup.version.EU.master.ols.cia" // EU +#endif +}; + +void EraseThreadFunc(nn::cfg::CTR::CfgRegionCode region) +{ + nn::Result result; + + s_pOperationMessage->push_back(std::string("")); + s_pOperationMessage->push_back(std::string("Deleting...")); + // BOXYARDを消去する + result = DeleteBoxyard(BOXYARD_PROGRAM_ID[region]); + if(result.IsFailure()) + { + nn::dbg::PrintResult(result); + s_pOperationMessage->push_back(std::string("Failed Delete Program")); + FatalDrawing(result); + } + s_pOperationMessage->push_back(std::string("Done.")); + s_pOperationMessage->push_back(std::string("")); + + s_pOperationMessage->push_back(std::string("Updating System...")); + // NUPバージョンを更新する + result = DownGradeNupVersion(region); + if (result.IsFailure()) + { + nn::dbg::PrintResult(result); + s_pOperationMessage->push_back(std::string("Failed DownGrade NUP Version")); + FatalDrawing(result); + } + + + s_pOperationMessage->push_back(std::string("Done.")); + s_pOperationMessage->push_back(std::string("")); + + s_pOperationMessage->push_back(std::string("Finished.")); + s_RenderSystem.SetClearColor(NN_GX_DISPLAY0, 0, 1, 0, 0); + s_RenderSystem.SetClearColor(NN_GX_DISPLAY1, 0, 1, 0, 0); +} + +nn::Result DownGradeNupVersion(nn::cfg::CTR::CfgRegionCode region) +{ + nn::Result result = nn::ResultSuccess(); + + if(region > sizeof(NUP_VERSION_PROGRAM_ID) / sizeof(NUP_VERSION_PROGRAM_ID[0]) - 1) + { + return nn::Result(nn::Result::LEVEL_STATUS, nn::Result::SUMMARY_INVALID_ARGUMENT, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_INVALID_ENUM_VALUE); + } + nn::ProgramID programId = NUP_VERSION_PROGRAM_ID[region]; + + // リージョンに合わせて削除する + result = nn::am::DeleteProgram(nn::fs::MEDIA_TYPE_NAND, programId); + UTIL_RETURN_IF_NOT_AM_NOT_FOUND(result); + + nn::fs::FileOutputStream* stream; + result = nn::am::BeginImportProgram(&stream, nn::fs::MEDIA_TYPE_NAND); + NN_UTIL_RETURN_IF_FAILED(result); + + NN_LOG("Importing: %ls...", ROM_NUP_VERSION_PATH[region]); + nn::fs::FileInputStream in; + + const size_t ROMFS_BUFFER_SIZE = 1024 * 64; + static char buffer[ROMFS_BUFFER_SIZE]; + NN_UTIL_PANIC_IF_FAILED( + nn::fs::MountRom(16, 16, buffer, ROMFS_BUFFER_SIZE)); + + result = in.TryInitialize(ROM_NUP_VERSION_PATH[region]); + NN_UTIL_RETURN_IF_FAILED(result); + + s64 fileSize = in.GetSize(); + s32 totalRead = 0; + s32 readSize = 0; + do + { + result = in.TryRead(&readSize, s_ReadBuf, sizeof(s_ReadBuf)); + stream->Write(s_ReadBuf, readSize); + totalRead += readSize; + } while (totalRead < fileSize); + + in.Finalize(); + nn::fs::Unmount("rom:"); + + result = nn::am::EndImportProgram(stream); + NN_UTIL_RETURN_IF_FAILED(result); + NN_LOG(" done.\n"); + + return result; +} + +nn::Result DeleteBoxyard(nn::ProgramId programId) +{ + nn::Result result; + + NN_LOG("Deleting Boxyard Program..."); + // リージョンに合わせて削除する + result = nn::am::DeleteProgram(nn::fs::MEDIA_TYPE_NAND, programId); + UTIL_RETURN_IF_NOT_AM_NOT_FOUND(result); + NN_LOG("Done\n"); + + NN_LOG("Deleting Boxyard eTicket..."); + // チケットを削除する + result = nn::am::DeleteTicket(programId); + UTIL_RETURN_IF_NOT_AM_NOT_FOUND(result); + NN_LOG("Done\n"); + + return result; +} + +void SetTextWriterCore() +{ + using namespace common; + + GetTextWriter()->Print("3DMovie Eraser\n\n"); + ::std::vector::iterator it; + for (it = s_pOperationMessage->begin(); it != s_pOperationMessage->end(); it++) + { + GetTextWriter()->Printf("%s\n", it->c_str()); + } + +} + +void FatalDrawing(nn::Result result) +{ + char resultStr[32]; + std::snprintf(resultStr, sizeof(resultStr), result.GetPrintableBits()); + s_pOperationMessage->push_back(resultStr); + + for(;;) + { + s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY0); + s_RenderSystem.SetClearColor(NN_GX_DISPLAY0, 1.f, 0, 0, 0); + s_RenderSystem.Clear(); + + common::SetDrawTextHandler(SetTextWriterCore); + common::DrawResFont(NN_GX_DISPLAY0); + s_RenderSystem.SwapBuffers(); + + s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY1); + s_RenderSystem.SetClearColor(NN_GX_DISPLAY1, 1.f, 0, 0, 0); + s_RenderSystem.Clear(); + + s_RenderSystem.SwapBuffers(); + } +} + +} + +extern "C" void nnMain(void) +{ + // os の初期化 + nn::os::Initialize(); + + // fs の初期化 + nn::fs::Initialize(); + + // appletの初期化 + nn::applet::Enable( false ); + + // hid の初期化 + nn::Result result = nn::hid::Initialize(); + NN_UTIL_PANIC_IF_FAILED(result); + + // cfg の初期化 + nn::cfg::CTR::init::Initialize(); + nn::cfg::CTR::system::Initialize(); + + // リージョンの取得 + nn::cfg::CTR::CfgRegionCode region; + region = nn::cfg::CTR::GetRegion(); + + // am の初期化 + nn::am::InitializeForLocalImporter(); + + // ヒープの確保 + common::HeapManager::GetHeap()->Initialize(nn::os::GetDeviceMemoryAddress(), nn::os::GetDeviceMemorySize(), nn::os::ALLOCATE_OPTION_LINEAR); + + // RenderSystem の準備 + uptr heapForGx = reinterpret_cast(common::HeapManager::GetHeap()->Allocate(s_GxHeapSize)); + s_RenderSystem.Initialize(heapForGx, s_GxHeapSize); + + // ResFontの初期化 + common::InitializeResFont(); + + std::vector operationMessage; + s_pOperationMessage = &operationMessage; + + // バージョンの取得 + result = common::GetSystemVersion(&s_VerData, region); + if(result.IsFailure()) + { + nn::dbg::PrintResult(result); + operationMessage.push_back(std::string("Failed Get Version Data")); + FatalDrawing(result); + } + + operationMessage.push_back(std::string("Region: ") + std::string(nn::cfg::CTR::GetRegionCodeA3(region))); + + s_EraseThread.Start(EraseThreadFunc, region, s_EraseThreadStack); + + // ボタン入力 + nn::hid::PadReader padReader; + nn::hid::PadStatus padStatus; + + s_RenderSystem.SetClearColor(NN_GX_DISPLAY0, 0, 0, 0, 0); + s_RenderSystem.SetClearColor(NN_GX_DISPLAY1, 0, 0, 0, 0); + + for(;;) + { + padReader.ReadLatest(&padStatus); + + s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY0); + s_RenderSystem.Clear(); + + common::SetDrawTextHandler(SetTextWriterCore); + common::DrawResFont(NN_GX_DISPLAY0); + s_RenderSystem.SwapBuffers(); + + s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY1); + s_RenderSystem.Clear(); + s_RenderSystem.SwapBuffers(); + nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(10)); + } +} diff --git a/trunk/BoxyardEraser/romfiles/000400DB00016102-0_0_0-nup.version.EU-UnfixedKey.cia b/trunk/BoxyardEraser/romfiles/000400DB00016102-0_0_0-nup.version.EU-UnfixedKey.cia new file mode 100644 index 0000000000000000000000000000000000000000..e00a27f39ee2fda11dcec032428e1879d84ae818 GIT binary patch literal 31488 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 ON!_m0@0b0$kN7{x%f}r6 literal 0 HcmV?d00001