Page 6 of 7

Re: Графические режимы TS-Config

PostPosted: Sun, 07.09.2014 10:51:18
by TS-Labs
На спринтере это было искаробочно. Там на каждый пиксель с памяти читался графрежим, в котором этот пиксель рисовать. Так спринтер и был конем педальным, да простят мну за резкость.

Re: Графические режимы TS-Config

PostPosted: Sun, 07.09.2014 10:52:06
by TS-Labs
MVV wrote:samanasuke, да можно там все попробовать сделать, к примеру как полупрозрачные OSD в мониторах, только скорей всего это будет уже на другом железе :) Evo просто не тянет уже ничего :)

(Интересно, удалит сообщение или нет?..)

Re: Графические режимы TS-Config

PostPosted: Sun, 07.09.2014 10:57:41
by MVV
TS-Labs wrote:(Интересно, удалит сообщение или нет?..)

Подредактировал немного.

У меня вопрос, по поводу видео режимов, проблема в том, что многие телики не поддерживают @49/50Hz, а режим 60Hz не полностью виден по высоте :)
- видео-режим (ZX, 16 цветов и 256 цветов, текстовый)
- графическое разрешение экрана: 256x192, 320x200, 320x240 и 360x288
можно ли добавить хоть один стандартный VESA DMT 640х480@60Hz ?

Re: Графические режимы TS-Config

PostPosted: Sun, 07.09.2014 11:04:09
by Sergey78
MVV wrote:проблема в том, что многие телики не поддерживают @49/50Hz

Если телевизор не держит 50 Гц, место ему на помойке.

Re: Графические режимы TS-Config

PostPosted: Sun, 07.09.2014 11:06:47
by MVV
Sergey78 wrote:Если телевизор не держит 50 Гц, место ему на помойке.

Скорее там будет железо, которое не умеет универсально работать с видео :)

Re: Графические режимы TS-Config

PostPosted: Sun, 07.09.2014 11:07:29
by TS-Labs
MVV wrote:У меня вопрос, по поводу видео режимов, проблема в том, что многие телики не поддерживают @49/50Hz, а режим 60Hz не полностью виден по высоте :)

Предлагается повторять до полного запоминания:
1. Спектрум должен работать в режиме 50гц, иначе все поплывет к хуям - демы, режимы, етц.
2. Если нужно сделать развертку 60гц то есть джва пути:
а) поднять частоту на 20% но тогда все будет лялякать,
б) сделать кадровый даблер, который будет использовать буфер, размером с кадр, в который будут асинхронно писать с одной стороны видеоконтроллер спектрума (работающий на частоте 50гц), а с другой читать контроллер монитора (работающий на частоте 60гц). При этом мы предсказуемо получим ломку кадров называемую tearing effect. Но это уже хоть чтото. (Я краем уха слышал что рррурер-ua реализовал нечто подобное, но не видел.)

Re: Графические режимы TS-Config

PostPosted: Sun, 07.09.2014 11:08:05
by TS-Labs
MVV wrote:можно ли добавить хоть один стандартный VESA DMT 640х480@60Hz ?

В пентеву - нет.

Re: Графические режимы TS-Config

PostPosted: Sun, 07.09.2014 11:20:47
by MVV
TS-Labs wrote:б) сделать кадровый даблер, который будет использовать буфер, размером с кадр, в который будут асинхронно писать с одной стороны видеоконтроллер спектрума (работающий на частоте 50гц), а с другой читать контроллер монитора (работающий на частоте 60гц). При этом мы предсказуемо получим ломку кадров называемую tearing effect. Но это уже хоть чтото. (Я краем уха слышал что рррурер-ua реализовал нечто подобное, но не видел.)

Да вроде как работает с тремя фрейм-буферами на 60Hz (частота кадров и разрешение могут быть уже на выбор) без визуальных артифактов. Нужно дождаться полного заполнения одного из буферов спеком, потом подставить следующий, а предыдущий выводить.
Пока не внедрял из-за большого аппетита к ресурсам (память), но думаю сейчас на U16 уже станет возможно.

Re: Графические режимы TS-Config

PostPosted: Sun, 07.09.2014 11:38:33
by TS-Labs
Отлично. Возможно тэринг заменится на дублирующиеся кадры, что еще лучше.

Re: Графические режимы TS-Config

PostPosted: Sun, 07.09.2014 11:39:03
by TS-Labs
Заметно будет только на бегучках и гигаскринах.

Re: Графические режимы TS-Config

PostPosted: Sun, 07.09.2014 11:51:26
by MVV
Для видеорежима пентагона:
x=64+256+64
y=56+192+56
(384x304)
384/2=(192x304)=58368 байт/буфер х 3 = 192КБ
И это все, только ради того, что-бы увидеть мультиколор :) А не проще уже переключиться в графический режим с цветом на точку...
TS-Labs wrote:Заметно будет только на бегучках и гигаскринах.

В эмулях на РС особенно заметно :)

Re: Графические режимы TS-Config

PostPosted: Sun, 07.09.2014 12:26:46
by TS-Labs
MVV wrote:А не проще уже переключиться в графический режим с цветом на точку...

А не проще переключиться на другое коммьюнити, где не задрачивают на архитектуру 1981 года...

Re: Графические режимы TS-Config

PostPosted: Sun, 07.09.2014 13:35:50
by MVV
TS-Labs wrote:А не проще переключиться на другое коммьюнити, где не задрачивают на архитектуру 1981 года...

А почему бы и нет...

Re: Графические режимы TS-Config

PostPosted: Mon, 08.09.2014 19:54:51
by shurik-ua
TS-Labs wrote:Я краем уха слышал что рррурер-ua реализовал нечто подобное, но не видел.

Да не - то монитор не тянул 50 Гц и я сделал обычный режим 256х192 но только на 60 Гц, на демы и игры мне было пофиг, хотел посмотреть до чего дошёл прогресс в спековских делах )

Code: Select all
-------------------------------------------------------------------[20.07.2013]
-- spec_video_60
-------------------------------------------------------------------------------
-- Engineer:    shurik-ua, MVV
-- Description:
--   spectrum video mode 60 Hz
--   horis_sync = 30000 kHz
--  vert_sync   = 60 Hz
--
-- Versions:
-- V1.00   14.07.2013:
--      Initial release.
-- V1.01 16.07.2013:
--      Добавлены сигналы INT, INTA
-- V1.02 20.07.2013:
--      небольшие оптимизации
-- V1.03 07.09.2013:
--      final release
-------------------------------------------------------------------------------


library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.numeric_std.ALL;

entity spec_video_60 is
   port (
      CLK         : in std_logic;      --12 MHz
      DI         : in std_logic_vector(7 downto 0);
      BORDER      : in std_logic_vector(2 downto 0);
      ADDR      : out std_logic_vector(12 downto 0);
      INTA      : in std_logic;
      INT         : out std_logic;
      R         : out std_logic_vector(2 downto 0);
      G         : out std_logic_vector(2 downto 0);
      B         : out std_logic_vector(2 downto 0);
      HS         : out std_logic;
      VS         : out std_logic
   );
end   entity spec_video_60;

architecture rtl of spec_video_60 is


signal h_cnt      : std_logic_vector (8 downto 0) :=(others => '0');
signal v_cnt      : std_logic_vector (8 downto 0) :=(others => '0');
signal out_data      : std_logic_vector(5 downto 0) :=(others => '0');
signal blank      : std_logic;
signal pixel      : std_logic;
signal pixel_out   : std_logic;
signal pixel_data   : std_logic_vector(7 downto 0);
signal attr_data   : std_logic_vector(7 downto 0);
signal tmp         : std_logic_vector(7 downto 0);
signal bord         : std_logic;
signal flash      : std_logic_vector(4 downto 0);

begin

process (CLK)
begin
   if rising_edge(CLK) then
      if h_cnt = 399 then
         h_cnt <= (others => '0');
         if v_cnt = 499 then
            v_cnt <= (others => '0');
            flash <= flash +1;
         else
            v_cnt <= v_cnt + 1;
         end if;
      else
         h_cnt <= h_cnt + 1;
      end if;
   end if;
end process;   

process (CLK,h_cnt(2 downto 0))   
begin
   if rising_edge(CLK) then
      case h_cnt (2 downto 0) is
         when "011" =>          
            ADDR <= v_cnt(8 downto 7) & v_cnt(3 downto 1) & v_cnt(6 downto 4) & h_cnt(7 downto 3);
         when "101" =>             
            tmp <= DI;            
            ADDR <= "110" & v_cnt(8 downto 4) & h_cnt(7 downto 3);               
         when "111" =>
            pixel_data <= tmp;
            attr_data <= DI;            
         when others =>
      end case;
   end if;
end process;

process (h_cnt(2 downto 0),pixel_data)   
begin
   case h_cnt (2 downto 0) is
      when "000" =>
         pixel <= pixel_data(7);            
      when "001" =>
         pixel <= pixel_data(6);                                 
      when "010" =>             
         pixel <= pixel_data(5);                     
      when "011" =>
         pixel <= pixel_data(4);            
      when "100" =>
         pixel <= pixel_data(3);            
      when "101" =>
         pixel <= pixel_data(2);
      when "110" =>
         pixel <= pixel_data(1);
      when others =>
         pixel <= pixel_data(0);
   end case;
end process;

process (CLK,blank,pixel_out,attr_data)   
begin
   if rising_edge(CLK) then
      if blank = '1' then out_data <= (others => '0');
      elsif bord = '1' then out_data <= BORDER(1) & '0' & BORDER(2) & '0' & BORDER(0) & '0';
      elsif pixel_out = '0' then out_data <= attr_data(4) & (attr_data(4) and attr_data(6)) & attr_data(5) & (attr_data(5) and attr_data(6)) & attr_data(3) & (attr_data(3) and attr_data(6));
      else out_data <=  attr_data(1) & (attr_data(1) and attr_data(6)) & attr_data(2) & (attr_data(2) and attr_data(6)) & attr_data(0) & (attr_data(0) and attr_data(6));
      end if;      
   end if;
end process;

-- INT
process (CLK, INTA, v_cnt, h_cnt)
begin
   if INTA = '1' then
      INT <= '0';
   elsif CLK'event and CLK = '1' then
      if v_cnt = 436 and h_cnt = 0 then
         INT <= '1';
      end if;
   end if;
end process;

pixel_out <= pixel when attr_data(7) = '0' else pixel xor flash(4);

blank <= '1' when ((h_cnt > 315) and (h_cnt <370)) or ((v_cnt > 433 ) and (v_cnt < 450)) else '0';
bord <='1' when (h_cnt > 263) or (h_cnt <8) or (v_cnt > 383 )  else '0';

HS <= '1' when (h_cnt > 313) and (h_cnt < 358) else '0';
VS <= '1' when (v_cnt > 429) and (v_cnt < 432) else '0';

R <= out_data (5 downto 4) & 'Z';
G <= out_data (3 downto 2) & 'Z';
B <= out_data (1 downto 0) & 'Z';

end   architecture rtl;

Re: Графические режимы TS-Config

PostPosted: Tue, 09.09.2014 04:27:21
by TS-Labs
А, ок )

Re: Графические режимы TS-Config

PostPosted: Tue, 09.09.2014 08:08:15
by MC68k
shurik-ua wrote: на демы и игры мне было пофиг, хотел посмотреть до чего дошёл прогресс в спековских делах )

Image

Re: Графические режимы TS-Config

PostPosted: Tue, 09.09.2014 18:59:07
by TS-Labs
О даблерах.
В планах год-полтора назад было впилить в пентеву. Работает через ФИФО: идет за лучом и гребет видеосигнал в формате 8 бит на пиксель (для текстмода 2 по 4), в свободных циклах дропает его в ОЗУ. На рисование наоборот: подтягивает из ОЗУ дату и выпихивает ее в луч на пиксельклоке. Из минусов - сильно отожрет циклы ОЗУ. На циклоно-клонах будет сильно попроще, можно грести бурстами на частоте сдрамы.

Re: Графические режимы TS-Config

PostPosted: Tue, 09.09.2014 19:05:46
by TS-Labs
samanasuke wrote:все эти "извращения" обсуждаются с целью сохранить в неприкосновенности спековский экран, но при этом ещё и попользоваться последними достижениями научно-технического прогресса в области 360х288 и 16 цветов на точку (по желанию можно 256 цветов) плюс спрайты. И что бы в результате этот монстр (в хорошем смысле слова) всё ещё оставался спектрумом не только опционально.

Так никто не мешает включать спрайты поверх 6912. Кстати, будет еще впилен режим ТСУ не обрезаемого бордюром, тогда вообще сможешь рисовать "на бордере" в 16 цветах на точку.

Re: Графические режимы TS-Config

PostPosted: Tue, 09.09.2014 19:30:37
by samanasuke
TS-Labs wrote:...будет еще впилен режим ТСУ не обрезаемого бордюром, тогда вообще сможешь рисовать "на бордере" в 16 цветах на точку.

ВОООООООТ!!! Это именно то чего мне не хватало! Уууух! Буду ждать. :)

Re: Графические режимы TS-Config

PostPosted: Thu, 11.09.2014 16:26:56
by TS-Labs
Какбэ сделал.
IMG_5718.JPG

Однако все опять уперлось в место. Фича отхавала 30 ЛЕ. Много это или мало - как 3 волоска в супе. Немного, но когда остается 2% объема микрухи - непозволительная роскошь. Поэтому в текущей ревизии закомментировано.

Re: Графические режимы TS-Config

PostPosted: Thu, 11.09.2014 20:49:39
by TS-Labs
Добавил в версию с видеоЦАПом. Она может работать и на евах без видеоЦАПа, просто не будет ИДЕ.

Re: Графические режимы TS-Config

PostPosted: Thu, 11.09.2014 20:55:17
by TS-Labs
Ржачно.
IMG_5719.JPG

Re: Графические режимы TS-Config

PostPosted: Thu, 11.09.2014 21:20:05
by LessNick
TS-Labs wrote:Ржачно.


эээ… не уж-то стала реализуема моя давняя мечта, сделать фоновую картинку в текстовом режиме?

Re: Графические режимы TS-Config

PostPosted: Thu, 11.09.2014 21:22:18
by TS-Labs
В текстовом режиме 16 цветов (1 палитра).

Re: Графические режимы TS-Config

PostPosted: Thu, 11.09.2014 21:27:29
by TS-Labs
Я постоянно забываю почему, и постоянно вспоминаю, что для экономии альтеропамяти для ВГА-даблера. Щас тратится 2 штуки памяти (в бейзконфе 3, и там можно было бы сделать 8 бит в хайрезе).