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:
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* pop_ctrl.h — управление Kid (Фаза K2b): порт диспетчера control()
|
||||
* (SDLPoP seg005.c) + модель ввода read_user_control/user_control
|
||||
* (seg006.c) поверх held-state клавиатуры <kbd_raw.h>.
|
||||
*
|
||||
* Kid-only подмножество: без меча и стражи. Map-запросы (стена/край/
|
||||
* захват) ЗАСТАБЛЕНЫ «открытый пол» — реальная коллизия (стоп у стены,
|
||||
* падение в ямы, повисание) приходит в K3/K4. Даёт отклик на клавиши:
|
||||
* бег влево/вправо, разворот, стоп, присед, прыжок с места, прыжок в
|
||||
* беге, присед-прыжок.
|
||||
*
|
||||
* Раскладка (kbd_raw, PS/2 Set 2): ←/→ = движение, ↓ = присед, ↑ =
|
||||
* прыжок вверх (с →), Shift = осторожный шаг (K3). ESC — выход (проверяет
|
||||
* приложение сам, канал raw забирает весь ввод у DSS).
|
||||
*/
|
||||
#ifndef POP_CTRL_H
|
||||
#define POP_CTRL_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* Открыть raw-канал клавиатуры и обнулить память авто-повтора.
|
||||
* 0 — OK, -1 — ошибка (EBUSY и пр., см. kbd_raw_open). */
|
||||
int pop_ctrl_init(void);
|
||||
void pop_ctrl_close(void);
|
||||
|
||||
/* Один кадр ввода: прочитать клавиши -> обновить control_* -> прогнать
|
||||
* диспетчер control() (может сменить Kid.curr_seq). Звать ПЕРЕД
|
||||
* kid_tick() (play_seq продолжит с новой последовательности). */
|
||||
void pop_ctrl_tick(void);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user