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@665 385bec56-5757-e545-9c3a-d8741f4650f1
146 lines
4.3 KiB
C++
146 lines
4.3 KiB
C++
|
||
#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();
|
||
}
|
||
|
||
|