examples/rpgwalk: 8 RPG-персонажей ходят по травяному полю

Демо на реальном арте (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>
This commit is contained in:
2026-07-13 17:27:00 +03:00
parent 6dea6955c2
commit b010d24792
5 changed files with 278 additions and 0 deletions
+19
View File
@@ -0,0 +1,19 @@
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