Форум Эму-Россия http://forum.emu-russia.net/ |
|
Очень низкоуровневый эмулятор 6502 / NES http://forum.emu-russia.net/viewtopic.php?f=13&t=3938 |
Страница 19 из 21 |
Автор: | tfwbbt [ 24 ноя 2014, 12:19 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Впечатляет. Я опять пробалбесничал все выходные |
Автор: | org [ 30 ноя 2014, 15:51 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Готово. https://code.google.com/p/breaks/source ... MOS_6502.v Разводка модулей: http://forum.6502.org/download/file.php?id=2037 |
Автор: | Иван [ 29 дек 2014, 15:47 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Вопрос по PPU. Что происходит при включении прорисовки фона или спрайтов. Ведь счетчик в ППУ всегда считает. Что он сотворит с картинкой - откуда начнется прорисовка кадра, если там уже далеко не середина строки или кадра? И что произойдет, если в середине кадра вырубить прорисовку (заменить или нет регистры адреса в PPU) и через какое-то время опять включить. Очень смутно понимаю, что произойдет. Не могу справиться с демкой High-Hopes - нет прорисовки извивающейся линии. |
Автор: | HardWareMan [ 02 янв 2015, 11:03 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
org писал(а): Сколько он занимает? pAPU будешь делать? Надо добить Дендик полностью. :3 |
Автор: | CaH4e3 [ 02 янв 2015, 15:29 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
да, руки чешутся заюзать ядро в мурмуляторе хех |
Автор: | org [ 04 янв 2015, 17:10 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Цитата: Вопрос по PPU. Что происходит при включении прорисовки фона или спрайтов. Ведь счетчик в ППУ всегда считает. Что он сотворит с картинкой - откуда начнется прорисовка кадра, если там уже далеко не середина строки или кадра? Сигнал VBlank настроит прорисовку как положено, после первых двух полукадров. Поэтому во всех играх в самом начале есть 2 цикла ожидания Vblank. Ничего страшного не произойдет, просто у тебя кадр начнется не с верха экрана, а где-то посередине. Цитата: И что произойдет, если в середине кадра вырубить прорисовку Цитата: Сколько он занимает? Total logic elements : 872 Total pins : 34 Цитата: pAPU будешь делать? После PPU ) |
Автор: | HardWareMan [ 07 янв 2015, 00:22 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
org писал(а): Цитата: Вопрос по PPU. Что происходит при включении прорисовки фона или спрайтов. Ведь счетчик в ППУ всегда считает. Что он сотворит с картинкой - откуда начнется прорисовка кадра, если там уже далеко не середина строки или кадра? Сигнал VBlank настроит прорисовку как положено, после первых двух полукадров. Поэтому во всех играх в самом начале есть 2 цикла ожидания Vblank. Насколько я понял, 2 фрейма нужно ждать (с синхронизацией к VBlank'у) для устаканивания режима PPU при поверапе, а особенно его динамической памяти. Иначе смысла в посыле настроек нет - PPU их не примет или примет не правильно. org писал(а): Цитата: pAPU будешь делать? После PPU ) Супер! |
Автор: | org [ 07 янв 2015, 02:44 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Я думаю что памяти достаточно нескольких циклов, чтобы устаканиться. А ожидание двух Vblank связано с тем, чтобы логика игры была дискретна целым кадрам. |
Автор: | HardWareMan [ 07 янв 2015, 10:26 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
org писал(а): Я думаю что памяти достаточно нескольких циклов, чтобы устаканиться. А ожидание двух Vblank связано с тем, чтобы логика игры была дискретна целым кадрам. Ну я читал у Кевтриса вроде, что при тестах на NES, у которой сброс PPU подключен к сбросу CPU, что если не ждать 2 фрейма, то изображение портится. Действительно, 1 полный фрейм нужен для уверенности что все скансчетчики прокрутили свои состояния и/или вышли из запрещенных состояний. Однако, если счетчик был рядом с VBlank, то он не пройдет полный круг. Для этого ожидается второй VBlank. Таким образом, первый VBlank это синхронизация, а второй VBlank это уже минимальный норматив ожидания, т.к. скорость запуска игры имеет значение для игрока. Сам же понимаешь, что при поверапе вся схема в случайном состоянии. У Денди же (и Фамикома) сброс PPU не подключен к сбросу CPU и PPU колбасит всегда нонстопом при ручном сбросе. Это опять же говорит в пользу 2х фреймов как универсальной меры: первый для синхронизации и второй ожидание. PS Код начальной инициализации не дискретен. |
Автор: | CaH4e3 [ 07 янв 2015, 15:31 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
скажу даже больше, пиратский червяк джим 3 вообще не ждет никаких кадров, а начинает сразу рубить инит системы, очистку ппу и тп. на старой фсеу с одним мертвым кадром перед стартом джим просто вешался не дойдя до главного лупа, пришлось второй мертвый кадр вставлять лол |
Автор: | Иван [ 14 янв 2015, 10:51 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
org писал(а): Цитата: И что произойдет, если в середине кадра вырубить прорисовку Ничего. Просто наружу не будет выводиться картинка (заместо пикселей будут уровни черного) То есть PPU будет исправно запрашивать данные из VRAM и VROM - не освободит свою шину данных и адреса, а сам будет рисовать "черные точки" с примесью синросигналов? -- 14 янв 2015, 11:59 -- HardWareMan писал(а): Насколько я понял, 2 фрейма нужно ждать (с синхронизацией к VBlank'у) для устаканивания режима PPU при поверапе, а особенно его динамической памяти. Иначе смысла в посыле настроек нет - PPU их не примет или примет не правильно. А я понял, что настройки PPU хранит в своего рода регистрах (не все из 8 бит). И точно к некоторым из них он не может запретить доступ из вне (по крайней мере на запись данных). |
Автор: | HardWareMan [ 14 янв 2015, 11:17 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Иван писал(а): А я понял, что настройки PPU хранит в своего рода регистрах (не все из 8 бит). И точно к некоторым из них он не может запретить доступ из вне (по крайней мере на запись данных). Дело не в запрете доступа а в способности хранения. Если некоторые регистры действительно собраны на логике, то та же память ОАМ собрана на емкостях. И пока не установится режим, внятную информацию туда не записать. С соответствующим результатом. |
Автор: | org [ 15 янв 2015, 03:08 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Цитата: То есть PPU будет исправно запрашивать данные из VRAM и VROM - не освободит свою шину данных и адреса, а сам будет рисовать "черные точки" с примесью синросигналов? Так точно. "Вырубание" рисования - вырубает конкретно вывод точек в "полезной" части видеосигнала (та что находится после Color Burst). А схема выборки данных будет исправно долбиться в видео-память. То же самое относится и к схеме выборки и сравнения спрайтов и счетчикам H/V (координаты луча). Все они будут работать "вхолостую", потому что их нельзя поставить на "паузу" -- 15 янв 2015, 02:11 -- Цитата: Если некоторые регистры действительно собраны на логике, то та же память ОАМ собрана на емкостях. И пока не установится режим, внятную информацию туда не записать. С соответствующим результатом. |
Автор: | HardWareMan [ 15 янв 2015, 08:05 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
org писал(а): Цитата: То есть PPU будет исправно запрашивать данные из VRAM и VROM - не освободит свою шину данных и адреса, а сам будет рисовать "черные точки" с примесью синросигналов? Так точно. "Вырубание" рисования - вырубает конкретно вывод точек в "полезной" части видеосигнала (та что находится после Color Burst). А схема выборки данных будет исправно долбиться в видео-память. То же самое относится и к схеме выборки и сравнения спрайтов и счетчикам H/V (координаты луча). Все они будут работать "вхолостую", потому что их нельзя поставить на "паузу" А я думал, что программы отключают рендер (только оба одновременно: и спрайты и бэкграунд!) именно для того, чтобы быстрее перезагрузить данные VRAM не привязываясь к VBlank и не ограничиваясь окном VBlank'а. Надо логиком посмотреть для уверенности. org писал(а): Цитата: Если некоторые регистры действительно собраны на логике, то та же память ОАМ собрана на емкостях. И пока не установится режим, внятную информацию туда не записать. С соответствующим результатом. И эту фичу разрбирали на несдеве. Даже тестик писали. |
Автор: | HardWareMan [ 18 янв 2015, 09:24 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Просто я где-то прочитал про это и было отдельно выделено, что отключать надо полностью. Иначе VRAM остается занятой во время активного кадра. |
Автор: | Иван [ 20 янв 2015, 15:58 ] | ||
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES | ||
Еще нашел сигнал BLNK в схеме DATAREADER-а PPU.
|
Автор: | EvGS [ 26 янв 2015, 02:41 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Люди, кто-нибудь может помочь в этом вопросе?: http://forums.nesdev.com/viewtopic.php?f=9&t=11614 Нужен тестовый ром для проверки на флешкартридже: Цитата: Overscan color. Is it forced black or otherwise? Does it differ at the sides vs. at the top and bottom? If it's forced to black, does the black protrude 2 pixels into the picture like it does on PAL NES? Behavior of OAM DMA during forced blanking. The official PAL NES refreshes OAM outside lines 241-260 even if rendering is disabled, causing OAM DMA to fail except during the start of vblank. The Dendy has its screen update period near the end of vblank (lines 291-310) for maximum compatibility with cycle-counting interval timers in Japanese mappers such as FDS, VRC, and FME-7, and I wonder if it too does some sort of OAM refresh during its post-render scanlines (240-290). |
Автор: | EvGS [ 29 янв 2015, 01:23 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Декап FDS и VRC7: http://forums.nesdev.com/viewtopic.php?f=9&t=12260 |
Автор: | HardWareMan [ 04 фев 2015, 07:12 ] |
Заголовок сообщения: | Re: Очень низкоуровневый эмулятор 6502 / NES |
Возвращаясь к напечатанному. EvGS подтвердил, что память ОАМ в PPU дендика построен на DRAM. |
Страница 19 из 21 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |