Важная информация

User Tag List

Показано с 1 по 8 из 8

Тема: Тайминги DENDY

  1. #1
    Member Аватар для evgs
    Регистрация
    14.10.2008
    Адрес
    Мытищи
    Сообщений
    55
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    14
    Поблагодарили
    8 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Тайминги DENDY

    Теме больше 10 лет, назрела необходимость отредактировать верхний пост.
    Оригинальный (устаревший) пост 2008 года находится под спойлером:

    Скрытый текст

    Здравствуйте, форумчане!
    Надеюсь на ваш совет или помощь. Ситуация следующая:

    Около полугода назад я отправлял разработчику Nestopia звуковые тесты, записанные с приставок "dendy".
    (за эталон принималась "рассыпушная денди" на базе TA-03(6527p)

    http://www.bannister.org/forums/ubbt...9972#Post39972

    Еще давно, на старом форуме romov.net было обнаружено, что высота звука "денди" несколько отличается от pal nes.
    Также клоны Famicom (dendy,subor и др.) имеют кое-какие специфические особенности, связанные с DPCM-каналом.
    Подробное описание, вместе с тестами - на форуме эму-россии:

    http://forum.emu-russia.net/viewtopic.php?f=13&t=419

    HardWareMan предположил, что тактовая частота процессора Денди = 1.773447 Мгц
    (в связи с тем, что частота кварцевого резонатора = 26.601712 Мгц)
    Подтверждение этой гипотезе нашлось в журнале "Ремонт и обслуживание" #21. (подробнее на форуме)
    Но всё же мы пока не уверены в этом на 100%

    Информацию о частоте ЦП dendy, вместе со звуковыми тестами я отправил Мартину, разработчику Nestopia,
    и он добавил предварительную поддержку режима "dendy" в эмулятор.
    Высота звука, включая DPCM-канал, стала абсолютно соответствовать приставкам "денди".
    Многие игры, работающие на реальной денди и испорченные на PAL NES - стали хорошо работать в режиме "dendy".
    Но, к сожалению, некоторые игры работают пока с ошибками.
    Мартин сказал, что без знания точных таймингов денди, он не сможет добиться от нестопии полного соответствия этим фамиклонам.
    Фактически, Мартин предположил, "угадал" эти тайминги, но не совсем точно.
    Для дальнейшего улучшения "dendy-режима" Нестопии, необходимо вычисление таймингов денди.

    Сейчас я ищу человека, или специализированную группу (в РФ), которая смогла бы взяться за вычисление таймингов,
    а заодно и выявлению других, малоизвестных нам отличий денди от nes/famicom - в общем, разобрать этот фамиклон "по

    косточкам".

    Очень интересно узнать ваши мысли по этому поводу. Тяжелая ли это работа. Если да, то какова её примерная стоимость

    Очень уж хочется довести начатое до конца.
    [свернуть]


    Итак, за прошедшие годы было выяснено, что существуют 3 типа таймингов.

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


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

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

    - Тактовая частота кварцевого резонатора (XTAL) = 26.601712 МГц
    - Тактовая частота CPU (XTAL:15) = 1.7734475 МГц, что намного ближе к NTSC NES/Famicom, чем к оригинальной европейской PAL NES.
    - Тактовая частота PPU (XTAL:5) = 5.3203424 МГц, эквивалентна PAL NES.

    - Таким образом, соотношение тактовых частот CPU:PPU одинаково для NTSC и Dendy, и равняется 1:3
    Иными словами PPU рендерит 3 пиксела за 1 такт CPU. Для PAL NES это cоотношение равняется 1:3.2

    - Длина VBlank после NMI одинакова у NTSC и Dendy (20 сканлайнов), и отличается от PAL NES (70 сканлайнов).
    Полная длина VBlank эквивалентна PAL NES, но пострендер длинее на 50 дополнительных сканлайнов,
    соответственно NMI наступает ближе к концу VBlank (строка 291 вместо 241)
    Этот трюк позволяет сохранить длину VBlank после NMI в точности такой же, как у NTSC-систем.

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

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

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

    Список эмуляторов, поддерживающих Dendy-режим:
    - 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/Android)
    - nsfplay 2.3 (плеер NSF)
    F.A.Q:

    1. - Почему этот тайминг назван "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", как общее для всех приставок работающих в этом режиме, также не подходит.
    [свернуть]


    2. - Я запутался! На моей 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 высказали именно такую позицию.
    [свернуть]


    3. - Как мне проверить тайминг моей приставки?
    Как проверить 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 после NMI отличается от NTSC, эта игра вообще зависает.

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

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


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

    Скрытый текст

    Звукогенератор 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% будут звучать одинаково.
    [свернуть]


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

    Скрытый текст

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

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

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

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


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

    Скрытый текст

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

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

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

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

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


    Тема на emu-russia, emu-land, nedopc
    Topic on nesdev


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

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


    ENGLISH VERSION:

    Скрытый текст


    So it has been found over the years that there are 3 types of NES timing:

    1. Official NTSC NES and Famicom.
    2. Official PAL NES.
    3. Pirate PAL Famiclone, including Dendy.


    This timing is called Dendy mode in most of modern emulators due to historical reasons.
    It is an NTSC/PAL hybrid, a described below:
    - Crystal oscillator freq. (XTAL) = 26.601712 Mhz
    - CPU clock freq. (XTAL/15) = 1.7734475 MHz, which is much closer to NTSC NES/Famicom, than to original European PAL NES.
    - PPU clock freq. (XTAL/5) = 5.3203424 Mhz, which is same as European PAL NES.

    - So, CPU:PPU clock ratio is the same for NTSC and Dendy, and equal to 1:3
    In other words PPU renders 3 pixels per 1 CPU cycle. For the PAL NES this ratio is 1:3.2

    - The length of VBlank after NMI is the same for NTSC and Dendy (20 scanlines), and differs from PAL NES (70 scanlines).
    The full length of VBlank is as long as PAL's, but postrender period is longer (by 50 additional scanlines)
    so NMI occurs toward the end of VBlank (line 291 instead of 241).
    This trick makes VBlank length after NMI remain the same as NTSC, so any game using a CPU cycle-counting mapper working.

    - Noise and DMC logic (APU LUTs in emulators) are same as NTSC NES/Famicom
    It means that Dendy and similar PAL Famiclones were designed in order to provide the maximum compatibility to Japanese and American games of NTSC region, to the detriment of the official PAL NES library (not widely used in Asia). In other words Dendy allows running NTSC games at 50 FPS while maintaining compatibility with them, unlike official PAL NES.

    * If you try running NTSC games on an official PAL NES (bypassing the lockout chip), or on an emulator in PAL mode, they will also run at 50 FPS, but many of them will start artifacting, and some will even freeze.
    In addition, we will hear an imbalance between the pitch of the PSG and DMC channels (Sunsoft games with DPCM-bass for example).
    On dendy it sounds correct.
    All this happens due to the incompatibility of timings.

    Many thanks to HardWareMan, without whom these studies would not have become reality; as well as nesdev.com community and the authors of popular emulators, who willingly supported the initiative.

    The list of emulators supporting Dendy mode:
    - 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/Android)
    - nsfplay 2.3 (NSF player)
    F.A.Q:

    1. - Why is this timing called "Dendy"? Wouldn’t it be better to call it “PAL Famiclone”?
    After all, a bunch of different clones all over the world worked on these timings!

    The short answer is that it happened so due to historical reasons.

    When our emu-russia team began this research in 2007-2008, such details were not yet known. We started to investigate the differences between Dendy and Famicom and NES, and it turned out that we found a common timing that almost all PAL Famiclones work on.
    These consoles were used in Asia, the CIS countries and Eastern Europe under hundred of different brand names.

    The technically correct name for this timing:
    "PAL-Famiclone with NTSC-like timing" or "NTSC / PAL Hybrid", but it sounds cumbersome. Therefore, the foreign community officially agreed to call it "Dendy". Moreover, this name was already familiar to westerners. Marat Fayzullin and Alex Krasivsky, who were at the origin of NES emulation, previously mentioned it in their documents.

    This timing is called "Dendy" in nesdev.wiki documentation and in the source code of almost all emulators, thus renaming everything from scratch would be a huge mess.

    Moreover, it turned out that there were PAL Famiclones operating on the official PAL NES timings, but they were rare and were finally replaced by models with Dendy timing. Thus "PAL Famiclone" name can’t be used as common for all consoles operating in this mode.
    2. - I'm confused! It’s written PAL on my Dendy (Lifa / Kenga / Subor / MicroGenius / Pegasus, etc.)!
    Does that mean I have to use games for PAL region (Europe)?

    The short answer is no, it doesn't.

    Do not confuse hardware timing with video output standard. PAL NES and PAL Famiclones (including Dendy) output PAL signal (50Hz). Some clones output SECAM, but it doesn't matter in this context, and it can be equated with PAL.

    Due to hardware differences:
    - PAL NES must use PAL ROMs (Europe)
    - PAL Famiclones (with Dendy timing), Famicom and NTSC NES must use NTSC ROMs (USA, Japan)
    It’s described in detail up above why it’s so.
    Only few PAL Famiclones have the original PAL NES timing, but the chance of finding them is very low.

    An additional explanation can be made:
    The pirates had a task: to present the already existing Famicom NTSC games to the vast PAL region (countries of Asia, CIS, Eastern Europe, Latin America), where Nintendo did not officially release PAL NES.
    But you couldn’t simply make a clone of the PAL NES, since its timing wasn’t suitable for this task. It’s likely Nintendo intentionally broke its compatibility with existing NTSC games,
    making different Vblank length after NMI in PPU, greatly decreasing CPU frequency, and ruining multiple CPU:PPU clock ratio (1:3). So the game developers had to tweak most of them for European release.

    Therefore, the Taiwanese pirates invented their alternative PAL, compatible with NTSC timing. You didn’t need to tweak anything in this case. Existing NTSC games just worked, only slower, with virtually no glitches. In other words, pirates made more adequate PAL than Nintendo had made in PAL NES. At least that was the opinion of emulators’ developers and engineers at nesdev.
    3. - How can I check the timing of my console? How to check ROM in different operating modes using an emulator?
    If you have a flash cartridge your best bet is to download the test ROM 240pee (by Damian Yerrick).
    Timing (NTSC / PAL / Dendy) will be displayed in the lower right corner, and we can see additional details if we go to the "CPU Clock Speed" section.
    Here is a screenshot showing which values correspond to different modes. That’s what real hardware should show, as well as cycle-accurate emulators: Mesen, puNES, Nintendulator, BizHawk, Nestopia. FCEUX is less accurate in this test.

    If you don't have a flash cartridge you can take a game that is extremely sensitive to timing and evaluate its behavior visually.
    For example let’s take the NTSC version of Battletoads and Double Dragon (U):

    - There are no artifacts if playing on NTSC NES and Famicom.
    - If launched on PAL NES (do not forget to bypass the lockout chip protection) the game will show artifact on the start screen and on the character selection screen, and also freeze before the start of level 1. If you jump directly to the third level with some cheating, you will see a shifted/shaky background. This is shown here.
    - While running on PAL Famiclone (with Dendy timing), the start screen and the character select screen will occasionally shake simultaneously to the beat of the drum, as shown here.

    There should be no other bugs. This solidly proves the high compatibility of Famiclones, since a game will totally freeze if VBlank length after NMI is other than NTSC.
    The opposite example is also correct. European PAL version of Battletoads and Double Dragon (E) is also extremely sensitive to timing and will work fine only on the official PAL NES.
    You can check that yourself if interested.
    There are many other games for testing but the example above is illustrative enough, and it is quite sufficient for this F.A.Q.
    All of the procedures with Battletoads described above can be carried out using emulators.
    4. - What are the swapped duty cycles? I've heard something about it but I don't know what it is!
    The NES sound generator can create square waves, which pulse width modulation can be equal to 12%, 25%, 50% and 75%. This allows you to get 3 different tones of the wave. The fourth tone (75%) is mirrored copy of 25% tone and sounds the same.

    Some models of the chips used in the NTSC and PAL Famiclones had a hardware bug that the 25% and 50% tones were swapped. It’s not so bad, just "musical instruments" sound a little differently. This is especially well heard in Prince of Persia game.
    Many emulators including FCEUX, puNES and Mesen can simulate this bug. See "Swap Duty Cycles" option. Having a flash cartridge you can check if the duty cycles on your clone are swapped using this test.
    - "select" = 12%
    - "start" = 25%
    - "B" = 50%
    - "A" = 75%

    It's easy to check: If the chip has normal duty cycles then 25% and 75% sound the same.
    If the duty cycles in the chip are swapped then 50% and 75% will sound the same.
    5. - In my childhood Prince of Persia was freezing on my Famiclone, Jungle Book was very dark, and Lion King’s starting animation was completely green!
    Glitches all around! Do you really want to emulate this too?

    The short answer is no.

    Famiclones were based on many different chips from different manufacturers. If you try to count all revisions there were several dozen of these chips (separated CPU/PPU, single-crystal CPU/PPU with external RAM, fully NoACs). And almost each of them had its own specific bugs/flaws.
    Somewhere the duty cycles were swapped; somewhere there were obvious sound troubles (problems with the DMC, clicks of triangle channel); somewhere emphasis bits colored/darkened the picture more than necessary. And some of early UM6561 models even had serious issues with compatibility.

    But despite all the flaws of specific chips they were all united by a common timing. And our main goal was to separate the main point from the secondary: Emulate the timing to run NTSC games with high compatibility, but not to emulate bugs that interfere with normal operation and which differs from model to model.
    The only exception is the swapped duty cycles. It doesn’t negatively affect the operation of games, and it’s even can be considered as a feature that gives some Famiclone models its unique sound. This feature is strictly optional and is disabled everywhere by default.
    6. - And why do we need emulation of this pirate staff?
    NTSC games must be played on NTSC timing at 60FPS. Exactly how it’s intended to be by developers!

    The answer is that first of all it is a technical and historical interest, and only after that the notorious "nostalgia".

    We are primarily interested in emulating this unique timing. The nesdev.com community found it to be quite interesting, and technically even more adequate than in Nintendo’s official PAL NES.

    Mainly due to Dendy mode the emulators creators came up with the idea of implementing an "overclock" by adding additional scanlines to pre- and post-render (Goodbye, Contra Force slowdowns!).
    Besides there are around a dozen of pirate games that work correctly only on this hybrid timing.

    We would like to add that this mode was highly appreciated abroad. And now the developers add it to emulators as a mandatory standard along with the official NTSC and PAL NES timings; similar as they do with Pentagon timings for ZX-spectrum.
    emu-land and emu-russia topics

    Technical information:
    CYCLE REFERENCE CHART
    CPU Signals and Frequencies
    Detect TV System
    UMC UA6538 PPU die-shot

    [свернуть]
    Вложения Вложения
    Последний раз редактировалось evgs; 01.10.2020 в 18:07. Причина: global_update

  2. Эти 7 пользователя(ей) поблагодарили evgs за это полезное сообщение:

    and1981 (04.08.2022), Black Cat / Era CG (16.11.2019), creator (16.11.2019), HardWareMan (16.11.2019), OMu4 (11.12.2019), tiretrak (21.04.2020), Titus (16.11.2019)

  3. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  4. #2
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,550
    Спасибо Благодарностей отдано 
    1,213
    Спасибо Благодарностей получено 
    1,748
    Поблагодарили
    680 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    В свое время (в 1997 году) я писал эмулятор Денди для Амиги. За основу брал двухчиповую денди на 6527+6538. Вот, что у меня записано в тетрадке за тот год (на основе собственных исследований, разумееццО):

    Частота кварца: Z = 26.601712МГц
    Тактовая частота процессора: Z/15 = 17734447.46666...Гц
    Количество тактов в кадре: 35464
    Количество строк в кадре: 312 (видимых 240)
    Количество тактов в строке: 35464/312 = 113.6666...
    Частота кадров: Z/531960 = 50.00697796827Гц
    Базовая частота генератора звука: F = Z/240 = 110840.46666...Гц

  5. #3
    Master Аватар для volton
    Регистрация
    03.02.2006
    Адрес
    reepablik O0f Pilarus
    Сообщений
    731
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    28
    Поблагодарили
    22 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    titus,ты выкладывал куда свой эмуль амижный??? если да то дай плиз ссылку!!!
    -+ aMiGa +-

  6. #4
    Member Аватар для evgs
    Регистрация
    14.10.2008
    Адрес
    Мытищи
    Сообщений
    55
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    14
    Поблагодарили
    8 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Titus, спасибо!

    Есть небольшие вопросы:
    1) Как вычислялись эти константы
    2) Эти значения являются достаточными, или еще чего-то не хватает?

    В прошлый раз, когда я писал письмо Мартину,
    я указал лишь то, что было известно на тот момент:
    Частота кварца = 26.601712 МГц
    Тактовая частота процессора = 1.773447 Мгц

    Ответ был таков:
    Thanks for the info. I've changed the code to use the PAL clock as per
    HardWareMan's suggestion. I've also adjusted the VBLANK and VSLEEP timing to
    something more Dendy like which should fix most of the game glitches you've
    reported.

    Но некоторые "глюки" все-таки остались.
    Видимо тайминги VBLANK и VSLEEP были угаданы не совсем точно?

    Просветите, пожалуйста
    Последний раз редактировалось evgs; 26.12.2008 в 18:04.

  7. #5
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,550
    Спасибо Благодарностей отдано 
    1,213
    Спасибо Благодарностей получено 
    1,748
    Поблагодарили
    680 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от volton Посмотреть сообщение
    titus,ты выкладывал куда свой эмуль амижный??? если да то дай плиз ссылку!!!
    Нет, не выкладывал, т.к. не стал доделывать эмулятор до конца. Как только на нем стало возможно пройти мои любимые игрушки (ностальгия детства), я проэкт забросил.

    Цитата Сообщение от Flamer Посмотреть сообщение
    Titus, спасибо!

    Есть небольшие вопросы:
    1) Как вычислялись эти константы
    2) Эти значения являются достаточными, или еще чего-то не хватает?

    В прошлый раз, когда я писал письмо Мартину,
    я указал лишь то, что было известно на тот момент:
    Частота кварца = 26.601712 МГц
    Тактовая частота процессора = 1.773447 Мгц
    Как вычислялись, не помню уже. Писал специальные тесты, и на базе них вычислял. Для меня эти значения были достаточными.

  8. #6
    Member Аватар для evgs
    Регистрация
    14.10.2008
    Адрес
    Мытищи
    Сообщений
    55
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    14
    Поблагодарили
    8 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Тактовая частота процессора: Z/15 = 17734447.46666...Гц
    Только заметил, что одна четверка лишняя. Проц 17.7 Мгц получается )
    Z/15 = 1773447.46666...Гц

    А как вычислить необходимые значения VBLANK и VSLEEP ?
    Последний раз редактировалось evgs; 27.12.2008 в 02:13.

  9. #7
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,550
    Спасибо Благодарностей отдано 
    1,213
    Спасибо Благодарностей получено 
    1,748
    Поблагодарили
    680 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Flamer Посмотреть сообщение
    А как вычислить необходимые значения VBLANK и VSLEEP ?
    Если под VBLANK имеется ввиду количество строк, когда луч погашен, то логично, что это 312-240=72.
    А что такое VSLEEP - я вообще не в курсе

  10. #8
    Member Аватар для evgs
    Регистрация
    14.10.2008
    Адрес
    Мытищи
    Сообщений
    55
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    14
    Поблагодарили
    8 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    За прошедшее время HardWareMan узнал все необходимые тайминги с помощью осциллографа.
    Martin Freij же забросил свой эмулятор (nestopia).
    Quietust, автор очень точного nintendulator'а по моей просьбе добавил поддержку специфики денди,
    основываясь на исследованиях HWM'а.

    Эмулятор здесь:
    http://www.qmtpro.com/~nes/nintendul...in_unicode.zip (Win2K/XP/Vista/7)
    http://www.qmtpro.com/~nes/nintendul...r_bin_ansi.zip (Win9x)
    http://www.qmtpro.com/~nes/nintendul...ulator_src.zip (Source)
    http://www.qmtpro.com/~nes/nintendul...appers_src.zip (Mapper Source)

    Nintendulator очень аскетичен, но крайне хорош.
    У него нет популярных "плюшек", наподобие записи звука, видеофильтров, турбо-контроллеров и т.д.
    Зато он очень точно эмулирует железо, концепция и философия близка к bsnes.
    Nintendulator is an open source Win32 NES emulator written in C++. The original goal was to emulate the NES down to its hardware quirks; though it's fallen behind over the years, recent builds have caught up once again and can emulate certain behaviors most other emulators neglect to handle. However, this emulation precision comes at a price - a 1500MHz (estimated) or faster CPU is required to emulate at full speed.
    Если нужен фуллскрин (а он там плохой: 640х480 без интерполяции), лучше растянуть окошко на весь экран.
    Чтобы после загрузки рома постоянно не выполнять команду Run, надо поставить галочку на File - Auto-Run.

    Денди-режим включается так: PPU - Mode - Hybrid.
    Ром, естественно, должен быть для NTSC-консоли, то есть (U) или (J) региона.

    Также делюсь с вами файлом палитры, dwedit_pal.
    Это самая аутентичная, похожая на денди палитра, из всех виденных мною.
    Её "сграбил" Kinopio (буржуй) с выхода PAL NES:
    Kinopio: I wrote an NES program that shows all 64 colors and then ran it (powerpak) on the consoles I own (pal, ntsc, famicom av). I captured the result to PC with my philips video card and then used another program I created to get a 192 byte pal-file from the captured image.
    Подробности здесь
    Вложения Вложения
    Последний раз редактировалось evgs; 02.11.2011 в 00:02.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Документация к Dendy
    от UberAlice в разделе Nintendo
    Ответов: 9
    Последнее: 19.03.2008, 14:02
  2. переходник: NES >>> DENDY
    от KingArthur в разделе Nintendo
    Ответов: 2
    Последнее: 06.11.2007, 18:24
  3. написание музыки на Dendy.
    от s1moncpu в разделе Nintendo
    Ответов: 27
    Последнее: 25.05.2007, 05:34
  4. написание музыки на Dendy.
    от s1moncpu в разделе Музыка
    Ответов: 2
    Последнее: 16.05.2007, 10:59
  5. Вопрос по Dendy
    от Arigato в разделе Nintendo
    Ответов: 7
    Последнее: 23.05.2006, 19:00

Ваши права

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