PDA

Просмотр полной версии : Программа для открытия .cdp архивов (разработка)



SeriousKaktus
05.02.2019, 20:21
Привет, форумчане. Такая задача стоит - нужно распаковать архив, в котором содержатся данные с контентом для Trainz Simulator. Все файлы, которые описал в посте приложу в архиве.

.CDP файл представляет собой архив, который пожат с помощью lzss, о чем он сам говорит :D
http://images.vfl.ru/ii/1549388460/39dba715/25267647.png

Пример структуры Test_Kaktus.cdp

body.im - 3d модель (*.im)
config.txt - конфигурационный файл
test.jpg - текстура (*.jpg)
test-test.texture.txt - конфиг для текстуры (*-*.texture.txt)

Открыл хексом несколько cdp файлов - hex структура одинаковая (логично)

http://images.vfl.ru/ii/1549387358/5ed0a080/25267446.png

Вот пример файла в пожатом архиве

http://images.vfl.ru/ii/1549388297/c456c6b9/25267631.png

Я пробовал сделать декомпрессию готовой программой - https://gist.github.com/davidreynolds/3025423, но на выходе получается мура (наверное, в программе не заданы смещения относительно моей структуры cdp?)

Конкретно по поводу трейнза - нашел единственную тему, где человек тоже что-то пытался сделать - http://forum.xentax.com/viewtopic.php?f=21&t=4005&start=0 - он нашел смещения относительно сжатого и не пожатого файла (?)

Прошу помощи в данном вопросе, в частности - куда копать и с чего начинать разбор формата? Подходит ли прога с гитхаба вообще для этого? :phil:

Буду рад, если подскажите что-нибудь. Файлы cdp + распакованные cdp в самой игре прикрепил в архиве:

Скачать: https://yadi.sk/d/7qCLMv5EC3zUBQ

OlegKhim
05.02.2019, 20:34
Как то этот велосипед уже изобретен... https://www.tapatalk.com/groups/vvmm/software-f56/
Тема на форуме https://forum.trainzup.net/showthread.php?t=4612

SeriousKaktus
05.02.2019, 20:35
Как то этот велосипед уже изобретен... https://www.tapatalk.com/groups/vvmm/software-f56/

cdp по файлам не одна же не распаковывает

OlegKhim
05.02.2019, 20:42
Как то этот велосипед уже изобретен... https://www.tapatalk.com/groups/vvmm/software-f56/

cdp по файлам не одна же не распаковывает

Не рапаковывает не одна, потому шо по файлам
Понятно написал?

SeriousKaktus
05.02.2019, 20:43
Как то этот велосипед уже изобретен... https://www.tapatalk.com/groups/vvmm/software-f56/

cdp по файлам не одна же не распаковывает

Не рапаковывает не одна, потому шо по файлам
Понятно написал?

Нет, не понятно. Я как раз распаковку и пытаюсь реализовать.

OlegKhim
05.02.2019, 20:44
Зачем распаковывать отдельно, когда это умеет игра?

SeriousKaktus
05.02.2019, 20:45
Зачем распаковывать отдельно, когда это умеет игра?

Как минимум - для простого экспорта в Trainz Simulator Mobile, где используются распакованные CDP файлы.

OlegKhim
05.02.2019, 20:54
Распакованные файлы распаковываются в папку \editing
Хранятся в папках \local или \original

SeriousKaktus
05.02.2019, 21:05
Распакованные файлы распаковываются в папку \editing
Хранятся в папках \local или \original

Я знаю пути где что хранится распакованное. Я хочу сделать независимо от трейнза распаковщик.

kemal
06.02.2019, 02:09
Удачи!
Разложить пакет по ассетам - запросто! Тот же репозиторий это умеет. А вот с файлами беда - там, внезапно, может оказаться НЕ lzss!
И да, сжимается не пакет целиком, а каждый файл независимо. Конфиги там не сжаты.

---------- Сообщение добавлено в 03:09 ---------- Предыдущее сообщение размещено в 03:08 ----------

https://bitbucket.org/e-kemal/akr_kuid_repository
Исходники репозитория, если интересно.

SeriousKaktus
06.02.2019, 12:47
Удачи!
Разложить пакет по ассетам - запросто! Тот же репозиторий это умеет. А вот с файлами беда - там, внезапно, может оказаться НЕ lzss!
И да, сжимается не пакет целиком, а каждый файл независимо. Конфиги там не сжаты.


Начал с простого. Создал cdp в км с одним единственным config.txt такого содержания.

kuid <kuid:783278:101094>
username "test_texture"
trainz-build 3.1
category-class "JC"
category-region
category-era
kind "texture"
texture


В самом cdp получилось это. (txt содержимое выделил курсивом)

ACS$‚ïassetsâ<kuid:783278:101094>kuid
®ó æŠ usernametest_texture
trainz-buildffF@category-classJCcategory-region
category-erakindtexture
texture compressionLZSSfiles!contents-table 0
®ó æŠ
kuid-tableobsolete-tablekindarchivepackage-version usernameunknown


Все равно он пожимает его, нули убирает. Но это не lzss.

kemal
06.02.2019, 12:51
Что ты хочешь этим сказать? Я этих цдп уже много насмотрелся, пока репозиторий писал.

PS курив - это вот так

Donate with PayPal button

New New