Войти
ФлеймФорумЖелезо

Блеск и нищета 8/16-битных консолей и ПК (108 стр)

Страницы: 1107 108 109 110 111 Следующая »
#1605
14:08, 6 июня 2021

Alikberov
> На сколько вообще это реализуемо?

В в Специалисте (в оригинальном, не в переработанных) наверное можно было исхитриться сделать, т.к. в нем использовались не 8 микросхем К565РУ5, а 24 К565РУ3. Если б Специалист проектировали сразу не на 48 килобайт ОЗУ, а на 64 килобайта на 32-х РУ3, то можно было бы за одно обращение читать сразу 4 пикселя из 4-х "соседних" байт (их можно сделать логически соседними, просто жестко переставив адресные линии, ведь процессору все равно, как они переставлены, главное чтоб перестановка не изменялась). Длительность строки PAL/SECAM 64мкс, из них в Специалисте прямой ход был 48 мкс, обратный - 16. При частоте опроса 2МГц (предельном для большинства К565РУ3) можно было бы иметь те же 384 пикселя по горизонтали...

...если бы не одно НО - процессору тоже надо обращаться к памяти :)

В Специалисте (возможно и в Орионе, но я не уверен точно из-за его повышенной частоты процесоора) использовалась хитрость, основанная на том, что машинный цикл у КР580ВМ80А был не менее трех тактов. Сама схема "видеоконтроллера", хоть и требовала 1 байт в 1мкс, на самом деле опрашивала видеопамять с частотой 2МГц, делая на один байт две "попытки" (с оглядкой на обращения процессора), и только потом передавала защелкнутое значение в сдвиговый регистр. С учетом того, что цикл у процессора не менее трех тактов, у "видеоконтроллера" всегда за 1мкс был шанс, что одна из двух попыток не будет заблокирована обращением процессора.

То есть, тупо на частоте 2МГц опрашивать по 4 байта/пикселя уже не получилось бы (хотя, некоторые из подсерий РУ3 позволяли делать машинный цикл меньше 500нс), но можно было бы воспользоваться хитростью с RAS/CAS, только единожды выставляя RAS и по нескольку - соседние CAS. Если тактировать "контроллер памяти" частотой 4 Мгц (то есть, не чередуя строго RAS/CAS, а позволяя в произвольном порядке ставить RAS-полутакты и CAS-полутакты, по 250нс на один такой полутакт), то за 1500нс минимального машинного цикла мы имеем шесть таких "полутактов памяти", из них 2 каких-то будут заблокированы процессором, а 4 или больше полутактов остаются на сканирование. После каждого обращения процессора нам достаточно один раз выставить RAS текущей видеостроки, и делать как минимум 3 подряд CAS, получив таким образом 12 пикселей на 1500 нс, то есть те же 384 пикселя на 48мкс.

Правда пришлосьбы еще больше переставить адресные линии, чтоб RAS менялся несколько раз на строку, иначе мы не уложились бы в период регенерации динамического ОЗУ (которое в Специалисте и Орионе как раз и происходило за счет видеоопроса).

Но в общем =A=L=X= прав - только одни сплошные усложнения. Проще было обеспечить по горизонтали кратность 8 пикселям и забыть про проблемы со сдвигами. В игрушках это было вполне приемлемым условием, да и не только в игрушках - я вполне сносно работал в режиме "48 символов в строке".


#1606
15:18, 6 июня 2021

Занятный канал про изготовление разных железяк (процессор, звук, последовательный порт, vga, итд) на 74й логике - всё разбито на плейлисты

https://www.youtube.com/c/weirdboyjim/playlists

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры
#1607
(Правка: 16:06) 16:05, 6 июня 2021

0iStalker
> Занятный канал про изготовление разных железяк (процессор, звук,
> последовательный порт, vga, итд) на 74й логике - всё разбито на плейлисты
Разработка и презентация таких железок уже подпадает в рубрику "Городской сумасшедший" :)
(при наличии технологий FPGA для этих реализаций)

P.S. Хотя и тот же zx.pk.ru, по доброму, жив пока за счёт их участия.

#1608
(Правка: 20:26) 20:11, 6 июня 2021

Кстaти, если никто не понял, какую технологию видеосистемы я хочу наработать для Кой-Графики - вот иллюстрация:
Изображение

Вверху - биты маски. Показано 11 флажков, но их может быть до 128 (расчитывал когда-то под SSE-регистр).
Суть такая же, как и в ранних LCD: Спрайты являются псевдо-сегментами виртуального дисплея, которые нельзя двигать, но можно зажечь или выключить, как на демонстрации.

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

Ну, в общем, Вы поняли. Надеюсь…
То есть, процессор сутками (утрирую) может кадр уровня игры заполнять, чтобы потом, как в игре «Ну, Погоди!» просто битами масочного регистра управлять видимостью соответствующих статичных спрайтов…
(Нечто отдалённо похожее я уже делал под DOS/VGA с управлением регистрами палитры…)

P.S.: Здесь написал, так как хочу спросить:
Быть может подобные системы уже существовали?

#1609
21:16, 6 июня 2021

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

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

#1610
(Правка: 14:41) 8:34, 7 июня 2021

Denadan
> тут есть большая проблема.
Этo не проблема, а фишка.

+ Источник вдохновения
Для профессионального/специализированного оборудования подобные дисплеи всё ещё актуальны.

На диске указана дата «3 ‎сентября ‎2015 ‎г., ‏‎19:21:55» - момент создания исходного алгоритма рендеринга симуляционных сегментов.
Идея возникла, когда в очередной раз, перебирая коллекцию советской Электроники, наткнулся на экземпляр с отсутствующим ЖК-дисплеем. Нет, конечно, это всё тот же же «Ну, Погоди!» среди «Рыбалки» и «Автослалома». Но, вдруг подумал, а что, если…
Если подключить все контакты от процессора не к ЖК, а к ЭЛТ?
То есть, специализированный синхрогенератор, куда втыкается флешка с единственным кадром слайда ЖК-сцены, а шлейфом - управляешь их отображением.

Нет, конечно, на AtMega/PIC такое можно сделать в два счёта.
Но, как любитель ТТЛ я своим ходом решил «протоптать» тропку.
Эскиз отлаженной схемы синхрогенератора на OrCAD у меня уже был:

+ Показать
Вот и прикинул, как с процессором с частотой 32768 Гц это сладить (теоретически).

Логика - простая.

+ Эскиз схемы
0iiiiiii - индекс позиции управляющего бита в общей маске
1sRRGGBB - цвет пикселя, игнорируемый, если s≠биту маски
То есть, при разрешении 1024×768 можно иметь все 64 цвета (фона) на пиксель байтами ≥128.
Но, если добавляем спрайт, чередованием кода <128 разрешение падает до 1023×768, так как синхрогенератор считывает всё линейно и адресация пикселей не меняется, а 1 байт теряется для указания индекса бита. Но, если под спрайтом на фоне что-то отображено, разрешение упадёт до 511×768.
Вот почему:
........ 0iiiiiii 11SPRITE 10GROUND 11SPRITE 10GROUND 11SPRITE 10GROUND … … …
То есть, цвет пикселя спрайта чередуется с цветом пикселя фона.
Если на одной позиции располагаются сразу 2 спрайта, разрешение упадёт до 204×768, так как:
........ 0iiiiiii 11SPRIT1 0jjjjjjjj 11SPRIT2 10GROUND 0iiiiiii 11SPRIT1 0jjjjjjjj 11SPRIT2 10GROUND … … …
Фактически, степень детализации сцены сильно зависит от количества спрайтов на ней и специфики их расположения.
(Автоматический энкодер ещё предстоит разработать/отладить…)

Но, в рамках ряда систем, думаю, это довольно занятная штука.

Как пример: Если схема синхрогенератора выше 256×256 на 7 ТТЛ микросхемах, плюс флеш-память и регистр-защёлка цвета спрайта/фона, то на экране ЭЛТ-телевизора можем вывести изображение 127 разных спрайтов (холодильник, плита, двери, окна, флюгер и т.д…). Имеем 127 сигнальных входа - более, чем достаточно для любых целей.
Тем самым, если кто-то открыл холодильник - на экране спрайт холодильника поменял цвет. Если флюгер сменил направление - одна из восьми стрелок направления ветра зажглась.
То есть, в рамках номенклатуры ТТЛ 70-80-х годов - вполне годная информационная панель из телевизора.
(Если бы ещё промышленность выпускала специализированный набор масочных ПЗУ с готовыми затравками информационных панелей - вполне себе дешёвенькая бытовая приставка с ВДНХ для умной СССР-квартиры с набором масочных ПЗУ, утверждённых лично дорогим Леонидом Ильичём, под все нужды мониторинга хозяйства.)

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

Поэтому и Кой-Процессор - не для конкуренции с GameBoy или даже с Gigatron'ом, а для построения инструментального автомата для мониторинга за средой.

©Пилотная реализация

#1611
(Правка: 11:24) 11:21, 20 июня 2021

8 битный компьютер Sprinter / Спринтер https://habr.com/ru/post/563598/ (Фан возрождение)

P.S. Для выхода в i-net, вероятно, пробросят какой нибудь одноплатник на ARM.
но, например, звуковушки на ISA шине можно использовать в этом компе.
У меня вне удел осталась такая Creative AWE32
хотя с P1-100 вполне её можно использовать и сейчас. :)

#1612
(Правка: 15:10) 15:09, 20 июня 2021

Z-machine_игровой_движок

Z-machine — это виртуальная машина, которую разработали Джоэль Берез и Марк Бланк[en] в 1979 году и используемая компанией Инфоком для текстовых приключенческих игр. Инфоком компилировали код игры в файлы, содержащие инструкции для Z-машины (они назывались «Файлы с историями» (англ. story files) или «Z-код файлы»), что позволяло портировать игры на новую платформу, просто написав Z-machine для этой платформы. С большим количеством несовместимых домашних компьютерных систем в то время, это являлось важным преимуществом по сравнению с использованием нативного кода или разработкой компилятора для каждой системы отдельно.
#1613
(Правка: 19:01) 18:59, 24 июня 2021

Был такой популярный PC совместимый компьютеп в Японии  в 80-90х годах
NEC PC98xx (82 - 99 годы производства - последний на Celleron) для которого было сделано большое количество игр.

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Под него есть и Эмуляторы.

P.S. Из темы обсуждения PC98

#1614
11:18, 30 июня 2021

Русские интерактивные музеи компьютерной техники (дайджест) https://habr.com/ru/post/565324/

#1615
11:18, 2 июля 2021

Программирование под ZX-Spectrum: 3D графика https://habr.com/ru/post/565728/

#1616
15:33, 2 июля 2021

KPG
> 3D графика

Статья о том, как человек осилил запустить компилятор Си под спектрумом и воспользоваться готовой графической либой для рисования линий, и при этом не сообразил, как сделать дроби с фиксированной точкой в виде (байт до запятой, байт после запятой), а вместо этого делил на 1000?

#1617
13:51, 19 июля 2021

Никогда раньше особо не всматривался в таблицу опкодов Intel 8086. Т.е. саму структуру командной системы конечно знаю хорошо, но как именно оно сопоставляется с машинными кодами - нет. Знал только, что после байта опкода есть байт modR/M который позволяет уточнять огромное множество вариантов адресации этого процессора.
А тут что-то после соседних тем заинтересовало и нашёл таки таблицу где всё наглядно представлено: http://sparksandflames.com/files/x86InstructionChart.html
А ведь красота!
Первые шесть опкодов - и всё одна и та же инструкция - ADD.
Шесть её вариантов.
Отличаются они как раз тем нужен ли им байт modR/M или нет и в каких битностях и отношениях они с ним состоят.
Проще всего рассмотреть последние два варианта - это однобайтовые опкоды.
Опкод 04 это просто ADD AL, Ib ; где Ib это байтовый (b) immediate (непосредственное данное). Всегда байт данных, всегда инструкция в два байта.
Опкод 05 это ADD (E)AX, Iv ; где I это тоже признак immediate, но v означает или WORD или DWORD в зависимости от текущей битности.
Эти соглашения сохраняются - постфикс b - это безусловно байт, а v - это WORD или DWORD.

Соответственно теперь можно поделить первые четыре опкода ADD на две группы - где b и где v. Это теперь уже понятно что и зачем.
И, наконец, они делятся на две последние подгруппы  с разным порядком аргументов - ADD E, G и ADD G, E.
Когда операнды имеют вид E и G это значит что после опкода находится байт modR/M и в нём находится уточнённая детализация какие у нас аргументы с расширенными режимами адресации. Причём для совсем широких режимов далее может быть еще байт SIB еще более детально описывающий сложные адресации со смещениями и множителями.
Но в любой инструкции один из операндов - регистр. И это G. А вот E может быть и регистром и памятью со сложной адресацией.

#1618
(Правка: 21:06) 21:02, 19 июля 2021

P.S.
Еще два забыл:
Опкод 80 - ADD Eb Ib ; т.е. сложение любого базового байтового регистра с непосредственным данным
Опкод 81 - ADD Eb Ib ; то же самое со WORD/DWORD
Т.е. в 8086 восемь первичных опкодов для арифметических операций ADD и SUB. А вот у ADC и SBB уже только шесть - варианты с непосредственными данными кроме AL/(E)AX отсутствуют.
Всё-равно некоторая асимметрия.

Интересно, что операции прокрутки сидят всего в шести слотах С0,C1,D0,D1,D2,D3. При этом сами слоты как бы обозначают две вещи: с байтом или (д)словом работаем - попарно соседи. Итого остаётся три варианта. Всегда будет после этого опкода байт modR/M в котором первый операнд зашит в поле E. А что является вторым операндом как бы и значит вариант один из трёх - или непосредственное данное (всегда байт, если не ошибаюсь), или единица или регистр CL. Код же операции - что это такое - ROL или SAR зашито в поле G инструкции - то что в инструкциях типа ADD означало код регистра-операнда. Т.е. строго говоря коды инструкций прокруток являются аккумулятивами обязательно как минимум двухбайтными где код операции зашит во втором байте (и может быть много других).

Такими же аккумулятивами с кодами F6 и F7 (байт или слово) являются инструкции TEST, NOT, NEG, MUL, IMUL, DIV и IDIV.

P.P.S.
Прикольная ссылка для анализа опкодов http://ref.x86asm.net/coder32.html

#1619
21:34, 19 июля 2021

=A=L=X=
> А вот у ADC и SBB уже только шесть - варианты с непосредственными данными кроме
> AL/(E)AX отсутствуют

Логично. Какой смысл в adc с непосредственной константой? Сложно придумать ситуацию, когда понадобится длинная арифметика (последовательность adc) с непосредственной константой. Подавляющее большинство случаев укладывается в обычные add с константой byte/word/dword размера.

Страницы: 1107 108 109 110 111 Следующая »
ФлеймФорумЖелезо