#251 16-08-2019 08:13

XEPOMAHT007
Registered: 05-06-2013
Posts: 20

Re: Sanny Builder v3.xx

wmysterio wrote:

А как же языки программирования, которые подобную рутину отлично выполняют?

Мне быстрее перебрать всю базу вручную, чем изучать языки программирования (на три-с-минусом знаю только ассемблер, и то только для ковыряния в exe и dll и различных манипуляций с чужим кодом, ну ещё и немного максскрипт - только для импорта и экспорта моделей из некоторых игр). Языки высокого уровня типа СИ совершенно не поддаются пониманию непрограммисту.

Seemann wrote:

Если есть что-то актуальнее - присылайте или выкладывайте, я включу в обновление.

Если опкоды следующего вида устроят для сториесов?

00EF=3,030B_SET_CHAR_OBJ_FOLLOW_CHAR_IN_FORMATION %1d% %2d% %3d% 

Т.е. для каждого совместимого с GTA3/VC опкода проставлен его соответствующий номер. Для LCS их примерно 90% (несовместимы только 213 опкодов, из которых четверть и не используются в игре), для VCS - немного больше половины (ВСС по части кода - отдельная полноценная GTA, в отличии от ЛСС, который является, по сути, рокстаровской модификацией PS2-версии игрового движка GTA VC, с включениями кода GTA3, поэтому поляки сейчас активно клепают ЛСС на ПК, а про ВСС благополучно положили болт с резьбой).

Seemann wrote:

А что с ними не так?

Просто есть опкоды, которые в сториесах занопили - я копировал таблицу построчно блоками, а потом уже разбирался с ошибками.

Seemann wrote:

Если интересно, как раз LCS для меня сейчас приоритет #1.

Стоит ждать компиляцию мейна LCS (что наверное будет логично в плане того, что почти все опкоды ЛСС известны, но некоторые требуют уточнения)?

Offline

#252 16-08-2019 09:16

wmysterio
From: Ukraine
Registered: 04-03-2011
Posts: 188
Website

Re: Sanny Builder v3.xx

XEPOMAHT007 wrote:

Мне быстрее перебрать всю базу вручную, чем изучать языки программирования

Пожалуй, ты прав. Почему-то подумал, что если я программист, то и все остальные здесь тоже программисты grin  Всё же перебор больших объёмов данными вручную та ещё работёнка.

Seemann wrote:

А можешь проверить те INI, на которые я дал ссылки, как у них с этим?

По параметрам и последовательностью было всё в порядке. По крайней мере я не нашел ничего подозрительного. С описанием нужно более подробно посмотреть.

Last edited by wmysterio (16-08-2019 09:27)

Offline

#253 17-08-2019 18:19

Seemann
Registered: 07-08-2006
Posts: 2,062

Re: Sanny Builder v3.xx

XEPOMAHT007 wrote:

Стоит ждать компиляцию мейна LCS (что наверное будет логично в плане того, что почти все опкоды ЛСС известны, но некоторые требуют уточнения)?

да, хочу попробовать. на текущий момент формат main.scm мне понятен, особых трудностей возникнуть не должно. если получится, мог бы помочь с тестированием?

Offline

#254 19-08-2019 07:01

XEPOMAHT007
Registered: 05-06-2013
Posts: 20

Re: Sanny Builder v3.xx

Seemann wrote:

если получится, мог бы помочь с тестированием?

Да, на PCSX2 смогу протестировать. Если найти совместимый с играми эмулятор яблочной или ведроидной ОС на ПК, то можно тестировать мейны от ЛСС и там.

Offline

#255 08-09-2019 22:16

Seemann
Registered: 07-08-2006
Posts: 2,062

Re: Sanny Builder v3.xx

Вышла версия Sanny Builder v3.3.0
https://sannybuilder.com/ru/downloads.html

•добавлена поддержка для компиляции SCM Liberty City Stories
•добавлены алиасы для переменных-таймеров: TIMERA and TIMERB
•опция Проверка переменных теперь применяется и к глобальным переменным

Патч v3.3.1 https://sannybuilder.com/forums/viewtop … 792#p28792

Замечания к релизу

В этом релизе была добавлена поддержка компиляции для Liberty City Stories.

Отсутствие поддержки для этой игры было вызвано в основном сильно изменившейся системой типов. Хотя дизассемблированные файлы выглядят очень похоже на скрипты GTA 3, скомпилированная версия очень отличается. В скриптах LCS доступно гораздо больше локальных переменных: 96 против 16 в GTA 3. В тоже самое время количество доступных глобальных переменных уменьшилось почти в 3 раза: 6655 против 16383 в GTA 3.

Функции в LCS

Эти изменения обусловлены широким использованием функций и поддержкой локального стека в каждой функции. В предыдущих играх на каждый скрипт выделялась область памяти для хранения локальных переменных, где каждая переменная хранила свое значение по определенному смещению от начала, рассчитываемому как (номер переменной * 4). Например, переменная 1@ хранила свое значение в 4м, 5м, 6м и 7м байтах. В LCS этот подход изменился с добавлением локального стека функции. Теперь каждый скрипт хранит базовый индекс для локальных переменных, так что адрес для хранения каждой переменной рассчитывается по формуле (базовый индекс + номер переменной) * 4.

Новый опкод 05AE и его версия для условий 05AF были добавлены для вызовов функций:

05AE=-1,args %1d% out %2d% locals_base_index %3d% call_func %4p%
05AF=-1,  args %1d% out %2d% locals_base_index %3d% call_func %4p%

где args это кол-во аргументов функции, out - кол-во переменных, в которые будут скопированы результаты функции и  locals_base_index - это новое значение базового индекса для текущего скрипта.

:A
05AE: args 1 out 1 locals_base_index 2 call_func @B 100 $var

в этом примере код, начинающийся с метки A (функция A) вызывает функцию, начинающуюся с метки B (функция B). Перед вызовом базовый индекс текущего скрипта становится равен 2, что означает, что переменные 0@ и 1@ не изменят свое значение в ходе вызова функции B. Переменная 0@ функции B становится равна 100. Выполнение кода переходит на метку B, и он выполняется до тех пор, пока не встретит команду return. После этого локальные переменные функции B копируются по одной в переменные, в конце опкода 05AE ($var в этом примере). И наконец базовый индекс уменьшается на 2.

Сохраняемые переменные

Еще одну сложность в LCS представляют сохраняемые переменные. Система сохранения в LCS реализована таким образом, что часть глобальных переменных сохраняет свое значение между игровыми сессиями (такое же поведение встречается в предыдущих играх), а часть не сохраняет. В заголовке SCM был добавлен список переменных, которые сохраняют свое значение. Sanny Builder отмечает их комбинацией символов $ и _, например $_var. Такие переменные полностью совместимы с другими глобальными переменными, а символ _ говорит компилятору, что такую переменную нужно добавить в список переменных, которые восстанавливают свое значение после загрузки игры.

Переменные-таймеры

Для нивелирования различий между версиями скриптов разных игры и для того, чтобы сделать язык проще для понимания, были добавлены алиасы для переменных-таймеров (известных как 16@ и 17@ или 32@ и 33@). Теперь дизассемблер использует имена TIMERA и TIMERB соответственно. Предыдущие скрипты полностью совместимы с текущей версией, однако использование новых алиасов предпочтительнее.

0006: TIMERA = 0

:WAIT_2S
0001: wait 0 ms
00D6: if
0019:   TIMERA > 2000
004D: jump_if_false @WAIT_2S
0662: printstring "прошло 2 секунды"

Проверка глобальных переменных

Хотя кол-во глобальных переменных достаточно велико, их количество ограничено (обычно 16383). Ранее Sanny Builder разрешал использовать числовые индексы для глобальных переменных, которые выходили за пределы границ области памяти глобальных переменных. Такие переменные компилировались как переменные с текстовыми именами и получали первый доступный индекс. Например, $0 могла стать $2 (или любым другим доступным индексом). Это поведение приводило к неожиданным результатам, так как переменная не тот индекс, на который рассчитывал скриптер. Начиная с этой версии, компилятор выдает ошибку если включена опция Проверка переменных и индекс глобальной переменной выходит за допустимые границы. Использование ADMA-переменных является рекомендованным методом для обращения к памяти за пределами допустимых границ (&0 компилируется как 00 00).

Last edited by Seemann (15-09-2019 00:46)

Offline

#256 09-09-2019 20:36

wmysterio
From: Ukraine
Registered: 04-03-2011
Posts: 188
Website

Re: Sanny Builder v3.xx

Seemann wrote:

и он выполняется до тех пор, пока не встретит команду return

Для условий как определяется "true" и "false"?

Offline

#257 10-09-2019 00:05

Seemann
Registered: 07-08-2006
Posts: 2,062

Re: Sanny Builder v3.xx

Внутри 05AF используются

00C5=RETURN_TRUE
00C6=RETURN_FALSE

Offline

#258 10-09-2019 09:20

wmysterio
From: Ukraine
Registered: 04-03-2011
Posts: 188
Website

Re: Sanny Builder v3.xx

Догадывался, что нужно как-то так делать. Догадки подтвердились.

Как насчёт добавления панели/окна макросов, чтобы было как в "Панель элементов" в Visual Studio?

90286759.png

Удобно, когда они под рукой и одним кликом можно было вставить участок кода в нужное место. Как-то лень каждый раз нажимать CTRL+J и потом ещё искать нужный макрос стрелками в маленьком окошке, которое ещё и автоматически скрывается. Такое должно быть вообще раз плюнуть сделать. Сделать возможность прятать/показывать панель в меню.

Offline

#259 14-09-2019 02:39

Seemann
Registered: 07-08-2006
Posts: 2,062

Re: Sanny Builder v3.xx

wmysterio
у меня серьезные опасения, что с современными редакторами SB уже не потягаться и будет потенциально проще рассмотреть перенос дизассемблера и компилятора под капот готового редактора вроде VS Code.

XEPOMAHT007
удалось попробовать новую версию?

Offline

#260 14-09-2019 09:27

wmysterio
From: Ukraine
Registered: 04-03-2011
Posts: 188
Website

Re: Sanny Builder v3.xx

Seemann wrote:

у меня серьезные опасения, что с современными редакторами SB уже не потягаться и будет потенциально проще рассмотреть перенос дизассемблера и компилятора под капот готового редактора вроде VS Code.

Чем мне нравится SB, так это его независимость от сторонних редакторов, всё уже на месте и лёгкий вес установщика. Я лишь предложил немного упростить работу с макросами.

Не знаю стоит ли гнать компилятор по пути VS Code. И вес большой и тормозной он какой-то. Да и напоминает ситуацию с  MoonLoader, где новичок вот так сразу не разберётся что там и где настраивать. А в SB всё уже в коробке, два клика и всё готово, бери и пользуйся.

Last edited by wmysterio (14-09-2019 13:16)

Offline

#261 15-09-2019 00:44

Seemann
Registered: 07-08-2006
Posts: 2,062

Re: Sanny Builder v3.xx

Обновление Sanny Builder v3.3.1
https://sannybuilder.com/ru/downloads.html

  • исправлен баг #0048

  • добавлен файл constants.txt, который отсутствовал для режима GTA SA

Offline

#262 15-09-2019 08:40

wmysterio
From: Ukraine
Registered: 04-03-2011
Posts: 188
Website

Re: Sanny Builder v3.xx

Заметил, что в поисковике опкодов в режиме III и VC первая строка пустая.

Давно хотел спросить, а почему нет ключевых слов "continue" и "break" в файле "keywords.ini"?

Last edited by wmysterio (15-09-2019 08:40)

Offline

Board footer

Powered by FluxBB