Сообщения без ответов | Активные темы Текущее время: 27 дек 2024, 04:28



Ответить на тему  [ Сообщений: 230 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8 ... 12  След.
 Отличия Dendy и других клонов от оригинальных NES/Famicom 
Автор Сообщение
Сообщение 17 май 2009, 15:27
Профиль
Аватара пользователя

Зарегистрирован:
23 июл 2007, 22:38
Сообщения: 84
Откуда: С-Пб
То есть если я буду менять данные по $2001, то будет меняться яркость экрана?

_________________
Дао, выраженное словами, не есть истинное Дао


Сообщение 17 май 2009, 17:24
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
22 июл 2007, 11:16
Сообщения: 787
старшие три бита

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


Сообщение 17 май 2009, 18:38
Профиль
Аватара пользователя

Зарегистрирован:
23 июл 2007, 19:37
Сообщения: 401
Откуда: Мытищи
Ну а все-таки, СаН4е3, что думаешь по поводу моего предыдущего поста? В нестопии что-то неверно помимо таймингов?

_________________
Nestopia 1.37/1.40 Fixed


Сообщение 17 май 2009, 19:26
Профиль ICQ WWW
Аватара пользователя

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

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


Сообщение 07 окт 2009, 19:40
Профиль
Аватара пользователя

Зарегистрирован:
23 июл 2007, 19:37
Сообщения: 401
Откуда: Мытищи
На данный момент поступил следующим образом: скомпилировал два exe'шника на основе nestopia140src с разными таймингами.
Nestopia20 [VINT=20/VSLEEP=51] - Подходит для большинства игр, в т.ч. Battletoads/BtDD. Это наиболее "дендиподобный" режим.
Nestopia70 [VINT=70/VSLEEP=1] - Для ромов, испорченных на nestopia20 (James Bond Jr, Power Blade2, Aladdin 199x Unl и нек. др.)
Довольно удобно пользоваться ими из одной папки, не нужно перенастраивать конфигурацию под каждый билд.
При таком варианте и ромы работают хорошо, и высота звукового тона (включая DPCM-канал) аналогична "Денди".

исправление: громкость triangle-канала для денди режима по умолчанию равна стандартным "85" единицам.
Включается режим "денди" так:
1) options - preferences - favored system: [dendy].
2) Machine - Region: [PAL] или [Auto].
3) Закрыть и снова запустить эмулятор.

Обновление 05.10.2009: Скомпилировал в родной среде VS2005 SP1, со стандартными библиотеками DirectX SDK - summer 2004, как было у Мартина.


Вложения:
NST1.40_x2_VS2005.7z [1.03 МБ]
Скачиваний: 587

_________________
Nestopia 1.37/1.40 Fixed
Сообщение 09 окт 2009, 20:24
Профиль
Аватара пользователя

Зарегистрирован:
30 сен 2009, 15:32
Сообщения: 258
Скажите пожалуйста,а есть ли на сайте аналогичная тема,только посвященная mеga drive?


Сообщение 10 окт 2009, 12:29
Профиль
Аватара пользователя

Зарегистрирован:
23 июл 2007, 19:37
Сообщения: 401
Откуда: Мытищи
Нет. С клонами MD вроде бы нет таких проблем.

_________________
Nestopia 1.37/1.40 Fixed


Сообщение 10 окт 2009, 21:20
Профиль
Аватара пользователя

Зарегистрирован:
30 сен 2009, 15:32
Сообщения: 258
Ну не знаю,мне почему то не нравиться то ,что я слышу.Отчетливо это проявляется в Phantasy star 2.Может посоветуете какие-нибудь настройки для Gens или Fusion?


Сообщение 11 окт 2009, 01:12
Профиль
Аватара пользователя

Зарегистрирован:
23 июл 2007, 19:37
Сообщения: 401
Откуда: Мытищи
Единственное, что могу посоветовать - включить режим Super HQ в эмуляторах Fusion или Regen, т.к. они наиболее точные в плане эмуляции YM2612. Но и они, говорят, не идеальны. Мне не с чем сравнивать, я не слышал оригинального YM2612. А вообще это вопрос для другой ветки.

_________________
Nestopia 1.37/1.40 Fixed


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

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
Regen, ИМХО, наиболее точен касаемо YM2612, а вот касаемо эмуляции - они оба примерно одинаковы.

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


Сообщение 12 окт 2009, 21:26
Профиль
Аватара пользователя

Зарегистрирован:
30 сен 2009, 15:32
Сообщения: 258
Хорошо,может тогда подскажете где ветка находиться с обсуждением эмуляции Mega Drive? Для NES я уже хорошие настройки подобрал.


Сообщение 12 окт 2009, 21:59
Профиль
Аватара пользователя

Зарегистрирован:
23 июл 2007, 19:37
Сообщения: 401
Откуда: Мытищи
тут можно создать:
viewforum.php?f=12

_________________
Nestopia 1.37/1.40 Fixed


Сообщение 29 окт 2009, 15:34
Профиль
Аватара пользователя

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

Многие хотят, чтобы вывод эмулятора соответствовал тому, что было в свое время на телевизоре. Используют для этого всякие сканлайнеры и блюры, но это все не совсем то. Все дело в том, что мы имели тогда. Обычно - это ЧБ телевизор. Или цветной советский ящик, в особо кошерном случае - с установленным декодером PAL. Так вот, речь дальше пойдет об имитации вывода композита PAL на некачественном телике. Это все применимо и к NTSC, но с некоторыми изменениями в логике согласно стандарту NTSC.

Немного теории. Дендик формирует чистый композит с цветовой кодировкой PAL. Для начала, я объясню, как это работает. Кодирование цвета в PAL использует цветовую модель YUV (как и NTSC, на основе которого он и сделан). Это означает, что изначальный RGB сигнал матрицируется в один яркостный Y и 2 цветоразностных U и V (в телевизорах обозначены как R-Y и B-Y). Такая схема дает обратную совместимость с ЧБ телевизором, т.к. яркость Y есть обычный яркостный черно-белый сигнал изображения. Поэтому, яркость передается так же, как и ЧБ сигнал. Другое дело - цвет. Для полного (если придираться - почти полного) восстановления цвета в картинке, требуется всего 2 цветоразностных сигнала. В системе PAL, эти сигналы модулируют по амплитуде цветовую поднесущую (4,43МГц). При этом, R-Y модулирует синус этой частоты, а B-Y - косинус (т.е. сдвинут на 90 градусов). Если представить упрощенно, то это выглядит так:
Код:
     -   -
R-Y - - - - -
       -   -
    -   -   -
B-Y  - - - -
      -   -

После модуляции этой частоты по амплитуде, оба результата складываются и получается один сигнал:
Код:
    _-    _-
RES   -  _
       -_

Видно, что частота не изменилась, а фаза будет зависеть от уровней модуляции R-Y и B-Y. В добавок к этому, каждую строку фаза частоты R-Y меняется на 180 градусов (инверсия). Получается, что каждую четную строку модулированный сигнал R-Y имеет фазу 0 градусов, а каждую нечетную - 180 градусов. Далее, результирующая частота складывается с сигналом яркости. И ее видно на ЧБ телевизоре (его яркостная четкость выше) в виде сетки на окрашенных частях экрана. Причем, из-за того, что при модуляции фаза сигнала меняется, то эта сетка имеет наклон, который изменяется в зависимости от цветового оттенка.

Теперь, что касается самого изображения, как мы его видели и помним. Дело в том, что пропорции дендика не 1х1. Экран телевизора имеет отношение 4:3 (4/3=1,33333~), а соотношение сторон у дендика: 256/240=1,06666~. 256 точек по горизонтали растягиваются на весь участок экрана. Частота строк у телевизора не меняется. При ее стандартной частоте 15625Гц отображаемое поле имеет 48 микросекунд времени. Для 256 точек дендика частота пикселей будет примерно 1/(48/256)=1/0,1875=5,333~МГц (более точно эту частоту мы уже выводили, исходя из тактовой 26,60МГц, где-то тут на форуме). Частота поднесущей PAL - 4,43МГц. Поэтому, на всем экране в 48мкс поместится примерно 48/(1/4,43)=48/0,225=212,64 периода (или чередований белой и черной точек). Если умножить число 212 на 4, то мы получаем рабочее разрешение 848х240 точек. Почему на 4? Чтобы сделать ровной маску сетки поднесущей. 4 пикселя подряд дают 4 фазы: 0, 90, 180 и 270. 0 и 180 будут содержать модуляцию R-Y, а 90 и 270 - B-Y. Это разрешение не кратно 256 точкам дендика, поэтому я решил сжульничать и заюзать меньшее рабочее разрешение: 256х3=768 точек в ширину. Это позволит применить целочисленную арифметику, что ускорит обработку.
Сначала создаем массивы масок поднесущей и заполняем их требуемой фазой:
Код:
for x:=0 to 213 do begin
         SinNegCarrier[x*4]:=0.9;
         SinNegCarrier[x*4+1]:=0.9;
         SinNegCarrier[x*4+2]:=0;
         SinNegCarrier[x*4+3]:=0;
         SinPosCarrier[x*4]:=0;
         SinPosCarrier[x*4+1]:=0;
         SinPosCarrier[x*4+2]:=0.9;
         SinPosCarrier[x*4+3]:=0.9;
         CosCarrier[x*4]:=0;
         CosCarrier[x*4+1]:=0.9;
         CosCarrier[x*4+2]:=0.9;
         CosCarrier[x*4+3]:=0;
         Phase:=Phase+PixelPhase;
         end;

Массивы содержат "вес" будущей яркости, значение 0,9 выбрано просто для надежности, чтобы не получить переполнение. Далее, берем исходный RGB кадр:
Изображение
Из него, получаем YUV модель:
Код:
{Y = 0.299*R + 0.587*G + 0.114*B
V = 0.615*R - 0.515*G - 0.100*B
U = -0.147*R - 0.289*G + 0.437*B}
LY:=Round(0.299*R+0.587*G+0.114*B);
RY:=Round(0.615*R-0.515*G-0.1*B)+128; U и V - числа двуполярные (-128...127), поэтому смещаем их к центру
BY:=Round(0.437*B-0.289*G-0.147*R)+128;

Все исходные числа целые (байты к тому же), поэтому можно один раз просчитать таблицу и делать просто табличный лукап. В итоге, к обычному ЧБ изображению с полутонами мы получаем 2 растра цветоразностных сигналов:
Изображение
Изображение
Теперь, у нас есть информация о цвете. Мы можем сформировать реальную маску поднесущей:
Код:
if (RY=128) and (BY=128) then MC:=1 //Кода цвета нет - ничего не меняем, особенности дендика, смотреть ниже
   else if (y and 1)=0 then MC:=SinPosCarrier[x]*(RY/255)+CosCarrier[x]*(BY/255)
           else MC:=SinNegCarrier[x]*(RY/255)+CosCarrier[x]*(BY/255);

В результате, мы имеем в MC текущее значение удельного "веса" яркости в данной точке экрана, согласно модуляции PAL. Это будет выглядеть примерно так:
Изображение
Видно, что присутствуют только окрашенные области. Промодулируем сигнал яркости Y и получим ЧБ ПТЦС. 8-)
Код:
MR:=LY*MC;
MG:=LY*MC;
MB:=LY*MC;

Изображение
На этом эмуляцию ЧБ телика можно закончить. Но мы идем дальше. Теперь, из модели YUV получаем обратно RGB и модулируем поднесущей (хотя, теоретически можно модулировать сразу исходный RGB на маску поднесущей, но тогда цвета станут несколько неестественными, однако это все дело вкуса. Просто, в системе преобразование RGB=>YUV=>RGB происходит все равно, к тому же, полоса сигналов R-Y и B-Y значительно уже, соответственно появляются дополнительные искажения):
Код:
{R=y+1.14*(v-128)
G=y-0.396*(u-128)-0.581*(v-128)
B=y+2.029*(u-128)}
NR:=Round((LY+1.14*((RY-128)*0.4))*MC);
NG:=Round((LY-0.396*((BY-128)*0.4)-0.581*((RY-128)*0.4))*MC);
NB:=Round((LY+2.029*((BY-128)*0.4))*MC);

И получаем следующую картинку (насыщенность цвета несколько снижена, играя с константой 0.4 в формуле можно ее регулировать):
Изображение
Результирующую картинку разрешением 768х240 уже масштабируем до требуемой (с пропорцией 4:3, например 640х480) битблиттингом с прорисовкой полутонов, что даст нам конечный результат. Можно еще в довесок посканлайнить и добавить немного блюра.

Ну как вам?

PS Несколько замечаний.
Дело в том, что PPU дендика никогда не формирует RGB (именно дендика, PPU с RGB существует, но не в дендике). Поэтому, сам PAL формируется в нем аппаратно сразу. Так же известно, что в нем формируется 12 разных готовых фаз поднесущей, которые потом модулируются по яркости в 4 цвета одного оттенка. Поэтому, можно заготовить сразу все эти 12 патерна и куча вычислений сразу отпадает за ненадобностью. Тёрки про палитру велись на NESDev'е.
По идее, частота поднесущей не привязана к развертке и поэтому сетка должна всегда смещаться. Плагин blarrg'а имитирует смещение, однако конкретно в дендике частота цветовой поднесущей конкретно привязана к развертке и поэтому сетка не смещается (в NTSC версии по идее то же не должна, но смещение несколько повышает четкость картинки).


Вложения:
nes17nn.gif
nes17nn.gif [ 239.54 КБ | Просмотров: 18615 ]

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


Последний раз редактировалось HardWareMan 29 окт 2009, 15:59, всего редактировалось 3 раз(а).

Сообщение 29 окт 2009, 15:44
Профиль

Зарегистрирован:
11 дек 2007, 09:10
Сообщения: 3
:shock:
Однако, многа букав осилил, прям просто даж от обработанной картинки повеяло настальджи :yes:


Сообщение 29 окт 2009, 18:59
Профиль
Аватара пользователя

Зарегистрирован:
23 июл 2007, 19:37
Сообщения: 401
Откуда: Мытищи
HardWareMan, превосходная вещь. Ты молодец, спасибо!
Хотелось бы узнать - как и куда планируешь применить этот код видеофильтра?
Это часть проекта по "расшифровке" дендика? Если да, расскажи пожалуйста, как продвигаются дела на этом фронте.

Покажи эту работу на nesdev'e, однозначно.

_________________
Nestopia 1.37/1.40 Fixed


Сообщение 29 окт 2009, 22:41
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
EvGS писал(а):
HardWareMan, превосходная вещь. Ты молодец, спасибо!
Хотелось бы узнать - как и куда планируешь применить этот код видеофильтра?
Это часть проекта по "расшифровке" дендика? Если да, расскажи пожалуйста, как продвигаются дела на этом фронте.

Покажи эту работу на nesdev'e, однозначно.

Ломает. Покажи сам, если не лень, а я потом почитаю. Писать ничего не собираюсь - это удел эмуляторописателей.

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


Сообщение 09 ноя 2009, 01:55
Профиль
Аватара пользователя

Зарегистрирован:
23 июл 2007, 19:37
Сообщения: 401
Откуда: Мытищи
Немного оффтопа, но к теме.
Я выяснил, что Мартин, оказывается в прошлом (1997-1999 г.) известный трекерщик и его работы высоко ценятся:

Last Sunset ("Бриллиантовая композиция" по рейтингу Modarchive)
Virtual Humanity
Jet Lag
Annie
Playing with Death
Porling Water (красивая печальная мелодия)

Он же известен под никами NightHawk и Reptile, участвовал в демосценерских группах Fairlight Music,
ProFound Sound, the Torrent Project, а также в проекте RetroFX в качестве музыканта.
Вот, кстати, интервью с нашим трекерщиком Eternal Engine. (работы NightHawk'a упоминаются)
Цитата:
В: Чья трекерная музыка Вам нравится больше всего? Лучшие работы, которые Вы знаете?
О: Очень тяжело выбрать что-то одно, я много чего слушал и многое очень нравилась. Но в принципе, если подумать, то наверное самый продуманный и качественный трэкерный продукт который я слышал это "Last Sunset" от NightHawk'a. Есть и идея и стиль и какая то новизна, которая в тоже время отдает чем то старым и до боли знакомым, но не напрямую как в поп музыке, а скорее в самой поп оркестровой стилистике композиции.

_________________
Nestopia 1.37/1.40 Fixed


Сообщение 09 ноя 2009, 19:49
Профиль
Аватара пользователя

Зарегистрирован:
24 июл 2007, 06:54
Сообщения: 492
Откуда: Embedded
Меня все время интересовало, зачем пин №30 у 6527 (смотрите вложение) заземлен? Где-то я слизал, что это BUSREQ. Захват шин. Но вполне мог быть и RDY/WAIT. Т.е. нужный нам сигнал синхронизации. Проводя эксперименты, я определил, что это все же захват шин, а не сигнал готовности. При этом, правда, я потерял комплект 6527/6538 изза бл**кой КРЕНки, у которой оторвалась земля в самый разгар экспериментов. Картридж, на счастье, выжил. Вот мои выводы:
1. Сигнал захвата шин. Если лог.0, то все пучком и проц пашет. Если лог.1 то проц бросает шину (F2=0).
2. Надолго захватывать шину нельзя. Иначе сбрасываются мапперы картов, которые используют F2 для распознавания сброса.
3. pAPU питается от F2! При захвате шин все звуки замолкают и продолжаются при восстановлении BUSREQ=0. Причем, если формировать BUSREQ так, чтобы растянуть цикл обращения (и изменить F2), то частота звуков pAPU меняется.

Discuss же.


Вложения:
DENDY.gif
DENDY.gif [ 215.37 КБ | Просмотров: 18618 ]

_________________
Tried so hard and got so far, but in the end, it doesn't even matter...
Сообщение 09 ноя 2009, 23:02
Профиль
Аватара пользователя

Зарегистрирован:
23 июл 2007, 22:38
Сообщения: 84
Откуда: С-Пб
В даташите от UMC он обозначен как RDY. И написано следующее:
This input signal allows the user to halt the 6502 microprocessor on all cycles except write cycles. A negative transition to the low state during or coincident with phase one (Ф1), will halt the microprocessor with the output address lines reflecting the current address being fetched. If ready is low during a write cycle, it is ignored until the following read operation.
(прошу прощения, если где есть опечатки)

_________________
Дао, выраженное словами, не есть истинное Дао


Сообщение 09 ноя 2009, 23:56
Профиль
Аватара пользователя

Зарегистрирован:
23 июл 2007, 19:37
Сообщения: 401
Откуда: Мытищи
Rumata, у тебя есть даташиты на UMC UA6527P/6538 в PDF ?
Любые раритетные документы по этим чипам могут пригодиться.
Если есть возможность сделать электронные копии - было бы очень хорошо.

_________________
Nestopia 1.37/1.40 Fixed


Показать сообщения за:  Поле сортировки  
Ответить на тему   [ Сообщений: 230 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8 ... 12  След.

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

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


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

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