Автор Тема: Эмулятор Nes на Playstation2 c возможностью игры вчетвером. Есть ли такой?  (Прочитано 7972 раз)

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

Оффлайн buh91

  • Пользователь
  • Сообщений: 73
  • Пол: Мужской
    • Просмотр профиля
Здравствуйте! Хочется поиграть в серию игр неккетсу, и не просто поиграть, а вчетвером, и на playstation 2 через мультитап.
Подскажите, мои желания реализуемы, или об этом можно забыть? Может у кого есть опыт?
П.с. я пользуюсь эмулятором fceu на пс2. Там возможности игры вчетвером я не обнаружил...

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 4689
    • Просмотр профиля
Если говорить об FCEU-mm PS2 rev.13 by AKuHAK, там автор пишет:
* only supported 2 pads (in theory it is possible to make MULTITAP working - yeah bomberman)

В исходном коде в /src/drivers/ps2/ps2input.c такой код:
void Set_NESInput()
{
    void *NESPads;
int attrib = 0;

if(mtapGetConnection(0) != 1) {
FCEUI_DisableFourScore(1);
NESPads = &NESButtons;
FCEUI_SetInput(0, SI_GAMEPAD, NESPads, attrib);
FCEUI_SetInput(1, SI_GAMEPAD, NESPads, attrib);
}
else {
FCEUI_DisableFourScore(0);
NESPads = &NESButtons;
FCEUI_SetInputFC(SIFC_4PLAYER, NESPads, attrib);
FCEUI_SetInput(0, SI_GAMEPAD, NESPads, attrib);
FCEUI_SetInput(1, SI_GAMEPAD, NESPads, attrib);
// FCEUI_SetInput(2, SI_GAMEPAD, NESPads, attrib);
// FCEUI_SetInput(3, SI_GAMEPAD, NESPads, attrib);
}
}
Что указывает на обработку multitap от PS2, строчки выше не нужно раскомментировать, это не поможет. Видно, что два геймпада всё-таки работают через эту приблуду. Там немного запутанный код, но строчки ниже как разу нужно раскомментировать:
int Get_NESInput()
{
    //int NESPress = 0;

    if(exitgame) {
        exitgame = 0;
        return 1;
    }

    if(Settings.turbo) {
        NESButtons = ( Get_PS2TurboInput(0) ); //first player
        NESButtons |= ( Get_PS2TurboInput(1) << 8); //second player

        if(rapid_a[0])
            NESButtons |= JOY_A;

        if(rapid_b[0])
            NESButtons |= JOY_B;

        if(rapid_a[1])
            NESButtons |= 0x100;

        if(rapid_b[1])
            NESButtons |= 0x200;
    }
    else {
        NESButtons = ( Get_PS2Input(0) ); //first player
        NESButtons |= ( Get_PS2Input(1) << 8); //second player
//        NESButtons |= ( Get_PS2Input(2) << 16); //third player
//        NESButtons |= ( Get_PS2Input(3) << 24); //4th player
    }

    return 0;
}
Если не смотреть на турбо, то раскомментирование NESButtons |= ( Get_PS2Input(2) << 16); и NESButtons |= ( Get_PS2Input(3) << 24); должно записывать данные с геймпадов 3 и 4. Данные попадают в src/input.c через FCEUI_SetInput(), а не через FCEUI_SetInputFC() как могло показаться, потому что там не учитывается аргумент NESButtons, но данные всё равно используются, так как все находятся в одном 32 битном числе NESButtons (NESPads). Обработка ввода происходит в /src/input/pads.c, функции отсюда использует src/input.c.

Чтобы разобраться стоит посмотреть код FCEUX для Windows, там похожий код и есть поддержка Four Score, которую нужно включать в настройках, но в эмуляторе PS2 поддержка включается при определение вставленного multitap. В FCEUX код файла /src/input/pad.c находится в /src/input.cpp, а ввод по аналогии осуществляется в /src/drivers/win/input.cpp.

Вряд ли, что только NESButtons |= ( Get_PS2Input(2) << 16); и NESButtons |= ( Get_PS2Input(3) << 24); помогут, я даже не компилировал. Сам автор в коммите пишет (исходный код новее rev.13 !):
- now it is possible to play with multitap inserted (A - 1st player, B - 2nd player), unfortunately I still don't know how to enable four player engine

Дополнение: последняя скомпилированная версия эмулятора от автора, что я нашёл, прикрепил на всякий случай. Попробовал в FCEUX 2.2.3 игру с поддержкой больше 2 игроков, там баг с управлением :)
« Последнее редактирование: 01 Апрель 2018, 05:26:10 от Sharpnull »

Оффлайн buh91

  • Пользователь
  • Сообщений: 73
  • Пол: Мужской
    • Просмотр профиля
Значит облом... А другие эмули Nes для ps2 ? Может пробовал кто нибудь? Хотя fceu самый новый вроде, поэтому на другие надежды мало...

Оффлайн AuAurora

  • Пользователь
  • Сообщений: 1520
  • Мур
    • Youtube
    • Просмотр профиля
уже давным-давно сделали хаки всех этих некецу на 4 игроков. Гол3 и баскетбол уж точно

Оффлайн buh91

  • Пользователь
  • Сообщений: 73
  • Пол: Мужской
    • Просмотр профиля
Так они и в оригинале на 4 работают. тема не про это, а про то, как через эмулятор на ps2 в игры nes на четверых с помощью мультитап играть

Оффлайн AuAurora

  • Пользователь
  • Сообщений: 1520
  • Мур
    • Youtube
    • Просмотр профиля
Ваша религия запрещает делать это на эмуляторе?

Оффлайн lupus

  • Пользователь
  • Сообщений: 3772
  • Пол: Мужской
  • man with no face
    • ВКонтакте
    • Просмотр профиля
Ваша религия запрещает делать это на эмуляторе?
Ваша религия запрещает читать внимательно?

Оффлайн AuAurora

  • Пользователь
  • Сообщений: 1520
  • Мур
    • Youtube
    • Просмотр профиля
Ок. Уточню. Ваша религия запрещает делать это на эмуляторе на компе? Или это такая хочушка - вот надо чтобы пс2?)
И с каких это пор на консольках эмуляторы появились? консоли решили превратить в плохой аналог ПК?

Оффлайн buh91

  • Пользователь
  • Сообщений: 73
  • Пол: Мужской
    • Просмотр профиля
Ну если по вашей логике судить, то мне проще купить фамиком с переходником, чем покупать 4 джоя к компьютеру. Просто хочется именно на пс2, там у меня все есть) да и интереснее и в пс2 игры поиграть на 4, а потом nes, чем таскать на посиделки помимо пс2 ещё и ноутбук

Добавлено позже:
А по поводу эмуляторах на консольках- они вроде очень давно появились... Точно не один десяток лет существуют...)

Оффлайн AuAurora

  • Пользователь
  • Сообщений: 1520
  • Мур
    • Youtube
    • Просмотр профиля
то мне проще купить фамиком с переходником, чем покупать 4 джоя к компьютеру
Дороже, реже. Не проще.

Добавлено позже:
Дешёвые писишные гейпады от 100 руб можно купить, по такой цене они как раз примерно такого же качества и тактильных ощущений что и дендиевские джойстики. Разве что дизайн пс1-лайк будет, но он вполне схож с дендиевским, кнопок только больше. Хз сколько сейчас заламывают за фамиком с переходником, но это точно дороже будет.

Добавлено позже:
И поправьте меня, если ошибаюсь, но вроде от всех плейстейшенов можно подключить гейпад к пека, от 2 уж точно.

Оффлайн buh91

  • Пользователь
  • Сообщений: 73
  • Пол: Мужской
    • Просмотр профиля
За 100 руб это хлам, нормальный около 800 стоит. :) Но давайте вернёмся к теме, Вашу точку зрения я понял и воспользуюсь ей, если не будет возможности пойти моим желаемым путем)

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 4689
    • Просмотр профиля
buh91, я всё-таки скомпилировал исправленную мной версию. Проблема была в отсутствии настроек 3-го и 4-го контроллеров.

Информация о релизе:
* В Famicom и NES различается поддержка 3-4 игроков. У NES это Four Score, у Famicom - 4-Players Adaptor.
В FCEU под Windows логика такая: для игр с поддержкой Four Score должна стоять/не_стоять галочка об этом, но при этом не должен быть выбран 4-Players Adaptor, иначе 3-й игрок будет одновременно двигать 1-го. Для игр с 4-Players Adaptor нужен только выбор его в Famicom Expansion Port, а галочка для Four Score не влияет. Так как я не стал реализовывать опцию в самом эмуляторе, я просто скомпилировал две версии.
Подробнее об этом и игры, которые поддерживаются: https://en.wikipedia.org/wiki/NES_Four_Score.
* Поддержка мультитапа только в первом слоте.
* Turbo для 3-го и 4-го контроллеров не реализовано.
* Тестировалось только в эмуляторе pcsx2, в играх Bomberman II (U) [!p].nes, Nekketsu Kakutou Densetsu (J) [T-Eng].nes.
* Тормозит в эмуляторе, вероятно и на консоли! Самая быстрая версия скомпилированная AKuHAK с помощью GCC 5.3.0 (давал ссылку выше), но у меня не получилось установить по его же инструкции, пришлось компилировать по этой инструкции. Допускаю, что версия на github просто устарела или что-то было не учтено (использовался Makefile.ps2 без изменений).

Протестируйте скорость на консоли и сообщите. Нужно тестировать наличие разного количества контроллеров в разные слоты, в pcsx2 я не нашёл выбора отключения/включения определённых геймпадов, либо 2, либо мультитапы в 1-й и/или 2-й слоты.
По-хорошему нужно кинуть pull request и связаться с AKuHAK, но я не реализовал опцию в самом эмуляторе, хотя как минимум Four Score будет работать без проблем. Изменённые файлы прикрепил также.
« Последнее редактирование: 02 Апрель 2018, 20:15:53 от Sharpnull »

Оффлайн buh91

  • Пользователь
  • Сообщений: 73
  • Пол: Мужской
    • Просмотр профиля
Ох, спасибо! Завтра доберусь до дома после работы и прожгу! Пока на смене к сожалению, но уже не терпится)

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 4689
    • Просмотр профиля
buh91, обновил, теперь есть выбор в меню игры 4-Players Adaptor. К сведению, все контроллеры нужно подключать перед запуском эмулятора.
Теперь уверен, что выложенная быстрая версия (на GCC 5.3.0) не соответствует последнему коммиту и скорее всего новее. Версия, которую я скомпилировал, к тому же имеет баг из-за которого не подгружаются настройки.

Оффлайн buh91

  • Пользователь
  • Сообщений: 73
  • Пол: Мужской
    • Просмотр профиля
Прожёг, что то видимо пошло не так, распишу:
1. Скачал архив, извлёк содержимое.
2. Файл формата.elf, папку src, папку с играми(имя латиницей) прожёг через ультра ИСО на болванку на минимальной 8х скорости.
Результат- диск не воспроизводится.
Записывал до этого такой диск уже давно, но там был ещё файл SYSTEM.CNF, которого здесь нет и файл .elf почему то обязательно нужно было писать заглавными буквами. Это не может быть причиной?

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 4689
    • Просмотр профиля
buh91, src - вам не нужен, только elf-файл. Сам автор только elf-файл и распространял, наверно предполагалось, что вы всё это знаете.
Погуглил. Действительно, для запуска с диска нужен этот файл, можете создать с помощью этой программы http://psx-core.ru/load/ps2_soft/ps2_cnf_v0_1/8-1-0-752, справа вбейте название файла (в верхнем регистре, без пробелов, допустим FCEU.ELF), любую версию (например 1.0) и выберите режим видео. elf-файл лучше переименовать (FCEU.ELF), чтобы не было пробелов. В винде, в отличие от линуксов, у вас не получится написать название файла в верхнем регистре, он не учитывается :) Это должна делать программа для записи, которая в общем-то должна и за пробелами следить.

Когда будете тестировать, сравните скорость ещё с:
* Последней публичной версией fceu.packed_rev13.zip http://psx-scene.com/forums/f176/fceu-mm-ps2-new-version-118166/ (http://psx-core.ru/news/ps2_fceu_mm_ps2_rev_13_by_akuhak/2014-03-24-1056)
* Последней от автора (как уже писал, самая быстрая) http://www.ps2-home.com/forum/viewtopic.php?p=7704#p7704

К слову о файлах: можно, но не обязательно, для сохранений и читов, фона, иконок и своих настроек должны быть ещё такие файлы на карте памяти в mc0:/FCEUMM:
Папки cheats, fcs, sav. Файлы background.jpg, FCEUltra.cnf, fce_ultra.icn, icon.icn, icon.sys, menu.jpg, skin.cnf. Пример с такими файлами http://www.ps2-home.com/forum/viewtopic.php?f=21&t=707 (копировать fceu.packed.elf и FCEUmm 160. rev13.txt конечно же не надо). Не знаю есть ли поддержка HDD.

Оффлайн buh91

  • Пользователь
  • Сообщений: 73
  • Пол: Мужской
    • Просмотр профиля
Записал я диск, и записал чтобы не париться следующим образом:
1.С моего старого диска с fceu 0.90 и ромами, которым я пользуюсь много лет я снял образ.
2.назвал вашу версию эмулятора так же, как было на моем диске.
3.Поменял с помощью ультра ИСО файл эмулятора версии 0.90 на Ваш.
4.прожег обратно.
Итог: запустилось) но:
Во первых - на главном меню можно выбрать Ромы с мемки 1 и 2, hdd/флешки, а пункта cdfs я не обнаружил. Но это не главное.
Второе - что то не так с отображением меню. На экране видно только верхний левый край меню. Сейчас фото не могу скинуть, очень плохой интернет, но завтра с утра будет!

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 4689
    • Просмотр профиля
buh91, по умолчанию выключена поддержка дисков, не знаю почему, может работает, не стал экспериментировать.
Там может быть растяжение из-за того, что нужно включить Interlacing (SELECT -> Interlacing), у меня в эмуляторе это так выглядит. Настройки не подгружаются, каждый раз приходится выбирать.

Оффлайн buh91

  • Пользователь
  • Сообщений: 73
  • Пол: Мужской
    • Просмотр профиля
Точно! Все стало нормального размера) после работы буду пробовать с флешки.
П.С. извини, что так долго вожусь. У нас грудной ребенок, свободного времени не так уж и много... :)

Оффлайн buh91

  • Пользователь
  • Сообщений: 73
  • Пол: Мужской
    • Просмотр профиля
Добрый вечер) отписываюсь о результатах тестов.
Первая новость хорошая - работают все 4 джоя!) Круто одним словом) как будто в другие игры играешь !!!
Вторая не очень - на заставках и в меню игр все неплохо, чуть иногда заикается звук. Но в самой игре - 1-5 фпс. Тестил футбол, бои 2*2, бега, баскетбол от неккетсу. Кстати, в бегах фпс где то 5-10, т.е получше, но все равно медленно.
А возможно довести работу эмулятора до нормальной скорости?

Добавлено позже:
Для справок.
Бои 2*2 - nekketsu kakutou densetsu
Баскетбол - nekketsu! Street basket
Бега - nekketsu koushin kyoku
Футбол - kunio-kun no nekketsu soccer league

Добавлено позже:
Да, а зачем сравнивать скорость работы с fceu packed v.13? тут сразу видно, что сильно тормозит...
« Последнее редактирование: 05 Апрель 2018, 20:46:27 от buh91 »

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 4689
    • Просмотр профиля
Сравнить скорость с другими надо, чтобы убедиться, что на PS2 оно вообще нормально может идти. У меня в эмуляторе только эта версия хорошо идёт http://www.ps2-home.com/forum/viewtopic.php?p=7704#p7704
PS2SDK использует древний GCC 3.2.3, я так понимаю переход на новую версию ускорит игру, но GCC 5.3.0 у меня не получилось установить, может потом попробую.
Проблему из-за которого не грузились настройки решил, но сейчас это не важно.

Оффлайн buh91

  • Пользователь
  • Сообщений: 73
  • Пол: Мужской
    • Просмотр профиля
Ясно) вечером на rev.13 попробую

Добавлено позже:
А на сайт ps2-home у меня почему то не заходит(

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 4689
    • Просмотр профиля
Сайт как раз сломался :lol: Я прикреплял ту версию выше, называю её 2016.12.01 по дате сообщения от автора: http://www.emu-land.net/forum/index.php?action=dlattach;topic=80047.0;attach=195523
Жаль в этих эмуляторах нет вывода FPS, можно было бы узнать точно когда идёт хорошо, а не сама nes-игра тормозная. Кстати, просто к сведению, там отключен лимит спрайтов, это вроде не должно влиять скорость, но не будет того консольного мерцания спрайтов.

Оффлайн buh91

  • Пользователь
  • Сообщений: 73
  • Пол: Мужской
    • Просмотр профиля
Протестил. Вобщем надоело мне писать болванки, скачал я макбут на карту памяти и эмуляторы с ромами загружал с флешки. отчитаюсь)
1.Эмулятор с прикрученным мультитапом тормозит также, как тормозил с диска.
2. Эмулятор версии rev.13 тормозит в точности также, как и эмуль с мультитапом.
3. Эмулятор 2016.12.01 работает почти идеально. Тормозов нет, немного звук иногда спотыкается, но этого почти незаметно.
Кстати, а почему мой диск с записанным fceu 0.90 и Ромами тоже идёт гораздо лучше, чем вышедший как я понимаю позже rev.13? Rev.13 как я понимаю, доработаннее?

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 4689
    • Просмотр профиля
Есть ещё fceumm-ps2-0.90i. Там был кто-то первый, портировавший FCEU, потом ещё один что-то прикрутил, это было давно. rev13 - 2014 года, его уже доработал AKuHAK и обновил сам FCEU (кажется из репозитория libretro). Позже AKuHAK обновлял вплоть до 2016 года, его версию я и изменил. Там уже был multitap, но не хватало нескольких правок.
У старых версий поддержка меньшего количества мапперов и структура проекта. Использовалась другая версия PS2SDK. Всё связано.

Я вспомнил, что звук бывает проблемой в эмуляции (например, последние версии picodrive для PSP работают нормально только без звука) и сделал две сборки:
fceu-packed [sound_22050].elf - частота 22050Hz, звук похуже, но уже быстрее работает.
fceu-packed [sound_0].elf - без звука, летает)
fceu-packed [m+cnf_fix].elf - это обычная версия, но теперь конфиг грузится.

Ещё раз пытался установить PS2SDK с более новым GCC, не получилось. Если ничего не придумаю в ближайшее время, придётся оставить так.

Обновление:
Только сейчас заметил, что часть тормозов из-за подключенного мультитапа, я его не выключал из опций эмулятора. Позже посмотрю можно ли исправить.
« Последнее редактирование: 09 Апрель 2018, 07:23:33 от Sharpnull »

Оффлайн buh91

  • Пользователь
  • Сообщений: 73
  • Пол: Мужской
    • Просмотр профиля
То есть в архиве есть версия ,без звука, но с мультитапом идёт без тормозов? Вечером попробуем)
« Последнее редактирование: 09 Апрель 2018, 19:37:34 от buh91 »

Оффлайн buh91

  • Пользователь
  • Сообщений: 73
  • Пол: Мужской
    • Просмотр профиля
 :) Как ты уже говорил, версия со звуком 22050 работает побыстрее, без звука летает.
Я заметил ещё такую штуку:
Если на первом меню эмулятора перевести display - pal, Emulated Systen -Pal, мы переведем эмуль в работу 50 Гц. То ли визуально, то ли это снижает требовательность эмулятора в системных ресурсах, но игра идёт плавнее, без глюков, но медленнее аля денди.
Как следствие - обычная версия с норм звуком в pal тормозит чуть заметно. А версия со звуком 22050 в pal работает вообще без глюков.
Итог - мы уже сейчас можем играть на этом эмуле в денди на четверых. Спасибо, sharpnull) Сможем ли играть на четверых в NES - зависит только от него)

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 4689
    • Просмотр профиля
PAL я не пробовал выставлять для PS2, а PAL для игры с NTSC добавлял тормозов (пробовал однажды). Сейчас посмотрел, у меня в эмуляторе PS2 если выставлять PAL/PAL звук будет уже заметно не тот, тестирую скорость на Blaster Master (U). На самом деле в FCEUX для PC есть ещё регион dendy, ведь он эмулируется по-другому.

То есть у вас получилось поиграть нормально именно с подключённым multitap? Я смотрел код отвечающий за multitap, там всего пара строчек, тормоза не пойму откуда.

Код с изменениями наконец-то опубликовал на github'е, в Releases скомпилированные файлы. Там версия другая внутри отображается (больше ничем не отличается), это нужно, потому что собираюсь немного подкорректировать код и добавить турбо кнопки на отдельные кнопки геймпада без этой глупости через меню, к сожалению придётся меню внутри игры вызывать с помощью дальних кнопок. Так что зайдите через пару дней туда за новой версией, если у меня получится. Желания разбираться в специфическом для PS2 коде не хочется, так что это будут последние правки.

Оффлайн buh91

  • Пользователь
  • Сообщений: 73
  • Пол: Мужской
    • Просмотр профиля
Уточню) Режим pal я выставлял на эмуляторе Nes, а не переводил ps2 в pal режим) делал я это в версии со звуком 22050. Играется плавно, да и звук какой-никакой есть. Хоть и качеством хуже, но зато не тормозит. Тестил на ps2 slim c мультитап через макбут. Ромы и эмуль грузил с флешки.

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 4689
    • Просмотр профиля
Обновил два раза, скачать там же.
1. Теперь скорость почти не падает, элементарное улучшение, но я его не пробовал, потому что не мог предположить критичность. Если играть в одиночную игру, то еле заметно уменьшение скорости с включённым мультитапом, из-за обращений к геймпадам, даже если игроков 1-2. Думал сделать опцию, но какой смысл, если можно просто вытащить мультитап.
2. Добавил турбо-кнопки на отдельные кнопки, меню в игре теперь на L1. Нужно удалить старый конфиг, иначе первый игрок не сможет использовать Turbo B на трегольнике. Оставил выход из меню на треугольник, но кнопка может нажаться ещё в самой игре.
Добавил отключение звука в опциях - не громкость, а именно отключение - заметно ускорение (например в Bormberman II пропадают рывки). LowPass убрал, он работает на высоком качестве, а здесь даже 44100Гц не может воспроизвести, не понимаю зачем автор добавлял опцию.

Я писал AKuHAK и как понял в том быстром билде был как раз звук 22050Гц, а новый компилятор значит ничего не решает :) Хотя в исходниках 90i стоит 44100, это странно. Нужно будет скомпилировать и сравнить.

Кстати, Filter работает? При включении картинка должна быть сглаженной, код это тоже предполагает, но в эмуляторе pcsx2 этого не видно. Причём это с фильтрацией Nearest в pcsx2, т. е. вижу все пиксели как есть. У всех старых версий тоже не видно.
« Последнее редактирование: 12 Апрель 2018, 05:53:47 от Sharpnull »