ctr_Repair/trunk/SkipFirstLaunch/syokaikidou.cpp
N2614 57bec8362f MSETのヒープ管理ライブラリを使うように
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@665 385bec56-5757-e545-9c3a-d8741f4650f1
2012-03-15 06:26:23 +00:00

146 lines
4.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <nn/fs.h>
#include <nn/fs/CTR/fs_ApiSystemMenu.h>
#include <nn/am.h>
#include <nn/CTR/CTR_SystemMenuData.h>
#include <nn/pl/CTR/pl_PlayHistoryApiSysmenu.h>
#include <nn/pl/CTR/pl_PedometerApiSys.h>
#include "sysSharedExtSaveData.h"
#include "sysUserInfoAccessor.h"
#include "sysHeap.h"
#include "IDB.h"
#include "IDBi.h"
#include "IDBUT.h"
#include "syokaikidou.h"
namespace System
{
nn::cfg::CfgRegionCode getRegion()
{
return nn::cfg::GetRegion();
}
nn::cfg::CfgLanguageCode getCfgLanguage()
{
return nn::cfg::GetLanguage();
}
nn::cfg::CfgCountryCode getCfgCountryCode()
{
return nn::cfg::GetCountry();
}
}
//==========================================================================
// 初回起動時処理
//==========================================================================
nn::Result fnc_1st_setting()
{
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();
NN_LOG("idbBufferSize = %d\n", size);
u8* buf = new( sys::Mem::getMainHeap() ) u8[size];
NN_ASSERT(buf);
IDB_Initialize( reinterpret_cast<u8*>(buf), false, false );
// MSETとPNOTEのアイコンを特別にIDBに登録
{
nn::Result result;
IDB_Icon idbIcon;
IDB_Key idbKey;
nn::CTR::SystemMenuData sysMenuData; // これが4KB弱でIDBも喰うのでスレッドスタック16KBでは不足
nn::am::ProgramInfo pinfo;
nn::ProgramId pids[2] =
{
sys::UserInfoAccessor::getMsetPid(),
sys::UserInfoAccessor::getPnotePid()
};
for( int i = 0; i < 2; i++ )
{
BOOL bret;
// アイコンバナーヘッダ取得
result = nn::fs::CTR::GetSystemMenuData( &sysMenuData, nn::fs::MEDIA_TYPE_NAND, pids[i] );
if( result.IsFailure() )
{
continue; // 開発中のみciaを入れていなかったら失敗
}
// アイコンバナーヘッダが取れたらROMヘッダ情報も取れるバージョン情報取得
result = nn::am::GetProgramInfos( &pinfo, nn::fs::MEDIA_TYPE_NAND, &pids[i], 1 );
NN_UTIL_RETURN_IF_FAILED(result);
IDBUT_InitIcon( &idbIcon );
idbKey.programID = pids[i];
idbKey.remasterVersion = static_cast<s32>( pinfo.version );
IDBUT_GetIconFromSystemMenuData( &idbIcon, &idbKey, &sysMenuData );
bret = IDBi_Update( &idbIcon, IDBi_DIVISION_OWNER ); // アイコンをIDBに登録
if( bret )
{
NN_LOG( "IDB Registration : PID=%llx, VERSION=%04x\n", idbKey.programID, idbKey.remasterVersion );
}
else
{
NN_LOG( "IDB registration failed!\n" );
}
}
}
IDB_Finalize();
}
NN_UTIL_RETURN_IF_FAILED(
nn::am::InitializeForSystemMenu()
);
return nn::ResultSuccess();
}
//==========================================================================
// 初回起動時処理2
//==========================================================================
nn::Result fnc_starting_set()
{
// プレイ履歴クリア
nn::pl::CTR::ClearPlayHistory();
// 歩数クリア
nn::pl::CTR::ClearStepHistory();
sys::UserInfoAccessor::setFirstAll( true );
NN_UTIL_RETURN_IF_FAILED(
sys::UserInfoAccessor::setBossTask()
);
// 初回起動フラグはバックアップデータから書き込む
//sys::UserInfoAccessor::saveFirstInfo( 1, net );
// cfg 情報送信のタスク登録
NN_UTIL_RETURN_IF_FAILED(
sys::UserInfoAccessor::setBossSendInfoTaskFirst()
);
return nn::ResultSuccess();
}