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

Документация, FAQ-и

Postby TS-Labs » Sun, 07.09.2014 10:51:18

На спринтере это было искаробочно. Там на каждый пиксель с памяти читался графрежим, в котором этот пиксель рисовать. Так спринтер и был конем педальным, да простят мну за резкость.
User avatar
TS-Labs
 
Posts: 5018
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Sun, 07.09.2014 10:52:06

MVV wrote:samanasuke, да можно там все попробовать сделать, к примеру как полупрозрачные OSD в мониторах, только скорей всего это будет уже на другом железе :) Evo просто не тянет уже ничего :)

(Интересно, удалит сообщение или нет?..)
User avatar
TS-Labs
 
Posts: 5018
Joined: Thu, 26.07.2012 01:29:56

Postby MVV » Sun, 07.09.2014 10:57:41

TS-Labs wrote:(Интересно, удалит сообщение или нет?..)

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

У меня вопрос, по поводу видео режимов, проблема в том, что многие телики не поддерживают @49/50Hz, а режим 60Hz не полностью виден по высоте :)
- видео-режим (ZX, 16 цветов и 256 цветов, текстовый)
- графическое разрешение экрана: 256x192, 320x200, 320x240 и 360x288
можно ли добавить хоть один стандартный VESA DMT 640х480@60Hz ?
Last edited by MVV on Sun, 07.09.2014 11:05:40, edited 1 time in total.
MVV
 
Posts: 472
Joined: Sun, 01.12.2013 22:48:17

Postby Sergey78 » Sun, 07.09.2014 11:04:09

MVV wrote:проблема в том, что многие телики не поддерживают @49/50Hz

Если телевизор не держит 50 Гц, место ему на помойке.
Sergey78
 
Posts: 413
Joined: Wed, 05.09.2012 20:04:40

Postby MVV » Sun, 07.09.2014 11:06:47

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

Скорее там будет железо, которое не умеет универсально работать с видео :)
MVV
 
Posts: 472
Joined: Sun, 01.12.2013 22:48:17

Postby TS-Labs » Sun, 07.09.2014 11:07:29

MVV wrote:У меня вопрос, по поводу видео режимов, проблема в том, что многие телики не поддерживают @49/50Hz, а режим 60Hz не полностью виден по высоте :)

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

Postby TS-Labs » Sun, 07.09.2014 11:08:05

MVV wrote:можно ли добавить хоть один стандартный VESA DMT 640х480@60Hz ?

В пентеву - нет.
User avatar
TS-Labs
 
Posts: 5018
Joined: Thu, 26.07.2012 01:29:56

Postby MVV » Sun, 07.09.2014 11:20:47

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

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

Postby TS-Labs » Sun, 07.09.2014 11:38:33

Отлично. Возможно тэринг заменится на дублирующиеся кадры, что еще лучше.
User avatar
TS-Labs
 
Posts: 5018
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Sun, 07.09.2014 11:39:03

Заметно будет только на бегучках и гигаскринах.
User avatar
TS-Labs
 
Posts: 5018
Joined: Thu, 26.07.2012 01:29:56

Postby MVV » Sun, 07.09.2014 11:51:26

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

В эмулях на РС особенно заметно :)
MVV
 
Posts: 472
Joined: Sun, 01.12.2013 22:48:17

Postby TS-Labs » Sun, 07.09.2014 12:26:46

MVV wrote:А не проще уже переключиться в графический режим с цветом на точку...

А не проще переключиться на другое коммьюнити, где не задрачивают на архитектуру 1981 года...
User avatar
TS-Labs
 
Posts: 5018
Joined: Thu, 26.07.2012 01:29:56

Postby MVV » Sun, 07.09.2014 13:35:50

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

А почему бы и нет...
MVV
 
Posts: 472
Joined: Sun, 01.12.2013 22:48:17

Postby shurik-ua » Mon, 08.09.2014 19:54:51

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;
shurik-ua
 
Posts: 22
Joined: Fri, 01.03.2013 16:54:09

Postby TS-Labs » Tue, 09.09.2014 04:27:21

А, ок )
User avatar
TS-Labs
 
Posts: 5018
Joined: Thu, 26.07.2012 01:29:56

Postby MC68k » Tue, 09.09.2014 08:08:15

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

Image
An invisible thread connects those who are destined to meet, regardless of time, place, and circumstance. The thread may stretch or tangle. But it will never break.
User avatar
MC68k
 
Posts: 177
Joined: Sun, 22.12.2013 13:54:17
Location: 3rd planet from sun

Postby TS-Labs » Tue, 09.09.2014 18:59:07

О даблерах.
В планах год-полтора назад было впилить в пентеву. Работает через ФИФО: идет за лучом и гребет видеосигнал в формате 8 бит на пиксель (для текстмода 2 по 4), в свободных циклах дропает его в ОЗУ. На рисование наоборот: подтягивает из ОЗУ дату и выпихивает ее в луч на пиксельклоке. Из минусов - сильно отожрет циклы ОЗУ. На циклоно-клонах будет сильно попроще, можно грести бурстами на частоте сдрамы.
User avatar
TS-Labs
 
Posts: 5018
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Tue, 09.09.2014 19:05:46

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

Так никто не мешает включать спрайты поверх 6912. Кстати, будет еще впилен режим ТСУ не обрезаемого бордюром, тогда вообще сможешь рисовать "на бордере" в 16 цветах на точку.
User avatar
TS-Labs
 
Posts: 5018
Joined: Thu, 26.07.2012 01:29:56

Postby samanasuke » Tue, 09.09.2014 19:30:37

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

ВОООООООТ!!! Это именно то чего мне не хватало! Уууух! Буду ждать. :)
samanasuke
 
Posts: 11
Joined: Fri, 05.09.2014 21:34:55

Postby TS-Labs » Thu, 11.09.2014 16:26:56

Какбэ сделал.
IMG_5718.JPG

Однако все опять уперлось в место. Фича отхавала 30 ЛЕ. Много это или мало - как 3 волоска в супе. Немного, но когда остается 2% объема микрухи - непозволительная роскошь. Поэтому в текущей ревизии закомментировано.
User avatar
TS-Labs
 
Posts: 5018
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Thu, 11.09.2014 20:49:39

Добавил в версию с видеоЦАПом. Она может работать и на евах без видеоЦАПа, просто не будет ИДЕ.
User avatar
TS-Labs
 
Posts: 5018
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Thu, 11.09.2014 20:55:17

Ржачно.
IMG_5719.JPG
User avatar
TS-Labs
 
Posts: 5018
Joined: Thu, 26.07.2012 01:29:56

Postby LessNick » Thu, 11.09.2014 21:20:05

TS-Labs wrote:Ржачно.


эээ… не уж-то стала реализуема моя давняя мечта, сделать фоновую картинку в текстовом режиме?
(∩。•o•。)っ.゚☆。・ TS-Conf для PentEvo — это классический Pentagon 128k для тех кто хочет больше!
User avatar
LessNick
грей сашу — сашу грей
 
Posts: 864
Joined: Thu, 26.07.2012 15:00:53

Postby TS-Labs » Thu, 11.09.2014 21:22:18

В текстовом режиме 16 цветов (1 палитра).
User avatar
TS-Labs
 
Posts: 5018
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Thu, 11.09.2014 21:27:29

Я постоянно забываю почему, и постоянно вспоминаю, что для экономии альтеропамяти для ВГА-даблера. Щас тратится 2 штуки памяти (в бейзконфе 3, и там можно было бы сделать 8 бит в хайрезе).
User avatar
TS-Labs
 
Posts: 5018
Joined: Thu, 26.07.2012 01:29:56

PreviousNext

Return to Manuals

Who is online

Users browsing this forum: No registered users and 1 guest

cron

x