/mm_unpacker

MicroMachineNes chr ram unpacker

Primary LanguageC

mm_unpacker

chr ram распаковщик данных для игры микромашинки на денди

результат

Описание алгоритма

$01 - количество блоков для распаковки
$02 - биты управления распаковки
управляющий бит - старший бит $02
источник - указатель на упакованные данные
размер блока 16 байт

В случае словаря ($02 = 0b1XXXXXXX)

  • копируем в видеопамять и наполяем словарь
  • если следующий управляющий бит X
    • 1: то продолжаем копировать и наполнять
    • 0: иначе устанавливаем новый $02 и сбрасываем счетчик на 8
      • далее в зависимости от управляющего бита carry
      • 1: берем значение из словаря
      • 0: берем значение из источника

В случае последовательности ($02 = 0b0XXXXXXX)

  • копируем в видеопамять
  • если следующий управляющий бит X
    • 0: берем следующий из источника
    • 1: продолжаем проставлять то что прочитали
      • после 8 итераций переходим к новому блоку, управляющий бит X
      • 1: берем следующий из источника
      • 0: используем константу 0
        • копируем в видеопамять