но все-равно надо, чтобы подключалось к "плоскому монику" через vga-разъем. В каком эмуле можно посмотреть?
Вид для печати
И самое интересно, что стоило на военной БМК (хз как оно зовется) [других не было] накидать такую структуру? В начале 80 годов (за картинку не отвечаю, похожа на правду).
https://3.bp.blogspot.com/-TuAXboBdT...9981a_arch.jpg
- - - Добавлено - - -
ХЗ его знает. Видимо твой ЕGA? Давит на голову. Не?
тогда проще подключать vga, благо он с ega совместим и даже немного его улучшил :)
что конкретно? софт никто, естественно, не писал
но скорость в пикселях будет мало отличаться от спековой
по той же причине, по какой она не отличается в играх для zx-poly/spec256
- - - Добавлено - - -
кажется, тебе на голову что-то давит, раз тебе мерещится ega в твоём же собственном видео :v2_rolley
задник на боссах на могучем тайлоспрайтовом msx делается ч0рным вовсе не из эстетических каких-то соображений,
а потому что тупо спрайтиков не хватает на такой здоровый объект, и приходится рисовать и двигать его как фон
Lethargeek, ты еще за овер скан не рассчитался, а тут снова чего-то придумал. Будешь должен.
? я про перефирию молчу я про ALTERA говорю, там процесс производства 500nm (https://www.intel.cn/content/dam/www...ture/rr/rr.pdf) и более? Это при том что в 80-е максимум было 1200nm в СССР так толком и 3000nm неасилили в массовом производстве. Не уверен на чем там склепали РУ7...
bigral, не спорь, там как минимум подполковник сидит у монитора в отставке, но бывших там не бывает :)
Циклон занимается обслуживанием периферии. Сам комп - это 1801ВМ3. Бинго
в ГДР производство памяти 1 Mbit освоили...или украли из ФРГ. Да на техпроцесс смешно смотреть ныне. Делайте хоть на 7 нм , если конечно ваша заказная микросхема при тираже 10 000 шт. при этом не будет стоить $ 100 000,0:D за 1 штучку. Сейчас 300 нм поди в 10000 раз дешевле при таком тираже? А так, если честно, конкретное ядро MCU при наличии чип-компьютера не столь уж и принципиально какое.
я не сильно в курсе, но когда читал как там работает спрайтовый движек то там было указанно что флаг sprite overflow не работает как должен и потому игры его не используют (что печально) игра как бы должна видеть какие спрайты были показанны в прошлый раз а какие не смогли высветится в этом случае нужно их поменять местами чтоб они мигали поочередно а не так что тот что левее пропадал бы напрочь надолго
- - - Добавлено - - -
с какой стати? циклон реализует чипсет компьютера, контроллер памяти, арбитр шины, контроллер IDE, еще видяху ж планируете запилить на нем?
Узкоглазые обещают полностью возобновить свои фабы к 2021 г.
На 2019 г. 0.35 мкм партия ПМК по топологии заказчика и на библиотеках фаба была порядка $10К.
При этом сам фаб мог делать тестирование по программе заказчика ( а так же корпусирование, упаковку и логистику ) за скромную плату.
Не особо дороже и 0.13 мкм топнормы. А с 90 нм начинаются уже коммерческие предложения, в основном на Тайване.
Вообще, ходили слухи, что 0.8 мкм можно как-то и за $1000 заказать, но на определенных условиях ( точнее нет данных, явно нужно владеть китайским языком, в т.ч. специфическим диалектом для элекроники ). Проектирование и всё такое в $1К не входит, поставляется только малая коробка с ПМК.
та не это ты уже как те клоуны из Amiga Inc. в начале 2000-х хотели задвинуть виртуальную машину("intent" переименованный в AmigaDE) на пеце под вывеской "новая амига", ну парочку идиотов поверило этому идиотизму но большенство покрутило пальцем у виска
дураку понятно где заканчивается компьютер и начинается периферия
На выходе ВМ3 - полноценный QBus, так что он именно компьютер, со встроенным ДП. Как такового - понятия контроллера памяти на QBus нет (только контроллер микросхем). Контроллеры периферии - да (RK-11 - RK05)
Так что 1801ВМ3 полноценный комп.
Виртуальной машиной тут и не пахнет. Даже если реализовывать ВМ3 на FPGA.
И поскольку тема мне стала неинтересна (всё предсказуемо с точностью до воплей и до того, что ничего путного из всего этого "обсуждения" не выйдет) - адью. Дальше чешите без меня - у меня интересней занятия есть.
Какие-то глупости. Вот кусочек схемного ввода этого флага:
R2B5
Как это работает: EVAL это сигнал сброса схемы, он срабатывает на "пререндере". Хотя, сам "пререндер" придумали тупые буржуи. Дело в том, что там в каждой строке во время обратного хода загружается в спрайтовый пайплайн графика нужных спрайтов, а потом начинается выводиться строка и спрайты, по своим координатам Х. Но у буржуев сначала идёт строка а потом обратный ход с прогрузкой спрайтов на следующую строку. Отсюда и "пререндер", хотя это просто строка, которая идёт непосредственно перед выводом первой строки графики и позиция её на экране лишь последствия интерпретации синхросигналов телевизором. Т.е., они пляшут относительно телевизора а не самого PPU.
Сигнал I2N активен если есть очередной спрайт в данной строке, а счётчик OAM2_COUNTER считает до 16: 8 спрайтов по 2 байта графики. И при первом же переполнении он выставляет флаг. А особенность флага в том, что он устанавливается при первом же переполнении в строке, а вот сбрасывается только непосредственно перед новым кадром, по сигналу RESCL, который приходит чуть ранее, чем EVAL. Это, конечно, накладывает ограничение на определение двух или более переполнений, но это особенность работы флага а не бага. А проблема сортировки списка спрайтов такова, что 6502 тупо не успеет подготовить новый список на следующую строку для уменьшения мерцания (чтобы мерцали не блоки 8х8 или 8х16, а полосочки 8х1 что менее заметно же), а если даже списки готовы заранее - тупо не успеет вгрузить в PPU новые данные. Т.е., всё упирается в производительность 6502 и такое поведение флага переполнения оправдано, хоть и не удобно программистам.
Тем не менее, программисты его используют, например при отсечении в катсценах (привет Ninja Ryukenden / Ninja Gaiden). Так что нет никакой ложки, мистер Андерсон.
ну вопервых никакой в зравом уме человек и не планировал что 6502 будет менять список спрайтов на каждой строке (это он мог делать в atari2700 но там спрайтов далеко не 64), если бы он это мог то вероятно мог бы и сам рисовать спрайты сразу в строку, предпологалось что этот самый флаг должен потом будет гдето записан в атрибуты спрайта чтобы в конце кадра когда 6502 обновлял список спрайтов он понимал какие из спрайтов должны были высветиться но не смогли изза ограничения в 8шт на строку
как я понимаю в tms9918 именно так оно и работает
посмотрел описание бага - https://wiki.nesdev.com/w/index.php/...ite_evaluation тут говориться что этот флаг правильно ставиться только 9-му по счету спрайту и потом всем спрайтам "по диагонали" таблички спрайтов... изза того что вместо нормального "inc(x) и если переполнение inc(y)" всегда срабатывает "inc(x)inc(y)" + еще шото мутное написанно про копию таблички с отобранными для отображения спрайтами и сигналом write disable...
а к стати откуда схема твоя? можно ее пощупать?
Это всё пустые домыслы писателей мумуляторов. Вот все свойства спрайтов PPU OAM и в них нет места флагу переполнения. Ну и так как свойства спрайтов находятся внутри PPU, куда их записывает 6502 через DMA, то считывать их обратно чтобы анализировать какие-то флаги такой же бред, т.к. занимать оно будет столько же времени как и запись.
Вот именно, флаг у PPU глобальный, а не на каждый спрайт отдельно. Что касается запрета записи, то да, вот этот триггер запрещает это делать после переполнения счётчика:
https://jpegshare.net/images/53/0a/5...daad87fe89.png
Но как я и говорил, он не сбрасывается каждую строку, чтобы повторить процесс анализа переполнения спрайтов в строке, а сохраняется до конца кадра. Если точнее - то т.н. "пререндера". А нужно это для того, чтобы обработчик VBlank'а его точно не упустил и отреагировал. Так что это вовсе и не баг, это нормальное поведение конкретного PPU. Всё остальное, что кажется некоторым программистам как неправильное, им только таким кажется. Не исключаю, что это из-за сравнения с другими PPU, в том числе и вышеупомянутым TMS9918.
Сам сделал. Всё, что для этого нужно есть на BreakNES, так же ты можешь посетить тот самый Visual2C02 или эту мою тему. Только я её больше продолжать не намерен, т.к. сначала кончилось моё время, а потом и желание. Вот пост с вопросами про судьбу той темы и мой с ответами на них.
Пожалуйста!Verilog-модель процессора делаю который год.
- Эмулятор
- Отладчик
- Ассемблер
- Заготовка к игре «ТЕТРИС»: После того, как кубик построит рамку, запустится режим Тетриса с управлением стрелками клавиатуры
а техническая возможность есть вычитать регистры PPU через dma? просто может никто не читает потому что там нету смыслу этого делать (изза бага), а изначально предпологалось это делать
флаг переполнения в глобальном виде не имеет никакого смыслу, он тебе говорит что какие то спрайты не показались, но без информации какие именно это почти бесполезная информация, потому что не ясно какие же в следующий раз надо спрятать а какие показать
можно вообще без флага жить конечно и анализировать все 64шт и искать у каких же из них одинаковый Y и какие стоят на каком месте по счету а потом 9 и последующие отмечать как непоказанные, и значит на следующем кадре нужно решить какие из 8 показанных в этот раз не покажутся чтоб показать те что пропущенны в прошлый раз, к тому же наверно иммет смысл непоказать не отдельно стоящий спрайт а тот что наложился на другой спрайт или находится под тайловым уровнем чтоб минимизировать заметность мигания... но наверно если этим заниматься то времени на просчет логики самой игры уже не останется
PPU не запрещает считывать. Но что тебе это даст, если в свойствах спрайта нет флага "не отображается"? Что касается 2A03, то OAM DMA работает только в одном направлении: ОЗУ => PPU.
То, что для тебя "наверное", для других - совершенно ясно. Есть достаточно много коммерческих игр с превышением спрайтов в одной строке и при этом они вполне себе отлично выглядят и мерцание там минимально, хотя и заметно, если присматриваться. Конечно, есть и такие, где мерцание просто глаза режет и вот их, видимо, писали программисты, разделяющие твою точку зрения.
Что касается пайплайна спрайтов, то 8 блоков по 2 сдвиговых регистра + 2 мультиплексора (для реализации отражения по X) занимают приличное место на кристалле, соизмеримое с самой памятью OAM.
https://jpegshare.net/images/b4/12/b...240165de9d.png
Здесь я мультиплексор по X сделал общий, на кристалле он индивидуальный для каждого канала
Но, допустим, ничто не мешает сделать в FPGA версии PPU их не 8 а, например, 16, добавив бит контроля отображаемости в памяти OAM. Ну и дополнительный бит в регистр управления для отключения всех улучшений во имя совместимости со старыми играми. Вот и будет тебе простой PPU на стероидах.
Идеaльный компьютер из 17 микросхем
Кстати, почему бы три канала ПДП не задействовать под матричное вычисление без участия процессора?
Один канал считывает из памяти операнд «A», второй - считывает «B», а третий канал записывает в память результат АЛУ-операции.
За АЛУ можно использовать две ИП3 + две ИР23.
Кстати, по поводу спрайтов…
Почему бы спрайты не выводить прямо в буфер памяти?
Тогда и мерцание не возникнет.
При использовании Z80 такой имитатор компьютера можно на восьми микросхемах сделать: Z80, RAM, ROM, генератор, дешифратор памяти, дешифратор портов, порт клавиатуры, регистр на LCD и BEEPER.
Только это будет далеко не идеальный.
Я тоже предлагаю вместо аппаратных спрайтов делать слой спрайтов. При этом нет ограничений на количество спрайтов и фон не затирается в отличии от одного общего слоя.
так не делали потому что:
1 процедура вывода спрайта в буфер памяти сложная, схема получится жирной
2 будет жраться время видеошины не только на считывание спрайта но и на запись что 2 раза больше
3 при выводе будет clashing... т.е. нельзя просто вывести квадратик затерши им все что попало под него, наложение нужно делать по маске и для этого надо опять сначала считать те данные которые уже туда выведены, еще моск вынесет реализация высвечивания спрайта ПОД background-ом
4 вывести то можно а шо потом? как убрать? еще и стирать надо уметь...
5 как сделать collision detection между пикселами спрайтов и спрайтов и между background-ом?
Утoчню - я не зря заикнулся про ПДП с АЛУ.Цитата:
Кстати, по поводу спрайтов…
Почему бы спрайты не выводить прямо в буфер памяти?
Тогда и мерцание не возникнет.
По идее, слой с фоном и слой со спрайтами можно хранить в операционном ОЗУ (не видео-ОЗУ).
То есть, берём классический ZX и добавляем туда ВТ57, ИП3, три ИР23 и чуток логики.
Тогда, если фон хранится в регионе C000…D7FF, а «юниты» - в D800…EFFF, то программируем у ПДП три канала:Настраиваем регистр функции АЛУ на XOR-операцию, запускаем ПДП циклы и ждём.
- C000 на 17FF циклов чтения
- D8000 на 17FF циклов чтения
- 4000 на 17FF циклов записи
P.S.: Дёшево, сердито, но продуктивно!:D
Товарищи добрый день.
Скептически отношусь к этой теме... " Каким бы мог быть... Если приложить ум...." ?! Ребят, история не терпит сослогательных наклонений! Советские инженеры явно были не глупее нас. И понятно, что еслиб тогда как сейчас, то ого-го! Но нет, всему своё время. А вообще ZX Evoplution, по лично моему мнению, идеальный аппарат! Но еще раз говорю, всему своё время. Соответственно АТМ Турбо в своё время был, а чего ещё?