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

компрессия

 
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Экстремальный ромхакинг
Предыдущая тема :: Следующая тема  
Автор Сообщение
Fish



Зарегистрирован: 15.11.2003
Сообщения: 425
Откуда: издалека...

СообщениеДобавлено: Пт Дек 05, 2003 3:04 pm    Заголовок сообщения: компрессия Ответить с цитатой

Привет, Шедевровцы!

Прочел заметку Nick o'DIMM'a о компрессии, в документации Шедевра; понравилось! (давно бы так!!!) Smile

Пару замечаний, если не возражаете:

1) Почему бы не упомянуть в статье, как называются описываемые алгоритмы сжатия данных? Сжатие последовательности одинаковых байт - это RLE, а повторение фрагментов распакованных данных - LZ77, остроумнейший (не кушающий память!) алгоритм далекого 1977 года. Wink (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))

вобщем все оооочень сильно зависит от фантазии тех или иных
разработчиков...
_________________
Всех их вместе переведём!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Fish



Зарегистрирован: 15.11.2003
Сообщения: 425
Откуда: издалека...

СообщениеДобавлено: Пт Дек 05, 2003 3:43 pm    Заголовок сообщения: Ответить с цитатой

На эту тему можно немного пофантазировать. Предположим, сжатый текст может не сразу быть "нарисован" в одном из слоев фона, а сперва распакован в а некий буфер. Тогда может помочь изучение записухи игры (кстати, записухи VBA - обычный zip-архив, Total Commander входит в него по нажатию Enter), быть может, относительный поиск по ней (по записухе) сработает. А дальше - как в примере с тайликами.

ЗЫ: Хорошо быть теоретиком... =:-\
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
АнС
RRC2008
RRC2008


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

СообщениеДобавлено: Пт Дек 05, 2003 5:39 pm    Заголовок сообщения: Ответить с цитатой

Ну вы, теоретики, хватит базарить, в стране рождаемость падает!!!
Жутко Довольный Жутко Довольный :lol3:

Фиш, молодец, правильно соображаешь. И фантазия здесь - главная вещь. Ты что, хочешь что-то сломать?
GBA ничем не отличается от других платформ в плане ромхакинга - алгоритмы тоже разные, различные дикие смеси RLE и LZ.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Fish



Зарегистрирован: 15.11.2003
Сообщения: 425
Откуда: издалека...

СообщениеДобавлено: Пт Дек 05, 2003 6:13 pm    Заголовок сообщения: Ответить с цитатой

АнС писал(а):
Ты что, хочешь что-то сломать?
Упаси боже! Только - починить! Wink ;)

Конечно, руки чешутся кое в чем поковыряться, но я прекрасно понимаю, сколько труда требуют такие вещи... Так что - врядле.

АнС писал(а):
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 с потерей какчества...
Нам это врядле поможет, поэтому и оффтопик. А вообще, кто знает, может быть и...
_________________
 Однажды знакомый спросил - <Ну ты как?> <Да я... всё нормально. Нормально, чувак...>
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Экстремальный ромхакинг Часовой пояс: GMT + 3
Страница 1 из 1

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


Powered by phpBB © 2001, 2005 phpBB Group