nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 13 Jul 2020 03:29



Reply to topic  [ 6 posts ] 
Тайминги DENDY 
Author Message
Junior
User avatar

Joined: 13 Oct 2008 10:38
Posts: 3
Location: 89.169.159.125
Reply with quote
Итак, за прошедшие годы было выяснено, что существуют 3 типа таймингов.

1. Официальный NTSC NES и Famicom.
2. Официальный PAL NES.
3. Пиратский PAL Famiclone, к которому относятся и наши Dendy.


В большинстве современных эмуляторов этот тайминг именуется режимом Dendy
в силу исторических причин (так сложилось).

Он представляет из себя гибрид NTSC/PAL, а именно:

Code:
- тактовая частота CPU = 1.7734475 МГц, что намного ближе к NTSC NES/Famicom, чем к оригинальной европейской PAL NES.
- соотношение тактовых частот CPU:PPU одинаково для NTSC и Dendy, и равняется 1:3
  иными словами PPU рендерит 3 пиксела за 1 такт CPU. Для PAL NES это cоотношение равняется 1:3.2
- Длина VBlank одинакова у NTSC и Dendy (20 сканлайнов), и отличается от PAL NES (70 сканлайнов).
  Для вывода корректного PAL-сигнала и компенсации различий в длине VBlank используются дополнительные 50 сканлайнов в пострендере.

Это означает, что Dendy и им подобные PAL-фамиклоны были разработаны с целью обеспечения максимальной совместимости
с японскими и американскими играми NTSC-региона, в ущерб официальной библиотеке PAL NES (мало распространенной в Азии)
Иными словами, Dendy позволяет запускать NTSC-игры со скоростью 50к/с (PAL), сохраняя с ними совместимость, в отличие от PAL NES.

* Если попытаться запустить NTSC игры на официальной PAL NES (в обход lockout-чипа), или на эмуляторе в режиме PAL,
они также будут работать со скоростью 50к/с, но многие начнут артефачить, а некоторые даже зависать.
Ко всему прочему мы будем слышать дисбаланс между высотой тона PSG-каналов (squares, triangle, noise) и DMC (DPCM)
Всё это происходит из-за несовместимости таймингов.

Благодарю HardWareMan, без которого эти исследования не воплотились бы в реальность,
а также комьюнити nesdev.com и авторов популярных эмуляторов, охотно поддержавших инициативу.

Список эмуляторов, поддерживающих Dendy-режим:
Code:
- RetroArch [libretro] (nestopia, fceumm, mesen)
- Nestopia 1.40, Nestopia UE
- FCEUX 2.2.3
- Nintendulator
- Mesen
- puNES
- BizHawk
- My NES
- Nintaco
- RetroCopy
- NESICIDE
- nes.emu (iOS/Andriod)
- nsfplay 2.3 (плеер NSF)


F.A.Q:

- Почему этот тайминг назван "Dendy"? Не лучше ли было назвать его PAL Famiclone?
Ведь на нём работала куча самых разных клонов по всему миру.

 
Краткий ответ - так сложилось по историческим причинам.

Когда наша команда на emu-russia начинала эти исследования в 2007-2008 годах, эти подробности еще не были известны.
Мы начали исследовать отличия Dendy от Famicom и NES, а вышло так, что нашли общий тайминг, на котором работают почти все PAL-фамиклоны.
Эти приставки были распространены в Азии, странах СНГ и восточной Европы под сотней разных марок.

Технически-грамотное название этого тайминга:
"PAL-Famiclone with NTSC-like timing" или "NTSC/PAL Hybrid", но это звучит громоздко. Поэтому зарубежное сообщество официально согласилось называть его "Dendy".
К тому же это название было уже знакомо западным людям.
Marat Fayzullin и Alex Krasivsky, стоявшие у истоков эмуляции NES, ранее упоминали его в своих документах.

В документации на nesdev.wiki и в исходных кодах практически всех эмуляторов этот тайминг назван "Dendy", и переименование всего с нуля приведет к огромной путанице.

Более того, выяснилось, что существовали PAL-фамиклоны, работающие на таймингах официальной PAL NES, но они были малораспространенными и впоследствии были вытеснены моделями, имеющими Dendy-тайминг.
Поэтому название "PAL Famiclone", как общее для всех приставок работающих в этом режиме, также не подходит.


- Я запутался. На моей Dendy (Lifa/Kenga/Subor/MicroGenius/Pegasus и т.д.) написано PAL.
Значит ли это, что я должен использовать игры для PAL-региона (Europe)?

 
Краткий ответ - нет, не значит.

Не путайте тайминг железа со стандартом видеовыхода.
PAL NES и PAL-фамиклоны (включая Dendy) выдают PAL-сигнал (50Гц).
Некоторые клоны выводят SECAM, но в данном контексте это не имеет значения, и его можно приравнять к PAL.

Исходя из аппаратных различий:
- PAL NES должна использовать PAL-ромы (Europe)
- PAL-фамиклоны (с Dendy-таймингом), Famicom и NTSC NES должны использовать NTSC-ромы (USA, Japan)
Почему так - подробно описано в шапке темы.
И лишь немногие PAL-фамиклоны имеют оригинальный тайминг PAL NES, но шанс найти их вживую очень невелик.

Можно сделать дополнительное пояснение:
У пиратов стояла задача - распространить уже существующие фамикомовские NTSC-игры на обширный
PAL-регион (страны Азии, СНГ, Восточной Европы, Латинской Америки), где Nintendo не выпускала PAL NES официально.

Но просто сделать клон PAL NES было нельзя, так как её тайминг не подходил для этой задачи.
Nintendo видимо специально сломала в нём совместимость с уже существующими NTSC-играми,
сделав другой Vblank в PPU, сильно занизив частоту СPU, и разрушив кратное соотношение частот CPU:PPU (1:3)
Так что разработчикам игр пришлось хорошенько твикать большинство из них для выпуска в Европе.

Поэтому тайваньские пираты придумали свой альтернативный PAL, совместимый с таймингами NTSC.
И в таком случае не требовалось ничего перевыпускать.
Уже существующие NTSC-игры просто работали, только медленнее, практически не имея при этом глюков.
Иными словами, пираты сделали более грамотный PAL, чем это сделала Nintendo в PAL NES.
По крайней мере, разработчики эмуляторов и инженеры с nesdev высказали именно такую позицию.


- Как мне проверить тайминг моей приставки?
Как проверить ROM в разных режимах работы с помощью эмулятора?

 
Если у вас есть флеш-картридж, лучше всего скачать тестовый ROM 240pee (от Damian Yerrick)
В правом нижем углу будет отображаться тайминг (NTSC/PAL/Dendy), а если зайти в раздел "CPU Clock Speed"
мы увидим дополнительные подробности.
Привожу скриншот, где показано, какие значения соответствуют разным режимам.
Именно их и должно показывать реальное железо, а также тактово-точные эмуляторы:
Mesen, puNES, Nintendulator, BizHawk, Nestopia. FCEUX немного врёт в этом синтетическом тесте.

Если флеш-картриджа нет, можно взять игру, предельно чувствительную к таймингам, и оценить её поведение визуально.
В качестве наглядного примера возьмём NTSC-версию Battletoads and Double Dragon (U).

- при запуске на NTSC NES и Famicom она будет работать без артефактов.
- при запуске на PAL NES (не забудьте обойти защиту lockout-чипа)
игра будет артефачить на стартовом экране и на экране выбора персонажей,
а также зависать перед началом 1 уровня. Если с помощью чита перейти сразу на третий уровень,
мы увидим смещённый/трясущийся бэкграунд. Это показано здесь.
- при зауске на PAL-Фамиклоне (c Dendy-таймингом) стартовый экран и
экран выбора персонажей будет изредка дёргаться в такт удару барабана, как показано здесь.
Других глюков не должно наблюдаться. Это однозначно доказывает высокую совместимость фамиклонов,
т.к. при длине VBlank, отличной от NTSC, игра вообще зависает.

Верен и обратный пример. Европейская PAL-версия Battletoads and Double Dragon (E)
также является крайне чувствительной к таймингам, и будет нормально работать только
на официальной PAL NES. Желающие могут проверить это самостоятельно.

Существует множество других игр для тестов, но этот пример весьма нагляден,
и его вполне достаточно в рамках данного F.A.Q.
Все вышеперечисленные процедуры с жабами можно провести используя эмуляторы.


- Что такое перепутанная скважность? Я что-то слышал о ней, но не знаю, что это.

 
Звукогенератор NES умеет генерировать прямоугольные волны (square waves),
модуляция ширины импульса которых может принимать значения 12%, 25%, 50% и 75%.
Это позволяет получить 3 разных тембра волны.
Четвертый тембр (75%) является отзеркаливанием 25%, и звучит одинаково с ним.

Некоторые модели чипов, использовавшихся в NTSC- и PAL-фамиклонах имели аппаратный баг,
заключавшийся в том, что тембры 25% и 50% были перепутаны.
Ничего страшного в этом нет, просто "муз.инструменты" звучат чуть иначе.
Особенно хорошо это слышно в игре Prince of Persia.

Многие эмуляторы, включая FCEUX, puNES и Mesen, умеют имитировать этот баг.
См. опцию "Swap Duty Cycles".

Если у вас есть флеш-картиридж, вы можете узнать, перепутана ли скважность на вашем клоне
используя этот тест.

- "select" = 12%
- "start" = 25%
- "B" = 50%
- "A" = 75%

Проверяется просто: если чип имеет нормальную скважность, то 25% и 75% звучат одинаково.
Если скважность в чипе перепутана - тогда 50% и 75% будут звучать одинаково.


- Я помню, в детстве на моём фамиклоне "Принц Персии" зависал, "Jungle Book" был очень тёмный,
а заставка "Lion King" вообще была зеленая. Сплошные глюки. Неужели и это нужно эмулировать?

 
Краткий ответ - нет.

Фамиклоны основывались на множестве различных чипов от разных производителей.
Этих чипов ("рассыпушных", однокристальных) наберется несколько десятков, если считать все их ревизии.
И почти каждый из них имел свои специфические баги/недоработки. Где-то была перепутана скважность,
где-то наблюдались явные проблемы со звуком (проблемы с DMC, щелчки triangle-канала),
где-то биты насыщения цвета (emphasis bits) окрашивали/затемняли картинку сильнее, чем нужно.
А в некоторых ранних моделях UM6561 имелись даже явные проблемы с совместимостью.

Но несмотря на все недостатки конкретных чипов, всех их объединял общий тайминг.
И нашей основной задачей являлось отделить главное от второстепенного:
Заэмулировать тайминг, позволяющий запускать NTSC-игры с высокой совместимостью,
но не эмулировать баги, мешающие нормальной работе, да к тому же разные от модели к модели.

Исключением является только перепутанная скважность. Она не влияет отрицательно на работу игр,
и даже больше похожа на "фичу", придающую некоторым моделям фамиклонов свой "уникальный" звук.
Эта функция - строго опциональна, и выключена везде по умолчанию.


- Зачем вообще нужна эмуляция этой пиратчины?
NTSC-игры должны играться на NTSC-тайминге со скоростью 60FPS.
Именно так, как это было задумано разработчиками.

 
Ответ - это в первую очередь, технический и исторический интерес,
а затем уже пресловутая "ностальгия".

Нас, в первую очередь, интересует эмуляция этого уникального тайминга.
Сообщество nesdev.com признало его весьма любопытным, и даже технически более грамотным,
чем сделала Nintendo в официальной версии PAL NES.
Во многом благодаря режиму "Dendy" авторы эмуляторов додумались до идеи реализации
"оверклока" методом добавления дополнительных сканлайнов
в пре- и пост-рендер.

Также существует около десятка пиратских игр, которые корректно работают исключительно на
этом гибридном тайминге.

Никто силком не заставляет использовать Dendy-режим лишь потому, что подавляющая часть населения форума родом из СНГ.
А значит, играла в детстве на PAL-фамиклонах на замедленной скорости.
Пользоваться им, или не пользоваться - каждый решает для себя сам.

От себя хотим добавить, что нам кажется весьма странным отсутствие даже минимального интереса к этому режиму в русскоязычном сегменте интернета,
в то время как за рубежом его весьма оценили.
И теперь разработчики добавляют его в эмуляторы как обязательный стандарт, идущий наравне с официальными таймингами NTSC и PAL NES.


Тема на emu-russia
Тема на zx-pk
Тема на emu-land

Подробная техническая информация:

CYCLE REFERENCE CHART - nesdev wiki
CPU Signals and Frequencies - nesdev wiki
UMC UA6538 PPU die-shot


Attachments:
tech_info.zip [224.21 KiB]
Downloaded 11 times


Last edited by evgs on 09 Jun 2020 01:46, edited 9 times in total.

25 Dec 2008 12:50
Profile
Banned
User avatar

Joined: 20 Mar 2005 14:41
Posts: 2146
Location: От туда
Reply with quote
Post 
Что-то мне подсказывает, что ты ошибся форумом...


25 Dec 2008 21:01
Profile
Junior
User avatar

Joined: 13 Oct 2008 10:38
Posts: 3
Location: 89.169.159.125
Reply with quote
Post 
Привет, HardWareMan :idea:
Я понимаю, тут люди другими проектами заняты. Но попытка - не пытка...

Уже кое-что удалось выяснить:
http://www.zx.pk.ru/showthread.php?t=9117

Получается, ты правильно догадался про частоту ЦП


26 Dec 2008 00:19
Profile
Banned
User avatar

Joined: 20 Mar 2005 14:41
Posts: 2146
Location: От туда
Reply with quote
Post 
Хых. Интуиция, брат, сильная штука....


26 Dec 2008 04:31
Profile
Junior
User avatar

Joined: 13 Oct 2008 10:38
Posts: 3
Location: 89.169.159.125
Reply with quote
Тайминги найдены. Шапка топика обновлена спустя 12 лет.
Возможно, эта информация будет кому-то полезна.


08 Jun 2020 15:54
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18686
Location: Silicon Valley
Reply with quote
Flamer wrote:
Тайминги найдены. Шапка топика обновлена спустя 12 лет.
Возможно, эта информация будет кому-то полезна.

Вау круто! :kruto:

P.S. По просьбе топик-стартера его ник был изменён на evgs

_________________
:eugeek: https://twitter.com/Shaos1973


08 Jun 2020 15:57
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 6 posts ] 

Who is online

Users browsing this forum: No registered users and 4 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.