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