IPB

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

 
Reply to this topicStart new topic
> My Big Sister (PS Vita), распаковщики ресурсов
Yoti
May 12 2019, 15:56
Сообщение #1


Member
**

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



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,210
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 287 раз(а)



Во! Отлично!
Пара моментов (если никто не против небольшой критики):
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
Спасибо сказали: 3 раз(а)



Упаковано в 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,210
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 287 раз(а)



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
Спасибо сказали: 3 раз(а)



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
Спасибо сказали: 3 раз(а)



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


Спасибо сказали:
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,210
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 287 раз(а)



Поздравляю с релизом!
Поглядел бегло исходные коды - код достаточно аккуратный и чистый.
Молодец!
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
Спасибо сказали: 3 раз(а)



Так я не один десяток паковщиков написал уже. =)
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

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

 



Упрощённая версия Сейчас: 20th November 2019 - 09:35