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-мя ме-
лодиями.
Как же это делается? А очень просто!
Есть некая процедура (назовем ее MUZNEXT),
при ее вызове грузится следующий музон в
соответствии с табличкой ( причем,если му-
зыка отключена, то грузить и не надо - за-
чем время тратить и драйв изнашивать;)). А
табличка, примерно, такая:
SONG1 DEFB SEC1 TRK1 SIZE1
SONG2 DEFB SEC2 TRK2 SIZE2
SONG3 DEFB SEC3 TRK3 SIZE3
DEFB 255 ;маркер конца таблицы
Подставляем данные в соответствии с ка-
талогом диска: трек, сектор, длина.
LOADER
Главное, чтобы грузилось! Но turbo-loa-
der все же приятней!
Обязательно инсталлируем лоадер на дис-
ковод, с которого запустили журнал (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 вы ощу-
тите великую пользу журналостроения и бу-
дете себя чувствовать прекрасно, по край-
ней мере до утра... ;)