Форум Эму-Россия 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 -- |
Автор: | org [ 16 янв 2022, 13:31 ] | ||
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES | ||
Уберите ограничение на 5 аттачей))
|
Автор: | 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, чтобы проверить.
|
Автор: | Слэйер Мун [ 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).
|
Автор: | 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/ |