1

Тема: Z (Bitmap Brothers) - Unpacker

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

http://imasters.org.ru/images/zsprite.jpg

А теперь внимание, вопрос!  Зачем нужен распаковщик, если нет упаковщика? Просто извлечь ресурсы чтоб потом поиграться с ними в Photoshop? а зачем?

Даже если бы и был алгоритм упаковки то зачем он нужен? В переводе Z не нуждается, эта та игра в которой вообще не требуется знание английского, все фразы сводятся к - "Ааа нас атакуют", "Ты идиот", "Мы идем" и т.д. а текст "Save\Load Game", "Option"  и т.п. понятен любому.

Распаковщик архивов можно скачать в разделе "маленькие программы"

ЛС переполнен, не надо писать туда.

Re: Z (Bitmap Brothers) - Unpacker

Ну, если бы ты поделился алгоритмом разжатия, то такие люди как я и мои друзья попробовали бы написать упаковщик!

Bullfrog, Westwood и многие другие...

3

Re: Z (Bitmap Brothers) - Unpacker

Запросто.

        mov    esi, [Src]    ;esi источник
        mov    edi, [Dst]    ;edi приемник
        mov    ebp, [Tbl]    ;дополнительный буфер
        mov    edx, 1
        mov    ah, [esi]
        inc    esi
        stc
        adc    ah, ah
        jmp    @2
@1:
        add    ah, ah
        jnz    @2
        mov    ah, [esi]
        inc    esi
        stc
        adc    ah, ah
@2:
        jnb    @3
        mov    bl, [esi]
        inc    esi
        mov    [edi], bl
        inc    edi
        mov    [edx+ebp], bl
        inc    edx
        and    edx, 0FFFh
        jmp    @1
@3:
        mov    bl, [esi]
        inc    esi
        mov    bh, [esi]
        inc    esi
        mov    ecx, ebx
        shr    ebx, 4
        or    ebx, ebx
        jz    exit
        and    ecx, 0Fh
        add    ecx, 2
@4:
        mov    al, [ebx+ebp]
        inc    ebx
        and    ebx, 0FFFh
        mov    [edi], al
        inc    edi
        mov    [edx+ebp], al
        inc    edx
        and    edx, 0FFFh
        loop    @4
        jmp    @1
exit:
        ret
ЛС переполнен, не надо писать туда.