mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
ローカル保存されたクレジットカード情報を消去するように
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@508 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
parent
31a210c020
commit
6a79efcb66
@ -13,26 +13,14 @@ SystemControlInfo:
|
||||
AppType : Application
|
||||
StackSize : 0x4000
|
||||
Dependency :
|
||||
- gpio
|
||||
- pdn
|
||||
- spi
|
||||
- i2c
|
||||
- mcu
|
||||
- ptm
|
||||
- codec
|
||||
- cfg
|
||||
- hid
|
||||
- gsp
|
||||
- friends
|
||||
- nim
|
||||
- ac
|
||||
- ndm
|
||||
|
||||
AccessControlInfo:
|
||||
Priority : 16
|
||||
DisableDebug : true
|
||||
|
||||
FileSystemAccess:
|
||||
FileSystemAccess:
|
||||
- Core
|
||||
|
||||
IoAccessControl:
|
||||
@ -41,6 +29,8 @@ AccessControlInfo:
|
||||
Option:
|
||||
FreeProductCode: true
|
||||
|
||||
CardInfo:
|
||||
CardDevice: None
|
||||
|
||||
Rom:
|
||||
# ROM に含めるファイルシステムのルートパスを指定します。
|
||||
|
||||
@ -14,8 +14,7 @@
|
||||
# $Rev$
|
||||
#----------------------------------------------------------------------------
|
||||
SUPPORTED_TARGETS = CTR-T*.Process.MPCore.*
|
||||
CTR_APPTYPE = BOTH
|
||||
CTR_MAKE_DEVELOPMENT_IMAGE = true
|
||||
CTR_APPTYPE = CARD
|
||||
|
||||
TARGET_PROGRAM = KENJEraser
|
||||
|
||||
@ -37,29 +36,15 @@ 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 \
|
||||
|
||||
INSTALL_SDK_TOOL = true
|
||||
|
||||
ROM_SPEC_FILE = $(TARGET_PROGRAM).rsf
|
||||
DESCRIPTOR = DSiWareDeleteTool.desc
|
||||
DESCRIPTOR = PersonalDataDeleteTool.desc
|
||||
|
||||
include $(ROOT_OMAKE)/modulerules
|
||||
|
||||
|
||||
@ -4,15 +4,15 @@ AccessControlDescriptor:
|
||||
CoreVersion: 2
|
||||
DescVersion: 2
|
||||
Descriptor: |
|
||||
AP///wAABAACAAAAAAAFGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AP///wAABAACAAAAAAAFGJ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIEAAAAAAABBUFQ6VQAAACRo
|
||||
aW9GSU8AJGhvc3RpbzAkaG9zdGlvMWFjOnUAAAAAYm9zczpVAABjZmc6dQAA
|
||||
AGRzcDo6RFNQZnJkOnUAAABmczpVU0VSAGdzcDo6R3B1aGlkOlVTRVJodHRw
|
||||
OkMAAG5kbTp1AAAAbndtOjpVRFNwdG06dQAAAHB4aTpkZXYAc29jOlUAAABz
|
||||
c2w6QwAAAGxkcjpybwAAYW06c3lzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
c2w6QwAAAGxkcjpybwAAaXI6VVNFUgBhbTpzeXMAAG5pbTpzAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAD+//vw/7//8ec/APIA8JH/APaR/1D/gf9Y/4H/cP+B/3j/gf8B
|
||||
AAAAAAAAAABOn/rw/7//8ec/APIA8JH/APaR/1D/gf9Y/4H/cP+B/3j/gf8B
|
||||
AQD/AAIA/v//////////////////////////////////////////////////
|
||||
////////////////////////////////////////AAAAAAAAAAAAAAAAAAAA
|
||||
AAQDAAAAAAAAAAAAAAAAAAI=
|
||||
@ -39,7 +39,6 @@ AccessControlDescriptor:
|
||||
ExitThread: 9
|
||||
GetCurrentProcessorNumber: 17
|
||||
GetHandleInfo: 41
|
||||
GetProcessAffinityMask: 4
|
||||
GetProcessId: 53
|
||||
GetProcessIdOfThread: 54
|
||||
GetProcessIdealProcessor: 6
|
||||
@ -49,7 +48,6 @@ AccessControlDescriptor:
|
||||
GetResourceLimitLimitValues: 57
|
||||
GetSystemInfo: 42
|
||||
GetSystemTick: 40
|
||||
GetThreadAffinityMask: 13
|
||||
GetThreadContext: 59
|
||||
GetThreadId: 55
|
||||
GetThreadIdealProcessor: 15
|
||||
@ -65,10 +63,6 @@ AccessControlDescriptor:
|
||||
SendSyncRequest3: 48
|
||||
SendSyncRequest4: 49
|
||||
SendSyncRequest: 50
|
||||
SetProcessAffinityMask: 5
|
||||
SetProcessIdealProcessor: 7
|
||||
SetThreadAffinityMask: 14
|
||||
SetThreadIdealProcessor: 16
|
||||
SetThreadPriority: 12
|
||||
SetTimer: 27
|
||||
SignalEvent: 24
|
||||
@ -116,53 +110,55 @@ AccessControlDescriptor:
|
||||
- soc:U
|
||||
- ssl:C
|
||||
- ldr:ro
|
||||
- ir:USER
|
||||
- am:sys
|
||||
- nim:s
|
||||
Signature: |
|
||||
df8WcNTaVgoVquQ9BkEsZoF3PpbJVmH6XIv6V9KHR/rJNpR/QcT2k/psvUNf
|
||||
tlgvSy+ZtRIUE+xM0qelRXXZ/kpUUtPuYF0//cdetGKJIXVzV/0CLsChV1LQ
|
||||
ZKDZasONA2of0sBQmyh82GWbIvwKuaQjkTcEpZ0xSO8qMRIFsE9T1itpZI3y
|
||||
39KZSBz5FNGizpA2UoFKCART2VDvx1owquaB6FaUjUEljRYF2B5xfzImsWtR
|
||||
CMkbV7rSfKjCl1f2VLIPxc7GbOkY4/nYShaZgp9tvCFlBtUPLoec9TEr6Nn+
|
||||
+r6Kh9BvXqPdd3rpDtHXim9CSWgXmZsNtIdoJ5rS7g==
|
||||
AqvjcY8rXTlv8a/zlgr+Hw8m+EloTnOLLsrcfNpkJMF6lL1UElFFymBpqb/8
|
||||
5UgHVFP8GXh7HdbkW6OUpaHI1WfW0TywDDovLe8KWz0ljAyikNdBt+Y9aw9f
|
||||
OmXe6v51j5lMjOsp+1t2q8KSTg/3MoviT6WV5nyl1pZ7MY2YE4X25dong6Jz
|
||||
M/1xzbuwbD2pyIleVbdK93Iqz30DwGv+Clrm0BvYyquautPc2vciFhmyS+9x
|
||||
ecaYLGXq28f5MTf1k3MB+kuJ9zRcwa+EzsDpzQ7QK7N5KnO83NFEj5RIxcGD
|
||||
P9YB1Zh41GoKu2MfzrA+ct3jLswuIHCgPhpxIwZxHw==
|
||||
StorageId:
|
||||
- 0
|
||||
CommonHeaderKey:
|
||||
D: |
|
||||
2dZqKOrq81unaSIjE7BboKKaCHaNsjpoZcjSnwX3x8NMSHC2ovTPP3iR+6Qz
|
||||
Rq15iPQg2NV/4WbMMmKFNfVIrsNEAbpOFpQCXdriiwsXHMziM1wO7Td4qzYN
|
||||
z/s6ZNxhTxpdKtISUDmkyLGVFBCGNV4EPJkEM+GWqn5yKw1uX0lt2x/iICGR
|
||||
WE8f02khCCpAD1/CrrSaUHBrodE9lXX0lGT8rYEB7avrl99FNFcxa8NUslqN
|
||||
0lcP9yzzssJNQitYiZv5VLkJgAt4RCadsZd5sWblqGTFK/zEd7wN4BXs87tR
|
||||
RLDWMAeJ3L/e4ZRpenon/vit1o9UmSgSGKb9klejAQ==
|
||||
fq1dy3ZImPNRzcRdktWN0oMneIp+0eswZJ9QKAr31zNEufZ71H3xC75jXUBY
|
||||
dhDt0cp5BoguBjdcAuKvUXsA0uf6XmAPmBe/h4q+m3ROH39NpIHKgx/Hy/Sq
|
||||
tQsbsepo7GgpmK+81nu9WWVYma2ZH6s9TA1lJjTIoOAdZcXz9Ss3PZcvJL3z
|
||||
6apT8iEcKjR06gZQXwl45hG/5Pvntc+ZBs987NYgTUVvPsrTg0FeiGM6ll7J
|
||||
TazygacM6ez/mBwduAu+cjuu1ZjMbi0nt9KTPHJWrCFBLibQxEi0F47ibfF+
|
||||
rQ/tYgnx0oOubGNcC4BuEQpPft2/5kCLulok1Gtc2Q==
|
||||
DP: |
|
||||
xRNzBAhcOLE51pbYrWt4xBMokTuY/NhJN6IoN+r8dg3jIwBq4H9PtlV+gyqU
|
||||
4mTptKZiNyZa8uvUt0TlB/BgFiwc7MWkFTcJ+TBB1orXC38bTTBLGP1J7B/S
|
||||
MEPveiQjjUHRaBFjS+5BMfcXeOcQ9/FOt1FiuHcvDKWKD85tgYE=
|
||||
F6Z+8iINb5624Z3Ls0SghbWuUJLhKhqHvXibKaJvFV7lTwS1IZtXaDRCxFFz
|
||||
ToZSOFul8OXygXJj3YOCPXd7O5Of3GG2GfpHYEMa534wjUmXOfKsXADNs/L0
|
||||
8chkC/GnkJE86f2OxpYGle0J6DFSalg4AzizRU3MMAPuyUJI4JU=
|
||||
DQ: |
|
||||
euNxPVbXvF/a9HPArd3Fd8BUcm4Fb0Q18W0SYqHdDD4mP7lWjTKHGADix1OX
|
||||
UtqNPyv6NbJ5WnwKg4oqB9zl4Dxu6JyrifBiZ2VxngrLLA0xRKYjxNxMIAgx
|
||||
7PbgQcZ5x45fgNa1QFA31oQnaa2Mvr4PgHqMlK6VIFqEg+ZA/+c=
|
||||
xIuqVMvnOpJ1GuUE2bGZX7ztDurNjRv+d8j5ScxUJHP83wXYSkdiV3iXk7Pn
|
||||
YWJVu2PF3B2qeWfo+Uu4KujOLlHVeRL2HvXdm85cPk2AFtfSZRh9z59+qKfq
|
||||
lICCFFTTkwaXl2ZktLECxIsmu1PDbW+83JrCtiMbnizzq4rrrSk=
|
||||
Exponent: |
|
||||
AQAB
|
||||
InverseQ: |
|
||||
5WZLcyBu4+Mq8aTpVybYh1boPuVyMSvBeCvkedKssUvG8PFhx5Z5vMkvjgpo
|
||||
ckM/etwsOwSLGuDzzUhMFflM1koSi+dwyR0FpRAkTnXeY12xgwbVaiMJot0v
|
||||
e37qFGCMYiDQXu4wjbiR2IJ6YRmSSy3RyBHiMw++y/6vKKQ1jPI=
|
||||
n+ldHK6gx9s9ua0iK65zyeriO5sW+G4jvbDEiOjBOcfBPKvio9jwaBYCMUya
|
||||
awGpzyFiJjVYxHYH6nX9eEaFwvkAEnbMj0veJGcei6zFOjzz0Ils/r1pIZhY
|
||||
djcoZZwvLfxShgOi66DfKHn0A2arX4CKpcIRBTwGigLzDp4DHJY=
|
||||
Modulus: |
|
||||
5OQ4q7/KRkL+yc/QrOysdG0wKlwgzj0VlwfdnvEBfBSjG6bAALQkqWVzUXkk
|
||||
JaHcun6evvaHq7Tc9Aa6xNMgA7oBsfGVpneGMFrjvJzDqi9gjZQUdirfyIDR
|
||||
Hp+F/A4DXQ3CUufnUTv2F+W5ACNOpe8QR9UOBjrJGYzmFS1VvF2wNqy5cNhg
|
||||
CH4lK6fmetKCJn60EWzPahvLPRJbWITvtmky21GQ0JOU87I8n4r288JTVKEW
|
||||
FDtku26iWW67erVUpn21KQvimhWjiuKAjAWEzt97np0GdxNs8fSWq57jTwuT
|
||||
eyEZayHXbHsjp8hNU11aML7mM5IYgRRZGFV3OU+ufw==
|
||||
3f9jG4ay3ep0o/o+y3uA69HD/ZOTvCJTR9rZHsOvC/ByU+gGl46fRzkljwG3
|
||||
W9PqFfLVvHGHcLhZm96G7OH/lrHeIYu1frZDzm1POVZIxBdkVS5fD/x12Yua
|
||||
q9/w3WWZbt6rYBJUM2ZU7sLSb80yy5Kyuvfa8xiIdIrXd5s/HbfBou/eMoRz
|
||||
LZziErp2pd67Tz6vBdmjP8sSMWJ2XZHUvOadKhqENDK24aDJ2I+7RjYoNpVX
|
||||
1kvOsun6aKIu8qYRt0K8cq9lXjADUO3vi1L+Ltl9WHEOi4LN5UdZBHLpxr9Y
|
||||
2p++I2sN4o5w/gsf4jD3r51gYQ7aOtJ6F2UK3umV9w==
|
||||
P: |
|
||||
/B+LD7VSdc2FL61myP2m92eBsOdxzMtb7egh3zGnnRDbUxKE7o97imkL+gx5
|
||||
MtdXvWWZSKnB9dbmkcSxpaLuV6cvHmBPxUmn2W6nlRT025c2F4Zti+fJrUEE
|
||||
GSMKH/Xp+qE5o03+geWPYffFjUugxGJMrmKYpVGxYdRWYSY5xKE=
|
||||
8c5C9eVN8fKuTQbXi7b8VtUbpaEEl5dHAlSIhC1l1UQUryq9PKTnJAKstpp2
|
||||
sYw18WCpMo55OfH+jvOcCQPINaFnwhRjMUxVuknFebGQeS0mZsudOK2Om3am
|
||||
fUwxshwYsLdK+NR/pXQa/vJVrOYlDHxhRACUKyzems2NBv3tvkM=
|
||||
Q: |
|
||||
6Gk6mKRG6huUf7xPHhuFYNdzigZO1Z15XfRmcrNaHwlVhkPofzEQDpj8mI4g
|
||||
RaJIVi1a147vK8B5gcgeGNQ2Ukyhw9j+tjDN9nB9b7mAnZ97+9Q9R5A/rtQF
|
||||
kGFga2AwkNsT2/cXX9HYBi0IqhFoe+URHvJc8ba23O3EQLSlfx8=
|
||||
6wd1hAXZJg7aMvYf0B/G+3+gGAbvGY7FwFc46lMdqiWxJgaEfUtAyB7JdAQz
|
||||
G2O44LOsCH/BVEkkACJPkbGWhjU2GDw71d4I9R3KwOJLTGh8uHZ4foQbbc8e
|
||||
bdIfusBtTRwo6KUTC01zzUgbm6QH9wvibLiO5muvQN1NjPSbwD0=
|
||||
DefaultSpec:
|
||||
AccessControlInfo:
|
||||
AffinityMask: 1
|
||||
@ -186,8 +182,6 @@ DefaultSpec:
|
||||
- RW
|
||||
Text:
|
||||
- STUP_ENTRY
|
||||
Media:
|
||||
MediaType: Card
|
||||
PlainRegion:
|
||||
- .module_id
|
||||
Rom:
|
||||
@ -213,6 +207,7 @@ DefaultSpec:
|
||||
hid: 0x0004013000001d02L
|
||||
http: 0x0004013000002902L
|
||||
i2c: 0x0004013000001e02L
|
||||
ir: 0x0004013000003302L
|
||||
mcu: 0x0004013000001f02L
|
||||
mic: 0x0004013000002002L
|
||||
ndm: 0x0004013000002b02L
|
||||
4
trunk/KENJEraser/Readme.txt
Normal file
4
trunk/KENJEraser/Readme.txt
Normal file
@ -0,0 +1,4 @@
|
||||
■ビルド環境
|
||||
|
||||
Horizon trunk r42202 +
|
||||
trunk r44324 の PersonalDataDeleteTool.desc
|
||||
@ -23,6 +23,7 @@
|
||||
#include <nn/cfg/CTR/cfg_ApiSys.h>
|
||||
#include <nn/fs/CTR/fs_ArchiveTypesForSystem.h>
|
||||
#include <nn/fs/CTR/MPCore/fs_FileSystemBasePrivate.h>
|
||||
#include <nn/nim.h>
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
@ -47,6 +48,10 @@
|
||||
#define WHITE 1.0f, 1.0f, 1.0f
|
||||
#define BLACK 0.0f, 0.0f, 0.0f
|
||||
|
||||
extern "C" void nninitSetupDaemons(void)
|
||||
{
|
||||
}
|
||||
|
||||
namespace {
|
||||
const char* const NAND_TWL_ARCHIVE_NAME = "twln:";
|
||||
const char* const NAND_TWL_KENJ_DIR_PATHNAME = "twln:/title/00030004/4b454e4a";
|
||||
@ -67,18 +72,18 @@ namespace {
|
||||
{
|
||||
SetSeed(seed);
|
||||
}
|
||||
|
||||
|
||||
void SetSeed(u64 seed)
|
||||
{
|
||||
m_x = seed;
|
||||
m_mul = (1566083941LL << 32) + 1812433253LL;
|
||||
m_add = 2531011;
|
||||
}
|
||||
|
||||
|
||||
u32 Get32(u32 max = 0xFFFFFFFFU)
|
||||
{
|
||||
m_x = m_mul * m_x + m_add;
|
||||
|
||||
|
||||
if (max != 0)
|
||||
{
|
||||
return (u32)(((m_x >> 32) * max) >> 32);
|
||||
@ -88,44 +93,58 @@ namespace {
|
||||
};
|
||||
|
||||
nn::Result DeleteKENJ(void);
|
||||
|
||||
|
||||
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;
|
||||
|
||||
bool s_IsAppExist = false;
|
||||
bool s_IsFinish = false;
|
||||
bool s_IsSaveDataCleanSuccess = false;
|
||||
bool s_IsAppDeleteSuccess = false;
|
||||
nn::Result s_result;
|
||||
|
||||
bool s_IsCreditCardExist = false;
|
||||
nn::Result s_KENJResult = nn::ResultSuccess();
|
||||
nn::Result s_CreditCardResult = nn::ResultSuccess();
|
||||
|
||||
// グラフィックスに割り当てるメモリ
|
||||
const size_t s_GxHeapSize = 0x800000;
|
||||
|
||||
|
||||
|
||||
void EraseThreadFunc(void)
|
||||
{
|
||||
// ほぼ日健康手帳を消去する
|
||||
s_result = DeleteKENJ();
|
||||
s_KENJResult = DeleteKENJ();
|
||||
|
||||
// CTR本体のクレジットカード情報を削除する
|
||||
nn::nim::CreditCardInfo info;
|
||||
nn::Result result = nn::nim::Shop::LoadCreditCardFromSystemSaveData(&info);
|
||||
if(result.IsFailure())
|
||||
{
|
||||
s_IsCreditCardExist = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
s_IsCreditCardExist = true;
|
||||
s_CreditCardResult = nn::nim::Shop::DeleteCreditCardOnSystemSaveData();
|
||||
}
|
||||
s_IsFinish = true;
|
||||
}
|
||||
|
||||
|
||||
nn::Result FillRandamDataToKENJSaveData(void)
|
||||
{
|
||||
nn::Result result;
|
||||
nn::fs::FileStream file;
|
||||
s64 file_size;
|
||||
|
||||
|
||||
// セーブデータオープン
|
||||
result = file.TryInitialize( NAND_TWL_KENJ_SAVE_DATA_PATHNAME, nn::fs::OPEN_MODE_WRITE );
|
||||
if( result.IsFailure() )
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// セーブデータファイルのサイズを読む
|
||||
result = file.TryGetSize( &file_size );
|
||||
if( result.IsFailure() )
|
||||
@ -133,24 +152,24 @@ namespace {
|
||||
file.Finalize();
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
nn::fnd::DateTime tm;
|
||||
nn::os::Tick tick;
|
||||
Random rand;
|
||||
u64 seed;
|
||||
s32 sizeResult = 0;
|
||||
|
||||
|
||||
// バッファの確保
|
||||
void *buf = std::malloc( file_size );
|
||||
NN_TPANIC_IF_NULL_( buf );
|
||||
|
||||
|
||||
// 乱数のシードを設定
|
||||
nn::fnd::DateTimeParameters param = tm.GetNow().GetParameters();
|
||||
seed = tm.DateToDays( param.year, param.month, param.day );
|
||||
seed = (u64)(seed * 86400 + param.hour * 3600 + param.minute * 60 + param.second);
|
||||
seed = (u64)(seed ^ tick.GetSystemCurrent());
|
||||
rand.SetSeed( seed );
|
||||
|
||||
|
||||
// バッファを乱数で埋める
|
||||
u8 *p = (u8 *)buf;
|
||||
for (s32 loopSizeFile = 0; loopSizeFile < file_size; loopSizeFile++)
|
||||
@ -160,17 +179,17 @@ namespace {
|
||||
|
||||
// 書き込み
|
||||
result = file.TryWrite(&sizeResult, buf, file_size);
|
||||
|
||||
|
||||
file.Finalize();
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
nn::Result DeleteKENJ(void)
|
||||
{
|
||||
nn::Result result;
|
||||
|
||||
|
||||
// TWl領域をマウントする
|
||||
result = nn::fs::MountSpecialArchive( NAND_TWL_ARCHIVE_NAME, nn::fs::CTR::ARCHIVE_TYPE_TWL_NAND );
|
||||
if( result.IsFailure() )
|
||||
@ -178,7 +197,7 @@ namespace {
|
||||
NN_LOG("Twl NAND Mount Failed...\n");
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// アプリが存在するかどうか確かめる
|
||||
nn::fs::Directory dir;
|
||||
if( dir.TryInitialize(NAND_TWL_KENJ_DIR_PATHNAME).IsFailure() )
|
||||
@ -189,10 +208,10 @@ namespace {
|
||||
{
|
||||
// アプリ存在フラグを上げる
|
||||
s_IsAppExist = true;
|
||||
|
||||
|
||||
// ここでfinalizeしておかないと、DeleteProgramでフェータルになる。
|
||||
dir.Finalize();
|
||||
|
||||
|
||||
// ほぼ日健康手帳のセーブデータを乱数で埋める
|
||||
result = FillRandamDataToKENJSaveData();
|
||||
if( result.IsFailure() )
|
||||
@ -204,23 +223,23 @@ namespace {
|
||||
{
|
||||
s_IsSaveDataCleanSuccess = true;
|
||||
}
|
||||
|
||||
|
||||
// ほぼ日健康手帳を消す
|
||||
result = nn::am::DeleteUserProgram(nn::fs::MEDIA_TYPE_NAND, NAND_TWL_KENJ_PROGRAM_ID);
|
||||
if( result.IsSuccess() )
|
||||
{
|
||||
s_IsAppDeleteSuccess = true;
|
||||
}
|
||||
|
||||
|
||||
UTIL_RETURN_IF_NOT_AM_NOT_FOUND(result);
|
||||
}
|
||||
|
||||
|
||||
nn::fs::Unmount( "twln:" );
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void DrawResultText()
|
||||
{
|
||||
s_RenderSystem.SetFontSize(8.0f);
|
||||
@ -230,7 +249,9 @@ namespace {
|
||||
s_RenderSystem.SetColor( WHITE );
|
||||
s_RenderSystem.DrawText(10.0f, 60.0f, "Initialcode : KENJ");
|
||||
|
||||
if( s_result.IsSuccess() )
|
||||
s_RenderSystem.DrawText(10.0f, 180.0f, "Credit Card :");
|
||||
|
||||
if( s_KENJResult.IsSuccess() )
|
||||
{
|
||||
if( s_IsAppExist )
|
||||
{
|
||||
@ -248,6 +269,7 @@ namespace {
|
||||
s_RenderSystem.SetColor( GREEN );
|
||||
s_RenderSystem.DrawText(130.0f, 135.0f, "cleanup succeeded");
|
||||
s_RenderSystem.DrawText(130.0f, 150.0f, "cleanup succeeded");
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -261,7 +283,7 @@ namespace {
|
||||
s_RenderSystem.DrawText(10.0f, 120.0f, "Private Save :");
|
||||
s_RenderSystem.DrawText(10.0f, 135.0f, "Public Save :");
|
||||
s_RenderSystem.DrawText(10.0f, 150.0f, "application :");
|
||||
|
||||
|
||||
s_RenderSystem.SetColor( YELLOW );
|
||||
s_RenderSystem.DrawText(130.0f, 120.0f, "not existed");
|
||||
|
||||
@ -301,7 +323,44 @@ namespace {
|
||||
s_RenderSystem.DrawText(130.0f, 150.0f, "cleanup failed");
|
||||
}
|
||||
}
|
||||
|
||||
if (s_IsCreditCardExist)
|
||||
{
|
||||
if (s_CreditCardResult.IsSuccess())
|
||||
{
|
||||
s_RenderSystem.SetColor(GREEN);
|
||||
s_RenderSystem.DrawText(130.0f, 180.0f, "cleanup succeeded");
|
||||
}
|
||||
else
|
||||
{
|
||||
s_RenderSystem.SetColor(RED);
|
||||
s_RenderSystem.DrawText(130.0f, 180.0f, "cleanup failed");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
s_RenderSystem.SetColor(YELLOW);
|
||||
s_RenderSystem.DrawText(130.0f, 180.0f, "data not found");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void DrawKENJResultUpper(const f32 red, const f32 green, const f32 blue)
|
||||
{
|
||||
s_RenderSystem.SetColor(red, green, blue);
|
||||
s_RenderSystem.FillRectangle(0, 0, NN_GX_DISPLAY0_HEIGHT, NN_GX_DISPLAY0_WIDTH / 2);
|
||||
s_RenderSystem.SetColor(BLACK);
|
||||
s_RenderSystem.DrawText(0, 0, "KENJ Result");
|
||||
}
|
||||
|
||||
void DrawCreditCardResultUpper(const f32 red, const f32 green, const f32 blue)
|
||||
{
|
||||
s_RenderSystem.SetColor(red, green, blue);
|
||||
s_RenderSystem.FillRectangle(0, NN_GX_DISPLAY0_WIDTH / 2, NN_GX_DISPLAY0_HEIGHT, NN_GX_DISPLAY0_WIDTH / 2);
|
||||
s_RenderSystem.SetColor(BLACK);
|
||||
s_RenderSystem.DrawText(0, NN_GX_DISPLAY0_WIDTH / 2, "Credit Card Result");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extern "C" void nnMain(void)
|
||||
@ -315,16 +374,15 @@ extern "C" void nnMain(void)
|
||||
// appletの初期化
|
||||
nn::applet::Enable( false );
|
||||
|
||||
// hid の初期化
|
||||
nn::Result result = nn::hid::Initialize();
|
||||
NN_UTIL_PANIC_IF_FAILED(result);
|
||||
|
||||
// cfg の初期化
|
||||
nn::cfg::CTR::Initialize();
|
||||
|
||||
// am の初期化
|
||||
nn::am::InitializeForSystemMenu();
|
||||
|
||||
// nimの初期化
|
||||
nn::nim::InitializeForShop();
|
||||
|
||||
// ヒープの確保
|
||||
common::HeapManager::GetHeap()->Initialize(nn::os::GetDeviceMemoryAddress(), nn::os::GetDeviceMemorySize(), nn::os::ALLOCATE_OPTION_LINEAR);
|
||||
|
||||
@ -349,33 +407,51 @@ extern "C" void nnMain(void)
|
||||
s_RenderSystem.Clear();
|
||||
|
||||
// 上画面の色変更
|
||||
if( s_result.IsSuccess() )
|
||||
// ほぼ日健康手帳の結果
|
||||
if( s_KENJResult.IsSuccess() )
|
||||
{
|
||||
if( !s_IsAppExist )
|
||||
{
|
||||
s_RenderSystem.SetClearColor(NN_GX_DISPLAY0, YELLOW, 0);
|
||||
DrawKENJResultUpper(YELLOW);
|
||||
}
|
||||
else
|
||||
{
|
||||
s_RenderSystem.SetClearColor(NN_GX_DISPLAY0, GREEN, 0);
|
||||
DrawKENJResultUpper(GREEN);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
s_RenderSystem.SetClearColor(NN_GX_DISPLAY0, RED, 0);
|
||||
DrawKENJResultUpper(RED);
|
||||
}
|
||||
|
||||
// クレジットカードの結果
|
||||
if (!s_IsCreditCardExist)
|
||||
{
|
||||
DrawCreditCardResultUpper(YELLOW);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (s_CreditCardResult.IsSuccess())
|
||||
{
|
||||
|
||||
DrawCreditCardResultUpper(GREEN);
|
||||
}
|
||||
else
|
||||
{
|
||||
DrawCreditCardResultUpper(RED);
|
||||
}
|
||||
}
|
||||
|
||||
// バッファへ
|
||||
s_RenderSystem.SwapBuffers();
|
||||
|
||||
|
||||
// 初期化
|
||||
s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY1);
|
||||
s_RenderSystem.Clear();
|
||||
|
||||
|
||||
// 変更
|
||||
DrawResultText();
|
||||
common::DrawResFont(NN_GX_DISPLAY1);
|
||||
|
||||
|
||||
// バッファへ
|
||||
s_RenderSystem.SwapBuffers();
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user