User Tag List

Результаты опроса: Нужно ли улучшать графические возможности компьютера для облегчения написания игр ?

Голосовавшие
110. Вы ещё не участвовали в этом опросе
  • Да

    58 52.73%
  • Нет

    52 47.27%
Страница 19 из 72 ПерваяПервая ... 151617181920212223 ... ПоследняяПоследняя
Показано с 181 по 190 из 714

Тема: Идеальный Спектрум

  1. #181

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

    По умолчанию

    Не хотите аппаратный блитер, можно по другому сделать. Тем более, что в том варианте клешинг атрибутов между фоном и объектами остаётся.

    Добавить слой для игровых объектов. Добавить 2 поля памяти по 16 кб (из РУ6, например). В одном поле лежит второй слой (второй экран), предназначенный для игровых объектов. Байт атрибутов на байт пикселей, что позволит сделать более симпатичные фигуры героев. А во втором поле памяти лежит маска, которая переключает между стандартным экраном спектрума (фон) и дополнительным слоем (объекты). Все адреса для отображения можно брать от счётчиков самого спектрума. Ускорение работы достигается за счёт отсутствия необходимости восстановления фона. Большой плюс - отсутствует клешинг атрибутов фона и объектов. Строки должны иметь последовательную адресацию.
    Запись в эти поля можно осуществлять, установив соответствующий бит в выделенном порте. Можно оставить адреса дополнительного экрана и маски по прежним адресам экрана 4000, а можно переместить в адреса 0000, можно подумать, как будет удобнее.

    Почему упоминаю РУ6? Думаю, если что-то улучшать, то есть смысл это делать именно на элементах тех лет.
    Последний раз редактировалось AzAtom; 12.03.2018 в 09:33.

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

  3. #182

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    AzAtom, если я правильно понял, это я и предлагал в начале темы. Точнее это отличается от того, что я предложил только тем, что цвет на экранный байт, а не на целый квадрат 8*8, как я считаю правильнее, т.к позволяет не менять графику (а где сейчас найдёшь художников?).

    И ещё, никто так и не заметил, что плоскость маски я предложил не включать в адресное пространство, а работать с ней через регистр с автозаписью.

    Ещё не упомянули о том, прозрачное ОЗУ делать (4 цикла чтения на видеобайт) или такое же как в Синклере с WAIT, когда 3 цикла чтения на видео байт (что на четверть понижает частоту ОЗУ).

    На 565 РУ6 получится дорого, т.к плата резко увеличит размер, статика от кэшей 486-тых - вот панацея для экономии места на плате.

    А можно просто в одном компьютере объединить два. Никак не связанные друг с другом, т.е никаких масок и сложений графики из разных плоскостей. Только или один режим или другой, получаемые на одном и том же видео-генераторе ZX. А разные плоскости (т.е ИМС ОЗУ) применим просто, чтобы избавиться от коммутаций, что с'экономит детали.

    Одна экранная плоскость - обычный ZX (это чтобы была популярность изделия). А вторая экранная плоскость 320*256 c линейным экраном. Читается 80 байтов на строку (в ZX на строку читается 64 байта, но и экран уже). Имеем линейный экран 4 цвета на каждый пиксель и ещё добавляем 2 бита, чтобы получить 4 палитры, причём для каждого экранного байта. Как предложено вот здесь в конце поста. В итоге имеем 16 цветов на точку, компьютер для новых игр и минимальное железо, а на клешинг в ZX наплевать.
    Последний раз редактировалось barsik; 12.03.2018 в 10:24.

  4. #183

    Регистрация
    14.09.2014
    Адрес
    г. Гусь-Хрустальный
    Сообщений
    603
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    zst в очередной раз хочет устроить лохотрон на продажах со своего помпезного сайта?

    Скрытый текст

    ZX Spectrum +2 +divIDE + BDI
    Profi 1024k plus
    Scorpion ZS-256 Turbo+
    ZX Evolution rev.C2+NeoGS+SDCard HxC Floppy Emulator
    ZX Evolution rev.C2+ZXM-SoundCard Extreme+ZXM-MoonSound
    AVR ZX Spectrum V2.0
    Орион 128
    [свернуть]

  5. #184

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

    По умолчанию

    barsik, да, примерно так. Только я предлагаю атрибуты улучшить. В том предложении с выводом маски через порт немного не понятно получается. В основном для каждого байта маска разная, поэтому, её придётся обновлять для каждого байта спрайта, что в итоге выйдет даже медленнее, чем программно накладывать маску. По крайней мере, не быстрее. Быстрее будет только если много байтов маски будут одинаковые. А как это узнать, если их не считывать и сравнивать с предыдущим?

    Насчёт быстрой маски у меня есть идея. Для маски всё равно используется дополнительная память. В неё же надо загружать маски спрайтов с адресами, соответствующем адресам спрайтов в основной памяти. При копировании байта спрайта в видеопамять автоматически идёт копирование и байта маски и она автоматически накладывается в нужные места. Вот только, в таком случае получится горизонтальный клешинг масок накладывающихся спрайтов. Но, думаю, это будет не проблема, при разработке игры можно это учитывать. Достоинство - основную память не нужно тратить на хранение масок, скорость вывода спрайтов возрастает раза в 1,5.
    Последний раз редактировалось AzAtom; 12.03.2018 в 11:15.

  6. #185

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AzAtom Посмотреть сообщение
    для каждого байта маска разная, поэтому, её придётся обновлять для каждого байта спрайта, что в итоге выйдет даже медленнее, чем программно накладывать маску.
    Так маску надо не накладывать, а просто записывать в ОЗУ. В этом-то и сюжет, - программное маскирование объектов на фоне заменяется аппаратным. Если маску выводить через регистр, не только отпадет необходимость коммутировать банки, но и можно быстрее двигать по фону вертикальные линии и прямоугольники, а также есть выирыш для окон, - чтобы открыть окно для сообщения, мы заносим в регистр маски FF и очищаем окно в плоскости объектов (плоскость фона не изменяется, но не видна). Получается, в 2.5 раза быстрее, чем писать маску как в обычное ОЗУ, переключая банки для каждого байта. Для вывода спрайта читаем два байта, первый байт сразу кидаем в регистр маски, а второй пишем в экран. Регистр маски экономит время, т.к отпадает переключение банок.

    Кстати, уж если вводить плоскость маски как обычное ОЗУ с доступом процессора, то лучше сделать расслоение памяти. Так раньше делали. Тогда четные по адресу байты читаются из одной банки, нечётные из другой. Если в данном такте из банки не читается, то из неё видео-схема читает экран. Т.о в любом случае видео-схема считает байты для регенерации экрана, без необходимости стопорить процессор по WAIT.

    В данном случае, когда четные байты - плоскость маски, а нечетные - плоскость объектов, отпадёт необходимость коммутировать плоскости или иметь регистр маски. Просто копируем спрайт и он сам себя маскирует.
    Последний раз редактировалось barsik; 12.03.2018 в 14:26.

  7. #186

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

    По умолчанию

    Цитата Сообщение от barsik Посмотреть сообщение
    Так маску надо не накладывать, а просто записывать в ОЗУ.
    Я тоже это предлагаю, но без "читаем два байта, первый байт сразу кидаем в регистр маски, а второй пишем в экран.", а просто читаем байт спрайта и пишем его в экран. А байт маски автоматически читается и пишется по тем же адресам, только из банка маски.

    Этот банк можно заполнять следующим образом. Ввести в какой-либо порт бит разрешения записи в банк маски. Разрешаем запись и заполняем свою память масками спрайтов. Одновременно они идут и в банк масок. Затем, запись в банк масок запрещается и память по тем же адресам заполняется уже самими спрайтами.

  8. #187

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Вроде бы Вы имеете ввиду, что плоскость маски распространяется не только на экран, но и по-крайней мере на участок ОЗУ для подготовки спрайтов. И можно заранее в этом неотображаемом ОЗУ заготовить спрайт с маской. Тогда при чтении байта графики из этого участка ОЗУ автоматически читается байт маски и заносится в регистр маски. И затем эта маска при записи графики автоматически перепишется из регистра маски в плоскость маски. Если речь об этом, то слишком громоздко, нужна простота.

    Для одновременного переноса графики спрайта и его же маски, можно сделать плоскость спрайта и плоскость маски 4-х битовыми. В каждом экранном байте 4 бита формируют графику, а 4 бита задают маску спрайта. Тогда копируя из программы в экран спрайт, он автоматически маскируется и совсем не требуется заботиться о маскировании. Тут имеется ввиду, что экран 4-х битовый только для процессора, а для видео-схемы экран остаётся 8-ми битовым, т.е видео-схемой зараз читаются две тетрады графики, т.к и графика фона в ZX 8-ми битовая. Если же совместимость с ZX не нужна и можно и фон сделать 4-х битовым, то будет ещё проще. Тогда у фона будет 4 лишних бита для цвета.
    Последний раз редактировалось barsik; 12.03.2018 в 15:47.

  9. #188

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

    По умолчанию

    barsik, попробую нарисовать свою идею псевдографикой.

    Код:
    [================ФФФФФФФ=========================================] - Память спектрума. Тут сидит экран, который является фоном.
                                   /--------------|
                        |---------/               |
                    [ССССССС]                     |                    - экран для спрайтов.
                        |                         |
                        |                         |
                    [ММММММ==========================================] - Теневая память для масок.
                        |-------------------------|
                        |                         |
                      (с2)                      (спр1)
    Когда мы копируем спрайт, то например, читаем байт из адреса (спр1) и пишем его по адресу (с2). В это же время одновременно с ним в памяти маски копируется байт из адреса (спр1) в адрес (с2) байт, который является маской байта пикселей спрайта, который мы сами копируем.

    В общем, копируем 1 байт, а на самом деле железом копируется сразу 2 байта в 2 разных банках памяти. И без портов или регистров. По крайней мере, это должно быть прозрачно для программиста.
    Последний раз редактировалось AzAtom; 12.03.2018 в 15:28.

  10. #189

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Этот рисунок ничего не поясняет, он бесполезен.

    Цитата Сообщение от AzAtom Посмотреть сообщение
    Когда мы копируем спрайт, то читаем байт из адреса (спр1) и пишем его по адресу (с2). В это же время одновременно с ним в памяти маски АППАРАТНО копируется байт из адреса (спр1) в адрес (с2) байт, который является маской байта пикселей спрайта, который мы сами копируем.
    Это же, но более понятно я и изложил в предыдущем посте. Непонятно как маска в теневой плоскости возникнет в исходном месте где хранится спрайт, откуда он и переносится программно на экран.

    А идея автоматического переноса второго байта (в данном случае цвета) одновремено с копированием графики не нова. Её в железе реализовал sherlock ещё в 1988 году в мелкосерийном компьютере "Радуга".

    Цитата Сообщение от AzAtom Посмотреть сообщение
    По крайней мере, это должно быть прозрачно для программиста
    Да скорее уж аппаратчики разберутся в новоротах железа. А если понятно объясняется, то поймёт и любой полный чайник в программировании.
    Последний раз редактировалось barsik; 12.03.2018 в 15:45.

  11. #190

    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,082
    Записей в дневнике
    11
    Спасибо Благодарностей отдано 
    173
    Спасибо Благодарностей получено 
    493
    Поблагодарили
    343 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AzAtom Посмотреть сообщение
    В общем, копируем 1 байт, а на самом деле железом копируется сразу 2 байта в 2 разных банках памяти.
    Цитата Сообщение от zst
    Видеокарта на базе отдельной памяти из 3х микросхем SRAM 128K 70 ns в корпусе SOIC и микросхем счетчиков, регистров и мультиплексоров в корпусах DIP.
    Дух старой школы, компьютеры размером в 400 корпусов мелкой логики... Романитика!
    Идеальный спектрум будет размером в 1 кв. метр такими темпами. Мне кажется, что "идеальность" всё-таки должна как-то ограничиваться размерами табуретки, на которой спектрум будет стоять перед телевизором. Если хватает одной табуретки, то всё норм. А если требуется вторая, то уже как-то не идеально.
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI YTINK 9 Channel

Страница 19 из 72 ПерваяПервая ... 151617181920212223 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 4
    Последнее: 15.05.2017, 15:32
  2. Ответов: 18
    Последнее: 12.03.2016, 14:15
  3. Ответов: 69
    Последнее: 13.06.2012, 10:33
  4. GO! на спектрум!
    от bigral в разделе Программирование
    Ответов: 1
    Последнее: 11.01.2012, 09:44
  5. Спектрум и Я
    от Black_Cat в разделе Разный софт
    Ответов: 0
    Последнее: 05.08.2007, 21:00

Ваши права

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