Packet 0x88

There are two vastly different packets with type 0x88. The most common use is from all versions of PSO after PSOv1.

PSO Network Trial Edition (Dreamcast)

In the Network Trial Edition of PSO for the Dreamcast, the client sends Packet 0x88 to log on initially to the login server. This is the first packet sent in response to Packet 0x17. The client then expects the server to respond with its own Packet 0x88. Note that the Network Trial Edition of PSO shares a bug with the Japanese release of PSOv1 where packets can be sizes that are not multiples of 4. This is one such example. The server is expected to pad the packet -- the client only sends 0x26 bytes.

Dreamcast NTE Packet Format (Client -> Server)

BytesMeaning
0x00Packet Type (0x88)
0x01Unused
0x02-0x03Packet Size (0x0026)
0x04-0x13Serial Number
0x14NUL terminator for Serial Number (0x00)
0x15-0x24Access Key
0x25NUL terminator for Access Key (0x00)

Dreamcast NTE Packet Format (Server -> Client)

BytesMeaning
0x00Packet Type (0x88)
0x01Response Code
0x02-0x03Packet Size (0x0004)

A zero response code means that the client is not recognized by the server, causing it to send Packet 0x8A in response. A non-zero response code means that the client is recognized by the server, causing it to send Packet 0x8B in response.

PSOv2 and later

For PSOv2 and later, the server sends out Packet 0x88 to clients to inform them of the colors of arrows of all players in the lobby. This is typically brought on when a client sends a Packet 0x89 to the server to change their arrow color, but is also sent when a client initially joins if anyone has arrows above their heads.

If this packet is sent while a player is loading into a lobby, some versions of PSO will ignore it, so the server must wait a couple of seconds before sending this packet to a player who just entered a lobby.

Dreamcast Packet Format

BytesMeaning
0x00Packet Type (0x88)
0x01Flags (Number of entries)
0x02-0x03Packet Size (Variable)
0x04...Arrow entries (see below for format)

Arrow color entry format

BytesMeaning
0x00-0x03Player Tag (0x00010000)
0x04-0x07Player Guildcard Number
0x08Player Arrow Color
0x09-0x0BPadding (all zeroes)