incompletely document challenge data
This commit is contained in:
+10
-2
@@ -1616,8 +1616,16 @@ struct S_ChoiceSearchResultEntry_GC_C4 {
|
||||
parray<uint8_t, 0x58> unused2;
|
||||
};
|
||||
|
||||
// C5 (S->C): Challenge rank update
|
||||
// TODO: Document format and usage for this command
|
||||
// C5 (S->C): Challenge rank update (GC/BB)
|
||||
// header.flag = entry count
|
||||
// The server sends this command when a player joins a lobby to update the
|
||||
// challenge mode records of all the present players.
|
||||
// Entry format is PlayerChallengeDataGC or PlayerChallengeDataBB.
|
||||
// newserv currently doesn't send this command at all because the GC and
|
||||
// BB formats aren't fully documented.
|
||||
// TODO: Figure out where the text is in those formats, write appropriate
|
||||
// conversion functions, and implement the command. Don't forget to override the
|
||||
// client_id field in each entry before sending.
|
||||
|
||||
// C6 (C->S): Set blocked senders list (GC/BB)
|
||||
|
||||
|
||||
+47
-9
@@ -14,7 +14,7 @@
|
||||
|
||||
|
||||
|
||||
struct ItemData {
|
||||
struct ItemData { // 0x14 bytes
|
||||
union {
|
||||
uint8_t data1[12];
|
||||
le_uint16_t data1w[6];
|
||||
@@ -34,7 +34,7 @@ struct ItemData {
|
||||
|
||||
struct PlayerBankItem;
|
||||
|
||||
struct PlayerInventoryItem {
|
||||
struct PlayerInventoryItem { // 0x1C bytes
|
||||
le_uint16_t equip_flags;
|
||||
le_uint16_t tech_flag;
|
||||
le_uint32_t game_flags;
|
||||
@@ -44,7 +44,7 @@ struct PlayerInventoryItem {
|
||||
PlayerInventoryItem(const PlayerBankItem&);
|
||||
} __attribute__((packed));
|
||||
|
||||
struct PlayerBankItem {
|
||||
struct PlayerBankItem { // 0x18 bytes
|
||||
ItemData data;
|
||||
le_uint16_t amount;
|
||||
le_uint16_t show_flags;
|
||||
@@ -53,7 +53,7 @@ struct PlayerBankItem {
|
||||
PlayerBankItem(const PlayerInventoryItem&);
|
||||
} __attribute__((packed));
|
||||
|
||||
struct PlayerInventory {
|
||||
struct PlayerInventory { // 0x34C bytes
|
||||
uint8_t num_items;
|
||||
uint8_t hp_materials_used;
|
||||
uint8_t tp_materials_used;
|
||||
@@ -65,7 +65,7 @@ struct PlayerInventory {
|
||||
size_t find_item(uint32_t item_id);
|
||||
} __attribute__((packed));
|
||||
|
||||
struct PlayerBank {
|
||||
struct PlayerBank { // 0xFA8 bytes
|
||||
le_uint32_t num_items;
|
||||
le_uint32_t meseta;
|
||||
PlayerBankItem items[200];
|
||||
@@ -86,7 +86,7 @@ struct PlayerBank {
|
||||
struct PlayerDispDataBB;
|
||||
|
||||
// PC/GC player appearance and stats data
|
||||
struct PlayerDispDataPCGC { // 0xD0 in size
|
||||
struct PlayerDispDataPCGC { // 0xD0 bytes
|
||||
PlayerStats stats;
|
||||
parray<uint8_t, 0x0A> unknown_a1;
|
||||
le_uint32_t level;
|
||||
@@ -289,6 +289,41 @@ struct PlayerLobbyDataBB {
|
||||
|
||||
|
||||
|
||||
struct PlayerChallengeDataGC {
|
||||
le_uint32_t client_id;
|
||||
struct {
|
||||
le_uint16_t unknown_a1;
|
||||
parray<uint8_t, 2> unknown_a2; // Possibly unused
|
||||
parray<le_uint32_t, 0x17> unknown_a3;
|
||||
struct {
|
||||
parray<uint8_t, 4> unknown_a1;
|
||||
le_uint16_t unknown_a2;
|
||||
parray<uint8_t, 2> unknown_a3;
|
||||
parray<le_uint32_t, 5> unknown_a4;
|
||||
parray<uint8_t, 0x34> unknown_a5;
|
||||
} __attribute__((packed)) unknown_a4;
|
||||
struct {
|
||||
parray<uint8_t, 4> unknown_a1;
|
||||
parray<le_uint32_t, 3> unknown_a2;
|
||||
} __attribute__((packed)) unknown_a5;
|
||||
struct UnknownPair {
|
||||
le_uint32_t unknown_a1;
|
||||
le_uint32_t unknown_a2;
|
||||
} __attribute__((packed));
|
||||
parray<UnknownPair, 3> unknown_a6;
|
||||
parray<uint8_t, 0x28> unknown_a7;
|
||||
} __attribute__((packed)) unknown_a1;
|
||||
parray<le_uint16_t, 8> unknown_a2;
|
||||
parray<le_uint32_t, 2> unknown_a3;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct PlayerChallengeDataBB {
|
||||
le_uint32_t client_id;
|
||||
parray<uint8_t, 0x158> unknown_a1;
|
||||
} __attribute__((packed));
|
||||
|
||||
|
||||
|
||||
struct PSOPlayerDataPC { // For command 61
|
||||
PlayerInventory inventory;
|
||||
PlayerDispDataPCGC disp;
|
||||
@@ -297,7 +332,8 @@ struct PSOPlayerDataPC { // For command 61
|
||||
struct PSOPlayerDataGC { // For command 61
|
||||
PlayerInventory inventory;
|
||||
PlayerDispDataPCGC disp;
|
||||
parray<uint8_t, 0x134> unknown;
|
||||
PlayerChallengeDataGC challenge_data;
|
||||
parray<uint8_t, 0x18> unknown;
|
||||
ptext<char, 0xAC> info_board;
|
||||
parray<le_uint32_t, 0x1E> blocked_senders;
|
||||
le_uint32_t auto_reply_enabled;
|
||||
@@ -307,7 +343,8 @@ struct PSOPlayerDataGC { // For command 61
|
||||
struct PSOPlayerDataGCEp3 { // For command 61
|
||||
PlayerInventory inventory;
|
||||
PlayerDispDataPCGC disp;
|
||||
parray<uint8_t, 0x134> unknown;
|
||||
PlayerChallengeDataGC challenge_data;
|
||||
parray<uint8_t, 0x18> unknown;
|
||||
ptext<char, 0xAC> info_board;
|
||||
parray<le_uint32_t, 0x1E> blocked_senders;
|
||||
le_uint32_t auto_reply_enabled;
|
||||
@@ -318,7 +355,8 @@ struct PSOPlayerDataGCEp3 { // For command 61
|
||||
struct PSOPlayerDataBB { // For command 61
|
||||
PlayerInventory inventory;
|
||||
PlayerDispDataBB disp;
|
||||
ptext<char, 0x174> unused;
|
||||
PlayerChallengeDataBB challenge_data;
|
||||
parray<uint8_t, 0x18> unknown;
|
||||
ptext<char16_t, 0xAC> info_board;
|
||||
parray<le_uint32_t, 0x1E> blocked_senders;
|
||||
le_uint32_t auto_reply_enabled;
|
||||
|
||||
Reference in New Issue
Block a user