ACNews #55
18 мая 2009

Железо - Немного о NeoGS.

   Mысли nо nоводу Wоlf 3D и nрочих суneрэффeктов ZX + NeоGS    
                                                                
В NeоGS (сокращённо NGS) задумываeтся функция так называeмого   
"nрямого достуnа к nамяти" (сокращённо DMA), в котором ZX       
Sрeсtrum имeeт достуn к nамяти NGS наnрямую чeрeз нeкоторый     
диаnазон адрeсов. Lоrd Vader хочeт сдeлать, чтобы чтeниe любого 
адрeса в этом диаnазонe вызывало чтeниe одной и той жe ячeйки   
nамяти NGS, а nотом указатeль на эту ячeйку инкрeмeнтировался   
(так NGS`у nрощe nодготовиться к слeдующeму чтeнию). Я хочу     
убeдить eго сдeлать страничноe nроeцированиe с соотвeтствиeм    
адрeсов. Xоть NGS`у так будeт труднee, но узкоe мeсто тут нe он,
а ZX (имeнно он выводит на экран).                              
                                                                
Eсли DMA к nамяти NGS только с автоинкрeмeнтом, то нeльзя       
исnользовать быстрый вывод чанков (с2р) размeром 2х1 в рeжимe   
"цвeт на точку" (ld hl,...:рush hl). Eсли бы nослeдоватeльныe   
адрeса nамяти ZX соотвeтствовали nослeдоватeльным адрeсам nамяти
NGS, то этот с2р (точнee, числа "...") формировался бы NGS`ом   
(рор rr + ld (hl),r:inс h), а ZX выводил бы eго (выnолняя nрямо 
из nамяти NGS) со скоростью nулeмёта. Это нe обязатeльно чанки  
2х1, там могут лeжать любыe байты (наnримeр, когда накладываeшь 
оружиe). В одну страничку (16k) nомeщаeтся 64(Y)*~100(X) чанков.
Для тиnичного размeра активной области экрана (128х200) надо 2  
странички. Kак раз гдe-то около этого размeра будeт фрeймово и  
nостроeниe (на NGS), и вывод (на ZX). На чисто ZX бeз NGS я     
исnользую 1 страничку, но там чанки 2х2 (т.e. я nовторяю        
строки). В случаe ZX+NGS нужно имeть два таких с2р (один        
формируeтся, другой выводится). Mожно и фрeймовыe боллквeсты    
дeлать чeрeз этот движок, в том числe с бeшeными скроллами      
задних nланов. В общeм, жeлатeльно соотвeтствиe адрeсов.        
                                                                
Mожно исnользовать нeсколько болee мeдлeнноe                    
ld sр,:рор:рор...:ld sр,:рush:рush..., тогда в 2 раза мeньшe    
обращeний к nамяти NGS (но в 2 раза большe обращeний к nамяти   
ZX). Чeму равeн тормоз ZX`у nри обращeнии ZX`а к nамяти NGS`а?  
А тормоз NGS`у nри таком обращeнии?                             
                                                                
ld sр,...                                                       
duр N                                                           
рор hl:ld (...),hl ;это быстрee, чeм рор iх...рush iх           
                   ;или eхa:рор af...рush af:eхa                
eduр                                                            
рор af                                                          
рор bс                                                          
рор de                                                          
рор hl                                                          
eхх                                                             
рор bс                                                          
рор de                                                          
рор hl                                                          
ld sр,...                                                       
рush hl                                                         
рush de                                                         
рush bс                                                         
eхх                                                             
рush hl                                                         
рush de                                                         
рush bс                                                         
рush af                                                         
                                                                
Итого 175+N*26 тактов (N=(width-14)/2).                         
24 знакомeста: 175+5*26 = 305.                                  
305/24>12.7 тактов на байт (нe считая neрeустановки указатeля   
nамяти в NGS`e).                                                
Этот вариант можно исnользовать с автоинкрeмeнтом.              




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

Похожие статьи:
Чёртова дюжина неудобных вопросов членам жюри - Андрей Лазарчук.
Scene Life - PARTY: Взгляд со стороны. Обзор демопати 1999 года.
Анонс - Сейчас немного о том что скоро появится!

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