8-ми битная консоль на базе Arduino
- Войдите на сайт для отправки комментариев
Всем доброго здравия!
Пишу в общий раздел, так как он объединяет в себе несколько вопросов.
Первый из них - это возможность реализации данного проекта.
Задумка катастрофически простая: реализовать эмулятор 8ми битной консоли (NES, Dendy) на базе Arduino.
Возможно нужно будет объединить силу двух ардуинок, либо собрать свою обвязку на базе atmega не знаю. Я только в начале своего пути в вопросах конструирования.
Знаю, что это делается в два клика на "ягодном пироге", но Raspberry Pi - это полноценный компьютер и на нём пишут эмуляторы и более мощных систем, хватит ли мощности ардуинки для более простой задачи?
Если чисто железной мощности хватит, то дальше начинаются вопросы обвязки: вывод аудио и видео, обработка контроллера.
С обработкой контроллера, думаю, проблем не должно возникнуть, его можно собрать на базе всё той же ардуинки, благо там всего 8 (10) кнопок обработать.
Вывод видео: можно подключить небольшой 3-х дюймовый дисплей, но хотелось бы более качественную картинку, хотя бы 5 дюймовый экранчик от какого-нибудь смартфона и/или вывод сигнала наружу (для подключения к телевизору, например), но опять-таки читал, что мощности нашей Atmeg'и просто может не хватить для таких "серьёзных" экранов, опять-таки, возможно есть смысл видео модуль сделать на отдельной ардуине и передавать сигнал между головной и вспомогательной...
А вот с обработкой и выводом звука вообще не могу даже предположить как это должно выглядеть/работать.
Вопрос к тем, кто уже опытен: стоит ли игра свечь? Реальна ли она вообще?
Если кому-то нравится идея, можно было бы замутить коллективный проект (я программист, а вот с железной частью не очень пока дружу).
P.S. Если это имеет значение, то все свои проекты я ваяю на Arduino Pro Mini, а ещё у меня есть мешочек МК Atmega32А (smd), возможно есть смысл собрать на них...
Надеюсь, тема не покажется вам слишком дурацкой. Буду благодарен за любой совет.
p.p.s. Это не комерчесской выгоды ради, а образовательных целей для
Задумка катастрофически простая: реализовать эмулятор 8ми битной консоли (NES, Dendy) на базе Arduino.
...дальше начинаются вопросы обвязки: вывод аудио и видео, обработка контроллера.
С обработкой контроллера, думаю, проблем не должно возникнуть, его можно собрать на базе всё той же ардуинки, благо там всего 8 (10) кнопок обработать.
Вывод видео: можно подключить небольшой 3-х дюймовый дисплей, но хотелось бы более качественную картинку, хотя бы 5 дюймовый экранчик...
Если бы Вы перед тем, как сощдавать тему, взяли на себя труд хоть немного ознакомиться с аппаратной частью тех устройств, которые хотите эмулировать, то обнаружили бы, что все они без исключения используют специализированный аппаратный видеоконтроллер (кстати, есть он и в Raspberry Pi).
Так что, если хотите к чему-то подключить 3-5-дюймовый дисплей, следует определиться, к чему именно.
(я программист, а вот с железной частью не очень пока дружу).
Ну, раз Вы программист, могу посоветовать попытаться попрограммировать хотя бы CGA/EGA/VGA на уровне регистров. Очень многое сразу станет ясно.
Вот здесь эмулятор ZX Spetcruma http://meandr.org/archives/21451 , http://arduino.ru/forum/otvlechennye-temy/zx-spectrum-na-avr-mikrokontrollerakh
Теже процессоры что и на ардуино, но добавлена видео память.
Если бы Вы перед тем, как сощдавать тему, взяли на себя труд хоть немного ознакомиться с аппаратной частью тех устройств, которые хотите эмулировать, то обнаружили бы, что все они без исключения используют специализированный аппаратный видеоконтроллер (кстати, есть он и в Raspberry Pi).
Так что, если хотите к чему-то подключить 3-5-дюймовый дисплей, следует определиться, к чему именно.
Перед сорзданием темы я как раз таки ознакомился с начинкой вышеупомянутых консолей и всё это прекрасно понимаю, потому и спрашиваю совета:
Вопрос совтоит в том: потянет ли сама по себе атмега подобную манипулцию или стоит использовать сторонний блок для обработки видео. По аналогии с приведённым эмулятором спектрума, полагаю, что правильнее будет видеоблок собрать отдельно.
Ну, раз Вы программист, могу посоветовать попытаться попрограммировать хотя бы CGA/EGA/VGA на уровне регистров. Очень многое сразу станет ясно.
За совет благодарю! Становится понятней хотябы вектор направления. При наборе одних только идей сложно формулировать мысль...
Благодарю! Ознакомлюсь с базой, думаю, всё станет яснее.
Вот здесь эмулятор ZX Spetcruma http://meandr.org/archives/21451 , http://arduino.ru/forum/otvlechennye-temy/zx-spectrum-na-avr-mikrokontrollerakh
Теже процессоры что и на ардуино, но добавлена видео память.
Это явно не ардуиновский уровень. Одна внешняя память чего стоит.
А раз так - сразу возникает вопрос: а зачем оно нужно?
- иметь аутентичный аппарат - это понятно.
- пользоваться эмулятором на ПК - тоже понятно.
А тут получается ни то, ни се - достаточно сложная конструкция, не имеющая преимуществ ни эмулятора, ни оригинала.
Во-во, растрачивает народ свою созидательную энергию на всякую ненужную хрень. Тут дэнди-дуино мутят, в соседней теме wi-fi радио из ардуины делают... WTF??? Ну поставь ты на смартфон или комп программу, -радио готово :) Запусти эмулятор -денди, синклер и прочие сеги-меги заиграли на мониторе лучше, чем было в 90х. 21 век во дворе, пора с люстрами и музыкальными центрами на человечьем языке говорить, умные дома и всё такое. Что б уходя дом вежливо поинтересовался - "хозяин, ты телевизор специально не отключил, и или мне всё таки выключить?" :) В общем простор для фантазии неиссякаемый.
Возможно, уровень не ардуиновский, но я думаю, можно будет победить эту задумку и средствами ардуины, хотя и странно и сложно.
А насчёт зачем это нужно? Всё очень просто: созидать можно и умный дом и боевого дроида и игровую консоль.
Каждый созидает то, что ему близко. И на данный момент времени я хочу собрать данное устройство по нескольким причинам:
1. Это просто забавно и если у меня это получится, я буду доволен собой
2. Если у меня это получится, я смогу играть в старые игры на своём же аппарате, получая от этого дополнительное удовольствие
3. Знания, которые я приобрету в процессе разработки данного устройства помогут мне в дальнейшем в разработке более сложных устройств.
В любом случае, всем спасибо за ответы!
Возможно, уровень не ардуиновский, но я думаю, можно будет победить эту задумку и средствами ардуины, хотя и странно и сложно.
Нету В Ардуино таких средств:
- вместо библиотек придется использовать собственный код,
- вместо скетча - полноценная модульная программа,
- вместо пары-тройки плат, соединенных проводками - разработка серьезной схемы и изготовление для нее платы.
Каждый созидает то, что ему близко. И на данный момент времени я хочу...
Вообще-то этого вполне достаточно. Ардуино - это for fun. Так что "хочу" - вполне достаточное обоснование. Единственное, вероятнее всего, Ваше желание некому будет разделить, и Вам предстоит работать над своим проектом в одиночестве.
3. Знания, которые я приобрету в процессе разработки данного устройства помогут мне в дальнейшем в разработке более сложных устройств.
Должен заметить, что Вы сразу беретесь за очень сложное устройство.
Ну, как? Вышел каменный цветок или не удалось?
Я думаю, что смогу ответить Вопрос "можно или нет сделать денди на ардуино".
Ответ - Если ардуино - это АТМЕГИ, то нет!
Поясняю. У 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, такое тоже есть на Ютубе.
Вот все стремятся денди повторить... Начинайте с Atari 2600, там оперативы всего 128 байт :D (И всё равно с выводом на дисплей трах будет).
SCratORS хорошо расписал.
SCratORS, спасибо за подробное разложение по полочкам.
dezz0riented, да я не "повторить", а просто полюбопытствовать - тема старая, а о результате нет информации, может кто-то совершил подвиг всё же. А так, если бы хотелось быстрого кастомного решения, то малинка/апельсинка для этого более чем.
Интереснее же рассмотреть варианты именно на МК. Кстати, как вариант, можно попробовать использовать несколько Ардуинок, хотя тут добавятся и несколько иные проблемы уже, не только нехватка памяти и т.п..
Интереснее же рассмотреть варианты именно на МК. Кстати, как вариант, можно попробовать использовать несколько Ардуинок, хотя тут добавятся и несколько иные проблемы уже, не только нехватка памяти и т.п..
На МК с внешней SPI RAM в принципе можно пробовать, как и катридж через SPI FLASH. Скорости Atmega32 вполне хватит на 16-битный какой нибудь паралельный 480х320, с 320х240 будет совсем быстро.