ZX Element #02
06 июня 1998

Прогаммистам - переброска SCR за INT.

     Технология вывода полноэкранного     
  изображения без атрибутов за прерывание 
                                          
                                          
(С) Mythоs                                
                                          
                                          
   Несколько лет назад перед кодерами Спе-
ктрума  встала проблема вывода полноэкран-
ного изображения  за  int. О ее решении  я
ничего не слышал, и сейчас попробую прове-
сти краткий  анализ  нескольких  методов и
рассказать о сабже :)                     
                                          
   Начну я  с известных всем методов LDIR,
LDI.                                      
                                          
   Команда LDIR кидает байт за 21 такт    
                                          
   Кинуть весь экран успеем только за     
21*6911+16=145147, да немножко не успеваем
                                          
   Командами LDI кидаем байт за 16 тактов 
                                          
   Экран кинуть сможем за 16*6912=110592 т
без атрибутов 16*6144=98304 т,  тормозим и
тут, да и память жалко.                   
                                          
   Далее есть способ, так  называемый "вы-
вода  через  стек". Способ  быстрый, но не
самый лучший. Максимальный эффект  при ис-
пользовании  кроме  основных  регистров  и
альтернативные.                           
                                          
   Стеком кинем байт за 13.5 тактов       
                                          
   Экран кидаем за 13.5*6912=93312 т      
   без атрибутов 13.5*6144=82944 т        
                                          
   Неуспеваем и здесь.                    
                                          
   Если копнуть еще глубже то можно  найти
еще несколько оригинальных способов, о ко-
торых я тольком не знаю, к сожалению.     
   А сейчас самый, на мой взгляд, эффекти-
вный способ.                              
                                          
   Сразу скажу, что байт кидаем за        
              10.5 тактов                 
                                          
   Экран соответственно за                
   10.5*6912=72576 т                      
По моему даже Пентагон, не успеет         
                                          
   без атрибутов 10.5*6144=64512 т        
А здесь успевает наверное любой компьютер.
                                          
   Суть метода в  том, что  ваша  картинка
будет распределена в программе.           
                                          
Пишем код:                                
       LD SР,#5В00                        
       LD НL,#223A;ВАША ГРАФИКА, АТРИБУТЫ 
       РUSН НL                            
       LD НL,#3AВ3;EЩЕ ГРАФИКА            
       РUSН НL                            
       ...                                
                                          
   Ну и таких строчек надо не мало. В ито-
ге ваш экран  будет занимать, ровно в  два
раза больше памяти.                       
                                          
   В чем еще прелесть данного метода: если
вы  заметили, вы  можете выводить картинку
храня ее одновремменно в жатом состоянии. 
                                          
Объясняю: если в картинке идут подряд бай-
ты, скажем, #аЬ03,#аЬ03... можно будет на-
писать в программе:                       
                                          
       LD НL,#AВ03                        
       РUSН НL                            
       РUSН НL                            
       ...                                
                                          
   При  этом  скорость  вывода изображения
повышается!                               
                                          
                                          
   Если хочется выводить  спрайты  в такой
экран, то если подумать можно запросто на-
писать процедуру вывода спрайта  или может
даже точки или линии. Но в этом  случае не
должно быть компресии.                    
                                          
   Ну вот вроде и все о чем  я хотел пове-
дать. Признаться, я даже и не думал писать
об етом, думая  что  уже  все известно, но
когда я начинал рассказывать, на меня смо-
трели с  большими  глазами  и говорили что
это круто.                                
                                          
------------------------------------------
                                          
                                          
                                          
                                          
                                          
                                          
                                          




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

Похожие статьи:
Программирование - некоторые вопросы создания файловых оболочек на SPECCY и обзор SPECTRUM'овских DOS'в.
Система - Зачем делать все самому , если рядом есть компьютер? Автоматизация - как средство избавления от ручного труда.
Хроника чекистов - хуйня чистой воды.

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