2881
Игры на персональном компьютере / Раздача игр, обмен и просто халява
« : 10 Апрель 2020, 01:02:42 »
Steam > Ticket to Ride: First Journey: https://store.steampowered.com/app/600430/.
В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.
блин, странновато смотрятся пиксели с фонами высокого разрешения... зачем это они?..Это же дополнительные персонажи как бонус, не будут же они всё перерисовывать ради них, а если персонажей перерисовать, то получится не как было.
сварганили скучную игру и решили выехать на ностальгии?Странное предположение. Никто не будет покупать скучную игру ради доп. персонажей из старых игр.
может создал, но на первое время было приватным?Скорее локально (на компьютере) сделал коммит, push на github 7 апреля (https://api.github.com/repos/ValleyBell/GEMSPlay - pushed_at: "2020-04-07T21:48:08Z", это по UTC).
на том сайте с документацией по ym2612 указано что 7 бит в любом случае illegalДело в том, как железо реагирует, а не что формально.
я так понимаю мне второй вариант из архива нужен?Да.
а нет, чото он правил. смотрю на гитхабе какие-то обновки.Да... Теперь нет второй проверки на Gems 2.8, но изменилась первая. Число 0x200000 теперь стало 0x80000 как в ASM. Jump для VGM.
DoGems28 = Gems28Mode;
if (stseqx[0] > 1) // [extra code to detect GEMS 2.8]
{
if (stseqx[3] <= 1 && stseqx[6] <= 1)
DoGems28 = 0x01;
}
В кривом (наверно) банке Nightmare Circus теперь все треки неправильные, потому что первая проверка срабатывает один раз и она не сработала, но дополнение к ней помогло определить в вырезанной дорожке 020, о которой говорил недавно.модуляция по сути заглушка там 00 00 00. следовательно модуляция никак не должна влиять на звук - ведь там нули... но если её отрубить, то звук кардинально меняется. это для меня разрыв шаблонаПро это не знаю.
нельзя ли чтоб dll отсекала 7 бит?Снимаю 7-й бит здесь:
//noteonfm3:
ChnPat = CHPATPTR + 1; // patch pointer + 1 (past type byte)
if (noteon.voice == 2) // channel 3 ?
{
ChnPat[1] &= 0x7F; // <<< Добавил >>>
Ch3ModeReg = ChnPat[1] | 0x15; // yes - add CH3 mode bits to DACME's reset cmd
FMWrgl(0x27, ChnPat[1] | 0x05); // KEEP TIMER A ENABLED AND RUNNING, but not reset
}
Там есть другие места где используется этот байт, вроде бы бит там не должен влиять, но если найти загрузку patch буфера, то можно всегда снимать 7-й бит. Интересно, что в эмуляции YM2612 похоже проверяются оба бита, как-то странно там.Запустите игру сами до заставки "Match Race" и слушайте. Если проблема не будет слышна, значит комп у меня такой.У меня нормально в Final Lap. Посмотрите потребление CPU в диспетчере задач, у меня в начале трека 8% из 25% (4 ядра), после 11 секунд уже 15%. Это я ещё без фильтров, вместе с HQ 4x в пике около 35%, значит уже 2 ядра под нагрузкой, но тормозов звука всё равно нет. У FCEUX на протяжении трека 6%. Если у вас слабый процессор, а у меня он старый, то тормоза вполне возможны. Стоить проверить не процент, а что одно из ядер процессора загружено полностью. Если подтвердится, то репорт нет смысла писать.
По тональности звук будет различаться, ибо Месен поддерживает длинные сэмплы в Namco 106/163, а FCEUX - нет.Смешно, что баг в FCEUX известен как минимум с 2016 года, причём нашли как исправить, но не сообщили скорее всего. Я скомпилировал и проверил, тональность (или как это называется) действительно изменилась. Скачал исходный код https://github.com/TASVideos/fceux, запустил в VS2019, в файле src\boards\n160.cpp изменил строчку LengthCache[w] = (8 - ((V >> 2) & 7)) << 2; на:
LengthCache[w] = (64 - ((V >> 2) & 63)) << 2;
Или просто:LengthCache[w] = 256 - (V & 0xFC);
Как у Mesen и здесь: https://wiki.nesdev.com/w/index.php/Namco_163_audio.saving ambience/0x20C4C363.snu
sample count mismatch (got 4937582, expected 541808494)failed: 10
Придётся поискать другой извлекатель.test.exe -i -o file.wav ambience.sbr
То будет длиной 1:51:sample rate: 44100 Hz
channels: 4
looping: disabled
loop start: 0 samples (0:00.000 seconds)
loop end: 4937582 samples (1:51.963 seconds)
stream total samples: 4937582 (1:51.963 seconds)
encoding: Electronic Arts EA-XAS 4-bit ADPCM v1
layout: blocked (EA SNS)
metadata from: Electronic Arts SNR+SNS header
bitrate: 841 kbps
stream count: 6
stream index: 1
samples to play: 4937582 (1:51.963 seconds)
Если просто test.exe -o file.wav ambience.sbr, то будет в 2 раза длиннее, повтор идёт, а -i как раз предотвращает looping.test.exe -i -s 1 -o file1.wav ambience.sbr
...
test.exe -i -s 6 -o file6.wav ambience.sbr
Или использовать bat-файл, как там и показано: https://github.com/losnoco/vgmstream#components. if (numsamples != (shead.samples & ~0x40000000U))
{
printf("sample count mismatch (got %u, expected %u)", numsamples, (shead.samples & ~0x40000000U));
//r = 10;
//goto error;
}
Добавил эту версию (sbs_extractor_ignore_mismatch.7z).
А он кнопкой по дефолту сброшен? Может настройка какая трещащая затисалась.При любых настройках.
UINT8 stseqx[49]; // [0BBD] 33 byte scratch area for starting a sequence
...
DoGems28 = Gems28Mode;
if (stseqx[0] > 1) // [extra code to detect GEMS 2.8]
{
if (stseqx[3] <= 1 && stseqx[6] <= 1)
DoGems28 = 0x01;
}
Т. е. если даже определить не получилось как 2.8, есть возможность определить 2.8. Например, вырезанный Comix Zone определился как 2.8. Если бы эта проверка не сработала, то вообще была бы чушь и "Invalid command 126 found on Channel 10!".Касательно родного плагина - треска в нём нету?В главном меню нет треска в Doom и Final Doom.
то бишь, я так понял, что надо брать оригинальные образы а не всякие сборники 2in1 с переведённым текстом на примере Doom Classic Complete?Пираты могли вырезать что-то или как-то криво сделать, что на оригинальной консоле будет незаметно, а 100% точной эмуляции PSX не существует пока.
возможно GEMSPlay не может определить какие именно там используются и скажем они были 3 байтные, а он пытается 2 байтами прочитать и посему сыплется.Да, проверил. Он не смог определить в ваших вырезках, поэтому там и пишется Warning! GEMS Version Autodetection failed! (режим 2.8 не срабатывает и версия с 2 байтами по умолчанию), а когда запускаешь полный рип от того чувака, то ошибок нет в Comix Zone. Вот в Nightmare Circus (Beta) определить не получилось из того архива, но даже когда я установил режим 2.8, VGM хоть и без ошибок, но loop сэмплов остаётся неправильным.
Unknown event 75 on track 1
Unknown event 7C on track 4
Unknown event 7F on track 7
Unknown event 7D on track A
--------то есть дело в ядре, а не самом коде драйвера?Не знаю, код эмуляции YM2612 выглядит очень похожим на тот, что в MAME, а он нормально эмулирует и собственно поддержка overflow есть, но вот переписанный драйвер (GEMSPlay) наверно что-то не учёл.
каким образом можно начать vgm логирование?Не знаю, может оно не работает. Там, кстати, есть код записи в wav, но нужно перекомпилировать.
и я там смотрел гитхаб ВаллейБела - он два дня назад что-то правилЖаль, что он раньше не добавил репозиторий (https://github.com/ValleyBell/GEMSPlay/), иначе сделал бы форк. Он только 4 апреля добавил (https://api.github.com/repos/ValleyBell/GEMSPlay - created_at), но коммиты старые остались. Он поправил описание, его фиксы у меня есть, кроме INI, нужно будет сравнить. Исправления сэмплов у него нет. Я делал исправления для устранения предупреждений современного компилятора и некоторые другие, переносил файлы. Теперь можно запутаться.
OPN->fn_max = (UINT32)( (double)0x20000 * freqbase * (1<<(FREQ_SH-10)) / 4.4);
Genesis Plus GX release 080301 (Eke-Eke)И в fm2612.c написано:
* added preliminary support of undocumented YM2612 bug: fixes soundtracks of Shaq Fu, Spiderman, Comix Zone, Ariel and some others
Genesis Plus GX release 080716 (Eke-Eke)
* improved YM2612 emulation (credits to Nemesis for his tests on real hardware):
.implemented phase overflow emulation: improved fix for special music instrument used in Comix Zone, Flashback, Ariel, Shaq Fu...
** - implemented Detune overflow (Ariel, Comix Zone, Shaq Fu, Spiderman & many other games using GEMS sound engine)В fm2612.c переменная fn_max используется при "phase overflow" (наверно "Detune overflow" тоже самое), если частота отрицательная, то прибавляется fn_max.
OPN->fn_max = (UINT32)( (double)0x20000 * freqbase * (1<<(FREQ_SH-10)) );
Я смог подобрать делитель fn_max, чтобы звучало похоже (число между 4.0 и 4.7), я остановился на 4.4:OPN->fn_max = (UINT32)( (double)0x20000 * freqbase * (1<<(FREQ_SH-10)) / 4.4);
freqbase - зависит от rate и clock и её нельзя изменить, чтобы всё не испортить. Код достаточно похож на последний код у MAME (https://github.com/mamedev/mame/blob/master/src/devices/sound/fm2612.cpp), так что можно сделать вывод, что именно в GemsPlay.c этого overflow не происходит.А зачем вообще существуют частные коллекции, которые никто не может увидеть?Некоторые коллекционеры такие, они могут показывать фото, как byuu, и не делать дампы. Типа "у меня есть, а у вас нет". А потом пожар/утеря или коллекционер умер и всё теряется.
100-150 килобайт на песню - многовато"17 - The Jester.vgm" - 1,95 МБ, который я скачал
переключение треков не нужноТак и подумал, просто для информации.
согласно инструкциям - громкость достигла ноля.Дело в том, что мы вручную нажимаем/вызываем стоп и здесь происходит запись в FIFO cmdstopall (0x16), но движок ничего не делает с envelope, кроме отключения канала. А CheckForSongEnd() для GEMSPlay, пытается в нескольких местах определить, что конец трека. Поэтому такая проверка необходима. Если тишина, это ещё не значит, что трек закончился. Я даже не знаю когда GEMS треки останавливаются, наверно только от своих команд.
а как можно в gemsplay номер трека указать?В консольной стрелки вверх и вниз.
for (CurChn = 0; CurChn < 4; CurChn ++)
{
if (pdata.psgenv[CurChn])
ChnMask ++;
}
Здесь проверяется регистр UINT8 psgenv[4]; ([0021] 24 envelope mode 0 = off, 1 = attack, 2 = decay, 3 = sustain, 4) и он почему-то равен 2 в последнем канале, что не даёт остановку (ChnMask должен быть = 0).(20 мин еще надо для скачивания)Если качать в несколько поток через менеджер закачек, то быстрее. Firefox качает в один поток (подключение), поэтому медленно, у других не знаю. Также там есть торрент, да и образ этот есть на rutracker.org.
у меня вопрос по поводу буфера - он точно один на 128 байт размером?
// FILLDACFIFO - gets the next 128 bytes of sample from the 68000 into the DACFIFO
static void FILLDACFIFO(UINT8 ForceFill)
Там DACFIFO на 256 байт, эти 128 байт записываются попеременно. Так что можно сказать два по 128.gemsplay_stop по всей видимости не стопарит проигрывание такого сэмпла в loop )))Ну да, я же копировал реализацию из команд с клавиатуры. Можно очистить память вместо этого и снова инициализировать.
я там вырезал вобще все для тестов и остался только сэмпл, чтоб слушать как он склеивает.В архиве одинаковые файлы в двух папках. Я тестировал на вашем прошлом forum.zip, там несколько раз повторяется этот кусок, так вот между ними есть "щелчок", но не те, которые между LOOP. В этих я тоже не слышу.
еще момент - а могли появится эти щелчки из-за модификации кода под PAL?Я не добавлял ничего связанного с PAL. Это было только в сборке GEMSPlayLibrary_50Hz для теста, мне показалось, что вам это не нужно.