PDA

Просмотр полной версии : Замок гоблинов (с другой музыкой) для УКНЦ



BlaireCas
17.01.2025, 08:09
Перетащил (свой-же) замок гоблинов на УКНЦ. То-есть путешествия гоблинов привели назад к УКНЦшным истокам.
Ничего особенного - переделанный оригинал замка гоблинов. Ценен возможно тем что содержит музыку .pt3 для проигрывания на звуковухе версии Аберранта.

Стрелки - бегать, пробел - убрать мелкие кирпичи под человечком (есть предел убирания кирпичей - после штук пяти надо подождать пока восстановятся)
Enter - остановиться. Если при падении нажать enter или вверх - остановится на цепи (не пролетит через нее).
Кнопки держать не нужно (всё как в оригинале). Пока бежит скажем вправо и впереди лестница ведущая допустим вверх - достаточно нажать и отпустить вверх - добежит до лестницы и полезет вверх итд.
Стоп - выход в меню.
В стартовом меню выбрать уровень I нажать К1 - покажет win screen.

Из любопытного
1) Игра требует слежения за лучом экрана (в БК-0010 совсем нет памяти для фреймбуфера и, чтобы спрайты не мерцали, я их вывожу довольно просто - пока луч экрана находится вне игрового поля). Эта-же логика (из-за лени) была перетащена и в УКНЦ. Но поскольку здесь у нас эмуляторы не эмулируют реальный луч экрана кинескопного телевизора - пришлось добавить код определения запуска игры на эмуляторе. Использовал (спасибо Alex_K) известный баг процессора ВМ2 для определения запущена-ли игра на эмуляторе или на реальной УКНЦ. Правда не слишком уверен что баг сработает прямо вот на всех УКНЦ. Там в цикле 10. раз крутятся команды mov (PC), R0 / inc R1 / br .+2 / br .+2 / br .+2 (набор br как я понимаю нужен для сброса предвыборки) и проверяется R1=10. На реальном процессоре будет вовсе не 10.
2) Кое-что перетащить с БК довольно непросто. Несмотря на то что УКНЦ мощнее/больше памяти/аж джва процессора итд. Например в БК экран адресуется байтами по 4 пикселя. Тайлы в 12 пикселей шириной вы БК выводятся тремя movb. А теперь (та-да) - и как в УКНЦ выводить тайлы 12 пикселей шириной? Тут у нас "квант" вывода графония это слово в 8 пикселей. Можно теоритезировать что "ну выведи два слова не полностью" и тд - но поверьте - как только до практики портирования доходит - сразу вылезают подводные камни. В итоге сделал экран шириной 640 и вывожу три слова по 8 пикселей (спрайты/тайлы в игре УКНЦ шириной в 24 пикселя кстати как в оригинале гоблинов, просто они выглядят будто в низком разрешении)

.sav-ка: https://github.com/blairecas/goblin2/blob/main/release/gobli2.sav?raw=true
.dsk с автозапуском: https://github.com/blairecas/goblin2/blob/main/release/gobli2.dsk?raw=true

https://github.com/blairecas/goblin2/raw/main/screenshots/gobli2_1.png?raw=true

https://github.com/blairecas/goblin2/raw/main/screenshots/gobli2_2.png?raw=true

lordamot
17.01.2025, 09:24
Супер!

Titus
17.01.2025, 13:28
пришлось добавить код определения запуска игры на эмуляторе
А на эмуляторах как синхронишь с лучом?

Игра классная, но хорошо бы поменять вырвиглазную бк-шную палитру на что-то другое)

BlaireCas
17.01.2025, 16:32
А на эмуляторах как синхронишь с лучом?
Если игра определит что запущена на реальной УКНЦ - она делает следующее:
1) Наступает кадровое прерывание, в его обработчике запускаем таймер периферийного процессора с некоторым значением чтобы он отсчитал сколько-то там микросекунд (подобрано чтобы луч примерно был на уровне рамки вон той красной на ее нижней части, то-есть чуть ниже области где рисуются спрайты).
2) По наступлению прерывания от программируемого таймера запускается игровой loop - рисуются спрайты первым делом, далее там логика, музыка итд. Спрайтов всего три штуки и они успевают отрисоваться до момента когда луч заедет (уже сверху) на область рисовки.
Если такое оставить в эмуляторах - в твоем один (а может и два) станет мигать, у Никиты может половину или весь спрайт не отрисовать. Ну вот так весело совпадают тайминги.
Поэтому для эмуляторов п.2 запускается тупо по vsync (ну по вектору 100). Внезапно всякие мигания в эмуляторах пропадают и всё становится хорошо (но если такое провернуть на реале - замигает уже на нем, он не успеет прорисовать спрайты если они допустим в самом верху)

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


хорошо бы поменять вырвиглазную бк-шную палитру
А можно и вообще всю игру по другому сделать поскольку в УКНЦ есть и место для фреймбуферов и она мощнее и тд итп.
Просто я немного начал понимать почему допустим игры для 128-го спектрума практически такие-же как для 48-го. Ведь можно скажем было-бы в саботер-2 запихнуть ЕЩЕ ТРИ здания / накидать тайлов побольше / добавить движений ниндзе - памяти-то много! А вот фиг - делается на младшую модель, затем тупо переносится на старшую, а чего-то улучшать/добавлять - да делать больше нечего, ну его :) Также и тут - поскольку техника у нас похожая - делается на младшую модель (она-же БК0010 - портируется на "более старший" УКНЦ как есть, ну разве что добавить мол музыку и прочие легко добавляемые плюшки).

Titus
17.01.2025, 17:53
А можно и вообще всю игру по другому сделать
Если просто поменять палитру, уже будет лучше)

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

Хорошо бы еще добавить выбор скорости, чтобы те, кто не так проворны, могли не спеша поиграть)

BlaireCas
17.01.2025, 18:19
Если просто поменять палитру
Могу сделать юзерский выбор палитры, это несложно. Лично я привык уже и к стандартной БКшной (синий несколько темноват впрочем). Подскажешь какие цвета поставить на место синий- зеленый-красный из допустимых в УКНЦ - ну окей. (желательно только вот без этого вот 128 цветов.. У меня на одной из УКНЦ их вообще всего 8 :) даже градации яркости не распаяли)

Titus
17.01.2025, 18:37
желательно только вот без этого вот 128 цветов..
А почему не из 128? Пусть пользователь выбирает сам.
Тебе как автору виднее, какие варианты раскраски предложить.

BlaireCas
17.01.2025, 19:06
Пусть пользователь выбирает сам.
Так выбор будет из дефолтно зашитых настроек (несколько пунктов выбора раскрасок в меню, жмешь кнопку 3 допустим - ну и прокручивается палитра). Вот.. Поскольку делать какой-то экран с выбором "вот это хочу" - слишком уж перебор, ну извините, реально перебор. Надо зашить штук даже не знаю сколько.. ну штук 8 разнообразных палитр. А каких - мне тут неведомо, из меня плохой художник. Посему оставлена дефолтная. RGB, чего еще надо, синий есть, красный тоже, зеленый.

Titus
17.01.2025, 19:09
А каких - мне тут неведомо, из меня плохой художник.
Не скромничай) Ты хорошо подбирал графику и палитру в других играх)

Titus
18.01.2025, 03:47
Кстати, предлагаю предусмотреть такой случай, когда эмулятор будет уже близок к точному по таймингам, но глюк процессора эмулироваться не будет.

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

А то в будущем могут появиться более точные, но не 100%-е эмуляторы, и твоя игра на них будет глючить.