Перевод 3do версии StarControl 2

Вопросы, мысли, скандалы, интриги, расследования
Аватара пользователя
Malin
Сообщения: 2105
Регистрация: 28 май 2023

Перевод 3do версии StarControl 2

Сообщение Malin »

Хорошая работа, BratWikipediy!
Прикрепи архив с каким-нибудь файлом к сообщению, например, для LANDER_FONT, т.е. 11203d01.
Любопытно посмотреть на досуге.
BratWikipediy
Сообщения: 16
Регистрация: 02 июн 2025

Перевод 3do версии StarControl 2

Сообщение BratWikipediy »

Вот 5 шрифтов, я так понял в 3DO всего столько. в uqm, как в Dos версии субтитры есть у рас, и они разными шрифтами как фишка расы. а здесь из-за того что субтитров нет, то и таких шрифтов нет.
Вложения
fonts.zip
(6.34 КБ) 2 скачивания
Последний раз редактировалось BratWikipediy 10 июн 2025, 19:59, всего редактировалось 1 раз.
BratWikipediy
Сообщения: 16
Регистрация: 02 июн 2025

Перевод 3do версии StarControl 2

Сообщение BratWikipediy »

Получилось повторить логики исходника по декодирования шрифта на python, мне просто сложно думать на C. Я воссоздал только логики по декодированию шрифта, т.е. намного компактнее видно что нужно инвертнуть. Теперь уже можно разбираться как сделать обратное кодирование пикселей в байты и заменять байты ненужных символов на русские. я думал в начале пару только символов внедрить вместо редких символов - чтобы сразу русские и английские буквы остались, пока не полный перевод.

p.s проверил что в других шрифтах некоторые символы криво показываются, там где разной ширины, нужно еще будет посмотреть их внимательнее. хорошо отображается LANDER_FONT, там все одинаковой ширины и высоты символы.
Вложения
font-decode.png
font-decode.png (15.17 КБ) 39 просмотров
Последний раз редактировалось BratWikipediy 10 июн 2025, 22:42, всего редактировалось 3 раза.
BratWikipediy
Сообщения: 16
Регистрация: 02 июн 2025

Перевод 3do версии StarControl 2

Сообщение BratWikipediy »

все было правильно в декодировании, перепутал width и height местами, а в lander font были 5 на 5, поэтому не было заметно. теперь все шрифты ок распознаются из байтов.

Вот символы из шрифта диалогов, который нужно исправить, чтобы они стали кириллицей.
Вложения
player-symbols.png
player-symbols.png (10.62 КБ) 27 просмотров
Аватара пользователя
Malin
Сообщения: 2105
Регистрация: 28 май 2023

Перевод 3do версии StarControl 2

Сообщение Malin »

Здорово у тебя получается!

Я так понимаю в 3DO-шном файле по адресу имени файла, например, 0х11203d01 (для LANDER_FONT), со смещением например +0х00000380, будут лежать те же байты 40 00 00 31 00 05 00 00 00 05 00 05 00 00 09 F8 для буквы Q. Так?
Если это так, то можно просто в лоб заменить нужные байты в самом 3DO-шном файле. Заменить один пиксель в букве и посмотреть, что будет.

Кстати, как ты получил буквы? У меня что-то не получилось, или я до конца не понял описание. По адресу 0х00000380 со смещением +0x000009F8 лежит явно не битовая маска буквы Q.
BratWikipediy
Сообщения: 16
Регистрация: 02 июн 2025

Перевод 3do версии StarControl 2

Сообщение BratWikipediy »

Проверка концепции замены буквы в игре прошла успешно. Получилось превратить V в Л. Пока просто переставил вручную строки, так как кодируются строками, а Л - это строки наоборот от V. Дальше уже нужно понять как кодировать свои строки любые.

В STARCON.PKG все файлы ресурсов упакованы без изменения байтов, т.е. без какого либо сжатия, т.е. можно байты править от шрифта уже потом уже и пересобирать образ.

Отображения символов я получил руководствуясь инструкциями gfxres и fontres из https://sourceforge.net/p/sc2/uqm/ci/ma ... doc/devel/, в частности
из gfxres
for every line in the image (bounds.height lines):
2 number of bytes used to encode this line
The actual number of bytes is computed like so:
(number-of-bytes + 2) * 4

сами байты уже строк полученные из инструкции выше потом декодировал повторив логику из ani https://sourceforge.net/p/sc2/uqm/ci/ma ... ni/unani.c

я не знаю, может там какой-то стандарт кодирования этот или именно их разработка, я в этой области не разбираюсь.
в утилите unani.c написано, что // information on the packed format can be found in 3do/imageint.c, я так понимаю это https://github.com/trapexit/3do-star-co ... imageint.c, но там я не смотрел, получилось на основе кода в unani восстановить логику
Вложения
char-change.png
char-change.png (33.77 КБ) 24 просмотра
Аватара пользователя
SLY
Сообщения: 3537
Регистрация: 23 сен 2013

Перевод 3do версии StarControl 2

Сообщение SLY »

О, да тут всё идёт семимильными шагами! Класс. Желаю, чтобы всё получилось и удалось таки дожать.
BratWikipediy
Сообщения: 16
Регистрация: 02 июн 2025

Перевод 3do версии StarControl 2

Сообщение BratWikipediy »

Получилось собрать упаковщик своих файлов в стандарте шрифтов star control 2 для 3DO из папки с png, там правда еще есть параметры точка выравнивания края картинки (например буква "р" чуть ниже хвост по Y), пока эти параметры не разбирался, просто скопировал в json, но можно чуть что-то просто править json и собрать новый fon файл еще раз. А такие настройки были у символов шрифтов в UQM?

Перерисовал png символа n в Н для теста, и автоматом мой скрипт создало из png новый fon, т.е. упаковщик работает, именно размещение пикселей из png упаковывает.

Я еще разобрался, как пересобрать STARCON.PKG, но не тестировал. Это было нужно если fonres файл станет больше, получить новый STARCON.PKG, но также это даст возможность увеличить и другие файлы ресурсов, наиболее интересные - ресурсы Conversation (где вопросы игрока), потому что часть фраз на русском более длинная, чем на английском.
Дальше попробую посмотреть, как устроены эти ресурсы Conversation, получится ли их так модифицировать, или придется ограничится кол-вом байтов оригинальный фраз.
Вложения
n-Н.png
n-Н.png (26.45 КБ) 8 просмотров
Последний раз редактировалось BratWikipediy 12 июн 2025, 17:31, всего редактировалось 2 раза.
Ответить