116 lines
4.4 KiB
C++
116 lines
4.4 KiB
C++
/**
|
|
******************************************************************************
|
|
* Xenia : Xbox 360 Emulator Research Project *
|
|
******************************************************************************
|
|
* Copyright 2014 Ben Vanik. All rights reserved. *
|
|
* Released under the BSD license - see LICENSE in the root for more details. *
|
|
******************************************************************************
|
|
*/
|
|
|
|
#include "xenia/kernel/xam/user_profile.h"
|
|
|
|
namespace xe {
|
|
namespace kernel {
|
|
namespace xam {
|
|
|
|
UserProfile::UserProfile() {
|
|
xuid_ = 0xBABEBABEBABEBABE;
|
|
name_ = "User";
|
|
|
|
// http://cs.rin.ru/forum/viewtopic.php?f=38&t=60668&hilit=gfwl+live&start=195
|
|
// https://github.com/arkem/py360/blob/master/py360/constants.py
|
|
// XPROFILE_GAMER_YAXIS_INVERSION
|
|
AddSetting(std::make_unique<Int32Setting>(0x10040002, 0));
|
|
// XPROFILE_OPTION_CONTROLLER_VIBRATION
|
|
AddSetting(std::make_unique<Int32Setting>(0x10040003, 3));
|
|
// XPROFILE_GAMERCARD_ZONE
|
|
AddSetting(std::make_unique<Int32Setting>(0x10040004, 0));
|
|
// XPROFILE_GAMERCARD_REGION
|
|
AddSetting(std::make_unique<Int32Setting>(0x10040005, 0));
|
|
// XPROFILE_GAMERCARD_CRED
|
|
AddSetting(std::make_unique<Int32Setting>(0x10040006, 0xFA));
|
|
// XPROFILE_GAMERCARD_REP
|
|
AddSetting(std::make_unique<FloatSetting>(0x5004000B, 0.0f));
|
|
// XPROFILE_OPTION_VOICE_MUTED
|
|
AddSetting(std::make_unique<Int32Setting>(0x1004000C, 0));
|
|
// XPROFILE_OPTION_VOICE_THRU_SPEAKERS
|
|
AddSetting(std::make_unique<Int32Setting>(0x1004000D, 0));
|
|
// XPROFILE_OPTION_VOICE_VOLUME
|
|
AddSetting(std::make_unique<Int32Setting>(0x1004000E, 0x64));
|
|
// XPROFILE_GAMERCARD_MOTTO
|
|
AddSetting(std::make_unique<UnicodeSetting>(0x402C0011, L""));
|
|
// XPROFILE_GAMERCARD_TITLES_PLAYED
|
|
AddSetting(std::make_unique<Int32Setting>(0x10040012, 1));
|
|
// XPROFILE_GAMERCARD_ACHIEVEMENTS_EARNED
|
|
AddSetting(std::make_unique<Int32Setting>(0x10040013, 0));
|
|
// XPROFILE_GAMER_DIFFICULTY
|
|
AddSetting(std::make_unique<Int32Setting>(0x10040015, 0));
|
|
// XPROFILE_GAMER_CONTROL_SENSITIVITY
|
|
AddSetting(std::make_unique<Int32Setting>(0x10040018, 0));
|
|
// Preferred color 1
|
|
AddSetting(std::make_unique<Int32Setting>(0x1004001D, 0xFFFF0000u));
|
|
// Preferred color 2
|
|
AddSetting(std::make_unique<Int32Setting>(0x1004001E, 0xFF00FF00u));
|
|
// XPROFILE_GAMER_ACTION_AUTO_AIM
|
|
AddSetting(std::make_unique<Int32Setting>(0x10040022, 1));
|
|
// XPROFILE_GAMER_ACTION_AUTO_CENTER
|
|
AddSetting(std::make_unique<Int32Setting>(0x10040023, 0));
|
|
// XPROFILE_GAMER_ACTION_MOVEMENT_CONTROL
|
|
AddSetting(std::make_unique<Int32Setting>(0x10040024, 0));
|
|
// XPROFILE_GAMER_RACE_TRANSMISSION
|
|
AddSetting(std::make_unique<Int32Setting>(0x10040026, 0));
|
|
// XPROFILE_GAMER_RACE_CAMERA_LOCATION
|
|
AddSetting(std::make_unique<Int32Setting>(0x10040027, 0));
|
|
// XPROFILE_GAMER_RACE_BRAKE_CONTROL
|
|
AddSetting(std::make_unique<Int32Setting>(0x10040028, 0));
|
|
// XPROFILE_GAMER_RACE_ACCELERATOR_CONTROL
|
|
AddSetting(std::make_unique<Int32Setting>(0x10040029, 0));
|
|
// XPROFILE_GAMERCARD_TITLE_CRED_EARNED
|
|
AddSetting(std::make_unique<Int32Setting>(0x10040038, 0));
|
|
// XPROFILE_GAMERCARD_TITLE_ACHIEVEMENTS_EARNED
|
|
AddSetting(std::make_unique<Int32Setting>(0x10040039, 0));
|
|
|
|
// If we set this, games will try to get it.
|
|
// XPROFILE_GAMERCARD_PICTURE_KEY
|
|
AddSetting(
|
|
std::make_unique<UnicodeSetting>(0x4064000F, L"gamercard_picture_key"));
|
|
|
|
// XPROFILE_TITLE_SPECIFIC1
|
|
AddSetting(std::make_unique<BinarySetting>(0x63E83FFF));
|
|
// XPROFILE_TITLE_SPECIFIC2
|
|
AddSetting(std::make_unique<BinarySetting>(0x63E83FFE));
|
|
// XPROFILE_TITLE_SPECIFIC3
|
|
AddSetting(std::make_unique<BinarySetting>(0x63E83FFD));
|
|
}
|
|
|
|
void UserProfile::AddSetting(std::unique_ptr<Setting> setting) {
|
|
Setting* previous_setting = setting.get();
|
|
std::swap(settings_[setting->setting_id], previous_setting);
|
|
|
|
if (previous_setting) {
|
|
// replace: swap out the old setting from the owning list
|
|
for (auto vec_it = setting_list_.begin(); vec_it != setting_list_.end();
|
|
++vec_it) {
|
|
if (vec_it->get() == previous_setting) {
|
|
vec_it->swap(setting);
|
|
break;
|
|
}
|
|
}
|
|
} else {
|
|
// new setting: add to the owning list
|
|
setting_list_.push_back(std::move(setting));
|
|
}
|
|
}
|
|
|
|
UserProfile::Setting* UserProfile::GetSetting(uint32_t setting_id) {
|
|
const auto& it = settings_.find(setting_id);
|
|
if (it == settings_.end()) {
|
|
return nullptr;
|
|
}
|
|
return it->second;
|
|
}
|
|
|
|
} // namespace xam
|
|
} // namespace kernel
|
|
} // namespace xe
|