#251 16-08-2019 08:13

XEPOMAHT007
Registered: 05-06-2013
Posts: 21

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
Registered: 04-03-2011
Posts: 215
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,155

Re: Sanny Builder v3.xx

XEPOMAHT007 wrote:

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

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

Offline

#254 19-08-2019 07:01

XEPOMAHT007
Registered: 05-06-2013
Posts: 21

Re: Sanny Builder v3.xx

Seemann wrote:

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

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

Offline

#255 08-09-2019 22:16

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

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
Registered: 04-03-2011
Posts: 215
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,155

Re: Sanny Builder v3.xx

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

00C5=RETURN_TRUE
00C6=RETURN_FALSE

Offline

#258 10-09-2019 09:20

wmysterio
Registered: 04-03-2011
Posts: 215
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,155

Re: Sanny Builder v3.xx

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

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

Offline

#260 14-09-2019 09:27

wmysterio
Registered: 04-03-2011
Posts: 215
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,155

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
Registered: 04-03-2011
Posts: 215
Website

Re: Sanny Builder v3.xx

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

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

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

Offline

#263 24-09-2019 20:49

XEPOMAHT007
Registered: 05-06-2013
Posts: 21

Re: Sanny Builder v3.xx

Seemann wrote:

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

PS2-версия LCS на эмуляторе вешается при чтении перекомпелированного main.scm. Да и сам main.scm после перекомпиляции почему-то весит меньше оригинального. Скорее всего Sanny Builder не читает мейн от LCS целиком  sad

Offline

#264 29-09-2019 03:57

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

Re: Sanny Builder v3.xx

XEPOMAHT007 wrote:
Seemann wrote:

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

PS2-версия LCS на эмуляторе вешается при чтении перекомпелированного main.scm. Да и сам main.scm после перекомпиляции почему-то весит меньше оригинального. Скорее всего Sanny Builder не читает мейн от LCS целиком  sad

Можешь уточнить на какой версии SCM тестировал? Я пробовал на этом и после компиляции файл получается даже больше оригинала (1 354 689 байт)

Offline

#265 20-10-2019 18:59

wmysterio
Registered: 04-03-2011
Posts: 215
Website

Re: Sanny Builder v3.xx

Seemann, загляни в баг-трекер, некоторые опкоды неправильно компилируется.

***

Нашел ещё один баг... На этот раз пострадали внешние скрипты. Добавил рапорт в баг-трекер.

Offline

#266 20-10-2019 23:16

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

Re: Sanny Builder v3.xx

Спасибо за детальные репорты , пофикшено. Если еще что-то обнаружишь, пиши.

Offline

#267 21-10-2019 09:25

wmysterio
Registered: 04-03-2011
Posts: 215
Website

Re: Sanny Builder v3.xx

Seemann wrote:

Спасибо за детальные репорты , пофикшено.

Спасибо за оперативность wink

Seemann wrote:

Если еще что-то обнаружишь, пиши.

Хорошо.

Offline

#268 04-08-2020 17:30

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

Re: Sanny Builder v3.xx

Сегодня исполняется 15 лет с момента появления Sanny Builder! И сегодня выпущена новая версия 3.4.0.
https://sannybuilder.com/ru/downloads.html

Основные изменения:

  • добавлена поддержка компиляции SCM в GTA: Vice City Stories

    После многих лет ожидания, компилятор получил начальную поддержку для формата SCM в GTA VCS. Во многом этот формат схож с GTA Liberty City Stories, но многие привычные опкоды имеют другие ID, не совпадающие с предыдущими играми.
    Результаты компиляции не тестировались на реальной игре, если у вас есть такая возможность, пожалуйста сообщите, как оно работает.

    В добавлением этой возможности можно уверенно говорить, что Sanny Builder полностью поддерживает всю серию игр GTA 3D. Будем осваивать GTA HD?

  • добавлен упрощенный синтаксис для вызова подпрограмм, используя имя метки

    В языке Sanny Builder появился новый "синтаксический сахар". Теперь можно вызвать подпрограмму, используя имя метки и пару скобок:

    // обе команды равнозначны
    gosub @label
    label()

    Например, классический пример с условным gosub может быть написан так:

    if
      CheckDriverIsMale() 
    jf @gosubFalse 

    Дизассемблер также предпочитает новую форму записи, если опция "Использовать опкоды" выключена.

  • добавлена возможность объявлять локальные переменные с собственными именами

    Переменные в CLEO скриптах могут быть объявлены, используя синтаксис типа:

     <type> <name> [= <value>]

    Например,

    int x

    Также можно сразу присвоить начальное значение:

    int x = 1

    Больше информации: https://docs.sannybuilder.com/v/ru/codi … eremennykh и https://github.com/sannybuilder/dev/issues/32

  • больше конфигураций для режимов редактирования

    Теперь можно изменять путь к файлу opcodes.txt и GXT файлу, который используется при декомпиляции, для каждого режима редактирования. Также можно создавать шаблоны кода, доступные только в текущем режиме.

  • интеграция с новым порталом для документации

    Новый портал с обновленной документацией запущен по адресу https://docs.sannybuilder.com/v/ru. В самом Sanny Builder были добавлены ссылки на новую документацию в главном меню и сообщениях об ошибках. Приветствуются исправления и дополнения: https://github.com/sannybuilder/docs

    Поддержка существующих CHM файлов прекращена. Они будут удалены из комплекта Sanny Builder в одном из будущих релизов.

Полный список изменений

Offline

#269 05-08-2020 13:38

wmysterio
Registered: 04-03-2011
Posts: 215
Website

Re: Sanny Builder v3.xx

Поздравляю с днюхой, Санни!!!

Приветствуются исправления и дополнения

Посмотрю что можно добавить. Скину свои варианты.

label()

CTRL+SPACE не видит нужные функции, хоть и подсвечивает их. Пока пытаюсь извращаться так:

@label() // потом удаляю @

В CLEO хорошо смотрится.

Будем осваивать GTA HD?

Компиляция/декомпиляция основного сценария и новый CLEO для IV и V в SB? Или расширять то, что имеется на других ЯП?

Offline

#270 06-08-2020 12:07

Shag
Registered: 29-03-2010
Posts: 147
Website

Re: Sanny Builder v3.xx

Вау! Отличные новости! Рад, что программа продолжает развиваться. Спасибо!

Offline

#271 06-08-2020 23:11

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

Re: Sanny Builder v3.xx

CTRL+SPACE не видит нужные функции, хоть и подсвечивает их

можешь уточнить сценарий? у меня список функций () выводится по Ctrl+Space

Offline

#272 08-08-2020 08:38

wmysterio
Registered: 04-03-2011
Posts: 215
Website

Re: Sanny Builder v3.xx

Seemann wrote:

можешь уточнить сценарий?

Скорее всего проблема в мой ОС. После активации меню "Новый Cleo-скрипт", сразу пошло всё "не так". Функции пропали и вообще компилятор начал работать как плуг. Потом вообще взбесилась мышка и не реагировала на клики по любым окнам. Я бы не стал на этом останавливаться, если такое не происходило каждый раз. С глюками я могу смириться, главное, чтобы работало. А вот нововведение как раз не работало. Если в других всё нормально, то это, очевидно, моя ОС виновата. Решил с этим поделиться, может это баг.

Для документации нужны иконки радара GTA 3? Я уже всё подготовил и написал *.md-файл. Осталось только узнать нужны ли они.

Last edited by wmysterio (08-08-2020 08:59)

Offline

#273 08-08-2020 20:12

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

Re: Sanny Builder v3.xx

wmysterio wrote:
Seemann wrote:

можешь уточнить сценарий?

Скорее всего проблема в мой ОС. После активации меню "Новый Cleo-скрипт", сразу пошло всё "не так". Функции пропали и вообще компилятор начал работать как плуг. Потом вообще взбесилась мышка и не реагировала на клики по любым окнам. Я бы не стал на этом останавливаться, если такое не происходило каждый раз. С глюками я могу смириться, главное, чтобы работало. А вот нововведение как раз не работало. Если в других всё нормально, то это, очевидно, моя ОС виновата. Решил с этим поделиться, может это баг.

Для документации нужны иконки радара GTA 3? Я уже всё подготовил и написал *.md-файл. Осталось только узнать нужны ли они.

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

документация, конечно, нужна!

Offline

#274 08-08-2020 21:21

wmysterio
Registered: 04-03-2011
Posts: 215
Website

Re: Sanny Builder v3.xx

Seemann wrote:

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

Давай так: я переустановлю ОС и посмотрю результат. Если проблема осталась, то напишу подробно что я делал. Я уверен, что проблема в системе, но может быть, действительно баг, но не факт, что в СБ.

Seemann wrote:

документация, конечно, нужна!

Хорошо, тогда кидаю архив в сообщения.

Offline

#275 09-08-2020 23:11

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

Re: Sanny Builder v3.xx

Хорошо, тогда кидаю архив в сообщения.

спасибо, добавил
https://docs.sannybuilder.com/v/ru/scm- … adar-icons

Offline

Board footer

Powered by FluxBB