8-ми битная консоль на базе Arduino

NapalmRain
Offline
Зарегистрирован: 05.10.2016

Всем доброго здравия!

Пишу в общий раздел, так как он объединяет в себе несколько вопросов.

Первый из них - это возможность реализации данного проекта.

Задумка катастрофически простая: реализовать эмулятор 8ми битной консоли (NES, Dendy) на базе Arduino.

Возможно нужно будет объединить силу двух ардуинок, либо собрать свою обвязку на базе atmega не знаю. Я только в начале своего пути в вопросах конструирования. 

Знаю, что это делается в два клика на "ягодном пироге", но Raspberry Pi - это полноценный компьютер и на нём пишут эмуляторы и более мощных систем, хватит ли мощности ардуинки для более простой задачи?

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

С обработкой контроллера, думаю, проблем не должно возникнуть, его можно собрать на базе всё той же ардуинки, благо там всего 8 (10) кнопок обработать.

Вывод видео: можно подключить небольшой 3-х дюймовый дисплей, но хотелось бы более качественную картинку, хотя бы 5 дюймовый экранчик от какого-нибудь смартфона и/или вывод сигнала наружу (для подключения к телевизору, например), но опять-таки читал, что мощности нашей Atmeg'и просто может не хватить для таких "серьёзных" экранов, опять-таки, возможно есть смысл видео модуль сделать на отдельной ардуине и передавать сигнал между головной и вспомогательной...

А вот с обработкой и выводом звука вообще не могу даже предположить как это должно выглядеть/работать.

Вопрос к тем, кто уже опытен: стоит ли игра свечь? Реальна ли она вообще?

Если кому-то нравится идея, можно было бы замутить коллективный проект (я программист, а вот с железной частью не очень пока дружу).

P.S. Если это имеет значение, то все свои проекты я ваяю на Arduino Pro Mini, а ещё у меня есть мешочек МК Atmega32А (smd), возможно есть смысл собрать на них...

Надеюсь, тема не покажется вам слишком дурацкой. Буду благодарен за любой совет.

p.p.s. Это не комерчесской выгоды ради, а образовательных целей для

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

NapalmRain пишет:

Задумка катастрофически простая: реализовать эмулятор 8ми битной консоли (NES, Dendy) на базе Arduino.

...дальше начинаются вопросы обвязки: вывод аудио и видео, обработка контроллера.

С обработкой контроллера, думаю, проблем не должно возникнуть, его можно собрать на базе всё той же ардуинки, благо там всего 8 (10) кнопок обработать.

Вывод видео: можно подключить небольшой 3-х дюймовый дисплей, но хотелось бы более качественную картинку, хотя бы 5 дюймовый экранчик...

Если бы Вы перед тем, как сощдавать тему, взяли на себя труд хоть немного ознакомиться с аппаратной частью тех устройств, которые хотите эмулировать, то обнаружили бы, что все они без исключения используют специализированный аппаратный видеоконтроллер (кстати, есть он и в Raspberry Pi).

Так что, если хотите к чему-то подключить 3-5-дюймовый дисплей, следует определиться, к чему именно.

Цитата:

(я программист, а вот с железной частью не очень пока дружу).

Ну, раз Вы программист, могу посоветовать попытаться попрограммировать хотя бы CGA/EGA/VGA на уровне регистров. Очень многое сразу станет ясно.

nik182
Offline
Зарегистрирован: 04.05.2015

Вот здесь эмулятор ZX Spetcruma http://meandr.org/archives/21451http://arduino.ru/forum/otvlechennye-temy/zx-spectrum-na-avr-mikrokontrollerakh

Теже процессоры что и на ардуино, но добавлена видео память. 

NapalmRain
Offline
Зарегистрирован: 05.10.2016

andriano пишет:

Если бы Вы перед тем, как сощдавать тему, взяли на себя труд хоть немного ознакомиться с аппаратной частью тех устройств, которые хотите эмулировать, то обнаружили бы, что все они без исключения используют специализированный аппаратный видеоконтроллер (кстати, есть он и в Raspberry Pi).

Так что, если хотите к чему-то подключить 3-5-дюймовый дисплей, следует определиться, к чему именно.

Перед сорзданием темы я как раз таки ознакомился с начинкой вышеупомянутых консолей и всё это прекрасно понимаю, потому и спрашиваю совета:

Вопрос совтоит в том: потянет ли сама по себе атмега подобную манипулцию или стоит использовать сторонний блок для обработки видео. По аналогии с приведённым эмулятором спектрума, полагаю, что правильнее будет видеоблок собрать отдельно. 

Цитата:

Ну, раз Вы программист, могу посоветовать попытаться попрограммировать хотя бы CGA/EGA/VGA на уровне регистров. Очень многое сразу станет ясно.

За совет благодарю! Становится понятней хотябы вектор направления. При наборе одних только идей сложно формулировать мысль...

nik182 пишет:
Вот здесь эмулятор ZX Spetcruma

Благодарю! Ознакомлюсь с базой, думаю, всё станет яснее.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

nik182 пишет:

Вот здесь эмулятор ZX Spetcruma http://meandr.org/archives/21451http://arduino.ru/forum/otvlechennye-temy/zx-spectrum-na-avr-mikrokontrollerakh

Теже процессоры что и на ардуино, но добавлена видео память. 

Это явно не ардуиновский уровень. Одна внешняя память чего стоит.

А раз так - сразу возникает вопрос: а зачем оно нужно?

- иметь аутентичный аппарат - это понятно.

- пользоваться эмулятором на ПК - тоже понятно.

А тут получается ни то, ни се - достаточно сложная конструкция, не имеющая преимуществ ни эмулятора, ни оригинала.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Во-во, растрачивает народ свою созидательную энергию на всякую ненужную хрень. Тут дэнди-дуино мутят,  в соседней теме wi-fi радио из ардуины делают...   WTF??? Ну поставь ты на смартфон или комп программу, -радио готово :) Запусти эмулятор -денди, синклер и прочие сеги-меги  заиграли на мониторе лучше, чем было в 90х. 21 век во дворе, пора с люстрами и музыкальными центрами на человечьем языке говорить, умные дома и всё такое. Что б уходя дом вежливо поинтересовался - "хозяин, ты телевизор специально не отключил, и или мне всё таки выключить?" :)   В общем простор для фантазии неиссякаемый.

NapalmRain
Offline
Зарегистрирован: 05.10.2016

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

А насчёт зачем это нужно? Всё очень просто: созидать можно и умный дом и боевого дроида и игровую консоль.

Каждый созидает то, что ему близко. И на данный момент времени я хочу собрать данное устройство по нескольким причинам:

1. Это просто забавно и если у меня это получится, я буду доволен собой

2. Если у меня это получится, я смогу играть в старые игры на своём же аппарате, получая от этого дополнительное удовольствие

3. Знания, которые я приобрету в процессе разработки данного устройства помогут мне в дальнейшем в разработке более сложных устройств.

В любом случае, всем спасибо за ответы!

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

NapalmRain пишет:

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

Нету В Ардуино таких средств:

- вместо библиотек придется использовать собственный код,

- вместо скетча - полноценная модульная программа,

- вместо пары-тройки плат, соединенных проводками - разработка серьезной схемы и изготовление для нее платы.

Цитата:

Каждый созидает то, что ему близко. И на данный момент времени я хочу...

Вообще-то этого вполне достаточно. Ардуино - это for fun. Так что "хочу" - вполне достаточное обоснование. Единственное, вероятнее всего, Ваше желание некому будет разделить, и Вам предстоит работать над своим проектом в одиночестве.

Цитата:

3. Знания, которые я приобрету в процессе разработки данного устройства помогут мне в дальнейшем в разработке более сложных устройств.

Должен заметить, что Вы сразу беретесь за очень сложное устройство.

ZyBoy
Offline
Зарегистрирован: 03.04.2014

NapalmRain пишет:
я думаю, можно будет победить эту задумку и средствами ардуины, хотя и странно и сложно.

Ну, как? Вышел каменный цветок или не удалось?

SCratORS
Offline
Зарегистрирован: 14.01.2019

Я думаю, что смогу ответить Вопрос "можно или нет сделать денди на ардуино".

Ответ - Если ардуино - это АТМЕГИ, то нет!

Поясняю. У NES 8кб ОЗУ, у 328 атмеги - 2 кб, - сразу лесом. У 2560 (МЕГА) - 8 кб, - казалось бы да, но тут опять нет, т.к. 8 кб только ОЗУ, а где хранить сами банки ROM и VRAM? и ответ казалось бы, - во flash, - но нет, нужна адресуемая память.

Если вам всё же не терпится и хочется, гуглим nesemu1 от bisqwit - Это эмулятор NES написаный в менее чем 1000 строк C++, удалив из кода SDL, Генератор палитры (заменить на массив), и прикрутив либу vector к Arduino IDE, то вам вполне удастся скомпилировать эмулятор, Лично мне это удалось под NANO. Удалось с обрезанием массивов RAM, ROM, VRAM в ноль. И на выходе 23кб. И как никрути, NES ROM(дамп картриджа) даже самый мизерный занимает ~20кб, и записать его вместе с прошивкой не удастся т.к. всего 30кб. Прикрутив либу для работы с SD, - сразу на выходе почти 45кб, т.е. оно никак тупо не влезает на NANO, на МЕГУ можно собрать но опять таки без  ROM, VRAM, только RAM влезает и то не полностью.

Как итог, - можно сделать на esp8266, - там все влезет без проблем. Но не знаю сколько FPS будет на выходе, т.к. судя по видосикам и обучалкам самый шустрый (и не подходящий под эту цель) SPI Дисплей выдает ~15-20 fps на NANO, на esp возможно больше, но не думаю что комфортные 60 получатся в принципе.

Если взять esp, и запустить на ней эмулятор и если он без вывода графики сможет просто выдать фреёмрейт ~50-70, то дальше нужно смотреть в сторону эмуляции PAL или NTSC сигнала для вывода по TV-OUT, такое тоже есть на Ютубе.

dezz0riented
dezz0riented аватар
Offline
Зарегистрирован: 27.07.2014

Вот все стремятся денди повторить... Начинайте с Atari 2600, там оперативы всего 128 байт :D (И всё равно с выводом на дисплей трах будет).

SCratORS хорошо расписал.

ZyBoy
Offline
Зарегистрирован: 03.04.2014

SCratORS, спасибо за подробное разложение по полочкам.

dezz0riented, да я не "повторить", а просто полюбопытствовать - тема старая, а о результате нет информации, может кто-то совершил подвиг всё же. А так, если бы хотелось быстрого кастомного решения, то малинка/апельсинка для этого более чем.

Интереснее же рассмотреть варианты именно на МК. Кстати, как вариант, можно попробовать использовать несколько Ардуинок, хотя тут добавятся и несколько иные проблемы уже, не только нехватка памяти и т.п..

 

3ABX03
3ABX03 аватар
Offline
Зарегистрирован: 18.01.2019

ZyBoy пишет:

Интереснее же рассмотреть варианты именно на МК. Кстати, как вариант, можно попробовать использовать несколько Ардуинок, хотя тут добавятся и несколько иные проблемы уже, не только нехватка памяти и т.п..

На МК с внешней SPI RAM в принципе можно пробовать, как и катридж через SPI FLASH. Скорости Atmega32 вполне хватит на 16-битный какой нибудь паралельный 480х320, с 320х240 будет совсем быстро.