From 5d3d1e1900fb384b4fa7ef62c46620ecba641f09 Mon Sep 17 00:00:00 2001 From: Martin Michelsen Date: Sat, 27 Aug 2022 01:34:49 -0700 Subject: [PATCH] add support for PSO DC v1/v2 --- README.md | 23 +- src/Channel.cc | 9 + src/ChatCommands.cc | 4 +- src/Client.cc | 11 +- src/Client.hh | 5 +- src/CommandFormats.hh | 271 +++-- src/FunctionCompiler.cc | 2 +- src/Items.cc | 4 +- src/Lobby.cc | 1 - src/Lobby.hh | 5 +- src/PSOEncryption.cc | 8 +- src/Player.cc | 28 +- src/Player.hh | 37 +- src/ProxyCommands.cc | 138 ++- src/ProxyServer.cc | 41 +- src/ProxyServer.hh | 4 +- src/Quest.cc | 4 +- src/ReceiveCommands.cc | 401 ++++--- src/ReceiveSubcommands.cc | 76 +- src/ReplaySession.cc | 57 +- src/SendCommands.cc | 312 +++--- src/ServerShell.cc | 4 +- src/ServerState.cc | 70 +- src/ServerState.hh | 4 +- src/StaticGameData.cc | 16 - src/StaticGameData.hh | 2 - src/Version.cc | 2 +- system/config.example.json | 11 +- tests/DCv1-GameSmokeTest.test.txt | 1682 +++++++++++++++++++++++++++++ tests/DCv2-GameSmokeTest.test.txt | 1357 +++++++++++++++++++++++ 30 files changed, 4004 insertions(+), 585 deletions(-) create mode 100644 tests/DCv1-GameSmokeTest.test.txt create mode 100644 tests/DCv2-GameSmokeTest.test.txt diff --git a/README.md b/README.md index 446feeba..d1b6f0f2 100644 --- a/README.md +++ b/README.md @@ -10,22 +10,23 @@ newserv supports several versions of PSO. Specifically: | Version | Basic commands | Lobbies | Games | Proxy | |----------------------|----------------|---------------|---------------|---------------| | Dreamcast Trial | Not supported | Not supported | Not supported | Not supported | -| Dreamcast V1 | Not supported | Not supported | Not supported | Not supported | -| Dreamcast V2 | Not supported | Not supported | Not supported | Not supported | +| Dreamcast V1 | Supported (1) | Supported | Supported | Supported | +| Dreamcast V2 | Supported (1) | Supported | Supported | Supported | | PC | Supported | Supported | Supported | Supported | -| GameCube Ep1&2 Trial | Untested (4) | Untested (4) | Untested (4) | Untested (4) | +| GameCube Ep1&2 Trial | Untested (2) | Untested (2) | Untested (2) | Untested (2) | | GameCube Ep1&2 | Supported | Supported | Supported | Supported | | GameCube Ep1&2 Plus | Supported | Supported | Supported | Supported | -| GameCube Ep3 Trial | Supported | Supported | Partial (1) | Supported | -| GameCube Ep3 | Supported | Supported | Partial (1) | Supported | -| XBOX Ep1&2 | Untested (3) | Untested (3) | Untested (3) | Untested (3) | -| Blue Burst | Supported | Supported | Partial (2) | Supported | +| GameCube Ep3 Trial | Supported | Supported | Partial (3) | Supported | +| GameCube Ep3 | Supported | Supported | Partial (3) | Supported | +| XBOX Ep1&2 | Untested (4) | Untested (4) | Untested (4) | Untested (4) | +| Blue Burst | Supported | Supported | Partial (5) | Supported | *Notes:* -1. *Episode 3 players can create and join games, but CARD battles are not implemented yet.* -2. *Some basic features are not implemented in Blue Burst games, so the games are not very playable. A lot of work has to be done to get this to a playable state.* -3. *newserv's implementation of PSOX is based on disassembly of the client executable; it has never been tested and probably doesn't work.* -4. *This version only supports the modem adapter, which Dolphin does not currently emulate, so it's difficult to test.* +1. *DC support has only been tested with the US versions of PSO DC. Other versions probably don't work, but will be easy to add. Please submit a GitHub issue if you have a non-US DC version, and can provide a log from a connection attempt.* +2. *This version only supports the modem adapter, which Dolphin does not currently emulate, so it's difficult to test.* +3. *Episode 3 players can create and join games, but CARD battles are not implemented yet. Tournaments are also not supported.* +4. *newserv's implementation of PSOX is based on disassembly of the client executable; it has never been tested with a real client and most likely doesn't work.* +5. *Some basic features are not implemented in Blue Burst games, so the games are not very playable. A lot of work has to be done to get BB games to a playable state.* ## Future diff --git a/src/Channel.cc b/src/Channel.cc index 15b3f9a6..3b3ed195 100644 --- a/src/Channel.cc +++ b/src/Channel.cc @@ -203,6 +203,15 @@ Channel::Message Channel::recv(bool print_contents) { < static_cast(command_data.size())) { throw logic_error("enough bytes available, but could not remove them"); } + + // Some versions of PSO DC can send commands whose sizes are not a multiple of + // 4, but the server is expected to always use a multiple of 4 bytes when + // decrypting (the extra cipher bytes are lost). To emulate this behavior, we + // have to round up the size for DC commands here. + if (version == GameVersion::DC) { + command_data.resize((command_data.size() + 3) & (~3)); + } + if (this->crypt_in.get()) { this->crypt_in->decrypt(command_data.data(), command_data.size()); } diff --git a/src/ChatCommands.cc b/src/ChatCommands.cc index 6988a00c..6d1cc17c 100644 --- a/src/ChatCommands.cc +++ b/src/ChatCommands.cc @@ -49,13 +49,13 @@ static void check_privileges(shared_ptr c, uint64_t mask) { } static void check_version(shared_ptr c, GameVersion version) { - if (c->version != version) { + if (c->version() != version) { throw precondition_failed(u"$C6This command cannot\nbe used for your\nversion of PSO."); } } static void check_not_version(shared_ptr c, GameVersion version) { - if (c->version == version) { + if (c->version() == version) { throw precondition_failed(u"$C6This command cannot\nbe used for your\nversion of PSO."); } } diff --git a/src/Client.cc b/src/Client.cc index bd744161..e22005f4 100644 --- a/src/Client.cc +++ b/src/Client.cc @@ -30,10 +30,9 @@ Client::Client( ServerBehavior server_behavior) : id(next_id++), log("", client_log.min_level), - version(version), bb_game_state(0), - flags(flags_for_version(this->version, -1)), - channel(bev, this->version, nullptr, nullptr, this, string_printf("C-%" PRIX64, this->id), TerminalFormat::FG_YELLOW, TerminalFormat::FG_GREEN), + flags(flags_for_version(version, -1)), + channel(bev, version, nullptr, nullptr, this, string_printf("C-%" PRIX64, this->id), TerminalFormat::FG_YELLOW, TerminalFormat::FG_GREEN), server_behavior(server_behavior), should_disconnect(false), should_send_to_lobby_server(false), @@ -64,7 +63,7 @@ Client::Client( this->last_switch_enabled_command.subcommand = 0; memset(&this->next_connection_addr, 0, sizeof(this->next_connection_addr)); - if (this->version == GameVersion::BB) { + if (this->version() == GameVersion::BB) { struct timeval tv = usecs_to_timeval(60000000); // 1 minute event_add(this->save_game_data_event.get(), &tv); } @@ -73,7 +72,7 @@ Client::Client( void Client::set_license(shared_ptr l) { this->license = l; this->game_data.serial_number = this->license->serial_number; - if (this->version == GameVersion::BB) { + if (this->version() == GameVersion::BB) { this->game_data.bb_username = this->license->username; } } @@ -119,7 +118,7 @@ void Client::dispatch_save_game_data(evutil_socket_t, short, void* ctx) { } void Client::save_game_data() { - if (this->version != GameVersion::BB) { + if (this->version() != GameVersion::BB) { throw logic_error("save_game_data called for non-BB client"); } if (this->game_data.account(false)) { diff --git a/src/Client.hh b/src/Client.hh index daa22014..08fefa06 100644 --- a/src/Client.hh +++ b/src/Client.hh @@ -61,7 +61,6 @@ struct Client { // License & account std::shared_ptr license; - GameVersion version; // Note: these fields are included in the client config. On GC, the client // config can be up to 0x20 bytes; on BB it can be 0x28 bytes. We don't use @@ -111,6 +110,10 @@ struct Client { Client(struct bufferevent* bev, GameVersion version, ServerBehavior server_behavior); + inline GameVersion version() const { + return this->channel.version; + } + void set_license(std::shared_ptr l); ClientConfig export_config() const; diff --git a/src/CommandFormats.hh b/src/CommandFormats.hh index fd454fc6..b2c60ba4 100644 --- a/src/CommandFormats.hh +++ b/src/CommandFormats.hh @@ -296,6 +296,8 @@ struct SC_TextHeader_01_06_11_B0_EE { // PC, the client will respond with an (encrypted) 9A or 9D command. // The copyright field in the below structure must contain the following text: // "DreamCast Lobby Server. Copyright SEGA Enterprises. 1999" +// (The above text is required on all versions that use this command, including +// those versions not running on the DreamCast.) struct S_ServerInit_DC_PC_V3_02_17_91_9B { ptext copyright; @@ -307,6 +309,7 @@ struct S_ServerInit_DC_PC_V3_02_17_91_9B { }; // 03 (C->S): Legacy login (non-BB) +// TODO: Check if this command exists on DC v1/v2. struct C_LegacyLogin_PC_V3_03 { le_uint64_t unused; // Same as unused field in 9D/9E @@ -349,6 +352,7 @@ struct S_ServerInit_BB_03_9B { // See comments on non-BB 03 (S->C). This is likely a relic of an older, // now-unused sequence. // header.flag is nonzero, but it's not clear what it's used for. + struct C_LegacyLogin_PC_V3_04 { le_uint64_t unused1; // Same as unused field in 9D/9E le_uint32_t sub_version; @@ -368,7 +372,7 @@ struct C_LegacyLogin_BB_04 { // 04 (S->C): Set guild card number and update client config ("security data") // header.flag specifies an error code; the format described below is only used // if this code is 0 (no error). Otherwise, the command has no arguments. -// Error codes: +// Error codes (on GC): // 01 = Line is busy (103) // 02 = Already logged in (104) // 03 = Incorrect password (106) @@ -408,6 +412,12 @@ struct S_UpdateClientConfig_BB_04 : S_UpdateClientConfig { }; // 05: Disconnect // No arguments +// Sending this command to a client will cause it to disconnect. There's no +// advantage to doing this over simply closing the TCP connection. Clients will +// send this command to the server when they are about to disconnect, but the +// server does not need to close the connection when it receives this command +// (and in some cases, the client will send multiple 05 commands before actually +// disconnecting). // 06: Chat // Server->client format is same as 01 command. The maximum size of the message @@ -453,11 +463,16 @@ struct S_GameMenuEntry { uint8_t difficulty_tag; // 0x0A = Ep3; else difficulty + 0x22 (so 0x25 = Ult) uint8_t num_players; ptext name; - uint8_t episode; // 40 = Ep1, 41 = Ep2, 43 = Ep4. Ignored on Ep3 + // The episode field is used differently by different versions: + // - On DC v1, PC, and GC Episode 3, the value is ignored. + // - On DC v2, 1 means v1 players can't join the game, and 0 means they can. + // - On GC Ep1&2, 0x40 means Episode 1, and 0x41 means Episode 2. + // - On BB, 0x40/0x41 mean Episodes 1/2 as on GC, and 0x43 means Episode 4. + uint8_t episode; uint8_t flags; // 02 = locked, 04 = disabled (BB), 10 = battle, 20 = challenge }; struct S_GameMenuEntry_PC_BB_08 : S_GameMenuEntry { }; -struct S_GameMenuEntry_V3_08_Ep3_E6 : S_GameMenuEntry { }; +struct S_GameMenuEntry_DC_V3_08_Ep3_E6 : S_GameMenuEntry { }; // 09 (C->S): Menu item info request // Server will respond with an 11 command, or an A3 or A5 if the specified menu @@ -480,6 +495,7 @@ struct C_MenuItemInfoRequest_09 { // There is a failure mode in the command handlers on PC and V3 that causes the // thread receiving the command to loop infinitely doing nothing, effectively // softlocking the game. +// TODO: Check if this command exists on DC v1/v2. struct S_Unknown_PC_0E { parray unknown_a1; @@ -488,7 +504,7 @@ struct S_Unknown_PC_0E { }; struct S_Unknown_GC_0E { - PlayerLobbyDataGC lobby_data[4]; // This type is a guess + PlayerLobbyDataDCGC lobby_data[4]; // This type is a guess struct UnknownA0 { uint8_t unknown_a1[2]; le_uint16_t unknown_a2; @@ -546,6 +562,7 @@ struct C_MenuSelection_PC_BB_10_Flag03 : C_MenuSelection_10_Flag03 { } // Same format as 01 command. // 12 (S->C): Valid but ignored (PC/V3/BB) +// TODO: Check if this command exists on DC v1/v2. // 13 (S->C): Write online quest file // Used for downloading online quests. For download quests (to be saved to the @@ -561,9 +578,9 @@ struct S_WriteFile_13_A7 { le_uint32_t data_size; }; -// 13 (C->S): Confirm file write +// 13 (C->S): Confirm file write (V3/BB) // Client sends this in response to each 13 sent by the server. It appears these -// are only sent by V3 and BB - PSO PC does not send these. +// are only sent by V3 and BB - PSO DC and PC do not send these. // This structure is for documentation only; newserv ignores these. // header.flag = file chunk index (same as in the 13/A7 sent by the server) @@ -572,8 +589,12 @@ struct C_WriteFileConfirmation_V3_BB_13_A7 { }; // 14 (S->C): Valid but ignored (PC/V3/BB) +// TODO: Check if this command exists on DC v1/v2. + // 15: Invalid command + // 16 (S->C): Valid but ignored (PC/V3/BB) +// TODO: Check if this command exists on DC v1/v2. // 17 (S->C): Start encryption at login server (except on BB) // Same format as 02 command, but a different copyright string. @@ -588,9 +609,12 @@ struct C_WriteFileConfirmation_V3_BB_13_A7 { // 18 (S->C): License verification result (PC/V3) // Behaves exactly the same as 9A (S->C). No arguments except header.flag. +// TODO: Check if this command exists on DC v1/v2. // 19 (S->C): Reconnect to different address -// Client will disconnect, and reconnect to the given address/port. +// Client will disconnect, and reconnect to the given address/port. Encryption +// will be disabled on the new connection; the server should send an appropriate +// command to enable it when the client connects. // Note: PSO XB seems to ignore the address field, which makes sense given its // networking architecture. @@ -600,7 +624,7 @@ struct S_Reconnect_19 { le_uint16_t unused; }; -// Because PSO PC and some versions of PSO GC use the same port but different +// Because PSO PC and some versions of PSO DC/GC use the same port but different // protocols, we use a specially-crafted 19 command to send them to two // different ports depending on the client version. I first saw this technique // used by Schthack; I don't know if it was his original creation. @@ -618,7 +642,7 @@ struct S_ReconnectSplit_19 { }; // 1A (S->C): Large message box -// On V3, client will usually respond with a D6 command (see D6 for more +// On V3, client will sometimes respond with a D6 command (see D6 for more // information). // Contents are plain text (char on DC/V3, char16_t on PC/BB). There must be at // least one null character ('\0') before the end of the command data. @@ -629,7 +653,10 @@ struct S_ReconnectSplit_19 { // between this command and the D5 command. // 1B (S->C): Valid but ignored (PC/V3) +// TODO: Check if this command exists on DC v1/v2. + // 1C (S->C): Valid but ignored (PC/V3) +// TODO: Check if this command exists on DC v1/v2. // 1D: Ping // No arguments @@ -640,14 +667,14 @@ struct S_ReconnectSplit_19 { // 1F (C->S): Request information menu // No arguments -// This command is used in PSO PC. It exists in V3 as well but is apparently -// unused. +// This command is used in PSO DC and PC. It exists in V3 as well but is +// apparently unused. // 1F (S->C): Information menu // Same format and usage as 07 command, except: // - The menu title will say "Information" instead of "Ship Select". -// - There is no way to request information before selecting a menu item (the -// client will not send 09 commands). +// - There is no way to request details before selecting a menu item (the client +// will not send 09 commands). // - The player can press a button (B on GC, for example) to close the menu // without selecting anything, unlike the ship select menu. The client does // not send anything when this happens. @@ -766,8 +793,16 @@ struct S_GuildCardSearchResult_BB_41 // Unlike the A6 command, the client will react to a 44 command only if the // filename ends in .bin or .dat. +struct S_OpenFile_DC_44_A6 { + ptext name; // Should begin with "PSO/" + parray unused; + uint8_t flags; + ptext filename; + le_uint32_t file_size; +}; + struct S_OpenFile_PC_V3_44_A6 { - ptext name; + ptext name; // Should begin with "PSO/" parray unused; le_uint16_t flags; // 0 = download quest, 2 = online quest, 3 = Episode 3 ptext filename; @@ -792,6 +827,7 @@ struct S_OpenFile_BB_44_A6 { // 44 (C->S): Confirm open file // Client sends this in response to each 44 sent by the server. // This structure is for documentation only; newserv ignores these. +// TODO: Is this command sent by DC/PC clients? // header.flag = quest number (sort of - seems like the client just echoes // whatever the server sent in its header.flag field. Also quest numbers can be @@ -836,10 +872,10 @@ struct C_OpenFileConfirmation_44_A6 { // the client will exhibit undefined behavior. // 61 (C->S): Player data -// See PSOPlayerDataPC, PSOPlayerDataV3, and PSOPlayerDataBB in Player.hh for -// this command's format. header.flag specifies the format version, which is -// related to (but not identical to) the game's major version. For example, the -// format version is 02 on PSO PC, 03 on PSO GC, XB, and BB, and 04 on Ep3. +// See the PSOPlayerData structs in Player.hh for this command's format. +// header.flag specifies the format version, which is related to (but not +// identical to) the game's major version. For example, the format version is 01 +// on DC v1, 02 on PSO PC, 03 on PSO GC, XB, and BB, and 04 on Ep3. // Upon joining a game, the client assigns inventory item IDs sequentially as // (0x00010000 + (0x00200000 * lobby_client_id) + x). So, for example, player // 3's 8th item's ID would become 0x00610007. The item IDs from the last game @@ -882,26 +918,28 @@ struct S_JoinGame { uint8_t section_id; uint8_t challenge_mode; le_uint32_t rare_seed; + // Note: The 64 command for PSO DC ends here (the next 4 fields are ignored). + // newserv sends them anyway for code simplicity reasons. uint8_t episode; uint8_t unused2; // Should be 1 for PSO PC? uint8_t solo_mode; uint8_t unused3; }; -struct S_JoinGame_PC_64 : S_JoinGame { }; -struct S_JoinGame_GC_64 : S_JoinGame { }; +struct S_JoinGame_PC_64 : S_JoinGame { }; +struct S_JoinGame_DC_GC_64 : S_JoinGame { }; -struct S_JoinGame_GC_Ep3_64 : S_JoinGame_GC_64 { +struct S_JoinGame_GC_Ep3_64 : S_JoinGame_DC_GC_64 { // This field is only present if the game (and client) is Episode 3. Similarly // to lobby_data in the base struct, all four of these are always present and // they are filled in in slot positions. struct { PlayerInventory inventory; - PlayerDispDataPCV3 disp; + PlayerDispDataDCPCV3 disp; } players_ep3[4]; }; -struct S_JoinGame_XB_64 : S_JoinGame { +struct S_JoinGame_XB_64 : S_JoinGame { parray unknown_a1; }; @@ -920,7 +958,7 @@ struct S_JoinLobby { uint8_t unknown_a1; uint8_t event; uint8_t unknown_a2; - parray unknown_a3; + le_uint32_t unused; struct Entry { LobbyDataT lobby_data; PlayerInventory inventory; @@ -935,9 +973,9 @@ struct S_JoinLobby { } }; struct S_JoinLobby_PC_65_67_68 - : S_JoinLobby { }; -struct S_JoinLobby_GC_65_67_68 - : S_JoinLobby { }; + : S_JoinLobby { }; +struct S_JoinLobby_DC_GC_65_67_68 + : S_JoinLobby { }; struct S_JoinLobby_BB_65_67_68 : S_JoinLobby { }; @@ -955,7 +993,7 @@ struct S_JoinLobby_XB_65_67_68 { struct Entry { PlayerLobbyDataXB lobby_data; PlayerInventory inventory; - PlayerDispDataPCV3 disp; + PlayerDispDataDCPCV3 disp; }; // Note: not all of these will be filled in and sent if the lobby isn't full // (the command size will be shorter than this struct's size) @@ -1022,6 +1060,7 @@ struct S_LeaveLobby_66_69_Ep3_E9 { // 7F: Invalid command // 80 (S->C): Ignored (PC/V3) +// TODO: Check if this command exists on DC v1/v2. struct S_Unknown_PC_V3_80 { le_uint32_t which; // Expected to be in the range 00-0B... maybe client ID? @@ -1050,7 +1089,7 @@ struct SC_SimpleMail_81 { }; struct SC_SimpleMail_PC_81 : SC_SimpleMail_81 { }; -struct SC_SimpleMail_V3_81 : SC_SimpleMail_81 { }; +struct SC_SimpleMail_DC_V3_81 : SC_SimpleMail_81 { }; struct SC_SimpleMail_BB_81 { le_uint32_t player_tag; @@ -1092,6 +1131,10 @@ struct C_LobbySelection_84 { // 87: Invalid command // 88 (S->C): Update lobby arrows +// If this command is sent while a client is joining a lobby, the client may +// ignore it. For this reason, the server should wait a few seconds after a +// client joins a lobby before sending an 88 command. +// This command is not supported on DC v1. // Command is a list of these; header.flag is the entry count. There should // be an update for every player in the lobby in this command, even if their @@ -1103,7 +1146,7 @@ struct S_ArrowUpdateEntry_88 { }; // The arrow color values are: -// 00 - none +// any number not specified below (including 00) - none // 01 - red // 02 - blue // 03 - green @@ -1116,7 +1159,6 @@ struct S_ArrowUpdateEntry_88 { // 0A - white // 0B - white // 0C - black -// anything else - none // 89 (C->S): Set lobby arrow // header.flag = arrow color number (see above); no other arguments. @@ -1138,12 +1180,13 @@ struct S_ArrowUpdateEntry_88 { // 8E: Invalid command // 8F: Invalid command -// 90 (C->S): Legacy login (PC/V3) -// From looking at Sylverant source, it appears this command is used during the -// DC login sequence. If a V3 client receives a 91 command, however, it will -// also send a 90 in response, though the contents will be blank (all zeroes). +// 90 (C->S): V1 login (DC/PC/V3) +// This command is used during the DCv1 login sequence; a DCv1 client will +// respond to a 17 command with an (encrypted) 90. If a V3 client receives a 91 +// command, however, it will also send a 90 in response, though the contents +// will be blank (all zeroes). -struct C_LegacyLogin_V3_90 { +struct C_LoginV1_DC_PC_V3_90 { ptext serial_number; ptext access_key; parray unused; @@ -1157,27 +1200,44 @@ struct C_LegacyLogin_V3_90 { // command. On versions that support it, this is strictly less useful than the // 17 command. +// 92 (C->S): Register (DC) + +struct C_RegisterV1_DC_92 { + parray unknown_a1; + uint8_t unknown_a2; + uint8_t language; // TODO: This is a guess; verify it + uint8_t unknown_a3[2]; + ptext hardware_id; + parray unused1; + ptext email; // According to Sylverant documentation + parray unused2; +}; + // 92 (S->C): Register result (non-BB) // Same format and usage as 9C (S->C) command. // 93 (C->S): Log in (DCv1) -struct C_Login_DCv1_93 { +struct C_LoginV1_DC_93 { le_uint32_t player_tag; le_uint32_t guild_card_number; le_uint32_t unknown_a1; le_uint32_t unknown_a2; le_uint32_t sub_version; uint8_t unknown_a3; // Probably is_extended - uint8_t language_code; - uint8_t unused1[2]; + uint8_t language; + parray unused1; ptext serial_number; ptext access_key; // Note: The hardware_id field is likely shorter than this (only 8 bytes // appear to actually be used). ptext hardware_id; ptext name; - uint8_t unused2[2]; + parray unused2; +}; + +struct C_LoginExtendedV1_DC_93 : C_LoginV1_DC_93 { + parray unused3; }; // 93 (C->S): Log in (BB) @@ -1229,6 +1289,7 @@ struct C_Login_BB_93 { // Client will respond with a 61 command. // 96 (C->S): Character save information +// TODO: Check if this command exists on DC v1/v2. struct C_CharSaveInfo_V3_BB_96 { // This field appears to be a checksum or random stamp of some sort; it seems @@ -1259,6 +1320,7 @@ struct C_CharSaveInfo_V3_BB_96 { // No arguments // 9A (C->S): Initial login (no password or client config) +// Not used on DCv1 - that version uses 90 instead. struct C_Login_DC_PC_V3_9A { ptext v1_serial_number; @@ -1295,6 +1357,7 @@ struct C_Login_DC_PC_V3_9A { // 9B (S->C): Secondary server init (non-BB) // Behaves exactly the same as 17 (S->C). +// TODO: Check if this command exists on DC v1/v2. // 9B (S->C): Secondary server init (BB) // Format is the same as 03 (and the client uses the same encryption afterward). @@ -1330,11 +1393,13 @@ struct C_Register_BB_9C { }; // 9C (S->C): Register result -// The only possible error here seems to be wrong password (127) which is -// displayed if the header.flag field is zero. If header.flag is nonzero, the -// client proceeds with the login procedure by sending a 9D/9E. +// On GC, the only possible error here seems to be wrong password (127) which is +// displayed if the header.flag field is zero. On DCv2/PC, the error text says +// something like "registration failed" instead. If header.flag is nonzero, the +// client proceeds with the login procedure by sending a 9D or 9E. -// 9D (C->S): Log in without client config (PC/GC) +// 9D (C->S): Log in without client config (DCv2/PC/GC) +// Not used on DCv1 - that version uses 93 instead. // Not used on most versions of V3 - the client sends 9E instead. The one // type of PSO V3 that uses 9D is the Trial Edition of Episodes 1&2. // The extended version of this command is sent if the client has not yet @@ -1350,7 +1415,7 @@ struct C_Login_MeetUserExtension { ptext target_player_name; }; -struct C_Login_PC_GC_9D { +struct C_Login_DC_PC_GC_9D { le_uint32_t player_tag; // 0x00010000 if guild card is set (via 04) le_uint32_t guild_card_number; // 0xFFFFFFFF if not set le_uint64_t unused; @@ -1366,15 +1431,16 @@ struct C_Login_PC_GC_9D { ptext access_key2; // On XB, this is the XBL user ID ptext name; }; -struct C_LoginExtended_PC_GC_9D : C_Login_PC_GC_9D { +struct C_LoginExtended_DC_PC_GC_9D : C_Login_DC_PC_GC_9D { C_Login_MeetUserExtension extension; }; // 9E (C->S): Log in with client config (V3/BB) +// Not used on GC Episodes 1&2 Trial Edition. // The extended version of this command is used in the same circumstances as // when PSO PC uses the extended version of the 9D command. -struct C_Login_GC_9E : C_Login_PC_GC_9D { +struct C_Login_GC_9E : C_Login_DC_PC_GC_9D { union ClientConfigFields { ClientConfig cfg; parray data; @@ -1424,6 +1490,8 @@ struct C_LoginExtended_BB_9E { // A0 (C->S): Change ship // This structure is for documentation only; newserv ignores the arguments here. +// TODO: This structore is valid for GC clients; check if this command has the +// same arguments on DC/PC. struct C_ChangeShipOrBlock_A0_A1 { le_uint32_t player_tag; @@ -1457,7 +1525,7 @@ struct S_QuestMenuEntry { ptext short_description; }; struct S_QuestMenuEntry_PC_A2_A4 : S_QuestMenuEntry { }; -struct S_QuestMenuEntry_GC_A2_A4 : S_QuestMenuEntry { }; +struct S_QuestMenuEntry_DC_GC_A2_A4 : S_QuestMenuEntry { }; struct S_QuestMenuEntry_XB_A2_A4 : S_QuestMenuEntry { }; struct S_QuestMenuEntry_BB_A2_A4 : S_QuestMenuEntry { }; @@ -1498,10 +1566,15 @@ struct S_QuestMenuEntry_BB_A2_A4 : S_QuestMenuEntry { }; // No arguments // This command is sent when the in-game quest menu (A2) is closed. When the // download quest menu is closed, either by downloading a quest or canceling, -// the client sends A0 instead. +// the client sends A0 instead. The existance of the A0 response on the download +// case makes sense, because the client may not be in a lobby and the server may +// need to send another menu or redirect the client. But for the online quest +// menu, the client is already in a game and can move normally after canceling +// the quest menu, so it's not obvious why A9 is needed at all. newserv (and +// probably all other private servers) ignores it. // Curiously, PSO GC sends uninitialized data in the flag argument. -// AA (C->S): Update quest statistics +// AA (C->S): Update quest statistics (V3/BB) // This command is used in Maximum Attack 2, but its format is unlikely to be // specific to that quest. The structure here represents the only instance I've // seen so far. @@ -1509,7 +1582,7 @@ struct S_QuestMenuEntry_BB_A2_A4 : S_QuestMenuEntry { }; // This command is likely never sent by PSO GC Episodes 1&2 Trial Edition, // because the following command (AB) is definitely not valid on that version. -struct C_UpdateQuestStatistics_AA { +struct C_UpdateQuestStatistics_V3_BB_AA { le_uint16_t quest_internal_id; le_uint16_t unused; le_uint16_t request_token; @@ -1520,12 +1593,12 @@ struct C_UpdateQuestStatistics_AA { parray unknown_a3; }; -// AB (S->C): Confirm update quest statistics +// AB (S->C): Confirm update quest statistics (V3/BB) // This command is not valid on PSO GC Episodes 1&2 Trial Edition. // TODO: Does this command have a different meaning in Episode 3? Is it used at // all there, or is the handler an undeleted vestige from Episodes 1&2? -struct S_ConfirmUpdateQuestStatistics_AB { +struct S_ConfirmUpdateQuestStatistics_V3_BB_AB { le_uint16_t unknown_a1; // 0 be_uint16_t unknown_a2; // Probably actually unused le_uint16_t request_token; // Should match token sent in AA command @@ -1551,6 +1624,7 @@ struct S_ConfirmUpdateQuestStatistics_AB { // Same format as 01 command. // The message appears as an overlay on the right side of the screen. The player // doesn't do anything to dismiss it; it will disappear after a few seconds. +// TODO: Check if this command exists on DC v1/v2. // B1 (C->S): Request server time // No arguments @@ -1590,8 +1664,8 @@ struct S_ExecuteCode_B2 { template struct S_ExecuteCode_Footer_B2 { - // Relocations is a list of words (le_uint16_t on PC/XB/BB, be_uint16_t on GC) - // containing the number of doublewords (uint32_t) to skip for each + // Relocations is a list of words (le_uint16_t on DC/PC/XB/BB, be_uint16_t on + // GC) containing the number of doublewords (uint32_t) to skip for each // relocation. The relocation pointer starts immediately after the // checksum_size field in the header, and advances by the value of one // relocation word (times 4) before each relocation. At each relocated @@ -1619,13 +1693,14 @@ struct S_ExecuteCode_Footer_B2 { }; struct S_ExecuteCode_Footer_GC_B2 : S_ExecuteCode_Footer_B2 { }; -struct S_ExecuteCode_Footer_PC_XB_BB_B2 +struct S_ExecuteCode_Footer_DC_PC_XB_BB_B2 : S_ExecuteCode_Footer_B2 { }; // B3 (C->S): Execute code and/or checksum memory result // Not used on versions that don't support the B2 command (see above). struct C_ExecuteCodeResult_B3 { + // On DC, return_value has the value in r0 when the function returns. // On PC, return_value is always 0. // On GC, return_value has the value in r3 when the function returns. // On XB and BB, return_value has the value in eax when the function returns. @@ -1648,7 +1723,7 @@ struct S_RankUpdate_GC_Ep3_B7 { le_uint32_t jukebox_songs_unlocked; }; -// B7 (C->S): Confirm rank update +// B7 (C->S): Confirm rank update (Episode 3) // No arguments // The client sends this after it receives a B7 from the server. @@ -1719,16 +1794,17 @@ struct S_Unknown_GC_Ep3_BB { // C0 (S->C): Choice search options // Command is a list of these; header.flag is the entry count (incl. top-level). -template +template struct S_ChoiceSearchEntry { // Category IDs are nonzero; if the high byte of the ID is nonzero then the // category can be set by the user at any time; otherwise it can't. - le_uint16_t parent_category_id; // 0 for top-level categories - le_uint16_t category_id; + ItemIDT parent_category_id; // 0 for top-level categories + ItemIDT category_id; ptext text; }; -struct S_ChoiceSearchEntry_DC_V3_C0 : S_ChoiceSearchEntry { }; -struct S_ChoiceSearchEntry_PC_BB_C0 : S_ChoiceSearchEntry { }; +struct S_ChoiceSearchEntry_DC_C0 : S_ChoiceSearchEntry { }; +struct S_ChoiceSearchEntry_V3_C0 : S_ChoiceSearchEntry { }; +struct S_ChoiceSearchEntry_PC_BB_C0 : S_ChoiceSearchEntry { }; // Top-level categories are things like "Level", "Class", etc. // Choices for each top-level category immediately follow the category, so @@ -1760,7 +1836,7 @@ struct C_CreateGame { // players; if set to 1, it's v2-only. uint8_t episode; // 1-4 on V3+ (3 on Episode 3); unused on DC/PC }; -struct C_CreateGame_DC_V3_C1_Ep3_EC : C_CreateGame { }; +struct C_CreateGame_DC_V3_0C_C1_Ep3_EC : C_CreateGame { }; struct C_CreateGame_PC_C1 : C_CreateGame { }; struct C_CreateGame_BB_C1 : C_CreateGame { @@ -1771,28 +1847,24 @@ struct C_CreateGame_BB_C1 : C_CreateGame { // C2 (C->S): Set choice search parameters // Server does not respond. -struct C_SetChoiceSearchParameters_C2 { - le_uint16_t disabled; // 0 = enabled, 1 = disabled +template +struct C_ChoiceSearchSelections_C2_C3 { + le_uint16_t disabled; // 0 = enabled, 1 = disabled. Unused for command C3 le_uint16_t unused; struct Entry { - le_uint16_t parent_category_id; - le_uint16_t category_id; + ItemIDT parent_category_id; + ItemIDT category_id; }; Entry entries[0]; }; +struct C_ChoiceSearchSelections_DC_C2_C3 : C_ChoiceSearchSelections_C2_C3 { }; +struct C_ChoiceSearchSelections_PC_V3_BB_C2_C3 : C_ChoiceSearchSelections_C2_C3 { }; + // C3 (C->S): Execute choice search +// Same format as C2. The disabled field is unused. // Server should respond with a C4 command. -struct C_ExecuteChoiceSearch_C3 { - le_uint32_t unknown; - struct Entry { - le_uint16_t parent_category_id; - le_uint16_t category_id; - }; - Entry entries[0]; -}; - // C4 (S->C): Choice search results // Command is a list of these; header.flag is the entry count @@ -1845,7 +1917,7 @@ struct C_SetBlockedSenders_BB_C6 : C_SetBlockedSenders_C6<28> { }; // No arguments // Server does not respond -// C9 (C->S): Unknown (XBOX) +// C9 (C->S): Unknown (XB) // No arguments except header.flag // C9: Broadcast command (Episode 3) @@ -2300,9 +2372,9 @@ struct C_CreateSpectatorTeam_GC_Ep3_E7 { struct S_Unknown_GC_Ep3_E8 { parray unknown_a1; struct PlayerEntry { - PlayerLobbyDataGC lobby_data; + PlayerLobbyDataDCGC lobby_data; PlayerInventory inventory; - PlayerDispDataPCV3 disp; + PlayerDispDataDCPCV3 disp; }; PlayerEntry players[4]; parray unknown_a2; @@ -2484,9 +2556,9 @@ struct C_Unknown_BB_1EEA { struct S_Unknown_GC_Ep3_EB { parray unknown_a1; struct PlayerEntry { - PlayerLobbyDataGC lobby_data; + PlayerLobbyDataDCGC lobby_data; PlayerInventory inventory; - PlayerDispDataPCV3 disp; + PlayerDispDataDCPCV3 disp; }; PlayerEntry players[12]; }; @@ -2673,8 +2745,8 @@ struct G_SwitchStateChanged_6x05 { // 06: Send guild card -template -struct G_SendGuildCard_PC_V3 { +template +struct G_SendGuildCard_DC_PC_V3 { uint8_t subcommand; uint8_t size; le_uint16_t unused; @@ -2682,14 +2754,18 @@ struct G_SendGuildCard_PC_V3 { le_uint32_t guild_card_number; ptext name; ptext description; - parray unused2; + parray unused2; uint8_t present; uint8_t present2; uint8_t section_id; uint8_t char_class; }; -struct G_SendGuildCard_PC_6x06 : G_SendGuildCard_PC_V3 { }; -struct G_SendGuildCard_V3_6x06 : G_SendGuildCard_PC_V3 { }; + +struct G_SendGuildCard_DC_6x06 : G_SendGuildCard_DC_PC_V3 { + parray unused3; +}; +struct G_SendGuildCard_PC_6x06 : G_SendGuildCard_DC_PC_V3 { }; +struct G_SendGuildCard_V3_6x06 : G_SendGuildCard_DC_PC_V3 { }; struct G_SendGuildCard_BB_6x06 { uint8_t subcommand; @@ -2845,12 +2921,15 @@ struct G_PlayerDropItem_6x2A { // 2B: Create item in inventory (e.g. via tekker or bank withdraw) -struct G_PlayerCreateInventoryItem_6x2B { +struct G_PlayerCreateInventoryItem_DC_6x2B { uint8_t command; uint8_t size; uint8_t client_id; uint8_t unused; ItemData item; +}; + +struct G_PlayerCreateInventoryItem_PC_V3_BB_6x2B : G_PlayerCreateInventoryItem_DC_6x2B { le_uint32_t unknown; }; @@ -2988,7 +3067,7 @@ struct G_PickUpItemRequest_6x5A { // 5D: Drop meseta or stacked item -struct G_DropStackedItem_6x5D { +struct G_DropStackedItem_DC_6x5D { uint8_t subcommand; uint8_t size; uint8_t client_id; @@ -2998,6 +3077,9 @@ struct G_DropStackedItem_6x5D { le_float x; le_float z; ItemData data; +}; + +struct G_DropStackedItem_PC_V3_BB_6x5D : G_DropStackedItem_DC_6x5D { le_uint32_t unused3; }; @@ -3013,7 +3095,7 @@ struct G_BuyShopItem_6x5E { // 5F: Drop item from box/enemy -struct G_DropItem_6x5F { +struct G_DropItem_DC_6x5F { uint8_t subcommand; uint8_t size; le_uint16_t unused; @@ -3024,12 +3106,15 @@ struct G_DropItem_6x5F { le_float z; le_uint32_t unused2; ItemData data; +}; + +struct G_DropItem_PC_V3_BB_6x5F : G_DropItem_DC_6x5F { le_uint32_t unused3; }; // 60: Request for item drop (handled by the server on BB) -struct G_EnemyDropItemRequest_6x60 { +struct G_EnemyDropItemRequest_DC_6x60 { uint8_t command; uint8_t size; le_uint16_t unused; @@ -3038,7 +3123,11 @@ struct G_EnemyDropItemRequest_6x60 { le_uint16_t request_id; le_float x; le_float z; - le_uint64_t unknown; + le_uint32_t unknown_a1; +}; + +struct G_EnemyDropItemRequest_PC_V3_BB_6x60 : G_EnemyDropItemRequest_DC_6x60 { + le_uint32_t unknown_a2; }; // 61: Feed MAG diff --git a/src/FunctionCompiler.cc b/src/FunctionCompiler.cc index 821696f0..525c3bdf 100644 --- a/src/FunctionCompiler.cc +++ b/src/FunctionCompiler.cc @@ -88,7 +88,7 @@ string CompiledFunctionCode::generate_client_command( return this->generate_client_command_t( label_writes, suffix); } else if (this->arch == Architecture::X86) { - return this->generate_client_command_t( + return this->generate_client_command_t( label_writes, suffix); } else { throw logic_error("invalid architecture"); diff --git a/src/Items.cc b/src/Items.cc index 600ca402..bf7972ae 100644 --- a/src/Items.cc +++ b/src/Items.cc @@ -172,7 +172,9 @@ void player_use_item(shared_ptr c, size_t item_index) { } } - bool should_delete_item = true; + // TODO: It appears that on DC, using an item should NOT delete it from the + // player's inventory - the client will send a followup 6x29 to do that. + bool should_delete_item = (c->version() != GameVersion::DC); auto& item = c->game_data.player()->inventory.items[item_index]; if (item.data.data1w[0] == 0x0203) { // technique disk diff --git a/src/Lobby.cc b/src/Lobby.cc index c24721b6..c422e070 100644 --- a/src/Lobby.cc +++ b/src/Lobby.cc @@ -22,7 +22,6 @@ Lobby::Lobby(uint32_t id) section_id(0), episode(1), difficulty(0), - mode(0), random_seed(random_object()), random(new mt19937(this->random_seed)), event(0), diff --git a/src/Lobby.hh b/src/Lobby.hh index cc694e97..49225e49 100644 --- a/src/Lobby.hh +++ b/src/Lobby.hh @@ -28,6 +28,10 @@ struct Lobby { QUEST_IN_PROGRESS = 0x00000200, JOINABLE_QUEST_IN_PROGRESS = 0x00000400, ITEM_TRACKING_ENABLED = 0x00000800, + DC_V2_ONLY = 0x00001000, + BATTLE_MODE = 0x00002000, + CHALLENGE_MODE = 0x00004000, + SOLO_MODE = 0x00008000, // Flags used only for lobbies PUBLIC = 0x00010000, @@ -62,7 +66,6 @@ struct Lobby { uint8_t section_id; uint8_t episode; // 1 = Ep1, 2 = Ep2, 3 = Ep4, 0xFF = Ep3 uint8_t difficulty; - uint8_t mode; std::u16string password; std::u16string name; // This seed is also sent to the client for rare enemy generation diff --git a/src/PSOEncryption.cc b/src/PSOEncryption.cc index 9f90ee79..54b1d15f 100644 --- a/src/PSOEncryption.cc +++ b/src/PSOEncryption.cc @@ -233,9 +233,13 @@ void PSOV2OrV3DetectorEncryption::encrypt(void* data, size_t size, bool advance) bool v2_match = this->v2_matches.count(decrypted_v2); bool v3_match = this->v3_matches.count(decrypted_v3); if (!v2_match && !v3_match) { - throw runtime_error("unable to determine crypt version"); + throw runtime_error(string_printf( + "unable to determine crypt version (v2=%08" PRIX32 ", v3=%08" PRIX32 ")", + decrypted_v2.load(), decrypted_v3.load())); } else if (v2_match && v3_match) { - throw runtime_error("ambiguous crypt version"); + throw runtime_error(string_printf( + "ambiguous crypt version (v2=%08" PRIX32 ", v3=%08" PRIX32 ")", + decrypted_v2.load(), decrypted_v3.load())); } else if (v2_match) { this->active_crypt = move(v2_crypt); } else { diff --git a/src/Player.cc b/src/Player.cc index 4c89db6d..18f19ab9 100644 --- a/src/Player.cc +++ b/src/Player.cc @@ -35,7 +35,7 @@ static FileContentsCache player_files_cache(300 * 1000 * 1000); PlayerStats::PlayerStats() noexcept : atp(0), mst(0), evp(0), hp(0), dfp(0), ata(0), lck(0) { } -PlayerDispDataPCV3::PlayerDispDataPCV3() noexcept +PlayerDispDataDCPCV3::PlayerDispDataDCPCV3() noexcept : level(0), experience(0), meseta(0), @@ -59,8 +59,8 @@ PlayerDispDataPCV3::PlayerDispDataPCV3() noexcept proportion_x(0), proportion_y(0) { } -void PlayerDispDataPCV3::enforce_pc_limits() { - // PC has fewer classes, so we'll substitute some here +void PlayerDispDataDCPCV3::enforce_v2_limits() { + // V1/V2 have fewer classes, so we'll substitute some here if (this->char_class == 11) { this->char_class = 0; // FOmar -> HUmar } else if (this->char_class == 10) { @@ -78,7 +78,7 @@ void PlayerDispDataPCV3::enforce_pc_limits() { this->version = 2; } -PlayerDispDataBB PlayerDispDataPCV3::to_bb() const { +PlayerDispDataBB PlayerDispDataDCPCV3::to_bb() const { PlayerDispDataBB bb; bb.stats.atp = this->stats.atp; bb.stats.mst = this->stats.mst; @@ -144,8 +144,8 @@ PlayerDispDataBB::PlayerDispDataBB() noexcept proportion_x(0), proportion_y(0) { } -PlayerDispDataPCV3 PlayerDispDataBB::to_pcv3() const { - PlayerDispDataPCV3 ret; +PlayerDispDataDCPCV3 PlayerDispDataBB::to_dcpcv3() const { + PlayerDispDataDCPCV3 ret; ret.stats.atp = this->stats.atp; ret.stats.mst = this->stats.mst; ret.stats.evp = this->stats.evp; @@ -475,14 +475,14 @@ void ClientGameData::save_player_data() const { } } -void ClientGameData::import_player(const PSOPlayerDataPC& pc) { +void ClientGameData::import_player(const PSOPlayerDataDCPC& pd) { auto player = this->player(); - player->inventory = pc.inventory; - player->disp = pc.disp.to_bb(); + player->inventory = pd.inventory; + player->disp = pd.disp.to_bb(); // TODO: Add these fields to the command structure so we can parse them - // info_board = pc.info_board; - // blocked_senders = pc.blocked_senders; - // auto_reply = pc.auto_reply; + // info_board = pd.info_board; + // blocked_senders = pd.blocked_senders; + // auto_reply = pd.auto_reply; } void ClientGameData::import_player(const PSOPlayerDataV3& gc) { @@ -567,7 +567,7 @@ XBNetworkLocation::XBNetworkLocation() noexcept PlayerLobbyDataPC::PlayerLobbyDataPC() noexcept : player_tag(0), guild_card(0), ip_address(0x7F000001), client_id(0) { } -PlayerLobbyDataGC::PlayerLobbyDataGC() noexcept +PlayerLobbyDataDCGC::PlayerLobbyDataDCGC() noexcept : player_tag(0), guild_card(0), ip_address(0x7F000001), client_id(0) { } PlayerLobbyDataXB::PlayerLobbyDataXB() noexcept @@ -584,7 +584,7 @@ void PlayerLobbyDataPC::clear() { ptext name; } -void PlayerLobbyDataGC::clear() { +void PlayerLobbyDataDCGC::clear() { this->player_tag = 0; this->guild_card = 0; this->ip_address = 0; diff --git a/src/Player.hh b/src/Player.hh index d62e60db..f5802853 100644 --- a/src/Player.hh +++ b/src/Player.hh @@ -96,8 +96,7 @@ struct PendingItemTrade { struct PlayerDispDataBB; -// PC/V3 player appearance and stats data -struct PlayerDispDataPCV3 { // 0xD0 bytes +struct PlayerDispDataDCPCV3 { // 0xD0 bytes PlayerStats stats; parray unknown_a1; le_uint32_t level; @@ -131,9 +130,9 @@ struct PlayerDispDataPCV3 { // 0xD0 bytes // that has a fixed-size array. If we didn't define this constructor, the // trivial fields in that array's members would be uninitialized, and we could // send uninitialized memory to the client. - PlayerDispDataPCV3() noexcept; + PlayerDispDataDCPCV3() noexcept; - void enforce_pc_limits(); + void enforce_v2_limits(); PlayerDispDataBB to_bb() const; } __attribute__((packed)); @@ -202,8 +201,8 @@ struct PlayerDispDataBB { PlayerDispDataBB() noexcept; - inline void enforce_pc_limits() { } - PlayerDispDataPCV3 to_pcv3() const; + inline void enforce_v2_limits() { } + PlayerDispDataDCPCV3 to_dcpcv3() const; PlayerDispDataBBPreview to_preview() const; void apply_preview(const PlayerDispDataBBPreview&); } __attribute__((packed)); @@ -286,14 +285,14 @@ struct PlayerLobbyDataPC { void clear(); } __attribute__((packed)); -struct PlayerLobbyDataGC { +struct PlayerLobbyDataDCGC { le_uint32_t player_tag; le_uint32_t guild_card; be_uint32_t ip_address; le_uint32_t client_id; ptext name; - PlayerLobbyDataGC() noexcept; + PlayerLobbyDataDCGC() noexcept; void clear(); } __attribute__((packed)); @@ -371,14 +370,14 @@ struct PlayerChallengeDataBB { -struct PSOPlayerDataPC { // For command 61 +struct PSOPlayerDataDCPC { // For command 61 PlayerInventory inventory; - PlayerDispDataPCV3 disp; + PlayerDispDataDCPCV3 disp; } __attribute__((packed)); struct PSOPlayerDataV3 { // For command 61 PlayerInventory inventory; - PlayerDispDataPCV3 disp; + PlayerDispDataDCPCV3 disp; PlayerChallengeDataV3 challenge_data; parray unknown; ptext info_board; @@ -392,7 +391,7 @@ struct PSOPlayerDataV3 { // For command 61 struct PSOPlayerDataGCEp3 { // For command 61 PlayerInventory inventory; - PlayerDispDataPCV3 disp; + PlayerDispDataDCPCV3 disp; PlayerChallengeDataV3 challenge_data; parray unknown; ptext info_board; @@ -521,7 +520,7 @@ public: void load_player_data(); void save_player_data() const; - void import_player(const PSOPlayerDataPC& pd); + void import_player(const PSOPlayerDataDCPC& pd); void import_player(const PSOPlayerDataV3& pd); void import_player(const PSOPlayerDataBB& pd); // Note: this function is not const because it can cause player and account @@ -542,20 +541,20 @@ DestT convert_player_disp_data(const SrcT&) { } template <> -inline PlayerDispDataPCV3 convert_player_disp_data( - const PlayerDispDataPCV3& src) { +inline PlayerDispDataDCPCV3 convert_player_disp_data( + const PlayerDispDataDCPCV3& src) { return src; } template <> -inline PlayerDispDataPCV3 convert_player_disp_data( +inline PlayerDispDataDCPCV3 convert_player_disp_data( const PlayerDispDataBB& src) { - return src.to_pcv3(); + return src.to_dcpcv3(); } template <> -inline PlayerDispDataBB convert_player_disp_data( - const PlayerDispDataPCV3& src) { +inline PlayerDispDataBB convert_player_disp_data( + const PlayerDispDataDCPCV3& src) { return src.to_bb(); } diff --git a/src/ProxyCommands.cc b/src/ProxyCommands.cc index 95d54780..50f70210 100644 --- a/src/ProxyCommands.cc +++ b/src/ProxyCommands.cc @@ -159,8 +159,12 @@ static HandlerResult process_server_gc_9A(shared_ptr, return HandlerResult::Type::SUPPRESS; } -static HandlerResult process_server_pc_v3_patch_02_17(shared_ptr s, - ProxyServer::LinkedSession& session, uint16_t command, uint32_t flag, string& data) { +static HandlerResult process_server_dc_pc_v3_patch_02_17( + shared_ptr s, + ProxyServer::LinkedSession& session, + uint16_t command, + uint32_t flag, + string& data) { if (session.version == GameVersion::PATCH && command == 0x17) { throw invalid_argument("patch server sent 17 server init"); } @@ -183,7 +187,7 @@ static HandlerResult process_server_pc_v3_patch_02_17(shared_ptr s, session.server_channel.crypt_out.reset(new PSOV3Encryption(cmd.client_key)); session.client_channel.crypt_in.reset(new PSOV3Encryption(cmd.client_key)); session.client_channel.crypt_out.reset(new PSOV3Encryption(cmd.server_key)); - } else { // PC or patch server (they both use PC encryption) + } else { // DC, PC, or patch server (they all use V2 encryption) session.server_channel.crypt_in.reset(new PSOV2Encryption(cmd.server_key)); session.server_channel.crypt_out.reset(new PSOV2Encryption(cmd.client_key)); session.client_channel.crypt_in.reset(new PSOV2Encryption(cmd.client_key)); @@ -196,16 +200,20 @@ static HandlerResult process_server_pc_v3_patch_02_17(shared_ptr s, session.log.info("Existing license in linked session"); // This isn't forwarded to the client, so don't recreate the client's crypts - if ((session.version == GameVersion::PATCH) || - (session.version == GameVersion::PC)) { - session.server_channel.crypt_in.reset(new PSOV2Encryption(cmd.server_key)); - session.server_channel.crypt_out.reset(new PSOV2Encryption(cmd.client_key)); - } else if ((session.version == GameVersion::GC) || - (session.version == GameVersion::XB)) { - session.server_channel.crypt_in.reset(new PSOV3Encryption(cmd.server_key)); - session.server_channel.crypt_out.reset(new PSOV3Encryption(cmd.client_key)); - } else { - throw invalid_argument("unsupported version"); + switch (session.version) { + case GameVersion::DC: + case GameVersion::PC: + case GameVersion::PATCH: + session.server_channel.crypt_in.reset(new PSOV2Encryption(cmd.server_key)); + session.server_channel.crypt_out.reset(new PSOV2Encryption(cmd.client_key)); + break; + case GameVersion::GC: + case GameVersion::XB: + session.server_channel.crypt_in.reset(new PSOV3Encryption(cmd.server_key)); + session.server_channel.crypt_out.reset(new PSOV3Encryption(cmd.client_key)); + break; + default: + throw logic_error("unsupported version"); } // Respond with an appropriate login command. We don't let the client do this @@ -216,27 +224,51 @@ static HandlerResult process_server_pc_v3_patch_02_17(shared_ptr s, session.server_channel.send(0x02); return HandlerResult::Type::SUPPRESS; - } else if (session.version == GameVersion::PC) { - C_Login_PC_GC_9D cmd; - if (session.remote_guild_card_number == 0) { - cmd.player_tag = 0xFFFF0000; - cmd.guild_card_number = 0xFFFFFFFF; + } else if ((session.version == GameVersion::DC) || + (session.version == GameVersion::PC)) { + if (session.newserv_client_config.cfg.flags & Client::Flag::DCV1) { + C_LoginV1_DC_93 cmd; + if (session.remote_guild_card_number == 0) { + cmd.player_tag = 0xFFFF0000; + cmd.guild_card_number = 0xFFFFFFFF; + } else { + cmd.player_tag = 0x00010000; + cmd.guild_card_number = session.remote_guild_card_number; + } + cmd.unknown_a1 = 0; + cmd.unknown_a2 = 0; + cmd.sub_version = session.sub_version; + cmd.unknown_a3 = 0; + cmd.language = session.language; + cmd.serial_number = string_printf("%08" PRIX32 "", + session.license->serial_number); + cmd.access_key = session.license->access_key; + cmd.hardware_id = session.hardware_id; + cmd.name = session.character_name; + session.server_channel.send(0x93, 0x00, &cmd, sizeof(cmd)); + return HandlerResult::Type::SUPPRESS; } else { - cmd.player_tag = 0x00010000; - cmd.guild_card_number = session.remote_guild_card_number; + C_Login_DC_PC_GC_9D cmd; + if (session.remote_guild_card_number == 0) { + cmd.player_tag = 0xFFFF0000; + cmd.guild_card_number = 0xFFFFFFFF; + } else { + cmd.player_tag = 0x00010000; + cmd.guild_card_number = session.remote_guild_card_number; + } + cmd.unused = 0xFFFFFFFFFFFF0000; + cmd.sub_version = session.sub_version; + cmd.is_extended = 0; + cmd.language = session.language; + cmd.serial_number = string_printf("%08" PRIX32 "", + session.license->serial_number); + cmd.access_key = session.license->access_key; + cmd.serial_number2 = cmd.serial_number; + cmd.access_key2 = cmd.access_key; + cmd.name = session.character_name; + session.server_channel.send(0x9D, 0x00, &cmd, sizeof(cmd)); + return HandlerResult::Type::SUPPRESS; } - cmd.unused = 0xFFFFFFFFFFFF0000; - cmd.sub_version = session.sub_version; - cmd.is_extended = 0; - cmd.language = session.language; - cmd.serial_number = string_printf("%08" PRIX32 "", - session.license->serial_number); - cmd.access_key = session.license->access_key; - cmd.serial_number2 = cmd.serial_number; - cmd.access_key2 = cmd.access_key; - cmd.name = session.character_name; - session.server_channel.send(0x9D, 0x00, &cmd, sizeof(cmd)); - return HandlerResult::Type::SUPPRESS; } else if (session.version == GameVersion::GC) { if (command == 0x17) { @@ -708,7 +740,9 @@ static HandlerResult process_server_60_62_6C_6D_C9_CB(shared_ptr, session.next_drop_item.data.data1d[0] && (session.version != GameVersion::BB)) { if (data[0] == 0x60) { - const auto& cmd = check_size_t(data); + const auto& cmd = check_size_t(data, + sizeof(G_EnemyDropItemRequest_DC_6x60), + sizeof(G_EnemyDropItemRequest_PC_V3_BB_6x60)); session.next_drop_item.data.id = session.next_item_id++; send_drop_item(session.server_channel, session.next_drop_item.data, true, cmd.area, cmd.x, cmd.z, cmd.request_id); @@ -1020,7 +1054,7 @@ static HandlerResult process_client_40(shared_ptr, template static HandlerResult process_client_81(shared_ptr, ProxyServer::LinkedSession& session, uint16_t, uint32_t, string& data) { - auto& cmd = check_size_t(data); + auto& cmd = check_size_t(data); if (session.license) { if (cmd.from_guild_card_number == session.license->serial_number) { cmd.from_guild_card_number = session.remote_guild_card_number; @@ -1179,17 +1213,17 @@ typedef HandlerResult (*process_command_t)( auto defh = process_default; static process_command_t dc_server_handlers[0x100] = { - /* 00 */ defh, defh, defh, defh, process_server_dc_pc_v3_04, defh, process_server_dc_pc_v3_06, defh, defh, defh, defh, defh, defh, defh, defh, defh, - /* 10 */ defh, defh, defh, process_server_13_A7, defh, defh, defh, defh, defh, process_server_game_19_patch_14, defh, defh, defh, defh, defh, defh, + /* 00 */ defh, defh, process_server_dc_pc_v3_patch_02_17, defh, process_server_dc_pc_v3_04, defh, process_server_dc_pc_v3_06, defh, defh, defh, defh, defh, defh, defh, defh, defh, + /* 10 */ defh, defh, defh, process_server_13_A7, defh, defh, defh, process_server_dc_pc_v3_patch_02_17, defh, process_server_game_19_patch_14, defh, defh, defh, defh, defh, defh, /* 20 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* 30 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, - /* 40 */ defh, process_server_41, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, + /* 40 */ defh, process_server_41, defh, defh, process_server_44_A6, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* 50 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, - /* 60 */ process_server_60_62_6C_6D_C9_CB, defh, process_server_60_62_6C_6D_C9_CB, defh, defh, defh, process_server_66_69, defh, defh, process_server_66_69, defh, defh, process_server_60_62_6C_6D_C9_CB, process_server_60_62_6C_6D_C9_CB, defh, defh, + /* 60 */ process_server_60_62_6C_6D_C9_CB, defh, process_server_60_62_6C_6D_C9_CB, defh, process_server_64, process_server_65_67_68, process_server_66_69, process_server_65_67_68, process_server_65_67_68, process_server_66_69, defh, defh, process_server_60_62_6C_6D_C9_CB, process_server_60_62_6C_6D_C9_CB, defh, defh, /* 70 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* 80 */ defh, defh, defh, defh, defh, defh, defh, defh, process_server_88, defh, defh, defh, defh, defh, defh, defh, /* 90 */ defh, defh, defh, defh, defh, defh, defh, process_server_97, defh, defh, defh, defh, defh, defh, defh, defh, - /* A0 */ defh, defh, defh, defh, defh, defh, defh, process_server_13_A7, defh, defh, defh, defh, defh, defh, defh, defh, + /* A0 */ defh, defh, defh, defh, defh, defh, process_server_44_A6, process_server_13_A7, defh, defh, defh, defh, defh, defh, defh, defh, /* B0 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* C0 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* D0 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, @@ -1197,8 +1231,8 @@ static process_command_t dc_server_handlers[0x100] = { /* F0 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, }; static process_command_t pc_server_handlers[0x100] = { - /* 00 */ defh, defh, process_server_pc_v3_patch_02_17, defh, process_server_dc_pc_v3_04, defh, process_server_dc_pc_v3_06, defh, defh, defh, defh, defh, defh, defh, defh, defh, - /* 10 */ defh, defh, defh, process_server_13_A7, defh, defh, defh, process_server_pc_v3_patch_02_17, defh, process_server_game_19_patch_14, defh, defh, defh, defh, defh, defh, + /* 00 */ defh, defh, process_server_dc_pc_v3_patch_02_17, defh, process_server_dc_pc_v3_04, defh, process_server_dc_pc_v3_06, defh, defh, defh, defh, defh, defh, defh, defh, defh, + /* 10 */ defh, defh, defh, process_server_13_A7, defh, defh, defh, process_server_dc_pc_v3_patch_02_17, defh, process_server_game_19_patch_14, defh, defh, defh, defh, defh, defh, /* 20 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* 30 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* 40 */ defh, process_server_41, defh, defh, process_server_44_A6, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, @@ -1215,15 +1249,15 @@ static process_command_t pc_server_handlers[0x100] = { /* F0 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, }; static process_command_t gc_server_handlers[0x100] = { - /* 00 */ defh, defh, process_server_pc_v3_patch_02_17, defh, process_server_dc_pc_v3_04, defh, process_server_dc_pc_v3_06, defh, defh, defh, defh, defh, defh, defh, defh, defh, - /* 10 */ defh, defh, defh, process_server_13_A7, defh, defh, defh, process_server_pc_v3_patch_02_17, defh, process_server_game_19_patch_14, process_server_v3_1A_D5, defh, defh, defh, defh, defh, + /* 00 */ defh, defh, process_server_dc_pc_v3_patch_02_17, defh, process_server_dc_pc_v3_04, defh, process_server_dc_pc_v3_06, defh, defh, defh, defh, defh, defh, defh, defh, defh, + /* 10 */ defh, defh, defh, process_server_13_A7, defh, defh, defh, process_server_dc_pc_v3_patch_02_17, defh, process_server_game_19_patch_14, process_server_v3_1A_D5, defh, defh, defh, defh, defh, /* 20 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* 30 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* 40 */ defh, process_server_41, defh, defh, process_server_44_A6, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* 50 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, - /* 60 */ process_server_60_62_6C_6D_C9_CB, defh, process_server_60_62_6C_6D_C9_CB, defh, process_server_64, process_server_65_67_68, process_server_66_69, process_server_65_67_68, process_server_65_67_68, process_server_66_69, defh, defh, process_server_60_62_6C_6D_C9_CB, process_server_60_62_6C_6D_C9_CB, defh, defh, + /* 60 */ process_server_60_62_6C_6D_C9_CB, defh, process_server_60_62_6C_6D_C9_CB, defh, process_server_64, process_server_65_67_68, process_server_66_69, process_server_65_67_68, process_server_65_67_68, process_server_66_69, defh, defh, process_server_60_62_6C_6D_C9_CB, process_server_60_62_6C_6D_C9_CB, defh, defh, /* 70 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, - /* 80 */ defh, process_server_81, defh, defh, defh, defh, defh, defh, process_server_88, defh, defh, defh, defh, defh, defh, defh, + /* 80 */ defh, process_server_81, defh, defh, defh, defh, defh, defh, process_server_88, defh, defh, defh, defh, defh, defh, defh, /* 90 */ defh, defh, defh, defh, defh, defh, defh, process_server_97, defh, defh, process_server_gc_9A, defh, defh, defh, defh, defh, /* A0 */ defh, defh, defh, defh, defh, defh, process_server_44_A6, process_server_13_A7, defh, defh, defh, defh, defh, defh, defh, defh, /* B0 */ defh, defh, process_server_B2, defh, defh, defh, defh, defh, process_server_gc_B8, defh, defh, defh, defh, defh, defh, defh, @@ -1233,15 +1267,15 @@ static process_command_t gc_server_handlers[0x100] = { /* F0 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, }; static process_command_t xb_server_handlers[0x100] = { - /* 00 */ defh, defh, process_server_pc_v3_patch_02_17, defh, process_server_dc_pc_v3_04, defh, process_server_dc_pc_v3_06, defh, defh, defh, defh, defh, defh, defh, defh, defh, - /* 10 */ defh, defh, defh, process_server_13_A7, defh, defh, defh, process_server_pc_v3_patch_02_17, defh, process_server_game_19_patch_14, process_server_v3_1A_D5, defh, defh, defh, defh, defh, + /* 00 */ defh, defh, process_server_dc_pc_v3_patch_02_17, defh, process_server_dc_pc_v3_04, defh, process_server_dc_pc_v3_06, defh, defh, defh, defh, defh, defh, defh, defh, defh, + /* 10 */ defh, defh, defh, process_server_13_A7, defh, defh, defh, process_server_dc_pc_v3_patch_02_17, defh, process_server_game_19_patch_14, process_server_v3_1A_D5, defh, defh, defh, defh, defh, /* 20 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* 30 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* 40 */ defh, process_server_41, defh, defh, process_server_44_A6, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* 50 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, - /* 60 */ process_server_60_62_6C_6D_C9_CB, defh, process_server_60_62_6C_6D_C9_CB, defh, process_server_64, process_server_65_67_68, process_server_66_69, process_server_65_67_68, process_server_65_67_68, process_server_66_69, defh, defh, process_server_60_62_6C_6D_C9_CB, process_server_60_62_6C_6D_C9_CB, defh, defh, + /* 60 */ process_server_60_62_6C_6D_C9_CB, defh, process_server_60_62_6C_6D_C9_CB, defh, process_server_64, process_server_65_67_68, process_server_66_69, process_server_65_67_68, process_server_65_67_68, process_server_66_69, defh, defh, process_server_60_62_6C_6D_C9_CB, process_server_60_62_6C_6D_C9_CB, defh, defh, /* 70 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, - /* 80 */ defh, process_server_81, defh, defh, defh, defh, defh, defh, process_server_88, defh, defh, defh, defh, defh, defh, defh, + /* 80 */ defh, process_server_81, defh, defh, defh, defh, defh, defh, process_server_88, defh, defh, defh, defh, defh, defh, defh, /* 90 */ defh, defh, defh, defh, defh, defh, defh, process_server_97, defh, defh, defh, defh, defh, defh, defh, defh, /* A0 */ defh, defh, defh, defh, defh, defh, process_server_44_A6, process_server_13_A7, defh, defh, defh, defh, defh, defh, defh, defh, /* B0 */ defh, defh, process_server_B2, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, @@ -1269,7 +1303,7 @@ static process_command_t bb_server_handlers[0x100] = { /* F0 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, }; static process_command_t patch_server_handlers[0x100] = { - /* 00 */ defh, defh, process_server_pc_v3_patch_02_17, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, + /* 00 */ defh, defh, process_server_dc_pc_v3_patch_02_17, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* 10 */ defh, defh, defh, defh, process_server_game_19_patch_14, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* 20 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* 30 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, @@ -1334,7 +1368,7 @@ static process_command_t gc_client_handlers[0x100] = { /* 50 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* 60 */ process_client_60_62_6C_6D_C9_CB, defh, process_client_60_62_6C_6D_C9_CB, defh, defh, defh, defh, defh, defh, defh, defh, defh, process_client_60_62_6C_6D_C9_CB, process_client_60_62_6C_6D_C9_CB, defh, defh, /* 70 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, - /* 80 */ defh, process_client_81, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, + /* 80 */ defh, process_client_81, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* 90 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* A0 */ process_client_dc_pc_v3_A0_A1, process_client_dc_pc_v3_A0_A1, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* B0 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, @@ -1352,7 +1386,7 @@ static process_command_t xb_client_handlers[0x100] = { /* 50 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* 60 */ process_client_60_62_6C_6D_C9_CB, defh, process_client_60_62_6C_6D_C9_CB, defh, defh, defh, defh, defh, defh, defh, defh, defh, process_client_60_62_6C_6D_C9_CB, process_client_60_62_6C_6D_C9_CB, defh, defh, /* 70 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, - /* 80 */ defh, process_client_81, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, + /* 80 */ defh, process_client_81, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* 90 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* A0 */ process_client_dc_pc_v3_A0_A1, process_client_dc_pc_v3_A0_A1, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, /* B0 */ defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, defh, diff --git a/src/ProxyServer.cc b/src/ProxyServer.cc index 86183951..25090b50 100644 --- a/src/ProxyServer.cc +++ b/src/ProxyServer.cc @@ -186,6 +186,7 @@ void ProxyServer::on_client_connect( switch (version) { case GameVersion::PATCH: throw logic_error("cannot create unlinked patch session"); + case GameVersion::DC: case GameVersion::PC: case GameVersion::GC: case GameVersion::XB: { @@ -196,7 +197,7 @@ void ProxyServer::on_client_connect( session->channel.send(0x02, 0x00, &cmd, sizeof(cmd)); // TODO: Is this actually needed? // bufferevent_flush(session->channel.bev.get(), EV_READ | EV_WRITE, BEV_FLUSH); - if (version == GameVersion::PC) { + if ((version == GameVersion::DC) || (version == GameVersion::PC)) { session->channel.crypt_out.reset(new PSOV2Encryption(server_key)); session->channel.crypt_in.reset(new PSOV2Encryption(client_key)); } else { @@ -261,16 +262,41 @@ void ProxyServer::UnlinkedSession::on_input(Channel& ch, uint16_t command, uint3 string character_name; ClientConfigBB client_config; string login_command_bb; + string hardware_id; try { - if (session->version == GameVersion::PC) { + if (session->version == GameVersion::DC) { + // We should only get a 93 or 9D while the session is unlinked; if we get + // anything else, disconnect + if (command == 0x93) { + const auto& cmd = check_size_t(data); + license = session->server->state->license_manager->verify_pc( + stoul(cmd.serial_number, nullptr, 16), cmd.access_key); + sub_version = cmd.sub_version; + language = cmd.language; + character_name = cmd.name; + hardware_id = cmd.hardware_id; + client_config.cfg.flags |= Client::Flag::DCV1; + } else if (command == 0x9D) { + const auto& cmd = check_size_t( + data, sizeof(C_Login_DC_PC_GC_9D), sizeof(C_LoginExtended_DC_PC_GC_9D)); + license = session->server->state->license_manager->verify_pc( + stoul(cmd.serial_number, nullptr, 16), cmd.access_key); + sub_version = cmd.sub_version; + language = cmd.language; + character_name = cmd.name; + } else { + throw runtime_error("command is not 93 or 9D"); + } + + } else if (session->version == GameVersion::PC) { // We should only get a 9D while the session is unlinked; if we get // anything else, disconnect if (command != 0x9D) { throw runtime_error("command is not 9D"); } - const auto& cmd = check_size_t( - data, sizeof(C_Login_PC_GC_9D), sizeof(C_LoginExtended_PC_GC_9D)); + const auto& cmd = check_size_t( + data, sizeof(C_Login_DC_PC_GC_9D), sizeof(C_LoginExtended_DC_PC_GC_9D)); license = session->server->state->license_manager->verify_pc( stoul(cmd.serial_number, nullptr, 16), cmd.access_key); sub_version = cmd.sub_version; @@ -373,7 +399,8 @@ void ProxyServer::UnlinkedSession::on_input(Channel& ch, uint16_t command, uint3 session->detector_crypt, sub_version, language, - character_name); + character_name, + hardware_id); } } catch (const exception& e) { linked_session->log.error("Failed to resume linked session: %s", e.what()); @@ -498,10 +525,12 @@ void ProxyServer::LinkedSession::resume( shared_ptr detector_crypt, uint32_t sub_version, uint8_t language, - const string& character_name) { + const string& character_name, + const string& hardware_id) { this->sub_version = sub_version; this->language = language; this->character_name = character_name; + this->hardware_id = hardware_id; this->resume_inner(move(client_channel), detector_crypt); } diff --git a/src/ProxyServer.hh b/src/ProxyServer.hh index cecb4dbf..4c5d4d36 100644 --- a/src/ProxyServer.hh +++ b/src/ProxyServer.hh @@ -54,6 +54,7 @@ public: uint32_t sub_version; uint8_t language; std::string character_name; + std::string hardware_id; // Only used for DC sessions std::string login_command_bb; uint32_t remote_guild_card_number; @@ -127,7 +128,8 @@ public: std::shared_ptr detector_crypt, uint32_t sub_version, uint8_t language, - const std::string& character_name); + const std::string& character_name, + const std::string& hardware_id); void resume( Channel&& client_channel, std::shared_ptr detector_crypt, diff --git a/src/Quest.cc b/src/Quest.cc index 3e623ba4..ba73d29d 100644 --- a/src/Quest.cc +++ b/src/Quest.cc @@ -656,8 +656,8 @@ shared_ptr QuestIndex::get_gba(const string& name) const { return this->gba_file_contents.at(name); } -vector> QuestIndex::filter(GameVersion version, - bool is_dcv1, QuestCategory category) const { +vector> QuestIndex::filter( + GameVersion version, bool is_dcv1, QuestCategory category) const { auto it = this->version_menu_item_id_to_quest.lower_bound(make_pair(version, 0)); auto end_it = this->version_menu_item_id_to_quest.upper_bound(make_pair(version, 0xFFFFFFFF)); diff --git a/src/ReceiveCommands.cc b/src/ReceiveCommands.cc index 02308d6f..2d7c0041 100644 --- a/src/ReceiveCommands.cc +++ b/src/ReceiveCommands.cc @@ -126,7 +126,7 @@ void process_login_complete(shared_ptr s, shared_ptr c) { } else if (c->server_behavior == ServerBehavior::LOBBY_SERVER) { - if (c->version == GameVersion::BB) { + if (c->version() == GameVersion::BB) { // This implicitly loads the client's account and player data send_complete_player_bb(c); } @@ -161,14 +161,14 @@ static void set_console_client_flags( shared_ptr c, uint32_t sub_version) { if (c->channel.crypt_in->type() == PSOEncryption::Type::V2) { if (sub_version < 0x28) { - c->version = GameVersion::DC; + c->channel.version = GameVersion::DC; c->log.info("Game version changed to DC"); - } else if (c->version == GameVersion::GC) { + } else if (c->version() == GameVersion::GC) { c->flags |= Client::Flag::GC_TRIAL_EDITION; c->log.info("Trial edition flag set"); } } - c->flags |= flags_for_version(c->version, sub_version); + c->flags |= flags_for_version(c->version(), sub_version); } void process_verify_license_v3(shared_ptr s, shared_ptr c, @@ -212,6 +212,79 @@ void process_verify_license_v3(shared_ptr s, shared_ptr c, } } +void process_login_0_dc_pc_v3(shared_ptr s, shared_ptr c, + uint16_t, uint32_t, const string& data) { // 90 + const auto& cmd = check_size_t(data); + c->channel.version = GameVersion::DC; + c->flags |= flags_for_version(c->version(), -1); + c->flags |= Client::Flag::DCV1; + + uint32_t serial_number = stoul(cmd.serial_number, nullptr, 16); + try { + shared_ptr l = s->license_manager->verify_pc( + serial_number, cmd.access_key); + c->set_license(l); + send_command(c, 0x90, 0x02); + + } catch (const incorrect_access_key& e) { + send_command(c, 0x90, 0x03); + c->should_disconnect = true; + + } catch (const missing_license& e) { + if (!s->allow_unregistered_users) { + send_command(c, 0x90, 0x03); + c->should_disconnect = true; + } else { + auto l = LicenseManager::create_license_pc( + serial_number, cmd.access_key, true); + s->license_manager->add(l); + c->set_license(l); + send_command(c, 0x90, 0x01); + } + } +} + +void process_login_2_dc(shared_ptr, shared_ptr c, + uint16_t, uint32_t, const string& data) { // 92 + check_size_t(data); + send_command(c, 0x92, 0x01); +} + +void process_login_3_dc_pc_v3(shared_ptr s, shared_ptr c, + uint16_t, uint32_t, const string& data) { // 93 + const auto& cmd = check_size_t(data, + sizeof(C_LoginV1_DC_93), sizeof(C_LoginExtendedV1_DC_93)); + set_console_client_flags(c, cmd.sub_version); + + uint32_t serial_number = stoul(cmd.serial_number, nullptr, 16); + try { + shared_ptr l = s->license_manager->verify_pc( + serial_number, cmd.access_key); + c->set_license(l); + + } catch (const incorrect_access_key& e) { + send_message_box(c, u"Incorrect access key"); + c->should_disconnect = true; + return; + + } catch (const missing_license& e) { + if (!s->allow_unregistered_users) { + send_message_box(c, u"Incorrect serial number"); + c->should_disconnect = true; + return; + } else { + auto l = LicenseManager::create_license_pc( + serial_number, cmd.access_key, true); + s->license_manager->add(l); + c->set_license(l); + } + } + + send_update_client_config(c); + + process_login_complete(s, c); +} + void process_login_a_dc_pc_v3(shared_ptr s, shared_ptr c, uint16_t, uint32_t, const string& data) { // 9A const auto& cmd = check_size_t(data); @@ -220,7 +293,8 @@ void process_login_a_dc_pc_v3(shared_ptr s, shared_ptr c, uint32_t serial_number = stoul(cmd.serial_number, nullptr, 16); try { shared_ptr l; - switch (c->version) { + switch (c->version()) { + case GameVersion::DC: case GameVersion::PC: l = s->license_manager->verify_pc(serial_number, cmd.access_key); break; @@ -252,11 +326,11 @@ void process_login_a_dc_pc_v3(shared_ptr s, shared_ptr c, // license. So, if no license exists at this point, disconnect the client // even if unregistered clients are allowed. shared_ptr l; - if ((c->version == GameVersion::GC) || (c->version == GameVersion::XB)) { + if ((c->version() == GameVersion::GC) || (c->version() == GameVersion::XB)) { send_command(c, 0x9A, 0x04); c->should_disconnect = true; return; - } else if (c->version == GameVersion::PC) { + } else if ((c->version() == GameVersion::DC) || (c->version() == GameVersion::PC)) { l = LicenseManager::create_license_pc(serial_number, cmd.access_key, true); s->license_manager->add(l); c->set_license(l); @@ -271,12 +345,13 @@ void process_login_c_dc_pc_v3(shared_ptr s, shared_ptr c, uint16_t, uint32_t, const string& data) { // 9C const auto& cmd = check_size_t(data); - c->flags |= flags_for_version(c->version, cmd.sub_version); + c->flags |= flags_for_version(c->version(), cmd.sub_version); uint32_t serial_number = stoul(cmd.serial_number, nullptr, 16); try { shared_ptr l; - switch (c->version) { + switch (c->version()) { + case GameVersion::DC: case GameVersion::PC: l = s->license_manager->verify_pc(serial_number, cmd.access_key); break; @@ -305,7 +380,8 @@ void process_login_c_dc_pc_v3(shared_ptr s, shared_ptr c, return; } else { shared_ptr l; - switch (c->version) { + switch (c->version()) { + case GameVersion::DC: case GameVersion::PC: l = LicenseManager::create_license_pc(serial_number, cmd.access_key, true); @@ -327,14 +403,14 @@ void process_login_c_dc_pc_v3(shared_ptr s, shared_ptr c, } } -void process_login_d_e_pc_v3(shared_ptr s, shared_ptr c, +void process_login_d_e_dc_pc_v3(shared_ptr s, shared_ptr c, uint16_t command, uint32_t, const string& data) { // 9D 9E - const C_Login_PC_GC_9D* base_cmd; + const C_Login_DC_PC_GC_9D* base_cmd; if (command == 0x9D) { - base_cmd = &check_size_t(data, - sizeof(C_Login_PC_GC_9D), sizeof(C_LoginExtended_PC_GC_9D)); + base_cmd = &check_size_t(data, + sizeof(C_Login_DC_PC_GC_9D), sizeof(C_LoginExtended_DC_PC_GC_9D)); if (base_cmd->is_extended) { - const auto& cmd = check_size_t(data); + const auto& cmd = check_size_t(data); if (cmd.extension.menu_id == MenuID::LOBBY) { c->preferred_lobby_id = cmd.extension.preferred_lobby_id; } @@ -351,7 +427,7 @@ void process_login_d_e_pc_v3(shared_ptr s, shared_ptr c, break; case sizeof(C_Login_XB_9E): case sizeof(C_LoginExtended_XB_9E): - c->version = GameVersion::XB; + c->channel.version = GameVersion::XB; c->log.info("Game version set to XB"); break; default: @@ -384,7 +460,8 @@ void process_login_d_e_pc_v3(shared_ptr s, shared_ptr c, uint32_t serial_number = stoul(base_cmd->serial_number, nullptr, 16); try { shared_ptr l; - switch (c->version) { + switch (c->version()) { + case GameVersion::DC: case GameVersion::PC: l = s->license_manager->verify_pc(serial_number, base_cmd->access_key); break; @@ -415,11 +492,11 @@ void process_login_d_e_pc_v3(shared_ptr s, shared_ptr c, // license. So, if no license exists at this point, disconnect the client // even if unregistered clients are allowed. shared_ptr l; - if ((c->version == GameVersion::GC) || (c->version == GameVersion::XB)) { + if ((c->version() == GameVersion::GC) || (c->version() == GameVersion::XB)) { send_command(c, 0x04, 0x04); c->should_disconnect = true; return; - } else if (c->version == GameVersion::PC) { + } else if ((c->version() == GameVersion::DC) || (c->version() == GameVersion::PC)) { l = LicenseManager::create_license_pc(serial_number, base_cmd->access_key, true); s->license_manager->add(l); c->set_license(l); @@ -447,7 +524,7 @@ void process_login_bb(shared_ptr s, shared_ptr c, throw runtime_error("invalid size for 93 command"); } - c->flags |= flags_for_version(c->version, -1); + c->flags |= flags_for_version(c->version(), -1); try { auto l = s->license_manager->verify_bb(cmd.username, cmd.password); @@ -521,7 +598,7 @@ void process_login_bb(shared_ptr s, shared_ptr c, void process_return_client_config(shared_ptr, shared_ptr c, uint16_t, uint32_t, const string& data) { // 9F - if (c->version == GameVersion::BB) { + if (c->version() == GameVersion::BB) { const auto& cfg = check_size_t(data); c->import_config(cfg); } else { @@ -552,7 +629,7 @@ void process_server_time_request(shared_ptr s, shared_ptr c if (c->should_send_to_lobby_server) { static const vector version_to_port_name({ "console-lobby", "pc-lobby", "bb-lobby", "console-lobby", "console-lobby", "bb-lobby"}); - const auto& port_name = version_to_port_name.at(static_cast(c->version)); + const auto& port_name = version_to_port_name.at(static_cast(c->version())); send_reconnect(c, s->connect_address_for_client(c), s->name_to_port_config.at(port_name)->port); } @@ -691,7 +768,7 @@ void process_message_box_closed(shared_ptr s, shared_ptr c, check_size_v(data.size(), 0); if (c->flags & Client::Flag::IN_INFORMATION_MENU) { send_menu(c, u"Information", MenuID::INFORMATION, - *s->information_menu_for_version(c->version)); + *s->information_menu_for_version(c->version())); } else if (c->flags & Client::Flag::AT_WELCOME_MESSAGE) { send_menu(c, s->name.c_str(), MenuID::MAIN, s->main_menu); c->flags &= ~Client::Flag::AT_WELCOME_MESSAGE; @@ -718,7 +795,7 @@ void process_menu_item_info_request(shared_ptr s, shared_ptrinformation_menu_for_version(c->version)->at(cmd.item_id + 1).description.c_str()); + send_ship_info(c, s->information_menu_for_version(c->version())->at(cmd.item_id + 1).description.c_str()); } catch (const out_of_range&) { send_ship_info(c, u"$C4Missing information\nmenu item"); } @@ -730,7 +807,7 @@ void process_menu_item_info_request(shared_ptr s, shared_ptrproxy_destinations_menu_for_version(c->version); + const auto& menu = s->proxy_destinations_menu_for_version(c->version()); // we use item_id + 1 here because "go back" is the first item send_ship_info(c, menu.at(cmd.item_id + 1).description.c_str()); } catch (const out_of_range&) { @@ -750,7 +827,7 @@ void process_menu_item_info_request(shared_ptr s, shared_ptrlobby_id); break; } - auto q = s->quest_index->get(c->version, cmd.item_id); + auto q = s->quest_index->get(c->version(), cmd.item_id); if (!q) { send_quest_info(c, u"$C4Quest does not\nexist.", !c->lobby_id); break; @@ -797,10 +874,18 @@ void process_menu_item_info_request(shared_ptr s, shared_ptrsection_id); + const char* mode_abbrev = "Nml"; + if (game->flags & Lobby::Flag::BATTLE_MODE) { + mode_abbrev = "Btl"; + } else if (game->flags & Lobby::Flag::CHALLENGE_MODE) { + mode_abbrev = "Chl"; + } else if (game->flags & Lobby::Flag::SOLO_MODE) { + mode_abbrev = "Solo"; + } info += string_printf("Ep%d %c %s %s\n", episode, abbreviation_for_difficulty(game->difficulty), - abbreviation_for_game_mode(game->mode), + mode_abbrev, secid_str.c_str()); bool cheats_enabled = game->flags & Lobby::Flag::CHEATS_ENABLED; @@ -858,7 +943,7 @@ void process_menu_item_info_request(shared_ptr s, shared_ptr s, shared_ptr c, uint16_t, uint32_t, const string& data) { // 10 - bool uses_unicode = ((c->version == GameVersion::PC) || (c->version == GameVersion::BB)); + bool uses_unicode = ((c->version() == GameVersion::PC) || (c->version() == GameVersion::BB)); uint32_t menu_id; uint32_t item_id; @@ -894,7 +979,7 @@ void process_menu_selection(shared_ptr s, shared_ptr c, } else { static const vector version_to_port_name({ "console-lobby", "pc-lobby", "bb-lobby", "console-lobby", "console-lobby", "bb-lobby"}); - const auto& port_name = version_to_port_name.at(static_cast(c->version)); + const auto& port_name = version_to_port_name.at(static_cast(c->version())); send_reconnect(c, s->connect_address_for_client(c), s->name_to_port_config.at(port_name)->port); } @@ -903,20 +988,20 @@ void process_menu_selection(shared_ptr s, shared_ptr c, case MainMenuItemID::INFORMATION: send_menu(c, u"Information", MenuID::INFORMATION, - *s->information_menu_for_version(c->version)); + *s->information_menu_for_version(c->version())); c->flags |= Client::Flag::IN_INFORMATION_MENU; break; case MainMenuItemID::PROXY_DESTINATIONS: send_menu(c, u"Proxy server", MenuID::PROXY_DESTINATIONS, - s->proxy_destinations_menu_for_version(c->version)); + s->proxy_destinations_menu_for_version(c->version())); break; case MainMenuItemID::DOWNLOAD_QUESTS: if (c->flags & Client::Flag::EPISODE_3) { shared_ptr l = c->lobby_id ? s->find_lobby(c->lobby_id) : nullptr; auto quests = s->quest_index->filter( - c->version, false, QuestCategory::EPISODE_3); + c->version(), c->flags & Client::Flag::DCV1, QuestCategory::EPISODE_3); if (quests.empty()) { send_lobby_message_box(c, u"$C6There are no quests\navailable."); } else { @@ -977,7 +1062,7 @@ void process_menu_selection(shared_ptr s, shared_ptr c, } else { const pair* dest = nullptr; try { - dest = &s->proxy_destinations_for_version(c->version).at(item_id); + dest = &s->proxy_destinations_for_version(c->version()).at(item_id); } catch (const out_of_range&) { } if (!dest) { @@ -990,8 +1075,8 @@ void process_menu_selection(shared_ptr s, shared_ptr c, // license/char name/etc. for remote auth) static const vector version_to_port_name({ - "console-proxy", "pc-proxy", "", "console-proxy", "console-proxy", "bb-proxy"}); - const auto& port_name = version_to_port_name.at(static_cast(c->version)); + "dc-proxy", "pc-proxy", "", "gc-proxy", "xb-proxy", "bb-proxy"}); + const auto& port_name = version_to_port_name.at(static_cast(c->version())); uint16_t local_port = s->name_to_port_config.at(port_name)->port; c->proxy_destination_address = resolve_ipv4(dest->first); @@ -1000,7 +1085,7 @@ void process_menu_selection(shared_ptr s, shared_ptr c, s->proxy_server->delete_session(c->license->serial_number); s->proxy_server->create_licensed_session( - c->license, local_port, c->version, c->export_config_bb()); + c->license, local_port, c->version(), c->export_config_bb()); send_reconnect(c, s->connect_address_for_client(c), local_port); } @@ -1022,8 +1107,9 @@ void process_menu_selection(shared_ptr s, shared_ptr c, send_lobby_message_box(c, u"$C6You cannot join this\ngame because it is\nfull."); break; } - if ((game->version != c->version) || - (!(game->flags & Lobby::Flag::EPISODE_3_ONLY) != !(c->flags & Client::Flag::EPISODE_3))) { + if ((game->version != c->version()) || + (!(game->flags & Lobby::Flag::EPISODE_3_ONLY) != !(c->flags & Client::Flag::EPISODE_3)) || + ((game->flags & Lobby::Flag::DC_V2_ONLY) && (c->flags & Client::Flag::DCV1))) { send_lobby_message_box(c, u"$C6You cannot join this\ngame because it is\nfor a different\nversion of PSO."); break; } @@ -1035,7 +1121,7 @@ void process_menu_selection(shared_ptr s, shared_ptr c, send_lobby_message_box(c, u"$C6You cannot join this\ngame because\nanother player is\ncurrently loading.\nTry again soon."); break; } - if (game->mode == 3) { + if (game->flags & Lobby::Flag::SOLO_MODE) { send_lobby_message_box(c, u"$C6You cannot join this\n game because it is\na Solo Mode game."); break; } @@ -1068,7 +1154,7 @@ void process_menu_selection(shared_ptr s, shared_ptr c, break; } shared_ptr l = c->lobby_id ? s->find_lobby(c->lobby_id) : nullptr; - auto quests = s->quest_index->filter(c->version, + auto quests = s->quest_index->filter(c->version(), c->flags & Client::Flag::DCV1, static_cast(item_id & 0xFF)); if (quests.empty()) { @@ -1087,7 +1173,7 @@ void process_menu_selection(shared_ptr s, shared_ptr c, send_lobby_message_box(c, u"$C6Quests are not available."); break; } - auto q = s->quest_index->get(c->version, item_id); + auto q = s->quest_index->get(c->version(), item_id); if (!q) { send_lobby_message_box(c, u"$C6Quest does not exist."); break; @@ -1145,8 +1231,8 @@ void process_menu_selection(shared_ptr s, shared_ptr c, // (C->S 13 commands) like there are on GC. So, for PC/Trial clients, // we can just not set the loading flag, since we never need to // check/clear it later. - if ((l->clients[x]->version != GameVersion::DC) && - (l->clients[x]->version != GameVersion::PC) && + if ((l->clients[x]->version() != GameVersion::DC) && + (l->clients[x]->version() != GameVersion::PC) && !(l->clients[x]->flags & Client::Flag::GC_TRIAL_EDITION)) { l->clients[x]->flags |= Client::Flag::LOADING_QUEST; } @@ -1256,11 +1342,11 @@ void process_game_list_request(shared_ptr s, shared_ptr c, send_game_menu(c, s); } -void process_information_menu_request_pc(shared_ptr s, shared_ptr c, - uint16_t, uint32_t, const string& data) { // 1F +void process_information_menu_request_dc_pc(shared_ptr s, + shared_ptr c, uint16_t, uint32_t, const string& data) { // 1F check_size_v(data.size(), 0); send_menu(c, u"Information", MenuID::INFORMATION, - *s->information_menu_for_version(c->version), true); + *s->information_menu_for_version(c->version()), true); } void process_change_ship(shared_ptr s, shared_ptr c, @@ -1281,8 +1367,8 @@ void process_change_ship(shared_ptr s, shared_ptr c, send_message_box(c, u""); static const vector version_to_port_name({ - "dc-login", "pc-login", "bb-patch", "gc-us3", "xb-login", "bb-init"}); - const auto& port_name = version_to_port_name.at(static_cast(c->version)); + "console-login", "pc-login", "bb-patch", "console-login", "console-login", "bb-init"}); + const auto& port_name = version_to_port_name.at(static_cast(c->version())); send_reconnect(c, s->connect_address_for_client(c), s->name_to_port_config.at(port_name)->port); @@ -1370,19 +1456,17 @@ void process_quest_list_request(shared_ptr s, shared_ptr c, } else { vector* menu = nullptr; - if ((c->version == GameVersion::BB) && flag) { + if ((c->version() == GameVersion::BB) && flag) { menu = &quest_government_menu; } else { - if (l->mode == 0) { - menu = &quest_categories_menu; - } else if (l->mode == 1) { + if (l->flags & Lobby::Flag::BATTLE_MODE) { menu = &quest_battle_menu; - } else if (l->mode == 2) { + } else if (l->flags & Lobby::Flag::CHALLENGE_MODE) { menu = &quest_challenge_menu; - } else if (l->mode == 3) { + } else if (l->flags & Lobby::Flag::SOLO_MODE) { menu = &quest_solo_menu; } else { - throw logic_error("no quest menu available for mode"); + menu = &quest_categories_menu; } } @@ -1428,7 +1512,7 @@ void process_quest_barrier(shared_ptr s, shared_ptr c, void process_update_quest_statistics(shared_ptr s, shared_ptr c, uint16_t, uint32_t, const string& data) { // AA - const auto& cmd = check_size_t(data); + const auto& cmd = check_size_t(data); if (c->flags & Client::Flag::GC_TRIAL_EDITION) { throw runtime_error("trial edition client sent update quest stats command"); @@ -1440,7 +1524,7 @@ void process_update_quest_statistics(shared_ptr s, return; } - S_ConfirmUpdateQuestStatistics_AB response; + S_ConfirmUpdateQuestStatistics_V3_BB_AB response; response.unknown_a1 = 0x0000; response.unknown_a2 = 0x0000; response.request_token = cmd.request_token; @@ -1469,10 +1553,11 @@ void process_player_data(shared_ptr s, shared_ptr c, // Note: we add extra buffer on the end when checking sizes because the // autoreply text is a variable length - switch (c->version) { + switch (c->version()) { + case GameVersion::DC: case GameVersion::PC: { - const auto& pd = check_size_t(data, - sizeof(PSOPlayerDataPC), 0xFFFF); + const auto& pd = check_size_t(data, + sizeof(PSOPlayerDataDCPC), 0xFFFF); c->game_data.import_player(pd); break; } @@ -1950,25 +2035,29 @@ void process_simple_mail(shared_ptr s, shared_ptr c, uint16_t, uint32_t, const string& data) { // 81 u16string message; uint32_t to_guild_card_number; - if ((c->version == GameVersion::GC) || (c->version == GameVersion::XB)) { - const auto& cmd = check_size_t(data); - to_guild_card_number = cmd.to_guild_card_number; - message = decode_sjis(cmd.text); - - } else if (c->version == GameVersion::PC) { - const auto& cmd = check_size_t(data); - to_guild_card_number = cmd.to_guild_card_number; - message = cmd.text; - - } else if (c->version == GameVersion::BB) { - const auto& cmd = check_size_t(data); - to_guild_card_number = cmd.to_guild_card_number; - message = cmd.text; - - } else { - // TODO - send_text_message(c, u"$C6Simple Mail is not\nsupported yet on\nthis platform."); - return; + switch (c->version()) { + case GameVersion::DC: + case GameVersion::GC: + case GameVersion::XB: { + const auto& cmd = check_size_t(data); + to_guild_card_number = cmd.to_guild_card_number; + message = decode_sjis(cmd.text); + break; + } + case GameVersion::PC: { + const auto& cmd = check_size_t(data); + to_guild_card_number = cmd.to_guild_card_number; + message = cmd.text; + break; + } + case GameVersion::BB: { + const auto& cmd = check_size_t(data); + to_guild_card_number = cmd.to_guild_card_number; + message = cmd.text; + break; + } + default: + throw logic_error("invalid game version"); } auto target = s->find_client(nullptr, to_guild_card_number); @@ -2032,7 +2121,7 @@ void process_disable_auto_reply(shared_ptr, shared_ptr c, void process_set_blocked_senders_list(shared_ptr, shared_ptr c, uint16_t, uint32_t, const string& data) { // C6 - if (c->version == GameVersion::BB) { + if (c->version() == GameVersion::BB) { const auto& cmd = check_size_t(data); c->game_data.account()->blocked_senders = cmd.blocked_senders; } else { @@ -2046,10 +2135,13 @@ void process_set_blocked_senders_list(shared_ptr, shared_ptr create_game_generic(shared_ptr s, - shared_ptr c, const std::u16string& name, - const std::u16string& password, uint8_t episode, uint8_t difficulty, - uint8_t battle, uint8_t challenge, uint8_t solo) { +static shared_ptr create_game_generic(shared_ptr s, + shared_ptr c, + const std::u16string& name, + const std::u16string& password, + uint8_t episode, + uint8_t difficulty, + uint32_t flags) { // A player's actual level is their displayed level - 1, so the minimums for // Episode 1 (for example) are actually 1, 20, 40, 80. @@ -2058,13 +2150,13 @@ shared_ptr create_game_generic(shared_ptr s, {0, 29, 49, 89}, // episode 2 {0, 39, 79, 109}}; // episode 4 + bool is_ep3 = (flags & Lobby::Flag::EPISODE_3_ONLY); if (episode == 0) { episode = 0xFF; } if (((episode != 0xFF) && (episode > 3)) || (episode == 0)) { throw invalid_argument("incorrect episode number"); } - bool is_ep3 = (episode == 0xFF); if (difficulty > 3) { throw invalid_argument("incorrect difficulty level"); @@ -2081,25 +2173,16 @@ shared_ptr create_game_generic(shared_ptr s, throw invalid_argument("level too low for difficulty"); } - bool item_tracking_enabled = (c->version == GameVersion::BB) | s->item_tracking_enabled; + bool item_tracking_enabled = (c->version() == GameVersion::BB) | s->item_tracking_enabled; shared_ptr game = s->create_lobby(); game->name = name; game->password = password; - game->version = c->version; + game->version = c->version(); game->section_id = c->override_section_id >= 0 ? c->override_section_id : c->game_data.player()->disp.section_id; game->episode = episode; game->difficulty = difficulty; - if (battle) { - game->mode = 1; - } - if (challenge) { - game->mode = 2; - } - if (solo) { - game->mode = 3; - } if (c->override_random_seed >= 0) { game->random_seed = c->override_random_seed; game->random->seed(game->random_seed); @@ -2112,7 +2195,8 @@ shared_ptr create_game_generic(shared_ptr s, game->flags = (is_ep3 ? Lobby::Flag::EPISODE_3_ONLY : 0) | (item_tracking_enabled ? Lobby::Flag::ITEM_TRACKING_ENABLED : 0) | - Lobby::Flag::GAME; + Lobby::Flag::GAME | + flags; game->min_level = min_level; game->max_level = 0xFFFFFFFF; @@ -2126,17 +2210,17 @@ shared_ptr create_game_generic(shared_ptr s, } game->next_game_item_id = 0x00810000; - auto bp_subtable = s->battle_params->get_subtable(game->mode == 3, - game->episode - 1, game->difficulty); + bool is_solo = (game->flags & Lobby::Flag::SOLO_MODE); + auto bp_subtable = s->battle_params->get_subtable( + is_solo, game->episode - 1, game->difficulty); - generate_variations( - game->variations, game->random, game->episode, game->mode == 3); + generate_variations(game->variations, game->random, game->episode, is_solo); for (size_t x = 0; x < 0x10; x++) { try { auto file = map_data_for_variation( game->episode, - game->mode == 3, + is_solo, x, game->variations[x * 2 + 0], game->variations[x * 2 + 1]); @@ -2184,41 +2268,67 @@ void process_create_game_pc(shared_ptr s, shared_ptr c, uint16_t, uint32_t, const string& data) { // C1 const auto& cmd = check_size_t(data); - create_game_generic(s, c, cmd.name, cmd.password, 1, - cmd.difficulty, cmd.battle_mode, cmd.challenge_mode, 0); + uint32_t flags = 0; + if (cmd.battle_mode) { + flags |= Lobby::Flag::BATTLE_MODE; + } + if (cmd.challenge_mode) { + flags |= Lobby::Flag::CHALLENGE_MODE; + } + create_game_generic(s, c, cmd.name, cmd.password, 1, cmd.difficulty, flags); } void process_create_game_dc_v3(shared_ptr s, shared_ptr c, - uint16_t command, uint32_t, const string& data) { // C1 EC (EC Ep3 only) - const auto& cmd = check_size_t(data); + uint16_t command, uint32_t, const string& data) { // 0C C1 EC (EC Ep3 only) + const auto& cmd = check_size_t(data); - // only allow EC from Ep3 clients + // Only allow EC from Ep3 clients bool client_is_ep3 = c->flags & Client::Flag::EPISODE_3; if ((command == 0xEC) && !client_is_ep3) { return; } uint8_t episode = cmd.episode; - if ((c->version == GameVersion::DC) || (c->version == GameVersion::PC)) { + uint32_t flags = 0; + if ((c->version() == GameVersion::DC) || (c->version() == GameVersion::PC)) { + if (episode) { + flags |= Lobby::Flag::DC_V2_ONLY; + } episode = 1; - } - if (client_is_ep3) { + } else if (client_is_ep3) { + flags |= Lobby::Flag::EPISODE_3_ONLY; episode = 0xFF; } u16string name = decode_sjis(cmd.name); u16string password = decode_sjis(cmd.password); - create_game_generic(s, c, name.c_str(), password.c_str(), - episode, cmd.difficulty, cmd.battle_mode, cmd.challenge_mode, 0); + if (cmd.battle_mode) { + flags |= Lobby::Flag::BATTLE_MODE; + } + if (cmd.challenge_mode) { + flags |= Lobby::Flag::CHALLENGE_MODE; + } + create_game_generic( + s, c, name.c_str(), password.c_str(), episode, cmd.difficulty, flags); } void process_create_game_bb(shared_ptr s, shared_ptr c, uint16_t, uint32_t, const string& data) { // C1 const auto& cmd = check_size_t(data); - create_game_generic(s, c, cmd.name, cmd.password, cmd.episode, - cmd.difficulty, cmd.battle_mode, cmd.challenge_mode, cmd.solo_mode); + uint32_t flags = 0; + if (cmd.battle_mode) { + flags |= Lobby::Flag::BATTLE_MODE; + } + if (cmd.challenge_mode) { + flags |= Lobby::Flag::CHALLENGE_MODE; + } + if (cmd.solo_mode) { + flags |= Lobby::Flag::SOLO_MODE; + } + create_game_generic( + s, c, cmd.name, cmd.password, cmd.episode, cmd.difficulty, flags); } void process_lobby_name_request(shared_ptr s, shared_ptr c, @@ -2237,8 +2347,7 @@ void process_client_ready(shared_ptr s, shared_ptr c, auto l = s->find_lobby(c->lobby_id); if (!l || !l->is_game()) { - // go home client; you're drunk - throw invalid_argument("ready command cannot be sent outside game"); + throw runtime_error("client sent ready command ontside of game"); } c->flags &= (~Client::Flag::LOADING); @@ -2247,7 +2356,7 @@ void process_client_ready(shared_ptr s, shared_ptr c, // Only get player info again on BB, since on other versions the returned info // only includes items that would be saved if the client disconnects // unexpectedly (that is, only equipped items are included). - if (c->version == GameVersion::BB) { + if (c->version() == GameVersion::BB) { send_get_player_info(c); } } @@ -2523,7 +2632,7 @@ void process_ignored_command(shared_ptr, shared_ptr, void process_unimplemented_command(shared_ptr, shared_ptr c, uint16_t command, uint32_t flag, const string& data) { - c->log.warning("Unknown command: size=%04zX command=%04hX flag=%08" PRIX32 "\n", + c->log.warning("Unknown command: size=%04zX command=%04hX flag=%08" PRIX32, data.size(), command, flag); throw invalid_argument("unimplemented command"); } @@ -2541,13 +2650,13 @@ static process_command_t dc_handlers[0x100] = { nullptr, nullptr, nullptr, nullptr, nullptr, process_ignored_command, process_chat_dc_v3, nullptr, process_game_list_request, process_menu_item_info_request, nullptr, nullptr, - nullptr, nullptr, nullptr, nullptr, + process_create_game_dc_v3, nullptr, nullptr, nullptr, // 10 process_menu_selection, nullptr, nullptr, process_ignored_command, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, - nullptr, process_ignored_command, nullptr, nullptr, + nullptr, process_ignored_command, nullptr, process_information_menu_request_dc_pc, // 20 nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, @@ -2567,7 +2676,7 @@ static process_command_t dc_handlers[0x100] = { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, // 60 - process_game_command, nullptr, process_game_command, nullptr, + process_game_command, process_player_data, process_game_command, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, process_game_command, process_game_command, nullptr, process_client_ready, @@ -2583,15 +2692,15 @@ static process_command_t dc_handlers[0x100] = { nullptr, nullptr, nullptr, nullptr, // 90 - nullptr, nullptr, nullptr, nullptr, + process_login_0_dc_pc_v3, nullptr, process_login_2_dc, process_login_3_dc_pc_v3, nullptr, nullptr, process_client_checksum, nullptr, - process_player_data, process_ignored_command, nullptr, nullptr, - nullptr, nullptr, nullptr, nullptr, + process_player_data, process_ignored_command, process_login_a_dc_pc_v3, nullptr, + process_login_c_dc_pc_v3, process_login_d_e_dc_pc_v3, nullptr, nullptr, // A0 process_change_ship, process_change_block, process_quest_list_request, nullptr, nullptr, nullptr, nullptr, nullptr, - nullptr, process_ignored_command, process_update_quest_statistics, nullptr, + nullptr, process_ignored_command, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, // B0 @@ -2600,15 +2709,14 @@ static process_command_t dc_handlers[0x100] = { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, // C0 - nullptr, process_create_game_dc_v3, nullptr, nullptr, - nullptr, nullptr, process_set_blocked_senders_list, process_set_auto_reply_t, - process_disable_auto_reply, nullptr, nullptr, nullptr, + process_choice_search, process_create_game_dc_v3, nullptr, nullptr, + nullptr, nullptr, nullptr, nullptr, + nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, // D0 nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, - process_info_board_request, process_write_info_board_t, nullptr, nullptr, - nullptr, nullptr, nullptr, nullptr, + nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, // E0 nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, @@ -2630,7 +2738,7 @@ static process_command_t pc_handlers[0x100] = { process_menu_selection, nullptr, nullptr, process_ignored_command, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, - nullptr, process_ignored_command, nullptr, process_information_menu_request_pc, + nullptr, process_ignored_command, nullptr, process_information_menu_request_dc_pc, // 20 nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, @@ -2669,7 +2777,7 @@ static process_command_t pc_handlers[0x100] = { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, process_client_checksum, nullptr, process_player_data, process_ignored_command, process_login_a_dc_pc_v3, nullptr, - process_login_c_dc_pc_v3, process_login_d_e_pc_v3, process_login_d_e_pc_v3, nullptr, + process_login_c_dc_pc_v3, process_login_d_e_dc_pc_v3, process_login_d_e_dc_pc_v3, nullptr, // A0 process_change_ship, process_change_block, process_quest_list_request, nullptr, @@ -2750,10 +2858,10 @@ static process_command_t gc_handlers[0x100] = { nullptr, nullptr, nullptr, nullptr, // 90 - nullptr, nullptr, nullptr, nullptr, + process_login_0_dc_pc_v3, nullptr, nullptr, process_login_3_dc_pc_v3, nullptr, nullptr, process_client_checksum, nullptr, - process_player_data, process_ignored_command, nullptr, nullptr, - process_login_c_dc_pc_v3, process_login_d_e_pc_v3, process_login_d_e_pc_v3, process_return_client_config, + process_player_data, process_ignored_command, process_login_a_dc_pc_v3, nullptr, + process_login_c_dc_pc_v3, process_login_d_e_dc_pc_v3, process_login_d_e_dc_pc_v3, process_return_client_config, // A0 process_change_ship, process_change_block, process_quest_list_request, nullptr, @@ -2841,7 +2949,7 @@ static process_command_t xb_handlers[0x100] = { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, process_client_checksum, nullptr, process_player_data, process_ignored_command, nullptr, nullptr, - process_login_c_dc_pc_v3, process_login_d_e_pc_v3, process_login_d_e_pc_v3, process_return_client_config, + process_login_c_dc_pc_v3, process_login_d_e_dc_pc_v3, process_login_d_e_dc_pc_v3, process_return_client_config, // A0 process_change_ship, process_change_block, process_quest_list_request, nullptr, @@ -3028,9 +3136,10 @@ static process_command_t* handlers[6] = { void check_unlicensed_command(GameVersion version, uint8_t command) { switch (version) { case GameVersion::DC: - // TODO: Fix this when we support DC. It will be pretty obvious during - // testing that this should be fixed (and how to fix it). - throw runtime_error("no unlicensed commands are valid on DC"); + // newserv doesn't actually know that DC clients are DC until it receives + // an appropriate login command (93, 9A, or 9D), but those commands also + // log the client in, so this case should never be executed. + throw logic_error("cannot check unlicensed command for DC client"); case GameVersion::PC: if (command != 0x9A && command != 0x9D) { throw runtime_error("only commands 9A and 9D may be sent before login"); @@ -3038,8 +3147,14 @@ void check_unlicensed_command(GameVersion version, uint8_t command) { break; case GameVersion::GC: case GameVersion::XB: - if (command != 0xDB && command != 0x9A && command != 0x9E) { - throw runtime_error("only commands DB, 9A and 9E may be sent before login"); + // See comment in the DC case above for why DC commands are included here. + if (command != 0x90 && // DC v1 + command != 0x93 && // DC v1 + command != 0x9A && // DC v2 + command != 0x9D && // DC v2, GC trial edition + command != 0x9E && // GC non-trial + command != 0xDB) { // GC non-trial + throw runtime_error("only commands 90, 93, 9A, 9D, 9E, and DB may be sent before login"); } break; case GameVersion::BB: @@ -3070,10 +3185,10 @@ void process_command(shared_ptr s, shared_ptr c, // is allowed to access normal functionality. This check prevents clients from // sneakily sending commands to access functionality without logging in. if (!c->license.get()) { - check_unlicensed_command(c->version, command); + check_unlicensed_command(c->version(), command); } - auto fn = handlers[static_cast(c->version)][command & 0xFF]; + auto fn = handlers[static_cast(c->version())][command & 0xFF]; if (fn) { fn(s, c, command, flag, data); } else { diff --git a/src/ReceiveSubcommands.cc b/src/ReceiveSubcommands.cc index f2965efe..82462bea 100644 --- a/src/ReceiveSubcommands.cc +++ b/src/ReceiveSubcommands.cc @@ -115,17 +115,29 @@ static void process_subcommand_send_guild_card(shared_ptr, return; } - if (c->version == GameVersion::PC) { - const auto* cmd = check_size_sc(data); - c->game_data.player()->guild_card_description = cmd->description; - } else if ((c->version == GameVersion::GC) || (c->version == GameVersion::XB)) { - const auto* cmd = check_size_sc(data); - c->game_data.player()->guild_card_description = cmd->description; - } else if (c->version == GameVersion::BB) { - // Nothing to do... the command is blank; the server generates the guild - // card to be sent - } else { - throw runtime_error("unsupported game version"); + switch (c->version()) { + case GameVersion::DC: { + const auto* cmd = check_size_sc(data); + c->game_data.player()->guild_card_description = cmd->description; + break; + } + case GameVersion::PC: { + const auto* cmd = check_size_sc(data); + c->game_data.player()->guild_card_description = cmd->description; + break; + } + case GameVersion::GC: + case GameVersion::XB: { + const auto* cmd = check_size_sc(data); + c->game_data.player()->guild_card_description = cmd->description; + break; + } + case GameVersion::BB: + // Nothing to do... the command is blank; the server generates the guild + // card to be sent + break; + default: + throw logic_error("unsupported game version"); } send_guild_card(l->clients[flag], c); @@ -154,7 +166,7 @@ static void process_subcommand_word_select(shared_ptr, } // TODO: bring this back if it turns out to be important; I suspect it's not - //p->byte[2] = p->byte[3] = p->byte[(c->version == GameVersion::BB) ? 2 : 3]; + //p->byte[2] = p->byte[3] = p->byte[(c->version() == GameVersion::BB) ? 2 : 3]; for (size_t x = 1; x < 8; x++) { if ((p[x].word[0] > 0x1863) && (p[x].word[0] != 0xFFFF)) { @@ -179,7 +191,7 @@ static void process_subcommand_set_player_visibility(shared_ptr, forward_subcommand(l, c, command, flag, data); - if (!l->is_game()) { + if (!l->is_game() && !(c->flags & Client::Flag::DCV1)) { send_arrow_update(l); } } @@ -292,12 +304,13 @@ static void process_subcommand_player_drop_item(shared_ptr, static void process_subcommand_create_inventory_item(shared_ptr, shared_ptr l, shared_ptr c, uint8_t command, uint8_t flag, const string& data) { - const auto* cmd = check_size_sc(data); + const auto* cmd = check_size_sc(data, + sizeof(G_PlayerCreateInventoryItem_DC_6x2B), sizeof(G_PlayerCreateInventoryItem_PC_V3_BB_6x2B)); if ((cmd->client_id != c->lobby_client_id)) { return; } - if (c->version == GameVersion::BB) { + if (c->version() == GameVersion::BB) { // BB should never send this command - inventory items should only be // created by the server in response to shop buy / bank withdraw / etc. reqs return; @@ -322,7 +335,8 @@ static void process_subcommand_create_inventory_item(shared_ptr, static void process_subcommand_drop_partial_stack(shared_ptr, shared_ptr l, shared_ptr c, uint8_t command, uint8_t flag, const string& data) { - const auto* cmd = check_size_sc(data); + const auto* cmd = check_size_sc(data, + sizeof(G_DropStackedItem_DC_6x5D), sizeof(G_DropStackedItem_PC_V3_BB_6x5D)); // TODO: Should we check the client ID here too? if (!l->is_game()) { @@ -422,7 +436,8 @@ static void process_subcommand_buy_shop_item(shared_ptr, static void process_subcommand_box_or_enemy_item_drop(shared_ptr, shared_ptr l, shared_ptr c, uint8_t command, uint8_t flag, const string& data) { - const auto* cmd = check_size_sc(data); + const auto* cmd = check_size_sc(data, + sizeof(G_DropItem_DC_6x5F), sizeof(G_DropItem_PC_V3_BB_6x5F)); if (!l->is_game() || (c->lobby_client_id != l->leader_id)) { return; @@ -755,7 +770,9 @@ static void process_subcommand_enemy_drop_item_request(shared_ptr, return; } - const auto* cmd = check_size_sc(data); + const auto* cmd = check_size_sc(data, + sizeof(G_EnemyDropItemRequest_DC_6x60), + sizeof(G_EnemyDropItemRequest_PC_V3_BB_6x60)); if (!drop_item(l, cmd->enemy_id, cmd->area, cmd->x, cmd->z, cmd->request_id)) { forward_subcommand(l, c, command, flag, data); } @@ -801,16 +818,19 @@ static void process_subcommand_phase_setup(shared_ptr, if (should_send_boss_drop_req) { auto c = l->clients.at(l->leader_id); if (c) { - G_EnemyDropItemRequest_6x60 req = { - 0x60, - 0x06, - 0x1090, - static_cast(c->area), - static_cast((l->episode == 2) ? 0x4E : 0x2F), - 0x0B4F, - (l->episode == 2) ? -9999.0f : 10160.58984375f, - 0.0f, - 0xE0AEDC0100000002, + G_EnemyDropItemRequest_PC_V3_BB_6x60 req = { + { + 0x60, + 0x06, + 0x1090, + static_cast(c->area), + static_cast((l->episode == 2) ? 0x4E : 0x2F), + 0x0B4F, + (l->episode == 2) ? -9999.0f : 10160.58984375f, + 0.0f, + 0x00000002, + }, + 0xE0AEDC01, }; send_command_t(c, 0x62, l->leader_id, req); } diff --git a/src/ReplaySession.cc b/src/ReplaySession.cc index 11ccade9..3c9afbba 100644 --- a/src/ReplaySession.cc +++ b/src/ReplaySession.cc @@ -48,12 +48,13 @@ void ReplaySession::check_for_password(shared_ptr ev) const { auto version = this->clients.at(ev->client_id)->version; auto check_pw = [&](const string& pw) { - if (!this->required_password.empty() && (pw != this->required_password)) { + if (!this->required_password.empty() && !pw.empty() && (pw != this->required_password)) { + print_data(stderr, ev->data); throw runtime_error("sent password is incorrect"); } }; auto check_ak = [&](const string& ak) { - if (this->required_access_key.empty()) { + if (this->required_access_key.empty() || ak.empty()) { return; } string ref_access_key; @@ -63,6 +64,7 @@ void ReplaySession::check_for_password(shared_ptr ev) const { ref_access_key = this->required_access_key; } if (ak != ref_access_key) { + print_data(stderr, ev->data); throw runtime_error("sent access key is incorrect"); } }; @@ -78,9 +80,6 @@ void ReplaySession::check_for_password(shared_ptr ev) const { size_t cmd_size = ev->data.size() - ((version == GameVersion::BB) ? 8 : 4); switch (version) { - case GameVersion::DC: - // TODO - throw logic_error("sent passwords cannot be checked on DC"); case GameVersion::PATCH: { const auto& header = check_size_t( ev->data, sizeof(PSOCommandHeaderPC), 0xFFFF); @@ -98,6 +97,7 @@ void ReplaySession::check_for_password(shared_ptr ev) const { check_ak(check_size_t(cmd_data, cmd_size).access_key); } else if (header.command == 0x9A) { const auto& cmd = check_size_t(cmd_data, cmd_size); + check_ak(cmd.v1_access_key); check_ak(cmd.access_key); check_ak(cmd.access_key2); } else if (header.command == 0x9C) { @@ -105,13 +105,15 @@ void ReplaySession::check_for_password(shared_ptr ev) const { check_ak(cmd.access_key); check_pw(cmd.password); } else if (header.command == 0x9D) { - const auto& cmd = check_size_t(cmd_data, cmd_size, - sizeof(C_Login_PC_GC_9D), sizeof(C_LoginExtended_PC_GC_9D)); + const auto& cmd = check_size_t(cmd_data, cmd_size, + sizeof(C_Login_DC_PC_GC_9D), sizeof(C_LoginExtended_DC_PC_GC_9D)); + check_ak(cmd.v1_access_key); check_ak(cmd.access_key); check_ak(cmd.access_key2); } break; } + case GameVersion::DC: case GameVersion::GC: case GameVersion::XB: { const auto& header = check_size_t( @@ -121,15 +123,26 @@ void ReplaySession::check_for_password(shared_ptr ev) const { } else if (header.command == 0x04) { check_ak(check_size_t(cmd_data, cmd_size).access_key); } else if (header.command == 0x90) { - check_ak(check_size_t(cmd_data, cmd_size).access_key); + check_ak(check_size_t(cmd_data, cmd_size).access_key); + } else if (header.command == 0x93) { + const auto& cmd = check_size_t(cmd_data, cmd_size, + sizeof(C_LoginV1_DC_93), sizeof(C_LoginExtendedV1_DC_93)); + check_ak(cmd.access_key); } else if (header.command == 0x9A) { const auto& cmd = check_size_t(cmd_data, cmd_size); + check_ak(cmd.v1_access_key); check_ak(cmd.access_key); check_ak(cmd.access_key2); } else if (header.command == 0x9C) { const auto& cmd = check_size_t(cmd_data, cmd_size); check_ak(cmd.access_key); check_pw(cmd.password); + } else if (header.command == 0x9D) { + const auto& cmd = check_size_t(cmd_data, cmd_size, + sizeof(C_Login_DC_PC_GC_9D), sizeof(C_LoginExtended_DC_PC_GC_9D)); + check_ak(cmd.v1_access_key); + check_ak(cmd.access_key); + check_ak(cmd.access_key2); } else if (header.command == 0x9E) { if (version == GameVersion::GC) { const auto& cmd = check_size_t(cmd_data, cmd_size, @@ -188,6 +201,7 @@ void ReplaySession::apply_default_mask(shared_ptr ev) { } break; } + case GameVersion::DC: case GameVersion::PC: case GameVersion::GC: case GameVersion::XB: { @@ -211,9 +225,14 @@ void ReplaySession::apply_default_mask(shared_ptr ev) { break; } case 0x19: { - auto& cmd_mask = check_size_t(cmd_data, cmd_size, - sizeof(S_Reconnect_19), sizeof(S_ReconnectSplit_19)); - cmd_mask.address = 0; + if (cmd_size == sizeof(S_ReconnectSplit_19)) { + auto& cmd_mask = check_size_t(cmd_data, cmd_size); + cmd_mask.pc_address = 0; + cmd_mask.gc_address = 0; + } else { + auto& cmd_mask = check_size_t(cmd_data, cmd_size); + cmd_mask.address = 0; + } break; } case 0x64: { @@ -222,8 +241,8 @@ void ReplaySession::apply_default_mask(shared_ptr ev) { cmd_mask.variations.clear(0); cmd_mask.rare_seed = 0; } else { // V3 - auto& cmd_mask = check_size_t(cmd_data, cmd_size, - sizeof(S_JoinGame_GC_64), sizeof(S_JoinGame_GC_Ep3_64)); + auto& cmd_mask = check_size_t(cmd_data, cmd_size, + sizeof(S_JoinGame_DC_GC_64), sizeof(S_JoinGame_GC_Ep3_64)); cmd_mask.variations.clear(0); cmd_mask.rare_seed = 0; } @@ -274,8 +293,6 @@ void ReplaySession::apply_default_mask(shared_ptr ev) { } break; } - case GameVersion::DC: - throw logic_error("DC auto-masking is not implemented"); default: throw logic_error("invalid game version"); } @@ -323,12 +340,7 @@ ReplaySession::ReplaySession( if (parsing_command->type == Event::Type::RECEIVE) { this->apply_default_mask(parsing_command); } else if (parsing_command->type == Event::Type::SEND) { - try { this->check_for_password(parsing_command); - } catch (...) { - print_data(stderr, parsing_command->data); - throw; - } } parsing_command = nullptr; } @@ -553,8 +565,6 @@ void ReplaySession::on_command_received( // If the command is an encryption init, set up encryption on the channel switch (c->version) { - case GameVersion::DC: - throw runtime_error("DC encryption is not supported during replays"); case GameVersion::PATCH: if (command == 0x02) { auto& cmd = check_size_t(data); @@ -562,13 +572,14 @@ void ReplaySession::on_command_received( c->channel.crypt_out.reset(new PSOV2Encryption(cmd.client_key)); } break; + case GameVersion::DC: case GameVersion::PC: case GameVersion::GC: case GameVersion::XB: if (command == 0x02 || command == 0x17 || command == 0x91 || command == 0x9B) { auto& cmd = check_size_t(data, offsetof(S_ServerInit_DC_PC_V3_02_17_91_9B, after_message), 0xFFFF); - if (c->version == GameVersion::PC) { + if ((c->version == GameVersion::DC) || (c->version == GameVersion::PC)) { c->channel.crypt_in.reset(new PSOV2Encryption(cmd.server_key)); c->channel.crypt_out.reset(new PSOV2Encryption(cmd.client_key)); } else { // V3 diff --git a/src/SendCommands.cc b/src/SendCommands.cc index bc8a5c8c..668b0a19 100644 --- a/src/SendCommands.cc +++ b/src/SendCommands.cc @@ -27,7 +27,7 @@ extern FileContentsCache file_cache; const unordered_set v2_crypt_initial_client_commands({ - 0x00290090, // (17) DCv1 license check + 0x00280090, // (17) DCv1 license check 0x00B00093, // (02) DCv1 login 0x01140093, // (02) DCv1 extended login 0x00E0009A, // (17) DCv2 license check @@ -134,7 +134,7 @@ void send_server_init_dc_pc_v3(shared_ptr c, uint8_t flags) { server_key, client_key, initial_connection); send_command_t(c, command, 0x00, cmd); - switch (c->version) { + switch (c->version()) { case GameVersion::PC: c->channel.crypt_in.reset(new PSOV2Encryption(client_key)); c->channel.crypt_out.reset(new PSOV2Encryption(server_key)); @@ -204,7 +204,7 @@ void send_server_init_patch(shared_ptr c) { void send_server_init( shared_ptr s, shared_ptr c, uint8_t flags) { - switch (c->version) { + switch (c->version()) { case GameVersion::DC: case GameVersion::PC: case GameVersion::GC: @@ -224,7 +224,6 @@ void send_server_init( -// for non-BB clients, updates the client's guild card and security data void send_update_client_config(shared_ptr c) { S_UpdateClientConfig_DC_PC_V3_04 cmd; cmd.player_tag = 0x00010000; @@ -295,9 +294,7 @@ void send_function_call( void send_reconnect(shared_ptr c, uint32_t address, uint16_t port) { S_Reconnect_19 cmd = {address, port, 0}; - // On the patch server, 14 is the reconnect command, but it works exactly the - // same way as 19 on the game server. - send_command_t(c, (c->version == GameVersion::PATCH) ? 0x14 : 0x19, 0x00, cmd); + send_command_t(c, (c->version() == GameVersion::PATCH) ? 0x14 : 0x19, 0x00, cmd); } void send_pc_console_split_reconnect(shared_ptr c, uint32_t address, @@ -535,7 +532,7 @@ void send_header_text(Channel& ch, uint16_t command, void send_message_box(shared_ptr c, const u16string& text) { uint16_t command; - switch (c->version) { + switch (c->version()) { case GameVersion::PATCH: command = 0x13; break; @@ -602,7 +599,7 @@ void send_chat_message(Channel& ch, const u16string& text) { void send_chat_message(shared_ptr c, uint32_t from_guild_card_number, const u16string& from_name, const u16string& text) { u16string data; - if (c->version == GameVersion::BB) { + if (c->version() == GameVersion::BB) { data.append(u"\x09J"); } data.append(remove_language_marker(from_name)); @@ -643,16 +640,22 @@ void send_simple_mail_bb( void send_simple_mail(shared_ptr c, uint32_t from_guild_card_number, const u16string& from_name, const u16string& text) { - if ((c->version == GameVersion::GC) || (c->version == GameVersion::XB)) { - send_simple_mail_t( - c, from_guild_card_number, from_name, text); - } else if (c->version == GameVersion::PC) { - send_simple_mail_t( - c, from_guild_card_number, from_name, text); - } else if (c->version == GameVersion::BB) { - send_simple_mail_bb(c, from_guild_card_number, from_name, text); - } else { - throw logic_error("unimplemented versioned command"); + switch (c->version()) { + case GameVersion::DC: + case GameVersion::GC: + case GameVersion::XB: + send_simple_mail_t( + c, from_guild_card_number, from_name, text); + break; + case GameVersion::PC: + send_simple_mail_t( + c, from_guild_card_number, from_name, text); + break; + case GameVersion::BB: + send_simple_mail_bb(c, from_guild_card_number, from_name, text); + break; + default: + throw logic_error("unimplemented versioned command"); } } @@ -677,8 +680,9 @@ void send_info_board_t(shared_ptr c, shared_ptr l) { } void send_info_board(shared_ptr c, shared_ptr l) { - if (c->version == GameVersion::PC || c->version == GameVersion::PATCH || - c->version == GameVersion::BB) { + if (c->version() == GameVersion::PC || + c->version() == GameVersion::PATCH || + c->version() == GameVersion::BB) { send_info_board_t(c, l); } else { send_info_board_t(c, l); @@ -698,7 +702,7 @@ void send_card_search_result_t( shared_ptr result_lobby) { static const vector version_to_port_name({ "console-lobby", "pc-lobby", "bb-lobby", "console-lobby", "console-lobby", "bb-lobby"}); - const auto& port_name = version_to_port_name.at(static_cast(c->version)); + const auto& port_name = version_to_port_name.at(static_cast(c->version())); S_GuildCardSearchResult cmd; cmd.player_tag = 0x00010000; @@ -737,15 +741,15 @@ void send_card_search_result( shared_ptr c, shared_ptr result, shared_ptr result_lobby) { - if ((c->version == GameVersion::DC) || - (c->version == GameVersion::GC) || - (c->version == GameVersion::XB)) { + if ((c->version() == GameVersion::DC) || + (c->version() == GameVersion::GC) || + (c->version() == GameVersion::XB)) { send_card_search_result_t( s, c, result, result_lobby); - } else if (c->version == GameVersion::PC) { + } else if (c->version() == GameVersion::PC) { send_card_search_result_t( s, c, result, result_lobby); - } else if (c->version == GameVersion::BB) { + } else if (c->version() == GameVersion::BB) { send_card_search_result_t( s, c, result, result_lobby); } else { @@ -756,7 +760,7 @@ void send_card_search_result( template -void send_guild_card_pc_v3_t(shared_ptr c, shared_ptr source) { +void send_guild_card_dc_pc_v3_t(shared_ptr c, shared_ptr source) { CmdT cmd; cmd.subcommand = 0x06; cmd.size = sizeof(CmdT) / 4; @@ -790,12 +794,14 @@ void send_guild_card_bb(shared_ptr c, shared_ptr source) { } void send_guild_card(shared_ptr c, shared_ptr source) { - if (c->version == GameVersion::PC) { - send_guild_card_pc_v3_t(c, source); - } else if ((c->version == GameVersion::GC) || - (c->version == GameVersion::XB)) { - send_guild_card_pc_v3_t(c, source); - } else if (c->version == GameVersion::BB) { + if (c->version() == GameVersion::DC) { + send_guild_card_dc_pc_v3_t(c, source); + } else if (c->version() == GameVersion::PC) { + send_guild_card_dc_pc_v3_t(c, source); + } else if ((c->version() == GameVersion::GC) || + (c->version() == GameVersion::XB)) { + send_guild_card_dc_pc_v3_t(c, source); + } else if (c->version() == GameVersion::BB) { send_guild_card_bb(c, source); } else { throw logic_error("unimplemented versioned command"); @@ -825,11 +831,11 @@ void send_menu_t( } for (const auto& item : items) { - if (((c->version == GameVersion::DC) && (item.flags & MenuItem::Flag::INVISIBLE_ON_DC)) || - ((c->version == GameVersion::PC) && (item.flags & MenuItem::Flag::INVISIBLE_ON_PC)) || - ((c->version == GameVersion::GC) && (item.flags & MenuItem::Flag::INVISIBLE_ON_GC)) || - ((c->version == GameVersion::XB) && (item.flags & MenuItem::Flag::INVISIBLE_ON_XB)) || - ((c->version == GameVersion::BB) && (item.flags & MenuItem::Flag::INVISIBLE_ON_BB)) || + if (((c->version() == GameVersion::DC) && (item.flags & MenuItem::Flag::INVISIBLE_ON_DC)) || + ((c->version() == GameVersion::PC) && (item.flags & MenuItem::Flag::INVISIBLE_ON_PC)) || + ((c->version() == GameVersion::GC) && (item.flags & MenuItem::Flag::INVISIBLE_ON_GC)) || + ((c->version() == GameVersion::XB) && (item.flags & MenuItem::Flag::INVISIBLE_ON_XB)) || + ((c->version() == GameVersion::BB) && (item.flags & MenuItem::Flag::INVISIBLE_ON_BB)) || ((item.flags & MenuItem::Flag::REQUIRES_MESSAGE_BOXES) && (c->flags & Client::Flag::NO_MESSAGE_BOX_CLOSE_CONFIRMATION)) || ((item.flags & MenuItem::Flag::REQUIRES_SEND_FUNCTION_CALL) && (c->flags & Client::Flag::DOES_NOT_SUPPORT_SEND_FUNCTION_CALL)) || ((item.flags & MenuItem::Flag::REQUIRES_SAVE_DISABLED) && (c->flags & Client::Flag::SAVE_ENABLED))) { @@ -838,7 +844,7 @@ void send_menu_t( auto& e = entries.emplace_back(); e.menu_id = menu_id; e.item_id = item.item_id; - e.flags = (c->version == GameVersion::BB) ? 0x0004 : 0x0F04; + e.flags = (c->version() == GameVersion::BB) ? 0x0004 : 0x0F04; e.text = item.name; } @@ -847,8 +853,9 @@ void send_menu_t( void send_menu(shared_ptr c, const u16string& menu_name, uint32_t menu_id, const vector& items, bool is_info_menu) { - if (c->version == GameVersion::PC || c->version == GameVersion::PATCH || - c->version == GameVersion::BB) { + if (c->version() == GameVersion::PC || + c->version() == GameVersion::PATCH || + c->version() == GameVersion::BB) { send_menu_t(c, menu_name, menu_id, items, is_info_menu); } else { send_menu_t(c, menu_name, menu_id, items, is_info_menu); @@ -872,7 +879,7 @@ void send_game_menu_t(shared_ptr c, shared_ptr s) { e.flags = 0x04; } for (shared_ptr l : s->all_lobbies()) { - if (!l->is_game() || (l->version != c->version)) { + if (!l->is_game() || (l->version != c->version())) { continue; } bool l_is_ep3 = !!(l->flags & Lobby::Flag::EPISODE_3_ONLY); @@ -880,17 +887,33 @@ void send_game_menu_t(shared_ptr c, shared_ptr s) { if (l_is_ep3 != c_is_ep3) { continue; } + if ((c->flags & Client::Flag::DCV1) && (l->flags & Lobby::Flag::DC_V2_ONLY)) { + continue; + } auto& e = entries.emplace_back(); e.menu_id = MenuID::GAME; e.game_id = l->lobby_id; e.difficulty_tag = (l_is_ep3 ? 0x0A : (l->difficulty + 0x22)); e.num_players = l->count_clients(); - e.episode = ((c->version == GameVersion::BB) ? (l->max_clients << 4) : 0) | l->episode; + if (c->version() == GameVersion::DC) { + e.episode = (l->flags & Lobby::Flag::DC_V2_ONLY) ? 1 : 0; + } else { + e.episode = ((c->version() == GameVersion::BB) ? (l->max_clients << 4) : 0) | l->episode; + } if (l->flags & Lobby::Flag::EPISODE_3_ONLY) { e.flags = (l->password.empty() ? 0 : 2); } else { - e.flags = ((l->episode << 6) | ((l->mode % 3) << 4) | (l->password.empty() ? 0 : 2)) | ((l->mode == 3) ? 4 : 0); + e.flags = ((l->episode << 6) | (l->password.empty() ? 0 : 2)); + if (l->flags & Lobby::Flag::BATTLE_MODE) { + e.flags |= 0x10; + } + if (l->flags & Lobby::Flag::CHALLENGE_MODE) { + e.flags |= 0x20; + } + if (l->flags & Lobby::Flag::SOLO_MODE) { + e.flags |= 0x34; + } } e.name = l->name; } @@ -899,9 +922,9 @@ void send_game_menu_t(shared_ptr c, shared_ptr s) { } void send_game_menu(shared_ptr c, shared_ptr s) { - if ((c->version == GameVersion::DC) || - (c->version == GameVersion::GC) || - (c->version == GameVersion::XB)) { + if ((c->version() == GameVersion::DC) || + (c->version() == GameVersion::GC) || + (c->version() == GameVersion::XB)) { send_game_menu_t(c, s); } else { send_game_menu_t(c, s); @@ -948,31 +971,43 @@ void send_quest_menu_t( void send_quest_menu(shared_ptr c, uint32_t menu_id, const vector>& quests, bool is_download_menu) { - if (c->version == GameVersion::PC) { - send_quest_menu_t(c, menu_id, quests, is_download_menu); - } else if (c->version == GameVersion::GC) { - send_quest_menu_t(c, menu_id, quests, is_download_menu); - } else if (c->version == GameVersion::XB) { - send_quest_menu_t(c, menu_id, quests, is_download_menu); - } else if (c->version == GameVersion::BB) { - send_quest_menu_t(c, menu_id, quests, is_download_menu); - } else { - throw logic_error("unimplemented versioned command"); + switch (c->version()) { + case GameVersion::PC: + send_quest_menu_t(c, menu_id, quests, is_download_menu); + break; + case GameVersion::DC: + case GameVersion::GC: + send_quest_menu_t(c, menu_id, quests, is_download_menu); + break; + case GameVersion::XB: + send_quest_menu_t(c, menu_id, quests, is_download_menu); + break; + case GameVersion::BB: + send_quest_menu_t(c, menu_id, quests, is_download_menu); + break; + default: + throw logic_error("unimplemented versioned command"); } } void send_quest_menu(shared_ptr c, uint32_t menu_id, const vector& items, bool is_download_menu) { - if (c->version == GameVersion::PC) { - send_quest_menu_t(c, menu_id, items, is_download_menu); - } else if (c->version == GameVersion::GC) { - send_quest_menu_t(c, menu_id, items, is_download_menu); - } else if (c->version == GameVersion::XB) { - send_quest_menu_t(c, menu_id, items, is_download_menu); - } else if (c->version == GameVersion::BB) { - send_quest_menu_t(c, menu_id, items, is_download_menu); - } else { - throw logic_error("unimplemented versioned command"); + switch (c->version()) { + case GameVersion::PC: + send_quest_menu_t(c, menu_id, items, is_download_menu); + break; + case GameVersion::DC: + case GameVersion::GC: + send_quest_menu_t(c, menu_id, items, is_download_menu); + break; + case GameVersion::XB: + send_quest_menu_t(c, menu_id, items, is_download_menu); + break; + case GameVersion::BB: + send_quest_menu_t(c, menu_id, items, is_download_menu); + break; + default: + throw logic_error("unimplemented versioned command"); } } @@ -1030,7 +1065,7 @@ void send_join_game_t(shared_ptr c, shared_ptr l) { cmd->lobby_data[x].name = l->clients[x]->game_data.player()->disp.name; if (cmd_ep3) { cmd_ep3->players_ep3[x].inventory = l->clients[x]->game_data.player()->inventory; - cmd_ep3->players_ep3[x].disp = convert_player_disp_data( + cmd_ep3->players_ep3[x].disp = convert_player_disp_data( l->clients[x]->game_data.player()->disp); } player_count++; @@ -1043,14 +1078,14 @@ void send_join_game_t(shared_ptr c, shared_ptr l) { cmd->leader_id = l->leader_id; cmd->disable_udp = 0x01; // Unused on PC/XB/BB cmd->difficulty = l->difficulty; - cmd->battle_mode = (l->mode == 1) ? 1 : 0; + cmd->battle_mode = (l->flags & Lobby::Flag::BATTLE_MODE) ? 1 : 0; cmd->event = l->event; cmd->section_id = l->section_id; - cmd->challenge_mode = (l->mode == 2) ? 1 : 0; + cmd->challenge_mode = (l->flags & Lobby::Flag::CHALLENGE_MODE) ? 1 : 0; cmd->rare_seed = l->random_seed; cmd->episode = l->episode; cmd->unused2 = 0x01; - cmd->solo_mode = (l->mode == 3); + cmd->solo_mode = (l->flags & Lobby::Flag::SOLO_MODE) ? 1 : 0; cmd->unused3 = 0x00; send_command(c, 0x64, player_count, data); @@ -1073,7 +1108,7 @@ void send_join_lobby_t(shared_ptr c, shared_ptr l, uint8_t lobby_type = (l->type > 14) ? (l->block - 1) : l->type; // Allow non-canonical lobby types on GC. They may work on other versions too, // but I haven't verified which values don't crash on each version. - if (c->version == GameVersion::GC) { + if (c->version() == GameVersion::GC) { if (c->flags & Client::Flag::EPISODE_3) { if ((l->type > 0x14) && (l->type < 0xE9)) { lobby_type = l->block - 1; @@ -1098,6 +1133,7 @@ void send_join_lobby_t(shared_ptr c, shared_ptr l, cmd.unknown_a1 = 0; cmd.event = l->event; cmd.unknown_a2 = 0; + cmd.unused = 0; vector> lobby_clients; if (joining_client) { @@ -1119,8 +1155,8 @@ void send_join_lobby_t(shared_ptr c, shared_ptr l, e.lobby_data.name = lc->game_data.player()->disp.name; e.inventory = lc->game_data.player()->inventory; e.disp = convert_player_disp_data(lc->game_data.player()->disp); - if (c->version == GameVersion::PC) { - e.disp.enforce_pc_limits(); + if ((c->version() == GameVersion::PC) || (c->version() == GameVersion::DC)) { + e.disp.enforce_v2_limits(); } } @@ -1129,28 +1165,40 @@ void send_join_lobby_t(shared_ptr c, shared_ptr l, void send_join_lobby(shared_ptr c, shared_ptr l) { if (l->is_game()) { - if (c->version == GameVersion::PC) { - send_join_game_t(c, l); - } else if (c->version == GameVersion::GC) { - send_join_game_t(c, l); - } else if (c->version == GameVersion::XB) { - send_join_game_t(c, l); - } else if (c->version == GameVersion::BB) { - send_join_game_t(c, l); - } else { - throw logic_error("unimplemented versioned command"); + switch (c->version()) { + case GameVersion::PC: + send_join_game_t(c, l); + break; + case GameVersion::DC: + case GameVersion::GC: + send_join_game_t(c, l); + break; + case GameVersion::XB: + send_join_game_t(c, l); + break; + case GameVersion::BB: + send_join_game_t(c, l); + break; + default: + throw logic_error("unimplemented versioned command"); } } else { - if (c->version == GameVersion::PC) { - send_join_lobby_t(c, l); - } else if (c->version == GameVersion::GC) { - send_join_lobby_t(c, l); - } else if (c->version == GameVersion::XB) { - send_join_lobby_t(c, l); - } else if (c->version == GameVersion::BB) { - send_join_lobby_t(c, l); - } else { - throw logic_error("unimplemented versioned command"); + switch (c->version()) { + case GameVersion::PC: + send_join_lobby_t(c, l); + break; + case GameVersion::DC: + case GameVersion::GC: + send_join_lobby_t(c, l); + break; + case GameVersion::XB: + send_join_lobby_t(c, l); + break; + case GameVersion::BB: + send_join_lobby_t(c, l); + break; + default: + throw logic_error("unimplemented versioned command"); } } @@ -1165,16 +1213,22 @@ void send_join_lobby(shared_ptr c, shared_ptr l) { void send_player_join_notification(shared_ptr c, shared_ptr l, shared_ptr joining_client) { - if (c->version == GameVersion::PC) { - send_join_lobby_t(c, l, joining_client); - } else if (c->version == GameVersion::GC) { - send_join_lobby_t(c, l, joining_client); - } else if (c->version == GameVersion::XB) { - send_join_lobby_t(c, l, joining_client); - } else if (c->version == GameVersion::BB) { - send_join_lobby_t(c, l, joining_client); - } else { - throw logic_error("unimplemented versioned command"); + switch (c->version()) { + case GameVersion::PC: + send_join_lobby_t(c, l, joining_client); + break; + case GameVersion::DC: + case GameVersion::GC: + send_join_lobby_t(c, l, joining_client); + break; + case GameVersion::XB: + send_join_lobby_t(c, l, joining_client); + break; + case GameVersion::BB: + send_join_lobby_t(c, l, joining_client); + break; + default: + throw logic_error("unimplemented versioned command"); } } @@ -1229,7 +1283,12 @@ void send_arrow_update(shared_ptr l) { e.arrow_color = l->clients[x]->lobby_arrow_color; } - send_command_vt(l, 0x88, entries.size(), entries); + for (size_t x = 0; x < l->max_clients; x++) { + if (!l->clients[x] || (l->clients[x]->flags & Client::Flag::DCV1)) { + continue; + } + send_command_vt(l->clients[x], 0x88, entries.size(), entries); + } } // tells the player that the joining player is done joining, and the game can resume @@ -1330,15 +1389,15 @@ void send_revive_player(shared_ptr l, shared_ptr c) { void send_drop_item(Channel& ch, const ItemData& item, bool from_enemy, uint8_t area, float x, float z, uint16_t request_id) { - G_DropItem_6x5F cmd = { - 0x5F, 0x0B, 0x0000, area, from_enemy, request_id, x, z, 0, item, 0}; + G_DropItem_PC_V3_BB_6x5F cmd = { + {0x5F, 0x0B, 0x0000, area, from_enemy, request_id, x, z, 0, item}, 0}; ch.send(0x60, 0x00, &cmd, sizeof(cmd)); } void send_drop_item(shared_ptr l, const ItemData& item, bool from_enemy, uint8_t area, float x, float z, uint16_t request_id) { - G_DropItem_6x5F cmd = { - 0x5F, 0x0B, 0x0000, area, from_enemy, request_id, x, z, 0, item, 0}; + G_DropItem_PC_V3_BB_6x5F cmd = { + {0x5F, 0x0B, 0x0000, area, from_enemy, request_id, x, z, 0, item}, 0}; send_command_t(l, 0x60, 0x00, cmd); } @@ -1348,8 +1407,8 @@ void send_drop_stacked_item(shared_ptr l, const ItemData& item, uint8_t area, float x, float z) { // TODO: Is this order correct? The original code sent {item, 0}, but it seems // GC sends {0, item} (the last two fields in the struct are switched). - G_DropStackedItem_6x5D cmd = { - 0x5D, 0x0A, 0x00, 0x00, area, 0, x, z, item, 0}; + G_DropStackedItem_PC_V3_BB_6x5D cmd = { + {0x5D, 0x0A, 0x00, 0x00, area, 0, x, z, item}, 0}; send_command_t(l, 0x60, 0x00, cmd); } @@ -1576,16 +1635,23 @@ void send_quest_file_chunk( void send_quest_file(shared_ptr c, const string& quest_name, const string& basename, const string& contents, QuestFileType type) { - if ((c->version == GameVersion::PC) || - (c->version == GameVersion::GC) || - (c->version == GameVersion::XB)) { - send_quest_open_file_t( + switch (c->version()) { + case GameVersion::DC: + send_quest_open_file_t( + c, quest_name, basename, contents.size(), type); + break; + case GameVersion::PC: + case GameVersion::GC: + case GameVersion::XB: + send_quest_open_file_t( + c, quest_name, basename, contents.size(), type); + break; + case GameVersion::BB: + send_quest_open_file_t( c, quest_name, basename, contents.size(), type); - } else if (c->version == GameVersion::BB) { - send_quest_open_file_t( - c, quest_name, basename, contents.size(), type); - } else { - throw invalid_argument("cannot send quest files to this version of client"); + break; + default: + throw logic_error("cannot send quest files to this version of client"); } for (size_t offset = 0; offset < contents.size(); offset += 0x400) { @@ -1618,8 +1684,8 @@ void send_server_time(shared_ptr c) { void send_change_event(shared_ptr c, uint8_t new_event) { // This command isn't supported on versions before V3, nor on Trial Edition. - if ((c->version == GameVersion::DC) || - (c->version == GameVersion::PC) || + if ((c->version() == GameVersion::DC) || + (c->version() == GameVersion::PC) || (c->flags & Client::Flag::GC_TRIAL_EDITION)) { return; } diff --git a/src/ServerShell.cc b/src/ServerShell.cc index 596a4f18..1cfe8ffd 100644 --- a/src/ServerShell.cc +++ b/src/ServerShell.cc @@ -69,8 +69,8 @@ Server commands:\n\ bb-username= (BB username)\n\ bb-password= (BB password)\n\ gc-password= (GC password)\n\ - access-key= (GC/PC access key)\n\ - serial= (GC/PC serial number; required for all licenses)\n\ + access-key= (DC/GC/PC access key)\n\ + serial= (decimal serial number; required for all licenses)\n\ privileges= (can be normal, mod, admin, root, or numeric)\n\ delete-license \n\ Delete a license from the server.\n\ diff --git a/src/ServerState.cc b/src/ServerState.cc index 43b951b0..591bdb24 100644 --- a/src/ServerState.cc +++ b/src/ServerState.cc @@ -216,8 +216,8 @@ uint32_t ServerState::connect_address_for_client(std::shared_ptr c) { shared_ptr> ServerState::information_menu_for_version(GameVersion version) { - if (version == GameVersion::PC) { - return this->information_menu_pc; + if ((version == GameVersion::DC) || (version == GameVersion::PC)) { + return this->information_menu_v2; } else if ((version == GameVersion::GC) || (version == GameVersion::XB)) { return this->information_menu_v3; } @@ -225,25 +225,33 @@ shared_ptr> ServerState::information_menu_for_version(Gam } const vector& ServerState::proxy_destinations_menu_for_version(GameVersion version) { - if (version == GameVersion::PC) { - return this->proxy_destinations_menu_pc; - } else if (version == GameVersion::GC) { - return this->proxy_destinations_menu_gc; - } else if (version == GameVersion::XB) { - return this->proxy_destinations_menu_xb; + switch (version) { + case GameVersion::DC: + return this->proxy_destinations_menu_dc; + case GameVersion::PC: + return this->proxy_destinations_menu_pc; + case GameVersion::GC: + return this->proxy_destinations_menu_gc; + case GameVersion::XB: + return this->proxy_destinations_menu_xb; + default: + throw out_of_range("no proxy destinations menu exists for this version"); } - throw out_of_range("no proxy destinations menu exists for this version"); } const vector>& ServerState::proxy_destinations_for_version(GameVersion version) { - if (version == GameVersion::PC) { - return this->proxy_destinations_pc; - } else if (version == GameVersion::GC) { - return this->proxy_destinations_gc; - } else if (version == GameVersion::XB) { - return this->proxy_destinations_xb; + switch (version) { + case GameVersion::DC: + return this->proxy_destinations_dc; + case GameVersion::PC: + return this->proxy_destinations_pc; + case GameVersion::GC: + return this->proxy_destinations_gc; + case GameVersion::XB: + return this->proxy_destinations_xb; + default: + throw out_of_range("no proxy destinations menu exists for this version"); } - throw out_of_range("no proxy destinations menu exists for this version"); } @@ -268,7 +276,7 @@ void ServerState::set_port_configuration( void ServerState::create_menus(shared_ptr config_json) { const auto& d = config_json->as_dict(); - shared_ptr> information_menu_pc(new vector()); + shared_ptr> information_menu_v2(new vector()); shared_ptr> information_menu_v3(new vector()); shared_ptr> information_contents(new vector()); @@ -278,7 +286,7 @@ void ServerState::create_menus(shared_ptr config_json) { uint32_t item_id = 0; for (const auto& item : d.at("InformationMenuContents")->as_list()) { auto& v = item->as_list(); - information_menu_pc->emplace_back(item_id, decode_sjis(v.at(0)->as_string()), + information_menu_v2->emplace_back(item_id, decode_sjis(v.at(0)->as_string()), decode_sjis(v.at(1)->as_string()), 0); information_menu_v3->emplace_back(item_id, decode_sjis(v.at(0)->as_string()), decode_sjis(v.at(1)->as_string()), MenuItem::Flag::REQUIRES_MESSAGE_BOXES); @@ -286,7 +294,7 @@ void ServerState::create_menus(shared_ptr config_json) { item_id++; } } - this->information_menu_pc = information_menu_pc; + this->information_menu_v2 = information_menu_v2; this->information_menu_v3 = information_menu_v3; this->information_contents = information_contents; @@ -314,6 +322,10 @@ void ServerState::create_menus(shared_ptr config_json) { } catch (const out_of_range&) { } }; + generate_proxy_destinations_menu( + this->proxy_destinations_menu_dc, + this->proxy_destinations_dc, + "ProxyDestinations-DC"); generate_proxy_destinations_menu( this->proxy_destinations_menu_pc, this->proxy_destinations_pc, @@ -358,18 +370,14 @@ void ServerState::create_menus(shared_ptr config_json) { u"Join the lobby", 0); this->main_menu.emplace_back(MainMenuItemID::INFORMATION, u"Information", u"View server\ninformation", MenuItem::Flag::REQUIRES_MESSAGE_BOXES); - if (!this->proxy_destinations_pc.empty()) { - this->main_menu.emplace_back(MainMenuItemID::PROXY_DESTINATIONS, u"Proxy server", - u"Connect to another\nserver", MenuItem::Flag::PC_ONLY); - } - if (!this->proxy_destinations_gc.empty()) { - this->main_menu.emplace_back(MainMenuItemID::PROXY_DESTINATIONS, u"Proxy server", - u"Connect to another\nserver", MenuItem::Flag::GC_ONLY); - } - if (!this->proxy_destinations_xb.empty()) { - this->main_menu.emplace_back(MainMenuItemID::PROXY_DESTINATIONS, u"Proxy server", - u"Connect to another\nserver", MenuItem::Flag::XB_ONLY); - } + uint32_t proxy_destinations_menu_item_flags = + (this->proxy_destinations_dc.empty() ? MenuItem::Flag::INVISIBLE_ON_DC : 0) | + (this->proxy_destinations_pc.empty() ? MenuItem::Flag::INVISIBLE_ON_PC : 0) | + (this->proxy_destinations_gc.empty() ? MenuItem::Flag::INVISIBLE_ON_GC : 0) | + (this->proxy_destinations_xb.empty() ? MenuItem::Flag::INVISIBLE_ON_XB : 0) | + MenuItem::Flag::INVISIBLE_ON_BB; + this->main_menu.emplace_back(MainMenuItemID::PROXY_DESTINATIONS, u"Proxy server", + u"Connect to another\nserver", proxy_destinations_menu_item_flags); this->main_menu.emplace_back(MainMenuItemID::DOWNLOAD_QUESTS, u"Download quests", u"Download quests", MenuItem::Flag::INVISIBLE_ON_BB); if (!this->function_code_index->patch_menu_empty()) { diff --git a/src/ServerState.hh b/src/ServerState.hh index 7f6085a4..26fd870f 100644 --- a/src/ServerState.hh +++ b/src/ServerState.hh @@ -63,12 +63,14 @@ struct ServerState { std::shared_ptr license_manager; std::vector main_menu; - std::shared_ptr> information_menu_pc; + std::shared_ptr> information_menu_v2; std::shared_ptr> information_menu_v3; std::shared_ptr> information_contents; + std::vector proxy_destinations_menu_dc; std::vector proxy_destinations_menu_pc; std::vector proxy_destinations_menu_gc; std::vector proxy_destinations_menu_xb; + std::vector> proxy_destinations_dc; std::vector> proxy_destinations_pc; std::vector> proxy_destinations_gc; std::vector> proxy_destinations_xb; diff --git a/src/StaticGameData.cc b/src/StaticGameData.cc index 3b7d3451..13a96a9e 100644 --- a/src/StaticGameData.cc +++ b/src/StaticGameData.cc @@ -533,22 +533,6 @@ char abbreviation_for_difficulty(uint8_t difficulty) { -const char* abbreviation_for_game_mode(uint8_t mode) { - static const array names = { - "Nml", - "Btl", - "Chl", - "Solo", - }; - try { - return names.at(mode); - } catch (const out_of_range&) { - return "???"; - } -} - - - size_t stack_size_for_item(uint8_t data0, uint8_t data1) { if (data0 == 4) { return 999999; diff --git a/src/StaticGameData.hh b/src/StaticGameData.hh index 8eb70190..665fee7d 100644 --- a/src/StaticGameData.hh +++ b/src/StaticGameData.hh @@ -57,6 +57,4 @@ const char* abbreviation_for_char_class(uint8_t cls); const char* name_for_difficulty(uint8_t difficulty); char abbreviation_for_difficulty(uint8_t difficulty); -const char* abbreviation_for_game_mode(uint8_t); - std::string name_for_item(const ItemData& item, bool include_color_codes); diff --git a/src/Version.cc b/src/Version.cc index b7f091e1..6f549c8d 100644 --- a/src/Version.cc +++ b/src/Version.cc @@ -12,7 +12,7 @@ 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 sub_version recognition) switch (version) { case GameVersion::DC: return Client::Flag::NO_MESSAGE_BOX_CLOSE_CONFIRMATION; diff --git a/system/config.example.json b/system/config.example.json index 0d860003..ec59dbe6 100644 --- a/system/config.example.json +++ b/system/config.example.json @@ -67,9 +67,11 @@ "console-lobby": [5110, "gc", "lobby_server"], "pc-lobby": [5111, "pc", "lobby_server"], "bb-lobby": [5112, "bb", "lobby_server"], - "console-proxy": [5120, "gc", "proxy_server"], + "dc-proxy": [5120, "dc", "proxy_server"], "pc-proxy": [5121, "pc", "proxy_server"], - "bb-proxy": [5122, "bb", "proxy_server"], + "gc-proxy": [5122, "gc", "proxy_server"], + "xb-proxy": [5123, "xb", "proxy_server"], + "bb-proxy": [5124, "bb", "proxy_server"], "bb-data1": [12004, "bb", "data_server_bb"], "bb-data2": [12005, "bb", "data_server_bb"], }, @@ -84,9 +86,10 @@ // strings to this list to listen for tapserver connections on a TCP port. "IPStackListen": [], - // Other servers to support proxying to. If either of these is empty, the - // proxy server is disabled for that game version. Entries are like + // Other servers to support proxying to. If this is empty for any game + // version, the proxy server is disabled for that version. Entries are like // "name": "address:port"; the names are used in the proxy server menu. + "ProxyDestinations-DC": {}, "ProxyDestinations-PC": {}, "ProxyDestinations-GC": {}, "ProxyDestinations-XB": {}, diff --git a/tests/DCv1-GameSmokeTest.test.txt b/tests/DCv1-GameSmokeTest.test.txt new file mode 100644 index 00000000..05b4720d --- /dev/null +++ b/tests/DCv1-GameSmokeTest.test.txt @@ -0,0 +1,1682 @@ +I 69775 2022-08-27 09:36:28 - [Server] Client connected: C-1 on fd 35 via 14 (T-9200-PC-gc-eu10-pc_console_detect) +I 69775 2022-08-27 09:36:28 - [Commands] Sending to C-1 (version=PC command=19 flag=00) +0000000000000000 | B0 00 19 00 0A 00 00 04 ED 13 00 00 00 00 00 00 | +0000000000000010 | 00 00 00 00 00 00 00 00 00 19 00 97 00 0A 00 00 | +0000000000000020 | 04 EC 13 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000030 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +I 69775 2022-08-27 09:36:28 - [Server] Client disconnected: C-1 on fd 35 +I 69775 2022-08-27 09:36:28 - [Server] Client connected: C-2 on fd 35 via 6 (T-5100-DC-console-login-login_server) +I 69775 2022-08-27 09:36:28 - [Commands] Sending to C-2 (version=GC command=17 flag=00) +0000000000000000 | 17 00 0C 01 44 72 65 61 6D 43 61 73 74 20 50 6F | DreamCast Po +0000000000000010 | 72 74 20 4D 61 70 2E 20 43 6F 70 79 72 69 67 68 | rt Map. Copyrigh +0000000000000020 | 74 20 53 45 47 41 20 45 6E 74 65 72 70 72 69 73 | t SEGA Enterpris +0000000000000030 | 65 73 2E 20 31 39 39 39 00 00 00 00 00 00 00 00 | es. 1999 +0000000000000040 | 00 00 00 00 76 3B 9B 7E D0 87 66 04 54 68 69 73 | v; ~ f This +0000000000000050 | 20 73 65 72 76 65 72 20 69 73 20 69 6E 20 6E 6F | server is in no +0000000000000060 | 20 77 61 79 20 61 66 66 69 6C 69 61 74 65 64 2C | way affiliated, +0000000000000070 | 20 73 70 6F 6E 73 6F 72 65 64 2C 20 6F 72 20 73 | sponsored, or s +0000000000000080 | 75 70 70 6F 72 74 65 64 20 62 79 20 53 45 47 41 | upported by SEGA +0000000000000090 | 20 45 6E 74 65 72 70 72 69 73 65 73 20 6F 72 20 | Enterprises or +00000000000000A0 | 53 4F 4E 49 43 54 45 41 4D 2E 20 54 68 65 20 70 | SONICTEAM. The p +00000000000000B0 | 72 65 63 65 64 69 6E 67 20 6D 65 73 73 61 67 65 | receding message +00000000000000C0 | 20 65 78 69 73 74 73 20 6F 6E 6C 79 20 69 6E 20 | exists only in +00000000000000D0 | 6F 72 64 65 72 20 74 6F 20 72 65 6D 61 69 6E 20 | order to remain +00000000000000E0 | 63 6F 6D 70 61 74 69 62 6C 65 20 77 69 74 68 20 | compatible with +00000000000000F0 | 70 72 6F 67 72 61 6D 73 20 74 68 61 74 20 65 78 | programs that ex +0000000000000100 | 70 65 63 74 20 69 74 2E 00 00 00 00 | pect it. +I 69775 2022-08-27 09:36:28 - [Commands] Received from C-2 (version=GC command=90 flag=00) +0000000000000000 | 90 00 28 00 37 37 37 37 37 37 37 37 00 00 00 00 | ( 77777777 +0000000000000010 | 00 00 00 00 00 31 31 31 31 31 31 31 31 00 00 00 | 11111111 +0000000000000020 | 00 00 00 00 00 00 00 00 | +I 69775 2022-08-27 09:36:28 - [Commands] Sending to C-2 (version=DC command=90 flag=01) +0000000000000000 | 90 01 04 00 | +I 69775 2022-08-27 09:36:28 - [Commands] Received from C-2 (version=DC command=92 flag=00) +0000000000000000 | 92 00 A4 00 00 00 8A 03 CA 3B 9F 4A 21 00 00 00 | ; J! +0000000000000010 | 00 01 00 00 38 38 39 31 36 36 33 32 00 00 00 00 | 88916632 +0000000000000020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000030 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000A0 | 00 00 00 00 | +I 69775 2022-08-27 09:36:28 - [Commands] Sending to C-2 (version=DC command=92 flag=01) +0000000000000000 | 92 01 04 00 | +I 69775 2022-08-27 09:36:28 - [Commands] Received from C-2 (version=DC command=93 flag=00) +0000000000000000 | 93 00 14 01 00 00 FF FF FF FF 00 00 00 00 8A 03 | +0000000000000010 | CA 3B 9F 4A 21 00 00 00 00 01 00 00 37 37 37 37 | ; J! 7777 +0000000000000020 | 37 37 37 37 00 00 00 00 00 00 00 00 00 31 31 31 | 7777 111 +0000000000000030 | 31 31 31 31 31 00 00 00 00 00 00 00 00 00 38 38 | 11111 88 +0000000000000040 | 39 31 36 36 33 32 00 00 00 00 00 00 00 00 00 00 | 916632 +0000000000000050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 54 61 | Ta +00000000000000A0 | 6C 69 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | li +00000000000000B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000110 | 00 00 00 00 | +I 69775 2022-08-27 09:36:28 - Game version changed to DC +I 69775 2022-08-27 09:36:28 - [Commands] Sending to C-2 (version=DC command=04 flag=00) +0000000000000000 | 04 00 2C 00 00 00 01 00 77 77 77 77 39 98 AC 82 | , wwww9 +0000000000000010 | 0E 89 2A 49 14 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 69775 2022-08-27 09:36:28 - [Commands] Sending to C-2 (version=DC command=07 flag=04) +0000000000000000 | 07 04 90 00 11 00 00 11 FF FF FF FF 04 00 41 6C | Al +0000000000000010 | 65 78 61 6E 64 72 69 61 00 00 00 00 00 00 00 00 | exandria +0000000000000020 | 11 00 00 11 11 22 22 11 04 0F 47 6F 20 74 6F 20 | "" Go to +0000000000000030 | 6C 6F 62 62 79 00 00 00 00 00 00 00 11 00 00 11 | lobby +0000000000000040 | 11 44 44 11 04 0F 44 6F 77 6E 6C 6F 61 64 20 71 | DD Download q +0000000000000050 | 75 65 73 74 73 00 00 00 11 00 00 11 11 88 88 11 | uests +0000000000000060 | 04 0F 44 69 73 63 6F 6E 6E 65 63 74 00 00 00 00 | Disconnect +0000000000000070 | 00 00 00 00 11 00 00 11 11 99 99 11 04 0F 43 6C | Cl +0000000000000080 | 65 61 72 20 6C 69 63 65 6E 73 65 00 00 00 00 00 | ear license +I 69775 2022-08-27 09:36:29 - [Commands] Received from C-2 (version=DC command=96 flag=00) +0000000000000000 | 96 00 0C 00 93 6C 91 88 16 00 00 00 | l +I 69775 2022-08-27 09:36:29 - [Commands] Sending to C-2 (version=DC command=B1 flag=00) +0000000000000000 | B1 00 1C 00 32 30 32 32 3A 30 38 3A 32 37 3A 20 | 2022:08:27: +0000000000000010 | 31 36 3A 33 36 3A 32 39 2E 30 30 30 | 16:36:29.000 +I 69775 2022-08-27 09:36:29 - [Commands] Received from C-2 (version=DC command=99 flag=00) +0000000000000000 | 99 00 04 00 | +I 69775 2022-08-27 09:36:30 - [Commands] Received from C-2 (version=DC command=10 flag=00) +0000000000000000 | 10 00 0C 00 11 00 00 11 11 22 22 11 | "" +I 69775 2022-08-27 09:36:30 - [Commands] Sending to C-2 (version=DC command=97 flag=01) +0000000000000000 | 97 01 04 00 | +I 69775 2022-08-27 09:36:30 - [Commands] Sending to C-2 (version=DC command=04 flag=00) +0000000000000000 | 04 00 2C 00 00 00 01 00 77 77 77 77 39 98 AC 82 | , wwww9 +0000000000000010 | 0E 89 2A 49 14 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 69775 2022-08-27 09:36:31 - [Commands] Received from C-2 (version=DC command=B1 flag=00) +0000000000000000 | B1 00 04 00 | +I 69775 2022-08-27 09:36:31 - [Commands] Sending to C-2 (version=DC command=B1 flag=00) +0000000000000000 | B1 00 1C 00 32 30 32 32 3A 30 38 3A 32 37 3A 20 | 2022:08:27: +0000000000000010 | 31 36 3A 33 36 3A 33 31 2E 30 30 30 | 16:36:31.000 +I 69775 2022-08-27 09:36:31 - [Commands] Sending to C-2 (version=DC command=19 flag=00) +0000000000000000 | 19 00 0C 00 0A 00 00 04 F6 13 00 00 | +I 69775 2022-08-27 09:36:31 - [Commands] Received from C-2 (version=DC command=99 flag=00) +0000000000000000 | 99 00 04 00 | +I 69775 2022-08-27 09:36:31 - [Server] Client disconnected: C-2 on fd 35 +I 69775 2022-08-27 09:36:31 - [Server] Client connected: C-3 on fd 35 via 29 (T-5110-DC-console-lobby-lobby_server) +I 69775 2022-08-27 09:36:31 - [Commands] Sending to C-3 (version=GC command=02 flag=00) +0000000000000000 | 02 00 0C 01 44 72 65 61 6D 43 61 73 74 20 4C 6F | DreamCast Lo +0000000000000010 | 62 62 79 20 53 65 72 76 65 72 2E 20 43 6F 70 79 | bby Server. Copy +0000000000000020 | 72 69 67 68 74 20 53 45 47 41 20 45 6E 74 65 72 | right SEGA Enter +0000000000000030 | 70 72 69 73 65 73 2E 20 31 39 39 39 00 00 00 00 | prises. 1999 +0000000000000040 | 00 00 00 00 6A 52 B6 87 9F 86 78 83 54 68 69 73 | jR x This +0000000000000050 | 20 73 65 72 76 65 72 20 69 73 20 69 6E 20 6E 6F | server is in no +0000000000000060 | 20 77 61 79 20 61 66 66 69 6C 69 61 74 65 64 2C | way affiliated, +0000000000000070 | 20 73 70 6F 6E 73 6F 72 65 64 2C 20 6F 72 20 73 | sponsored, or s +0000000000000080 | 75 70 70 6F 72 74 65 64 20 62 79 20 53 45 47 41 | upported by SEGA +0000000000000090 | 20 45 6E 74 65 72 70 72 69 73 65 73 20 6F 72 20 | Enterprises or +00000000000000A0 | 53 4F 4E 49 43 54 45 41 4D 2E 20 54 68 65 20 70 | SONICTEAM. The p +00000000000000B0 | 72 65 63 65 64 69 6E 67 20 6D 65 73 73 61 67 65 | receding message +00000000000000C0 | 20 65 78 69 73 74 73 20 6F 6E 6C 79 20 69 6E 20 | exists only in +00000000000000D0 | 6F 72 64 65 72 20 74 6F 20 72 65 6D 61 69 6E 20 | order to remain +00000000000000E0 | 63 6F 6D 70 61 74 69 62 6C 65 20 77 69 74 68 20 | compatible with +00000000000000F0 | 70 72 6F 67 72 61 6D 73 20 74 68 61 74 20 65 78 | programs that ex +0000000000000100 | 70 65 63 74 20 69 74 2E 00 00 00 00 | pect it. +I 69775 2022-08-27 09:36:31 - [Commands] Received from C-3 (version=GC command=93 flag=00) +0000000000000000 | 93 00 B0 00 00 00 01 00 77 77 77 77 00 00 8A 03 | wwww +0000000000000010 | CA 3B 9F 4A 21 00 00 00 00 01 00 00 37 37 37 37 | ; J! 7777 +0000000000000020 | 37 37 37 37 00 00 00 00 00 00 00 00 00 31 31 31 | 7777 111 +0000000000000030 | 31 31 31 31 31 00 00 00 00 00 00 00 00 00 38 38 | 11111 88 +0000000000000040 | 39 31 36 36 33 32 00 00 00 00 00 00 00 00 00 00 | 916632 +0000000000000050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 54 61 | Ta +00000000000000A0 | 6C 69 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | li +I 69775 2022-08-27 09:36:31 - Game version changed to DC +I 69775 2022-08-27 09:36:31 - [Commands] Sending to C-3 (version=DC command=04 flag=00) +0000000000000000 | 04 00 2C 00 00 00 01 00 77 77 77 77 39 98 AC 82 | , wwww9 +0000000000000010 | 0E 89 2A 49 14 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 69775 2022-08-27 09:36:31 - [Commands] Sending to C-3 (version=DC command=83 flag=0F) +0000000000000000 | 83 0F B8 00 33 00 00 33 01 00 00 00 00 00 00 00 | 3 3 +0000000000000010 | 33 00 00 33 02 00 00 00 00 00 00 00 33 00 00 33 | 3 3 3 3 +0000000000000020 | 03 00 00 00 00 00 00 00 33 00 00 33 04 00 00 00 | 3 3 +0000000000000030 | 00 00 00 00 33 00 00 33 05 00 00 00 00 00 00 00 | 3 3 +0000000000000040 | 33 00 00 33 06 00 00 00 00 00 00 00 33 00 00 33 | 3 3 3 3 +0000000000000050 | 07 00 00 00 00 00 00 00 33 00 00 33 08 00 00 00 | 3 3 +0000000000000060 | 00 00 00 00 33 00 00 33 09 00 00 00 00 00 00 00 | 3 3 +0000000000000070 | 33 00 00 33 0A 00 00 00 00 00 00 00 33 00 00 33 | 3 3 3 3 +0000000000000080 | 0B 00 00 00 00 00 00 00 33 00 00 33 0C 00 00 00 | 3 3 +0000000000000090 | 00 00 00 00 33 00 00 33 0D 00 00 00 00 00 00 00 | 3 3 +00000000000000A0 | 33 00 00 33 0E 00 00 00 00 00 00 00 33 00 00 33 | 3 3 3 3 +00000000000000B0 | 0F 00 00 00 00 00 00 00 | +I 69775 2022-08-27 09:36:31 - [Commands] Sending to C-3 (version=DC command=95 flag=00) +0000000000000000 | 95 00 04 00 | +I 69775 2022-08-27 09:36:32 - [Commands] Received from C-3 (version=DC command=61 flag=01) +0000000000000000 | 61 01 20 04 08 00 00 01 02 00 00 00 4C 00 00 00 | a L +0000000000000010 | 00 06 00 00 00 00 00 00 00 00 00 00 08 00 01 10 | +0000000000000020 | 00 00 00 00 02 00 00 00 4C 00 00 00 01 01 00 00 | L +0000000000000030 | 00 00 00 00 00 00 00 00 09 00 01 10 00 00 00 00 | +0000000000000040 | 02 00 00 00 4C 00 00 00 02 00 05 00 F4 01 01 00 | L +0000000000000050 | 00 00 00 00 0A 00 01 10 00 00 00 00 01 00 00 00 | +0000000000000060 | 10 00 00 00 03 00 00 00 00 03 00 00 00 00 00 00 | +0000000000000070 | 0B 00 01 10 00 00 00 00 01 00 00 00 10 00 00 00 | +0000000000000080 | 03 01 00 00 00 05 00 00 00 00 00 00 0C 00 01 10 | +0000000000000090 | 00 00 00 00 01 00 00 00 04 00 00 00 00 0A 00 00 | +00000000000000A0 | 00 00 00 00 00 00 00 00 0D 00 01 10 00 00 00 00 | +00000000000000B0 | 01 00 00 00 10 00 00 00 03 02 00 00 0F 00 00 00 | +00000000000000C0 | 00 00 00 00 0E 00 01 10 00 00 00 00 01 00 00 00 | +00000000000000D0 | 04 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 | +00000000000000E0 | 0F 00 01 10 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000110 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000130 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000150 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000170 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000190 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000210 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000230 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000250 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000270 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000290 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000310 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000330 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000350 | 14 00 00 00 1F 00 11 00 17 00 2D 00 0A 00 28 00 | - ( +0000000000000360 | 00 00 98 41 00 00 20 41 00 00 00 00 14 00 00 00 | A A +0000000000000370 | 58 00 00 00 54 61 6C 69 00 00 00 00 00 00 00 00 | X Tali +0000000000000380 | 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF | +0000000000000390 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000003A0 | 00 00 00 00 04 05 00 02 52 00 00 00 00 00 02 00 | R +00000000000003B0 | 00 00 03 00 00 00 64 00 B2 00 B9 00 CC 45 98 3E | d E > +00000000000003C0 | 00 00 00 00 00 00 00 00 01 00 01 00 02 00 01 00 | +00000000000003D0 | 02 01 01 00 04 00 01 00 01 00 01 00 00 00 00 00 | +00000000000003E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000003F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000400 | 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF | +0000000000000410 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 | +I 69775 2022-08-27 09:36:32 - [Commands] Sending to C-3 (Tali) (version=DC command=67 flag=01) +0000000000000000 | 67 01 4C 04 00 00 01 00 01 00 00 00 00 00 00 00 | g L +0000000000000010 | 00 00 01 00 77 77 77 77 7F 00 00 01 00 00 00 00 | wwww +0000000000000020 | 09 4A 54 61 6C 69 00 00 00 00 00 00 00 00 00 00 | JTali +0000000000000030 | 08 00 00 01 02 00 00 00 4C 00 00 00 00 06 00 00 | L +0000000000000040 | 00 00 00 00 00 00 00 00 08 00 01 10 00 00 00 00 | +0000000000000050 | 02 00 00 00 4C 00 00 00 01 01 00 00 00 00 00 00 | L +0000000000000060 | 00 00 00 00 09 00 01 10 00 00 00 00 02 00 00 00 | +0000000000000070 | 4C 00 00 00 02 00 05 00 F4 01 01 00 00 00 00 00 | L +0000000000000080 | 0A 00 01 10 00 00 00 00 01 00 00 00 10 00 00 00 | +0000000000000090 | 03 00 00 00 00 03 00 00 00 00 00 00 0B 00 01 10 | +00000000000000A0 | 00 00 00 00 01 00 00 00 10 00 00 00 03 01 00 00 | +00000000000000B0 | 00 05 00 00 00 00 00 00 0C 00 01 10 00 00 00 00 | +00000000000000C0 | 01 00 00 00 04 00 00 00 00 0A 00 00 00 00 00 00 | +00000000000000D0 | 00 00 00 00 0D 00 01 10 00 00 00 00 01 00 00 00 | +00000000000000E0 | 10 00 00 00 03 02 00 00 0F 00 00 00 00 00 00 00 | +00000000000000F0 | 0E 00 01 10 00 00 00 00 01 00 00 00 04 00 00 00 | +0000000000000100 | 00 01 00 00 00 00 00 00 00 00 00 00 0F 00 01 10 | +0000000000000110 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000130 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000150 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000170 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000190 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000210 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000230 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000250 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000270 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000290 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000310 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000330 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000350 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000370 | 00 00 00 00 00 00 00 00 00 00 00 00 14 00 00 00 | +0000000000000380 | 1F 00 11 00 17 00 2D 00 0A 00 28 00 00 00 98 41 | - ( A +0000000000000390 | 00 00 20 41 00 00 00 00 14 00 00 00 58 00 00 00 | A X +00000000000003A0 | 54 61 6C 69 00 00 00 00 00 00 00 00 00 00 00 00 | Tali +00000000000003B0 | 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 | +00000000000003C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000003D0 | 04 05 00 02 52 00 00 00 00 00 02 00 00 00 03 00 | R +00000000000003E0 | 00 00 64 00 B2 00 B9 00 CC 45 98 3E 00 00 00 00 | d E > +00000000000003F0 | 00 00 00 00 01 00 01 00 02 00 01 00 02 01 01 00 | +0000000000000400 | 04 00 01 00 01 00 01 00 00 00 00 00 00 00 00 00 | +0000000000000410 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000430 | 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF | +0000000000000440 | FF FF FF FF FF FF FF FF FF FF FF 00 | +I 69775 2022-08-27 09:36:33 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3F 06 00 00 00 00 00 40 0F 00 FF FF | ` ? @ +0000000000000010 | A6 31 62 C2 00 00 00 00 A0 4C 89 3E | 1b L > +I 69775 2022-08-27 09:36:33 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 1F 02 00 00 0F 00 00 00 | ` +I 69775 2022-08-27 09:36:33 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 3B 01 00 00 | ` ; +I 69775 2022-08-27 09:36:33 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 23 01 00 00 | ` # +I 69775 2022-08-27 09:36:33 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 0D 03 00 00 01 00 00 00 00 00 00 00 | ` +I 69775 2022-08-27 09:36:36 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 A6 31 62 C2 65 4A 04 41 | ` @ 1b eJ A +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:36:36 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 93 CA 65 C2 06 FA 7F 41 | ` @ e A +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:36:37 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 46 9A 57 C2 E8 5A B9 41 | ` @ F W Z A +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:36:37 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 0A 8C 4E C2 0F 59 F6 41 | ` @ N Y A +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:36:37 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 9E ED 34 C2 24 71 0E 42 | ` B 4 $q B +I 69775 2022-08-27 09:36:37 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 4C CD 1F C2 9C 8F 23 42 | ` B L #B +I 69775 2022-08-27 09:36:37 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 02 49 01 C2 06 2D 20 42 | ` B I - B +I 69775 2022-08-27 09:36:38 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 E1 B8 C7 C1 21 54 1E 42 | ` B !T B +I 69775 2022-08-27 09:36:38 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 42 67 8D C1 91 5E 17 42 | ` B Bg ^ B +I 69775 2022-08-27 09:36:38 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 04 84 2E C1 C8 B5 25 42 | ` B . %B +I 69775 2022-08-27 09:36:38 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 20 AC 73 C0 C0 E1 2E 42 | ` B s .B +I 69775 2022-08-27 09:36:38 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 1C D4 49 40 2E 0C 3A 42 | ` B I@. :B +I 69775 2022-08-27 09:36:38 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 44 FB 21 41 3F 1F 45 42 | ` B D !A? EB +I 69775 2022-08-27 09:36:39 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 86 BF 88 41 DD 33 50 42 | ` B A 3PB +I 69775 2022-08-27 09:36:39 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 52 80 C0 41 D8 49 5B 42 | ` B R A I[B +I 69775 2022-08-27 09:36:39 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 9D 40 F8 41 7C 60 66 42 | ` B @ A|`fB +I 69775 2022-08-27 09:36:39 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 2F 00 18 42 CF 77 71 42 | ` B / B wqB +I 69775 2022-08-27 09:36:39 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 14 E0 33 42 16 8F 7C 42 | ` B 3B |B +I 69775 2022-08-27 09:36:39 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 EB BF 4F 42 40 D3 83 42 | ` B OB@ B +I 69775 2022-08-27 09:36:40 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 C2 9F 6B 42 F5 5E 89 42 | ` B kB ^ B +I 69775 2022-08-27 09:36:40 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 AE 95 76 42 4D A9 97 42 | ` B vBM B +I 69775 2022-08-27 09:36:40 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 EF 34 8A 42 A8 FF 9C 42 | ` B 4 B B +I 69775 2022-08-27 09:36:40 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 E8 C9 96 42 06 01 A5 42 | ` B B B +I 69775 2022-08-27 09:36:40 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 08 F4 A3 42 6F 31 AC 42 | ` B Bo1 B +I 69775 2022-08-27 09:36:40 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 C9 19 B1 42 07 6A B3 42 | ` B B j B +I 69775 2022-08-27 09:36:41 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 16 3F BE 42 71 A3 BA 42 | ` B ? Bq B +I 69775 2022-08-27 09:36:41 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 88 2B 0F 00 01 00 | ` > + +0000000000000010 | BB 5E BD 42 00 00 00 00 29 28 BA 42 | ^ B )( B +I 69775 2022-08-27 09:36:42 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 D5 58 AF 42 E3 73 B2 42 | ` @ X B s B +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:36:42 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 13 A4 0F 00 01 00 | ` > +0000000000000010 | 6D B6 AF 42 00 00 00 00 87 B7 B3 42 | m B B +I 69775 2022-08-27 09:36:43 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 CA 09 BD 42 A6 92 BC 42 | ` @ B B +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:36:43 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 23 6C CA 42 5E BC C3 42 | ` @ #l B^ B +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:36:43 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 EE 2A 0F 00 01 00 | ` > * +0000000000000010 | FC 5E CA 42 00 00 00 00 3A C9 C3 42 | ^ B : B +I 69775 2022-08-27 09:36:43 - [Commands] Received from C-3 (Tali) (version=DC command=06 flag=00) +0000000000000000 | 06 00 18 00 00 00 00 00 00 00 00 00 09 45 24 63 | E$c +0000000000000010 | 68 65 61 74 00 00 00 00 | heat +I 69775 2022-08-27 09:36:43 - [Commands] Sending to C-3 (Tali) (version=DC command=B0 flag=00) +0000000000000000 | B0 00 38 00 00 00 00 00 00 00 00 00 09 43 36 54 | 8 C6T +0000000000000010 | 68 69 73 20 63 6F 6D 6D 61 6E 64 20 63 61 6E 6E | his command cann +0000000000000020 | 6F 74 0A 62 65 20 75 73 65 64 20 69 6E 20 6C 6F | ot be used in lo +0000000000000030 | 62 62 69 65 73 2E 00 00 | bbies. +I 69775 2022-08-27 09:36:45 - [Commands] Received from C-3 (Tali) (version=DC command=06 flag=00) +0000000000000000 | 06 00 18 00 00 00 00 00 00 00 00 00 09 45 24 63 | E$c +0000000000000010 | 68 65 61 74 00 00 00 00 | heat +I 69775 2022-08-27 09:36:45 - [Commands] Sending to C-3 (Tali) (version=DC command=B0 flag=00) +0000000000000000 | B0 00 38 00 00 00 00 00 00 00 00 00 09 43 36 54 | 8 C6T +0000000000000010 | 68 69 73 20 63 6F 6D 6D 61 6E 64 20 63 61 6E 6E | his command cann +0000000000000020 | 6F 74 0A 62 65 20 75 73 65 64 20 69 6E 20 6C 6F | ot be used in lo +0000000000000030 | 62 62 69 65 73 2E 00 00 | bbies. +I 69775 2022-08-27 09:36:46 - [Commands] Received from C-3 (Tali) (version=DC command=84 flag=00) +0000000000000000 | 84 00 0C 00 33 00 00 33 0A 00 00 00 | 3 3 +I 69775 2022-08-27 09:36:46 - [Commands] Sending to C-3 (Tali) (version=DC command=67 flag=01) +0000000000000000 | 67 01 4C 04 00 00 01 09 0A 00 00 00 00 00 00 00 | g L +0000000000000010 | 00 00 01 00 77 77 77 77 7F 00 00 01 00 00 00 00 | wwww +0000000000000020 | 09 4A 54 61 6C 69 00 00 00 00 00 00 00 00 00 00 | JTali +0000000000000030 | 08 00 00 01 02 00 00 00 4C 00 00 00 00 06 00 00 | L +0000000000000040 | 00 00 00 00 00 00 00 00 08 00 01 10 00 00 00 00 | +0000000000000050 | 02 00 00 00 4C 00 00 00 01 01 00 00 00 00 00 00 | L +0000000000000060 | 00 00 00 00 09 00 01 10 00 00 00 00 02 00 00 00 | +0000000000000070 | 4C 00 00 00 02 00 05 00 F4 01 01 00 00 00 00 00 | L +0000000000000080 | 0A 00 01 10 00 00 00 00 01 00 00 00 10 00 00 00 | +0000000000000090 | 03 00 00 00 00 03 00 00 00 00 00 00 0B 00 01 10 | +00000000000000A0 | 00 00 00 00 01 00 00 00 10 00 00 00 03 01 00 00 | +00000000000000B0 | 00 05 00 00 00 00 00 00 0C 00 01 10 00 00 00 00 | +00000000000000C0 | 01 00 00 00 04 00 00 00 00 0A 00 00 00 00 00 00 | +00000000000000D0 | 00 00 00 00 0D 00 01 10 00 00 00 00 01 00 00 00 | +00000000000000E0 | 10 00 00 00 03 02 00 00 0F 00 00 00 00 00 00 00 | +00000000000000F0 | 0E 00 01 10 00 00 00 00 01 00 00 00 04 00 00 00 | +0000000000000100 | 00 01 00 00 00 00 00 00 00 00 00 00 0F 00 01 10 | +0000000000000110 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000130 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000150 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000170 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000190 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000210 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000230 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000250 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000270 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000290 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000310 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000330 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000350 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000370 | 00 00 00 00 00 00 00 00 00 00 00 00 14 00 00 00 | +0000000000000380 | 1F 00 11 00 17 00 2D 00 0A 00 28 00 00 00 98 41 | - ( A +0000000000000390 | 00 00 20 41 00 00 00 00 14 00 00 00 58 00 00 00 | A X +00000000000003A0 | 54 61 6C 69 00 00 00 00 00 00 00 00 00 00 00 00 | Tali +00000000000003B0 | 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 | +00000000000003C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000003D0 | 04 05 00 02 52 00 00 00 00 00 02 00 00 00 03 00 | R +00000000000003E0 | 00 00 64 00 B2 00 B9 00 CC 45 98 3E 00 00 00 00 | d E > +00000000000003F0 | 00 00 00 00 01 00 01 00 02 00 01 00 02 01 01 00 | +0000000000000400 | 04 00 01 00 01 00 01 00 00 00 00 00 00 00 00 00 | +0000000000000410 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000430 | 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF | +0000000000000440 | FF FF FF FF FF FF FF FF FF FF FF 00 | +I 69775 2022-08-27 09:36:46 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 52 03 00 00 0A 00 00 00 EE 2A 00 00 | ` R * +I 69775 2022-08-27 09:36:47 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3F 06 00 00 00 00 00 40 0F 00 FF FF | ` ? @ +0000000000000010 | A6 31 62 C2 00 00 00 00 A0 4C 89 3E | 1b L > +I 69775 2022-08-27 09:36:47 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 1F 02 00 00 0F 00 00 00 | ` +I 69775 2022-08-27 09:36:47 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 3B 01 00 00 | ` ; +I 69775 2022-08-27 09:36:47 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 23 01 00 00 | ` # +I 69775 2022-08-27 09:36:47 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 0D 03 00 00 00 00 00 00 00 00 00 00 | ` +I 69775 2022-08-27 09:36:53 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 D3 18 81 C2 A0 4C 89 3E | ` @ L > +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:36:54 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 8B B8 0F 00 01 00 | ` > +0000000000000010 | F6 2A 80 C2 00 00 00 00 F8 F0 3B 3F | * ;? +I 69775 2022-08-27 09:36:59 - [Commands] Received from C-3 (Tali) (version=DC command=06 flag=00) +0000000000000000 | 06 00 14 00 00 00 00 00 00 00 00 00 09 45 31 31 | E11 +0000000000000010 | 31 31 31 00 | 111 +I 69775 2022-08-27 09:36:59 - [Commands] Sending to C-3 (Tali) (version=DC command=06 flag=00) +0000000000000000 | 06 00 1C 00 00 00 00 00 77 77 77 77 54 61 6C 69 | wwwwTali +0000000000000010 | 09 09 4A 31 31 31 31 31 00 00 00 00 | J11111 +I 69775 2022-08-27 09:37:00 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 BD 74 60 C2 16 B5 B6 3F | ` @ t` ? +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:37:00 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 F3 16 42 C2 F2 79 A8 3F | ` @ B y ? +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:37:01 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 E0 33 22 C2 C5 7E F0 3F | ` @ 3" ~ ? +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:37:01 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 48 65 0A C2 5A 6E 5E C0 | ` @ He Zn^ +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:37:01 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 96 62 0F 00 01 00 | ` > b +0000000000000010 | 89 4A 0A C2 00 00 00 00 D9 8D 51 C0 | J Q +I 69775 2022-08-27 09:37:01 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 00 C1 D4 C1 FA 05 77 C0 | ` @ w +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:37:01 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 52 03 00 00 0A 00 00 00 59 54 00 00 | ` R YT +I 69775 2022-08-27 09:37:06 - [Commands] Received from C-3 (Tali) (version=DC command=A0 flag=00) +0000000000000000 | A0 00 1C 00 00 00 01 00 77 77 77 77 00 00 00 00 | wwww +0000000000000010 | 00 00 00 00 00 00 00 00 00 00 00 00 | +I 69775 2022-08-27 09:37:06 - [Commands] Sending to C-3 (Tali) (version=DC command=69 flag=00) +0000000000000000 | 69 00 08 00 00 00 00 00 | i +I 69775 2022-08-27 09:37:06 - [Commands] Sending to C-3 (Tali) (version=DC command=1A flag=00) +0000000000000000 | 1A 00 08 00 00 00 00 00 | +I 69775 2022-08-27 09:37:06 - [Commands] Sending to C-3 (Tali) (version=DC command=19 flag=00) +0000000000000000 | 19 00 0C 00 0A 00 00 04 EC 13 00 00 | +I 69775 2022-08-27 09:37:06 - [Server] Client disconnected: C-3 on fd 35 +I 69775 2022-08-27 09:37:06 - [Server] Client connected: C-4 on fd 35 via 6 (T-5100-DC-console-login-login_server) +I 69775 2022-08-27 09:37:06 - [Commands] Sending to C-4 (version=GC command=17 flag=00) +0000000000000000 | 17 00 0C 01 44 72 65 61 6D 43 61 73 74 20 50 6F | DreamCast Po +0000000000000010 | 72 74 20 4D 61 70 2E 20 43 6F 70 79 72 69 67 68 | rt Map. Copyrigh +0000000000000020 | 74 20 53 45 47 41 20 45 6E 74 65 72 70 72 69 73 | t SEGA Enterpris +0000000000000030 | 65 73 2E 20 31 39 39 39 00 00 00 00 00 00 00 00 | es. 1999 +0000000000000040 | 00 00 00 00 21 1D 93 AD 04 5D 95 12 54 68 69 73 | ! ] This +0000000000000050 | 20 73 65 72 76 65 72 20 69 73 20 69 6E 20 6E 6F | server is in no +0000000000000060 | 20 77 61 79 20 61 66 66 69 6C 69 61 74 65 64 2C | way affiliated, +0000000000000070 | 20 73 70 6F 6E 73 6F 72 65 64 2C 20 6F 72 20 73 | sponsored, or s +0000000000000080 | 75 70 70 6F 72 74 65 64 20 62 79 20 53 45 47 41 | upported by SEGA +0000000000000090 | 20 45 6E 74 65 72 70 72 69 73 65 73 20 6F 72 20 | Enterprises or +00000000000000A0 | 53 4F 4E 49 43 54 45 41 4D 2E 20 54 68 65 20 70 | SONICTEAM. The p +00000000000000B0 | 72 65 63 65 64 69 6E 67 20 6D 65 73 73 61 67 65 | receding message +00000000000000C0 | 20 65 78 69 73 74 73 20 6F 6E 6C 79 20 69 6E 20 | exists only in +00000000000000D0 | 6F 72 64 65 72 20 74 6F 20 72 65 6D 61 69 6E 20 | order to remain +00000000000000E0 | 63 6F 6D 70 61 74 69 62 6C 65 20 77 69 74 68 20 | compatible with +00000000000000F0 | 70 72 6F 67 72 61 6D 73 20 74 68 61 74 20 65 78 | programs that ex +0000000000000100 | 70 65 63 74 20 69 74 2E 00 00 00 00 | pect it. +I 69775 2022-08-27 09:37:07 - [Commands] Received from C-4 (version=GC command=90 flag=00) +0000000000000000 | 90 00 28 00 37 37 37 37 37 37 37 37 00 00 00 00 | ( 77777777 +0000000000000010 | 00 00 00 00 00 31 31 31 31 31 31 31 31 00 00 00 | 11111111 +0000000000000020 | 00 00 00 00 00 00 00 00 | +I 69775 2022-08-27 09:37:07 - [Commands] Sending to C-4 (version=DC command=90 flag=02) +0000000000000000 | 90 02 04 00 | +I 69775 2022-08-27 09:37:07 - [Commands] Received from C-4 (version=DC command=93 flag=00) +0000000000000000 | 93 00 14 01 00 00 01 00 77 77 77 77 00 00 8A 03 | wwww +0000000000000010 | CA 3B 9F 4A 21 00 00 00 00 01 00 00 37 37 37 37 | ; J! 7777 +0000000000000020 | 37 37 37 37 00 00 00 00 00 00 00 00 00 31 31 31 | 7777 111 +0000000000000030 | 31 31 31 31 31 00 00 00 00 00 00 00 00 00 38 38 | 11111 88 +0000000000000040 | 39 31 36 36 33 32 00 00 00 00 00 00 00 00 00 00 | 916632 +0000000000000050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 54 61 | Ta +00000000000000A0 | 6C 69 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | li +00000000000000B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000110 | 00 00 00 00 | +I 69775 2022-08-27 09:37:07 - Game version changed to DC +I 69775 2022-08-27 09:37:07 - [Commands] Sending to C-4 (version=DC command=04 flag=00) +0000000000000000 | 04 00 2C 00 00 00 01 00 77 77 77 77 39 98 AC 82 | , wwww9 +0000000000000010 | 0E 89 2A 49 14 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 69775 2022-08-27 09:37:07 - [Commands] Sending to C-4 (version=DC command=07 flag=04) +0000000000000000 | 07 04 90 00 11 00 00 11 FF FF FF FF 04 00 41 6C | Al +0000000000000010 | 65 78 61 6E 64 72 69 61 00 00 00 00 00 00 00 00 | exandria +0000000000000020 | 11 00 00 11 11 22 22 11 04 0F 47 6F 20 74 6F 20 | "" Go to +0000000000000030 | 6C 6F 62 62 79 00 00 00 00 00 00 00 11 00 00 11 | lobby +0000000000000040 | 11 44 44 11 04 0F 44 6F 77 6E 6C 6F 61 64 20 71 | DD Download q +0000000000000050 | 75 65 73 74 73 00 00 00 11 00 00 11 11 88 88 11 | uests +0000000000000060 | 04 0F 44 69 73 63 6F 6E 6E 65 63 74 00 00 00 00 | Disconnect +0000000000000070 | 00 00 00 00 11 00 00 11 11 99 99 11 04 0F 43 6C | Cl +0000000000000080 | 65 61 72 20 6C 69 63 65 6E 73 65 00 00 00 00 00 | ear license +I 69775 2022-08-27 09:37:09 - [Commands] Received from C-4 (version=DC command=10 flag=00) +0000000000000000 | 10 00 0C 00 11 00 00 11 11 22 22 11 | "" +I 69775 2022-08-27 09:37:09 - [Commands] Sending to C-4 (version=DC command=97 flag=01) +0000000000000000 | 97 01 04 00 | +I 69775 2022-08-27 09:37:09 - [Commands] Sending to C-4 (version=DC command=04 flag=00) +0000000000000000 | 04 00 2C 00 00 00 01 00 77 77 77 77 39 98 AC 82 | , wwww9 +0000000000000010 | 0E 89 2A 49 14 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 69775 2022-08-27 09:37:10 - [Commands] Received from C-4 (version=DC command=B1 flag=00) +0000000000000000 | B1 00 04 00 | +I 69775 2022-08-27 09:37:10 - [Commands] Sending to C-4 (version=DC command=B1 flag=00) +0000000000000000 | B1 00 1C 00 32 30 32 32 3A 30 38 3A 32 37 3A 20 | 2022:08:27: +0000000000000010 | 31 36 3A 33 37 3A 31 30 2E 30 30 30 | 16:37:10.000 +I 69775 2022-08-27 09:37:10 - [Commands] Sending to C-4 (version=DC command=19 flag=00) +0000000000000000 | 19 00 0C 00 0A 00 00 04 F6 13 00 00 | +I 69775 2022-08-27 09:37:10 - [Commands] Received from C-4 (version=DC command=99 flag=00) +0000000000000000 | 99 00 04 00 | +I 69775 2022-08-27 09:37:10 - [Server] Client disconnected: C-4 on fd 35 +I 69775 2022-08-27 09:37:10 - [Server] Client connected: C-5 on fd 35 via 29 (T-5110-DC-console-lobby-lobby_server) +I 69775 2022-08-27 09:37:10 - [Commands] Sending to C-5 (version=GC command=02 flag=00) +0000000000000000 | 02 00 0C 01 44 72 65 61 6D 43 61 73 74 20 4C 6F | DreamCast Lo +0000000000000010 | 62 62 79 20 53 65 72 76 65 72 2E 20 43 6F 70 79 | bby Server. Copy +0000000000000020 | 72 69 67 68 74 20 53 45 47 41 20 45 6E 74 65 72 | right SEGA Enter +0000000000000030 | 70 72 69 73 65 73 2E 20 31 39 39 39 00 00 00 00 | prises. 1999 +0000000000000040 | 00 00 00 00 54 B2 46 0F 7D 4C 43 48 54 68 69 73 | T F }LCHThis +0000000000000050 | 20 73 65 72 76 65 72 20 69 73 20 69 6E 20 6E 6F | server is in no +0000000000000060 | 20 77 61 79 20 61 66 66 69 6C 69 61 74 65 64 2C | way affiliated, +0000000000000070 | 20 73 70 6F 6E 73 6F 72 65 64 2C 20 6F 72 20 73 | sponsored, or s +0000000000000080 | 75 70 70 6F 72 74 65 64 20 62 79 20 53 45 47 41 | upported by SEGA +0000000000000090 | 20 45 6E 74 65 72 70 72 69 73 65 73 20 6F 72 20 | Enterprises or +00000000000000A0 | 53 4F 4E 49 43 54 45 41 4D 2E 20 54 68 65 20 70 | SONICTEAM. The p +00000000000000B0 | 72 65 63 65 64 69 6E 67 20 6D 65 73 73 61 67 65 | receding message +00000000000000C0 | 20 65 78 69 73 74 73 20 6F 6E 6C 79 20 69 6E 20 | exists only in +00000000000000D0 | 6F 72 64 65 72 20 74 6F 20 72 65 6D 61 69 6E 20 | order to remain +00000000000000E0 | 63 6F 6D 70 61 74 69 62 6C 65 20 77 69 74 68 20 | compatible with +00000000000000F0 | 70 72 6F 67 72 61 6D 73 20 74 68 61 74 20 65 78 | programs that ex +0000000000000100 | 70 65 63 74 20 69 74 2E 00 00 00 00 | pect it. +I 69775 2022-08-27 09:37:10 - [Commands] Received from C-5 (version=GC command=93 flag=00) +0000000000000000 | 93 00 B0 00 00 00 01 00 77 77 77 77 00 00 8A 03 | wwww +0000000000000010 | CA 3B 9F 4A 21 00 00 00 00 01 00 00 37 37 37 37 | ; J! 7777 +0000000000000020 | 37 37 37 37 00 00 00 00 00 00 00 00 00 31 31 31 | 7777 111 +0000000000000030 | 31 31 31 31 31 00 00 00 00 00 00 00 00 00 38 38 | 11111 88 +0000000000000040 | 39 31 36 36 33 32 00 00 00 00 00 00 00 00 00 00 | 916632 +0000000000000050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 54 61 | Ta +00000000000000A0 | 6C 69 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | li +I 69775 2022-08-27 09:37:10 - Game version changed to DC +I 69775 2022-08-27 09:37:10 - [Commands] Sending to C-5 (version=DC command=04 flag=00) +0000000000000000 | 04 00 2C 00 00 00 01 00 77 77 77 77 39 98 AC 82 | , wwww9 +0000000000000010 | 0E 89 2A 49 14 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 69775 2022-08-27 09:37:10 - [Commands] Sending to C-5 (version=DC command=83 flag=0F) +0000000000000000 | 83 0F B8 00 33 00 00 33 01 00 00 00 00 00 00 00 | 3 3 +0000000000000010 | 33 00 00 33 02 00 00 00 00 00 00 00 33 00 00 33 | 3 3 3 3 +0000000000000020 | 03 00 00 00 00 00 00 00 33 00 00 33 04 00 00 00 | 3 3 +0000000000000030 | 00 00 00 00 33 00 00 33 05 00 00 00 00 00 00 00 | 3 3 +0000000000000040 | 33 00 00 33 06 00 00 00 00 00 00 00 33 00 00 33 | 3 3 3 3 +0000000000000050 | 07 00 00 00 00 00 00 00 33 00 00 33 08 00 00 00 | 3 3 +0000000000000060 | 00 00 00 00 33 00 00 33 09 00 00 00 00 00 00 00 | 3 3 +0000000000000070 | 33 00 00 33 0A 00 00 00 00 00 00 00 33 00 00 33 | 3 3 3 3 +0000000000000080 | 0B 00 00 00 00 00 00 00 33 00 00 33 0C 00 00 00 | 3 3 +0000000000000090 | 00 00 00 00 33 00 00 33 0D 00 00 00 00 00 00 00 | 3 3 +00000000000000A0 | 33 00 00 33 0E 00 00 00 00 00 00 00 33 00 00 33 | 3 3 3 3 +00000000000000B0 | 0F 00 00 00 00 00 00 00 | +I 69775 2022-08-27 09:37:10 - [Commands] Sending to C-5 (version=DC command=95 flag=00) +0000000000000000 | 95 00 04 00 | +I 69775 2022-08-27 09:37:10 - [Commands] Received from C-5 (version=DC command=61 flag=01) +0000000000000000 | 61 01 20 04 08 00 00 01 02 00 00 00 4C 00 00 00 | a L +0000000000000010 | 00 06 00 00 00 00 00 00 00 00 00 00 08 00 01 10 | +0000000000000020 | 00 00 00 00 02 00 00 00 4C 00 00 00 01 01 00 00 | L +0000000000000030 | 00 00 00 00 00 00 00 00 09 00 01 10 00 00 00 00 | +0000000000000040 | 02 00 00 00 4C 00 00 00 02 00 05 00 F4 01 01 00 | L +0000000000000050 | 00 00 00 00 0A 00 01 10 00 00 00 00 01 00 00 00 | +0000000000000060 | 10 00 00 00 03 00 00 00 00 03 00 00 00 00 00 00 | +0000000000000070 | 0B 00 01 10 00 00 00 00 01 00 00 00 10 00 00 00 | +0000000000000080 | 03 01 00 00 00 05 00 00 00 00 00 00 0C 00 01 10 | +0000000000000090 | 00 00 00 00 01 00 00 00 04 00 00 00 00 0A 00 00 | +00000000000000A0 | 00 00 00 00 00 00 00 00 0D 00 01 10 00 00 00 00 | +00000000000000B0 | 01 00 00 00 10 00 00 00 03 02 00 00 0F 00 00 00 | +00000000000000C0 | 00 00 00 00 0E 00 01 10 00 00 00 00 01 00 00 00 | +00000000000000D0 | 04 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 | +00000000000000E0 | 0F 00 01 10 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000110 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000130 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000150 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000170 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000190 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000210 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000230 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000250 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000270 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000290 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000310 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000330 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000350 | 14 00 00 00 1F 00 11 00 17 00 2D 00 0A 00 28 00 | - ( +0000000000000360 | 00 00 98 41 00 00 20 41 00 00 00 00 14 00 00 00 | A A +0000000000000370 | 58 00 00 00 54 61 6C 69 00 00 00 00 00 00 00 00 | X Tali +0000000000000380 | 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF | +0000000000000390 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000003A0 | 00 00 00 00 04 05 00 02 52 00 00 00 00 00 02 00 | R +00000000000003B0 | 00 00 03 00 00 00 64 00 B2 00 B9 00 CC 45 98 3E | d E > +00000000000003C0 | 00 00 00 00 00 00 00 00 01 00 01 00 02 00 01 00 | +00000000000003D0 | 02 01 01 00 04 00 01 00 01 00 01 00 00 00 00 00 | +00000000000003E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000003F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000400 | 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF | +0000000000000410 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 | +I 69775 2022-08-27 09:37:10 - [Commands] Sending to C-5 (Tali) (version=DC command=67 flag=01) +0000000000000000 | 67 01 4C 04 00 00 01 00 01 00 00 00 00 00 00 00 | g L +0000000000000010 | 00 00 01 00 77 77 77 77 7F 00 00 01 00 00 00 00 | wwww +0000000000000020 | 09 4A 54 61 6C 69 00 00 00 00 00 00 00 00 00 00 | JTali +0000000000000030 | 08 00 00 01 02 00 00 00 4C 00 00 00 00 06 00 00 | L +0000000000000040 | 00 00 00 00 00 00 00 00 08 00 01 10 00 00 00 00 | +0000000000000050 | 02 00 00 00 4C 00 00 00 01 01 00 00 00 00 00 00 | L +0000000000000060 | 00 00 00 00 09 00 01 10 00 00 00 00 02 00 00 00 | +0000000000000070 | 4C 00 00 00 02 00 05 00 F4 01 01 00 00 00 00 00 | L +0000000000000080 | 0A 00 01 10 00 00 00 00 01 00 00 00 10 00 00 00 | +0000000000000090 | 03 00 00 00 00 03 00 00 00 00 00 00 0B 00 01 10 | +00000000000000A0 | 00 00 00 00 01 00 00 00 10 00 00 00 03 01 00 00 | +00000000000000B0 | 00 05 00 00 00 00 00 00 0C 00 01 10 00 00 00 00 | +00000000000000C0 | 01 00 00 00 04 00 00 00 00 0A 00 00 00 00 00 00 | +00000000000000D0 | 00 00 00 00 0D 00 01 10 00 00 00 00 01 00 00 00 | +00000000000000E0 | 10 00 00 00 03 02 00 00 0F 00 00 00 00 00 00 00 | +00000000000000F0 | 0E 00 01 10 00 00 00 00 01 00 00 00 04 00 00 00 | +0000000000000100 | 00 01 00 00 00 00 00 00 00 00 00 00 0F 00 01 10 | +0000000000000110 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000130 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000150 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000170 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000190 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000210 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000230 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000250 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000270 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000290 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000310 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000330 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000350 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000370 | 00 00 00 00 00 00 00 00 00 00 00 00 14 00 00 00 | +0000000000000380 | 1F 00 11 00 17 00 2D 00 0A 00 28 00 00 00 98 41 | - ( A +0000000000000390 | 00 00 20 41 00 00 00 00 14 00 00 00 58 00 00 00 | A X +00000000000003A0 | 54 61 6C 69 00 00 00 00 00 00 00 00 00 00 00 00 | Tali +00000000000003B0 | 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 | +00000000000003C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000003D0 | 04 05 00 02 52 00 00 00 00 00 02 00 00 00 03 00 | R +00000000000003E0 | 00 00 64 00 B2 00 B9 00 CC 45 98 3E 00 00 00 00 | d E > +00000000000003F0 | 00 00 00 00 01 00 01 00 02 00 01 00 02 01 01 00 | +0000000000000400 | 04 00 01 00 01 00 01 00 00 00 00 00 00 00 00 00 | +0000000000000410 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000430 | 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF | +0000000000000440 | FF FF FF FF FF FF FF FF FF FF FF 00 | +I 69775 2022-08-27 09:37:12 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3F 06 00 00 00 00 00 40 0F 00 FF FF | ` ? @ +0000000000000010 | A6 31 62 C2 00 00 00 00 A0 4C 89 3E | 1b L > +I 69775 2022-08-27 09:37:12 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 1F 02 00 00 0F 00 00 00 | ` +I 69775 2022-08-27 09:37:12 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 3B 01 00 00 | ` ; +I 69775 2022-08-27 09:37:12 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 23 01 00 00 | ` # +I 69775 2022-08-27 09:37:12 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 0D 03 00 00 00 00 00 00 00 00 00 00 | ` +I 69775 2022-08-27 09:37:12 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 0D 03 00 00 01 00 00 00 00 00 00 00 | ` +I 69775 2022-08-27 09:37:13 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 A6 31 42 C2 A0 4C 89 3E | ` @ 1B L > +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:37:13 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 A6 31 22 C2 A0 4C 89 3E | ` @ 1" L > +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:37:13 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 A6 31 02 C2 A0 4C 89 3E | ` @ 1 L > +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:37:14 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 00 40 0F 00 01 00 | ` > @ +0000000000000010 | A6 31 06 C2 00 00 00 00 A0 4C 89 3E | 1 L > +I 69775 2022-08-27 09:37:14 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 52 03 00 00 0A 00 00 00 00 40 00 00 | ` R @ +I 69775 2022-08-27 09:37:22 - [Commands] Received from C-5 (Tali) (version=DC command=0C flag=03) +0000000000000000 | 0C 03 30 00 00 00 00 00 00 00 00 00 09 45 31 31 | 0 E11 +0000000000000010 | 31 31 31 31 31 00 00 00 00 00 00 00 00 00 00 00 | 11111 +0000000000000020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +I 69775 2022-08-27 09:37:22 - [Lobby/15] Created lobby +[PlayerInventory] Meseta: 88 +[PlayerInventory] 8 items +[PlayerInventory] 0 (00010000): 000600 (Handgun 0/0/0/0/0) +[PlayerInventory] 1 (00010001): 010100 (Frame) +[PlayerInventory] 2 (00010002): 020000 (Mag LV5 5/0/0/0 0% 0IQ) +[PlayerInventory] 3 (00010003): 030000 (Monomate x3) +[PlayerInventory] 4 (00010004): 030100 (Monofluid x5) +[PlayerInventory] 5 (00010005): 000A00 (Cane 0/0/0/0/0) +[PlayerInventory] 6 (00010006): 030200 (Disk:Resta Lv.1) +[PlayerInventory] 7 (00010007): 000100 (Saber 0/0/0/0/0) +I 69775 2022-08-27 09:37:22 - [Commands] Sending to C-5 (Tali) (version=DC command=64 flag=01) +0000000000000000 | 64 01 14 01 00 00 00 00 00 00 00 00 00 00 00 00 | d +0000000000000010 | 01 00 00 00 00 00 00 00 03 00 00 00 01 00 00 00 | +0000000000000020 | 00 00 00 00 02 00 00 00 01 00 00 00 00 00 00 00 | +0000000000000030 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000040 | 00 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 | +0000000000000050 | 01 00 00 00 02 00 00 00 01 00 00 00 00 00 00 00 | +0000000000000060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000080 | 00 00 00 00 00 00 01 00 77 77 77 77 7F 00 00 01 | wwww +0000000000000090 | 00 00 00 00 09 4A 54 61 6C 69 00 00 00 00 00 00 | JTali +00000000000000A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000100 | 00 00 00 00 00 00 01 00 00 00 04 00 BD 33 66 57 | 3fW +0000000000000110 | 01 01 00 00 | +I 69775 2022-08-27 09:37:34 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3F 06 00 00 00 00 00 C0 00 00 00 00 | ` ? +0000000000000010 | CE FE 64 43 00 00 00 00 B8 FF 7D 43 | dC }C +I 69775 2022-08-27 09:37:34 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 1F 02 00 00 00 00 00 00 | ` +I 69775 2022-08-27 09:37:34 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 3B 01 00 00 | ` ; +I 69775 2022-08-27 09:37:34 - [Commands] Received from C-5 (Tali) (version=DC command=6F flag=00) +0000000000000000 | 6F 00 04 00 | o +I 69775 2022-08-27 09:37:34 - [Commands] Sending to C-5 (Tali) (version=DC command=B1 flag=00) +0000000000000000 | B1 00 1C 00 32 30 32 32 3A 30 38 3A 32 37 3A 20 | 2022:08:27: +0000000000000010 | 31 36 3A 33 37 3A 33 34 2E 30 30 30 | 16:37:34.000 +I 69775 2022-08-27 09:37:34 - [Commands] Received from C-5 (Tali) (version=DC command=99 flag=00) +0000000000000000 | 99 00 04 00 | +I 69775 2022-08-27 09:37:34 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 0D 03 00 00 00 00 00 00 00 00 00 00 | ` +I 69775 2022-08-27 09:37:34 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 0D 03 00 00 01 00 00 00 00 00 00 00 | ` +I 69775 2022-08-27 09:37:36 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 CE FE 5C 43 B8 FF 7D 43 | ` @ \C }C +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:37:36 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 C2 4E 57 43 80 5F 78 43 | ` @ NWC _xC +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:37:37 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 0C 3E 52 43 5B 57 72 43 | ` @ >RC[WrC +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:37:37 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 B2 4D 4E 43 C6 60 6B 43 | ` @ MNC `kC +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:37:37 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 A3 A3 4B 43 52 D8 63 43 | ` B KCR cC +I 69775 2022-08-27 09:37:37 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 CB 15 4A 43 3C 85 5C 43 | ` B JC< \C +I 69775 2022-08-27 09:37:38 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 BF 7E 49 43 CB 0D 55 43 | ` B ~IC UC +I 69775 2022-08-27 09:37:38 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 17 D8 49 43 60 92 4D 43 | ` B IC` MC +I 69775 2022-08-27 09:37:38 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 6A 2D 45 43 9E 7F 47 43 | ` B j-EC GC +I 69775 2022-08-27 09:37:38 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 6C C5 41 43 64 DA 40 43 | ` B l ACd @C +I 69775 2022-08-27 09:37:38 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 13 EB 3D 43 3B 6B 3A 43 | ` B =C;k:C +I 69775 2022-08-27 09:37:38 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 1F 1A 40 43 F3 15 33 43 | ` B @C 3C +I 69775 2022-08-27 09:37:39 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 35 E2 41 43 B3 EE 2B 43 | ` B 5 AC +C +I 69775 2022-08-27 09:37:39 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 9F E7 44 43 D6 12 25 43 | ` B DC %C +I 69775 2022-08-27 09:37:39 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 9D A2 42 43 D1 C2 1D 43 | ` B BC C +I 69775 2022-08-27 09:37:39 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 12 B1 41 43 EA 5B 16 43 | ` B AC [ C +I 69775 2022-08-27 09:37:39 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 3F 3D 40 43 51 00 0F 43 | ` B ?=@CQ C +I 69775 2022-08-27 09:37:39 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 50 D0 3E 43 50 A3 07 43 | ` B P >CP C +I 69775 2022-08-27 09:37:40 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 3E 63 3D 43 56 46 00 43 | ` B >c=CVF C +I 69775 2022-08-27 09:37:40 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 E4 EC 41 43 A9 39 F4 42 | ` B AC 9 B +I 69775 2022-08-27 09:37:40 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 80 05 46 43 B7 F7 E7 42 | ` B FC B +I 69775 2022-08-27 09:37:40 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 5F 2F 4B 43 6D 1A DD 42 | ` B _/KCm B +I 69775 2022-08-27 09:37:40 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 FF 85 4B 43 08 CE CD 42 | ` B KC B +I 69775 2022-08-27 09:37:40 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 00 24 4D 43 56 3C BF 42 | ` B $MCV< B +I 69775 2022-08-27 09:37:41 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 06 44 4E 43 E7 67 B0 42 | ` B DNC g B +I 69775 2022-08-27 09:37:41 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 1D 6B 4F 43 86 95 A1 42 | ` B kOC B +I 69775 2022-08-27 09:37:41 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 77 92 50 43 3D C3 92 42 | ` B w PC= B +I 69775 2022-08-27 09:37:41 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 FF B9 51 43 FF F0 83 42 | ` B QC B +I 69775 2022-08-27 09:37:41 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 B3 E1 52 43 9D 3D 6A 42 | ` B RC =jB +I 69775 2022-08-27 09:37:41 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 99 09 54 43 5A 99 4C 42 | ` B TCZ LB +I 69775 2022-08-27 09:37:42 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 42 65 5A 43 7E 90 3B 42 | ` B BeZC~ ;B +I 69775 2022-08-27 09:37:42 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 9E 53 60 43 D4 0D 2A 42 | ` B S`C *B +I 69775 2022-08-27 09:37:42 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 86 06 67 43 22 9C 1C 42 | ` B gC" B +I 69775 2022-08-27 09:37:42 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 5F 0D 6E 43 C7 32 12 42 | ` B _ nC 2 B +I 69775 2022-08-27 09:37:42 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 BA 54 75 43 44 16 0B 42 | ` B TuCD B +I 69775 2022-08-27 09:37:42 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 81 C4 7C 43 FB 71 07 42 | ` B |C q B +I 69775 2022-08-27 09:37:43 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 34 21 82 43 DC 5F 07 42 | ` B 4! C _ B +I 69775 2022-08-27 09:37:43 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 76 D9 85 43 B2 E6 0A 42 | ` B v C B +I 69775 2022-08-27 09:37:43 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 21 7D 89 43 45 FE 11 42 | ` B !} CE B +I 69775 2022-08-27 09:37:43 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 F9 E8 8C 43 D0 3B 04 42 | ` B C ; B +I 69775 2022-08-27 09:37:43 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 CC 7D 90 43 F3 9B F7 41 | ` B } C A +I 69775 2022-08-27 09:37:43 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 B0 02 94 43 89 E3 E2 41 | ` B C A +I 69775 2022-08-27 09:37:44 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 B9 68 97 43 1D 02 FF 41 | ` B h C A +I 69775 2022-08-27 09:37:44 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 6D C1 9A 43 B6 DB 0B 42 | ` B m C B +I 69775 2022-08-27 09:37:44 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 E6 7C 9E 43 EA 18 05 42 | ` B | C B +I 69775 2022-08-27 09:37:44 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 78 36 A2 43 06 8E 03 42 | ` B x6 C B +I 69775 2022-08-27 09:37:44 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 B3 EF A5 43 51 01 00 42 | ` B CQ B +I 69775 2022-08-27 09:37:44 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 50 A9 A9 43 69 1A F9 41 | ` B P Ci A +I 69775 2022-08-27 09:37:45 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 F6 62 AD 43 29 37 F2 41 | ` B b C)7 A +I 69775 2022-08-27 09:37:45 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 A0 1C B1 43 30 55 EB 41 | ` B C0U A +I 69775 2022-08-27 09:37:45 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 B0 44 00 00 00 00 | ` > D +0000000000000010 | 0D DD B0 43 00 00 80 3F 57 CA EB 41 | C ?W A +I 69775 2022-08-27 09:37:45 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 21 02 00 00 01 00 00 00 | ` ! +I 69775 2022-08-27 09:37:45 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 22 01 00 00 | ` " +I 69775 2022-08-27 09:37:53 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 75 02 08 8C 14 00 00 00 | ` u +I 69775 2022-08-27 09:37:53 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3F 06 00 00 00 00 00 D0 01 00 00 00 | ` ? +0000000000000010 | A9 29 05 44 1A CE E7 40 6B A6 F1 43 | ) D @k C +I 69775 2022-08-27 09:37:53 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 1F 02 00 00 01 00 00 00 | ` +I 69775 2022-08-27 09:37:53 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 23 01 00 00 | ` # +I 69775 2022-08-27 09:37:55 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 98 ED 05 44 78 58 F5 43 | ` @ DxX C +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:37:55 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 B1 E0 06 44 DF BD F8 43 | ` @ D C +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:37:55 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 6C 95 06 44 83 4C FC 43 | ` @ l D L C +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:37:55 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 6B C2 06 44 13 21 00 44 | ` @ k D ! D +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:37:56 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 16 37 07 44 6D 12 02 44 | ` B 7 Dm D +I 69775 2022-08-27 09:37:56 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 23 E0 07 44 15 D3 03 44 | ` B # D D +I 69775 2022-08-27 09:37:56 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 49 BF 08 44 62 7B 05 44 | ` B I Db{ D +I 69775 2022-08-27 09:37:56 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 5C D0 09 44 70 05 07 44 | ` B \ Dp D +I 69775 2022-08-27 09:37:56 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 18 0F 0B 44 95 6B 08 44 | ` B D k D +I 69775 2022-08-27 09:37:56 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 96 1D 01 00 10 00 | ` > +0000000000000010 | EE F5 0A 44 C8 E2 89 40 E7 56 08 44 | D @ V D +I 69775 2022-08-27 09:37:57 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 43 02 00 00 E4 21 00 00 | ` C ! +I 69775 2022-08-27 09:37:57 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 46 03 00 00 01 00 00 00 7A 40 00 00 | ` F z@ +I 69775 2022-08-27 09:37:57 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 0B 03 7A 40 01 00 00 00 7A 00 00 00 | ` z@ z +I 69775 2022-08-27 09:37:57 - [Commands] Received from C-5 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 18 00 60 05 F0 3F 01 30 7A 00 5C EF 11 44 | b ` ? 0z \ D +0000000000000010 | AE B1 0E 44 10 00 01 00 | D +I 69775 2022-08-27 09:37:57 - [Commands] Sending to C-5 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 18 00 60 05 F0 3F 01 30 7A 00 5C EF 11 44 | b ` ? 0z \ D +0000000000000010 | AE B1 0E 44 10 00 01 00 | D +I 69775 2022-08-27 09:37:57 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 2C 00 5F 0A 00 00 01 02 7A 00 5C EF 11 44 | ` , _ z \ D +0000000000000010 | AE B1 0E 44 10 00 00 00 04 00 00 00 00 00 00 00 | D +0000000000000020 | 00 00 00 00 7A 01 01 06 1D 00 00 00 | z +I 69775 2022-08-27 09:37:57 - [Lobby/15] Leader created ground item 0601017A at 1:(583.74, 570.776) +I 69775 2022-08-27 09:37:58 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 E3 21 01 00 10 00 | ` > ! +0000000000000010 | EE F5 0A 44 C8 E2 89 40 E7 56 08 44 | D @ V D +I 69775 2022-08-27 09:37:58 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 F1 6A 0B 44 5A 49 0A 44 | ` @ j DZI D +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:37:58 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 EE F0 0B 44 62 33 0C 44 | ` @ Db3 D +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:37:58 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 43 02 00 00 4A 10 00 00 | ` C J +I 69775 2022-08-27 09:37:58 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 46 03 00 00 01 00 00 00 7B 40 00 00 | ` F {@ +I 69775 2022-08-27 09:37:58 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 0B 03 7B 40 01 00 00 00 7B 00 00 00 | ` {@ { +I 69775 2022-08-27 09:37:58 - [Commands] Received from C-5 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 18 00 60 05 F0 3F 01 30 7B 00 5C AF 0D 44 | b ` ? 0{ \ D +0000000000000010 | AE B1 0F 44 10 00 01 00 | D +I 69775 2022-08-27 09:37:58 - [Commands] Sending to C-5 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 18 00 60 05 F0 3F 01 30 7B 00 5C AF 0D 44 | b ` ? 0{ \ D +0000000000000010 | AE B1 0F 44 10 00 01 00 | D +I 69775 2022-08-27 09:37:59 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 49 10 01 00 10 00 | ` > I +0000000000000010 | 50 7E 0B 44 60 6F 7A 40 39 82 0A 44 | P~ D`oz@9 D +I 69775 2022-08-27 09:37:59 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 17 F4 0B 44 7E 74 0C 44 | ` @ D~t D +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:37:59 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 3B AC 0D 44 00 7C 0D 44 | ` @ ; D | D +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:37:59 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 C3 6D 0F 44 A8 5E 0E 44 | ` @ m D ^ D +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:38:00 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 07 30 11 44 8B 6A 0D 44 | ` @ 0 D j D +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:38:00 - [Commands] Received from C-5 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 10 00 5A 03 00 00 7A 01 01 06 01 00 F9 8C | b Z z +I 69775 2022-08-27 09:38:00 - [Commands] Sending to C-5 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 10 00 5A 03 00 00 7A 01 01 06 01 00 F9 8C | b Z z +I 69775 2022-08-27 09:38:00 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 59 03 00 00 00 00 01 00 7A 01 01 06 | ` Y z +I 69775 2022-08-27 09:38:00 - [Lobby/15] Player 0 picked up 0601017A +[PlayerInventory] Meseta: 117 +[PlayerInventory] 8 items +[PlayerInventory] 0 (00010000): 000600 (Handgun 0/0/0/0/0) +[PlayerInventory] 1 (00010001): 010100 (Frame) +[PlayerInventory] 2 (00010002): 020000 (Mag LV5 5/0/0/0 0% 0IQ) +[PlayerInventory] 3 (00010003): 030000 (Monomate x3) +[PlayerInventory] 4 (00010004): 030100 (Monofluid x5) +[PlayerInventory] 5 (00010005): 000A00 (Cane 0/0/0/0/0) +[PlayerInventory] 6 (00010006): 030200 (Disk:Resta Lv.1) +[PlayerInventory] 7 (00010007): 000100 (Saber 0/0/0/0/0) +I 69775 2022-08-27 09:38:00 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 C3 57 11 44 EA 7C 0B 44 | ` B W D | D +I 69775 2022-08-27 09:38:00 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 CB 54 11 44 BC A9 09 44 | ` B T D D +I 69775 2022-08-27 09:38:00 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 E4 F0 10 44 74 D5 07 44 | ` B Dt D +I 69775 2022-08-27 09:38:01 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 89 4A 10 44 0A 14 06 44 | ` B J D D +I 69775 2022-08-27 09:38:01 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 AD 68 0F 44 57 6D 04 44 | ` B h DWm D +I 69775 2022-08-27 09:38:01 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 19 51 0E 44 05 E8 02 44 | ` B Q D D +I 69775 2022-08-27 09:38:01 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 BA 09 0D 44 DF 89 01 44 | ` B D D +I 69775 2022-08-27 09:38:01 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 9A 98 0B 44 03 58 00 44 | ` B D X D +I 69775 2022-08-27 09:38:01 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 16 04 0A 44 7B AD FE 43 | ` B D{ C +I 69775 2022-08-27 09:38:02 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 BA 52 08 44 77 13 FD 43 | ` B R Dw C +I 69775 2022-08-27 09:38:02 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 54 8B 06 44 C7 E7 FB 43 | ` B T D C +I 69775 2022-08-27 09:38:02 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 FE 8A 05 44 33 A4 F8 43 | ` B D3 C +I 69775 2022-08-27 09:38:02 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 A6 2E 04 44 91 0E F6 43 | ` B . D C +I 69775 2022-08-27 09:38:02 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 6A BF 02 44 0D A6 F3 43 | ` B j D C +I 69775 2022-08-27 09:38:02 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 A9 2D 01 44 FD 9A F1 43 | ` B - D C +I 69775 2022-08-27 09:38:03 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 AE FE FE 43 36 F4 EF 43 | ` B C6 C +I 69775 2022-08-27 09:38:03 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 B2 75 FB 43 2B B7 EE 43 | ` B u C+ C +I 69775 2022-08-27 09:38:03 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 56 CD F7 43 5E E8 ED 43 | ` B V C^ C +I 69775 2022-08-27 09:38:03 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 F7 12 F4 43 08 8B ED 43 | ` B C C +I 69775 2022-08-27 09:38:03 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 4A 54 F0 43 D7 A0 ED 43 | ` B JT C C +I 69775 2022-08-27 09:38:03 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 07 5F ED 43 ED 31 EB 43 | ` B _ C 1 C +I 69775 2022-08-27 09:38:04 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 B8 86 EC 43 22 A8 E7 43 | ` B C" C +I 69775 2022-08-27 09:38:04 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 9D 4A EB 43 0E 26 E4 43 | ` B J C & C +I 69775 2022-08-27 09:38:04 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 43 02 00 00 09 82 00 00 | ` C +I 69775 2022-08-27 09:38:04 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 46 03 00 00 01 00 00 00 7D 40 00 00 | ` F }@ +I 69775 2022-08-27 09:38:04 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 0B 03 7D 40 01 00 00 00 7D 00 00 00 | ` }@ } +I 69775 2022-08-27 09:38:04 - [Commands] Received from C-5 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 18 00 60 05 5A 41 01 30 7D 00 29 56 EA 43 | b ` ZA 0} )V C +0000000000000010 | 61 E8 CF 43 10 00 01 00 | a C +I 69775 2022-08-27 09:38:04 - [Commands] Sending to C-5 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 18 00 60 05 5A 41 01 30 7D 00 29 56 EA 43 | b ` ZA 0} )V C +0000000000000010 | 61 E8 CF 43 10 00 01 00 | a C +I 69775 2022-08-27 09:38:05 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 09 82 01 00 10 00 | ` > +0000000000000010 | 46 5C EB 43 20 53 2E 41 93 63 E4 43 | F\ C S.A c C +I 69775 2022-08-27 09:38:05 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 F3 6D EA 43 B2 7F E0 43 | ` @ m C C +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:38:05 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 43 02 00 00 0E 97 00 00 | ` C +I 69775 2022-08-27 09:38:05 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 46 03 00 00 01 00 00 00 7C 40 00 00 | ` F |@ +I 69775 2022-08-27 09:38:06 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 0B 03 7C 40 01 00 00 00 7C 00 00 00 | ` |@ | +I 69775 2022-08-27 09:38:06 - [Commands] Received from C-5 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 18 00 60 05 71 41 01 30 7C 00 29 56 E1 43 | b ` qA 0| )V C +0000000000000010 | 61 68 D2 43 10 00 01 00 | ah C +I 69775 2022-08-27 09:38:06 - [Commands] Sending to C-5 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 18 00 60 05 71 41 01 30 7C 00 29 56 E1 43 | b ` qA 0| )V C +0000000000000010 | 61 68 D2 43 10 00 01 00 | ah C +I 69775 2022-08-27 09:38:06 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 2C 00 5F 0A 00 00 01 02 7C 00 29 56 E1 43 | ` , _ | )V C +0000000000000010 | 61 68 D2 43 10 00 00 00 03 00 00 00 00 01 00 00 | ah C +0000000000000020 | 00 00 00 00 7C 01 01 06 00 00 00 00 | | +I 69775 2022-08-27 09:38:06 - [Lobby/15] Leader created ground item 0601017C at 1:(450.673, 420.815) +I 69775 2022-08-27 09:38:06 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 0D 97 01 00 10 00 | ` > +0000000000000010 | CD 96 EA 43 02 C7 23 41 26 FA E0 43 | C #A& C +I 69775 2022-08-27 09:38:06 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 82 74 E9 43 28 24 DD 43 | ` @ t C($ C +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:38:07 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 91 3E E8 43 05 56 D9 43 | ` @ > C V C +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:38:07 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 C4 B7 E4 43 B0 74 D7 43 | ` @ C t C +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:38:07 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 8B 2E E3 43 04 C1 D3 43 | ` @ . C C +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:38:07 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 5C 8C 01 00 10 00 | ` > \ +0000000000000010 | 8A 21 E3 43 D6 E8 7E 41 CB D5 D3 43 | ! C ~A C +I 69775 2022-08-27 09:38:08 - [Commands] Received from C-5 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 10 00 5A 03 00 00 7C 01 01 06 01 00 00 00 | b Z | +I 69775 2022-08-27 09:38:08 - [Commands] Sending to C-5 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 10 00 5A 03 00 00 7C 01 01 06 01 00 00 00 | b Z | +I 69775 2022-08-27 09:38:08 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 59 03 00 00 00 00 01 00 7C 01 01 06 | ` Y | +I 69775 2022-08-27 09:38:08 - [Lobby/15] Player 0 picked up 0601017C +[PlayerInventory] Meseta: 117 +[PlayerInventory] 8 items +[PlayerInventory] 0 (00010000): 000600 (Handgun 0/0/0/0/0) +[PlayerInventory] 1 (00010001): 010100 (Frame) +[PlayerInventory] 2 (00010002): 020000 (Mag LV5 5/0/0/0 0% 0IQ) +[PlayerInventory] 3 (00010003): 030000 (Monomate x4) +[PlayerInventory] 4 (00010004): 030100 (Monofluid x5) +[PlayerInventory] 5 (00010005): 000A00 (Cane 0/0/0/0/0) +[PlayerInventory] 6 (00010006): 030200 (Disk:Resta Lv.1) +[PlayerInventory] 7 (00010007): 000100 (Saber 0/0/0/0/0) +I 69775 2022-08-27 09:38:10 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 8A EC E4 43 29 69 D7 43 | ` @ C)i C +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:38:11 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 A3 0B 01 00 10 00 | ` > +0000000000000010 | DC 04 E5 43 54 11 74 41 51 20 D7 43 | CT tAQ C +I 69775 2022-08-27 09:38:15 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 18 00 2C 05 00 00 84 03 00 00 DC 04 E5 43 | ` , C +0000000000000010 | 51 20 D7 43 00 00 00 00 | Q C +I 69775 2022-08-27 09:38:15 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 2A 06 00 00 01 00 01 00 06 00 01 00 | ` * +0000000000000010 | 3D DD E5 43 36 FE 98 41 35 01 DA 43 | = C6 A5 C +I 69775 2022-08-27 09:38:15 - [Lobby/15] Player 0 dropped item 00010006 at 1:(459.728, 436.009) +[PlayerInventory] Meseta: 117 +[PlayerInventory] 7 items +[PlayerInventory] 0 (00010000): 000600 (Handgun 0/0/0/0/0) +[PlayerInventory] 1 (00010001): 010100 (Frame) +[PlayerInventory] 2 (00010002): 020000 (Mag LV5 5/0/0/0 0% 0IQ) +[PlayerInventory] 3 (00010003): 030000 (Monomate x4) +[PlayerInventory] 4 (00010004): 030100 (Monofluid x5) +[PlayerInventory] 5 (00010005): 000A00 (Cane 0/0/0/0/0) +[PlayerInventory] 6 (00010007): 000100 (Saber 0/0/0/0/0) +I 69775 2022-08-27 09:38:15 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 2D 01 00 00 | ` - +I 69775 2022-08-27 09:38:15 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 2D 01 00 00 | ` - +I 69775 2022-08-27 09:38:18 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 18 00 2C 05 00 00 84 03 00 00 DC 04 E5 43 | ` , C +0000000000000010 | 51 20 D7 43 00 00 00 00 | Q C +I 69775 2022-08-27 09:38:19 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 28 00 5D 09 00 00 01 00 10 00 C0 E5 E7 43 | ` ( ] C +0000000000000010 | F0 47 D6 43 03 01 00 00 00 02 00 00 00 00 00 00 | G C +0000000000000020 | 08 00 01 00 00 00 00 00 | +I 69775 2022-08-27 09:38:19 - [Lobby/15] Player 0 split stack to create ground item 00010008 at 1:(463.795, 428.562) +[PlayerInventory] Meseta: 117 +[PlayerInventory] 7 items +[PlayerInventory] 0 (00010000): 000600 (Handgun 0/0/0/0/0) +[PlayerInventory] 1 (00010001): 010100 (Frame) +[PlayerInventory] 2 (00010002): 020000 (Mag LV5 5/0/0/0 0% 0IQ) +[PlayerInventory] 3 (00010003): 030000 (Monomate x4) +[PlayerInventory] 4 (00010004): 030100 (Monofluid x5) +[PlayerInventory] 5 (00010005): 000A00 (Cane 0/0/0/0/0) +[PlayerInventory] 6 (00010007): 000100 (Saber 0/0/0/0/0) +I 69775 2022-08-27 09:38:19 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 29 03 00 00 04 00 01 00 02 00 00 00 | ` ) +I 69775 2022-08-27 09:38:19 - [Lobby/15] Inventory item 0:00010004 destroyed (2 of them) +[PlayerInventory] Meseta: 117 +[PlayerInventory] 7 items +[PlayerInventory] 0 (00010000): 000600 (Handgun 0/0/0/0/0) +[PlayerInventory] 1 (00010001): 010100 (Frame) +[PlayerInventory] 2 (00010002): 020000 (Mag LV5 5/0/0/0 0% 0IQ) +[PlayerInventory] 3 (00010003): 030000 (Monomate x4) +[PlayerInventory] 4 (00010004): 030100 (Monofluid x3) +[PlayerInventory] 5 (00010005): 000A00 (Cane 0/0/0/0/0) +[PlayerInventory] 6 (00010007): 000100 (Saber 0/0/0/0/0) +I 69775 2022-08-27 09:38:19 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 2D 01 00 00 | ` - +I 69775 2022-08-27 09:38:19 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 2D 01 00 00 | ` - +I 69775 2022-08-27 09:38:21 - [Commands] Received from C-5 (Tali) (version=DC command=06 flag=00) +0000000000000000 | 06 00 14 00 00 00 00 00 00 00 00 00 09 45 24 6C | E$l +0000000000000010 | 69 00 00 00 | i +I 69775 2022-08-27 09:38:21 - [Commands] Sending to C-5 (Tali) (version=DC command=B0 flag=00) +0000000000000000 | B0 00 54 00 00 00 00 00 00 00 00 00 09 43 36 47 | T C6G +0000000000000010 | 61 6D 65 20 49 44 3A 20 30 30 30 30 30 30 31 35 | ame ID: 00000015 +0000000000000020 | 0A 4C 65 76 65 6C 73 3A 20 31 2B 0A 53 65 63 74 | Levels: 1+ Sect +0000000000000030 | 69 6F 6E 20 49 44 3A 20 50 75 72 70 6C 65 6E 75 | ion ID: Purplenu +0000000000000040 | 6D 0A 43 68 65 61 74 20 6D 6F 64 65 3A 20 6F 66 | m Cheat mode: of +0000000000000050 | 66 00 00 00 | f +I 69775 2022-08-27 09:38:25 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 5B E4 E3 43 CC 49 D3 43 | ` @ [ C I C +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:38:25 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 2E 84 01 00 10 00 | ` > . +0000000000000010 | E4 BB E3 43 54 E8 7D 41 A9 93 D3 43 | CT }A C +I 69775 2022-08-27 09:38:26 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 2B 5B E4 43 32 87 D7 43 | ` @ +[ C2 C +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:38:26 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 D0 01 E8 43 DA 45 D9 43 | ` @ C E C +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:38:26 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 C0 8D EB 43 B4 DD DA 43 | ` @ C C +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:38:26 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 07 76 EF 43 05 B9 DB 43 | ` @ v C C +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:38:27 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 64 73 F3 43 DA EB DB 43 | ` B ds C C +I 69775 2022-08-27 09:38:27 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 64 2F F7 43 1E A5 DB 43 | ` B d/ C C +I 69775 2022-08-27 09:38:27 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 66 43 FA 43 29 ED DD 43 | ` B fC C) C +I 69775 2022-08-27 09:38:27 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 1B 9A FD 43 97 97 DF 43 | ` B C C +I 69775 2022-08-27 09:38:27 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 84 6B 00 44 C0 7B E1 43 | ` B k D { C +I 69775 2022-08-27 09:38:28 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 1C 0B 02 44 17 5C E3 43 | ` B D \ C +I 69775 2022-08-27 09:38:28 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 EE 76 02 44 A2 17 E7 43 | ` B v D C +I 69775 2022-08-27 09:38:28 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 B4 36 04 44 BE F2 E8 43 | ` B 6 D C +I 69775 2022-08-27 09:38:28 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 76 A0 05 44 25 61 EB 43 | ` B v D%a C +I 69775 2022-08-27 09:38:28 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 94 20 07 44 D0 A0 ED 43 | ` B D C +I 69775 2022-08-27 09:38:28 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 24 A0 08 44 FB E1 EF 43 | ` B $ D C +I 69775 2022-08-27 09:38:29 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 B5 1F 0A 44 23 23 F2 43 | ` B D## C +I 69775 2022-08-27 09:38:29 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 AA 50 0A 44 CC F1 F5 43 | ` B P D C +I 69775 2022-08-27 09:38:29 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 43 F0 0B 44 45 36 F8 43 | ` B C DE6 C +I 69775 2022-08-27 09:38:29 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 62 31 0D 44 43 F8 FA 43 | ` B b1 DC C +I 69775 2022-08-27 09:38:29 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 68 8B 0E 44 90 91 FD 43 | ` B h D C +I 69775 2022-08-27 09:38:29 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 B2 20 01 00 10 00 | ` > +0000000000000010 | 6E 74 0E 44 7C 6A A3 40 04 65 FD 43 | nt D|j @ e C +I 69775 2022-08-27 09:38:30 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 21 02 00 00 00 00 00 00 | ` ! +I 69775 2022-08-27 09:38:30 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 22 01 00 00 | ` " +I 69775 2022-08-27 09:38:37 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3F 06 00 00 00 00 00 C0 00 00 00 00 | ` ? +0000000000000010 | B0 E7 8E 43 00 00 00 00 40 9F B3 41 | C @ A +I 69775 2022-08-27 09:38:37 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 1F 02 00 00 00 00 00 00 | ` +I 69775 2022-08-27 09:38:37 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 3B 01 00 00 | ` ; +I 69775 2022-08-27 09:38:37 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 23 01 00 00 | ` # +I 69775 2022-08-27 09:38:38 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 B0 E7 8A 43 40 9F B3 41 | ` @ C@ A +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:38:38 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 B0 E7 86 43 40 9F B3 41 | ` @ C@ A +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:38:38 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 9C 13 84 43 7D E0 E0 41 | ` @ C} A +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:38:38 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 B7 8F 81 43 6A AC 08 42 | ` @ Cj B +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:38:39 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 EB 02 7C 43 DA B0 0D 42 | ` B |C B +I 69775 2022-08-27 09:38:39 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 B3 19 75 43 77 06 19 42 | ` B uCw B +I 69775 2022-08-27 09:38:39 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 DA FE 6D 43 FA A0 22 42 | ` B mC "B +I 69775 2022-08-27 09:38:39 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 1A E6 66 43 91 55 2C 42 | ` B fC U,B +I 69775 2022-08-27 09:38:39 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 C6 CD 5F 43 15 0F 36 42 | ` B _C 6B +I 69775 2022-08-27 09:38:39 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 9F C2 5C 43 22 27 52 42 | ` B \C"'RB +I 69775 2022-08-27 09:38:40 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 55 85 59 43 E2 A1 6C 42 | ` B U YC lB +I 69775 2022-08-27 09:38:40 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 7F 6C 57 43 F3 B4 84 42 | ` B lWC B +I 69775 2022-08-27 09:38:40 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 BF 21 56 43 11 78 93 42 | ` B !VC x B +I 69775 2022-08-27 09:38:40 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 42 B2 55 43 DA 6D A2 42 | ` B B UC m B +I 69775 2022-08-27 09:38:40 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 74 24 56 43 08 63 B1 42 | ` B t$VC c B +I 69775 2022-08-27 09:38:40 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 B8 79 57 43 9D 21 C0 42 | ` B yWC ! B +I 69775 2022-08-27 09:38:41 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 54 96 53 43 FE 54 CD 42 | ` B T SC T B +I 69775 2022-08-27 09:38:41 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 7C 02 51 43 09 58 DB 42 | ` B | QC X B +I 69775 2022-08-27 09:38:41 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 DB F3 4D 43 5D 0A E9 42 | ` B MC] B +I 69775 2022-08-27 09:38:41 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 15 EC 4A 43 F4 C2 F6 42 | ` B JC B +I 69775 2022-08-27 09:38:41 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 B4 E4 47 43 F3 3D 02 43 | ` B GC = C +I 69775 2022-08-27 09:38:41 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 A8 DD 44 43 90 1A 09 43 | ` B DC C +I 69775 2022-08-27 09:38:42 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 C4 D6 41 43 3F F7 0F 43 | ` B AC? C +I 69775 2022-08-27 09:38:42 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 0C D0 3E 43 03 D4 16 43 | ` B >C C +I 69775 2022-08-27 09:38:42 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 81 C9 3B 43 DA B0 1D 43 | ` B ;C C +I 69775 2022-08-27 09:38:42 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 F1 C2 38 43 AE 8D 24 43 | ` B 8C $C +I 69775 2022-08-27 09:38:42 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 97 BC 35 43 98 6A 2B 43 | ` B 5C j+C +I 69775 2022-08-27 09:38:42 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 33 B6 32 43 7E 47 32 43 | ` B 3 2C~G2C +I 69775 2022-08-27 09:38:43 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 EC CE 35 43 92 47 39 43 | ` B 5C G9C +I 69775 2022-08-27 09:38:43 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 83 79 38 43 7F 26 40 43 | ` B y8C &@C +I 69775 2022-08-27 09:38:43 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 0A 57 3C 43 45 92 46 43 | ` B W UC +I 69775 2022-08-27 09:38:46 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 48 45 92 43 D5 29 55 43 | ` B HE C )UC +I 69775 2022-08-27 09:38:46 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 42 DC 95 43 AF 26 53 43 | ` B B C &SC +I 69775 2022-08-27 09:38:46 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 00 88 99 43 91 9E 51 43 | ` B C QC +I 69775 2022-08-27 09:38:46 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 7E 48 00 00 00 00 | ` > ~H +0000000000000010 | 69 49 99 43 00 00 00 00 4F B9 51 43 | iI C O QC +I 69775 2022-08-27 09:38:46 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 22 01 00 00 | ` " +I 69775 2022-08-27 09:38:46 - [Commands] Received from C-5 (Tali) (version=DC command=98 flag=01) +0000000000000000 | 98 01 20 04 07 00 00 01 02 00 00 00 4C 00 00 00 | L +0000000000000010 | 00 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 | +0000000000000020 | 00 00 00 00 02 00 00 00 4C 00 00 00 01 01 00 00 | L +0000000000000030 | 00 00 00 00 00 00 00 00 01 00 01 00 00 00 00 00 | +0000000000000040 | 02 00 00 00 4C 00 00 00 02 00 05 00 F4 01 01 00 | L +0000000000000050 | 00 00 00 00 02 00 01 00 00 00 00 00 01 00 00 00 | +0000000000000060 | 10 00 00 00 03 00 00 00 00 04 00 00 00 00 00 00 | +0000000000000070 | 03 00 01 00 00 00 00 00 01 00 00 00 10 00 00 00 | +0000000000000080 | 03 01 00 00 00 03 00 00 00 00 00 00 04 00 01 00 | +0000000000000090 | 00 00 00 00 01 00 00 00 04 00 00 00 00 0A 00 00 | +00000000000000A0 | 00 00 00 00 00 00 00 00 05 00 01 00 00 00 00 00 | +00000000000000B0 | 01 00 00 00 04 00 00 00 00 01 00 00 00 00 00 00 | +00000000000000C0 | 00 00 00 00 07 00 01 00 00 00 00 00 00 00 00 00 | +00000000000000D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000110 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000130 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000150 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000170 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000190 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000210 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000230 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000250 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000270 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000290 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000310 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000330 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000350 | 14 00 00 00 1F 00 11 00 17 00 2D 00 0A 00 28 00 | - ( +0000000000000360 | 00 00 98 41 00 00 20 41 00 00 00 00 14 00 00 00 | A A +0000000000000370 | 75 00 00 00 54 61 6C 69 00 00 00 00 00 00 00 00 | u Tali +0000000000000380 | 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF | +0000000000000390 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000003A0 | 00 00 00 00 04 05 00 02 52 00 00 00 00 00 02 00 | R +00000000000003B0 | 00 00 03 00 00 00 64 00 B2 00 B9 00 CC 45 98 3E | d E > +00000000000003C0 | 00 00 00 00 00 00 00 00 01 06 01 00 02 00 00 00 | +00000000000003D0 | 02 01 00 00 04 00 01 00 01 06 01 00 00 00 00 00 | +00000000000003E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000003F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000400 | 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF | +0000000000000410 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 | +I 69775 2022-08-27 09:38:46 - [Lobby/15] Deleted lobby +I 69775 2022-08-27 09:38:49 - [Commands] Received from C-5 (Tali) (version=DC command=84 flag=00) +0000000000000000 | 84 00 0C 00 33 00 00 33 01 00 00 00 | 3 3 +I 69775 2022-08-27 09:38:49 - [Commands] Sending to C-5 (Tali) (version=DC command=67 flag=01) +0000000000000000 | 67 01 4C 04 00 00 01 00 01 00 00 00 00 00 00 00 | g L +0000000000000010 | 00 00 01 00 77 77 77 77 7F 00 00 01 00 00 00 00 | wwww +0000000000000020 | 09 4A 54 61 6C 69 00 00 00 00 00 00 00 00 00 00 | JTali +0000000000000030 | 07 00 00 01 02 00 00 00 4C 00 00 00 00 06 00 00 | L +0000000000000040 | 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 | +0000000000000050 | 02 00 00 00 4C 00 00 00 01 01 00 00 00 00 00 00 | L +0000000000000060 | 00 00 00 00 01 00 01 00 00 00 00 00 02 00 00 00 | +0000000000000070 | 4C 00 00 00 02 00 05 00 F4 01 01 00 00 00 00 00 | L +0000000000000080 | 02 00 01 00 00 00 00 00 01 00 00 00 10 00 00 00 | +0000000000000090 | 03 00 00 00 00 04 00 00 00 00 00 00 03 00 01 00 | +00000000000000A0 | 00 00 00 00 01 00 00 00 10 00 00 00 03 01 00 00 | +00000000000000B0 | 00 03 00 00 00 00 00 00 04 00 01 00 00 00 00 00 | +00000000000000C0 | 01 00 00 00 04 00 00 00 00 0A 00 00 00 00 00 00 | +00000000000000D0 | 00 00 00 00 05 00 01 00 00 00 00 00 01 00 00 00 | +00000000000000E0 | 04 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 | +00000000000000F0 | 07 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000110 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000130 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000150 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000170 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000190 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000210 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000230 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000250 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000270 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000290 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000310 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000330 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000350 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000370 | 00 00 00 00 00 00 00 00 00 00 00 00 14 00 00 00 | +0000000000000380 | 1F 00 11 00 17 00 2D 00 0A 00 28 00 00 00 98 41 | - ( A +0000000000000390 | 00 00 20 41 00 00 00 00 14 00 00 00 75 00 00 00 | A u +00000000000003A0 | 54 61 6C 69 00 00 00 00 00 00 00 00 00 00 00 00 | Tali +00000000000003B0 | 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 | +00000000000003C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000003D0 | 04 05 00 02 52 00 00 00 00 00 02 00 00 00 03 00 | R +00000000000003E0 | 00 00 64 00 B2 00 B9 00 CC 45 98 3E 00 00 00 00 | d E > +00000000000003F0 | 00 00 00 00 01 06 01 00 02 00 00 00 02 01 00 00 | +0000000000000400 | 04 00 01 00 01 06 01 00 00 00 00 00 00 00 00 00 | +0000000000000410 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000430 | 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF | +0000000000000440 | FF FF FF FF FF FF FF FF FF FF FF 00 | +I 69775 2022-08-27 09:38:50 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3F 06 00 00 00 00 00 40 0F 00 FF FF | ` ? @ +0000000000000010 | A6 31 62 C2 00 00 00 00 A0 4C 89 3E | 1b L > +I 69775 2022-08-27 09:38:51 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 1F 02 00 00 0F 00 00 00 | ` +I 69775 2022-08-27 09:38:51 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 3B 01 00 00 | ` ; +I 69775 2022-08-27 09:38:51 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 23 01 00 00 | ` # +I 69775 2022-08-27 09:38:51 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 0D 03 00 00 01 00 00 00 00 00 00 00 | ` +I 69775 2022-08-27 09:38:55 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 A6 31 42 C2 A0 4C 89 3E | ` @ 1B L > +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:38:55 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 A6 31 22 C2 A0 4C 89 3E | ` @ 1" L > +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:38:55 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 A6 31 02 C2 A0 4C 89 3E | ` @ 1 L > +0000000000000010 | 00 00 00 00 | +I 69775 2022-08-27 09:38:56 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 00 40 0F 00 01 00 | ` > @ +0000000000000010 | A6 31 06 C2 00 00 00 00 A0 4C 89 3E | 1 L > +I 69775 2022-08-27 09:38:56 - [Commands] Received from C-5 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 52 03 00 00 0A 00 00 00 00 40 00 00 | ` R @ +I 69775 2022-08-27 09:38:58 - [Commands] Received from C-5 (Tali) (version=DC command=A1 flag=00) +0000000000000000 | A1 00 1C 00 00 00 01 00 77 77 77 77 00 00 00 00 | wwww +0000000000000010 | 00 00 00 00 00 00 00 00 00 00 00 00 | +I 69775 2022-08-27 09:38:58 - [Commands] Sending to C-5 (Tali) (version=DC command=69 flag=00) +0000000000000000 | 69 00 08 00 00 00 00 00 | i +I 69775 2022-08-27 09:38:58 - [Commands] Sending to C-5 (Tali) (version=DC command=1A flag=00) +0000000000000000 | 1A 00 08 00 00 00 00 00 | +I 69775 2022-08-27 09:38:58 - [Commands] Sending to C-5 (Tali) (version=DC command=19 flag=00) +0000000000000000 | 19 00 0C 00 0A 00 00 04 EC 13 00 00 | +I 69775 2022-08-27 09:38:59 - [Server] Client disconnected: C-5 on fd 35 +I 69775 2022-08-27 09:38:59 - [Server] Client connected: C-6 on fd 35 via 6 (T-5100-DC-console-login-login_server) +I 69775 2022-08-27 09:38:59 - [Commands] Sending to C-6 (version=GC command=17 flag=00) +0000000000000000 | 17 00 0C 01 44 72 65 61 6D 43 61 73 74 20 50 6F | DreamCast Po +0000000000000010 | 72 74 20 4D 61 70 2E 20 43 6F 70 79 72 69 67 68 | rt Map. Copyrigh +0000000000000020 | 74 20 53 45 47 41 20 45 6E 74 65 72 70 72 69 73 | t SEGA Enterpris +0000000000000030 | 65 73 2E 20 31 39 39 39 00 00 00 00 00 00 00 00 | es. 1999 +0000000000000040 | 00 00 00 00 E3 1E 55 E3 6A 23 8F 90 54 68 69 73 | U j# This +0000000000000050 | 20 73 65 72 76 65 72 20 69 73 20 69 6E 20 6E 6F | server is in no +0000000000000060 | 20 77 61 79 20 61 66 66 69 6C 69 61 74 65 64 2C | way affiliated, +0000000000000070 | 20 73 70 6F 6E 73 6F 72 65 64 2C 20 6F 72 20 73 | sponsored, or s +0000000000000080 | 75 70 70 6F 72 74 65 64 20 62 79 20 53 45 47 41 | upported by SEGA +0000000000000090 | 20 45 6E 74 65 72 70 72 69 73 65 73 20 6F 72 20 | Enterprises or +00000000000000A0 | 53 4F 4E 49 43 54 45 41 4D 2E 20 54 68 65 20 70 | SONICTEAM. The p +00000000000000B0 | 72 65 63 65 64 69 6E 67 20 6D 65 73 73 61 67 65 | receding message +00000000000000C0 | 20 65 78 69 73 74 73 20 6F 6E 6C 79 20 69 6E 20 | exists only in +00000000000000D0 | 6F 72 64 65 72 20 74 6F 20 72 65 6D 61 69 6E 20 | order to remain +00000000000000E0 | 63 6F 6D 70 61 74 69 62 6C 65 20 77 69 74 68 20 | compatible with +00000000000000F0 | 70 72 6F 67 72 61 6D 73 20 74 68 61 74 20 65 78 | programs that ex +0000000000000100 | 70 65 63 74 20 69 74 2E 00 00 00 00 | pect it. +I 69775 2022-08-27 09:38:59 - [Commands] Received from C-6 (version=GC command=90 flag=00) +0000000000000000 | 90 00 28 00 37 37 37 37 37 37 37 37 00 00 00 00 | ( 77777777 +0000000000000010 | 00 00 00 00 00 31 31 31 31 31 31 31 31 00 00 00 | 11111111 +0000000000000020 | 00 00 00 00 00 00 00 00 | +I 69775 2022-08-27 09:38:59 - [Commands] Sending to C-6 (version=DC command=90 flag=02) +0000000000000000 | 90 02 04 00 | +I 69775 2022-08-27 09:38:59 - [Commands] Received from C-6 (version=DC command=93 flag=00) +0000000000000000 | 93 00 14 01 00 00 01 00 77 77 77 77 00 00 8A 03 | wwww +0000000000000010 | CA 3B 9F 4A 21 00 00 00 00 01 00 00 37 37 37 37 | ; J! 7777 +0000000000000020 | 37 37 37 37 00 00 00 00 00 00 00 00 00 31 31 31 | 7777 111 +0000000000000030 | 31 31 31 31 31 00 00 00 00 00 00 00 00 00 38 38 | 11111 88 +0000000000000040 | 39 31 36 36 33 32 00 00 00 00 00 00 00 00 00 00 | 916632 +0000000000000050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 54 61 | Ta +00000000000000A0 | 6C 69 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | li +00000000000000B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000110 | 00 00 00 00 | +I 69775 2022-08-27 09:38:59 - Game version changed to DC +I 69775 2022-08-27 09:38:59 - [Commands] Sending to C-6 (version=DC command=04 flag=00) +0000000000000000 | 04 00 2C 00 00 00 01 00 77 77 77 77 39 98 AC 82 | , wwww9 +0000000000000010 | 0E 89 2A 49 14 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 69775 2022-08-27 09:38:59 - [Commands] Sending to C-6 (version=DC command=07 flag=04) +0000000000000000 | 07 04 90 00 11 00 00 11 FF FF FF FF 04 00 41 6C | Al +0000000000000010 | 65 78 61 6E 64 72 69 61 00 00 00 00 00 00 00 00 | exandria +0000000000000020 | 11 00 00 11 11 22 22 11 04 0F 47 6F 20 74 6F 20 | "" Go to +0000000000000030 | 6C 6F 62 62 79 00 00 00 00 00 00 00 11 00 00 11 | lobby +0000000000000040 | 11 44 44 11 04 0F 44 6F 77 6E 6C 6F 61 64 20 71 | DD Download q +0000000000000050 | 75 65 73 74 73 00 00 00 11 00 00 11 11 88 88 11 | uests +0000000000000060 | 04 0F 44 69 73 63 6F 6E 6E 65 63 74 00 00 00 00 | Disconnect +0000000000000070 | 00 00 00 00 11 00 00 11 11 99 99 11 04 0F 43 6C | Cl +0000000000000080 | 65 61 72 20 6C 69 63 65 6E 73 65 00 00 00 00 00 | ear license +I 69775 2022-08-27 09:39:00 - [Commands] Received from C-6 (version=DC command=10 flag=00) +0000000000000000 | 10 00 0C 00 11 00 00 11 11 88 88 11 | +I 69775 2022-08-27 09:39:00 - [Server] Client disconnected: C-6 on fd 35 diff --git a/tests/DCv2-GameSmokeTest.test.txt b/tests/DCv2-GameSmokeTest.test.txt new file mode 100644 index 00000000..77d49bab --- /dev/null +++ b/tests/DCv2-GameSmokeTest.test.txt @@ -0,0 +1,1357 @@ +I 70630 2022-08-27 09:43:59 - [Server] Client connected: C-1 on fd 35 via 14 (T-9200-PC-gc-eu10-pc_console_detect) +I 70630 2022-08-27 09:43:59 - [Commands] Sending to C-1 (version=PC command=19 flag=00) +0000000000000000 | B0 00 19 00 0A 00 00 04 ED 13 00 00 00 00 00 00 | +0000000000000010 | 00 00 00 00 00 00 00 00 00 19 00 97 00 0A 00 00 | +0000000000000020 | 04 EC 13 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000030 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +I 70630 2022-08-27 09:43:59 - [Server] Client disconnected: C-1 on fd 35 +I 70630 2022-08-27 09:43:59 - [Server] Client connected: C-2 on fd 35 via 6 (T-5100-DC-console-login-login_server) +I 70630 2022-08-27 09:43:59 - [Commands] Sending to C-2 (version=GC command=17 flag=00) +0000000000000000 | 17 00 0C 01 44 72 65 61 6D 43 61 73 74 20 50 6F | DreamCast Po +0000000000000010 | 72 74 20 4D 61 70 2E 20 43 6F 70 79 72 69 67 68 | rt Map. Copyrigh +0000000000000020 | 74 20 53 45 47 41 20 45 6E 74 65 72 70 72 69 73 | t SEGA Enterpris +0000000000000030 | 65 73 2E 20 31 39 39 39 00 00 00 00 00 00 00 00 | es. 1999 +0000000000000040 | 00 00 00 00 9E AD 6A 2D C5 4E EC A5 54 68 69 73 | j- N This +0000000000000050 | 20 73 65 72 76 65 72 20 69 73 20 69 6E 20 6E 6F | server is in no +0000000000000060 | 20 77 61 79 20 61 66 66 69 6C 69 61 74 65 64 2C | way affiliated, +0000000000000070 | 20 73 70 6F 6E 73 6F 72 65 64 2C 20 6F 72 20 73 | sponsored, or s +0000000000000080 | 75 70 70 6F 72 74 65 64 20 62 79 20 53 45 47 41 | upported by SEGA +0000000000000090 | 20 45 6E 74 65 72 70 72 69 73 65 73 20 6F 72 20 | Enterprises or +00000000000000A0 | 53 4F 4E 49 43 54 45 41 4D 2E 20 54 68 65 20 70 | SONICTEAM. The p +00000000000000B0 | 72 65 63 65 64 69 6E 67 20 6D 65 73 73 61 67 65 | receding message +00000000000000C0 | 20 65 78 69 73 74 73 20 6F 6E 6C 79 20 69 6E 20 | exists only in +00000000000000D0 | 6F 72 64 65 72 20 74 6F 20 72 65 6D 61 69 6E 20 | order to remain +00000000000000E0 | 63 6F 6D 70 61 74 69 62 6C 65 20 77 69 74 68 20 | compatible with +00000000000000F0 | 70 72 6F 67 72 61 6D 73 20 74 68 61 74 20 65 78 | programs that ex +0000000000000100 | 70 65 63 74 20 69 74 2E 00 00 00 00 | pect it. +I 70630 2022-08-27 09:43:59 - [Commands] Received from C-2 (version=GC command=9A flag=00) +0000000000000000 | 9A 00 E0 00 38 39 41 43 42 30 39 32 00 00 00 00 | 89ACB092 +0000000000000010 | 00 00 00 00 31 31 31 31 31 31 31 31 00 00 00 00 | 11111111 +0000000000000020 | 00 00 00 00 34 45 36 32 46 32 33 37 00 00 00 00 | 4E62F237 +0000000000000030 | 00 00 00 00 31 31 31 31 31 31 31 31 00 00 00 00 | 11111111 +0000000000000040 | 00 00 00 00 00 00 8A 03 CA 3B 9F 4A 26 00 00 00 | ; J& +0000000000000050 | 38 38 39 31 36 36 33 32 00 00 00 00 00 00 00 00 | 88916632 +0000000000000060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +I 70630 2022-08-27 09:43:59 - Game version changed to DC +I 70630 2022-08-27 09:43:59 - [Commands] Sending to C-2 (version=DC command=9A flag=02) +0000000000000000 | 9A 02 04 00 | +I 70630 2022-08-27 09:43:59 - [Commands] Received from C-2 (version=DC command=9D flag=00) +0000000000000000 | 9D 00 30 01 00 00 FF FF FF FF 00 00 00 00 8A 03 | 0 +0000000000000010 | CA 3B 9F 4A 26 00 00 00 00 01 00 00 38 39 41 43 | ; J& 89AC +0000000000000020 | 42 30 39 32 00 00 00 00 00 00 00 00 31 31 31 31 | B092 1111 +0000000000000030 | 31 31 31 31 00 00 00 00 00 00 00 00 34 45 36 32 | 1111 4E62 +0000000000000040 | 46 32 33 37 00 00 00 00 00 00 00 00 31 31 31 31 | F237 1111 +0000000000000050 | 31 31 31 31 00 00 00 00 00 00 00 00 38 38 39 31 | 1111 8891 +0000000000000060 | 36 36 33 32 00 00 00 00 00 00 00 00 00 00 00 00 | 6632 +0000000000000070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000B0 | 00 00 00 00 00 00 00 00 00 00 00 00 54 61 6C 69 | Tali +00000000000000C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000110 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +I 70630 2022-08-27 09:43:59 - Game version changed to DC +I 70630 2022-08-27 09:43:59 - [Commands] Sending to C-2 (version=DC command=04 flag=00) +0000000000000000 | 04 00 2C 00 00 00 01 00 37 F2 62 4E 39 98 AC 82 | , 7 bN9 +0000000000000010 | 0E 89 2A 49 04 00 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 70630 2022-08-27 09:43:59 - [Commands] Sending to C-2 (version=DC command=07 flag=04) +0000000000000000 | 07 04 90 00 11 00 00 11 FF FF FF FF 04 00 41 6C | Al +0000000000000010 | 65 78 61 6E 64 72 69 61 00 00 00 00 00 00 00 00 | exandria +0000000000000020 | 11 00 00 11 11 22 22 11 04 0F 47 6F 20 74 6F 20 | "" Go to +0000000000000030 | 6C 6F 62 62 79 00 00 00 00 00 00 00 11 00 00 11 | lobby +0000000000000040 | 11 44 44 11 04 0F 44 6F 77 6E 6C 6F 61 64 20 71 | DD Download q +0000000000000050 | 75 65 73 74 73 00 00 00 11 00 00 11 11 88 88 11 | uests +0000000000000060 | 04 0F 44 69 73 63 6F 6E 6E 65 63 74 00 00 00 00 | Disconnect +0000000000000070 | 00 00 00 00 11 00 00 11 11 99 99 11 04 0F 43 6C | Cl +0000000000000080 | 65 61 72 20 6C 69 63 65 6E 73 65 00 00 00 00 00 | ear license +I 70630 2022-08-27 09:44:00 - [Commands] Received from C-2 (version=DC command=96 flag=00) +0000000000000000 | 96 00 0C 00 4C A7 A6 88 04 00 00 00 | L +I 70630 2022-08-27 09:44:00 - [Commands] Sending to C-2 (version=DC command=B1 flag=00) +0000000000000000 | B1 00 1C 00 32 30 32 32 3A 30 38 3A 32 37 3A 20 | 2022:08:27: +0000000000000010 | 31 36 3A 34 34 3A 30 30 2E 30 30 30 | 16:44:00.000 +I 70630 2022-08-27 09:44:00 - [Commands] Received from C-2 (version=DC command=99 flag=00) +0000000000000000 | 99 00 04 00 | +I 70630 2022-08-27 09:44:01 - [Commands] Received from C-2 (version=DC command=10 flag=00) +0000000000000000 | 10 00 0C 00 11 00 00 11 11 22 22 11 | "" +I 70630 2022-08-27 09:44:01 - [Commands] Sending to C-2 (version=DC command=97 flag=01) +0000000000000000 | 97 01 04 00 | +I 70630 2022-08-27 09:44:01 - [Commands] Sending to C-2 (version=DC command=04 flag=00) +0000000000000000 | 04 00 2C 00 00 00 01 00 37 F2 62 4E 39 98 AC 82 | , 7 bN9 +0000000000000010 | 0E 89 2A 49 04 04 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 70630 2022-08-27 09:44:01 - [Commands] Received from C-2 (version=DC command=B1 flag=00) +0000000000000000 | B1 00 04 00 | +I 70630 2022-08-27 09:44:01 - [Commands] Sending to C-2 (version=DC command=B1 flag=00) +0000000000000000 | B1 00 1C 00 32 30 32 32 3A 30 38 3A 32 37 3A 20 | 2022:08:27: +0000000000000010 | 31 36 3A 34 34 3A 30 31 2E 30 30 30 | 16:44:01.000 +I 70630 2022-08-27 09:44:01 - [Commands] Sending to C-2 (version=DC command=19 flag=00) +0000000000000000 | 19 00 0C 00 0A 00 00 04 F6 13 00 00 | +I 70630 2022-08-27 09:44:02 - [Commands] Received from C-2 (version=DC command=99 flag=00) +0000000000000000 | 99 00 04 00 | +I 70630 2022-08-27 09:44:02 - [Server] Client disconnected: C-2 on fd 35 +I 70630 2022-08-27 09:44:02 - [Server] Client connected: C-3 on fd 35 via 29 (T-5110-DC-console-lobby-lobby_server) +I 70630 2022-08-27 09:44:02 - [Commands] Sending to C-3 (version=GC command=02 flag=00) +0000000000000000 | 02 00 0C 01 44 72 65 61 6D 43 61 73 74 20 4C 6F | DreamCast Lo +0000000000000010 | 62 62 79 20 53 65 72 76 65 72 2E 20 43 6F 70 79 | bby Server. Copy +0000000000000020 | 72 69 67 68 74 20 53 45 47 41 20 45 6E 74 65 72 | right SEGA Enter +0000000000000030 | 70 72 69 73 65 73 2E 20 31 39 39 39 00 00 00 00 | prises. 1999 +0000000000000040 | 00 00 00 00 14 6A 55 AE 1C 40 62 28 54 68 69 73 | jU @b(This +0000000000000050 | 20 73 65 72 76 65 72 20 69 73 20 69 6E 20 6E 6F | server is in no +0000000000000060 | 20 77 61 79 20 61 66 66 69 6C 69 61 74 65 64 2C | way affiliated, +0000000000000070 | 20 73 70 6F 6E 73 6F 72 65 64 2C 20 6F 72 20 73 | sponsored, or s +0000000000000080 | 75 70 70 6F 72 74 65 64 20 62 79 20 53 45 47 41 | upported by SEGA +0000000000000090 | 20 45 6E 74 65 72 70 72 69 73 65 73 20 6F 72 20 | Enterprises or +00000000000000A0 | 53 4F 4E 49 43 54 45 41 4D 2E 20 54 68 65 20 70 | SONICTEAM. The p +00000000000000B0 | 72 65 63 65 64 69 6E 67 20 6D 65 73 73 61 67 65 | receding message +00000000000000C0 | 20 65 78 69 73 74 73 20 6F 6E 6C 79 20 69 6E 20 | exists only in +00000000000000D0 | 6F 72 64 65 72 20 74 6F 20 72 65 6D 61 69 6E 20 | order to remain +00000000000000E0 | 63 6F 6D 70 61 74 69 62 6C 65 20 77 69 74 68 20 | compatible with +00000000000000F0 | 70 72 6F 67 72 61 6D 73 20 74 68 61 74 20 65 78 | programs that ex +0000000000000100 | 70 65 63 74 20 69 74 2E 00 00 00 00 | pect it. +I 70630 2022-08-27 09:44:02 - [Commands] Received from C-3 (version=GC command=9D flag=00) +0000000000000000 | 9D 00 CC 00 00 00 01 00 37 F2 62 4E 00 00 8A 03 | 7 bN +0000000000000010 | CA 3B 9F 4A 26 00 00 00 00 01 00 00 38 39 41 43 | ; J& 89AC +0000000000000020 | 42 30 39 32 00 00 00 00 00 00 00 00 31 31 31 31 | B092 1111 +0000000000000030 | 31 31 31 31 00 00 00 00 00 00 00 00 34 45 36 32 | 1111 4E62 +0000000000000040 | 46 32 33 37 00 00 00 00 00 00 00 00 31 31 31 31 | F237 1111 +0000000000000050 | 31 31 31 31 00 00 00 00 00 00 00 00 38 38 39 31 | 1111 8891 +0000000000000060 | 36 36 33 32 00 00 00 00 00 00 00 00 00 00 00 00 | 6632 +0000000000000070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000B0 | 00 00 00 00 00 00 00 00 00 00 00 00 54 61 6C 69 | Tali +00000000000000C0 | 00 00 00 00 00 00 00 00 00 00 00 00 | +I 70630 2022-08-27 09:44:02 - Game version changed to DC +I 70630 2022-08-27 09:44:02 - [Commands] Sending to C-3 (version=DC command=04 flag=00) +0000000000000000 | 04 00 2C 00 00 00 01 00 37 F2 62 4E 39 98 AC 82 | , 7 bN9 +0000000000000010 | 0E 89 2A 49 04 00 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 70630 2022-08-27 09:44:02 - [Commands] Sending to C-3 (version=DC command=83 flag=0F) +0000000000000000 | 83 0F B8 00 33 00 00 33 01 00 00 00 00 00 00 00 | 3 3 +0000000000000010 | 33 00 00 33 02 00 00 00 00 00 00 00 33 00 00 33 | 3 3 3 3 +0000000000000020 | 03 00 00 00 00 00 00 00 33 00 00 33 04 00 00 00 | 3 3 +0000000000000030 | 00 00 00 00 33 00 00 33 05 00 00 00 00 00 00 00 | 3 3 +0000000000000040 | 33 00 00 33 06 00 00 00 00 00 00 00 33 00 00 33 | 3 3 3 3 +0000000000000050 | 07 00 00 00 00 00 00 00 33 00 00 33 08 00 00 00 | 3 3 +0000000000000060 | 00 00 00 00 33 00 00 33 09 00 00 00 00 00 00 00 | 3 3 +0000000000000070 | 33 00 00 33 0A 00 00 00 00 00 00 00 33 00 00 33 | 3 3 3 3 +0000000000000080 | 0B 00 00 00 00 00 00 00 33 00 00 33 0C 00 00 00 | 3 3 +0000000000000090 | 00 00 00 00 33 00 00 33 0D 00 00 00 00 00 00 00 | 3 3 +00000000000000A0 | 33 00 00 33 0E 00 00 00 00 00 00 00 33 00 00 33 | 3 3 3 3 +00000000000000B0 | 0F 00 00 00 00 00 00 00 | +I 70630 2022-08-27 09:44:02 - [Commands] Sending to C-3 (version=DC command=95 flag=00) +0000000000000000 | 95 00 04 00 | +I 70630 2022-08-27 09:44:02 - [Commands] Received from C-3 (version=DC command=61 flag=02) +0000000000000000 | 61 02 F4 04 05 00 00 01 02 00 00 00 4C 00 00 00 | a L +0000000000000010 | 00 06 00 00 00 00 00 00 00 00 00 00 00 00 21 10 | ! +0000000000000020 | 00 00 00 00 02 00 00 00 4C 00 00 00 01 01 00 00 | L +0000000000000030 | 00 00 00 00 00 00 00 00 01 00 21 10 00 00 00 00 | ! +0000000000000040 | 02 00 00 00 4C 00 00 00 02 00 05 00 F5 01 00 00 | L +0000000000000050 | 01 00 00 00 02 00 21 10 00 00 19 00 01 00 00 00 | ! +0000000000000060 | 10 00 00 00 03 00 00 00 00 05 00 00 00 00 00 00 | +0000000000000070 | 03 00 21 10 00 00 00 00 01 00 00 00 10 00 00 00 | ! +0000000000000080 | 03 01 00 00 00 04 00 00 00 00 00 00 04 00 21 10 | ! +0000000000000090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000110 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000130 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000150 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000170 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000190 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000210 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000230 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000250 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000270 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000290 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000310 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000330 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000350 | 14 00 00 00 1F 00 11 00 17 00 2D 00 0A 00 28 00 | - ( +0000000000000360 | 00 00 98 41 00 00 20 41 00 00 00 00 00 00 00 00 | A A +0000000000000370 | 11 00 00 00 54 61 6C 69 00 00 00 00 00 00 00 00 | Tali +0000000000000380 | 00 00 00 00 00 00 00 00 00 00 00 00 35 AE FF FF | 5 +0000000000000390 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000003A0 | 0C 22 17 D7 04 05 00 02 52 00 00 00 00 00 05 00 | " R +00000000000003B0 | 00 00 03 00 00 00 00 00 00 00 00 00 4D C9 AF 3E | M > +00000000000003C0 | 00 00 00 00 00 00 00 00 01 00 01 00 02 00 00 00 | +00000000000003D0 | 02 01 00 00 04 00 01 00 01 00 01 00 00 00 00 00 | +00000000000003E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000003F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000400 | 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF | +0000000000000410 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 | +0000000000000420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000430 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000450 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000470 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000490 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000004A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000004B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000004C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000004D0 | 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 | +00000000000004E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000004F0 | 00 00 00 00 | +I 70630 2022-08-27 09:44:02 - [Commands] Sending to C-3 (Tali) (version=DC command=67 flag=01) +0000000000000000 | 67 01 4C 04 00 00 01 00 01 00 00 00 00 00 00 00 | g L +0000000000000010 | 00 00 01 00 37 F2 62 4E 7F 00 00 01 00 00 00 00 | 7 bN +0000000000000020 | 09 4A 54 61 6C 69 00 00 00 00 00 00 00 00 00 00 | JTali +0000000000000030 | 05 00 00 01 02 00 00 00 4C 00 00 00 00 06 00 00 | L +0000000000000040 | 00 00 00 00 00 00 00 00 00 00 21 10 00 00 00 00 | ! +0000000000000050 | 02 00 00 00 4C 00 00 00 01 01 00 00 00 00 00 00 | L +0000000000000060 | 00 00 00 00 01 00 21 10 00 00 00 00 02 00 00 00 | ! +0000000000000070 | 4C 00 00 00 02 00 05 00 F5 01 00 00 01 00 00 00 | L +0000000000000080 | 02 00 21 10 00 00 19 00 01 00 00 00 10 00 00 00 | ! +0000000000000090 | 03 00 00 00 00 05 00 00 00 00 00 00 03 00 21 10 | ! +00000000000000A0 | 00 00 00 00 01 00 00 00 10 00 00 00 03 01 00 00 | +00000000000000B0 | 00 04 00 00 00 00 00 00 04 00 21 10 00 00 00 00 | ! +00000000000000C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000110 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000130 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000150 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000170 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000190 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000210 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000230 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000250 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000270 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000290 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000310 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000330 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000350 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000370 | 00 00 00 00 00 00 00 00 00 00 00 00 14 00 00 00 | +0000000000000380 | 1F 00 11 00 17 00 2D 00 0A 00 28 00 00 00 98 41 | - ( A +0000000000000390 | 00 00 20 41 00 00 00 00 00 00 00 00 11 00 00 00 | A +00000000000003A0 | 54 61 6C 69 00 00 00 00 00 00 00 00 00 00 00 00 | Tali +00000000000003B0 | 00 00 00 00 00 00 00 00 35 AE FF FF 00 00 00 00 | 5 +00000000000003C0 | 00 00 00 00 00 00 00 00 00 00 00 00 0C 22 17 D7 | " +00000000000003D0 | 04 05 00 02 52 00 00 00 00 00 05 00 00 00 03 00 | R +00000000000003E0 | 00 00 00 00 00 00 00 00 4D C9 AF 3E 00 00 00 00 | M > +00000000000003F0 | 00 00 00 00 01 00 01 00 02 00 00 00 02 01 00 00 | +0000000000000400 | 04 00 01 00 01 00 01 00 00 00 00 00 00 00 00 00 | +0000000000000410 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000430 | 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF | +0000000000000440 | FF FF FF FF FF FF FF FF FF FF FF 00 | +I 70630 2022-08-27 09:44:04 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3F 06 00 00 00 00 00 40 0F 00 FF FF | ` ? @ +0000000000000010 | A6 31 62 C2 00 00 00 00 A0 4C 89 3E | 1b L > +I 70630 2022-08-27 09:44:04 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 1F 02 00 00 0F 00 00 00 | ` +I 70630 2022-08-27 09:44:04 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 3B 01 00 00 | ` ; +I 70630 2022-08-27 09:44:04 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 23 01 00 00 | ` # +I 70630 2022-08-27 09:44:04 - [Commands] Sending to C-3 (Tali) (version=DC command=88 flag=01) +0000000000000000 | 88 01 10 00 00 00 01 00 37 F2 62 4E 00 00 00 00 | 7 bN +I 70630 2022-08-27 09:44:06 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 A6 31 42 C2 A0 4C 89 3E | ` @ 1B L > +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:44:06 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 A6 31 22 C2 A0 4C 89 3E | ` @ 1" L > +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:44:07 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 A6 31 02 C2 A0 4C 89 3E | ` @ 1 L > +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:44:07 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 00 40 0F 00 01 00 | ` > @ +0000000000000010 | A6 31 06 C2 00 00 00 00 A0 4C 89 3E | 1 L > +I 70630 2022-08-27 09:44:07 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 A6 31 06 C2 65 4A 04 41 | ` @ 1 eJ A +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:44:08 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 B0 C6 09 C2 45 FC 7F 41 | ` @ E A +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:44:08 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 F1 E9 12 C2 A3 0E B5 41 | ` @ A +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:44:08 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 FB BC 09 C2 67 75 F2 41 | ` @ gu A +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:44:08 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 B5 0C E2 C1 F4 C2 0C 42 | ` B B +I 70630 2022-08-27 09:44:08 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 E1 15 B7 C1 40 93 21 42 | ` B @ !B +I 70630 2022-08-27 09:44:09 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 FE D5 89 C1 38 46 35 42 | ` B 8F5B +I 70630 2022-08-27 09:44:09 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 76 9D 39 C1 F1 19 49 42 | ` B v 9 IB +I 70630 2022-08-27 09:44:09 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 30 4E BF C0 82 F4 5C 42 | ` B 0N \B +I 70630 2022-08-27 09:44:09 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 F0 F3 D0 3F 1B AD 59 42 | ` B ? YB +I 70630 2022-08-27 09:44:09 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 84 D5 0F 41 0C E5 57 42 | ` B A WB +I 70630 2022-08-27 09:44:09 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 22 F0 74 41 A1 2E 69 42 | ` B " tA .iB +I 70630 2022-08-27 09:44:10 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 4C BF B0 41 4C 93 75 42 | ` B L AL uB +I 70630 2022-08-27 09:44:10 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 0C 82 E5 41 FC ED 81 42 | ` B A B +I 70630 2022-08-27 09:44:10 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 99 2C 0D 42 16 09 89 42 | ` B , B B +I 70630 2022-08-27 09:44:10 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 FE 97 27 42 5B 24 90 42 | ` B 'B[$ B +I 70630 2022-08-27 09:44:10 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 1B 03 42 42 E5 3F 97 42 | ` B BB ? B +I 70630 2022-08-27 09:44:10 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 CD 6D 5C 42 CF 5B 9E 42 | ` B m\B [ B +I 70630 2022-08-27 09:44:11 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 96 D8 76 42 A5 77 A5 42 | ` B vB w B +I 70630 2022-08-27 09:44:11 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 A6 A1 88 42 8C 93 AC 42 | ` B B B +I 70630 2022-08-27 09:44:11 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 02 D7 95 42 73 AF B3 42 | ` B Bs B +I 70630 2022-08-27 09:44:11 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 60 0C A3 42 5A CB BA 42 | ` B ` BZ B +I 70630 2022-08-27 09:44:11 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 BE 41 B0 42 41 E7 C1 42 | ` B A BA B +I 70630 2022-08-27 09:44:11 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 E3 2B 0F 00 01 00 | ` > + +0000000000000010 | 54 60 AF 42 00 00 00 00 EF 6D C1 42 | T` B m B +I 70630 2022-08-27 09:44:12 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 4C 77 BD 42 D0 02 C9 42 | ` @ Lw B B +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:44:12 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 E3 2B 0F 00 01 00 | ` > + +0000000000000010 | 46 77 BD 42 00 00 00 00 DA 02 C9 42 | Fw B B +I 70630 2022-08-27 09:44:17 - [Commands] Received from C-3 (Tali) (version=DC command=84 flag=00) +0000000000000000 | 84 00 0C 00 33 00 00 33 0A 00 00 00 | 3 3 +I 70630 2022-08-27 09:44:17 - [Commands] Sending to C-3 (Tali) (version=DC command=67 flag=01) +0000000000000000 | 67 01 4C 04 00 00 01 09 0A 00 00 00 00 00 00 00 | g L +0000000000000010 | 00 00 01 00 37 F2 62 4E 7F 00 00 01 00 00 00 00 | 7 bN +0000000000000020 | 09 4A 54 61 6C 69 00 00 00 00 00 00 00 00 00 00 | JTali +0000000000000030 | 05 00 00 01 02 00 00 00 4C 00 00 00 00 06 00 00 | L +0000000000000040 | 00 00 00 00 00 00 00 00 00 00 21 10 00 00 00 00 | ! +0000000000000050 | 02 00 00 00 4C 00 00 00 01 01 00 00 00 00 00 00 | L +0000000000000060 | 00 00 00 00 01 00 21 10 00 00 00 00 02 00 00 00 | ! +0000000000000070 | 4C 00 00 00 02 00 05 00 F5 01 00 00 01 00 00 00 | L +0000000000000080 | 02 00 21 10 00 00 19 00 01 00 00 00 10 00 00 00 | ! +0000000000000090 | 03 00 00 00 00 05 00 00 00 00 00 00 03 00 21 10 | ! +00000000000000A0 | 00 00 00 00 01 00 00 00 10 00 00 00 03 01 00 00 | +00000000000000B0 | 00 04 00 00 00 00 00 00 04 00 21 10 00 00 00 00 | ! +00000000000000C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000110 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000130 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000150 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000170 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000190 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000210 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000230 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000250 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000270 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000290 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000310 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000330 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000350 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000370 | 00 00 00 00 00 00 00 00 00 00 00 00 14 00 00 00 | +0000000000000380 | 1F 00 11 00 17 00 2D 00 0A 00 28 00 00 00 98 41 | - ( A +0000000000000390 | 00 00 20 41 00 00 00 00 00 00 00 00 11 00 00 00 | A +00000000000003A0 | 54 61 6C 69 00 00 00 00 00 00 00 00 00 00 00 00 | Tali +00000000000003B0 | 00 00 00 00 00 00 00 00 35 AE FF FF 00 00 00 00 | 5 +00000000000003C0 | 00 00 00 00 00 00 00 00 00 00 00 00 0C 22 17 D7 | " +00000000000003D0 | 04 05 00 02 52 00 00 00 00 00 05 00 00 00 03 00 | R +00000000000003E0 | 00 00 00 00 00 00 00 00 4D C9 AF 3E 00 00 00 00 | M > +00000000000003F0 | 00 00 00 00 01 00 01 00 02 00 00 00 02 01 00 00 | +0000000000000400 | 04 00 01 00 01 00 01 00 00 00 00 00 00 00 00 00 | +0000000000000410 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000430 | 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF | +0000000000000440 | FF FF FF FF FF FF FF FF FF FF FF 00 | +I 70630 2022-08-27 09:44:17 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 52 03 00 00 0A 00 00 00 E3 2B 00 00 | ` R + +I 70630 2022-08-27 09:44:18 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3F 06 00 00 00 00 00 40 0F 00 FF FF | ` ? @ +0000000000000010 | A6 31 62 C2 00 00 00 00 A0 4C 89 3E | 1b L > +I 70630 2022-08-27 09:44:18 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 1F 02 00 00 0F 00 00 00 | ` +I 70630 2022-08-27 09:44:18 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 3B 01 00 00 | ` ; +I 70630 2022-08-27 09:44:18 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 23 01 00 00 | ` # +I 70630 2022-08-27 09:44:18 - [Commands] Sending to C-3 (Tali) (version=DC command=88 flag=01) +0000000000000000 | 88 01 10 00 00 00 01 00 37 F2 62 4E 00 00 00 00 | 7 bN +I 70630 2022-08-27 09:44:19 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 A6 31 42 C2 A0 4C 89 3E | ` @ 1B L > +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:44:20 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 A6 31 22 C2 A0 4C 89 3E | ` @ 1" L > +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:44:20 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 A6 31 02 C2 A0 4C 89 3E | ` @ 1 L > +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:44:20 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 00 40 0F 00 01 00 | ` > @ +0000000000000010 | A6 31 06 C2 00 00 00 00 A0 4C 89 3E | 1 L > +I 70630 2022-08-27 09:44:20 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 52 03 00 00 0A 00 00 00 00 40 00 00 | ` R @ +I 70630 2022-08-27 09:44:48 - [Commands] Received from C-3 (Tali) (version=DC command=C1 flag=03) +0000000000000000 | C1 03 30 00 00 00 00 00 00 00 00 00 09 45 31 31 | 0 E11 +0000000000000010 | 31 31 31 00 00 00 00 00 00 00 00 00 00 00 00 00 | 111 +0000000000000020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 01 | +I 70630 2022-08-27 09:44:49 - [Lobby/15] Created lobby +[PlayerInventory] Meseta: 17 +[PlayerInventory] 5 items +[PlayerInventory] 0 (00010000): 000600 (Handgun 0/0/0/0/0) +[PlayerInventory] 1 (00010001): 010100 (Frame) +[PlayerInventory] 2 (00010002): 020000 (Mag LV5 5/0/0/0 0% 25IQ) +[PlayerInventory] 3 (00010003): 030000 (Monomate x5) +[PlayerInventory] 4 (00010004): 030100 (Monofluid x4) +I 70630 2022-08-27 09:44:49 - [Commands] Sending to C-3 (Tali) (version=DC command=64 flag=01) +0000000000000000 | 64 01 14 01 00 00 00 00 00 00 00 00 00 00 00 00 | d +0000000000000010 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000020 | 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000030 | 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 | +0000000000000040 | 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000050 | 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000080 | 00 00 00 00 00 00 01 00 37 F2 62 4E 7F 00 00 01 | 7 bN +0000000000000090 | 00 00 00 00 09 4A 54 61 6C 69 00 00 00 00 00 00 | JTali +00000000000000A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000100 | 00 00 00 00 00 00 01 00 01 00 04 00 DE C9 A4 3D | = +0000000000000110 | 01 01 00 00 | +I 70630 2022-08-27 09:44:49 - [Commands] Received from C-3 (Tali) (version=DC command=8A flag=00) +0000000000000000 | 8A 00 04 00 | +I 70630 2022-08-27 09:44:49 - [Commands] Sending to C-3 (Tali) (version=DC command=8A flag=00) +0000000000000000 | 8A 00 0C 00 09 45 31 31 31 31 31 00 | E11111 +I 70630 2022-08-27 09:45:01 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3F 06 00 00 00 00 00 C0 00 00 00 00 | ` ? +0000000000000010 | CE FE 64 43 00 00 00 00 B8 FF 7D 43 | dC }C +I 70630 2022-08-27 09:45:01 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 1F 02 00 00 00 00 00 00 | ` +I 70630 2022-08-27 09:45:01 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 3B 01 00 00 | ` ; +I 70630 2022-08-27 09:45:01 - [Commands] Received from C-3 (Tali) (version=DC command=6F flag=00) +0000000000000000 | 6F 00 04 00 | o +I 70630 2022-08-27 09:45:01 - [Commands] Sending to C-3 (Tali) (version=DC command=B1 flag=00) +0000000000000000 | B1 00 1C 00 32 30 32 32 3A 30 38 3A 32 37 3A 20 | 2022:08:27: +0000000000000010 | 31 36 3A 34 35 3A 30 31 2E 30 30 30 | 16:45:01.000 +I 70630 2022-08-27 09:45:03 - [Commands] Received from C-3 (Tali) (version=DC command=99 flag=00) +0000000000000000 | 99 00 04 00 | +I 70630 2022-08-27 09:45:04 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 C2 4E 5F 43 80 5F 78 43 | ` @ N_C _xC +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:05 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 DF 31 5A 43 48 61 72 43 | ` @ 1ZCHarC +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:05 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 E9 28 56 43 CA 78 6B 43 | ` @ (VC xkC +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:05 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 09 5B 53 43 3C FD 63 43 | ` @ [SC< cC +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:05 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 B7 D2 4C 43 A7 5A 5F 43 | ` B LC Z_C +I 70630 2022-08-27 09:45:06 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 FB 65 47 43 B3 35 5A 43 | ` B eGC 5ZC +I 70630 2022-08-27 09:45:06 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 16 AA 41 43 64 60 55 43 | ` B ACd`UC +I 70630 2022-08-27 09:45:06 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 F6 57 41 43 10 BC 4D 43 | ` B WAC MC +I 70630 2022-08-27 09:45:06 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 1B B5 40 43 F6 63 46 43 | ` B @C cFC +I 70630 2022-08-27 09:45:06 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 69 56 41 43 1D EC 3E 43 | ` B iVAC >C +I 70630 2022-08-27 09:45:06 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 9B C8 42 43 E0 91 37 43 | ` B BC 7C +I 70630 2022-08-27 09:45:07 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 01 10 45 43 9B 6E 30 43 | ` B EC n0C +I 70630 2022-08-27 09:45:07 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 AB 29 48 43 82 9C 29 43 | ` B )HC )C +I 70630 2022-08-27 09:45:07 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 95 0B 46 43 82 40 22 43 | ` B FC @"C +I 70630 2022-08-27 09:45:07 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 0A 4A 45 43 2C D3 1A 43 | ` B JEC, C +I 70630 2022-08-27 09:45:07 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 31 08 44 43 6C 6E 13 43 | ` B 1 DCln C +I 70630 2022-08-27 09:45:07 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 2D BB 48 43 57 64 0D 43 | ` B - HCWd C +I 70630 2022-08-27 09:45:08 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 B0 FD 4C 43 40 60 07 43 | ` B LC@` C +I 70630 2022-08-27 09:45:08 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 28 B1 4C 43 D5 74 FF 42 | ` B ( LC t B +I 70630 2022-08-27 09:45:08 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 3C AC 4D 43 A2 AA F0 42 | ` B < MC B +I 70630 2022-08-27 09:45:08 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 BD 28 4E 43 D3 B2 E1 42 | ` B (NC B +I 70630 2022-08-27 09:45:08 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 48 AB 4E 43 B5 BB D2 42 | ` B H NC B +I 70630 2022-08-27 09:45:08 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 07 2E 4F 43 9E C4 C3 42 | ` B .OC B +I 70630 2022-08-27 09:45:09 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 F7 B0 4F 43 90 CD B4 42 | ` B OC B +I 70630 2022-08-27 09:45:09 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 15 34 50 43 88 D6 A5 42 | ` B 4PC B +I 70630 2022-08-27 09:45:09 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 32 B7 50 43 7E DF 96 42 | ` B 2 PC~ B +I 70630 2022-08-27 09:45:09 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 C6 AE 56 43 58 4A 8D 42 | ` B VCXJ B +I 70630 2022-08-27 09:45:09 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 C8 36 5C 43 63 8B 83 42 | ` B 6\Cc B +I 70630 2022-08-27 09:45:09 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 11 AF 5D 43 78 0B 69 42 | ` B ]Cx iB +I 70630 2022-08-27 09:45:10 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 4C 57 60 43 D5 29 4D 42 | ` B LW`C )MB +I 70630 2022-08-27 09:45:10 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 93 89 62 43 C2 7A 30 42 | ` B bC z0B +I 70630 2022-08-27 09:45:10 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 2C 72 69 43 D3 50 23 42 | ` B ,riC P#B +I 70630 2022-08-27 09:45:10 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 4D F3 6F 43 07 71 15 42 | ` B M oC q B +I 70630 2022-08-27 09:45:10 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 3D 11 77 43 49 0B 0C 42 | ` B = wCI B +I 70630 2022-08-27 09:45:10 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 EA 65 7E 43 BF D5 05 42 | ` B e~C B +I 70630 2022-08-27 09:45:11 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 D6 ED 82 43 CC 09 03 42 | ` B C B +I 70630 2022-08-27 09:45:11 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 8E AC 86 43 5C C3 03 42 | ` B C\ B +I 70630 2022-08-27 09:45:11 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 A9 61 8A 43 38 0C 08 42 | ` B a C8 B +I 70630 2022-08-27 09:45:11 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 70 FF 8D 43 D4 DB 0F 42 | ` B p C B +I 70630 2022-08-27 09:45:11 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 BC 75 91 43 47 C5 02 42 | ` B u CG B +I 70630 2022-08-27 09:45:11 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 C5 10 95 43 BE 11 F6 41 | ` B C A +I 70630 2022-08-27 09:45:12 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 BF 6A 98 43 92 A1 09 42 | ` B j C B +I 70630 2022-08-27 09:45:12 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 D6 1F 9C 43 4C FF FC 41 | ` B CL A +I 70630 2022-08-27 09:45:12 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 82 D1 9F 43 7E EC F4 41 | ` B C~ A +I 70630 2022-08-27 09:45:12 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 E5 7D A3 43 70 DD E8 41 | ` B } Cp A +I 70630 2022-08-27 09:45:12 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 CF 2A A7 43 D5 F5 DC 41 | ` B * C A +I 70630 2022-08-27 09:45:12 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 C8 D7 AA 43 F0 12 D1 41 | ` B C A +I 70630 2022-08-27 09:45:13 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 CB 84 AE 43 EF 32 C5 41 | ` B C 2 A +I 70630 2022-08-27 09:45:13 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 1F 48 00 00 00 00 | ` > H +0000000000000010 | 0F 46 AE 43 00 00 80 3F 4F FD C5 41 | F C ?O A +I 70630 2022-08-27 09:45:13 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 21 02 00 00 01 00 00 00 | ` ! +I 70630 2022-08-27 09:45:13 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 22 01 00 00 | ` " +I 70630 2022-08-27 09:45:21 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 75 02 09 8C 14 00 00 00 | ` u +I 70630 2022-08-27 09:45:21 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3F 06 00 00 00 00 00 D0 01 00 00 00 | ` ? +0000000000000010 | A9 29 05 44 1A CE E7 40 6B A6 F1 43 | ) D @k C +I 70630 2022-08-27 09:45:21 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 1F 02 00 00 01 00 00 00 | ` +I 70630 2022-08-27 09:45:21 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 23 01 00 00 | ` # +I 70630 2022-08-27 09:45:24 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 98 ED 05 44 78 58 F5 43 | ` @ DxX C +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:24 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 48 E1 06 44 2B BD F8 43 | ` @ H D+ C +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:24 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 F0 96 06 44 1A 4C FC 43 | ` @ D L C +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:25 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 BC 50 05 44 82 4C FF 43 | ` @ P D L C +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:25 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 83 22 04 44 E8 3F 01 44 | ` B " D ? D +I 70630 2022-08-27 09:45:25 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 BB F4 02 44 0C B5 02 44 | ` B D D +I 70630 2022-08-27 09:45:25 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 6B CE 01 44 3C 30 04 44 | ` B k D<0 D +I 70630 2022-08-27 09:45:25 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 70 A7 00 44 E7 AA 05 44 | ` B p D D +I 70630 2022-08-27 09:45:26 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 E3 01 FF 43 F2 25 07 44 | ` B C % D +I 70630 2022-08-27 09:45:26 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 43 02 00 00 27 DF 00 00 | ` C ' +I 70630 2022-08-27 09:45:26 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 46 03 00 00 01 00 00 00 7B 40 00 00 | ` F {@ +I 70630 2022-08-27 09:45:26 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 0B 03 7B 40 01 00 00 00 7B 00 00 00 | ` {@ { +I 70630 2022-08-27 09:45:26 - [Commands] Received from C-3 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 1C 00 60 06 00 00 01 30 7B 00 9B FC EF 43 | b ` 0{ C +0000000000000010 | 42 06 0E 44 10 00 01 00 01 00 00 00 | B D +I 70630 2022-08-27 09:45:26 - [Commands] Sending to C-3 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 1C 00 60 06 00 00 01 30 7B 00 9B FC EF 43 | b ` 0{ C +0000000000000010 | 42 06 0E 44 10 00 01 00 01 00 00 00 | B D +I 70630 2022-08-27 09:45:26 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 44 02 00 00 27 DF 00 00 | ` D ' +I 70630 2022-08-27 09:45:26 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 46 03 00 00 01 00 00 00 79 40 00 00 | ` F y@ +I 70630 2022-08-27 09:45:27 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 0B 03 79 40 01 00 00 00 79 00 00 00 | ` y@ y +I 70630 2022-08-27 09:45:27 - [Commands] Received from C-3 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 1C 00 60 06 00 00 01 30 79 00 65 1F E8 43 | b ` 0y e C +0000000000000010 | 5E 83 10 44 10 00 01 00 01 00 00 00 | ^ D +I 70630 2022-08-27 09:45:27 - [Commands] Sending to C-3 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 1C 00 60 06 00 00 01 30 79 00 65 1F E8 43 | b ` 0y e C +0000000000000010 | 5E 83 10 44 10 00 01 00 01 00 00 00 | ^ D +I 70630 2022-08-27 09:45:27 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 30 00 5F 0B 00 00 01 02 79 00 65 1F E8 43 | ` 0 _ y e C +0000000000000010 | 5E 83 10 44 10 00 00 00 03 01 00 00 00 01 00 00 | ^ D +0000000000000020 | 00 00 00 00 79 01 01 06 00 00 00 00 02 00 00 00 | y +I 70630 2022-08-27 09:45:27 - [Lobby/15] Leader created ground item 06010179 at 1:(464.245, 578.053) +I 70630 2022-08-27 09:45:27 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 27 DF 01 00 10 00 | ` > ' +0000000000000010 | 2A 80 00 44 B4 FC CA 40 70 DD 05 44 | * D @p D +I 70630 2022-08-27 09:45:27 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 0E 70 FE 43 77 66 07 44 | ` @ p Cwf D +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:28 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 43 02 00 00 3B EC 00 00 | ` C ; +I 70630 2022-08-27 09:45:28 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 46 03 00 00 01 00 00 00 7A 40 00 00 | ` F z@ +I 70630 2022-08-27 09:45:28 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 0B 03 7A 40 01 00 00 00 7A 00 00 00 | ` z@ z +I 70630 2022-08-27 09:45:28 - [Commands] Received from C-3 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 1C 00 60 06 00 00 01 30 7A 00 1C D1 F2 43 | b ` 0z C +0000000000000010 | C2 80 12 44 10 00 01 00 01 00 00 00 | D +I 70630 2022-08-27 09:45:28 - [Commands] Sending to C-3 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 1C 00 60 06 00 00 01 30 7A 00 1C D1 F2 43 | b ` 0z C +0000000000000010 | C2 80 12 44 10 00 01 00 01 00 00 00 | D +I 70630 2022-08-27 09:45:29 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 3A EC 01 00 10 00 | ` > : +0000000000000010 | 16 BD FE 43 8C FE CF 40 1A 33 07 44 | C @ 3 D +I 70630 2022-08-27 09:45:29 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 4D 4D FC 43 24 C9 08 44 | ` @ MM C$ D +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:29 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 89 E9 F9 43 52 63 0A 44 | ` @ CRc D +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:29 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 77 7E F7 43 26 FB 0B 44 | ` @ w~ C& D +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:29 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 78 64 F5 43 67 61 0D 44 | ` @ xd Cga D +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:30 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 9B 49 F3 43 56 C7 0E 44 | ` B I CV D +I 70630 2022-08-27 09:45:30 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 D4 08 F1 43 0B 47 10 44 | ` B C G D +I 70630 2022-08-27 09:45:30 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 40 3A ED 43 3F 78 10 44 | ` B @: C?x D +I 70630 2022-08-27 09:45:30 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 CA 94 E9 43 39 BD 10 44 | ` B C9 D +I 70630 2022-08-27 09:45:30 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 24 EC E6 43 88 1D 12 44 | ` B $ C D +I 70630 2022-08-27 09:45:30 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 CE DD 01 00 10 00 | ` > +0000000000000010 | AD FB E6 43 0A DC 18 41 58 EF 11 44 | C AX D +I 70630 2022-08-27 09:45:31 - [Commands] Received from C-3 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 10 00 5A 03 00 00 79 01 01 06 01 00 00 00 | b Z y +I 70630 2022-08-27 09:45:31 - [Commands] Sending to C-3 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 10 00 5A 03 00 00 79 01 01 06 01 00 00 00 | b Z y +I 70630 2022-08-27 09:45:31 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 62 77 E4 43 64 61 10 44 | ` @ bw Cda D +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:31 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 59 03 00 00 00 00 01 00 79 01 01 06 | ` Y y +I 70630 2022-08-27 09:45:31 - [Lobby/15] Player 0 picked up 06010179 +[PlayerInventory] Meseta: 17 +[PlayerInventory] 5 items +[PlayerInventory] 0 (00010000): 000600 (Handgun 0/0/0/0/0) +[PlayerInventory] 1 (00010001): 010100 (Frame) +[PlayerInventory] 2 (00010002): 020000 (Mag LV5 5/0/0/0 0% 25IQ) +[PlayerInventory] 3 (00010003): 030000 (Monomate x5) +[PlayerInventory] 4 (00010004): 030100 (Monofluid x5) +I 70630 2022-08-27 09:45:31 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 28 66 E2 43 76 BC 0E 44 | ` @ (f Cv D +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:31 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 99 3A E1 43 2A 15 0D 44 | ` @ : C* D +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:32 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 DF 8D E0 43 2C 1D 0B 44 | ` @ C, D +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:32 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 D3 AB E0 43 13 1E 09 44 | ` B C D +I 70630 2022-08-27 09:45:32 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 27 57 E1 43 D3 46 07 44 | ` B 'W C F D +I 70630 2022-08-27 09:45:32 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 51 88 E2 43 9F 80 05 44 | ` B Q C D +I 70630 2022-08-27 09:45:32 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 6A 30 E4 43 D9 D2 03 44 | ` B j0 C D +I 70630 2022-08-27 09:45:33 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 11 44 E6 43 FB 43 02 44 | ` B D C C D +I 70630 2022-08-27 09:45:33 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 1D B8 E8 43 C7 D9 00 44 | ` B C D +I 70630 2022-08-27 09:45:33 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 61 81 EB 43 D1 32 FF 43 | ` B a C 2 C +I 70630 2022-08-27 09:45:33 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 47 94 EE 43 F2 0E FD 43 | ` B G C C +I 70630 2022-08-27 09:45:33 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 2C 85 EF 43 17 58 F9 43 | ` B , C X C +I 70630 2022-08-27 09:45:33 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 74 2C F1 43 78 FD F5 43 | ` B t, Cx C +I 70630 2022-08-27 09:45:34 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 4B E5 F2 43 19 A9 F2 43 | ` B K C C +I 70630 2022-08-27 09:45:34 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 A4 EE F4 43 AB 83 EF 43 | ` B C C +I 70630 2022-08-27 09:45:34 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 50 48 F7 43 89 98 EC 43 | ` B PH C C +I 70630 2022-08-27 09:45:34 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 66 EF F9 43 23 F3 E9 43 | ` B f C# C +I 70630 2022-08-27 09:45:34 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 0E DE FC 43 27 9E E7 43 | ` B C' C +I 70630 2022-08-27 09:45:34 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 15 06 00 44 36 A3 E5 43 | ` B D6 C +I 70630 2022-08-27 09:45:35 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 21 99 00 44 27 FC E1 43 | ` B ! D' C +I 70630 2022-08-27 09:45:35 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 3A 76 01 44 43 AD DE 43 | ` B :v DC C +I 70630 2022-08-27 09:45:35 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 43 02 00 00 40 70 00 00 | ` C @p +I 70630 2022-08-27 09:45:35 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 46 03 00 00 01 00 00 00 7D 40 00 00 | ` F }@ +I 70630 2022-08-27 09:45:35 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 0B 03 7D 40 01 00 00 00 7D 00 00 00 | ` }@ } +I 70630 2022-08-27 09:45:35 - [Commands] Received from C-3 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 1C 00 60 06 00 00 01 30 7D 00 3E 98 06 44 | b ` 0} > D +0000000000000010 | 5E 32 C5 43 10 00 01 00 01 00 00 00 | ^2 C +I 70630 2022-08-27 09:45:35 - [Commands] Sending to C-3 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 1C 00 60 06 00 00 01 30 7D 00 3E 98 06 44 | b ` 0} > D +0000000000000010 | 5E 32 C5 43 10 00 01 00 01 00 00 00 | ^2 C +I 70630 2022-08-27 09:45:36 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 3F 70 01 00 10 00 | ` > ?p +0000000000000010 | 16 F2 00 44 32 4D 1F 41 35 F4 E0 43 | D2M A5 C +I 70630 2022-08-27 09:45:36 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 2D CC 02 44 84 71 DF 43 | ` @ - D q C +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:36 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 06 BA 03 44 27 E4 DB 43 | ` @ D' C +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:36 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 43 02 00 00 FF 69 00 00 | ` C i +I 70630 2022-08-27 09:45:36 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 46 03 00 00 01 00 00 00 7C 40 00 00 | ` F |@ +I 70630 2022-08-27 09:45:37 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 0B 03 7C 40 01 00 00 00 7C 00 00 00 | ` |@ | +I 70630 2022-08-27 09:45:37 - [Commands] Received from C-3 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 1C 00 60 06 00 00 01 30 7C 00 D5 1C 0B 44 | b ` 0| D +0000000000000010 | 69 B5 C4 43 10 00 01 00 01 00 00 00 | i C +I 70630 2022-08-27 09:45:37 - [Commands] Sending to C-3 (Tali) (version=DC command=62 flag=00) +0000000000000000 | 62 00 1C 00 60 06 00 00 01 30 7C 00 D5 1C 0B 44 | b ` 0| D +0000000000000010 | 69 B5 C4 43 10 00 01 00 01 00 00 00 | i C +I 70630 2022-08-27 09:45:37 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 FF 69 01 00 10 00 | ` > i +0000000000000010 | 0E 19 03 44 58 1A 0D 41 16 A9 DE 43 | DX A C +I 70630 2022-08-27 09:45:37 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 67 36 04 44 DD 56 DB 43 | ` @ g6 D V C +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:38 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 65 51 05 44 90 01 D8 43 | ` @ eQ D C +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:38 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 6C 4A 06 44 BD 18 D5 43 | ` @ lJ D C +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:38 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 9B E5 05 44 C3 2C D1 43 | ` @ D , C +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:45:38 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 F6 55 05 44 9C 66 CD 43 | ` B U D f C +I 70630 2022-08-27 09:45:38 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 77 13 06 44 18 E5 C9 43 | ` B w D C +I 70630 2022-08-27 09:45:39 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 57 72 01 00 10 00 | ` > Wr +0000000000000010 | 16 EC 05 44 66 0E 3C 41 1F 17 CA 43 | Df CS C +I 70630 2022-08-27 09:46:15 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 8A E8 3A 43 49 4A 20 43 | ` B :CIJ C +I 70630 2022-08-27 09:46:15 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 65 9D 37 43 3F 07 27 43 | ` B e 7C? 'C +I 70630 2022-08-27 09:46:15 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 B7 6E 3A 43 3A 25 2E 43 | ` B n:C:%.C +I 70630 2022-08-27 09:46:16 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 80 D3 3C 43 A8 1D 35 43 | ` B C )CC +I 70630 2022-08-27 09:46:16 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 B7 72 3E 43 5C 9D 4A 43 | ` B r>C\ JC +I 70630 2022-08-27 09:46:16 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 24 7D 43 43 DC 59 50 43 | ` B $}CC YPC +I 70630 2022-08-27 09:46:16 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 4E 1C 48 43 4D 17 56 43 | ` B N HCM VC +I 70630 2022-08-27 09:46:17 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 C9 BD 4D 43 76 09 5B 43 | ` B MCv [C +I 70630 2022-08-27 09:46:17 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 CA E1 53 43 C8 54 5F 43 | ` B SC T_C +I 70630 2022-08-27 09:46:17 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 C8 79 5A 43 C1 E3 62 43 | ` B yZC bC +I 70630 2022-08-27 09:46:17 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 E5 70 61 43 47 A6 65 43 | ` B paCG eC +I 70630 2022-08-27 09:46:17 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 52 AF 68 43 9E 8F 67 43 | ` B R hC gC +I 70630 2022-08-27 09:46:17 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 00 1B 70 43 FB 96 68 43 | ` B pC hC +I 70630 2022-08-27 09:46:18 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 88 98 77 43 9F B7 68 43 | ` B wC hC +I 70630 2022-08-27 09:46:18 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 E9 0B 7F 43 01 F0 67 43 | ` B C gC +I 70630 2022-08-27 09:46:18 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 8C 2C 83 43 02 43 66 43 | ` B , C CfC +I 70630 2022-08-27 09:46:18 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 4F 90 86 43 46 D4 69 43 | ` B O CF iC +I 70630 2022-08-27 09:46:18 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 02 20 8A 43 AE 10 6C 43 | ` B C lC +I 70630 2022-08-27 09:46:18 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 D9 8A 8D 43 61 AA 68 43 | ` B Ca hC +I 70630 2022-08-27 09:46:19 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 8F E8 90 43 15 AB 65 43 | ` B C eC +I 70630 2022-08-27 09:46:19 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 26 05 94 43 0E 7E 61 43 | ` B & C ~aC +I 70630 2022-08-27 09:46:19 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 D0 E1 96 43 1A A8 5C 43 | ` B C \C +I 70630 2022-08-27 09:46:19 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 42 03 00 00 73 72 99 43 0F 32 57 43 | ` B sr C 2WC +I 70630 2022-08-27 09:46:19 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 37 61 00 00 00 00 | ` > 7a +0000000000000010 | 62 4D 99 43 00 00 00 00 EF 9C 57 43 | bM C WC +I 70630 2022-08-27 09:46:19 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 22 01 00 00 | ` " +I 70630 2022-08-27 09:46:19 - [Commands] Received from C-3 (Tali) (version=DC command=98 flag=02) +0000000000000000 | 98 02 F4 04 05 00 00 01 02 00 00 00 4C 00 00 00 | L +0000000000000010 | 00 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 | +0000000000000020 | 00 00 00 00 02 00 00 00 4C 00 00 00 01 01 00 00 | L +0000000000000030 | 00 00 00 00 00 00 00 00 01 00 01 00 00 00 00 00 | +0000000000000040 | 02 00 00 00 4C 00 00 00 02 00 05 00 F5 01 00 00 | L +0000000000000050 | 01 00 00 00 02 00 01 00 00 00 14 00 01 00 00 00 | +0000000000000060 | 10 00 00 00 03 00 00 00 00 04 00 00 00 00 00 00 | +0000000000000070 | 03 00 01 00 00 00 00 00 01 00 00 00 10 00 00 00 | +0000000000000080 | 03 01 00 00 00 05 00 00 00 00 00 00 04 00 01 00 | +0000000000000090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000110 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000130 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000150 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000170 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000190 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000210 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000230 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000250 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000270 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000290 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000310 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000330 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000350 | 14 00 00 00 1F 00 11 00 17 00 2D 00 0A 00 28 00 | - ( +0000000000000360 | 00 00 98 41 00 00 20 41 00 00 00 00 00 00 00 00 | A A +0000000000000370 | 11 00 00 00 54 61 6C 69 00 00 00 00 00 00 00 00 | Tali +0000000000000380 | 00 00 00 00 00 00 00 00 00 00 00 00 35 AE FF FF | 5 +0000000000000390 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000003A0 | 0C 22 17 D7 04 05 00 02 52 00 00 00 00 00 05 00 | " R +00000000000003B0 | 00 00 03 00 00 00 00 00 00 00 00 00 4D C9 AF 3E | M > +00000000000003C0 | 00 00 00 00 00 00 00 00 01 06 01 00 02 00 00 00 | +00000000000003D0 | 02 01 00 00 04 00 01 00 01 06 01 00 00 00 00 00 | +00000000000003E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000003F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000400 | 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF | +0000000000000410 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 | +0000000000000420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000430 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000450 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000470 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000490 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000004A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000004B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000004C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000004D0 | 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 | +00000000000004E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000004F0 | 00 00 00 00 | +I 70630 2022-08-27 09:46:19 - [Lobby/15] Deleted lobby +I 70630 2022-08-27 09:46:23 - [Commands] Received from C-3 (Tali) (version=DC command=84 flag=00) +0000000000000000 | 84 00 0C 00 33 00 00 33 0A 00 00 00 | 3 3 +I 70630 2022-08-27 09:46:23 - [Commands] Sending to C-3 (Tali) (version=DC command=67 flag=01) +0000000000000000 | 67 01 4C 04 00 00 01 09 0A 00 00 00 00 00 00 00 | g L +0000000000000010 | 00 00 01 00 37 F2 62 4E 7F 00 00 01 00 00 00 00 | 7 bN +0000000000000020 | 09 4A 54 61 6C 69 00 00 00 00 00 00 00 00 00 00 | JTali +0000000000000030 | 05 00 00 01 02 00 00 00 4C 00 00 00 00 06 00 00 | L +0000000000000040 | 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 | +0000000000000050 | 02 00 00 00 4C 00 00 00 01 01 00 00 00 00 00 00 | L +0000000000000060 | 00 00 00 00 01 00 01 00 00 00 00 00 02 00 00 00 | +0000000000000070 | 4C 00 00 00 02 00 05 00 F5 01 00 00 01 00 00 00 | L +0000000000000080 | 02 00 01 00 00 00 14 00 01 00 00 00 10 00 00 00 | +0000000000000090 | 03 00 00 00 00 04 00 00 00 00 00 00 03 00 01 00 | +00000000000000A0 | 00 00 00 00 01 00 00 00 10 00 00 00 03 01 00 00 | +00000000000000B0 | 00 05 00 00 00 00 00 00 04 00 01 00 00 00 00 00 | +00000000000000C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000110 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000130 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000150 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000170 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000190 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000001F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000210 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000230 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000250 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000270 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000290 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000002F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000310 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000330 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000350 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000370 | 00 00 00 00 00 00 00 00 00 00 00 00 14 00 00 00 | +0000000000000380 | 1F 00 11 00 17 00 2D 00 0A 00 28 00 00 00 98 41 | - ( A +0000000000000390 | 00 00 20 41 00 00 00 00 00 00 00 00 11 00 00 00 | A +00000000000003A0 | 54 61 6C 69 00 00 00 00 00 00 00 00 00 00 00 00 | Tali +00000000000003B0 | 00 00 00 00 00 00 00 00 35 AE FF FF 00 00 00 00 | 5 +00000000000003C0 | 00 00 00 00 00 00 00 00 00 00 00 00 0C 22 17 D7 | " +00000000000003D0 | 04 05 00 02 52 00 00 00 00 00 05 00 00 00 03 00 | R +00000000000003E0 | 00 00 00 00 00 00 00 00 4D C9 AF 3E 00 00 00 00 | M > +00000000000003F0 | 00 00 00 00 01 06 01 00 02 00 00 00 02 01 00 00 | +0000000000000400 | 04 00 01 00 01 06 01 00 00 00 00 00 00 00 00 00 | +0000000000000410 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000430 | 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF | +0000000000000440 | FF FF FF FF FF FF FF FF FF FF FF 00 | +I 70630 2022-08-27 09:46:25 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3F 06 00 00 00 00 00 40 0F 00 FF FF | ` ? @ +0000000000000010 | A6 31 62 C2 00 00 00 00 A0 4C 89 3E | 1b L > +I 70630 2022-08-27 09:46:25 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 0C 00 1F 02 00 00 0F 00 00 00 | ` +I 70630 2022-08-27 09:46:25 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 3B 01 00 00 | ` ; +I 70630 2022-08-27 09:46:25 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 08 00 23 01 00 00 | ` # +I 70630 2022-08-27 09:46:25 - [Commands] Sending to C-3 (Tali) (version=DC command=88 flag=01) +0000000000000000 | 88 01 10 00 00 00 01 00 37 F2 62 4E 00 00 00 00 | 7 bN +I 70630 2022-08-27 09:46:26 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 A6 31 42 C2 A0 4C 89 3E | ` @ 1B L > +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:46:27 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 A6 31 22 C2 A0 4C 89 3E | ` @ 1" L > +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:46:27 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 14 00 40 04 00 00 A6 31 02 C2 A0 4C 89 3E | ` @ 1 L > +0000000000000010 | 00 00 00 00 | +I 70630 2022-08-27 09:46:27 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 1C 00 3E 06 00 00 00 00 00 40 0F 00 01 00 | ` > @ +0000000000000010 | A6 31 06 C2 00 00 00 00 A0 4C 89 3E | 1 L > +I 70630 2022-08-27 09:46:27 - [Commands] Received from C-3 (Tali) (version=DC command=60 flag=00) +0000000000000000 | 60 00 10 00 52 03 00 00 0A 00 00 00 00 40 00 00 | ` R @ +I 70630 2022-08-27 09:46:29 - [Commands] Received from C-3 (Tali) (version=DC command=A0 flag=00) +0000000000000000 | A0 00 1C 00 00 00 01 00 37 F2 62 4E 00 00 00 00 | 7 bN +0000000000000010 | 00 00 00 00 00 00 00 00 00 00 00 00 | +I 70630 2022-08-27 09:46:29 - [Commands] Sending to C-3 (Tali) (version=DC command=69 flag=00) +0000000000000000 | 69 00 08 00 00 00 00 00 | i +I 70630 2022-08-27 09:46:29 - [Commands] Sending to C-3 (Tali) (version=DC command=1A flag=00) +0000000000000000 | 1A 00 08 00 00 00 00 00 | +I 70630 2022-08-27 09:46:29 - [Commands] Sending to C-3 (Tali) (version=DC command=19 flag=00) +0000000000000000 | 19 00 0C 00 0A 00 00 04 EC 13 00 00 | +I 70630 2022-08-27 09:46:30 - [Server] Client disconnected: C-3 on fd 35 +I 70630 2022-08-27 09:46:30 - [Server] Client connected: C-4 on fd 35 via 6 (T-5100-DC-console-login-login_server) +I 70630 2022-08-27 09:46:30 - [Commands] Sending to C-4 (version=GC command=17 flag=00) +0000000000000000 | 17 00 0C 01 44 72 65 61 6D 43 61 73 74 20 50 6F | DreamCast Po +0000000000000010 | 72 74 20 4D 61 70 2E 20 43 6F 70 79 72 69 67 68 | rt Map. Copyrigh +0000000000000020 | 74 20 53 45 47 41 20 45 6E 74 65 72 70 72 69 73 | t SEGA Enterpris +0000000000000030 | 65 73 2E 20 31 39 39 39 00 00 00 00 00 00 00 00 | es. 1999 +0000000000000040 | 00 00 00 00 5F A3 96 47 89 EE 2D 19 54 68 69 73 | _ G - This +0000000000000050 | 20 73 65 72 76 65 72 20 69 73 20 69 6E 20 6E 6F | server is in no +0000000000000060 | 20 77 61 79 20 61 66 66 69 6C 69 61 74 65 64 2C | way affiliated, +0000000000000070 | 20 73 70 6F 6E 73 6F 72 65 64 2C 20 6F 72 20 73 | sponsored, or s +0000000000000080 | 75 70 70 6F 72 74 65 64 20 62 79 20 53 45 47 41 | upported by SEGA +0000000000000090 | 20 45 6E 74 65 72 70 72 69 73 65 73 20 6F 72 20 | Enterprises or +00000000000000A0 | 53 4F 4E 49 43 54 45 41 4D 2E 20 54 68 65 20 70 | SONICTEAM. The p +00000000000000B0 | 72 65 63 65 64 69 6E 67 20 6D 65 73 73 61 67 65 | receding message +00000000000000C0 | 20 65 78 69 73 74 73 20 6F 6E 6C 79 20 69 6E 20 | exists only in +00000000000000D0 | 6F 72 64 65 72 20 74 6F 20 72 65 6D 61 69 6E 20 | order to remain +00000000000000E0 | 63 6F 6D 70 61 74 69 62 6C 65 20 77 69 74 68 20 | compatible with +00000000000000F0 | 70 72 6F 67 72 61 6D 73 20 74 68 61 74 20 65 78 | programs that ex +0000000000000100 | 70 65 63 74 20 69 74 2E 00 00 00 00 | pect it. +I 70630 2022-08-27 09:46:30 - [Commands] Received from C-4 (version=GC command=9A flag=00) +0000000000000000 | 9A 00 E0 00 38 39 41 43 42 30 39 32 00 00 00 00 | 89ACB092 +0000000000000010 | 00 00 00 00 31 31 31 31 31 31 31 31 00 00 00 00 | 11111111 +0000000000000020 | 00 00 00 00 34 45 36 32 46 32 33 37 00 00 00 00 | 4E62F237 +0000000000000030 | 00 00 00 00 31 31 31 31 31 31 31 31 00 00 00 00 | 11111111 +0000000000000040 | 00 00 00 00 00 00 8A 03 CA 3B 9F 4A 26 00 00 00 | ; J& +0000000000000050 | 38 38 39 31 36 36 33 32 00 00 00 00 00 00 00 00 | 88916632 +0000000000000060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +I 70630 2022-08-27 09:46:30 - Game version changed to DC +I 70630 2022-08-27 09:46:30 - [Commands] Sending to C-4 (version=DC command=9A flag=02) +0000000000000000 | 9A 02 04 00 | +I 70630 2022-08-27 09:46:30 - [Commands] Received from C-4 (version=DC command=9D flag=00) +0000000000000000 | 9D 00 30 01 00 00 01 00 37 F2 62 4E 00 00 8A 03 | 0 7 bN +0000000000000010 | CA 3B 9F 4A 26 00 00 00 00 01 00 00 38 39 41 43 | ; J& 89AC +0000000000000020 | 42 30 39 32 00 00 00 00 00 00 00 00 31 31 31 31 | B092 1111 +0000000000000030 | 31 31 31 31 00 00 00 00 00 00 00 00 34 45 36 32 | 1111 4E62 +0000000000000040 | 46 32 33 37 00 00 00 00 00 00 00 00 31 31 31 31 | F237 1111 +0000000000000050 | 31 31 31 31 00 00 00 00 00 00 00 00 38 38 39 31 | 1111 8891 +0000000000000060 | 36 36 33 32 00 00 00 00 00 00 00 00 00 00 00 00 | 6632 +0000000000000070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000B0 | 00 00 00 00 00 00 00 00 00 00 00 00 54 61 6C 69 | Tali +00000000000000C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00000000000000F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000110 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0000000000000120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +I 70630 2022-08-27 09:46:30 - Game version changed to DC +I 70630 2022-08-27 09:46:30 - [Commands] Sending to C-4 (version=DC command=04 flag=00) +0000000000000000 | 04 00 2C 00 00 00 01 00 37 F2 62 4E 39 98 AC 82 | , 7 bN9 +0000000000000010 | 0E 89 2A 49 04 00 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 70630 2022-08-27 09:46:30 - [Commands] Sending to C-4 (version=DC command=07 flag=04) +0000000000000000 | 07 04 90 00 11 00 00 11 FF FF FF FF 04 00 41 6C | Al +0000000000000010 | 65 78 61 6E 64 72 69 61 00 00 00 00 00 00 00 00 | exandria +0000000000000020 | 11 00 00 11 11 22 22 11 04 0F 47 6F 20 74 6F 20 | "" Go to +0000000000000030 | 6C 6F 62 62 79 00 00 00 00 00 00 00 11 00 00 11 | lobby +0000000000000040 | 11 44 44 11 04 0F 44 6F 77 6E 6C 6F 61 64 20 71 | DD Download q +0000000000000050 | 75 65 73 74 73 00 00 00 11 00 00 11 11 88 88 11 | uests +0000000000000060 | 04 0F 44 69 73 63 6F 6E 6E 65 63 74 00 00 00 00 | Disconnect +0000000000000070 | 00 00 00 00 11 00 00 11 11 99 99 11 04 0F 43 6C | Cl +0000000000000080 | 65 61 72 20 6C 69 63 65 6E 73 65 00 00 00 00 00 | ear license +I 70630 2022-08-27 09:46:32 - [Commands] Received from C-4 (version=DC command=10 flag=00) +0000000000000000 | 10 00 0C 00 11 00 00 11 11 88 88 11 | +I 70630 2022-08-27 09:46:32 - [Server] Client disconnected: C-4 on fd 35