Разработка и ромхакинг > Ромхакинг и программирование
[SS] RLE сжатие графики
<< < (2/2)
DrMefistO:
Сжатие RLE, только хитрое, со словарём.
DrMefistO:
Короче, выкладываю скрипт, который умеет анпачить (сразу разворачивает байты). Скрипт также умеет искать PX и PZ данные в других файлах.

Второй скрип умеет паковать (хуже, чем оригинал, т.к. в оригинале используется умный подбор оптимальных последовательностей, а у меня оптимизации практически нет). Если есть у кого желание доделать (например, у Марата), было бы круто.

Сссылка на скрипты: https://gist.github.com/lab313ru/caf056c30ae1a866c4c7ced257f09d4d
ViToTiV:
DrMefistO, пасиб, это для phyton? Ставить просто последнюю версию и все, или ещё что-то надо установить?
DrMefistO:
Да, питон любой третьей версии
paul_met:

--- Цитата: ViToTiV от 14 Май 2021, 23:21:03 ---а как вытащить дамп VDP1? и что это вообще такое?) я с Сатурном только начал знакомство.
--- Конец цитаты ---
VDP1 - один из видеочипов Сатурна, отвечающих за обработку спрайтов и полигонов. В отладчике VDP1 эмуля Yabause можно видеть все активные в конкретный момент времени спрайты и их характеристики (адрес в видеопамять, размеры, формат цвета и т.д.). Оттуда и дампишь нужный тебе спрайт.
ViToTiV:
всем спасибо, всё пучком)



только в скрипте "pack_cel.py" на 251 строке к аргументам надо "sys." добавить, иначе ошибка.
DrMefistO:
Для того, чтобы многокадровые собирало, там в скрипте сборщика нужно на строке 242 передавать в квадратные скобки данные и остальных блоков, просто я тестировал на одном, и не успел добавить открытие списка файлов.

А про 'sys.' - да, перед публикацией скрипта в конце добавлял аргументы, на скорую руку уже, поэтому забыл:).
Марат:

--- Цитата: DrMefistO от 15 Май 2021, 06:56:55 ---Второй скрип умеет паковать (хуже, чем оригинал, т.к. в оригинале используется умный подбор оптимальных последовательностей, а у меня оптимизации практически нет). Если есть у кого желание доделать (например, у Марата), было бы круто.
--- Конец цитаты ---
Вот. Ещё в идеале надо добавить обработку переполнения словаря: когда словарь заполнится отправлять словарь и ссылки на фразы в словаре в выходной поток, и дальше работать с новым пустым словарём.

Перезалил.
Марат:
Кстати, здесь
--- Код: ---dest += pack_word(len(data))
--- Конец кода ---
в оригинале указан размер сжатого файла без хедера. А у тебя указан размер несжатого файла.

--- Код: ---    for data in blocks:
        dest += pack_word(len(data))
        packed, woff = pack_block(data)
        dest += pack_word(woff)
        dest += packed

    return dest
--- Конец кода ---
изменил на

--- Код: ---    for data in blocks:
        packed, woff = pack_block(data)
        dest += pack_word(len(packed) + 2 + 2)
        dest += pack_word(woff)
        dest += packed
--- Конец кода ---
DrMefistO:
Супер, спасибо:)
Навигация
Главная страница сообщений
Предыдущая страница

Перейти к полной версии