Расскажу как я сделал цвет, вдруг кому интересно.
Рисование одного тайла в этой игре заканчивается тем, что у нас есть буфер тайла в виде восьми байт пикселов, плюс байт атрибутов -- это в оригинале.
Здесь же вместо байта атрибутов у меня собирается байт "стратегии" вывода тайла, всего стратегий шесть:
Можно заметить, что я не добавлял сюда "инверсные" стратегии, потому что того же эффекта можно добиться предварительно инвертировав тайл.Код:Стратегии записи байта в два плана: 1. Байт в 1-й план, очистить 2-й план - blue / black 2. Очистить 1-й план, байт во 2-й план - yellow / black 3. Байт в оба плана - red / black 4. $FF в 1-й план, байт во 2-й план - red / blue 5. Байт в 1-й план, $FF во 2-й план - red / yellow 6. Байт в 1-й план, инв.байт во 2-й план - blue / yellow
Дальше, для четырёх цветов рассмотрим какие у нас получаются комбинации (INK/PAPER) и расставим стратегии, учитывая нашу палитру:
Дальше остаётся подготовить исходные тайлы, записав в байт атрибутов байт стратегии.Код:| | black | blue | yellow | red | | -------- | ----- | ---- | ------ | --- | | black | -- | 1 | 2 | 3 | | blue | 1 | -- | 6 | 4 | | yellow | 2 | 6 | -- | 5 | | red | 3 | 4 | 5 | -- |
В игре при рисовании тайла переход на код нужной стратегии выполняется через switch -- по таблице адресов.




Ответить с цитированием