<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://sylverant.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fuzziqersoftware</id>
	<title>Sylverant Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://sylverant.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fuzziqersoftware"/>
	<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Special:Contributions/Fuzziqersoftware"/>
	<updated>2026-04-16T14:06:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Protocol:Character_Data&amp;diff=115</id>
		<title>Protocol:Character Data</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Protocol:Character_Data&amp;diff=115"/>
		<updated>2010-01-12T05:17:47Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since I&#039;m lazy, and don&#039;t feel like doing this the hard way, this is how Sylverant declares character data for PSODC and PSOPC (the relevant struct here is player_t):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/*&lt;br /&gt;
    Sylverant Ship Server&lt;br /&gt;
    Copyright (C) 2009 Lawrence Sebald&lt;br /&gt;
&lt;br /&gt;
    This program is free software: you can redistribute it and/or modify&lt;br /&gt;
    it under the terms of the GNU General Public License version 3 as&lt;br /&gt;
    published by the Free Software Foundation.&lt;br /&gt;
&lt;br /&gt;
    This program is distributed in the hope that it will be useful,&lt;br /&gt;
    but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
    GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
    You should have received a copy of the GNU General Public License&lt;br /&gt;
    along with this program.  If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
#ifndef PLAYER_H&lt;br /&gt;
#define PLAYER_H&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;inttypes.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#ifdef PACKED&lt;br /&gt;
#undef PACKED&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
#define PACKED __attribute__((packed))&lt;br /&gt;
&lt;br /&gt;
/* The header attached before the player data when sending to a lobby client. */&lt;br /&gt;
typedef struct dc_player_hdr {&lt;br /&gt;
    uint32_t tag;&lt;br /&gt;
    uint32_t guildcard;&lt;br /&gt;
    uint32_t ip_addr;&lt;br /&gt;
    uint32_t client_id;&lt;br /&gt;
    char name[16];&lt;br /&gt;
} PACKED dc_player_hdr_t;&lt;br /&gt;
&lt;br /&gt;
typedef struct pc_player_hdr {&lt;br /&gt;
    uint32_t tag;&lt;br /&gt;
    uint32_t guildcard;&lt;br /&gt;
    uint32_t ip_addr;&lt;br /&gt;
    uint32_t client_id;&lt;br /&gt;
    uint16_t name[16];&lt;br /&gt;
} PACKED pc_player_hdr_t;&lt;br /&gt;
&lt;br /&gt;
/* These structures heavily based on those in newserv. */&lt;br /&gt;
typedef struct item {&lt;br /&gt;
    uint16_t equipped;&lt;br /&gt;
    uint16_t tech;&lt;br /&gt;
    uint32_t flags;&lt;br /&gt;
&lt;br /&gt;
    union {&lt;br /&gt;
        uint8_t data_b[12];&lt;br /&gt;
        uint16_t data_w[6];&lt;br /&gt;
        uint32_t data_l[3];&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    uint32_t item_id;&lt;br /&gt;
&lt;br /&gt;
    union {&lt;br /&gt;
        uint8_t data2_b[4];&lt;br /&gt;
        uint16_t data2_w[2];&lt;br /&gt;
        uint32_t data2_l;&lt;br /&gt;
    };&lt;br /&gt;
} PACKED item_t;&lt;br /&gt;
&lt;br /&gt;
typedef struct inventory {&lt;br /&gt;
    uint8_t item_count;&lt;br /&gt;
    uint8_t hpmats_used;&lt;br /&gt;
    uint8_t tpmats_used;&lt;br /&gt;
    uint8_t language;&lt;br /&gt;
    item_t items[30];&lt;br /&gt;
} PACKED inventory_t;&lt;br /&gt;
&lt;br /&gt;
typedef struct player {&lt;br /&gt;
    inventory_t inv;&lt;br /&gt;
    uint16_t atp;&lt;br /&gt;
    uint16_t mst;&lt;br /&gt;
    uint16_t evp;&lt;br /&gt;
    uint16_t hp;&lt;br /&gt;
    uint16_t dfp;&lt;br /&gt;
    uint16_t ata;&lt;br /&gt;
    uint16_t lck;&lt;br /&gt;
    uint16_t unk1;&lt;br /&gt;
    uint32_t unk2[2];&lt;br /&gt;
    uint32_t level;&lt;br /&gt;
    uint32_t exp;&lt;br /&gt;
    uint32_t meseta;&lt;br /&gt;
    char name[16];&lt;br /&gt;
    uint32_t unk3[2];&lt;br /&gt;
    uint32_t name_color;&lt;br /&gt;
    uint8_t model;&lt;br /&gt;
    uint8_t unused[15];&lt;br /&gt;
    uint32_t name_color_checksum;&lt;br /&gt;
    uint8_t section;&lt;br /&gt;
    uint8_t ch_class;&lt;br /&gt;
    uint8_t v2flags;&lt;br /&gt;
    uint8_t version;&lt;br /&gt;
    uint32_t v1flags;&lt;br /&gt;
    uint16_t costume;&lt;br /&gt;
    uint16_t skin;&lt;br /&gt;
    uint16_t face;&lt;br /&gt;
    uint16_t head;&lt;br /&gt;
    uint16_t hair;&lt;br /&gt;
    uint16_t hair_r;&lt;br /&gt;
    uint16_t hair_g;&lt;br /&gt;
    uint16_t hair_b;&lt;br /&gt;
    float prop_x;&lt;br /&gt;
    float prop_y;&lt;br /&gt;
    uint8_t config[0x48];&lt;br /&gt;
    uint8_t techniques[0x14];&lt;br /&gt;
} PACKED player_t;&lt;br /&gt;
&lt;br /&gt;
#undef PACKED&lt;br /&gt;
&lt;br /&gt;
#endif /* !PLAYER_H */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following is newserv&#039;s definition of PSOGC and PSOBB player data (from player.h):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;// in this segment:&lt;br /&gt;
// PLAYER_ITEM is the same as item_t&lt;br /&gt;
// PLAYER_INVENTORY is the same as inventory_t&lt;br /&gt;
// ITEM_DATA is the same as item_t without the first three fields&lt;br /&gt;
&lt;br /&gt;
// an item in a player&#039;s bank (BB)&lt;br /&gt;
typedef struct {&lt;br /&gt;
    ITEM_DATA data;&lt;br /&gt;
    WORD amount;&lt;br /&gt;
    WORD showflags; } PLAYER_BANK_ITEM;&lt;br /&gt;
&lt;br /&gt;
// a player&#039;s bank (BB)&lt;br /&gt;
typedef struct {&lt;br /&gt;
    DWORD numItems;&lt;br /&gt;
    DWORD meseta;&lt;br /&gt;
    PLAYER_BANK_ITEM items[200]; } PLAYER_BANK;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// simple player stats (kept in a separate struct in order to facilitate leveling up for BB players)&lt;br /&gt;
typedef struct {&lt;br /&gt;
    WORD atp;&lt;br /&gt;
    WORD mst;&lt;br /&gt;
    WORD evp;&lt;br /&gt;
    WORD hp;&lt;br /&gt;
    WORD dfp;&lt;br /&gt;
    WORD ata;&lt;br /&gt;
    WORD lck; } PLAYER_STATS;&lt;br /&gt;
&lt;br /&gt;
// PC/GC player appearance and stats data&lt;br /&gt;
typedef struct {&lt;br /&gt;
    PLAYER_STATS stats;&lt;br /&gt;
    WORD unknown1;&lt;br /&gt;
    DWORD unknown2[2];&lt;br /&gt;
    DWORD level;&lt;br /&gt;
    DWORD exp;&lt;br /&gt;
    DWORD meseta;&lt;br /&gt;
    char playername[16];&lt;br /&gt;
    DWORD unknown3[2];&lt;br /&gt;
    DWORD nameColor;&lt;br /&gt;
    BYTE extraModel;&lt;br /&gt;
    BYTE unused[15];&lt;br /&gt;
    DWORD nameColorChecksum;&lt;br /&gt;
    BYTE sectionID;&lt;br /&gt;
    BYTE charClass;&lt;br /&gt;
    BYTE v2flags;&lt;br /&gt;
    BYTE version;&lt;br /&gt;
    DWORD v1flags;&lt;br /&gt;
    WORD costume;&lt;br /&gt;
    WORD skin;&lt;br /&gt;
    WORD face;&lt;br /&gt;
    WORD head;&lt;br /&gt;
    WORD hair;&lt;br /&gt;
    WORD hairRed;&lt;br /&gt;
    WORD hairGreen;&lt;br /&gt;
    WORD hairBlue;&lt;br /&gt;
    float propX;&lt;br /&gt;
    float propY;&lt;br /&gt;
    BYTE config[0x48];&lt;br /&gt;
    BYTE techLevels[0x14]; } PCGC_PLAYER_DISPDATA; // 0xD0 in size &lt;br /&gt;
&lt;br /&gt;
// BB player appearance and stats data&lt;br /&gt;
typedef struct {&lt;br /&gt;
    PLAYER_STATS stats;&lt;br /&gt;
    WORD unknown1;&lt;br /&gt;
    DWORD unknown2[2];&lt;br /&gt;
    DWORD level;&lt;br /&gt;
    DWORD exp;&lt;br /&gt;
    DWORD meseta;&lt;br /&gt;
    char guildcard[16];&lt;br /&gt;
    DWORD unknown3[2];&lt;br /&gt;
    DWORD nameColor;&lt;br /&gt;
    BYTE extraModel;&lt;br /&gt;
    BYTE unused[11];&lt;br /&gt;
    DWORD playTime; // not actually a game field; used only by newserv&lt;br /&gt;
    DWORD nameColorChecksum;&lt;br /&gt;
    BYTE sectionID;&lt;br /&gt;
    BYTE charClass;&lt;br /&gt;
    BYTE v2flags;&lt;br /&gt;
    BYTE version;&lt;br /&gt;
    DWORD v1flags;&lt;br /&gt;
    WORD costume;&lt;br /&gt;
    WORD skin;&lt;br /&gt;
    WORD face;&lt;br /&gt;
    WORD head;&lt;br /&gt;
    WORD hair;&lt;br /&gt;
    WORD hairRed;&lt;br /&gt;
    WORD hairGreen;&lt;br /&gt;
    WORD hairBlue;&lt;br /&gt;
    float propX;&lt;br /&gt;
    float propY;&lt;br /&gt;
    wchar_t playername[16];&lt;br /&gt;
    BYTE config[0xE8];&lt;br /&gt;
    BYTE techLevels[0x14];&lt;br /&gt;
} BB_PLAYER_DISPDATA;&lt;br /&gt;
&lt;br /&gt;
// BB player preview format&lt;br /&gt;
typedef struct {&lt;br /&gt;
    DWORD exp;&lt;br /&gt;
    DWORD level;&lt;br /&gt;
    char guildcard[16];&lt;br /&gt;
    DWORD unknown3[2];&lt;br /&gt;
    DWORD nameColor;&lt;br /&gt;
    BYTE extraModel;&lt;br /&gt;
    BYTE unused[15];&lt;br /&gt;
    DWORD nameColorChecksum;&lt;br /&gt;
    BYTE sectionID;&lt;br /&gt;
    BYTE charClass;&lt;br /&gt;
    BYTE v2flags;&lt;br /&gt;
    BYTE version;&lt;br /&gt;
    DWORD v1flags;&lt;br /&gt;
    WORD costume;&lt;br /&gt;
    WORD skin;&lt;br /&gt;
    WORD face;&lt;br /&gt;
    WORD head;&lt;br /&gt;
    WORD hair;&lt;br /&gt;
    WORD hairRed;&lt;br /&gt;
    WORD hairGreen;&lt;br /&gt;
    WORD hairBlue;&lt;br /&gt;
    float propX;&lt;br /&gt;
    float propY;&lt;br /&gt;
    wchar_t playername[16];&lt;br /&gt;
    DWORD playTime;&lt;br /&gt;
} BB_PLAYER_DISPDATA_PREVIEW;&lt;br /&gt;
&lt;br /&gt;
// complete BB player data format (used in E7 command)&lt;br /&gt;
typedef struct {&lt;br /&gt;
    PLAYER_INVENTORY inventory;      // 0000 // player&lt;br /&gt;
    BB_PLAYER_DISPDATA disp;         // 034C // player&lt;br /&gt;
    BYTE unknown[0x0010];            // 04DC //&lt;br /&gt;
    DWORD optionFlags;               // 04EC // account&lt;br /&gt;
    BYTE questData1[0x0208];         // 04F0 // player&lt;br /&gt;
    PLAYER_BANK bank;                // 06F8 // player&lt;br /&gt;
    DWORD serialNumber;              // 19C0 // player&lt;br /&gt;
    wchar_t name[0x18];              // 19C4 // player&lt;br /&gt;
    wchar_t teamname[0x10];          // 19C4 // player&lt;br /&gt;
    wchar_t guildcarddesc[0x58];     // 1A14 // player&lt;br /&gt;
    BYTE reserved1;                  // 1AC4 // player&lt;br /&gt;
    BYTE reserved2;                  // 1AC5 // player&lt;br /&gt;
    BYTE sectionID;                  // 1AC6 // player&lt;br /&gt;
    BYTE charClass;                  // 1AC7 // player&lt;br /&gt;
    DWORD unknown3;                  // 1AC8 //&lt;br /&gt;
    BYTE symbolchats[0x04E0];        // 1ACC // account&lt;br /&gt;
    BYTE shortcuts[0x0A40];          // 1FAC // account&lt;br /&gt;
    wchar_t autoreply[0x00AC];       // 29EC // player&lt;br /&gt;
    wchar_t infoboard[0x00AC];       // 2B44 // player&lt;br /&gt;
    BYTE unknown5[0x001C];           // 2C9C //&lt;br /&gt;
    BYTE challengeData[0x0140];      // 2CB8 // player&lt;br /&gt;
    BYTE techMenuConfig[0x0028];     // 2DF8 // player&lt;br /&gt;
    BYTE unknown6[0x002C];           // 2E20 //&lt;br /&gt;
    BYTE questData2[0x0058];         // 2E4C // player&lt;br /&gt;
    BB_KEY_TEAM_CONFIG keyConfig;    // 2EA4 // account&lt;br /&gt;
} BB_COMPLETE_PLAYER_DATA_FORMAT;    // total size: 39A0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Protocol:Packet_0xDA&amp;diff=114</id>
		<title>Protocol:Packet 0xDA</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Protocol:Packet_0xDA&amp;diff=114"/>
		<updated>2010-01-12T05:06:17Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: Created page with &amp;#039;The server sends Packet 0xDA to change the holiday theme of the current lobby.  ==Dreamcast Packet Format== {| border=&amp;quot;1&amp;quot; ! Bytes !! Meaning |- | 0x00 || Packet Type (0xDA) |- | …&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The server sends Packet 0xDA to change the holiday theme of the current lobby.&lt;br /&gt;
&lt;br /&gt;
==Dreamcast Packet Format==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Packet Type (0xDA)&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Flags (Event ID; see below)&lt;br /&gt;
|-&lt;br /&gt;
| 0x02-0x03 || Packet Size (0x0004)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Value !! Event&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || No event&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Christmas&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || No event (on PSO v3; may exist on PSO v1/v2)&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 || Valentine&#039;s Day&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Easter&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Halloween&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || Sonic&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 || New Year&#039;s Day&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Spring&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 || White Day&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || Wedding&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B || Autumn&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Summer (with striped background)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0D || Spring (with striped background)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E || Summer&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Protocol:Packet_0x62&amp;diff=113</id>
		<title>Protocol:Packet 0x62</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Protocol:Packet_0x62&amp;diff=113"/>
		<updated>2010-01-12T05:01:26Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
Clients send Packet 0x62 to the server to forward a &amp;quot;game command&amp;quot; to another client. This is used for various things in game, including requesting drops (clients &amp;quot;ask&amp;quot; the party leader what should be dropped).&lt;br /&gt;
&lt;br /&gt;
PSO v3 (GameCube, Xbox, Blue Burst) sometimes uses packet 0x6D, which has exactly the same format and function as 0x62.&lt;br /&gt;
&lt;br /&gt;
==Main Packet Format==&lt;br /&gt;
===Dreamcast===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Packet Type (0x62 or 0x6D)&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Flags (destination client ID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x02-0x03 || Packet Size (Variable)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Subcommand Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Subcommand Size (in 32-bit increments)&lt;br /&gt;
|-&lt;br /&gt;
| 0x06-0x07 || Unused?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08... || Subcommand Data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Subcommands==&lt;br /&gt;
Various subcommands are sent with this packet, and this is not necessarily meant to be an exhaustive list of them (although, I&#039;d love it if it were eventually).&lt;br /&gt;
&lt;br /&gt;
===Subcommand 0x06===&lt;br /&gt;
Subcommand 0x06 is used to send a client&#039;s Guildcard to another client.&lt;br /&gt;
&lt;br /&gt;
====Dreamcast====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00-0x03 || Player Tag (0x00010000)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04-0x07 || Guildcard Number&lt;br /&gt;
|-&lt;br /&gt;
| 0x08-0x1F || Player Name&lt;br /&gt;
|-&lt;br /&gt;
| 0x20-0x77 || Guildcard Text&lt;br /&gt;
|-&lt;br /&gt;
| 0x78 || Unused&lt;br /&gt;
|-&lt;br /&gt;
| 0x79-0x7A || ??? (both set to 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x7B || Section ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C || Character Class&lt;br /&gt;
|-&lt;br /&gt;
| 0x7D-0x7F || Padding (all zeroes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Subcommand 0x60===&lt;br /&gt;
Subcommand 0x60 is used to request a item drop from the party leader. It is used when a box is opened (I haven&#039;t looked at what is sent when an enemy is killed yet, sorry).&lt;br /&gt;
&lt;br /&gt;
====Dreamcast====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Map Area&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || ??? (seems to always be 0x02 for boxes)&lt;br /&gt;
|-&lt;br /&gt;
| 0x02-0x03 || Request ID (might only be one byte, not sure)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04-0x07 || Map X Position&lt;br /&gt;
|-&lt;br /&gt;
| 0x08-0x0B || Map Y Position&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C-0x13 || ???&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Protocol:Packet_0x60&amp;diff=112</id>
		<title>Protocol:Packet 0x60</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Protocol:Packet_0x60&amp;diff=112"/>
		<updated>2010-01-12T05:01:09Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
Clients send Packet 0x60 to the server to forward a &amp;quot;game command&amp;quot; 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 &amp;quot;ask&amp;quot; the party leader what should be dropped with a form of [[Packet 0x62#Subcommand 0x60|Packet 0x62]] and the party leader replies with a [[Packet 0x60#Subcommand 0x5F|Subcommand 0x5F]]).&lt;br /&gt;
&lt;br /&gt;
PSO v3 (GameCube, Xbox, Blue Burst) sometimes uses packet 0x6C, which has exactly the same format and function as 0x60.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Main Packet Format==&lt;br /&gt;
===Dreamcast===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Packet Type (0x60 or 0x6C)&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Flags&lt;br /&gt;
|-&lt;br /&gt;
| 0x02-0x03 || Packet Size (Variable)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Subcommand Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Subcommand Size (in 32-bit increments)&lt;br /&gt;
|-&lt;br /&gt;
| 0x06-0x07 || Unused?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08... || Subcommand Data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Subcommands==&lt;br /&gt;
Various subcommands are sent with this packet, and this is not necessarily meant to be an exhaustive list of them (although, I&#039;d love it if it were eventually).&lt;br /&gt;
&lt;br /&gt;
===Subcommand 0x5F===&lt;br /&gt;
Subcommand 0x5F is used to tell clients what item dropped from an opened box.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Area of the Drop&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || What kind of thing are we asking about?&lt;br /&gt;
|-&lt;br /&gt;
| 0x02-0x03 || Request ID (might only be one byte)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04-0x07 || X Coordinate&lt;br /&gt;
|-&lt;br /&gt;
| 0x08-0x0B || Y Coordinate&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C-0x0F || Unknown (0x00000010 works)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10-0x1B || Item Code (first 3 32-bit values)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C-0x1F || Unknown ((request_id | 0x06010100) seems to work)&lt;br /&gt;
|-&lt;br /&gt;
| 0x20-0x23 || Item Code (last 32-bit value)&lt;br /&gt;
|-&lt;br /&gt;
| 0x24-0x27 || Unknown (0x00000002)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Packet_0xCB&amp;diff=111</id>
		<title>Packet 0xCB</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Packet_0xCB&amp;diff=111"/>
		<updated>2010-01-12T04:59:41Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: Redirected page to Packet 0x60&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Packet 0x60]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Packet_0xC9&amp;diff=110</id>
		<title>Packet 0xC9</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Packet_0xC9&amp;diff=110"/>
		<updated>2010-01-12T04:59:29Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: Redirected page to Packet 0x60&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Packet 0x60]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Protocol:Packet_0x60&amp;diff=109</id>
		<title>Protocol:Packet 0x60</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Protocol:Packet_0x60&amp;diff=109"/>
		<updated>2010-01-12T04:58:42Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
Clients send Packet 0x60 to the server to forward a &amp;quot;game command&amp;quot; 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 &amp;quot;ask&amp;quot; the party leader what should be dropped with a form of [[Packet 0x62#Subcommand 0x60|Packet 0x62]] and the party leader replies with a [[Packet 0x60#Subcommand 0x5F|Subcommand 0x5F]]).&lt;br /&gt;
&lt;br /&gt;
PSO v3 (GameCube, Xbox, Blue Burst) sometimes used packet 0x6C, which has exactly the same format and function as 0x60.&lt;br /&gt;
&lt;br /&gt;
==Main Packet Format==&lt;br /&gt;
===Dreamcast===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Packet Type (0x60 or 0x6C)&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Flags&lt;br /&gt;
|-&lt;br /&gt;
| 0x02-0x03 || Packet Size (Variable)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Subcommand Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Subcommand Size (in 32-bit increments)&lt;br /&gt;
|-&lt;br /&gt;
| 0x06-0x07 || Unused?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08... || Subcommand Data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Subcommands==&lt;br /&gt;
Various subcommands are sent with this packet, and this is not necessarily meant to be an exhaustive list of them (although, I&#039;d love it if it were eventually).&lt;br /&gt;
&lt;br /&gt;
===Subcommand 0x5F===&lt;br /&gt;
Subcommand 0x5F is used to tell clients what item dropped from an opened box.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Area of the Drop&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || What kind of thing are we asking about?&lt;br /&gt;
|-&lt;br /&gt;
| 0x02-0x03 || Request ID (might only be one byte)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04-0x07 || X Coordinate&lt;br /&gt;
|-&lt;br /&gt;
| 0x08-0x0B || Y Coordinate&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C-0x0F || Unknown (0x00000010 works)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10-0x1B || Item Code (first 3 32-bit values)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C-0x1F || Unknown ((request_id | 0x06010100) seems to work)&lt;br /&gt;
|-&lt;br /&gt;
| 0x20-0x23 || Item Code (last 32-bit value)&lt;br /&gt;
|-&lt;br /&gt;
| 0x24-0x27 || Unknown (0x00000002)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Protocol:Packet_0x62&amp;diff=108</id>
		<title>Protocol:Packet 0x62</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Protocol:Packet_0x62&amp;diff=108"/>
		<updated>2010-01-12T04:58:28Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
Clients send Packet 0x62 to the server to forward a &amp;quot;game command&amp;quot; to another client. This is used for various things in game, including requesting drops (clients &amp;quot;ask&amp;quot; the party leader what should be dropped).&lt;br /&gt;
&lt;br /&gt;
PSO v3 (GameCube, Xbox, Blue Burst) sometimes used packet 0x6D, which has exactly the same format and function as 0x62.&lt;br /&gt;
&lt;br /&gt;
==Main Packet Format==&lt;br /&gt;
===Dreamcast===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Packet Type (0x62 or 0x6D)&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Flags (destination client ID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x02-0x03 || Packet Size (Variable)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Subcommand Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Subcommand Size (in 32-bit increments)&lt;br /&gt;
|-&lt;br /&gt;
| 0x06-0x07 || Unused?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08... || Subcommand Data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Subcommands==&lt;br /&gt;
Various subcommands are sent with this packet, and this is not necessarily meant to be an exhaustive list of them (although, I&#039;d love it if it were eventually).&lt;br /&gt;
&lt;br /&gt;
===Subcommand 0x06===&lt;br /&gt;
Subcommand 0x06 is used to send a client&#039;s Guildcard to another client.&lt;br /&gt;
&lt;br /&gt;
====Dreamcast====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00-0x03 || Player Tag (0x00010000)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04-0x07 || Guildcard Number&lt;br /&gt;
|-&lt;br /&gt;
| 0x08-0x1F || Player Name&lt;br /&gt;
|-&lt;br /&gt;
| 0x20-0x77 || Guildcard Text&lt;br /&gt;
|-&lt;br /&gt;
| 0x78 || Unused&lt;br /&gt;
|-&lt;br /&gt;
| 0x79-0x7A || ??? (both set to 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x7B || Section ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C || Character Class&lt;br /&gt;
|-&lt;br /&gt;
| 0x7D-0x7F || Padding (all zeroes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Subcommand 0x60===&lt;br /&gt;
Subcommand 0x60 is used to request a item drop from the party leader. It is used when a box is opened (I haven&#039;t looked at what is sent when an enemy is killed yet, sorry).&lt;br /&gt;
&lt;br /&gt;
====Dreamcast====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Map Area&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || ??? (seems to always be 0x02 for boxes)&lt;br /&gt;
|-&lt;br /&gt;
| 0x02-0x03 || Request ID (might only be one byte, not sure)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04-0x07 || Map X Position&lt;br /&gt;
|-&lt;br /&gt;
| 0x08-0x0B || Map Y Position&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C-0x13 || ???&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Protocol:Packet_0x62&amp;diff=107</id>
		<title>Protocol:Packet 0x62</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Protocol:Packet_0x62&amp;diff=107"/>
		<updated>2010-01-12T04:58:10Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
Clients send Packet 0x62 to the server to forward a &amp;quot;game command&amp;quot; to another client. This is used for various things in game, including requesting drops (clients &amp;quot;ask&amp;quot; the party leader what should be dropped).&lt;br /&gt;
&lt;br /&gt;
PSO v3 (GameCube, Xbox, Blue Burst) sometimes used packet 0x6D, which has exactly the same format and function as 0x62.&lt;br /&gt;
&lt;br /&gt;
==Main Packet Format==&lt;br /&gt;
===Dreamcast===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Packet Type (0x62)&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Flags (destination client ID)&lt;br /&gt;
|-&lt;br /&gt;
| 0x02-0x03 || Packet Size (Variable)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Subcommand Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Subcommand Size (in 32-bit increments)&lt;br /&gt;
|-&lt;br /&gt;
| 0x06-0x07 || Unused?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08... || Subcommand Data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Subcommands==&lt;br /&gt;
Various subcommands are sent with this packet, and this is not necessarily meant to be an exhaustive list of them (although, I&#039;d love it if it were eventually).&lt;br /&gt;
&lt;br /&gt;
===Subcommand 0x06===&lt;br /&gt;
Subcommand 0x06 is used to send a client&#039;s Guildcard to another client.&lt;br /&gt;
&lt;br /&gt;
====Dreamcast====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00-0x03 || Player Tag (0x00010000)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04-0x07 || Guildcard Number&lt;br /&gt;
|-&lt;br /&gt;
| 0x08-0x1F || Player Name&lt;br /&gt;
|-&lt;br /&gt;
| 0x20-0x77 || Guildcard Text&lt;br /&gt;
|-&lt;br /&gt;
| 0x78 || Unused&lt;br /&gt;
|-&lt;br /&gt;
| 0x79-0x7A || ??? (both set to 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x7B || Section ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C || Character Class&lt;br /&gt;
|-&lt;br /&gt;
| 0x7D-0x7F || Padding (all zeroes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Subcommand 0x60===&lt;br /&gt;
Subcommand 0x60 is used to request a item drop from the party leader. It is used when a box is opened (I haven&#039;t looked at what is sent when an enemy is killed yet, sorry).&lt;br /&gt;
&lt;br /&gt;
====Dreamcast====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Map Area&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || ??? (seems to always be 0x02 for boxes)&lt;br /&gt;
|-&lt;br /&gt;
| 0x02-0x03 || Request ID (might only be one byte, not sure)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04-0x07 || Map X Position&lt;br /&gt;
|-&lt;br /&gt;
| 0x08-0x0B || Map Y Position&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C-0x13 || ???&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Packet_0x6D&amp;diff=106</id>
		<title>Packet 0x6D</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Packet_0x6D&amp;diff=106"/>
		<updated>2010-01-12T04:57:51Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: Redirected page to Packet 0x62&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Packet 0x62]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Protocol:Packet_0x60&amp;diff=105</id>
		<title>Protocol:Packet 0x60</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Protocol:Packet_0x60&amp;diff=105"/>
		<updated>2010-01-12T04:57:31Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
Clients send Packet 0x60 to the server to forward a &amp;quot;game command&amp;quot; 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 &amp;quot;ask&amp;quot; the party leader what should be dropped with a form of [[Packet 0x62#Subcommand 0x60|Packet 0x62]] and the party leader replies with a [[Packet 0x60#Subcommand 0x5F|Subcommand 0x5F]]).&lt;br /&gt;
&lt;br /&gt;
PSO v3 (GameCube, Xbox, Blue Burst) sometimes used packet 0x6C, which has exactly the same format and function as 0x60.&lt;br /&gt;
&lt;br /&gt;
==Main Packet Format==&lt;br /&gt;
===Dreamcast===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Packet Type (0x60)&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Flags&lt;br /&gt;
|-&lt;br /&gt;
| 0x02-0x03 || Packet Size (Variable)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Subcommand Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Subcommand Size (in 32-bit increments)&lt;br /&gt;
|-&lt;br /&gt;
| 0x06-0x07 || Unused?&lt;br /&gt;
|-&lt;br /&gt;
| 0x08... || Subcommand Data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Subcommands==&lt;br /&gt;
Various subcommands are sent with this packet, and this is not necessarily meant to be an exhaustive list of them (although, I&#039;d love it if it were eventually).&lt;br /&gt;
&lt;br /&gt;
===Subcommand 0x5F===&lt;br /&gt;
Subcommand 0x5F is used to tell clients what item dropped from an opened box.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Area of the Drop&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || What kind of thing are we asking about?&lt;br /&gt;
|-&lt;br /&gt;
| 0x02-0x03 || Request ID (might only be one byte)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04-0x07 || X Coordinate&lt;br /&gt;
|-&lt;br /&gt;
| 0x08-0x0B || Y Coordinate&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C-0x0F || Unknown (0x00000010 works)&lt;br /&gt;
|-&lt;br /&gt;
| 0x10-0x1B || Item Code (first 3 32-bit values)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C-0x1F || Unknown ((request_id | 0x06010100) seems to work)&lt;br /&gt;
|-&lt;br /&gt;
| 0x20-0x23 || Item Code (last 32-bit value)&lt;br /&gt;
|-&lt;br /&gt;
| 0x24-0x27 || Unknown (0x00000002)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Packet_0x6C&amp;diff=104</id>
		<title>Packet 0x6C</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Packet_0x6C&amp;diff=104"/>
		<updated>2010-01-12T04:56:27Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: Redirected page to Packet 0x60&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Packet 0x60]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Packet_0x89&amp;diff=103</id>
		<title>Packet 0x89</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Packet_0x89&amp;diff=103"/>
		<updated>2010-01-12T04:50:27Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Clients send Packet 0x89 to the server to change the color of the arrow above their head. The server will then send out a [[Packet 0x88]] to the lobby to inform them of the new arrow color.&lt;br /&gt;
&lt;br /&gt;
==Dreamcast Packet Format==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Packet Type (0x89)&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Flags (Arrow Color; see below)&lt;br /&gt;
|-&lt;br /&gt;
| 0x02-0x03 || Packet Size (0x0004)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Value !! Color&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || No arrow&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Red&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Blue&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 || Green&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Yellow&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || Purple&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || Cyan&lt;br /&gt;
|-&lt;br /&gt;
| 0x07 || Orange&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Pink&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 || White&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || White&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B || White&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || Black&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Packet_0x88&amp;diff=102</id>
		<title>Packet 0x88</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Packet_0x88&amp;diff=102"/>
		<updated>2010-01-12T04:47:19Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Dreamcast Packet Format==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Packet Type (0x88)&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Flags (Number of entries)&lt;br /&gt;
|-&lt;br /&gt;
| 0x02-0x03 || Packet Size (Variable)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04... || Arrow entries (see below for format)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arrow color entry format===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00-0x03 || Player Tag (0x00010000)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04-0x07 || Player Guildcard Number&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Player Arrow Color&lt;br /&gt;
|-&lt;br /&gt;
| 0x09-0x0B || Padding (all zeroes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Packet_0x83&amp;diff=101</id>
		<title>Packet 0x83</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Packet_0x83&amp;diff=101"/>
		<updated>2010-01-12T04:45:44Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The server sends clients Packet 0x83 to communicate the list of default (non-game) lobbies available.&lt;br /&gt;
&lt;br /&gt;
Note that PSO Episode 3 has five more lobbies than other versions, for a total of 20. The last five entries in the lobby list below describe the CARD lobbies (which are placed first in the list presented to the player).&lt;br /&gt;
&lt;br /&gt;
==Dreamcast Packet Format==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Packet Type (0x83)&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Flags (0x0F -- 15 lobbies)&lt;br /&gt;
|-&lt;br /&gt;
| 0x02-0x03 || Packet Size (0x00C4)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04... || Lobby Entries (see below for format)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lobby Entry Format===&lt;br /&gt;
Each lobby has one entry, plus one at the end as padding. These entries are as follows (so there&#039;s a total of 16 of these in the packet -- the last is all zeroes):&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00-0x03 || Menu ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x04-0x07 || Item ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x08-0x0B || Padding (all zeroes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Packet_0x81&amp;diff=100</id>
		<title>Packet 0x81</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Packet_0x81&amp;diff=100"/>
		<updated>2010-01-12T04:44:16Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Clients send Packet 0x81 to the server to send a simple mail to a recipient. The server sends it to clients to deliver the mail. Note, a lot of this packet is pretty much not understood by me, but I do know enough to actually translate messages DC&amp;lt;-&amp;gt;PC enough that they work.&lt;br /&gt;
&lt;br /&gt;
It seems that the game doesn&#039;t clear the entire message buffer before sending a message, so some random data (probably meaningless) ends up in the sent packet. Simple Mail packets can be shortened by the server (to remove excess garbage), and clients will still accept them.&lt;br /&gt;
&lt;br /&gt;
==Dreamcast Packet Format==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Packet Type (0x81)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0001 || Flags (0x00)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0002-0x0003 || Packet Size (0x0220)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0004-0x0007 || Player Tag (0x00010000)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0008-0x000B || Guildcard Number of Sender&lt;br /&gt;
|-&lt;br /&gt;
| 0x000C-0x001B || Name of Sender&lt;br /&gt;
|-&lt;br /&gt;
| 0x001C-0x001F || Guildcard Number of Destination&lt;br /&gt;
|-&lt;br /&gt;
| 0x0020-0x00B0 || Message to be sent&lt;br /&gt;
|-&lt;br /&gt;
| 0x00B1-0x021F || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Protocol:Packet_0x1A&amp;diff=99</id>
		<title>Protocol:Packet 0x1A</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Protocol:Packet_0x1A&amp;diff=99"/>
		<updated>2010-01-12T04:39:36Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The server sends clients a Packet 0x1A to pop up a large message box on the client&#039;s screen (it covers most of the screen). Schtserv uses this packet format to show the welcome message once a client is in the lobby on PSO for Dreamcast.&lt;br /&gt;
&lt;br /&gt;
For PSO v3 and later (GameCube, Xbox, Blue Burst), packet 0xD5 does the same thing as 0x1A. On PSO Episodes 1 &amp;amp; 2 (GC/Xbox), the client will respond with a packet 0xD6 when the user presses A or B to close the message box. &amp;quot;Later&amp;quot; versions of PSO v3 (PSO Plus and Episode 3) will send an 0xD6 only if the player has not yet joined a lobby in the current session. Blue Burst will never send an 0xD6.&lt;br /&gt;
&lt;br /&gt;
==Dreamcast Packet Format==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Packet Type (0x1A or 0xD5)&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Flags (0x00)&lt;br /&gt;
|-&lt;br /&gt;
| 0x02-0x03 || Packet Size (Variable)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04... || Message to show&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Protocol:Packet_0x1A&amp;diff=98</id>
		<title>Protocol:Packet 0x1A</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Protocol:Packet_0x1A&amp;diff=98"/>
		<updated>2010-01-12T04:39:24Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The server sends clients a Packet 0x1A to pop up a large message box on the client&#039;s screen (it covers most of the screen). Schtserv uses this packet format to show the welcome message once a client is in the lobby on PSO for Dreamcast.&lt;br /&gt;
&lt;br /&gt;
For PSO v3 and later (GameCube, Xbox, Blue Burst), packet 0xD5 does the same thing as 0x1A. On PSO Episodes 1 &amp;amp; 2 (GC/Xbox), the client will respond with a packet 0xD6 when the user presses A or B to close the message box. &amp;quot;Later&amp;quot; versions of PSO v3 (PSO Plus and Episode 3) will send an 0xD6 only if the player has not yet joined a lobby in the current session. Blue Burst will never send an 0xD6.&lt;br /&gt;
&lt;br /&gt;
==Dreamcast Packet Format==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Packet Type (0x1A)&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Flags (0x00)&lt;br /&gt;
|-&lt;br /&gt;
| 0x02-0x03 || Packet Size (Variable)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04... || Message to show&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Protocol:Packet_0xD5&amp;diff=97</id>
		<title>Protocol:Packet 0xD5</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Protocol:Packet_0xD5&amp;diff=97"/>
		<updated>2010-01-12T04:36:09Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: Redirected page to Packet 0x1A&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Packet 0x1A]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Protocol:Packet_0x05&amp;diff=96</id>
		<title>Protocol:Packet 0x05</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Protocol:Packet_0x05&amp;diff=96"/>
		<updated>2010-01-12T04:32:49Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Packet 0x05 is sent by clients when they&#039;re getting ready to close a connection to the server. For all intents and purposes, Sylverant pretty much ignores these packets.&lt;br /&gt;
&lt;br /&gt;
For most versions of PSO, sending an 0x05 to a client will cause it to disconnect.&lt;br /&gt;
&lt;br /&gt;
==Dreamcast Packet Format==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Packet Type (0x05)&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Flags (0x00)&lt;br /&gt;
|-&lt;br /&gt;
| 0x02-0x03 || Packet Size (0x0004)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
	<entry>
		<id>https://sylverant.net/wiki/index.php?title=Protocol:Packet_0x02&amp;diff=95</id>
		<title>Protocol:Packet 0x02</title>
		<link rel="alternate" type="text/html" href="https://sylverant.net/wiki/index.php?title=Protocol:Packet_0x02&amp;diff=95"/>
		<updated>2010-01-12T04:31:24Z</updated>

		<summary type="html">&lt;p&gt;Fuzziqersoftware: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The server sends Packets 0x02 and 0x17 to non-Blue Burst clients to verify that a server is in place where the client is connecting, as well as to communicate the encryption vectors that will be in use for the rest of the connection.&lt;br /&gt;
&lt;br /&gt;
Packet 0x02 is used for ship/block ports, and 0x17 is used for the login server.&lt;br /&gt;
&lt;br /&gt;
Sending an 0x17 to a GameCube client will cause it to reply with an 0xDB, but only for the first 0x17 received in the client&#039;s session.&lt;br /&gt;
&lt;br /&gt;
==Dreamcast Packet Format==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Bytes !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Packet Type (0x02 or 0x17)&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Flags (0x00)&lt;br /&gt;
|-&lt;br /&gt;
| 0x02-0x03 || Packet Size (At least 0x004C, everything after byte 0x4B will be ignored)&lt;br /&gt;
|-&lt;br /&gt;
| 0x04-0x43 || Copyright Message (see below)&lt;br /&gt;
|-&lt;br /&gt;
| 0x44-0x47 || Server Encryption Vector&lt;br /&gt;
|-&lt;br /&gt;
| 0x48-0x4B || Client Encryption Vector&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The Copyright Message that must be included in the above copyright message field is one of the two following things:&lt;br /&gt;
* For Ship/Block Servers: &amp;quot;DreamCast Lobby Server. Copyright SEGA Enterprises. 1999&amp;quot;&lt;br /&gt;
* For the Login Server: &amp;quot;DreamCast Port Map. Copyright SEGA Enterprises. 1999&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Category:PSO Server Protocol]]&lt;/div&gt;</summary>
		<author><name>Fuzziqersoftware</name></author>
	</entry>
</feed>