Сообщения без ответов | Активные темы Текущее время: 28 апр 2024, 01:05



Ответить на тему  [ Сообщений: 411 ]  На страницу Пред.  1 ... 11, 12, 13, 14, 15, 16, 17 ... 21  След.
 Очень низкоуровневый эмулятор 6502 / NES 
Автор Сообщение
Сообщение 08 авг 2013, 14:48
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
HWM, нужна помощь в получении развертки тактовых сигналов 6502 :

http://wiki.breaknes.com/6502:clock


Сообщение 08 авг 2013, 17:06
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
Изображение
Изображение
Все в норме, я считаю. А мультиплексор в данном включении сокращается на 1 элемент.

_________________
Tried so hard and got so far, but in the end, it doesn't even matter...


Сообщение 08 авг 2013, 17:12
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
спасибо, но почему-то во всех документациях написано, что нижний уровень PHI1/PHI2 немного длиннее верхнего, для того чтобы они гарантированно не были оба "1"


Вложения:
4672299.png
4672299.png [ 7.55 КБ | Просмотров: 12177 ]
Сообщение 11 авг 2013, 11:40
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
В общем, симуляция в протеусе тоже странная. Единственный выход - паять. Если очень интересно, могу сделать.

_________________
Tried so hard and got so far, but in the end, it doesn't even matter...


Сообщение 11 авг 2013, 21:19
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Вот тут товарищи на транзисторном уровне проверили, но диаграммы я пока толком не смотрел.

http://forum.6502.org/viewtopic.php?f=8&p=27750#p27750


Сообщение 12 авг 2013, 08:52
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
Аа, затягивание фронта из-за не симметричного каскада инвертора.

_________________
Tried so hard and got so far, but in the end, it doesn't even matter...


Сообщение 12 авг 2013, 09:26
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
То есть выходит что нарастание "растягивается", поэтому нижний уровень становится типа длиннее ?


Сообщение 12 авг 2013, 11:27
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
Типа того.

_________________
Tried so hard and got so far, but in the end, it doesn't even matter...


Сообщение 16 авг 2013, 15:15
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Определился с внешним видом и функционалом отладчика и среды, в которой будет работать эмулятор.

Приложение работает на базе Qt, создание проекта происходит в QtCreator. Qt стал действительно мощным и удобным тулкитом.

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

Минимальный набор - это кнопка "Next Step", которая вызывает функцию Step() этой микросхемы, для симуляции одного полутакта.

Все контрольные линии, защелки и триггеры будут выглядеть в виде чекбоксов, которые можно щелкать, тем самым меняя значение с 0 на 1 и наоборот.

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

Таким образом управляющие элементы топологически становятся привязанными к схеме, чтобы не запутаться.

Изображение

Вначале я хотел сделать это через HTML5 + Webkit, при этом задник рендерился бы как GIS-карта, но мне не удалось победить чекбоксы - они прыгали по всей схеме, при изменении размеров окна. Поэтому сделал по другому - в виде QGraphScene (загрузив туда jpg) + обычные QWidgets.


Сообщение 16 авг 2013, 20:11
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Прилагаю исходники основной реализации. При желании можно переделать под свои цели.


Вложения:
graph-debug.zip [5.15 КБ]
Скачиваний: 341
Сообщение 19 авг 2013, 22:55
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
В отладчик добавлены новые элементы управления : "локаторы" и "коллекторы". Локаторы позволяют быстро перемещаться между блоками микросхемы, а коллекторы позволяют выводить и изменять сразу пачку битов (регистры, шины) посредством окошка ввода. Дублируемые галочки теперь изменяются одновременно.

Также добавлена поддержка закладок, при этом в каждой закладке отображается своя микросхема. Подчищен код проекта и полностью переведён на Qt.

Делаются попытки собрать статичную линковку Qt SDK, но пока безуспешные =)
Изображение

Исходники нового отладчика теперь на SVN : https://code.google.com/p/breaks/source ... /trunk/SRC


Сообщение 23 авг 2013, 14:09
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Наконец-то получен ключевой механизм работы 6502, подробное описание тут : http://wiki.breaknes.com/6502:phi1


Сообщение 09 сен 2013, 22:31
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Состряпал такую схемку - взаимодействие контекста 6502.


Вложения:
6502_context.jpg
6502_context.jpg [ 167.76 КБ | Просмотров: 11794 ]
Сообщение 15 сен 2013, 15:12
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Дедуля Хенсон и оригнальные блюпринты 6502. До сих пор жмет их.

http://www.flickr.com/photos/textfiles/ ... 600581004/


Сообщение 25 сен 2013, 14:33
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Освоил новый формат транзисторных схем в sPlan, вместо ручной мазни, которая была до этого )))
Изображение

Схемы sPlan в SVN.

Обновления в вики :
http://wiki.breaknes.com/6502:random:branch_logic
http://wiki.breaknes.com/6502:control
http://wiki.breaknes.com/6502:regs
http://wiki.breaknes.com/6502:decoder


Сообщение 14 окт 2013, 08:03
Ребят! А сколько кадров выдает PPU PAL в секунду? 25 или 50? Я так понимаю, что всего 25 (50 полукадров). Тогда какое же разрешение у полного кадра, если его составить из двух полукадров? И сколько полукадров или кадров должен строить эмулятор в секунду. И происходит ли что-нибудь между четным и нечетным полукадром особенное. Или точно будем знать, когда полностью PPU разберем?


Сообщение 14 окт 2013, 12:17
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
PAL версия PPU выдает по 312 сканлайнов на каждый полукадр.
Ширина строки - 341 точка.
Итого получается 106392 точек, на частоте 26.601712 MHz ÷ 5, итого получается что частота полукадров (когда все точки показываются на экран) составляет 26601712 / 5 / 106392 = 50,007 Hz.

Кадров выходит примерно 25 в секунду.


Сообщение 14 окт 2013, 13:47
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
PPU не имеет интерлейс-режима, поэтому у него оба полукадра одинаковые. Так же, если оба полукадра имеют одинаковое количество строк, то телевизор "склеит" их вместе (речь идет именно о CRT телике, а не LCD). Поэтому, на самом деле, PPU у нас 240P @50FPS. Ибо программе позволено менять каждый кадр по VBlank.

_________________
Tried so hard and got so far, but in the end, it doesn't even matter...


Сообщение 15 окт 2013, 09:13
HardWareMan писал(а):
PPU не имеет интерлейс-режима, поэтому у него оба полукадра одинаковые. Так же, если оба полукадра имеют одинаковое количество строк, то телевизор "склеит" их вместе (речь идет именно о CRT телике, а не LCD). Поэтому, на самом деле, PPU у нас 240P @50FPS. Ибо программе позволено менять каждый кадр по VBlank.


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

Значит реальный продукт PPU - это 256х240 ~50 раз в секунду, а схема преобразует его в 341 точку х 312 линий х 2 полукадра, т.е. достраивает для совместимости с видеосигналом.

Для просчета 50 кадров уходит много времени, по-этому решил просчитывать только каждый нечетный кадр. Получилось 25 кадров в секунду, но из-за отсутствия четных полукадров, игры начинают сбоить(не всегда), т.к. нет определения столкновений спрайтов с задним планом (не факт, может коряво написал). При полном просчете скорость не поднимается выше 15 FPS (поведение картинки меняется в лучшую сторону). Вот и спросил, сколько их просчитывать нужно. (не просчитывал строки только 0-240, остальные, как полагается). Иногда, при 50 полукадрах, наблюдал правильные четные, и неверно просчитанные нечетные (не на тех линиях были переключения банков графики, или кадр вообще был сдвинут.) вот и возник данный вопрос, что именно посылает во втором полукадре PPU. Буду капать в сторону циклов CPU.

И еще, не совсем по моему вопросу. Увидел в схеме APU, что возможно считывание в адреса $4019. Он возвращает в D0-D3 текущее значение DAC треугольника, а в D4-D7 значение DAC канала шума. Запись в $401A:биты D0-D4 загружаются в
DAC треугольника. И есть вопрос по схеме шумового канала - там делитель частоты или тоже сдвиговой регистр, как в генераторе RAND.


Сообщение 15 окт 2013, 12:14
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
мне казалось что восстановлением интерлейса занимается телеприемник %)

-- 15 окт 2013, 11:29 --

Цитата:
И еще, не совсем по моему вопросу. Увидел в схеме APU, что возможно считывание в адреса $4019. Он возвращает в D0-D3 текущее значение DAC треугольника, а в D4-D7 значение DAC канала шума. Запись в $401A:биты D0-D4 загружаются в
DAC треугольника. И есть вопрос по схеме шумового канала - там делитель частоты или тоже сдвиговой регистр, как в генераторе RAND.

$4019 итп это отладочные регистры, доступны если на ногу DBG подать +5 V. Обычно на NES/Famicom эта нога не запитана и регистры недоступны.
В шумовом канале LFSR - регистр сдвига с обратной связью.


Показать сообщения за:  Поле сортировки  
Ответить на тему   [ Сообщений: 411 ]  На страницу Пред.  1 ... 11, 12, 13, 14, 15, 16, 17 ... 21  След.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 52


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by STSoftware for PTF (mod by Zeru-j).
Русская поддержка phpBB