Rush #01: Spectrum программинг: звуковые эффекты с чипом AY

(C)1997-99, А.Безуглый (Ticklish Jim/BIS/Rush)

ЗВУКОВЫЕ ЭФФЕКТЫ ДЛЯ МУЗЫКАЛЬНОГО ПРОЦЕССОРА И ИХ СОВМЕЩЕНИЕ С ОСНОВНОЙ МЕЛОДИЕЙ

Итак, музпроцессор... Давно прошли те времена, когда народ довольствовался непритязательными бибиканьями динамика SPECCY во время игры. Сейчас всякий, кто пишет свою игру, обязательно включает в нее музыку. Естественно, для AY'а. Кто-то идет дальше и поддерживает LPT COVOX, SOUNDRIVE, GENERAL SOUND... У кого-то музыка лучше, у кого-то хуже, но дело не в этом - сейчас программа без музыкального сопровождения для AY вызывает по меньшей мере удивление. Впрочем, музыка музыкой, однако иногда ее бывает недостаточно. Так хочется услышать шарканье ног героя или капанье воды, например, а слышишь только какой-то затянутый мотив (хорошо еще, если музыку можно отключить). Но вдруг ты все-таки слышишь заветный шорох ветра и... Замечаешь, что вокруг царит мертвая тишина, которую не могут оживить даже твои шаги. Тут поневоле вспоминаешь непревзойденный цикл игр о DIZZY, где сквозь музыку явственно пробиваются звуки... на динамика бипера. В общем, куда ни кинь - всюду клин. Да, изредка все же встречаются программы, в которых звуковые эффекты выводятся параллельно с музыкой, но таких примеров довольно мало.

Надеюсь, данная статья поможет кому-то при написании своей собственной игрушки. Я не претендую на истину в последней инстанции, более того, уверен, что кто-то решил/решит данную проблему изящнее меня, но все-таки...

Во время работы над "CSC: Deja Vu" в определенный момент встал вопрос о музыкальном сопровождении игры. Помня о реакции публики на отсутствие AY-музыки в CSC-1 (кстати, есть уже версия для машин со 128К ОЗУ. Причем музыка играет как в меню, так и во время игры.) было единогласно решено озвучить новую игру. Через некоторое время стало ясно, что просто музыки недостаточно. Panda выстренько состряпал с десяток эффектов и... Работа застопорилась. Никто не знал, как совместить музыку и эффекты. Все попытки заканчивались неудачей - шипение, хрипы и больше ничего. Даже работа со специально написанной двухканальной музыкой ничего не дала. Хотя удивляться нечему: Panda музыку пишет, но и только, а я вообще далек от этого дела. Так или иначе, но вопрос об эффектах был отложен на неопределенное время. Да и вообще, где-то в конце мая '97-го работа над игрой прекратилась. Виной тому были мои собственные и ничьи более глюки. Где-то в середине осени 1997 года я побывал в Севастополе, где познакомился с Dismaster'ом и Squizer'ом (это не считая банды SMASH'евцев). В то время я опять начал подумывать о продолжении работы над CSC (к тому моменту возникла программа АВТОМАСКИ, но поломался мой компьютер), поэтому не преминул воспользоваться случаем и договорился с Dismaster'ом насчет специального player'а для музыки и спецэффектов. Договорился, уехал... Прошло три месяца... Dis'а, вероятно, обо всем забыл (я, впрочем, тоже хорош, так и не удосужился написать письмо ни Squizer'у, ни Dis'е), а на клич Mighty Hacker'а никто и не думал откликаться. Короче говоря, помощи ждать было не от кого, вот и пришлось самому вплотную заняться данной проблемой.

Ниже приводится пример небольшой программки, которую я снабдил исчерпывающими, на мой взгляд, комментариями. Думаю, разобраться, что к чему, особого труда не составит. Да, пока не забыл - моя программа расчитана на то, что звуковые эффекты выводятся по каналу 'B', а музыка двухканальная. Можно, конечно, убрать последнее ограничение, но тогда придется пожертвовать чистотой звучания спецэффекта и смириться с наложением, которое неизбежно возникнет. Но каждый делает по-своему, так что смотрите сами. Литература, которой я пользовался, пока разбирался с работой AY'ка, немногочисленна: ZX-РЕВЮ #5'95 и незабвенная "ZX-SPECTRUM и TR-DOS для пользователей и программистов" А.Ларченко и Н.Родионова.

В самом начале необходимо узнать количество нот (я не специалист, поэтому допускаю, что некоторые термины будут употребляться неправильно, однако, главное это суть) в спецэффекте. Для этого лично я пользуюсь следующей примитивной программкой на Бейсике:

10 RANDOMIZE USR 49152: LET A=65533: LET B=0: REM Звуковой эффект написан в ProTracker'е и выгружен на диск вместе с проигрывателем по адресу 49152 20 RANDOMIZE USR 49158: LET B=B+1: OUT A,9: PRINT AT 0,0;"Громкость канала B=";IN A;" "';"Номер текущей ноты=";B;" ": REM В этой строке считывается информация о громкости для канала В; об окончании звучания говорит 0 на экране и тишина в динамике; число В является длиной LEN, о которой речь будет ниже. 30 PAUSE 0: IF INKEY$ <> "q" AND INKEY$ <> "Q" THEN GOTO 20: REM Эта строка необходима для пошагового исполнения спецэффекта.

Вычислив длину (число В), можно переходить к процедурам на Ассемблере. Загружаем файл FX (можно не грузить, если память компьютера не была очищена после работы Бейсик-программы) с нужным эффектом и последовательно выполняем подпрограммы MAKE и PACKER. Первая необходима для создания в памяти массива данных для регистров музпроцессора, а вторая - для небольшой оптимизации данного массива (оптимизация неполная, т.к. можно выиграть еще один байт с каждой ноты). После этого сохраняем готовый блок данных с адреса, на который указывает переменная SOUND (40000), длиной LEN*4 (упакованный, хотя, как сказал выше, возможен и LEN*3). Теперь можно переходить непосредственно к демонстрации. Как установить музыку на прерывания, думаю, никому об'яснять не надо. Но перед инициализацией проигрывателя необходимо внести в него небольшие изменения. Для этого надо перебросить блок TO_PLAYER по адресу, равному адрес_загрузки_музыки+1351 (для проигрывателя из PT2.1). Длина блока 97 байт. Кто-то может удивиться: "Зачем полностью убирать обработку целого канала из проигрывателя, если там и так пусто?!" В качестве ответа я могу лишь предложить попробовать НЕ вносить изменений в проигрыватель - послушаете и сравните. Ладно, с этим разобрались. Сейчас пару слов о программе, отвечающей за проигрывание спецэффекта. Я сделал так, чтобы звук выдавался на AY при нажатии клавиши FIRE на кемпстоне (кстати, чтобы завершить работу программы, надо нажать одновременно UP, DOWN, LEFT, RIGHT на том же кемпстоне). Конечно, в игре вам придется добавить процедуру выбора нужного звука и т.д. и т.п. Но в данном случае этого не требуется, поэтому считаем, что есть лишь один SFX, который должен звучать при нажатии определенной клавиши и не прерываться до тех пор, пока не прозвучит последняя нота. Вполне естественно, что нота SFX должна звучать после ноты композиции, т.е. раз в прерывание. В общем, смотрите комментарии, т.к. собственно описание работы моей программы подошло к концу.

(C)1998, T.J.

MUS ORG 49152 ; .INCBIN MUSIC ORG 40000 ; .INCBIN fx2 ; ;PACK LENGT=136 bytes

EFFECT ORG 49152 ; .INCBIN FX ; ;PT-module WITH SFX

FXBUF EQU 32768

ORG 25000
JR BEGIN
;PLAY MUSIC & SFX

CALL MAKE
;MAKE SOUND FX ;WORK WITH FILE AS LOADED AT ;"EFFECT"-ADRESS
JP PACKER
;PACK SOUND FX

BEGIN DI
LD HL,TO_PLAYER
LD DE,MUS+1351
LD BC,97
LDIR
;Внесли изменения в проигрыватель мелодии
LD A,#25
LD I,A
IM 2
LD A,195
LD HL,IMMER
LD (23670),A
LD (23671),HL
;Включили прерывания 2го рода
CALL MUS
;Инициализировали проигрыватель
EI
HALT
M1 XOR A
IN A,(31)
CP 15
JR Z,EXIT
;Если нажаты 4 клавиши кемпстона, ;то перейти на процедуру завер- ;шения работы программы
CP 16
JR NZ,M1
;Если не нажата клавиша ОГОНЬ, ;то перейти на начало цикла
LD A,1
LD (SND_PR),A
;Выбрали номер SFX
K1 CALL NASTR
;Указали параметры для данного SFX ;(адрес массива данных и длина SFX)
LD A,#3A
LD (K1),A
;Блокировали вызов процедуры обновления ;параметров с той целью, ;чтобы SFX доиграл до конца, прежде чем ;придет очередь следующего SFX ;(конечно, можно выполнить блокировку ;поизящнее, но, повторяю, в данном случае ;это не играет роли, поэтому меня уст- ;раивает превращение CALL NASTR в ;LD A,(NASTR)) и перешли на на- ;чало цикла.
JR M1

;Процедура остановки работы ;демо-программы. ;Перед завершением устанавливаются ;прерывания 1го рода, отклю- ;чается проигрыватель музыки, ;глушится канал SFX и возврат в ;основную программу.

EXIT DI
LD A,#3F
LD I,A
IM 1
CALL MUS ;MUSIC OFF
LD BC,65533
LD A,9
OUT (C),A
XOR A
LD B,#BF ;CHANNEL 'B' OFF
OUT (C),A
EI
RET

;Процедура обработки прерываний. Надеюсь, ;объяснять ничего не требуется

IMMER DI
PUSH HL
PUSH DE
PUSH BC
PUSH AF
EX AF,AF'
PUSH AF
EXX
PUSH HL
PUSH DE
PUSH BC
EXX
PUSH IX
PUSH IY
CALL MUS+6
;Вызов проигрывателя SFX
CALL PLR
POP IY
POP IX
EXX
POP BC
POP DE
POP HL
EXX
POP AF
EX AF,AF'
POP AF
POP BC
POP DE
POP HL
EI
RET

SOUND DEFW 40000
SND_PR DEFB 0
LEN DEFB 8 ;LENGT OF SFX (/4)

;PLAYER FOR SOUND FXS ;WORK ONLY WITH CHANNEL 'B'!!!

;Проигрыватель для SFX.

PLR LD A,(SND_PR)
OR A
RET Z
;Возврат, если по адресу SND_PR находится ;0, т.е. никакой SFX не ;выбран
ADR_SND LD HL,40000
;В HL адрес начала SFX ;(устанавливается п/п NASTR)
LD DE,#BFFF
LD A,80
;В А длина SFX (также устанавливается п/п ;NASTR)
X3 EX AF,AF'
;Далее следует вывод данных в регистры ;сопроцессора 2,3,6,7 и 9, ;причем данные для 3 и 9 распаковываются ;из одного байта
LD C,253
LD B,E
LD A,2
;SELECT CHANNEL 'B'
OUT (C),A
LD A,(HL)
LD B,D
OUT (C),A
INC HL
LD A,6
LD B,E
OUT (C),A
LD A,(HL)
LD B,D
OUT (C),A
INC HL
LD A,7
LD B,E
OUT (C),A
IN A,(C)
;OLD CONSEQUENCE
OR (HL)
;ADD NEW & OLD
;Эти две строки нужны были для того, ;чтобы наш SFX не заглушил ;остальные каналы, используемые ;для вывода основной мелодии
LD B,D
OUT (C),A
INC HL
LD A,3 ;SEL. CH. 'B'
LD B,E
OUT (C),A
LD A,(HL)
RRA
RRA
RRA
RRA
AND #0F
;Значение для R3 сохранялось в старшем ;полубайте
LD B,D
OUT (C),A
LD A,9
;VOLUME OF CH 'B'
LD B,E
OUT (C),A
LD A,(HL)
AND #0F
;WITHOUT 4th BIT! (огибающая) ;Значение для R9 сохранялось ;в младшем полубайте
LD B,D
OUT (C),A
INC HL
EX AF,AF'
DEC A
LD (SND_PR),A
;До тех пор пока SFX не прозвучит ;полностью, переменная не будет ;обнуляться.
JR NZ,HLP
;ONLY FOR INTERRUPTS
;Корректируем значения адреса и длины SFX ;для следующей ноты, ;которая будет звучать в следующем ;прерывании
LD A,#CD
LD (K1),A
;По окончании звучания SFX необходимо ;восстановить вызов процедуры выбора па- ;раметров для следующего SFX (CALL NASTR)
RET
NASTR LD A,(LEN)
LD HL,(SOUND)
HLP LD (X3-1),A
LD (ADR_SND+1),HL
RET
;Таблица TABL содержит список регистров ;AY, которые используются моей программой. ;Т.к. для эффектов у нас отведен ;только канал В, то нам необходим лишь ;регистры 2,3 (чистого и грубого тона ;соответственно), 6 (шума), 7 (смеситель) ;и 9 (громкость для В). ;Я не использовал регостры 11,12 и 13 ;(частота и тип огибающей) ;в целях экономии памяти, но кто пожелает, ;тому не составит труда переделать мою ;программу по своему вкусу (хотя, как ;показывает практика, при создании муз. ;спецэффектов без огибающей можно вполне ;обойтись), не стоит забывать, что это ;просто элементарный пример работы со ;звуком. ;Данная таблица используется только ;процедурами MAKE и PACK.

TABL DEFB 2,6,7,3,9
DEFB 255

;Подпрограмма создания массива данных.

MAKE CALL EFFECT
;Инициализировали проигрыватель
LD IX,FXBUF
;В IX заносим адрес буфера
LD A,(LEN)
LD B,A
;В В - количество нот
M11 PUSH BC
PUSH IX
CALL EFFECT+6
;Проиграли ноту
POP IX
LD HL,TABL
M3 LD BC,65533
LD A,(HL)
CP 255
JR Z,M2
OUT (C),A
IN A,(C)
;Считали данные из нужного регистра
LD (IX+0),A
;Занесли в буфер
INC HL
INC IX
JR M3
M2 POP BC
DJNZ M11 ;Повторяем
CALL EFFECT
;Отключили проигрыватель
RET

;Подпрограмма упаковки массива данных

PACKER LD IX,FXBUF
;В IX адрес буфера
LD HL,(SOUND)
;В HL адрес, с какого будет рас- ;пологаться упакованный блок
LD A,(LEN)
LD B,A
;В В - количество нот
L1 LD A,(IX+0)
LD (HL),A ;R2
INC HL
LD A,(IX+1)
LD (HL),A ;R6
INC HL
LD A,(IX+2)
LD (HL),A ;R7
INC HL
LD A,(IX+3)
AND #0F
RLA
RLA
RLA
RLA
LD C,A
LD A,(IX+4)
AND #0F
OR C
LD (HL),A ;R3+R9
INC HL
;Вместо 5 байт на одну ноту мы получили 4. ;Полная длина готового блока равна LEN*4. ;Если же использовать огибающую, то ;придется отказаться от ;совмещения R3 и R9 (т.к. в 9м регистре ;необходимо будет учитывать 4й бит, ;хотя можно будет об'единить R3 и R13 - ;в обоих ;используются только младшие 4 бита.)
LD DE,5
ADD IX,DE
DJNZ L1 ;Повторяем цикл
RET

;CHANGES FOR ProTracker2.1 PLAYER ;ADRES=LOAD_ADR+1351 ;(for PT2.1 by Golden Disk) ; =LOAD_ADR+1857 ;(for PT2.4 by GD & Fantom Family) ;LENGT=97 bytes ;CHANNEL 'B' NOT USED!!! IT'S ONLY FOR SOUND FXS!!!

;Новый блок для проигрывателя

TO_PLAYER LD B,D
OUT (C),A ;R13
LD B,E
OUTD
DEC A
LD B,D
OUT (C),A ;R12
LD B,E
OUTD
DEC A
LD B,D
OUT (C),A ;R11
LD B,E
OUTD
DEC A
LD B,D
OUT (C),A ;R10
; (VOLUME 'C')
LD B,E
OUTD
DEC A ;R9
; (VOLUME 'B')!!!
DEC HL
;Предыдущие две строки гарантируют, ;что никакие данные из данной ;композиции не будут выдаваться на ;канал В.
DEC A
LD B,D
OUT (C),A ;R8
; (VOLUME 'A')
LD B,E
OUTD
DEC A
LD B,D
OUT (C),A ;R7
; (MIXER!!!)
LD B,E
;А здесь мы делаем так, чтобы ;наши собственные параметры для ;канала В нашли путь к слушателю ;(обнуляем биты 1 и 4, т.е. ;разрешаем выдачу тона и шума для ;канала В)
LD A,(HL)
AND #2D ;!!!
; (FOR 'B')
LD (HL),A
OUTD
LD A,6
LD B,D
OUT (C),A ;R6
LD B,E
OUTD
DEC A
LD B,D
OUT (C),A ;R5
LD B,E
OUTD
DEC A
LD B,D
OUT (C),A ;R4
LD B,E
OUTD
;Корректируем Аккумулятор так, ;чтобы в нем оказалась 1. ;Это необходимо для того, ;чтобы обойти выдачу данных, предус- ;мотренных исполняемой композицией, ;в регистры чистого и гру- ;бого тона канала В.
SUB 3
DEC HL ;R3
; (FOR 'B'!!!)
DEC HL ;R2
LD B,D
OUT (C),A ;R1
LD B,E
OUTD
DEC A
LD B,D
OUT (C),A ;R0
LD B,E
OUTD
DEFS 11
;Последняя строчка необходима для ;дополнения блока до 97 байт.

Для новой версии редактора PT3.31 by Golden Disk изменения вносятся по адресу LOAD_ADR+1825:

AND 45
;отключаем канал "B"
OUT (C),A
INC L
LD B,D
OUT (C),L
LD B,E
OUTI
INC L
DEFS 3

Думаю, разобраться будет несложно. Лишь отмечу, что данный способ совмещения музыки и эффектов на мой взгляд является простейшим, т.к. используется традиционный плейер и небольшая процедурка выдачи звука в канал. Самая сложная часть - непосредственно создание звука. Точнее, создать-то как раз просто - в том же редакторе, но относительно сложно потом получить данные. Может, только для меня, не спорю. Да, напиши кто-нибудь человеческую программку, я был бы очень рад, но за неимением лучшего... Возможно, у кого-то подобный soft есть, но мне не встречался. В основном, как я понимаю, авторы пишут либо собственные плейеры для мелодий и эффектов (например, так сделали ребята из BITMUNCHERS в своей игрушке KLIDEMINER), либо дико извращаются со стандартными (демоверсия MARIO BROS от OMEGA HACKERS). Не знаю, каким образом поступает Слава Медноногов - не задавался целью узнать. В любом случае, что хотел я рассказал, т.к. до сих пор так нигде и не видел статьи, посвященной данной теме. Опять же, либо все все знают, либо всем все пофиг. Данный материал в свое время постигла та же участь, что и статью об АВТОМАСКЕ. Хочется надеяться, что хоть сейчас, спустя два года, это кто-то прочитает и применит на практике.

Оглавление издания: Rush #01

  • AMIGA NEWS
    Amiga Inc работает над Amiga OS 3.5 с улучшениями, такими как поддержка CD-дисков и PowerPC. Разработка разделена для процессоров M68K и PPC. Выпуск отложен на конец 1999 или начало 2000 года.
  • AMIGA NEWS
    Описание просмотрщика 'Fast JPEG 1.10' для Amiga, с акцентом на его особенности, установку и использование. Подчеркиваются преимущества, такие как быстрая обработка без потери качества, и предоставляются советы пользователям. Читателям предлагается делиться своими опытом использования программ.
  • AMIGA NEWS
    Основы программирования для классической Amiga, обсуждение сложностей и обмен знаниями в кодировании на Amiga. Обзор графических возможностей Amiga и особенностей процессоров. Введение в особенности ассемблера Amiga.
  • AMIGA NEWS
    Обзор событий, связанных с платформой Amiga, с начала до середины 1998 года. Включает новое оборудование, релизы программного обеспечения и заметные сотрудничества компаний. Будущие обновления и разработки запланированы для следующего выпуска.
  • AMIGA NEWS
    Подборка читов и секретов для классических игр Amiga, собранных Postcard Man. Читатели поощряются делиться своими находками в сложных играх. Предоставлены советы и коды уровней для различных игр.
  • AMIGA NEWS
    Обсуждение графических карт Phase-5 и возможностей процессора Permedia 2. Подробности о 2D/3D акселерации и совместимости Permedia 2. Упоминание процессоров GLINT Delta и сравнение цен и доступности.
  • AMIGA NEWS
    Анализ выживания Amiga в 90-х, подчеркивающий усилия сообщества и технологические достижения. Обсуждение аппаратных улучшений и разработки программного обеспечения. Поощрение дальнейшего изучения и освоения платформы Amiga.
  • Spectrum программинг
    Объяснение быстрого метода для 3D графики в реальном времени на ZX Spectrum. Вводятся эффективные техники вращения и деформации 3D объектов. Подчеркиваются улучшения по сравнению с традиционными методами с практическими примерами.
  • Spectrum программинг - Ticklish Jim
    Обсуждение совмещения звуковых эффектов с музыкой для AY-чипа Spectrum. Примеры из разработки 'CSC: Deja Vu' и технические трудности. Содержит практическое руководство и примеры кода.
  • Spectrum программинг
    Обсуждение зеркального отображения байтов и восстановления фона в программировании ZX Spectrum с примерами.
  • Spectrum программинг
    Подробное руководство для системных программистов с практическими советами по созданию эффективного и удобного ПО, включая техники кодирования, совместимость устройств и стратегии тестирования программ.
  • Spectrum программинг
    Совершенные методы кодинга и современные способы работы с графикой для ZX Spectrum. Советы по оптимизации графических процедур и программированию на ассемблере. Полезные рекомендации для программистов по улучшению производительности и эффективности.
  • The End
    Размышления о создании первого номера журнала 'Rush', его целях, аудитории и будущем развитии.
  • ZX-SOFT - Вячеслав Медноногов
    Обновления разработки новой игры 'Черный Ворон II' от Вячеслава Медного, включая изменения в игровом процессе, введение новых заклинаний и улучшения производительности.
  • ZX-SOFT
    Обзор новых возможностей обновленного командера от REAL software для ZX Spectrum, включая управление файлами, автодетекцию и просмотр медиа. Улучшения в работе с текстами, шрифтами и музыкой. Ответы на вопросы о будущих обновлениях.
  • ZX-SOFT
    Дебаты о том, какое демо заслуживало первое место на Funtop'98: Forever от DR или Refresh от XTM. Обсуждения в сообществе демосцены подчеркивают столкновение между техническим мастерством и концептуальной глубиной. Различные мнения отражают эволюцию предпочтений демосцены.
  • Авторы
    Благодарности авторам и партнёрам в создании журнала Rush. Подробные роли каждого автора и сотрудничество. Признание технической поддержки и медийных партнёрств.
  • Виртуальный Спекки
    Обсуждение конвертации графики с PC на Spectrum с мнениями различных экспертов. Описаны техники улучшения качества конверсии и инструменты, такие как Photoshop. Акцент на доработке после конверсии в графических редакторах Spectrum.
  • Виртуальный Спекки
    Обсуждение эмулятора CBSpeccy для ZX-Spectrum на Amiga, выделение его особенностей, мнений сообщества и технической производительности. Критика и похвалы за его эмуляционные возможности, особенно в сравнении с ПК эмуляторами. Рассмотрение возможных улучшений и дебаты в сообществе о обновлениях версий.
  • Виртуальный Спекки
    FAQ по эмуляции ZX-Spectrum на ПК, охватывающий популярные эмуляторы и форматы файлов. Инструкции по использованию различных эмуляторов и управлению типами файлов, такими как Hobeta и TR-DOS. Обсуждение российских ZX-ориентированных серверов и ресурсов для энтузиастов.
  • Вступление
    Вступление к журналу Rush, акцент на креативность, прогрессивную сцену и цель создать превосходный источник информации. Журнал стремится собрать перспективные группы и предложить уникальную перспективу. Основное внимание на содержании и атмосфере, приглашая создателей к сотрудничеству.
  • Вступление - Grunge
    Введение в Rush, новый сценовой журнал для любителей Speccy/Amiga, целью которого является предоставление качественного контента и новостей с поощрением обратной связи от читателей.
  • Интервью - Konex
    Интервью с группой ANTARES после FUNTOP-98. Обсуждение их демонстраций, трудностей и планов на будущее. Взгляд на формирование и динамику группы.
  • Интервью - Kvazar, DUX
    Интервью с Александром Селезневым (KVAZAR), обсуждение его истории с компьютерами, состояния сцены ZX Spectrum и будущих планов.
  • Интервью - Kvazar
    Интервью с витебской группой POWER о демо 'Crazy Love', опыте разработки и будущих проектах.
  • Информацриум
    Исследование CD с эмуляторами для различных платформ, с акцентом на Spectrum. Подробности об организации и разнообразии контента. Заключается инсайтами из коллекции программного обеспечения Spectrum CD-ROM Project.
  • Информацриум
    Подборка интересных и полезных интернет-адресов, связанных с ресурсами Amiga, включая журналы, производителей оборудования и компании-разработчики ПО.
  • Информацриум - Viator
    Обзор существующих и предстоящих изданий о платформе Amiga. Обсуждение доступности и проблем распространения литературы по Amiga. Призыв к сотрудничеству с новыми изданиями.
  • О журнале
    Обсуждение создания многоплатформенного журнала с акцентом на Spectrum, Amiga и ПК. Подчеркивается важность широкого понимания компьютерной сцены. Призыв к профессионализму и адаптации к изменяющимся технологиям.
  • Параллельные миры
    Обзор эволюции ОС Windows и процессоров ПК с 1981 по 2000 год. Вехи развития MS-DOS, Windows, процессоров Intel и конкуренции с AMD и Cyrix. Проблемы совместимости с новыми технологиями процессоров.
  • Параллельные миры
    Обзор моделей Macintosh и их значимость в области дизайна и графики, охватывающий цены и спецификации с 1997-1998 годов. Обсуждение включает эволюцию оборудования Apple, особенно серию PowerMac, и сравнивает новые процессоры G3 с аналогами для ПК. Подчеркивается возрождение Macintosh после кризиса и его продолжающееся влияние на рынок.
  • Развитие Spectrum - Slider
    Статья обсуждает новое графическое расширение для ZX Spectrum, расширяющее палитру цветов без увеличения ресурсных требований. Используя модифицированный сигнал flash, создаются новые цвета без нарушения совместимости с существующим софтом. В статье даются подробности реализации и решения практических вопросов.
  • Развитие Spectrum
    Подключение CDOS-модема к компьютеру 'Компакт-128' через устранение конфликтов порта клавиатуры. Описание аппаратных модификаций для решения проблемы. Решение включает автоматическую блокировку с использованием транзисторного инвертора.
  • Развитие Spectrum - Ars
    Обсуждение разработки AZX-Monstrum 512K, его аппаратной совместимости, вариантов процессора и потенциальных улучшений в графике и ОС.
  • Развитие SPECTRUM
    Обсуждение новой компьютерной платформы ZX2000 от Клайва Синклера, предназначенной для превосходства над ПК за счет скорости, доступности и эффективности батареи.
  • Развитие Spectrum - Андрей Савичев
    Рассмотрение эволюции и продолжающейся актуальности процессора Z80, и его роли во встроенных системах. Сравнение Z80 с его преемниками, выделение таких преимуществ, как энергоэффективность и улучшенные команды. Обзор интегрированных процессоров на базе Z80 и их периферийных устройств.
  • Реклама
    Статья представляет собой рекламу продукции Scorpion, включая оборудование для ZX Spectrum и программное обеспечение для Amiga, с подробностями цен и заказов.
  • Реклама
    Коллекция объявлений о продаже оборудования и программного обеспечения для Amiga и ZX Spectrum, с контактной информацией продавцов и подробностями о подписке на новый журнал Amiga.
  • Реклама
    Реклама музыкальной платы General Sound от X-TRADE. Содержит цены, технические характеристики и инструкции по покупке. Включает FAQ и информацию о совместимости.
  • Смысл без смысла - Viator
    Философские размышления об экзистенциализме, бессмертии и человеческой судьбе. Повествование переплетается с историями о честолюбии, поиске вечной жизни и утопическом падении. Сочетание интроспекции и спекулятивной фантастики.
  • Сцена vs профессионалы
    Исследование творчества демосцены в сравнении с коммерческой разработкой игр. Обсуждение потенциала создания профессиональных программ участниками сцены. Призыв к сотрудничеству с ведущими группами сцены.
  • Сценохрония - Андрей Савичев
    Размышления о неизменной привлекательности ZX Spectrum, устойчивости его сообщества и возможном возрождении в России.
  • Сценохрония
    Обзор деятельности группы Rush, включая прошлые проекты, текущие начинания и будущие планы, с акцентом на разработку ПО и игр.
  • Сценохрония
    Статья обсуждает различные новости сцены ZX Spectrum, включая релизы игр, демопати и обновления от разработчиков и команд.
  • Сценохрония
    Статья обсуждает международный фестиваль компьютерного искусства FUNTOP'98, прошедший в Москве, подчеркивая ключевые события, заметных участников и различные конкурсы, проведенные в ходе мероприятия.
  • Сценохрония
    Обсуждение развития сцены Amiga через сотрудничество, решение проблемы изоляции пользователей и расширение сети.
  • Управление оболочкой
    Статья описывает управление оболочкой для ZX Spectrum и Amiga, включая клавиши и функции навигации. Упоминаются особенности работы на Amiga с PAL монитором и предоставляется контакт для поддержки. Также отмечено, что текстовые файлы имеют стандартную MS-DOS кодировку.