Как написать отстойное демо на BASIC
Автор: Pandagirl
Ингредиенты (*можно достать в Prism или Alchemist)
- Spectrum 128 (только не +3, если есть выбор)
- Tasword (или аналогичный текстовый процессор)
- *Soundtracker
- *Soundtracker Compiler
- *Компрессор экранов Mikropol
- *Uniscroll версии 2.1
- Art Studio или похожий графический пакет
- Загрузчик / управляющая программа на BASIC (прилагается)
Сначала придумайте хорошую идею. Лично я с этим обычно не парюсь, но хорошая идея может помочь паршивому демо дотянуть хотя бы до середнячка — народ хотя бы подумает, что его стоит загрузить.
В вашем первом демо не будет кучи летающих спрайтов или навороченных эффектов (уж поверьте мне на слово, ладно?). Давайте остановимся на простом формате: одна картинка / одна мелодия / один скроллер — в точности как в моих первых двух демках. Мораль тут в том, что если ваше второе демо ничем не отличается от первого, то на кой хрен вообще было браться? Я это простое жизненное правило проигнорировала, но мне простительно, потому что я так сказала.
Рисовать не умеете от слова «совсем»? Если вы уж совсем безнадёжны, можно сдернуть экран из какой-нибудь игры при помощи MULTIFACE, но это уже совсем последнее дело и ковыряние на дне и без того выскобленной бочки. Я сама художник никакой, но делаю так: беру иллюстрацию из журнала и расчерчиваю её сеткой на квадраты по 1 см. Затем такую же сетку можно нарисовать в арт-редакторе и переносить пиксели квадратик за квадратиком. Именно так мы с вонючим Fudgepacker радуем ваши глазки, и результат получается весьма недурным. Чем больше вы тренируетесь, тем лучше будут ваши работы.
Оцифрованные экраны тоже могут выглядеть вполне прилично, но постарайтесь не брать то, что уже сотни раз светилось в других демах! Оставьте пустое место там, где пойдет бегущая строка — высоты в три знакоместа обычно хватает за глаза. Помните: какие цветовые атрибуты останутся на вашем готовом экране, такими цветами и будет скроллиться текст, так что постарайтесь не оставлять черные чернила на черной бумаге, ясно? Господи, ну и народ пошел...
Вы, конечно, можете оставить экран стандартным файлом размером 6912 байт, но это еще больший отстой, чем игра NARC. Компрессор экранов Mikropol сожмет вашу картинку в аккуратный компактный кусок кода. Пользоваться им элементарно, так что сохраните полученный код под понятным именем (попробуйте SCREEN!). Спрячьте его в надежное место на кассету с надписью «готовые куски всякого говна», чтобы потом не искать. В принципе, можно было бы скинуть файл на 6912 байт в RAM-диск или куда еще, но зачем мучиться?
Можно было бы забабахать немое демо, где только бегущая строка радует зрителя, но это уже ни в какие ворота. У меня ушла куча времени на то, чтобы заставить Soundtracker издавать звуки, хотя бы отдаленно напоминающие музыку. Объяснять, как им пользоваться, я не стану — иначе проторчу тут всю гребаную ночь. Раз уж это ваша первая проба пера на Speccy, почему бы просто не стянуть чужой трек? У Alchemist полно файлов на выбор. Можно даже попробовать сделать ремикс. Когда ни хрена не понимаешь, что вообще делаешь в Soundtracker, иногда получаются на редкость забористые треки!
Компилятор аккуратно все упакует, но вот тут-то вам и пригодятся карандаш с бумагой. Музыкальный код надо сохранять по строго определенному адресу, так что пришло время заняться распределением памяти!
BASIC-программа, приложенная к этой занудной статье, запустит все ваши наработки, вам нужно лишь загрузить их по правильным адресам! В нашем примере музыкальный код будет загружаться по адресу 60000. Так что сохраняйте откомпилированную музыку (да-да, вы угадали) с адреса 60000. Запишите на бумажку и всю остальную хрень, особенно ДЛИНУ вашего кода. Если лень — валите нафиг прямо сейчас и займитесь чем-нибудь менее утомительным.
Через минуту по телику начнется сериал «Bottom», но я пока продолжу.
Есть у вас Tasword или другой текстовый редактор? Должен быть. В нем вы будете набивать текст для скроллера. Если вас в банде двое, то один может писать ПРОПИСНЫМИ буквами, а второй — строчными. Когда дойдете до мелких понтов вроде собственного шрифта, это будет выглядеть так, будто у вас работают два разных шрифта! Постарайтесь написать хоть что-то интересное, а не чушь вроде «Я не знаю, что сказать». Если вы унылый зануда — ВРИТЕ! Сочиняйте, передирайте порнушные тексты из своих задроченных журналов, только не пишите вышеупомянутый бред. Вы даже не представляете, как убого это смотрится! И выключите к чертям перенос строк (word wrap). Сохраните текст под именем TEXT (это просто совет, можете хоть TwatBandit назвать, мне плевать). Обязательно запишите длину текста. В нашем примере критически важно, чтобы он не превышал 9999 байт, иначе вы затрете в памяти музыкальный код. Точнее говоря, в нашем примере текст просто оборвется на адресе 60000.
Управлять всем этим добром будет утилита Uniscroll от Vision — отличная процедура бегущей строки. В файле справки к ней полно инфы о текстовых эффектах, но не будем усложнять. Код располагается по адресу 33280 или около того. Чтобы жизнь казалась еще проще, мы загрузим каждый кусок демо отдельным блоком. А вот второе свое демо уже сможете спланировать так, чтобы все куски кода шли друг за другом, и сохранить все целиком как один большой кусок чистого байтового секса.
Итак, у вас на руках три фрагмента кода: картинка, музыка и текст, плюс сам код Uniscroll — итого четыре. Теперь нужно загнать каждый кусок в Speccy обычными командами загрузки. Делайте это в режиме прямого ввода (то есть без дурацких номеров строк, тупицы вы эдакие):
CLEAR 33279: LOAD "" CODE 33280
LOAD "SCREEN" CODE 40000
LOAD "TEXT" CODE 50000
LOAD "MUSIC" CODE 60000
А теперь то, благодаря чему все это заведется — листинг на BASIC. Да-да, далеко не все PD-демы представляют собой вылизанный машинный код, вызывающий мгновенный оргазм:
10 REM your crap demo name
20 CLEAR 33279: LOAD "" CODE 33280
30 LOAD "" CODE 40000: LOAD "" CODE 50000: LOAD "" CODE 60000
40 REM Uniscroll pokes
50 POKE 33280,pixels from top of screen (0-175)
60 POKE 33281,0: POKE 33282,60: REM points to standard font
70 POKE 33283,80: POKE 33284,195: REM points to TEXT at 50000
80 POKE 33285,1: REM split text option. 1 = normal 2-4 = split
90 POKE 33286,speed (values of 1-4)
100 POKE 33287,8: REM width of each character
110 POKE 33291,30: REM width of scrolling 'box'. Use even no's
120 POKE 33292,1: REM x position of squares in scrolling 'box'
130 POKE 33293,8: REM height of character
140 REM Display screen picture
150 RANDOMIZE USR 40000
160 REM Scroll/Music interupt routine
170 RANDOMIZE USR 33297: RANDOMIZE USR 60000
180 RANDOMIZE USR 33402: RANDOMIZE USR 60006: PAUSE 1: GOTO 180
200 SAVE "Demo name" LINE 10: SAVE "SCREEN" CODE 40000,len:
SAVE "TEXT" CODE 50000,len: SAVE "MUSIC" CODE 60000,len
Те, у кого есть демки Popsnog и Vaseline, могут увидеть эту систему в действии! Довольно убого, да? Зато работает, а делать демки — чертовски приятное чувство. Чтобы сохранить демо, просто наберите GOTO 200 и нажимайте кнопки по запросу системы, счастливчики. Только не забудьте подставить реальную длину каждого блока вместо слова len, договорились? А теперь пошли вон и займитесь делом. Помните, детки: все написано на BASIC, так что подобное под силу каждому!!
В СЛЕДУЮЩЕМ ВЫПУСКЕ:
- Добавление нестандартного шрифта
- Добавление загрузочной заставки
- Переход к другим частям по нажатию клавиш
- Склейка кусков кода
КОНЕЦ
Поделитесь вашим мнением о статье