Цитата:
Вот ещё что хотел спросить: для распаковщика входными данными является путь к рому, начало блока графика и конец блока графики. Правильно ли это?
А как ты конец нашёл? Проще всего реализовать программу, если в качестве входных данных дать: 1) имя файла, 2) координату начала запакованных данных, 3) размер данных, которые хотим получить на выходе.
Если не задать размер, то алгоритм позволяет "распаковывать" всё подряд - хоть до конца рома, и на выходе ты получишь распакованную картинку плюс СОТНИ хлама, следующие за ней.
Цитата:
или можно как-то программно определять алгоритм сжатия и не задавать начального и конечного значений блоков графики?
С точки зрения реализации гораздо проще указать программе все данные самому. Хотя используя различные методы программу можно научить находить что-то похожее на пожатые ресурсы, но гарантий никаких нет, ведь практически любую последовательность байтов можно попытаться так или иначе "распаковать" и получить на выходе бесполезный мусор.
Если ошибиться с началом картинки, то даже запакованная картинка может превратиться во что-то мусоро-подобное. Представь, например, что за флаговый байт мы взяли не первый байт пожатой картинки, а байт перед ней или второй байт пожатой картинки. Даже из-за такой небольшой ошибки программа будет воспринимать данные совсем иначе: то, что должно быть не пожатым байтом, может восприниматься программой как часть пары сжатия, а то, что было частью пары сжатия, будет восприниматься как не пожатый байт. В итоге "распакованная" картинка превратится в месево, в котором, если повезёт, где-нибудь под конец и появится что-то похожее на конец картинки (если на каком-то этапе программа верно попадёт во флаговый байт).