FILE VERSION: 0.5

 

Revised: 1.9

 

Updates by D1st0rt:

- Spelling/Grammar

- S2C 0x20

- C2S 0x06

- S2C 0x06

- S2C 0x07

 

Originally Created by: SOS

 

The following has been added by: Admiral Kirk

- Added color coding.

- Re-wrote Packet formats to something more readable.

- Dredged through Snrrrubs Packet info to fill out the ranks

- Dredged through Catid's clientprot.cpp for more Prot info

- Bugged Snrrrub and Catid for yet more info :P

- Corrected minor errors.

- Added Directory Protocol Information

 

This is a WOP (Work In Progress) the packet lists are not

yet complete. I will be updating this periodically.

 

Huge thanks to Catid, Snrrrub, Coconut Emulator, nintendo64,

Kavar!, Ave-iator and anyone else who figured out this stuff.

 

      General notes:

            Maximum packet size is 520

            All strings are padded with 0x00 characters

 

      

       C2S

       --    SubSpace

 

      0x00  Start of a special header

            Scroll down(Near the end) to the core packets section

 

      0x01  Arena login

 

            Offset      Length      Description

              0           1           Type Byte 0x01

            1           1           Ship type *1

              2           2           Allow audio *2

              4           2           X Resolution

            6           2           Y Resolution

            8           2           Main arena number *3

             

              10          16          Arena name  (Optional)

 

            *1 - Ship type is 0 for warbird up to 8 for spectator

 

              *2 - When Allow audio = 0, remote messages aren't heard in private

                  arenas (1.34.11f)

 

              *3 - Set to Pub Number for Specific Pub, Set to 0xFFFF for Random

                  Pub, Set to 0xFFFD for private arena. Arena name is only used

                  with private arenas.

 

      0x02  Leave arena

           

            Offset      Length      Description

              0           1           Type Byte 0x02

 

      0x03  Position packet

 

            Offset      Length      Description

              0           1           Type Byte 0x03

            1           1           Direction   (0 ... 360)

            2           4           Timestamp

            6           2           X Velocity

            8           2           Y Pixels    (0 ... 16384)

            10          1           Checksum

            11          1           Togglables *1

            12          2           X Pixels    (0 ... 16384)

            14          2           Y Velocity

            16          2           Bounty

            18          2           Energy

            20          2           Weapon Info *2

 

            22          2           Energy *4         (Optional)

            24          2           S2C Latency *4    (Optional)

            26          2           Timer *4          (Optional)

            28          4           Item info *3 *4   (Optional)

 

            *1 - Togglables:

                  Each value is one bit in a byte

                  Bit 1   - Stealth

                  Bit 2   - Cloak

                  Bit 4   - XRadar

                  Bit 8   - Antiwarp

                  Bit 16  - Flash (Play the cloak/warp flash)

                  Bit 32  - Safety (In safe)

                  Bit 64  - UFO (Using UFO)

                  Bit 128 - ?

 

            *2 - Weapon info:

                  Unsigned Integer Values or Booleans

 

                  Weapon type             :5 bits *a1

                  Weapon level            :2 bits

                  Bouncing (Boolean)      :1 bit

                  EMP (Boolean)           :1 bit

                  Is bomb (Boolean)       :1 bit

                  Shrapnel                :5 bits

                  Alternate (Boolean)     :1 bit *a2

                 

 

                  *a1 - Weapon types:

                        0x00 - None

                        0x01 - Bullet

                        0x02 - Bouncing bullet

                        0x03 - Bomb

                        0x04 - Proximity bomb

                        0x05 - Repel

                        0x06 - Decoy

                        0x07 - Burst

                        0x08 - Thor

 

                  *a2 - (Bombs -> Mines; Bullets -> Multifire)

 

            *3 - Item info:

                  Unsigned Integer Values or Booleans

 

                  Shields (Boolean) :1 bit

                  Super (Boolean)   :1 bit

                  Burst Count       :4 bits

                  Repel Count       :4 bits

                  Thor Count        :4 bits

                  Brick Count       :4 bits

                  Decoy Count       :4 bits

                  Rocket Count      :4 bits

                  Portal Count      :4 bits

                  ? Unknown         :2 bits

 

            *4 - These are supposed to be optional, but I'm not certain

                  what dictates if you should send them or not.

 

      0x04  Unknown

 

      0x05  Death message

 

            Offset      Length      Description

            0           1           Type Byte 0x05

            1           2           Killer's Player ID

            3           2           Your bounty at time of death

 

      0x06  Chat message

 

            Offset      Length      Description

            0           1           Type Byte 0x06

            1           1           Chat Type *1

            2           1           Sound Byte

            3           2           Target Player's Player ID *2

            5           *           Text...

 

            *1 - Chat types:

                  0x00 - Message in green text                   

                        [*arena, *zone, ...]

                  0x01 - Public macro

 

                  0x02 - Public message

 

                  0x03 - Team message

                        [// or ']

                  0x04 - Player to all members of another team

                        ["Whatever]

                  0x05 - Private message

                        [/Whatever]

                  0x06 - Red warning message

                        [MODERATOR WARNING: Whatever -Whoever]

                  0x07 - Remote private message *3

                        [(Whoever)> Whatever]

                  0x08 - Red server errors, without a name tag

                        (S2C only)

                  0x09 - Channel message *3

                        [X;Whatever]

 

            *2 - Target player's player ID is 0x00 for the Following

                  Chat Types: 0x00, 0x01, 0x02, 0x03, 0x06, 0x07, 0x08

                  0x09. It is PlayerID for 0x05 and 0x04

 

            *3 - These are formatted much as you’d expect. To send a Remote

                  Message, you include the name of the person you are sending

                  the message to in the Text of the message like

                  so: ":Name:Message" and with Channel Messages you include

                  the Number of the Channel you are sending to, like so:

                  "#;Message".

 

      0x07  Unknown

 

      0x08  Spectate player

 

            Offset      Length      Description

            0           1           Type Byte 0x08

            1           2           Spectated Player's Player ID

 

      0x09  Password packet

 

            Offset      Length      Description

            0           1           Type Byte 0x09

            1           1           New user (Boolean) *1

            2           32          Name *2

            34          32          Password *2

            66          4           MachineID *3

            70          1           ConnectType *4

            71          2           Timezone bias *5

            73          2           ? Unknown

            75          2           Client version *6

            77          4           Mem Checksums     (0x01BC) or (444)

            81          4           Mem Checksums     (0x022B) or (555)

            85          4           PermissionID

            89          12          ? Unknown

 

            *1 - New user is 1 if you want to create a new user, otherwise 0

 

            *2 - Name and password are trimmed down to 20/24 characters on

                  some servers/billers

 

            *3 - MachineID is the drive serial of C:

 

            *4 - Connect types:

                  0x00 - Unknown

                  0x01 - SlowModem

                  0x02 - FastModem

                  0x03 - UnknownModem

                  0x04 - UnknownNotRAS

 

            *5 - Time Zone Bias

                  240 = Eastern Standard Time (Safe Value)

 

            *6 - Client versions:

                  0x24 - Continuum .36

                  0x86 - Subspace 1.34 And 1.35

 

      0x0A  Unknown

 

      0x0B  SSUpdate.EXE Request

 

            Offset      Length      Description

            0           1           Type Byte 0x0B

 

      0x0C  Map.lvl Request

 

            Offset      Length      Description

            0           1           Type Byte 0x0C

 

      0x0D  News.txt Request

 

            Offset      Length      Description

            0           1           Type Byte 0x0D

 

      0x0E  Voice Message

 

            Offset      Length      Description

            0           1           Type Byte 0x0E

            1           4           Size of Wav File (In Bytes)

            5           *           Wav File...

 

      0x0F  Frequency Change

 

            Offset      Length      Description

            0           1           Type Byte 0x0F

            1           2           New Frequency

 

      0x10  Attach request

 

            Offset      Length      Description

            0           1           Type Byte 0x10

            1           2           Player ID of Turretee

 

      0x11  Unknown

 

      0x12  Unknown

 

      0x13  Flag request

 

            Offset      Length      Description

            0           1           Type Byte 0x13

            1           2           Flag ID

 

      0x14  Unknown

 

      0x15  Drop Flags

 

            Offset      Length      Description

            0           1           Type Byte 0x15

 

      0x16  File transfer

 

            Offset      Length      Description

            0           1           Type Byte 0x16

            1           16          File Name

            17          *           ZLib Compressed File...

 

      0x17  Registration Form Response (This one is big!)

 

            Offset      Length      Description

            0           1           Type Byte 0x17

            1           32          Real Name *1

            33          64          E-Mail *1

            97          32          City *1

            129         24          State *1

            153         1           Sex *2

            154         1           Age

            155         1           Connecting From: Home (Boolean)

            156         1           Connecting From: Work (Boolean)

            157         1           Connecting From: School (Boolean)

            158         4           Processor Type

            162         4           ? Unknown

            166         40          Windows Registration: Real Name

            206         40          Windows Registration: Organization

 

            The follow are registry entries and can be found in the following key:

            System\CurrentControlSet\Services\Class\

 

            246         40          Display\0000:DriverDesc

            286         40          Monitor\0000:DriverDesc

            326         40          Modem\0000:DriverDesc

            366         40          Modem\0001:DriverDesc

            406         40          Mouse\0000:DriverDesc

            446         40          Net\0000:DriverDesc

            486         40          Net\0001:DriverDesc

            526         40          Printer\0000:DriverDesc

            566         40          MEDIA\0000:DriverDesc

            606         40          MEDIA\0001:DriverDesc

            646         40          MEDIA\0002:DriverDesc

            686         40          MEDIA\0003:DriverDesc

            726         40          MEDIA\0004:DriverDesc

 

            *1 - Real name, E-mail, City, State are null-terminated strings

 

            *2 - Sex is either 'F' or 'M'

 

      0x18  Set ship type

 

            Offset      Length      Description

            0           1           Type Byte 0x18

            1           1           Ship Type *1

 

            *1 - Ship type is 0 for Warbird through 8 for Spectator

 

      0x19  Set personal banner

 

            Offset      Length      Description

            0           1           Type Byte 0x19

            1           96          Banner Data *1

 

            *1 - Banner data is the value for each pixel in the banner

                  (Banner size is 12x8 pixels = 96 pixels) Uncompressed

                  BMP Files follow this format.

 

      0x1A  Security checksum *1

 

            Offset      Length      Description

            0           1           Type Byte 0x1A

            1           4           Weapon Count

            5           4           Settings Checksum *2

            9           4           Subspace.EXE Checksum

            13          4           Map.LVL Checksum

            17          4           S2CSlowTotal

            21          4           S2CFastTotal

            25          2           S2CSlowCurrent

            27          2           S2CFastCurrent

            29          2           S2CRelOut (?Unsure?)

            31          2           Ping

            33          2           Ping Average

            35          2           Ping Low

            37          2           Ping High

            39          1           Slow Frame Detected (Boolean)

 

            *1 - The checksums are generated after a server-sent seed

 

            *2 - Settings checksum is the checksum of the contents of the settings packet

 

      0x1B  Security violation

 

            Offset      Length      Description