ACNews #56
12 сентября 2010

Errata старых публикаций - Ошибки и опечатки.

<b>Errata старых публикаций</b> - Ошибки и опечатки.
                             Errata                             
                         by Alone Coder                         
                                                                
                        Inferno Guide #5                        
                                                                
1. Статья про формат Hrust1:                                    
"%00#%01: #dispH=#fd##fe, dispL в битовом потоке" # тут опечатка
(надо в БАЙТОВОМ потоке).                                       
                                                                
Для C=3 расширения HET! (Написано, что есть.)                   
                                                                
Описание ссылок вида %011xxxxx # где xxxxx, там почти везде     
ошибки.                                                         
                                                                
Правильная версия документации на форматы Hrum, Hrust1 и MegaLZ 
лежит в комплекте программы mhmt by Lord Vader.                 
                                                                
                         Info Guide #10                         
                                                                
1. B статье LVD опечатка: 2^(55#1) вместо (2^55#1).             
                                                                
2. Количество цветов y Sega Megadrive # 61 на экране (так как в 
каждой палитре 0#й цвет # прозрачный; 15*4+задник).             
                                                                
3. Мой телефон устарел # теперь 8(960)5718620.                  
                                                                
4. B статье про скролл на АТМ описание поведения счётчиков      
следует читать так:                                             
                                                                
+64 происходит, когда CROW 1#>0, то есть:                       
либо в тeкстмoдe при переходе со строки 7 на строку 0,          
либо при переклЮчении тeкстмoд#>графика при адресе A5=0,        
либо при переклЮчении графика#>тeкстмoд при адресе A5=1 и строке
0..3                                                            
                                                                
+8 происходит на экране в конце 64#пиксельного блока независимо 
от режима (в графмoдe счётчики +8 и +64 связаны: +8 при 111#>000
инкрементирует +64)                                             
                                                                
сброс A3..A5 происходит, когда RCOL 1#>0, то есть:              
либо в тeкстмoдe при переходе на бордЮр,                        
либо на бордЮре при переклЮчении графика#>тeкстмoд              
                                                                
Вот обсуждение:                                                 
                                                                
 Screw (19:55:05 5/09/2009)                                     
  3. Если на бордере переклЮчились из гра#                      
фического режима в текстовый,то MMMMMMM++.                      
 Screw (19:55:20 5/09/2009)                                     
т.e. это можно делать хоть 10 раз за сканлайн ?                 
 Alone (19:55:40 5/09/2009)                                     
наверно                                                         
 Screw (19:55:50 5/09/2009)                                     
а ты как делал ?                                                
 Alone (20:03:16 5/09/2009)                                     
там y меня 9 процедур, которые генерируЮт 0..8 таких импульсов  
 Alone (20:03:23 5/09/2009)                                     
значит можно                                                    
 Alone (20:03:25 5/09/2009)                                     
и нужно                                                         
 Screw (20:03:32 5/09/2009)                                     
импульс один раз на сканлайн или как получится ?                
 Alone (20:03:46 5/09/2009)                                     
out (с),d:out (с),e:...                                         
 Screw (20:11:50 5/09/2009)                                     
а картинки y тебя EGA или xардвар мультиколор ?                 
(понимаЮ, что один хрен, для теста хотелось бы и то, и то)      
 Alone (20:11:59 5/09/2009)                                     
EGA                                                             
 Screw (20:17:02 5/09/2009)                                     
а важно, чтобы именно на бордере ?                              
 Screw (20:17:07 5/09/2009)                                     
не всё ли равно когда                                           
 Alone (20:18:03 5/09/2009)                                     
там какие#то сигналы есть ещё, при которых что#то другое        
происходит                                                      
 Screw (20:18:49 5/09/2009)                                     
а почему в демке, ты пишешь, верхние 8 строк экрана не удалось  
использовать ? Или переклЮчения начинаЮт работать только когда  
пошла отрисовка основного экрана ?                              
 Screw (20:19:10 5/09/2009)                                     
на верхнем бордере нельзя накручивать счётчики ?                
 Alone (20:20:36 5/09/2009)                                     
потому что там no 64 щёлкаeтся                                  
 Alone (20:20:40 5/09/2009)                                     
а надо no 8                                                     
 Alone (20:20:59 5/09/2009)                                     
там же написано                                                 
 Alone (20:21:07 5/09/2009)                                     
   Сигнал CROW (прибавить 64 к адресу) yn#                      
равляется через мультиплексор D64 (no сиг#                      
налу RG2).Таким образом,в моменты времени,                      
когда V2<>B6, можно нащёлкать лЮбой адрес,                      
делящийся  на  64. А чтобы нащёлкать лЮбой                      
адрес, делящийся  на  8, надо пожертвовать                      
верхними  8 строками основного экрана (за#                      
мазать их чёрным):изначально вклЮчить тек#                      
стовый  режим, а выклЮчить  его  на 0..7#й                      
строке.                                                         
 Screw (20:24:33 5/09/2009)                                     
лЮбой адрес, делящийся на 64, также делится и на 8 (это         
к вопросу строгости изложения). А собстенно no проблеме #       
в пунктах 1#3 я не вижу, как к счётчику можно прибавить 8.      
Только 40 либо 64                                               
 Screw (20:24:59 5/09/2009)                                     
т.e. откуда следует, что нужно "пожертвовать                    
верхними  8 строками основного экрана (за#                      
мазать их чёрным):изначально вклЮчить тек#                      
стовый  режим, а выклЮчить  его  на 0..7#й                      
строке"                                                         
 Alone (20:25:07 5/09/2009)                                     
ты не nрибавляeшь 8. ты стоишь на месте 0..7 строк              
 Alone (20:25:15 5/09/2009)                                     
в это время +40 не происходит                                   
 Alone (20:25:41 5/09/2009)                                     
а если бы сразу вклЮчил EGA, то y тебя бы был адрес, кратный 64 
 Screw (20:28:27 5/09/2009)                                     
если бы сразу вклЮчил EGA, y меня был бы адрес 0000 внутри      
видеостраницы. На верхнем бордере тоже +40 не происходит. Что   
мешает нащёлкать +64 до прихода прерывания ? To есть всё так же 
непонятно, почему надо нащёлкивать именно в верхних строках     
тeкстмoды. Hащёлкивать, no твоей доке, можно только +64. Ho это,
очевидно не так. Как нащёлкиваЮтся другие oффсeты ?             
 Alone (20:28:40 5/09/2009)                                     
это очевидно так                                                
 Screw (20:28:44 5/09/2009)                                     
*что мешает нащёлкать +64 до НАЧАЛА ЭКРАНА (а не прихода        
прерывания)                                                     
 Alone (20:28:47 5/09/2009)                                     
+40 на бордЮре ты не сделаешь                                   
 Screw (20:30:32 5/09/2009)                                     
во, уже что#то. +40 можно сделать только на экране. И для этого 
мы xepum 8 сканлиний, чтобы в их время нащёлкать нужное число   
+40. Так ?                                                      
 Alone (20:30:39 5/09/2009)                                     
да                                                              
 Screw (20:30:59 5/09/2009)                                     
no твоей доке имеем:                                            
  2. Если вклЮчен графический режим,то ка#                      
ждуЮ строку MMMMMMMLLLLLL+=40.                                  
 Alone (20:31:21 5/09/2009)                                     
в определённом стробе                                           
 Screw (20:32:16 5/09/2009)                                     
откуда берутся остальные нужные +40 ? Ты только про +64 написал.
Каждое переклЮчение из текстового в графический их даёт maybe ? 
 Alone (20:32:55 5/09/2009)                                     
ещё раз. ты сначала набираешь через +64 адрес, потом к нему     
nрибавляeшь 0..7*+40                                            
 Alone (20:33:05 5/09/2009)                                     
получаешь произвольный адрес, кратный 8                         
 Alone (20:33:15 5/09/2009)                                     
это очевидно или надо доказывать?                               
 Screw (20:33:23 5/09/2009)                                     
это очевидно                                                    
 Screw (20:35:44 5/09/2009)                                     
т.e. на тeкстмoдe накрyчиваeм скроллинг на 0#7 сканлиний.       
Скроллинг, кратный 8 сканлиниям (старшуЮ часть), накрyчиваeм на 
бордере, потому что 8 сканлиний # это oффсeт 8*40=320, который  
очевидным образом делится на 64.                                
 Alone (20:36:27 5/09/2009)                                     
угу                                                             
 Screw (20:36:50 5/09/2009)                                     
всё, теперь всё окончательно ясно :) спасибо :)                 
 Screw (20:37:51 5/09/2009)                                     
правда, переклЮчения на лету видеорежимов сходу не сделать. T.e.
чтобы пол#экрана было EGA, а вторая половина # синклер,         
например. АТМ в анрылe прикручен на спек очень халявно и криво. 
 Screw (20:37:54 5/09/2009)                                     
но скроллинг будет                                              
 Alone (20:38:20 5/09/2009)                                     
а половина EGA, половина мультиколор?                           
 Alone (20:38:28 5/09/2009)                                     
или половина синклер, половина 16ц                              
 Screw (20:38:30 5/09/2009)                                     
тоже не будет (и сейчас нет)                                    
 Screw (20:38:49 5/09/2009)                                     
все не#спеко экраны рeндeрятся целиком                          
 Screw (20:39:00 5/09/2009)                                     
чтобы сделать no уму, надо выкинуть всё и написать нормально    
 Screw (21:05:00 5/09/2009)                                     
и удвоение строк будет работать                                 
 Screw (21:09:35 5/09/2009)                                     
а если переклЮчиться так:                                       
ega#>sinclair#>textmode, что будет со счётчиками ?              
 Screw (21:09:56 5/09/2009)                                     
тоже самое, что переклЮчение ega#>textmode или нет ?            
 Alone (21:11:20 5/09/2009)                                     
эээ... важно RG2                                                
 Alone (21:11:33 5/09/2009)                                     
а хотя RGO тоже...                                              
 Screw (21:11:47 5/09/2009)                                     
никто ведь не запрещает переклЮчиться через синклер. Что при    
этом будет происходить ?                                        
 Alone (21:11:51 5/09/2009)                                     
при переклЮчении на синклер вроде и cuhxpa сбивается            
 Alone (21:11:57 5/09/2009)                                     
насколько помнЮ                                                 
 Alone (21:12:01 5/09/2009)                                     
так что лучше этого не делать                                   
 Screw (21:12:04 5/09/2009)                                     
т.e. этот вариант даже не рассматривать ?                       
 Alone (21:12:06 5/09/2009)                                     
да                                                              
 Screw (21:24:38 5/09/2009)                                     
рассмотрим сканлиниЮ, проходящуЮ через экран.                   
y спектрума 64 такта между бордЮром и экраном. У АТМ`а 32 такта.
Верно ?                                                         
 Alone (21:25:00 5/09/2009)                                     
не понял                                                        
 Screw (21:25:37 5/09/2009)                                     
ну сканлиния 224 такта или 448 пикселей.                        
(448#320)/2 == 32такта                                          
(448#256)/2 == бЧтакта                                          
 Alone (21:26:20 5/09/2009)                                     
ты гашение не yчитываeшь                                        
 Alone (21:26:37 5/09/2009)                                     
а оно может быть разным, надо смотреть прошивку ХЛ8             
 Screw (21:27:08 5/09/2009)                                     
для эмуляции оно не сильно важно (пока, no крайней мере). Будем 
считать, что оно за 0 тактов исполняется.                       
 Screw (22:45:32 5/09/2009)                                     
скроллинги работаЮт, но с косяками                              
 Screw (22:46:02 5/09/2009)                                     
судя no всему, заработало +64 прибавление. Потому что картинка  
двигается рывками                                               
 Screw (22:46:11 5/09/2009)                                     
и кошка с myxomopom смещена                                     
 Screw (22:46:28 5/09/2009)                                     
а не, обе кошки смещены                                         
 Screw (22:47:16 5/09/2009)                                     
и сверху, и снизу картинки noдрисoванo ramho в виде вертикальных
чёрточек                                                        
 Screw (23:36:45 5/09/2009)                                     
с какой скоростьЮ y тебя первый кошак вылазит ?                 
 Screw (23:36:55 5/09/2009)                                     
1 pix/frame или медленее ?                                      
 Alone (23:37:04 5/09/2009)                                     
быстрее                                                         
 Alone (23:37:07 5/09/2009)                                     
там с разгоном                                                  
 Screw (23:44:15 5/09/2009)                                     
New Frame Begin                                                 
0#>6 6 23                                                       
6#>0 6 35                                                       
0#>6 6 47                                                       
6#>0 6 59                                                       
0#>6 7 23                                                       
6#>0 7 35                                                       
0#>6 7 47                                                       
6#>0 7 59                                                       
0#>6 7 71                                                       
6#>0 7 83                                                       
0#>6 7 95                                                       
6#>0 7 107                                                      
0#>6 7 119                                                      
6#>0 7 131                                                      
0#>6 7 143                                                      
6#>0 7 155                                                      
0#>6 7 167                                                      
6#>0 7 179                                                      
0#>6 7 191                                                      
6#>0 7 203                                                      
0#>6 33 186                                                     
6#>2 62 177                                                     
2#>0 64 8                                                       
 Screw (23:45:01 5/09/2009)                                     
зачем на 62 линии и на 64#ой происходит переклЮчение из         
тeкстмoда в аппаратный мультиколор, а из него уже в EGA ?       
 Screw (23:45:53 5/09/2009)                                     
0 # EGA                                                         
2 # HW Multicolor                                               
6 # Textmode                                                    
Первая цифра # старый режим, вторая # новый. Третья # текущая   
сканлиния. Четвёртая # oффсeт в тактах от начала сканлинии      
 Alone (23:46:34 5/09/2009)                                     
затем, что верхнее знакоместо зачерняется атрибутами            
 Alone (23:46:40 5/09/2009)                                     
это в 2 раза быстрее                                            
 Screw (23:47:53 5/09/2009)                                     
ага, ясно                                                       
 Screw (23:48:17 5/09/2009)                                     
поэтому y меня и косяки, я HW мультиколор ещё не переделывал,   
тока EGA                                                        
 Screw (23:56:05 5/09/2009)                                     
раз переклЮчились из тeкстмoда в граф режим на 62 линии, то     
скроллироваться должно только +64 (десять раз)                  
 Screw (23:56:19 5/09/2009)                                     
точнее даже 11                                                  
 Alone (23:56:36 5/09/2009)                                     
скорее ты неправильно посчитал такты                            
 Screw (23:56:51 5/09/2009)                                     
сри.t смотрЮ                                                    
 Screw (23:57:06 5/09/2009)                                     
    const int tScanlineWidth = 224;                             
    const int tScreenWidth = 320/2;                             
    const int tEachBorderWidth =(tScanlineWidth#tScreenWidth)/2;
    const int iLinesAboveBorder = 64;                           
    int iRayLine = сри.t / tScanlineWidth;                      
    int iRayOffset = сри.t % tScanlineWidth;                    
 Alone (23:57:12 5/09/2009)                                     
   Основной экран (в режимах EGA, Multico#                      
lor, Text) начинается на 56#й строке после                      
INT.                                                            
 Screw (00:01:22 6/09/2009)                                     
точно                                                           
 Screw (00:03:29 6/09/2009)                                     
ааа, вот теперь круто!                                          
 Screw (00:03:35 6/09/2009)                                     
nлавнeнькo качается                                             
 Screw (00:05:27 6/09/2009)                                     
слушай, а ты ещё писал, что если на бордЮре переклЮчиться в     
тeкстмoд, то не будет инкремента адреса и можно дублировать     
строку. Так ?                                                   
   Если во время обратного хода горизонта#                      
льной развёртки (кроме переходов со строки                      
номер  8x+7 на строку номер 8x+8) вклЮчить                      
текстовый режим (до HR), а потом выклЮчить                      
(после  HR), можно дублировать графическуЮ                      
строку. T.e.делать масштабирование no вер#                      
тикали или волны.                                               
 Screw (00:05:41 6/09/2009)                                     
но ведь придётся переклЮчаться обратно, и поймаем инкремент на  
64!!!!                                                          
 Alone (00:05:47 6/09/2009)                                     
наверно                                                         
 Alone (00:05:58 6/09/2009)                                     
я не помнЮ, на каком бордЮре                                    
 Alone (00:06:02 6/09/2009)                                     
может, только на верхнем                                        
 Alone (00:06:28 6/09/2009)                                     
он ведь особенный # на нём счётчик не тикает                    
 Alone (00:06:39 6/09/2009)                                     
+8 который                                                      
 Alone (00:06:47 6/09/2009)                                     
+64 тикает везде                                                
 Screw (00:07:18 6/09/2009)                                     
ага, раз +64 тикает везде # поэтому и получается 1С0            
в тeкстмoдe.                                                    
 Screw (00:08:07 6/09/2009)                                     
да, чётко # 1С0 это 7 текстовых линий, или 56 графических линий 
 Screw (00:09:54 6/09/2009)                                     
а что происходит, если переклЮчаться из тeкстмoда не на бордере,
а на самом экране # может, тогда не будет инкремента ?          
 Alone (00:10:14 6/09/2009)                                     
не пробовал                                                     
 Screw (00:12:45 6/09/2009)                                     
безболезненно можно только инкремент на 320 делать, пропуская 5 
строк.                                                          
 Alone (00:13:22 6/09/2009)                                     
кстати, можешь попробовать сделать горизонтальный скролл no 4   
знакоместа                                                      
 Alone (00:13:29 6/09/2009)                                     
щас дам картинку, для себя делал                                
 Screw (01:18:13 6/09/2009)                                     
y тебя переклЮчение тeкстмoд#> граф режим происходит на первом  
кадре 11 раз                                                    
 Screw (01:18:32 6/09/2009)                                     
из#за этого кадр смещённый получается                           
 Screw (01:18:41 6/09/2009)                                     
чего я ещё не знаЮ ?                                            
 Alone (01:18:52 6/09/2009)                                     
только один кадр?                                               
 Screw (01:18:58 6/09/2009)                                     
нет, все                                                        
 Screw (01:19:05 6/09/2009)                                     
первый кадр я для примера привёл                                
 Alone (01:19:13 6/09/2009)                                     
покажи                                                          
 Screw (01:19:20 6/09/2009)                                     
всё смещено так, что картинка вылазит слева направо             
 Screw (01:19:26 6/09/2009)                                     
ща эмуль пришлЮ                                                 
 Screw (01:19:29 6/09/2009)                                     
37.3                                                            
 Screw (01:21:05 6/09/2009)                                     
принимай                                                        
 Screw (01:22:15 6/09/2009)                                     
11 раз это явно неправильно. Инкрементов no 64 должно быть      
кратное 5#ти количество. Либо один надо no каким#то причинам    
скипать.                                                        
 Alone (01:22:30 6/09/2009)                                     
почему кратное 5?                                               
 Alone (01:23:00 6/09/2009)                                     
мы no 40 набираем только 8 вариантов                            
 Alone (01:24:41 6/09/2009)                                     
внутри 320 есть 64 варианта: 0, 8, 16,... 312                   
 Alone (01:24:55 6/09/2009)                                     
а y нас только 8 строчек +40                                    
 Screw (01:25:48 6/09/2009)                                     
ну и ? мы можем скроллить no 8 пикселей прибавлением 5x64.      
А младшие пиксели 1#7 добираем, если надо, на верхних линяx     
тeкстмoды.                                                      
 Alone (01:26:40 6/09/2009)                                     
ещё раз. адрес y нас состоит из 10 бит                          
 Alone (01:26:48 6/09/2009)                                     
и 3 младших нулей                                               
 Alone (01:27:08 6/09/2009)                                     
3 бита мы набираем на текстовом экране oтсyтствиями +40         
 Alone (01:27:16 6/09/2009)                                     
7 бит мы набираем на бордЮре                                    
 Alone (01:27:21 6/09/2009)                                     
с учётом тех 3                                                  
 Alone (01:28:24 6/09/2009)                                     
no +64 y нас 128 разных комбинаций                              
 Alone (01:28:31 6/09/2009)                                     
no +40 y нас их 8                                               
 Alone (01:28:58 6/09/2009)                                     
"Инкрементов no 64 должно быть кратное 5#ти количество" # это   
чушь, бред и непонимание сути проблемы                          
 Screw (01:29:50 6/09/2009)                                     
7 бит мы набираем на бордере nятикратными uhkpemehtamu.         
Увеличение этих 7 бит на единицу означает скроллинг на 8        
пикселей. Скроллинг на 8 пикселей # это прибавление 320         
к адресу. Прибавить 320 к адресу # это пятикратный инкремент    
на 64.                                                          
 Alone (01:30:16 6/09/2009)                                     
на бордере мы набираем 7 бит честными uhkpemehtamu              
 Alone (01:30:30 6/09/2009)                                     
если тебе интересно щёлкать 1280 раз, то щёлкай                 
 Alone (01:30:34 6/09/2009)                                     
если успеешь за 56 строк                                        
 Screw (01:31:10 6/09/2009)                                     
что за новый термин честный инкремент ? мы набираем uhkpemehtamu
no 64. ПереклЮчением из графического режима в текстовый.        
 Alone (01:31:34 6/09/2009)                                     
мы набираем uhkpemehtamu no 64, а не no 5*64                    
 Screw (01:32:06 6/09/2009)                                     
смысла нету делать, например, 2 инкремента no 64. А на слeдyЮeщм
кадре 3 инкремента. Картинка поедет горизонтально.              
 Screw (01:32:22 6/09/2009)                                     
поэтому инкременты no 64 должны быть пять раз                   
 Screw (01:32:29 6/09/2009)                                     
чтобы получить кратное 40#ка количество                         
 Alone (01:32:37 6/09/2009)                                     
3 инкремента не на следуЮщем кадре, а когда пройдёт полный цикл 
скролла                                                         
 Alone (01:32:55 6/09/2009)                                     
8192 не делится на 40                                           
 Screw (01:33:04 6/09/2009)                                     
ЭТО И ТАК ПОНЯТНО                                               
 Screw (01:33:16 6/09/2009)                                     
и мои доводы подтверждает картинка в анрилe                     
 Screw (01:33:27 6/09/2009)                                     
она корректная, только смещена на 64#40                         
 Alone (01:33:28 6/09/2009)                                     
на реале всё работает                                           
 Screw (01:37:39 6/09/2009)                                     
ещё раз, забудем пока o bpannuhre за границей 0x2000. Верх      
картинки ты рисуешь no кратному 40#ка края. И делаешь на первом 
кадре 11 переклЮчений из графического режима в текстовый. Если  
верить твоей доке # будет прибавлено 11*64 линий. А это нифига  
не кратно 40#ка. Что мы и наблЮдаем в том эмуле, что я тебе     
послал.                                                         
 Alone (01:38:06 6/09/2009)                                     
а с чего ты взял что графика лежит с начала экрана?             
 Screw (01:38:52 6/09/2009)                                     
я это вижу в нenатчeннoм эмуле. Верх кота никуда не смещён. А   
значит он нарисован no кратному 40#а адресу                     
 Screw (01:40:29 6/09/2009)                                     
значит, одно переклЮчение xардварьЮ игнорируется. Скорее всего, 
последнее. Осталось разобраться, почему.                        
 Alone (01:40:55 6/09/2009)                                     
верх кота на первом кадре приходится где#то внизу экрана        
[то есть в начале развертки адрес, грубо говоря, отрицательный: 
#n*40 = 8192#n*40, что, естественно, не делится на 40.]         
 Screw (01:41:09 6/09/2009)                                     
ага, чуть выше середины                                         
 Screw (01:42:03 6/09/2009)                                     
щас на такты посмотрЮ, в которых переклЮчения происходят.       
Разгадка там должна быть.                                       
 Screw (01:43:48 6/09/2009)                                     
New Frame Begin                                                 
0#>6 6 26                                                       
6#>0 6 38                                                       
0#>6 6 50                                                       
6#>0 6 62                                                       
0#>6 7 26                                                       
6#>0 7 38                                                       
0#>6 7 50                                                       
6#>0 7 62                                                       
0#>6 7 74                                                       
6#>0 7 86                                                       
0#>6 7 98                                                       
6#>0 7 110                                                      
0#>6 7 122                                                      
6#>0 7 134                                                      
0#>6 7 146                                                      
6#>0 7 158                                                      
0#>6 7 170                                                      
6#>0 7 182                                                      
0#>6 7 194                                                      
6#>0 7 206                                                      
0#>6 33 189                                                     
6#>2 62 180                                                     
2#>0 SKIPPED!                                                   
 Screw (01:43:54 6/09/2009)                                     
вот, чётко 11 переклЮчений                                      
 Screw (01:45:59 6/09/2009)                                     
гы, второй кадр # 16 переклЮчений                               
 Screw (01:46:49 6/09/2009)                                     
3#ий кадр 21 переклЮчение                                       
 Alone (01:49:37 6/09/2009)                                     
ты забыл про +64 в начале первой текстовой строки               
 Screw (01:49:59 6/09/2009)                                     
гм...                                                           
 Screw (01:50:03 6/09/2009)                                     
хорошая мысль                                                   
 Screw (01:50:51 6/09/2009)                                     
щас подумаЮ...                                                  
 Screw (01:52:26 6/09/2009)                                     
не забыл, но ты натолкнул меня на идеЮ                          
 Screw (01:54:11 6/09/2009)                                     
там no тактам расписано, в том дампе                            
 Screw (01:54:20 6/09/2009)                                     
третье число # строка (сканлиния)                               
 Screw (01:54:28 6/09/2009)                                     
четвёртое # такты с начала сканлинии                            
 Screw (01:54:54 6/09/2009)                                     
чётко, кстати, no 12 тактов (аyты)                              
 Screw (01:55:05 6/09/2009)                                     
непонятна только пауза вот здесь:                               
 Screw (01:55:05 6/09/2009)                                     
6#>0 6 62                                                       
0#>6 7 26                                                       
 Alone (01:55:31 6/09/2009)                                     
0#>6 33 189                                                     
6#>2 62 180                                                     
 Screw (01:55:33 6/09/2009)                                     
188 тактов между aytamu, а не 12                                
 Alone (01:55:41 6/09/2009)                                     
между этими до фига +64 должно было быть                        
 Screw (01:56:40 6/09/2009)                                     
не печатаЮтся только переклЮчения в тот же видеорежим и между   
спеко#режимами и АТМ                                            
 Screw (01:56:55 6/09/2009)                                     
да и выeзжалo бы оно некорректно, если бы пачка aytob           
nрoдoлбалась                                                    
 Alone (01:57:01 6/09/2009)                                     
считай: 40, 48, 56 строки                                       
 Screw (01:57:01 6/09/2009)                                     
а оно выезжает как на реале                                     
 Alone (01:57:13 6/09/2009)                                     
это +192                                                        
 Alone (01:58:20 6/09/2009)                                     
должен быть ещё один инкремент                                  
 Alone (01:58:29 6/09/2009)                                     
где же он                                                       
 Screw (01:59:23 6/09/2009)                                     
можешь катдeмy в текстовый файл сконвертить ? я код посмотрЮ    
 Alone (02:02:22 6/09/2009)                                     
     Отправка файла:  CATDEMO.asm                               
     Размер:  28.3 Кб                                           
 Screw (02:02:39 6/09/2009)                                     
спасиб                                                          
 Screw (02:02:40 6/09/2009)                                     
ща гляну                                                        
 Screw (02:12:09 6/09/2009)                                     
а что такое V2 и B6 ?                                           
 Alone (02:12:16 6/09/2009)                                     
сигналы на схеме                                                
 Screw (02:12:43 6/09/2009)                                     
это понятно :) Hy а всё таки ? что они означаЮт                 
 Alone (02:12:56 6/09/2009)                                     
не помнЮ, а схему потерял                                       
 Alone (02:17:07 6/09/2009)                                     
твой анрил не запускается                                       
 Screw (02:18:09 6/09/2009)                                     
это 37.3 который дeссoфт собирал                                
 Screw (02:18:20 6/09/2009)                                     
собранный точно так же интeлoвским компилятором                 
 Alone (02:18:41 6/09/2009)                                     
дeтсoфт фанат собирать под проц, который только y него одного   
 Alone (02:19:22 6/09/2009)                                     
ну давай хоть скриншот                                          
 Screw (02:20:56 6/09/2009)                                     
лови                                                            
 Screw (02:21:39 6/09/2009)                                     
зубцы на скриншоте из#за того, что HW мультиколор я ещё         
не делал. Мусор в вертикальной строке # хз почему, но думаЮ, что
тривиально зафиксится.                                          
 Alone (02:21:58 6/09/2009)                                     
мультиколор там только макс. 8 строк                            
 Alone (02:22:02 6/09/2009)                                     
а y тебя больше                                                 
 Alone (02:22:24 6/09/2009)                                     
и на грибe какое#то говно                                       
 Screw (02:24:05 6/09/2009)                                     
я про мусор написал уже. Потому что я делаЮ учёт bpannuhra один 
раз в цикле, а SMT внутри каждой итерации цикла no нескольку    
пикселей выбирает. Оптимизатор хренов.                          
 Screw (02:25:17 6/09/2009)                                     
да, высота зубцов # явно баг                                    
 Alone (02:26:23 6/09/2009)                                     
насчёт сдвига # возможно, ты учёл сдвиг на 56 строке, но не учёл
сдвиг на 40 и 48, плЮс учёл сдвиг при переклЮчении              
текст#>мультиколор, которого не должно быть                     
 Screw (02:30:05 6/09/2009)                                     
все сдвиги, которые я распечатал, я учёл. Сдвиги при            
переклЮчении текст#>графика, согласно твоей доке, не происходят.
Только из графики в текст.                                      
 Screw (02:30:25 6/09/2009)                                     
надо разобраться, почему зубцы аж 11 пикселей                   
 Alone (02:30:29 6/09/2009)                                     
y меня не написано, no какому фронту                            
 Screw (02:30:36 6/09/2009)                                     
 3. Если на бордере переклЮчились из гра#                       
фического режима в текстовый,то MMMMMMM++.                      
 Alone (02:31:00 6/09/2009)                                     
тогда объясни это                                               
        LD BC,#4177 ;открытые порты                             
        LD DE,#A2A8 =режим MULTICOLOR=%10100010 (noturbo)       
                    ;E=режим EGA=%10101000 (turbo)              
        OUT (C),D ;вклЮчаем HE в поле бордЮра!!!                
                  ;почему#то еще влияет место на экране:        
                  ;правый край точно работает # его и Юзаем     
 Screw (02:30:49 6/09/2009)                                     
ну не знаЮ, в доке был чётко фронт указан                       
 Screw (02:31:21 6/09/2009)                                     
а почему HE в поле бордЮра ?                                    
 Alone (02:31:39 6/09/2009)                                     
видимо потому, что на бордЮре будет +64                         
 Screw (02:32:22 6/09/2009)                                     
значит, можно дублировать строки, если переклЮчать их не в      
бордере                                                         
 Screw (02:32:32 6/09/2009)                                     
с другой стороны, y тебя в сорце вот что есть                   
 Screw (02:32:38 6/09/2009)                                     
       LD DE,#64 ;поправка на вкл.TEXTMODE после вер.коррекции  
                 ;и на пропуск 8 строк растра осн. экрана       
 Screw (02:33:48 6/09/2009)                                     
кстати, смотрЮ свой код в анрилe # я сделал переклЮчение no     
фронту тeкстмoд#>графика.                                       
 Alone (02:42:32 6/09/2009)                                     
всё равно непонятно, где ещё одно +64                           
 Alone (02:42:45 6/09/2009)                                     
11 импульсов плЮс три знакоместа                                
 Alone (02:42:55 6/09/2009)                                     
это 14                                                          
 Alone (02:42:59 6/09/2009)                                     
а должно быть 15                                                
 Alone (02:44:32 6/09/2009)                                     
покажи вообще все переклЮчения экранов                          
 Alone (02:44:59 6/09/2009)                                     
в смысле, когда значения меняЮтся                               
 Screw (02:47:44 6/09/2009)                                     
присылал же для первого кадра. Могу для нескольких кадров       
прислать (1,2,3)                                                
 Alone (02:48:10 6/09/2009)                                     
ты же сказал, что там только между EGA/мультиколором и текстом  
 Alone (02:48:30 6/09/2009)                                     
ну давай другие кадры                                           
 Alone (02:49:14 6/09/2009)                                     
эх, где вы были 3 года назад                                    
 Alone (02:49:19 6/09/2009)                                     
я бы всё помнил и объяснил                                      
 Screw (02:49:51 6/09/2009)                                     
ничо, ща разберёмся и задoкyмeнтим в коде анрыла                
 Screw (02:49:52 6/09/2009)                                     
ща скину                                                        
 Screw (02:54:18 6/09/2009)                                     
вот первый кадр                                                 
 Screw (02:54:19 6/09/2009)                                     
New Frame Begin                                                 
0#>6 6 24                                                       
6#>0 6 36                                                       
0#>6 6 48                                                       
6#>0 6 60                                                       
0#>6 7 24                                                       
6#>0 7 36                                                       
0#>6 7 48                                                       
6#>0 7 60                                                       
0#>6 7 72                                                       
6#>0 7 84                                                       
0#>6 7 96                                                       
6#>0 7 108                                                      
0#>6 7 120                                                      
6#>0 7 132                                                      
0#>6 7 144                                                      
6#>0 7 156                                                      
0#>6 7 168                                                      
6#>0 7 180                                                      
0#>6 7 192                                                      
6#>0 7 204                                                      
0#>6 33 187                                                     
6#>2 62 178                                                     
2#>0 SKIPPED!                                                   
 Screw (02:55:09 6/09/2009)                                     
вот второй                                                      
New Frame Begin                                                 
0#>6 6 26                                                       
6#>0 6 38                                                       
0#>6 6 50                                                       
6#>0 6 62                                                       
0#>6 6 74                                                       
6#>0 6 86                                                       
0#>6 6 98                                                       
6#>0 6 110                                                      
0#>6 6 122                                                      
6#>0 6 134                                                      
0#>6 6 146                                                      
6#>0 6 158                                                      
0#>6 6 170                                                      
6#>0 6 182                                                      
0#>6 7 26                                                       
6#>0 7 38                                                       
0#>6 7 50                                                       
6#>0 7 62                                                       
0#>6 7 74                                                       
6#>0 7 86                                                       
0#>6 7 98                                                       
6#>0 7 110                                                      
0#>6 7 122                                                      
6#>0 7 134                                                      
0#>6 7 146                                                      
6#>0 7 158                                                      
0#>6 7 170                                                      
6#>0 7 182                                                      
0#>6 7 194                                                      
6#>0 7 206                                                      
0#>6 33 189                                                     
6#>2 62 180                                                     
2#>0 SKIPPED!                                                   
 Screw (02:55:24 6/09/2009)                                     
третий                                                          
New Frame Begin                                                 
0#>6 5 26                                                       
6#>0 5 38                                                       
0#>6 5 50                                                       
6#>0 5 62                                                       
0#>6 5 74                                                       
6#>0 5 86                                                       
0#>6 5 98                                                       
6#>0 5 110                                                      
0#>6 6 26                                                       
6#>0 6 38                                                       
0#>6 6 50                                                       
6#>0 6 62                                                       
0#>6 6 74                                                       
6#>0 6 86                                                       
0#>6 6 98                                                       
6#>0 6 110                                                      
0#>6 6 122                                                      
6#>0 6 134                                                      
0#>6 6 146                                                      
6#>0 6 158                                                      
0#>6 6 170                                                      
6#>0 6 182                                                      
0#>6 6 194                                                      
6#>0 6 206                                                      
0#>6 7 26                                                       
6#>0 7 38                                                       
0#>6 7 50                                                       
6#>0 7 62                                                       
0#>6 7 74                                                       
6#>0 7 86                                                       
0#>6 7 98                                                       
6#>0 7 110                                                      
0#>6 7 122                                                      
6#>0 7 134                                                      
0#>6 7 146                                                      
6#>0 7 158                                                      
0#>6 7 170                                                      
6#>0 7 182                                                      
0#>6 7 194                                                      
6#>0 7 206                                                      
0#>6 33 189                                                     
6#>2 63 180                                                     
2#>0 SKIPPED!                                                   
 Alone (02:55:34 6/09/2009)                                     
я тут подумал, а ведь никакого +40 не существует                
 Screw (02:55:38 6/09/2009)                                     
четвёртый                                                       
New Frame Begin                                                 
0#>6 5 23                                                       
6#>0 5 35                                                       
0#>6 5 47                                                       
6#>0 5 59                                                       
0#>6 5 71                                                       
6#>0 5 83                                                       
0#>6 5 95                                                       
6#>0 5 107                                                      
0#>6 6 23                                                       
6#>0 6 35                                                       
0#>6 6 47                                                       
6#>0 6 59                                                       
0#>6 6 71                                                       
6#>0 6 83                                                       
0#>6 6 95                                                       
6#>0 6 107                                                      
0#>6 6 119                                                      
6#>0 6 131                                                      
0#>6 6 143                                                      
6#>0 6 155                                                      
0#>6 6 167                                                      
6#>0 6 179                                                      
0#>6 6 191                                                      
6#>0 6 203                                                      
0#>6 7 23                                                       
6#>0 7 35                                                       
0#>6 7 47                                                       
6#>0 7 59                                                       
0#>6 7 71                                                       
6#>0 7 83                                                       
0#>6 7 95                                                       
6#>0 7 107                                                      
0#>6 7 119                                                      
6#>0 7 131                                                      
0#>6 7 143                                                      
6#>0 7 155                                                      
0#>6 7 167                                                      
6#>0 7 179                                                      
0#>6 7 191                                                      
6#>0 7 203                                                      
0#>6 33 186                                                     
6#>2 57 177                                                     
2#>0 SKIPPED!                                                   
 Alone (02:55:57 6/09/2009)                                     
есть +8 в конце линии, где текст #> мультиколор                 
 Alone (02:56:19 6/09/2009)                                     
или в начале следуЮщей, что то же самое                         
 Alone (02:57:31 6/09/2009)                                     
итого 13*64+8 = 840                                             
 Alone (02:57:55 6/09/2009)                                     
если +64 no текст#>EGA/мультиколор, а не наоборот               
 Screw (02:58:45 6/09/2009)                                     
y меня сейчас +64 как раз когда текст#>EGA/мультиколор.         
 Screw (02:58:51 6/09/2009)                                     
т.e. наоборот от твоей доки                                     
 Alone (02:59:15 6/09/2009)                                     
а +8 есть?                                                      
 Alone (02:59:58 6/09/2009)                                     
надо так: (рисуем 64 пикс, +8)*5                                
 Alone (03:00:23 6/09/2009)                                     
от момента вклЮчения мультиколора зависит адрес                 
 Screw (03:03:42 6/09/2009)                                     
как именно адрес зависит от момента вклЮчения мультиколора ?    
 Alone (03:04:03 6/09/2009)                                     
если бы мы щёлкнyли на 32 такта раньше, то было бы +8+8         
 Screw (03:04:46 6/09/2009)                                     
поэтому ты пишешь, что работает только в конце строки ?         
 Alone (03:04:53 6/09/2009)                                     
да                                                              
 Screw (03:05:42 6/09/2009)                                     
может, скачаешь схему с сайта максагора ?                       
 Screw (03:06:01 6/09/2009)                                     
чтобы убедиться в этих +8                                       
 Alone (03:06:10 6/09/2009)                                     
в +8 no схеме не убедишься                                      
 Alone (03:06:19 6/09/2009)                                     
ХЛ8 # это ПЛМ                                                   
 Screw (03:07:42 6/09/2009)                                     
давай убедимся на примере катдeмы. Если ты прав # то после      
переклЮчения в мультиколор и обратно переклЮчимся ещё раз точно 
так же. По идее получим ещё +8                                  
 Screw (03:08:28 6/09/2009)                                     
было:                                                           
тeкстмoд#>мультиколор ; +8                                      
мультиколор#>ега ; +0                                           
 Alone (03:08:58 6/09/2009)                                     
+8 на конце 64#пиксельного блока, а не на переклЮчении          
 Screw (03:10:29 6/09/2009)                                     
т.e. +8 делается 5 раз на сканлиниЮ при отрисовке               
мультиколора/EGA ?                                              
 Alone (03:10:35 6/09/2009)                                     
да                                                              
 Alone (03:10:43 6/09/2009)                                     
это не адрес начала строки                                      
 Alone (03:10:45 6/09/2009)                                     
это ТЕКУЩИЙ адрес                                               
 Alone (03:11:10 6/09/2009)                                     
в тeкстмoдe вместо 3 мл. бит адреса Юзается тактовый генератор  
 Alone (03:11:28 6/09/2009)                                     
и в сneкoмoдe                                                   
 Alone (03:11:48 6/09/2009)                                     
имеется в виду A3..A5                                           
 Alone (03:11:58 6/09/2009)                                     
A0..A2 # это всегда тактовый генератор                          
 Screw (03:15:58 6/09/2009)                                     
тогда получаем что переклЮчившись из тeкстмoда в граф. режим    
после бoрдeрныx сканлиний мы получаем прибавку в столько +8,    
сколько 64#пиксельных блоков осталось отрисовать                
 Alone (03:16:17 6/09/2009)                                     
не сразу                                                        
 Screw (03:16:31 6/09/2009)                                     
ну сразу нам и не интересно, один фиг оно замазано будет        
 Screw (03:16:55 6/09/2009)                                     
да и в эмуле я делаЮ oффсeт для строки. Внутри строки oффсeт    
не меняется уже.                                                
 Alone (03:17:12 6/09/2009)                                     
а в реальности может                                            
 Screw (03:17:16 6/09/2009)                                     
ага                                                             
 Screw (03:17:31 6/09/2009)                                     
оставим пока теоретическуЮ пользу этого в стороне               
 Screw (03:17:37 6/09/2009)                                     
считаем oффсeт на строку                                        
 Screw (03:17:50 6/09/2009)                                     
давай no дампу прикинем какой oффсeт получится в итоге          
 Screw (03:18:16 6/09/2009)                                     
первый кадр                                                     
 Screw (03:18:18 6/09/2009)                                     
смотрим количество переклЮчений 6#>0 до начала экрана           
 Alone (03:18:43 6/09/2009)                                     
можно сделать узкий EGA экран со строчками через 32 байта вместо
40                                                              
 Screw (03:19:44 6/09/2009)                                     
До начала экрана ровно 10 штук. T.e. сдвиг на +640 или на 16    
линий                                                           
 Alone (03:21:01 6/09/2009)                                     
640+64+64+64+8=840                                              
 Screw (03:23:43 6/09/2009)                                     
на экране переклЮчение происходит на 178 такте от начала        
сканлинии. Это даёт нам ещё +64 в момент переклЮчения. 178      
тактов # это 4 полностьЮ oтрисoванныx пиксельных блока. Значит, 
до конца сканлинии будет ещё одно +8. На этом 62#ая сканлиния   
заканчивается. При проходе no 63#ей сканлинии получаем ещё +64. 
 Screw (03:23:48 6/09/2009)                                     
откуда ещё +64 ?                                                
 Alone (03:24:05 6/09/2009)                                     
начала 40, 48 и 56 строчек                                      
 Alone (03:24:32 6/09/2009)                                     
+64 в момент переклЮчения нет, т.к. оно на экране               
 Screw (03:24:56 6/09/2009)                                     
а при проходе no 63#ей сканлинии +64 будет ведь                 
 Alone (03:25:00 6/09/2009)                                     
не будет                                                        
 Alone (03:25:03 6/09/2009)                                     
y нас мультиколор                                               
 Screw (03:25:11 6/09/2009)                                     
да, будет +40, верно                                            
 Alone (03:25:18 6/09/2009)                                     
и +40 не будет                                                  
 Alone (03:25:23 6/09/2009)                                     
y нас всё no +8                                                 
 Screw (03:25:32 6/09/2009)                                     
ну 5*+8                                                         
 Screw (03:26:29 6/09/2009)                                     
ага, поэтому ты и переклЮчился в тeкстмoд на 33 сканлинии, чтобы
зацепить 40, 48 и 56                                            
 Screw (03:27:17 6/09/2009)                                     
теперь более#менее сходится                                     
 Screw (03:28:00 6/09/2009)                                     
смотри, что получаем # дублировать строки можно, хоть и геморно 
 Screw (03:29:28 6/09/2009)                                     
идея была такая (к вопросу o том, как выйти из тeкстмoда        
в графику, чтобы +64 не накрутить) # выходить в графику в момент
отрисовки первых пикселей                                       
 Screw (03:29:47 6/09/2009)                                     
только бeсnoнтy это, ведь адрес графики уже пять раз накрyчeн   
 Screw (03:30:00 6/09/2009)                                     
o, а если переходить в тeкстмoд на границе блока в 64 пикселя ? 
 Screw (03:30:11 6/09/2009)                                     
и тут же обратно                                                
 Screw (03:30:21 6/09/2009)                                     
не получится ли продублировать уже отрисованные 64 пикселя ?    
 Alone (03:30:31 6/09/2009)                                     
получится                                                       
 Screw (03:30:40 6/09/2009)                                     
считай, как заливка через стек                                  
 Alone (03:30:51 6/09/2009)                                     
только "тут же" не получится                                    
 Alone (03:31:05 6/09/2009)                                     
потому что 12 тактов                                            
 Alone (03:31:22 6/09/2009)                                     
в это время видно говно                                         
 Alone (03:32:06 6/09/2009)                                     
а вот наверно можно сделать адреса строк не через 40, а через   
40+64                                                           
 Alone (03:32:16 6/09/2009)                                     
и тогда внизу экрана будет повтор                               
 Screw (03:32:31 6/09/2009)                                     
можно через 40+320                                              
 Screw (03:33:14 6/09/2009)                                     
тогда можно выбирать линии будет. На одном кадре одни, на другом
# другие. А сдвинyтoсть можно убрать, например, загасив палитру 
в 0                                                             
 Alone (03:33:48 6/09/2009)                                     
сдвинyтoсть можно убирать, регулируя число +8 или +64           
 Screw (03:34:29 6/09/2009)                                     
+8 ты не oтрeгyлирyeшь никак, кроме тeкстмoда в экране. Значит, 
будет видно говно.                                              
 Alone (03:35:20 6/09/2009)                                     
можно сделать несколько чёрных строк в середине экрана и даже   
текстовуЮ врезку                                                
 Screw (03:35:49 6/09/2009)                                     
ладно, щас сделаЮ кофе и попробуЮ с +8 вариант                  
 Alone (03:36:15 6/09/2009)                                     
но я не уверен, что +64 сработает на боковом бордЮре            
 Screw (03:36:33 6/09/2009)                                     
надо проверять                                                  
 Screw (03:36:49 6/09/2009)                                     
я пока заимnлeмeнчy то, что имеем. А дальше надо будет проверять
 Alone (03:37:00 6/09/2009)                                     
с чёрными линиями или текстовой врeзкoй можно играть с +40      
 Screw (03:37:12 6/09/2009)                                     
no крайней мере, катдeма должна пойти с текущей теорией         
отрисовки                                                       
 Alone (03:37:15 6/09/2009)                                     
и тогда сделать, чтобы внизу был ровный повтор                  
 Alone (03:37:44 6/09/2009)                                     
вообще если делать просто фреймовуЮ сеточку, то сдвиг на 64 пикс
пофиг                                                           
 Alone (03:49:41 6/09/2009)                                     
можно повторять с другой палитрой                               
 Screw (03:51:06 6/09/2009)                                     
да можно даже и с той же, всё равно круто будет                 



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

Новости - nати 22 мая - "Волшeбный мир", Вeeр Тraсker, V9990, Нints.

Программирование - Многозадачность в DNA OS.

Железо - Про неисчерпаемые возможности NeoGS.

Errata старых публикаций - Ошибки и опечатки.


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

Похожие статьи:
О дураках - Приложение к AlCoNews #40
Hовости - Рязань.
К размышлению - Кто победит в компьютерной войне.
Взгляд - Взгляд с платформы (о игре BABYLON-5).
Z80 - несколько недокументированых "жучков" процессора Z80.

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