Сообщения без ответов | Активные темы Текущее время: 28 мар 2024, 13:16



Ответить на тему  [ Сообщений: 411 ]  На страницу Пред.  1 ... 16, 17, 18, 19, 20, 21  След.
 Очень низкоуровневый эмулятор 6502 / NES 
Автор Сообщение
Сообщение 24 ноя 2014, 12:19
Профиль
Аватара пользователя

Зарегистрирован:
05 ноя 2014, 23:03
Сообщения: 29
Впечатляет.
Я опять пробалбесничал все выходные :(


Сообщение 30 ноя 2014, 15:51
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Готово.

https://code.google.com/p/breaks/source ... MOS_6502.v

Разводка модулей:
http://forum.6502.org/download/file.php?id=2037


Сообщение 29 дек 2014, 15:47
Профиль

Зарегистрирован:
19 окт 2013, 18:46
Сообщения: 18
Откуда: Россия, г. Златоуст
Вопрос по PPU. Что происходит при включении прорисовки фона или спрайтов. Ведь счетчик в ППУ всегда считает. Что он сотворит с картинкой - откуда начнется прорисовка кадра, если там уже далеко не середина строки или кадра? И что произойдет, если в середине кадра вырубить прорисовку (заменить или нет регистры адреса в PPU) и через какое-то время опять включить. Очень смутно понимаю, что произойдет.
Не могу справиться с демкой High-Hopes - нет прорисовки извивающейся линии.


Сообщение 02 янв 2015, 11:03
Профиль
Аватара пользователя

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

Сколько он занимает? pAPU будешь делать? Надо добить Дендик полностью. :3

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


Сообщение 02 янв 2015, 15:29
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
22 июл 2007, 11:16
Сообщения: 787
да, руки чешутся заюзать ядро в мурмуляторе хех

_________________
1. Модератор всегда прав.
2. Если модератор не прав, см. п. 1.


Сообщение 04 янв 2015, 17:10
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Цитата:
Вопрос по PPU. Что происходит при включении прорисовки фона или спрайтов. Ведь счетчик в ППУ всегда считает. Что он сотворит с картинкой - откуда начнется прорисовка кадра, если там уже далеко не середина строки или кадра?

Сигнал VBlank настроит прорисовку как положено, после первых двух полукадров. Поэтому во всех играх в самом начале есть 2 цикла ожидания Vblank. Ничего страшного не произойдет, просто у тебя кадр начнется не с верха экрана, а где-то посередине.

Цитата:
И что произойдет, если в середине кадра вырубить прорисовку
Ничего. Просто наружу не будет выводиться картинка (заместо пикселей будут уровни черного)

Цитата:
Сколько он занимает?

Total logic elements : 872
Total pins : 34

Цитата:
pAPU будешь делать?

После PPU )


Сообщение 07 янв 2015, 00:22
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
org писал(а):
Цитата:
Вопрос по PPU. Что происходит при включении прорисовки фона или спрайтов. Ведь счетчик в ППУ всегда считает. Что он сотворит с картинкой - откуда начнется прорисовка кадра, если там уже далеко не середина строки или кадра?

Сигнал VBlank настроит прорисовку как положено, после первых двух полукадров. Поэтому во всех играх в самом начале есть 2 цикла ожидания Vblank.

Насколько я понял, 2 фрейма нужно ждать (с синхронизацией к VBlank'у) для устаканивания режима PPU при поверапе, а особенно его динамической памяти. Иначе смысла в посыле настроек нет - PPU их не примет или примет не правильно.
org писал(а):
Цитата:
pAPU будешь делать?

После PPU )

Супер!

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


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

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Я думаю что памяти достаточно нескольких циклов, чтобы устаканиться. А ожидание двух Vblank связано с тем, чтобы логика игры была дискретна целым кадрам.


Сообщение 07 янв 2015, 10:26
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
org писал(а):
Я думаю что памяти достаточно нескольких циклов, чтобы устаканиться. А ожидание двух Vblank связано с тем, чтобы логика игры была дискретна целым кадрам.

Ну я читал у Кевтриса вроде, что при тестах на NES, у которой сброс PPU подключен к сбросу CPU, что если не ждать 2 фрейма, то изображение портится. Действительно, 1 полный фрейм нужен для уверенности что все скансчетчики прокрутили свои состояния и/или вышли из запрещенных состояний. Однако, если счетчик был рядом с VBlank, то он не пройдет полный круг. Для этого ожидается второй VBlank. Таким образом, первый VBlank это синхронизация, а второй VBlank это уже минимальный норматив ожидания, т.к. скорость запуска игры имеет значение для игрока. Сам же понимаешь, что при поверапе вся схема в случайном состоянии. У Денди же (и Фамикома) сброс PPU не подключен к сбросу CPU и PPU колбасит всегда нонстопом при ручном сбросе. Это опять же говорит в пользу 2х фреймов как универсальной меры: первый для синхронизации и второй ожидание.

PS Код начальной инициализации не дискретен.

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


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

Зарегистрирован:
22 июл 2007, 11:16
Сообщения: 787
скажу даже больше, пиратский червяк джим 3 вообще не ждет никаких кадров, а начинает сразу рубить инит системы, очистку ппу и тп. на старой фсеу с одним мертвым кадром перед стартом джим просто вешался не дойдя до главного лупа, пришлось второй мертвый кадр вставлять лол

_________________
1. Модератор всегда прав.
2. Если модератор не прав, см. п. 1.


Сообщение 14 янв 2015, 10:51
Профиль

Зарегистрирован:
19 окт 2013, 18:46
Сообщения: 18
Откуда: Россия, г. Златоуст
org писал(а):
Цитата:
И что произойдет, если в середине кадра вырубить прорисовку

Ничего. Просто наружу не будет выводиться картинка (заместо пикселей будут уровни черного)

То есть PPU будет исправно запрашивать данные из VRAM и VROM - не освободит свою шину данных и адреса, а сам будет рисовать "черные точки" с примесью синросигналов?

-- 14 янв 2015, 11:59 --

HardWareMan писал(а):
Насколько я понял, 2 фрейма нужно ждать (с синхронизацией к VBlank'у) для устаканивания режима PPU при поверапе, а особенно его динамической памяти. Иначе смысла в посыле настроек нет - PPU их не примет или примет не правильно.

А я понял, что настройки PPU хранит в своего рода регистрах (не все из 8 бит). И точно к некоторым из них он не может запретить доступ из вне (по крайней мере на запись данных).


Сообщение 14 янв 2015, 11:17
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
Иван писал(а):
А я понял, что настройки PPU хранит в своего рода регистрах (не все из 8 бит). И точно к некоторым из них он не может запретить доступ из вне (по крайней мере на запись данных).

Дело не в запрете доступа а в способности хранения. Если некоторые регистры действительно собраны на логике, то та же память ОАМ собрана на емкостях. И пока не установится режим, внятную информацию туда не записать. С соответствующим результатом.

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


Сообщение 15 янв 2015, 03:08
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Цитата:
То есть PPU будет исправно запрашивать данные из VRAM и VROM - не освободит свою шину данных и адреса, а сам будет рисовать "черные точки" с примесью синросигналов?

Так точно. "Вырубание" рисования - вырубает конкретно вывод точек в "полезной" части видеосигнала (та что находится после Color Burst). А схема выборки данных будет исправно долбиться в видео-память. То же самое относится и к схеме выборки и сравнения спрайтов и счетчикам H/V (координаты луча). Все они будут работать "вхолостую", потому что их нельзя поставить на "паузу" :)

-- 15 янв 2015, 02:11 --

Цитата:
Если некоторые регистры действительно собраны на логике, то та же память ОАМ собрана на емкостях. И пока не установится режим, внятную информацию туда не записать. С соответствующим результатом.
Более того, если OAM периодически не обновлять - она имеет тенденцию "корраптиться" (разряжаться). Насколько мне известно эта фича не работает в эмуляторах.


Сообщение 15 янв 2015, 08:05
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
org писал(а):
Цитата:
То есть PPU будет исправно запрашивать данные из VRAM и VROM - не освободит свою шину данных и адреса, а сам будет рисовать "черные точки" с примесью синросигналов?

Так точно. "Вырубание" рисования - вырубает конкретно вывод точек в "полезной" части видеосигнала (та что находится после Color Burst). А схема выборки данных будет исправно долбиться в видео-память. То же самое относится и к схеме выборки и сравнения спрайтов и счетчикам H/V (координаты луча). Все они будут работать "вхолостую", потому что их нельзя поставить на "паузу" :)

А я думал, что программы отключают рендер (только оба одновременно: и спрайты и бэкграунд!) именно для того, чтобы быстрее перезагрузить данные VRAM не привязываясь к VBlank и не ограничиваясь окном VBlank'а. Надо логиком посмотреть для уверенности.
org писал(а):
Цитата:
Если некоторые регистры действительно собраны на логике, то та же память ОАМ собрана на емкостях. И пока не установится режим, внятную информацию туда не записать. С соответствующим результатом.
Более того, если OAM периодически не обновлять - она имеет тенденцию "корраптиться" (разряжаться). Насколько мне известно эта фича не работает в эмуляторах.

И эту фичу разрбирали на несдеве. Даже тестик писали.

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


Сообщение 18 янв 2015, 00:40
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Цитата:
А я думал, что программы отключают рендер (только оба одновременно: и спрайты и бэкграунд!)


Тэкс.. Я решил глянуть схемы, что там происходит на самом деле)))

Регистр $2001
Изображение
Значение битов 3 и 4 (Background Enable, Object Enable) идут на схему клиппинга и совместно формируют сигнал "BLACK".
BLACK = 1, когда backgound + object выключены одновременно.

Схема управления PPU
Изображение
Сигнал BLACK участвует в формировании сигнала BLNK.
BLNK = 1, когда BLACK = 1, а также во время VBlank (V=240...261)

На что влияет сигнал BLNK
Изображение
Сигнал BLNK отрубает следующие сигналы:
S/EV : Sprite Evaluation
/VIS : Контроль мультиплексора (MUX)
PAR/O
На сигналы FETCH (F/NT, F/TA, F/TB, FO)

Так что прошу прощения за дезинфу, эти биты всё таки как-то влияют на схемы сравнения спрайтов и FETCH данных.


Вложения:
black_003.jpg
black_003.jpg [ 245.24 КБ | Просмотров: 15918 ]
black_002.jpg
black_002.jpg [ 74.32 КБ | Просмотров: 15918 ]
black_001.jpg
black_001.jpg [ 152.37 КБ | Просмотров: 15918 ]
Сообщение 18 янв 2015, 09:24
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
Просто я где-то прочитал про это и было отдельно выделено, что отключать надо полностью. Иначе VRAM остается занятой во время активного кадра.

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


Сообщение 20 янв 2015, 15:58
Профиль

Зарегистрирован:
19 окт 2013, 18:46
Сообщения: 18
Откуда: Россия, г. Златоуст
Еще нашел сигнал BLNK в схеме DATAREADER-а PPU.


Вложения:
DataReader001.png
DataReader001.png [ 2.07 МБ | Просмотров: 15848 ]
Сообщение 26 янв 2015, 02:41
Профиль
Аватара пользователя

Зарегистрирован:
23 июл 2007, 19:37
Сообщения: 401
Откуда: Мытищи
Люди, кто-нибудь может помочь в этом вопросе?:
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).

_________________
Nestopia 1.37/1.40 Fixed


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

Зарегистрирован:
23 июл 2007, 19:37
Сообщения: 401
Откуда: Мытищи
Декап FDS и VRC7: http://forums.nesdev.com/viewtopic.php?f=9&t=12260

_________________
Nestopia 1.37/1.40 Fixed


Сообщение 04 фев 2015, 07:12
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
Возвращаясь к напечатанному. EvGS подтвердил, что память ОАМ в PPU дендика построен на DRAM.

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


Показать сообщения за:  Поле сортировки  
Ответить на тему   [ Сообщений: 411 ]  На страницу Пред.  1 ... 16, 17, 18, 19, 20, 21  След.

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

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


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

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