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

Кодировка текста Sailor Moon RPG
На страницу Пред.  1, 2, 3, 4, 5  След.
 
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Экстремальный ромхакинг
Предыдущая тема :: Следующая тема  
Автор Сообщение
Гость






СообщениеДобавлено: Пт Май 09, 2008 2:15 pm    Заголовок сообщения: Ответить с цитатой

Я понял про криптацию. Я подставлял коды по адресу первой найденой буквы первой фразы
Поинтеры я пока не искал. Кстати буква 'M' может кодироваться как $2D и как $AD, как собственно и другие символы.

Это адреса первых букв текста заставки:
$3009B7
$3009D2
$300A0B
$300A50
$300A7A
$300AE1

4,5 и 6 фразы начинаются одинаково ("The").

Другие адреса еще не искал.
Вернуться к началу
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Пт Май 09, 2008 2:26 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
Кстати буква 'M' может кодироваться как $2D и как $AD, как собственно и другие символы.

На самом деле это один и тот же код. Просто старший бит не участвует в определении символа, а для чего он нужен - пока не знаю. $2D=$AD AND $7F.
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Пт Май 09, 2008 3:45 pm    Заголовок сообщения: Ответить с цитатой

Теперь процедура вполне успешно декриптует 'He co'... Вечером постараюсь докопать - вроде напал на след, но дебаггер повис, сказав тем самым, что мне пора идти.
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Гость






СообщениеДобавлено: Пт Май 09, 2008 6:51 pm    Заголовок сообщения: Ответить с цитатой

Похоже в этом роме можно изменять длинну строк в пределах определенного блока...
Вернуться к началу
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Пт Май 09, 2008 7:10 pm    Заголовок сообщения: Ответить с цитатой

Да всё тут можно, если юзать дебаггер Wink Не обещаю, но постараюсь всё расхакать. Можно было бы вообще криптацию убрать и не париться, но лично мне так не интересно Smile
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Гость






СообщениеДобавлено: Пт Май 09, 2008 7:56 pm    Заголовок сообщения: Ответить с цитатой

Да....мы легких путей не ищем... Smile
Вернуться к началу
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Сб Май 10, 2008 4:14 pm    Заголовок сообщения: Ответить с цитатой

Аллилуйя! Всё работает! Щас напишу процедуру...
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Сб Май 10, 2008 4:23 pm    Заголовок сообщения: Ответить с цитатой

Код:
cconst KAdr = $F780; SAdr = $F8B0;
Function DecodeString(ROM: Pointer; Pos: DWord): String;
var B,SB,KB: ^Byte; Key,Key2,OldKey,C: DWord; DW: ^DWord;
begin
  B:=Pointer(DWord(Rom)+Pos); Key2:=0;
  Key:=0; Result:=''; C:=0;
  While True do
  begin
    DW:=Addr(B^); If (DW^ and $FFFFFF)=$FCFDFD Then Break;
    If B^ in [$FE..$FF] Then
    begin
      Key:=0;
      Key2:=0;
      C:=0;
      Case B^ of
        $FF: Result:=Result+#13#10;
        $FE: Result:=Result+'{E}'#13#10;
      end;
    end else
    begin
      OldKey:=Key;
      Key:=(Key SHR 3) AND $1F;
      SB:=Pointer(DWord(ROM)+SAdr+(C and $FFE0)+((C and $FFE0) SHL 1)+(B^ - Key));
      Result:=Result+Char((SB^ and $7F)+$20);
      KB:=Pointer(DWord(ROM)+KAdr+(SB^ and $7F)+$20);
      If (Key2 and $F0)=0 Then Inc(Key2,KB^ and $F);
      If C=0 Then C:=1;
      If (Key2 and $FFF0)<>0 Then
      begin
        If C=1 Then C:=0;
        Inc(C,$20);
      end;
      Key2:=Key2 and $F;
      If C>1 Then C:=C and $FFFE;
      Key:=(SB^ and $7F)+$20+B^+OldKey+(Key2 and $F);
      Key2:=Key2 and $F;
    end;
    Inc(B);
  end;
end;

_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Гость






СообщениеДобавлено: Сб Май 10, 2008 5:18 pm    Заголовок сообщения: Ответить с цитатой

Проверил процедуру. Все прекрасно работает. Большое спасибо за помощь. Very Happy
Вообще странное дело с этим ромом. Вроде два шрифта. Я перерисовал оба, но изменился только текст диалогов, а меню так и осталось нетронутым. Может там еще один запакованный шрифт есть. Пытаюсь розобраться....
Вернуться к началу
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Сб Май 10, 2008 5:38 pm    Заголовок сообщения: Ответить с цитатой

Кто-то очень не хотел, чтобы игру поломали) А не сделал ли это переводчик на английский?)
По адресу $50A00 - абсолютные поинтеры на диалоги (отнимаешь $C00000 и получаешь адрес в РОМе). Перед текстом три байта, их назначение не знаю. Первый блок текста - $3009B4. О конце блока индицирует FDFCFC. А может и просто FD, не проверял...
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Гость






СообщениеДобавлено: Сб Май 10, 2008 5:58 pm    Заголовок сообщения: Ответить с цитатой

Спасибо за информацию. Может еще поковыряю ром и найду шрифты. Вообще, создалось впечатление, что в роме какое-то послание лежит.
Вернуться к началу
Гость






СообщениеДобавлено: Вс Май 11, 2008 1:12 pm    Заголовок сообщения: Ответить с цитатой

Новый вариант функции? Тоже прекрасно пошел. Все прекрасно, осталось только написать запаковщик........
Вернуться к началу
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Вс Май 11, 2008 1:54 pm    Заголовок сообщения: Ответить с цитатой

Сперва проверь все строки на правильность расшифровки. А строк там немало, приличный массив поинтеров. И перед строкой идет n-ное количество байт, 0, а затем сама строка.
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Гость






СообщениеДобавлено: Вс Май 11, 2008 6:53 pm    Заголовок сообщения: Ответить с цитатой

Проверяю поинтеры. Не все указывают на начало фразы (Я не имею в виду заголовок в 3 байта). Кроме того всплывают некоторые служебные символы, например (f9 +1 байт). А так вроде все нормально..........
Вернуться к началу
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Вс Май 11, 2008 6:57 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
Проверяю поинтеры. Не все указывают на начало фразы (Я не имею в виду заголовок в 3 байта).

Не может быть. Я проверял - абсолютно все. И я же сказал - заголовок не три байта, а байты до нулевого байта.
Я даже плаг написал для Круптара (пока что только читает текст). Если хочешь - дом сорцы и составленный проектик.

Цитата:
Кроме того всплывают некоторые служебные символы, например (f9 +1 байт). А так вроде все нормально..........

В смысле?
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Гость






СообщениеДобавлено: Вс Май 11, 2008 7:03 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
Цитата:
Кроме того всплывают некоторые служебные символы, например (f9 +1 байт). А так вроде все нормально..........

В смысле?


Адрес: 30440B

Код:
This room should be marked
#No Entry".
{E}
Who or what are you!
{E}
4Ao:HYw#|e*Bbn8cwT=
{E}
I'm gonna get you
troublesome Sailor Senshi!
{E}


По идее в игре происходит некоторые действия. Возможно, они кодируются в диалоге......
Если третью фразу сдвинуть на несколько байт, то и она спокойно декодируется.
Вернуться к началу
Гость






СообщениеДобавлено: Вс Май 11, 2008 7:23 pm    Заголовок сообщения: Ответить с цитатой

адрес 30F2DD указывает на середину первой фразы в блоке (поинтер по адресу 50AFA). Это не единственный пример.....
Вернуться к началу
GrekRus



Зарегистрирован: 12.05.2008
Сообщения: 7
Откуда: Санкт-Петербург

СообщениеДобавлено: Пн Май 12, 2008 7:50 pm    Заголовок сообщения: Ответить с цитатой

HoRRoR, а ты, случайно, не собираешься писать запаковщик?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Пн Май 12, 2008 9:12 pm    Заголовок сообщения: Ответить с цитатой

В таких случаях обычно запаковщик = слегка модифицированный распаковщик. На днях подумаю, когда свободное время будет.
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
GrekRus



Зарегистрирован: 12.05.2008
Сообщения: 7
Откуда: Санкт-Петербург

СообщениеДобавлено: Пн Май 12, 2008 9:25 pm    Заголовок сообщения: Ответить с цитатой

Я кажись понял. Это не очень сложно. Там необходимо составить уравнение из формулы вычисления переменной SB, где неизвестной будет B^. А значения SB можно подобрать из таблицы.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GrekRus



Зарегистрирован: 12.05.2008
Сообщения: 7
Откуда: Санкт-Петербург

СообщениеДобавлено: Пн Май 19, 2008 8:00 pm    Заголовок сообщения: Ответить с цитатой

Чего-то никак не могу понять этот алгоритм. Декодирует нормально, но при кодировке на его основе в игре происходит сбой в середине фразы. Причем дешифровщик обратно текст востанавливает, а игра - нет. Видимо какой-то нюанс не учтен.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GrekRus



Зарегистрирован: 12.05.2008
Сообщения: 7
Откуда: Санкт-Петербург

СообщениеДобавлено: Пн Май 19, 2008 11:12 pm    Заголовок сообщения: Ответить с цитатой

Я поставил нижнее ограничение для значения в закодированном тексте в $20 и у меня пока все идет. Rolling Eyes
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Пн Май 19, 2008 11:20 pm    Заголовок сообщения: Ответить с цитатой

Ну вообще-то алгоритм не работает со значениями ниже $20, ибо любое значение при декриптации инкрементируется на $20. На то это и криптовка текста...
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
GrekRus



Зарегистрирован: 12.05.2008
Сообщения: 7
Откуда: Санкт-Петербург

СообщениеДобавлено: Вт Май 20, 2008 12:28 am    Заголовок сообщения: Ответить с цитатой

Все. До меня дошло. Теперь надо нормальный декодер написать, а то программа напоминает кашу из кнопок, текстовых полей и всевозможных переключателей. Laughing
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
devi409



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

СообщениеДобавлено: Вт Авг 04, 2009 5:21 pm    Заголовок сообщения: Ответить с цитатой

Хм... интересно и чем же закончился данный проект?
Есть готовая версия?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Экстремальный ромхакинг Часовой пояс: GMT + 3
На страницу Пред.  1, 2, 3, 4, 5  След.
Страница 4 из 5

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


Powered by phpBB © 2001, 2005 phpBB Group