Хранение сжатой графики SMS (Sega Master System)

Автор SPOT, 30 ноября 2016, 11:25

« назад - далее »

SPOT

Хранение сжатой графики SMS
В этой статье я хочу рассмотреть один из примеров сжатия графики в играх. В частности, мы будем рассматривать игру Double Hawk для Sega Master System (SMS).
 
Так же будет полезно ознакомится со статьёй «SMS/GG (Метод хранение несжатой графики в играх для SMS/GG)».
 
Метод хранения схож с методом описанном в статье «Хранение сжатой графики 1BBP».
 
В игре много пожатой графики, мы же будем рассматривать надпись Mission.
 
Так называемый архив со сжатой графика хранится в роме (игре) с $CCAD по $D0BE.
 
Первые два байта 60 01 эта что-то вроде размера архива. Переворачиваем значение и получаем 01 60. В переводи в десятичные это 352. Это значение сколько пикселей по 8 мы запишем в видеопамять консоли. Проще говоря «размер архива».
 
Начнём рассматривать по порядку.
 
Байт 01 это число сколько графических дынных будет до следующего «служебного байта».
 
В нашем случае мы считываем одно значение FF 00 00 00 равное 4 байтам.
 
Далее идёт «служебный байт» 81, который указывает на количество повторений.
 
В нашем случае 3 повторения значения 47 B8 00 00.
 
То есть 0x81 – 0x7E = 3
 
Для наглядности
 

PSXDev

Большое дело делаешь, ведь раньше так подробно никто это не расписывал и не объяснял.
Надеюсь, благодаря вашим усилиям появится ещё больше хороших ромхакеров, а с ними и новых качественных переводов игр.
 

Цитировать 
То есть 0x81 – 0x7E = 3
P.S. Откуда взялась 0x7E?

SPOT

Цитата: PSXDev от 30 ноября 2016, 11:41P.S. Откуда взялась 0x7E?
 
«Служебный байт» делится на два типа. Один считывает значения данных подряд, другой повторяет.
От 01 до 7E это количество которое будет считываться подряд.
От 7F до FF – количество повторов.