From 1164f99957e6fc2331dd83bee16708f8e4bacbc1 Mon Sep 17 00:00:00 2001 From: Martin Michelsen Date: Tue, 2 Aug 2022 12:03:16 -0700 Subject: [PATCH] fix sub_version flags for GC Ep1&2 EU --- src/Client.hh | 36 ---------------------- src/Version.cc | 41 +++++++++++++++++-------- tests/BB-CreateCharGame.test.txt | 2 +- tests/GC-Episode3GameSmokeTest.test.txt | 6 ++-- 4 files changed, 32 insertions(+), 53 deletions(-) diff --git a/src/Client.hh b/src/Client.hh index 0f73b23d..a892e2de 100644 --- a/src/Client.hh +++ b/src/Client.hh @@ -50,42 +50,6 @@ struct Client { ENCRYPTED_SEND_FUNCTION_CALL = 0x0800, // Client supports send_function_call but does not actually run the code SEND_FUNCTION_CALL_CHECKSUM_ONLY = 0x1000, - - DEFAULT_V1_DC = - DCV1 | - NO_MESSAGE_BOX_CLOSE_CONFIRMATION | - DOES_NOT_SUPPORT_SEND_FUNCTION_CALL, - - DEFAULT_V2_DC = - NO_MESSAGE_BOX_CLOSE_CONFIRMATION, - - DEFAULT_V2_PC = - NO_MESSAGE_BOX_CLOSE_CONFIRMATION | - SEND_FUNCTION_CALL_CHECKSUM_ONLY, - - DEFAULT_V3_GC = 0, - - DEFAULT_V3_GC_PLUS = - NO_MESSAGE_BOX_CLOSE_CONFIRMATION_AFTER_LOBBY_JOIN | - ENCRYPTED_SEND_FUNCTION_CALL, - - DEFAULT_V3_GC_PLUS_NO_SFC = - DEFAULT_V3_GC_PLUS | - DOES_NOT_SUPPORT_SEND_FUNCTION_CALL, - - DEFAULT_V3_GC_EP3 = - NO_MESSAGE_BOX_CLOSE_CONFIRMATION_AFTER_LOBBY_JOIN | - EPISODE_3 | - ENCRYPTED_SEND_FUNCTION_CALL, - - DEFAULT_V3_GC_EP3_NO_SFC = - DEFAULT_V3_GC_EP3 | - DOES_NOT_SUPPORT_SEND_FUNCTION_CALL, - - DEFAULT_V4_BB = - NO_MESSAGE_BOX_CLOSE_CONFIRMATION_AFTER_LOBBY_JOIN | - NO_MESSAGE_BOX_CLOSE_CONFIRMATION | - SAVE_ENABLED, }; uint64_t id; diff --git a/src/Version.cc b/src/Version.cc index 28ba8072..a993f5ff 100644 --- a/src/Version.cc +++ b/src/Version.cc @@ -12,40 +12,55 @@ using namespace std; uint16_t flags_for_version(GameVersion version, int64_t sub_version) { switch (sub_version) { - case -1: // initial check (before 9E recognition) + case -1: // Initial check (before 9E recognition) switch (version) { case GameVersion::DC: - return Client::Flag::DEFAULT_V2_DC; + // TODO: For DCv1, the flags should be: + // Client::Flag::DCV1 | + // Client::Flag::NO_MESSAGE_BOX_CLOSE_CONFIRMATION | + // Client::Flag::DOES_NOT_SUPPORT_SEND_FUNCTION_CALL + return Client::Flag::NO_MESSAGE_BOX_CLOSE_CONFIRMATION; case GameVersion::GC: case GameVersion::XB: - return Client::Flag::DEFAULT_V3_GC; + return 0; case GameVersion::PC: - return Client::Flag::DEFAULT_V2_PC; + return Client::Flag::NO_MESSAGE_BOX_CLOSE_CONFIRMATION | + Client::Flag::SEND_FUNCTION_CALL_CHECKSUM_ONLY; case GameVersion::PATCH: - return Client::Flag::DEFAULT_V2_PC; + return Client::Flag::NO_MESSAGE_BOX_CLOSE_CONFIRMATION | + Client::Flag::DOES_NOT_SUPPORT_SEND_FUNCTION_CALL; case GameVersion::BB: - return Client::Flag::DEFAULT_V4_BB; + return Client::Flag::NO_MESSAGE_BOX_CLOSE_CONFIRMATION | + Client::Flag::SAVE_ENABLED; } break; case 0x29: // PC - return Client::Flag::DEFAULT_V2_PC; + return Client::Flag::NO_MESSAGE_BOX_CLOSE_CONFIRMATION | + Client::Flag::SEND_FUNCTION_CALL_CHECKSUM_ONLY; case 0x30: // GC Ep1&2 JP v1.02, at least one version of PSO XB case 0x31: // GC Ep1&2 US v1.00, GC US v1.01, GC EU v1.00, GC JP v1.00 + case 0x34: // GC Ep1&2 JP v1.03 + return 0; case 0x32: // GC Ep1&2 EU 50Hz case 0x33: // GC Ep1&2 EU 60Hz - case 0x34: // GC Ep1&2 JP v1.03 - return Client::Flag::DEFAULT_V3_GC; + return Client::Flag::NO_MESSAGE_BOX_CLOSE_CONFIRMATION_AFTER_LOBBY_JOIN; case 0x35: // GC Ep1&2 JP v1.04 (Plus) - return Client::Flag::DEFAULT_V3_GC_PLUS; + return Client::Flag::NO_MESSAGE_BOX_CLOSE_CONFIRMATION_AFTER_LOBBY_JOIN | + Client::Flag::ENCRYPTED_SEND_FUNCTION_CALL; case 0x36: // GC Ep1&2 US v1.02 (Plus) case 0x39: // GC Ep1&2 JP v1.05 (Plus) - return Client::Flag::DEFAULT_V3_GC_PLUS_NO_SFC; + return Client::Flag::NO_MESSAGE_BOX_CLOSE_CONFIRMATION_AFTER_LOBBY_JOIN | + Client::Flag::DOES_NOT_SUPPORT_SEND_FUNCTION_CALL; case 0x42: // GC Ep3 JP - return Client::Flag::DEFAULT_V3_GC_EP3; + return Client::Flag::NO_MESSAGE_BOX_CLOSE_CONFIRMATION_AFTER_LOBBY_JOIN | + Client::Flag::EPISODE_3 | + Client::Flag::ENCRYPTED_SEND_FUNCTION_CALL; case 0x40: // GC Ep3 trial (TODO: Does this support send_function_call?) case 0x41: // GC Ep3 US case 0x43: // GC Ep3 EU - return Client::Flag::DEFAULT_V3_GC_EP3_NO_SFC; + return Client::Flag::NO_MESSAGE_BOX_CLOSE_CONFIRMATION_AFTER_LOBBY_JOIN | + Client::Flag::EPISODE_3 | + Client::Flag::DOES_NOT_SUPPORT_SEND_FUNCTION_CALL; } throw runtime_error("unknown sub_version"); } diff --git a/tests/BB-CreateCharGame.test.txt b/tests/BB-CreateCharGame.test.txt index c2529802..5a9a40e1 100644 --- a/tests/BB-CreateCharGame.test.txt +++ b/tests/BB-CreateCharGame.test.txt @@ -111,7 +111,7 @@ I 80350 2022-07-07 23:26:22 - [Commands] Received from C-3 (version=BB command=0 I 80350 2022-07-07 23:26:22 - [Commands] Sending to C-3 (version=BB command=00E6 flag=00000000) 0000000000000000 | 44 00 E6 00 00 00 00 00 00 00 00 00 00 00 01 00 | D 0000000000000010 | 5B 30 B0 21 10 11 69 77 39 98 AC 82 0E 89 2A 49 | [0 ! iw9 *I -0000000000000020 | 06 04 00 00 00 00 00 00 FF FF FF FF FF FF FF FF | +0000000000000020 | 04 04 00 00 00 00 00 00 FF FF FF FF FF FF FF FF | 0000000000000030 | FF FF FF FF FF FF FF FF 00 00 FF FF FF FF FF FF | 0000000000000040 | 02 01 00 00 | I 80350 2022-07-07 23:26:22 - [Commands] Sending to C-3 (version=BB command=0019 flag=00000000) diff --git a/tests/GC-Episode3GameSmokeTest.test.txt b/tests/GC-Episode3GameSmokeTest.test.txt index 32407ee3..99a9d075 100644 --- a/tests/GC-Episode3GameSmokeTest.test.txt +++ b/tests/GC-Episode3GameSmokeTest.test.txt @@ -60,7 +60,7 @@ I 94711 2022-07-26 00:24:56 - [Commands] Received from C-7 (version=GC command=9 0000000000000140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | I 94711 2022-07-26 00:24:56 - [Commands] Sending to C-7 (version=GC command=04 flag=00) 0000000000000000 | 04 00 2C 00 00 00 01 00 78 62 F8 10 39 98 AC 82 | , xb 9 -0000000000000010 | 0E 89 2A 49 0A 0B 00 00 00 00 00 00 FF FF FF FF | *I +0000000000000010 | 0E 89 2A 49 0A 03 00 00 00 00 00 00 FF FF FF FF | *I 0000000000000020 | FF FF FF FF FF FF FF FF FF FF FF FF | I 94711 2022-07-26 00:24:56 - [Commands] Sending to C-7 (version=GC command=B8 flag=00) 0000000000000000 | B8 00 E0 71 D5 71 00 00 61 00 FF 01 00 87 F8 FF | q q a @@ -1921,7 +1921,7 @@ I 94711 2022-07-26 00:24:59 - [Commands] Sending to C-7 (version=GC command=07 f 00000000000000C0 | 6E 73 65 00 00 00 00 00 | nse I 94711 2022-07-26 00:24:59 - [Commands] Sending to C-7 (version=GC command=04 flag=00) 0000000000000000 | 04 00 2C 00 00 00 01 00 78 62 F8 10 39 98 AC 82 | , xb 9 -0000000000000010 | 0E 89 2A 49 0A 0A 00 00 00 00 00 00 FF FF FF FF | *I +0000000000000010 | 0E 89 2A 49 0A 02 00 00 00 00 00 00 FF FF FF FF | *I 0000000000000020 | FF FF FF FF FF FF FF FF FF FF FF FF | I 94711 2022-07-26 00:25:06 - [Commands] Received from C-7 (version=GC command=10 flag=00) 0000000000000000 | 10 00 0C 00 11 00 00 11 11 33 33 11 | 33 @@ -2037,7 +2037,7 @@ I 94711 2022-07-26 00:25:12 - [Commands] Sending to C-7 (version=GC command=97 f 0000000000000000 | 97 01 04 00 | I 94711 2022-07-26 00:25:12 - [Commands] Sending to C-7 (version=GC command=04 flag=00) 0000000000000000 | 04 00 2C 00 00 00 01 00 78 62 F8 10 39 98 AC 82 | , xb 9 -0000000000000010 | 0E 89 2A 49 0A 0E 00 00 00 00 00 00 FF FF FF FF | *I +0000000000000010 | 0E 89 2A 49 0A 06 00 00 00 00 00 00 FF FF FF FF | *I 0000000000000020 | FF FF FF FF FF FF FF FF FF FF FF FF | I 94711 2022-07-26 00:25:12 - [Commands] Received from C-7 (version=GC command=B1 flag=00) 0000000000000000 | B1 00 04 00 |