Автор Тема: Помогите разобраться с сжатием в Crash Bandicoot [PSX]  (Прочитано 823 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Nik Pi

  • Пользователь
  • Сообщений: 149
    • Просмотр профиля
На протяжении последних нескольких лет- я, SlavaVlasov, и MFS пытались распознать и взломать сжатие в первом бандикуте с целью перевода (чтобы так сказать, завершить трилогию). Но всё увы тщетно. Даже Энди Гэвин (один из разработчиков) ответил лишь "непомню, лол".
Много где вопрос поднимал, но никто не смог помочь.
Вся соль в том, что сжатые фрагменты сжаты не полностью, видны хвостики букв.
Может хоть тут смогут помочь?

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5144
    • Просмотр профиля
Я открыл шрифт через https://github.com/cbhacks/CrashEdit, хранится как кусок для записи в framebuffer. Texture Chunk 3 (Fon0T) выглядит так:

UPD: При открытии были ошибки, я их пропускал.
UPD2: Сам NSF имеет сжатие, код из редактора.
« Последнее редактирование: 29 Июнь 2022, 19:54:47 от Sharpnull »

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8119
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Нет там никакого сжатия.

248806-0

Оффлайн Nik Pi

  • Пользователь
  • Сообщений: 149
    • Просмотр профиля
Я открыл шрифт через https://github.com/cbhacks/CrashEdit, хранится как кусок для записи в framebuffer. Texture Chunk 3 (Fon0T) выглядит так:
(Ссылка на вложение)
UPD: При открытии были ошибки, я их пропускал.
UPD2: Сам NSF имеет сжатие, код из редактора.
Хе-хе. Нееееет. Не всё так просто  :)
Там дубликаты всего и вся. Есть сжатые текстуры, и несжатые сразу в одном архиве. Этот несжатый тоже используется, но сжатый используется чаще


Там есть даже сжатые дубликаты звуков, при том, что несжатые находятся прям рядом

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5144
    • Просмотр профиля
Там дубликаты всего и вся. Есть сжатые текстуры, и несжатые сразу в одном архиве. Этот несжатый тоже используется, но сжатый используется чаще
Почему сразу нельзя было написать? Код на разжатие кусков NSF я указал. Он не подходит и там отдельное сжатие? Тогда, зная формат NSF, можно получить сжатый кусок (если это не NSF сжатие) и несжатый кусок уже есть, остаётся сравнить и попытаться выяснить код декомпрессии или разобрать код игры.
Вы просите помощи, но не говорите что выяснили сами, это плохо.
UPD: По началу несжатой текстуры (34 12 01 00 6F E0 C2 52 05 00 00 00 DD DC AF 72) находится несжатый кусок - 0x230800- (paul_met его показал, в начале 34 12, что говорит о несжатии) и сжатый - 0xA000- (35 12 говорит о сжатии). Я проверил начало вручную и сжатие совпадает с указанным ранее (https://github.com/cbhacks/CrashEdit/blob/5662fce6c0694b855b40ca99c6b2da8718e54fcf/Crash/Formats/Crash Formats/NSF.cs). Простое сжатие. Вот файлы, сжатый (я взял с запасом) и несжатый, можно быстро отделить код и проверить наверняка.
UPD2: Переписал на Python декомпрессию и подтвердил, что с 0xA000 сжатый по алгоритму NSF кусок совпадает с несжатым 0x230800. Вот код:
Тайна разгадана, остаётся просто разобрать формат NSF и написать элементарное сжатие.
« Последнее редактирование: 29 Июнь 2022, 21:16:36 от Sharpnull »

Оффлайн lupus

  • Пользователь
  • Сообщений: 3828
  • Пол: Мужской
  • man with no face
    • ВКонтакте
    • Просмотр профиля
Я когда-то смотрел эту игру, году в 2008-2010, тоже хотел нормальный перевод сделать.
Помню, что находил шрифты 100500 раз в разных файлах. Скорее всего, сделано, чтобы читать ближайший к текущим данным, а не елозить лазером по диску для загрузки данных.
Но, это чисто моё предложение)

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8119
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Тайна разгадана, остаётся просто разобрать формат NSF и написать элементарное сжатие.
Разобрать по адресам, но можно обойтись и без сжатия, так как в файле уже есть дубликаты несжатых блоков. Надо просто заставить игру грузить несжатые блоки. Но для этого придётся ещё найти файл конфигурации, где прописаны сектора и их кол-во.

Впрочем вот для теста - грузится несжатый блок со шрифтом менюшки в начале игры (помедленнее сжатого, но тем не менее):
Файл: S0000019.NSD
Адрес: 424h
Значение: 60180100
« Последнее редактирование: 29 Июнь 2022, 23:20:32 от paul_met »

Оффлайн Nik Pi

  • Пользователь
  • Сообщений: 149
    • Просмотр профиля
Извините, что не написал сразу про дубликаты. Совсем про них забыл  :(
Но спасибо за ответы! Будем смотреть, разбираться