|
shedevr.org.ru Группа перевода приставочных игр "ШЕДЕВР"
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Fish
Зарегистрирован: 15.11.2003 Сообщения: 425 Откуда: издалека...
|
Добавлено: Пт Дек 05, 2003 3:04 pm Заголовок сообщения: компрессия |
|
|
Привет, Шедевровцы!
Прочел заметку Nick o'DIMM'a о компрессии, в документации Шедевра; понравилось! (давно бы так!!!)
Пару замечаний, если не возражаете:
1) Почему бы не упомянуть в статье, как называются описываемые алгоритмы сжатия данных? Сжатие последовательности одинаковых байт - это RLE, а повторение фрагментов распакованных данных - LZ77, остроумнейший (не кушающий память!) алгоритм далекого 1977 года. (77-й год; а я об этом узнал лишь сегодня, вот отстой!)
2) Что же это получается, можно разобраться в компрессии, но написать неэффективный компрессор, и тогда часть переведенного текста может попросту не поместиться в РОМе? А ведь сжимать всегда сложнее, чем восстанавливать...
3) А что насчет GBA? Там используюся такие же алгоритмы, или нечто хитрее?
4) При помощи модного отладчика можно упростить поиск графики. Теоретически, это могло бы выглядить так: перед появлением нужной картинки, делаем запись игры. Дожидаемся появления нужной картинки/надписи. Смотрим, где ее тайлики располагаются в видео-памяти. Загружаем игру, и с помощью "модного" отладчика ожидаем появления нужного байта в нужном месте. Break! Всё - процедура перехвачена. В стеке лежит адрес вызова.
Однако, этот "алгоритм" сработает лишь в том случае, если видео-память заполняется НЕ-динамически, т.е., только тогда, когда нужные тайлики каждый раз лежат в том же самом месте.
Вообще-то, идея эта не моя, но... Короче, возможно ли ЭТО?
Типа, литература:
[1] Статья Ника на сайте Шедевра, http://shedevr.org.ru/docs.shtml (Спасибо, Ник!)
[2] Разговор с Axel'ем на его сайте, http://pokeperevod.narod.ru/ (Спасибо, Аксель!)
[3] Поиск Гуглем по ключевым словам: "LZ77" и "компрессия"; |
|
Вернуться к началу |
|
|
Axel Советник
Зарегистрирован: 14.11.2003 Сообщения: 680
|
Добавлено: Пт Дек 05, 2003 3:19 pm Заголовок сообщения: Re: компрессия |
|
|
Цитата: | Однако, этот "алгоритм" сработает лишь в том случае, если видео-память заполняется НЕ-динамически, т.е., только тогда, когда нужные тайлики каждый раз лежат в том же самом месте. |
и если они вообще лежат в виде ТАЙЛИКОВ, в том смысле, что
в роме данные могут лежать скажем в виде байтиков которые нужно наORить на уже загруженные в тайловую облать данные... (что весьма актуально в случае использования
техники "непропорциональных шрифтов" в тайловом режиме(GBA mode 0,1,2))
вобщем все оооочень сильно зависит от фантазии тех или иных
разработчиков... _________________ Всех их вместе переведём! |
|
Вернуться к началу |
|
|
Fish
Зарегистрирован: 15.11.2003 Сообщения: 425 Откуда: издалека...
|
Добавлено: Пт Дек 05, 2003 3:43 pm Заголовок сообщения: |
|
|
На эту тему можно немного пофантазировать. Предположим, сжатый текст может не сразу быть "нарисован" в одном из слоев фона, а сперва распакован в а некий буфер. Тогда может помочь изучение записухи игры (кстати, записухи VBA - обычный zip-архив, Total Commander входит в него по нажатию Enter), быть может, относительный поиск по ней (по записухе) сработает. А дальше - как в примере с тайликами.
ЗЫ: Хорошо быть теоретиком... =:-\ |
|
Вернуться к началу |
|
|
АнС RRC2008
Зарегистрирован: 08.11.2003 Сообщения: 2818
|
Добавлено: Пт Дек 05, 2003 5:39 pm Заголовок сообщения: |
|
|
Ну вы, теоретики, хватит базарить, в стране рождаемость падает!!!
:lol3:
Фиш, молодец, правильно соображаешь. И фантазия здесь - главная вещь. Ты что, хочешь что-то сломать?
GBA ничем не отличается от других платформ в плане ромхакинга - алгоритмы тоже разные, различные дикие смеси RLE и LZ. |
|
Вернуться к началу |
|
|
Fish
Зарегистрирован: 15.11.2003 Сообщения: 425 Откуда: издалека...
|
Добавлено: Пт Дек 05, 2003 6:13 pm Заголовок сообщения: |
|
|
АнС писал(а): | Ты что, хочешь что-то сломать? | Упаси боже! Только - починить! ;)
Конечно, руки чешутся кое в чем поковыряться, но я прекрасно понимаю, сколько труда требуют такие вещи... Так что - врядле.
АнС писал(а): | GBA ничем не отличается от других платформ в плане ромхакинга - алгоритмы тоже разные, различные дикие смеси RLE и LZ. | Это есть гуд. Ибо полный LZW ломать, имхо, было бы не под силу. |
|
Вернуться к началу |
|
|
Fish
Зарегистрирован: 15.11.2003 Сообщения: 425 Откуда: издалека...
|
Добавлено: Вт Дек 09, 2003 10:56 pm Заголовок сообщения: |
|
|
По уму, оптимальнее всего было бы бодяжить:
* RLE+LZ77 - для графики;
* MTE+LZ77 - для текста;
по крайней мере, именно так бы я и поступил...
А еще подумалось, что:
* LZ77 - хорош для приставок, т.к. быстр и не требователен к RAM'у, НО... (см.далее);
* LZ77 - не очень хороший выбор для сжатия текста при наличии ROM'а большой емкости. Еще бы, мы имеем возможность хранить под боком словарь огромного размера (и с быстрым доступом), а LZ77 использует под словарь максимум половину относительно небольшого буфера распаковки. Т.е., для массированного сжатия текста разработчики теоретически могут применить какой-то другой алгоритм.
* позже *
Еще раз заглянул в "gbatek". Гм, да там, в BIOS'е GBA, даже декомпрессор сжатия по Хафману есть. Всё серьёзнее, чем кажется на первый взгляд... _________________ Однажды знакомый спросил - <Ну ты как?> <Да я... всё нормально. Нормально, чувак...> |
|
Вернуться к началу |
|
|
CaH4e3
Зарегистрирован: 21.01.2004 Сообщения: 195
|
Добавлено: Пт Фев 20, 2004 1:44 pm Заголовок сообщения: Re: компрессия |
|
|
Fish писал(а): | 2) Что же это получается, можно разобраться в компрессии, но написать неэффективный компрессор, и тогда часть переведенного текста может попросту не поместиться в РОМе? А ведь сжимать всегда сложнее, чем восстанавливать...
|
Неэффективных декомпрессоров можно сказать не бывает, если ты сможешь разобраться в том, как этот компрессор вообще работает, нечто худшее написать не получится, потому как это будет уже не "тот" компрессор. Это надо специально постараться, чтобы сделать хуже. ж)) Его можно только улучшить.
Другое дело, это разница в упаковке тех или иных данных вообще одним и тем же алгоритмом. Ты можешь изменить какую-то часть данных, запаковать ее, но в итоге получить запакованных данных больше, чем было до этого... Вот это вопрос уже серьезнее... Потому как приходится искать пути, чтобы "облегчить" запованный массив, ровно на столько, на сколько ты его своей правкой "утяжелил"... ж)) |
|
Вернуться к началу |
|
|
Fish
Зарегистрирован: 15.11.2003 Сообщения: 425 Откуда: издалека...
|
Добавлено: Пт Фев 20, 2004 3:34 pm Заголовок сообщения: Re: компрессия |
|
|
CaH4e3 писал(а): | Ты можешь изменить какую-то часть данных, запаковать ее, но в итоге получить запакованных данных больше, чем было до этого... [...] приходится искать пути, чтобы "облегчить" запованный массив, ровно на столько, на сколько ты его своей правкой "утяжелил"... ж)) | Интересная фенька есть в Adobe Image Ready на эту тему - .gif с потерей какчества...
Нам это врядле поможет, поэтому и оффтопик. А вообще, кто знает, может быть и... _________________ Однажды знакомый спросил - <Ну ты как?> <Да я... всё нормально. Нормально, чувак...> |
|
Вернуться к началу |
|
|
|
|
Вы не можете начинать темы Вы можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
Powered by phpBB © 2001, 2005 phpBB Group
|