User Tag List

Страница 12 из 53 ПерваяПервая ... 8910111213141516 ... ПоследняяПоследняя
Показано с 111 по 120 из 526

Тема: Новый принцип устранения клешинга

  1. #111

    Регистрация
    05.04.2015
    Адрес
    г. Майкоп
    Сообщений
    294
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от inozemcew Посмотреть сообщение
    Двигать ничего не нужно. Заменить вызов старой процедуры вызовом новой из которой потом сделать JP в старую - не требует перемещения никакого кода.
    Тогда можно цвет и через порт задавать, не делая несколько плоскостей, как выше написал. Разве что, можно сделать одну плоскость на фон и одну на все спрайты с прозрачным цветом. Будет задаваться цвет и прежней процедурой выводиться однобитная картинка, получая нужный цвет.

  2. #112

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Можно даже просто взять 4-8 битовых планов и обычную палитру, и затем заполнив эту палитру специальным образом, получить псевдополупрозрачные слои. Именно так это делается на "Векторе". Плюс еще там 16-256 цветов на точку и т.д. и т.п.
    Так вы и предлагаете по сути нечто похожее на векторовскую реализацию. Там тоже при разбивке на слои получается по 1 цвету на однобитный слой. Но там немного проще оперировать со слоями. Разве что, самый нижний слой будет уступать по количеству цветов вашей реализации.
    проблема векторной реализации в том что что спрайты нарисованные в одном плане однобитные без маски
    чтоб нарисовать разноцветный спрайт с маской придется отрисовывать спрайт несколько раз в разных планах(переключать банки\пересчитывать\изменя ть адреса)

    более интересный вариант был бы
    4 плана по 2 бита на точку в каждом
    но а дальше все как у вектора

    в итоге было бы 4 плана со всеми преимуществами вектора
    всякими масками\полупрозрачностям
    и возможность быстро отрисовывать многоцветные спрайты

    правда проблема что в конечном итоге
    на один слой всего по 3 цвета палитры
    и 4 цвета для фона
    что как то маловато...

    вторая проблема чтобы оставить совместимость с адресацией спековского экрана
    придется уменьшить количество пикселей по горизонтали (широкие комодорские пиксели).

    и нужно будет переписывать все процедуры отрисовки спрайтов тк теперь один байт экрана на 4 широких пикселя

  3. #113

    Регистрация
    18.09.2008
    Адрес
    Донецкая обл.
    Сообщений
    95
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    39
    Поблагодарили
    17 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AzAtom Посмотреть сообщение
    Тогда можно цвет и через порт задавать, не делая несколько плоскостей, как выше написал.
    Можно конечно, но..

    Во первых, потребуется как минимум 4 бита дополнительно на каждый пиксель. Так что сильно сэкономить на памяти не получится.

    А во-вторых, самое неудобное, после вывода изображения этим способом, понять какая точка имеет какой цвет невозможно. Допустим два спрайта накладываются по XOR. Теперь один спрайт надо стереть. Делаем еще раз вывод по XOR, но как понять, какого цвета должны быть восстановленные пиксели - цвета фона или цвета заданного по OUT? Тоже самое для процедуры вывода спрайта, которая запоминает пиксели под спрайтом в буфере - например рисование указателя мыши. Когда курсор рисуется в отдельном слое - никаких проблем, даже восстанавливать ничего не надо. Но как вы восстановите пиксели, цвет которых не знаете?

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    более интересный вариант был бы 4 плана по 2 бита на точку в каждом но а дальше все как у вектора
    4 плана по 2 бита на точку в каждом но а дальше все как у спектрума - атрибут на знакоместо, но для каждого плана свой. У вектора цвет точки определяется комбинацией битов в 4 планах. Такое не нужно. Нужно определить, точка какого плана является видимой, вот из этого плана и взять атрибут - это и будет цвет точки.

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    возможность быстро отрисовывать многоцветные спрайты
    На спектруме нет многоцветных спрайтов. Ждать, что их кто-то раскрасит, как показывает практика, можно до 2го пришествия.

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    придется уменьшить количество пикселей по горизонтали
    Это тоже ненужно. Как раз запись маски можно сделать через порт, это сработает, в отличие от вывода цвета через порт.

  4. #114

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,963
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    312
    Поблагодарили
    236 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Бука Посмотреть сообщение
    В амерском проапгрейженном Спеке Timex 2068 были штатно два экрана, 512*192моно и мультиколор хардварный (легко кстати потом на нашей рассыпухе делали, см Балтик например).

    Аппаратный гигаскрин тоже легко делали.
    так (относительно) легко-то потому что тайминги те же самые

    Цитата Сообщение от Бука Посмотреть сообщение
    Тут идея в том, что для второго экрана один из цветов прозрачный - и все, спрайтуйпосамоенимагу.
    а тут надо вдвое больше тянуть из памяти, то есть либо дорогую быструю память, либо параллельные банки, что снижает надёжность (а Спек и так сперва не отличался большой надёжностью) и удорожает настройку (что в конечном итоге выливается в повышение цены и противопоказано массовому производству), да и самой памяти нужно больше (а Спек начинался с 16кб)

    - - - Добавлено - - -

    Цитата Сообщение от inozemcew Посмотреть сообщение
    Не, вы немного не так поняли вопрос. В игре цвет спрайта хранится в виде кода атрибута, который после вывода спрайта записывается в область атрибутов. Про регистры видеокарты старые игры не имеют ни малейшего понятия. Как цвет из(или вместо) области атрибутов должен попадать в видеокарту?
    всё я понял, написал же сразу:
    Цитата Сообщение от Lethargeek Посмотреть сообщение
    записью номера в отображаемые на память порты
    для игр, пишущих атрибуты перед пикселями, достаточно таким (одним) портом считать всю область атрибутов памяти Спека
    для пишущих атрибуты после - либо изменить порядок вызова процедур, либо сначала явно цвет устанавливать, либо сочетать
    плоскости для этого не нужны, и активные два цвета можно выбирать любой разрядности, как девайс по максимуму сумеет
    Прихожу без разрешения, сею смерть и разрушение...

  5. #115

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от inozemcew Посмотреть сообщение
    Вот примерно так это должно работать. Для наглядности накидал небольшую схемку.
    Нажмите на изображение для увеличения. Название: sloi2.jpg Просмотров: 33 Размер: 21.4 Кб ID: 57889
    Почитал повнимательней(бегло пробежался глазами).
    Способ конечно интересный.
    Хотя как задается цвет для спрайтов я не увидел (не дочитал)
    но предположу что или для каждого слоя своя палитра из 2-х цветов
    или что палитра задается как то перед отрисовкой спрайта

    тогда для простоты адаптации нужно
    дополнительный порт для конфигурации
    - выбор типа маски 00111100 и инверсная 11000011.
    - выбор обнулять регистр маски после записи или нет (не всегда же нужно и быстрее)
    - как\чем "обнулять" регистр маски 00000000 или 11111111 или это должно определятся на основе выбора инверсная\не инверсная маска

    дешифрация порта маски должна быть по младшим 8 битам
    для быстрого засылания туда значений при помощи out ($**),a
    так как занимать BC для дополнительного out-а сильно жирно

    и все вроде бы хорошо

    а теперь вопрос как теперь стирать и перемещать то что нарисовано где то там в слое который отображается поверх?
    или нули маски будут и стирать содержимое слоя при повторной записи?

    а еще нужно чтоб спрайты не мигали поверх фона

    и тут вся эта конструкция начинает внезапно увеличиваться в размерах
    уже нужен как минимум 2-й экранный буфер
    и больший разбор и изменение кода

    и в конечном итоге под этот новый видеорежим
    придется переписывать весь вывод графики

    хотя вот какая нибудь automainia переделается на ура
    но оно того стоит??
    и есче

    что делать с играми которые сначала рисуют в бекбуфер?
    а потом быстро перекидывают экран
    сам буфер может быть и вверх ногами))

    есть игры которые рисуют в бекбуфер
    несколько слоев графики
    а потом сверху игрока
    а потом переносят на экран только несколько знакомест с изображением игрока
    и все в буфере вверх ногами при этом)))

    это сколько нужно будет найти и переписать...

    и кто это будет делать?

    это только на первый взгляд кажется что там подменить процедуру вывода и все
    на практике вылезет столько подводных камней...

    с таким же успехом все это проще переписать под тсконфу
    но под неё что то особо никто ничего и не адаптирует

    и сколько будет этих девайсов 10? 15?

    3Ы: а тем временем spec256 конфа пилиться, вроде как, для ReVerSE-U16
    а разукрашивать игры под неё...
    Последний раз редактировалось NEO SPECTRUMAN; 21.08.2016 в 00:25.

  6. #116

    Регистрация
    18.09.2008
    Адрес
    Донецкая обл.
    Сообщений
    95
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    39
    Поблагодарили
    17 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    Хотя как задается цвет для спрайтов я не увидел (не дочитал)
    но предположу что или для каждого слоя своя палитра из 2-х цветов
    или что палитра задается как то перед отрисовкой спрайта
    Все проще. У каждого слоя своя область атрибутов. Цвет спрайта берется оттуда. Перед отрисовкой спрайта цвет задавать не обязательно, можно сделать это и после.


    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    дополнительный порт для конфигурации
    - выбор типа маски 00111100 и инверсная 11000011.
    - выбор обнулять регистр маски после записи или нет (не всегда же нужно и быстрее)
    - как\чем "обнулять" регистр маски 00000000 или 11111111 или это должно определятся на основе выбора инверсная\не инверсная маска
    - всегда инверсная, которая накладывается по AND.
    - обнулять обязательно, в смысле заносить 11111111. При чтении байта из пикселей слоя заносить маску в регистр маски. При записи в порт маски, складывать старое и новое значение по AND. Это позволит выводить несколько спрайтов в один слой.
    - дополнительный порт для конфигурации не нужен.


    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    а теперь вопрос как теперь стирать и перемещать то что нарисовано где то там в слое который отображается поверх?
    Очевидно, запись байта в более нижний слой должна обнулять байты вышележащих слоев. Но, думаю, достаточно только очистки спрайтовых слоев при записи в слой фона.


    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    что делать с играми которые сначала рисуют в бекбуфер?
    Ничего. в бекбуфере нет информации о том какому объекту какой пиксель принадлежит. Как это обойти, я, к сожалению, не знаю.

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    это только на первый взгляд кажется что там подменить процедуру вывода и все
    на практике вылезет столько подводных камней...
    Безусловно. Без предварительной обкатки на эмуляторах не и речи о воплощении всего этого в железе.

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    для пишущих атрибуты после - либо изменить порядок вызова процедур, либо сначала явно цвет устанавливать, либо сочетать
    Дополнительные изменения в код, понятно.

  7. #117

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,963
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    312
    Поблагодарили
    236 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от inozemcew Посмотреть сообщение
    Дополнительные изменения в код, понятно.
    так без них в общем случае никак не получится, потому важно, чтоб эффект от изменений был наибольшим
    и в зависимости от оригинального кода вплоть до 100% изменений можно вынести в отдельный загрузчик
    Прихожу без разрешения, сею смерть и разрушение...

  8. #118

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    дополнительный порт для конфигурации
    - выбор типа маски 00111100 и инверсная 11000011.
    - выбор обнулять регистр маски после записи или нет (не всегда же нужно и быстрее)
    - как\чем "обнулять" регистр маски 00000000 или 11111111 или это должно определятся на основе выбора инверсная\не инверсная маска
    - всегда инверсная, которая накладывается по AND.
    - обнулять обязательно, в смысле заносить 11111111. При чтении байта из пикселей слоя заносить маску в регистр маски. При записи в порт маски, складывать старое и новое значение по AND. Это позволит выводить несколько спрайтов в один слой.
    - дополнительный порт для конфигурации не нужен.
    нужен нужен
    процедура рисования спрайта может

    как брать байт из экрана 10101010
    делать and 11000011 маска
    и or 00011000 спрайт

    так и с точностью на оборот
    делать or 00111100 маска
    и and 11100111 спрайт

    понадобиться находить и менять сами спрайты и их маски
    а это может вызвать дополнительные проблемы и артефакты (я как то ужо инверсировал графику в игре...)
    а если вся графика запакованная?

    для облегчения работы не помешал бы порт конфигурации

    не обязательное обнуление позволит немного оптимизировать\ускорить отрисовку
    зачем каждый раз засылать маску если процедура печати её, к примеру, по просту не меняет

    например она вот такая
    11110000
    11110000
    11110000
    11110000
    11110000
    11110000
    11110000
    11110000

    - - - Добавлено - - -

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

    Цитата Сообщение от inozemcew Посмотреть сообщение
    Все проще. У каждого слоя своя область атрибутов. Цвет спрайта берется оттуда. Перед отрисовкой спрайта цвет задавать не обязательно, можно сделать это и после.
    то есть на уровне каждого слоя будет свой клешинг??
    не в принципе терпимо

  9. #119

    Регистрация
    18.09.2008
    Адрес
    Донецкая обл.
    Сообщений
    95
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    39
    Поблагодарили
    17 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    потому важно, чтоб эффект от изменений был наибольшим
    Позвольте не согласиться. ИМХО важнее всего минимум изменений в коде - максимально возможная адаптация под имеющийся софт.

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    так и с точностью на оборот
    Честно говоря, такого не встречал. Но, в принципе, учесть такой вариант можно. Только никаких портов конфигурации. Достаточно, скажем, установить старший бит в номере слоя.

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    зачем каждый раз засылать маску если процедура печати её, к примеру, по просту не меняет
    Вообще-то, никто не проверяет "а не изменилась ли маска?", лично я такого не видел. Проще взять и вывести, чем проверять.

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    а почему при этом спрайты не будут мигать поверх фона?
    а они будут мигать
    Не будут. В оригинале же не мигают. Значит авторы игрухи уже позаботились, чтобы отрисовка шла в нужный момент.

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    то есть на уровне каждого слоя будет свой клешинг??
    В каждый слой выводить спрайты одного цвета. Отсюда больше 16 слоев нужно разве что чисто теоретически.

  10. #120

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,963
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    312
    Поблагодарили
    236 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

Страница 12 из 53 ПерваяПервая ... 8910111213141516 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 43
    Последнее: 03.10.2015, 07:09
  2. принцип переключения адресных страниц в ПЗУ
    от Руслан в разделе Несортированное железо
    Ответов: 11
    Последнее: 10.04.2013, 16:50
  3. AY принцип формирования сигнала.
    от Руслан в разделе Звук
    Ответов: 5
    Последнее: 29.03.2013, 17:08
  4. Принцип работы M1 на Scorpion
    от TmK в разделе Программирование
    Ответов: 8
    Последнее: 17.08.2009, 15:40

Ваши права

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