Deja Vu
#05
31 мая 1998 |
|
Тема - Теория журналостроения.
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 вы ощу- тите великую пользу журналостроения и бу- дете себя чувствовать прекрасно, по край- ней мере до утра... ;)
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября