МикроМашина на AVR

8-битные микроконтроллеры AVR (AT90, ATtiny, ATmega) от Atmel (в настоящий момент принадлежит Microchip)

Moderator: Shaos

Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

МикроМашина на AVR

Post by Romanich »

Приветствую всех!

В этом топике решил выложить фотки моего первого грандиозного проекта - МикроМашины :)
Это игровая 2D-консоль

Краткие характеристики:
CPU - ATmega128 со всеми своими потрохами
External RAM - SRAM 32kB
Video - Nokia 7210 LCD
Sound - YM2612
KeyPad - 8-кнопочный джойстик
"Video Accelerator" - Ultra SPI 16/24 Mbit/s (реализован на логике, служит для быстрого переноса данных с видеобуфера на LCD)

Внешний вид ВСЕЙ МикроМашины:
Image

Материнская плата:
Image

Коротко о программном обеспечении:
Библиотека(ядро) uMAPI v1 - что-то типа DirectX
Включает в себя функции для работы с видео/звуком/управлением
Все процедуры 2D-рендеринга написаны на AVR-ассемблере

Спецификация uMAPI v1 лежит тут: http://nedopc.org/nedopc/upload/uMAPIv1.pdf

uMAPI SDK находится здесь:
http://nedopc.org/nedopc/upload/uMAPIv1SDK.pdf

Приложения:
В настоящее время написано 2 приложения - тестовое (в uMAPI SDK)
и одна игрушка ("прыгалка-стрелялка") Zhabik
А также пишется игра ("леталка-стрелялка") Trufel

Текущее состояние дел:
В основном из-за ограниченного ресурса FLASH ROM в ATmega128, производство игр приостанавливается (см. uMAPIv1SDK)

Скриншоты из игры "Zhabik":
Image
Image

Пвсевдо-скриншот разрабатываемой игры "Trufel":
Image

Укрупнённая фотка изображения с LCD:
Image

Вот что можно на AVR собрать :P
Получился ещё один Недо-компьютер :D

Интересно выслушать предложения/пожелания/ и всякое такое...
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Два предложения:

1. Может все это в топик по AVR перенести ?
2. Может ты принципиальную схему выложишь ? Описание - это интересно, но схему взглянуть - куда как интереснее.
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

SfS wrote:Два предложения:

1. Может все это в топик по AVR перенести ?
2. Может ты принципиальную схему выложишь ? Описание - это интересно, но схему взглянуть - куда как интереснее.
Можно и перенести. МикроМашина - на сегодняшний день - закрытый проект. Поэтому принципиалку выложить увы... не могу.
Все архитектурные принципы видны из фотки платы.
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

Могу дать ссылки на EXE-шные верисии игр/прошивок
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: МикроМашина на AVR

Post by Shaos »

SfS wrote:Может все это в топик по AVR перенести ?
Перенес
Romanich wrote: Текущее состояние дел:
В основном из-за ограниченного ресурса FLASH ROM в ATmega128, производство игр приостанавливается (см. uMAPIv1SDK)
У меня предложение такое - чтобы не перезаписывать микроконтроллер для каждой игры, надо бы держать там только основные подпрограммы и виртуальную машину, которая будет выполнять внешний байт-код, который может тянуться из внешней памяти (например ПЗУ-картриджа). В таком случае получится более гибкий девайс.
Romanich wrote: МикроМашина - на сегодняшний день - закрытый проект. Поэтому принципиалку выложить увы... не могу.
А вот это печально :(
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

А можно видео записать? Чтобы увидеть действие LCD в динамике - желательно рядом часы положить с секундной стрелкой ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
lvd
Maniac
Posts: 230
Joined: 01 Mar 2005 21:42

Re: МикроМашина на AVR

Post by lvd »

Shaos wrote: У меня предложение такое - чтобы не перезаписывать микроконтроллер для каждой игры, надо бы держать там только основные подпрограммы и виртуальную машину, которая будет выполнять внешний байт-код, который может тянуться из внешней памяти (например ПЗУ-картриджа). В таком случае получится более гибкий девайс.
Вообще не стоит выбирать флеш-онли МК для компьютероподобных применений (частая смена программы). 51ый с внешней рамой программы и то лучше =))
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Re: МикроМашина на AVR

Post by Romanich »

Shaos wrote: У меня предложение такое - чтобы не перезаписывать микроконтроллер для каждой игры, надо бы держать там только основные подпрограммы и виртуальную машину, которая будет выполнять внешний байт-код, который может тянуться из внешней памяти (например ПЗУ-картриджа). В таком случае получится более гибкий девайс.
Виртуальные машины понижают производительность как минимум в 10 раз. Вначале тоже хотел так сделать, но передумал. Просто не факт что в этом случае хотябы 30 ФПСов получится на LCD
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

Shaos wrote:А можно видео записать? Чтобы увидеть действие LCD в динамике - желательно рядом часы положить с секундной стрелкой ;)
Есть 2 avi - пожатые. Весят по 27метров. Можно Virtual Dub'ом порезать... Только будет без часов - ибо своего цифровика у меня нет :(
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Re: МикроМашина на AVR

Post by Romanich »

lvd wrote: Вообще не стоит выбирать флеш-онли МК для компьютероподобных применений (частая смена программы). 51ый с внешней рамой программы и то лучше =))
Архитектура MCS51 мне не нравица... Слишком гнойная. Тратить 12/24/36 тактов при версиях микросхем на 44МГц - слишком много.
Плюс проблема с условными переходами - им там так мало... Нужно извращаца, когда например, сравниваешь 2 числа.

А то что там внешняя память для кода цепляется - я знаю. У меня есть P80C32UFPN (DIP,44MHz). А таже AT89*** подойдёт
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: МикроМашина на AVR

Post by Shaos »

Romanich wrote:
Shaos wrote: У меня предложение такое - чтобы не перезаписывать микроконтроллер для каждой игры, надо бы держать там только основные подпрограммы и виртуальную машину, которая будет выполнять внешний байт-код, который может тянуться из внешней памяти (например ПЗУ-картриджа). В таком случае получится более гибкий девайс.
Виртуальные машины понижают производительность как минимум в 10 раз. Вначале тоже хотел так сделать, но передумал. Просто не факт что в этом случае хотябы 30 ФПСов получится на LCD
Неверно. Ты же не все будешь в байткоде делать. Все равно существенная часть вычислительных мощей уходит на попиксельное копирование графики и на пропихивание музыки в синтезатор - эти подпрограммы можно сделать нативными. На байткод останется только логика игры ну и спрайты будут во внешней памяти.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Romanich wrote:
Shaos wrote:А можно видео записать? Чтобы увидеть действие LCD в динамике - желательно рядом часы положить с секундной стрелкой ;)
Есть 2 avi - пожатые. Весят по 27метров. Можно Virtual Dub'ом порезать... Только будет без часов - ибо своего цифровика у меня нет :(
А чем пожатые? Жми DivX-ом (или Xvid-ом)
Я тут за главного - если что шлите мыло на me собака shaos точка net
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Re: МикроМашина на AVR

Post by Romanich »

Shaos wrote:
Romanich wrote: Виртуальные машины понижают производительность как минимум в 10 раз. Вначале тоже хотел так сделать, но передумал. Просто не факт что в этом случае хотябы 30 ФПСов получится на LCD
Неверно. Ты же не все будешь в байткоде делать. Все равно существенная часть вычислительных мощей уходит на попиксельное копирование графики и на пропихивание музыки в синтезатор - эти подпрограммы можно сделать нативными. На байткод останется только логика игры ну и спрайты будут во внешней памяти.
Я по большей части железячник а не программист
И решаю проблемы соответственно своему профилю :)

Куда проще найти нормальный проц(не контроллер) для внешней памяти кода и 2Д-акслератор. Тогда производительность ЦПУ ну воопще никакой роли не играет!

А в МикроМашине вся нагрузка на контроллер! От того я и использовал именно АВР а не MCS51, PIC и прочее
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

Shaos wrote:
Romanich wrote:
Shaos wrote:А можно видео записать? Чтобы увидеть действие LCD в динамике - желательно рядом часы положить с секундной стрелкой ;)
Есть 2 avi - пожатые. Весят по 27метров. Можно Virtual Dub'ом порезать... Только будет без часов - ибо своего цифровика у меня нет :(
А чем пожатые? Жми DivX-ом (или Xvid-ом)
Попытаюсь вырвать клочёк из АВИ где изображение на ЛСД в динамике
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Post by jdigreze »

А если дополнительно к 32K SRAM добавлять картридж 32K EEPROM для программ? Можно и для байт-кода... Shaos правильно подметил на счет интерпретации, основная производительность нужна только при работе с массивами, а это в большинстве своем однотипные операции.

В MCS51 условные переходы вполне нормальные, а сравнить два чила - cjne a,b,$. Может оно и не совсем эффективно, но есть и другие способы. Мне понравился подход вычисляемых переходов по DPTR.