Стоит прикрутить опрос, сколько человек готово это купить и сколько человек готово под это писать софт. Затем сложить эти числа и разделить на 2пи - вот примерно столько и будет реально заинтересованных в очередном велосипеде людей![]()
Стоит прикрутить опрос, сколько человек готово это купить и сколько человек готово под это писать софт. Затем сложить эти числа и разделить на 2пи - вот примерно столько и будет реально заинтересованных в очередном велосипеде людей![]()
Мои игрушки: PowerbookG4 / MacMiniG4 / MacMini i5 / Amiga1260 / Commodore64 / Atari65XE / MSX1 SVI-728 / MSX2 КУВТ2 / MiST / MiSTer / Profi+ / KarabasPro / Speccy2010 / Aspect128 / ZX-UNO VGA 2M / PS3 / PS4Pro+PSVR / PSP / PS Vita / GBC / LDK Game / RG350M / iPhone / iPad / Raspberry Pi (0/3B+/4B/5)
MorphOS / AmigaOS / MacOS / Linux
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Я сначала хотел действительно новый. Но вернулся к истокам и собираюсь немного улучшить все, основываясь на прошедших годах на основе кэша с устаревших IBM 486. Если бы разработчики Спекрума знали, сколько проблем они создадут программистам упрощенной графикой, то сделали бы это сами. Да они и не планировали, что Спектрум проживет долго и не было тогда кэш памяти. Но так как их уже нет, а мы есть, то это сделаем мы. И будем программировать на компьютере с исправленными глюками. Пишут же для NEXT-а. Может и молодежь с ардуино перейдет на Z80. Игры писать с выводом на телевизор/монитор интереснее, чем выводить буковки на LCD или мигать светодиодами. Тут их ждет слава, почет, уважение и т.п. Тем более нас много и есть у кого спросить, как что делается. Нет, так тряхнем стариной и сами будем писать. Что нельзя было успеть вывести на экран в старом компьютере, теперь можно успеть в новом.
Последний раз редактировалось zx-kit; 04.03.2018 в 12:46.
"L-256"
Это самая реальная из идей по новоделу ZX без клешинга, что обсуждаются тут в последние месяцы. Потому, что это реализуется просто и практически без вторжений в базовую схему клона ZX. Да и гораздо полезнее для игр, чем вводить 8 битов на цвет одной точки.
Речь идёт о том, чтобы иметь два одновременно отображаемых экрана. Старый экран становится плоскостью заднего плана, а добавленный второй экран становится плоскостью по которой двигаются спрайты, причём без клешинга, хотя цвета на графику в обоих плоскостях задаются на квадрат 8*8.
Второй параллельный экран вводится с той же самой организацией графики и цвета как и оригинальный. Но в этом втором экране имеется ещё один слой, работающий только на запись. Это слой маски. Биты в маске определяют из какой плоскости выводить соответствующую экранную точку. Если бит в 0, то на экран выводится точка из плоскости заднего плана. А если 1, то из плоскости переднего плана. Благодаря этому исчезает клешинг, т.к в одном квадратике 8*8 можно иметь уже не 2 цвета, а 4.
Причём экран маски даже не требуется включать в адресное пространство. Используется идея А.Волкова по автозаписи в другую плоскость из специального регистра маски при выполнении записи в экранное ОЗУ графики.
Тогда для того, чтобы вывести один байт спрайта, сначала в регистр маски записывается маска, которая содержит единицы в битах соответствующих телу спрайта. А затем сама графика записывается в экранный буфер графики ZX-Spectrum, и при этом, маска автоматически переписывается из регистра в плоскость маски по нужному адресу.
Т.о требуется переключать две экранные страницы в окне размером 8 кб с адреса 4000. Делая доступным в этом окне, то плоскость заднего плана, то плоскость переднего плана. А архитектура расширяется всего на 2 порта на вывод - порт маски и однобитовый порт переключения 2-х плоскостей экрана.
Кстати, если есть фон, то маски для спрайтов в игре уже есть, только их обслуживать приходится программно, т.е читать содержимое экрана и накладывать на него спрайт, что гораздо медленнее, чем просто кинуть маску в регистр маски. Т.о введение аппаратной маски перекладывает задачу маскирования при выводе спрайтов на аппаратуру, что упрощает программирование и ускоряет.
Кроме того, можно использовать маску не как средство раскраски спрайтов без клешинга, а как средство выбрать биты, в которых нужны два других цвета. Тогда спрайт выводится на обе плоскости, что позволяет на цветном фоне без графики двигать 3-х цветный спрайт.
Интересно, что коммутация режимов не нужна, - чтобы получить полный оригинал ZX по экрану, достаточно обнулить регистр цвета, что и делается по сбросу.
Если задача только борьбы с клешингом, то эту же идею можно существенно упростить. Вводим только плоскость маски и второй буфер атрибутов цвета. Тогда работать с этой плоскостью надо только в случае когда возникает клешинг, при этом только цвета спрайта берутся из второй плоскости, а графика остаётся той же.
Это легко сделать, но не особо нужно. Таких игр для Spectrum-48К нет. Для борьбы с мерцанием программисты успевают выводить на экран во время гашения. Если поднять скорость Z80, то успеют тем более.
Вряд-ли это необходимо, а при переделке ZX-игр, чтобы избавить их от клешинга, даже вредно.
Не требуется, т.к при нужде можно поиметь 4 цвета точек на знакоместо, а при переделке ZX-игр, чтобы избавить их от клешинга, даже вредно. Речь же именно об игровом компьютере, а возможностей цвета ZX хватало. Мешал только клешинг.
Зачем усложнять? Проблему быстрого сдвига экрана решает удвоение клока Z80, что намного разумнее, чем вводить кучу сумматоров и усложнять себе программирование. Даже без всяких наворотов получится много деталей, зачем же ещё усложнять ради одной игры леталки-стрелялки, которая скорее всего и не появится.
Главное, чтобы он остался простым и 100% совместимым.
Последний раз редактировалось barsik; 04.03.2018 в 13:09.
В данном случае речь не только о клешинге. Аппаратный сдвиг фона необходим. Мы же игры будем делать цветные. Как же сдвинуть фон влево на 1-2 точки, если цвета зависят от атрибутов. Да и не хватит скорости у Z80 даже черно-белую картиннку сдвинуть. Если мы не сделаем скроллинг одна стрелялка-леталка так и не появится. Нет у Z80 на это возможностей.Зачем усложнять? Проблему быстрого сдвига экрана решает удвоение клока Z80, что намного разумнее, чем вводить кучу сумматоров и усложнять себе программирование. Даже без всяких наворотов получится много деталей, зачем же ещё усложнять ради одной игры леталки-стрелялки, которая скорее всего и не появится.
Второй экран тоже нужен. В играх вместо второго экрана использовали буфер в основной памяти, затем копировали на экран. Но скорости Z80 не хватает для копирования всего экрана. Поэтому надо убрать операцию копирования - просто меняем экраны между собой. Это делается мгновенно. Один байт атрибута на 8 точек тоже надо. Цветов всего 15. Хоть как-то увеличим разнообразие тайлов и спрайтов. Все, что описано желательно сделать.
Аппаратный скроллинг сделать не сложно. Для этого надо три регистра для записи смещения по-горизонатали и вертикали. В начале окна из них будем загружать начальные значения в счетчики - и все !
Последний раз редактировалось zx-kit; 04.03.2018 в 15:01.
"L-256"
Не понял как Вам поможет аппаратный ролик при панорамировании по горизонтали. Экран же байтовый, значит и аппаратный сдвиг будет с шагом в 8 точек. Это по вертикали доп.аппаратура поможет сделать плавный и быстрый сдвиг всего экрана. Так сделано в БК-010 и Векторе. И вообще, какой смысл напрягаться из-за одной потенциально возможной игры. Даже всего 3 регистра тратить на это глупо. Сделайте лучше первую версию по минимуму.
Уверен, что ничего больше того, что я предложил не нужно. Т.е это минимальный и одновременно оптимальный вариант. Оптимальным он будет, если это останется клон 48К, не надо Spectrum-128. Но т.к есть и вторая банка ОЗУ с окном в 8К, то глупо не сделать её прокачку в этом окне 4000...5FFF (расход в 1 регистр), а также ввести отключение ПЗУ 0...3FFF, что даст те же 128 кб, но "под другим соусом", чем в Spectrum-128. Главное преимущество - сплошное доступное ОЗУ в 64 кб. Сделайте такой компьютер на маленькой дешёвой плате, без всяких FPGA и Вам можно будет ставить памятник при жизни.
Кстати в "Радуге" (на КР580), разработанной sherlock-ом, одновременно с чтением байта графики, автоматически читается и по перезаписи автоматически переписывается на новое место и байт атрибутов. Но для экрана ZX и это не особо надо, т.к там всего один байт цвета на 8 байтов графики.
Предлагая сохранить организацию цвета ZX и в дополнительной плоскости, я исхожу из того, что это надо для резкого упрощения конверсии ZX-игр в бесклешинговый вариант. Не надо заботиться ни о пересчёте графики, ни о пересчёте цвета. А если экран выпрямить и ввести иную организацию цвета, то тогда придётся более существенно переделывать игру. Потому и экран выпрямлять вредно и цвет менять вредно.
Ведь полно леталок-стрелялок со сдвигом всего экрана и даже по горизонтали.
Последний раз редактировалось barsik; 04.03.2018 в 16:51.
Это один из самых лучших вариантов.
Думал, может уже сразу сделать по 2 бита на пиксель, и из 4 цветов 1 прозрачный. Но в итоге получим 3 цвета на все спрайты, что совсем плохо. Остаётся озвученный выше вариант.
- - - Добавлено - - -
Или, уж, сразу аппаратные спрайты делать. Тогда стандартный экран остаётся фоном и добавятся спрайты. Их уже можно делать 16 цветными. Можно сделать палитру из 256 цветов. Спрайт 4 битный и у каждого спрайта есть 4 битный номер подпалитры. Итоговый индекс из общей палитры составляется из 4 бит самого спрайта и 4 бит номера подпалитры. Т.о., палитру 256 цветов можно будет разбить на 16 подпалитр и каждую выделить для разных объектов (ГГ, враг1, враг2, враг3, взрыв и т.д.). И цвета можно менять просто указав у спрайта другой номер подпалитры. В общем, примерно как у dendy, но не 2, а 4 бит на пиксель спрайта.
Фон тоже желательно снабдить аппаратным скроллером. Тогда будет классно.
Хм, а ведь если бы на dendy сделали сразу 4 битные спрайты (15 цветов), то всё выглядело бы красивее и сега могла и не взлететь...
Я думал о слое спрайтов (не аппаратных спрайтах). Например, 2 точки на байт. Рисовать вертикальными линиями командой LDIR. Но это не похоже на экран Спектрума. Хотя может и проще, чем три дополнительных слоя (маска+bitmap+attr).
Давайте обсудим этот вариант. Можно например, фон оставить как Спектрум+линейная адресация+атрибут на 8 точек+аппаратный скроллинг. А спрайтовый слой по 2 точки на байт.
У Сеги 2 слоя фона со скроллингом и экран шире и спрайтов больше и цветов больше.Фон тоже желательно снабдить аппаратным скроллером. Тогда будет классно.
Хм, а ведь если бы на dendy сделали сразу 4 битные спрайты (15 цветов), то всё выглядело бы красивее и сега могла и не взлететь...
Последний раз редактировалось zx-kit; 05.03.2018 в 15:58.
"L-256"
В Timex 2068 были аппаратные два экрана в 16к нижней памяти, аппаратный мультиколор и 512*192.
Вот если бы из двух экранов было бы аппаратное наложение, де еще с 1м прозрачным цветом то было бы красиво, особенно для 1982го.
Но 2 байта чтения памяти за раз это мало, а больше это уже не ULA. Я бегло пролистывал многочисленные споры "4 или два байта" на этом форуме, ясно что таки 2шт.
Но и четыре вроде как не так уж сложно по схематике того же 82го.
«Земля - слишком маленькая и хрупкая корзина, для того чтобы человечество держало в ней все свои яйца…» - Роберт Энсон Хайнлайн.
Электроника МК-61, Psion series 5mx.
Всем умеющим читать советую http://www.skeptik.net/conspir/moonhoax.htm http://lurkmore.to/Лунный_заговор
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)