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