Не так давно, в бездонном ящике с проводами зарядки, батарейками и сломанными наушниками, я обнаружил свой старенький Redmi Note 9 Pro Max. Это телефон, который ещё что-то может, обладает относительно неплохими характеристиками, но при этом его стоимость на Авито крайне мала, и для продажи он не годится.
Посмотрев на него, я понял, что хочу с ним сделать — превратить в аналог портативки и носить с собой на работу. И тогда я начал изучать различные версии эмуляторов, лаунчеры, дополнительные сайты и форумы. И я понятия не имел, насколько глубока эта кроличья нора.
Глава 1. Подготовка
Как я уже говорил, когда ко мне пришла эта идея, у меня был только Redmi Note 9 Pro Max.
Сам телефон и его характеристики важны только для того, чтобы понять, какое количество эмуляторов мы можем использовать. Например, с такими характеристиками я достиг полной играбельности эмуляторов таких платформ, как: Nintendo Entertainment System, Sega Genesis, Game Boy Advance, Nintendo 3DS, Sega Dreamcast, PlayStation Portable, PlayStation 2, PlayStation Vita и даже Nintendo Switch. Но об этом позже.
Естественно, мне понадобился геймпад. Не стоит объяснять, почему играть на сенсорном экране в ретро-игры не просто неудобно, а в целом невозможно.
На тот момент у меня уже пылился DualShock 4, который идеально подходил, если бы не цель создать портативное устройство. Тогда я принялся тщательно изучать известные маркетплейсы, подыскивая подходящий вариант, и и уперся в два форм-фактора:
Пользователи Switch ахнут.
Ахнут все остальные.
Мне больше нравился первый вариант: он выглядел как полноценная игровая консоль, а не как геймпад с придатком. Но, к сожалению, большая часть таких устройств была похожа на те геймпады, которые вы отдовали исключительно младшему брату если нужен был второй игрок, а сами никогда не брали в руки. Судя по отзывам, они годились лишь для временного развлечения и заканчивали свой путь в том же ящике, где и провода зарядки с другим хламом.
Мне же хотелось чего-то более надежного, приятного, тезисы которого не сводились бы к “люфтит, скрипит, разваливается”. И вот я наткнулся на него:
Я уже слышал о геймпадах GameSir, когда читал об эмуляторе Egg NS. Если говорить кратко, то существует такой эмулятор Nintendo Switch на Android (был первым из созданных), но он доступен только тем, кто купит этот геймпад GameSir. На данный момент этот эмулятор уступает своим конкурентам, а о самом геймпаде писали, что он вполне "норм". Пусть ценник и был выше остальных, но зато он отвечал всем моим требованиям.
Существует несколько версий и вариантов геймпадов GameSir. Вторая версия меня полностью устраивает, и подключение по Bluetooth является оптимальным вариантом, так как в будущем я смогу подключить его к iPhone, например.
Без лишних раздумий я заказал его, и в дальнейшем не пожалел.
Так же мне понадобилась SD карта для хранения биосов и ромов игр. Тут всё просто, я нашел недорогой вариант всё на том же маркетплейсе на 64гб.
Весь сетап был закуплен и доставлен, и настало время переходить к настройке и подключению.
Глава 2. Загрузка ромов
Забегая вперед, скажу, что я буду загружать, как правило, чистые американские или европейские версии игр, так как я планирую пользоваться ачивками через сайт RetroAchievements.
Где и как скачивать, думаю, вы знаете и без меня. Если же потребуются какие-то дополнительные пояснения по конкретной платформе, я напишу в соответствующем разделе.
Перед поднятием пиратского флага, советую структурировать файловую систему так, чтобы потом не запутаться.
Все ромы я вынес на SD карту, и создал отдельную папку для каждой платформы.
Единственный совет, который я бы хотел дать на будущее: переименовывайте каждый ром в соответствии с корректным названием игры (например, нижние подчеркивания следует менять на пробелы, удалять знаки версий и различные номера, не относящиеся к названию игры).
Глава 3. Лаунчер
Наверное, всего бы этого лона не было, если бы не одно приложение, и имя ему – «Daijishou».
Это новый лаунчер для Android-устройств отличается удобством и простотой использования. Он отлично работает в паре с Retroarch и другими эмуляторами, установленными из Play Market. По сути, это портативное решение, подобное Emulation Station, но, на мой взгляд, более продуманное и эффективное. Такой лаунчер автоматически определяет тег образа рома или диска, генерирует иконку, описание, дату релиза и даже добавляет видео (с YouTube).
Можно было бы реализовать все задуманное только с помощью Retroarch и, возможно, результат был бы не хуже. Однако это заняло бы значительно больше времени. Поэтому в дальнейшем я буду использовать Retroarch только как удобную библиотеку с эмуляторами и не более того.
А теперь по порядку:
Скачиваем приложение с Play Market.
Первое о чем нас попросит Daijishou - это загрузить платформы которые будут нам нужны.
Перед нами открывается внушительный список поддерживаемых платформ. Думаю, каждый сможет найти здесь то, что искал.
Для начала я выбрал NES. Другие платформы могут быть загружены позже.
Я не буду каждый раз поправлять себя и говорить, что NES – это Dendy или Famicom.
И вот перед нами стартовый экран лишь с одной платформой NES.
Далее переходим во вкладку Settings.
Самая правая вкладка сверху
Открываем Library и единственное, что здесь было бы неплохо сделать - это включить опцию «Disable player warnings». Эти предупреждения появляются, когда вы хотите сменить ядро или эмулятор, выбирая другую платформу. Считаю их ненужными.
Disable player warnings - включено.
Далее в настройках Appeareance можно выбрать и установить тему. Из всех мне больше всего понравилась тема «Arrow».
Download platform wallpapers pack - выбор темы оформления.
Download pack - скачать и автоматически установить тему.
Финальный вид темы.
В целом, в этих настройках можно слегка изменить дизайн, отображаемые элементы и цветовые схемы. Последней важной опцией считаю включение 24-часового формата.
Use 24-hour clock - включить.
Следующими важными настройками являются RetroAchivmients.
Для тех кто не знает что такое RetroAchivments, вот небольшое описание:
"RetroAchievements - онлайн-платформа, которая позволяет игрокам заново открыть для себя классические игры через систему достижений. Зарегистрировавшись на сайте, пользователи могут отслеживать свой прогресс, сравнивать свои результаты с результатами других игроков, а также получать виртуальные награды за достижение определенных этапов в играх. RetroAchievements позволяет игрокам глубже погрузиться в игровой процесс и бросает вызов их игровому мастерству, делая старые игры свежими и интересными для нового поколения геймеров."
4pda
Проще говоря, подключение RetroAchivmients позволит нам просматривать полученные достижения в той или иной игре.
Для начала нам нужен аккаунт, зарегистрировать его можно непосредственно на сайте retroachievements.org.
После регистрации в настройках RetroAchievements в Daijishou нажмите на “Account credentials” и введите свой логин и пароль, которые вы только что зарегистрировали на сайте RetroAchievements.
На этом основные настройки можно завершить. Конечно, я не упомянул некоторые настройки, которые могут быть важными в том или ином случае. Например: создание пользователей/игроков, сжатие изображений обложек игр, экспорт и импорт настроек, выбор цветов для темы, фоновое изображение, размер интерфейса и прочее. Так как “прямо из коробки” все настроено уже достаточно хорошо и эти настройки потребуются только в конкретных ситуациях.
До сих пор не видел на пикабу полноценного полезного поста о стимдеке, который бы ответил на большинство вопросов новичков. Изложу личный опыт со ссылками на полезные ресурсы и видео. Комментарии и обсуждение крайне приветствуются: добавляйте, если есть что добавить.
Цена: за рекомендуемую цену железка - топ. Лично я рекомендую не брать дороже чем за 40 тысяч рублей (500-550 долларов), чем дальше - тем ниже будут цены.
Комплектация:
- я взял самую дешевую 64гб версию и воткнул туда сразу microSD флешку на 256 гб, которая завалялась в ящике. На первое время вам флешки хватит, при желании поставите SSD (это несложно и недорого).
- глянцевый экран в самой дешевой комплектации проблем не доставляет; всегда получается найти положение, при котором лампа/окно/лицо не отсвечивается. Матовые экраны не люблю, любой источник света создает слишком большой ореол на весь экран.
Комфорт:
- габариты большие, вес кажется легким для таких габаритов. Держать очень удобно, руки "затекают" гораздо меньше, чем при игре на китайских Windows консолях (aya neo, onexplayer, итд.).
- комплектный кейс (на молнии) слишком большой для комфортной переноски. Я себе взял пластмассовый чехол JYS-SD009 (закрывает стики и экран + появляется откидная подставка-ножка), с ним стимдек гораздо более транспортабелен (обычно кидаю в рюкзак).
- Кнопка STEAM+LB (Magnifier) абсолютно в любое время (в любом приложении, в любой игре) открывает экранную лупу, которая моментально позволит прочитать мелкий текст, будь то диалог в CRPG или всплывающая подсказка мелким шрифтом. Конечно, экран больше 7 дюймов был бы лучше (лично я вообще бы хотел раскладывающийся в квадратный, как на samsung fold телефонах), но и с 7 дюймами можно без проблем играть в абсолютное большинство ПК игр.
Периферия:
- Через USB-C hub я подключаю мышку, клавиатуру, монитор, питания (если нужно). Таким образом стимдек дома становится полноценным ПК. Выдернул хаб, взял стимдек - и пошёл по делам. Пришел - воткнул. Очень удобно.
Windows:
- По умолчанию стоит Steam OS + Arch Linux. Steam OS великолепна, но если очень нужен Windows - то рекомендую рассмотреть возможность dual boot'a или установки винды на отдельную microsd (чтобы с нее загружаться). Инструкция тут: https://www.youtube.com/watch?v=KaviK55od6Y
- На текущий момент Windows нужна для игр, которые или "ну совсем никак не заводятся" под Steam OS, или если это онлайн игры с защитой Easy AntiCheat (которая пока не очень хорошо дружит со стимдеком).
- Для винды фанаты уже наклепали некоторое количество утилит для контроля мощности (TDP), гиро, горячих клавиш; но все-равно винда остаётся виндой, Steam OS в целом именно для игровой приставки - гораздо удобнее.
SteamOS
- конфетка, идеальная консольная оболочка.
- Максимально консольный опыт, всё работает из коробки (на лицензионных рекомендуемых играх), но если хочется гибкости - она будет (desktop mode в помощь)
- Игры закрываются (консоль выключается) и возобновляются за 5 секунд, как на Nintendo Switch. На китайских виндоконсолях так не получится (я знаю, у меня был Onexplayer Mini 5800u, там по минуте-две уходило на то, чтобы стартовать игру)
- поддержка Valve. Частые хорошие обновления.
Производительность-батарея-игровые настройки
- В SteamOS возможно очень просто и быстро тонко настроить производительность для каждой игры. Суть простая: чем больше FPS и лучше графика - тем быстрее садится батарея. Чем больше ограничиваешь расход мощности (выставлением TDP), бросаешь графику в "низкие" настройки (на 7 дюймах смотрится все-равно хорошо), ограничиваешь FPS и Refresh Rate 30 кадрами - тем дольше проживет батарея на одном заряде.
- 40hz частота экрана (и ограничение фпс) - это must have для прожорливых игр. 40fps находятся прям посередине между 30fps и 60fps по плавности. Если 30фпс - это "рваное мыло", то 40фпс - это уже "очень плавный геймплей" (в сравнении с 30). Я всегда стараюсь добиться хотя-бы 40фпс, пускай и на низких настройках и с FSR.
- ААА игры (хоть Cyberpunk2077, хоть Elden Ring) на низко-средних идут в 30-40 FPS. TDP 8-12-15. FSR добавить по вкусу. Часто FSR + "высокие-ультра" внутриигровые настройки выглядят лучше, чем "без FSR"+"низкие" настройки. Батареи в таком случае хватит на 2-4 часа, в зависимости от TDP и FPS.
- 2D инди и старые игры летают в 60fps. TDP 3-5w, можно FPS не ограничивать (тогда input lag будет минимальным). Батареи в таком случае хватает на 6-10 часов, в зависимости от игры.
Мои предпочтения: экшен игры хотя бы в 40фпс (экран 40hz), графика похуже, TDP пониже, батарея живет подольше (3.5-8 часов). Пошаговое/визуальное кинцо можно и 30фпс, и даже 20фпс (на любителя). Батарею в таком случае можно растягивать "бесконечно" :) TDP 8w часто хватает на тяжелые проекты, TDP 3w часто хватает на 2д индюшатину.
Совместимость с играми:
- Куча игр идет на стимдеке из коробки ("great/playable on Steam Deck")
- Куча игр идет без проблем, даже если Steam говорит обратное. Сайт ProtonDB https://www.protondb.com/ подскажет, что именно и как запускается.
- Игры с Easy Anti Cheat на конец 2022 года идут плохо/совсем не идут. Для их запуска, скорее всего, придется ставить винду (или добавят совместимость в будущем).
-- устанавливаешь на Windows компе, копируешь все файлы, добавляешь через стим (или);
-- качаешь установщик на стимдек, добавляешь сетап.ехе через стим как игру, устанавливаешь игру, в свойствах установщика в стиме указываешь путь к установленному .ехе игры для запуска
Кнопки-тачпады-сенсоры-бамперы. Steam Input - это вышка!
- В RTS (AoE2, Казаки, Starcraft, итд.) играть можно! (Биндить скиллы на слои, горячие макросы на тачпады, миникарту на тачпад через mouse regions, "область кнопок" на область тачпада: https://www.youtube.com/watch?v=Oi5ffInlv-M )
- Вся эта магия называется Steam Input + 2 сенсорных тачпада спереди + 4 дополнительные кнопки сзади.
- Кнопки сзади лучше нажимать не "сдавливая ручки стимдека", а "вдавливая кнопку в заднюю поверхность, как бы протыкая стимдек пальцем сзади". Задние кнопки - в форме "качельки", поэтому "протыкаются" они проще, чем "сдавливаются". Попробуйте, поймёте о чем я говорю.
- Руками для лицензионных игр эти controller's layout настраивать не нужно, есть "пресеты сообщества": открываешь игру -> настройки контроллера -> какой пресет самый "наигранный" и какой нам близок -> пресет выкачивается, играешь.
РЕКОМЕНДУЕМЫЙ МНОЮ СОФТ И ПРОЧИЕ СОВЕТЫ:
- Heroic Games Launcher, устанавливается в Desktop режиме через Discover (аналог - Lutris, не использовал). Нужен для безпроблемного добавления игр из магазинов Epic Games и GOG. В настройках не забыть галочку "добавлять игры в Steam", тогда в Gaming Mode все установленные игры будут отображаться отдельно. https://www.youtube.com/watch?v=D-ByybEBipU
- Decky Loader. Утилита для использвоания плагинов внутри Gaming Mode. Почти все плагины - нужные. Особенно мне нравится Vibrant Deck (увеличить Saturation дисплея до 130%) и Proton Badges (видеть внутри магазина Steam, насколько хорошо игры идут на стимдеке). https://www.youtube.com/watch?v=YQhvNiI3hKI
- Swap File увеличение от Cryobyte33 с YouTube. Безопасный скрипт (на свой страх и риск, ха), увеличивающий производительность за счет 8-16гб свободного места. https://www.youtube.com/watch?v=od9_a1QQQns
(где "<appikey>" - генерируется в профиле личного кабинета на steamgriddb.com )
- EmuDeck. Эмуляция ВООБЩЕ ПОЧТИ ВСЕХ ИРОВЫХ ПЛАТФОРМ. Game Boy, Neo Geo Pocket, Game Gear, Nintendo DS, Nintendo 3DS, Sony PSP, Dreamcast, Playstation, Nintendo 64, Wii, GameCube, Wii U, Switch... Я сам эмуляторы еще не ставил, но когда-нибудь у меня руки до них дойдут. https://www.youtube.com/watch?v=rs9jDHIDKkU
- При получении стимдека (после апдейтов) первым делом рекомендую настроить (уменшить) deadzone Левого и Правого стиков. С завода дедзоны слишком большие, рекомендую уменьшать их до тех пор, пока стики не начнут дрифтить (я в самый минимум выкрутил, у меня даже тогда не дрифтило). Это значительно повышает отзывчивость управления.
- ProtonTricks. Для лучшей совместимости с Windows играми (directX, DotNet4.0 и прочие нужные библиотеки). Устанавлевается через Discover https://www.youtube.com/watch?v=zUJz-SdWul4
- Естественно, на Steam Deck можно стримить геймплей, причем не только с ПК, но и с PS5 например (ну вдруг вам очень надо?). Steam Link, Parsec, (Moonlight? или как оно там называется...) и другие локальные и облачные сервисы.
- Файлы на Steam Deck я заливаю со своего Windows ПК по wifi через ssh/sftp. Можно, конечно, и sd карточку каждый раз вставлять-вынимать, но SFTP в домашней сети (а можно и с телефона на дек таким образом подключаться) гораздо практичнее. https://www.youtube.com/watch?v=Cb1U0_KbtLQ
- SD карточка в файловой системе находится примерно по следующему пути: steamdeck\run\media\mmcblk0p1\ . Включите отображение скрытых файлов/дайте себе админские права, если у вас не получается sd карточку найти.
- 100% я еще о чем-то не рассказал. Продолжение скорее всего будет в комментариях (добавляйте, не стесняйтесь).
ВЫВОДЫ:
- Стимдек - топ за свои деньги (40 тысяч рублей и меньше).
- Китайские консоли даже за 1.5 тысячи долларов, даже более мощные - не имеют такой гибкости и функциональности (привет тачпады и 4 доп кнопки).
- Батареи лично мне хватате на 4-7 часов геймплея. Добавил павербенк - и розетки "не нужны".
- С поддержкой от Valve и сообщества стимдек будет актуален еще несколько лет. Только через год-полтора китайцы выпустят значительно более мощные консоли (на новых чипах), но оптимизация в первую очередь будет под стимдек (в пример - Switch).
- Всем, кто подходит к покупке осознанно, стимдек чрезвычайно "зайдёт".
Мне нравится технология RFID, но карты типа EM Marine совершенно не защищены. Ранее на других ресурсах у меня были публикации как сделать эмулятор буквально на трёх деталях. Но, на деле, этот эмулятор оказался достаточно сложным для повторения.
Поэтому я принял решение сделать такой эмулятор, который может повторить даже ребёнок. Все компоненты продаются чуть ли не в каждой деревне. При этом его функциональность может быть даже расширена. Например, можно сохранять в нём несколько карт или можно добавить ещё считыватель, и сохранять все карты в одном устройстве, или же использовать его для… В общем, поехали.
Аппаратное обеспечение
Как я уже сказал, эмулятор должен быть собран на доступных комплектующих, которые можно легко достать. Для начала рассмотрим схему эмулятора.
У нас есть колебательный контур, который мы будем замыкать в определённое время транзистором и таким образом в считывателе будет изменяться ток, и он будет получать передаваемые данные.
Самым сложным для нас в этой связке остаётся настроенные на частоту 125 кГц колебательный контур. И есть очень простое решение, откуда его можно взять. В продаже существует считыватель RFID-меток для Arduino RDM6300. Считыватель стоит сущие копейки, а у него в комплекте уже идёт антенна, а резонансный конденсатор уже распаян на плате. Таким образом, по сути считыватель нам нужен только для двух деталей: катушки и резонанстного конденсатора.
Считыватель RDM6300 и расположение резонансного конденсатора.
Я купил этот считыватель за какие-то копейки, которые несоизмеримы с трудами по намотке и настройке антенны. Самая сложная операция у нас — это отпаять данный конденсатор и припаять его на монтажную плату. Верю, что с ней справиться даже школьник младших классов.
В результате собираем всё на макетной плате. У меня два резистора в параллели стоит только лишь потому, что на 10кОм резисторов у меня не было под рукой, а были только на 20кОм.
Схема в сборе.
Ну и посмотрим крупным планом, как это всё выглядит. Я специально под конденсатор выделил отдельную платку, там он припаян прямо на монтажные иголки, которые вставлены в этот матрац.
Для того, чтобы проверять работу эмулятора, изначально я думал использовать тот же RDM6300 (купил их два). И даже по началу так и делал, но потом решил, что это как-то не серьёзно, одной Ардуиной отлаживать другую, и разорился на заводской считыватель.
Заводской считыватель.
Взводим таймер
Наиболее полно всю физику процесса и принцип работы я рассказал в своей предыдущей статье, поэтому настоятельно рекомендую с ней ознакомиться. Однако для понимания того, что я делаю немного освежу некоторые моменты.
Напомню, что у EM4102 используется схема Манчестерского кодирования. Когда идёт модуляция EM4102 протокола, время передачи одного бита может составлять 64, 32 или 16 периодов несущей частоты (125 кГц).
Проще говоря, при передаче одного бита, у нас меняется значение либо единицы на нуль (при передаче нуля), либо с нуля на единицу (при передаче единицы). Соответственно, если мы выбираем для передаче одного бита информации 64 периода несущей частоты, то для передачи “полубита” нам нужно будет 32 периода несущей частоты. Таким образом каждый полубит должен меняться с частотой:
f=125000/32 = 3906,25 Гц
ериод этого “полубита” будет равен 256 мкс.
Теперь нам нужно посчитать таймер, чтобы он нам дёргал ногу с данной частотой. Но я стал так ленив, что открыв даташит и начав зевать, решил найти какое-то готовое решение. И оказалось, что есть готовые расчёты таймеров, только вбивай свои данные. Встречайте: калькулятор таймера для Ардуино.
Нам необходимо только забить частоту таймера 3906 Гц, и нам сразу сгенерируют готовый к использованию код. Ну не чудо ли!
Обратите внимание, что частоту я вводил целыми, а он её посчитал дробными и именно ту, которая нам и нужна. Код инициализации таймера у меня получился следующий:
Вектор прерывания для вывода устроен тоже очень просто. Напоминаю, что нам необходимо делать переход с единицы на нуль в случае передачи нуля, и с нуля на единицу, в случае передачи единицы (смотрите рисунок для понимания). Поэтому смотрим, что мы сейчас передаём и в каком месте “полубита” находимся, постепенно считывая из массива data все данные.
ISR(TIMER1_COMPA_vect) { TCNT1=0; if (((data[byte_counter] << bit_counter)&0x80)==0x00) { if (half==0) digitalWrite(ANTENNA, LOW); if (half==1) digitalWrite(ANTENNA, HIGH); } else { if (half==0) digitalWrite(ANTENNA, HIGH); if (half==1) digitalWrite(ANTENNA, LOW); } half++; if (half==2) { half=0; bit_counter++; if (bit_counter==8) { bit_counter=0; byte_counter=(byte_counter+1)%8; } } }
Сорян, код тут плохо вставляется, но вы всегда можете посмотреть исходники на гитхабе.
Перевод данных для передачи
Тут тоже следует освежить в памяти форматы данных, хранимые на карте. То, в каком виде они записаны. Давайте на живом примере.
Предположим у нас есть карта, но нет ридера. На карте написан номер 010,48351.
Реальная карта с номером 010, 48351.
Как этот номер нам перевести в тот серийный номер, который записан на карте? Достаточно просто. Вспоминаем формулу: переводим две части числа отдельно:
010d = 0xA 48351d = 0xBCDF
Итого, серийный номер у нас получается: 0xABCDF. Проверим его, считываем карточку считывателем (он читает в десятичном формате), получаем число:
0000703711
Переводим его любым калькулятором в хекс-формат и получаем снова: 0xABCDF.
Вроде пока просто, погодите, сейчас мозги придётся поднапрячь. Напомню формат данных, которые лежат на самой карте.
Проговорю словами:
1.Вначале идут девять единиц заголовка.
2.Младшие пол байта ID клиента.
3.В конце бит чётности.
4.Вторые пол байта ID клиента.
5.Бит чётности.
6.Младшие пол байта нулевого байта серийного номера.
7.Бит чётности
8.Старшие пол байта данных байта нулевого байта серийного номера.
9.Точно так же все остальные данные, передаются ниблами и оканчиваются битом чётности
10.Самое сложное. Теперь все эти 10 нибблов по вертикали точно так же вычисляется бит чётности (прямо как в таблице).
11.Завершает всё это безобразие стоп бит, который равен всегда нулю.
Итого у нас получается 64 бита данных (это из пяти байт!). В качестве ремарки, мой считыватель не читает ID-клиента, и я его принимаю равным нулю.
Что такое бит чётности? Это количество единиц в посылке: если оно чётное, то бит чётности равен нулю, если нет, то единице. Проще всего рассчитать его, просто обычным XOR.
На самом деле я долго думал, как элегантнее сделать пересчёт серийного номера в посылку, да так чтобы это занимало меньше места в микроконтроллере. Поэтому набросал небольшую программку, которая это делает и на ней оттестировался.
Самое важное для нас, это то как будет выглядеть биты чётности. Для удобства я сделал вывод на экран точно так же, как в этой табличке. В результате получилось вот так.
card_id — это серийный номер карты (о котором мы говорили выше).
Первый столбец — это ниблы, второй — их битовое представление, третий — это бит чётности. Третья строка снизу — это биты чётности всех ниблов. Как я уже сказал, они рассчитываются просто операцией XOR.
Протестировав расчёты, сверив из визуально, я проверил получившиеся данные в программе на Arduino (последняя строка специально для вставки в код). Всё отработало отлично. В результате наброска этой программы, я получил готовую функцию пересчёта. Раньше, расчёты битов были чужими программами на компе и мне не нравилась их монструозная реализация. Таким образом функция пересчёта серийного номера в формат передачи выглядит так:
Всё, можно переходить к полевым испытаниям. Исходный код проекта обитает тут.
Испытания
Как говориться, лучше один раз увидеть, чем тысячу раз прочитать. Специально для вас записал кино о работе этого эмулятора. Хотел его протестировать на реальном железе, и попробовать пробраться в офис с помощью Arduino, но с проклятой пандемией туда не пускают. Поэтому натурные испытания придётся смотреть на столе, в лабораторных условиях.
Выводы
Очень надеюсь, что подобные статьи подстегнуть новичков изучать программирование и электронику. А так же они поспособствуют уходу с рынка такого типа карт, как самых незащищённых и небезопасных, поскольку теперь их может скопировать и эмулировать даже ребёнок.
Выражаю благодарность Michal Krumnikl за его терпение много-много лет назад, когда он мне по icq разъяснял работу подобного эмулятора, а так же помощь с разработкой кода. В некотором смысле это его идеи и наработки 13-ти летней давности.
Хочу рассказать о непопулярном, но, на мой взгляд, самом крутом эмуляторе ZX Spectrum.
Retro Virtual Machine создана талантливым испанцем и распространяется бесплатно. Эмулятор спектрума имеет:
- Визуализированную загрузку игр и программ с магнитофона с характерными звуками открывания крышки кассетника, нажатия механических кнопок и самого спектрумовского звука загрузки.
- Имитация ЭЛТ экрана с мерцанием, изогнутостью, “scanlines”, затемнением экрана по бокам и прочими эффектами. При этом, всё настраиваемо и реализовано отлично, относительно того, что я видел до этого.
- Мелочи вроде анимированного включения Спектрума, эффекта при нажатии кнопки Reset, даже наматывание плёнки в кассете анимировано реалистично. Эти мелочи помогают приблизить опыт работы с эмулятором к настоящему ZX Spectrum.
Для более полного погружения рекомендуется намочить ватку одеколоном и положить рядом с компьютером.
Записал небольшое видео, чтобы показать как выглядит работа с эмулятором.
Не так давно я писал о том, как пытался создать подобие портативной консоли из нового флагманского смартфона Redmi Note 9 Pro Max (это была шутка, если что). Тогда я коснулся темы эмуляции различных платформ, вызвав ряд вопросов о настройке, принципах работы и возможности запуска определенных игр. В большинстве случаев вопросы касались PlayStation 2 и Nintendo Switch. Я осознаю, что эмуляция Switch является приоритетной для многих, и обязательно расскажу об этом более подробно чуть позже. А пока давайте детально разберем, как обстоят дела с эмуляцией PlayStation 2 на Android.
Каждый раз задерживаю дыхание на этом моменте. Кто знает, тот знает.
Все тесты и настройки буду осуществлять на Redmi Note 9 Pro Max.
Как я упоминал в предыдущем посте, есть всего два рабочих эмулятора PS2 на Android: DamonPS2 и AetherSX2. Теперь немного подробнее о каждом из них.
DamonPS2 – это первый созданный эмулятор. Он обеспечивает среднее качество эмуляции и имеет встроенную рекламу на каждом шагу. Единственная возможность для пользователей с 32-битным процессором.
AetherPS2 - более простой и удобный эмулятор. Хорошее качество эмуляции, поддержка RetroAchievements.
Хотя выбор здесь очевиден, я все же хотел бы сказать несколько слов и о DamonPS2, так как он вызвал у меня бурю эмоций.
DamonPS2
При запуске эмулятора вы увидите криво созданный интерфейс с шакальным изображением PlayStation 2. Сразу после этого вам предложат купить профессиональную версию за 469 рублей, хотя вы даже не представляете, зачем она вам нужна.
Допустим, вы знаете, как импортировать BIOS и уже подготовили игры, и хотите сыграть в вашу любимую Need for Speed: Underground, но внезапно обнаруживаете, что для запуска у вас "Недостаточно монеты". И чтобы продолжить, вам необходима хотя бы одна (и теперь вы понимаете, для чего требуется профессиональная версия, но постойте, это еще не все). Получить ее вы сможете, просмотрев китайскую рекламу.
Что ж, выбора нет, смотрим и запускаем игру.
Игра действительно запускается, управление работает, и мы начинаем нашу первую гонку. Но тут перед нами появляются графические артефакты, низкая скорость и тормозящий звук.
Кажется, что сейчас мы все это исправим, ведь для этого существуют настройки. Но вот беда, они тоже ПЛАТНЫЕ!
Не все конечно, но большая часть.
Даже если у вас 32-битный процессор, не советую использовать данную пародию на эмулятор. Ни одна копейка от показа рекламы не должна достаться его разработчикам. Я говорю это потому, что есть наглядный пример того, как это может быть сделано: эмулятор Nintendo Switch - Egg NS, где игра без их геймпада доступна только после просмотра рекламы. Однако там это реализовано гораздо профессиональнее, чем в DamonPS2. DamonPS2 создан только для того, чтобы выкачать деньги у игроков, решивших вспомнить былые времена и поиграть в свои любимые игры с PS2. Если у вас есть опыт использования платной версии, пожалуйста, сообщите об этом в комментариях.
Предлагаю перестать заниматься ерундой и переходить к эмулятору здорового человека.
AetherPS2
Конечно, мы будем использовать AetherPS2, точнее его пропатченную версию NetherSX2. В этой версии, помимо мелких изменений, есть возможность интеграции с помощью Daijishou. Я поясню, что я имею в виду:
Если мы добавим обычный AetherPS2 в Daijishou, при запуске любой игры откроется сам эмулятор, а не необходимая нам игра. NetherSX2 запустит именно то, что мы от него требуем.
Важно: необходима версия NetherSX2+1.5-4248 [patched] или выше. Взять её вы можете как обычно тут.
Так же для эмуляции Playstation 2 нам потребуется BIOS самой консоли, я использую "ps2-0230a-20080220". После загрузки, файл BIOS расположить в удобное для вас место.
При первом запуске делаем следующее:
1/3
Настройки NetherSX2 при запуске (Скриншоты выше):
Выбрать предустановку, в зависимости от мощностей вашего устройства.
Импортировать BIOS из той папки, где он у вас находится. Выбрать в списке.
Указать папку с образами.
Так же я хочу подключить RetroAchievements, для тех кто не знает что это, вот небольшое описание:
RetroAchievements - онлайн-платформа, которая позволяет игрокам заново открыть для себя классические игры через систему достижений. Зарегистрировавшись на сайте, пользователи могут отслеживать свой прогресс, сравнивать свои результаты с результатами других игроков, а также получать виртуальные награды за достижение определенных этапов в играх. RetroAchievements позволяет игрокам глубже погрузиться в игровой процесс и бросает вызов их игровому мастерству, делая старые игры свежими и интересными для нового поколения геймеров.
4pda
Проще говоря, подключение RetroAchievements позволит нам просматривать полученные достижения в той или иной игре.
Для начала нам нужен аккаунт, зарегистрировать его можно непосредственно на сайте retroachievements.org.
После этого включаем достижения в самом эмуляторе:
1/3
Включение достижений (Скриншоты выше):
Открываем меню в левом верхнем углу.
Далее нажимаем на "Настройки приложения".
Переходим в раздел "Достижения".
Вводим логин и пароль от сайта с достижениями.
В целом, в этих настройках каждая опция описана достаточно понятно, поэтому у вас не должно возникнуть проблем.
Глава 2. Настройки.
Сейчас я подробно пройдусь по важным настройкам эмулятора и расскажу, на что они влияют. Важно понимать, что эти настройки актуальны только для меня и моего устройства. Вы же можете настроить все так, как вашей душе угодно. Для меня в приоритете производительность, чем ультра HD-графика. С такими настройками я достиг стабильного фреймрейта в большинстве игр.
Переходим в настройки, и открываем первую вкладку "Общие".
Общие
Интерфейс
Быстрый запуск - при включении этой опции старт игры будет мгновенным, минуя загрузочный экран Playstation 2.
Включить патч-коды - включает использование пользовательских патч-кодов для обхода ограничений в определенной игре.
Сохранять при выходе - при закрытии эмулятора через главное меню сохраняет прогресс. Не работает если просто закрыть приложение.
Добавлять область выреза - добавляет небольшую область у фронтальной камеры. Удобно если вы играете с растянутым изображением на весь экран и имеете вырез под камеру и динамик.
Ориентация экрана эмуляции - поворот экрана по умолчанию.
Расположение экрана - возможность расположить экран на одной из 3-х позиций (Слева/сверху, по центру, Справа/снизу).
Язык интерфейса - выбор языка эмулятора.
Тема - выбор темы эмулятора.
Для себя включил лишь Быстрый запуск. Остальное - опционально.
Индикация на экране
Показывать уведомления - включает отображение различных уведомлениях о системных событиях.
Показывать FPS - отображение счётчика кадров и скорости игры.
Показывать скорость - отображение скорости эмуляции в процентах.
Показывать разрешение - информация о разрешении эмуляции в данный момент.
Показывать загрузку CPU - информация о нагрузке на потоки процессора.
Показывать загрузку GPU - информация о нагрузке на графический процессор.
Показывать данные GS - дополнительная информация в правом верхнем углу экрана.
Показывать время кадров - отображение небольшого графика с историей изменения времени кадров.
Показывать версию/модель - информация о устройстве на котором запущен эмулятор.
Показывать индикаторы состояния - дополнительные иконки, когда эмуляция происходит не в стандартном режиме. Например при ускорении появиться небольшая иконка перемотки в правом верхнем углу.
Показывать настройки - отображение всех значимых настроек в правом нижнем углу.
Показывать нажатия контроллера - небольшая сводка о нажатых клавишах.
Масштаб сообщений - размер сообщений и статистики.
При первом запуске для отладки и настроек рекомендовал бы включить: Показывать уведомления, Показывать FPS, Показывать скорость, Показывать загрузку CPU, Показывать загрузку GPU, Показывать индикаторы состояния.
После отладки я для себя оставил только: Показывать FPS, Показывать индикаторы состояния.
Мы закончили с вкладкой “Общие”. Для тех, кто предпочитает ориентироваться по скриншотам, вот:
1/3
Настройки приложения - Общие
Далее открываем следующую вкладку "Система".
Система
Производительность
Частота тактов EE (замедление) - эта настройка скорости эмуляции работы центрального процессора PlayStation 2. Вы можете повысить ее, чтобы ускорить игры, но тогда могут возникнуть проблемы. Если снизить эту настройку, игры будут работать стабильнее, но медленнее.
Пропуск тактов EE (замедление) - эта настройка, позволяющая пропускать некоторые этапы при работе центрального процессора PlayStation 2 для повышения производительности. Однако это может вызвать сбои в играх. Уровень пропуска тактов EE следует выбирать в зависимости от конкретной игры и характеристик вашего устройства.
Режим управления сродством - это функция, которая может повысить производительность на некоторых устройствах, например Samsung и Pixel, при запуске игр от PlayStation 2.
Многопоточный VU1 - это функция, которая использует многопоточность для увеличения скорости эмуляции. Она позволяет эмулятору эффективнее использовать процессор, что особенно актуально для систем с множеством ядер, для выполнения графических расчетов. Это может значительно повысить производительность в некоторых играх.
VU1 без задержки - альтернативный метод. Быстрее, но в некоторых играх приведет к завышению частоты кадров.
Ускорение CDVD - быстрый доступ к диску, ускоряет время загрузок.
Сообщать о небезопасных настройках - функция, которая выдает различные уведомления о том, что игра запущена с параметрами, считающимися небезопасными.
Как видите, здесь много параметров, влияющих на производительность. Параметры, такие как Частота тактов EE и Пропуск тактов EE, я бы изначально оставил на значении 0 и вернулся к ним, если другие настройки не помогут и скорость останется крайне низкой.
Мои настройки: Частота тактов EE-100%, Пропуск тактов EE - нормально, Режим управления сродством - отключено, Многопоточный VU1 - отключено, VU1 без задержки - включено, Ускорение CDVD - отключено, Сообщать о небезопасных настройках - отключено.
Настройка скорости
Ограничение кадров - если опция включена, не дает игре работать быстрее чем 100% от своей скорости.
Обычная скорость - на какой скорости должна воспроизводиться игра.
Коэффициент ускорения - при какой скорости будет воспроизводиться игра, если нажата кнопка ускорения.
Коэффициент замедления - при какой скорости будет воспроизводиться игра, если нажата кнопка замедления.
Единственное что я поменял здесь - это Коэффициент ускорения - 300%, так как люблю жанр JRPG а пошаговые бои бывают невероятно долгими.
Скриншоты раздела Система:
1/2
Настройки приложения - Система
Графика
Боюсь, данный раздел вызовет много споров. Я понимаю, что для некоторых качество картинки - это самое главное. Но я все же стремлюсь к повышению производительности. Пожалуйста, учтите это, когда будете писать свой гневный комментарий.
Рендеринг
Графический движок - здесь можно выбрать API. По умолчанию используется OpenGL, но я рекомендую сменить его на Vulkan. Ни в коем случае не выбирайте “Программный”.
Масштаб разрешения - выбор разрешения эмуляции. Сильно влияет на производительность.
Разница между оригинальным разрешением PS2 и разрешением увеличенным в 6 раз
Билинейная фильтрация - улучшает качество изображения и убирает "Лесенки" при увеличении или изменении изображения.
Разница между оригинальной билинейной фильтрацией с PS2 и полностью отключённой.
MIP-текстурирование - это техника, которая улучшает качество текстур на 3D-моделях при различных расстояниях от камеры путем использования текстур разного разрешения.
Трилинейная фильтрация - метод текстурной фильтрации, который обеспечивает плавное сглаживание текстур при их увеличении или уменьшении, используя интерполяцию между ближайшими уровнями MIP-карт, чтобы предотвратить пиксельные артефакты и улучшить качество изображения.
Анизотропная фильтрация - это метод обработки текстур, который позволяет сохранить детали и качество текстур, даже когда они растягиваются или сжимаются в разных направлениях, обеспечивая более реалистичное отображение.
Разница между 16 кратной анизотропной фильтрацией и полностью отключённой.
Точность смешивания - техника при которой пиксели смешиваются между собой.
Предзагрузка текстур - это процесс, при котором текстуры из игры заранее загружаются в память устройства для более быстрого доступа и улучшения производительности эмуляции.
Если сделать Масштаб разрешения меньше чем 1х, то он даст значительный прирост производительности, но ухудшение качества будет бросаться в глаза. Делать его больше чем 2х не вижу смысла, так как на экране телефона это будет не особо заметно.
Не советую полностью отключать MIP-текстурирование, так как это создаст мерцание текстур в играх.
Отображение игры
Соотношение сторон - определяет, как будет отображаться изображение игры на экране, включая форму прямоугольника (4:3) или широкоформатный экран (16:9).
Пропорции видеозаставок - тоже самое что и прошлый пункт, но для внутриигровых заставок.
Билинейный апскейлинг - увеличивает разрешение изображения, сглаживая пиксели, чтобы сделать его более четким на высокоразрешенных экранах.
Широкоэкранные патчи - автоматически применяет патчи для изменения изображения на широкоформатное. Как правило просто растягивает картинку.
Патчи удаления чересстрочности - убирает мерцание кадров в некоторых играх.
Вертикальная синхронизация - согласовывает частоту кадров игры с частотой обновления экрана, чтобы предотвратить артефакты на экране.
Растягивание по вертикали - позволяет в ручную растянуть изображение.
Кадрирование - позволяет в ручную переместить изображение на экране.
Не советую менять соотношение сторон на широкоформатный для всех игр, так как изображение получается растянутым.
Список моих настроек:
Соотношение сторон - Авт. стандартное
Пропорции видеозаставок - Отключено
Билинейный апскейлинг - нет
Широкоэкранные патчи - отключено
Патчи удаления чересстрочности - отключено
Вертикальная синхронизация - отключено
Растягивание по вертикали - 100%
Кадрирование - 0000
Постобработка
FXAA-шейдер - метод сглаживания изображения, который уменьшает артефакты и улучшает визуальное качество графики в играх.
Контрастно-адаптивная резкость (CAS) - эффект, который повышает резкость графики, делая изображение более четким и выразительным.
Резкость CAS - установка резкости в процентном соотношении, если CAS включен.
ТВ-шейдер - графический эффект, который придаёт изображению стиль старых телевизионных экранов CRT для создания ретро-атмосферы.
Сколько бы я не тестил 2 данные опции, я так и не понял как они работают. Поэтому оставил их выключенными. Если у вас есть наглядный пример как это работает, напишите пожалуйста в комментариях.
Скриншоты раздела Графика:
1/3
Настройки приложения - Графика
Звук
В настройках звука все в целом стандартно, кроме настройки Метод интерполяции. Если вам интересно что значит каждый пункт, то вот краткое описание:
Ближайший сосед: выбирает ближайший доступный звуковой сэмпл и использует его. Он может создавать более резкие переходы между сэмплами, что может придать звуку более "цифровой" характер.
Линейный: усредняет значения между двумя соседними сэмплами, что создает более плавные звуковые переходы и ближе к естественному звуку.
Кубический : этот метод использует кубическую интерполяцию для создания более плавных и округлых звуковых переходов между соседними сэмплами.
Эрмита: создает плавные переходы, а также может учитывать скорость изменения звука, что может сделать звук более реалистичным.
Катмулла-Рома: использует кубическую интерполяцию, но с использованием алгоритма Катмулла-Рома, который обеспечивает плавные звуковые переходы.
Гаусса: создает более сглаженные и мягкие переходы между сэмплами, что может придавать звуку более "гармоничный" характер.
Здесь я поставлю как рекомендует эмулятор Метод интерполяции - Гауса.
Карты памяти
Здесь можно настроить эмуляцию карт памяти. Создать новые, испортировать их и прочее.
Список игр
Позволяет изменить путь к образам игр, который вы указали в самом начале при первом запуске эмулятора.
BIOS
Менеджмент файлов прошивки.
Достижения
Про них я рассказывал в самом начале этого поста. Для себя я их конечно же включил.
Уведомление о наличии достижений.
Обратите внимание на значок достижений в верхнем левом углу. Если вы хотите играть с достижениями, а такой значок не появился, то:
У игры нет достижений. Список доступных игр для каждой платформы можете посмотреть здесь.
Если уведомление не появляется, но игра присутствует в списке поддерживаемых, вероятно, у вас другая версия, отличная от необходимой. Вы можете проверить правильную версию образа на сайте RetroAchievements найти данную игру и посмотреть какая версия нужна в "Supported Game Files". Чаще всего эта ошибка возникает у русифицированных версий.
Расширенные
Тут уже идут настройки для продвинутых пользователей, к сожалению я не из таких.
Единственное, что я бы посоветовал сделать здесь, это изменить Размер очереди VSync - 3кадра и Поточность программного рендера - 5 потоков.
На этом с настройками можно закончить. Я не буду касаться настроек управления, так как они индивидуальны для каждого. Я например использую геймпад GameSir X2, и он определился без каких либо проблем. Поэтому дальше давайте перейдем к самому интересному, а именно тестам.
Глава 2. Тесты.
Давайте договоримся, вам придется поверить на слово, что приложение для записи экрана немного нагружает систему, и из-за этого в геймплее иногда можно заметить микро-фризы. Если параллельно не вести запись, тогда я получал чуть более стабильную скорость эмуляции.
GTA III
Работает идеально. Те просадки которые вы можете видеть на видео, из-за записи экрана, о чём я говорил выше.
Итог: 10 из 10
Gran Turismo 4
Если честно GT4 меня приятно удивила. Я всегда считал её тяжелой игрой, со всеми бликами полированными машинами. Но оказалось что играется она прекрасно. Небольшие просадки встречаются только в меню, при выборе автомобиля для гонки.
Итог: 9 из 10
Persona 3 FES
Отличное качество эмуляции. Небольшие подтормаживания при большом количестве врагов, или при большом количестве спецэффектов.
Итог: 9 из 10
Tekken 5
Дополнительные настройки:
Частота тактов EE (замедление) - 75%(-1)
Tekken 5 отлично показал себя. К сожалению для более стабильной скорости пришлось поставить частоту тактов EE на -75%, но это совершенно не заметно во время игры.
Итог: 8 из 10
Prince of Persia: The Two Thrones
Дополнительные настройки:
Частота тактов EE (замедление) - 75%(-1)
Играется с небольшими просадками в редких местах. Не слишком гладко, но вполне приемлемо.
Итог: 8 из 10
NFS:Underground
Дополнительные настройки:
Частота тактов EE (замедление) - 75%(-1)
Пропуск тактов ЕЕ (замедление) - Незначительное замедление (1)
К сожалению, тут списать всё на запись экрана не получиться, просадки есть и без него. Меня они не то чтобы напрягают, но каждый раз я обращаю на это внимание. В остальном - играбельно. И как же хорошо всё-таки выглядел NFS:U в своё время.
Most Wanted работает примерно так же с этими настройками.
Итог: 7 из 10
GTA Vice City Stories
Дополнительные настройки:
Частота тактов EE (замедление) - 75%(-1)
Пропуск тактов ЕЕ (замедление) - Незначительное замедление (1)
Если быть честным, то тут я немного расстроился, так как думал, что порт с PSP будет работать идеально, но это не так. Бывают просадки, если в камере большое количество объектов.
Итог: 7 из 10
Black
Дополнительные настройки:
Частота тактов EE (замедление) - 50%(-3)
Black, с одной стороны, достаточно красивая игра, но с другой - довольно требовательная. Пришлось выкручивать частоту тактов до минимума и довольствоваться тем, что есть. По итогу, играть можно, хотя и с просадками частоты кадров во время большого количества эффектов на экране.
Итог: 5 из 10.
God of War 2
Дополнительные настройки:
Частота тактов EE (замедление) - 50%(-3)
Пропуск тактов ЕЕ (замедление) - Незначительное замедление (1)
Примерно похожая история что и с Black - красивая, но требовательная. Можно заметить как в конце при открытии сундука, когда появляется множество партиклов, скорость буквально падает на глазах. Но я вполне могу представить кого-то, кто сможет играть в таких условиях.
Итог: 4 из 10
Официальный FAQ
Какие требования?
Мы рекомендуем как минимум устройство, эквивалентное Snapdragon 845. Это означает наличие 4-х ядер (уровень Cortex-A75). Если у вас есть только два ядра (например, процессоры Snapdragon серии 700), вы не должны включать многопоточную VU, их производительность страдает от этого. Устройства с графическими процессорами Mali или PowerVR будут поддерживать приложение, но производительность будет ниже, чем у устройств с графическими процессорами Adreno.
Приложение говорит мне, что мне нужен BIOS.
Да, это так. Для игры в игры требуется образ BIOS, и это является обязательным. Этот образ должен быть извлечен из вашей собственной консоли с использованием домашнего приложения. В Интернете доступно множество руководств по извлечению BIOS вашей консоли.
Где я могу загрузить игры?
AetherSX2 следует использовать только для запуска тех игр, которые вы собственными силами извлекли из диска. Для извлечения игр вы можете использовать инструменты, такие как ImgBurn, чтобы создать образ .iso с диска, а затем скопировать его на ваше устройство через USB. По желанию, вы можете использовать инструменты для сжатия, такие как gzip или chdman, чтобы дополнительно уменьшить размер.
Мои игры работают медленно/подтормаживают.
Разные игры имеют разные аппаратные требования из-за того, насколько они используют различные компоненты консоли. См. следующий раздел.
Как улучшить производительность?
Используйте рендерер Vulkan, особенно если у вас есть графический процессор Mali. Обратите внимание, что некоторые игры могут работать лучше с OpenGL.
Для некоторых устройств с графическим процессором Mali включение Threaded Presentation в разделе Расширенные может значительно улучшить производительность.
Для уменьшения производительности эмулированного процессора вы можете установить отрицательное значение для частоты цикла и положительное значение для цикла пропуска в разделе Система. Это может привести к тому, что некоторые игры будут работать медленнее, а другие могут работать медленнее, чем ожидалось.
Если игра замедляется в зависимости от угла обзора камеры, это может быть связано с загрузкой GS, которая работает очень медленно на мобильных графических процессорах.
Для некоторых устройств (например, Samsung и Pixel) использование Режима управления сродством может улучшить стабильность производительности. См. раздел Режима управления сродством ниже.
Уменьшение точности смешивания может улучшить производительность в некоторых играх за счет нарушения визуального восприятия. Если у вас плохая производительность после обновления, сбросьте настройки. Иногда мы меняем настройки на более производительные по умолчанию.
Как добавить кнопки L3/R3 и правый аналоговый стик?
Откройте настройки управления во время игры, поставив игру на паузу и коснувшись значка контроллера в верхнем правом углу. Выберите "Добавить/Удалить" кнопки для L3/R3 или измените раскладку управления на двойные джойстики.
Как настроить контроллер сенсорного экрана (положение/масштаб)?
Нажмите кнопку паузы или кнопку "назад" во время игры, затем перейдите в Порт контроллера 1. Вы также можете добавить дополнительные кнопки для горячих клавиш, таких как быстрое перемотывание, быстрое сохранение/загрузка и т. д.
Мой беспроводной контроллер не работает.
Настройте контроллер в разделе Порт контроллера 1. Вы можете начать с автоматической настройки, но иногда триггеры или джойстики все равно придется настраивать вручную.
Я хочу установить разные настройки для каждой игры.
Нажмите и удерживайте долго на игру в списке игр/сетке, коснитесь Настройки игры. Если вы хотите изменить эти настройки во время игры, откройте меню паузы и коснитесь значка информации в верхнем правом углу, чтобы получить доступ к настройкам игры.
Я хочу создать разные макеты кнопок сенсорного экрана для разных игр.
AetherSX2 теперь имеет Профили, которые объединяют макет кнопок сенсорного экрана и привязки беспроводного контроллера.
Для создания профиля:
Настройте макет кнопок сенсорного экрана (по желанию).
Привяжите беспроводной контроллер с настройками, которые вам подходят, и настройте любые макрокнопки (по желанию).
Сохраните этот профиль. В настройках управления есть опция Сохранить профиль на первой вкладке.
По желанию сбросьте макет сенсорных кнопок настроек по умолчанию (также в том же меню).
Вы можете загружать этот профиль вручную, когда хотите его использовать, но также можно автоматически загружать профиль для конкретных игр. Для этого:
Откройте настройки игры для игры, для которой вы хотите использовать профиль (в игре или из списка игр).
Проведите влево на вкладку Общие настройки.
Нажмите на Профиль ввода и выберите профиль, который вы хотите использовать.
Профиль будет автоматически загружен при запуске игры. При переключении на другую игру макет вернется к глобальным настройкам.
У моих игр есть графические артефакты.
Из-за сложности аппаратного обеспечения консоли могут возникать проблемы при использовании аппаратного рендеринга. Вы можете попробовать использовать программный рендерер для этих игр.
Я хочу сохранить несколько состояний.
Откройте меню паузы и коснитесь Загрузить/Сохранить, здесь есть 10 слотов + быстрое сохранение
Я хочу скопировать свои сохранения с другого устройства.
В настоящее время вы можете импортировать только всю карту памяти сразу; невозможно импортировать отдельные сохранения. Перейдите в настройки-карты памяти, там есть опция Импорт карты памяти, которую можно использовать для импорта образа *.ps2 карты памяти.
Где находятся мои сохранения?
Из-за ограничения области хранения на Android 11+ мы не можем поместить ваши сохранения в обычный каталог на внешнем носителе. Однако с помощью файлового менеджера вы можете получить доступ к каталогу Android/data/xyz.aethersx2.android в вашем основном хранилище, который содержит ваши сохранения и карты памяти. Обратите внимание, что доступ к этому каталогу требует предоставления дополнительных разрешений вашему файловому менеджеру на Android 11+.
Как добавить обложки в сетку игр?
Разместите изображения обложек в каталоге "covers", который находится по пути, упомянутом выше, с именем файла, соответствующим названию игры или серийному номеру в формате jpg/png. По желанию, вы можете долго удерживать на игру в списке игр и выбрать Выбор обложки для импорта изображения.
Как улучшить производительность программного рендерера?
Программный рендерер рисует все на экране с использованием центрального процессора (CPU) вместо графического процессора (GPU), что сильно замедляет производительность по сравнению с аппаратным рендерером. Тем не менее, производительность программного рендерера была улучшена до уровня, пригодного для многих игр.
Предположим, у вас есть устройство с 4 ядрами, вам следует отключить многопоточную VU, чтобы освободить одно из ваших ядер, и установить 2 потока для программного рендеринга. Затем можно включить Режима управления сродством (в любом режиме), которое также привяжет потоки программного рендеринга к ядрам.
Если у вас есть устройство только с 2 ядрами, программный рендерер никогда не будет работать хорошо.
Как использовать режим управления сродством?
Для некоторых устройств (например, Samsung и Pixel) использование Режима управления сродством может улучшить стабильность. Включив эту опцию, ядра центрального процессора вашего устройства сортируются от самого мощного к наименее мощному, и потоки привязываются к этим ядрам в выбранном вами порядке.
Поток EE (Emotion Engine) - этот поток отвечает за большую часть игровой логики, а также VU0, DMA и т. д. В большинстве игр это самый тяжелый поток.
Поток GS (Graphics Synthesizer) - этот поток отвечает за прием пакетов от EE и VU1, анализирует их и генерирует команды отрисовки для графического процессора хоста. В некоторых играх, особенно тех, которые часто генерируют команды отрисовки, это может быть самым тяжелым.
Поток VU (Vector Unit 1) - этот поток обрабатывает выполнение микропрограмм VU1, которые предоставляют функциональность, аналогичную вершинным шейдерам современных графических процессоров. Обычно это самый легкий поток, но в некоторых играх (например, God of War) он может быть самым тяжелым из-за сложных микропрограмм и/или синхронизации. Этот поток активен только при включенном MTVU
Наилучшие настройки будут зависеть от вашего устройства и игры, поэтому эта опция устанавливается отдельно для каждой игры. Если вы сталкиваетесь с большой вариацией частоты кадров, когда она колеблется в диапазоне более 20 кадров в секунду, эксперименты с этой опцией могут помочь.
Используйте опцию Показывать загрузку CPU в настройках индикации на экране, чтобы определить, какой поток самый тяжелый/второй по тяжести, и затем выберите соответствующий режим управления аффинностью. Устройства с равномерным распределением больших и маленьких ядер, вероятно, не потребуют использования этой опции.
Заключение
Как вы видите, эмулировать PS2 на Android возможно даже на не самом мощном смартфоне. Может показаться, что графика выглядит не очень хорошо при просмотре любых тестовых видео, однако учтите, что это запускается на смартфоне с диагональю экрана 6.67 дюйма, и некоторые недостатки графики просто не заметны (для лучшего понимания запустите видео на своем смартфоне).
Вполне возможно добиться играбельного качества, но практически каждую игру придется настраивать вручную, изменяя те или иные параметры.
В целом, я очень доволен его работой, и, как минимум, Persona 3, я собираюсь пройти на своем смартфоне.
Спасибо тем, кто прочитал и проявил интерес. Буду рад услышать ваше мнение в комментариях.
Запрещая всем использовать эмуляторы своих консолей, они сами же и стали их использовать.
В видео, опубликованном одним из пользователей Twitter, можно увидеть, как контроллер SNES отключается с характерным звуком из Windows.
Это наводит на мысль об использовании эмулятора. Такой комментарий вызвал ироничные комментарии, учитывая позицию Nintendo против эмуляторов и пиратства. Кроме того, открытый USB-порт представляет угрозу для кибербезопасности и пранков.
Ещё больше новостей из мира игр в нашем Telegram-канале Игровой террариум
В Части 2 я рассказывал о том, какие приложения мне нужны для реализации. И так же кратко пробежался по настройкам, чтобы все работало без каких-либо проблем. Теперь продолжение на том месте, где я остановился.
Глава 5. Настройка платформ
NES
Эмулятор:
RetroArch. Ядро - Nestopia.
Проблемы: не обнаружены. Эмуляция: отлично.
Sega Genesis
Эмулятор:
RetroArch. Ядро - Genesis Plus GX (не советую ставить модификацию wide).
Проблемы: не обнаружены. Эмуляция: отлично.
Game Boy Advance
Эмулятор:
RetroArch. Ядро - mGba.
Проблемы: не обнаружены.
Эмуляция: отлично.
Playstation 1
Для эмуляции Playstation 1 нам потребуется BIOS самой консоли. После загрузки, файл BIOS расположить по пути /RetroArch/system.
Эмулятор:
RetroArch. Ядро - SwanStation.
BIOS:
scph100.
Проблемы: не обнаружены.
Эмуляция: отлично.
Sega Dreamcast
Идеальным вариантом была бы установка эмулятора Redream, но к сожалению в нем нет поддержки RetroAchievements, поэтому я по стандарту буду использовать RetroArch c ядром flycast.
Эмулятор:
RetroArch. Ядро - flycast.
Проблемы: не обнаружены. Эмуляция: отлично.
Playstation Portable
RetroArch содержит ядро для эмуляции PSP, но мы будем использовать отдельный эмулятор PPSSPP, так как эмуляция через RetroArch не идеальна и FPS колеблется в районе 20-25 кадров, не знаю, с чем это связано, и, к сожалению, внутренние настройки ядра не помогают. К счастью, в последнюю версию эмулятора PPSSPP добавили поддержку RetroAchievements, и его скорость работы значительно выше.
Так как это новый для нас эмулятор, вначале нужно сделать пару настроек:
1/5
Настройки PPSSPP при запуске (Скриншоты выше):
При первом запуске PPSSPP попросит нас указать папку с ромами от PSP.
Далее зайти в "Настройки-Управление-Отключить Элементы управления на экране".
Далее перейти в "Настройки-Управление-Назначение кнопок".
Настроить кнопку паузы.
"Инструменты-RetroAchievements" ввести логин и пароль от сайта с достижениями.
Добавляем PPSSPP, в Daijisho, также как добавляли RetroArch в первый раз:
Эмулятор:
PPSSPP
Проблемы: не обнаружены.
Эмуляция: отлично.
Playstation 2
Для эмуляции PS2 мы в любом случае должны использовать сторонний эмулятор, а не RetroArch. На текущий момент существует два таких эмулятора:
DamonPS2 - первый эмулятор, среднее качество эмуляции, вшитая реклама, единственная возможность для людей с 32 битным процессором.
AetherPS2 - более простой и удобный эмулятор. Хорошее качество эмуляции, RetroAchievements.
Конечно, мы будем использовать AetherPS2, точнее его пропатченную версию NetherSX2. В этой версии, помимо мелких изменений, есть возможность интеграции с помощью Daijishou. Я расскажу, что я имею в виду:
Если мы добавим обычный AetherPS2 в Daijishou, при запуске любой игры откроется сам эмулятор, а не необходимая нам игра. NetherSX2 запустит именно то, что мы от него требуем.
Важно: необходима версияNetherSX2+1.5-4248 [patched] или выше. Взять её вы можете как обычно тут.
Так же для эмуляции Playstation 2 нам потребуется BIOS самой консоли. После загрузки, файл BIOS расположить в удобное для вас место.
При первом запуске делаем следующее:
1/3
Настройки NetherSX2 при запуске (Скриншоты выше):
Выбрать предустановку, в зависимости от мощностей вашего устройства.
Импортировать BIOS из той папки, где он у вас находится. Выбрать в списке.
Указать папку с ромами.
После применяем следующие настройки:
1/3
Дополнительные настройки (Скриншоты выше):
Переходим в раздел "Достижения".
Вводим логин и пароль от сайта с достижениями.
И включаем скрытие сенсорного управления.
Так же хотелось добавить, что NetherSX2 автоматически не настроил управление с геймпада. Но всего с помощью пары нажатий я его восстановил.
1/2
В "Настройки управления-Порт контроллера 1" выбираем автонастройку. И после нажимаем на наш геймпад.
Добавляем NetherSX2в Daijisho, как мы делали ранее:
Эмулятор:
NetherSX2
BIOS:
ps2-0230a-20080220.
Проблемы: отсутствие управления геймпадом по умолчанию.
Эмуляция: хорошо.
PS Vita
К сожалению, на текущий момент Daijisho не имеет прямой поддержки PS Vita, и единственный возможный способ запустить эмулятор - добавить его как сторонний виджет, о чем я расскажу чуть ниже.
Vita3k - это единственный эмулятор PS Vita на текущий момент, так что выбирать нам не приходиться. Он вполне выполняет свою функцию, и в некоторые, даже крупные игры с помощью него можно поиграть. Его нет в Play Market, поэтому его можно скачать либо с официального сайта, либо с 4PDA.
Так же, перед запуском вам нужно отдельно скачать файлы прошивки, и распаковать их в удобное место.
1/3
Настройки Vita3k при запуске (Скриншоты выше):
При запуске выбираем русский язык.
Нажимаем на "Instal Firmware File" и по очереди устанавливаем два файла прошивки.
Если всё сделали верно, то появятся две галочки.
Если же у вас процессор Snapdragon 710-888 советую воспользоваться сторонними драйверами - тут. У меня как раз процессор Snapdragon 720G, и как говорят на форумах это поможет избежать вылетов в некоторых играх. Поэтому следующим шагом будет установка драйвера:
В настройках нажимаем на "Add custom driver", после сохраняем и перезапускаем Vita3k.
С установкой игр тоже не так просто, есть несколько способов о которых вы можете прочесть на форуме . Я расскажу о том, каким сам пользуюсь.
Для начала мы переходим на таблицу совместимости ромов с эмулятором.
Ищем образ с пометкой NoNpDrm.
Не распаковывая заходим в эмулятор, в верхнем меню нажимам на "File-Instal zip. vpk."
Ждём окончания установки.
Далее нам нужно привязать Vita3k к нашему лаунчеру. В очередной раз запускаем Daijisho, и переходим на панель Widgets.
1/4
Добавляем Vita3k в Daijasho (Скриншоты выше):
Жмём на "+ New widget - App shortcut".
Жмем по только что появившейся иконке и выбираем "Pick an item".
В списке приложений находим Vita3K.
И отдельное приложение с этим эмулятором будет всегда на экране Widgets.
В заключение, хотелось бы сказать, что Vita3K - достаточно сырой, но многообещающий эмулятор. Меньше чем за год, разработчику удалось не только запустить, но и обеспечить работоспособность большей части библиотеки игр для PS Vita. К сожалению, на данный момент этот эмулятор не подходит мне из-за неудобного интерфейса, невозможности настроить управление отдельно, отсутствия поддержки со стороны Daijisho (разработчик написал полгода назад, что добавит поддержку Vita3K в ближайшем будущем), и, конечно же, из-за плохой совместимости с моим устройством.
Было протестировано 4 игры, которые в таблице совместимости указаны как играбельные:
Mortal Kombat - хорошо работет, по большей части в 30 кадрах. Иногда бывают просадки, но не критические.
Gravity Rush - запускается, но очень большое количество графических артефактов. Играть невозможно.
The Binding of Isaac: Rebirth - запускается, но тут же крашется после загрузки уровня.
Super Meat Boy - отлично работает. Никаких нареканий.
Эмулятор:
Vita3K.
BIOS:
PSP2UPDAT
PSVUPDAT
Проблемы: архаичный дизайн, отсутствие поддержки в Daijasho, нет настроек управления, необходимость подбора драйверов, нерабочий гироскоп.
Эмуляция: 50 на 50. Все игры которые запустились работают хорошо.
Nintendo Switch
C эмуляцией Nintendo Switch тоже всё не так однозначно. С одной стороны есть три эмулятора, которые работают в равной степени нормально:
Egg NS - эмулятор для владельцев геймпадов GameSir. Есть возможность играть и без них, но за просмотр рекламы, либо по подписке.
Yuzu - судя по описанию, очень хороший эмулятор. Однако у меня он не заработал ни с одной игрой.
Strato - оптимальный для меня вариант. Запускает игры, выдает приемлемый fps. Но на данный момент не отображаются катсцены.
Небольшое пояснение: Strato - новая версия ранее существовавшего эмулятора Skyline и во всех приложениях он будет обозначаться как Skyline. Сейчас он больше не разрабатывается из-за проблем с авторскими правами. Как таковой, релизной версии у Strato нет, вы можете собрать его самостоятельно на официальной GitHub-странице или же скачать уже собранную версию здесь.
Так же перед запуском нам нужно отдельно загрузить ключи Nintendo Switch (Версии 16.0.2), и распаковать в удобное для нас место.
1/3
Настройки Strato при запуске (Скриншоты выше):
После запуска эмулятора жмем на шестеренку в правом верхнем углу.
Указываем путь до папки с ромами.
Загружаем ключи. Для Production - prod.keys, для Title - title.keys.
Обязательным будет пункт скачивания драйверов и их последующая установка. Чтобы понять какой драйвер нужен именно вашему устройству, советую заглянуть сюда.
Для установки драйвера нужно сделать следующее:
1/3
Добавления драйвера в Strato (Скриншоты выше):
Перейти в "Настройки - Конфигурация драйверов GPU".
В настройках спускаемся в самый низ, и переходим в "Настроить контроллер #1".
Отключаем сенсорное управление.
Переходим в "Руководство по настройке".
И с помощью подсказок настраиваем наш геймпад.
Добавляем Strato в Daijisho, как мы делали ранее:
Скажу так: полноценная эмуляция Switch возможна, однако она требует более производительного железа. В моем случае я могу довольствоваться только инди-играми, 2D-платформерами и всем, что не слишком нагружает систему. Хотя Persona 5 мне все же удалось запустить со стабильными 30 FPS. Естественно никакой речи о Ведьмаке или Зельде.
Эмулятор:
Strato (Skyline)
Ключи:
Keys16.0.2
Проблемы: отсутствие заставок, долгий поиск подходящих драйверов, возможны графические артефакты.
Эмуляция: средняя. Для нетребовательных игр подходит.
Заключение.
В планах было также настроить автоматический запуск приложения - чтобы при включении устройства сразу стартовал Daijisho. Однако даже с “костылями” мне не удалось этого добиться. Телефону нужно время, чтобы загрузить всю операционную систему и при разблокировании нас будет переносить на рабочий стол, а уже спустя секунд 10 запуститься Daijisho.
Так что придется исходить из того что имеем, и запускать Daijisho непосредственно с рабочего стола.
В целом финальным результатом я полностью доволен. И сейчас в планах попытаться выбить все ачивки из любимых игр.
Надеюсь данный текст будет кому-нибудь полезен, и поможет избежать тех ошибок и подводных камней о которых я не знал вначале.
Upd. Создал отдельное сообщество «Эмуляторы». Все последующие посты, связанные с эмуляцией, будут публиковаться там. Я буду рад видеть всех, кто интересуется этой темой. Мы сможем обсудить последние новости в мире эмуляции, поделиться советами и рекомендациями по настройке различных платформ, а также обменяться опытом по запуску старых игр на современных устройствах. Давайте вместе сохранять и популяризировать наследие классических видеоигр!