Перейти к содержанию
    

Atmega88 - выжита по максимому

Аппаратно, но через известное место: сам экран (256х192) разбит на 3 части по 64 строки, каждая строка в которой чередуется через 7 других строк. И для вывода цветного изображения надо было выбирать два цвета на знакоместо (8х8) из палитры в 16 цветов.

Нужная точка по координатам на ассемблере находилась последывательностью в несколько команд (по моему 5 или 6). Во всяком случае точно помню, что круги я научился из асма рисовать быстрее (производительней), чем это было реализовано для интерпретатора бейсик в ПЗУ :-) Или вообще советую вспомнить трехмерную векторную графику игры ELITE. Помнится даже какой то квест был с трехмерными текстурироваными объектами и движением от первого лица (тормозило правда прилично).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Для вывода на экран текста в 640*480 не нужен буфер в 300кбайт. Достаточно 2-3кб + знакогенератор во флэш. Да и даже некоторую графику можно без буфера рисовать. На лету.

Буфер не надо, но нужна скорость. Нужно взять символ, найти номер строки этого символа которая сейчас выводится на экран, найти её в памяти и только после этого мы можем её вывести. И так на каждый символ. Ну ни как не вяжется с одним пикселем за такт.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Мне не нравится Ваш базар. Ок, какую сумму Вы готовы поставить в ответ за него ?

 

Код, алгоритм, описание приведите пожалуйста...

Тогда Вы будете смеяться. Над собой. Так что разомнитесь лучше самостоятельно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не понимаю, как считать "в среднем" ? Я беру корткую команду и считаю для нее. А для меги "в среднем" тоже не один мипс на мегагерц получается, так ведь ?

......

На 2.5MHz, один цикл и три такта - 0.833, четыре такта - 0.625 и т.д.

Оценивать нужно по выполнению идентичных тестов. Теперь по расчетам. В системе команд 8080 нет трехтактных инструкций. Минимум – 4 (регистр-аккумулятор, например). Соответственно, потолок -0.625 мипс. Как для 8080, так и для меги реальная программа не может состоять только из самых "быстрых" команд. Регистров маловато (по сравнению с АВР), что вынуждает активней использовать память, а это уже 7 тактов. Ну и максимальная длительность команд – 17 тактов (я ошибся в предыдущем своем посту). Таким образом, для 8080 при самом оптимистичном прогнозе я бы не дал выше 0.3 мипс при 2.5 МГц.

 

P.S. Пардон, не заметил пост SasaVitebsk от Oct 3 2008, 11:34. Мог бы и не продолжать :rolleyes:

Изменено пользователем KP580BM80

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В системе команд 8080 нет трехтактных инструкций

Тогда соглашусь, 0,625. Все остальное - как 36,6С в среднем по больнице, без точного знания полного набора команд, или даже программы, не имеет смысла. Вообще, если бы я ориентировался на на не "только из самых "быстрых" команд", то пиксель на мегагерц ни за что бы не получился.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нужная точка по координатам на ассемблере находилась последывательностью в несколько команд (по моему 5 или 6). Во всяком случае точно помню, что круги я научился из асма рисовать быстрее (производительней), чем это было реализовано для интерпретатора бейсик в ПЗУ :-)

:cheers: Так и было.

Кстати ПЗУ-шные окружности рисовались путем расчета функций sin и cos в формате с плавающей точкой :07: .

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

Тогда Вы будете смеяться. Над собой. Так что разомнитесь лучше самостоятельно.

С удовольствием посмеюсь над собой, если раскажете, как на AVR за 1(один такт) нарисовать 1(один) пикслель :wacko: . И не просто пиксель, а еще и составить из них, пикселей какой-нибудь текст.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С удовольствием посмеюсь над собой, если раскажете, как на AVR за 1(один такт) нарисовать 1(один) пикслель :wacko: . И не просто пиксель, а еще и составить из них, пикселей какой-нибудь текст.
Во.. А то "один пиксел". Да их и 32 можно нарисовать в таком темпе - сделав на каком-то порту только "видео-ноги", подготовив данные в регистрах и поставив подряд 32 команды out.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да их и 32 можно нарисовать в таком темпе

Ход мыслей правильный. Но в строке их рисуется не 32 а 416. Хотя можно и еще больше.

 

 

как на AVR за 1(один такт) нарисовать 1(один) пикслель :wacko: . И не просто пиксель, а еще и составить из них, пикселей какой-нибудь цветной текст.

Так я ж предлагал - пари ?

Изменено пользователем Огурцов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ход мыслей правильный. Но в строке их рисуется не 32 а 416. Хотя можно и еще больше.
Да можно заготовок наделать в духе

   out PIX_PORT, reg_bkgcolor
   out PIX_PORT, reg_symcolor
   out PIX_PORT, reg_symcolor
   out PIX_PORT, reg_symcolor
   out PIX_PORT, reg_bkgcolor
   rjmp sym_loop

   out PIX_PORT, reg_symcolor
   out PIX_PORT, reg_bkgcolor
   out PIX_PORT, reg_bkgcolor
   out PIX_PORT, reg_bkgcolor
   out PIX_PORT, reg_symcolor
   rjmp sym_loop

(это две заготовки, которых достаточно для 'O' в матрице 5*7 и можно в других символах использовать, 5*7 явно плохо, между символами пробелы большие, это для примера только)

А знакогенератор сделать в виде ссылок на заготовки и потом под IJMP это пихать... Но это же сожрёт столько флеша, что в мелком кристалле не так много и останется для остальной программы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не так немного, нужно оптимизировать, но в принципе примерно это и было отправной точкой.

2 otrog: можете смеяться )

 

5*7 явно плохо, между символами пробелы большие

Одна из причин, почему и выбрана матрица 13*20(9*16), 2 такта требуются на переход, 1 на гашение, 1 на смену цвета. Впрочем шрифт нужен был крупный и легкочитаемый, не более 40 знаков в строке, поэтому получилось очень даже в тему.

 

зы: в общем-то понятно, почему и avreal далеко не каждый написал ) респект

Изменено пользователем Огурцов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я чёто не понимаю как всё это сочетается с тем, что мы видем на экране?

8кб - не так и много. 12 байт на букву Это чууууть больше 30к на алфавит...

 

С такими подходами - чтобы текст/графика/музыка - аккурат в 300-400к уместим. То есть мега84096.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С ростом мощи процессоров программирование превратилось в ремесло. Зачем думать? Можно просто, для такой задачи взять проц с 300-400к памяти. А когда-то 48К казалось огромной памятью, там можно было такую графику наворотить. И 1 мипс хватало на все.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...