PUZZNIC+LEVEL EDITOR 2016
В качестве тренировки по изучению ассемблера, я решил сделать модификацию со встроенным редактором еще одной моей любимой игры из детства. На этот раз это будет PUZZNIC. Учитывая все пожелания по редактору, встроенному в игру TETЯIS-2, я отнесся к оформлению еще серьезнее, и перед стартом игры вывел краткую справку по клавишам в режиме рисунка.
Вот игра с редактором + прокомментированный исходник на ассемблере в txt формате:
Puzznic-2016.rar
Общий вид редактора:
Кратко о структуре кода:
В процессе написания редактора я открыл для себя еще больше интересных особенностей и тонкостей ассемблера, поэтому в программе удалось реализовать редактирование всех самых важных параметров игры, о которых до этого не упоминалось даже в POKES'ах.
Мой редактор работает в режиме DI и полностью автономный. В программе нет ни единого обращения к ПЗУ и все процедуры, включая вывод на экран символов и рисунков, собственного изобретения. (Это было сделано не столько из необходимости, сколько из тренировки для быстрого поиска координат и запоминания чрезстрочной структуры области экрана). Удалось найти рецепт принудительного затыкания зацикленной ноты из звуковых портов при внезапном выходе и запрете прерываний (правда я сам толком не понимаю как работает, но работает! Если кто-то поможет разобраться, будет хорошо).
Описание редактора:
Программа имеет три режима редактирования:
- редактор поля игры с кубиками
Он позволяет редактировать запакованные карты игрового поля в самой игре, поэтому сохранения не требуется.
- редактор параметров игры
Помимо установки бесконечной/конечной жизни всех параметров редактор позволяет выставлять требуемое значение времени для каждой группы уровней. (Между делом скажу, что POKES'ы для данной игры, гуляющие в интернете не совсем корректные и даже топорные. Остановка и запуск таймера игры у меня сделана иначе)
- редактор "палочной пирамиды"
Под этим загадочным словосочетанием, я подразумеваю сию штуковину:
В редакторе изображена компактная версия данного "агрегата". Программа позволяет отметить нужными цветами любую "палочку". В редактор "палочек" я включил недокументированную особенность. Помимо синего, желтого и зеленого, палки можно промаркировать любыми цветами. (Правда карта актуальна будет только при старте, с последующим прохождением блока из 4-х экранов нижнего уровня).
Кроме того, мне удалось реализовать отладочный режим запуска игры текущего уровня с последующим возвращением в редактор. В этом режиме EDITOR модифицирует код игры и запускает только требуемый уровень, минуя все заставки и лишние подпрограммы. Это может быть полезно для теста созданных уровней и своевременной корректировки кубиков на поле. После возвращения, редактор восстанавливает оригинальный код игры и продолжает корректно работать.
Клавиши управления:
CAPS SHIFT - последовательное переключение режимов редактирования (базовое поле, параметры, палочная пирамидка)
SYMBOL SHIFT - переключение и корректировка картинок кубиков (кубики с цифрами на кубики с загадочными символами и обратно). Но следует учесть, что при переключении набора картинок в игре, PUZZNIC меняет массивы графики местами в памяти. Поэтому поменяв рисунки кубиков в игре, они поменяются и в редакторе. Для этого существует данная функция.
Z, X - последовательное перелистывание уровней от 1 (LEVEL 1-1-1) по 144 (LEVEL 8-8-4)
S - горячий старт текущего уровня. Позволяет протестировать открытый, в данный момент уровень. Возврат можно осуществить либо игрой выбором пункта QUIT желтого меню, либо нажатием E в любой момент игры.
O, P, Q, A - перемещение курсора (лево/право/верх/низ) по карте игры для последующей установки кубика.
1...8 - установка кубиков c числами 1-8 (или соответствующими символами)
0 - очистка клетки поля. Пустое пространство.
9 - непроходимая стена. Помните, что для нормального функционирования уровня, кубики необходимо обложить стенами по кругу, как минимум в один слой. Иначе игра через не заткнутую щель заполонит игровое пространство синим фоном, в котором перемещаемые кубики увязнут. Это приведет к зависанию игры или невозможности закончить уровень.
T, Y - установка горизонтального и вертикального лифта. В игре они одинакового цвета, но в редакторе для удобства они маркированы красным (вертикальный) и фиолетовым (горизонтальный) цветами. Также учтите особенность игры. В отдельно взятом уровне игра активирует только один лифт. Если на поле будет два и более лифтов, предпочтение отдается вертикальному. Остальные игнорируются. Чтобы выставить горизонтальный, необходимо, чтобы на поле он был только один. (Я не стал ставить лифтовую защиту, чтобы не утяжелять программу и так мало свободного места, надеюсь описания достаточно)
В режиме редактирования параметров:
Q, A - перемещение по пунктам меню
O, P - уменьшить/увеличить или деактивировать значение выделенного параметра.
При отключении таймера "палочек" или количества попыток (RETRY) в игре будет выводится прочерк, что означает остановку данного параметра (бесконечная жизнь)
При деактивации таймера игры, циферки в редакторе окрашиваются в красный цвет, показывая, что отсчет времени отключен. При включении счетчика, табло снова загорится желтым цветом.
В режиме редактирования палочной пирамидки:
Q, A - перемещение по палочкам
O, P - окрашивание палочки в нужный цвет.
В игре используются только 3 цвета палочек:
синие - по ним двигается курсор, и их можно выбирать. По всем остальным курсор не движется.
желтые - не открытые
зеленые - пройденные
Помимо этого, палочки можно окрасить в оставшиеся цвета. Они также будут не выбираемыми из игры.
SPACE - выход из редактора в начальное меню игры.
Клавиша E позволяет прервать игру и вернуться в редактор, практически из любой фазы.
Как обычно, желаю все творческих успехов и хорошо проведенных выходных.