302. Декодирование атрибутов спрайта
Декодировать исходный байт атрибутов спрайта.
Урок 302 из 356 · tests/chapter_09_sprite_rendering/test_302_decode_sprite_attributes.py
Изменяемый файл
emulator/rendering/sprite_renderer.pyЗачем нужен этот шаг
Предыдущий шаг определил SpriteAttributes. Теперь мы преобразуем исходный байт атрибутов OAM в эту декодированную структуру.
Предлагаемый пример реализации
def decode_sprite_attributes(attributes: int) -> SpriteAttributes:
attributes &= 0xFF
return SpriteAttributes(
palette_id=attributes & SPRITE_PALETTE_ID_MASK,
is_behind_background=(attributes & SPRITE_IS_BEHIND_BACKGROUND) != 0,
flip_horizontal=(attributes & SPRITE_FLIP_HORIZONTAL) != 0,
flip_vertical=(attributes & SPRITE_FLIP_VERTICAL) != 0,
)Пример
attributes = 0b1110_0011Значение
palette_id = 3
is_behind_background = True
flip_horizontal = True
flip_vertical = TrueБиты 2-4
Пока игнорируются. Не выбрасывайте исключение, если они установлены.
Вне рамок этого шага
- вспомогательная функция для палитровой RAM спрайтов
- отрисовка пикселей
- попадание спрайта 0
- переполнение спрайтов
- pygame
Запустить этот урок
uv run pytest tests/chapter_09_sprite_rendering/test_302_decode_sprite_attributes.py -v