(C) Иван Рощин, Москва, 1998
Этот красивый эффект я впервые увидел на PC, в программе Dos Navigator (screen saver 'iris.ss'), и перенес его на Спектрум. Вот полный текст программы с подробными комментариями:
M_X EQU 7 ;Масштаб по X
M_Y EQU 7 ;Масштаб по Y
ORG #6000
;Устанавливаем атрибуты:
HALT
LD HL,#5800
LD DE,#5801
LD BC,#2FF
LD (HL),L
LDIR
;Рисуем сетку:
LD HL,#4000
LP1 LD A,%01010101
BIT 0,H
JR NZ,NE_FF
CPL
NE_FF LD (HL),A
INC HL
LD A,H
CP #58
JR NZ,LP1
;Главный цикл:
MAIN_LP LD IX,BUFER+#2FF
;Буфер заполняется "от конца к началу",
;и в таком же порядке будет выводиться
;на экран в процедуре TO_SCR.
LD H,TAB/#100
LD DE,(M_3)
LD A,24
LOOP_V EX AF,AF'
LD BC,(M_1)
EXX
LD B,32
LOOP_H EXX
LD A,(MEM_BP)
LD L,C
ADD A,(HL)
LD L,B
ADD A,(HL)
LD L,E
ADD A,(HL)
LD L,D
ADD A,(HL)
AND #7F
;Старший бит аккумулятора обнулен, и
;буфер заполняется значениями #00-#7F.
;Это пригодится в процедуре TO_SCR.
LD (IX),A
DEC IX
INC C ;!
ADR_MX LD A,M_X
ADD A,B
LD B,A
EXX
DJNZ LOOP_H
EXX
ADR_MY LD A,M_Y
ADD A,E
LD E,A
INC D ;!
EX AF,AF'
DEC A
JP NZ,LOOP_V
LD HL,(MEM_BP)
DEC HL ;!!
LD (MEM_BP),HL
LD A,L
XOR H
LD HL,BUFER+#2FF
XOR (HL)
XOR E
XOR C
ADD A,D
ADD A,B
LD B,A
LD HL,NAPR
AND 3
LD D,0
LD E,A
ADD HL,DE
LD A,(HL)
BIT 3,B
JR NZ,TO_DEC
CP 3
JP P,TO_END
INC (HL)
JR TO_END
TO_DEC CP #FD
JP M,TO_END
DEC (HL)
TO_END LD A,(NAPR)
LD HL,M_1
ADD A,(HL)
LD (HL),A
LD A,(M_2)
LD HL,NAPR+1
SBC A,(HL)
LD (M_2),A
LD A,(NAPR+2)
LD HL,M_3
ADD A,(HL)
LD (HL),A
LD A,(M_4)
LD HL,NAPR+3
SBC A,(HL)
LD (M_4),A
CALL TO_SCR ;Вывод на экран
XOR A ;Что-то
IN A,(254) ;нажато?
CPL
AND 31
JR NZ,OBR_Z
;Если не нажато, восстанавливаем
;масштаб по X и Y:
CALL INC_M
JP MAIN_LP
;Нажата клавиша Z (Zoom)?
OBR_Z LD A,#FE
IN A,(254)
BIT 1,A
RET NZ ;Если нет - выходим
;Если нажата - изменяем масштаб:
CALL DEC_M
JP MAIN_LP
MEM_BP DW 0
M_1 DB 0
M_2 DB 0
M_3 DB 0
M_4 DB 0
NAPR DB 2,1,3,4
;-----------------------------------
;Процедуры INC_M и DEC_M увеличивают
;и уменьшают масштаб:
INC_M LD HL,ADR_MX+1
LD A,(HL)
CP M_X
JR NC,INC_Y
INC (HL)
INC_Y LD HL,ADR_MY+1
LD A,(HL)
CP M_Y
RET NC
INC (HL)
RET
DEC_M LD HL,ADR_MX+1
LD A,(HL)
AND A
JR Z,DEC_Y
DEC (HL)
DEC_Y LD HL,ADR_MY+1
LD A,(HL)
AND A
RET Z
DEC (HL)
RET
;-----------------------------------
;Процедура TO_SCR перекодирует байты
;из буфера с помощью палитры и
;выводит результат в файл атрибутов:
TO_SCR LD HL,PALETTE ;палитра
LD DE,#5800 ;экран
LD BC,BUFER+#2FF;конец буфера
HALT
LP_S LD A,(BC)
LD L,A
LDI
;Т.е. берем байт из буфера и помещаем
;в регистр L. Это будет смещение в
;палитре (вот почему она должна начинаться
;с адреса, кратного #100). Команда LDI
;возьмет байт из палитры (HL) и поместит
;на экран по адресу (DE), который
;увеличится на 1. Положение в буфере (BC)
;уменьшится на 1. То, что HL также
;увеличивается на 1, никакой роли не
;играет, т.к. H не изменяется (потому
;что в буфере находятся значения 0..#7F),
;а L все равно изменится на следующем
;шаге.
LD A,(BC)
LD L,A
LDI
LD A,(BC)
LD L,A
LDI
LD A,(BC)
LD L,A
LDI
LD A,(BC)
LD L,A
LDI
LD A,(BC)
LD L,A
LDI
LD A,(BC)
LD L,A
LDI
LD A,D
CP #5B
JP NZ,LP_S
RET
;---------------------------------
;Вспомогательные буферы и таблицы:
ORG #C000
;Вспомогательная таблица, начинается
;с адреса, кратного #100:
TAB
DB #40,#40,#40,#40,#40,#40,#40,#40
DB #3F,#3F,#3F,#3F,#3F,#3E,#3E,#3E
DB #3E,#3D,#3D,#3D,#3C,#3C,#3B,#3B
DB #3B,#3A,#3A,#39,#39,#38,#38,#37
DB #37,#36,#35,#35,#34,#34,#33,#32
DB #32,#31,#30,#30,#2F,#2E,#2E,#2D
DB #2C,#2C,#2B,#2A,#29,#29,#28,#27
DB #26,#25,#25,#24,#23,#22,#22,#21
DB #20,#1F,#1E,#1E,#1D,#1C,#1B,#1B
DB #1A,#19,#18,#17,#17,#16,#15,#14
DB #14,#13,#12,#12,#11,#10,#10,#0F
DB #0E,#0E,#0D,#0C,#0C,#0B,#0B,#0A
DB #09,#09,#08,#08,#07,#07,#06,#06
DB #05,#05,#05,#04,#04,#03,#03,#03
DB #02,#02,#02,#02,#01,#01,#01,#01
DB #01,#00,#00,#00,#00,#00,#00,#00
DB #00,#00,#00,#00,#00,#00,#00,#00
DB #01,#01,#01,#01,#01,#02,#02,#02
DB #02,#03,#03,#03,#04,#04,#05,#05
DB #05,#06,#06,#07,#07,#08,#08,#09
DB #09,#0A,#0B,#0B,#0C,#0C,#0D,#0E
DB #0E,#0F,#10,#10,#11,#12,#12,#13
DB #14,#14,#15,#16,#17,#17,#18,#19
DB #1A,#1B,#1B,#1C,#1D,#1E,#1E,#1F
DB #20,#21,#22,#22,#23,#24,#25,#25
DB #26,#27,#28,#29,#29,#2A,#2B,#2C
DB #2C,#2D,#2E,#2E,#2F,#30,#30,#31
DB #32,#32,#33,#34,#34,#35,#35,#36
DB #37,#37,#38,#38,#39,#39,#3A,#3A
DB #3B,#3B,#3B,#3C,#3C,#3D,#3D,#3D
DB #3E,#3E,#3E,#3E,#3F,#3F,#3F,#3F
DB #3F,#40,#40,#40,#40,#40,#40,#40
;Палитра, определяющая цвет эффекта,
;начинается с адреса, кратного #100:
PALETTE
DB #09,#09,#09,#09,#09,#09,#09,#09
DB #09,#09,#09,#0B,#0B,#0B,#0B,#0B
DB #0B,#0B,#0B,#0B,#0B,#0B,#1B,#1B
DB #1B,#1B,#1B,#1B,#1B,#1B,#1B,#1B
DB #1A,#1A,#1A,#1A,#1A,#1A,#1A,#1A
DB #1A,#1A,#1A,#12,#12,#12,#12,#12
DB #12,#12,#12,#12,#12,#12,#16,#16
DB #16,#16,#16,#16,#16,#16,#16,#16
DB #36,#36,#36,#36,#36,#36,#36,#36
DB #36,#36,#36,#34,#34,#34,#34,#34
DB #34,#34,#34,#34,#34,#34,#24,#24
DB #24,#24,#24,#24,#24,#24,#24,#24
DB #25,#25,#25,#25,#25,#25,#25,#25
DB #25,#25,#25,#2D,#2D,#2D,#2D,#2D
DB #2D,#2D,#2D,#2D,#2D,#2D,#29,#29
DB #29,#29,#29,#29,#29,#29,#29,#29
;Промежуточный буфер, может начинаться
;с любого адреса:
BUFER DS #300
─────────────────────
Как можно экспериментировать с этой программой:
- изменить масштаб (константы M_X и M_Y). Это можно сделать и непосредственно во время работы программы, нажав клавишу 'Z'.
- вместо команд INC C и INC D, помеченных "!", можно поставить команды, увеличивающие (или уменьшающие) регистры C и D не на 1, а на любое другое число.
- команду DEC HL, помеченную "!!", можно заменить на несколько таких команд (или, например, команд INC HL).
- изменить содержимое таблицы TAB.
- изменить набор цветов с помощью палитры (массив PALETTE).
Можно изменять все указанные выше параметры и непосредственно во время работы программы, если сделать ее самомодифицирующейся.
* * *
- От автора - Shaitan
Технические детали нового интерфейса программы для ZX Spectrum. Обсуждаются улучшения и функции, такие как прокрутка и изменение цвета. Предоставлены инструкции по навигации с помощью клавиатуры и кнопок.
- От автора
Введение от автора и информация о редакционной команде.
- Презентация
Статья представляет программный установщик для создания автозапускаемых дисков и знакомит с новой адвентюрной игрой, созданной с помощью QUILL доктором Лазером.
- Презентация программного обеспечения TRICK
Статья представляет TRICK, новое программное обеспечение для защиты программ, разработанное Eternity Industry, и обсуждает его бета- и коммерческие версии. Автор, Александр Калинин (aka Paracels/EI), обращает внимание на предыдущие недостатки программного обеспечения и подчеркивает его улучшенный интерфейс. В статье также содержатся детали приобретения программы и приглашение читателям заказать её.
- Презентация
Статья содержит подробное руководство пользователя для HELP_Z80, бесплатной утилиты для ZX Spectrum, которая служит электронным справочником по командам микропроцессора Z80. В ней описывается, как загрузить и использовать программное обеспечение, включая объяснения команд, функции поиска и интеграцию с ассемблерами. Кроме того, включены распределение памяти, функциональные особенности и ссылки для дальнейшего чтения.
- Интерфейс
Статья обсуждает отзывы читателей о интерфейсе журнала, касаясь вопросов цен и тенденций программного обеспечения в сообществе ZX Spectrum. В ней представлено письмо от читателя, который высказывает мысли о ценах на игры и уменьшении числа пользователей платформы. Также обсуждаются разработки программного обеспечения и вовлеченность пользователей.
- Интерфейс
Статья делится опытом автора после покупки Амиги, сравнивая ее с ПК и обсуждая ее использование для игр, графики и музыки, отмечая при этом некоторые ограничения программного обеспечения.
- Интерфейс
Статья обсуждает проблемы поддержки пользователей со стороны производителей 'железа' SCORPION и NEMO для устройств ZX Spectrum. Критика SCORPION за плохое обслуживание клиентов при том, что они являются лидерами рынка, и похвала NEMO за оперативную поддержку. Автор выражает беспокойство о текущем состоянии рынка 'железа' для ZX Spectrum.
- Интерфейс
Статья обсуждает будущее платформы Spectrum, затрагивая демографию пользователей, проблемы производства софта и возможности эволюции аппаратного обеспечения.
- Интерфейс
Статья обсуждает разочарования пользователя Speccy в связи с проблемами аппаратного обеспечения, трудностями современной вычислительной техники и преданностью платформе Speccy.
- Интерфейс
Статья рассматривает жизнь и судьбы пользователей ZX Spectrum, включая личные воспоминания автора о друзьях и их взаимодействии с компьютерами.
- Система
Статья рассматривает различные программы для ZX Spectrum, включая текстовые редакторы, аудиоплееры и графические утилиты. В ней представлены независимые мнения о их характеристиках и удобстве использования, выделяя как сильные, так и слабые стороны. В статье подчеркивается эволюция и улучшение программных средств, доступных для этой классической платформы.
- Обзор игрушек
Обзор заметных игр для ZX Spectrum с акцентом на графику, звук и игровые механики. Каждая игра сопровождается кратким описанием и рейтингом. Рекомендуется любителям ретро-игр.
- Обзор игрушек
Статья рассматривает демо-версии различных игр, подчеркивая их потенциал и уникальные особенности. Акцентируется внимание на дефиците таких релизов на рынке и оцениваются качество и механика выбранных игр. Автор делится мнениями о прогрессе и ожиданиях к будущим полным версиям этих игр.
- Гости
Статья описывает образование и деятельность группы Eternity Industry, её участников, проекты и планы на будущие релизы и соревнования.
- Гости - Dr. John
Интервью с Феликсом из Virtual Brothers о его переходе от ZX Spectrum к ПК, разработке игры 'Винни-Пух' и планах на будущее.
- Гости
Интервью с музыкантами Маратом и Демоном из группы 'Disgust', обсуждающими свою музыкальную эволюцию, влияния и взгляды на жизнь и творчество.
- Раскрутка
Статья представляет собой подробный мануал к игре 'ENCYCLOPEDIA of WAR', описывающий выбор армий, типы юнитов и механики битвы.
- Раскрутка
Статья представляет собой руководство по игре, описывающее необходимые предметы и стратегии для преодоления различных испытаний, включая столкновения с динозаврами и навигацию по деревням.
- Раскрутка
Статья представляет собой обзор игры в жанре arcade adventure 'ELOPEMENT' от Omega HG, описывая ее особенности и давая советы по прохождению.
- Раскрутка
Статья описывает текстовую адвентюру 'Остров тьмы' на QUILL, предлагая советы для игроков. Упоминаются механики и персонажи, включая загадки и взаимодействия. В конце представлена карта острова.
- Раскрутка 'Knightmare'
Статья описывает игру 'Knightmare', подробно рассказывая о командах, механике игрового процесса и начальных квестах. Игрок управляет рыцарем, который должен взаимодействовать с персонажами и решать загадки для продвижения. Это руководство по навигации в игровом окружении и целям.
- Обмен опытом
Статья критикует адвентюрную игру 'Island of Darkness' Пауля Москоу, подчеркивая её нелогичный дизайн, отсутствие подробных описаний предметов и нехватку подсказок для игроков.
- Обмен опытом
Статья представляет собой мануал по доработке ассемблера ZX ASM 3.0, вводя функции отладки и управления выполнением программ на ZX Spectrum.
- Обмен опытом
Статья описывает феномен, наблюдаемый с видеоконтроллером ZX Spectrum, когда переключение между двумя экранами может создавать неожиданные визуальные артефакты. В ней изложена конкретная программа, которая демонстрирует этот эффект за счет быстрой смены экранов. Автор обсуждает последствия и возможные применения данного поведения.
- Обмен опытом - Иван Рощин
Статья представляет собой руководство по переносу эффекта заставки 'iris.ss' из Dos Navigator на ZX Spectrum, включая исходный код и советы по модификации.
- Обмен опытом - Иван Рощин
Описание процедуры OPEN_W для создания границ окна. Включает детали о настройке символов и размеров. Используется PRSYM для печати символов.
- Обмен опытом - Maximum
Введение в операции с длинными числами для разработки игр на ZX Spectrum, включая сложение, вычитание и преобразование в ASCII.
- Обмен опытом
Статья обсуждает кастомизацию графического редактора ART STUDIO путем создания дополнительных модулей, которые улучшают его функциональность, включая функции воспроизведения музыки и отображения координат курсора.
- Обмен опытом
Статья описывает программу, разработанную для улучшения визуального качества атрибутного сообщения с пиксельным движением на ZX Spectrum. Приведены детали реализации, включая использование массивов данных для задания траектории движения и рендеринга изображений. Программа снабжена комментариями для облегчения понимания и может быть изменена для создания различных эффектов.
- Оттяг
Статья содержит юмористические зарисовки и комментарии о различных аспектах жизни и технологий, включая анекдоты о вымышленном персонаже и его опыте с процессором Pentium.
- Тест фармацевта
Статья представляет собой юмористические тесты, предназначенные для определения, является ли человек настоящим фармацевтом или самозванцем, с ситуационными вопросами и оценкой знаний.
- Странности и самооценка в 'Оттяг'
Статья 'Оттяг' представляет собой юмористическую и критическую самооценку автора, исследующую различные жизненные опыты и причуды, подчеркивающие его необычные черты личности.
- Юмористический Тест: Оцени Свое Чувство Юмора
Статья представляет собой юмористический тест для оценки чувства юмора и сексуальных установок через различные ситуационные вопросы, раскрывающие абсурдные и комические перспективы.
- Оттяг
Статья представляет собой юмористический тест для определения, какой ты студент — от весельчака до старательного ученика. В ней есть ряд вопросов оtypичных студенческих действиях и реакциях. Результаты классифицируют студентов по набранным баллам от беззаботных до ботаников.
- Как Правильно Мучить Windows 95 - Maximum
Статья описывает иронический подход к установке и эксплуатации операционной системы Windows 95, включая способы ее 'мучения' и троллинга. В тексте используются гиперболизированные примеры взаимодействия с ОС для создания комичного эффекта. Это развлекательный материал с элементами юмора.
- Оттяг
Статья - это юмористическая нарративная история о Винни-Пухе и его друзьях, которые возвращаются в Вечнозеленый лес, где их беззаботная жизнь превращается в хаос. Описываются их шалости, включая пьянство и злоключения, когда они воссоединяются и сталкиваются с различными трудностями. История раскрывает личности персонажей и их взаимодействия в комедийном ключе.
- Новелла
Статья описывает юмористическую новеллу, в которой капрал Джонлан рассказывает о своем первом военном задании и общении с внуком за пивом.
- Новелла
Новелла описывает приключенческий побег из базы глотов на старом космическом корабле, подчеркивая столкновения и хитрые маневры главного героя.
- Новелла
Статья рассказывает о забавной истории о двух ежиках, Пухлом и Заразe, которые после странного события обзаводятся крыльями и должны справляться с новыми обстоятельствами. История сочетает фантазию и юмор, поскольку персонажи сталкиваются с неожиданными изменениями и трудностями. Это новелла, демонстрирующая imaginative storytelling.
- Новости
Статья обсуждает последние новости из Рыбинска, связанные с пати FunTop, описывая вклад различных участников и команд в журнал 'Adventurer' и конкурс демо.
- Новости
Статья сообщает о событиях в сообществе Спектрумистов Ярославля, включая информацию о разработчиках программного обеспечения и их текущих проектах.
- Реклама
Статья представляет собой сборник рекламных объявлений и анонсов, связанных с ZX Spectrum, приглашая к сотрудничеству программистов, художников и музыкантов, а также подробно описывая, как получить журнал и программное обеспечение.