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

User Tag List

Страница 1 из 25 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 243

Тема: Идея простого расширения стандартного видорежима

  1. #1
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,533
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    264
    Спасибо Благодарностей получено 
    208
    Поблагодарили
    166 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    Lightbulb Идея простого расширения стандартного видорежима

    ВНИМАНИЕ! СЛЕДУЮЩИЕ ИДЕИ СЧИТАТЬ УСТАРЕВШИМИ. НОВЫЙ
    ВАРИАНТ ИСКАТЬ НА СТР. 14-15 ПОД ЗАГОЛОВКОМ "NEW SCF-MODE"


    А ЕЩЕ ДАЛЬШЕ ИСКАТЬ ПОСЛЕДНЕЕ ВЛОЖЕНИЕ С ОРИЕНТИРОВОЧНЫМИ
    СПЕЦИФИКАЦИЯМИ ВИДЕОКАРТЫ.


    ВCТУПЛЕНИЕ

    Пробудившись после десятилетнего пц-шного кошмара написанием со скуки примитивного
    эмулятора 48-го компа, я в поисках технических подробностей с некоторым удивлением
    обнаружил не только то, что за меня эту работу уже многократно проделали другие,
    но и что реальный Спек до сих не загнулся, а напротив - активно монструировался,
    обрастал мозгами, винтами, клавами, модемами, звуковыми платами, недоделанными
    осями и т.д. и т.п.

    Но если с мозгами и всякой периферией дело обстояло более-менее благополучно, то
    самая главная болячка народного компа продолжает существовать в неизменном виде
    уже третий десяток лет. Я, конечно, про экран говорю.

    Нет, что-то уже появлялось, какие-то режимы делались новые (каждый производитель
    так и норовил выдумать свой вариант) - высокое разрешение, EGA-режим (на 32 кб!),
    мультиколор аппаратный (от которого проку нуль), гигаскрин (который и не видеорежим
    вовсе, а так, хитрость); даже целый Денди запихивали в несчастный Спек. В сети
    иногда на такое наткнешься - народ мечтает о Truecolor'е и 3D-ускорителях! Нда.

    Не хочу сказать, что все реализованные идеи так уж плохи. Только выглядит все это
    как-то уж совсем инородно, к собственно Спектруму никаким боком. Расширенные экраны
    или совсем по-другому устроены, или для телевизора не годятся, или еще что. Причем
    отношение производителя/автора приблизительно такое: ну вот же есть режим без всяких
    там ограничений, которые так напрягали раньше - чего вам еще нужно? А почти весь
    софт так и пишут под "голый" 128-й Пентагон. Ну под GS там еще. Ну память лишнюю
    используют иногда. Но другие видеорежимы - неееет!

    Есть, конечно, какие-то программы. Системные. Или вообще под CP/M. И для чего они?
    Для профессионального применения? Еще кто-то профессионально юзает Спек? Флаг им в
    руки, конечно, но все же знают, что для подавляющего большинства Спек уже только
    хобби и не более того. 90% нового софта - демы и игрушки (если не считать новым
    софтом очередную 'надцатую версию асма или редактора) - которые пишутся под тот же
    "голый" 128-й с тем же экраном. И никто их переделывать не будет, и так рады, что
    закончили. Ну разве что поддержку GS добавят.

    У меня Спека живого нет. Но вот тут слухи ходят, что новые модели Спеклонов все
    еще разрабатываются и даже планируется их выпускать. И видеорежимы дополнительные
    в них, наверное, будут. Такие же от Спека далекие.

    В связи с этим не могу молчать!!

    И главное, что хочу сказать: Спектрум сейчас нуждается в улучшении именно обычного,
    всем до боли знакомого видеорежима, причем в улучшении, логически вытекающем из
    уже давно существующей стандартной архитектуры. Ничего не имею против реализации
    нестандартных "профессиональных" видеорежимов, но говорить о том, что они РЕШАЮТ
    графические проблемы СПЕКТРУМА - неправильно.

    Попробую сформулировать основные требования к новому прибамбасу:

    1) Максимальный эффект при минимуме изменений. Как завещал дедушка Синклер - все
    должно быть дешево и сердито. (Сразу скажу, что я не железячник и не радиолюбитель
    никаким боком. Но даже такие люди могут интуитивно чувствовать сложность задачи).

    2) (Скорее первое). Все это дело должно бать поддержано софтом, иначе какой смысл.
    Софта есс-но нет. Писать софт трудно, лениво и неблагодарно. Значит, надо сделать
    так, чтобы писать было как можно легче (а в особенности переделывать, что все же
    проще - иначе не было бы на Спеке такого количества конверсий).

    3) (Снова скорее первое Минимальная несовместимость со стандартной машионй.
    Пусть даже со стандартным клоном.

    Собственно, на требованиях можно было бы и закончить (получив репутацию пустомели,
    которому только подай готовенькое). Но раз уж всякие мысли приходили в голову,
    почему бы сразу не изложить, как бы могла выглядеть конкретная реализация.


    1. УВЕЛИЧЕНИЕ ЦВЕТОВОГО РАЗРЕШЕНИЯ

    Небось, все помнят игрушки с атрибутно-красочной графикой вроде Savage, Extreme,
    Dan Dare 3, Shadow Warriors... Astro Marine Corps - самый яркий пример. Вот чего
    можно добиться, с умом распорядившись ограниченными цветовыми возможностями
    стандартного экрана! Но все-таки заметно, что спрайты довольно-таки угловатые
    (и слишком большие), а анимация дерганая.

    Вот если бы увеличить цветовое разрешение в два раза (то есть поделить знакоместо
    на четвертушки - и для каждой свой атрибут) - качество картинки сразу резко
    улучшится, угловатость практически сойдет на нет, мелкие спрайты можно раскрасить.
    И чанки цветные сделать! => и видеоролики типа Worms c удвоенным разрешением.

    Теперь о проблемах (о том, как ULA при выводе строки должна читать в полтора раза
    больше байт из-за удвоенного цветового разрешения по горизонтали - хотелось бы
    услышать мнение железячников; я, как уже говорил, рассматриваю вопрос с позиции
    программиста).

    Понятно, что понадобится больше видеопамяти (ровно 9 килобайт на весь экран); и
    залезет он на область системных переменных и Васика. Этого можно избежать, если
    использовать этот режим только для дополнительного экрана на 7 странице. Хотя
    вообще-то безобразие - ULA для разных экранов в разном режиме должна работать,
    что ли (и возможно ли это)? А если они переключаются на разных там моргалках?
    Мы пойдем другим путем.

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

    Комбинация атрибутных областей может быть любая:
    11 12 11 12 12
    11 12 22 31 34
    (соответственно стандартный атрибут; поделенный по вертикали - для мелкого шрифта;
    поделенный по горизонтали - для вертикальных скроллеров; извращенный вариант -
    например, у буквы левый нижний угол темнее, а правый верхний бликует; полностью
    расчетверенный атрибут). Это и по памяти дает экономию, если что-то излишне. Можно
    и совсем уж сэкономить: читать атрибуты из третьего сегмента экрана, а его забить
    цветом бордюра. Получаем ужатый экран с улучшенной цветностью - всего 7 кб).

    Почему указатели только в пределах страницы? Чтобы можно было их использовать и для
    второго экрана (с поправкой на страницу); да и регистров лучше все-таки поменьше
    иметь. А если располагать их только по ровным (кратным 256) адресам, то можно вообще
    обойтись одним 8-разрядным портом (то есть посылаем байт, в котором 2 бита - номер
    четверти, а 6 бит - номер 256-байтного куска - как раз 16 килобайт получается).

    Правда, Васик пострадает, ну да фиг с ним - если уж так приперло использовать все
    это из Васика, в крайнем случае можно загнать атрибуты в REM-строку).
    Последний раз редактировалось Lethargeek; 02.08.2006 в 04:42.

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

  3. #2
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,533
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    264
    Спасибо Благодарностей получено 
    208
    Поблагодарили
    166 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    2. "ФОНОВЫЙ" И "ПРОЗРАЧНЫЙ" ЭКРАНЫ

    Не секрет, что основная проблема стандартного Спековского экрана - пресловутый
    "атрибутный клэшинг" (не все же можно сделать по типу Savage и AMC, а монохромная
    графика как-то немного начала надоедать в начале XXI века). Где-то этот поганый
    эффект почти не раздражает (где спрайты маленькие - как у Диззей), где-то - просто
    выводит из себя. Идея состоит в том, чтобы от него наконец-то избавиться путем
    циничной расправы над многострадальным никому не нужным признаком FLASH и жесткой
    специализации двух имеющихся у Спектрума экранов.

    Над FLASH'ем уже не раз издевались пытливые синклеристы - достаточно вспомнить так
    называемые "доработки" FLASH-color и BRIGHT2. Все это не было стандартизовано,
    по-разному переключалось (а то и вообще не переключалось), а толку было немного.
    Все-таки действовать надо осторожнее, и обязательно с оглядкой на существующий софт.

    Что если второй экран сделать фоном, а основной - чем-то вроде прозрачной пленки, на
    которой будут изображаться "спрайты" (так раньше мультфильмы делали). Теперь бит
    FLASH будет обозначать прозрачность PAPER в данном знакоместе. На самом деле FLASH
    можно оставить почти как есть, что хорошо для старых программ, а для наших целей
    использовать только "бессмысленные" значения атрибута, у которых при включенном FLASH
    INK=PAPER. То есть в этом случае для каждого байта графики нулевые биты - прозрачные
    (отображается фон), а единичные - этот самый цвет INK=PAPER. Особый случай - когда
    FLASH=1, BRIGHT=1, INK=PAPER=0 (то есть "ярко-черный" цвет) - здесь лучше считать все
    знакоместо прозрачным, чтобы спрайты не стирать ручками, тратя время. А при запуске
    старых программ в 99% случаев ничего и заметно не будет, даже если этот режим вообще
    не выключается.

    Если второй экран сделать активным (как это делается в обычном Спектруме), он так
    и будет изображаться, полностью забивая первый. Если активен первый (прозрачный)
    экран - что-то вроде заднего плана на всяких приставках.

    Вспомним также, что признак FLASH использовался разве что в старых "48-киловых"
    программах, а на втором экране и подавно оказался не нужен (лично я видел только
    одну интру, где FLASH мешался на фоне multicolor'ной картинки). На втором экране
    FLASH заменим на упомянутый BRIGHT2 - для плотно закрашенного ФОНА это важно.
    Здесь есть нюанс - если считать, что FLASH (теперь BRIGHT2) и простой BRIGHT,
    равные 0, означают пониженную яркость, а 1 - повышенную, то можно использовать
    ранее невидимый "ярко-черный" цвет, но совместимость со старым софтом пострадает.
    Иначе лучше считать, что BRIGHT2=1 означает, что яркость PAPER НЕ СОВПАДАЕТ с
    яркостью INK, равной обычному BRIGHT.

    Очень легко сделать быстрый знакоместный скролл (и вертикальный, и горизонтальный)
    всем известными методами извращений со стеком - спрайты-то стирать не надо. Даешь
    фреймовые скрольные игрушки на Спеке! Да и плавно тоже прокручивать будет проще.

    Ограничения: спрайты продолжат красить друг друга (но, как показывает опыт, это не
    страшно, лишь бы фон не красили) и все равно будут "полупрозрачные". Маску придется
    все-таки на фоне печатать, что осложняет прокрутки - хотя на быстро движущемся фоне
    "полупрозрачность" будет малозаметна. Если спрайт достаточно большой и движется
    поатрибутно, его середину можно сделать сплошной - двухцветными атрибутами, а края
    - одноцветные.


    3. СОВМЕСТНОЕ ИСПОЛЬЗОВАНИЕ

    Ничто (программисту) не мешает одновременно иметь и спрайтовый режим, и улучшенное
    цветовое разрешение, причем визуальный эффект усилится многократно! Например,
    практически отпадет необходимость печатать маску на фоне - спрайт и так уже будет
    состоять из достаточно мелких деталей, чтобы нормально его раскрасить, и двигаться
    гораздо плавнее. Единственная проблема, которая может возникнуть - то, что для
    прокручивающегося фона объем видеобуфера важнее, чем повышенние цветовое разрешение.
    Все-таки неплохо было бы включать его независимо от первого экрана.

    Совместимость с 48-киловыми программами почти 100%. Всякие X-колоры/моргалки и
    прочие гигаскрины как работали, так и будут работать. Если крайне редко и будут
    наблюдаться мелкие глюки, так только графические, а не программные. Но главное!
    Уже существующий софт (игрушки прежде всего очень легко переделывается под новые
    возможности (48-е - вообще элементарно для тех, кто ломать умеет, большинство
    изначально 128-х - тоже). Я уж не говорю, что если кто-нибудь что-то новое пишет,
    то очень легко сделать сразу две версии - обычную 128-ю и расширенную. Так что
    без софта данные примочки, будь они реализованы в железе, точно не останутся - уж
    курочить игрушки у нас в стране научились давно, почему бы и не сделать что-то
    более полезное, нежели всякие интры для дисковок и cheats. Да и чего ждать-то?
    Почему бы не...


    ЭМУЛЯЦИЯ

    ...встроить поддержку вышеописанного (надеюсь, не полного бреда в эмулятор?
    Глядишь, и софт появится раньше, чем железяка. Я понимаю, конечно, что матерый
    спектрумист ехидно ухмыльнется на эти слова, дескать, этот софт будет не под
    железо, а под конкретные глюки конкретного эмулятора. С учетверенными атрибутами
    оно может и так, но если предположить, что включаться будет через один порт
    уже описанным способом, то потом софт легко исправить. Хотя, конечно, невредно бы
    сначала выслушать мнение товарищей железячников - как бы оно могло быть реализовано.
    А вот насчет фона со спрайтами - ну какие там могут быть глюки? Прога будет просто
    подразумевать, что "бессмысленные" атрибуты с включенным FLASH работают именно
    таким образом, и что этот режим в момент загрузки включен (если он даже навечно
    включен - большой беды не будет). Особо мнительные могут пока не трогать BRIGHT2.
    Я же говорю, основная идея была - простота написания и переделки софта.

    Засим заканчиваю (наконец-то!). Благодарю нашедших в себе силы дочитать до конца.
    Буду очень рад увидетьть серьезные отклики и мнения профессионалов. Только ногами
    сразу не бейте.

  4. #3
    Guru Аватар для fan
    Регистрация
    11.02.2005
    Адрес
    Москва
    Сообщений
    3,789
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek
    И главное, что хочу сказать: Спектрум сейчас нуждается в улучшении именно обычного,
    всем до боли знакомого видеорежима
    Амиень. Хоть кто то это понял (респекты), а то все как один ударились в монстрологию, а на графику забили ...

    Цитата Сообщение от Lethargeek
    1) Максимальный эффект при минимуме изменений. Как завещал дедушка Синклер - все
    должно быть дешево и сердито.
    Как раз все нынешние видео режимы и вышли из "дешево и сердито"...
    (и кстати из всего написаного мне представилась ечередная кучка мелкосхем )

    Цитата Сообщение от Lethargeek
    Все это дело должно бать поддержано софтом, иначе какой смысл.
    А-га, щааз. "Хочешь кого-то убить? Сделай это сам!". Короче нужна команда маньяков (на горизонте не видать ).

    Короче - не вижу смысла в рассыпушной реализации видео режимов, "даёшь однокристалки!". Собсно нынче есть достаточно много линеек однокристалок совместимых с предшественниками (внутри своей линейки). Остаётся выбрать конкретную разновидность. Собсно почему именно однокристалки - потому что лучше оставить поле для свободного творчества , чем нагородить очередную тучу нафиг нужных видео режимов. ИМХО оптимальный выбор для извращений MCS-51 (практически такойже стандарт как Z80 в сваей области), к тому же присутствует в виртуальном виде (можно круто разогнать).

  5. #4
    Activist Аватар для PheeL
    Регистрация
    19.01.2005
    Адрес
    Москва
    Сообщений
    333
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я таки вставлю свои 5 копеек. Моя ИМХА такова, что лучший Спек с расширенной графикой - это Sam Coupe. Не поленитесь, скачайте эмуль и посмотрите демки той же ESI, например. Я считаю, что это лучше чем MSX.
    Sinclair ZX Spectrum 128k (Toastrack) + ZX Spectrum +3 + DivMMC EnJOY
    Commodore 64c + 1541 Ultimate II
    Commodore Amiga 1200 + 8Mb Fast + CF 8Gb + GOTEK

  6. #5
    Master Аватар для ASDT
    Регистрация
    04.08.2005
    Адрес
    Новосибирск
    Сообщений
    738
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    "свои 5 копеек"
    Я ещё толком не обумывал эту тему, но расширение
    до вга-свга имеет смысл с применением внешних (иса) видеокарт.
    Их цена - 0, только надо продумать интерфейс.

  7. #6
    Guru Аватар для fan
    Регистрация
    11.02.2005
    Адрес
    Москва
    Сообщений
    3,789
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от PheeL
    Я таки вставлю свои 5 копеек. Моя ИМХА такова, что лучший Спек с расширенной графикой - это Sam Coupe. Не поленитесь, скачайте эмуль и посмотрите демки той же ESI, например. Я считаю, что это лучше чем MSX.
    Ещё бы не лучше , каждая точка своим цветом Но насколько я помню в качестве видео контроллера используется спец мелкосхема которую фиг повториш (хотя если есть эмуляторы и исходники кним, то и этот чип вполне реально "запихнуть в матрицу"). Кто возьмёт флаг в руки?

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

  8. #7
    Master Аватар для Shaos
    Регистрация
    16.01.2005
    Адрес
    California, USA
    Сообщений
    786
    Спасибо Благодарностей отдано 
    88
    Спасибо Благодарностей получено 
    85
    Поблагодарили
    58 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от PheeL
    Я таки вставлю свои 5 копеек. Моя ИМХА такова, что лучший Спек с расширенной графикой - это Sam Coupe. Не поленитесь, скачайте эмуль и посмотрите демки той же ESI, например. Я считаю, что это лучше чем MSX.
    Ну вабчета лучший спек с расширенной графикой - это Спринтер

    А по поводу четвертушек в знакоместе - уж лучше делить на "восьмушки", т.е. горизонтальные блоки по 8 пикселов, которые имеют цветовой описатель в 1 байт - 4 бита соответствуют биту 0 и 4 соответствуют биту 1 - ну то есть как в компьютере "Орион"
    Администратор сетевого сообщества nedoPC.org
    Урал 8/64К, Sp2000, ZX48K+, ZX16K (спалил), TS1000 (американский ZX81), TS2068, Дельта-С, 20 лет собираю ATM Turbo 2+
    Неспектрумы: Электроника МК-85 и МК-85М, ПК-01 Львов, БК-0011, Вектор-06Ц, Лик (спец), Апогеи, Radio-86RK SRAM 32K & 128K (всё ещё собираю)

  9. #8
    Master Аватар для Vladimir Kladov
    Регистрация
    09.02.2005
    Адрес
    Новосибирск
    Сообщений
    933
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Мое мнение такое что нафиг не надо ничего делить ни на восьмушки ни на четвертушки, а лучший способ избежать клэшинга причем дешевый и сердитый - это 2 или 3 экрана, и для каждого - свое собственное смещение в пикселах по x и y. 0-й экран перекрывается 1-м, 0-й и 1-й - 2-ым, и т.д. Тогда прокрутку или к примеру движение заднего плана (когда игровой объект все время в центре экрана, а движется фон) можно выполнять одной командой вывода в порт, и даже герцов добавлять не надо. И наоборот, можно чуть сдвигать экран со спрайтами, если используется неподвижная комната и движущиеся по нему спрайты. Я впрочем уже говорил об этом в этом форуме, вспоминая Ямаху. В идеале - один экран, и "массив спрайтов", в порядке Z-order.

  10. #9
    Veteran Аватар для SMT
    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а из ямахи нельзя открутить видеопроцессор? а то очень уж хорошие там игры... ведь FM-звук уже откуда-то утащили, почему бы ещё чип не взять...

  11. #10
    Guru Аватар для CHRV
    Регистрация
    18.01.2005
    Адрес
    Москва
    Сообщений
    3,695
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ребята уже делался СПринтер у которыго было все практически что тут написано - токо где он сейчас?
    Так что не надо писать бестолковые спецификации - реализовано всеравно не будет!

    Пожалуйста пишите в 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

Страница 1 из 25 12345 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 44
    Последнее: 19.04.2005, 20:52

Ваши права

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