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

            0           1           Type Byte 0x1B

            1           1           Violation ID *1

 

            *1 - Violation IDs:

                  These may only be sent in response to a security checksum request

                  0x00 - Nothing wrong

                  0x01 - Slow framerate

                  0x02 - Current energy is higher than top energy

                  0x03 - Top energy higher than max energy

                  0x04 - Max energy without getting prizes

                  0x05 - Recharge rate higher than max recharge rate

                  0x06 - Max recharge rate without getting prizes

                  0x07 - Too many burst used(More than you have)

                  0x08 - Too many repel used

                  0x09 - Too many decoy used(More than you have)

                  0x0A - Too many thor used(More than you have)

                  0x0B - Too many wall blocks used(More than you have)

                  0x0C - Stealth on but never greened it

                  0x0D - Cloak on but never greened it

                  0x0E - XRadar on but never greened it

                  0x0F - AntiWarp on but never greened it

                  0x10 - Proximity bombs but never greened it

                  0x11 - Bouncing bullets but never greened it

                  0x12 - Max guns without greening

                  0x13 - Max bombs without greening

                  0x14 - Shields or Super on longer than possible

 

                  These can be sent any time

                  0x15 - Saved ship weapon limits too high (burst/repel/etc)

                  0x16 - Saved ship weapon level too high (guns/bombs)

                  0x17 - Login checksum mismatch (program exited)

                  0x18 - Something... I don’t know what

                  0x19 - Saved ship checksum mismatch

 

                  These may only be sent in response to a security checksum request

                  0x1A - Softice Debugger Running

                  0x1B - Data checksum mismatch

                  0x1C - Parameter mismatch

                  .... - Unknown integrity violation

                  0x3C - Unknown integrity violation (High latency in Continuum)

 

      0x1C  Drop Brick

 

            Offset      Length      Description

            0           1           Type Byte 0x1C

            1           2           X Tiles

            3           2           Y Tiles

 

      0x1D  Unknown

 

      0x1E  End Personal KoTH Timer

 

            Offset      Length      Description

            0           1           Type Byte 0x1E

 

      0x1F  Fire a Ball

 

            Offset      Length      Description

            0           1           Type Byte 0x1F

            1           1           Ball ID

            2           2           X Pixels

            4           2           Y Pixels

            6           2           X Velocity

            8           2           Y Velocity

            10          2           Your Player ID

            12          4           Timestamp

 

      0x20  Ball request

 

            Offset      Length      Description

            0           1           Type Byte 0x20

            1           1           Ball ID

            2           4           Timestamp

 

      0x21  Unknown

 

      0x22  Unknown

 

      --    Continuum

 

      0x23  Unknown

 

      0x24  Password packet *1

 

            Offset      Length      Description

            0           1           Type Byte

            1           1           Boolean: New user

            2           32          Name

            34          32          Password

            66          4           Machine ID

            70          1           ConnectType (*info)

            71          2           Time Zone Bias

            73          2           ?

            75          2           Client Version

            77          87          ?

 

            *1 - Don’t use this, its just here for completeness.

                  Use the 0x09 Password Packet instead.

 

      S2C

      --    SubSpace

 

      0x01  PlayerID Change

 

            Offset      Length      Description

            0           1           Type Byte 0x01

            1           2           New Player ID *1

 

            *1 - This is used to notify you of what your Player ID is.

 

      0x02  You are now in the game

 

            Offset      Length      Description

            0           1           Type Byte 0x02 *1

 

            *1 - At this point you can start sending position packets.

 

      0x03  Player(s) Entering *1

 

            Offset      Length      Description

            0           1           Type Byte 0x03

            1           1           Ship Type

            2           1           ? Unknown (0x00)

            3           20          Name

            23          20          Squad

            43          4           Flag Points

            47          4           Kill Points

            51          2           User ID

            53          2           Wins

            55          2           Losses

            57          6           Audio and Other Stuff

 

            *1 - Upon entering an arena (or possibly some other instances) several

                  of these packets (including the Type Byte) are stacked on top

                  of each other and sent as one packet. Be sure to process this

                  packet in 64 byte chunks until there are no chunks left.

 

      0x04  Player Leaving

 

            Offset      Length      Description

            0           1           Type Byte 0x04

            1           2           Player ID

 

      0x05  Large Position Packet (Weapons Packet)

 

            Offset      Length      Description

            0           1           Type Byte 0x05

            1           1           Direction   (0 ... 360)

            2           2           Time Stamp

            4           2           X Pixels    (0 ... 16384)

            6           2           Y Velocity

            8           2           Player ID

            10          2           X Velocity

            12          1           Checksum

            13          1           Togglables *1

            14          1           Ping

            15          2           Y Pixels    (0 ... 16384)

            17          2           Bounty

            19          1           Weapon Parameters

            20          1           Weapon Type

           

            21          2           Energy *2 *3      (Optional)

     

            23          2           S2C Lag *2        (Optional)

            25          2           Timer *2          (Optional)

            27          4           Item Info *2      (Optional)

 

            *1 - Bit flags for the Togglables byte in bit order.

                  Stealth     : 1;

                  Cloaked     : 2;

                  XRadar      : 4;    // XRadar calcs are done client-side

                  Antiwarp    : 8;    // Ditto

                  WarpFlash   : 16;   // Uncloaking, portaling, etc.

                  UNKNOWN1    : 32;   // ?

                  UFO         : 64;   // *ufo - Illegal usage caught in sg9+

                  UNKNOWN2    : 128;  // ?

 

            *2 - This data is only sent if the ExtraPositionData flag is

                  set to true in the zone settings.

 

            *3 - This data is sent if either the ExtraPositionData flag is

                  set to true, or if you are using the Energy Password.

 

      0x06  Player Death

 

            Offset      Length      Description

            0           1           Type Byte 0x06

            1           1           ID of green left by death

            2           2           Killer ID

            4           2           Killed ID

            6           2           Bounty *1

            8           2           Number of flags transferred

 

            *1 - Add this to the Killers Kill Points.

 

      0x07  Chat

 

            Offset      Length      Description

            0           1           Type Byte 0x07

            1           1           Chat Type *1

            2           1           Sound Byte

            3           2           Originator ID *2

            5           *           Chat Message

 

            *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

                        [(Whoever)> Whatever]

                  0x08 - Red server errors, without a name tag

                        (S2C only)

                  0x09 - Channel message

                        [;X;Whatever]

 

            *2 - Target player's player ID is 0 for public messages (0x02)

 

 

      0x08  Player got a Prize

 

            Offset      Length      Description

            0           1           Type Byte 0x08

            1           4           Timestamp

            5           2           X Tiles

            7           2           Y Tiles

            9           2           Prize

            11          2           Player ID

 

      0x09  Player Score Update

 

            Offset      Length      Description

            0           1           Type Byte 0x09

            1           2           Player ID

            3           4           Flag Points

            7           4           Kill Points

            11          2           Wins

            13          2           Losses

 

      0x0A  Password Packet Response

 

            Offset      Length      Description

            0           1           Type Byte 0x0A

            1           1           Login Response *1

            2           4           Server Version *2

            6           4           ? Unknown

            10          4           Subspace.exe Checksum *3

            14          4           ? Unknown

            18          1           ? Unknown

            19          1           Registration Form Request (Boolean)

            20          4           ? Unknown

            24          4           News.txt Checksum *4

            28          8           ? Unknown

 

 

            *1  -  The following is a list of what all the different Response

                        codes mean.

 

                        0x00 - Login OK

                        0x01 - Unregistered Player *a1

                        0x02 - Bad Password

                        0x03 - Arena is Full

                        0x04 - Locked Out of Zone

                        0x05 - Permission Only Arena

                        0x06 - Permission to Spectate Only

                        0x07 - Too many points to Play here

                        0x08 - Connection is too Slow

                        0x09 - Permission Only Arena

                        0x0A - Server is Full

                        0x0B - Invalid Name

                        0x0C - Offensive Name

                        0x0D - No Active Biller *a2

                        0x0E - Server Busy, try Later

                        0x10 - Restricted Zone *a3

                        0x11 - Demo Version Detected

                        0x12 - Too many Demo users

                        0x13 - Demo Versions not Allowed

                        0xFF - Restricted Zone, Mod Access Required

 

                        *a1 - Some Billers require you to register and will

                              kick you out after a short time if you do not

                              send the Registration form.

 

                        *a2 - You can still log in, but scores are not being

                              permanently recorded.

 

                        *a3 - This restriction is usually based on insufficient

                              hours of Usage.

 

            *2  - Returns the Major and the Minor version as a single number

                  (so 1.34.12a returns 134) does not return Sub Version..

 

            *3  - Compare against local Subspace.exe to determine if an Update

                  is needed. (obviously useless with a bot)

 

            *4  - Compare against local News.txt to determine if there is a new

                  News.txt to be downloaded.

 

      0x0B  Soccer Goal Made

 

            Offset      Length      Description

            0           1           Type Byte 0x0B

            1           2           Score Frequency

            3           4           Team Points

 

      0x0C  Player Voice

 

            Offset      Length      Description

            0           1           Type Byte 0x0C

            1           2           Player ID

            3           *           Wav File...

 

      0x0D  Player Changed Frequency

 

            Offset      Length      Description

            0           1           Type Byte 0x0D

            1           2           Player ID

            3           2           Frequency

 

      0x0E  Create Turret Link

 

            Offset      Length      Description

            0           1           Type Byte 0x0E

            1           2           Turreter Requester Player ID

            3           2           Turreter Destination Player ID *1

 

            *1 - If this value is left blank, you will be detached from

                  whoever you are attached to.

 

      0x0F  Arena Settings

 

            Offset      Length      Description

            0           1           Type Byte 0x0F

            1           1428        Arena Settings Struct *1

 

            *1 - Very large Struct, included with this document is

                  a C++ Struct that details it.

 

      0x10  File Transfer

 

            Offset      Length      Description

            0           1           Type Byte 0x10

            1           16          File Name *1

            17          *           File Data... *2

 

            *1 - If no File Name is specified, then it's the News.txt

 

            *2 - If the file is the News.txt it must be Uncompressed first.

                  According to Snrrrub, all other files are sent Uncompressed.

 

      0x11  Unknown

 

      0x12  Flag Position

 

            Offset      Length      Description

            0           1           Type Byte 0x12

            1           2           Flag ID

            3           2           X Tiles

            5           2           Y Tiles

            7           2           Owner *1

 

            *1 - The Team number that owns the flag.

                  (I forget what it is for Neutral)

 

      0x13  Flag Claim

 

            Offset      Length      Description

            0           1           Type Byte 0x13

            1           2           Flag ID

            3           2           Player ID

 

      0x14  Flag Victory

 

            Offset      Length      Description

            0           1           Type Byte 0x14

            1           2           Team

            3           4           Jackpot Points

 

      0x15  Destroy Turret Link

 

            Offset      Length      Description

            0           1           Type Byte 0x15

            1           2           Turret Driver Player ID *1

 

            *1 - This is sent from a client that has turret(s) attached

                  to it and wants to get rid of them. Upon receiving this

                  packet, you should check to see if you are attached to

                  Player ID and if so, detach.

 

      0x16  Drop Flag

 

            Offset      Length      Description

            0           1           Type Byte 0x16

            1           2           Carrier Player ID

 

      0x17  Unknown

 

      0x18  Synchronization Request *2

 

            Offset      Length      Description

            0           1           Type Byte 0x18

            1           4           Prize Seed Value *1

            5           4           Door Seed Value *1

            9           4           Timestamp

            13          4           Checksum Key *2

 

            *1 - Seed values are used in Random Number Generators to

                  determine the location of Prizes and the timing for

                  door switching.

 

            *2 - When this packet is received, a Security Checksum packet

                  (0x1A) should be returned using the Server Checksum Key.

 

      0x19  Request File *1

 

            Offset      Length      Description

            0           1           Type Byte 0x19

            1           256         Local File Name

            257         16          Remote File Name

 

            *1 - Sent when the server wants a file from the client

                  (as in *putfile). The file requested should be in

                  the same directory as the EXE

 

      0x1A  Reset Score(s)

 

            Offset      Length      Description

            0           1           Type Byte 0x1A

            1           2           Player ID *1

 

            *1 - If player ID = 0xFFFF then reset everyone's scores.

 

      0x1B  Personal Ship Reset

 

            Offset      Length      Description

            0           1           Type Byte 0x1B

 

      0x1C  Put Player in Spectator Mode

 

            Offset      Length      Description

            0           1           Type Byte 0x1C

            One of the following: *1

            1 <-        2           Player ID *2

            1 <-        1           Bool: Request Extra Pos Info

 

            *1 - Only one type of 1C is sent, check length to determine

                  which one was sent. Length = 2 or 3.

 

            *2 - I can only assume if the ID is yours, you should

                  spec yourself.

 

            (This packet brought to you by: KrispyKreme)

 

      0x1D  Player Team and Ship Changed

 

            Offset      Length      Description

            0           1           Type Byte 0x1D

            1           1           Ship Type

            2           2           Player ID

            4           2           Frequency

 

      0x1E  Personal Banner Changed *1

 

            Offset      Length      Description

            0           1           Type Byte 0x1E

            1           1           Bool: ?Unknown? (0x00)

 

            *1 - This means that your banner was successfully changed

 

      0x1F  Player Banner Changed

 

            Offset      Length      Description

            0           1           Type Byte 0x1F

            1           2           Player ID

            3           96          Player Banner (Bitmap)

 

      0x20  Collected Prize (Client got one)

 

            Offset      Length      Description

            0           1           Type Byte 0x20

            1           2           Prize Type *1

 

            *1 - Listed here from 0 to 28: Unknown, Recharge, Energy,

                  Rotation, Stealth, Cloak, XRadar, Warp, Guns, Bombs,

                  BBullets, Thruster, TopSpeed, FullCharge, EngineShutdown,

                  Multifire, Proximity, Super, Shields, Antiwarp, Repel,

                  Burst, Decoy, Thor, Multiprize, Brick, Rocket, Portal.

 

      0x21  Brick Dropped

 

            Offset      Length      Description

            0           1           Type Byte 0x21

            The following are repeated until the end of the message

            >1          2           X1 Tiles

            >3          2           Y1 Tiles

            >5          2           X2 Tiles

            >7          2           Y2 Tiles

            >9          2           Team

            >11         2           Brick ID (sent more than once)

            >13         4           Timestamp

 

      0x22  Turf Flag Update

 

            Offset      Length      Description

            0           1           Type Byte 0x22

            The following are repeated until the end of the message

            >1          2           Team for Flag X

 

      0x23  Flag Reward Granted

 

            Offset      Length      Description

            0           1           Type Byte 0x23

            1           2           Team

            3           2           Points Awarded

            The following are repeated until the end of the message

            >5          2           Team *1           (Optional)

            >7          2           Points Awarded *1 (Optional)

 

            *1 - The Team and Points Awarded field are repeated until

                  all Point notifications are made. This packet can be

                  of any length.

 

      0x24  Speed Game Over

 

            Offset      Length      Description

            0           1           Type Byte 0x24

            1           1           Best

            2           2           Your Rank

            4           4           Your Score

            8           4           Player 1 Score

            12          4           Player 2 Score

            16          4           Player 3 Score

            20          4           Player 4 Score

            24          4           Player 5 Score

            28          2           Player 1 ID

            30          2           Player 2 ID

            32          2           Player 3 ID

            34          2           Player 4 ID

            36          2           Player 5 ID

 

      0x25  Toggle UFO Ship

 

            Offset      Length      Description

            0           1           Type Byte 0x24

            1           1           Boolean: Available?

 

      0x26  Unknown

 

      0x27  Keep-Alive

 

            Offset      Length      Description

            0           1           Type Byte 0x27

 

      0x28  Small Position Packet

 

            Offset      Length      Description

            0           1           Type Byte 0x28

            1           1           Direction   (0 ... 360)

            2           2           Timestamp

            4           2           X Pixels    (0 ... 16384)

            6           1           Ping

            7           1           Bounty

            8           1           Player ID *1

            9           1           Togglables *2

            10          2           Y Velocity *3

            12          2           Y Pixels    (0 ... 16384)

            14          2           X Velocity *3

 

            16          2           Energy *4 *5      (Optional)

 

            18          2           S2C Lag *4        (Optional)

            20          2           Timers *4         (Optional)

            22          4           Items *4 *6       (Optional)

 

            *1 - Since the Player ID here is only one byte, this

                  packet is only capable of addressing the first

                  256 clients in a zone.

 

            *2 - 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 - ?

 

 

            *3 - Velocities are measured in Pixels per 10 Seconds.

 

            *4 - These values are only received if the ExtraPositionData

                  variable in the Settings is set to True.

 

            *5 - This value is sent if either the ExtraPositionData value is

                  set to True in the settings or if you are using the Energy

                  Password.

 

            *6 - 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

 

 

      0x29  Map Information

 

            Offset      Length      Description

            0           1           Type Byte 0x29

            1           16          Map File Name

            17          4           Map Checksum *1

 

            *1 - If the Mapfile does not exist, send a Request Map packet.

                  If it does exist, check its checksum against the one that

                  came in this packet, if they do not match, Request the map.

                  If they do match, load the map.

 

      0x2A  Compressed Map File

 

            Offset      Length      Description

            0           1           Type Byte 0x2A

            1           16          Map File Name

            17          *           ZLib Compressed Map File

 

      0x2B  Set Personal KotH Timer

 

            Offset      Length      Description

            0           1           Type Byte 0x2B

            1           4           New Timer Value

 

      0x2C  KotH Game Reset

 

            Offset      Length      Description

            0           1           Type Byte 0x2C

            1           1           Adding KoTH Timer

            2           4           Timer Value

            6           2           Player ID

 

      0x2D  Unknown

 

      0x2E  Power-Ball Position Update

 

            Offset      Length      Description

            0           1           Type Byte 0x2E

            1           1           Powerball ID

            2           2           X Pixels

            4           2           Y Pixels

            6           2           X Velocity

            8           2           Y Velocity

            10          2           Owner ID

            12          4           Timestamp

 

      0x2F  Arena Directory Listing

 

            Offset      Length      Description

            0           1           Type Byte 0x2F

            The following are repeated until the end of the message

            >1          *           Arena Name (Null Terminated) *1

            >?          2           Arena Population

 

            *1 - Arena Name and Arena Population are repeated

                  until all arenas are enumerated

 

      0x30  Got Zone Banner Advertisements

 

            Offset      Length      Description

            0           1           Type Byte 0x30

            1           1           Display Mode

            2           2           Width

            4           2           Height

            6           4           Duration

            10          *           Banner *1

           

            *1 - No one seams to have any clue how to determine the

                  end of this field. Nor does anyone know how this

                  file is packed. (W*H+10 != Len) ZLib??

 

      0x31  You are now past the login sequence

 

            Offset      Length      Description

            0           1           Type Byte 0x31

 

      --    Continuum

      0x32  Change Personal Ship Coordinates

 

            Offset      Length      Description

            0           1           Type Byte 0x32

            1           2           X Tiles

            3           2           Y Tiles

 

      0x33  Custom Login Failure Message

 

            Offset      Length      Description

            0           1           Type Byte 0x33

            1           ?           Message *1

 

            *1 - Null 0x00 terminated text message.

 

      0x34  Continuum Version Packet

 

            Offset      Length      Description

            0           1           Type Byte 0x34

            1           2           Version number

            3           4           Checksum

 

 

      Core

      -- Bi-Directional

 

      0x01  Encryption Request

 

            Offset      Length      Description

            0           1           Type Byte 0x01

            1           4           Client Encryption Key

            5           2           Protocol Version *1

 

            *1 - Protocol versions:

                  0x0001 - Subspace

                  0x0010 - Continuum

 

      0x02  Encryption Response

 

            Offset      Length      Description

            0           1           Type Byte 0x02

            1           4           Server Encryption Key

 

      0x03  Reliable Message

 

            Offset      Length      Description

            0           1           Type Byte 0x03

            1           4           ACK ID

            5           *           Reliable Packet...

 

      0x04  Reliable ACK

 

            Offset      Length      Description

            0           1           Type Byte 0x04

            1           4           ACK ID

 

      0x05  Sync Request

 

            Offset      Length      Description

            0           1           Type Byte 0x05

            1           4           Timestamp

            5           4           Total Packets Sent

            9           4           Total Packets Received

 

      0x06  Sync Response

 

            Offset      Length      Description

            0           1           Type Byte 0x06

            1           4           Received Timestamp

            5           4           Local Timestamp

 

      0x07  Disconnect

 

            Offset      Length      Description

            0           1           Type Byte 0x07

 

      0x08  Small Chunk Body

 

            Offset      Length      Description

            0           1           Type Byte 0x08

            1           *           Data... *1

 

            *1 - Store the data in a buffer until you get a tail

 

      0x09  Small Chunk Tail

 

            Offset      Length      Description

            0           1           Type Byte 0x09

            1           *           Data... *1

 

            *1 - Now process the buffer

 

      0x0A  HUGE Chunk

 

            Offset      Length      Description

            0           1           Type Byte 0x0A

            1           4           Total Length

            5           *           Data... *1

 

            *1 - Store data in a buffer until buffer

                  length = Total Length.

 

      0x0E  Cluster *1

 

            Offset      Length      Description

              0           1           Type Byte 0x0F

            The following are repeated until the end of the message

            >1          1           Packet Length

            >2          *           Packet...

           

            *1 - Packet Length and Packet are repeated for each packet

                  in the packet cluster. This packet can be any length

                  up to a maximum of 512 bytes.

 

 

      Directory Server Protocol

      -------------------------

     

            This protocol uses the same core elements as the regular

      subspace protocol. Such as Enc Request starting the connection

      and the use of 0E and 0A and reliable packets. Major difference

      is this connection is un-encrypted, which means that the directory

      server responds with the same exact key you send it, signifying

      that encryption should be disabled. The request should be sent

      reliably, and the response will be sent reliably in an 0x0A huge

      chunk packet. Sometimes if the tail is small enough it will be

      sent in an 0x0E along with the ACK for your initial request.

      (Odd that it should answer the request before ACKing it.)

 

      C2S

      ---

 

      0x01  Server List Request

 

            Offset      Length      Description

            0           1           Type Byte 0x01

            1           4           Minimum # of Players to be listed

 

 

      S2C

      ---

 

      0x01  Server List Response

 

            Offset      Length      Description

            0           1           Type Byte 0x01

            The following are repeated until the end of the message

            >1          4           Zone IP           *1

            >5          2           Zone Base Port

            >7          2           Zone Number of Players

            >9          2           Zone Keeping Score (Bool)

            >11         4           Zone Server Version

            >15         64          Zone Name

            >79         *           Zone Description (NULL Terminated)

 

            *1 - From this point until the end of the packet is

                  repeated for every zone.