User Tag List

Страница 60 из 71 ПерваяПервая ... 565758596061626364 ... ПоследняяПоследняя
Показано с 591 по 600 из 703

Тема: Новый графический режим для игр

  1. #591

    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    52 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от s_kosorev Посмотреть сообщение
    а если атрибут меняется или мерцание флеша? Это уже 64 байта, что бы успеть, без останова процессора, SRAM должна работать на 3,5/3*64 = 74мгц + если читать хотя бы с частотой 7мгц 6 слоев это еще 42МГц, итого нужна SRAM как минимум 9нс а это SSRAM с очень высокой стоимостью. Или я что то не понял по нагрузке на шину?
    Исправил. В стандартном режиме (в слое 0) все хранится по-старому. Отдельно байт пикселов и байт атрибутов.
    В дополнительных слоях нет атрибутов и флеша. Там только 8 байтов на 8 точек.

    Цитата Сообщение от jerri Посмотреть сообщение
    а 4 бита на точку хватит?
    Должно хватить. 4 бита на точку - это 16 цветов на спрайт из 256 цветов в слое из 32768 цветов !
    В большинстве случаев хватит и 2 бита на точку - это 4 цвета на спрайт из 256 цветов в слое из 32768 цветов.
    При рисовании используется палитра для рисования. А в каждом слое палитра отображения.


    Палитра как у MSX2+ 32K цветов при 15-битном RGB 5+5+5
    Последний раз редактировалось zx-kit; 23.09.2015 в 21:39.
    "L-256"

  2. #592

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,867
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    311
    Поблагодарили
    235 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    да да вот я и хотел уточнить сколько бит на цвета закладываешь
    15 бит... наверное нормально.
    С уважением,
    Jerri / Red Triangle.

  3. #593

    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    52 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от krt17 Посмотреть сообщение
    все игры с xor идут мгновенно лесом (казалось бы причем тут dizzy), ну или требуют также серьезной переделки
    Давайте уточним полярность байтов и масок.
    Маска содержит 0 - там, где цвета спрайта и 1 - там, где прозрачный цвет ?
    При использовании XOR спрайт не содержит маски. 1 - там, где цвет спрайта и 0 - там, где прозрачный ?
    Можем мы вывести спрайт без маски в режиме COLOR1C ?

    COLOR1C - 1 цвет на 8 точек + прозрачный
    По соответствующему адресу в области пикселей нужно записать байт данных. На каждую из восьми точек приходится по 1 биту: 0 - прозрачный, 1 - цветной. Номер цвета предварительно записывается в переменную color. 0 - прозрачный, 1-255 выбранный цвет. Данный режим предназначен для наложения одноцветного изображения поверх существующего. Например, для вывода текста, рисования линии по точкам, а также для стирания тайла/спрайта с текущего слоя, если color = 0.
    Последний раз редактировалось zx-kit; 24.09.2015 в 20:35.
    "L-256"

  4. #594

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    Маска содержит 0 - там, где цвета спрайта и 1 - там, где прозрачный цвет ?
    Да
    Цитата Сообщение от zst Посмотреть сообщение
    При использовании XOR спрайт не содержит маски. 1 - там, где цвет спрайта и 0 - там, где прозрачный ?
    Да
    Цитата Сообщение от zst Посмотреть сообщение
    Можем мы вывести спрайт без маски в режиме COLOR1C ?
    Не вижу причин, почему нельзя.
    ZX Evolution Rev C + ZXM-SoundCard Extreme + NeoGS.

  5. #595

    Регистрация
    02.11.2007
    Адрес
    г. Краснодар
    Сообщений
    293
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Зачем в цветах на каждую точку использовать XOR ?
    Мне уже страшно становиться какого размера будет драйвер управления.

  6. #596

    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    52 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Пример подпрограммы рисования спрайта с маской в режиме COLOR2M размером 24х24 точки по координатам, заданным в знакоместах. Спрайт в памяти хранится так: байт маски 1 линии в столбике, байт данных 1 линии в столбике, байт маски 2 линии в столбике, байт данных 2 линии в столбике, ... байт маски 24 линии в столбике, байт данных 24 линии в столбике. Затем аналогично записан второй и третий столбики спрайта.
    Код:
    ; перед выводом спрайтов устанавливаетя режим цвета color_mode = COLOR2M 
    ; и выбирается номер слоя current_layer для рисования
    ;
    ; hl - адрес спрайта 
    ; d - координата x в знакоместах
    ; e - координата y в знакоместах
    ; a - цвет спрайта, соответствует стандартному атрибуту Спектрума
    
    ld (attr), a ; устанавливаем цвет спрайта
    
    sla e ; вычисляем адрес младшего байта e в области пикселов
    sla e ; старший байт d соответствует координете x
    sla e
    
    push de ; сохраняем координаты начала столбика
    
    dup 24 ; рисуем 1 столбик спрайта высотой 24 байта         
    ldi         
    dec e         
    ldi         
    edup
    
    pop de ; восстанавливаем координаты начала столбика
    inc d ; переходим к столбику справа
    push de ; сохраняем координаты начала столбика
    
    dup 24 ; рисуем 2 столбик спрайта высотой 24 байта        
    ldi         
    dec e         
    ldi         
    edup
    
    pop de ; восстанавливаем координаты начала столбика
    inc d ; переходим к столбику справа
    
    dup 24 ; рисуем 3 столбик спрайта высотой 24 байта
    ldi         
    dec e         
    ldi         
    edup
    
    ret

    Пример подпрограммы рисования спрайта без маски в режиме COLOR1C размером 24х24 точки по координатам, заданным в знакоместах. Спрайт в памяти хранится так: байт данных 1 линии в столбике, байт данных 2 линии в столбике, ... байт данных 24 линии в столбике. Затем аналогично записан второй и третий столбики спрайта.
    Код:
    ; перед выводом спрайтов устанавливаетя режим цвета color_mode = COLOR1C 
    ; и выбирается номер слоя current_layer для рисования
    ;
    ; hl - адрес спрайта  
    ; d - координата x в знакоместах
    ; e - координата y в знакоместах
    ; a - цвет спрайта от 1 до 15
    
    ld (color), a ; устанавливаем цвет спрайта
    
    sla e ; вычисляем адрес младшего байта e в области пикселов
    sla e ; старший байт d соответствует координете x
    sla e
    
    push de ; сохраняем координаты начала столбика
    
    dup 24 ; рисуем 1 столбик спрайта высотой 24 байта         
    ldi         
    edup
    
    pop de ; восстанавливаем координаты начала столбика
    inc d ; переходим к столбику справа
    push de ; сохраняем координаты начала столбика
    
    dup 24 ; рисуем 2 столбик спрайта высотой 24 байта        
    ldi         
    edup
    
    pop de ; восстанавливаем координаты начала столбика
    inc d ; переходим к столбику справа
    
    dup 24 ; рисуем 3 столбик спрайта высотой 24 байта
    ldi         
    edup
    
    ret

    Пример подпрограммы стирания спрайта размером 24х24 точки по координатам, заданным в знакоместах.
    Код:
    ; перед стиранием спрайтов устанавливаетя режим цвета color_mode = COLOR1C, 
    ; цвет для стирания color = 0 и выбирается номер слоя current_layer для стирания
    ;
    ; d - координата x в знакоместах
    ; e - координата y в знакоместах
    
    sla e ; вычисляем адрес младшего байта e в области пикселов
    sla e ; старший байт d соответствует координете x
    sla e
    
    ld a, #FF; байт для стирания - стираем все 8 точек в байте
    
    dup 24 ; стираем 1 столбик спрайта высотой 24 байта сверху-вниз     
    ld (de),a
    inc e        
    edup
    
    inc d ; переходим к столбику справа
    
    dup 24 ; стираем 2 столбик спрайта высотой 24 байта снизу-вверх        
    dec e
    ld (de),a
    edup
    
    inc d ; переходим к столбику справа
    
    dup 24 ; стираем 3 столбик спрайта высотой 24 байта сверху-вниз           
    ld (de),a
    inc e        
    edup
    
    ret
    Последний раз редактировалось zx-kit; 25.09.2015 в 05:56.
    "L-256"

  7. #597

    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    52 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Надо бы к моменту изготовления видеокарты или доработки эмулятора сделать демы для некоторых режимов. Есть у кого идеи?
    Я прикинул, что в режиме COLOR2 можно делать программный скроллинг экрана в цвете для окна 160х160 точек. Еще бы в верхнем слое добавить самолет или вертолет, летящий вверх типа FLAYING SHARK.

    Или Ded Moroz Demo. Идет объект в режиме ZX COLOR в виде контура. Потом переходит в зону СOLOR1C. Тут он уже однотонный, но сквозь глаза виден фон. Потом в зоне COLOR2M глаза уже нормальные - черные. В зоне COLOR4 шуба уже красная. лицо желтое, а елка зеленая.

    Вообще, раз демонстрируем возможности видеокарты надо делать дему с визуальными эффектами.
    Последний раз редактировалось zx-kit; 25.09.2015 в 20:26.
    "L-256"

  8. #598

    Регистрация
    02.11.2007
    Адрес
    г. Краснодар
    Сообщений
    293
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сколько тактов получилось на спрайт 24х24 ?
    И по мне так это всё таки странное решение выводить по знакоместам

    ---------- Post added at 10:28 ---------- Previous post was at 10:22 ----------

    Цитата Сообщение от zst Посмотреть сообщение
    Я прикинул, что в режиме COLOR2 можно делать программный скроллинг экрана в цвете для окна 160х160 точек. Еще бы в верхнем слое добавить самолет или вертолет, летящий вверх типа FLAYING SHARK.
    Так будет ускорение вывода или уменьшение выводимой информации?

    Цитата Сообщение от zst Посмотреть сообщение
    Или Ded Moroz Demo. Идет объект в режиме ZX COLOR в виде контура. Потом переходит в зону СOLOR1C. Тут он уже однотонный, но сквозь глаза виден фон.
    Эти случаи двойного наложения настолько редкие (очень редкие) что делать из-за этого аппаратные слои нет никакого смысла, у меня создаются стойкие ощущения что для всего этого потребуется процессор > 30 МГц

    ---------- Post added at 10:46 ---------- Previous post was at 10:28 ----------

    Кстати скроллинг экрана не всегда бывает кратный 1-му пикселю, он может быть и 2 и 3 и 9 и 27, что делать в таком случае? полностью перерисовывать фон?

    ---------- Post added at 10:55 ---------- Previous post was at 10:46 ----------

    http://www.gamedev.ru/code/articles/?id=4208

  9. #599

    Регистрация
    30.04.2010
    Адрес
    Харцызск, Донецкая область, Украина
    Сообщений
    24
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не надо столько режимов.
    Режим 1 – цвет 1 байт на 8х1 пикселей;
    Режим 2 – цвет 2 байт на 8х1 пикселей;
    Режим 3 – цвет 3 байт на 8х1 пикселей;
    Режим 4 – цвет 4 байт на 8х1 пикселей.
    Во всех режимах доступна палитра 16/256. Всего 16 палитр, по умолчанию палитра 0. По умолчанию представляет стандартные цвета. Любой цвет любой палитры может быть объявлен прозрачным. Смена палитры, переопределение цвета в палитре и объявление цвета прозрачным производятся через вызов соответствующих функций. С одинаковыми номерами во всех трёх режимах.
    Программы, которые не знают об этих функциях и не знают их номеров, всё равно не смогут их вызвать. А конструкция «видеочипа» будет проще. Номера режимов прямо указывают на количество битов на пиксель (байтов на тайл 8х1).
    Во всех режимах по умолчанию атрибут на знакоместо. Но можно установить флаг атрибут на строку знакоместа. Атрибут из расчёта байт на битплан слоя, хранит номера цветов 16-цветной палитры. В качестве атрибута всего знакоместа используется атрибут его 0 строки. Дополнительный параметр устанавливает возможность использовать бит 7 битплана 0 как бит мерцания, в этом случае для фона битплана 0 доступны только цвета 0-7 текущей палитры. По умолчанию (после сброса) параметр установлен.
    Во всех режимах возможна установка разрешения 256х192 или 320х200. Разрешение 320х240 (QVGA) не нужно, оно использовалось только на мобилках и карманных медиалеерах с середины «нулевых», но под него не было каких-то эксклюзивных удачных игр, портировать с него нечего. А в 320х200 много старых игр (на PC, например). Зато, возможно, стоит рассмотреть вариант 320х180 – он будет без чёрных полосок подгоняться под современные мониторы 16:9. По умолчанию (после сброса) разрешение 256х192.
    По умолчанию во всех режимах экран располагается с адреса 8000h, при необходимости адрес может быть переключён на 0000h.
    Такая архитектура в силу своей ортогональности максимально упрощает разработку и отладку видеокарты, а также интуитивно понятна программисту.
    Расход памяти в байтах на каждый слой: 2 х номер_режима х разрешение_режима. Округлённо: 64 КБ на экран 320х200 в режиме 4. На 8 слоёв необходимо 512 КБ памяти.
    Рендеринг изображения производится в буфер (ramdac), всего есть 2 буфера, которые переключаются по кругу (двойная буферизация). Переключение буферов производится специальным вызовом вручную. При 8 слоях в режиме 4 у нас будет максимум 128 цветов на точку, округляем до байта и получаем 128 кб двухпортовую память (два буфера 320х200х256). При переключении буфера текущая палитра дублируется в теневую копию, которая затем используется при выдаче содержимого буфера на экран. Т. е. на экране отображается одна 256-цветная палитра, а мы работаем в видеопамяти с другой.
    P.S. Номер режима 0 может быть использован (зарезервирован) для текстового режима видеокарты (пригодится для системных и офисных программ).
    P.S.2. Не понимаю какая разница с какого адреса у нас видеопамять: с 0000 или 8000, всё равно банками щёлкать. Хотя как бы процессору и незачем лезть непосредственно в память спрайтовой видеокарты (а Метеор хоть и несколько оригинальная, но таки спрайтовая видеокарта). А вот источником головной боли для программиста/хакера-адаптатора отображение видеопамяти поверх системного ПЗУ вполне может стать. Ведь игра вполне может вызывать отдельные функции оттуда. Или использовать системный шрифт.

  10. #600

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sameone Посмотреть сообщение
    Не надо столько режимов.
    Sameone, а ты прочитал всю тему прежде, чем вносить предложения? Перечитай, пожалуйста, и ответь сам себе на вопрос о нужности в этой теме идей о том, как сделать принципиально другую видеокарту. Надоело по 10-му разу это объяснять очередному прочитавшему первый и десяток последних постов.
    Цитата Сообщение от Sameone Посмотреть сообщение
    а Метеор хоть и несколько оригинальная, но таки спрайтовая видеокарта
    Олсо ты даже не понял что за идея тут предлагается.
    ZX Evolution Rev C + ZXM-SoundCard Extreme + NeoGS.

Страница 60 из 71 ПерваяПервая ... 565758596061626364 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 18
    Последнее: 11.04.2021, 10:54
  2. графический редактор
    от yur в разделе Вектор
    Ответов: 1
    Последнее: 08.11.2012, 13:01
  3. графический режим на Атари
    от goblinish в разделе Atari
    Ответов: 3
    Последнее: 06.01.2012, 11:19
  4. графический софт для 48 К
    от goglus в разделе Софт
    Ответов: 6
    Последнее: 02.08.2006, 15:33

Ваши права

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