ローカル保存されたクレジットカード情報を消去するように

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:
N2614 2011-11-14 09:37:49 +00:00
parent 31a210c020
commit 6a79efcb66
5 changed files with 169 additions and 119 deletions

View File

@ -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 に含めるファイルシステムのルートパスを指定します。

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,4 @@
■ビルド環境
Horizon trunk r42202 +
trunk r44324 の PersonalDataDeleteTool.desc

View File

@ -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();
}