FPGA MiST Guide (RUS)



Полезные ссылки



Что такое FPGA

Я постараюсь объяснить как можно проще: FPGA – это набор аппаратных средств (обычно только плата печатной схемы), на которой компоненты могут быть настроены динамически для воспроизведения другого аппаратного обеспечения. Функции (логические операции и функции ЦПУ) этого набора не жестко заданы и могут быть установлены с помощью так называемых ядер во время запуска.

Что такое ядра?

Ядра – это набор инструкций или правил, которые позволяют настроить внутренности fpga, чтобы они работали как другое оборудование. Например, вы можете повторно реализовать домашние компьютеры, игровые приставки и аркадные игры. Существует некоторое количество устройств на основе fpga, которые хорошо известны. Everdrive – это клон игровых картриджей на основе fpga, AVS nes и Analogue NT – это клон NES на основе fpga и т.д. Преимущество fpga заключается в том, что вы всегда можете просмотреть и обновить ядро или написать новое. Одна fpga-плата может работать с несколькими различными ядрами, и mist позволяет менять их на лету.

Чтобы работать с современными мониторами, usb или SD-картами, эти ядра также имеют соответствующие изменения, чтобы старое “оборудование” (которое повторно реализуется) могло с ними взаимодействовать.

Список всех доступных ядер для mist можно просмотреть здесь.

Интересный факт: mist – это аббревиатура (слоговое сокращение, чтобы быть точнее) от aMIga и atari ST. Вместе: MIST. Это потому, что это основные ядра для этого устройства. На английском mist означает туманоподобную темную среду. На немецком это означает “навоз”.

После проверки большинства ядер, я могу сказать, что те для Amiga, Atari 2600 и Atari ST работают очень хорошо. Также есть другие ядра, но они не настроены наилучшим образом. У некоторых есть много ограничений, у других почти все идеально (как NES). Но нужно помнить, что это устройство предназначено прежде всего для Amiga и Atari ST. Все другие ядра – это приятные дополнения.

Что такое MiST?

MiST – это устройство на базе FPGA с USB-портами, кнопками, VGA-выходом, поддержкой SD-карт, портами джойстика и т. д. Оно основано на Altera Cyclone III и имеет 32 Мб 16-битной SDRAM. Его можно переконфигурировать с помощью ядер, чтобы воссоздать большое количество домашних компьютеров или игровых консолей.

Спецификации платы

  • Основано на плате Altera Cyclone EP3C25 FPGA
  • 32 Мб 16-битная SDRAM
  • ARM IO контроллер AT91SAM7S56
  • Контроллер хоста USB MAX3421E
  • USB-концентратор TUSB2046

Интерфейсы

  • Аналоговый VGA-выход
  • Стерео аналоговый аудиовыход через 3,5 мм разъем
  • 4 порта USB (2.0)
  • Микро-USB-порт для питания и обновления контроллера IO
  • 2 классических разъема Atari стиля 9-контактных DB9 для джойстиков
  • Слот для SD-карты (обычный размер)
  • 3 светодиода (питание, FPGA и IO контроллер)
  • 3 кнопки (сброс, меню, пользовательская)
  • 2 выхода Midi (в версии 1.3)
  • Переключатель питания

Что вам нужно

  • VGA-кабель
  • Монитор, совместимый с VGA
  • Микро-USB-кабель и опционально зарядное устройство (как для обычного смартфона) или вы можете подключиться к подключенному к сети USB-концентратору или ПК.
  • Клавиатура USB (расширенная, для использования кнопки NumLock)
  • USB-мышь
  • USB-игровой контроллер
  • Вы также можете использовать оригинальные джойстики с 9-контактными разъемами или midi-оборудование
  • SD-карта (FAT32) (некоторые ядра требуют Fat16, но большинство работают с Fat32).



Запуск MiST

Для запуска MiST необходимо выбрать ядро, которое будет загружаться по умолчанию. Оно должно быть переименовано в core.rbf и помещено в корневую папку SD-карты. Это ядро будет загружено при первом запуске.

Подключите MiST к монитору с помощью VGA-кабеля, подключите к источнику питания через USB, подключите мышь, клавиатуру, контроллер и вставьте подготовленную SD-карту. Включите питание переключателем на задней стороне. Если чего-то не хватает (например, правильных файлов или правильной SD-карты), первый светодиод будет мигать 5 раз. Если все в порядке, то будет загружено ядро по умолчанию.

После загрузки ядра по умолчанию вы можете получить доступ к меню OSD MiST, нажав F12. Оттуда вы можете настроить загруженное ядро или загрузить другие ядра, обновить прошивку и изменить настройки.

Если ваш монитор не поддерживает видеосигнал от MiST, попробуйте изменить PAL на NTSC или наоборот.

Кнопки

  • левая кнопка (сброс): сбрасывает туман
  • средняя кнопка (OSD-меню): вызывает OSD-меню
  • правая кнопка (кнопка пользователя или, заданная ядром): функция зависит от ядра

Нажатие средней кнопки более чем на 2 секунды позволяет переключаться между режимами 15КГц и 31КГц.

Нажатие средней кнопки более чем на 2 секунды, а затем нажатие правой кнопки позволяет переключаться между режимами RGB и YPbPr.

Дополнительная настройка с помощью mist.ini

Вы можете добавить специфические настройки при запуске через файл конфигурации “mist.ini”. Вы можете увидеть все варианты на этом сайте.

Управление

OSD-меню

Вы можете вызвать основное меню (OSD-меню, F12-меню), нажав на клавишу F12, среднюю кнопку на устройсве или select+start на геймпаде.

Клавиатура

OSD-меню

  • Стрелки: навигация по меню
  • Enter: выбор, подтверждение
  • ESC: отмена, возврат назад

Иногда можно нажать другие клавиши (например, пробел), смотрите текст в меню.

Эмуляция мыши

  • Стрелки: перемещение курсора мыши

Контроллер

OSD-меню

  • A: выбор, подтверждение
  • B: отмена, возврат назад
  • крестовина: навигация по меню
  • L/R/выбор+вверх/вниз: страница вверх, страница вниз

Эмуляция мыши

Если вы включили эмуляцию мыши (нажав клавишу NumLock или удерживая кнопку выбор на геймпаде), вы можете сделать следующее:

  • крестовина: перемещение курсора
  • L: левый клик
  • R: правый клик

Комбинации контроллера

Используя обычный USB-геймпад, вы также можете использовать следующие комбинации:

  • select+start: OSD-меню
  • start+A: Enter
  • start+B: Пробел
  • start+L: ESC
  • start+R: F1

Вы можете отключить все ярлыки, написав следующую строку в файле mist.ini:

joystick_disable_shortcuts=1

Использование джойстика

Вы можете использовать джойстики с 9-пиновым разъемом, например, от Atari 2600, Sega Mega Drive, Commodore 64, Atari ST или Amiga. Вам нужно будет настроить тип кнопок в меню игры. Обратите внимание, что порт игрока 1 находится дальше (справа). Я проверял работу трёхкнопочного джойстика от Sega и джойстика Atari CX24 – оба работали.

Обновление прошивки

Скачайте последнюю прошивку с этого сайта и переименуйте загруженный файл в firmware.upg. Запустите mist с любым рабочим ядром (я также видел упоминания о ядре-меню без функций, только с меню OSD), а затем используйте меню F12 для обновления прошивки. Перемещайтесь по меню с помощью кнопок-стрелок и перейдите в меню “firmware”. Вы можете проверить, установлена ли другая прошивка, и сравнить её с новой.

Установка ядер

Существует ядро-меню, которое запускается очень быстро и позволяет только запустить другие ядра. Я не являюсь поклонником аналогового шума, но другого варианта нет.

ZX Spectrum

Старый 8-битный британский домашний компьютер с культовым звуком и графикой. Был очень популярен в Европе (Великобритании) и Советском Союзе.

Вы можете найти последнюю версию ядра здесь. Скопируйте его в корневую папку SD-карты. Запустите MiST и загрузите это ядро.

Если всё загружено, вы увидите серый экран и меню, где вы можете запустить игры/программы (загрузчик кассет), поиграть с языком BASIC, использовать калькулятор или некоторые другие инструменты:

Вы можете загружать игры в форматах TRD, TAP и CSW. Я проверял только формат TAP. Загрузите кассету (TAP), перейдите в загрузчик кассет и надо ввести команду Load “”. Фактически, клавиатура Spectrum полна сокращений, так что набрать слово load не так легко, как кажется. Нажмите “J”, слово “Load” будет вставлено. Затем дважды нажмите Shift+P для того, чтобы поставить кавычки. Нажмите Enter, чтобы начать загрузку. Экран будет иметь эти многоцветные линии, и через несколько секунд (или минут, если опция Fast tape load выключена), игра будет загружена. Вот и все.

Также есть способ просматривать и загружать игры с SD-карты. Обратитесь к этой странице, если вы хотите узнать больше. Это сработало для меня, но я думаю, что функция слишком медленная.

Если вы хотите посмотреть, как выглядят игры, посетите эту страницу, здесь есть несколько GIF-анимаций со скриншотами.

Commodore 64

C64 – это популярный 8-битный домашний компьютер с красивой графикой для своего времени.

Вам понадобится соответствующее ядро с этой страницы.

Самый быстрый способ загрузки игр – это загрузить файлы PRG (программы) непосредственно в RAM и затем запустить их с помощью команды “RUN”. Игра будет загружена очень быстро. Вам нужно только найти начальную программу, и это не всегда четко обозначено.

Другой поддерживаемый формат – D64. Назначьте файл d64 диск-драйву из меню OSD, а затем используйте команды LOAD “$”,8 или LOAD “* “,8,1 для их загрузки. Затем наберите команду RUN, чтобы запустить загруженные игры.

Вот как выглядит главный экран:

Давайте загрузим игру D64. Нажмите F12 и загрузите D64 rom.

Затем:

и через несколько секунд:

Вы можете сбросить настройки с помощью F4. Если ваш джойстик не распознается, перейдите в меню OSD и измените настройки джойстика на “swapped”. Некоторые игры (например, 1942) требуют этого.

Если у вас нет PRG-roms, вы можете извлечь их из почти любых C64-roms с помощью приложения DirMaster. Там вы можете выбрать опцию экспорта нескольких файлов в пакетном режиме. Для каждого экспорта будет создана папка, в которой будут размещены файлы PRG.

Atari ST

Atari ST – это домашний компьютер 16/32 бит, очень популярный в 90-х годах, с графикой, сопоставимой с Genesis и SNES.

Для работы вам нужно ядро и файл-дамп TOS (его нужно переименовать в tos.img). Вы также можете добавить шрифт по умолчанию и использовать образ дисковода по умолчанию (это сократит время загрузки).

Поместите все эти файлы в корневую папку.

После загрузки ядра вы можете настроить параметры и загружать приложения и игры из меню OSD. Вы также можете выбрать там режим видео.

Вот как выглядит система после загрузки.

Черно-белый формат:

Цветной:

Чтобы запустить игру, вам просто нужно загрузить игру (rom с расширением ST) через меню OSD, а затем перезапустить ядро через меню (System->Reset).

Вот несколько примеров игр (видео не мое), чтобы дать общее впечатление:

Amiga

Амига – это 16-битный домашний компьютер, очень популярный в 90-х годах, с графикой, сравнимой с Genesis и SNES.

Для запуска вам нужно ядро и кикстартер-ром (kickstarter). Это ОС-ром, который можно извлечь из оригинальной Amiga, скачать из интернета или купить легально у Amiga Forever (у них также есть дешевое приложение для Android с базовыми кикстартер-ромами). Вы можете взять, например, версию 1.3, 2.3 или 3.1. Я предлагаю использовать кикстартер-ром, предназначенный для вашего региона. Это уменьшит проблемы совместимости с видеорежимами. Вы также можете добавить некоторые файлы меню (minimig.art, minimig.bal, minimig.cop) для лучшей заставки или анимации. После загрузки ядра вы можете загружать игры из любой папки в виде файлов *.adf. Просто выберите ром и подождите 5 секунд. Игра будет загружена. Если вы хотите изменить игру, лучше перезапустить ядро.

Поместите ядро, кикстартер и опциональные файлы в корневую папку. Ромы могут быть помещены в другое место.

В настройках (открывается клавишей F12) вы можете настроить тип оборудования, тип памяти, настройки ввода, настройки видео и т.д.

Это настройки, которые я использую только для загрузки игр (без workbench):

Floppy disk turbo: on

Chipset settings:

  • CPU: 68020
  • Turbo: none
  • Video: PAL
  • Chipset: AGA
  • CD32Pad: Off

Memory Settings:

  • Chip: 2.0 MB
  • Slow: none
  • Fast: 24.0 MB
  • ROM: Kickstarter 3.1 40.068 (от Amiga Forever)
  • HRTmon: disabled

Video settings:

  • Lores Filter: none
  • Hires Filter: none
  • Scanlines: off или dim (scanlines выглядят потрясающе!)
  • Dither: off (я разницы не вижу)

Я совсем не знаком с Amiga, поэтому я не буду объяснять, как работает операционная система или как устанавливать приложения. Я обновлю этот раздел после того, как изучу систему получше.

Вы можете установить рабочую область (workbench) на виртуальный жесткий диск и позволить ядру запускаться сразу с ней. Вам потребуется создать (с помощью Winuae) или найти образ жесткого диска, а затем необходимо отформатировать его с помощью программы HDTools из workbench на mist (а не с помощью Winuae!). После этого вы можете установить workbench на этот жесткий с дискет. Это довольно просто, просто следуйте инструкциям на этом сайте. Я нашел здесь пустой образ жесткого диска, готовый к использованию, размером 4 ГБ. Следуйте инструкциям, измените размер, сделайте его загрузочным и отформатируйте. Затем установите workbench с помощью “дискет” установки на этот жесткий диск. После этого у вас будет загрузочный жесткий диск на вашей Mist. Если вы не хотите, чтобы Mist запускался с ним, просто сохраните его как другой пресет. Я использую только kickstarter от Amiga как стандартный пресет, а версию с жестким диском как пресет 1.

Мои настройки такие:

  • Стандартная: только 3.1 kickstarter
  • 1: Kickstarter 3.1 40.68 + Workbench 3.1 40.02 + 4 ГБ жесткий диск
  • 2: Amiga Dos + 4 Гб жесткий диск

Workbench

Давайте посмотрим, что предлагает рабочая область:

Если у вас установлена workbench, ваша Amiga загрузит её с жесткого диска, и вы увидите рабочий стол с Ram Disk и Hard Drive (мой называется Amiga).

Нажатие один раз на иконку запустит приложение. Теперь вы также можете зажать правую кнопку мыши, чтобы отобразить контекстное меню (выше). Оно будет видимо только до тех пор, пока вы будете удерживать правую кнопку!

Вы также можете открывать диски двойным щелчком. На скриншоте выше я открыл свой жесткий диск Amiga с предустановленной workbench. Как видите, здесь есть некоторые опции. Здесь есть некоторые интересные вещи, которые можно сделать. Вы можете настроить время, звук, режим экрана и т. д. Например, по умолчанию количество цветов составляет 4, но вы можете перейти в “Prefs”-> “Screen Mode” и изменить это на 256 и также проверить разрешение. Вы можете даже нарисовать свой собственный указатель мыши!

Вот пример игры для Amiga (не реальный снимок экрана), чтобы вы могли увидеть, какая может быть графика.

Для игры вам понадобится клавиатура, мышь и контроллер. Некоторые игры можно играть только с клавиатурой и мышью, другие также распознают контроллер. Я до сих пор не уверен, как начинать, приостанавливать или завершать игры. Иногда нужно нажать пробел, другой раз – Enter, иногда только левый клик даст вам возможность продолжить, или левая кнопка CTRL.

Мои наблюдения:

  • Чтобы загрузить игру, перейдите в меню OSD (F12 или кнопка контекстного меню), затем загрузите ром в слот df0:. Игра запустится. Если во время игры должен быть вставлен другой диск, вы можете использовать второй слот (df1:). Чтобы загрузить новую игру, лучше перезагрузить ядро.
  • В игре вы можете поставить на паузу с помощью клавиши “P”. В “Banshee” я также заметил, что могу поставить на паузу с помощью любой буквенной кнопки, но чтобы продолжить, мне нужно нажать “P” еще раз.
  • Чтобы продолжить после запуска игры, попробуйте нажать пробел, Enter или левую кнопку мыши, или правую кнопку CTRL.
  • Правая кнопка CTRL (а иногда и правая кнопка Alt) используется в качестве кнопки огня/действия.
  • С помощью Esc вы можете выйти из игры.
  • Если используется контроллер Sega Mega Drive, кнопка B используется в качестве кнопки огня/действийя. Кнопка C – в качестве второй кнопки действия.
  • Если используется джойстик Atari, все кнопки используются в качестве кнопок огня/действия (так что нет возможности делать петли в “Banshee” с этим джойстиком).
  • Вы можете устанавливать приложения на виртуальный жесткий диск. Например, на диске Paint Deluxe есть установщик, с помощью которого вы можете установить приложение на свою Amiga.
  • Добавьте четыре дисковода в меню и сохраните настройки как стандартные. Есть много игр, которые требуют частого переключения дисков. Чтобы запустить Dune 2, вам нужно будет менять несколько дисков в течение многих минут.

NES

Ядро не завершено на 100%, и совместимость очень ограничена. Однако многие ромы работают нормально. Вам нужно только ядро, и вы можете загружать игры из файлов *.NES из любой папки. Поддержка сохранения пока не поддерживается.

Поместите ядро в корневую папку.

Как я уже упоминал, существуют идеальные FPGA-клоны, и теоретически возможно создать идеальную переимплементацию.

Вы можете настроить настройки в меню OSD. Например, включить / отключить скан-линии, фильтрацию hq2x, изменить палитру и некоторые другие. Вы можете использовать клавиатуру или контроллер в меню.

Я провел тест с ядром NES и FPGA Mist v1.3. Ядро nes_170112.rbf.

В этом видео я использовал европейские ромы, и, как вы можете видеть, большинство игр работают хорошо, но у некоторых были проблемы: первая часть Battletoads очень тормозит, Battletoads and Double Dragon также имеет замедления. Я провел еще один тест после этого видео, и некоторые игры имеют проблемы с необычными линиями (например, Adventure Island) и мерцанием (Bomberman), и то, что помогает, это включение обрезки при передаче избыточных данных. Изображение немного меньше с обеих сторон, но улучшает картинку. Проблемы с обеими Battletoads связаны с ромами (та же проблема возникает на оригинальном оборудовании!). Все это относится к европейским ромам.

Я полагаю, что ядро является реимплементацией NTSC NES (Северная Америка), поэтому вам нужно использовать NTSC-ромы, чтобы получить лучшие результаты. Европейские ромы часто имеют проблемы, где NTSC работает отлично. Проверьте следующее видео, где у европейских Battletoads есть проблемы, а NTSC-игровой процесс идеален. Я проверил все игры, которые имели проблемы при использовании европейских ромов, и они играют идеально в NTSC-версии. Ни одна из протестированных NTSC-игр не имела никаких проблем, но я не проверял их все.

Вот еще одно видео, снятое с помощью XRGB Mini Framemeister. Я использовал дешевый преобразователь VGA->HDMI, и у связи были проблемы, которых нет, если используется обычный VGA-кабель. Поэтому есть случайные видео- и аудиоглюки, но они возникают только из-за VGA-HDMI преобразователя.

Небольшое замечание: невозможно подключить FPGA MiST напрямую к Elgato или новым мониторам, потому что они не распознают сигнал, выводимый большинством ядер. Нет изображения, нет связи. Вам необходимо использовать какой-то вид апскейлера, например, XRGB Mini.

Я не смог создать профиль контроллера с кнопками-турбо. Я только смог удалить тот тип управления, где верхняя кнопка (Y) используется для нажатия UP.

Существует одна недостающая функция в этом ядре: сохранение невозможно. Даже оригинальное сохранение с помощью батареек. Я рад, что большинство игр не имеют сохранений или используют пароли, но игры, такие как Zelda, не будут полностью играбельными, пока не будет реализована эта функция. Теоретически возможны варианты, подобные AVS или даже Analogue NT (за исключением выходов и поддержки картриджей), но нет никого, кто мог бы это реализовать.

Реально красивые скан-линии (лучше, чем на AVS и Retro Reak).

Заключение: я считаю, что это одно из лучших ядер. Лучшее в этом ядре – это низкий лаг. Я вижу большую разницу, сравнивая с NES Mini, Retropie или Retro Freak. Не говоря уже о подключении оригинальных консолей через AV на современных телевизорах, которые имеют огромную задержку. Управление и лаг идеальны. Качество изображения для NTSC очень хорошее, но больше настроек было бы здорово (например, соотношение сторон или масштабирование). Мне также очень нравится реализация скан-линий, хотя иногда они слишком темные. В целом, это очень играбельная версия.

Sega Master System

Вам нужно только ядро. Поместите его в корневую папку. В меню F12 вы можете внести некоторые настройки. Однако ядро довольно ограничено.

Я не смог запустить некоторые игры (Alien 3, Alien Storm). У других были проблемы со звуком, музыка была немного не в тональности.

Atari 2600

Вам нужно только ядро. Поместите ядро в корневую папку и загружайте игры из меню F12.

Ядро имеет красивый интерфейс с плавающим текстом.

Вы можете играть с контроллером, но я также играл с джойстиком. Одна большая проблема заключается в том, что некоторые игры используют неподдерживаемые видеовыходы. Это не обязательно связано с регионом ROM. Попробуйте запустить ROM-ы, которые совместимы с выбранным стандартом видео (я использую режим NTSC и NTSC или U-ROM-ы).

Все игры, которые я попробовал, работали без проблем. Изображение действительно хорошее. Если вы выбираете стандарт видео NTSC, убедитесь, что загружаемые вами игры соответствуют этому региону.

Sega Mega Drive / Genesis

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

Старые версии:

Долгое время ядро было очень ошибочным: контроллер не работал в меню, возникали графические ошибки.

В главном меню доступны следующие опции:

  • Перезагрузить ядро
  • Сохранение настроек
  • Сменить VGA между 31 KHz и 15 KHz (480i или 240p)
  • Включение/выключение scanlines
  • Поменять контроллеры местами
  • Настроить громкость
  • Включить/выключить звуковой модуль PSG
  • Включить/выключить звуковой модуль FM
  • Выбрать модель Megadrive (1 или 2)
  • Загрузить ром
  • Выйти

Так выглядел Sonic 3 сначала:

Вот короткое видео:

 

Актуальная версия ядра очень хороша: у неё новое меню, нет графических проблем, а звуковое ядро было улучшено. Я обновлю этот раздел новыми видео. Другими словами, в 2017-2018 годах ядро для Genesis получило много улучшений, считается стабильным и имеет хорошую совместимость.



2821 Всего 10 Сегодня