PDA

Просмотр полной версии : DuckTales Return (NES / GameBoy port-demake for 128k)



AND
21.09.2020, 08:37
Доброго времени суток всем Спектрумистам. Не уверен что я тут по адресу, но если что, модераторы поправят или перенаправят.

Последний раз я делал что-то для Спека 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/ducktales-return-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/bermuda-middle-deck-clr
https://zxart.ee/rus/avtory/a/and1/bermuda-lower-deck-clr

Т.к. это все предполагается под 50Hz (в один кадр) то единственный способ это построить все возможные комбинации всех этих 2x битных спрайтов с отражением и попиксельным смещением. Но так как там много общего в плане сканлайнов, то спрасты можно аккратно разбивать на вертикальные полоски и тогда можно все очень сильно сжать. Сейчас, пока что, все возможные комбинации спрайтов игрока (Скруджа) умещаются в 1 банку (16k).

Соответственно, много спрайтов анимаций персонажа я поконвертил и прорисовал косяки руками. Хотя вопросов там много остаётся.

Далее одна из карт полностью сконверчена с GameBoy (по большей части руками) а тайлы (8x8 которые) адаптированны с NES. Что-то еще у ремейка Dizzy (Crystal Kingdom) взял чего в оригинальных нет.

Некоторые 2х битные спрайты сконверченые с NES (80-80% уменьчено как для GameBoy и руками подправлено что нужно):
https://pic.maxiol.com/images2/1600668516.1276456378.spriteref2post.png

Целиковая карта уровня Bermuda:
https://pic.maxiol.com/images2/1600668440.1276456378.bermudamap.png

Примеры сконверченых тайлов карты:
https://pic.maxiol.com/images2/1600668375.1276456378.bermudagb16x16tile.jpg

Еще до кучи, т.е. физика прыжкой персонажа является одним из основный элементов игры и управления, я специально этот элемент отдизассемблировал и выдрал из GameBoy версии, которая, к счастью тоже работает на варианте Z80 процессора. Но, поскольку и NES и GameBoy работают на 60Hz, пришлось чуток переделать. Но вроде всё должно быть ОК. Там основная фишка в том что обычная Ньютоновская физика немного модифицируется чтобы спрайти при движении не застывал в одной позиции больше чем на 2 кадра. Грубо говоря, есть ограничения на минимальные скорости движения спрайтов на экране.

В общем, там еще много чего есть, посему интересно что люди думают на всю эту тему и интересно бы было кому-нибудь в этом поучавствовать.

P.S. Любые идеи, комментарии, мнения приветствуются.

Titus
21.09.2020, 08:52
Но, поскольку и NES и GameBoy работают на 60Hz, пришлось чуток переделать.
Возможно, переделка из 60Гц в 50Гц для российского пользователя - это ухудшение, а не улучшения. Т.к. в основном все играли именно на Dendy, а не на NES и привыкли к 50Гц (замедленной физике, замедленной музыке).

- - - Добавлено - - -


- Цветной gigascreen (только для спрайтов).
Гигаскрин любят не все. Есть те, кто принципиально не играет в мерцающую картинку.

- - - Добавлено - - -

По графике - нарисовано прекрасно)

- - - Добавлено - - -


Целиковая карта уровня Bermuda:
Лучше не прикреплять картинки к форму, т.к. они уменьшатся до нечитаемости, а размещать их на стороннем хостинге, например, https://pic.maxiol.com/

polikarpov76
21.09.2020, 09:07
Очень круто, но гигаскрин зло.

AND
21.09.2020, 09:22
Возможно, переделка из 60Гц в 50Гц для российского пользователя - это ухудшение...
Да. Это нужно учесть. Хотя я, например, в те годы это игру хорошо запомнил но никогда не проходил. Играл уже потом на эмуляторе в 60 Hz. Но это корректный аргумент. Буду иметь ввиду.


Гигаскрин любят не все. Есть те, кто принципиально не играет в мерцающую картинку...
Согласен. Поэтому много эксперементировал с комбинациями разных цветов. Гигаскрин на весь уровень - однозначно не вариант, но чем меньше мерцающая область, тем меньше это заметно. Как оно есть сейчас и можно посмотреть на ZXArt, ни на 50 ни на 60 Hz это особо в глаза не бросается даже на LCD, но спрайты темнее выглядят. Поэтому еще как вариант делать черно-белые, там ярче, но не идеально. Но 1-битовые совсем плохо выходят. Поэтому пока что рабочий вариант - кнопочкой переключать: цветной, черно беллый, либо классика. Но все мои личные попытки прорисовать эти спрайты в таком разрешении монохромно ни к чему хорошему ни привели.


По графике - нарисовано прекрасно)
Ну это конверсия больше.... Хотя руками приходится править. Типа 80% делает фотошоп с разными скриптами - остальное руками подправлять. Как в те 80е годы это делали - я не знаю.


Лучше не прикреплять картинки к форму...
Ок. Я поправил.

Bedazzle
21.09.2020, 09:41
Ого! Т.к. в своё время к Денди приобщиться не получилось, в это не играл, хоть пару раз мельком видел на телеке в прокате. Очень интересно посмотреть, что на спеке получится.

Sayman
21.09.2020, 09:51
Отличная игра и идея по портированию под Спек. Но есть один момент - гигаскрин это боль для глаз (нужно учитывать, что мы все не молодые, многие в 90е на этих моргалках глаза себе посадили). Если ГГ будет весь в цвете, то сразу будет клешинг (атрибуты же). если делать в чб, то как вы говорите, получается плохо. тут я вижу 3 варианта:
1. либо делать уровень без скроллирования, но зато c цветом (как это сделано, к примеру в Castlevania: Spectral Interlude). ГГ при этом чёрнобелый, но постоянно окрашивается в цвета уровня (клешинг).
2. всё в ЧБ, но зато можно скролл "попиксельный" прикрутить.
3. можно попробовать сделать свои силы в создании порта для расширенных машин, где есть цвет на точку (zx-evo, sprinter, spectrum next).

по вариантам 1 и 2 явно потребуется художник, который умеет хорошо рисовать в ЧБ.

кстати, когда то давно, в 90е, пролетала демка другой утки - "Чёрный Плащ". ВО! аж 2 демки на вирте нашёл...

Ldaborc
21.09.2020, 10:01
Очень всё круто!!! А Вы не рассматриваете вариант это всё адаптировать под экран ATM или TS-Config ? Проще будет наверное од расширенную графику или нет?

Titus
21.09.2020, 11:56
Как в те 80е годы это делали - я не знаю.
В основном исключительно руками) Пиксельарт)

- - - Добавлено - - -


Поэтому пока что рабочий вариант - кнопочкой переключать: цветной, черно беллый, либо классика. Но все мои личные попытки прорисовать эти спрайты в таком разрешении монохромно ни к чему хорошему ни привели.
А есть демо-версия, чтобы посмотреть, как это работает?

Lethargeek
21.09.2020, 12:02
эпилептиков не слушай, гигаскрин рулит :v2_dizzy_biggrin2:

NEO SPECTRUMAN
21.09.2020, 18:53
гигаскрин рулит
до
только рулит ПРАВИЛЬНЫЙ гигаскрин
остальной мигает :)

Enigmatic
21.09.2020, 20:54
Картинка шикарная,а вот в теме Бермуд солирующий инструмент не очень как-то подобран.

Titus
21.09.2020, 21:08
теме Бермуд солирующий инструмент не очень как-то подобран.
Тоже самое хотел сказать.

Dart Alver
21.09.2020, 23:15
- Fallback режим - классические одно-битный спрайты, но тут нужно какаой-то серьёзное художественное мастерство, особенно в отношении игрока. У меня ничего толькового не вышло с теми размерами спрайтов что нужны.
Попробовал помучить немного, действительно классика уже не так красиво :v2_frown:

73529 73530

73528

Хотя может всётаки на выбор гигаскрин/классика для реальщиков (в эмулях то антиблик выставят)

AND
22.09.2020, 01:00
... в теме Бермуд солирующий инструмент не очень как-то подобран
Тоже самое хотел сказать.

Да, в оригинале, на NESе у солирующего инструмента стоит минимальная скважность (PWM) и ею играются во время атаки. На AY так нельзя, скважность фиксирована 50% поэтому остаётся играться только частотой и амплитудой. Я пробовал разные варианты но это лучшее что вышло у меня.
PT3 выложены и если кто-то знает и может сделать лучше, то я только рад.




Попробовал помучить немного ...

Да, причем самое тяжело сделать разделения клюва и головы. Обычно это делается черной или белой обводкой, либо элементами дизеринга, но когда все такое маленькое и детальное, оно не очень работает.

Вот пример из лучшего 1-bit-ного что уменя получалось в Photoshopе,

https://pic.maxiol.com/images2/1600723756.1276456378.moonproto.png

причем это еще на базе GameBoyевское версии спрайтов, где у Скруджа голова по мордатее, и должно было бы быть проще. Но всегда получается какой-то скелет.

Гигаскрин реально напрягаяет когда все моргает, поэтому не вариант, и моргает тем больше чем больше разница между меняющимеся интенсивностями. Если моргать красным или белым, или красным и Cyan который то разница между крастым и черным ~= 0.3 (получается красный), между красным и Cyan тоде где-то 0.3-0.4 (получается белый), а если Cyan и черный то разница в 0.6 и это уже заметно. Но на отдельных пикселях и элементах маленькой площади мерцание даже Cyan или Белого практически не заметно. На больших площадях уже жесть.
Но они темнее получаются чем уровень, поэтому вот пока для цветного режима моргать красным и белым, используя белый как основной (получается розовый) и красный как второстепенный.

Поэтому второй вариант это монохромный gigascreen, персонаж тогда белый (как Dizzy), врагов можно целиком раскрасить... крабов в красный, лягушки зелёные, орлы жёлтые, крысы-пирираты Cyan какие-нибудь. И использовать такой мерцающий тёмно белый как второстеменный цвет или как анти-алиазинг - для сглаживания краёв например.

С врагами проще, т.к. они не сильно узнаваемые персонажи, поэтому их можно сильнее переработать, хотя некоторе вот типа крабов вообще можно без гигаскрина делать...

https://pic.maxiol.com/images2/1600724890.1276456378.crabnes.png https://pic.maxiol.com/images2/1600724996.1276456378.crabzxproto.png

В плане монохромного гигаскрина вот такой вариант есть:

https://zxart.ee/zxscreen/border:0/mode:mix/pal:srgb/type:gigascreen/zoom:1/id:351406/ (https://zxart.ee/rus/avtory/a/and1/bermuda-lower-deck-bw)
(картинка кликабельна)

Lethargeek
22.09.2020, 01:14
моргать меньше будет, если самый частый (в спрайте) цвет сложением получать

Slider
22.09.2020, 11:48
монохромный цвет на мой взгляд самый нормальный

Titus
22.09.2020, 11:49
Друзья, давайте просто предложим автору сделать выбор в меню. Кто хочет, выберет гигаскрин, цветной или черно-белый, а кто хочет выберет не гигаскрин. И все будут рады.

NEO SPECTRUMAN
22.09.2020, 11:55
просто предложим
а можно просто положить на эпилептиков и не мопрочить голову

в придачу намного проще сделать 2 версии
чем одну с переключением в менюшке...

да и делать двойную работу ради всегда недовальных эпилептиков?
которые если и будут играться то в эмуляторе
да ну нафик...

AND
24.09.2020, 23:47
Очень всё круто!!! А Вы не рассматриваете вариант это всё адаптировать под экран ATM или TS-Config ? Проще будет наверное од расширенную графику или нет?

Да до какого-то релаза на обычном 128k еще далеко, про ATM и EVO, Next речи пока нет. Интересно именно что можно выжать из оригинального 128k (+2,+3)

- - - Добавлено - - -


А есть демо-версия, чтобы посмотреть, как это работает?

Что бы прям полноценное демо - нет. Т.е. сейчас это набор разных ключевых элеметнов типа процедур быстрой отрисовки и спрайтов, разные режимы их вывода, быстрая отрисовка карты, прокрутка в кадр, прототип физики и некоторых механик управления игроком.

Скорее всего что-то вместе получится собрать ближе к Новогодним праздникам.

- - - Добавлено - - -


Друзья, давайте просто предложим автору сделать выбор в меню. Кто хочет, выберет гигаскрин, цветной или черно-белый, а кто хочет выберет не гигаскрин. И все будут рады.

Ну это как раз рабочий вариант, поскольку я сам не знаю что лучше, есть возможность как "из меню" так и во время игры по кнопке переключать режимы.
Просто классический 1bitный режим сложен в плане пиксельного арта, нужно найти художника и попробовать разные варианты. Но не факт что что-то получится годное.

NEO SPECTRUMAN
25.09.2020, 00:18
у солирующего инструмента стоит минимальная скважность (PWM) и ею играются во время атаки. На AY так нельзя
кстате
слышимая воспринимаемая громкость в зависимости от скважности меняется так
https://jpegshare.net/images/20/61/2061cbcda877465cbffedb80a5c8c26d.png

ну и 27 точек по которым были сделаны замеры
https://jpegshare.net/images/ef/55/ef555ed2eaee4a1ce5b4d4e899217f7a.png

правда для каждой частоты график будет несколько отличаться по идеи...
ну и я не сделал достаточного количества тестовых проверок работы алгоритма расчета
но на слух достаточно похоже

AND
25.09.2020, 01:17
кстате
слышимая воспринимаемая громкость в зависимости от скважности меняется так ...

ну и 27 точек по которым были сделаны замеры ...

правда для каждой частоты график будет несколько отличаться по идеи...
ну и я не сделал достаточного количества тестовых проверок работы алгоритма расчета
но на слух достаточно похоже

График полезный. Но проблема не в громкости а в тембре (спектральном составе). Т.е. в оригинале именно громкость лидирующего инструмента не особо меняется во время атаки (в первые миллисекунды проигрования инструмента) а разделение одной ноты от другой делается путём изменения скважности, поэтому ноты отчётливо можно различить даже если громкость особо не меняется.

Если просто сэмулировать громкоть на AY то будет плохо (плоско звучать), все сольётся. Во всяком случает я так пробовал и мне не понравилось. Поэтому добавил орнаменда и больше изменений громгости во время атаки, чтобы это хоть как-то выделялось. Но звучит это не как оригинал.

NEO SPECTRUMAN
25.09.2020, 01:29
Но проблема не в громкости а в тембре
ну это я и так знаю
просто конвертироваться будет лучше если юзать мат часть :)

AND
25.09.2020, 01:57
ну это я и так знаю
просто конвертироваться будет лучше если юзать мат часть :)

Ясное дело. Но что делать вот если такой спектрыльный тембр не получить из чипа. Ну можно, конечно, делать это как на Atari-ST, процессором подруливать и в принципе пожно PWM воспроизвесли. Но это больше для заставки так можно, но не во время игры.