Files
Sprinter-SDCC/applications/PoP
snark13 dbf9166836 Цвета 6 и 12 базовой палитры: игра правит их на старте, мы брали VGA-значения
Симптом (наблюдение пользователя): кирпичи дворцовой кладки правильного
цвета, а швы между ними — нет.

Корень шире, чем швы.  init_game_main (seg000:164) подменяет ДВЕ записи
16-цветной палитры сразу после загрузки:

	// (blood, hurt flash) #E00030 = red
	set_pal(12, 0x38, 0x00, 0x0C);
	// (palace wall pattern) #C09850 = light brown
	set_pal( 6, 0x30, 0x26, 0x14);

Подтверждено дампом палитры живого SDLPoP: PAL[6] = 48,38,20,
PAL[12] = 56,0,12.  У нас в таблице VGA16 стояли стандартные VGA-цвета
(42,21,0) и (63,21,21).  Цветом 6 рисуются швы дворцовой кладки
(blitters_46h_mono_6), цветом 12 — кровь чомпера и вспышка урона, так что
промах был не только в стенах.

Заодно исправлена вспышка урона в roomtest.c: было flash_bg(255,85,85)
(стандартный brightred), стало (224,0,48).

Проверка: ряд стен уровня 4 теперь совпадает с эталоном SDLPoP по всем
восьми цветам и их количествам один в один (5333/4013/3110/2065/1785/1372/
1075/447).  Остаточное различие значений — только наше масштабирование
6->8 бит: (v*255)/63 против v*4 у SDLPoP, то есть (194,153,80) против
(192,152,80).

ПОПРАВКА к f107711: там записано, будто рисунок кладки не совпадает с
оригиналом из-за замены PRNG.  Это неверно — POP_PRANDOM_EXACT по умолчанию
1, работает ассемблерный LCG оригинала, и совпадение счётчиков цветов это
подтверждает.  Расхождения по PRNG нет.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 12:32:19 +03:00
..

Prince of Persia на ZX Sprinter

Порт Prince of Persia на компьютер Sprinter Sp2000 поверх нашего target-слоя SDCC (sprinter-cc / libc / libbgi). Цель — 320×256×256 (режим 0x81), VGA-256 ассеты оригинала переносятся почти впрямую.

Состояние (2026-08-01): играется весь уровень 1 — комнаты и переходы, Kid со всем набором действий, ловушки, ворота, дверь уровня, меч и бой, стражи с ИИ, HP и зелья. Нет: перехода на следующий уровень, звука, таймера/HUD, сохранений.

Что где

Папка Назначение
roomtest/ Активная разработка. Уровень 1 целиком: фон композицией тайлов, Kid (seqtbl-анимация, ввод, коллизия, падение, зацеп, окклюзия), ловушки, ворота, стражи, бой. Свой README/CLAUDE/TASKS.
docs/ Планы и разбор форматов ресурсов Apple II / DOS — см. индекс в docs/README.md.
toolchain/ Python-упаковщики ассетов под Sprinter (рендер комнат, атласы тайлов/Kid, извлечение данных анимации) + эталонные скриншоты.
poc/ Ранний proof-of-concept (снег, атлас, raw-клавиатура). Ассеты в poc/res/.
bgtest/, coltest/ Точечные проверки фона и коллизии.
SDLPoP/, PR/, mininim/ Референсные реализации движка (GPL) — читаем логику/константы, НЕ копируем код. SDLPoP/data/ — источник распакованных VGA-ассетов.
Prince-of-Persia-Apple-II/ Оригинальный 6502-исходник 1989 г.
MSDOS/ Локальные .DAT-ресурсы DOS-версии.

Референсы = только справочник

SDLPoP/, PR/, mininim/, Prince-of-Persia-Apple-II/ используются как справочник структур/логики и как источник готовых ассетов — их код НЕ копируется в наш порт (лицензии несовместимы, ABI другой). Любая механика сверяется с SDLPoP/src/ до реализации.

Форматы ресурсов

Формат уровня почти идентичен в Apple II и DOS (2304 / 2305 байт, blueprnt). Графика различается принципиально, но брать распакованные PNG из SDLPoP/data/ практичнее, чем декодировать сырой .DAT. Подробности — docs/README.md.