diff --git a/trunk/SkipFirstLaunch/OMakefile.omc b/trunk/SkipFirstLaunch/OMakefile.omc deleted file mode 100644 index 8d1c36a..0000000 Binary files a/trunk/SkipFirstLaunch/OMakefile.omc and /dev/null differ diff --git a/trunk/SkipFirstLaunch/StateManager.cpp b/trunk/SkipFirstLaunch/StateManager.cpp index 3286356..10e7731 100644 --- a/trunk/SkipFirstLaunch/StateManager.cpp +++ b/trunk/SkipFirstLaunch/StateManager.cpp @@ -71,7 +71,7 @@ void ImportToBackup() void ApplyBackuptoCfg() { - NN_LOG("Set SaveData"); + NN_LOG("Set SaveData\n"); CfgChanger changer; STATE_MANAGER_SET_RESULT_RETURN_VOID_IF_FAILED( changer.RestoreFromBackup() @@ -80,8 +80,14 @@ void ApplyBackuptoCfg() STATE_MANAGER_SET_RESULT_RETURN_VOID_IF_FAILED( nn::news::CTR::boss::Initialize() ); - fnc_1st_setting(); - fnc_starting_set(); + + STATE_MANAGER_SET_RESULT_RETURN_VOID_IF_FAILED( + fnc_1st_setting() + ); + + STATE_MANAGER_SET_RESULT_RETURN_VOID_IF_FAILED( + fnc_starting_set() + ); } } diff --git a/trunk/SkipFirstLaunch/syokaikidou.cpp b/trunk/SkipFirstLaunch/syokaikidou.cpp index 8b5757e..9ebb193 100644 --- a/trunk/SkipFirstLaunch/syokaikidou.cpp +++ b/trunk/SkipFirstLaunch/syokaikidou.cpp @@ -37,11 +37,18 @@ nn::cfg::CfgCountryCode getCfgCountryCode() //========================================================================== // 初回起動時処理 //========================================================================== -void fnc_1st_setting() +nn::Result fnc_1st_setting() { - sys::SharedExtSaveData::deleteData(); - sys::SharedExtSaveData::createData(); + NN_UTIL_RETURN_IF_FAILED( + sys::SharedExtSaveData::deleteData() + ); + NN_UTIL_RETURN_IF_FAILED( + sys::SharedExtSaveData::createData() + ); + NN_UTIL_RETURN_IF_FAILED( + nn::am::InitializeForSystemMenu() + ); // IDBの初期化 { u32 size = IDB_GetBufferSize(); @@ -71,7 +78,6 @@ void fnc_1st_setting() // アイコンバナーヘッダ取得 result = nn::fs::CTR::GetSystemMenuData( &sysMenuData, nn::fs::MEDIA_TYPE_NAND, pids[i] ); - NN_DBG_PRINT_RESULT( result ); if( result.IsFailure() ) { continue; // 開発中のみciaを入れていなかったら失敗 @@ -79,7 +85,7 @@ void fnc_1st_setting() // アイコンバナーヘッダが取れたらROMヘッダ情報も取れる(バージョン情報取得) result = nn::am::GetProgramInfos( &pinfo, nn::fs::MEDIA_TYPE_NAND, &pids[i], 1 ); - //NN_DBG_PRINT_RESULT( result ); + NN_UTIL_RETURN_IF_FAILED(result); IDBUT_InitIcon( &idbIcon ); idbKey.programID = pids[i]; @@ -101,12 +107,18 @@ void fnc_1st_setting() IDB_Finalize(); } + + NN_UTIL_RETURN_IF_FAILED( + nn::am::InitializeForSystemMenu() + ); + + return nn::ResultSuccess(); } //========================================================================== // 初回起動時処理2 //========================================================================== -void fnc_starting_set() +nn::Result fnc_starting_set() { // プレイ履歴クリア nn::pl::CTR::ClearPlayHistory(); @@ -116,13 +128,19 @@ void fnc_starting_set() sys::UserInfoAccessor::setFirstAll( true ); - sys::UserInfoAccessor::setBossTask(); + NN_UTIL_RETURN_IF_FAILED( + sys::UserInfoAccessor::setBossTask() + ); // 初回起動フラグはバックアップデータから書き込む //sys::UserInfoAccessor::saveFirstInfo( 1, net ); // cfg 情報送信のタスク登録 - sys::UserInfoAccessor::setBossSendInfoTaskFirst(); + NN_UTIL_RETURN_IF_FAILED( + sys::UserInfoAccessor::setBossSendInfoTaskFirst() + ); + + return nn::ResultSuccess(); } diff --git a/trunk/SkipFirstLaunch/syokaikidou.h b/trunk/SkipFirstLaunch/syokaikidou.h index 8cdd9a7..a7bcafa 100644 --- a/trunk/SkipFirstLaunch/syokaikidou.h +++ b/trunk/SkipFirstLaunch/syokaikidou.h @@ -16,10 +16,11 @@ #ifndef SYOKAIKIDOU_H_ #define SYOKAIKIDOU_H_ +#include #include -void fnc_1st_setting(); -void fnc_starting_set(); +nn::Result fnc_1st_setting(); +nn::Result fnc_starting_set(); namespace System { diff --git a/trunk/SkipFirstLaunch/sysFile.cpp b/trunk/SkipFirstLaunch/sysFile.cpp index 08d5f03..24deea2 100644 --- a/trunk/SkipFirstLaunch/sysFile.cpp +++ b/trunk/SkipFirstLaunch/sysFile.cpp @@ -10,6 +10,7 @@ #include #include #include +#include "HeapManager.h" namespace sys { @@ -96,8 +97,7 @@ u8* File::read( const wchar_t* fileName, u32* size, bool device, bool prefix ) } *size = static_cast( fileSize ); - //if( device ) buffer = new( Mem::getDeviceHeap(), sys::cDefaultDeviceAlignment ) u8[ *size ]; - //else buffer = new( Mem::getMainHeap() ) u8[ *size ]; + buffer = reinterpret_cast(common::ForceAllocate(*size)); if( buffer == NULL ) { @@ -111,7 +111,7 @@ u8* File::read( const wchar_t* fileName, u32* size, bool device, bool prefix ) { debug_print_(); fileReader.Finalize(); - delete buffer; + common::ForceFree(buffer); return NULL; } @@ -169,7 +169,7 @@ u8* File::mountShare( const char* name, nn::ProgramId tit_id, int data_num, int */ void File::initializeMsetSys() { -nn::Result result = nn::fs::MountSystemSaveData( mMsetSysArcName, getMsetSaveDataId() ); + nn::Result result = nn::fs::MountSystemSaveData( mMsetSysArcName, getMsetSaveDataId() ); NN_DBG_PRINT_RESULT( result ); @@ -522,7 +522,7 @@ u8* pTmp = NULL; { // 管理ファイルが読み込めた std::memcpy( pSaveData, pTmp, size ); - delete[] pTmp; + common::ForceFree(pTmp); } } diff --git a/trunk/SkipFirstLaunch/sysInput.cpp b/trunk/SkipFirstLaunch/sysInput.cpp index 576c44d..1b3da52 100644 --- a/trunk/SkipFirstLaunch/sysInput.cpp +++ b/trunk/SkipFirstLaunch/sysInput.cpp @@ -197,7 +197,8 @@ bool Input::isButtonHold( u16 button ) */ f32 Input::getSvr2Volume() { - return smpPadReaderWithSvr2->GetSvr2Volume(); + return 0; + //return smpPadReaderWithSvr2->GetSvr2Volume(); } /* diff --git a/trunk/SkipFirstLaunch/sysSharedExtSaveData.cpp b/trunk/SkipFirstLaunch/sysSharedExtSaveData.cpp index cdee6a5..f3f689a 100644 --- a/trunk/SkipFirstLaunch/sysSharedExtSaveData.cpp +++ b/trunk/SkipFirstLaunch/sysSharedExtSaveData.cpp @@ -167,7 +167,7 @@ namespace sys } } - void SharedExtSaveData::createData() + nn::Result SharedExtSaveData::createData() { //refreshLimitSize(); // QueryTotalQuotaSize を計算する @@ -185,17 +185,21 @@ namespace sys { NN_LOG( "result = %d %d %d\n" , res.GetLevel() , res.GetSummary() , res.GetModule() ); } + NN_UTIL_RETURN_IF_FAILED(res); } + return nn::ResultSuccess(); } - void SharedExtSaveData::deleteData() + nn::Result SharedExtSaveData::deleteData() { nn::Result res; for ( int i=0; i +#include namespace sys { @@ -26,12 +27,12 @@ namespace sys static const bit32 cPnoteMPPoto = 0xF0000001; // PNOTEのMP画像(写真) static const bit32 cSnoteSound = 0xF0000002; // SNOTEのAACデータ(音声) - static const bit32 cNewsBossData = 0xF0000009; // おしらせBOSSデータ 7168KB 128 8 拡張セーブデータでした + static const bit32 cNewsBossData = 0xF0000009; // おしらせBOSSデータ 7168KB 128 8 拡張セーブデータでした static const bit32 cCommonData = 0xF000000B; // 汎用データ static const bit32 cBashotorya = 0xF000000C; // バショトリャー - static void createData(); - static void deleteData(); + static nn::Result createData(); + static nn::Result deleteData(); static void checkData(); static void refreshLimitSize(); diff --git a/trunk/SkipFirstLaunch/sysUserInfoAccessor.cpp b/trunk/SkipFirstLaunch/sysUserInfoAccessor.cpp index 6065821..edbd778 100644 --- a/trunk/SkipFirstLaunch/sysUserInfoAccessor.cpp +++ b/trunk/SkipFirstLaunch/sysUserInfoAccessor.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #ifndef NW_RELEASE //#include "sceneDebugLayout.h" @@ -2030,18 +2031,34 @@ void UserInfoAccessor::loadEula() //========================================================================== // bossタスクセット //========================================================================== -void UserInfoAccessor::setBossTask() +nn::Result UserInfoAccessor::setBossTask() { if( msFirstInfo.mmen != 0 ) // 初回起動のときセットしない { const char* lang = nn::cfg::CTR::GetLanguageCodeA2( (nn::cfg::CTR::CfgLanguageCode)System::getCfgLanguage() ); + if(!lang) + { + return nn::MakeStatusResult(nn::Result::SUMMARY_INVALID_STATE, nn::Result::MODULE_APPLICATION, nn::Result::DESCRIPTION_INVALID_RESULT_VALUE); + } const char* country = nn::cfg::CTR::GetCountryCodeA2( (nn::cfg::CTR::CfgCountryCode)( System::getCfgCountryCode())); + if(!country) + { + return nn::MakeStatusResult(nn::Result::SUMMARY_INVALID_STATE, nn::Result::MODULE_APPLICATION, nn::Result::DESCRIPTION_INVALID_RESULT_VALUE); + } const char* boss_code = nn::news::CTR::boss::GetBossCodeA3( (nn::cfg::CTR::CfgRegionCode)System::getRegion() ); + if(!boss_code) + { + return nn::MakeStatusResult(nn::Result::SUMMARY_INVALID_STATE, nn::Result::MODULE_APPLICATION, nn::Result::DESCRIPTION_INVALID_RESULT_VALUE); + } - nn::news::CTR::boss::RegisterSystemTask( boss_code, country, lang ); + NN_UTIL_RETURN_IF_FAILED( + nn::news::CTR::boss::RegisterSystemTask( boss_code, country, lang ) + ); NN_LOG( "Boss Task Set\n" ); } + + return nn::ResultSuccess(); } @@ -2073,23 +2090,34 @@ void UserInfoAccessor::setBossSendInfoTask() set_boss_send_info_task_(); } -void UserInfoAccessor::setBossSendInfoTaskFirst() +nn::Result UserInfoAccessor::setBossSendInfoTaskFirst() { // 初回起動シーケンスのときは EULA に同意していたらセットする - if( !isEula() ) + // EULAはCFGから取得する + using namespace nn::cfg::detail; + nn::cfg::system::Initialize(); + EulaInfoCfgData eulaInfo; + NN_UTIL_RETURN_IF_FAILED( + nn::cfg::system::GetConfig(&eulaInfo, sizeof(EulaInfoCfgData), GET_CFG_KEY(NN_CFG_EULA, NN_CFG_EULA_INFO)) + ); + nn::cfg::system::Finalize(); + + if(!eulaInfo.agreeVersion.version > 0) { - return; + return nn::ResultSuccess(); } if( !save_boss_send_info_() ) { // 更新がなかったので情報は送信しない NN_LOG("no change send boss info\n"); - return; + return nn::ResultSuccess(); } // タスクの登録 set_boss_send_info_task_(); + + return nn::ResultSuccess(); } void UserInfoAccessor::set_boss_send_info_task_() @@ -2190,7 +2218,7 @@ size_t readDataSize = 0; result = action.AddHeaderField( "X-Boss-Digest", setSha1Hash ); delete[] readDataSha1; - delete[] readData; + common::ForceFree(readData); NN_RESULT_ASSERT( result ); } diff --git a/trunk/SkipFirstLaunch/sysUserInfoAccessor.h b/trunk/SkipFirstLaunch/sysUserInfoAccessor.h index 700adfd..4d89c5e 100644 --- a/trunk/SkipFirstLaunch/sysUserInfoAccessor.h +++ b/trunk/SkipFirstLaunch/sysUserInfoAccessor.h @@ -237,9 +237,9 @@ public: static int checkEula(); // EULAの情報を調べる static void loadEula(); - static void setBossTask(); + static nn::Result setBossTask(); static void setBossSendInfoTask(); - static void setBossSendInfoTaskFirst(); + static nn::Result setBossSendInfoTaskFirst(); static void saveBossSendInfoTaskOptoutFlag( bool optout ); static bool checkUpdateBossSendInfo( BossSendInfo* pSaveData ); static void getAnalogData( nn::cfg::CTR::detail::AnalogStickCfgData* para, int flg = 0 );