Adding modding folder with a hacked build.
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
## Conventions
|
||||
|
||||
### Content
|
||||
Information in these documents MUST be verifiable, or have been verified (e.g. through testing or cross-reference to original code) to be included. Assumptions, contradictions, discussions and the like MUST be handled through the [issue](https://github.com/inkyblackness/ss-specs/issues) system.
|
||||
|
||||
In general, changes to the documents SHOULD be introduced by linking commits to corresponding issues. This way, issues can be used as reference material for verification.
|
||||
|
||||
### Language
|
||||
The human language of this documentation is English. Names of types/fields SHOULD follow that of the source (which is presumably en-us), while prose text SHOULD follow en-uk .
|
||||
|
||||
This is primarily to uphold the legacy of this documentation. The original ss-specs was maintained within the context of TSSHP, which came from Britain.
|
||||
|
||||
When wording actions, consider differenciating between the character in the game-world ("the hacker"), and the player. ("The hacker has a rotation angle of xyz, so the player sees...").
|
||||
|
||||
Sentences referring to individuals SHALL be phrased with inclusive, gender neutral language. The use of [singular they](https://en.wikipedia.org/wiki/Singular_they) is to be used if no other option is available.
|
||||
|
||||
> While the hacker is represented with a male body and voice in the original game, a fan-mod could change this. (see [here](https://www.moddb.com/mods/system-shock-female-hacker))
|
||||
> This documentation states raw engine data, which doesn't care about humans, even if considered to be insects.
|
||||
|
||||
More generally, consider online guides about inclusive language, such as [this one from Google](https://developers.google.com/style/inclusive-documentation).
|
||||
|
||||
### Formatting
|
||||
|
||||
Vanilla [Markdown](http://daringfireball.net/projects/markdown/syntax) SHOULD be used for all pages.
|
||||
|
||||
The biggest header available is the H2 header (""## Title"). H1 header are reserved for the main title. Each page SHOULD start with an H2 header, which is also the link in the [index](index.md).
|
||||
|
||||
|
||||
### Data
|
||||
In general, this documentation describes (serialized) data structures. Such data structures SHOULD be documented using code blocks and follow the following format:
|
||||
|
||||
offset type description
|
||||
|
||||
|
||||
#### Example
|
||||
|
||||
0000 int32 some value
|
||||
0004 [14]byte unknown, not used (0x00)
|
||||
0012 int16 other value
|
||||
|
||||
Offset values MUST start at 0 and be given in hexadecimal (or placeholder). They SHOULD have a width of 4 (or more) digits.
|
||||
|
||||
Types are field specific.
|
||||
|
||||
Description is a short human-readable text describing the field.
|
||||
|
||||
#### Integers
|
||||
|
||||
For integer types, they MUST be given in the following format:
|
||||
|
||||
(s|u)?int(8|16|24|32)
|
||||
|
||||
's' and 'u' prefixes specify 'signed' and 'unsigned integer' respectively. If no sign-prefix is given, it has not been verified whether this field allows negative values or allows greater positive values.
|
||||
|
||||
Implementors MAY treat fields without known sign to be unsigned - this can be the case for length fields for instance. It is unknown whether the original executable would handle them correctly.
|
||||
|
||||
Unless otherwise noted, integer values are stored in [little-endian](http://en.wikipedia.org/wiki/Endianness#Little-endian) format.
|
||||
|
||||
#### Fixed point numbers
|
||||
|
||||
Due hardware limitations and slow perfomance of float point operations, System Shock uses fixed point number represenation of real data type.
|
||||
Usually engine uses [Q15.16](https://en.wikipedia.org/wiki/Q_(number_format)) format (1 bit for sign, 15 bits for integer part, 16 bits for fractional):
|
||||
|
||||
0x 0000 0000
|
||||
| |
|
||||
| fractional part
|
||||
integer part with sign (first bit, 0 means positive, 1 - negative)
|
||||
|
||||
This format is refered as `fix` (int32). For example, (2 * Pi) number is `0x0006487f` (6 + 18559/65536 = 6.28319)
|
||||
|
||||
Internally engine supports Q23.8 numbers (`fix24`) or even Q2.28 (for some 2D- and 3D-computations).
|
||||
|
||||
Reference in New Issue
Block a user