╔═══════════════════════════════════╗╔══╗ 
|             Видео на спеке...   ╔╗╚╝  | 
╚═════════════════════════════════╝╚════╝ 
 Lynx/Infotek                             
          Fast high resolution            
        full screen video engine          
          Fast high resolution            
        full screen video engine          
                                          
  В этой статье речь пойдет о том, как на 
спеке с памятью 128 килобайт организовать 
реактивный показ видео в высоком разреше- 
нии.  Это  - самый легкий и в то же время 
самый  'рульный'  и  самый быстрый способ 
вывода видео кадров на экран.             
  Что требуется для этого. Для этого, для 
примера надо запастись 15-ю кадрами како- 
го-нибудь  видео (например, из какого-ни- 
будь  писишного  ЗD-shooter'а  подергайте 
кадры  по  F12,  потом  конвертните их на 
спек).                                    
  Теперь  расскажу расположении этого ви- 
део(кадрах) в памяти. Для быстрого вывода 
на  экран  они храняться в незапакованном 
виде в основной памяти, а также в страни- 
цах памяти. Естественно страницы 2 и 5 не 
используются,  т.к.  они находяться в ос- 
новной памяти.                            
  В  чем особенность такого видео. Дело в 
том,  что  сейчас   в  основном для малой 
траты  памяти используют специальный фор- 
мат  -  вывод видео в низком разрешении - 
текстурками 4х4. И никто еше не практико- 
вал  вывод  видео в высоком разрешении на 
экран.                                    
  Итак,  начнем с программы, которая осу- 
шествляет  этот вывод на экран. Программа 
может работать в любом режиме прерываний. 
Программа  использует  таблицу, в которой 
на каждый кадр выделено по 3 байта:       
    1 - страница, в которой этот кадр:    
    2,3 - адрес экрана.                   
                                          
        org 2SOOO                         
        ld  hl,table                      
        ld  b,15                          
l1:     push bc                           
        ld  bc,#7FFD                      
        ld  a,(hl)                        
        add a,#1O                         
        out (c),a                         
        inc hl                            
        push hl                           
        ld  a,(hl)                        
        inc hl                            
        ld  h,(hl)                        
        ld  l,a                           
        ld  de,#ЧOOO                      
        ld  bc,#18OO                      
        ldir                              
        рор hl                            
        call pause                        
        inc hl                            
        рор bc                            
        djnz l1                           
        ret                               
pause   ld b,8                            
l2      halt                              
        djnz l2                           
table   DB O                              
        DW 27OOO                          
        DB O                              
        DW 33144                          
        DB O                              
        DW 39288                          
        DB O                              
        DW 49152                          
        DB O                              
        DW 55296                          
        DB 1                              
        DW 49152                          
        DB 1                              
        DW 55296                          
        DB 3                              
        DW 49152                          
        DB 3                              
        DW 55296                          
        DB 4                              
        DW 49152                          
        DB 4                              
        DW 55296                          
        DB 6                              
        DW 49152                          
        DB 6                              
        DW 55296                          
        DB 7                              
        DW 49152                          
        DB 7                              
        DW 55296                          
                                          
 Вот такая вот программа. Она выводит ви- 
део на экран. Соответственно, в процедуре 
pause,  количество halt'ов подобрано мной 
чисто  под  мое  видео. С такой задержкой 
оно получилось пропорциональное.          
  После  загрузки этой программы в память 
надо  соответственно  таблице загрузить в 
память  кадры.  Легче всего это делать из 
48-васика с открытыми страницами. Сделать 
это можно следуюшим образом:              
                                          
1O  OUT 32765,16+номер стр.:RANDOMIZE USR 
15619:REM  :  LOAD "имя кадра" CODE адрес 
из таблицы.                               
                                          
  Это  делается  потому, что 48 бэйсик не 
переключает страницы каждое прерывание на 
ту,  которая лежит в переменной 23388, и, 
соответственно  удобно  компоновать таким 
образом программы.                        
  Такой загрузчик я видел например, в де- 
ме BOOM.                                  
  Ну  вот  и все. Напоследок дам один со- 
вет: как разлочить страницы и TR-DOS пос- 
ле  возврата из пзу'шного меню 128 квору- 
ма. Это делается просто:                  



Other articles:


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

Similar articles:
Iron - to savagery simple variant of the scheme 384x304 with software switching.
Mozgomoechnaya - advice to the creators of graphic editors.
Entry - In the courtyard of July - a wonderful month: stuffy, bake, yak in the tropics, short kicks!

В этот день...   21 November