diff --git a/src/xenia/kernel/user_module.cc b/src/xenia/kernel/user_module.cc index d153cf341..b6a061182 100644 --- a/src/xenia/kernel/user_module.cc +++ b/src/xenia/kernel/user_module.cc @@ -614,6 +614,12 @@ void UserModule::Dump() { case XEX_HEADER_SYSTEM_FLAGS: { sb.AppendFormat(" XEX_HEADER_SYSTEM_FLAGS: {:08X}\n", static_cast(opt_header.value)); + + for (const auto& entry : xex2_system_flags_map) { + if (opt_header.value & entry.first) { + sb.AppendFormat(" {}\n", entry.second); + } + } } break; case XEX_HEADER_EXECUTION_INFO: { sb.Append(" XEX_HEADER_EXECUTION_INFO:\n"); diff --git a/src/xenia/kernel/util/xex2_info.h b/src/xenia/kernel/util/xex2_info.h index 9b649b7c9..d9e939478 100644 --- a/src/xenia/kernel/util/xex2_info.h +++ b/src/xenia/kernel/util/xex2_info.h @@ -11,6 +11,7 @@ #define XENIA_KERNEL_UTIL_XEX2_INFO_H_ #include +#include #include "xenia/base/byte_order.h" @@ -637,6 +638,51 @@ struct X_IMAGE_EXPORT_DIRECTORY { uint32_t AddressOfNameOrdinals; // RVA from base of image }; +const std::unordered_map xex2_system_flags_map = { + {XEX_SYSTEM_NO_FORCED_REBOOT, "XEX_SYSTEM_NO_FORCED_REBOOT"}, + {XEX_SYSTEM_FOREGROUND_TASKS, "XEX_SYSTEM_FOREGROUND_TASKS"}, + {XEX_SYSTEM_NO_ODD_MAPPING, "XEX_SYSTEM_NO_ODD_MAPPING"}, + {XEX_SYSTEM_HANDLE_MCE_INPUT, "XEX_SYSTEM_HANDLE_MCE_INPUT"}, + {XEX_SYSTEM_RESTRICTED_HUD_FEATURES, "XEX_SYSTEM_RESTRICTED_HUD_FEATURES"}, + {XEX_SYSTEM_HANDLE_GAMEPAD_DISCONNECT, + "XEX_SYSTEM_HANDLE_GAMEPAD_DISCONNECT"}, + {XEX_SYSTEM_INSECURE_SOCKETS, "XEX_SYSTEM_INSECURE_SOCKETS"}, + {XEX_SYSTEM_XBOX1_INTEROPERABILITY, "XEX_SYSTEM_XBOX1_INTEROPERABILITY"}, + {XEX_SYSTEM_DASH_CONTEXT, "XEX_SYSTEM_DASH_CONTEXT"}, + {XEX_SYSTEM_USES_GAME_VOICE_CHANNEL, "XEX_SYSTEM_USES_GAME_VOICE_CHANNEL"}, + {XEX_SYSTEM_PAL50_INCOMPATIBLE, "XEX_SYSTEM_PAL50_INCOMPATIBLE"}, + {XEX_SYSTEM_INSECURE_UTILITY_DRIVE, "XEX_SYSTEM_INSECURE_UTILITY_DRIVE"}, + {XEX_SYSTEM_XAM_HOOKS, "XEX_SYSTEM_XAM_HOOKS"}, + {XEX_SYSTEM_ACCESS_PII, "XEX_SYSTEM_ACCESS_PII"}, + {XEX_SYSTEM_CROSS_PLATFORM_SYSTEM_LINK, + "XEX_SYSTEM_CROSS_PLATFORM_SYSTEM_LINK"}, + {XEX_SYSTEM_MULTIDISC_SWAP, "XEX_SYSTEM_MULTIDISC_SWAP"}, + {XEX_SYSTEM_MULTIDISC_INSECURE_MEDIA, + "XEX_SYSTEM_MULTIDISC_INSECURE_MEDIA"}, + {XEX_SYSTEM_AP25_MEDIA, "XEX_SYSTEM_AP25_MEDIA"}, + {XEX_SYSTEM_NO_CONFIRM_EXIT, "XEX_SYSTEM_NO_CONFIRM_EXIT"}, + {XEX_SYSTEM_ALLOW_BACKGROUND_DOWNLOAD, + "XEX_SYSTEM_ALLOW_BACKGROUND_DOWNLOAD"}, + {XEX_SYSTEM_CREATE_PERSISTABLE_RAMDRIVE, + "XEX_SYSTEM_CREATE_PERSISTABLE_RAMDRIVE"}, + {XEX_SYSTEM_INHERIT_PERSISTENT_RAMDRIVE, + "XEX_SYSTEM_INHERIT_PERSISTENT_RAMDRIVE"}, + {XEX_SYSTEM_ALLOW_HUD_VIBRATION, "XEX_SYSTEM_ALLOW_HUD_VIBRATION"}, + {XEX_SYSTEM_ACCESS_UTILITY_PARTITIONS, + "XEX_SYSTEM_ACCESS_UTILITY_PARTITIONS"}, + {XEX_SYSTEM_IPTV_INPUT_SUPPORTED, "XEX_SYSTEM_IPTV_INPUT_SUPPORTED"}, + {XEX_SYSTEM_PREFER_BIG_BUTTON_INPUT, "XEX_SYSTEM_PREFER_BIG_BUTTON_INPUT"}, + {XEX_SYSTEM_ALLOW_EXTENDED_SYSTEM_RESERVATION, + "XEX_SYSTEM_ALLOW_EXTENDED_SYSTEM_RESERVATION"}, + {XEX_SYSTEM_MULTIDISC_CROSS_TITLE, "XEX_SYSTEM_MULTIDISC_CROSS_TITLE"}, + {XEX_SYSTEM_INSTALL_INCOMPATIBLE, "XEX_SYSTEM_INSTALL_INCOMPATIBLE"}, + {XEX_SYSTEM_ALLOW_AVATAR_GET_METADATA_BY_XUID, + "XEX_SYSTEM_ALLOW_AVATAR_GET_METADATA_BY_XUID"}, + {XEX_SYSTEM_ALLOW_CONTROLLER_SWAPPING, + "XEX_SYSTEM_ALLOW_CONTROLLER_SWAPPING"}, + {XEX_SYSTEM_DASH_EXTENSIBILITY_MODULE, + "XEX_SYSTEM_DASH_EXTENSIBILITY_MODULE"}}; + } // namespace xe #endif // XENIA_KERNEL_UTIL_XEX2_INFO_H_