Difference between revisions of "Data Types"

From RuneWiki
Jump to navigationJump to search
(added endianness/byteorder)
Line 1: Line 1:
{{stub}}
 
 
 
== Introduction ==
 
== Introduction ==
  

Revision as of 10:42, 22 September 2009

Introduction

RuneScape uses a number of standard and non-standard data types.

Endianness or byte order

You probally know the LE or littleendian variants of datatypes, the only difference is the byte order, intel and amd (x86) pc's use a little endian order natively while rs uses mostly bigendian values, where a little endian stores the short value 10011001 11011011 as 11011011 10011001 a big endian stores it as 10011001 110011011, winterlove called little endian big endian values so be aware.

Standard data types

These datatypes can also be read/written by a DataWriter/DataReader implementation (DataStreams and Buffers)

Naming conventions:

Official name Datatype name JaGeX name Encoding
Byte byte 1,1b
WORD short 2,2b
DWORD int,int32 4,4b
QWORD long,int64 8,8b
C style string string,String,char *,char[] str,strbyte text bytes then '\n' or 10
Java style string string,String,char *,char[] strraw WORD length then text bytes

Note that jagex used a newline character as string terminator for a while, nowadays they use the null character \0 or 0 to support multiline strings

Non Standard Data Types

winterLove name JaGeX name Read transformation Write transformation
Special A Unknown value - 128 value + 128
Special C Unknown 0 - value 0 - value
Special S Unknown 128 - value 128 - value
SpaceSaverA smarts (value[0] < 128) ? (((value[0] - 128)<<8)+value[1]) : value[0] if(value < 128) putword(value+32768) else putbyte(value);
SpaceSaverB smart ((value[0]<<8)+value[1]) - 49152 if(i < 64 && i >= -64) putbyte(i + 64) else if(i < 16384 && i >= -16384) putword(i + 49152);
tribyte / RGBColour / 3Byte / int3 3 (value[0] << 24) + (value[1] << 16) + value[2] putbyte(value >> 24);putbyte(value >> 16);putbyte(value);

Additionally, RuneScape also uses two additional integers (named int 1 and int 2).