add explanation of game command header

This commit is contained in:
Martin Michelsen
2022-10-05 00:30:57 -07:00
parent e14a4f83db
commit d9413b3559
+17
View File
@@ -2840,6 +2840,23 @@ struct S_Unknown_BB_F0 {
// by clients and consumed by clients. Generally in newserv source, these
// commands are referred to as (for example) 6x02, etc.
// All game subcommands have the same header format, which is one of:
// - XX SS ...
// - XX 00 ?? ?? TT TT TT TT ...
// where X is the subcommand number (e.g. in 6xA2, it would be A2), S is the
// size in words of the entire subcommand (that is, overall size in bytes / 4),
// and T is the overall size in bytes. The second form is generally only used
// when the overall size in bytes is 0x400 or longer (so the S field doesn't
// suffice to describe its length), but it may also be used in some cases where
// the subcommand is shorter.
// Multiple subcommands may be sent in the same 6x command. It seems the client
// never sends commands like this, but newserv generates commands containing
// multiple subcommands in some situations (for example, the implementation of
// infinite HP does this).
// If any subcommand or group thereof is longer than 0x400 bytes, the 6C or 6D
// commands must be used. The 60 and 62 commands exhibit undefined behavior if
// this limit is exceeded.
// These structures are used by many commands (noted below)
struct G_ItemSubcommand {
uint8_t command;