Born Dead #0G
31 марта 2000
  Звук  

Coding своими руками - Супер-быстрый MCC player.

<b>Coding своими руками</b> - Супер-быстрый MCC player.
════════════════════════════════════════════════════════════════
ЇЄ╒▐╟░░╟▐╒ЄєЇCODING СВОИМИ РУКАМИ-II ЇєЄ╒▐╟░░╟▐╒ЄєЇ
════════════════════════════════════════════════════════════════
                                                                
(c) MOn5+Er^Sa9e                                                
                                                                
                 Супер-быстрый player with MCC                  
                                                                
   Без вступлений и окончаний приведу самый распоследний вариант
плейера  для  MCC  метода!  Теперь им можно воспроизводить ВСЕ -
теорема Котельникова играет на нас!                             
                                                                
        EI      ;до запуска в порт AY n7 записать #FF!          
        HALT                                                    
        LD SP,START-SAMPLE-ADRESS                               
        LD IX,LOOP                                              
        LD DE,#08+256*('MCC_TBL+1)                              
        LD BC,#FFFD                                             
        OUT (C),E       ;вкл. 8 AY_порт (крайний канал)         
                                                                
LOOP:   POP HL                                                  
        LD E,L                                                  
        LD A,(DE)
        DEC D                                                   
        EX AF,AF'                                               
        LD A,(DE)                                               
        LD E,9                                                  
        OUT (253),A                                             
        EX AF,AF'                                               
        OUT (C),E                                               
        OUT (253),A                                             
        LD E,H                                                  
        LD A,(DE)                                               
        INC D                                                   
        EX AF,AF'                                               
        LD A,(DE)                                               
        LD E,8                                                  
        OUT (253),A                                             
        EX AF,AF'                                               
        OUT (C),E                                               
        OUT (253),A                                             
        JP (IX)                                                 
                                                                
Обработчик INT'а:                                               
                                                                
INT:    POP IY  ;взяли адр. возврата                            
        PUSH HL ;восстановили испорченный SAMPL                 
        LD HL,0                                                 
        ADD HL,SP                                               
        LD BC,END_SAMPLE_ADDRESS                                
        OR A                                                    
        SBC HL,BC                                               
        JR NC,END_INT                                           
        LD BC,#FFFD                                             
        POP HL                                                  
        JP (IY)                                                 
END_INT: выход из player'а                                      
                                                                
160 тактов на две выборки сэмпла.                               
80 тактов на выборку.                                           
Fдискрет.=3,5 МГц/80=43,75 кГц.                                 
                                                                
Плеер  использует  только один крайний канал AY, можно и два для
двойной громкости (на качество в принципе почти не влияет кол-во
крайних каналов...)                                             
                                                                
Единственный  недостаток,  можно слегка проскочить конец сэмпла,
т.к.  проверка  раз  в  INT, но недостаток легко исправляется: в
конце  сэмпла (а он обязательно беззнаковый 0..#FF, а не -128 до
+127) заполнен 896 байт "тишиной" - байтом #80 и всё. Почему 896
- т.к. в INT'е 71680 тактов (maximum на нетурбированной машине),
а 71680/80=896!            



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

666 байт От Редакции - Об оболочке.

Coding своими руками - Алгоритм сжатия звука ADPCM.

Coding своими руками - Супер-быстрый MCC player.

Hints - Трюк с отгрузками в Чёрном Вороне.

Новости - Дата релиза Walker, новое издание из Самары.

Обзор софта - JPEG viewer v0.2, Minimal Tracker.

Партийная зона - Обзор демок с CC'000 Invitation Intro Compo.

Под звуком "ПИ" - Почему известные люди уходят со сцены?

Посмеёмся - Лебединая песня нефтяника: Рецензия на кинофильм "Армагеддон".

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


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

Похожие статьи:
интервью - brom.ellipse.group
Мысли - ПОТРЕБИТЕЛЬСТВО - ЭТО ТВОЯ СМЕРТЬ.
Бук - Похождения Штиpлица и дpугие пpиключения Боpмана.
Demoscene - Deja Vu #05: Затишье на демосцене.
Список людей с модемами - Список Спектрумистов имеющих модем в г. Гомеле

В этот день...   19 апреля