b010d24792
Демо на реальном арте (third_party/16x16-RPG-characters, bard): conv_sprites.py режет PNG 192×128 (8 персонажей = блоки 3×4 кадров: ряды вниз/влево/вправо/вверх × кадры маятника 0/1/2) в 8 вертикальных лент по 12 кадров и строит bard.pal (слоты 0-15 EGA + цвета PNG с 16, прозрачность → 0xFF). 8×12 кадров не лезут в одну EMM-страницу — ДВА атласа по 4 персонажа (движок сам переключает страницы W0). Палитра из файла: gfx_pal_fload + gfx_pal_sync. Смена направления = sprite_anim(dir*3, dir*3+2, PINGPONG). Правила хождения (двухфазная машина на sprite_moveto): до края → разворот 180° → случайная точка (не меньше четверти экрана) → поворот ±90° → снова до края. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
20 lines
810 B
Makefile
20 lines
810 B
Makefile
PROJ_ROOT := $(abspath $(CURDIR)/../..)
|
|
EXAMPLE := rpgwalk
|
|
EXTRA_FLAGS ?= --gfx 256 --memory tiny
|
|
EXTRA_DATA := bard1.atl bard2.atl bard.pal
|
|
include $(PROJ_ROOT)/app.mk
|
|
|
|
# 8 персонажей по 12 кадров = 24 КБ пикселей — НЕ лезут в одну
|
|
# EMM-страницу (лимит 16К-0x100): два атласа по 4 персонажа.
|
|
sprites.stamp: conv_sprites.py $(PROJ_ROOT)/toolchain/mkatlas.py
|
|
python3 conv_sprites.py
|
|
python3 $(PROJ_ROOT)/toolchain/mkatlas.py bard1.atl \
|
|
char0.raw:16x16:1x12 char1.raw:16x16:1x12 \
|
|
char2.raw:16x16:1x12 char3.raw:16x16:1x12
|
|
python3 $(PROJ_ROOT)/toolchain/mkatlas.py bard2.atl \
|
|
char4.raw:16x16:1x12 char5.raw:16x16:1x12 \
|
|
char6.raw:16x16:1x12 char7.raw:16x16:1x12
|
|
touch $@
|
|
|
|
$(EXAMPLE).exe: sprites.stamp
|