Интерполятор спрайтов для ZX Spectrum (ВАЖНО)
|
|
Hazar | Дата: Среда, 04.01.2012, 06:53 | Сообщение # 1 |
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
| *************Всех поздравляю с новым годом*************
Итак новый год новые идеи
Во время разработки принципиальной схемы для нового компьютера, были идеи по переходу на более мощный процессор с целью организовать более высокое разрешение (1024*768 60Hz)
После некоторых раздумий и чтения различной документации я пришел к выводу Что для самой платформы (Spectrum) это мало что даст . Зачем увеличивать быстродействие Если большинство игр старые (и работают они в своем низком разрешении). Переделывать все старые игры под 1024*768 задача непосильная. А для старых игр не нужно высокое быстродействие так как разрабатывали их для оригинального процессора и в то время быстродействие было достаточно
Если просто тупо поставить процессор быстрее в 8 раз то играть точно будет невозможно . Тут кто-то из опытных может сказать ну замедли процессор (есть же WAIT HALT и др решения ) Ну тогда зачем ставить быстрый проц ?
Добавлено (04.01.2012, 06:53) --------------------------------------------- --****SPECTRUM MSX 4m****--
Однако не падайте духом есть и другие обходные пути
И тут возникла идея поставить второй процессор (специально для вывода графики работать он должен в раз 10 быстрее чем основной процессор Z80A)
Сама по себе идея установки второго процессора конечно не нова Но дело не в этом а в том что процессор на самом деле не должен заниматься Видео-выводом . Его главной задачей будет преобразование спрайтов по специальному алгоритму в стандартном Spectrum знакоместо состоит из 8*8 точек (квадратик из 64 элементов) .В новом (SP MSX 4m ) спрайт планируется расширить до 32*32 точек при этом обрабатываемый участок (8х8) растягивается до (32*32) между точками образуется свободное пространство которое потом достраивается по спец алгоритму . Новый образ полученного изображения по Strob импульсу выводится из VRAM видеоконтроллером который работает независимо от процессоров
Более подробное описание находится в стадии разработки так как нужно Учитывать все особенности железа (временные параметры время выполнения команд, особенности видео вывода ССИ КСИ.
Spectrum жив в нашей душе навсегда
Сообщение отредактировал Hazar - Среда, 04.01.2012, 06:55 |
|
| |
Hazar | Дата: Среда, 04.01.2012, 06:53 | Сообщение # 2 |
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
| А как на ваш взгляд должна выглядеть шина для внешнего независимого графического ускорителя
(Допустим представим что такое устройство для ZX Spectrum у меня есть )
И какие сигналы должны обязательно в этой шине присутствовать
Технические характеристик графического ускорителя разрешение 1024*768 точек Частоты разверток 48,5 кГц 60 Гц независимо работающий процессор (не обязательно Z80) VRAM 256 или 512 кБ (возможно расширение) ROM с программой интерполятором (поддержка старых игр) доступ CPU к VRAM через порты (пока еще не решил как делать)
Spectrum жив в нашей душе навсегда
Сообщение отредактировал Hazar - Суббота, 10.11.2012, 07:56 |
|
| |
Black_Cat | Дата: Среда, 04.01.2012, 06:53 | Сообщение # 3 |
Координатор
Группа: Координаторы
Сообщений: 730
Статус: Offline
| Quote (Hazar) А как на ваш взгляд должна выглядеть шина для внешнего независимого графического ускорителя NemoBus v.2.0 хватит за глаза, если тактовая Z80 не будет превышать 14 MHz (это теоретический предел для этой шины), а лучше даже не превышать 7 MHz . Для более быстрого процессора видеоконтроллер лучше делать встроенный на ПЛИС, а лучше и процессор туда засунуть .
Quote (Hazar) И какие сигналы должны обязательно в этой шине присутствовать Как минимум сигнал 14 MHz (для синхронизации), сигналы доступа к портам и ОЗУ этого контроллера, ну и INT конечно
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Hazar | Дата: Среда, 04.01.2012, 06:54 | Сообщение # 4 |
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
| Quote (Black_Cat) Как минимум сигнал 14 MHz (для синхронизации), сигналы доступа к портам и ОЗУ этого контроллера, ну и INT конечно
Не хорошо через разъемы такие частоты передовать 14 мГц эт не шутка
А INT зачем ?Добавлено (10.11.2012, 08:27) ---------------------------------------------
Quote (Black_Cat) Для более быстрого процессора видеоконтроллер лучше делать встроенный на ПЛИС, а лучше и процессор туда засунут
Для такого пока не хватает возможностей да и квалификация у меня несколько другая
Spectrum жив в нашей душе навсегда
|
|
| |
Black_Cat | Дата: Среда, 04.01.2012, 06:54 | Сообщение # 5 |
Координатор
Группа: Координаторы
Сообщений: 730
Статус: Offline
| Quote (Hazar) независимо работающий процессор (не обязательно Z80) Для Спектрума и многорежимного автомата достаточно, процессор для Спектрума избыточен. Процессор нужен для универсального видеоконтроллера, а это уже выходит за рамки узкого мирка Спектума . А всё, что выходит за рамки узкого мирка Спектрума, живёт по законам современных компьютеров, а значит работает под ОС, со всеми вытекающими.. Вот почему именно для Спектрума достаточно и простого автомата, генерирующего развёртку Добавлено (10.11.2012, 08:33) ---------------------------------------------
Quote (Hazar) А INT зачем ? Чтоб программы могли синхронизироваться с кадрами для плавности смены изображения
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Hazar | Дата: Среда, 04.01.2012, 06:54 | Сообщение # 6 |
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
| Quote (Black_Cat) Для Спектрума и многорежимного автомата достаточно, процессор для Спектрума избыточен. Процессор нужен для универсального видеоконтроллера, а это уже выходит за рамки узкого мирка Спектума smile . А всё, что выходит за рамки узкого мирка Спектрума, живёт по законам современных компьютеров, а значит работает под ОС, со всеми вытекающими.. Вот почему именно для Спектрума достаточно и простого автомата, генерирующего развёртку
Нет я считаю что для интерполятора спрайтов нужен как раз хороший быстрый полноценный процессор а проблем с развертками у меня нет
Spectrum жив в нашей душе навсегда
|
|
| |
Black_Cat | Дата: Среда, 04.01.2012, 06:54 | Сообщение # 7 |
Координатор
Группа: Координаторы
Сообщений: 730
Статус: Offline
| Ну, если для интерполятора спрайтов - то возможно
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Hazar | Дата: Среда, 04.01.2012, 06:54 | Сообщение # 8 |
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
| Quote (Black_Cat) Чтоб программы могли синхронизироваться с кадрами для плавности смены изображения
это задача чья? (причем здесь графический ускоритель)
Spectrum жив в нашей душе навсегда
|
|
| |
Black_Cat | Дата: Среда, 04.01.2012, 06:54 | Сообщение # 9 |
Координатор
Группа: Координаторы
Сообщений: 730
Статус: Offline
| Это задача программы - успевать перерисовывать все изменения на экране между кадровыми прерываниями
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Hazar | Дата: Среда, 04.01.2012, 06:55 | Сообщение # 10 |
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
| Quote (Black_Cat) Это задача программы - успевать перерисовывать весь экран между кадровыми прерываниями
А задача ускорителя успеть сделать свою работу во время и значит для контроля еще должен быть сигнал но с прерываниями я связыватся не хочу и вообще не хотелось бы что -то менять в схеме спектрума
Spectrum жив в нашей душе навсегда
|
|
| |
Black_Cat | Дата: Среда, 04.01.2012, 06:55 | Сообщение # 11 |
Координатор
Группа: Координаторы
Сообщений: 730
Статус: Offline
| Quote (Hazar) но с прерываниями я связыватся не хочу и вообще не хотелось бы что -то менять в схеме спектрума А ничего менять и не надо, просто в конце кадра всегда генерится прерывание - так работает Спектрум
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Hazar | Дата: Среда, 04.01.2012, 06:55 | Сообщение # 12 |
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
| Quote (Black_Cat) А ничего менять и не надо, просто в конце кадра всегда генерится прерывание - так работает Спектрум
А как проверить успел ускоритель вывести кадр или нет (должен быть сигнал на шине)
Spectrum жив в нашей душе навсегда
|
|
| |
Black_Cat | Дата: Среда, 04.01.2012, 06:55 | Сообщение # 13 |
Координатор
Группа: Координаторы
Сообщений: 730
Статус: Offline
| Quote (Hazar) А как проверить успел ускоритель вывести кадр или нет Время выполнения операций должно быть строго детерминировано, а программа, зная время исполнения операций, вычисляет чтоб они успели выполниться между прерываниями
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Hazar | Дата: Среда, 04.01.2012, 06:55 | Сообщение # 14 |
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
| Quote (Black_Cat) Время выполнения операций должно быть строго детерминировано, а программа, зная время исполнения операций, вычисляет чтоб они успели выполниться между прерываниями
Это понятно . Но объем работы по графическим преобразованиям от одного кадра к другому может быть разный.
Вот если бы все кадры по содержимому были одинаковы тогда нет проблем
Поэтому без аппаратного контроля никак (придется немного если это необходимо притормаживать CPU
Spectrum жив в нашей душе навсегда
|
|
| |
Black_Cat | Дата: Среда, 04.01.2012, 06:55 | Сообщение # 15 |
Координатор
Группа: Координаторы
Сообщений: 730
Статус: Offline
| Quote (Hazar) Это понятно . Но объем работы по графическим преобразованиям от одного кадра к другому может быть разный. Вот если бы все кадры по содержимому были одинаковы тогда нет проблем Поэтому без аппаратного контроля никак (придется немного если это необходимо притормаживать CPU CPU тут ни при чём . При чём - длительность кадра - она постоянная, и если в неё не укладываться, то картинка будет изменяться волнами, что не эстетично конечно, но и не смертельно
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Hazar | Дата: Среда, 04.01.2012, 06:56 | Сообщение # 16 |
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
| Quote (Black_Cat) CPU тут ни при чём smile . При чём - длительность кадра - она постоянная, и если в неё не укладываться, то картинка будет изменяться волнами, что не эстетично конечно, но и не смертельно
Если ускоритель не успевает сделать свою работу то независимый видео-контроллер должен вывести старый образ прошлого кадра как этого избежать или я что то не понимаю?
Spectrum жив в нашей душе навсегда
|
|
| |
Black_Cat | Дата: Среда, 04.01.2012, 06:56 | Сообщение # 17 |
Координатор
Группа: Координаторы
Сообщений: 730
Статус: Offline
| Quote (Hazar) или я что то не понимаю? ага , операции обязаны быть строго детерминированы по времени и никак иначе
Quote (Hazar) Если ускоритель не успевает сделать свою работу то независимый видео-контроллер должен вывести старый образ прошлого вообще-то, для Спектрума это должно быть одно устройство
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Hazar | Дата: Среда, 04.01.2012, 06:56 | Сообщение # 18 |
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
| Quote (Black_Cat) вообще-то, для Спектрума это должно быть одно устройство
У моего ускорителя свой независимый видео-контроллер
Quote (Black_Cat) ага smile , операции обязаны быть строго детерминированы по времени и никак иначе
Там алгоритм довольно сложный все на циклах поэтому время перестройки кадров будет всегда разное и это никак программно не обойти и возникает проблема согласованной работы основного CPU и ускорителяДобавлено (10.11.2012, 10:55) --------------------------------------------- Надо ли делать порт FF в новом ускорителе какие-еще могут понадобятся порты для совместимости со старыми программами
Spectrum жив в нашей душе навсегда
Сообщение отредактировал Hazar - Суббота, 10.11.2012, 10:00 |
|
| |
Black_Cat | Дата: Среда, 04.01.2012, 06:56 | Сообщение # 19 |
Координатор
Группа: Координаторы
Сообщений: 730
Статус: Offline
| Quote (Hazar) Там алгоритм довольно сложный все на циклах поэтому время перестройки кадров будет всегда разное и это никак программно не обойти и возникает проблема согласованной работы основного CPU и ускорителя Скажем так: игрописателям, если они стремятся к фреймовости, важно знать сколько и чего они смогут перекидать за кадр, или успеют ли они заданное количество перекидать за кадр. Пусть это трудно поддаётся вычислению, но методом тыка это должно давать сопоставимый результат из кадра в кадр, так, что бы знать, что в определённый интервал, меньший или равный кадру, действие точно укладывается.Добавлено (10.11.2012, 11:44) ---------------------------------------------
Quote (Hazar) Надо ли делать порт FF в новом ускорителе какие-еще могут понадобятся порты для совместимости со старыми программами Сделай, но без фанатизма, т.е. не надо повторять глупость отечественных ваятелей железок, ибо этот т.н. "порт" в фирменном софте юзается исключительно как индикатор начала экрана, т.е. индикатор чтения чего-то отличного от #ff, а не чего-то строго определённого. И токо наши недалёкие горе-софтописатели сдуру могут умудриться сделать проверку не на отличие от #ff .
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Hazar | Дата: Среда, 04.01.2012, 06:56 | Сообщение # 20 |
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
| Quote (Black_Cat) Скажем так: игрописателям, если они стремятся к фреймовости, важно знать сколько и чего они смогут перекидать за кадр, или успеют ли они заданное количество перекидать за кадр. Пусть это трудно поддаётся вычислению, но методом тыка это должно давать сопоставимый результат из кадра в кадр, так, что бы знать, что в определённый интервал, меньший или равный кадру, действие точно укладывается.
Да чувствую о разных вещах говорим, Игрописателям мой ускоритель (режим интерполятора) изучать не понадобится (он нужен для совместимости с оригинальными программами) в новом разрешении 1024*768 и все точка
Ну а какой новый видео-формат сделать для спектрума, и чтоб всех устроило и как расширять цвета я даже понятия не имею, а разрабатывать чисто свой формат так сказать с нуля тоже мало смысла.
Добавлено (10.11.2012, 11:58) --------------------------------------------- Quote (Black_Cat) Сделай, но без фанатизма, т.е. не надо повторять глупость отечественных ваятелей железок, ибо этот т.н. "порт" в фирменном софте юзается исключительно как индикатор начала экрана, т.е. индикатор чтения чего-то отличного от #ff, а не чего-то строго определённого. И токо наши недалёкие горе-софтописатели сдуру могут умудриться сделать проверку не на отличие от #ff
Вопрос снят вообще не буду делать это все в стандартном спектруме должно отрабатыватся
Добавлено (10.11.2012, 12:46) --------------------------------------------- А есть для примера схема где эта шина отображается (картинка)
3.5 Новые (характерные) сигналы шины NemoBus v2.0 (проект).
Табл.8 --------+---+-+---+---+--------------------------------------------------------- 1 | 2 |3| 4 | 5 | --------+---+-+---+---+--------------------------------------------------------- A19' |I&O|-|3 R|D1 |шина старших адресов ОЗУ, позволяет адресовать 1Gb ОЗУ, A20' |I&O|-|3 R|C1 |сигналы внутренних портов резистивно развязаны от шины A21' |I&O|-|3 R|D2 | A22' |I&O|-|3 R|C2 | A23' |I&O|-|3 R|D3 | A24' |I&O|-|3 R|C3 | A25' |I&O|-|3 R|D4 | A26' |I&O|-|3 R|C4 | A27' |I&O|-|3 R|D5 | A28' |I&O|-|3 R|C5 | A29' |I&O|-|3 R|D6 | --------+---+-+---+---+--------------------------------------------------------- IRQ15 |I |H|TTL|C6 |запросы маскируемых прерываний
Spectrum жив в нашей душе навсегда
Сообщение отредактировал Hazar - Суббота, 10.11.2012, 12:55 |
|
| |
|