refine some xb voice chat structs

This commit is contained in:
Martin Michelsen
2025-01-21 23:46:22 -08:00
parent aa9e1e7305
commit 5c807fa655
17 changed files with 32144 additions and 32132 deletions
+18 -5
View File
@@ -1284,15 +1284,25 @@ struct S_JoinGame_Ep3_64 : S_JoinGame_GC_64 {
parray<Ep3PlayerEntry, 4> players_ep3;
} __packed_ws__(S_JoinGame_Ep3_64, 0x1180);
struct S_UnknownXBVoiceChatConfig {
le_uint16_t unknown_a1 = 0;
uint8_t unknown_a2 = 0;
uint8_t unknown_a3 = 0;
le_uint16_t unknown_a4 = 0;
le_uint16_t unknown_a5 = 0;
parray<le_uint32_t, 4> unknown_a6;
} __packed_ws__(S_UnknownXBVoiceChatConfig, 0x18);
struct S_JoinGame_XB_64 : S_JoinGameT_DC_PC<PlayerLobbyDataXB> {
uint8_t episode = 0;
parray<uint8_t, 3> unused;
parray<le_uint32_t, 6> unknown_a1;
uint8_t xb_enable_voice_chat = 1;
parray<uint8_t, 2> unused;
S_UnknownXBVoiceChatConfig unknown_a1;
} __packed_ws__(S_JoinGame_XB_64, 0x1D8);
struct S_JoinGame_BB_64 : S_JoinGameT_DC_PC<PlayerLobbyDataBB> {
uint8_t episode = 0;
uint8_t unused1 = 1;
uint8_t unused = 0; // Corresponds to xb_enable_voice_chat; unused on BB
uint8_t solo_mode = 0;
uint8_t unused2 = 0;
} __packed_ws__(S_JoinGame_BB_64, 0x1A0);
@@ -1322,7 +1332,10 @@ struct LobbyFlags {
// DCv2 and later, the game mode option is always present.
uint8_t enable_battle_mode_v1 = 1;
uint8_t event = 0;
uint8_t unused = 0;
// TODO: This is a partially-informed, but untested, guess based on
// disassembly of the Xbox client. It'd be nice if someone let me know if
// this is correct or not
uint8_t xb_enable_voice_chat = 1;
le_uint32_t random_seed = 0; // Unused for lobbies
} __packed_ws__(LobbyFlags, 0x0C);
@@ -1354,7 +1367,7 @@ check_struct_size(S_JoinLobby_BB_65_67_68, 0x3D8C);
struct S_JoinLobby_XB_65_67_68 {
LobbyFlags lobby_flags;
parray<le_uint32_t, 6> unknown_a4;
S_UnknownXBVoiceChatConfig unknown_a4;
struct Entry {
PlayerLobbyDataXB lobby_data;
PlayerInventory inventory;
-1
View File
@@ -2047,7 +2047,6 @@ void send_join_game(shared_ptr<Client> c, shared_ptr<Lobby> l) {
case Version::BB_V4: {
S_JoinGame_BB_64 cmd;
size_t player_count = populate_v3_cmd(cmd);
cmd.unused1 = 0;
cmd.solo_mode = (l->mode == GameMode::SOLO) ? 1 : 0;
cmd.unused2 = 0;
send_command_t(c, 0x64, player_count, cmd);