Сообщения без ответов | Активные темы Текущее время: 23 ноя 2017, 20:37



Ответить на тему  [ Сообщений: 384 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 20  След.
 Очень низкоуровневый эмулятор 6502 / NES 
Автор Сообщение
Сообщение 02 авг 2012, 08:35
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 489
Откуда: Embedded
org писал(а):
Я тем временем проштудировал устройство NTSC-сигнала и как PPU генерирует цвета. Весьма впечатлен насколько там всё сложно (и одновременно просто) устроено )
Самое интересное - это как картинка "дребезжит" на границах цветов (частота сэмплирования пикселей отличается от частоты сэмплирования поднесущей цвета).
Ещё случайно наткнулся на изыскания HWM-a на форуме nesdev, особенно порадовали фотки осциллограмм вспышки цветности и вертикальной синхронизации. По ним можно будет искуственно ухудшить эмулируемый video out (шумы и RC-фильтрация сигнала)

Там все даже проще. Из основной частоты формируются 12 фаз поднесущей цветности: 6 прямых и 6 инверсных. Именно поэтому, основная частота ровно в 6 раз выше поднесущей. Одна из фаз используется в колор барсте (вспышка синхронизации цвета), по ней настраивается ФАПЧ частоты декодера. Остальные фазы формируют готовую фазовую модуляцию, что дает нам 12 разных оттенков. Замечу, что плавный сдвиг фазы дает предсказуемую радугу и это прослеживается в палитре NES.
org писал(а):
Единственное что я пока не понял - каким же образом телевизор осуществляет вертикальную синхронизацию.. ведь сигнал может "начаться" с любого места. Где в этом случае рисовать картинку (как позиционированы лучи). Нигде в инете не могу найти как работает последовательность сигналов при вертикальной синхронизации.

Когда приходит КСИ, развертка отрабатывает КОХ. На него уходит примерно 20 строк. Остальное можно назвать растром, т.к. некоторые телевизоры крайние строки выводят за пределами видимой области маски (такова настройка с завода, но можно и уменьшить размер растра чтобы видеть их). Если отрубить кадровое гашение в телевизоре, то можно увидеть, сколько строк КОХ затрачивает каждый конкретный телевизор.
org писал(а):
Эмуляцию телевизора тоже продумал, буду пробовать делать субпиксельный рендеринг, имитируя решетку кинескопа и расположение люминофора.

Где-то я уже это слышал.

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


Сообщение 02 авг 2012, 08:57
Профиль
Аватара пользователя

Зарегистрирован:
23 июл 2007, 19:37
Сообщения: 393
Откуда: Мытищи
Наверное где-то тут: http://nesdev.parodius.com/bbs/viewtopic.php?t=8209

_________________
Nestopia 1.36/1.37 Dendy-mode


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

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 531
Процесс с PPU продвигается достаточно быстро, но с диффузией придется повозиться.

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

-- 02 авг 2012, 19:45 --

Патент на PPU: http://www.google.com/patents/US4824106


Вложения:
wip2.png
wip2.png [ 1.77 МБ | Просмотров: 6326 ]
Сообщение 03 авг 2012, 07:04
Профиль
Аватара пользователя

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

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


Сообщение 06 авг 2012, 18:51
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 531
Оттрассировал примерно 40% чипа.

В спрайтовой памяти диффузию вообще не разглядеть, придется ждать фотки чипов без слоя металла, либо додумать как это работает самостоятельно.


Вложения:
2С02G_wip.png
2С02G_wip.png [ 1.81 МБ | Просмотров: 6266 ]
Сообщение 06 авг 2012, 20:54
Профиль
Аватара пользователя

Зарегистрирован:
23 июл 2007, 19:37
Сообщения: 393
Откуда: Мытищи
Не, уж лучше подождать, чтоб всё точно было. Зря я чтоли два фамикома потрошил =)

_________________
Nestopia 1.36/1.37 Dendy-mode


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

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 531
Да принцип то понятен - есть защелка, на неё два входа - "сброс" и "установка". Как это работает - понятно, но не видно как это реализовано в виде переплетения кишочков.

Поработал ещё над APU. Сделал микшеры звука и пины адресной шины. И еще в середине кучу межсоединений.

Изображение

-- 07 авг 2012, 22:14 --

Вывод шины адреса (address pin)

Изображение

Всего у 2A03 16 таких выводов.

На каждый из них идёт 2 шланга. Первый это собственно значение бита шины A0...A15.
Установленный второй вход (NC/A) отсоединяет процессор от адресной шины. (используется так-называемая "tri-state" логика: 1, 0 и not connected)
Вход A0...A15 идёт в tri-state логику через серию push-pull инверторов. Там кстати видны остатки схемы со времен отладки чипа :)
Фиолетовый "баян" - это усилительные каскады.
Этот вывод - write only (со стороны процессора).

Зашибись когда всё понятно :D


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

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 531
Поработал над PPU.
Влом писать перевод :) Найти можно тут : http://forums.nesdev.com/viewtopic.php? ... 817#p97762

Вкратце - разобрал выводы шины данных и часть схемы адресации спрайтовой памяти.

Застрял вот на этом куске :
Изображение

Где-то в промежутках (помеченных красными квадратами) должны быть дырки, но их не видно под металлом.
Эта схема выбирает регистр PPU, для соединения его с шиной данных.
Если бы все хорошо было видно, я бы уже давно идентифицировал регистры PPU.
Но пока придется решать паззл в других местах, чтобы узнать расположение регистров )
Например порт для обмена со спрайтовой памятью находится где-то рядом с ней, а порт для обмена с видеопамятью (*genius*) где-то рядом с выводами адресной шины PPU. Короче как-то так)


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

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 531
Логика обработки приоритетов прерываний (NMI, IRQ, BRK):
Изображение

Также закончил схему рандомной логики и немного подчистил ALU.

http://ogamespec.com/6502/ALU_trans.png
http://ogamespec.com/6502/LOGIC_trans2.png
(картинки в пост не включаю напрямую, чтобы не травмировать вашу психику)

На транзисторном уровне 6502 теперь разобран полностью! На след. неделе подготовлю полноразмерную схему и сделаю релиз на 6502.org

Также запустился на Google Code: http://code.google.com/p/breaks/

Работы по APU и PPU пока не выкладываю, я их зажал, чтобы навязать конкуренцию авторам других эмуляторов :D
(на самом деле я просто не получал никакого feedback-а от NESDEV коммюнити, в отличии от неоценимой помощи с форума 6502.org)

Соединения рандомной логики с другими частями процессора (eng):

Inputs

PHI1,PHI2: timing
Reset0: from RST pin
NMIG: from NMI pin logic
IRQP: from IRQ pin logic
/IR5: from instruction register, to determine CLC/SEC and others
SO: from SO pin, set V-flag
RDY: from RDY pin

BRKDONE, VEC: from interrupt priority logic

2 inputs from predecode logic.

129 lines from PLA.

AVR: overflow out from ALU
ACR: carry out from ALU

Outputs

TRES: reset T-counter
sync: shift T-counter, additionally output to SYNC pin
T0, T1X: first two steps of instruction decoding, to PLA
R/W: Goes to R/W pin and data latch
fetch: Force instruction register to load from Predecode Register
VEC0: to interrupt priority logic, when BRK detected

48 output drivers, to control bottom part.

Also random logic is connected with internal data bus (DB) to exchange status reg (flags).

По прежнему с нетерпением ждем декапа чипов от товарища HWM'a.
Актуальность их получения возрастает изо дня в день (особенно PPU ревизии G)

Последние работы по APU и PPU можно найти в этой теме:
http://forums.nesdev.com/viewtopic.php? ... 197#p97762


Сообщение 13 сен 2012, 13:43
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 531
Слепил все куски 6502 в одну большую схему:

Изображение


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

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

Скажу сразу - особо на успех не надеялся, но о такой игрушке мечтал давно, так что ещё пригодится)

Выбор сделал на Bresser Junior DM 400. 20x / 80x / 350x.
Изображение
Проблем с покупкой не возникло, взял в 4glaza, стоимость микроскопа составила 4 рубля.

В качестве жертвы выбрал один из чипов рассыпухи PSX, даже не знаю что за чип ))) Вроде контроллер CD-ROM.

Декапитацию провёл "термическим методом" : берем чип в клещи, включаем газ и суем его туда. Как начинает шкворчать - под холодную воду. После 3-4 процедур пластик превратился в печеньку и просто раскрошился. Я немного перестарался и чип треснул пополам:
Изображение

Результаты исследования под микроскопом:
20x:
Изображение

80x
Изображение

350x
Изображение

По сути дела четко показывает только 20x, но из-за 1.3 мегапиксельной матрицы - картинка говно.
А 80 и 350 как ежики в тумане. Линзы не тянут вообще.

Выводы - если брать цифровой микроскоп для исследований, то с линзой в районе 40x (среднее между 20 и 80) и 8-10 мегапиксельной матрицей.

-- 26 сен 2012, 00:45 --

после некоторых экспериментов я обнаружил, что если объектив проворачивать не до конца, то его разрешающая способность как ни странно становится лучше, сравните:

в нормальном положении:
Изображение

не до конца провернутый:
Изображение

ну и вот картинки на макс. разрешающую способность:
Изображение
Изображение


Сообщение 26 сен 2012, 06:37
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 489
Откуда: Embedded
А поменять камеру нет возможности?

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


Сообщение 26 сен 2012, 10:39
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 531
Если только организовать кружок "Умелые руки".
Корпус микроскопа пластиковый, разборный. По идее можно тушку от зеркалки приспособить, но это изврат )))

Вообще надо глянуть на NMOS чипы.
Те что на картинках - это многослойные CMOS.

-- 26 сен 2012, 09:49 --

Захотелось ещё что нибудь отфотать.
Выбрал чип 60ns памяти NEC 424805AL-A60

Чип довольно крупный оказался, примерно сантиметр в ширину. На этот раз я аккуратно плавил корпус и придумал способ как извлечь микросхему - нужно взять чип с боков и нагревая его потихоньку сжимать. За счет этого стенки развигаются и чип просто вываливается изнутри. В итоге кристалл получился без дефектов. Ногтем я соскреб мусор, и отполировал рукавом поверхность, чтобы удалить пыль.

20x, сведенное из двух снимков
Изображение

80x, левый верхний угол
Изображение

350x - DRAM
Изображение

-- 26 сен 2012, 19:46 --

Есть небольшой прогресс. После небольшого обсуждение с Евгеном по поводу "белесости" мы пришли к выводу, что так как телескоп предназначен для проходящего света - часть его отражается назад в трубу от подставки, и создает муар.

Поэтому я по его совету подложил черную тряпочку, результаты превзошли все мои ожидания )

Первый чип оказался совершенно испорчен и дело тут не в плохой матрице. Хотя про матрицу мы тоже уже придумали - я попробую накрутить объективы от микроскопа на HD-веб камеру Logitech с матрицей 5 mpix (кстати технически сам микроскоп - это тупо вебкамера с объективами :D )
Оказалось что алюминиевые дорожки не очень переносят "термическую декапитацию", поэтому металл частично оплавился, кое-где видны даже "спайки", когда он собирался в капельки. Вообщем термическая декаптиация не подходит совершенно.

На 80х. Муар всё же остался, но это уже из-за дешевых светодиодов подсветки. В идеале надо делать фотку одновременно с фотовспышкой, чтобы матрица захватила больше света.
Изображение

На 350х особенно видно как испортились металлические дорожки:
Изображение

Второй чип (память) лучше перенёс термическую декапитацию, так как в нем используется медь, у которой температура плавления повыше чем у алюминия.

На этой фотке дорожки массива DRAM. Я не знаю насколько тонкие эти полоски, но точно несколько микрометров. Такой разрешающей способности вполне хватит для чипов эпохи NES/Sega/Gameboy.
Изображение

Оказалось что чип покрыт оксидной пленкой, как олифой, которая мешает разглядеть детали и искажает картинку. Это видно в месте контактных площадок:
Изображение

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


 28 сен 2012, 12:43
Профиль

Зарегистрирован:
28 сен 2012, 12:29
Сообщения: 9
org :shock: Чувак, ты че рехнулся совсем?
Есть же готовые схемы. Чем они тебе не угодили? Или ты не нашел? :blink:

P.S. У меня такая же идея (вплоть до паяния реального проца потранзисторно :D ), потому и наткнулся на этот форум.

Да, по ходу, ты ее видел (схему)... Извиняюсь... :blink: Не могу вспомнить есть ли еще схемы... Пошарю потом дома (я много изображений по этому процу храню)...


Сообщение 28 сен 2012, 17:58
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 531
Друг, читай внимательно тему и узнаешь почему нужны фотки чипов.
C APU вопросов нет, а вот с PPU есть проблемы.

Начал работу над визуальным отладчиком. Тем кто привык работать с 6502 он покажется непривычным, а мне норм :D

Изображение
(со временем естественно будут добавлены ещё некоторые элементы)

Все последние изменения можно найти в SVN
http://code.google.com/p/breaks/


Сообщение 28 сен 2012, 19:53
Профиль

Зарегистрирован:
28 сен 2012, 12:29
Сообщения: 9
Перерыл все дополнительных рисунков не нашел у себя. Только схему, сдесь на форуме она есть, еще нашел схему i4004... Сначала я ее хотел реализовать, но понял, что на ней только калькулятор можно собрать...

org писал(а):
Друг, читай внимательно тему и узнаешь почему нужны фотки чипов.
C APU вопросов нет, а вот с PPU есть проблемы.

Я не силен в этих терминах...
APU это Arithmetical Process Unit?
PPU это Power Process Unit?

Я правильно понимаю?


Сообщение 28 сен 2012, 20:40
Профиль
Аватара пользователя

Зарегистрирован:
23 июл 2007, 19:37
Сообщения: 393
Откуда: Мытищи
Нет.

APU - Audio Processing Unit
PPU - Picture Processing Unit
Но тут стоит учесть, что это не "общие правила расшифровки", а аббривеатуры для вполне конкретных чипов от NES.

Зачем нужны эти фотографии?
Потому что в NES/Famicom использовались эксклюзивные чипы, заказанные Nintendo у фирмы Ricoh.
Это RP2A03 (CPU+APU+всякая мелочь) и RP2C02 (PPU).
Нигде, кроме как в NES/Famicom (и каком-то нинтендовском игровом автомате) их больше не было.

И если ядро 6502, которое использовалось в RP2A03 ещё более-менее изучено, то APU и особенно PPU - изучено слабо.
Никто, кроме самих Nintendo/Ricoh не знает логику их работы с точностью 100%.
Для этого и делается декапсуляция - чтобы узнать. И в будущем получить идеальный эмулятор.

_________________
Nestopia 1.36/1.37 Dendy-mode


Сообщение 28 сен 2012, 22:47
Профиль

Зарегистрирован:
28 сен 2012, 12:29
Сообщения: 9
EvGS писал(а):
Нет.
Зачем нужны эти фотографии?
Потому что в NES/Famicom использовались эксклюзивные чипы, заказанные Nintendo у фирмы Ricoh.
Это RP2A03 (CPU+APU+всякая мелочь) и RP2C02 (PPU).
Нигде, кроме как в NES/Famicom (и каком-то нинтендовском игровом автомате) их больше не было.

Вот где правда. :agressive: В этом и были все палки в колеса моего прогресса по изучению 6502. Вот только у меня цель иная. Я не приставку эмулировать хочу, а сам процессор, и в конечном результате ЕОМ (на уровне транзисторов или логических элементов, что позволит разрабатывать свои ЭОМ, ну и просто потому, что мне было интересно). Но как вы говорите, в приставках использовались процессоры на основе 6502, но не сам 6502, и модификаций просто, извиняюсь за выражение, хоть одним местом жуй, поди разберись где какая. :banghead: Это у меня окончательно отбило желание разбираться дальше...


Сообщение 29 сен 2012, 00:01
Профиль
Аватара пользователя

Зарегистрирован:
23 июл 2007, 19:37
Сообщения: 393
Откуда: Мытищи
Согласно вики:

"RP2A03 содержит ядро процессора, совместимое с 6502, а также 22 отображаемых на память порта ввода-вывода, управляющих присутствующими в составе микросхемы программируемым генератором звука, простейшим контроллером прямого доступа к памяти (ПДП), таймером с возможностью генерации прерываний, и портом джойстиков."

"Процессорное ядро RP2A03 представляет собой практически полный аналог КМОП-версии 6502.
Главным отличием является отсутствие поддержки десятичного режима и, соответственно, флага D и операции DAA (двоично-десятичной коррекции)."

_________________
Nestopia 1.36/1.37 Dendy-mode


Сообщение 29 сен 2012, 00:35
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 531
На i4004 между прочим оба Пионера 10 и 11 летают, вот уже 40 лет )

Схемы которые я выкладываю не относятся к встроенному ядру 2A03, это схемы оригинального MOS 6502 ревизии D.
Как будет готов симулятор 6502 на транзисторном уровне я просто сравню его маски с тем 6502, который вшит внутрь 2A03 и найду чего там вырезали. Хотя я уже и так догадываюсь что именно :)
И кстати Breaks6502 симулирует полный 6502, но с возможностью указать ему что BCD-коррецию делать не нужно, чтобы он работал в режиме 2A03 (NES)

То что руки опустились - это хорошо ) Будет меньше конкуррентов )))


Показать сообщения за:  Поле сортировки  
Ответить на тему   [ Сообщений: 384 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 20  След.

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

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


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

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