Доброго времени суток всем Спектрумистам. Не уверен что я тут по адресу, но если что, модераторы поправят или перенаправят.
Последний раз я делал что-то для Спека 20 лет назад, на демосцене, потом много на PC демосцене чего делал, а профессионально последние 20 лет занимался AAA геймдевом на PC и консолях. И был такой ретро-сайд-проект-мечта посмотреть как бы, или как мог бы, выглядеть профессинтальный проект по тиму того что делалось для NES (Dandy) компаниями типа Capcom и т.д.
Одной из таких игр того периода, по крайней мере для меня, были Duck Tales. Такой Uncharted/Indiana Jones того времени, с приключениями, интересной историей, пазлами, платформерами, исследованиями мира, узнаваемыми мульт-персонажами, красочной графикой, анимацией и потрясающей музыкой.
Поэтому на протяжении многих лет я тестировал разные аспекты такого "проекта", в плане музыки - сопостовляя как бы можно было работать с 5 каналами NESа в рамках "3+2(noise + envelope)" каналов AY, разные варианты работы со спрайтами и прятанье клэшинга и т.д. Ну и динамика - 50Hz все в один кадр и все вытекающие из этого элементы геймплея.
Но тут настал COVID-19 и выпал кусок времени всести кучу разных тестов вместе. До какого-то финального продукта там далеко, во всяком случае если это продолжать делать одному, поэтому решил выложить то что не стыдно, так сказать. Но работы как в плане кода так и графики там очень много.
Из разных елементов есть следующее:
- PT3 кавера игровой музыки Moon уровня первых DuckTales и Bermuda уровня DuckTales 2. Это не самое крутой что можно сделать на AY, но это совместимо с игровым процессом. Т.е. один из каналов выделен под звуковые эффекты и в любой момент может прирываться звуковой системой.
https://zxart.ee/rus/avtory/a/and1/ducktales-moon
https://zxart.ee/rus/avtory/a/and1/ducktales-bermuda
Еще руками поконвертил основную часть звуковых эффектов звязанных с персонажем, учитывая конверсию из 60 в 50 герц и того что на AY нет PWM.
звучит это вот так:
https://zxart.ee/rus/avtory/a/and1/d...rn-in-game-sfx
В какой-то момент сделал каллаж из DuckTales Remastered и сделал скрин (типа загрузочной заставки):
https://zxart.ee/rus/avtory/a/and1/ducktales-return
В плане уровней, пока реально только один... Долго игрался с разными вариантами на тему брать либо NES либо GameBoy за основу, но пока остановился, видимо, на гибриде. Просто хочется 50Hz но скроллиться как на NES не вариант он слова совсем. Поэтому остаётся только прокрутка, но не по экранам, а с частичным перекрытием. И тоже в 50Hz. Поэтому получилось что-то вроде порта но не прямого. За основу брать карты с GameBoy, где логические экраны 10 x 8 тайлов размера 2x2. Т.е. логический экран размером 160 x 128 а все остальное - перекрытие. Ну а большую часть графики тайлов взять с NES. Соответственно при приближении к краю "логического" экрана происходит прокрутка в 50Hz.
Процедуру прокрутки тестил много, всё развёрнуто и через стэк. Самый медленный тут +2A и +3, всё умещаятся в 70000 тактов, и остаётся чуть меньше 1000 чтобы проиграть музыку. Т.е. перед прокруткой, формируется карта в виде линейный потока который будет выводиться на экран. Отрисовка занимает где-то 2 кадра + динамическая генерация кода этой прокрутки + буферизация музыки и звуковых эффектов на следующие 20 кадров (в случае горизонтальной прокрутки).
Соответственно, небольшой, на несколько кадров затык перед прокруткой чтобы всё буферизовать, зато потом всё плавно.
По спрайтам, основная идея была брать всё с GameBoy версий, но потом решил взять Скруджа с NES и уменьшить на 80-80%, потому что на GameBoy он уж очень кривой какой-то. А дальше много экспериментов с раскраской. Рабочай версия - несколько видео режимов:
- Цветной gigascreen (только для спрайтов). Можно подобрать цвета когда мерцания практически не заметно, но спрайт становится темнее. Multicolorы там не покатят никакае. Поэтому как альтернатива:
- Монохромный gigascreen, в принципе выглядит чуток ярче и жить можно.
- Fallback режим - классические одно-битный спрайты, но тут нужно какаой-то серьёзное художественное мастерство, особенно в отношении игрока. У меня ничего толькового не вышло с теми размерами спрайтов что нужны.
Из примеров... выглядет это вот так:
https://zxart.ee/rus/avtory/a/and1/b...iddle-deck-clr
https://zxart.ee/rus/avtory/a/and1/b...lower-deck-clr
Т.к. это все предполагается под 50Hz (в один кадр) то единственный способ это построить все возможные комбинации всех этих 2x битных спрайтов с отражением и попиксельным смещением. Но так как там много общего в плане сканлайнов, то спрасты можно аккратно разбивать на вертикальные полоски и тогда можно все очень сильно сжать. Сейчас, пока что, все возможные комбинации спрайтов игрока (Скруджа) умещаются в 1 банку (16k).
Соответственно, много спрайтов анимаций персонажа я поконвертил и прорисовал косяки руками. Хотя вопросов там много остаётся.
Далее одна из карт полностью сконверчена с GameBoy (по большей части руками) а тайлы (8x8 которые) адаптированны с NES. Что-то еще у ремейка Dizzy (Crystal Kingdom) взял чего в оригинальных нет.
Некоторые 2х битные спрайты сконверченые с NES (80-80% уменьчено как для GameBoy и руками подправлено что нужно):
https://pic.maxiol.com/images2/16006...teref2post.png
Целиковая карта уровня Bermuda:
https://pic.maxiol.com/images2/16006...bermudamap.png
Примеры сконверченых тайлов карты:
https://pic.maxiol.com/images2/16006...b16x16tile.jpg
Еще до кучи, т.е. физика прыжкой персонажа является одним из основный элементов игры и управления, я специально этот элемент отдизассемблировал и выдрал из GameBoy версии, которая, к счастью тоже работает на варианте Z80 процессора. Но, поскольку и NES и GameBoy работают на 60Hz, пришлось чуток переделать. Но вроде всё должно быть ОК. Там основная фишка в том что обычная Ньютоновская физика немного модифицируется чтобы спрайти при движении не застывал в одной позиции больше чем на 2 кадра. Грубо говоря, есть ограничения на минимальные скорости движения спрайтов на экране.
В общем, там еще много чего есть, посему интересно что люди думают на всю эту тему и интересно бы было кому-нибудь в этом поучавствовать.
P.S. Любые идеи, комментарии, мнения приветствуются.




Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
