Deja Vu #05: Теория Журналостроения: Полное Руководство для ZX Spectrum

SoundTrack: (FROSTBITTEN) BY DX-69 020498  
__________________________________________

(C) dAn!!L/PGC/BDA
__________________________________________

ТЕОРИЯ ЖУРНАЛОСТРОЕНИЯ

Эта статья предназначена тем, кто желает попробовать выпускать собственный журнал, но не знает с чего начать...
Перво-наперво нужно сильно "загореться", ибо без желания, сделать классный журнал просто невозможно. Сразу необходимо отставить финансовую сторону на второй план и фанатично взяться за дело! Дело это не столь трудное, сколько кропотливое. И, прежде чем "вселиться" в любимый ассемблер, нужно сесть и подумать над некоторыми аспектами этого дела. Можно даже на бумаге, для себя, расписать каким должен быть "мой" журнал, все до мелочей.
Не будем здесь касаться информационной стороны, а остановимся чисто на технической.
Для более глубокого понимания дела я немного приоткрою структуру внутренностей журнала DEJA VU, а читатель, мысля, уже будет вникать в суть дела и "мотать на ус", а где-то, может быть, его осенит идея и тогда, возможно, родится проект нового издания, которое несомненно будет рулезным.
Итак, начнем...

Интерфейс

Объяснять, что это такое, наверное, нет смысла. Главное - понять, что здесь нужно делать не как хочешь ты, а как хочет юзер! И даже больше. Нужно пытаться удивить юзера и создать такую "изюминку", которую он полюбит, зауважает и жить без нее не сможет! Не стоит объяснять, что чем больше девайсов будет опрашиваться, тем лучше. Причем, сразу необходимо отказаться от выбора управления. Все должно опрашиваться параллельно: джойстики, клавиатура, мышь и т.д. Не забываем тестировать "железо" перед опросом мыши на наличие оного девайса.
Обязательно обратить внимание на, так называемый, "автоповтор" функции при нажатии и не отпускании FIRE. Поясняю, прежде чем выполнить выбранную пользователем функцию, проверьте, а отпустил ли юзер клавишу FIRE? Надеюсь понятно, что я имел ввиду?

Память (RAM)

Возникают два вопроса: во-первых, объем памяти, на которую рассчитывать оболочку; во-вторых, распределение памяти.
Если вы поддержите 48kb, то вас никто ругать не будет, но и разогнаться до каких-то высот просто невозможно. 128kb - стандартная конфигурация, которую можно и нужно поддерживать! Тем более, что это фирменный стандарт! Если вы чувствуете в себе силы поддержать память > 128kb, то, конечно, это хорошо и это надо делать, будь то RAM-драйв, или просто для хранения жизненно необходимых данных.
Опять же, избавьте юзера от выбора нужной ему конфигурации. Все тестируется автоматически и на теневом уровне, незаметно для пользователя.
Распределяйте память таким образом, чтобы можно было хранить текст максимальной длины в непрерывном виде!
Пример из DEJA VU:

В 48-ой с адреса #6000 "сидят" данные и объектный код до адреса 38000. С 38000 до #FFFF содержится буфер, в который грузится текст (без графики).
Музыка - BANK 1. Графика - BANK'и 3, 4, 6. В BANK'е 7 - стандартно 2-ой экран, далее данные: заставка, спрайты, блочная графика и т.д.
Время-критичные процедуры размещайте с адреса #8000 и ниже. Лоадер, текстовые сообщения, фонт, переменные и т.д. размещайте до адреса #8000!
Не забываем про режим IM2, вектор обязательно должен находиться в диапазоне от #80 до #BF. Также помним про 257 байтов для машин с нестабильной шиной данных.
В расширенной памяти "сидят" различные "раскрюнченные" процедуры и графика (фреймовый скроллер, screen saver, спрайты стрелок и т.д.).

Формат текста

Стандартная ГОСТ - альтернативная кодировка с "вживленными" управляющими кодами. Управление цветом (код 16), далее байт атрибутов; спрайты (код 15), далее параметры спрайта: координаты, длина и т.д. При поддержке сохранения текста на диск не забываем его "высушивать".

Музыка

Как душе угодно, но, если вы будете всю музыку компилировать в PT 3.01, то достаточно использовать один плейер для любого музона STP, PT, ST! При подгрузке текста музыку "глушите". И вообще, дайте пользователю возможность включать и выключать музыку! Новая мода - это возможность выбора любой мелодии и отсутствие привязки музыки к конкретному тексту. Кстати, если у вас маловато музыки, а информации достаточно, то можно выпустить журнал хоть с 3-мя melodies.
Как же это делается? А очень просто! Есть некая процедура (назовем ее MUZNEXT), при ее вызове грузится следующий музон в соответствии с табличкой (причем, если музыка отключена, то грузить и не надо - зачем время тратить и драйв изнашивать;)). А табличка, примерно, такая:

SONG1 DEFB SEC1 TRK1 SIZE1
SONG2 DEFB SEC2 TRK2 SIZE2
SONG3 DEFB SEC3 TRK3 SIZE3
DEFB 255 ;маркер конца таблицы

Подставляем данные в соответствии с каталогом диска: трек, сектор, длина.

LOADER

Главное, чтобы грузилось! Но turbo-loader все же приятней!
Обязательно инсталлируем лоадер на дисковод, с которого запустили журнал (A, B, C, D). И еще, знайте, что не все лоадеры работают в режиме турбо!
Если опрос ошибок TR-DOS не производится, то хотя бы постарайтесь, чтобы при нажатии BREAK или при отсутствии диска в дисководе журнал не повис!

VIEWER

80% успеха! Самое главное - как можно быстрее. Уменьшайте любыми способами всякие мерцания и подергивания. И уж совсем ЛАЖА - это когда в 128 режиме текст пропечатывается полностью на глазах у юзера! Включайте альтернативный экран. Если интерфейс по принципу "стрелка", то позаботьтесь об опросе "горячих" клавиш!

FONT

Читабельный! 32, а лучше 42 символа в строке. 64 символа - в исключительных случаях и только для листингов. Избегайте всяких извращений в фонте (готический, наклонный, пропись).

Упаковка данных

Чем сильнее закрюнчим, тем больше "впихнем" на диск - это и козе понятно! Найдите такой упаковщик, который позволяет сохранять сжатые файлы без депакера. Храня данные без депакера, вы, во-первых, усложняете взлом; во-вторых, экономите около 1 сектора на каждый файл (а их у вас много)! Также смотрите на время распаковки - чем быстрее, тем лучше. На Scorpion'ах можно включать турбо: LD A,#7F; IN A,(#FD). Отключается так: LD A,#1F; IN A,(#FD).

zE Оптимизация

Что такое оптимальный код? Это, когда код занимает мало места и быстро работает. Используйте таблички. Например, нет необходимости для каждого текста писать свой лоадер! Делаем так:

CALL LOADER
TAB DEFB SEC, TRK ;трек и сектор для текста
DEFB SEC, TRK ;трек и сектор для музыки
DEFB 13 ;банк
DEFB SEC, TRK ;трек и сектор графики
DEFB 14 ;банк
DEFB SEC, TRK ;трек и сектор графики
DEFB 255 ;маркер
... ;продолжение программы

Поясняю. Вызываем loader, на стеке откладывается адрес возврата равный адресу TAB. Первым делом снимаем адрес со стека и в соответствии с табличкой грузим файлы, пока не доберемся до маркера. Кстати, BANK для текста всегда #10, для музыки - #11, поэтому в табличке можно не указывать, лоадер сам "знает" куда их грузить.
Ищем адрес по которому находится 255 и передаем управление на ADR+1 (JP (IX+0) или JP (HL)). Таким образом можно, например, и окна рисовать. Вызываем WINDOW, а со стека снимаем адрес по которому хранятся координаты и текст на печать!
Не тратьтесь на задание переменной:

Стандартно Оптимально

BYTE DEFB 0 MET LD A,0
LD A,(BYTE) LD A,B
LD A,B LD (MET+1),A
LD (BYTE),A ...
...

И вообще, дайте себе установку на оптимизацию, думайте, как бы еще сэкономить! Ведь, как гласит народная мудрость - любую процедурку можно сократить, как минимум на 1 байт.

Ловля глюков!

Еще одна народная мудрость гласит, что в любой программе есть глюк. От себя добавлю, если глюков нет, то сама программа есть большой глюк! И еще мысль, каждый выловленный глюк порождает два других, но это уже спорно!
Что делать с глюками? Здесь гораздо интересней, чем на рыбалке! Сначала глюк надо искать, а потом его ловить. Хорошо будет "клевать", если ловить не на той машине, на которой писалась программа. Например, пишешь на Scorp'е - лови на PROFI; пишешь на PROFI - лови на Pentagon'е и т.д.
Если глюк найден, а выловить его не удается, то можно попробовать обойти его программно, хотя это может породить новые глюки!

RELEASE!

Это, конечно, самое приятное в журнало-мейкерстве! Когда журнал готов и все глюки выловлены, самое время собраться всем, кто принимал участие (в любом смысле этого слова). Если зимой, то на квартире; летом - на природе. Хорошенько затариться всем необходимым и осуществить самым диким образом RELEASE! Если это первый номер, то сие называется презентация! При этом процессе нужно произносить приятные слова в свой адрес, т.к. это благотворно влияет на пищеварение. И только после RELEASE вы ощутите великую пользу журналостроения и будете себя чувствовать прекрасно, по крайней мере до утра... ;)

Оглавление издания: Deja Vu #05

  • Аперативчик - Max
    Подробные инструкции по управлению интерфейсом DEJA VU, выделены разные методы ввода и команды навигации. Объяснение новых и старых интерфейсов для улучшенного пользовательского опыта. Обсуждение дополнительных функций, таких как фреймовый скроллинг и управление музыкой.
  • Аперативчик - Max
    Обсуждение поддержки машин с памятью более 128к, что привело к наличию отдельных оболочек для систем 128к и 256к. Тестирование проводилось в основном на Scorpion и Profi, предполагается работа на других моделях. Статья содержит инструкции по распаковке исходников и информацию об использовании улучшенных алгоритмов.
  • Тема - M.M.A
    Статья исследует теорию оцифровки звука на ZX Spectrum, акцентируя внимание на процессах дискретизации и квантования. Она предлагает практические советы по конвертации звуковых файлов с использованием определенного оборудования и программного обеспечения. Также даются методы улучшения качества звука с учетом аппаратных ограничений.
  • Тема
    Статья обсуждает инициативу Save Our Scene, направленную на объединение пользователей и разработчиков Spectrum для продвижения дистрибуции ПО и улучшения развития сцены.
  • Устав Ассоциации Amazing Soft Making
    Обсуждение устава ассоциации Amazing Soft Making, в котором изложены ее цели, критерии членства и принципы функционирования.
  • Теория Журналостроения
    Статья содержит подробное руководство для начинающих создателей журналов, сосредотачиваясь на технических аспектах, таких как дизайн интерфейса, управление памятью, форматирование текста и интеграция музыки для публикаций на ZX Spectrum.
  • Капля припоя
    Статья представляет личный опыт покупки и использования устройства General Sound для ZX Spectrum, описывая установку и качество звука. Обсуждаются первоначальные проблемы и восхищение улучшенным звуковым сопровождением в совместимых играх. Автор призывает к дальнейшей адаптации программного обеспечения для устройства и размышляет о мультимедийных возможностях с одновременным использованием оборудования.
  • Капля припоя
    Статья описывает возможности Sound Forge 4.0c для профессиональной обработки звука на ПК, подчеркивая его обширные функции, такие как редактирование звука, эффекты и инструменты восстановления.
  • SOFTWARE
    Статья рассматривает последние разработки программного обеспечения для ZX Spectrum из Самары, включая обновления MAXSOFT SCREEN PACKER, File Commander и новые приложения, такие как S-Terminal.
  • SOFTWARE - Card!nal
    Обзор и прохождение логической графической приключенческой игры 'Операция Р.Р.' с подробными инструкциями по уровням. Обсуждение элементов игры, таких как выбор музыки и графический дизайн. Упоминается участие нового кодера MAX/CYBERAX/BINARY DIMENSION.
  • SOFTWARE
    Обсуждение текущего состояния и эволюции демосцены, подчеркивающее рост 4K интро и предстоящие конкурсы, такие как FUNTOP'98.
  • CODING
    Статья обсуждает техники кодирования на ассемблере для оптимизации прокрутки экрана на ZX Spectrum, включает примеры кода и анализ производительности.
  • CODING - RLA
    Статья рассматривает методы манипуляции со стеком при прерываниях второго рода для графических эффектов на ZX Spectrum. Обсуждаются решения для сохранения целостности данных, когда прерывания нарушают графические операции. Приведены практические примеры для эффективного решения проблем со стеком.
  • КОДИРОВАНИЕ
    Статья описывает паковщик MS-PACK и его DEPACKER, детализируя сценарии использования и предоставляя примеры кода на BASIC и ассемблере для работы с упакованными файлами. Подчеркивается оптимизация производительности, позволяющая распаковку с включенными прерываниями и отделение DEPACKER от упакованных файлов. Дополнительно включены идеи о техниках программирования для загрузки и выполнения BASIC-файлов на ZX Spectrum.
  • КОДИРОВАНИЕ
    Статья обсуждает различные техники кодирования для ZX Spectrum, сосредоточиваясь на выводе спрайтов, алгоритмах поворота и методах оптимизации для повышения производительности.
  • ДРУГОЙ МИР
    Обсуждение эволюции мультимедийных технологий и их влияния на различные области, включая образование и развлечения. Охватываются достижения в аппаратном и программном обеспечении, которые способствовали интеграции аудио, видео и текста. Статья отражает прошлые достижения и предполагает будущее мультимедийных систем.
  • АНО ДРУГОЙ МИР
    Сравнение систем PC и Amiga, подчеркивающее производительность, стоимость программного обеспечения и пользовательский опыт с мультимедийными возможностями.
  • Доска почета
    Интервью с PROGRESS обсуждает их творческий путь на ZX Spectrum и AMIGA, касаясь проблем в демомейкинге и текущего состояния сцены.
  • Доска почета
    Статья описывает деятельность и будущие проекты команды Eternity Industry из Коврова, включая успешные релизы и сотрудничество с другими группами.
  • Доска почета
    Обсуждение фестиваля Artcomp'98, сосредоточенное на его формате участия по почте и правилах для различных конкурсов, включая демо, графику и музыку.
  • Доска почета
    Статья представляет собой глоссарий терминов, используемых в демосцене, объясняя роли, такие как музыкант, программист и художник, а также различные типы демо и эффектов. Она служит полезным ресурсом для понимания терминологии и динамики сообщества. Это описание, направленное на просвещение читателей о жаргоне демосцены.
  • Доска почета
    Статья обсуждает проблемы с поддержкой мыши в различных изданиях ZX Spectrum и разочарование пользователей при столкновении с несовместимостями. Критика разработчиков за несоблюдение стандартов приводит к плохому пользовательскому опыту. Автор подчеркивает важность постоянного улучшения программного обеспечения для сообщества ZX Spectrum.
  • Доска почета
    Статья обсуждает процесс создания триколорных изображений для ZX Spectrum с использованием Photoshop и упрощенного подхода. Описывается, как разделить изображение на RGB-каналы и конвертировать их для использования на Spectrum. Также даны советы по управлению файлами для достижения оптимальных результатов.
  • Доска почета
    Статья обсуждает сравнение и перспективы различных компьютерных систем, акцентируя внимание на сильных сторонах AMIGA по сравнению с PC и призывая ценить все машины.
  • Семь и 1/2
    Статья обсуждает юмористические абсурдности и особенности военного обучения и академической жизни, сочетая сатиру с реальными анекдотами и остроумными наблюдениями.
  • Семь и 1/2
    Статья представляет собой сатирический мануал по методологиям программирования, высмеивая жесткость формальных практик программирования и выступая за более креативный подход к коду.
  • Семь и 1/2
    Инструкция по технике безопасного секса, включая рекомендации по допуску, подготовке, действиям во время и после сеанса, а также действиям в аварийных ситуациях.
  • Семь и 1/2
    Статья обсуждает призыв к талантливому художнику в Краснодаре для группы ZX Spectrum, поднимает вопросы об unethical практике Scorpion по правам на софт и критикует видеообзор E'97.
  • Семь и 1/2
    Статья 'Семь и 1/2' описывает забавное приключение пикника команды редакторов Deja Vu, подчеркивая их товарищество и неудачи при приготовлении шашлыка.
  • Проба пера
    Статья представляет собой юмористическое описание вымышленных приключений Винни-Пуха в взаимодействии с компьютерами и друзьями, обсуждая абсурдность технологий и повседневной жизни.
  • Проба пера
    Статья посвящена новому разделу журнала Deja Vu, посвященному литературе фэнтези и фантастики, включая обзоры книг и участие читателей в создании контента.
  • Реклама
    Статья является рекламной секцией журнала Deja Vu #05, предлагая сотрудничество с дизайнерами и музыкантами для будущих выпусков, а также предлагая различные программное обеспечение и оборудование для ZX Spectrum.
  • Новости
    Статья объявляет о запуске нового журнала AMIGA RULES, посвященного компьютеру AMIGA, на фоне нехватки качественных русскоязычных изданий. Он направлен на предоставление информации о программировании, аппаратном обеспечении, программном обеспечении и играх, а также на формирование сообщества среди поклонников AMIGA. Журнал будет включать материалы от читателей и регулярные обновления о сцене AMIGA.