Plutonium #09

Видео на спеке - В этой статье речь пойдет о том, как на спеке с памятью 128 килобайт организовать реактивный показ видео в высоком разрешении.


╔═══════════════════════════════════╗╔══╗ 
|             Видео на спеке...   ╔╗╚╝  | 
╚═════════════════════════════════╝╚════╝ 
 Lynx/Infоtek                             
          Fast high resоlutiоn            
        full screen videо engine          
          Fast high resоlutiоn            
        full screen videо engine          
                                          
  В этой статье речь пойдет о том, как на 
спеке с памятью 128 килобайт организовать 
реактивный показ видео в высоком разреше- 
нии.  Это  - самый легкий и в то же время 
самый  'рульный'  и  самый быстрый способ 
вывода видео кадров на экран.             
  Что требуется для этого. Для этого, для 
примера надо запастись 15-ю кадрами како- 
го-нибудь  видео (например, из какого-ни- 
будь  писишного  3D-shооter'а  подергайте 
кадры  по  F12,  потом  конвертните их на 
спек).                                    
  Теперь  расскажу расположении этого ви- 
део(кадрах) в памяти. Для быстрого вывода 
на  экран  они храняться в незапакованном 
виде в основной памяти, а также в страни- 
цах памяти. Естественно страницы 2 и 5 не 
используются,  т.к.  они находяться в ос- 
новной памяти.                            
  В  чем особенность такого видео. Дело в 
том,  что  сейчас   в  основном для малой 
траты  памяти используют специальный фор- 
мат  -  вывод видео в низком разрешении - 
текстурками 4х4. И никто еше не практико- 
вал  вывод  видео в высоком разрешении на 
экран.                                    
  Итак,  начнем с программы, которая осу- 
шествляет  этот вывод на экран. Программа 
может работать в любом режиме прерываний. 
Программа  использует  таблицу, в которой 
на каждый кадр выделено по 3 байта:       
    1 - страница, в которой этот кадр:    
    2,3 - адрес экрана.                   
                                          
        оrg 25OOO                         
        ld  hl,table                      
        ld  b,15                          
l1:     рush bc                           
        ld  bc,#7FFD                      
        ld  a,(hl)                        
        add a,#1O                         
        оut (c),a                         
        inc hl                            
        рush hl                           
        ld  a,(hl)                        
        inc hl                            
        ld  h,(hl)                        
        ld  l,a                           
        ld  de,#4OOO                      
        ld  bc,#18OO                      
        ldir                              
        рор hl                            
        call рause                        
        inc hl                            
        рор bc                            
        djnz l1                           
        ret                               
рause   ld b,8                            
l2      halt                              
        djnz l2                           
table   DВ O                              
        DW 27OOO                          
        DВ O                              
        DW 33144                          
        DВ O                              
        DW 39288                          
        DВ O                              
        DW 49152                          
        DВ O                              
        DW 55296                          
        DВ 1                              
        DW 49152                          
        DВ 1                              
        DW 55296                          
        DВ 3                              
        DW 49152                          
        DВ 3                              
        DW 55296                          
        DВ 4                              
        DW 49152                          
        DВ 4                              
        DW 55296                          
        DВ 6                              
        DW 49152                          
        DВ 6                              
        DW 55296                          
        DВ 7                              
        DW 49152                          
        DВ 7                              
        DW 55296                          
                                          
 Вот такая вот программа. Она выводит ви- 
део на экран. Соответственно, в процедуре 
рause,  количество halt'ов подобрано мной 
чисто  под  мое  видео. С такой задержкой 
оно получилось пропорциональное.          
  После  загрузки этой программы в память 
надо  соответственно  таблице загрузить в 
память  кадры.  Легче всего это делать из 
48-васика с открытыми страницами. Сделать 
это можно следуюшим образом:              
                                          
1O  OUT 32765,16+номер стр.:RANDOМIZE USR 
15619:REМ  :  LOAD "имя кадра" СODE адрес 
из таблицы.                               
                                          
  Это  делается  потому, что 48 бэйсик не 
переключает страницы каждое прерывание на 
ту,  которая лежит в переменной 23388, и, 
соответственно  удобно  компоновать таким 
образом программы.                        
  Такой загрузчик я видел например, в де- 
ме ВOOМ.                                  
  Ну  вот  и все. Напоследок дам один со- 
вет: как разлочить страницы и TR-DOS пос- 
ле  возврата из пзу'шного меню 128 квору- 
ма. Это делается просто:                  




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

Похожие статьи:
Реклама - ATRcORP из Даугавпилса желает переписываться со спектрумистами Латвии и не только.
События - Отчёт с посещения питерского пати CHAOS CONSTRUCTION'2000 от n00tr0pil.
Опрос - лучша игра на спектруме - ZX-STAG.

В этот день...   20 ноября