Magic Team

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Magic Team » О ромхакинге » Light Crusader (шрифт менюшек)


Light Crusader (шрифт менюшек)

Сообщений 1 страница 30 из 55

1

..Не так давно заметил в колекции MagicTeam перевод сей игры...Я над её переводом давно мучался (лет 5 назад),но тогда мне помешало закончить перевод одно обстоятельство-не нашёл шрифт менюшек...Так вот: как Djinn умудрился его найти ..?)

0

2

Удалось найти путём "запоганивания", так же как и панельку с жизнями сверху экрана.

0

3

А точное местоположение не подскажешь?
..Да и в каком формате шрифт?

0

4

Шрифт чем-то пожат. Находится или тут 0x28050 или тут 0x6532C (точно не могу сказать, это было 3 года назад). В русской версии тут 0x7DE00.

0

5

Я так понял,ты вставил свой шрифт в пустое место в роме и сделал на него "ссылку в самой игре"...Что за формат шрифта?..Какая-то "каша"..

0

6

paul_met написал(а):

Что за формат шрифта?

Djinn написал(а):

Шрифт чем-то пожат.

0

7

HoRRoR
..Имелось ввиду-русский шрифт (который сидит на новом месте)..

0

8

paul_met написал(а):

HoRRoR
..Имелось ввиду-русский шрифт (который сидит на новом месте)..

Видимо, тот же, что и у английского. А может и другой, если обходилась процедура распаковки игры.

0

9

Что-то Djinn молчит..Посмотрим,что он скажет (если скажет)

0

10

Моя каша - это сжатие ручками в хексредакторе. А вот панелька уже сжата моей программкой, но тем же кашистым методом.

0

11

Djinn
А зачем вообще понадобилось сжатие..?..Места в роме хватает на десятки таких шрифтов..

Отредактировано paul_met (2007-08-28 03:31:15)

0

12

paul_met написал(а):

А зачем вообще понадобилось сжатие..?..Места в роме хватает на десятки таких шрифтов..

Хах. У меня тогда ещё опыта было мало чтобы заменить код на загрузку несжатого шрифта.

0

13

Djinn написал(а):

Хах. У меня тогда ещё опыта было мало чтобы заменить код на загрузку несжатого шрифта.

..А теперь опыта достаточно?)
..И вообще-как сжимается шрифт?..

0

14

paul_met написал(а):

..А теперь опыта достаточно?)

И это ты спрашиваешь у самого лучшего ромхакера в России? :)

paul_met написал(а):

..И вообще-как сжимается шрифт?..

По определённому алгоритму. Там всё просто. Тем более что на ГБА чаще всего используются стандартные алгоритмы, для которых давно есть пакеры и анпакеры.

0

15

HoRRoR написал(а):

Тем более что на ГБА чаще всего используются стандартные алгоритмы, для которых давно есть пакеры и анпакеры.

Ну здесь не ГБА, а сега.

HoRRoR написал(а):

И это ты спрашиваешь у самого лучшего ромхакера в России? :)

Ты мне льстишь. =)

paul_met написал(а):

..И вообще-как сжимается шрифт?..

Всякими разными алгоритмам сжатия. =)

0

16

Djinn написал(а):

Ну здесь не ГБА, а сега.

Упс, сорри  :D

Djinn написал(а):

Ты мне льстишь. =)

Нет, это факт :) Вот назови мне хоть одного ромхакера лучше тебя? Да нет таких :) Ты такие вещи вытворяешь, которые никому и во сне не снились.

0

17

Ну хоть пример какой приведите этих самый "пакеров и анпакеров"..?

0

18

paul_met написал(а):

Ну хоть пример какой приведите этих самый "пакеров и анпакеров"..?

Для GBA? Ну GBACrusher например. Ещё есть ccextract и gbalz. А вообще я пользуюсь собственными.

HoRRoR написал(а):

Нет, это факт :) Вот назови мне хоть одного ромхакера лучше тебя? Да нет таких :) Ты такие вещи вытворяешь, которые никому и во сне не снились.

К примеру АнС и Санчез. Я правда не знаю лучше они или не лучше, но ромхакеры отличные.

0

19

Djinn
А для SMD что-нибудь..?

0

20

paul_met написал(а):

Djinn
А для SMD что-нибудь..?

А для SMD всё индивидуально. В каждой игре всё по-разному.

0

21

Тогда,как понять принцып запаковки шрифта в роме..?..Какие есть методы или способы..?..Или это всё,так сказать,не для средних умов..?

Отредактировано paul_met (2007-09-01 03:14:46)

0

22

paul_met написал(а):

Тогда,как понять принцып запаковки шрифта в роме..?

Если принцип простой, например RLE, то можно глазками разобрать. А если сложный, то дебагом. Но HoRRoR например даже LZ глазками разбирает.

paul_met написал(а):

Какие есть методы или способы..?

Разновидости RLE, LZ, Huffman. В Light Crusader вроде бы LZ. Но какая точно, я не знаю.

0

23

Как происходит сам процесс распаковки..?..Порядок действий...

0

24

1. Разбирается формат.
2. Пишется программа-распаковщик.

0

25

Djinn, он наверное имел ввиду саму распаковку :) У меня была дока на одном форуме, но его база безвозвратно утеряна :( Там я всё чётко расписывал...

0

26

Посмотри тут. Там всё хорошо нарисовано. А алгоритм такой: читается DWORD(красные 4 байта), когда он считывается в память, все байты переворачиваются задом-на-перёд(на сеге проц другой, так что ничего переворачиваться не будет), и по порядку считываются биты справа-налево. Если бит 1, то просто читаем два байта в буфер распаковки, а если 0 - то читаем два командных байта, в которых хранится информация о ссылке назад и количестве читаемых пар байт. В данном случае первые 11 бит командной пары - отсылка назад на n-ное количество пар байт(в этих битах n), а последние 5 бит говорят нам сколько читать пар байт, только оно на 2 меньше, т.е. 0 - читать 2 пары. Это потому что 2 - минимальное число, т.к. если будет 1 байт, то его жать нет смысла.
Сорри за непонятность - спешил. Если что, спрашивай :)

0

27

HoRRoR
Исчерпывающий ответ)
..А если я тебе кину один файлик небольшой-ты найдёшь в нём кое-какой шрифт???

0

28

paul_met написал(а):

Исчерпывающий ответ)

Нет, исчерпывающий ответ утерян, а писать доку ещё раз влом :(

paul_met написал(а):

..А если я тебе кину один файлик небольшой-ты найдёшь в нём кое-какой шрифт???

Кидай, только посмотреть я смогу после среды, может позже...

0

29

HoRRoR написал(а):

Нет, исчерпывающий ответ утерян, а писать доку ещё раз влом :(

Она?

FFF sql base
user: horror
post: 18

Ломаем LZ77 без экстрим хакинга.

  Вот я и решил написать свою первую доку  :smile: . За неимением такового опыта могу упустить некоторые моменты и допустить ошибки, так что строго не судите. Решил я написать повесть о всеми любимом алгоритме сжатия (все - это разработчики :smile: ). Итак, начнём.

  Как известно, все стремяться что-то экономить, будь то деньги, материалы или же свободное место в РОМе. Ведь экономя место, разработчики экономят те самые денежки, порой так извращаясь, что Лемпель-Зив бы в гробу перевернулся :smile:. А нам, горе-ромхакерам, приходиться всю эту кашу разгребать. Конечно, хорошо знать такую штутку, как ассемблер, тогда всё нипочём - посмотрел процедуру распаковки, написал прогу и усё. Но что же делать, если мы ентого самого ассемблера не знаем? Ведь на его изучение надо убить не мало времени, да и не каждому дано познать его тайны. Я сам асма не знаю, поэтому каждый раз выкручивался без него. Один раз мне помогли разобраться со сжатием (спасибо Ghost'у :wink: ), и я понял, что в этом нет ничего сложного. Алгоритм применяется один, главное разобраться в особенностях каждого случая.

  Начнём с самого простого, как же нам найти место с графикой? Для этого существует древний, как мир, способ - просто поганить блоками РОМ и смотреть на изменения, если изображение изменилось - значит графика находиться в данном блоке. Для этого идеально подойдёт прога Virtual_Killer'а - Поганка. Елси запакован текст, то можно поскать часть самой первой фразы или же самое редко встречающееся слово, например, состоящие только из больших букв.
  Ну, точное расположение начала архива мы установили. Теперь открываем РОМ в hex-редакторе(тем, кто не знает, что это такое, просьба покинуть помещение :smile: ), переходим по узнанному нами адресу. А теперь я объясню принцип сжатия на простом примере.

----

Дальше пока не написал.
Но приведу самый простой пример.
{xx} - байт в hex-счислении.

Незапакованный текст:
Этот текст запакован LZ77 алгоритмом. Этот запакован.

Запакованный текст:
{35}{00}{FF}Этот тек{FF}ст запак{FF}ован LZ7{FF}7 алгори{3F}тмом. {26}{05}{20}{09}{01}.

Теперь распакуем этот текст:
1. Читаем первые два байта. {35}{00} - это размер запакованного файла. Он нужен для того, чтобы не распаковать лишнего и вовремя остановиться. В большинестве случаев байты читаем задом наперёд - это особенности процесора.
2. Читаем "управляющий" байт. В нашем случае он равен {FF}.
3. Разбираем его по битам: 11111111. В нашем случае 1 значит просто считать в буфер распаковки один байт, а 0 - считать командный байт(о нём чуть позже).
1 - читаем "Э"
1 - читаем "т"
...
1 - читаем "к"
Командный байт кончился, читаем следующий(GoTo 2)
---
Так доходим до 3F. Разберём его по битам: 00111111.
Что делать с еденицами мы знаем. Что же делать с нулями? Вот тут-то вот и проявляется сжатие. Если мы наталкиваемся на 0, то нам надо прочитать не символ, а командные байт. В нашем случае их два - один отвечает за отсылку назад, а другой - за количество считываемых файлов. У нас это {26} и {05}. 26(hex)=38(dec). Наш буфер: "Этот текст запакован LZ77 алгоритмом. ". Возвращаемся от текущей позиции на 38 символов назад: "Этот текст запакован LZ77 алгоритмом. ". И читаем 5 байт(05 hex=5 dec) подряд:
"[Этот ]текст запакован LZ77 алгоритмом. ". Теперь наш буфер выглядит так: "Этот текст запакован LZ77 алгоритмом. Этот ". Берём следующий бит командного байта, он равен 0. Опять читаем два командный байта и делаем то же самое.
Наш командный байт кончился, берём следующий. Он равен {01}, т.е. 00000001. Соответственно читаем один символ в буфер. Но дальше идёт 7 нулей, то есть они говорят, что надо считать 7 пар командных байт, а текст кончился, что же делать? Для этого и нужен размер файла. Мы знаем, что нужное количество байт уже распаковано и просто прекращаем процесс распаковки.
Надеюсь, объяснил понятно :smile: .

Упрощённое объяснение алгоритма распаковки:
1. Читаем размер.
2. Читаем управляющий байт.
3. Читаем бит:
4. Если 1 - читаем символ. GoTo 3.
5. Если 0 - читаем управляющие байты. GoTo 3.
4. Ком. байт кончился - читаем следующий(GoTo 2).

0

30

О ДА!!! Где ты её откопал? :) А следующие посты есть? :) Плюс ещё поправка Serke насчёт Лемпель-Зива, что это разные люди? :)
Спасибо огромное :)

0


Вы здесь » Magic Team » О ромхакинге » Light Crusader (шрифт менюшек)