Structs List


 
Structs List
Item File Description
Spell File Description
Hex Glossary
Appendices


 
 
HEXADECIMAL- Base 16 numbers. This means values are counted in groups of 16, as opposed to groups of 10 as we are accustomed to. An easy primer on counting in hex may be found at:
                     http://www.tcaep.co.uk/maths/numbers/basen/index.htm
An advanced text on assembly language may be found at:
                     http://webster.cs.ucr.edu/Page_asm/ArtofAssembly/ArtofAsm.html
It is strongly advised that you read at least the first two chapters at the above site. If it is too complex for you, hex editing will be difficult to understand fully
Hex numbers should be expressed like this: "0x04A" or "4Ah" when discussing them at the hex board
Express decimal numbers as "d10" or "d52"

BITMASK- Method of stretching the amount of information a single byte can contain. This works because of the corellation between binary and hex. Multiple fields can be switched "on" or "off" using this. It works like this:
 

BIT
8
7
6
5
4
3
2
1
Value
0n/Off
1
0
1
0
1
0
1
0
Dec. Value
128
64
32
16
8
4
2
1
170=
128
+0
+32
+0
+8
+0
+2
+0
Binary: 10101010 equals 170 decimal which equals  Hex: AA
If the information was being stored in binary, it would take four bytes to represent the same number represented by one in hex.
In the first example, data field eight is "on"- 1
                                      field seven is "off"- 0
                                      field six is "on"- 1
                                      and so on....
Now, if we want to turn "on" field seven, the binary is now: 11101010 adding 64 (value of 7th bit) to the decimal value for a total of 234. Converting the decimal value of 234 to Hex you get: EA
One byte does the work of many this way to allow a single offset to control different attributes- for example, item usability (note: this is an example, and not how the true usability chart looks)
BIT 8 7 6 5 4 3 2 1
CLASS mage cleric fighter thief ranger paladin bard druid
VALUE 1 0 1 0 1 0 1 0
USABLE yes no yes no yes no yes no
The item is usable by mage, fighter, ranger, and bard. If bit seven is set to "1", the item will also be usable by clerics.

OFFSET- the location of a specific byte, usually given in hexadecimal- the 85th (decimal) byte is offset 0x055h
                  GLOBAL OFFSET- the offset's location in the whole file
                  LOCAL OFFSET- the offset's location within a section of the file, such as in a feature block

BYTE- unit of eight bits in binary, represented in hex as two digits or letters, such as "02", "5A", or "CB"

BIT- smallest unit of binary numbers- "0" (off) or "1" (on)

HEADER- in items, the first d114 bytes of the file, which establishes general properties of the item, such as usability, most icons, item avatar (image), or type. Contains counts of how many feature blocks affect the user of the item and how many extended headers are present in the file

EXTENDED HEADER- an additional section of d56 bytes following the header that establishes more specific properties, such as attack type, equipped icon, some ranged graphic effects, and a count of how many feature blocks are used by the extended header. Multiple extended headers may be used in an item to generate a wide range of abilities

FEATURE BLOCK- sections of the file d48 bytes in length that detail specific properties or effects that an item posesses. Also called "structs". See the Mailing List for details.

LITTLE-ENDIAN- a method of expressing numbers with multiple place values, not as complex as it sounds:
If we were to say " one million, four hundred twenty-five thousand, eight hundred and sixty-two dollars", we would write this:
"$ 1, 425, 862". That is big- endian. To express that amount of money in little- endian, we would write "$ 862, 425, 1"
The amount of money is unchanged, but we express from left to right, smallest value to highest value, instead of  left to right, highest to lowest as is done for common usage. 
So damage type "00 00 00 01" would be written in little- endian as "01 00 00 00"

DATA TYPES- some common data types referred to, and what they mean-

TYPE
EXAMPLE
SYNONYMS
LENGTH
BYTE
0A
 
ONE BYTE
WORD
0AC1
 INTEGER,   INT
TWO BYTES
DOUBLE WORD
0AC111F3
DWORD, LONG INTEGER, LONG INT, LONG
FOUR BYTES

A short primer on common terms from Suryiel revised by GMAN