Specification of the QSP game file format.
---------------------------------------------

1) All lines use the delimiter "\r\n" (0x0D, 0x0A).
2) String encoding is performed by shifting the character codes of the string by -5 (for both Unicode and ANSI versions). This allows multiple game strings to be stored in one line (since "\r\n" is also encoded).
3) Unicode is supported for both "old" and "new" formats. In the Unicode versions, each file character is represented by 2 bytes (UCS-2 LE) — the data type is uint16_t / unsigned short.

The following notation is used:
[data] - a value written without changes
[$text] - a regular string
[$$encoded text] - an encoded string
[#number] - a number converted to a string
[##encoded number] - an encoded string with a number

New game file format:
---------------------------

Header:

[QSPGAME]
[$version of the game and the tool used to save the file]
[$$password of the game file]
[##number of game locations]

Locations are saved sequentially in the following format:

[$$location name]
[$$base description of the location]
[$$location code]
[##number of base actions at the location]

Base actions at the location are saved sequentially in the following format:

[$$image of the action - relative file path]
[$$action name]
[$$action code]

Old game file format:
---------------------------

Header:

[#number of game locations]
[$$password of the game file]
[$version of the game and the tool used to save the file]
27 reserved empty lines

Locations are saved sequentially in the following format:

[$$location name]
[$$base description of the location]
[$$location code]

Exactly 20 base actions are saved (for missing actions, empty lines are recorded), in the following format:

[$$action name]
[$$action code]
