Инструменты пользователя

Инструменты сайта


msx:flash_floppy_osd:flash_floppy_osd

Flash Floppy OSD для MSX

English version can be found here: Flash Floppy OSD for MSX

Flash Floppy OSD — версия под GoTek для бокового слота Yamaha MSX

FlashFloppy — известная прошивка для эмулятора дисковода «Готек» от Кейра Фрейзера. Прошивка поддеживает как оригинальный экранчик Готека с тремя индикаторами, так и OLED экранчики разных типов. Но мало кто в MSX тусовке (включая меня) знал, что существует ещё и дополнение к этой прошивке в виде FlashFloppy OSD (On-Screen Display). Эта прошивка загружается в микроконтроллер STM32 на плате Blue Pill, плата подключается к Готеку и к двум видеосигналам компьютера (один из цветовых сигналов и синхросигнал) и в результате копия экрана Готека «вставляется» в видеосигнал компьютера. Это очень удобно, когда у Готека нет экрана, а также если экран находится вне зоны видимости.

Я впервые столкнулся с проблемой «слепого» переключения образов диска на Готеке, когда работал над проектом DualSlim. Из-за малой высоты Готека вставить в него даже самый миниатюрный экранчик весьма сложно. Да и неудобно было бы его видеть, так как он оказался бы сбоку, да ещё под нависающим корпусом. Я начал искать способ решить эту проблему и нашёл проект FlashFloppy OSD, который существует уже несколько лет и который был успешно применён на нескольких винтажных компьютерах. Но, как оказалось, для MSX этот проект никогда не был адаптирован. Посмотрев видео и документацию, я решил стать первопроходцем.

Как и всем первопроходцам, почти сразу удалось наступить на «грабли». Оказалось, что почти все Blue Pill платы содержат не оригинальные чипы STM32, а их китайские клоны. И эти клоны не могут нормально работать с последней прошивкой FF OSD v1.9. Обе платы, купленные у немецкого дистрибутора отказались проходить Blinker тест - I2C функционал не работал, также тест выдавал подозрение на «фейк». Тогда в Китае были заказаны ещё 4 платы Blue Pill. Одна из них опять была признана тестом как фейк, остальные же не проходили тест по причине отказа флешки (скорее всего размер флешки был неправильным). Но они хотя бы проходили тест I2C. В итоге, потратив почти 50 Евро, я получил не вполне подходящие платы. Но эти 3 китайские платы всё же удалось запустить, прошив в них FF OSD v1.9. Платы были куплены здесь:

В процессе адаптации мой Готек был немного модифицирован - была припаяна «гребёнка» на разъём питания и I2C и залита последняя версия прошивки FlashFloppy. Потом начались тесты с прошитой Blue Pill на арабской AX-350 (превращённой в почти YIS805 с переключением прошивок) - аналога нашей YIS503III, только без дисковода. Также нужно было модифицировать плату Blue Pill. К ней были припаяны 6 проводов, уменьшена высота джамперов конфигурации (чтобы поместилась в slim корпус), а также напаяты резисторы на 4.7кОм для подтяжки SDA и SCL к питанию 3.3в. Вот так это выглядит:

bluepill_wiring.jpg

Джампер между A0 и A1 был запаян, но потом убран, так как он включает увеличение размера имени выбранного образа диска. Лучше делать этот джампер съёмным, но я не был уверен, что с этим джампером не возникнут проблемы при установке платы в слим Готек. Затем плату надо было сконфигурировать - подключить её к компьютеру через UART, запустить Putty, выбрать порт для связи и записать дефолтные настройки во флеш память. Затем я немного поменял координаты вывода окна OSD, чтобы оно было расположено в верхнем левом углу экрана. Настройки можно менять управляя платой из терминального окна. Пробел введённый в терминальном окне выбирает опцию, P или O выбирают значение опции. Правильная конфигурация выглядит так:

iniconfig.jpg

Первого результата, после неоднократных неудач, нескольких проб и ошибок, удалось добиться через несколько дней - на экране появился наконец-то вожделенный OSD! Синхросигнал пришлось подключать с видеомодуля (он там TTL уровня, другой плата видеть не хотела), туда же был «подцеплен» цветовой сигнал для вывода OSD. Но OSD оказался с кучей цветовых артефактов по краям, а также с увеличенной высотой. Совместно с автором прошивки мы попытались решить проблему и в итоге, после некоторых модификаций, удалось вывести OSD на экран без артефактов и в желаемом компактном виде. В данном случае мы убрали джампер A0-A1 на Blue Pill и подобрали сопротивление на цветовой канал в 330 Ом. Самым удачным был тест на зелёном канале RGB, так как остальные давали не очень хорошую цветовую совместимость. Вот тест совместимости по цветам:

osd_color_test.jpg

Потом оказалось, что компьютер теряет синхросигнал в режиме «арабка» 50гц. Тогда было добавлено и подобрано сопротивление на линию синхросигнала - 220 Ом. После этого всё заработало как надо. Чтобы OSD выключался после некоторого времени и не торчал на экране всё время, необходимо в файле FF.CFG в корне USB флешки прописать таймаут «display-off-secs = N», где N - количество секунд до выключения OSD, от 5 до 10 - в самый раз! Вот так выглядит расположение и подключение платы Blue Pill c FF OSD прошивкой внутри корпуса слим Готека. Плату я закрепил внутри не очень толстым двусторонним скотчем:

blue_pill_installed.jpg

Внутри надо подключить питание 3.3в и «землю» к самой плате Готека, а также подключить SDA и SCL сигналы. Если смотреть со стороны разъёма слим Готека, то выходы I2C интерфейса выглядят так: [SDA] [SCL] [GND] [3.3v]. Вот подробное видео о том, как прошивать Blue Pill и как подключить её к плате полноразмерного Готека, обязательно его посмотрите перед установкой платы в свой Готек:

Наружу из Готека надо вывести всего 2 провода - один для вывода OSD в цветовой сигнал, а второй для ввода синхросигнала на плату Blue Pill. Проще всего оказалось подключить эти провода прямо ко входу видеомодуля, припаяв «гребёнку» снизу к его разъёму (только для AX-350 или YIS503III):

videomodule.jpg

Для вывода проводов из Готека, надо в его верхней крышке прорезать небольшое углубление:

wires_out.jpg

Я установил переменные сопротивления, чтобы можно было подобрать нужные значения, но вы можете сразу ставить 330 Ом на цветовой сигнал и 220 Ом на синхросигнал. Вот так это выглядит у меня:

pots_connected.jpg

В итоге, всё получилось и теперь OSD виден во всех режимах: в ДОСе, Бейсике и в играх. Вот несколько скриншотов:

msxdos.jpg

timetrax.jpg

Работу по подключению и наладке FF OSD можно посмотреть в этом тикете для автора прошивки:

Перфекционизм иногда является проклятьем, но часто позволяет добиваться лучших результатов. Подключение OSD к зелёному каналу сработало на «отлично», но как видно на картинке совместимости цветов в посте выше, в некоторых цветовых комбинациях OSD виден не очень хорошо. Идеальным бы было подключить OSD по всем трём цветовым каналам, да ещё с возможностью регулировки на каждом из них.

После общения с автором прошивки идея поставить диоды на цветовые каналы была отвергнута, так как OSD выводится периодическим подтягиванием цветового сигнала либо к питанию, либо к «земле». По рекомендации автора, было решено использовать Hex 3-STATE Buffer микросхему 74LS367. Это потребовало не только вывода дополнительного провода из Готека, но и изменения конфигурации прошивки FF OSD. Но, обо всём по порядку.

Для начала, надо изменить конфигурацию таким образом, чтобы активировать выход A15 платы Blue Pill для управления микросхемой буфера. В опции «Display Enable» надо выбрать значение «PA15 Act.LOW». Лучше всего это сделать в самом начале работы с платой, если вы твёрдо решили подключить её ко всем трём цветовым каналам. Правильная конфигурация выглядит так:

config.jpg

Затем надо припаять провод к пину A15 платы Blue Pill и вывести его наружу, как показано здесь:

a15_wire.jpg

Затем необходимо припаять «гребёнку» на разъём видеомодуля (только для AX-350 или YIS503III), как показано здесь:

videomodule_prep.jpg

Теперь необходимо собрать простейшую схему с одной микросхемой (74LS367 или 74HC367), четырьмя переменными резисторами (три по 2кОм, один на 1кОм для синхросигнала, но можно и четыре по 2кОм) и одним керамическим конденсатором (100нФ). Я собрал эту схему на огрызке макетки за полчаса и подключил её к припаянной гребёнке. Выведенные из Готека провода я подключил к плате трёхпиновым разъёмом:

buffer_board.jpg

Сама схема выглядит следующим образом:

Следует обратить внимание, что на выходах цветовых каналов необходимо бОльшее сопротивление, нежели чем для подключения одного канала, описанного в предыдущем посте. Сопротивление на линии ввода синхросигнала остаётся прежним - 220 Ом. Поиграв со значениями сопротивлений, удалось получить весьма хорошие результаты. Если сопротивление находится в районе 700-800 Ом, то чёрная рамка OSD перекрывает собой изображение, а текст на ней просвечивает, как видно здесь:

dos_blue.jpg

Если же поднять сопротивление до 900 Ом или выше, то рамка становится полупрозрачной, как видно здесь:

tetris.jpg

Если же текст оказался на чёрном фоне, то рамка становится не видна, зато текст выводится серым цветом:

timetrax_black1.jpg

В общем, пусть каждый выбирает уровень прозрачности OSD рамки сам. Главное - не выставлять сопротивление цветовых линих ниже 700 Ом. Для облегчения установки FF OSD я сделал платку, которую можно будет использовать не только в компьютерах AX-350 и YIS503III, но и в других MSX машинках. Платка будет выложена в репозиторий группы RBSC после того, как я проверю её в деле. Вот как она будет выглядеть (размер её всего 3х3см):

board_3d.jpg

Эту платку можно будет также использовать для подключения одного цветового канала, без установки микросхемы. В этом случае на нужный канал ставится переменный резистор и соответствующие этому каналу места пайки ножек микросхемы соединяются джампером. Например, для зелёного канала ставится только R2 и замыкаются посадочные места под ножки 4 и 5. Переменный резистор R4 ставится всегда. В этом случае к плате подключаются только провода от B15 (средний пин) и от A8 (правый пин) на разъём CN2.

Если у кого-то будут вопросы по поводу установки и конфигурирования FF OSD - обращайтесь в личку или сюда, в тему.


Наконец-то можно объявить об успешном завершении проекта! В официальной прошивке FlashFloppy v3.36 теперь можно управлять размером OSD и выводимой информацией. Большое спасибо автору Keir Fraser за проделанную работу!

В предыдущем посте была информация о перемычке между выводами A0 и A1 на плате Blue Pill. Эта перемычка необходима, так что ставим её на плате. Теперь можно управлять настройками FF OSD используя кнопки на корпусе Готека. Нажатие двух кнопок одновременно выбирает опцию или является подтверждением действия, например записи конфигурации. Нажатие кнопок по отдельности служит для пролистывания списка опций вверх или вниз, а также для изменения значения выбранной опции, например значения сдвига OSD относительно верхнего левого угла экрана.

Чтобы сконфигурировать FF OSD с помощью Готека, необходимо сначала вынуть USB накопитель и включить компьютер. На экране появится информация о прошивке. Нажатием двух кнопок заходим в главное меню, выбираем опцию конфигурирования FF OSD и подтверждаем наш выбор. Дальше заходим в конфигурацию FF OSD и выбираем следующие значения:

Sync Polarity: Low
Pixel Timing: 15kHz
Display Height: Normal
Display Output: PB15/SPI2
Display Enable: PA15 Act.LOW

Последняя опция обязательна, если вы подключили все три цветовые линии с помощью платки FF OSD 3CH BOARD. Теперь надо выбрать местоположение OSD на экране. Лучше всего разместить его в верхнем правом углу экрана. Значения конфигурации будут выглядеть так:

H.Off (1-199): 145
V.Off (2-299): 35

Затем подтверждаем запись значений на флешку Blue Pill и когда появляется сообщение о power-off, выключаем компьютер. После включения компьютера новые значения конфигурации будут в силе и FF OSD будет работать в выбранном вами режиме. Вот как выглядят опции для конфигурирования на экране:

ff_config.jpg

Таперь осталось правильно сконфигурировать Готек с помощью файла FF.CFG. Этот файл конфигурации поставляется с каждой новой прошивкой и в нем можно найти новые переменные, которые поддерживает свежая прошивка. Для конфигурирования Готека с FF OSD рекомендуются следующие значения:

host = msx
display-type = auto
oled-font = 6x13
display-order = default
osd-display-order = 0,1
osd-columns = 16
display-off-secs = 5

Последнюю опцию надо настроить так, чтобы OSD исчезал через короткое время (5 секунд) и не мешал играть или работать. Файл для конфигурации для прошивки Готека FlashFloppy v3.36 и выше можно скачать здесь:
FF.CFG

Записываем этот файл в корневую папку USB накопителя, вставляем его в Готек и включаем компьютер. Теперь у вас есть возможность видеть экран Готека прямо на своём мониторе, а также перемещать OSD по экрану в любое удобное для вас место. Вот как это должно выглядеть в идеале:

ff_osd_ready.jpg

Герберы платы FF OSD 3CH BOARD можно скачать отсюда (коммерческое использование не разрешено!):
ffosd_board_gerber_10.zip

Так как не все платы Blue Pill подходят для этого проекта, то рекомендуем проверить вашу плату перед установкой в Готек. Проверка плат Blue Pill на работоспособность с Готеком можно прошивкой Blinky. В самой последней прошивке автор немного напутал с битрейтом, так что рекомендуем использовать более раннюю прошивку (скорость интерфейса - 115200 бод):

blinky_test-v0.20.hex

Тест Blinky может не всегда закончиться успешно на вашей плате (на ошибку флешки можно не обращать внимание), но главное, чтобы прошёл тест интерфейса I2C:

blinky_test.jpg

Если вам понравился этот проект, закиньте немного денежек автору прошивки FlashFloppy и FF OSD в знак благодарности за его труд и терпение.

Ссылки

msx/flash_floppy_osd/flash_floppy_osd.txt · Последние изменения: 2023-08-05 12:43 — GreyWolf