[XBOXKRNL/XCONFIG] - Properly set PC values

- Adding PC Related flags
- set correct size of XCONFIG_USER_PC_HINT
This commit is contained in:
The-Little-Wolf 2025-07-22 18:14:35 -07:00
parent 01d46c20ff
commit 248d0a4eda
2 changed files with 160 additions and 9 deletions

View File

@ -139,7 +139,10 @@ X_STATUS xeExGetXConfigSetting(X_CONFIG_CATEGORY category, uint16_t setting,
break;
case XCONFIG_USER_PC_FLAGS:
setting_size = 1;
value[0] = static_cast<uint8_t>(0);
// All related flags must be set for PC to function
// Both flags set even when PC are off
value[0] =
X_PC_FLAGS::XBLAllowed | X_PC_FLAGS::XBLMembershipCreationAllowed;
break;
case XCONFIG_USER_AV_COMPONENT_SCREENSZ:
setting_size = 4;
@ -165,9 +168,74 @@ X_STATUS xeExGetXConfigSetting(X_CONFIG_CATEGORY category, uint16_t setting,
xe::store_and_swap<int32_t>(value, 0);
}
break;
case XCONFIG_USER_PC_GAME:
setting_size = 4;
xe::store_and_swap<uint32_t>(value,
X_PC_GAMES_FLAGS::NoGameRestrictions);
break;
case XCONFIG_USER_PC_PASSWORD:
setting_size = 4;
std::memset(value, 0, 4);
break;
case XCONFIG_USER_PC_MOVIE:
setting_size = 4;
xe::store_and_swap<uint32_t>(value,
X_PC_MOVIE_FLAGS::NoMovieRestrictions);
break;
case XCONFIG_USER_PC_GAME_RATING:
setting_size = 4;
xe::store_and_swap<uint32_t>(value,
X_PC_GAME_RATING_FLAGS::DefaultGame);
break;
case XCONFIG_USER_PC_MOVIE_RATING:
setting_size = 4;
xe::store_and_swap<uint32_t>(value,
X_PC_MOVIE_RATING_FLAGS::DefaultMovie);
break;
case XCONFIG_USER_PC_HINT:
setting_size = 1;
value[0] = static_cast<uint8_t>(0);
// ExSetXConfigSetting and ExGetXConfigSetting request size of 0x40
setting_size = 0x40;
store_and_swap<std::string>(value, "");
break;
case XCONFIG_USER_PC_HINT_ANSWER:
setting_size = 0x20;
store_and_swap<std::string>(value, "");
break;
case XCONFIG_USER_ARCADE_FLAGS:
setting_size = 4;
xe::store_and_swap<uint32_t>(value, X_ARCADE_FLAGS::AutoDownloadOff);
break;
case XCONFIG_USER_PC_VERSION:
setting_size = 4;
xe::store_and_swap<uint32_t>(value, X_PC_VERSION::VersionOne);
break;
case XCONFIG_USER_PC_TV:
setting_size = 4;
xe::store_and_swap<uint32_t>(value, X_PC_TV::NoTVRestrictions);
break;
case XCONFIG_USER_PC_TV_RATING:
setting_size = 4;
xe::store_and_swap<uint32_t>(value, X_PC_TV_RATING::DefaultTV);
break;
case XCONFIG_USER_PC_EXPLICIT_VIDEO:
setting_size = 4;
xe::store_and_swap<uint32_t>(
value, X_PC_EXPLICIT_VIDEO::ExplicitVideoAllowed);
break;
case XCONFIG_USER_PC_EXPLICIT_VIDEO_RATING:
setting_size = 4;
xe::store_and_swap<uint32_t>(
value, X_PC_EXPLICIT_VIDEO_RATING::ExplicitAllowed);
break;
case XCONFIG_USER_PC_UNRATED_VIDEO:
setting_size = 4;
xe::store_and_swap<uint32_t>(value,
X_PC_EXPLICIT_UNRATED::UnratedALL);
break;
case XCONFIG_USER_PC_UNRATED_VIDEO_RATING:
setting_size = 4;
xe::store_and_swap<uint32_t>(
value, X_PC_EXPLICIT_UNRATED_RATING::DefaultExplicitUnrated);
break;
case XCONFIG_USER_VIDEO_OUTPUT_BLACK_LEVELS:
setting_size = 4;

View File

@ -249,15 +249,98 @@ enum X_RETAIL_FLAGS : uint32_t {
enum X_PC_FLAGS : uint8_t {
XBLAllowed = 0x01,
XBLMembershipCreationAllowed = 0x02,
XboxOneGameAllowed = 0x04,
PCEnabled = 0x80,
};
enum X_PC_HINTS : uint8_t {
FavoriteFictionalCharactar = 0,
FavoritePersonFromHistory = 1,
FavoriteChildhoodBookOrStory = 2,
FavoriteMovie = 3,
FavoriteFood = 4
// XCONFIG_USER_PC_GAMES
enum X_PC_GAMES_FLAGS : uint32_t {
EarlyChildhoodMax = 0x00000000,
EveryoneMax = 0x00000002,
Everyone_10Max = 0x00000004,
TeenMax = 0x00000006,
MatureMax = 0x00000008,
NoGameRestrictions = 0x000000FF,
};
// XCONFIG_USER_PC_PASSWORD
enum X_PC_PASSWORD_FLAGS : uint32_t {
XButton = 0x00000001,
YButton = 0x00000002,
LeftButton = 0x00000003,
RightButton = 0x00000004,
UPButton = 0x00000005,
DownButton = 0x00000006,
LTButton = 0x00000009,
RTButton = 0x0000000A,
LBButton = 0x0000000B,
RBButton = 0x0000000C,
};
// XCONFIG_USER_PC_MOVIE
enum X_PC_MOVIE_FLAGS : uint32_t {
GeneralAudiences = 0x00000001,
ParentalGuidance = 0x00000003,
ParentalGuidance13 = 0x00000004,
Restricted = 0x00000006,
NoMovieRestrictions = 0x000000FF,
};
// XCONFIG_USER_PC_GAME_RATING
enum X_PC_GAME_RATING_FLAGS : uint32_t {
DefaultGame = 0x00000000,
};
// XCONFIG_USER_PC_MOVIE_RATING
enum X_PC_MOVIE_RATING_FLAGS : uint32_t {
DefaultMovie = 0x00000000,
};
// XCONFIG_USER_ARCADE_FLAGS
enum X_ARCADE_FLAGS : uint32_t {
AutoDownloadOff = 0x00000000,
AutoDownloadNewReleases = 0x00000001,
};
// XCONFIG_USER_PC_VERSION
enum X_PC_VERSION : uint32_t {
VersionOne = 0x00000001,
};
// XCONFIG_USER_PC_TV
enum X_PC_TV : uint32_t {
TVG = 0X00000006,
TVPG = 0X00000008,
TV14 = 0X0000000a,
TVMatureAudience = 0x0000000C,
NoTVRestrictions = 0X000000FF,
};
// XCONFIG_USER_PC_TV_RATING
enum X_PC_TV_RATING : uint32_t {
DefaultTV = 0X00000000,
};
// XCONFIG_USER_PC_EXPLICIT_VIDEO
enum X_PC_EXPLICIT_VIDEO : uint32_t {
ExplicitVideoAllowed = 0X000000FF,
ExplicitVideoBanned = 0X00000000,
};
// XCONFIG_USER_PC_EXPLICIT_VIDEO_RATING
enum X_PC_EXPLICIT_VIDEO_RATING : uint32_t {
ExplicitAllowed = 0X00000000,
};
// XCONFIG_USER_PC_UNRATED_VIDEO
enum X_PC_EXPLICIT_UNRATED : uint32_t {
ExplicitUnratedBanned = 0X00000000,
UnratedALL = 0X000000FF,
};
// XCONFIG_USER_PC_UNRATED_VIDEO_RATING
enum X_PC_EXPLICIT_UNRATED_RATING : uint32_t {
DefaultExplicitUnrated = 0X00000000,
};
// XCONFIG_USER_VIDEO_OUTPUT_BLACK_LEVELS