Вход

Просмотр полной версии : PUZZNIC+Level Editor 2016



Yuri80
29.04.2016, 23:44
PUZZNIC+LEVEL EDITOR 2016

В качестве тренировки по изучению ассемблера, я решил сделать модификацию со встроенным редактором еще одной моей любимой игры из детства. На этот раз это будет PUZZNIC. Учитывая все пожелания по редактору, встроенному в игру TETЯIS-2, я отнесся к оформлению еще серьезнее, и перед стартом игры вывел краткую справку по клавишам в режиме рисунка.

Вот игра с редактором + прокомментированный исходник на ассемблере в txt формате:
57030

Общий вид редактора:
http://savepic.net/8112337m.jpg (http://savepic.net/8112337.htm)

Кратко о структуре кода:
В процессе написания редактора я открыл для себя еще больше интересных особенностей и тонкостей ассемблера, поэтому в программе удалось реализовать редактирование всех самых важных параметров игры, о которых до этого не упоминалось даже в POKES'ах.
Мой редактор работает в режиме DI и полностью автономный. В программе нет ни единого обращения к ПЗУ и все процедуры, включая вывод на экран символов и рисунков, собственного изобретения. (Это было сделано не столько из необходимости, сколько из тренировки для быстрого поиска координат и запоминания чрезстрочной структуры области экрана). Удалось найти рецепт принудительного затыкания зацикленной ноты из звуковых портов при внезапном выходе и запрете прерываний (правда я сам толком не понимаю как работает, но работает! Если кто-то поможет разобраться, будет хорошо).


Описание редактора:

Программа имеет три режима редактирования:

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

- редактор параметров игры
Помимо установки бесконечной/конечной жизни всех параметров редактор позволяет выставлять требуемое значение времени для каждой группы уровней. (Между делом скажу, что POKES'ы для данной игры, гуляющие в интернете не совсем корректные и даже топорные. Остановка и запуск таймера игры у меня сделана иначе)

- редактор "палочной пирамиды"

Под этим загадочным словосочетанием, я подразумеваю сию штуковину:
http://savepic.net/8074449m.jpg (http://savepic.net/8074449.htm)

В редакторе изображена компактная версия данного "агрегата". Программа позволяет отметить нужными цветами любую "палочку". В редактор "палочек" я включил недокументированную особенность. Помимо синего, желтого и зеленого, палки можно промаркировать любыми цветами. (Правда карта актуальна будет только при старте, с последующим прохождением блока из 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 позволяет прервать игру и вернуться в редактор, практически из любой фазы.

Как обычно, желаю все творческих успехов и хорошо проведенных выходных. :)

goodboy
29.04.2016, 23:54
(Между делом скажу, что POKES'ы для данной игры, гуляющие в интернете не совсем корректные и даже топорные.
они скорее всего для `польских` версий (с примитивным упаковщиком)

Удалось найти рецепт принудительного затыкания зацикленной ноты из звуковых портов при внезапном выходе и запрете прерываний (правда я сам толком не понимаю как работает, но работает! Если кто-то поможет разобраться, будет хорошо).
попробуй просто call 48016

Yuri80
30.04.2016, 22:03
попробуй просто call 48016

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

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

http://savepic.net/8101919m.jpg (http://savepic.net/8101919.htm)

Так что вопрос закрыт.

goodboy
01.05.2016, 13:55
редактор поля игры с кубиками
Он позволяет редактировать запакованные карты игрового поля в самой игре, поэтому сохранения не требуется.

стоп, а как делиться созданными уровнями с-другими игроками ?