Вход

Просмотр полной версии : Эмулятор Эльфа на RP2040/RP2350 (Мурмуляторование и т.п.)



mikeveng73
29.05.2025, 21:30
Если кто не знает, Эльф (ALF TV-Game) - это советская приставка, на 99% совместимая с ZX Spectrum. (Почитать можно тут: https://zxbyte.ru/alf.htm)
Для тех, кому собирать эльфа - слишком трудоёмко, а хочется "что-то такое", я, по просьбам телезрителей, сделал выделенную прошивку (на основне pico-spec'а, в котором оно тоже есть в виде опции).
Тематический мурмуляторный сайт - статья: https://murmulator.tilda.ws/pico-alf
Релизы тут: https://github.com/DnCraptor/pico-alf/releases/tag/v1.2.B

Основное отличие от pico-spec'а - оно заточено работать в самой минимальной конфигурации - без psram, без клавиатуры, и даже без sd-card. Но без sd-card не получится "сменить картридж".
Ну и полнофункциональная работоспособность на всяком "странном", типа Waveshare RP2040-PiZero - тоже плюс.
Из минусов - для HDMI пока так и не сделан звук в "островах" основного сигнала - т.е. только через отдельный разъём, что несомненно неудобно.

Картинки:
https://zxbyte.ru/pic/alf/alf16.jpg

CityAceE
30.05.2025, 08:37
Из минусов - для HDMI пока так и не сделан звук в "островах" основного сигнала - т.е. только через отдельный разъём, что несомненно неудобно.
А вообще шанс получить звук через HDMI в будущем имеется? Или при данном подходе эмуляции это неосуществимо?

sergio78
30.05.2025, 10:33
без звука через HDMI это все совсем не серьезно.

mikeveng73
30.05.2025, 12:41
А вообще шанс получить звук через HDMI в будущем имеется? Или при данном подходе эмуляции это неосуществимо?

Не знаю. Там ничего военного нет, но сидеть и ковырять драйвер HDMI - я вряд-ли буду. Может, попозже сопру чей-то готовый. Есть библиотека PicoDVI - можно её попробовать прицепить, но для меня эта задача неприоритетная. Оно же нужно только для вывода звука на телек. А если просто играть - то прицепил наушники к выходу на плате, и всё ок ))

- - - Добавлено - - -


без звука через HDMI это все совсем не серьезно.

ага. игрушечное оно. 100% ))

sergio78
30.05.2025, 13:56
ага. игрушечное оно. 100% ))
нет. в телеке колонки хорошие. зачем нще колонки какие то городить. на малине тоже емуляторщиков пиннали, чтоб они через hdmi звук делали. и вон новоделы денди и сеги, с hdmi выходами. там все тоже самое было, звук через hdmi шел. а не через тюльпаны.

ZXMAK
30.05.2025, 14:00
на малине тоже емуляторщиков пиннали, чтоб они через hdmi звук делали

так на raspberry pi звук идет через стандартный стек Linux, от эмулятора это не зависит куда он будет звук выводить, конечно если специально не захардкожены принудительные настройки перебивающие системные. Как в том-же Windows программа выводит звук, а на какие колонки его выводить решает система и если эмулятор без спроса не лезет перенастраивать системные настройки, то звук будет выводиться туда куда настроил в системе пользователь. HDMI выглядит просто как звукова карта.

mikeveng73
30.05.2025, 14:39
так на raspberry pi звук идет через стандартный стек Linux, от эмулятора это не зависит куда он будет звук выводить, конечно если специально не захардкожены принудительные настройки перебивающие системные. Как в том-же Windows программа выводит звук, а на какие колонки его выводить решает система и если эмулятор без спроса не лезет перенастраивать системные настройки, то звук будет выводиться туда куда настроил в системе пользователь. HDMI выглядит просто как звукова карта.

Возможно вы не в курсе, но Raspberry Pi Pico на чипе RP2040 не имеет никакого линукса. Этот чип не имеет даже полноценного MMU (там два ядра ARM Cortex-M0+ и 260КБ памяти)

sergio78
30.05.2025, 15:35
Возможно вы не в курсе, но Raspberry Pi Pico на чипе RP2040 не имеет никакого линукса. Этот чип не имеет даже полноценного MMU (там два ядра ARM Cortex-M0+ и 260КБ памяти)
для спектрума его такого хватит. Эльф это тот же спектрум 48. и вот этот товарищь сделал, чтоб звук с hdmi у него шел https://github.com/fruit-bat/pico-zxspectrum/blob/main/docs/ZxSpectrumPiZero.md.
у меня ни наушников ни колонок в хозяйстве нет, и ненадо. для телека саундбар есть, но он тоже от hdmi или от блютуза. у меня все через hdmi, у телека таких входов дофига. и шнуров у меня полно таких поэтому. и комп висит, или ноут. приставка сега. волт еще щас спек на платке повешку еще.

mikeveng73
31.05.2025, 16:07
и вот этот товарищь сделал, чтоб звук с hdmi у него шел https://github.com/fruit-bat/pico-zxspectrum/blob/main/docs/ZxSpectrumPiZero.md.
Это пока единственная прошивка, которая так умеет. Остальные - так и не добрались сделать звук через хдми. Ну, хоть есть откуда утащить.. Может, и займусь как-то.

ZXMAK
31.05.2025, 20:08
для спектрума его такого хватит. Эльф это тот же спектрум 48. и вот этот товарищь сделал, чтоб звук с hdmi у него шел https://github.com/fruit-bat/pico-zx...ctrumPiZero.md.

так это не Raspberry Pi Zero. Это продукт другой компании - Waveshare RP2040 на легковесном контроллере по типу bluepill, то что там приставку PiZero добавили вводит только в заблуждение, т.к. Raspberry Pi Zero - это платка на SoC bcm2837 с полноценным 4-ядерным ARM Сortex-a53 с GPU V3D с поддержкой аппаратного ускорения OpenGL, работающий под линуксом. :)

Я вообще удивлен, что к такому слабому контроллеру HDMI прикрутили. Родной поддержки HDMI на чипе нет. Оригинальная плата на RP2040 от Raspberry без HDMI идет - просто как альтернатива blue pill.

mikeveng73
31.05.2025, 20:47
Я вообще удивлен, что к такому слабому контроллеру HDMI прикрутили. Родной поддержки HDMI на чипе нет. Оригинальная плата на RP2040 от Raspberry без HDMI идет - просто как альтернатива blue pill.

А его и не "прикручивали". просто часть ножек контроллера вывели на разъём HDMI, а обеспечение сигнала - полностью программное. Немного помогает набор GPIO модулей, но не так чтобы и сильно. в RP2350 поддержки чуть больше, но тоже не так чтобы много - HSTX-кодирование - сделали аппаратные блоки, но и там тоже непросто. А в RP2040 - совсем кисло. Но обходимся как-то ))

sergio78
31.05.2025, 21:22
для спека rp2040 хватает. а большего и ненадо. все эти денди или думы, это все глупости. денди под картриджи в магазине есть, а спека нету. а так валяется у меня 4 малина с 8 гигами оперативки. не знаю что с ней делать, с линуксами я возиться не люблю,поэтому валяется.

ZXMAK
01.06.2025, 00:29
просто часть ножек контроллера вывели на разъём HDMI, а обеспечение сигнала - полностью программное. Немного помогает набор GPIO модулей, но не так чтобы и сильно.

программно HDMI не сделаешь, я не знаю как он там реализован, но уверен чтото типа встроенного fpga или чегото подобного для настраиваемого железного поведения GPIO ног. Программно частоты HDMI нереально обрабатывать, тем более на относительно низких тактовых частотах

mikeveng73
01.06.2025, 02:23
программно HDMI не сделаешь, я не знаю как он там реализован, но уверен чтото типа встроенного fpga или чегото подобного для настраиваемого железного поведения GPIO ног.

Вот, мы не знали, что "не сделаешь" и сделали))
https://github.com/DnCraptor/pico-alf/blob/main/drivers/hdmi/hdmi.c - если интересно, как именно, смотреть тут.

- - - Добавлено - - -


Программно частоты HDMI нереально обрабатывать, тем более на относительно низких тактовых частотах
Там в спектруме режим 320*240 в 16-ти цветах (логический) реализован на 640×480 @ 60 Hz (физических). Необходимая для него частота hdmi-clk = 25.2 MHz, за один клок надо обрабатывать 10 байт, для этого достаточно 252 MHz. Вот одно ядро чипа именно этим и занято, а второе - эмуляция Z80 и весь обвес.
GPIO там - очень просты процессоры, которые почти ничего не умеют:
https://github.com/DnCraptor/pico-alf/blob/61165db22251acffa54684293a31effdbdda5fc6/drivers/hdmi/hdmi.c#L61 - тут мальнкий кусочек обработки (который удалось туда зусунуть)
https://github.com/DnCraptor/pico-alf/blob/61165db22251acffa54684293a31effdbdda5fc6/drivers/hdmi/hdmi.c#L78 - тут тупая передача данных (ногодрыг)
Никакого аналога FPGA там нет.

sergio78
01.06.2025, 08:36
Там в спектруме режим 320*240 в 16-ти цветах (логический) реализован на 640×480 @ 60 Hz (физических). Необходимая для него частота hdmi-clk = 25.2 MHz, за один клок надо обрабатывать 10 байт, для этого достаточно 252 MHz. Вот одно ядро чипа именно этим и занято, а второе - эмуляция Z80 и весь обвес.
а, это поэтому у порта doom такие ужасные цвета. а я думал, они за основу fastdoom просто взяли, автор которого невсилах ассемблерные оптимизации писать, и поэтому извращается с выводом картинки, через 16 цветов, или вообще через режим псевдографики.

mikeveng73
01.06.2025, 14:59
а, это поэтому у порта doom такие ужасные цвета. а я думал, они за основу fastdoom просто взяли, автор которого невсилах ассемблерные оптимизации писать, и поэтому извращается с выводом картинки, через 16 цветов, или вообще через режим псевдографики.

Там проблема с количеством SRAM - всего 264КБ, а чем больше цветов, тем больше фрем-буфер. Так-то еле запихали.