Привет всем!!
Моя цель - написать шедевр для «Вектора 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/