Protocol:Packet 0x60: Difference between revisions
→Subcommands: Add subcommands 0x3E, 0x40, 0x42. |
→Subcommands: Add subcommands 0x3F and 0x55 |
||
Line 31: | Line 31: | ||
==Subcommands== | ==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). | 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). Note that many of these, I don't know exactly how they work or how to fill them in... | ||
===Subcommand 0x2C=== | ===Subcommand 0x2C=== | ||
Line 72: | Line 72: | ||
|- | |- | ||
| 0x10-0x13 || Location? | | 0x10-0x13 || Location? | ||
|} | |||
===Subcommand 0x3F=== | |||
Subcommand 0x3F (size 0x06) seems to be used to tell other clients that someone is not moving after warping, or something like that (triggered when going into the principal warp or after talking to the medical center, for instance). Seems to be used a lot of the time nearby a bunch of subcommand 0x55 packets. | |||
{| border="1" | |||
|- | |||
! Bytes !! Meaning | |||
|- | |||
| 0x00-0x01 || Always seems to be 0? | |||
|- | |||
| 0x02-0x03 || ??? (when near a subcommand 0x55, matches with bytes 0x00-0x01 in that?) | |||
|- | |||
| 0x04-0x07 || Always seems to be 0 | |||
|- | |||
| 0x08-0x0B || ??? (when near a subcommand 0x55, matches with bytes 0x10-0x13 in that?) | |||
|- | |||
| 0x0C-0x0F || ??? | |||
|- | |||
| 0x10-0x13 || ??? (when near a subcommand 0x55, matches with bytes 0x18-0x1B in that?) | |||
|} | |} | ||
Line 105: | Line 125: | ||
|- | |- | ||
| 0x04-0x07 || Location? (Matches fairly well with bytes from packets nearby) | | 0x04-0x07 || Location? (Matches fairly well with bytes from packets nearby) | ||
|} | |||
===Subcommand 0x55=== | |||
Subcommand 0x55 (size 0x08) is used to tell clients that someone has warped (maybe?). Several of these seem to be sent at a time (at least when going into and out of the principal's warp). | |||
{| border="1" | |||
! Bytes !! Meaning | |||
|- | |||
| 0x00-0x01 || ??? (Matches with nearby subcommand 0x3F's bytes 0x02-0x03) | |||
|- | |||
| 0x02-0x03 || Always seems to be 0? | |||
|- | |||
| 0x04-0x07 || ??? | |||
|- | |||
| 0x08-0x0B || ??? | |||
|- | |||
| 0x0C-0x0F || ??? | |||
|- | |||
| 0x10-0x13 || ??? (Matches with nearby subcommand 0x3F's bytes 0x08-0x0B) | |||
|- | |||
| 0x14-0x17 || Seems to be 0 | |||
|- | |||
| 0x18-0x1B || ??? (Matches with nearby subcommand 0x3F's bytes 0x10-0x13) | |||
|} | |} | ||
Revision as of 04:42, 14 November 2010
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). Note that many of these, I don't know exactly how they work or how to fill them in...
Subcommand 0x2C
Subcommand 0x2C (size 0x05) 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 (size 0x01) 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 0x3E
Subcommand 0x3E (size 0x06) is used to tell other clients that someone has stopped moving.
Bytes | Meaning |
---|---|
0x00-0x01 | ??? (Always seems to be 0) |
0x02-0x03 | ??? |
0x04-0x07 | Always seems to be 0 |
0x08-0x0B | Location? |
0x0C-0x0F | Always seems to be 0 |
0x10-0x13 | Location? |
Subcommand 0x3F
Subcommand 0x3F (size 0x06) seems to be used to tell other clients that someone is not moving after warping, or something like that (triggered when going into the principal warp or after talking to the medical center, for instance). Seems to be used a lot of the time nearby a bunch of subcommand 0x55 packets.
Bytes | Meaning |
---|---|
0x00-0x01 | Always seems to be 0? |
0x02-0x03 | ??? (when near a subcommand 0x55, matches with bytes 0x00-0x01 in that?) |
0x04-0x07 | Always seems to be 0 |
0x08-0x0B | ??? (when near a subcommand 0x55, matches with bytes 0x10-0x13 in that?) |
0x0C-0x0F | ??? |
0x10-0x13 | ??? (when near a subcommand 0x55, matches with bytes 0x18-0x1B in that?) |
Subcommand 0x40
Subcommand 0x40 (size 0x04) is used to tell other clients that someone has started moving (or is moving slowly?).
Bytes | Meaning |
---|---|
0x00-0x07 | ??? (Maybe location and heading?) |
0x08-0x0B | Padding? (Always seems to be 0) |
Subcommand 0x42
Subcommand 0x42 (size 0x03) is used to tell other clients that someone is moving (quickly?).
Bytes | Meaning |
---|---|
0x00-0x03 | Location? |
0x04-0x07 | Location? |
Subcommand 0x52
Subcommand 0x52 (size 0x03) 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 0x55
Subcommand 0x55 (size 0x08) is used to tell clients that someone has warped (maybe?). Several of these seem to be sent at a time (at least when going into and out of the principal's warp).
Bytes | Meaning |
---|---|
0x00-0x01 | ??? (Matches with nearby subcommand 0x3F's bytes 0x02-0x03) |
0x02-0x03 | Always seems to be 0? |
0x04-0x07 | ??? |
0x08-0x0B | ??? |
0x0C-0x0F | ??? |
0x10-0x13 | ??? (Matches with nearby subcommand 0x3F's bytes 0x08-0x0B) |
0x14-0x17 | Seems to be 0 |
0x18-0x1B | ??? (Matches with nearby subcommand 0x3F's bytes 0x10-0x13) |
Subcommand 0x5F
Subcommand 0x5F (size 0x0B) 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) |