Deja Vu #05
31 мая 1998

Тема - DIGITAL звук, как он есть (проигрыватель .wav файлов).

SoundTrack: SUNNY BY SECTOR/SERIOUS'97 (!)
__________________________________________


(C) M.M.A aka UnBELIEVER/SPEED CO./XTM'98
__________________________________________


  ДИСКРЕТИЗАЦИЯ НЕПРЕРЫВНОГО ВО ВРЕМЕНИ
         ГАРМОНИЧЕСКОГО КОЛЕБАНИЯ


                   или

         DIGITAL ЗВУК, КАК ОН ЕСТЬ


                 -------------------------
                 Это не лекция и даже
                               не практика
                 Это студенты пьют
                            пиво "БАЛТИКА"
                 -------------------------
                       Вместо эпиграфа....

                  * * *


   За последнее время на наши головы  сва-
лилось огромное количество игр, demo, жур-
налов и даже системных программ, в которых
активно  используется графика  конвертиро-
ванная с других платформ (AMMY/PC). Ни кто
уже не удивляется,увидев на экране "скани-
рованные" 100 рублей, рожу автора програм-
мы или даже голую задницу (если бы  только
задницу!). Однако, слышимая изредка из ди-
намиков вашего звукового  девайса  челове-
ческая речь, фрагменты известных песен или
(опять же) просто похотливые женские вздо-
хи вызывают интерес и иногда  даже удивле-
ние.

  Как это они звук в компутер засунули?

А вот как...

   Для начала немного теории. Не буду пре-
тендовать на правду в последней инстанции,
но изложеное ниже действительно имеет мес-
то. Данным вещам вас  вполне могут обучить
в ВУЗ'е, на предметах ТЕОРИЯ ПЕРЕДАЧИ СИГ-
НАЛОВ,ЦИФРОВАЯ ОБРАБОТКА СИГНАЛОВ и им по-
добным.  Я же хочу изложить основныю суть,
причем, кратко и доступно. Надеюсь умудре-
ные высшим образованием товарищи не сочтут
этот упрощенный вариант за ламерство...
   Итак, у нас есть сигнал. Что это такое-
дикий  вой  Кинг-Конга  или пламенная речь
В.В.Жириновского - абсолютно не важно. Это
могут  быть  даже 220 вольт из разетки при
определенном подходе. Чтобы не быть голос-
ловным, я  нарисовал  кусок  неопознанного
сигнала на рисунке под  номером  один. Оси
координат-это время (по горизонтали) и ам-
плитуда (по вертикали). Тем, кто не понял,
разъясняю;если это голос, то он изменяется
во времени и в каждый  из  моментов  имеет
некоторую мгновенную  амплитуду (проще го-
воря  громкость). Процесс  перевода  этого
звука на "язык цифр" понятный машине  зак-
лючается в проведении двух операций - дис-
кретизация и квантование.

└√     л
 ┴√     л
@┬√     л
`├√     л
А─√     л
а┼√     л
└╞√     л
р╟√     л
╔√     л
 ╩√     л
@╦√     л
`╠√     л

   Для дискретизации нам нужно разбить ось
времени  на  равные участки с определенным
шагом.  Шаг дискретизации выбираеться про-
извольно и, как вы понимаете, чем он боль-
ше, тем качественнее  будет  звук. Почему?
Потому, что после разбиения оси времени мы
начинаем считать, что между двумя соседни-
ми штрихами(рис.2) наш сигнал имеет посто-
янное значение, то есть на графике он дол-
жен быть горизонтальной линией. Как многие
наверное уже поняли, шаг дискретизации это
и есть в некотором смысле те самые 4,8,16,
22,44 КГц.
   Теперь, из каждой точки (взятой с  выб-
ранным шагом) на оси времени,мы можем про-
вести прямую и, опустив перпендикуляр   на
ось амплитуд из точки пересечения прямой и
графика,получить некоторое значение ампли-
туды сигнала в данный момент времени.
   Однако, чтобы узнать значение амплитуды
в данный момент времени,нужно ось этой са-
мой  амплитуды разметить - разбить с неко-
торым  шагом,  как и в случае со временем.
Этот процесс по научному называется  кван-
тованием. Не надо быть RST#7, чтобы понять
всю  важность  того, чтобы шаг квантования
был  как  можно  меньшим  и  следовательно
уровней было как можно больше.
   Сравните рисунки 3 и 4. На третьем все-
го семь уровней квантования и график  (под
графиком  сигнала) состоит из крупных сту-
пенек.  На четвертом уровней уже 16 и сту-
пеньки  (если  их  провести) стали меньше,
более приближаясь к оригиналу.

А═√      л
а╬√      л
└╧√      л
р╨√      л
╥√      л
 ╙√      л
@╘√      л
`╒√      л
А╓√      л
а╫√      л
└╪√      л
р┘√      л

   Кстати,расстояние от "ступеньки" до ре-
альной точки на графике,т.е. разница "нас-
тоящего" значения сигнала в этой  точке, и
его квантованного значения называется  шу-
мом  квантования. В большинстве своем, все
то шипение, которое слышно из динамиков во
время воспроизведения оцифровки и есть шум
квантования, образовавшийся на этапе полу-
чения оцифровки. Логично предположить, что
при стремлении шага дискретизации к  нулю,
а числа уровней квантования к  бескоечнос-
ти, шум исчезает полностью.
   Вот в принципе и вся теория.Таким обра-
зом, после преобразований у нас получается
массив мгновенных значений амплитуды(гром-
кости) сигнала в определенные моменты вре-
мени. Как же подобрать параметры дискрети-
зации и квантования, так, чтобы  звук  был
более реальным и максимально  соответство-
вал оригиналу?
   Оптимальным является дискретизация сиг-
нала с частотой 44КГц. Откуда берется  это
число?  Есть  такая теорема  Котельникова,
которая сложна и одновременно проста. Так
вот, она (если немного  подумать)  говорит
нам, что для полного восстановления сигна-
ла  нужно дискретизировать  его с частотой
в два раза большей, чем та,в которой спек-
тральная плотность сигнала отлична от  ну-
ля. Человеческое ухо воспринимает как звук
колебания  от 2Гц до 20КГц, то есть диапа-
зон в 20КГц. Вот его то мы и умножаем на 2
получая где-то 40-44KГц.
   Достижима ли такая скорость воспроизве-
дения на SPECCY? Конечно нет! Все  то, что
мы слышим (DIGITAL SOUND) в многочисленных
демках  и  специализированных  музыкальных
редакторах,  в   основном,  имеет  частоту
4-8КГц. В редких случаях 15-16КГц (одна из
мелодий  на E'97 MUSIC COMPO) и даже 22КГц
(ZY-ZY и ACTION by VAV). В качестве экспе-
ремента  самарскому  программисту MONSTR'у
из SAGE GROUP удавалось достичь таких ско-
ростей  проигрывания  звука, когда частота
оцифровки  может  достигать  30КГц  и  это
практически   предел   возможностей  стан-
дартного  Z80A  3.5МГц.  Однако,  при всех
этих достижениях, народ продолжает перего-
нять звук преимущественно с частотой 8КГц.
В чем же порылась собака?
   А дело в том,что как было описано выше,
кроме  частоты дискретизации есть еще один
параметр - число уровней квантования. Без-
мерно увеличивая один из этих параметров и
не изменяя другой,координального улучшения
качества мы не получим!
   Число уровней квантования принято изме-
рять в битах на отсчет, например, фраза "у
этой карточки пятибитовый звук"  означает,
что данное устройство может  воспроизвести
звук квантованный на 32 уровня(%11111 = 31
+ 1).


A что же SPECTRUM?

    1bit - 2   уровня    - beeper
    4bit - 16  уровней   - AY-CHIP
    7bit - 128 уровней   - ряд COVOX'ов
    8bit - 256 уровней   - SOUNDRIVE

   Таким образом,если шаг дискретизации мы
можем  выбрать  в  широком  пределе (прог-
раммно), то число уровней в нашей оцифров-
ке  неизменно  (аппаратно)  и изменять его
можно только вниз (на COVOX'е слушать 1bit
sound).  Теперь,  я думаю, самые сообрази-
тельные  поняли,  что звук для SOUNDRIVE'а
занимающий  10  секунд  на часах, в памяти
компьютера  съест  ни много ни мало - 10*X
КГц, где X частота.
   Конечно  же, хочется зацифровать  такой
звучек на 22KHZ (тем более, что  никто  не
мешает!), но в памяти это скушает 220KБ!!!
Да  и сами устройства играющие больше 4bit
есть  далеко  не  у всех - стандарт все же
сопроцессор!  Изложенные  ниже конвертор и
проигрыватель ориентированны именно на не-
го.
   Как же  получить  оцифрованный  вариант
желаемого звука? Для этого вам понадобится
устройство называемое АЦП - аналогово циф-
ровой преобразователь. Существует ряд схем
данного  устройства  для SPECCY, но на мой
взгляд  получать оцифровку на нашем родном
компьютере не имеет смысла. Для этого мож-
но использовать большой,"профессиональный"
АЦП имеющийся буквально повсюду - IBM PC.
   Весь софт существующий на PC и  предна-
значенный  для  оцифровки/обработки  звука
можно заставить выгружать данные в формате
.WAV. Более того, т.к. .WAV является стан-
дартным  форматом  звука  для wINDOWS, без
проблем можно найти большое количество уже
готовых  звуков в каталогах любой "виндоз-
ной"  программы  (целое  их лежбище  можно
найти на диске с Office'97).
   Найдя или получив на  pc файл в формате
.wav, следует убедиться, что этот звук яв-
ляется "восьмибитным" и "моно". Чаще  вст-
речаются звуки 16bit и stereo. Их,конечно,
тоже можно конвертировать на SPECCY,но для
этого нужен другой (чем приведенный  ниже)
конвертор, плюс к этому подобные файлы бу-
дет очень трудно переводить из-за большого
количества избыточной информации.
   .WAV может иметь любую частоту  дискре-
тизации,т.к. лишние отсчеты можно откинуть
уже на SPECCY, путем "выбрасывания" каждо-
го  второго байта данных. Частота при этом
уменьшиться в два раза.
------------------------------------------


  Маленькая рекомендация по переводу из
             MS-DOS в TR-DOS.


   Обычно это делается посредством IS-DOS,
но, если файл большой, то его трудно будет
потом конвертировать - придется разрезать.
Более того, если файл окажется больше  255
секторов, то даже IS-DOS не поможет. Я ре-
комендую пользовать программу MSDOS-RD.
   Данная штука хоть и написанна достаточ-
но глючно, но позволяет  копировать  файлы
любой длины, разрезая при этом  на  равные
куски  по 16384 байта. Помните только, что
имя файла и расширение нужно вводить стро-
го большими буквами.

------------------------------------------


   Вспоминая тот факт, что нам из  "писиш-
ных" 8bit нужно всего 4bit, встает  задача
по переводу данных. Одновременно можно по-
радоваться  за то, что в одном байте после
перевода уместится два отсчета:

                весь байт

                1010 0101
               └────┴────┘


      первый отсчет   второй отсчет


   Ясный пень, что в этом случае в  памяти
уместится  в  два раза  больше данных. Сей
факт не может не радовать, но за него при-
дется заплатить  уменьшением  быстродейст-
вия.
   Так как же перевести 8bit в 4bit'а? Са-
мым простым и радикальным методом является
деление на 16. Берем из  каждого  "восьми-
битного" отсчета только старшие 4 бита.

    Но есть способ лучше... - "РОНДО"
                               (C) Реклама


   Будем выделять наши биты с помощью  не-
которой  аппроксимирующей  функции. Зачем?
Чтобы получить более качественный звук!
   Предлагаемая ниже аппроксимирующая кри-
вая была взята  ALK'ом из каких-то  одному
ему известных  соображений. Вы можете поп-
робовать создать на BASIC'е свой массив  и
посмотреть как измениться звук. Ниже пока-
зан рисунок, на котором одновременно изоб-
ражены наша функция (наверху) и линия, от-
ражающая вариант, когда берутся  первые  4
бита (внизу).

█√       л
 ▄√       л
@▌√       л
`▐√       л
А▀√       л
ар√       л
└с√       л

   Начало и конец обоих графиков  совпада-
ет, но в середине есть отличие. Это, каза-
лось бы несущественное отличие, играет су-
щественную роль в качестве.

------------------------------------------
   Для  получения  своей  аппроксимирующей
кривой, набейте на BASIC'е программу,кото-
рая будет строить непрерывную функцию от 0
до 255 по X и высотой не более 16 точек(по
оси Y). Затем вместо команды PLOT поставь-
те POKE и, немного  подождав, вы  получите
массив цифр в памяти. Да что я объясняю!??
Сейчас же юзер продвинутый пошел! Понимает
с двух слов ):
------------------------------------------


   Итак,первым делом запускаем конвертор -
процедура под меткой KONVERT. Табличка ап-
проксимации перебросится в экран (можно  в
любое другое место, лишь бы адрес был ров-
ный - младший байт #00) и процесс пошел!
   Через несколько секунд, мы уже имеем  в
памяти с того же адреса куда был  загружен
.wav, готовую к употреблению оцифровку. Ее
длина  ровно в два раза меньше, чем размер
исходного .wav'a.  Теперь смело  запускаем
проигрыватель,  задав  в  нужных регистрах
адрес расположения и длину звука  умножен-
ную на два (длину оригинального .wav'а).


  ВОТ ОН И _З_В_У_К_, СТРУИТСЯ ИЗ ВАШИХ


                ДИНАМИКОВ!


   Регулировку скорости проигрывания можно
произвести с помощью метки TORMOZ. Однако,
даже, если  минимальное  значение TORMOZ=1
является для вашего .wav'а медленным,можно
убить саму  процедуру  торможения, выиграв
при этом еще несколько килогерц.
   Волновать вас  должна  сейчас  не  ско-
рость, а подозрительный  щелчек  в  начале
оцифровки. Это есть не что иное, как заго-
ловок .wav'а, где хранились некоторые  его
параметры. Мы с вами случайно их  перевели
и теперь играем, как начало звука.
   Чтобы избавиться  от  этого  противного
щелчка,  запустите процедурку CORRECT, ко-
торая  скопирует в начало звука массив чи-
сел, являющихся  нарастающей от #00 до #0A
амплитудой.  Этот  массив полностью затрет
сконвертированный описатель .wav'а,а вмес-
те с ним и противный щелчек.
   Вот, в принципе и все, что нужно  знать
для начала эксперементов с  цифровым  зву-
ком. Может быть отдельным товарищам  пока-
жется, что я изложил все это по-ламерски и
наивно считаю себя гением в конверсии зву-
ка. Вовсе нет! Я просто стремился  донести
истину до большинства пользователей  самым
простым и доступным языком.
   Всем тем, кого заинтересовал данный ма-
териал, хочу дать маленький совет: исполь-
зуйте "мощь" калькулятора IBM  PC во благо
SPECCY и помните,что кроме оцифровки звука
его еще можно и обработать (удаление шума/
фильтры/эффекты)  в  ряде  редакторов типа
COOL'95, SOUND FORGE и т.п. Качество улуч-
шится!

   Тут,как с конверсией графики - можно от
балды, а можно посидев в PhotoShop'е!


;-------------------------------------
; ПРОИГРЫВАТЕЛЬ .WAV ФАЙЛОВ !
;
; WRITTEN BY ALK/STARS OF KELADAN'97
; CORRECTED BY M.M.A/SPEED CO.'97
; LAST EDITION ON 10.04.98
;-------------------------------------
; ПРИМЕР ИСПОЛЬЗОВАНИЯ ПРОИГРЫВАТЕЛЯ
;
; LD HL,#C000   ;АДРЕС НАЧАЛА ДАННЫХ
; LD DE,#3800*2 ;(ДЛИНА ЗВУКА) * 2
; CALL PLAY
; EI
; RET
;-------------------------------------


TORMOZ  EQU 2 ;ЗАДЕРЖКА ПРИ ПРОИГРЫВАНИИ
              ;ПОДБИРАЕТСЯ В ЗАВИСИМОСТИ
              ;ОТ ЧАСТОТЫ ОЦИФРОВКИ.


DATA    EQU #8000 ;АДРЕС РАСПОЛОЖЕНИЯ
                  ;ИСХОДНОГО .WAV ФАЙЛА
                  ;ДЛЯ ПЕРЕВОДА

SAMP    EQU #4000 ;АДРЕС АППРОКСИМИРУЮЩЕЙ
                  ;ТАБЛИЦЫ ДЛЯ ПЕРЕВОДА
                  ;8bit > 4bit

LENGHT  EQU #8000 ;ДЛИНА ПЕРЕВОДИМОГО .WAV
                 ;ФАЙЛА

;ПРОИГРЫВАТЕЛЬ


;---------------------------------------
PLAY1   PUSH HL  ;ДЛЯ ПЕРВОГО ВЫЗОВА
        PUSH DE
        CALL INIAY
        POP  DE
        POP  HL
;---------------------------------------
PLAY    DI       ;ПОСЛЕДУЮЩИЕ ВЫЗОВЫ
PR2     CALL PLAYAY
        CALL INIAY
        RET
PLAYAY  EXX
        LD DE,#FFBF
        LD C,#FD
        LD L,8
        EXX
        LD B,0
LPLAY   LD A,(HL)
MAS1    AND #F0
CT1     RRCA
        RRCA
        RRCA
        RRCA
        EX AF,AF
        EXX
        LD A,L
        LD B,D
        OUT (C),A
        EX AF,AF
        LD B,E
        OUT (C),A
        EX AF,AF
        INC A
        LD B,D
        OUT (C),A
        EX AF,AF
        LD B,E
        OUT (C),A
        EX AF,AF
        INC A
        LD B,D
        OUT (C),A
        EX AF,AF
        LD B,E
        OUT (C),A
        EXX
        LD A,(CT1)
        XOR #0F
        LD (CT1),A
        LD (CT1+1),A
        LD (CT1+2),A
        LD (CT1+3),A
        LD A,(MAS1+1)
        CPL
        LD (MAS1+1),A
        RLCA
        AND 1
        LD C,A
        ADD HL,BC
DELAYAY LD A,TORMOZ ;СОТРИТЕ ЭТИ СТРОКИ
LPB     DEC A       ;ДЛЯ ДОСТИЖЕНИЯ
        JR NZ,LPB   ;МАКСИМАЛЬНОЙ СКОРОСТИ
        DEC DE
        LD A,D
        OR E
        JR NZ,LPLAY
        RET
INIAY   LD HL,BUFAY
        XOR A
        LD DE,#FFBF
        LD C,#FD
LIA     LD B,D
        OUT (C),A
        LD B,E
        OUTI
        INC A
        CP 14
        JR NZ,LIA
        RET
BUFAY   DW 1,1,1
        DB 0,#3F,0,0,0 ;МОЖНО ПОСТАВИТЬ
        DB 0,0,0       ;#38 - Ч И Щ Е,
                       ;НО ТИШЕ!


;---------------------------------
;  КОНВЕРТОР
;---------------------------------


KONVERT LD HL,SAMPTAB
        LD DE,#4000
        LD BC,#0100
        LDIR
        LD HL,DATA
        LD DE,DATA
        LD BC,LENGHT
LPRE    LD A,(DE)
        CALL PREOSA
        RLCA
        RLCA
        RLCA
        RLCA
        LD (HL),A
        INC DE
        LD A,(DE)
        CALL PREOSA
        OR (HL)
        LD (HL),A
        INC DE
        INC HL
        DEC BC
        LD A,C
        OR B
        JR NZ,LPRE
        RET
PREOSA  PUSH HL
        LD HL,SAMP
        LD L,A
        LD A,(HL)
        POP HL
        RET


;---------------------------------------
; ТАБЛИЦА ДЛЯ ПЕРЕВОДА 8bit > 4bit
;---------------------------------------
;АССЕМБЛИРОВАТЬ СТРОГО С РОВНОГО АДРЕСА
;ТИПА #5B00,#C000,4000 И Т.Д.
;РАЗМЕР ТАБЛИЦЫ - #100 БАЙТОВ.
;---------------------------------------


SAMPTABLE


    DEFB #00,#00,#00,#00,#00,#00,#01,#01
    DEFB #01,#01,#01,#01,#01,#01,#01,#01
    DEFB #01,#02,#02,#02,#02,#02,#02,#02
    DEFB #02,#02,#02,#02,#03,#03,#03,#03
    DEFB #03,#03,#03,#03,#03,#03,#03,#04
    DEFB #04,#04,#04,#04,#04,#04,#04,#04
    DEFB #04,#04,#05,#05,#05,#05,#05,#05
    DEFB #05,#05,#05,#05,#05,#06,#06,#06
    DEFB #06,#06,#06,#06,#06,#06,#06,#06
    DEFB #06,#07,#07,#07,#07,#07,#07,#07
    DEFB #07,#07,#07,#07,#07,#07,#08,#08
    DEFB #08,#08,#08,#08,#08,#08,#08,#08
    DEFB #08,#08,#09,#09,#09,#09,#09,#09
    DEFB #09,#09,#09,#09,#09,#09,#09,#09
    DEFB #0A,#0A,#0A,#0A,#0A,#0A,#0A,#0A
    DEFB #0A,#0A,#0A,#0A,#0A,#0A,#0B,#0B
    DEFB #0B,#0B,#0B,#0B,#0B,#0B,#0B,#0B
    DEFB #0B,#0B,#0B,#0B,#0B,#0B,#0C,#0C
    DEFB #0C,#0C,#0C,#0C,#0C,#0C,#0C,#0C
    DEFB #0C,#0C,#0C,#0C,#0C,#0C,#0C,#0C
    DEFB #0D,#0D,#0D,#0D,#0D,#0D,#0D,#0D
    DEFB #0D,#0D,#0D,#0D,#0D,#0D,#0D,#0D
    DEFB #0D,#0D,#0D,#0D,#0D,#0D,#0E,#0E
    DEFB #0E,#0E,#0E,#0E,#0E,#0E,#0E,#0E
    DEFB #0E,#0E,#0E,#0E,#0E,#0E,#0E,#0E
    DEFB #0E,#0E,#0E,#0E,#0E,#0E,#0E,#0E
    DEFB #0E,#0E,#0E,#0E,#0E,#0F,#0F,#0F
    DEFB #0F,#0F,#0F,#0F,#0F,#0F,#0F,#0F
    DEFB #0F,#0F,#0F,#0F,#0F,#0F,#0F,#0F
    DEFB #0F,#0F,#0F,#0F,#0F,#0F,#0F,#0F
    DEFB #0F,#0F,#0F,#0F,#0F,#0F,#0F,#0F
    DEFB #0F,#0F,#0F,#0F,#0F,#0F,#0F,#0F


;--------------------------------------
; БЛОК ДЛЯ СГЛАЖИВАНИЯ НАЧАЛЬНЫХ ЩЕЛЧКОВ
; ДЛИНА - 22 БАЙТА. (C) МОЙ!
;--------------------------------------


CORRECT
        LD HL,RISING
        LD DE,DATA
        LD BC,22
        LDIR
        RET


RISING  DB #00,#01,#11,#12,#22,#23,#33
        DB #34,#44,#45,#55,#56,#66,#67
        DB #77,#78,#88,#89,#99,#9A,#AA
        DB #AA



Другие статьи номера:

Аперативчик - О новой оболочке журнала.

Аперативчик - Вступление и авторы.

Тема - DIGITAL звук, как он есть (проигрыватель .wav файлов).

Тема - Проект спасения и развития сцены.

Тема - Устав ассоциации AMAZING SOFT MAKING.

Тема - Теория журналостроения.

Капля припоя - GENERAL SOUND: PLUG & PLAY.

Капля припоя - Профессиональная обработка звука на PC.

SOFTWARE - О новинках из Самары: MAX SOFT SCREEN PACKER v1.4 , МИНЕР, FILE COMMANDER v4.04, SLIDE SHOW,WALKER demo,S-LIGHT BBS, S-TERMINAL v1.0, LOGO.SYS (для PC).

SOFTWARE - Описание проходилка игры "Операция Р.Р."

SOFTWARE - Новинки демосцены: HAPPY NEW 1998 YEAR, BURDENSOME, DREAM, CONDEMED, CONFUSION.

CODING - Процедуры: FULL SCREEN SCROLL UP, Сломанный телевизор.

CODING - Использование стека при разрешенных прерываниях.

CODING - О паковщике MS-PACK.

CODING - Кодить хочу - процедуры вывода спрайтов без атрибутов, быстрая и универсальная процедура вывода спрайтов, процедура умножения и вычисления квадратного корня.

ANOTHER WORLD - Мультимедия - синтез трех стихий.

ANOTHER WORLD - AMIGA vs PC.

Доска почета - Интервью с PROGRESS.

Доска почета - О группе ETERNITY INDUSTRY.

Доска почета - О международном фестивале ART COMP-98.

Доска почета - Опpеделения принятые на демосцене и спектруме.

Доска почета - использование мышки в журналах и другом софте (о криворуких кодерах).

Доска почета - о способе конверсии триколорных картинок для спектрума.

Доска почета - такой ли рулез Amiga? Пц для пцшников, а спектрум для спектрумистов?

Семь и 1/2 - Армейские маразмы.

Семь и 1/2 - Программирование снизу вверх на искосок.

Семь и 1/2 - Инструкция по технике безопасного секса.

Семь и 1/2 - Особенности национального рулеза.

Семь и 1/2 - отчет с тусовки Кемеровских спектрумистов и сохдателей журнала Deja vu.

Проба пера - Приключения Винни Пуха часть 2.

Проба пера - Фэнтази и фантастика.

Реклама - Реклама и объявления ...

Новости - новый журнал AMIGA RULES.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
BBS info - Список работающих B.B.S. с 21 по 27 октября
Наука - Дарующий мысль, кто ты?
Part 4 - Adventure games.

В этот день...   29 мая