23 марта 2018 г.
Недавно я наткнулся на симпатичный маленький проект GitHub, который конвертирует анимированные GIF-файлы в спрайты Commodore 64. Этот инструмент преобразует в спрайты высокого разрешения, поэтому я написал инструмент .NET, который преобразует в многоцветные спрайты.
Как описано в C64-Wiki, в многоцветных спрайтах биты сгруппированы попарно, а поскольку каждый такой многоцветный пиксель определяется двумя битами данных, а не одним, каждый пиксель может делать одну из четырех вещей:
- Пиксели с битовой парой
00
кажутся прозрачными, как биты «0» в режиме высокого разрешения. - Пиксели с битовой парой
01
будут иметь цвет, указанный в адресе $d025. - Пиксели с битовой парой
11
будут иметь цвет, указанный в адресе $d026. - Пиксели с битовой парой
10
будут иметь указанный цвет, назначенный рассматриваемому спрайту в диапазоне $d027–d02e.
Таким образом, каждый цвет соответствует определенному делегату, который принимает позицию бита пикселя и возвращает значение, которое нужно добавить к байту, которому принадлежит пиксель:
public static IDictionary<C64Colors, Func<int, int>> ToByteAdds(this ColorsString colorsString) => new Dictionary<C64Colors, Func<int, int>> { {colorsString.Value[0].ToC64Color(), x => 0}, {colorsString.Value[1].ToC64Color(), x => (int)Math.Pow(2, 6 - x)}, {colorsString.Value[2].ToC64Color(), x => (int)Math.Pow(2, 7 - x) + (int)Math.Pow(2, 6 - x)}, {colorsString.Value[3].ToC64Color(), x => (int)Math.Pow(2, 7 - x)} };
В этом методе colorsString
представляет собой строку из четырех символов, состоящую из шестнадцатеричных чисел, определяющих цвет в каждом из регистров $d020, $d025, $d026, $d027.
Партийные попугаи в Slack — это анимированные рисунки попугая какапо Сирокко. Я преобразовал некоторых милых попугаев на https://cultofthepartyparrot.com/ и позволил этим маленьким ребятам проскользнуть на экран.
В результате получилось довольно забавно:
https://www.youtube.com/watch?v=q8wslJgwOWo
Репозиторий содержит простую демонстрацию C64, так что вы можете попробовать ее сами!
Первоначально опубликовано на kristofferjalen.github.io 23 марта 2018 г.