Очень низкоуровневый эмулятор 6502 / NES
Автор |
Сообщение |
05 фев 2015, 02:00 |
|
Зарегистрирован: 23 июл 2007, 19:37 Сообщения: 401 Откуда: Мытищи
|
Я немного не то подтверждал. Я прогнал тест OAM DECAY на денди, и получил результат аналогичный NTSC NES\FC. Оригинальная ПАЛка проваливала тест и не разрушала "синюю линию" в кашу. Это "неправильное поведение", т.е. косяк ПАЛки OAM reading on PAL NESOAM reading on DENDYНасчет использования DRAM, это предположение Drag'a. Для меня темный лес как там всё это в потрохах микросхем работает. Я рад, что теперь в этой табличке больше нет белых пятен насчет денди. Хотя может быть я что-то упустил, о чем не знаю.
_________________ Nestopia 1.37/1.40 Fixed
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
13 фев 2015, 00:41 |
|
Зарегистрирован: 05 ноя 2014, 23:03 Сообщения: 29
|
Нужна помощь. Проверьте, правильно ли я понял, как выполняется опкод с типом адресации 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 - непосредственно операция + установка флагов + фетч следующего опкода.
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
27 мар 2015, 00:03 |
|
Зарегистрирован: 05 ноя 2014, 23:03 Сообщения: 29
|
Возможно нашел косяк в 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.
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
08 янв 2017, 14:38 |
|
Зарегистрирован: 23 июл 2007, 19:37 Сообщения: 401 Откуда: Мытищи
|
_________________ Nestopia 1.37/1.40 Fixed
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
16 янв 2022, 00:11 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Случайно вспомнил про этот топик, напишу дайджест. С ноября 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 --
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
16 янв 2022, 13:31 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Уберите ограничение на 5 аттачей))
Вложения:
B_-zsj124E0.jpg [ 160.53 КБ | Просмотров: 5291 ]
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
16 янв 2022, 15:02 |
|
Основатель сайта
Зарегистрирован: 21 июл 2007, 15:40 Сообщения: 2234 Откуда: Москва
|
org писал(а): Уберите ограничение на 5 аттачей)) Поставил 20.
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
16 янв 2022, 15:43 |
|
Зарегистрирован: 06 апр 2008, 13:46 Сообщения: 119
|
Интересно почитать, спасибо. Рад, что проект вернулся к жизни =)
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
17 янв 2022, 02:50 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Спасибо! Заметил забавный баг форума, когда много картинок в аттачах - нужно обновить несколько раз страницу, чтобы всё загрузилось до конца ![:) :)](./images/smilies/smile.gif)
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
18 янв 2022, 21:41 |
|
Зарегистрирован: 22 июл 2007, 22:03 Сообщения: 480
|
Офигеть, посоны, вы жжоте. Книги они пишут, нормас. Удачи в проекте, держите в курсе (не сарказм)!
_________________ Challenge the Legend / Мой сайт - http://www.u-sm.ru 8700K, 16GB, RTX 3070 Ti
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
19 янв 2022, 21:24 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Будем считать финальная версия симулятора 6502: https://github.com/emu-russia/breaks/re ... s-debug-16Работают все инструкции (как мне кажется), прогнал TestAll.asm. Полёт нормальный. Есть поддержка юнит-тестирования. Создаете JSON с параметрами и дамп памяти/исходник на асме - скармливаете дебагеру, оно шуршит пока не встретит инструкцию BRK и выплевывет результаты (итоговый дамп памяти + res.json)
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
21 янв 2022, 19:37 |
|
Зарегистрирован: 06 апр 2008, 13:46 Сообщения: 119
|
Поздравляю! Вы проделали отличную работу. Потомки точно будут знать, как работала наша любимая NES =)
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
22 янв 2022, 01:01 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Нашлось таки парочка багов. https://github.com/emu-russia/breaks/re ... s-debug-17Вкрячил ядро в Nintendulator, чтобы проверить.
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
22 янв 2022, 13:24 |
|
Зарегистрирован: 22 июл 2007, 22:03 Сообщения: 480
|
Так а какой-то эмулятор NES будет основан на этом эпохальном труде или как?
_________________ Challenge the Legend / Мой сайт - http://www.u-sm.ru 8700K, 16GB, RTX 3070 Ti
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
22 янв 2022, 15:56 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Топик ради него и назывался/создавался) Называется Breaknes.
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
22 янв 2022, 16:21 |
|
Зарегистрирован: 22 июл 2007, 22:03 Сообщения: 480
|
Но, я так понял, что он не существует пока или как?
_________________ Challenge the Legend / Мой сайт - http://www.u-sm.ru 8700K, 16GB, RTX 3070 Ti
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
22 янв 2022, 20:09 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Существует, но не в текущем времени.
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
24 янв 2022, 16:55 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Завершена разработка схемы 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).
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
07 фев 2022, 19:52 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
25 фев 2022, 20:19 |
|
Зарегистрирован: 24 июл 2007, 10:41 Сообщения: 570
|
Вышла новая книга, на этот раз про APU: https://github.com/emu-russia/breaks/re ... -book-revAПриятного чтения! ![:) :)](./images/smilies/smile.gif)
|
![](./styles/wow_alliance/theme/images/spacer.gif) |
|
Кто сейчас на конференции |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17 |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения
|
|