Автор Тема: Nuked OPN2 (YM3438/YM2612) emulator  (Прочитано 4871 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн evgs

  • Пользователь
  • Сообщений: 1038
  • Пол: Мужской
    • Просмотр профиля
Nuked OPN2 (YM3438/YM2612) emulator
« : 22 Октябрь 2017, 23:44:50 »
NukeYKT (Alexey Khokholov) написал тактово-точный эмулятор YM3438/YM2612
https://github.com/nukeykt/Nuked-OPN2

- Based on YM3438 die shot reverse engineering and thus provides very high emulation accuracy.
- Cycle-accurate.
- Undocumented registers/features emulation.
- SSG-EG, CSM mode emulation.
- Compatible with the YM2612.

https://www.youtube.com/watch?v=Msb3BOFoVrE
https://www.youtube.com/watch?v=p9Cu_hLKIro
https://www.youtube.com/watch?v=ImmKy_-pJ8g
https://www.youtube.com/watch?v=s-8ASMbtojQ

Эмулятор можно послушать в свежайшем ядре genesis_plus_gx_libretro через RetroArch

Доступны опции ядра:
YM2612/YM3438 core
-mame
-nuked (YM2612)
-nuked (asic YM3438)
-nuked (discrete YM3438)

YM2612 DAC quantization
-disabled
-enabled

« Последнее редактирование: 23 Октябрь 2017, 01:02:45 от evg.s »

Оффлайн evgs

  • Пользователь
  • Сообщений: 1038
  • Пол: Мужской
    • Просмотр профиля
Nuked OPN2 (YM3438/YM2612) emulator
« Ответ #1 : 29 Октябрь 2017, 20:20:11 »
Отчётливо слышна эмуляция специфики DAC YM2612 ("ladder effect")
Использовался low-pass фильтр 40%, как наиболее соответствующий MD первых моделей.
https://forums.libretro.com/t/genesis-plus-gx-where-is-the-audio-lowpass-filter/12169/92

Оригинал с железа, без фильтрации:
https://www.youtube.com/watch?v=tRkHqw58PPk
(Recorded using an unfiltered YM2612 MegaAmp on a VA3 Model 2 Genesis)

Никакие регены и эксодусы и рядом не валялись  :P
« Последнее редактирование: 29 Октябрь 2017, 20:27:58 от evg.s »

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9381
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Nuked OPN2 (YM3438/YM2612) emulator
« Ответ #2 : 29 Октябрь 2017, 23:37:34 »
ота срань на заднем плане и есть "эффект ступеньки" ? прикольно ;)

Никакие регены и эксодусы и рядом не валялись
было бы желание ;) там всех делов - несколько строк кода

и мне как-то не понятно - откуда дровишки ? на основании чего это всё ? если декапа YM2612 еще нет.

Оффлайн evgs

  • Пользователь
  • Сообщений: 1038
  • Пол: Мужской
    • Просмотр профиля
Nuked OPN2 (YM3438/YM2612) emulator
« Ответ #3 : 30 Октябрь 2017, 02:32:24 »
На самом деле декап 2612 есть, и довольно старый:
https://forums.nesdev.com/viewtopic.php?f=23&t=8806

Его делал один знакомый ХВМа, работающий на СТО.
Фотка получилась далеко не самого лучшего качества.
Получилось снять лишь один слой, а до второго так и не добрались - не вышло стравить металл.

Однако по этим фотографиям что-то да удалось разобрать:
http://gendev.spritesmind.net/forum/viewtopic.php?f=24&t=386&start=795#p29525

Цитата: NukeYKT
Как раз я и использовал ваш die-shot при эмуляции багов в ЦАП YM2612. Думаю кроме ЦАПа нету каких либо существенных различий между YM2612/3438. Даже назначения тестовых регистров полностью совпали с находками Sauraen'а.

Это не означает, что нормальный декап и фотки всех слоёв не нужны. Мы постараемся это организовать.
Не исключено, что у 2612 и 3438 помимо ЦАП есть ещё какие-нибудь незначительные различия.
« Последнее редактирование: 30 Октябрь 2017, 02:49:43 от evg.s »

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7436
    • Просмотр профиля
Nuked OPN2 (YM3438/YM2612) emulator
« Ответ #4 : 30 Октябрь 2017, 07:04:17 »
Не исключено, что у 2612 и 3438 помимо ЦАП есть ещё какие-нибудь незначительные различия.
Конечно есть. Таймеры же.

Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Nuked OPN2 (YM3438/YM2612) emulator
« Ответ #5 : 30 Октябрь 2017, 14:03:16 »
ота срань на заднем плане и есть "эффект ступеньки" ? прикольно ;)
Эффект ступеньки придаёт "объёмность" инструментам и всего-то :) На тихих треках это заметно очень сильно. В After Burner - Super Stripe, например, да и во всей игре вообще. Ещё пример: Golden Axe 3 - Cave of Crystal.
Если технически, то это увеличенный импульс между значениями ЦАП -1 <-> 0, примерно в 3.5 раза сильнее остальных. Т.е. если ты проиграешь цифровые точки-семплы от -50 до +50 ты увидишь последовательность почти одинаковых ступенек вверх, но на -1 -> 0 ступенька будет большая.
Плюс ещё прикол: при обрезке значения оператора на выход канала берутся просто старшие 9 бит оператора, это эквивалентно арифметическому сдвигу (а не логическому) на 5 бит. В результате, пусть у нас синусоида:
-31 -30 -29 ... 0... +31
Если делать 14-битный вывод, как делают некоторые эмуляторы, то нормированные значения получатся:
-0.97 -0.94 ... 0 + 0.97
Если делать логический сдвиг, получится:
0 0 0 0 0 0 0
Если арифметический:
-1 -1 -1 -1 -1 ... 0 0 0 0 0 0 0 0
А с учётом ступеньки:
-3.5 -3.5 -3.5 -3.5 ... 0 0 0 0 0
Если брать меньшие по модулю значения, то 14-битный вывод будет звучать тише, а настоящий 9-битный останется последвательностью -3.5 и 0.
Т.е. тихий и затухающий звук всё равно будет звучать достаточно ощутимо.

Я спрашивал, в чём сложность добавить эффект, на спрайтсмайнде. Eke говорит, что "они не знают точного значения ступеньки, поэтому не добавляют"  :neznayu:
...Если бы кто добавил эффект в плагин in_vgm.

« Последнее редактирование: 30 Октябрь 2017, 14:14:31 от GManiac »

Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Nuked OPN2 (YM3438/YM2612) emulator
« Ответ #6 : 30 Октябрь 2017, 14:11:07 »
Вот ещё

Оффлайн evgs

  • Пользователь
  • Сообщений: 1038
  • Пол: Мужской
    • Просмотр профиля
Nuked OPN2 (YM3438/YM2612) emulator
« Ответ #7 : 30 Октябрь 2017, 16:56:34 »
Вот запись Лунной сонаты из червяка джима 2 с MegaDrive 1 модели.
Оригинальная нетронутая приставка, без кастомных усилителей и выброшенных фильтров, as is:
https://yadi.sk/d/Ekf8pRWr3PENoZ (FLAC, 48 кГц)

Пожалуй, лучшего теста эффекта ступеньки и не найти.

А по поводу программных VGM-плееров, вот вроде добавляют уже:
https://github.com/vgmrips/vgmplay/commit/4f8f562885850ab53abf03ee8e3b777d41789b90
« Последнее редактирование: 30 Октябрь 2017, 17:06:24 от evg.s »

Оффлайн evgs

  • Пользователь
  • Сообщений: 1038
  • Пол: Мужской
    • Просмотр профиля
Nuked OPN2 (YM3438/YM2612) emulator
« Ответ #8 : 07 Январь 2018, 15:25:37 »
В дефолтное ядро genesis plus gx (mame ym2612) бэкпортировали "лесенку" из нюкеда.
Теперь можно слушать аутентичный звук сеги даже на слабом железе,
которое не справлялось с эмулятором нюкеда (напр. Raspberry Pi3 с ретроарчем)