![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Yoti |
![]()
Сообщение
#1
|
Member ![]() ![]() Группа: Authorized Сообщений: 13 Регистрация: 27-August 18 Пользователь №: 18,031 Спасибо сказали: 4 раз(а) ![]() |
clibtool - общая утилита для обоих файлов (с исходниками).
https://github.com/Yoti/psv_mybigsis/releases/tag/v3.0 --- Распаковщик для игрового контейнера "AGSProject.ags" - agsunpak Распаковщик для звукового контейнера "audio.vox" - voxunpak Использование: положить рядом с указанным файлом, запустить, подождать. Ссылка на загрузку: https://github.com/Yoti/psv_mybigsis/releases/tag/v1.0 Упаковщик для содержимого звукового контейнера "audio_vox" - voxrepak Использование: положить рядом с указанной папкой, запустить, подождать. Ссылка на загрузку: https://github.com/Yoti/psv_mybigsis/releases/tag/v1.5 P.S. Файл собирается до байта совпадающий с оригинальным. Упаковщик для содержимого игрового контейнера "AGSProject_ags" - agsrepak Использование: положить рядом с указанной папкой, запустить, подождать. Ссылка на загрузку: https://github.com/Yoti/psv_mybigsis/releases/tag/v2.0 P.S. Написал себе утилиту получше, потому делюсь этим пакером. Спасибо сказали:
|
-=CHE@TER=- |
![]()
Сообщение
#2
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Во! Отлично!
Пара моментов (если никто не против небольшой критики): 1) Если что, то я проверить не смогу - у меня нет игры и форматы мне неизвестны. 2) А чего без исходных кодов? Нет, это, конечно, личное дело каждого и, если что, то я не против. Просто обсуждение исходных кодов, например, может помочь самому совершенствоваться в написании программ и алгоритмов. Зря я, наверное, это говорю - это же мне придётся исходные коды читать и комментировать... Ладно, я этого не писал, вы этого не видели. (*улыбается*) 3) Я давно понял весь бесперспективняк упаковщиков исполняемых файлов, если это не demoscene. UPX мы, кстати, обсуждали на форуме когда-то вот тут. Товарищ angeld29 там, в общем-то, всё правильно написал в конце. Ну, конечно, упаковщики ещё можно как простое средство для защиты кода использовать, но тут важно помнить о том что оно простое. 4) А! Так это Delphi, вот почему толстое всё. Переходи на 5) Хм, в выложенных программах минимальная версия системы 5.0 - это мне для запуска распаковщика минимум Windows 2000 нужен (NT 5.0)? А! Это, наверное, Delphi такую версию автоматом ставит - видимо, этот Delphi старше 7-го. |
Yoti |
![]()
Сообщение
#3
|
Member ![]() ![]() Группа: Authorized Сообщений: 13 Регистрация: 27-August 18 Пользователь №: 18,031 Спасибо сказали: 4 раз(а) ![]() |
Упаковано в UPX для того, чтобы меньше весило. Быстрее скачивалось из Интернет и меньше занимало места на HDD. Собрано на Delphi 2010. Консольное приложение там стало 300 кб, вместо 90 как у Delphi 7. На Си переписывать не хочу, нет пользы. Проверять там нечего, всё работает. Вся структура: заголовок, количество файлов, таблица и дальше тела файлов без выравнивания. Исходники позже, есть желание игру перевести. После завершения перевода или по факту отказа от идеи выложу вместе с упаковщиком.
|
-=CHE@TER=- |
![]()
Сообщение
#4
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Упаковано в UPX для того, чтобы меньше весило. Быстрее скачивалось из Интернет и меньше занимало места на HDD. Это-то понятно и логично, с этим никто не спорит.Собрано на Delphi 2010. Консольное приложение там стало 300 кб, вместо 90 как у Delphi 7. Там не 90, а 15 должно быть. Сейчас без всяких хаков взял программу "test.dpr":CODE {$APPTYPE CONSOLE} Собираю её:begin writeln('Hello world!'); end. dcc32 test.dpr Получился test.exe размером 15360 (можно до 14336 уменьшить, если StripReloc применить). На Си переписывать не хочу, нет пользы. Так я ж и писал, что можно не переписывая попробовать жир снять. А что до Си как языка, то понимание что на нём многие технические вещи пишутся проще и быстрее, чем на том же Delphi, приходит с опытом и большим количеством написанного кода. Торопиться не нужно. (*улыбается*)Проверять там нечего, всё работает. Вся структура: заголовок, количество файлов, таблица и дальше тела файлов без выравнивания. Дело было не в проверять - написать программу можно как угодно - если она работает так как задумано, то остальное уже детали. Но мне, например, интересны технические детали - они позволяют писать более аккуратный, надёжный, быстрый и даже короткий код. Подсмотрев где-то интересные приёмы, я адаптирую их для своих нужд. Ладно, я, наверное, не смогу ясно объяснить что я здесь хотел сказать, ибо уставший совсем.Ну, например, нужно тебе найти все изображения с точным соотношеним сторон 4 к 3. Можно так сделать: if ((width div 4) = (height div 3)) then ... Но у тебя получается два деления и непонятно что с остатком, так что лучше делать так: if ((width*3) = (height*4)) then ... Здесь тоже не всё гладко, т.к. может быть переполнение, но уже лучше (нет проблемы с остатком, для переполнения должны быть очень большие числа, особенно если тип переменных как минимум uint32) и быстрее (умножение быстрее деления, к тому же копилятор оптимизирует оба умножения через сдвиг, что ещё быстрее: width*3 => (width shl 1)+width; height*4 => height shl 2). Собственно это и есть обсуждение кода и каких-то вещей там. Но, если не интересно, то приставать не буду. Исходники позже, есть желание игру перевести. После завершения перевода или по факту отказа от идеи выложу вместе с упаковщиком. А! Вот оно что, тогда понятно. Удачи с проектом! |
Yoti |
![]()
Сообщение
#5
|
Member ![]() ![]() Группа: Authorized Сообщений: 13 Регистрация: 27-August 18 Пользователь №: 18,031 Спасибо сказали: 4 раз(а) ![]() |
|
Yoti |
![]()
Сообщение
#6
|
Member ![]() ![]() Группа: Authorized Сообщений: 13 Регистрация: 27-August 18 Пользователь №: 18,031 Спасибо сказали: 4 раз(а) ![]() |
Перенёс всё в шапку, выложил окончательную утилиту вместе с исходниками.
Спасибо сказали:
|
-=CHE@TER=- |
![]()
Сообщение
#7
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Поздравляю с релизом!
Поглядел бегло исходные коды - код достаточно аккуратный и чистый. Молодец! |
Yoti |
![]()
Сообщение
#8
|
Member ![]() ![]() Группа: Authorized Сообщений: 13 Регистрация: 27-August 18 Пользователь №: 18,031 Спасибо сказали: 4 раз(а) ![]() |
Так я не один десяток паковщиков написал уже. =)
|
necros2k7 |
![]()
Сообщение
#9
|
Newbie ![]() Группа: Authorized Сообщений: 9 Регистрация: 8-August 22 Пользователь №: 18,035 Спасибо сказали: 1 раз(а) ![]() |
Предлагаю тему переименовать в AGS или Adventure game studio ибо утилиты подходят для всех игр этого движка. П.С. нужна помощь, не соображу что делаю не так, есть утилиты для оптимизации и перепаковки https://github.com/rofl0r/agsutils/releases...0.9.8-win32.zip
под Win11 запускаю из под MSYS2 root@ROOT MSYS ~ # agsex game.exe FILES OBJ :::AGStract 0.9.8 by rofl0r::: error opening game.exe что не так в синтаксисе? задача оптимизировать и снова запаковать п.с. В принципе утилиты Yoti должны справляться тоже хорошо но тут фишка - оптимизация самого кода после компилятора AGS |
-=CHE@TER=- |
![]()
Сообщение
#10
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Не понял зачем под Win11 запускать из под MSYS2, если в программе и так виндовый экзешник?
Скорее всего, она не может найти "game.exe" потому что ищет его в /bin/ или ей нужно указывать полный путь до файла. А проще напрямую, без MSYS2 запускать, наверное, будет и проще и понятней. |
necros2k7 |
![]()
Сообщение
#11
|
Newbie ![]() Группа: Authorized Сообщений: 9 Регистрация: 8-August 22 Пользователь №: 18,035 Спасибо сказали: 1 раз(а) ![]() |
нет, в том и дело что agsex - это баш скрипт, нет его в виде exe
game.exe лежит там же где и agsex - c:\msys64\usr\bin |
-=CHE@TER=- |
![]()
Сообщение
#12
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
А! Вот оно что. Проверил отдельно "agstract.exe" - он нормально работает. Значит, действительно, проблема в MSYS2 и том, что он файл найти не может. Нужно посмотреть какой каталог текущий, возможно, что, наоборот, не /bin/, а какой-то другой. Набери в MSYS2 команду "ls" (без ковычек, это что-то типа "dir" в Windows) и посмотри какие файлы будут выведены на экран - в каком каталоге ты сейчас находишься туда и перемести свой "game.exe". Или через команду "cd" (работает также, как и в Windows) перейди в нужный и оттуда уже вызывай. Конкретно MSYS2 у меня не стоит, но описанная схема в общем и целом для подобных иксовых программ должна работать.
Спасибо сказали:
|
![]() ![]() |
Упрощённая версия | Сейчас: 8th September 2024 - 04:35 |