From bb20633c52d27e738c6b0376babe7544831300eb Mon Sep 17 00:00:00 2001 From: Gliniak Date: Tue, 27 May 2025 09:12:13 +0200 Subject: [PATCH] [Kernel] Fixed bug in IsOriginalXboxTitle and IsAppTitle function - Added static assertions to functions: IsXblaTitle, IsSystemTitle, IsOriginalXboxTitle --- src/xenia/kernel/title_id_utils.h | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/xenia/kernel/title_id_utils.h b/src/xenia/kernel/title_id_utils.h index 80a582a59..9166c86dc 100644 --- a/src/xenia/kernel/title_id_utils.h +++ b/src/xenia/kernel/title_id_utils.h @@ -48,11 +48,14 @@ static constexpr bool IsXblaTitle(const uint32_t title_id) { return publisher.first == 'X' && publisher.second == 'A'; } +static_assert(IsXblaTitle(0x5841127D)); // XBLA Game +static_assert(!IsXblaTitle(0x4D5309C9)); // Non-XBLA Game + static constexpr bool IsAppTitle(const uint32_t title_id) { const auto publisher = GetTitlePublisher(title_id); return publisher.first == 'X' && publisher.second == 'H' || - publisher.first == 'X' && publisher.second == 'H'; + publisher.first == 'X' && publisher.second == 'J'; } static constexpr bool IsXNTitle(const uint32_t title_id) { @@ -83,18 +86,25 @@ static constexpr bool IsSystemTitle(const uint32_t title_id) { return true; }; +static_assert(IsSystemTitle(kDashboardID)); // Dashboard check +static_assert(!IsSystemTitle(0x4D5308BC)); // Non-XBLA Game +static_assert(!IsSystemTitle(0x5841089A)); // XBLA Game + static constexpr bool IsOriginalXboxTitle(const uint32_t title_id) { if (!IsValidGameId(title_id)) { return true; } - if (!title_id || (title_id >> 24) == 0xFF) { + if (title_id >> 24 == 0xFF) { return false; } - return (title_id >> 17) < 0x7D0; + return (title_id & 0x7FFF) < 0x7D0; }; +static_assert(IsOriginalXboxTitle(0x41430006)); // OG-Xbox Game +static_assert(!IsOriginalXboxTitle(0x4D5308BC)); // 360 Game + } // namespace kernel } // namespace xe