форум группы Chief-Net форум группы Chief-Net
Перевод приставочных игр и не только!
drako site Перейти на сайт группы     Наш чат      Помощь      Поиск      Пользователи


 Страниц (1): [1]   

> Описание: WonderSwan Color поиск алгоритма сжатия
PeacefulWarrior Пользователь
Отправлено: 07 Мая, 2024 - 12:17:27
Post Id






Покинул форум
Сообщений всего: 7
Дата рег-ции: Май 2024  





Добрый день. Очень давно пытался найти сжатую графику из титульной заставки Final Fantasy II для wonderswan color, и вот только вчера удалось это сделать. Теперь столкнулся с проблемой что не могу понять алгоритм сжатия, пытался использовать известные мне RLE, LZ77 и алгоритм Хаффмана но ни к чему не пришёл, но возможно я просто не верно их применял и как раз один из них тут и используется.
Возможно у читающих эту тему есть опыт и знания для вскрытия этих данных так что буду очень благодарен услышать любое мнение.

Поинтеры для каждого экрана в заставке (начиная с логотипа square) начинаются с адреса 251430h. Все они состоят из двух байтов. Для поиска адреса начала графики нужно просто поменять их местами и прибавить вначале 25. 66 14 -> 14 66 -> 251466h.

Мой ром:
Name: Final Fantasy II (J) [!].wsc
SHA-1: 959321e3b971516e38a4cbf95b0fc3ef c0b0a825
 
 Top
Griever Пользователь
Отправлено: 07 Мая, 2024 - 21:24:46
Post Id


VIP


Покинул форум
Сообщений всего: 456
Дата рег-ции: Июнь 2015  





Привет, нужен кусок с распакованной графикой. Обычно для этого используют эмуляторы с отладчиками, но я такой не знаю.
 
 Top
PeacefulWarrior Пользователь
Отправлено: 07 Мая, 2024 - 22:38:08
Post Id






Покинул форум
Сообщений всего: 7
Дата рег-ции: Май 2024  





Griever пишет:
Привет, нужен кусок с распакованной графикой. Обычно для этого используют эмуляторы с отладчиками, но я такой не знаю.


Вот небольшой кусочек распакованной графики для самого первого текста (сразу после лого)
25159Ah - адрес начала этого текста

Каждая сжатая часть графики имеет заголовок 10 00 00 00 05 00
Скачать файл: test.rar
Скачан раз: 4
 
 Top
PeacefulWarrior Пользователь
Отправлено: 07 Мая, 2024 - 22:38:57
Post Id






Покинул форум
Сообщений всего: 7
Дата рег-ции: Май 2024  





Griever пишет:
Привет, нужен кусок с распакованной графикой. Обычно для этого используют эмуляторы с отладчиками, но я такой не знаю.


Скажите если нужно будет больше.
 
 Top
Griever Пользователь
Отправлено: 08 Мая, 2024 - 00:18:57
Post Id


VIP


Покинул форум
Сообщений всего: 456
Дата рег-ции: Июнь 2015  





Расскажи, как ты достал распакованный кусок?
 
 Top
PeacefulWarrior Пользователь
Отправлено: 08 Мая, 2024 - 06:52:00
Post Id






Покинул форум
Сообщений всего: 7
Дата рег-ции: Май 2024  





Griever пишет:
Расскажи, как ты достал распакованный кусок?


Использовал отладчик эмулятора меднафен. У этого эмулятора единственный нормальный отладчик для wonderswan.

Сопоставил данные из tile viewer с ОЗУ и переписал часть в ручную. Думаю это не самый эффективный способ, но пока что у меня не хватает навыков для чего то большего.
 
 Top
Griever Пользователь
Отправлено: 08 Мая, 2024 - 11:59:00
Post Id


VIP


Покинул форум
Сообщений всего: 456
Дата рег-ции: Июнь 2015  





Графика хранится в LZSS:
Формат блока:
CODE:
+----------+--------+-------------------------------------------------------------------------+
| Смещение | Размер | Описание |
+----------+--------+-------------------------------------------------------------------------+
| 0 | 6 | Заголовок 10 00 00 00 05 00 |
| 6 | 2 | Размер распакованного блока в байтах 00 04 (0x400 байт) |
| 8 | X | Упакованный поток бит. Биты в байте проверяются от старшего к младшему.
+-------+------+------------------------------------------------------------------------------+

LZ:
CODE:
0 XXXXXXXX YYY
| | |
| | 3 бита размера копирования
| 8 бит смещения в кольцевом буфере
Флаг сжатия

Кольцевой буфер размером 0x100 байт, не обнуляется, а переходит к нулевой позиции и начинает перезаписывать буфер с начала. Нулевая позиция буффера в первом проходе не используется, поэтому смещения начинаются с 1, а не с 0. Непонятно, зачем так сделано.
Размер копирования хранится как (размер - 3). Непонятно, почему не 2, т.к. хранить LZ пару уже выгодно, когда она сжимает хотя бы 2 байта.

Raw:
CODE:
1 XXXXXXXX
| |
| |
| 8 бит несжатого байта
флаг несжатого байта
 
 Top
PeacefulWarrior Пользователь
Отправлено: 13 Мая, 2024 - 00:57:15
Post Id






Покинул форум
Сообщений всего: 7
Дата рег-ции: Май 2024  





Griever пишет:
Графика хранится в LZSS:
Формат блока:
CODE:
+----------+--------+-------------------------------------------------------------------------+
| Смещение | Размер | Описание |
+----------+--------+-------------------------------------------------------------------------+
| 0 | 6 | Заголовок 10 00 00 00 05 00 |
| 6 | 2 | Размер распакованного блока в байтах 00 04 (0x400 байт) |
| 8 | X | Упакованный поток бит. Биты в байте проверяются от старшего к младшему.
+-------+------+------------------------------------------------------------------------------+

LZ:
CODE:
0 XXXXXXXX YYY
| | |
| | 3 бита размера копирования
| 8 бит смещения в кольцевом буфере
Флаг сжатия

Кольцевой буфер размером 0x100 байт, не обнуляется, а переходит к нулевой позиции и начинает перезаписывать буфер с начала. Нулевая позиция буффера в первом проходе не используется, поэтому смещения начинаются с 1, а не с 0. Непонятно, зачем так сделано.
Размер копирования хранится как (размер - 3). Непонятно, почему не 2, т.к. хранить LZ пару уже выгодно, когда она сжимает хотя бы 2 байта.

Raw:
CODE:
1 XXXXXXXX
| |
| |
| 8 бит несжатого байта
флаг несжатого байта


Здравствуйте! Спасибо вам огромное! Благодаря этим данным смог написать программу для распаковки графики. Не могли бы вы рассказать как на основе тех данных что у вас были вы смогли получить все эти данные о сжатии?
 
 Top
Griever Пользователь
Отправлено: 13 Мая, 2024 - 21:48:42
Post Id


VIP


Покинул форум
Сообщений всего: 456
Дата рег-ции: Июнь 2015  





Привет, в общих чертах, процесс такой:
в Mednafen нашел адрес распакованной графики, поставил останов на запись в него, поймал место в коде, которое пишет в этот адрес, загрузил дамп RAM в IDA, проанализировал процедуру распаковки, подтвердил её на паре примеров распакованной графики.
 
 Top
PeacefulWarrior Пользователь
Отправлено: 14 Мая, 2024 - 00:18:43
Post Id






Покинул форум
Сообщений всего: 7
Дата рег-ции: Май 2024  





Griever пишет:
Привет, в общих чертах, процесс такой:
в Mednafen нашел адрес распакованной графики, поставил останов на запись в него, поймал место в коде, которое пишет в этот адрес, загрузил дамп RAM в IDA, проанализировал процедуру распаковки, подтвердил её на паре примеров распакованной графики.


Слушайте, вы не хотели бы пополнить библиотеку переводом этой игры на chief net? Теперь когда с графикой всё решено. Я смогу перерисовать все ресурсы, шрифты и теперь могу поменять всю графику и текст. Думаю я в любом случае этим займусь, хотелось бы просто знать что могу загрузить перевод куда нибудь где он будет виден людям.
 
 Top
Mefistotel Администратор
Отправлено: 14 Мая, 2024 - 00:41:32
Post Id



Chief-Net


Покинул форум
Сообщений всего: 7060
Дата рег-ции: Окт. 2014  
Откуда: МАГАДАН





Ты занимайся, сюда скидывай готовый инструментарий и тексты по мере перевода (eng+rus). Нужно проверить твой уровень владения английским и русским языками. Если всë достойно, то проблем нет, добавлю перевод на сайт. Переводить текст сам собираешься? Судя по сообщениям, есть проблемы с пунктуацией. Но в любом случае перевод можно и просто в нашу Базу добавить, чтобы не пропал.

Предварительно необходимо согласовать глоссарий с нашей версией перевода. Поэтому прикладываю наш вариант для версии на Famicom. Также у меня есть и полностью переведëнный русский текст и английский оригинал. Могу поделиться также.

Хотелось бы сравнить скрипты из версий FAMI и WSC. На WSC текста наверняка больше, и он насыщеннее.

Скачать файл: Final Fantasy II (Famicom).rar
Скачан раз: 4


-----
"Перевод старых игр - отличная возможность понять, как устроены программы, подучить иностранный язык и поднять уровень владения родным. Ну и конечно, это просто возможность "общения" со своей любимой игрой детства." © Dimouse
 
 Top
PeacefulWarrior Пользователь
Отправлено: 14 Мая, 2024 - 06:46:56
Post Id






Покинул форум
Сообщений всего: 7
Дата рег-ции: Май 2024  





Mefistotel пишет:
Ты занимайся, сюда скидывай готовый инструментарий и тексты по мере перевода (eng+rus). Нужно проверить твой уровень владения английским и русским языками. Если всë достойно, то проблем нет, добавлю перевод на сайт. Переводить текст сам собираешься? Судя по сообщениям, есть проблемы с пунктуацией. Но в любом случае перевод можно и просто в нашу Базу добавить, чтобы не пропал.

Предварительно необходимо согласовать глоссарий с нашей версией перевода. Поэтому прикладываю наш вариант для версии на Famicom. Также у меня есть и полностью переведëнный русский текст и английский оригинал. Могу поделиться также.

Хотелось бы сравнить скрипты из версий FAMI и WSC. На WSC текста наверняка больше, и он насыщеннее.


Хорошо, я пришлю первые результаты чуть позже.
 
 Top
Mefistotel Администратор
Отправлено: 15 Мая, 2024 - 02:07:46
Post Id



Chief-Net


Покинул форум
Сообщений всего: 7060
Дата рег-ции: Окт. 2014  
Откуда: МАГАДАН





Вот весь текст из версии на Famicom.
Скачать файл: Script FF II (Famicom).rar
Скачан раз: 4


-----
"Перевод старых игр - отличная возможность понять, как устроены программы, подучить иностранный язык и поднять уровень владения родным. Ну и конечно, это просто возможность "общения" со своей любимой игрой детства." © Dimouse
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Экстрим хакинг »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®