IPB

Добро пожаловать, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
> My Big Sister (PS Vita) [Adventure Game Studio (AGS)], распаковщики ресурсов
Yoti
May 12 2019, 15:56
Сообщение #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. Написал себе утилиту получше, потому делюсь этим пакером.


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
May 12 2019, 17:02
Сообщение #2


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,332
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 310 раз(а)



Во! Отлично!
Пара моментов (если никто не против небольшой критики):
1) Если что, то я проверить не смогу - у меня нет игры и форматы мне неизвестны.
2) А чего без исходных кодов? Нет, это, конечно, личное дело каждого и, если что, то я не против. Просто обсуждение исходных кодов, например, может помочь самому совершенствоваться в написании программ и алгоритмов. Зря я, наверное, это говорю - это же мне придётся исходные коды читать и комментировать... Ладно, я этого не писал, вы этого не видели. (*улыбается*)
3) Я давно понял весь бесперспективняк упаковщиков исполняемых файлов, если это не demoscene. UPX мы, кстати, обсуждали на форуме когда-то вот тут. Товарищ angeld29 там, в общем-то, всё правильно написал в конце. Ну, конечно, упаковщики ещё можно как простое средство для защиты кода использовать, но тут важно помнить о том что оно простое.
4) А! Так это Delphi, вот почему толстое всё. Переходи на Тёмную Сторону^W^W язык Си. (*улыбается*) Не, так-то никто не против Delphi, но есть с ним определённые заморочки (типа адовой ненависти к нему антивирусов). А если захочешь Delphi на диету посадить, то вот здесь тема интересная есть, где товарищ Grom PE выкладывал свои наработки по уменьшению жира (пишет, что тестировал на Delphi 4, 5, 6, 7, 2006, 2007 - про другие неизвестно).
5) Хм, в выложенных программах минимальная версия системы 5.0 - это мне для запуска распаковщика минимум Windows 2000 нужен (NT 5.0)? А! Это, наверное, Delphi такую версию автоматом ставит - видимо, этот Delphi старше 7-го.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Yoti
May 12 2019, 18:34
Сообщение #3


Member
**

Группа: Authorized
Сообщений: 13
Регистрация: 27-August 18
Пользователь №: 18,031
Спасибо сказали: 4 раз(а)



Упаковано в UPX для того, чтобы меньше весило. Быстрее скачивалось из Интернет и меньше занимало места на HDD. Собрано на Delphi 2010. Консольное приложение там стало 300 кб, вместо 90 как у Delphi 7. На Си переписывать не хочу, нет пользы. Проверять там нечего, всё работает. Вся структура: заголовок, количество файлов, таблица и дальше тела файлов без выравнивания. Исходники позже, есть желание игру перевести. После завершения перевода или по факту отказа от идеи выложу вместе с упаковщиком.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
May 12 2019, 19:13
Сообщение #4


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,332
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 310 раз(а)



QUOTE(Yoti @ May 12 2019, 18:34) *
Упаковано в UPX для того, чтобы меньше весило. Быстрее скачивалось из Интернет и меньше занимало места на HDD.
Это-то понятно и логично, с этим никто не спорит.

QUOTE(Yoti @ May 12 2019, 18:34) *
Собрано на 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 применить).

QUOTE(Yoti @ May 12 2019, 18:34) *
На Си переписывать не хочу, нет пользы.
Так я ж и писал, что можно не переписывая попробовать жир снять. А что до Си как языка, то понимание что на нём многие технические вещи пишутся проще и быстрее, чем на том же Delphi, приходит с опытом и большим количеством написанного кода. Торопиться не нужно. (*улыбается*)

QUOTE(Yoti @ May 12 2019, 18:34) *
Проверять там нечего, всё работает. Вся структура: заголовок, количество файлов, таблица и дальше тела файлов без выравнивания.
Дело было не в проверять - написать программу можно как угодно - если она работает так как задумано, то остальное уже детали. Но мне, например, интересны технические детали - они позволяют писать более аккуратный, надёжный, быстрый и даже короткий код. Подсмотрев где-то интересные приёмы, я адаптирую их для своих нужд. Ладно, я, наверное, не смогу ясно объяснить что я здесь хотел сказать, ибо уставший совсем.
Ну, например, нужно тебе найти все изображения с точным соотношеним сторон 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).
Собственно это и есть обсуждение кода и каких-то вещей там.
Но, если не интересно, то приставать не буду.

QUOTE(Yoti @ May 12 2019, 18:34) *
Исходники позже, есть желание игру перевести. После завершения перевода или по факту отказа от идеи выложу вместе с упаковщиком.
А! Вот оно что, тогда понятно. Удачи с проектом!
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Yoti
May 12 2019, 20:52
Сообщение #5


Member
**

Группа: Authorized
Сообщений: 13
Регистрация: 27-August 18
Пользователь №: 18,031
Спасибо сказали: 4 раз(а)



QUOTE(-=CHE@TER=- @ May 12 2019, 19:13) *

Там не 90, а 15 должно быть. Сейчас без всяких хаков взял программу "test.dpr":

В моём случае вот это весу добавляет:
CODE
uses
  Classes,
  SysUtils,
  Windows;

Классы нужны для работы потоками, в Винда для оформления заголовка окошка.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Yoti
May 25 2019, 20:08
Сообщение #6


Member
**

Группа: Authorized
Сообщений: 13
Регистрация: 27-August 18
Пользователь №: 18,031
Спасибо сказали: 4 раз(а)



Перенёс всё в шапку, выложил окончательную утилиту вместе с исходниками.


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
May 25 2019, 20:22
Сообщение #7


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,332
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 310 раз(а)



Поздравляю с релизом!
Поглядел бегло исходные коды - код достаточно аккуратный и чистый.
Молодец!
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Yoti
May 30 2019, 11:34
Сообщение #8


Member
**

Группа: Authorized
Сообщений: 13
Регистрация: 27-August 18
Пользователь №: 18,031
Спасибо сказали: 4 раз(а)



Так я не один десяток паковщиков написал уже. =)
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
necros2k7
Aug 29 2022, 10:24
Сообщение #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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Aug 29 2022, 14:45
Сообщение #10


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,332
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 310 раз(а)



Не понял зачем под Win11 запускать из под MSYS2, если в программе и так виндовый экзешник?
Скорее всего, она не может найти "game.exe" потому что ищет его в /bin/ или ей нужно указывать полный путь до файла. А проще напрямую, без MSYS2 запускать, наверное, будет и проще и понятней.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
necros2k7
Aug 30 2022, 01:31
Сообщение #11


Newbie
*

Группа: Authorized
Сообщений: 9
Регистрация: 8-August 22
Пользователь №: 18,035
Спасибо сказали: 1 раз(а)



нет, в том и дело что agsex - это баш скрипт, нет его в виде exe
game.exe лежит там же где и agsex - c:\msys64\usr\bin
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Aug 30 2022, 09:27
Сообщение #12


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,332
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 310 раз(а)



А! Вот оно что. Проверил отдельно "agstract.exe" - он нормально работает. Значит, действительно, проблема в MSYS2 и том, что он файл найти не может. Нужно посмотреть какой каталог текущий, возможно, что, наоборот, не /bin/, а какой-то другой. Набери в MSYS2 команду "ls" (без ковычек, это что-то типа "dir" в Windows) и посмотри какие файлы будут выведены на экран - в каком каталоге ты сейчас находишься туда и перемести свой "game.exe". Или через команду "cd" (работает также, как и в Windows) перейди в нужный и оттуда уже вызывай. Конкретно MSYS2 у меня не стоит, но описанная схема в общем и целом для подобных иксовых программ должна работать.


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0 -

 



Упрощённая версия Сейчас: 1st December 2022 - 15:55