Важная информация

User Tag List

Страница 1 из 41 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 402

Тема: Пишу шедевр для «Вектора 06Ц»

  1. #1
    Member Аватар для metamorpho
    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    130
    Спасибо Благодарностей отдано 
    205
    Спасибо Благодарностей получено 
    58
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Пишу шедевр для «Вектора 06Ц»

    Привет всем!!

    Моя цель - написать шедевр для «Вектора 06Ц»
    Конечно при поддержке знатоков «Вектора».
    Так вот здесь я буду задавать разные «глупые» вопросы - так что просьба к тем кто знает подскажите начинающему (в детстве у меня был "Вектор", ассемблер знаю только в общих чертах, в последние годы программирую на бейсике AppGameKit - есть несколько завершённых мной игр для Windows). Сейчас исследую Лебедева А.З. «Секреты Вектора» и «Код BoulderDash»

    Для начала вот такие вопросы интересуют:
    1. Посоветуйте какой ассемблер сейчас можно использовать чтобы написать игру для «Вектора» ?
    На каком эмуляторе лучше всего тестировать результаты ?
    2. Есть ли программы преобразования графики с PC в данные для вставки в ассемблер ?
    3. Есть ли музыкальный редактор использующий ВИ53 и выдающий данные которые можно вставить в код игры и есть ли код который мог бы запускать эту мелодию ?
    4. Аппаратным вертикальным скроллингом экрана можно сдвигать только сразу все (8000-FFFF) плоскости экрана или можно сдвигать их по отдельности ?
    5. Как на ассемблере запретить использование плоскости экрана (на Бейсике «Вектора» команда Screen 2,n) и использовать эту память для кода игры ?
    6. Какой архиватор данных эффективнее всего использовать в игре ?
    7. Есть ли код который проигрывает мелодию для чипа AY ?

    ------------------------------------------------------------------------------------
    Прошло 2 месяца
    -------------------------------------------------------------------------------------



    2 месяца и 4 дня.
    Ну вот и пройден путь - моя цель достигнута - завершено написание моего первого "шедевра" для Вектора.
    Спасибо всем кто так или иначе помогал мне написать эту игру.
    Без ваших советов и информации я бы ещё наверное долго разбирался что к чему и писал код.
    Было интересно осваивать ассемблер - в чём-то он конечно сложный, но несомненно очень гибкий и
    мощный, по сути на нём можно сделать очень много невероятных програмных ходов - всё ограничивается
    только техническими характеристиками компьютера и "высотой полёта" самого программиста
    После такой практики написания игры заметил появилось некое "ассемблерное мышление", так что даже
    когда программируешь на Бейсике, но мыслишь уже командами ассемблера
    А также привычка повсюду экономить на количестве и на тактах команд

    Что было сделано:
    - написан конвертер графики с компьютера на Вектор06Ц (формат для вставки в ассемблер)
    - написан редактор уровней, который выдаёт данные для вставки в ассемблер
    - сделана графика для проекта
    - написан свой вариант плеера для проигрывания музыки на ВИ53

    Игру писал используя текстовый редактор "NotePad" и "Pretty 8080 Assembler" (спасибо за него svofski).

    Некоторые технические моменты игры:
    - используется аппаратный вертикальный скроллинг
    - используется 8 цветов (3-и плоскости)
    - музыка воспроизводится на ВИ53 (то что есть в любом стандартном Векторе)
    В игре остались некоторые баги, но существенно на качество игрового процесса они не влияют.

    Ассемблерный поход и Битва за байты.
    Поскольку это мой первый проект на ассемблере, то я особо и не задумывался о том сколько памяти осталось
    и поэтому большую часть кода писал не задумываясь об оптимизации и хитрых алгоритмах.
    В результате под конец проекта возникли сложности с памятью - её стало нехватать.
    Нехватало примерно 2200 байт. Пришлось бороться за каждые возможные байты.
    В итоге пришлось отказаться от использования некоторой графики и придумывать способ сжатия
    картинки на заставку, а также изменить на менее ресурсоёмкий способ хранения уровней.
    Также изменить некоторый код - придумав более сокращённую версию алгоритма.
    В этом есть какая-то штука, когда в стеснёных условиях памяти Вектора ты борешься за каждый байт и
    делаешь некий "подвиг" в своих глазах

    Музыка и эксперименты.
    Самой сложной частью проекта для меня оказалась музыка.
    Как известно на Вектор-06Ц для ВИ53 нет никакого (нормального) редактора для написания музыки.
    Поэтому желая быстро получить музыку я попробовал сделать конвертор музыки из midi формата на свой
    формат написанного мной плеера. Конвертер написал, но с midi форматом не всё просто. Автоматическая
    конвертация это только пол дела. Ещё нужно учесть много моментов, которые на автоматике сложно
    сделать. В итоге перекинулся на другую идею.
    Второй идеей было переложить готовые ноты на формат моего плеера. Поначитавшись информации про
    нотный стан, бемоли, диезы и другие интересности решил написать свой простенький музыкальный
    редактор. Была написана рабочая версия, на которой вполне можно писать музыку. Найдя подходящую
    нотную мелодию я начал писать её в своём редакторе, но довольно скоро столкнулся с проблемой
    синхронизации 3-х каналов. На нотном стане частенько встречаются ноты и паузы с различной
    длительностью, а в редакторе это не было предусмотрено. Нужно было писать более серьёзную версию с
    визуальной синхронизацией по длительности звучания. И идея с нотным редактором была оставлена.

    Далее был эксперимент с рандомным написанием музыки (это уже от отчаяния)
    Было написано несколько вариантов кода, но ничего из этого не нравилось.

    Далее в результате поисков решения этой задачи пришла идея использовать не точный образ midi
    формата, а лишь нотный массив, несущий в себе некий музыкальный мотив.
    Поэтому я вновь вернулся к конвертеру и переделал его для этой цели.
    После конвертации подходящих мелодий остаётся очень немного, но всё же это лучше чем ничего.
    Из двух таких массивов+ручная доработка удалось склеить более менее вариант мелодии для игры.
    Вообщем нужен качественный музыкальный редактор для ВИ53 - если будет вдохновение напишу

    В целом приобретён интересный опыт и какое-то необычное особое чувство когда программируешь на
    первый свой компьютер из своего детства. Сейчас зная различные подводные камни создания игры на Вектор,
    уже понятно с чего начать и как расставлять приоритеты в различных задачах.
    Есть желание создать ещё некоторые игровые проекты для Вектора - теперь уже с более лучшим
    пониманием некоторых ограничений и преимуществ платформы.

    Итак вот мой первый шедевр для Вектора-06Ц игра "Binorum" - логическая с 9-ю уровнями.
    Если кто-то захочет поблагодарить монетой пишите
    Игру можно свободно скачать ниже прилагается (rom)
    или же сразу поиграть здесь http://sensi.org/scalar/ware/910/








    Вложения Вложения
    Последний раз редактировалось metamorpho; 25.08.2020 в 09:13.

  2. Эти 14 пользователя(ей) поблагодарили metamorpho за это полезное сообщение:

    Adam Bazaroff (13.09.2020), DATAsoft (01.09.2020), Dennion (28.08.2020), ivagor (26.08.2020), jerri (24.08.2020), KTSerg (25.08.2020), Oleg N. Cher (21.06.2020), PPC (25.08.2020), Ramiros (24.08.2020), SegaBoy (24.08.2020), svofski (24.08.2020), x-code (26.08.2020), zx_ (25.08.2020), Дмитрий2012 (25.08.2020)

  3. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  4. #2
    Veteran
    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,010
    Спасибо Благодарностей отдано 
    66
    Спасибо Благодарностей получено 
    133
    Поблагодарили
    102 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    ...
    4. Аппаратным вертикальным скроллингом экрана можно сдвигать только сразу все (8000-FFFF) плоскости экрана или можно сдвигать их по отдельности ?
    Аппаратный скроллинг "сдвигает" все области сразу. Инфа в них не сдвигается, "сдвигается" только отображение на экране.
    5. Как на ассемблере запретить использование плоскости экрана (на Бейсике «Вектора» команда Screen 2,n) и использовать эту память для кода игры ?
    ...
    "Запрет" происходит при помощи программирования палитры. При использовании графики 256*256 точек: 4 области формируют палитру из 16 цветов (это комбинации из точек расположенных в одинаковых координатах на всех плоскостях экрана).
    Если какой-то элемент игры должен быть 16-ти цветным, то для его отображения нужно будет записать информацию во все 4 экранные плоскости. Если элемент - 8-ми цветный, то только в три плоскости. Соответственно 4-ёх цветный - расположен в двух экранных плоскостях. И элемент содержащий только два цвета - потребует занесения данных только в одну экранную плоскость.
    Это позволяет разнести "фон" и "персонажей" по разным экранным плоскостям, правда с потерей количества цветов которые можно будет использовать. Но при этом отпадает необходимость программно "накладывать" изображение персонажа на изображение фона.

    Есть много материала на эту тему. Например "Vector-User" http://www.sensi.org/scalar/ware/572/
    В выпуске №3 техническое описание экранной области.

    есть несколько завершённых мной игр для Windows
    А ссылочки?
    Последний раз редактировалось KTSerg; 21.06.2020 в 05:27.

  5. Этот пользователь поблагодарил KTSerg за это полезное сообщение:

    metamorpho (21.06.2020)

  6. #3
    Member Аватар для metamorpho
    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    130
    Спасибо Благодарностей отдано 
    205
    Спасибо Благодарностей получено 
    58
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    KTSerg, спасибо за информацию.

    Вот одна из последних моих игр (там можно и другие мои игры посмотреть)
    https://www.youtube.com/watch?v=H7oV74kGTms

  7. Этот пользователь поблагодарил metamorpho за это полезное сообщение:

    SegaBoy (10.08.2020)

  8. #4
    Veteran
    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,010
    Спасибо Благодарностей отдано 
    66
    Спасибо Благодарностей получено 
    133
    Поблагодарили
    102 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    ...
    5. Как на ассемблере запретить использование плоскости экрана (на Бейсике «Вектора» команда Screen 2,n) и использовать эту память для кода игры ?
    ...
    Есть ещё "финт" с использованием КвазиДиска.
    Экранная область может использоваться полностью (32КБ), при этом программа может занимать ещё 5 раз по 32КБ
    32КБ - в ОЗУ самого Вектора, и ещё в 4-ёх банках КвазиДиска по 32Кб в каждом.
    Правда для меня это только теория, поскольку сам этой "фишки" не применял.

  9. Эти 2 пользователя(ей) поблагодарили KTSerg за это полезное сообщение:

    metamorpho (21.06.2020), Oleg N. Cher (22.06.2020)

  10. #5
    Member Аватар для metamorpho
    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    130
    Спасибо Благодарностей отдано 
    205
    Спасибо Благодарностей получено 
    58
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    По поводу использования плоскостей экрана в "Vector-User" написано: «Управление режимами дисплея и управление заданием цвета фона рабочей и нерабочей области экрана осуществляется через порт 02-PB (0...3) и переключатель режимов, что позволяет:
    - установить объём памяти дисплея (объём экранного ОЗУ) равным 8, 16, 24 и 32 Кбайт, изменяя содержимое таблицы цветов, т.е. отобразить информацию соответственно из одной, двух, трёх, четырёх плоскостей экранного ОЗУ.»

    Я не совсем понял как «изменяя содержимое таблицы цветов» можно «установить объём памяти дисплея».
    Есть предположение что нужно установить цвет плоскости равным цвету фона, тогда информация в плоскости не будет видна, правильно ли я понял ?


    Ещё любопытно как ivagor, смог увеличить скорость работы Болдера (Болдер++) ? Что было оптимизировано ?
    Последний раз редактировалось metamorpho; 21.06.2020 в 14:04.

  11. #6
    Veteran
    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,010
    Спасибо Благодарностей отдано 
    66
    Спасибо Благодарностей получено 
    133
    Поблагодарили
    102 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    ...
    Я не совсем понял как «изменяя содержимое таблицы цветов» можно «установить объём памяти дисплея».
    Есть предположение что нужно установить цвет плоскости равным цвету фона, тогда информация в плоскости не будет видна, правильно ли я понял ?
    ...
    Да принцип именно такой.
    В "секретах Лебедева" в таблице цветности подробно комментировано какой цвет предназначен для каких экранных плоскостей.
    Грубо говоря, если мы используем первую плоскость для персонажа и вторую для картинки заднего плана, а остальные плоскости для программы, то:
    программируем цвет №1 (соответствующий плоскости персонажа), и другой цвет №2 - для картинки заднего плана, остальные (для начала) цвета это фоновый цвет (где нет изображения).
    Что получим: пока положение персонажа не совпадает с картинкой заднего плана - всё ОК.
    Как только персонаж набежал на картинку заднего плана, то в этом месте пиксели уже имеют цвет №3 (1 + 2) - у нас это фон, значит вместо персонажа получим "тень" - цвет фона.
    Если нам нужно что-бы персонаж был виден на фоне заднего плана, то цвет №3 программируем как цвет №1.
    Если нам нужно, что-бы персонаж "забегал" за изображение на заднем плане, то цвет №3 должен совпадать с цветом №2.

    Ну и в таком плане палитра подбирается для комбинации изображения для всех плоскостей.

    Надеюсь я ничего не напутал, если накосячил с объяснением пусть знающие поправят.

  12. Эти 2 пользователя(ей) поблагодарили KTSerg за это полезное сообщение:

    metamorpho (21.06.2020), Oleg N. Cher (22.06.2020)

  13. #7
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    3,021
    Спасибо Благодарностей отдано 
    145
    Спасибо Благодарностей получено 
    139
    Поблагодарили
    88 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    3. Есть ли музыкальный редактор использующий ВИ53 и выдающий данные которые можно вставить в код игры и есть ли код который мог бы запускать эту мелодию ?
    В теме «Биперная музыка» можно найти много интересного. Я при этом не уверен, что там есть простой вариант плеера с таймером, который можно было бы повесить на 50Гц. Пример биперного двухканального музона есть даже в виде рыбы, но это подходит наверное только для заставки, или таблицы рекордов. Писать музыкальный редактор для ВИ53 сейчас вряд ли кто-то станет, но SegaBoy получал отличные результаты конверсией MIDI, а уж MIDI сделать можно много из чего. ivagor переносил Апогеевский плеер на Вектор, послушать можно тут (запускается прямо в картотеке).

    Цитата Сообщение от metamorpho Посмотреть сообщение
    6. Какой архиватор данных эффективнее всего использовать в игре ?
    Тема «Сжатие данных».

    Цитата Сообщение от metamorpho Посмотреть сообщение
    7. Есть ли код который проигрывает мелодию для чипа AY ?
    Я пользовался плеером st_play, в коротом написано Автор порта: Тарасов М.Н.(Mick),2008 в демке 8-bit Snail. Я пользовался им просто как монолитным черным ящиком. Собрал, приклеил, вызвал. Не знаю откуда он у меня взялся, но попробую собрать из хлебных крошек, если никто раньше не найдет первоисточник.

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

    Цитата Сообщение от metamorpho Посмотреть сообщение
    2. Есть ли программы преобразования графики с PC в данные для вставки в ассемблер ?
    Я всегда писал свои по случаю, потому что графика для Вектора всегда подразумевает какие-то особенности -- сколько слоев, размеры, как именно выводить и так далее.
    Больше игр нет

  14. Эти 2 пользователя(ей) поблагодарили svofski за это полезное сообщение:

    metamorpho (21.06.2020), Oleg N. Cher (22.06.2020)

  15. #8
    Member Аватар для metamorpho
    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    130
    Спасибо Благодарностей отдано 
    205
    Спасибо Благодарностей получено 
    58
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    svofski, спасибо за информацию !! Буду исследовать.

  16. #9
    Member
    Регистрация
    23.06.2012
    Адрес
    г. Минск, Белоруссия
    Сообщений
    157
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    8
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    svofski, спасибо за информацию !! Буду исследовать.
    Если у вас что-то получится, я постараюсь вас отблагодарить.

  17. Этот пользователь поблагодарил dbk за это полезное сообщение:

    metamorpho (21.06.2020)

  18. #10
    Member Аватар для metamorpho
    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    130
    Спасибо Благодарностей отдано 
    205
    Спасибо Благодарностей получено 
    58
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    dbk, спасибо, это мотивирует ещё больше.

Страница 1 из 41 12345 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Бейсики для Вектора-06Ц и клонов
    от ivagor в разделе Вектор
    Ответов: 68
    Последнее: 15.05.2020, 11:11
  2. Ответов: 198
    Последнее: 26.04.2020, 13:05
  3. Картотека ПО для Вектора-06ц
    от svofski в разделе Вектор
    Ответов: 612
    Последнее: 27.10.2019, 20:41
  4. Восстановление Вектора-06ц
    от Daniil Chislov 86 в разделе Вектор
    Ответов: 72
    Последнее: 14.10.2019, 12:20
  5. Ответов: 58
    Последнее: 06.07.2019, 23:56

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •