Форум Эму-Россия
http://forum.emu-russia.net/

Очень низкоуровневый эмулятор 6502 / NES
http://forum.emu-russia.net/viewtopic.php?f=13&t=3938
Страница 20 из 21

Автор:  EvGS [ 05 фев 2015, 02:00 ]
Заголовок сообщения:  Re: Очень низкоуровневый эмулятор 6502 / NES

Я немного не то подтверждал. Я прогнал тест OAM DECAY на денди, и получил результат аналогичный NTSC NES\FC.
Оригинальная ПАЛка проваливала тест и не разрушала "синюю линию" в кашу. Это "неправильное поведение", т.е. косяк ПАЛки

OAM reading on PAL NES
OAM reading on DENDY

Насчет использования DRAM, это предположение Drag'a.
Для меня темный лес как там всё это в потрохах микросхем работает.

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

Автор:  tfwbbt [ 13 фев 2015, 00:41 ]
Заголовок сообщения:  Re: Очень низкоуровневый эмулятор 6502 / NES

Нужна помощь. Проверьте, правильно ли я понял, как выполняется опкод с типом адресации ABS/ABX/ABY

Вот что у меня выходит, на примере ORA. Ориентируюсь на Хенсона в названиях.
T1, phi1 прошлого опкода - фетч опкода
T2, phi1 - извлечение младших 8 бит операнда, их подают в BI. На AI подают X/Y если ABX/ABY, 0/ADD если ABS. Результат, полагаю, должен быть в регистре ADD.
T3, phi1 - извлечение старших 8 бит операнда, и тут начинается уличная магия. Если нет переноса, то, полагаю, старшие операнды подаются на ADH из Data Latch. Следующий такт - T0. А вот если есть перенос...Тогда нужно подавать на DB в BI, а на AI - 0/ADD. Но вот незадача - в AI уже хранится результат предыдущего суммирования, и с ним надо что-то делать. Четкого свидетельства того, что именно происходит, у меня нет, а единственная моя идея плохо сочетается со схемой Хенсона. Идея в том, что 1 доп. такт T4 нужен на то, чтобы записать первый результат в ABL, а затем второй уже в ABH на доп. такте. Что думаете?

T0, phi1 - извлечение операнда из памяти
T1, phi1 - непосредственно операция + установка флагов + фетч следующего опкода.

Автор:  tfwbbt [ 27 мар 2015, 00:03 ]
Заголовок сообщения:  Re: Очень низкоуровневый эмулятор 6502 / NES

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

Для примера возьмем команду 01101101 (ADC ABS).
Если верить Visual6502, то в определенный момент должен появиться сигнал ADD/ADL. Конкретно - в момент ф2 Т3 и ф1 Т0.
В logisim-схеме этого не происходит. Более того, если верить Visual6502, то к ABS-адресации имеют отношение сигналы T2‑abs, T2‑abs‑access, T3‑abs/idx/ind и T3‑mem‑abs. Это D31, D83, D90 и D122. Влияние ни одного из них я не смог отследить явным образом до выхода ADD/ADL.

Автор:  EvGS [ 08 янв 2017, 14:38 ]
Заголовок сообщения:  Re: Очень низкоуровневый эмулятор 6502 / NES

Visual Nes: C++ / C# port of Visual 2A03 + 2C02
http://forums.nesdev.com/viewtopic.php?f=3&t=15334

Автор:  org [ 16 янв 2022, 00:11 ]
Заголовок сообщения:  Re: Очень низкоуровневый эмулятор 6502 / NES

Случайно вспомнил про этот топик, напишу дайджест.

С ноября 2021 года получив волшебный пинок от @andkorzh зарашили совместно с ним все логические схемы всех чипов NES:
- https://github.com/emu-russia/breaks/tr ... 02_logisim
- https://github.com/emu-russia/breaks/tr ... PU_logisim (базируется на схемах LogisimmerIK)
- https://github.com/emu-russia/breaks/tr ... PU_logisim

Выпустили 2 книги по 6502 и PPU:
- https://github.com/emu-russia/breaks/re ... vA-russian
- https://github.com/emu-russia/breaks/re ... A6-russian

Вскрыли PAL-версии чипов NES (RP2C07, RP2A07):
- https://drive.google.com/drive/folders/ ... sp=sharing
- https://drive.google.com/drive/folders/ ... sp=sharing

Провели сравнение схем PAL и NTSC версий PPU. Результаты в релизах на нашем проекте GitHub/breaks.

Сайт breaknes.com закрыт в пользу GitHub.

Закончили заполнение вики по 6502 и PPU:
- https://github.com/emu-russia/breaks/tr ... SWiki/6502
- https://github.com/emu-russia/breaks/tr ... ESWiki/PPU
- APU и книга по нему в процессе

Разработан таки "Очень низкоуровневый эмулятор 6502" - Breaks Debugger:
- https://github.com/emu-russia/breaks/re ... s-debug-10
- https://github.com/emu-russia/breaks/re ... s-debug-11
- https://github.com/emu-russia/breaks/re ... s-debug-12
- https://github.com/emu-russia/breaks/re ... s-debug-13
(просто все версии выкладываю, т.к. там описан процесс разработки)

-- 15 янв 2022, 23:12 --

И ещё немного фоточек.

-- 15 янв 2022, 23:15 --



Вложения:
qdVDa5pbJp0.jpg
qdVDa5pbJp0.jpg [ 383.71 КБ | Просмотров: 4521 ]
ZxufhAhB_ao.jpg
ZxufhAhB_ao.jpg [ 592.38 КБ | Просмотров: 4523 ]
rd0AshiJc7s.jpg
rd0AshiJc7s.jpg [ 135.3 КБ | Просмотров: 4523 ]
SywXajFjf8Q.jpg
SywXajFjf8Q.jpg [ 210.53 КБ | Просмотров: 4523 ]
GBclBAKDYOc.jpg
GBclBAKDYOc.jpg [ 378.6 КБ | Просмотров: 4523 ]
149550095-053e9276-df3b-4868-b8d4-b5987c47209a.png
149550095-053e9276-df3b-4868-b8d4-b5987c47209a.png [ 235.25 КБ | Просмотров: 4523 ]
148691773-e7dbd64a-8067-41f2-82c5-94662ee20311.png
148691773-e7dbd64a-8067-41f2-82c5-94662ee20311.png [ 398.52 КБ | Просмотров: 4523 ]
8paTdHNJovU.jpg
8paTdHNJovU.jpg [ 207.15 КБ | Просмотров: 4523 ]
4il_rp5zlOY.jpg
4il_rp5zlOY.jpg [ 78.69 КБ | Просмотров: 4523 ]
3BbELdOVnL8.jpg
3BbELdOVnL8.jpg [ 437.5 КБ | Просмотров: 4523 ]

Автор:  org [ 16 янв 2022, 13:31 ]
Заголовок сообщения:  Re: Очень низкоуровневый эмулятор 6502 / NES

Уберите ограничение на 5 аттачей))

Вложения:
B_-zsj124E0.jpg
B_-zsj124E0.jpg [ 160.53 КБ | Просмотров: 4503 ]

Автор:  Eevon [ 16 янв 2022, 15:02 ]
Заголовок сообщения:  Re: Очень низкоуровневый эмулятор 6502 / NES

org писал(а):
Уберите ограничение на 5 аттачей))

Поставил 20.

Автор:  VEG [ 16 янв 2022, 15:43 ]
Заголовок сообщения:  Re: Очень низкоуровневый эмулятор 6502 / NES

Интересно почитать, спасибо. Рад, что проект вернулся к жизни =)

Автор:  org [ 17 янв 2022, 02:50 ]
Заголовок сообщения:  Re: Очень низкоуровневый эмулятор 6502 / NES

Цитата:
Поставил 20.


Спасибо! Заметил забавный баг форума, когда много картинок в аттачах - нужно обновить несколько раз страницу, чтобы всё загрузилось до конца :)

Автор:  Слэйер Мун [ 18 янв 2022, 21:41 ]
Заголовок сообщения:  Re: Очень низкоуровневый эмулятор 6502 / NES

Офигеть, посоны, вы жжоте. Книги они пишут, нормас. Удачи в проекте, держите в курсе (не сарказм)!

Автор:  org [ 19 янв 2022, 21:24 ]
Заголовок сообщения:  Re: Очень низкоуровневый эмулятор 6502 / NES

Будем считать финальная версия симулятора 6502:

https://github.com/emu-russia/breaks/re ... s-debug-16

Работают все инструкции (как мне кажется), прогнал TestAll.asm. Полёт нормальный.

Есть поддержка юнит-тестирования. Создаете JSON с параметрами и дамп памяти/исходник на асме - скармливаете дебагеру, оно шуршит пока не встретит инструкцию BRK и выплевывет результаты (итоговый дамп памяти + res.json)

Автор:  VEG [ 21 янв 2022, 19:37 ]
Заголовок сообщения:  Re: Очень низкоуровневый эмулятор 6502 / NES

Поздравляю! Вы проделали отличную работу. Потомки точно будут знать, как работала наша любимая NES =)

Автор:  org [ 22 янв 2022, 01:01 ]
Заголовок сообщения:  Re: Очень низкоуровневый эмулятор 6502 / NES

Нашлось таки парочка багов.

https://github.com/emu-russia/breaks/re ... s-debug-17

Вкрячил ядро в Nintendulator, чтобы проверить.

Вложения:
nestest.jpg
nestest.jpg [ 70.97 КБ | Просмотров: 4369 ]
btdd.jpg
btdd.jpg [ 80.55 КБ | Просмотров: 4369 ]
bomberman.jpg
bomberman.jpg [ 71.1 КБ | Просмотров: 4369 ]

Автор:  Слэйер Мун [ 22 янв 2022, 13:24 ]
Заголовок сообщения:  Re: Очень низкоуровневый эмулятор 6502 / NES

Так а какой-то эмулятор NES будет основан на этом эпохальном труде или как?

Автор:  org [ 22 янв 2022, 15:56 ]
Заголовок сообщения:  Re: Очень низкоуровневый эмулятор 6502 / NES

Топик ради него и назывался/создавался) Называется Breaknes.

Автор:  Слэйер Мун [ 22 янв 2022, 16:21 ]
Заголовок сообщения:  Re: Очень низкоуровневый эмулятор 6502 / NES

Но, я так понял, что он не существует пока или как?

Автор:  org [ 22 янв 2022, 20:09 ]
Заголовок сообщения:  Re: Очень низкоуровневый эмулятор 6502 / NES

Существует, но не в текущем времени.

Автор:  org [ 24 янв 2022, 16:55 ]
Заголовок сообщения:  Re: Очень низкоуровневый эмулятор 6502 / NES

Завершена разработка схемы 6502 для Logisim:

https://github.com/emu-russia/breaks/tr ... 02_logisim

Для запуска симуляции:
- Загрузить в RAM тестовую программу (прилагается visual6502.hex)
- Установить RDY = 1, /NMI = 1, /IRQ = 1, /RES = 0
- Выполнить несколько циклов, пока 6502 не перейдет в режим ожидания /RES = 1
- Установить /RES = 1

Дальше процессор продолжит выполняться в обычном режиме. В начале будет инициирована BRK-последовательность сброса, затем он перейдет по адресу, указанному в векторе прерывания Reset и начнет выполнение демонстрационной программы.

Схема содержит парочку workaround, в основном это касается двунаправленных шин, которые не поддерживаются в Logisim:
- Все двунаправленные шины разделены на две (Bus In / Bus Out)
- Специальная обработка команд SB/DB и SB/ADH, которые соединяют двунаправленные шины SB, DB и ADH (находится в схеме BUS_MUX_HACK)
- Специальная обработка самого первого полуцикла, когда процессор "сходит с ума". В этом полуцикле нужно очистить все внутренние шины (находится в схеме PRECHARGE).

Вложения:
alu.jpg
alu.jpg [ 246.47 КБ | Просмотров: 4296 ]
M6502_Logisim.jpg
M6502_Logisim.jpg [ 538.69 КБ | Просмотров: 4296 ]
6502_logisim_bogus_board.jpg
6502_logisim_bogus_board.jpg [ 157.8 КБ | Просмотров: 4296 ]

Автор:  org [ 07 фев 2022, 19:52 ]
Заголовок сообщения:  Re: Очень низкоуровневый эмулятор 6502 / NES

Новая версия отладчика с мелкими правками:

https://github.com/emu-russia/breaks/re ... s-debug-18

Продолжаем :)

Автор:  org [ 25 фев 2022, 20:19 ]
Заголовок сообщения:  Re: Очень низкоуровневый эмулятор 6502 / NES

Вышла новая книга, на этот раз про APU:

https://github.com/emu-russia/breaks/re ... -book-revA

Приятного чтения! :)

Страница 20 из 21 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/