Protocol:Packet 0x07
Appearance
The server sends Packets 0x07 and 0xA0 to communicate either a ship or block list to the client. The Sylverant Login Server always sends Packet 0x07 for the purpose of communicating the ship list, but the Ship Server uses 0xA0 for this purpose. This seems to be how other PSO servers implement the functionality, so I went for uniformity (either packet will probably work in either situation). Block lists (only communicated by the Ship Server) always use type 0x07.
Dreamcast Packet Format
Bytes | Meaning |
---|---|
0x00 | Packet Type (0x07 or 0xA0) |
0x01 | Flags (Number of Entries) |
0x02-0x03 | Packet Size (Variable) |
0x04... | Ship/Block Information (see below for format) |
The ship information field is populated as follows (offsets are relative):
Bytes | Meaning |
---|---|
0x00-0x03 | Menu ID (0x00000005 on Sylverant) |
0x04-0x07 | Item ID (The item in the list) |
0x08-0x09 | Flags (0x0004 for the phantom ship entry, 0x0000 for all others) |
0x0A-0x1B | Ship/Block Name |
In addition, for a ship select there is always a phantom ship in front of the list that is populated as follows:
Menu ID | 0x00000005 |
Item ID | 0x00000000 |
Flags | 0x0004 (make invisible?) |
Ship/Block Name | "DATABASE/JP" (and set the last byte of the field to 0x08) |
For a block select, the phantom entry is as follows:
Menu ID | 0x00000001 |
Item ID | 0x00000000 |
Flags | 0x0000 |
Ship/Block Name | The name of the Ship (with the second to last byte set to 0x08) |