Важная информация

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 24

Тема: Видеорежимы и работа с ними

  1. #1
    Veteran Аватар для icebear
    Регистрация
    05.05.2005
    Адрес
    Германия
    Сообщений
    1,614
    Благодарностей: 7
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Видеорежимы и работа с ними

    Возникли вот вопросы у меня. В клонах Спектрума есть уже куча "видеорежимов", позволяющих хоть как-от расширить графические возможности. Линейной адрессацией обладают только видеорежимы Спринтера (хотя может я ошибаюсь?). 512х192 подразумевает деление точек на чётные/нечётные и соотвественно различное местоположение в памяти. Так же это вроде сделано в АТМ. Во всех "случаях" возможна работа с этой "видеопамятью" напрямую, но из-за размера адресной шины это можно осуществить только через банки.
    Вопросы следующие:
    - это удобно с точки зрения программирования иметь экран, делённый на участки и тем самым с возможностью работы только в выбраном участке?
    - скорость вывода графики приемлема при работе с участками экрана через банки?
    - нужен ли прямой доступ к видеопамяти или может вместо него лучше иметь возможность управлять неким гипотическим видеопроцессором (давать ему команды на вывод граф. примитивов, текста и т.п.) и не иметь при это никакого прямого доступа?
    - если допустить наличие такого спецпроцессора, какие функции он должен выполнять (если можно, то в виде списка)?

    Я надеюсь что понятно сформулировал вопросы

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Veteran Аватар для icebear
    Регистрация
    05.05.2005
    Адрес
    Германия
    Сообщений
    1,614
    Благодарностей: 7
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Я так понял, это никому не надо?

    Или не интересно? Или я вопросы поставил непонятно?

  4. #3
    Veteran
    Регистрация
    22.02.2005
    Адрес
    Украина, Харьков
    Сообщений
    1,523
    Благодарностей: 107
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ИМХО, не в тот раздел запостил. В программирование нужно было.

  5. #4
    Veteran Аватар для icebear
    Регистрация
    05.05.2005
    Адрес
    Германия
    Сообщений
    1,614
    Благодарностей: 7
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от spensor
    ИМХО, не в тот раздел запостил. В программирование нужно было.
    Хм, действительно

    Господа модераторы, как перенести это в другой раздел? Или заново писать?
    Последний раз редактировалось icebear; 21.07.2005 в 10:02.

  6. #5
    Guru Аватар для CHRV
    Регистрация
    18.01.2005
    Адрес
    Москва
    Сообщений
    3,690
    Благодарностей: 258
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от icebear
    Хм, действительно

    Господа модераторы, как перенести это в другой раздел? Или заново писать?
    Вышла дока по АТМ , в том числе и по програмированию расширенных видеорежимов. Можно скачать и прочитать.
    Смотрите на http://atmturbo.narod.ru

    Пожалуйста пишите в email (chunin{гаф}mail{тчк}ru), личка отключена!!!

    NedoPC group. ZX-Evolution, ATM Turbo 2+, Pentagon1024SL.
    [Предлагаю: ZXEvo, PAL coder, NeoGS, TS-FM, YM2149, Z80 и прочее]
    Все здесь: http://www.nedopc.com.
    Новости/поддержка/Faq: http://forum.nedopc.com.
    Раздача халявы: http://forum.nedopc.com/viewtopic.php?f=32&t=977

  7. #6
    Veteran Аватар для icebear
    Регистрация
    05.05.2005
    Адрес
    Германия
    Сообщений
    1,614
    Благодарностей: 7
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CHRV
    Вышла дока по АТМ , в том числе и по програмированию расширенных видеорежимов. Можно скачать и прочитать.
    Смотрите на http://atmturbo.narod.ru
    Качал, читал. Собственно вопрос возник именно из-за подобных организаций экранов.

  8. #7
    Veteran Аватар для Максагор
    Регистрация
    16.01.2005
    Адрес
    Москва
    Сообщений
    1,448
    Благодарностей: 702
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от icebear
    Возникли вот вопросы у меня. В клонах Спектрума есть уже куча "видеорежимов", позволяющих хоть как-от расширить графические возможности. Линейной адрессацией обладают только видеорежимы Спринтера (хотя может я ошибаюсь?).
    Линейная, но зато нет одновременного доступа сразу ко всему экрану, а только к одной текущей строчке (256 байт, если я не ошибаюсь). Надо черех пот обращаться к видеоконтроллеру и щелкать строчками через него.

    512х192 подразумевает деление точек на чётные/нечётные и соотвественно различное местоположение в памяти. Так же это вроде сделано в АТМ.
    Да, именно так.

    Во всех "случаях" возможна работа с этой "видеопамятью" напрямую, но из-за размера адресной шины это можно осуществить только через банки.
    И здесь верно.

    Вопросы следующие:
    - это удобно с точки зрения программирования иметь экран, делённый на участки и тем самым с возможностью работы только в выбраном участке?
    - скорость вывода графики приемлема при работе с участками экрана через банки?
    Насчет удобства скажу, что большого дискомфорта не испытывал. По крайней мере работать не сложнее, чем с пересчетом адресов для черезполосицы строк ZX-экрана. К тому же, если говорить именно про ATM-1/2/2+, то четные и нечетные столбцы изображения (в текстовом и мультиколорном экранах) расположены и в одной и той же странице, только в разных ее половинках. И только атрибуты лежат в другой странице. Сложнее с EGA-дкраном, где атрибутов нет как класса. Там действительно часть столбцов пикселей лежат в разных страницах. Но не так уж и муторно при выводе графики вовремя переключать страницы, особенно если заранее подготовить для этого нужные регистры. А в случае ATM2/2+ можно вообще запрограммировать диспетчер памяти так, чтобы все необходимые экранные страницы (из всего-то две) одновременно присутствовали в адресном пространстве. Тогда и щелкать портами не надо.

    Что касается скорости вывода графики вообще, то размер экрана в 32000 байт оказывает на нее решающее воздействие, а никак не расположение в различных банках. Конечно, тяжеловатые получаются экраны. Ну а в случае с текстовой консолью, полный размер которой всего 4000 байт даже самое тормозное щелканье банками не сможет что-то там сильно затормозить.

    - нужен ли прямой доступ к видеопамяти или может вместо него лучше иметь возможность управлять неким гипотическим видеопроцессором (давать ему команды на вывод граф. примитивов, текста и т.п.) и не иметь при это никакого прямого доступа?
    Желательно в таклм случае было бы иметь и видеопроцессор, и прямой доступ одновременно. Хотя если видеопроцессор очень крутой, то, так и быть, согласен обойтись без него!

    - если допустить наличие такого спецпроцессора, какие функции он должен выполнять (если можно, то в виде списка)?
    1) Возможность в любой момент узнать содержимое любого байта видеопамяти (если нет прямого доступа, то через порты). И вообще считывать оттуда любые массивы данных.

    2) Работа с различными видеорежимами (консоль, ZX-квадратики, аппаратный мультиколор, каждай точка своим цветом, может быть даже TRUE-color)

    3) Вывод спрайта (всего или его части) в любую точку экрана.

    4) Морфинг спрайтов, их масштабирование.

    5) Автоконвертация спрайтов из одного формата в другой (насколько возможно, без потери качества или с минимальной потерей) - к примеру, надо отобразить цветной спрайт, подготовленный на обычном спеке (цвета квадратиками, черезполосица) на линейный TRUE-COLOR (или обратная ситуация, хе-хе...)

    6) Рисование и раскраска графических примитивов.

    7) Работа с векторной графикой (ломаные линии, дуги, сокрытие теневых контуров, заливка плоскостей цветом и текстурой, работа с освещением (откуда свет, там плоскость светлее и т.д.)).

    8) Может еще что забыл...

    Я надеюсь что понятно сформулировал вопросы
    Вполне.
    Максагор, NedoPC group
    ПК ATM-turbo 2+ 1024Kb RAM, 1,7Gb HDD, CD-ROM, Turbo FM, GS-512
    [ZX rulezzz 4reva!!!]
    http://atmturbo.nedopc.com
    http://vk.com/atmturbo
    http://maksagor.livejournal.com
    http://moskprf.ru
    [СССР][Коммунизм][КПРФ] ну [ZX], естественно...

  9. #8
    Veteran Аватар для icebear
    Регистрация
    05.05.2005
    Адрес
    Германия
    Сообщений
    1,614
    Благодарностей: 7
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В первую очередь хочу поблагодарить за ответ. Теперь по пунктам.


    Цитата Сообщение от Максагор
    Линейная, но зато нет одновременного доступа сразу ко всему экрану, а только к одной текущей строчке (256 байт, если я не ошибаюсь). Надо черех пот обращаться к видеоконтроллеру и щелкать строчками через него.
    Другого с 16-ти разрядной шиной не дано. Мог бы спасти eZ80, если бы не его внутренние порты.

    Цитата Сообщение от Максагор
    Насчет удобства скажу, что большого дискомфорта не испытывал. По крайней мере работать не сложнее, чем с пересчетом адресов для черезполосицы строк ZX-экрана.
    Понятно. Т.е. работать с кусками видеопамяти через банки труда не составляет. Я почему спросил? Допустим, надо вывести символ или примитив, располагающийся в области экрана, которая приходится на две банки. Это придётся делать bounds check, щёлкать страницами и т.п.

    Цитата Сообщение от Максагор
    К тому же, если говорить именно про ATM-1/2/2+, то четные и нечетные столбцы изображения (в текстовом и мультиколорном экранах) расположены и в одной и той же странице, только в разных ее половинках. И только атрибуты лежат в другой странице. Сложнее с EGA-дкраном, где атрибутов нет как класса. Там действительно часть столбцов пикселей лежат в разных страницах.
    Кстати, из книги я не понял, там (в АТМ) разделение идёт по бит-плейнам (согласно EGA стандарту) или всё-таки постранично (т.е. биты цветов лежат физически в одном куске памяти и располагются в нибле)?

    Цитата Сообщение от Максагор
    А в случае ATM2/2+ можно вообще запрограммировать диспетчер памяти так, чтобы все необходимые экранные страницы (из всего-то две) одновременно присутствовали в адресном пространстве. Тогда и щелкать портами не надо.
    Удобное решение, согласен.

    Цитата Сообщение от Максагор
    Что касается скорости вывода графики вообще, то размер экрана в 32000 байт оказывает на нее решающее воздействие, а никак не расположение в различных банках. Конечно, тяжеловатые получаются экраны. Ну а в случае с текстовой консолью, полный размер которой всего 4000 байт даже самое тормозное щелканье банками не сможет что-то там сильно затормозить.
    Вот здесь я не совсем понял. 32К тяжелы для основного процессора? Или что имеется в виду под тяжестью экрана?


    Цитата Сообщение от Максагор
    Желательно в таклм случае было бы иметь и видеопроцессор, и прямой доступ одновременно. Хотя если видеопроцессор очень крутой, то, так и быть, согласен обойтись без него!
    Зачем необходим прямой доступ к видеопамяти? А как насчёт дать возможность видеопроцессору читать любой участок основной памяти (при условии, что видеопамять как таковая не входит в карту основной памяти)?


    Цитата Сообщение от Максагор
    1) Возможность в любой момент узнать содержимое любого байта видеопамяти (если нет прямого доступа, то через порты). И вообще считывать оттуда любые массивы данных.
    Опять же, не было бы удобнее это делать не через порты, а через общую память? Например задействовать тотже стандартный экран Спектрума в качестве буфера между основным процессором и видеопроцессором? Порты мне кажется медленно.

    Цитата Сообщение от Максагор
    2) Работа с различными видеорежимами (консоль, ZX-квадратики, аппаратный мультиколор, каждай точка своим цветом, может быть даже TRUE-color)
    Вот здесь возникло сразу много вопросов? Зачем несколько видеорежимов? Зачем True Colour? Про аппаратный мультиколор и консоль молчу, ибо не вижу им применения абсолютно. Текстовую консоль всегда можно рисовать и совсем не основной процессор этим должен заниматься


    Цитата Сообщение от Максагор
    3) Вывод спрайта (всего или его части) в любую точку экрана.

    4) Морфинг спрайтов, их масштабирование.
    Ну это само собой, иначе нужен прямой доступ к видеопамяти.

    Цитата Сообщение от Максагор
    5) Автоконвертация спрайтов из одного формата в другой (насколько возможно, без потери качества или с минимальной потерей) - к примеру, надо отобразить цветной спрайт, подготовленный на обычном спеке (цвета квадратиками, черезполосица) на линейный TRUE-COLOR (или обратная ситуация, хе-хе...)
    Вот здесь я тоже не вижу особого смысла. Чисто теоретически, при наличие нового видеопроцессора старый экран Спектрума использовать уже совсем не стоит.

    Цитата Сообщение от Максагор
    6) Рисование и раскраска графических примитивов.

    7) Работа с векторной графикой (ломаные линии, дуги, сокрытие теневых контуров, заливка плоскостей цветом и текстурой, работа с освещением (откуда свет, там плоскость светлее и т.д.)).

    8) Может еще что забыл...
    Понятно, ещё раз спасибо. Важными пунктами для меня пока остаются глубина цвета (которую я бы посадил жёстко на 8 бит) и единственный видеорежим. Хотелось бы обсудить это.

  10. #9
    Master
    Регистрация
    04.03.2005
    Адрес
    Ukraine, Kiev
    Сообщений
    792
    Благодарностей: 295
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Talking

    Цитата Сообщение от icebear
    Возникли вот вопросы у меня. В клонах Спектрума есть уже куча "видеорежимов", позволяющих хоть как-от расширить графические возможности. Линейной адрессацией обладают только видеорежимы Спринтера (хотя может я ошибаюсь?). 512х192 подразумевает деление точек на чётные/нечётные и соотвественно различное местоположение в памяти. Так же это вроде сделано в АТМ. Во всех "случаях" возможна работа с этой "видеопамятью" напрямую, но из-за размера адресной шины это можно осуществить только через банки.
    Новые видеорежимы как правило не прижываются на Speccy, все привыкают к стандарту. Нужно сделать их легко-доступными, тогда будет смысл их создавать!

    Цитата Сообщение от icebear
    - это удобно с точки зрения программирования иметь экран, делённый на участки и тем самым с возможностью работы только в выбраном участке?
    Смотря как сделать выбираемые участки. Например Atari, там сделанно просто велеколепно, для каждой вертикальной линии можно задать собственный режим, то-ли цветной текст, то-ли графика в любых вариациях. Да ещё и можно указать любую точку памяти от куда брать данные. А на Atari-ST, вообще можно скорость горизонтальной развёртки давать для каждой линии разную !!!
    Думаю, что для Speccy идеально будет сделать что-то подобное, что я и делал в Wild Speccy ! Там можно всего-то в каждой линии задать свой адрес памяти для графики и для паперов, плюс цвет палитры для пикселов и не пикселов.

    Цитата Сообщение от icebear
    - скорость вывода графики приемлема при работе с участками экрана через банки?
    Приемлема, но если есть проблема с одновременным доступом к памяти процессора и видяхи, то можно сделать какой-нибудь битик в порте который выбиралбы ЧИП для записи в видео буфер. То есть пока ты пишешь что-нибудь в ПАМЯТЬ-1 вторая высвечивается на моник, после OUT'а меняются местами. И тормозов не будет, и всякие корявые программеры, любящие не задумываться о дискреции анимации, будут вынуждены по-умнеть !!!

    Цитата Сообщение от icebear
    - нужен ли прямой доступ к видеопамяти или может вместо него лучше иметь возможность управлять неким гипотическим видеопроцессором (давать ему команды на вывод граф. примитивов, текста и т.п.) и не иметь при это никакого прямого доступа?
    Конечно стоит сделать процессор, мало того, если сделаете возможность отправить ему собственную прогу и сполнить, то это будет максимально идеально. Так у меня в Wild'е.

    Цитата Сообщение от icebear
    - если допустить наличие такого спецпроцессора, какие функции он должен выполнять (если можно, то в виде списка)?
    Для каждой задачи по разному. А какой проц ? Если у него мощная математика, то грех не сделать 3Д. А список может быть ООООООООчень длинный. Например:

    -Возможнть аппаратного мультиколора.
    -Что-нибудь со спрайтами.
    -Изменение частоты кадров.
    -Было бы прикольно вставить рисовалку линий, можно на аппаратном уровне сделать ELIT'у да ещё и ONE-FRAME.
    -Неплохо вставить какой-нибудь декомпрессор, я имею в виду для распаковки графики в реальном времени, например: спрайтов. Я когда-то такое делал на Speccy в своей игре Mortal Kombat, она валяется где-то разобранная, но за-то на весь экран, и спрайты на 2/3!

    Многое можно придумать ... Но лучше всего самому в процессор отправлять программу. НО НЕ ИМЕТЬ ДОСТУП К ПАМЯТИ - ПЛОХО, пусть с торможениями, но лучше вдвоём, чем кто-то там в "тёмной коробочке" !!!
    AAA

  11. #10
    Veteran Аватар для icebear
    Регистрация
    05.05.2005
    Адрес
    Германия
    Сообщений
    1,614
    Благодарностей: 7
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Robus
    Новые видеорежимы как правило не прижываются на Speccy, все привыкают к стандарту. Нужно сделать их легко-доступными, тогда будет смысл их создавать!
    Тоже интересная мысль.

    Цитата Сообщение от Robus
    Смотря как сделать выбираемые участки. Например Atari, там сделанно просто велеколепно, для каждой вертикальной линии можно задать собственный режим, то-ли цветной текст, то-ли графика в любых вариациях.
    Что понимается здесь под "линией"? Линия знакомест или линия пикселей?

    Цитата Сообщение от Robus
    Да ещё и можно указать любую точку памяти от куда брать данные.
    Т.е. можно было разбить видеопамять по "кускам" и сказать видеоконтроллеру, где эти куски находятся? Что-то похоже видимо можно сделать в АТМ с его возможностью включать видеостраницы в соседних банках.

    Цитата Сообщение от Robus
    А на Atari-ST, вообще можно скорость горизонтальной развёртки давать для каждой линии разную !!!
    А зачем это? И не похоже ли это на возможности Спринтера иметь "окна" на экране в раличных разрешениях?

    Цитата Сообщение от Robus
    Думаю, что для Speccy идеально будет сделать что-то подобное, что я и делал в Wild Speccy ! Там можно всего-то в каждой линии задать свой адрес памяти для графики и для паперов, плюс цвет палитры для пикселов и не пикселов.
    Какое практическое применение есть этой сегментации видеопамяти? Wild Speccy - это клон?

    Цитата Сообщение от Robus
    Приемлема, но если есть проблема с одновременным доступом к памяти процессора и видяхи, то можно сделать какой-нибудь битик в порте который выбиралбы ЧИП для записи в видео буфер. То есть пока ты пишешь что-нибудь в ПАМЯТЬ-1 вторая высвечивается на моник, после OUT'а меняются местами. И тормозов не будет, и всякие корявые программеры, любящие не задумываться о дискреции анимации, будут вынуждены по-умнеть !!!
    Понятно. У меня по этому поводу есть своё мнение, а именно видеоконтроллер должен решать абсолютно все вопросы графики. Т.е. например роль основого процессора сводится к заданию команд видеопроцессору, а последний уже сам должен решать вопросы конфликтов и прочего. А программист не должен задумываться о дискреции анимации - это дело железки.

    Цитата Сообщение от Robus
    Конечно стоит сделать процессор, мало того, если сделаете возможность отправить ему собственную прогу и сполнить, то это будет максимально идеально. Так у меня в Wild'е.
    Похожая идея есть (или даже такая же): иметь стандартный софт для видеопроцессора но с возможностью менять его на custom.

    Цитата Сообщение от Robus
    Для каждой задачи по разному. А какой проц ? Если у него мощная математика, то грех не сделать 3Д. А список может быть ООООООООчень длинный. Например:

    -Возможнть аппаратного мультиколора.
    -Что-нибудь со спрайтами.
    -Изменение частоты кадров.
    -Было бы прикольно вставить рисовалку линий, можно на аппаратном уровне сделать ELIT'у да ещё и ONE-FRAME.
    -Неплохо вставить какой-нибудь декомпрессор, я имею в виду для распаковки графики в реальном времени, например: спрайтов. Я когда-то такое делал на Speccy в своей игре Mortal Kombat, она валяется где-то разобранная, но за-то на весь экран, и спрайты на 2/3!

    Насчёт процессора не знаю, пока я просто собираю информацию и мнения по работе с графикой на Спектруме. Что из этого выйдет - неизвестно, но GF или Radeon не выйдут точно
    Аппаратный мультиколор мне кажется абсолютно ненужным, ибо мультиколор как таковой родился из-за убогих граф. возможностей (как структура экрана, которая должен признать сделана очень умно для своего времени/целей/возможностей, так и глубина цвета).
    Изменение частоты кадров - это зачем?
    Рисовалки линий и т.п. - для реализации на аппартном уровне я глуп, программно могу, но т.к. я не пуп Земли, любой другой сможет использовать собственную реализацию.
    По поводу декомпрессора: упирается в реализацию спрайтов и их формата, пока ещё совсем рано об этом говорить.

    Цитата Сообщение от Robus
    Многое можно придумать ... Но лучше всего самому в процессор отправлять программу. НО НЕ ИМЕТЬ ДОСТУП К ПАМЯТИ - ПЛОХО, пусть с торможениями, но лучше вдвоём, чем кто-то там в "тёмной коробочке" !!!
    Да, я вижу аппетит вполне здоровый Прелесть "чёрной коробчки" в предсказуемости её поведения и стабильность. А так же некая базовая абстракция.

    Спасибо за ответ.

Страница 1 из 3 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Работа с трекерными модулями на ZX
    от Bulba в разделе Программирование
    Ответов: 53
    Последнее: 03.12.2017, 16:02
  2. Работа с STS5.7
    от DemiChron в разделе Программирование
    Ответов: 3
    Последнее: 24.07.2005, 19:14
  3. Работа с HDD в частности на Pentagon 48/128
    от POIND в разделе Внешние накопители
    Ответов: 7
    Последнее: 25.05.2005, 22:27
  4. работа с образами HDD в Unreal Speccy
    от elf в разделе Эмуляторы
    Ответов: 15
    Последнее: 30.03.2005, 16:22

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •