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

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






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

Игра Sailor Moon Another Story под Super Nitrendo
Вернуться к началу
HoRRoR
RRC2008
RRC2008


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

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

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






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

Спасибо. Буду проверять.
Вернуться к началу
HoRRoR
RRC2008
RRC2008


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

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

Хм... Странноватый хаффман Smile Хоть осваивай дебаггер да копай Smile
--
В общем, осваивая дебаг на SNES, удалось выяснить, что в райное $F8B5 (у тебя надо прибавить $200 или удалить хидер) находится что-то похожее на само дерево. Думаю, дебажить дальше или нет... Вот лог:

Код:

$80/B839 A7 C0       LDA [$C0]  [$F0:09B7]   A:0000 X:0002 Y:00FC P:envmxdIZc
$80/B83B 29 FF 00    AND #$00FF              A:9205 X:0002 Y:00FC P:eNvmxdIzc
$80/B83E C9 F4 00    CMP #$00F4              A:0005 X:0002 Y:00FC P:envmxdIzc
$80/B841 10 14       BPL $14    [$B857]      A:0005 X:0002 Y:00FC P:eNvmxdIzc
$80/B843 20 7A B8    JSR $B87A  [$80:B87A]   A:0005 X:0002 Y:00FC P:eNvmxdIzc
$80/B87A 85 00       STA $00    [$00:0000]   A:0005 X:0002 Y:00FC P:eNvmxdIzc
$80/B87C 29 F8 00    AND #$00F8              A:0005 X:0002 Y:00FC P:eNvmxdIzc
$80/B87F 4A          LSR A                   A:0000 X:0002 Y:00FC P:envmxdIZc
$80/B880 4A          LSR A                   A:0000 X:0002 Y:00FC P:envmxdIZc
$80/B881 AA          TAX                     A:0000 X:0002 Y:00FC P:envmxdIZc
$80/B882 20 20 F3    JSR $F320  [$80:F320]   A:0000 X:0000 Y:00FC P:envmxdIZc
$80/F320 AD CC 0F    LDA $0FCC  [$80:0FCC]   A:0000 X:0000 Y:00FC P:envmxdIZc
$80/F323 C9 00 00    CMP #$0000              A:0000 X:0000 Y:00FC P:envmxdIZc
$80/F326 D0 03       BNE $03    [$F32B]      A:0000 X:0000 Y:00FC P:envmxdIZC
$80/F328 9C 4C 01    STZ $014C  [$80:014C]   A:0000 X:0000 Y:00FC P:envmxdIZC
$80/F32B 29 E0 FF    AND #$FFE0              A:0000 X:0000 Y:00FC P:envmxdIZC
$80/F32E 85 F4       STA $F4    [$00:00F4]   A:0000 X:0000 Y:00FC P:envmxdIZC
$80/F330 0A          ASL A                   A:0000 X:0000 Y:00FC P:envmxdIZC
$80/F331 18          CLC                     A:0000 X:0000 Y:00FC P:envmxdIZc
$80/F332 65 F4       ADC $F4    [$00:00F4]   A:0000 X:0000 Y:00FC P:envmxdIZc
$80/F334 18          CLC                     A:0000 X:0000 Y:00FC P:envmxdIZc
$80/F335 69 B0 F8    ADC #$F8B0              A:0000 X:0000 Y:00FC P:envmxdIZc
$80/F338 85 F4       STA $F4    [$00:00F4]   A:F8B0 X:0000 Y:00FC P:eNvmxdIzc
$80/F33A A9 C0 00    LDA #$00C0              A:F8B0 X:0000 Y:00FC P:eNvmxdIzc
$80/F33D 85 F6       STA $F6    [$00:00F6]   A:00C0 X:0000 Y:00FC P:envmxdIzc
$80/F33F AF 4C 01 00 LDA $00014C[$00:014C]   A:00C0 X:0000 Y:00FC P:envmxdIzc
$80/F343 4A          LSR A                   A:0000 X:0000 Y:00FC P:envmxdIZc
$80/F344 4A          LSR A                   A:0000 X:0000 Y:00FC P:envmxdIZc
$80/F345 4A          LSR A                   A:0000 X:0000 Y:00FC P:envmxdIZc
$80/F346 29 1F 00    AND #$001F              A:0000 X:0000 Y:00FC P:envmxdIZc
$80/F349 85 02       STA $02    [$00:0002]   A:0000 X:0000 Y:00FC P:envmxdIZc
$80/F34B A5 00       LDA $00    [$00:0000]   A:0000 X:0000 Y:00FC P:envmxdIZc
$80/F34D 38          SEC                     A:0005 X:0000 Y:00FC P:envmxdIzc
$80/F34E E5 02       SBC $02    [$00:0002]   A:0005 X:0000 Y:00FC P:envmxdIzC
$80/F350 A8          TAY                     A:0005 X:0000 Y:00FC P:envmxdIzC
$80/F351 A5 00       LDA $00    [$00:0000]   A:0005 X:0000 Y:0005 P:envmxdIzC
$80/F353 18          CLC                     A:0005 X:0000 Y:0005 P:envmxdIzC
$80/F354 6F 4C 01 00 ADC $00014C[$00:014C]   A:0005 X:0000 Y:0005 P:envmxdIzc
$80/F358 8D 4C 01    STA $014C  [$80:014C]   A:0005 X:0000 Y:0005 P:envmxdIzc
$80/F35B B7 F4       LDA [$F4],y[$C0:F8B5]   A:0005 X:0000 Y:0005 P:envmxdIzc
$80/F35D 29 7F 00    AND #$007F              A:8A28 X:0000 Y:0005 P:eNvmxdIzc
$80/F360 18          CLC                     A:0028 X:0000 Y:0005 P:envmxdIzc
$80/F361 69 20 00    ADC #$0020              A:0028 X:0000 Y:0005 P:envmxdIzc
$80/F364 85 00       STA $00    [$00:0000]   A:0048 X:0000 Y:0005 P:envmxdIzc
$80/F366 18          CLC                     A:0048 X:0000 Y:0005 P:envmxdIzc
$80/F367 6F 4C 01 00 ADC $00014C[$00:014C]   A:0048 X:0000 Y:0005 P:envmxdIzc
$80/F36B 8D 4C 01    STA $014C  [$80:014C]   A:004D X:0000 Y:0005 P:envmxdIzc
$80/F36E A5 00       LDA $00    [$00:0000]   A:004D X:0000 Y:0005 P:envmxdIzc
$80/F370 29 F8 00    AND #$00F8              A:0048 X:0000 Y:0005 P:envmxdIzc
$80/F373 4A          LSR A                   A:0048 X:0000 Y:0005 P:envmxdIzc
$80/F373 4A          LSR A                   A:0048 X:0000 Y:0005 P:envmxdIzc
...

_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111


Последний раз редактировалось: HoRRoR (Пн Май 05, 2008 8:49 pm), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Гость






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

Помучаю еще этот ром. Может чего и найду. Хотя можно перевести наполовину... Smile . Там только сюжетная линия так закодирована.
Вернуться к началу
HoRRoR
RRC2008
RRC2008


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

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

Если раскопать формат (вроде не такой уж и зверский) - можно без проблем написать плагин для Круптара 7 и цивильнинько состваить проектик Smile
--
А к коду всё-же присмотрись. Первые строки - загрузка байта $05 (вроде в нём вшита первая буква - "H") по адресу $3009B7 (у тебя, видимо, $300BB7 - советовал бы удалить первые $200 байт РОМа). Адресное пространство РОМа начинается с $C00000, оперативки - с $7E0000.
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Гость






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

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


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

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

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






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

А эта тема и начала обсуждаться с этой игры (если посмотреть на первую страницу). Smile
Вернуться к началу
HoRRoR
RRC2008
RRC2008


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

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

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


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

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

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






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

Там два шрифта.
Эта таблица годится только для перевода всяких названий, имен, может еще чего-то.

41=A
42=B
43=C
44=D
45=E
46=F
47=G
48=H
49=I
4A=J
4B=K
4C=L
4D=M
4E=N
4F=O
50=P
51=Q
52=R
53=S
54=T
55=U
56=V
57=W
58=X
59=Y
5A=Z
60=`
61=a
62=b
63=c
64=d
65=e
66=f
67=g
68=h
69=i
6A=j
6B=k
6C=l
6D=m
6E=n
6F=o
70=p
71=q
72=r
73=s
74=t
75=u
76=v
77=w
78=x
79=y
7A=z
9C=-
Вернуться к началу
Гость






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

Вообще в поиске текста мне помог патч для перевода на английский. Я им нулевой файл пропачил и уже там стал искать. По адресу 0000F9A0 если поизменять некоторые байты местами меняется текст.
Вернуться к началу
HoRRoR
RRC2008
RRC2008


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

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

В общем, в диапазоне $F7A0-$FD8F находится либо дерево, либо какая-то таблица криптовки. Например, по адресу $F8B5 байт $28 - это буква 'H' (к значениям прибавляется $20), по адресу $F938 - 'e'. Продолжаю копать...
--
Короче это обычная криптация, позже гляну...
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
HoRRoR
RRC2008
RRC2008


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

СообщениеДобавлено: Ср Май 07, 2008 9:56 am    Заголовок сообщения: Ответить с цитатой

Аллилуйя, что-то раскопал. Обычная криптация.
В общем, есть переменная, обзовём её Key. В самом начале декриптации строки она равна нулю. Итак:
1. Читаем байт; // [$3009B7]=05
2. OldKey:=Key;
3. Key:=(Key SHR 3) AND $1F; //(0 SHR 3) AND $1F = 0
4. Читаем байт по адресу $F8B0+(Байт - Key); // [$F8B0+($5 - 0)]=[$F8B5]=28
5. Прибавляем к нему $20 - получаем символ; // $48 = 'H'
6. Читаем байт по адресу $F780+символ, and'им с $F; // [$F780+48]=[$F7C8]=$07, байт=$07 and $F=$07
5. Key:=Символ + первый считанный байт + OldKey + последний считанный байт; // Key=$48+$05+$0+$07=$54
6. GoTo 1
--
Не факт, что прям всё именно так, но уже хоть что-то, да известно Smile При проверке я успешно декриптовал первые два байта строки, когда буду дома мб напишу декриптор.
И ещё, при чтении знаков переноса строки скрорей всего не происходит никаких операций... Хотя не факт.
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Гость






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

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






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

Very Happy У меня получилось найти первую букву и даже для эксперемента поменять. Только у меня она по адресу $FAB5. Таблица предположительно находиться в диапазоне $F9A0 - $FF8F.
Вернуться к началу
HoRRoR
RRC2008
RRC2008


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

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

А у меня получилось декриптовать первые четыре символа. Дальше надо учесть кое-какие моменты, но сперва их надо найти.
З.Ы. Удали ты наконец первые $200 байт РОМа - при хакинге они только создают проблему и по сути не несут какой-либо нужной для игры/хакинга информации.
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Гость






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

Понял. Уже удалил. Все совпало.
Вернуться к началу
Гость






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

Чего-то не особо выходит, НО где-то рядом...
Подставил алгоритм в Delphi. Первый символ считает, а потом сбивается... Rolling Eyes
Вернуться к началу
HoRRoR
RRC2008
RRC2008


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

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

Алгоритм неполный и немного неточный. Вот, что у меня пока получилось:
Код:

const SAdr = $F8B0; KAdr = $F780;
Function DecodeString(ROM: Pointer; Pos: DWord): String;
var B,SB,KB: ^Byte; Key,Key2,OldKey,C: DWord;
begin
  B:=Pointer(DWord(Rom)+Pos); Key2:=0;
  Key:=0; Finalize(Result); C:=0;
  While B^<>$FF do
  begin
    If B^=$FE Then Key:=0 else
    begin
      OldKey:=Key;
      Key:=(Key SHR 3) AND $1F;
      SB:=Pointer(DWord(ROM)+SAdr+(B^ - Key));
      SetLength(Result,Length(Result)+1);
      Result[Length(Result)]:=Char(C+(SB^ and $7F)+$20);
      KB:=Pointer(DWord(ROM)+KAdr+(SB^ and $7F)+$20);
      If (Key2 and $F0)=0 Then Inc(Key2,KB^ and $F)
      else Key2:=Key2 and $F;//(KB^ and $F);
      //Key2:=Key2 and $1F;
      Key:=(SB^ and $7F)+$20+C+B^+OldKey+(Key2 and $F);
      If C>0 Then Dec(Key);
      If {Key2 and $F0>0} Boolean(SB^ and $80) Then C:=$30 else C:=0;
      Key2:=Key2 and $F;
    end;
    Inc(B);
  end;
end;

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






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

Не идет... Только первые четыре символа первой строки и первые символы других строк, к сожалению.
Вернуться к началу
HoRRoR
RRC2008
RRC2008


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

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

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






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

Я пытаюсь составить полную таблицу символов, подставляя в первый байт исходного текста те или иные символы. Там на определенных диапазонах значений ($3b-$43) на втором месте постоянно всплывает символ 'С'. Далее начинает всплывать символ 'Z'. Кстати четвертый символ по алгоритму раскодировать не удалось (наверное простое совпадение).
Вернуться к началу
HoRRoR
RRC2008
RRC2008


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

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

Эй-эй! Какая таблица? Я же сказал - криптация. Будет время - докопаю алгоритм, будет тебе полное декодирование. Тем более подобную таблицу можно составить без подставления - она уже есть в РОМе (две константы в моей процедуре - адреса двух таблиц). Ты лучше скажи мне - поинтеры не находил? Если нет - попытаюсь найти (постепенно дружусь с архитектурой SNES). И дай адреса остального текста и поинтеров - составлю проектик для Круптара.
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Экстремальный ромхакинг Часовой пояс: GMT + 3
На страницу Пред.  1, 2, 3, 4, 5  След.
Страница 3 из 5

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


Powered by phpBB © 2001, 2005 phpBB Group