mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
BOXYARD消去用ツールのプロトタイプ
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
This commit is contained in:
parent
2d08439b16
commit
5eb2259845
BIN
trunk/BoxyardEraser/BoxyardEraser.bsf
Normal file
BIN
trunk/BoxyardEraser/BoxyardEraser.bsf
Normal file
Binary file not shown.
45
trunk/BoxyardEraser/BoxyardEraser.rsf
Normal file
45
trunk/BoxyardEraser/BoxyardEraser.rsf
Normal file
@ -0,0 +1,45 @@
|
||||
BasicInfo:
|
||||
Title : TitleEraser
|
||||
ProductCode: TitleEraser
|
||||
BackupMemoryType: None
|
||||
|
||||
TitleInfo:
|
||||
Use: Evaluation
|
||||
Category: Application
|
||||
UniqueId: 0xf8021
|
||||
Version: 0
|
||||
|
||||
SystemControlInfo:
|
||||
AppType : Application
|
||||
StackSize : 0x4000
|
||||
Dependency :
|
||||
- gpio
|
||||
- pdn
|
||||
- spi
|
||||
- i2c
|
||||
- mcu
|
||||
- ptm
|
||||
- codec
|
||||
- cfg
|
||||
- hid
|
||||
- gsp
|
||||
|
||||
AccessControlInfo:
|
||||
Priority : 16
|
||||
DisableDebug : true
|
||||
|
||||
FileSystemAccess:
|
||||
- Debug
|
||||
- Core
|
||||
- CategoryFileSystemTool
|
||||
|
||||
IoAccessControl:
|
||||
- FsMountNand
|
||||
|
||||
Option:
|
||||
FreeProductCode: true
|
||||
|
||||
|
||||
Rom:
|
||||
# ROM に含めるファイルシステムのルートパスを指定します。
|
||||
HostRoot: "$(ROMFS_ROOT)"
|
||||
39
trunk/BoxyardEraser/HeapManager.cpp
Normal file
39
trunk/BoxyardEraser/HeapManager.cpp
Normal file
@ -0,0 +1,39 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: Horizon
|
||||
File: HeapManager.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 "HeapManager.h"
|
||||
|
||||
namespace common
|
||||
{
|
||||
|
||||
nn::fnd::ThreadSafeExpHeap HeapManager::s_AppHeap;
|
||||
|
||||
HeapManager::HeapManager()
|
||||
{
|
||||
// TODO 自動生成されたコンストラクター・スタブ
|
||||
|
||||
}
|
||||
|
||||
HeapManager::~HeapManager()
|
||||
{
|
||||
// TODO Auto-generated destructor stub
|
||||
}
|
||||
|
||||
nn::fnd::ThreadSafeExpHeap* HeapManager::GetHeap()
|
||||
{
|
||||
return &s_AppHeap;
|
||||
}
|
||||
|
||||
}
|
||||
40
trunk/BoxyardEraser/HeapManager.h
Normal file
40
trunk/BoxyardEraser/HeapManager.h
Normal file
@ -0,0 +1,40 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: Horizon
|
||||
File: HeapManager.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 HEAPMANAGER_H_
|
||||
#define HEAPMANAGER_H_
|
||||
|
||||
#include <nn.h>
|
||||
|
||||
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_ */
|
||||
71
trunk/BoxyardEraser/OMakefile
Normal file
71
trunk/BoxyardEraser/OMakefile
Normal file
@ -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)
|
||||
73
trunk/BoxyardEraser/OMakeroot
Normal file
73
trunk/BoxyardEraser/OMakeroot
Normal file
@ -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:$
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
# ディレクトリレイアウトについての説明
|
||||
#
|
||||
# a) ソースコードがルートディレクトリ直下に配置される場合
|
||||
# 例:
|
||||
# /OMakeroot
|
||||
# /foo/bar/OMakefile
|
||||
#
|
||||
# 結果:
|
||||
# OMakefile と同じディレクトリ以下に objects や images が生成されます。
|
||||
#
|
||||
# /foo/bar/objects/...
|
||||
# /foo/bar/images/..
|
||||
#
|
||||
#
|
||||
# b) ソースコードが sources 以下に配置される場合
|
||||
# 例:
|
||||
# /OMakeroot
|
||||
# /sources/foo/bar/OMakefile
|
||||
#
|
||||
# 結果:
|
||||
# ルートディレクトリ以下に objects や images が生成されます。
|
||||
#
|
||||
# /objects/foo/bar/...
|
||||
# /images/foo/bar/...
|
||||
#
|
||||
#
|
||||
|
||||
# ルート環境変数の取得
|
||||
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 が一致しません。同じパスを設定するか、どちらか一方だけを定義して下さい。)
|
||||
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: .
|
||||
|
||||
232
trunk/BoxyardEraser/RepairTool.desc
Normal file
232
trunk/BoxyardEraser/RepairTool.desc
Normal file
@ -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
|
||||
417
trunk/BoxyardEraser/ResFont.cpp
Normal file
417
trunk/BoxyardEraser/ResFont.cpp
Normal file
@ -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 <nn.h>
|
||||
#include <nn/fs.h>
|
||||
#include <nn/font.h>
|
||||
#include <nn/math.h>
|
||||
#include <nn/util.h>
|
||||
|
||||
#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<f32>(width);
|
||||
f32 l = 0;
|
||||
f32 r = static_cast<f32>(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 <unnnamed>
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
33
trunk/BoxyardEraser/ResFont.h
Normal file
33
trunk/BoxyardEraser/ResFont.h
Normal file
@ -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 <nn/font.h>
|
||||
|
||||
namespace common
|
||||
{
|
||||
|
||||
void InitializeResFont();
|
||||
void DrawResFont(s32 display);
|
||||
void SetDrawTextHandler(void (*func)());
|
||||
nn::font::TextWriter* GetTextWriter();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
#endif /* RESFONT_H_ */
|
||||
124
trunk/BoxyardEraser/VersionDetect.cpp
Normal file
124
trunk/BoxyardEraser/VersionDetect.cpp
Normal file
@ -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 <nn.h>
|
||||
#include <nn/fs.h>
|
||||
#include <nn/fs/CTR/MPCore/fs_FileSystemBasePrivate.h>
|
||||
|
||||
#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<nn::pl::CTR::CardUpdateVersion*> (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<nn::pl::CTR::NetworkUpdateVersion*> (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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
53
trunk/BoxyardEraser/VersionDetect.h
Normal file
53
trunk/BoxyardEraser/VersionDetect.h
Normal file
@ -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 <nn/cfg/CTR/cfg_RegionCode.h>
|
||||
#include <nn/pl/CTR/pl_SharedDataTitleId.h>
|
||||
#include <nn/pl/CTR/pl_Version.h>
|
||||
|
||||
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_ */
|
||||
BIN
trunk/BoxyardEraser/banner/model.cbmd
Normal file
BIN
trunk/BoxyardEraser/banner/model.cbmd
Normal file
Binary file not shown.
BIN
trunk/BoxyardEraser/banner/sound.cbsd
Normal file
BIN
trunk/BoxyardEraser/banner/sound.cbsd
Normal file
Binary file not shown.
1
trunk/BoxyardEraser/banner/unknown24x24.ctpk
Normal file
1
trunk/BoxyardEraser/banner/unknown24x24.ctpk
Normal file
@ -0,0 +1 @@
|
||||
В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫фВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫ф8ф8фШчГГГГГГВ╫В╫8фВ╫В╫В╫В╫В╫ГГГГшчфГШФВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫фВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫yнВ╫yнВ╫В╫В╫В╫В╫YнВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫ГГГГШчyнYнВ╫шчшчВ╫В╫фВ╫В╫шчyнШчВ╫yнГГГГyнШФГГГГГшчВ╫В╫В╫В╫YнГyнГВ╫В╫В╫В╫В╫yнфшчГШФГYнyнВ╫В╫В╫yнВ╫╨жВ╫В╫В╫В╫В╫yнВ╫yнВ╫В╫В╫В╫В╫YнВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫yнГYнГВ╫В╫В╫В╫В╫фВ╫В╫ГyнГ8фВ╫В╫В╫В╫фВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫
|
||||
1
trunk/BoxyardEraser/banner/unknown48x48.ctpk
Normal file
1
trunk/BoxyardEraser/banner/unknown48x48.ctpk
Normal file
@ -0,0 +1 @@
|
||||
В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫YнВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫8фВ╫В╫8ф8фВ╫В╫В╫╨ж8ф╨жГГшчГГГГГГГГГГГГГГГГГГГГГГГВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫8ф8фВ╫В╫фВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫ГГГГГШФГГГГГГГГГГ жфГГВ╫В╫ жВ╫ГГГГГ жГГВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫8фВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫шчВ╫шчВ╫В╫В╫В╫В╫ГВ╫ШчВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫╨жВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫ГГГГГГГГГГГГГГГГГГШФ8фШчшчВ╫В╫ жВ╫YнВ╫В╫В╫В╫В╫ГГYнyнГГyнфВ╫В╫В╫В╫В╫В╫В╫В╫фВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫шчшчГшчШФВ╫В╫ГГYнГВ╫В╫В╫В╫В╫шчВ╫шчГГГГГГГГГГГГГГГГВ╫В╫YнШч жГГГГГГГГГГГГГГГГГГГГГГГГшч╨жВ╫ жВ╫шчВ╫В╫В╫В╫В╫ШФВ╫ШФВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫шчВ╫yнВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫YнВ╫ жГГГГВ╫шчВ╫шчГГГГВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫8фВ╫В╫╨жшчВ╫В╫В╫В╫В╫YнфyнГГГГГГГГГ жГГГГ╨жВ╫YнВ╫ШФYнВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫шч жВ╫В╫В╫В╫В╫В╫yнВ╫ГШФВ╫В╫фВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫ШФВ╫ГГГГГВ╫ШчВ╫YнГГШФГВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫8фВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫ГГГГ жВ╫шчВ╫ГГГшч жВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫8фВ╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫В╫
|
||||
311
trunk/BoxyardEraser/main.cpp
Normal file
311
trunk/BoxyardEraser/main.cpp
Normal file
@ -0,0 +1,311 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: Horizon
|
||||
File: main.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 <nn.h>
|
||||
#include <nn/am/am_ApiLocalImporter.h>
|
||||
#include <nn/am/am_ApiSystemMenu.h>
|
||||
#include <nn/am/am_Result.h>
|
||||
#include <nn/cfg/CTR/cfg_Api.h>
|
||||
#include <nn/cfg/CTR/cfg_ApiInit.h>
|
||||
#include <nn/cfg/CTR/cfg_ApiSys.h>
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#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<ERASE_THREAD_STACK_SIZE> s_EraseThreadStack;
|
||||
|
||||
demo::RenderSystemDrawing s_RenderSystem;
|
||||
|
||||
// バージョン情報
|
||||
common::VerDef s_VerData;
|
||||
|
||||
// グラフィックスに割り当てるメモリ
|
||||
const size_t s_GxHeapSize = 0x800000;
|
||||
|
||||
::std::vector<std::string>* 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<std::string>::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<uptr>(common::HeapManager::GetHeap()->Allocate(s_GxHeapSize));
|
||||
s_RenderSystem.Initialize(heapForGx, s_GxHeapSize);
|
||||
|
||||
// ResFontの初期化
|
||||
common::InitializeResFont();
|
||||
|
||||
std::vector<std::string> 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));
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
trunk/BoxyardEraser/romfiles/lc.bcfnt
Normal file
BIN
trunk/BoxyardEraser/romfiles/lc.bcfnt
Normal file
Binary file not shown.
BIN
trunk/BoxyardEraser/romfiles/nnfont_RectDrawerShader.shbin
Normal file
BIN
trunk/BoxyardEraser/romfiles/nnfont_RectDrawerShader.shbin
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user