Список форумов shedevr.org.ru shedevr.org.ru
Группа перевода приставочных игр "ШЕДЕВР"
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

DTE изнутри (на примере FF4)

 
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Экстремальный ромхакинг
Предыдущая тема :: Следующая тема  
Автор Сообщение
Zidane



Зарегистрирован: 24.03.2006
Сообщения: 24

СообщениеДобавлено: Вс Апр 16, 2006 3:32 pm    Заголовок сообщения: DTE изнутри (на примере FF4) Ответить с цитатой

Вот решил попробовать раскодить кодировку текста для FinalFantasy IV(II) на SNES.
Нашел то место где раскодируется она, и вписывается в память.

По адресу 7E0772 в RAM`e, во время первых фраз в игре: Crew:Captain Ceciel.........
Происходит следующее сначала вписываются 2 байта, потом раскодируется сам текст, и потом эти два байта меняются на B6 02.
За раз раскодируются 2 буквы.
Вписываются с помощью вот этих комманд:
......
LDA $139700,x[$13:9770]
STA $0774,y[$00:077C]
INY
LDA $139701,x[$13:9771]
STA $0774,y[$00:077D]
INY
.......
После выполнения комманды STA вписывается одна буква.

Я выкладываю лог, и таблицу символов, + адреса.
Каждый может сам проделать это, для того чтобы емму стало понятней.

ТЕПЕРЬ ПОМОГИТЕ ПОНЯТЬ ЧТО ДЕЛАТЬ, ЧТОБЫ РАСКОДИРОВАТЬ ЭТУ БАЙДУ. :D

Ставил два бряка на 7E0772 и 7E0774, на чтение запись и исполнение.
Всё происходит непосредственно перед выводом надписи на экран.

Я использовал для этого:
Ром с названием FF2.smc (взят с сайта www.shinra.ru)
Дебаггер Snes9X v1.43.ep9r8 - Geiger's Snes9x Debugger( http://geigercount.net/crypt/)

Лог http://gamems.narod.ru/Files/ff20000.log
Таблица http://gamems.narod.ru/Files/ff21.tbl
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2818

СообщениеДобавлено: Вс Апр 16, 2006 7:38 pm    Заголовок сообщения: Ответить с цитатой

Ого, экстремальным методом взломал обычное ДТЕ? Very Happy Почитай доки (лучший док по DTE - help к проге Translhextion), здесь всё просто, это не запаковка, а просто оптимизация текста.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Alex_231



Зарегистрирован: 13.01.2005
Сообщения: 144
Откуда: Арсеньев

СообщениеДобавлено: Пн Апр 17, 2006 10:41 am    Заголовок сообщения: Ответить с цитатой

Опять танкисты за воробьями охотятся.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Zidane



Зарегистрирован: 24.03.2006
Сообщения: 24

СообщениеДобавлено: Пн Апр 17, 2006 11:57 am    Заголовок сообщения: Ответить с цитатой

Very Happy Very Happy Very Happy
Просто где-то здесь читал, что там применяется какойто свой способ шифровки. Ну и с Dte ещё не попадалось ничего.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Zidane



Зарегистрирован: 24.03.2006
Сообщения: 24

СообщениеДобавлено: Пн Апр 17, 2006 4:02 pm    Заголовок сообщения: Ответить с цитатой

Почитал асм по снесу, посидел в дебаггере, сделал уже где-то 1/3 таблицы.
Вот она:http://gamems.narod.ru/FFIISNES.tbl

Пишу в ручную, копаясь в дебаггере.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2818

СообщениеДобавлено: Пн Апр 17, 2006 4:12 pm    Заголовок сообщения: Ответить с цитатой

Лучше бы не занимался ерундой, а нашёл в РОМе таблицу слогов и составил по ней таблицу за 5 минут.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Zidane



Зарегистрирован: 24.03.2006
Сообщения: 24

СообщениеДобавлено: Пн Апр 17, 2006 6:13 pm    Заголовок сообщения: Ответить с цитатой

Да нету там этой таблицы, там "кодировка" раскладывается на символы, перед выводом раскладывается на отдельные буквы, а потом выводятся по отдельности, там же таблица символов - просто алфавит.
Но что-то пока не перевел вообще её, странно это как-то.
Вот доделаю таблицу, пусть потом кто захочет тот начнет переводить.
Я может буду переводить, а может и нет.

Мне было просто интересно разобраться, так сказать, поднять свой уровень.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
wl



Зарегистрирован: 20.12.2005
Сообщения: 76
Откуда: Россия

СообщениеДобавлено: Пн Апр 17, 2006 7:21 pm    Заголовок сообщения: Ответить с цитатой

оффтоп: на gba есть версия этой игры с официальным переводом
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2818

СообщениеДобавлено: Пн Апр 17, 2006 8:59 pm    Заголовок сообщения: Ответить с цитатой

Zidan писал(а):
Да нету там этой таблицы, там "кодировка"


Посмотри внимательнее на код (прямо на те строчки, что ты запостил).

LDA $139700,x[$13:9770] - загрузить в регистр-аккумулятор байт из РОМа по адресу 13:9970, то есть в HEX-редакторе это адрес 99970h.
Там у нас лежит 6F (буква t, если сравнить по твоеё первой таблице).

STA $0774,y[$00:077C] - записать этот байт из аккумулятора в RAM (вот и вся "раскодировка", хех)

INY - сдвинуть курсор вперёд, чтобы использовать Y при следующей записи в память

LDA $139701,x[$13:9771] - прочесть в A второй байт слога (в DTE используется слоги только из 2 байтов). Заметь, здесь X - это смещение относительно базы 9700. По сути, для следующего (по порядку) слога X=72, то есть тогда в аккумулятор поочерёдно считается 2 байта - из 9772 и 9773.

Далее всё понятно и так.

Помимо знания асма, желательно бы понимать архитектуру платформы - знать, как распределяется память (на SNES с этим особый напряг - со всякими HiROM/LoROM и зеркальными отображениями/различными режимами использования).

Если посмотреть в HEX-редакторе РОМ игры (с хедером, то есть к 9770 надо добавить 200) вместе с твоей первой таблицей (которая без слогов, только с буквами), там ты увидишь всё слоги, идущие подряд (даже разделителей не поставили, ибо нет надобности, в общем-то). За ta идёт _b _l te и т.д. - это и есть та самая таблица слогов, о которой я говорил. Можешь теперь не изучать каждое значение X, а выписать все слоги себе в таблицу, даже не проверяя, как они выглядят в игре - ведь это первоисточник! Потом, когда нужно будет вставлять русский скрипт в игру, надо будет меня именно эту таблицу (вставлять туда наиболее часто повторяющиеся РУССКИЕ слоги). Всё 80 (128) слогов - 99900-999FF.

Можно предположить, что начало таблицы - 99914, то есть слог e_ (кодируется в скрипте байтом 8A, из-за которого X становится равным 14. {9,9770 + _200_ + [8A-80]*2} Но реально начало - в 99900, просто те первые 10 слогов ты бы не увидел, безоглядно экспериментируя в дебаггере.

Что касается вывода имён (Cecil/Kain/...) - смотри таблицу по адресу 7A910, это уже смахивает на MTE. Каждое имя отделяется байтом FF.

Zidan писал(а):
Мне было просто интересно разобраться, так сказать, поднять свой уровень.


Это правильно, но ты слишком увлёкся, зайдя далеко в одном направлении. Иногда нужно проветриться (я в таких случаях собаку вывожу, иногда даже в 4 часа ночи), чтобы взглянуть на проект свежим взглядом и увидеть новый путь, более эффективный/остроумный.


Я думаю, раз уж эта тему появилась в Экстремальном ромхакинге, давай назовём её иначе - "DTE изнутри", чтобы другие могли понять, что на самом деле стоит за базовым ромхакингом (DTE - это базовый), как игра в реальности обрабатывает всё то, что ромхакер так запросто модифицирует (при переводе), даже не зная исполняемого кода.


Последний раз редактировалось: АнС (Пн Апр 17, 2006 9:02 pm), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2818

СообщениеДобавлено: Пн Апр 17, 2006 9:00 pm    Заголовок сообщения: Ответить с цитатой

wl писал(а):
оффтоп: на gba есть версия этой игры с официальным переводом


На SNES тоже, но всё равно фанский перевод (их даже несколько разных) лучше.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Zidane



Зарегистрирован: 24.03.2006
Сообщения: 24

СообщениеДобавлено: Вт Апр 18, 2006 11:39 am    Заголовок сообщения: Ответить с цитатой

На счет таблицы погарячился.......
На счет X, ещё вчера сам понял(до поста)
А таблицу сам тоже нашел, после того, как ответил вчера проанализировав строки:

LDA $139700,x[$13:9716]
STA $0774,y[$00:079B]
INY
LDA $139701,x[$13:9717]
STA $0774,y[$00:079C]

На счет всех акумуляторов, X, Y тоже разобрался, но по началу пугала команда BEQ, в доках смущала надпись Branch ....., потом понял что это :)

Посмотрел память по 13:9716, и окончательно утвердился в этом.

Все равно, за все спасибо.

Кстати, нету на SNES ещё дебаггеров кроме Geiger's Snes9x Debugger,SNEMUL90 и Super Sleuth ?

В общем Geiger`s Debugger устраивает, но там немного не хватает Code Viewera как в SNEMUL90.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Экстремальный ромхакинг Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group