applications/PoP: порт Prince of Persia — PoC (roomtest) + пайплайн

Порт PoP на Sprinter.  Текущий PoC — applications/PoP/roomtest/:
комната 1 (фон-композиция тайлов) + Kid с управлением на raw-клавиатуре
и коллизией с картой.

- roomtest — pop_bg (фон), pop_kid (спрайты Kid, column-major флип,
  seqtbl-анимация), pop_ctrl (порт control() PoP на held-state
  kbd_raw), pop_map (коллизия seg004/005: бег/стоп у стены,
  падение/приземление, отскок seq_47, вертикальный прыжок K4.1).
  MEMORY=small (DATA сразу за CODE, ~23КБ кода не лезет в huge).
- toolchain (PoP) — pop_pack_kid/pop_pack_bg/render_room/extract —
  распаковка res-графики MSDOS в атласы + композиция комнат.
- toolchain/ (корень) — make_hdd.sh (быстрый HDD-тест вместо FDD),
  png_strip.py / room_compose.py (ассет-пайплайн).
- docs — PORT_PLAN, KID_PLAN, форматы ресурсов (Apple II / MSDOS / DAT).
- bgtest/coltest/poc — ранние PoC (фон, коллизия, первый прототип).

.gitignore: build-артефакты applications/*/*/*; исключены внешние
референс-репозитории (SDLPoP/mininim/PR/Apple-II — свои git-клоны) и
оригинальные game-данные MSDOS/ (копирайт, только для реверса форматов).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-17 17:51:08 +03:00
parent 484b18d10c
commit cd8d566d82
196 changed files with 6630 additions and 0 deletions
+27
View File
@@ -0,0 +1,27 @@
# bgtest — мини-тест атласов статического фона PoP (Шаг 2, до порта room.c).
# Проверяет загрузку .atl + палитру + прямую адресацию + прозрачность.
#
# --memory huge (как poc): atlas_load/gfx_blit трогают W3; huge кладёт
# CODE в W1, DATA/BSS в W2 — без банков. --gfx 256 подлинкует bgi256.
#
# Данные фона генерит toolchain/pop_pack_bg.py в ../poc/res/bg/.
PROJ_ROOT := $(abspath $(CURDIR)/../../..)
EXAMPLE := bgtest
MEMORY ?= huge
EXTRA_FLAGS ?= --gfx 256
BG_DIR := $(CURDIR)/../poc/res/bg
BG_DATA := $(BG_DIR)/pop_env0.atl $(BG_DIR)/pop_env1.atl $(BG_DIR)/pop_env2.atl \
$(BG_DIR)/pop_env3.atl $(BG_DIR)/pop_env4.atl \
$(BG_DIR)/pop_wall.atl $(BG_DIR)/pop_fore.atl $(BG_DIR)/pop_bg.pal
EXTRA_DATA := $(BG_DATA)
include $(PROJ_ROOT)/app.mk
# Ассеты фона: пересобрать пакером, если исходники поменялись.
$(BG_DATA): $(PROJ_ROOT)/applications/PoP/toolchain/pop_pack_bg.py \
$(PROJ_ROOT)/applications/PoP/toolchain/render_room.py
cd $(PROJ_ROOT)/applications/PoP/toolchain && python3 pop_pack_bg.py
$(EXAMPLE).exe: $(BG_DATA)