HEX..END
Sanny Builder поддерживает прямую запись данных в выходной файл. Все значения внутри этой конструкции записываются без какой-либо обработки и проверки.
Используйте эту возможность только в том случае, если вы знаете, что делаете. Любые ошибки могут повредить файл и его невозможно будет прочитать в игре или в скриптовом редакторе.
Синтаксис:
hex
< любый шестнадцатиричные значения>
end
Пример:
hex
04 00 02 0800 04 01
end
Эта последовательность байтов представляет собой скомпилированный опкод 0004: $2 = 1, поэтому игра корректно прочитает его и установит значение переменной $2 равным 1.
Вы должны использовать 2 цифры в шестнадцатиричном формате для каждого байта, который собираетесь записать в файл. Все пробелы игнорируются. Компилятор рассматривает две подряд идущих цифры с пробелом между ними как одиночный байт. К одиночной цифре (0..F) слева дописывается 0. Например, A B C будет записано как число 0xAB0C.
В конструкции HEX..END также можно использовать строки, метки, глобальные переменные, имена моделей. Они компилируются без предшествующего байта, указывающего на тип данных.
:get_offset
hex
04 00 02 $PLAYER_CHAR 01 @get_offset
end
Это точная копия опкода 0004: $PLAYER_CHAR = @get_offset
Строки компилируются как последовательность символов, заключенных между двойными кавычками.
hex
"This is a string"
end
В строках допускается использование следующих управляющих символов:
- \0 - пустой символ - 0
- \b - возврат на шаг - 8
- \t - табуляция - 9
- \n - перевод строки - 10
- \r - возврат каретки - 13
- \x<nn> - любой байт - nn
- \<char> - любой символ - <char>
Пример:
hex
"\0\b\t\n\r\xDD"
end
Это даст следующую последовательность байтов: 00 08 09 0A 0D DD.
В настоящее время несколько подряд идущих пробелов в строке конвертируются в один пробел. Например, строка "This is a string" будет сконвертирована в "This is a string". Используйте символ \ чтобы добавить дополнительные пробелы в строку: "This \ \ \ is \ a \ \ \ \ string".
Также вы можете использовать тип данных aDMA, чтобы записать число в выходной файл. Число после знака & может быть как положительным, так и отрицательным, в десятичном формате или шестнадцатиричном.
hex
&1000 &-0xA33500
end
Этот пример даст следующую последовательность байтов: E8 03 00 CB 5C FF.