Jump to content

Protocol:Packet 0x60

From Sylverant Wiki
Revision as of 04:11, 14 November 2010 by BlueCrab (talk | contribs) (Dreamcast: Clarify the subcommand size part.)

Clients send Packet 0x60 to the server to forward a "game command" to all clients in the lobby. This is used for various things in game, including telling clients what items are dropped when a box is opened (clients "ask" the party leader what should be dropped with a form of Packet 0x62 and the party leader replies with a Subcommand 0x5F).

PSO v3 (GameCube, Xbox, Blue Burst) sometimes uses packet 0x6C, which has exactly the same format and function as 0x60.

PSO Episode 3 sometimes uses packets 0xC9 and 0xCB in games, which also behave exactly like 0x60. Sending an 0xC9 or 0xCB to a non-Episode 3 client would cause that client to disconnect.

Main Packet Format

Dreamcast

Bytes Meaning
0x00 Packet Type (0x60 or 0x6C)
0x01 Flags
0x02-0x03 Packet Size (Variable)
0x04 Subcommand Type
0x05 Subcommand Size (in 32-bit increments, not including the main packet header, but including everything Subcommand type and later)
0x06 Client ID of initiating client
0x07 Unused?
0x08... Subcommand Data

Subcommands

Various subcommands are sent with this packet, and this is not necessarily meant to be an exhaustive list of them (although, I'd love it if it were eventually).

Subcommand 0x2C

Subcommand 0x2C is used to tell other clients that someone is talking to an NPC.

Bytes Meaning
0x00-0x01 ??? (Always seems to be 0xFFFF)
0x02-0x03 ??? (Always seems to be 0)
0x04-0x07 Location ? (Matches up with stuff from packets nearby)
0x08-0x0B Location ? (Once again, matches up nicely)
0x0C-0x0F Padding? (Always seems to be 0)

Subcommand 0x2D

Subcommand 0x2D is used to tell other clients that someone has finished talking to an NPC. It contains no data of its own, beyond the normal header.

Subcommand 0x52

Subcommand 0x52 is used to tell other clients that someone is talking to a person at a desk of some sort or has just finished talking to the desk.

Bytes Meaning
0x00-0x03 ??? (Always seems to be 0x000000A0)
0x04-0x07 Location? (Matches fairly well with bytes from packets nearby)

Subcommand 0x5F

Subcommand 0x5F is used to tell clients what item dropped from an opened box.

Bytes Meaning
0x00 Area of the Drop
0x01 What kind of thing are we asking about?
0x02-0x03 Request ID (might only be one byte)
0x04-0x07 X Coordinate
0x08-0x0B Y Coordinate
0x0C-0x0F Unknown (0x00000010 works)
0x10-0x1B Item Code (first 3 32-bit values)
0x1C-0x1F Unknown -- (request_id | 0x06010100) seems to work
0x20-0x23 Item Code (last 32-bit value)
0x24-0x27 Unknown (0x00000002)