Вложений: 4
Sprite graber - проба пера
Ударила меня ностальгия по Спектруму в новогодние праздники, решил вспомнить старый опыт. Почитал любимый самоучитель - "Как написать игру на ассемблере", увидел там бейсиковскую программу (с ассемблерными рутинами) для захвата спрайтов из экранного файла в формат, который автор пропагандировал. Для разминки переписал его на ассемблере (творил в SjAsm Plus + Unreal), кое-что дописал от себя. Можно смотреть как устроено (ибо не сложно), можно даже использовать, коли кому сгодится. Если случится вдруг чудо и кому-то это станет надо по жизни, готов даже поддерживать.
upd: SpriteGraber.zip - последняя актуальная версия. Также приложена инструкция.
Вложений: 2
Sprite Grabber AER edition
Сделал как просил AER.
В программе добавился пункт меню "Save Module", который выгружает набор спрайтов вместе с кодом отрисовки. Формат спрайта теперь другой: 2 байта - ширина, высота, потом байты атрибутов, потом растр. Соответственно, спрайты теперь всегда прямоугольные. Переписаны процедуры захвата и вывода под формат - сначала забираются/рисуются атрибуты, потом растр забирается/отрисовывается сверху вниз по линиям. Выгруженный модуль кода вместе со спрайтами релоцируем. Он имеет три точки входа со следующими смещениями от адреса загрузки:
-- +00 - координаты спрайта и его номер в наборе берутся по смещению +06..+08 от адреса загрузки в порядке x, y, n (подходит для вызова из BASIC'а);
-- +02 - координаты и номер передаются на регистрах (C = x, B = y, A = n);
-- +04 - координаты передаются в BC (C = x, B = y), адрес начала спрайта в памяти в HL.