Пожалуй оставлю это здесь. Начинал делать перевод Shining Force CD, но не сложилось довести проект до конца( Хотел сделать электронный мануал (как электронный журнал Re-Play) с переводом диалогов, описанием предметов и магии, а так же описанием персонажей. На данный момент переведены первая книга полностью и вторая чуть больше половины. Оформлены: описание, титульный экран, первая книга, частично магия и предметы. Так же сделан музыкальный плеер и собран плейлист)
https://yadi.sk/d/3J4twJ0UqZMrc
1. Shini_EG - 29 Марта, 2016 - 12:52:11 - перейти к сообщению
2. Guyver - 29 Марта, 2016 - 13:07:04 - перейти к сообщению
Почему бросил? Не хочешь доделать с посильной помощью?
3. Shini_EG - 29 Марта, 2016 - 15:55:27 - перейти к сообщению
В ближайшей перспективе нет возможности продолжить проек( Работа в миру, отнимает много времени( Могу лишь помогать, тем кто готов доделать)
4. FonDen - 29 Марта, 2016 - 18:03:41 - перейти к сообщению
Очень хорошая идея и отличная реализация. Реально, большой труд. Жаль, если проект не будет доведен до конца.
5. Cypuk - 27 Апреля, 2016 - 18:25:20 - перейти к сообщению
Хорошая работа, жалко, что забросил ... Хотяя, я на собственной шкуре знаю - какой это гемор )). Можно я оставлю это здесь http://shedevr.org.ru/forum/viewtopic.php?t=4326 ? Это мой законченный перевод SFCD отдельным текстом ...
6. FonDen - 28 Апреля, 2016 - 09:41:58 - перейти к сообщению
Ух ты! Сколько неслучайных совпадений
Может Chief-Net уже стоит обратить внимание?
Может Chief-Net уже стоит обратить внимание?
7. Prince Nick - 28 Апреля, 2016 - 21:31:12 - перейти к сообщению
Я бы потестил
8. Mefistotel - 02 Мая, 2016 - 14:10:43 - перейти к сообщению
Эх, пока у нас туго с хакерами под Сегу. Марат весь в работе.
Поэтому ложим материалы в ящик стола.
Поэтому ложим материалы в ящик стола.
9. Mefistotel - 12 Апреля, 2018 - 23:23:50 - перейти к сообщению
Надо будет качнуть, посмотреть что да как. Чует моё сердце, что там всё пожато-пережато.
10. Марат - 27 Апреля, 2018 - 06:07:29 - перейти к сообщению
Похоже, что пожат и текст и графика. Ничего не нашел. Не могу пока найти процедуру распаковки.
11. Марат - 02 Мая, 2018 - 17:42:16 - перейти к сообщению
Нашёл шрифт. В формате 2bpp gbc. И, похоже, что лежит в каждом банке. Теперь пытаюсь найти текст.
Вроде, текст Хаффманом пожат, но пока не уверен.
Вроде, текст Хаффманом пожат, но пока не уверен.
12. Марат - 20 Мая, 2018 - 20:56:19 - перейти к сообщению
Выкроил время и изучил декомпрессор скрипта. Как я и подозревал это Хаффман, но не канонический, а его биграмная модель. Используются цепи Маркова 1-го порядка. Следующий символ предсказывается на основе предыдущего. Для каждого предшествующего символа строится дерева Хаффмана. Что-то подобное было в Bee52 на nes. Здесь же больше похоже на сжатие по протоколу mnp 5. Всё-таки не зря я его когда-то изучал. Непонятно было как хранятся деревья Хаффмана. Пришлось построить дерево для символа $FE и потом уже стал понятен способ хранения дерева. Теперь уже как будет время, постараюсь написать компрессор. Декомпрессор то уже написан, так как очень прост для реализации.
Приложил несколько файлов со скриптам, которые удалось найти с первого раза.
Принцип хранения дерева описан здесь http://qaru.site/questions/18979...ing-huffman-tree
Приложил несколько файлов со скриптам, которые удалось найти с первого раза.
Принцип хранения дерева описан здесь http://qaru.site/questions/18979...ing-huffman-tree
13. Марат - 01 Июня, 2018 - 18:57:52 - перейти к сообщению
Таблица.
14. Марат - 28 Октября, 2018 - 09:59:12 - перейти к сообщению
Наконец-то смог заставить себя дописать компрессор. Товарищ Lin1985 писал в личку, что есть какой-то чел, который хочет написать иснтрумент для перевода игры. Но ему нужен компрессор. Попутно выяснил, что декомпрессор немного неправильно был написан из-за чего несколько начальных строк терялось.
Блок на самом деле не ограничен 256 строками. Возможно это в самой игре так сделали, чтобы быстрее добираться до нужной строки указывая в каком блоке из 256 строк, находится искомая строка. Теперь осталос собрать компрессор и декомпрессор в одну программу и можно будет вытаскивать остальной текст. Правда, позабывал уже как это делал. Память такая, что ненужные вещи быстро забываются.
Приложил правильно извлечённый скрипт.
Блок на самом деле не ограничен 256 строками. Возможно это в самой игре так сделали, чтобы быстрее добираться до нужной строки указывая в каком блоке из 256 строк, находится искомая строка. Теперь осталос собрать компрессор и декомпрессор в одну программу и можно будет вытаскивать остальной текст. Правда, позабывал уже как это делал. Память такая, что ненужные вещи быстро забываются.
Приложил правильно извлечённый скрипт.
15. Mefistotel - 28 Октября, 2018 - 11:05:21 - перейти к сообщению
Супер)
Ждём-с полноценную программу)
Ждём-с полноценную программу)
16. Lin1985 - 02 Ноября, 2018 - 07:28:53 - перейти к сообщению
Замечательная новость. С нетерпением ждём.
17. Марат - 02 Ноября, 2018 - 08:08:50 - перейти к сообщению
Ну, в принципе, я дописал кодер. Даже научился визуально находить сжатый текст. Определять где заканчиваются деревья и начинается сжатый текст. Но там их куча. Наверное, больше 30 блоков. Надо будет как-нибудь уделить время и выписать все адреса, а потом все распаковать.
18. Mefistotel - 03 Ноября, 2018 - 00:16:48 - перейти к сообщению
Если в кодере уже будут адреса, то было просто замечательно.
19. Lin1985 - 03 Ноября, 2018 - 04:58:53 - перейти к сообщению
Марат пишет:
Ну, в принципе, я дописал кодер. Даже научился визуально находить сжатый текст. Определять где заканчиваются деревья и начинается сжатый текст. Но там их куча. Наверное, больше 30 блоков. Надо будет как-нибудь уделить время и выписать все адреса, а потом все распаковать.
Класс. Процесс идёт. Ура.
20. Марат - 04 Ноября, 2018 - 12:14:11 - перейти к сообщению
Нашёл 57 блоков в среднем где-то по 16 кб. Итого где-то чуть больше 900 кб текста. Плюс некоторый текст не запакован. Кто знает какой в игре объём текста?
21. Марат - 04 Ноября, 2018 - 13:51:07 - перейти к сообщению
Так, текст вставляется без проблем. Единственное, что нужно будет найти и пересчитать все поинтеры. В образе у сжатого текста адреса другие в памяти приставки совсем другие. Если разобрать образ, то опять же несовпадение адресов. В общем, будет ещё над чем голову ломать.
22. Lin1985 - 07 Ноября, 2018 - 09:29:32 - перейти к сообщению
Марат пишет:
Так, текст вставляется без проблем. Единственное, что нужно будет найти и пересчитать все поинтеры. В образе у сжатого текста адреса другие в памяти приставки совсем другие. Если разобрать образ, то опять же несовпадение адресов. В общем, будет ещё над чем голову ломать.
В переводе скрипта вроде не столько текста. Может дублируется?
23. Марат - 07 Ноября, 2018 - 11:52:46 - перейти к сообщению
Ну в начале блоков несколько фраз одинаковых во всех блоках.
Я просто думал, что может текста должно быть больше, чем 1 мб.
Я просто думал, что может текста должно быть больше, чем 1 мб.
24. Барзани - 07 Декабря, 2018 - 16:00:47 - перейти к сообщению
Как продвигается перевод?
25. Марат - 07 Декабря, 2018 - 20:37:21 - перейти к сообщению
Пока никто не переводит.
26. Lin1985 - 26 Декабря, 2018 - 03:36:24 - перейти к сообщению
Марат пишет:
Пока никто не переводит.
Можешь расписать, как ты находишь сжатые блоки с текстом.
И будет ли рабочий рекомпрессор? Очень бы помогло с переводом.
27. Марат - 27 Декабря, 2018 - 15:24:46 - перейти к сообщению
Попробую расписать. Начну с описания заголовка архива, так как именно по заголовку ищутся архивы.
Данные сжимаются биграмным методом хаффмана, о нем я писал выше.
В заголовке нет никаких ключевых слов, по которым можно отыскать архив.
Вначале сразу идёт таблица смещений на деревья хаффмана размером 255 * 2 байта. Каждое смещение размером 2 байта и вычисляется относительно конца таблицы. На каждый символ строится своё дерево хаффмана. После таблицы идут сами деревья хаффмана в битовом представлении. Всего 255 деревьев. Так как деревья имеют разный размер, то вычислить, где кончается блок с деревьями не представляется возможным. После блоков с деревьями идет сам сжатый текст. Перед каждым сообщением(блоком текста) идёт его размер в байтах.
На скриншоте выделил таблицу смещений деревьев хаффмана. Именно по ней я искал архивы.
В основном начало текста в архивах повторяется, за редким исключением. Поэтому многие архивы находятся по такой последовательности
Но найти архив это ещё пол беды. Далее надо определить адрес начала сжатого текстового блока. Для этого из таблицы смещений берем последний поинтер и к адресу начала блока деревьев хаффмана прибавляем поинтер. На скриншоте это поинтер $0492. Прибавляем его к адресу $22EC9A. И получаем $22F12C. Это у нас адрес дерева символа $FE. Сразу за этим деревом начинается блок со сжатым текстом. Дерево обычно не занимает много байт и визуально можно определить начало сжатого текста.
На скриншоте $0E размер сжатого текстовго блока. сразу за размером идут 14 байт сжатого блока, потом опять размер блока $0F и пятнадцать байт сжатый блок, $10 и шестнадцать байт сжатого блока и т.д. После того как адреса определены, нужно их подставить в программу распаковщика
Количество строк пишем на вскидку. После распаковки нужно будет посчитать сколько строк в действительности имеется и заново распаковать архив.
В общем, как-то так. Я вроде нашёл адреса всех архивов.
Проблема дальше будет только в том, чтобы найти поинтеры архивов, чтобы потом их исправить на свои. Без дебага это будет трудно.
Данные сжимаются биграмным методом хаффмана, о нем я писал выше.
В заголовке нет никаких ключевых слов, по которым можно отыскать архив.
Вначале сразу идёт таблица смещений на деревья хаффмана размером 255 * 2 байта. Каждое смещение размером 2 байта и вычисляется относительно конца таблицы. На каждый символ строится своё дерево хаффмана. После таблицы идут сами деревья хаффмана в битовом представлении. Всего 255 деревьев. Так как деревья имеют разный размер, то вычислить, где кончается блок с деревьями не представляется возможным. После блоков с деревьями идет сам сжатый текст. Перед каждым сообщением(блоком текста) идёт его размер в байтах.
На скриншоте выделил таблицу смещений деревьев хаффмана. Именно по ней я искал архивы.
Спойлер (Отобразить)
В основном начало текста в архивах повторяется, за редким исключением. Поэтому многие архивы находятся по такой последовательности
CODE:
Если немного потренироваться, то можно и остальные архивы находить. Бывают и такие FFFF004000510054
CODE:
В общем, разные бывают. Но вариантов не так много.0001003DFFFF004D004F
Но найти архив это ещё пол беды. Далее надо определить адрес начала сжатого текстового блока. Для этого из таблицы смещений берем последний поинтер и к адресу начала блока деревьев хаффмана прибавляем поинтер. На скриншоте это поинтер $0492. Прибавляем его к адресу $22EC9A. И получаем $22F12C. Это у нас адрес дерева символа $FE. Сразу за этим деревом начинается блок со сжатым текстом. Дерево обычно не занимает много байт и визуально можно определить начало сжатого текста.
Спойлер (Отобразить)
На скриншоте $0E размер сжатого текстовго блока. сразу за размером идут 14 байт сжатого блока, потом опять размер блока $0F и пятнадцать байт сжатый блок, $10 и шестнадцать байт сжатого блока и т.д. После того как адреса определены, нужно их подставить в программу распаковщика
Количество строк пишем на вскидку. После распаковки нужно будет посчитать сколько строк в действительности имеется и заново распаковать архив.
В общем, как-то так. Я вроде нашёл адреса всех архивов.
Проблема дальше будет только в том, чтобы найти поинтеры архивов, чтобы потом их исправить на свои. Без дебага это будет трудно.
28. Марат - 27 Декабря, 2018 - 15:25:10 - перейти к сообщению
Кодек
29. Марат - 30 Декабря, 2018 - 22:33:36 - перейти к сообщению
Хорошая новость! Я проанализировал данные и вывел одну закономерность. Похоже, что архив в памяти приставки всегда находится по адресу $22EA9C. Это адрес на начало таблицы. $22EC9A - это адрес на начало блока деревьев Хаффмана. Прошёл поиском по файлам игры и он нашёл 58 вхождений с таким поинтером. 1 похоже лишний. Блоки с архивом хранятся в файлах с названием BANKD**.X и эти блоки имеют размер 436 кб. Архив лежит почти в конце файла. Там же находятся все поинтеры. Поинтер $22EA9C находится чуть выше архива. Поинтер на начало сжатого текста находится, похоже, сразу за архивом. Пока не проверял. Таким образом после сжатия, достаточно будет изменить этот поинтер вычислив разность.
30. Mefistotel - 31 Декабря, 2018 - 00:39:18 - перейти к сообщению
Воистину новогодние новости!