Skip to content

Commit

Permalink
enable dcv1 native battle mode
Browse files Browse the repository at this point in the history
  • Loading branch information
fuzziqersoftware committed Jan 21, 2025
1 parent 721b01a commit aa9e1e7
Show file tree
Hide file tree
Showing 21 changed files with 77 additions and 205 deletions.
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -574,7 +574,6 @@ Some commands only work on the game server and not on the proxy server. The chat
* Personal state commands
* `$arrow <color-id>`: Change your lobby arrow color.
* `$secid <section-id>`: Set your override section ID. After running this command, any games you create will use your override section ID for rare drops instead of your character's actual section ID. If you're in a game and you are the leader of the game, this also immediately changes the item tables used by the server when creating items. To revert to your actual section id, run `$secid` with no name after it. On the proxy server, this will not work if the remote server controls item drops (e.g. on BB, or on Schtserv with server drops enabled). If the server does not allow cheat mode anywhere (that is, "CheatModeBehavior" is "Off" in config.json), this command does nothing.
* `$battle` (game server only; DC v1 only): After using this command, the next game you create will be in battle mode. (A chat command is required for this because DCv1 doesn't allow this natively.) On DCv1, the battle quests are not available, but free-roam is.
* `$rand <seed>`: Set your override random seed (specified as a 32-bit hex value). This will make any games you create use the given seed for rare enemies. This also makes item drops deterministic in Blue Burst games hosted by newserv. On the proxy server, this command can cause desyncs with other players in the same game, since they will not see the overridden random seed. To remove the override, run `$rand` with no arguments. If the server does not allow cheat mode anywhere (that is, "CheatModeBehavior" is "Off" in config.json), this command does nothing.
* `$ln [name-or-type]`: Set the lobby number. Visible only to you. This command exists because some non-lobby maps can be loaded as lobbies with invalid lobby numbers. See the "GC lobby types" and "Ep3 lobby types" entries in the information menu for acceptable values here. Note that non-lobby maps do not have a lobby counter, so there's no way to exit the lobby without using either `$ln` again or `$exit`. On the game server, `$ln` reloads the lobby immediately; on the proxy server, it doesn't take effect until you load another lobby yourself (which means you'll like have to use `$exit` to escape). Run this command with no argument to return to the default lobby.
* `$swa`: Enable or disable switch assist. When enabled, the server will unlock two-player and four-player doors in non-quest games when you step on any of the required switches.
Expand Down
17 changes: 0 additions & 17 deletions src/ChatCommands.cc
Original file line number Diff line number Diff line change
Expand Up @@ -381,23 +381,6 @@ ChatCommandDefinition cc_bank(
},
unavailable_on_proxy_server);

ChatCommandDefinition cc_battle(
{"$battle"},
+[](const ServerArgs& a) {
a.check_is_game(false);
if (!is_v1(a.c->version())) {
throw precondition_failed("$C6This command can\nonly be used on\nDC v1 and earlier");
}

a.c->config.toggle_flag(Client::Flag::FORCE_BATTLE_MODE_GAME);
if (a.c->config.check_flag(Client::Flag::FORCE_BATTLE_MODE_GAME)) {
send_text_message(a.c, "$C6Battle mode enabled\nfor next game");
} else {
send_text_message(a.c, "$C6Battle mode disabled\nfor next game");
}
},
unavailable_on_proxy_server);

static void server_command_bbchar_savechar(const ServerArgs& a, bool is_bb_conversion) {
auto s = a.c->require_server_state();
auto l = a.c->require_lobby();
Expand Down
3 changes: 1 addition & 2 deletions src/Client.hh
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public:
// TODO: It'd be nice to use a pattern here (e.g. all server-side flags are
// in the high bits) but that would require re-recording or manually
// rewriting all the tests
CLIENT_SIDE_MASK = 0xE73CFFFF7C0BFFFB,
CLIENT_SIDE_MASK = 0xEF3CFFFF7C0BFFFB,

// Version-related flags
CHECKED_FOR_DC_V1_PROTOTYPE = 0x0000000000000002,
Expand Down Expand Up @@ -81,7 +81,6 @@ public:
DEBUG_ENABLED = 0x0000000800000000,
ITEM_DROP_NOTIFICATIONS_1 = 0x0010000000000000,
ITEM_DROP_NOTIFICATIONS_2 = 0x0020000000000000,
FORCE_BATTLE_MODE_GAME = 0x0800000000000000, // Server-side only

// Proxy option flags
PROXY_SAVE_FILES = 0x0000001000000000,
Expand Down
26 changes: 15 additions & 11 deletions src/CommandFormats.hh
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,7 @@ struct C_LegacyLogin_PC_V3_03 {
/* 08 */ le_uint32_t sub_version = 0;
/* 0C */ uint8_t is_extended = 0;
/* 0D */ uint8_t language = 0;
/* 0E */ le_uint16_t unknown_a2 = 0;
/* 0E */ le_uint16_t unused = 0;
// Note: These are suffixed with 2 since they come from the same source data
// as the corresponding fields in 9D/9E. (Even though serial_number and
// serial_number2 have the same contents in 9E, they do not come from the same
Expand Down Expand Up @@ -407,7 +407,7 @@ struct C_LegacyLogin_PC_V3_04 {
/* 08 */ le_uint32_t sub_version = 0;
/* 0C */ uint8_t is_extended = 0;
/* 0D */ uint8_t language = 0;
/* 0E */ le_uint16_t unknown_a2 = 0;
/* 0E */ le_uint16_t unused = 0;
/* 10 */ pstring<TextEncoding::ASCII, 0x10> serial_number;
/* 20 */ pstring<TextEncoding::ASCII, 0x10> access_key;
/* 30 */
Expand Down Expand Up @@ -682,7 +682,7 @@ struct C_MenuSelection_10_Flag00 {
template <TextEncoding Encoding>
struct C_MenuSelectionT_10_Flag01 {
C_MenuSelection_10_Flag00 basic_cmd;
pstring<Encoding, 0x10> unknown_a1;
pstring<Encoding, 0x10> name;
} __packed__;
using C_MenuSelection_DC_V3_10_Flag01 = C_MenuSelectionT_10_Flag01<TextEncoding::MARKED>;
using C_MenuSelection_PC_BB_10_Flag01 = C_MenuSelectionT_10_Flag01<TextEncoding::UTF16>;
Expand All @@ -702,7 +702,7 @@ check_struct_size(C_MenuSelection_PC_BB_10_Flag02, 0x28);
template <TextEncoding Encoding>
struct C_MenuSelectionT_10_Flag03 {
C_MenuSelection_10_Flag00 basic_cmd;
pstring<Encoding, 0x10> unknown_a1;
pstring<Encoding, 0x10> name;
pstring<Encoding, 0x10> password;
} __packed__;
using C_MenuSelection_DC_V3_10_Flag03 = C_MenuSelectionT_10_Flag03<TextEncoding::MARKED>;
Expand Down Expand Up @@ -861,8 +861,10 @@ struct S_ReconnectSplit_19 {

// 20: Invalid command

// 21: GameGuard control (old versions of BB)
// Format unknown
// 21: Invalid command
// My old notes call this command "GameGuard control (old versions of BB)", but
// it's not clear if this is accurate. At least, BB US v1.24.3 and later do not
// support this command.

// 0022: GameGuard check (BB)

Expand Down Expand Up @@ -891,8 +893,6 @@ struct SC_GameGuardCheck_BB_0022 {
// failure.

struct S_ExchangeSecretLotteryTicketResult_BB_24 {
// These fields map to unknown_a1 and unknown_a2 in the 6xDE command (but
// their order is swapped here).
le_uint16_t label = 0;
uint8_t start_index = 0;
uint8_t unused = 0;
Expand Down Expand Up @@ -1316,10 +1316,14 @@ struct LobbyFlags {
uint8_t disable_udp = 1;
uint8_t lobby_number = 0;
uint8_t block_number = 0;
uint8_t unknown_a1 = 0;
// When this flag is set in the lobby join commands (67/68), the client will
// show the Battle option in the game creation menu. This only has an effect
// on DCv1. On 11/2000, the option always appears but does nothing, and on
// DCv2 and later, the game mode option is always present.
uint8_t enable_battle_mode_v1 = 1;
uint8_t event = 0;
uint8_t unknown_a2 = 0;
le_uint32_t unused = 0;
uint8_t unused = 0;
le_uint32_t random_seed = 0; // Unused for lobbies
} __packed_ws__(LobbyFlags, 0x0C);

// Header flag = entry count (always 1 for 65 and 68; up to 0x0C for 67)
Expand Down
12 changes: 7 additions & 5 deletions src/ReceiveCommands.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1275,7 +1275,6 @@ static void on_96(shared_ptr<Client> c, uint16_t, uint32_t, string& data) {
check_size_t<C_CharSaveInfo_DCv2_PC_V3_BB_96>(data);
c->config.set_flag(Client::Flag::SHOULD_SEND_ENABLE_SAVE);
send_update_client_config(c, false);
send_server_time(c);
}

static void on_B1(shared_ptr<Client> c, uint16_t, uint32_t, string& data) {
Expand Down Expand Up @@ -2232,7 +2231,7 @@ static void on_10(shared_ptr<Client> c, uint16_t, uint32_t, string& data) {
item_id = cmd.basic_cmd.item_id;
} else if (data.size() > sizeof(C_MenuSelection_DC_V3_10_Flag02)) {
const auto& cmd = check_size_t<C_MenuSelection_DC_V3_10_Flag03>(data);
team_name = cmd.unknown_a1.decode(c->language());
team_name = cmd.name.decode(c->language());
password = cmd.password.decode(c->language());
menu_id = cmd.basic_cmd.menu_id;
item_id = cmd.basic_cmd.item_id;
Expand Down Expand Up @@ -4327,10 +4326,14 @@ shared_ptr<Lobby> create_game_generic(
game->difficulty = difficulty;
game->allowed_versions = s->compatibility_groups.at(static_cast<size_t>(creator_c->version()));
static_assert(NUM_VERSIONS == 14, "Don't forget to update the group compatibility restrictions");
if (!allow_v1 || (difficulty > 2) || (mode != GameMode::NORMAL)) {
if (!allow_v1 || (difficulty > 2) || (mode == GameMode::CHALLENGE) || (mode == GameMode::SOLO)) {
game->forbid_version(Version::DC_NTE);
game->forbid_version(Version::DC_11_2000);
game->forbid_version(Version::DC_V1);
} else if (mode == GameMode::BATTLE) {
game->forbid_version(Version::DC_NTE);
game->forbid_version(Version::DC_11_2000);
// v1 supports battle mode but not battle quests
}
switch (game->episode) {
case Episode::NONE:
Expand Down Expand Up @@ -4597,9 +4600,8 @@ static void on_0C_C1_E7_EC(shared_ptr<Client> c, uint16_t command, uint32_t, str

GameMode mode = GameMode::NORMAL;
bool spectators_forbidden = false;
if (cmd.battle_mode || c->config.check_flag(Client::Flag::FORCE_BATTLE_MODE_GAME)) {
if (cmd.battle_mode) {
mode = GameMode::BATTLE;
c->config.clear_flag(Client::Flag::FORCE_BATTLE_MODE_GAME);
}
if (cmd.challenge_mode) {
if (client_is_ep3) {
Expand Down
14 changes: 5 additions & 9 deletions src/SendCommands.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2118,13 +2118,9 @@ void send_join_lobby_t(shared_ptr<Client> c, shared_ptr<Lobby> l, shared_ptr<Cli
S_JoinLobbyT<LobbyFlags, LobbyDataT, DispDataT> cmd;
cmd.lobby_flags.client_id = c->lobby_client_id;
cmd.lobby_flags.leader_id = l->leader_id;
cmd.lobby_flags.disable_udp = 0x01;
cmd.lobby_flags.lobby_number = lobby_type;
cmd.lobby_flags.block_number = lobby_block;
cmd.lobby_flags.unknown_a1 = 0;
cmd.lobby_flags.event = l->event;
cmd.lobby_flags.unknown_a2 = 0;
cmd.lobby_flags.unused = 0;

vector<shared_ptr<Client>> lobby_clients;
if (joining_client) {
Expand Down Expand Up @@ -2194,13 +2190,9 @@ void send_join_lobby_xb(shared_ptr<Client> c, shared_ptr<Lobby> l, shared_ptr<Cl
S_JoinLobby_XB_65_67_68 cmd;
cmd.lobby_flags.client_id = c->lobby_client_id;
cmd.lobby_flags.leader_id = l->leader_id;
cmd.lobby_flags.disable_udp = 0x01;
cmd.lobby_flags.lobby_number = lobby_type;
cmd.lobby_flags.block_number = l->block;
cmd.lobby_flags.unknown_a1 = 0;
cmd.lobby_flags.event = l->event;
cmd.lobby_flags.unknown_a2 = 0;
cmd.lobby_flags.unused = 0;

vector<shared_ptr<Client>> lobby_clients;
if (joining_client) {
Expand Down Expand Up @@ -2247,7 +2239,6 @@ void send_join_lobby_dc_nte(shared_ptr<Client> c, shared_ptr<Lobby> l,
S_JoinLobby_DCNTE_65_67_68 cmd;
cmd.lobby_flags.client_id = c->lobby_client_id;
cmd.lobby_flags.leader_id = l->leader_id;
cmd.lobby_flags.disable_udp = 0x01;

vector<shared_ptr<Client>> lobby_clients;
if (joining_client) {
Expand Down Expand Up @@ -4068,6 +4059,11 @@ void send_ep3_disband_watcher_lobbies(shared_ptr<Lobby> primary_l) {
}

void send_server_time(shared_ptr<Client> c) {
// DC NTE and 11/2000 don't have this command
if (is_pre_v1(c->version())) {
return;
}

uint64_t t = phosg::now();

time_t t_secs = t / 1000000;
Expand Down
6 changes: 0 additions & 6 deletions tests/DCNTE-GameSmokeTest.test.txt
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,6 @@ I 91446 2023-12-31 21:04:44 - [Commands] Sending to C-1 (version=DC_NTE command=
0000 | 04 00 0C 00 00 00 01 00 F5 5D C2 1A | UUUU
I 91446 2023-12-31 21:04:44 - [C-1] Client is a prototype version and the license was created during this session; converting permanent license to temporary license
I 91446 2023-12-31 21:04:44 - [Commands] Sending to C-1 (version=DC_NTE command=07 flag=02)
0000 | B1 00 20 00 32 30 32 34 3A 31 32 3A 32 39 3A 20 | 2024:12:29:
0010 | 32 32 3A 35 36 3A 33 36 2E 30 30 30 00 01 00 00 | 22:56:36.000
I 91446 2023-12-31 21:04:44 - [Commands] Sending to C-1 (version=DC_NTE command=07 flag=02)
0000 | 07 02 58 00 11 00 00 11 FF FF FF FF 04 00 41 6C | X Al
0010 | 65 78 61 6E 64 72 69 61 00 00 00 00 00 00 00 00 | exandria
0020 | 11 00 00 11 11 22 22 11 04 0F 47 6F 20 74 6F 20 | "" Go to
Expand Down Expand Up @@ -591,9 +588,6 @@ I 91446 2023-12-31 21:05:43 - [Commands] Sending to C-3 (version=DC_NTE command=
0000 | 04 00 0C 00 00 00 01 00 F5 79 DE 25 |
I 91446 2023-12-31 21:05:43 - [C-3] Client is a prototype version and the license was created during this session; converting permanent license to temporary license
I 91446 2023-12-31 21:05:43 - [Commands] Sending to C-3 (version=DC_NTE command=07 flag=02)
0000 | B1 00 20 00 32 30 32 34 3A 31 32 3A 32 39 3A 20 | 2024:12:29:
0010 | 32 32 3A 35 36 3A 33 36 2E 30 30 30 00 01 00 00 | 22:56:36.000
I 91446 2023-12-31 21:05:43 - [Commands] Sending to C-3 (version=DC_NTE command=07 flag=02)
0000 | 07 02 58 00 11 00 00 11 FF FF FF FF 04 00 41 6C | X Al
0010 | 65 78 61 6E 64 72 69 61 00 00 00 00 00 00 00 00 | exandria
0020 | 11 00 00 11 11 22 22 11 04 0F 47 6F 20 74 6F 20 | "" Go to
Expand Down
11 changes: 3 additions & 8 deletions tests/DCv1-GameSmokeTest.test.txt
Original file line number Diff line number Diff line change
Expand Up @@ -74,11 +74,6 @@ I 40469 2023-05-26 10:40:55 - [Commands] Sending to C-1 (version=DC command=07 f
0080 | 65 61 72 20 6C 69 63 65 6E 73 65 00 00 00 00 00 | ear license
I 40469 2023-05-26 10:40:56 - [Commands] Received from C-1 (version=DC command=96 flag=00)
0000 | 96 00 0C 00 FB 28 0F 8A 02 00 00 00 | (
I 40469 2023-05-26 10:40:56 - [Commands] Sending to C-1 (version=DC command=B1 flag=00)
0000 | B1 00 20 00 32 30 32 33 3A 30 35 3A 32 36 3A 20 | 2023:05:26:
0010 | 31 37 3A 34 30 3A 35 36 2E 30 30 30 00 01 00 00 | 17:40:56.000
I 40469 2023-05-26 10:40:56 - [Commands] Received from C-1 (version=DC command=99 flag=00)
0000 | 99 00 04 00 |
I 40469 2023-05-26 10:40:58 - [Commands] Received from C-1 (version=DC command=10 flag=00)
0000 | 10 00 0C 00 11 00 00 11 11 22 22 11 | ""
I 40469 2023-05-26 10:40:58 - [Commands] Sending to C-1 (version=DC command=97 flag=01)
Expand Down Expand Up @@ -235,7 +230,7 @@ I 40469 2023-05-26 10:40:59 - [Commands] Received from C-2 (version=DC command=6
0400 | 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF |
0410 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 |
I 40469 2023-05-26 10:40:59 - [Commands] Sending to C-2 (Tali) (version=DC command=67 flag=01)
0000 | 67 01 4C 04 00 00 01 00 01 00 00 00 00 00 00 00 | g L
0000 | 67 01 4C 04 00 00 01 00 01 01 00 00 00 00 00 00 | g L
0010 | 00 00 01 00 77 77 77 77 7F 00 00 01 00 00 00 00 | wwww
0020 | 54 61 6C 69 00 00 00 00 00 00 00 00 00 00 00 00 | Tali
0030 | 05 00 00 01 02 00 00 00 0C 00 00 00 00 06 00 00 |
Expand Down Expand Up @@ -392,7 +387,7 @@ I 40469 2023-05-26 10:41:17 - [Commands] Received from C-2 (Tali) (version=DC co
I 40469 2023-05-26 10:41:20 - [Commands] Received from C-2 (Tali) (version=DC command=84 flag=00)
0000 | 84 00 0C 00 33 00 00 33 0A 00 00 00 | 3 3
I 40469 2023-05-26 10:41:20 - [Commands] Sending to C-2 (Tali) (version=DC command=67 flag=01)
0000 | 67 01 4C 04 00 00 01 09 0A 00 00 00 00 00 00 00 | g L
0000 | 67 01 4C 04 00 00 01 09 0A 01 00 00 00 00 00 00 | g L
0010 | 00 00 01 00 77 77 77 77 7F 00 00 01 00 00 00 00 | wwww
0020 | 54 61 6C 69 00 00 00 00 00 00 00 00 00 00 00 00 | Tali
0030 | 05 00 00 01 02 00 00 00 0C 00 00 00 00 06 00 00 |
Expand Down Expand Up @@ -1115,7 +1110,7 @@ I 40469 2023-05-26 10:42:40 - [Lobby/15] Deleted lobby
I 40469 2023-05-26 10:42:43 - [Commands] Received from C-2 (Tali) (version=DC command=84 flag=00)
0000 | 84 00 0C 00 33 00 00 33 0A 00 00 00 | 3 3
I 40469 2023-05-26 10:42:43 - [Commands] Sending to C-2 (Tali) (version=DC command=67 flag=01)
0000 | 67 01 4C 04 00 00 01 09 0A 00 00 00 00 00 00 00 | g L
0000 | 67 01 4C 04 00 00 01 09 0A 01 00 00 00 00 00 00 | g L
0010 | 00 00 01 00 77 77 77 77 7F 00 00 01 00 00 00 00 | wwww
0020 | 54 61 6C 69 00 00 00 00 00 00 00 00 00 00 00 00 | Tali
0030 | 06 00 00 01 02 00 00 00 4C 00 00 00 00 06 00 00 | L
Expand Down
11 changes: 3 additions & 8 deletions tests/DCv2-GameSmokeTest.test.txt
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,6 @@ I 40992 2023-05-26 10:52:51 - [Commands] Sending to C-1 (version=DC command=07 f
0080 | 65 61 72 20 6C 69 63 65 6E 73 65 00 00 00 00 00 | ear license
I 40992 2023-05-26 10:52:52 - [Commands] Received from C-1 (version=DC command=96 flag=00)
0000 | 96 00 0C 00 FB 28 0F 8A 04 00 00 00 | (
I 40992 2023-05-26 10:52:52 - [Commands] Sending to C-1 (version=DC command=B1 flag=00)
0000 | B1 00 20 00 32 30 32 33 3A 30 35 3A 32 36 3A 20 | 2023:05:26:
0010 | 31 37 3A 35 32 3A 35 32 2E 30 30 30 00 01 00 00 | 17:52:52.000
I 40992 2023-05-26 10:52:52 - [Commands] Received from C-1 (version=DC command=99 flag=00)
0000 | 99 00 04 00 |
I 40992 2023-05-26 10:52:56 - [Commands] Received from C-1 (version=DC command=10 flag=00)
0000 | 10 00 0C 00 11 00 00 11 11 22 22 11 | ""
I 40992 2023-05-26 10:52:56 - [Commands] Sending to C-1 (version=DC command=97 flag=01)
Expand Down Expand Up @@ -239,7 +234,7 @@ I 40992 2023-05-26 10:52:57 - [Commands] Sending to C-2 (Tali) (version=DC comma
00A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
00B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
I 40992 2023-05-26 10:52:57 - [Commands] Sending to C-2 (Tali) (version=DC command=67 flag=01)
0000 | 67 01 4C 04 00 00 01 00 01 00 00 00 00 00 00 00 | g L
0000 | 67 01 4C 04 00 00 01 00 01 01 00 00 00 00 00 00 | g L
0010 | 00 00 01 00 77 77 77 77 7F 00 00 01 00 00 00 00 | wwww
0020 | 54 61 6C 69 00 00 00 00 00 00 00 00 00 00 00 00 | Tali
0030 | 06 00 00 01 02 00 00 00 4C 00 00 00 00 06 00 00 | L
Expand Down Expand Up @@ -386,7 +381,7 @@ I 40992 2023-05-26 10:53:08 - [Commands] Sending to C-2 (Tali) (version=DC comma
00A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
00B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
I 40992 2023-05-26 10:53:08 - [Commands] Sending to C-2 (Tali) (version=DC command=67 flag=01)
0000 | 67 01 4C 04 00 00 01 0B 0C 00 00 00 00 00 00 00 | g L
0000 | 67 01 4C 04 00 00 01 0B 0C 01 00 00 00 00 00 00 | g L
0010 | 00 00 01 00 77 77 77 77 7F 00 00 01 00 00 00 00 | wwww
0020 | 54 61 6C 69 00 00 00 00 00 00 00 00 00 00 00 00 | Tali
0030 | 06 00 00 01 02 00 00 00 4C 00 00 00 00 06 00 00 | L
Expand Down Expand Up @@ -1359,7 +1354,7 @@ I 40992 2023-05-26 10:55:24 - [Commands] Sending to C-2 (Tali) (version=DC comma
00A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
00B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
I 40992 2023-05-26 10:55:24 - [Commands] Sending to C-2 (Tali) (version=DC command=67 flag=01)
0000 | 67 01 4C 04 00 00 01 0B 0C 00 00 00 00 00 00 00 | g L
0000 | 67 01 4C 04 00 00 01 0B 0C 01 00 00 00 00 00 00 | g L
0010 | 00 00 01 00 77 77 77 77 7F 00 00 01 00 00 00 00 | wwww
0020 | 54 61 6C 69 00 00 00 00 00 00 00 00 00 00 00 00 | Tali
0030 | 07 00 00 01 02 00 00 00 4C 00 00 00 00 06 00 00 | L
Expand Down
Loading

0 comments on commit aa9e1e7

Please sign in to comment.