| Разработка и ромхакинг > Программирование |
| [PS2] IsoZsoConverter - программа для сжатия образов |
| (1/1) |
| SegaMark:
Долго искал удобный софт для конвертации игр Sony PlayStation 2 между форматами ISO и ZSO, но так и не нашёл подходящего варианта (возможно, плохо искал 😅). В итоге решил написать свою программу — вдруг она будет полезна и кому-то ещё. IsoZsoConverter - программа созданная для удобного конвертирования игр Sony Playstation 2 между Iso и Zso форматом. 📌 Текущая версия: 1.0 На данный момент доступна только конвертирование: ➡️ ISO → ZSO ⚡ Скачать можно здесь:https://gitflic.ru/project/segamark/isozsoconverter/release/7fd51d92-e733-4907-afc8-ce00d7088d9f Планирую развивать проект и добавить обратное конвертирование (ZSO → ISO). |
| Mr2:
При запуске выдаёт ошибку:"You must install .NET Desktop Runtime to run this application." Хотя в системе установлена .NET Framework 4.8 Advanced Services. :neznayu: |
| DrMefistO:
Судя по сорсам, нужен net9.0-windows. |
| SegaMark:
Да она сделана на .NET 9. По идее должно заработать если установить https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-9.0.9-windows-x64-installer, но я не проверял, так как и так работает |
| Sharpnull:
--- Цитата: Mr2 от 10 Сентябрь 2025, 09:44:38 ---При запуске выдаёт ошибку --- Конец цитаты --- Каждый год нужно новую версию .NET ставить и она не заменяет предыдущие версии. Можно запаковать без необходимости устанавливать .NET, но IsoZsoConverter будет размером 128 МиБ. Если бы IsoZsoConverter не использовала WPF, а, например, Avalonia, то можно было бы сделать Native AOT сборку, которая вроде должна весить меньше, так сделано в Mesen. |
| SegaMark:
--- Цитата: Sharpnull от 10 Сентябрь 2025, 14:48:28 ---Каждый год нужно новую версию .NET ставить и она не заменяет предыдущие версии. Можно запаковать без необходимости устанавливать .NET, но IsoZsoConverter будет размером 128 МиБ. Если бы IsoZsoConverter не использовала WPF, а, например, Avalonia, то можно было бы сделать Native AOT сборку, которая вроде должна весить меньше, так сделано в Mesen. --- Конец цитаты --- Спасибо за отзыв, посмотрю что с этим можно сделать. |
| Mr2:
--- Цитата: Sharpnull от 10 Сентябрь 2025, 14:48:28 ---Каждый год нужно новую версию . --- Конец цитаты --- Я редко пользуюсь софтом требующим виртуальные машины. Я думал что у меня последняя версия .NET. :) Всем спасибо за инфу, в том числе за ZSO, раньше с ним не сталкивался. :thumbup: |
| SegaMark:
Обновление программы до версии 1.1 * добавление файлов через аргументы * добавление файлов через drag n drop * исправлены ошибки |
| Yoti:
--- Цитата: DrMefistO от 10 Сентябрь 2025, 09:52:22 ---нужен net9.0-windows --- Конец цитаты --- Для консоли 2000 года. :biggrin: |
| lupus:
--- Цитата: Yoti от 15 Сентябрь 2025, 00:29:34 ---Для консоли 2000 года. :biggrin: --- Конец цитаты --- Было бы хуже, если виртуалка с вин це) |
| SegaMark:
Обновление до версии 1.2 * Добавлена конвертация ZSO->ISO * добавлена проверка на неправильно выбранное преобразование * Оптимизация кода * добавлена пропорция * Исправление ошибок |
| ZinchenkoAndrew:
К сожалению, при конвертации ZSO->ISO всплывающее окно с текстом : "Decompression failed". |
| SegaMark:
Спасибо за фидек. Да в программе есть проблема, что она по какой то причине, некоторые образы не хочет конвертировать |
| Sharpnull:
--- Цитата: SegaMark от 06 Май 2026, 18:20:53 ---Да в программе есть проблема, что она по какой то причине, некоторые образы не хочет конвертировать --- Конец цитаты --- Для исправления разжатия в Manhunt и других нужно в ZSOReadStream.cs изменить: --- Код: ---outSize = LZ4Codec.Decode(inBuf, 0, (int)compressedSize, outBuf, 0, outBuf.Length); if (outSize <= 0) throw new Exception("Decompression failed"); --- Конец кода --- На это: --- Код: ---while (true) { outSize = LZ4Codec.Decode(inBuf, 0, (int)compressedSize, outBuf, 0, outBuf.Length); if (compressedSize == 0) throw new Exception("Decompression failed"); if (outSize > 0) { break; } else { compressedSize--; } } --- Конец кода --- Решение увидел в https://github.com/ps2homebrew/Open-PS2-Loader/blob/39afed2bed96cfa2b90120f07fb32ffa5bf456c1/pc/ziso.py#L62: --- Код: ---def lz4_decompress(compressed, block_size): decompressed = None while True: try: decompressed = lz4.block.decompress( compressed, uncompressed_size=block_size) break except lz4.block.LZ4BlockError: compressed = compressed[:-1] return decompressed --- Конец кода --- Если ошибка разжатия LZ4 блока, уменьшается длина сжатых данных на 1 байт. UPD: Исправил на код лучше. Нужно добавить отмену процесса сжатия/разжатия. Если закрыть программу во время процесса, работа продолжится, а в конце будет ошибка. UPD2: Сборка для теста, на всякий случай. |
| SegaMark:
Спасибо конечно, но можешь это оформить как пул реквест Добавлено позже: --- Цитата: Sharpnull от 06 Май 2026, 22:04:34 ---Нужно добавить отмену процесса сжатия/разжатия. Если закрыть программу во время процесса, работа продолжится, а в конце будет ошибка. --- Конец цитаты --- добавил в issue Добавлено позже: Если тут админы есть перенесите эту тему в Форум Emu-Land.net »Разработка и ромхакинг »Программирование а то сюда мало кто заходит. и это напрямую относиться к программированию. Добавлено позже: вообще я планировал прекратить поддержку данной программы, так как мне нужны еще преобразования. например bin, а это уже получается не IsoZsoConverter. Но пока не придумал как это должно выглядеть, да и сейчас занят другими проектами. Если у кого то есть идеи готов выслушать. |
| ghostdog3:
--- Цитата: SegaMark от 07 Май 2026, 07:03:05 ---перенесите эту тему --- Конец цитаты --- Готово. Успехов! |
| Sharpnull:
--- Цитата: SegaMark от 07 Май 2026, 07:03:05 ---можешь это оформить как пул реквест --- Конец цитаты --- Нет, нет желания там регистрироваться. Тем более может вы хотите написать код по-другому. |
| Беларус:
--- Цитата: SegaMark от 07 Май 2026, 07:03:05 ---это напрямую относиться к программированию --- Конец цитаты --- Не согласен, достаточно глянуть соседние темы - твоя програма не создаёт код и нет обсуждения в виде кода. Только сообщения Sharpnull хоть как-то приблизили к разделу. Иначе в Программирование надо переносить и тему по OPL, и про програмы создания многоигровок, записи на диск и другие утилиты. |
| Навигация |
| Главная страница сообщений |