You are not logged in.
А как же языки программирования, которые подобную рутину отлично выполняют?
Мне быстрее перебрать всю базу вручную, чем изучать языки программирования (на три-с-минусом знаю только ассемблер, и то только для ковыряния в exe и dll и различных манипуляций с чужим кодом, ну ещё и немного максскрипт - только для импорта и экспорта моделей из некоторых игр). Языки высокого уровня типа СИ совершенно не поддаются пониманию непрограммисту.
Если есть что-то актуальнее - присылайте или выкладывайте, я включу в обновление.
Если опкоды следующего вида устроят для сториесов?
00EF=3,030B_SET_CHAR_OBJ_FOLLOW_CHAR_IN_FORMATION %1d% %2d% %3d%
Т.е. для каждого совместимого с GTA3/VC опкода проставлен его соответствующий номер. Для LCS их примерно 90% (несовместимы только 213 опкодов, из которых четверть и не используются в игре), для VCS - немного больше половины (ВСС по части кода - отдельная полноценная GTA, в отличии от ЛСС, который является, по сути, рокстаровской модификацией PS2-версии игрового движка GTA VC, с включениями кода GTA3, поэтому поляки сейчас активно клепают ЛСС на ПК, а про ВСС благополучно положили болт с резьбой).
А что с ними не так?
Просто есть опкоды, которые в сториесах занопили - я копировал таблицу построчно блоками, а потом уже разбирался с ошибками.
Если интересно, как раз LCS для меня сейчас приоритет #1.
Стоит ждать компиляцию мейна LCS (что наверное будет логично в плане того, что почти все опкоды ЛСС известны, но некоторые требуют уточнения)?
Offline
Мне быстрее перебрать всю базу вручную, чем изучать языки программирования
Пожалуй, ты прав. Почему-то подумал, что если я программист, то и все остальные здесь тоже программисты Всё же перебор больших объёмов данными вручную та ещё работёнка.
А можешь проверить те INI, на которые я дал ссылки, как у них с этим?
По параметрам и последовательностью было всё в порядке. По крайней мере я не нашел ничего подозрительного. С описанием нужно более подробно посмотреть.
Last edited by wmysterio (16-08-2019 09:27)
Offline
Стоит ждать компиляцию мейна LCS (что наверное будет логично в плане того, что почти все опкоды ЛСС известны, но некоторые требуют уточнения)?
да, хочу попробовать. на текущий момент формат main.scm мне понятен, особых трудностей возникнуть не должно. если получится, мог бы помочь с тестированием?
Offline
если получится, мог бы помочь с тестированием?
Да, на PCSX2 смогу протестировать. Если найти совместимый с играми эмулятор яблочной или ведроидной ОС на ПК, то можно тестировать мейны от ЛСС и там.
Offline
Вышла версия 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
Внутри 05AF используются
00C5=RETURN_TRUE
00C6=RETURN_FALSE
Offline
Догадывался, что нужно как-то так делать. Догадки подтвердились.
Как насчёт добавления панели/окна макросов, чтобы было как в "Панель элементов" в Visual Studio?
Удобно, когда они под рукой и одним кликом можно было вставить участок кода в нужное место. Как-то лень каждый раз нажимать CTRL+J и потом ещё искать нужный макрос стрелками в маленьком окошке, которое ещё и автоматически скрывается. Такое должно быть вообще раз плюнуть сделать. Сделать возможность прятать/показывать панель в меню.
Offline
wmysterio
у меня серьезные опасения, что с современными редакторами SB уже не потягаться и будет потенциально проще рассмотреть перенос дизассемблера и компилятора под капот готового редактора вроде VS Code.
XEPOMAHT007
удалось попробовать новую версию?
Offline
у меня серьезные опасения, что с современными редакторами SB уже не потягаться и будет потенциально проще рассмотреть перенос дизассемблера и компилятора под капот готового редактора вроде VS Code.
Чем мне нравится SB, так это его независимость от сторонних редакторов, всё уже на месте и лёгкий вес установщика. Я лишь предложил немного упростить работу с макросами.
Не знаю стоит ли гнать компилятор по пути VS Code. И вес большой и тормозной он какой-то. Да и напоминает ситуацию с MoonLoader, где новичок вот так сразу не разберётся что там и где настраивать. А в SB всё уже в коробке, два клика и всё готово, бери и пользуйся.
Last edited by wmysterio (14-09-2019 13:16)
Offline
Обновление Sanny Builder v3.3.1
https://sannybuilder.com/ru/downloads.html
исправлен баг #0048
добавлен файл constants.txt, который отсутствовал для режима GTA SA
Offline
удалось попробовать новую версию?
PS2-версия LCS на эмуляторе вешается при чтении перекомпелированного main.scm. Да и сам main.scm после перекомпиляции почему-то весит меньше оригинального. Скорее всего Sanny Builder не читает мейн от LCS целиком
Offline
Seemann wrote:удалось попробовать новую версию?
PS2-версия LCS на эмуляторе вешается при чтении перекомпелированного main.scm. Да и сам main.scm после перекомпиляции почему-то весит меньше оригинального. Скорее всего Sanny Builder не читает мейн от LCS целиком
Можешь уточнить на какой версии SCM тестировал? Я пробовал на этом и после компиляции файл получается даже больше оригинала (1 354 689 байт)
Offline
Спасибо за детальные репорты , пофикшено. Если еще что-то обнаружишь, пиши.
Offline
Сегодня исполняется 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
Поздравляю с днюхой, Санни!!!
Приветствуются исправления и дополнения
Посмотрю что можно добавить. Скину свои варианты.
label()
CTRL+SPACE не видит нужные функции, хоть и подсвечивает их. Пока пытаюсь извращаться так:
@label() // потом удаляю @
В CLEO хорошо смотрится.
Будем осваивать GTA HD?
Компиляция/декомпиляция основного сценария и новый CLEO для IV и V в SB? Или расширять то, что имеется на других ЯП?
Offline
CTRL+SPACE не видит нужные функции, хоть и подсвечивает их
можешь уточнить сценарий? у меня список функций () выводится по Ctrl+Space
Offline
можешь уточнить сценарий?
Скорее всего проблема в мой ОС. После активации меню "Новый Cleo-скрипт", сразу пошло всё "не так". Функции пропали и вообще компилятор начал работать как плуг. Потом вообще взбесилась мышка и не реагировала на клики по любым окнам. Я бы не стал на этом останавливаться, если такое не происходило каждый раз. С глюками я могу смириться, главное, чтобы работало. А вот нововведение как раз не работало. Если в других всё нормально, то это, очевидно, моя ОС виновата. Решил с этим поделиться, может это баг.
Для документации нужны иконки радара GTA 3? Я уже всё подготовил и написал *.md-файл. Осталось только узнать нужны ли они.
Last edited by wmysterio (08-08-2020 08:59)
Offline
Seemann wrote:можешь уточнить сценарий?
Скорее всего проблема в мой ОС. После активации меню "Новый Cleo-скрипт", сразу пошло всё "не так". Функции пропали и вообще компилятор начал работать как плуг. Потом вообще взбесилась мышка и не реагировала на клики по любым окнам. Я бы не стал на этом останавливаться, если такое не происходило каждый раз. С глюками я могу смириться, главное, чтобы работало. А вот нововведение как раз не работало. Если в других всё нормально, то это, очевидно, моя ОС виновата. Решил с этим поделиться, может это баг.
Для документации нужны иконки радара GTA 3? Я уже всё подготовил и написал *.md-файл. Осталось только узнать нужны ли они.
хм, странно. не хотелось бы конечно мириться с глюками, если они есть. может получится записать видео, чтобы я посмотрел как оно себя ведет?
документация, конечно, нужна!
Offline
хм, странно. не хотелось бы конечно мириться с глюками, если они есть. может получится записать видео, чтобы я посмотрел как оно себя ведет?
Давай так: я переустановлю ОС и посмотрю результат. Если проблема осталась, то напишу подробно что я делал. Я уверен, что проблема в системе, но может быть, действительно баг, но не факт, что в СБ.
документация, конечно, нужна!
Хорошо, тогда кидаю архив в сообщения.
Offline
Хорошо, тогда кидаю архив в сообщения.
спасибо, добавил
https://docs.sannybuilder.com/v/ru/scm- … adar-icons
Offline