fix missing sub_version check

This commit is contained in:
Martin Michelsen
2024-06-23 22:38:22 -07:00
parent fd4719f8ec
commit 9322c023da
2 changed files with 33 additions and 0 deletions
+32
View File
@@ -199,6 +199,37 @@ ServerBehavior enum_for_name<ServerBehavior>(const char* name) {
}
}
uint32_t default_sub_version_for_version(Version version) {
switch (version) {
case Version::DC_NTE:
return 0x20;
case Version::DC_V1_11_2000_PROTOTYPE:
return 0x21;
case Version::DC_V1:
return 0x21;
case Version::DC_V2:
return 0x26;
case Version::PC_NTE:
return 0x28;
case Version::PC_V2:
return 0x29;
case Version::GC_NTE:
return 0x30;
case Version::GC_V3:
return 0x31;
case Version::GC_EP3_NTE:
return 0x40;
case Version::GC_EP3:
return 0x41;
case Version::XB_V3:
return 0x31;
case Version::BB_V4:
return 0x41;
default:
return 0x00;
}
}
uint32_t default_specific_version_for_version(Version version, int64_t sub_version) {
// For versions that don't support send_function_call by default, we need
// to set the specific_version based on sub_version. Fortunately, all
@@ -224,6 +255,7 @@ uint32_t default_specific_version_for_version(Version version, int64_t sub_versi
case 0x33: // GC Ep1&2 EU 60Hz
return SPECIFIC_VERSION_GC_V3_EU; // 3OP0
case 0x36: // GC Ep1&2 US v1.2 (Plus)
case 0x3A: // GC Ep1&2 US v1.2 (Plus) GMK edition
return SPECIFIC_VERSION_GC_V3_US_12; // 3OE2
case 0x34: // GC Ep1&2 JP v1.3
return SPECIFIC_VERSION_GC_V3_JP_13; // 3OJ3
+1
View File
@@ -161,6 +161,7 @@ constexpr uint32_t SPECIFIC_VERSION_XB_V3_INDETERMINATE = 0x344F0000; // 4O__
constexpr uint32_t SPECIFIC_VERSION_BB_V4_INDETERMINATE = 0x35000000; // 5___
constexpr uint32_t SPECIFIC_VERSION_INDETERMINATE = 0x00000000; // ____
uint32_t default_sub_version_for_version(Version version);
uint32_t default_specific_version_for_version(Version version, int64_t sub_version);
bool specific_version_is_indeterminate(uint32_t specific_version);
bool specific_version_is_dc(uint32_t specific_version);