ctr_Repair/trunk/SkipFirstLaunch/syokaikidou.cpp
N2614 70f75a8afb cfg,nor,acの設定をYボタンでセーブデータに保存、無入力で書き込みできるように
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@653 385bec56-5757-e545-9c3a-d8741f4650f1
2012-02-23 04:42:48 +00:00

122 lines
3.8 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 "IDB.h"
#include "IDBi.h"
#include "IDBUT.h"
#include "HeapManager.h"
#include "syokaikidou.h"
namespace System
{
nn::cfg::CfgRegionCode getRegion()
{
return nn::cfg::GetRegion();
}
nn::cfg::CfgLanguageCode getCfgLanguage()
{
return nn::cfg::GetLanguage();
}
}
//==========================================================================
// 初回起動時処理
//==========================================================================
void fnc_1st_setting()
{
sys::SharedExtSaveData::deleteData();
sys::SharedExtSaveData::createData();
// IDBの初期化
{
u32 size = IDB_GetBufferSize();
common::HeapManager heap(size);
void* buf = heap.GetAddr();
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] );
NN_DBG_PRINT_RESULT( result );
if( result.IsFailure() )
{
continue; // 開発中のみciaを入れていなかったら失敗
}
// アイコンバナーヘッダが取れたらROMヘッダ情報も取れるバージョン情報取得
result = nn::am::GetProgramInfos( &pinfo, nn::fs::MEDIA_TYPE_NAND, &pids[i], 1 );
//NN_DBG_PRINT_RESULT( 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();
}
}
//==========================================================================
// 初回起動時処理2
//==========================================================================
void fnc_starting_set()
{
// プレイ履歴クリア
nn::pl::CTR::ClearPlayHistory();
// 歩数クリア
nn::pl::CTR::ClearStepHistory();
sys::UserInfoAccessor::setFirstAll( true );
sys::UserInfoAccessor::setBossTask();
// 初回起動フラグはバックアップデータから書き込む
//sys::UserInfoAccessor::saveFirstInfo( 1, net );
// cfg 情報送信のタスク登録
sys::UserInfoAccessor::setBossSendInfoTaskFirst();
}