| Предыдущая тема :: Следующая тема | 
	
	
		| Автор | Сообщение | 
	
		| Гость 
 
 
 
 
 
 
 | 
			
				|  Добавлено: Пн Май 05, 2008 7:36 pm    Заголовок сообщения: |   |  
				| 
 |  
				| Игра Sailor Moon Another Story под Super Nitrendo |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| HoRRoR RRC2008
 
  
  
 Зарегистрирован: 21.06.2006
 Сообщения: 2341
 Откуда: Ростов-на-Дону
 
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Гость 
 
 
 
 
 
 
 | 
			
				|  Добавлено: Пн Май 05, 2008 8:08 pm    Заголовок сообщения: |   |  
				| 
 |  
				| Спасибо. Буду проверять. |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| HoRRoR RRC2008
 
  
  
 Зарегистрирован: 21.06.2006
 Сообщения: 2341
 Откуда: Ростов-на-Дону
 
 | 
			
				|  Добавлено: Пн Май 05, 2008 8:18 pm    Заголовок сообщения: |   |  
				| 
 |  
				| Хм... Странноватый хаффман  Хоть осваивай дебаггер да копай   --
 В общем, осваивая дебаг на 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 раз
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Гость 
 
 
 
 
 
 
 | 
			
				|  Добавлено: Пн Май 05, 2008 8:47 pm    Заголовок сообщения: |   |  
				| 
 |  
				| Помучаю еще этот ром. Может чего и найду. Хотя можно перевести наполовину...  . Там только сюжетная линия так закодирована. |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| HoRRoR RRC2008
 
  
  
 Зарегистрирован: 21.06.2006
 Сообщения: 2341
 Откуда: Ростов-на-Дону
 
 | 
			
				|  Добавлено: Пн Май 05, 2008 8:50 pm    Заголовок сообщения: |   |  
				| 
 |  
				| Если раскопать формат (вроде не такой уж и зверский) - можно без проблем написать плагин для Круптара 7 и цивильнинько состваить проектик   --
 А к коду всё-же присмотрись. Первые строки - загрузка байта $05 (вроде в нём вшита первая буква - "H") по адресу $3009B7 (у тебя, видимо, $300BB7 - советовал бы удалить первые $200 байт РОМа). Адресное пространство РОМа начинается с $C00000, оперативки - с $7E0000.
 _________________
 Работаю за деньги
 KILL ALL HUMANS!!!!!111
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Гость 
 
 
 
 
 
 
 | 
			
				|  Добавлено: Пн Май 05, 2008 9:36 pm    Заголовок сообщения: |   |  
				| 
 |  
				| Попробовал. Пока никаких видимых изменений. |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| HoRRoR RRC2008
 
  
  
 Зарегистрирован: 21.06.2006
 Сообщения: 2341
 Откуда: Ростов-на-Дону
 
 | 
			
				|  Добавлено: Пн Май 05, 2008 9:40 pm    Заголовок сообщения: |   |  
				| 
 |  
				| Ладно, будет время - покопаю, может и плаг напишу. Но ничего не обещаю. Мне просто самому интересно стало, с Хаффманом до этого я всего один раз сталкивался. _________________
 Работаю за деньги
 KILL ALL HUMANS!!!!!111
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Гость 
 
 
 
 
 
 
 | 
			
				|  Добавлено: Пн Май 05, 2008 9:49 pm    Заголовок сообщения: |   |  
				| 
 |  
				| А эта тема и начала обсуждаться с этой игры (если посмотреть на первую страницу).  |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| HoRRoR RRC2008
 
  
  
 Зарегистрирован: 21.06.2006
 Сообщения: 2341
 Откуда: Ростов-на-Дону
 
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| HoRRoR RRC2008
 
  
  
 Зарегистрирован: 21.06.2006
 Сообщения: 2341
 Откуда: Ростов-на-Дону
 
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Гость 
 
 
 
 
 
 
 | 
			
				|  Добавлено: Вт Май 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
 
  
  
 Зарегистрирован: 21.06.2006
 Сообщения: 2341
 Откуда: Ростов-на-Дону
 
 | 
			
				|  Добавлено: Вт Май 06, 2008 11:45 pm    Заголовок сообщения: |   |  
				| 
 |  
				| В общем, в диапазоне $F7A0-$FD8F находится либо дерево, либо какая-то таблица криптовки. Например, по адресу $F8B5 байт $28 - это буква 'H' (к значениям прибавляется $20), по адресу $F938 - 'e'. Продолжаю копать... --
 Короче это обычная криптация, позже гляну...
 _________________
 Работаю за деньги
 KILL ALL HUMANS!!!!!111
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| HoRRoR 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
 --
 Не факт, что прям всё именно так, но уже хоть что-то, да известно
  При проверке я успешно декриптовал первые два байта строки, когда буду дома мб напишу декриптор. И ещё, при чтении знаков переноса строки скрорей всего не происходит никаких операций... Хотя не факт.
 _________________
 Работаю за деньги
 KILL ALL HUMANS!!!!!111
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Гость 
 
 
 
 
 
 
 | 
			
				|  Добавлено: Ср Май 07, 2008 4:42 pm    Заголовок сообщения: |   |  
				| 
 |  
				| При переносе строки кодирование наверное начинается заново. Я вводил одинаковые строки подряд, не трогая служебные символы. Результат был одинаковый. |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Гость 
 
 
 
 
 
 
 | 
			
				|  Добавлено: Ср Май 07, 2008 6:30 pm    Заголовок сообщения: |   |  
				| 
 |  
				|  У меня получилось найти первую букву и даже для эксперемента поменять. Только у меня она по адресу $FAB5. Таблица предположительно находиться в диапазоне $F9A0 - $FF8F. |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| HoRRoR RRC2008
 
  
  
 Зарегистрирован: 21.06.2006
 Сообщения: 2341
 Откуда: Ростов-на-Дону
 
 | 
			
				|  Добавлено: Ср Май 07, 2008 6:36 pm    Заголовок сообщения: |   |  
				| 
 |  
				| А у меня получилось декриптовать первые четыре символа. Дальше надо учесть кое-какие моменты, но сперва их надо найти. З.Ы. Удали ты наконец первые $200 байт РОМа - при хакинге они только создают проблему и по сути не несут какой-либо нужной для игры/хакинга информации.
 _________________
 Работаю за деньги
 KILL ALL HUMANS!!!!!111
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Гость 
 
 
 
 
 
 
 | 
			
				|  Добавлено: Ср Май 07, 2008 6:48 pm    Заголовок сообщения: |   |  
				| 
 |  
				| Понял. Уже удалил. Все совпало. |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Гость 
 
 
 
 
 
 
 | 
			
				|  Добавлено: Ср Май 07, 2008 9:13 pm    Заголовок сообщения: |   |  
				| 
 |  
				| Чего-то не особо выходит, НО где-то рядом... Подставил алгоритм в Delphi. Первый символ считает, а потом сбивается...
  |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| HoRRoR 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
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Гость 
 
 
 
 
 
 
 | 
			
				|  Добавлено: Чт Май 08, 2008 8:04 pm    Заголовок сообщения: |   |  
				| 
 |  
				| Не идет... Только первые четыре символа первой строки и первые символы других строк, к сожалению. |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| HoRRoR RRC2008
 
  
  
 Зарегистрирован: 21.06.2006
 Сообщения: 2341
 Откуда: Ростов-на-Дону
 
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Гость 
 
 
 
 
 
 
 | 
			
				|  Добавлено: Пт Май 09, 2008 1:40 pm    Заголовок сообщения: |   |  
				| 
 |  
				| Я пытаюсь  составить полную таблицу символов, подставляя в первый байт исходного текста те или иные символы. Там на определенных диапазонах значений ($3b-$43) на втором месте постоянно всплывает символ 'С'. Далее начинает всплывать символ 'Z'. Кстати четвертый символ по алгоритму раскодировать не удалось (наверное простое совпадение). |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| HoRRoR RRC2008
 
  
  
 Зарегистрирован: 21.06.2006
 Сообщения: 2341
 Откуда: Ростов-на-Дону
 
 | 
			
				|  Добавлено: Пт Май 09, 2008 1:52 pm    Заголовок сообщения: |   |  
				| 
 |  
				| Эй-эй! Какая таблица? Я же сказал - криптация. Будет время - докопаю алгоритм, будет тебе полное декодирование. Тем более подобную таблицу можно составить без подставления - она уже есть в РОМе (две константы в моей процедуре - адреса двух таблиц). Ты лучше скажи мне - поинтеры не находил? Если нет - попытаюсь найти (постепенно дружусь с архитектурой SNES). И дай адреса остального текста и поинтеров - составлю проектик для Круптара. _________________
 Работаю за деньги
 KILL ALL HUMANS!!!!!111
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		|  |