kytattoo, надеюсь вы вернётесь, потому что я выдрал все изображения сжатые MDEC:
https://mega.nz/file/GyAT1CDL#It0CJzskaSEN0TQt55vhokFAau9IuCzCxKsAdy0BIPY.
Остальные текстуры TIM можно найти, просканировав все файлы через tim2view
https://github.com/lab313ru/tim2view, но с ней нужно нежнее, там есть баг из-за которого у меня падает. Хотя вряд ли вам нужны, это те, что используются в 3D.
РазборМне написал в ЛС человек, который подсказал, что чистые кадры можно конвертировать с помощью
bss2bmp (
https://github.com/pmandin/reevengi-tools). Пришлось добавить возможность выбора разрешения и break, чтобы в случае ошибки, которые часто бывают из-за чего-то, всё равно сохранялось.
Скриптом на Python 3:
#!/usr/bin/env python3
"""
[PSX] Road Rash Jailbreak
*.STR images
"""
import os
from pathlib import Path
from struct import unpack
unpack_path = Path("Unpack")
unpack_path.mkdir(exist_ok=True)
for p in Path(".").rglob("*"):
if not p.is_file():
continue
with open(p, "rb") as f:
magic = f.read(4)
if magic != b"MDEC":
continue
print(p)
i = 0
while True:
size, w, h, _ = unpack(">IHHI", f.read(4+2+2+4))
bss = unpack_path / "{}_{:02}.BSS".format(p.name, i)
b = f.read(size - 16)
bss.write_bytes(b)
os.system("bss2bmp.exe {} {} {}".format(bss.resolve(), w, h))
if f.tell() == p.stat().st_size:
break
magic = f.read(4)
if magic != b"MDEC":
break
i += 1
Обошёл все файлы и из тех, которые начинаются на магическое
MDEC, достал сырые кадры для bss2bmp, передал ей с указанием ширины и высоты. Потом сконвертировал в PNG. Возможно где-то есть программа поудобнее bss2bmp.
Прикладываю скомпилированную мной. Пути до файла должна быть полные, там какой-то баг с этим.
Формат STR с MDEC из Road Rash Jailbreak
Заголовок 16 байт: MDEC; 4 байта - размер, включая заголовок; 2 байта - ширина; 2 байта - высота; 4 байта - нули. Везде Big-Endian. Потом данные и снова заголовок, пока не конец файла.
--------
Похоже MDEC, описанный выше, стандартный, а не только в RRJ.
--------
Пара замечаний. Многие картинки 256x112 со сплющенными лицами, потому что в игре используется интерлейсинг и по высоте дублируются строчки, так что нужно в редакторе картинок изменить размер до 256x224 и возможно лучше без фильтрации (соседние пиксели). Чтобы растянуть все, используйте пакетную обработку, например в XnView.
И про MDEC. По идеи все эмуляторы PSX реализуют декодирование MDEC, можно взять там код. Я не смотрел про MDEC и у меня есть опасения на счёт правильных цветов (у старых консолей вечные проблемы с этим), хотя визуально картинки выглядят правильно. Но думаю мало кому интересно различие в пару оттенков.