Hardy - платформер типа Rick Dangerous (но не клон, ибо правилами запрещено) в мультиколоре (с цветными персонажами)
в отличие от Rick Dangerous, надо с моментами быстрой скорости, чтобы было видно фреймовость
и побольше спрайтов на экране в другие моменты (партиклы, взрывы)
какие идеи позаимствовать из Metroid, Spelunky, Cave Story, Celeste?


У персонажей раскрашена и маскирована каждая X-фаза отдельно, чтобы по горизонтали двигаться попиксельно.
По вертикали по 2 пикс, чтобы мультиколор 8x2 - или двигать по 1 пикс, если все зоны цветов разделены чёрными строчками (вряд ли красиво)
Фоны чёрные / синие / красные + лестницы и кирпичи (они будут затираться жирной маской спрайта, чтобы не подкрашивать)

Можно герою ходить за кустиком/колонной (как в Rick Dangerous), но для этого надо её рисовать как спрайт


Поддержать 48/128/[+3 не требуется правилами]/[Pentagon не требуется правилами]

48/128K делается так:
в 48К в памяти лежит движок, графика и один уровень
в 128К ещё меню (slow memory), остальные уровни (slow memory), музыка (slow memory), звуки (slow memory?), графические спецэффекты (fast memory), дополнительная графика (fast memory)
бейсик-загрузчик грузит 48К версию, goto usr..., а она выходит с bc=номер строки для дальнейшей загрузки

Используем мультиколор такой, чтобы не был занят верхний бордер, а адресация была поудобнее для вывода спрайтов
в верхнем бордере будет музыка + out звуковых эффектов + некая фиксированная задача (код которой можно в slow memory)?
можно для начала стримить музыку из обычного плейера в быстрый (при большой загрузке не вызывать плейер, а при малой - вызывать много раз, вне прерывания)
под мультиколором доступно 64+48(64+56 на классике) строк = 25088 t под графический движок, логику и звуковые эффекты без out (-1792, если экран начинается с 8-й строки - после синхронизатора)

Самые нагруженные моменты:
- [появление экрана прилетающими столбцами - можно ограничить число одновременно движущихся столбцов]
- тряска при взрыве - в это время мультиколор отключаем, ставим белые атрибуты
- разлёт партиклов после взрыва
- [скролл между экранами (в это время логика отключается, но музыка остаётся, звуки можно выключить) - нефреймово, картинка 4 КБ (в идеале 2 фрейма), атрибуты не скроллим, только меняем начальный адрес. Либо мультиколор должен поддерживать зацикливание области атрибутов, либо после скролла копируем атрибуты один раз (2 КБ - в идеале 1 фрейм). Если картинка сдвигается за 2 фрейма, как избежать луча (причём в фиксированном месте!!!)?
идеи: а) начиная с зоны разрыва пускать сдвиг в другой фазе (но всё равно будет заметно); б) скроллить центр игровой зоны в однов фрейме, а края (стенки и входы) во втором - тогда центр довольно узкий; в) сгенерировать ld:push с пропусками под конкретное наполнение картинки и скроллить в 1 фрейм - слишком много памяти (можно только на 128К); г) скроллить на 2 экранах 128К, а на 48К не скроллить; д) скроллить интерлейсно; е) выводить рандомные строки в каждом фрейме, тогда разрывы будут везде]
- [bullet hell (как в exolon?)]
- [дождь/капли с потолка]
- [партиклы от jetpac]
- [мерцание фона (в амижном Rick Dangerous - можно теми же партиклами)]


Спрайты 18x18, чтобы сдвигать их по 2 пикселя (хранить 4 копии)
верхнюю строку спрайтов можно только маску (без пикселей), а нижняя с пикселями
в Rick Dangerous одновременно доступно спрайтов:
- главный (много фаз: допустим, 3 шага, 2 ползания, 2 лестница, 1 нажатие (это всё с зеркальными вариантами), 2 смерть - итого 18)
- пеший враг (много фаз - допустим, 8)
- тележка (1-2 фазы)
- мина (2-3 фазы)
- выстрел свой
- выстрел чужой
- подземный враг (много фаз) - сделать тайлами?
- капля вертикальная или горизонтальная (несколько маленьких фаз)
итого примерно 36 крупных фаз (по 64 байта *4 скролла) и 7 мелких (по 16 байт? без скролла?)
16240 байт (можно чуть меньше, если нет маски среднего байта, а подземный враг без скролла) - на 48К не получается сгенерировать спрайты в код

примерное распределение памяти на 48K:
с 0x6000:
в slowmem можно: 3K вывод спрайтов(его не будут вызывать вне верхнего или нижнего бордера), 16K графика спрайтов, 256b tilemap, карты, логика....
в fastmem надо: 4K обработчик прерываний + мультиколор, 2K карта атрибутов, 2K стирание спрайтов



можно больше 8 персонажей на экране (в Rick Dangerous было 6: персонаж, два врага, две тележки, мина), если они будут мерцать


можно вывод спрайтов+мультиколор+музыку+стирание спрайтов повесить на прерывание
и не думать о том, чтобы логика всегда влезала во фрейм - пусть иногда не влезает, это будет незаметно

тогда можно не считать, сколько пикселей и обновлений тайлов влезет во фрейм, сделать ещё нефреймовые звёздочки и т.п.
вне прерываний можно выводить точки и мерцающие спрайты 8*8 (звёздочки, обломки, пули? взрывы?) - в принципе, атомарность не нужна
платформы там вывести нельзя - будет мерцать



сейчас остаётся примерно 500t/объект на логику
стирания все по 18 пикс, нельзя настраивать (130 тактов на 2 пикс высоты). можно только уменьшить все или убрать восстановление среднего столбца (но при вертикальных движениях нельзя)

на 128К на 4*(64+56)=440 тактов больше, чем на 48К, это под музыку.
на пентагоне на 1000 тактов меньше, чем на 48К, надо в верхнем бордере часть логики? (и музыку точно)
или придётся на пентагоне уменьшить мультиколор на 4 пикс
или 25 фпс авто (не стирать каждый второй кадр)

