monobogdan

monobogdan

Топовый автор
На Пикабу
Дата рождения: 25 сентября 2001
BlaBlaBoy user6154240 tehb11
tehb11 и еще 49 донатеров
G0lubи еще 1 читатель ждут новые посты
поставил 6 плюсов и 1 минус
отредактировал 2 поста
проголосовал за 2 редактирования

Собираем на будущие ништяки

Именно Вы, читатели, помогаете с подготовкой новых статей - все деньги отправляются на покупку девайсов для будущих статей и оборудования! Спасибо всем, кто помогает - и морально, и материально!

0 2 000
из 2 000 собрано осталось собрать
Награды:
За участие в Авторской неделеболее 1000 подписчиков Высокий разум
42К рейтинг 1817 подписчиков 0 подписок 176 постов 129 в горячем

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»?

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост



Друзья! Многие ли из вас застали такую легендарную видеокарту, как S3 ViRGE? Когда-то этот GPU стоял чуть ли не в каждом втором офисном компьютере: благодаря дешевизне и заявленной поддержке 3D-ускорения, эту видеокарту просто сметали с полок магазинов. Далеко не все могли себе позволить ATI Rage, Riva TNT и уж тем более 3dfx Voodoo и очень разочаровывались в свежекупленной видеокарте, когда пытались поиграть в новомодные игры тех лет. На момент написания статьи, в сети слишком мало материала о том, как работали видеокарты 90-х «под капотом», однако мне удалось найти даташит на видеочип, SDK для программирования 3D-графики специально под него и некоторую документацию. Я решил исправить это недоразумение и начать развивать отдельную рубрику о работе старых видеочипов: начиная от S3 ViRGE и заканчивая GPU PS2 и PSP. Сегодня мы с вами: вспомним о S3 ViRGE, узнаем о том, как работали видеокарты в 90-х годах, затронем 2D и 3D режим и почему они тесно связаны между собой, посмотрим на проприетарное графическое API S3 ViRGE и раскроем причину, почему же этот GPU был таким медленным!

❯ 3D графика на ПК: начало


В начале 90-х годов 3D-графика на обычных домашних компьютерах была редкостью. Профессиональные GPU применялись только на дорогущих графических станциях, которые использовались в кинематографе или различных симуляциях, а также на дорогих японских игровых автоматах. У простого обывателя не было доступа к аппаратным средствам рендеринга 3D-графики.

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


SGI Indigo

Однако это не значит, что 3D-графики не было вообще. Прогресс развития домашних процессоров шёл семимильными шагами и гиганты рынка —Intel,AMDи в некоторой степени Cyrix, выпускали всё новые и новые процессоры с повышенными тактовыми частотами, а ближе к середине 90-х — и с SIMD (MMX). Поскольку многие техники для отрисовки трехмерного изображения были разработаны ещё в 60-х — 70-х годах, игроделы к началу-середине 90-х во всю использовали некоторые наработанные техники из кинематографа для растеризации 3D-графики прямо на процессоре — так называемыйсофтварный рендеринг.

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


Одной из самых известных техник 90-х являлась 2.5D графика с использованием рейкастинга — когда картинка на экране выглядит как трёхмерная, однако по факту весь мир представлен в виде 2D-координат, а эффект «пола и потолка» был как бы фейковым. Принцип его работы довольно прост: от глаз игрока для каждого горизонтального пикселя (т. е. при разрешении 240х320, у нас будет 240 проходов) пускаются «лучи» и ищется пересечение с ближайшей стеной относительно угла обзор из глаз игрока. Из этого пересечения берется дистанция до этой стены (на основе дистанции и угла считается «высота» данной строчки стены) и считается какую строчку текстуры необходимо вывести в этой точке. Одними из первых игр с применением этой технологии стал Hovertank и Wolfenstein 3D, а технология применялась практически до конца 90-х. Одной из самых лучших реализаций рейкастинга — движок Duke Nukem 3D, Build Engine, написанный Кеном Сильверманом.

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


Однако не одним 2.5D мы были едины. Шли годы, в СНГ многие люди продолжали наслаждаться 8-битными и 16-битными играми на клонахNESи SMD. У некоторых уже появлялась PS1, которая позволяла играть в игры с довольно хорошей 3D-графикой, однако на ПК 3D-игры были доступны не всем. Но в 1996 году выходитQuake— новейший шутер от первого лица от id Software с настоящей, трушной 3D-графикой и переворачивает всю индустриюFPSс ног на голову. Посудите сами: Джон Кармак умудрился реализовать достаточно быстрый софтварный рендерер, который мог вполне сносно работать на Pentium 75Мгц в разрешении 320x240. А ведь помимо отрисовки кадра, игре нужно было просчитывать логику монстров (довольно примитивную, к слову), обрабатывать столкновения, просчитывать видимую геометрию с помощью BSP-дерева и обрабатывать клиент-серверную логику самой игры. Это была самая настоящая революция в мире 3D игр на ПК.

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


В 1997 году, id Software выпустили glQuake — порт Quake с софтрендера на OpenGL, плюс своеобразную прослойку для совместимости с API 3dfx Glide (на видеокартах Voodoo) и подмножества OpenGL, используемым в игре. Порт на OpenGL позволял разгрузить ЦПУ, перенеся всю отрисовку графики с процессора на 3D-ускоритель. Сам по себе, OGL как графическое API, представлял из себя лишь набор спецификаций, который мог быть реализован как в программном виде, так и в аппаратном производителем видеокарты (на примере Windows — OpenGL32.dll это программная реализация, которая при необходимости обращается к atioglxx.dll/nvoglvxx.dll — аппаратной реализации OpenGL от вендора видеочипа). Однако, OpenGL корнями уходил именно в отрисовку промышленной графики, а DirectX всё ещё находился в зачаточной форме, из-за чего многие производители разрабатывали собственное графическое API: из известных мне, могу подчеркнуть ATI CIF (C Interface), 3dfx Glide и проприетарное SDK S3 ViRGE. Некоторые вендоры поддерживали целые игровые движки — например, BRender и RenderWare.

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


Отдельные 3D-акселлераторы потихоньку начали завоевывать сердца геймеров и создавать новый сегмент рынка. Серьезные видеокарты от известных производителей, такие как 3dfx Voodoo, ATI Rage и Riva TNT стоили достаточно дорого и многим были не по карману. Зато существовало множество видеокарт с 3D-ускорителями от других производителей, про некоторые из них вы могли даже не слышать: отдельные дискретные видеокарты Intel (i740), видеокарты от производителя чипсетов SiS и конечно же, видеокарты от S3 с сериями ViRGE и Savage. Видеочипы от Intel и SiS делали упор на D3D 7.

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


Intel i740

S3 ViRGE была весьма неплохой видеокартой с точки зрения 2D-ускорения. Сейчас 2D принято считать частным случаем 3D (по факту, 2D-спрайты — это 3D-квады, состоящие из двух треугольников), однако в то время для работы с памятью видеокарты и аппаратного ускорения некоторых операций, таких как блиттинг (BitBlt) существовало отдельное графическое API — DirectDraw. С этим у ViRGE было всё хорошо — он поддерживал довольно высокое разрешение экрана (при желании, объём видеопамяти можно было нарастить и установить разрешение ещё выше) и умел ускорять часть операций как DDraw, так и GDI.

Однако, ViRGE разочаровывал многих геймеров 90х своей производительностью в 3D-графике. На коробке с бюджетной видеокартой красовались красивые надписи о 3D-графике следующего поколения, а на фотографии можно было увидеть некую игру про мехов с невиданной графикой!

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


По факту, ViRGE подходил для 3D-игр не особо хорошо. Конечно в те годы никто особо не плевался от FPS и при желании, игру могли пройти и в 15, и в 20 FPS. Однако производительность софтварного рендерера иногда была даже выше, чем у растеризатора ViRGE, а игры должны были быть специально адаптированы под неё (т. е. портированы для использования S3DTK). Тайтлов с адаптацией по этот GPU было немало: как минимум, Tomb Raider и MechWarrior 2 (который шел в комплекте с игрой). Польские ребята из известной многим Techland даже написали прослойку S3D -> OpenGL, позволявшей запускать Quake на ViRGE. Производительность была не ахти…

Видеокарт от S3 нашлись и у меня, причём сразу несколько — ViRGE в PCI-исполнении и Trio в AGP-исполнении! Иногда я их использую для проверки старых материнских плат, которых у меня не так уж и много — рабочих на PGA370 и ниже у меня совсем нет. Однако остаётся вопрос, как эти видеокарты работали под капотом? Давайте узнаем!

❯ «Под капотом»


Исторически сложилось так, что 3D и 2D акселераторы могли быть отдельными и формально не зависящими друг от друга устройствами. Архитектура IBM PC в зависимости от «поколения», предполагала сразу несколько типов видеоадаптеров, которые были стандартизированы под определенный тип мониторов. Один из таких адаптеров, VGA, стал стандартом на долгие годы, в то время как два других использовались в совсем ранних машинах. Их ключевое отличие было в организации видеопамяти и цветности — CGA/EGA предполагал разбитие пространства экрана на т. н. битплейны (один байт содержал информацию о нескольких пикселях и если не ошибаюсь, для сохранения адресного пространства сегменты экрана необходимо было переключать аля банки памяти) и былпалитровым, в то время как VGA предполагал как палитровый режим, так и полноценный RGB и мог отразить весь фреймбуфер в линейную область адресного пространства. Кроме того, долгое время VGA использовался для обозначения разрешения дисплея: QVGA — половина VGA (320x240), VGA (640x480), широкоформатный WVGA (800x480) и т. п.

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


EGA-монитор

Другой особенностью была полная (насколько мне известно) обратная совместимостью друг с другом. Например, GeForce 7xx, как один из последних GPU, который поддерживал Legacy BIOS, теоретически вполне мог работать и с EGA режимами, и с CGA через соответствующие видеорежимы int 10h!

3D-режимы же никак не были стандартизированы и каждый производитель реализовывал работу с ними по разному — как уже говорилось ранее, кто-то реализовывал поддержку совсем молодого D3D и OpenGL (насколько мне известно, лучше всего с OpenGL было у NVidia. Остальные вендоры поддерживали OGL, но были свои болячки — у ATI они тянулись чуть ли не до середины-конца нулевых), а кто-то делал собственное графическое API и работал с видеочипом почти напрямую. Первые 3D GPU использовали шину PCI, которую почти сразу заменила более скоростная, но интерфейсно и софтварно почти идентичная шина AGP, а затем уже появился PCI-E, который оставался тем же PCI в софтовом плане, но был дифференциальным и последовательным, а не параллельным как интерфейсы-предшественники.

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


Дабы понять, как работают первые видеокарты, необходимо узнать о том, как происходит процесс отрисовки 3D-графики в общем случае. В мире программирования графики это называетсяконвейероми состоит он как минимум из нескольких этапов:

Установка состояний: Программа задаёт источники света на сцене, параметры Z-буфера и Stencil-буфера, какую текстуру(ы) следует наложить на рисуемую геометрию и с какой фильтрацией, какой тип аппаратного сглаживания использовать и т. п.
Ранее, каждый стейт необходимо было устанавливать отдельно, при необходимости — для каждого DrawCall'а. После подготовки состояния, программа вызывает соответствующую функцию отрисовки.

Обработка геометрии: Геометрия не поступает в растеризатор «как есть», в мировых координатах. Растеризатор оперирует вершинами в нормализованныхClip Spaceкоординатах — обычно, это [-1, -1… 1, 1], где 0.5 — центр экрана по каждой оси. Именно поэтому сначала необходимо провести этап трансформации геометрии для перевода из некой глобальной системы координат (которая может выражаться в метрах или, например, в пикселях) в Clip Space. Для этого чаще всего координаты (корректнее — трансформации) представляются в виде трех перемноженных матриц — model (мировые координаты геометрии), view (положение «глаз» в мире, или по простому камера. Умножая model на неё, мы получаем координаты объекта в пространстве камеры) и projection (матрица проекции, которая преобразовывает координаты из пространства глаз в тот самый Clip Space. Именно в этой матрице задается FOV для перспективной проекции и виртуальные размеры экрана для ортографической матрицы). После этого, координаты каждой вершины трансформируются полученной ModelViewProjection матрицей и получается финальная позиция для Clip Space. Звучит как сложный учебник матану, по факту всё очень просто. :)

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост



Детали реализации низкоуровневого матана, в том числе перемножения матриц и построения матриц трансформаций и проекции знать желательно, но необязательно. Сейчас этим занимаются очень удобные математические библиотеки — например, glm, dxmath или d3dx.

Кроме того, ранее именно на вершинном этапе считалось освещение для уровня. В некоторых видеочипах была возможность аппаратного расчета источников света, в некоторых — только программная на ЦПУ.

На видеокартах тех лет, в том числе и S3 Virge, трансформацией вершин занимался центральный процессор, из-за чего было довольно серьёзное ограничение на количество вызовов отрисовки и число треугольников в одной модели. Видеокарты с аппаратной, но всё ещё не программируемой трансформацией вершин появились лишь к GeForce 2 — называлась эта технология T&L (Transform and Lightning) и её преимущество было в том, что у видеокарты были специализированные векторные сопроцессоры, способны быстро пересчитывать векторные операции (а у ЦПУ, в свою очередь, развивались SIMD наборы инструкций, позволяющие выполнять несколько операций над float одновременно). В некоторых случаях, был даже отдельный программируемый векторный сопроцессор как, например, в PlayStation 2, что позволяло реализовать вершинные шейдеры ещё в 2000 году! На современных видеокартах, этапом трансформации в самом простом случае управляют вершинные шейдеры. Помимо этого, есть возможность создания геометрии «на лету» с использованием тесселяции и геометрических шейдеров, а совсем недавно появились Mesh-шейдеры, которые объединили несколько подэтапов конвейера в один.

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


Растеризация: Сам процесс отрисовки геометрии на дисплей с данными, полученными с прошлого этапа. Именно на этом этапе треугольники (или иные геометрические примитивы) закрашиваются определенным цветом или на них накладывается текстура. В процессе растеризации есть такое понятие, как интерполятор — специальный модуль, который интерполирует несколько значений в барицентрических координатах растеризуемого треугольника, дабы текстурный юнит мог наложить определенный участок текстуры на фрагмент треугольника.

В современных видеокартах этот этап конвейера программируется пиксельными (или фрагментными) шейдерами. В старых видеочипах (исключение — вроде-бы частично программируемый GPU Nintendo 64, поправьте в комментариях, если не прав) этот процесс строго определен в каждом GPU и не программировался. Именно поэтому такой подход к рисованию графики назывался Fixed function pipeline. Были ещё комбайнеры, но они появились заметно позже — когда в видеокартах появилось уже несколько текстурных юнитов, способных смешивать несколько текстур одновременно.

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


Делая вывод, мы можем понять, что S3 Virge и другие видеочипы были устройствами, которые умели рисовать лишь тот уровень графики, который был заложен производителем с завода. Такой подход называется фиксированным конвейером — Fixed Function Pipeline. Сейчас разработчики видеочипов перешли с фиксированного конвейера на программируемый (шейдерный). Уже начиная с SM2.0-SM3.0, на современных видеокартах появилась возможность создавать крутое и достаточно сложное освещение и различные эффекты, которые стали неотъемлемыми в современных играх.

Кроме того, важно понимать, что в видеопамяти ранних видеочипов хранился только фреймбуфер, а немного позже — текстуры, именно поэтому VRAM в старой документации называют «текстурной памятью». Вообще, некоторые нюансы первых версий OpenGL тянуться именно из особенностей работы первых видеокарт. Вспомнить хотя бы первые функции для старта отрисовки геометрии и загрузке вершин на видеокарту — это были связки glBegin/glVertex/glEnd:

glBegin(GL_TRIANGLES);

glVertex3f(0, 0, 0);

glVertex3f(1, 0, 0);

glVertex3f(1, 1, 0);

glEnd(); // Для одного треугольника

glBegin(GL_TRIANGLES);

for(int i = 0; i < numTriangles; i++) { glVertex glVertex glVertex }

glEnd(); // Для меша


Даже сам glBegin/glVertex/glEnd появились не спроста. Геометрию на видеокарте начали хранить только в начале нулевых (и то не везде — привет встройкам Intel и S3).

Но перейдем к особенностям работы S3 ViRGE. Даташит лежит в свободном доступе, благодаря чему мы можем более подробно ознакомиться с характеристиками этого видеочипа и о том, как он работал под капотом.

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


В основе у нас лежит 64-х битное ядро, которое могло обрабатывать как 2D-графику с аппаратным ускорением, так и 3D-графику. Ядро работало на частоте 135МГц с встроенным RAMDAC (модуль, отвечающий за вывод картинки на аналоговые разъемы — VGA и DVI, однако выводом на TV-тюльпаны занимался отдельный чип TV-энкодер). Современные видеочипы перешагнули планку 1ГГц, однако сравнение исключительно по частоте некорректны — архитектуры очень сильно отличаются. Помимо этого, видеочип умел декодировать видео с интерполяцией и аппаратно «помогать» процессору с скейлингом видео (например, когда вы разворачиваете плеер на весь экран) и даже рендерить видео в текстуру (что позволяло реализовать, например, телевизоры в играх)!

3D движок поддерживал следующие возможности:

  • Затенение по Гур.о

  • Маппинг текстур с перспективной коррекцией и билинейной/трилинейной фильтрацией, а также мипмаппингом.

  • Depth-буфер, сэмплинг тумана и поддержка альфа-блендинга (прозрачной геометрии).


Чип поддерживал две шины — PCI и менее известную VLB (Vesa Local Bus, очень условно ISA)
Помимо этого, у чипа не было встроенной памяти — к нему необходимо было подключать внешнюю DRAM-память 2/4/8Мб. От её количества зависело максимально-поддерживаемое разрешение экрана. Текстуры при необходимости хранились в ОЗУ.

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


Видеопамять когда-то расширялась за счёт дополнительных модулей! Эту видеокарту можно расширить аж до 8МБ!

Поддерживаемые разрешения экрана:

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


Для DirectDraw и ускорения 2D-графики в Windows была реализация аппаратного BitBLT — копирования пикселей в точку на экране. Она поддерживала все режимы, которые были в реализации этой функции в Windows — от монохромных, до 24-х битных. Без альфа-блендинга, само собой. Но тут нет ничего необычного — многие видеочипы тех лет предоставляли простое 2D-ускорение.

Интереснее реализация отрисовки 3D-графики. Каждый треугольник описывался 3-мя регистрами на каждый параметр — координата X, Y для каждой точки, текстурные координаты и т. п. Всего для отрисовки одного треугольника могло потребоваться до 43 регистров! Весьма немало. И именно из-за этого в свое время появились glBegin/glVertex/glEnd!

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


Параметры сэмплера (текстурного юнита) задавались регистрами, которые определяли формат пикселя текстуры и сам тип фильтрации. Как я уже говорил выше — поддерживалась билинейная и трилинейная фильтрация и проприетарный формат сжатия текстур, который стал стандартом: S3TC или DXT.

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


Для программирования S3 ViRGE было разработано собственное C SDK — S3DTK, которое состояло из сэмплов и заголовочных файлов для общения с GAPI видеочипа (или видеочипом напрямую, если игра предназначена для DOS). При этом вполне не исключено, что GAPI для Windows работало с видеокартой напрямую, предоставляя PCI-драйвер лишь как прослойку для обмена данными. Поскольку это не D3D, для игр с поддержкой видеоускорения требовалось качать специфические версии. Некоторые игры (как Quake 2) поддерживали мультирендер, но не поддерживали S3 ViRGE.

Весь графический API помещался в один заголовочный файл. API было не простым, а очень простым и понятным — думаю, даже разработчикам-новичкам было легко начать программировать под ViRGE!

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


Формат вершин был фиксированным и зависел от того, как вы рисовали геометрию на экране:

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


GAPI поддерживало различные типы треугольных списков, а также точки (POINT для спрайтов и систем частиц) и линии:

#define S3DTK_TRILIST 0

#define S3DTK_TRISTRIP 1

#define S3DTK_TRIFAN 2

#define S3DTK_LINE 3

#define S3DTK_POINT 4


Фактическое API для рисования умещалось в 9 функций и ещё несколько функций для инициализации библиотеки, преобразования адресного пространства и работы с Windows.

Для работы с состоянием видеочипа служили две функции — SetState и GetState. Именно они отвечали за то, как рисовалась геометрия на экране:

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


А для фактического рисования примитивов служили функции TriangleSet и TriangleSetEx! Да, это альтернатива DrawPrimitives/DrawArrays в современных GAPI. Никаких индексов тогда ещё не использовалось! Функции принимали указатель на массив вершин и их количество, а также на тип рисуемой геометрии (треугольники, линии и т. п.). В Ex версии, можно было «пачкой» установить стейты параллельно с рисованием — такой подход используется в DX10+ API — стейты тоже задаются исключительно «пачками», только теперь они поделены на подгруппы.

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


Для 2D-рисования были свои, отдельные функции — для блиттинга. Поддерживался ColorKey/хромакей — прозрачным считался определенный цвет, переданный как параметр функции

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


Основной причиной медлительности S3 ViRGE был низкий филлрейт. При отрисовке примитивов, которые занимают большое пространство экрана, FPS резко просаживался даже с примитивными кубиками и пирамидками. Однако, если не насаживаться на филлрейт и делать что-то типа 2D-поля и 3D-танчиков, то производительность оставалась вполне приемлимой.

❯ Заключение


История S3 закончилась поглощением компанией VIA. После этого, компания разрабатывала интегрированную графику специально для чипсетов VIA, а материнские платы на этих чипах пользовались довольно высоким спросом. Поэтому нередко взяв старый бюджетный ноутбук, года эдак 2005, можно найти в нём VIA Chrome — наследника легендарного S3 Savage! Проблемы у такого подхода тоже были — из-за наследия из конца 90х, ранние Chrome по сути поддерживали только D3D 7.0 и OpenGL ~1.4. Несколько позже, в 2009 году, компания выпустила S3 Chrome 540 GTX — одну из последних видеокарт на собственной архитектуре. Этот видеочип был достаточно современным и поддерживал DX10.1, OpenGL 3.0. Интересно, реально ли найти эту видеокарту сейчас?

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


По итогу мы можем сделать вывод, что первые 3D-ускорители были относительно простыми устройствами «под капотом» и их можно было программировать чуть ли не «напрямую». Многие старые видеочипы получили свои локальные прозвища и стали легендарными, однако их архитектура и принцип работы оставались тайной. По крайней мере, в рунете точно.

3D видеокарта-«декселератор» из 90-х. Как работала S3 ViRGE «под капотом»? Гаджеты, Покупка, Разработка, 3D, 3D графика, Программирование, Уборщица, Видеокарта, Видеоускорители, Samsung galaxy s3, Opengl, Directx, Техника, Девайс, Длиннопост


S3 Trio

Насколько я понимаю, неравнодушные инженеры после закрытия 3dfx и слияния S3 с VIA решили «слить» даташиты в сеть, за что им большое спасибо! Ведь теперь мы имеем возможность посмотреть на принцип работы таких устройств сами!

Материал подготовлен при поддержке TimeWeb Cloud. Подписывайтесь на меня, мой Telegram и @Timeweb.Cloud, чтобы не пропускать новый материал каждую неделю!

Показать полностью 24

Гиковский КПК за копейки: как китайцы сделали ARM-ноутбук за 40$ с железом от… навигатора?

Гиковский КПК за копейки: как китайцы сделали ARM-ноутбук за 40$ с железом от… навигатора? Девайс, Гаджеты, Linux, Unix, Arm, Кпк, Нетбуки, Ноутбук, Длиннопост



Китайские инженеры не перестают удивлять. Практически каждый год они умудряются в очередной раз уронить планку цены ниже плинтуса и представить рабочее полноценное устройство за довольно небольшие деньги. Примеров тому достаточно: новые кнопочные телефоны с цветными дисплеями по 500 рублей, планшеты со здоровыми 10" матрицами по 2-3 тысячи рублей, полнофункциональные смартфоны за 2 тысячи рублей. Недавно мне удалось пощупать ещё один плод сумрачного гения из Китая: миниатюрный нетбук с дисплеем 7" из далекого 2011-2012 года, который продавалсяновымза 40$. Да, это полноценное устройство: с аккумулятором, дисплеем, клавиатурой, Ethernet, Wi-Fi и тачпадом! Более того, устройство поддерживает дуалбут в Windows CE, Linux, Android, а ещё у устройства есть множество интерфейсов к внешнему миру, что превращает его в очень дешевый и довольно перспективный «одноплатник». Интересно, что за девайс придумали китайцы? Тогда добро пожаловать под кат!

❯ Как они вообще появились?


Ещё в середине нулевых с момента появления первых интернет-планшетов, за подобными девайсами широко закрепилось названиеMID— Mobile Internet Device. Это были миниатюрные устройства, которые имели довольно широкие мультимедийные возможности и необходимый минимум для доступа в интернет: Wi-Fi/Bluetooth/Ethernet и встроенный браузер, позволявший грузить полноценный Web 2.0 страницы.

Гиковский КПК за копейки: как китайцы сделали ARM-ноутбук за 40$ с железом от… навигатора? Девайс, Гаджеты, Linux, Unix, Arm, Кпк, Нетбуки, Ноутбук, Длиннопост



MID были довольно дорогими устройствами и предназначались скорее для гиков, нежели для обычных людей. Примерно к 2010 году на рынке дешевых и довольно производительных чипсетов уже появилось, как минимум, несколько игроков: Ingenic с MIPS-чипсетами JZxxx (известные как процессоры журнала VOGUE и чипсет Dingoo A320), Actions Semiconductor со своими MIPS-чипами для MP5-плееров, в некоторой степени SiRF со своими SoC для навигаторов на Windows CE (тоже, если не ошибаюсь, MIPS) и тайваньский гигант VIA Technologies, который уже был известен как один из немногих производителей x86 процессоров. Помимо разработки x86 процессоров, у компании VIA было подразделение, ответственное за разработку ARM-чипсетов —WonderMedia Technologies.

Гиковский КПК за копейки: как китайцы сделали ARM-ноутбук за 40$ с железом от… навигатора? Девайс, Гаджеты, Linux, Unix, Arm, Кпк, Нетбуки, Ноутбук, Длиннопост



В задачи этого подразделения входила разработка высоко-интегрированных решений, которые можно было бы использовать в нетбуках и планшетах — очень популярный сегмент рынка в конце 2000-х начале 2010-х годов. Тайваньские и китайские инженеры хотели сделать действительно очень дешевые нетбуки, где взаимозаменяемо всё: материнские платы, дисплеи, клавиатуры, динамики и разъёмы. Так и произошло: на dealextreme, aliexpress и иных онлайн-маркетплейсах появилось довольно большое количество различных нетбуков по 50 баксов, что по тем деньгам было около 1.500-1.700 рублей. Однако работали они далеко не всегда на WM8650: я встречал устройства и на иных чипах, иногда совершенно мне неизвестных. Но подавляющее число подобных буков работали именно на WM8650 — именно по названию процессора их до сих пор иногда можно найти на онлайн-барахолках за копейки.

Гиковский КПК за копейки: как китайцы сделали ARM-ноутбук за 40$ с железом от… навигатора? Девайс, Гаджеты, Linux, Unix, Arm, Кпк, Нетбуки, Ноутбук, Длиннопост



Судя по утекшей схеме на WM8650, разработкой референса занималась сама WonderMedia и давала производителям электроники практически готовую платформу, на базе которой те могли разрабатывать свои устройства. И всё бы ничего, однако компания, судя по всему, поставляла сразу готовые процессорные модули (также известные как System on Module — системы на модуле) с определенной конфигурацией по NAND и ОЗУ, которые оставалось припаять к основной плате, на которой уже будет разведена необходимая периферия. Это кардинально снижало сложность выпуска уже готового устройства. При желании, плату для WM8650 можно хоть дома протравить, запаять на неё модуль и попытаться запустить!

Гиковский КПК за копейки: как китайцы сделали ARM-ноутбук за 40$ с железом от… навигатора? Девайс, Гаджеты, Linux, Unix, Arm, Кпк, Нетбуки, Ноутбук, Длиннопост



Я уже давненько искал подобные девайсы себе в коллекцию: они отнюдь не редкие, но большинство из них либо отправились в металлолом, либо у них есть какие-либо дефекты. Однако недавно, шерстя «юлито», я всё же нашёл себе вполне живой экземпляр за 650 рублей. К сожалению, у устройства отгрызли пару кнопок на клавиатуре и разбили дисплей, однако для меня это отнюдь не было проблемой — в девайсе ведь хотелось покопаться, ранее у меня уже текли слюнки и я обсуждал сdlinyjэтого красавца. :)

Гиковский КПК за копейки: как китайцы сделали ARM-ноутбук за 40$ с железом от… навигатора? Девайс, Гаджеты, Linux, Unix, Arm, Кпк, Нетбуки, Ноутбук, Длиннопост



Когда девайс пришёл, я осмотрел его и понял, что проблемы гораздо серьёзнее, чем казалось на первый взгляд: АКБ уже не держит, петли разболтаны до ужаса, а матрицу кто-то разбил прям «в хлам» (вероятно, кулаком). Давайте разберем его и рассмотрим поближе!

❯ Что внутри?


Несмотря на то, что это ультрадешёвое устройство, разбирается оно вполне как и обычные ноутбуки: откручиваем задние винты крышки аккумулятора, отключаем АКБ (осторожно, на таких устройствах они очень дутые, хоть и посажены в ноль), вытаскиваем клавиатуру, отщелкивая несколько клипс, отключаем шлейф и снимаем поддон, отключив шлейф тачпада.

Гиковский КПК за копейки: как китайцы сделали ARM-ноутбук за 40$ с железом от… навигатора? Девайс, Гаджеты, Linux, Unix, Arm, Кпк, Нетбуки, Ноутбук, Длиннопост



А вот и наша основная плата. Однако самое интересное здесь с обратной стороны: давайте сначала глянем на шлейф дисплея и разберем рамку. В устройстве используется TN-матрица с 50pin шлейфом (они стандартизированы), TTL-интерфейсом и разрешением 480х800. Такие матрицы найти не проблема: в основном, встречаются они найти в планшетах 2011-2012 года и в современных 7" игровых консолях. Не исключено, что вы сможете найти их в автомобильных телевизорах, магнитолах, или, например, домофонах. Сразу же нашлась причина слабых петель: винтики банально вылетели из резьбы, однако сама резьба была целой (вероятно, что-то очень резко дёрнул устройство со психу).

Гиковский КПК за копейки: как китайцы сделали ARM-ноутбук за 40$ с железом от… навигатора? Девайс, Гаджеты, Linux, Unix, Arm, Кпк, Нетбуки, Ноутбук, Длиннопост
Гиковский КПК за копейки: как китайцы сделали ARM-ноутбук за 40$ с железом от… навигатора? Девайс, Гаджеты, Linux, Unix, Arm, Кпк, Нетбуки, Ноутбук, Длиннопост



Замена нашлась сразу: я взял дисплей с китайской реплики iPad тех же лет и… на том же WM8650! Обратите внимание на модуль Wi-Fi: сам он выполнен в виде USB-свистка и расположен около матрицы, а от него идёт 4 провода прямо к пятачкам USB на плате. Здесь много что реализовано на USB. :)

После установки нового дисплея, я подсобрал устройство и попробовал включить: девайс был полностью рабочим и дал изображение!

Дальше устройство разбирается крайне просто: мы откручиваем петли, откладываем экран в сторону и вытаскиваем плату. Судя по ручной пайке периферии, девайс собирался либо в подвальных, либо в полуподвальных условиях, но здесь есть много интересного! Первым делом мы смотрим на процессорный модуль, который припаивался поверх основной платы: на его выводах есть подписанные пятачки, а на сам модуль есть схема в интернете. При желании, его можно выпаять и попробовать запустить его самому. А можно подпаяться к его интерфейсам (i2c/spi/uart) и получить к ним доступ из под Linux или WinCE!

Помимо чипсета WM8650, на плате также можно найти NAND-память и две банки ОЗУ по 128Мб, а также SPI флэш-память с записанным на неё «BIOS» этого устройства — SPL и загрузчиком U-Boot.

Гиковский КПК за копейки: как китайцы сделали ARM-ноутбук за 40$ с железом от… навигатора? Девайс, Гаджеты, Linux, Unix, Arm, Кпк, Нетбуки, Ноутбук, Длиннопост



Дальше на плате встречается чарджер АКБ, контроллер клавиатуры от производителя процессора Тетриса — Holtek HT82B40A (вероятно, USB), USB-хаб GL850G (чуть ли не второй по важности чип в этом устройстве, почему — читайте позже), сетевой контроллер VIA VT6113, сетевой контроллер физических уровней (по простому — именно этот чип преобразует байты в дифференциальные сигналы Ethernet) S16013LF, кодек VT1603A. Да, это всё :) Конечно на плате дисплея есть ещё бустер напряжения подсветки, но в целом — это практически весь нетбук. Да, такой простой! Его и дома при большом желании развести можно — благодаря простоте платы, в целом можно было наладить простенькое производство плат и масок и вручную собирать подобные девайсы в условиях настоящего подвала!

Гиковский КПК за копейки: как китайцы сделали ARM-ноутбук за 40$ с железом от… навигатора? Девайс, Гаджеты, Linux, Unix, Arm, Кпк, Нетбуки, Ноутбук, Длиннопост



В целом, это вся конструкция нетбука. Да, как говорится, всё гениальное — просто! Исходя из информации, полученной анализом платы, мы приходим к следующему выводу:

  • Чипсет: ARMv5 600мгц, одно ядро, нет GPU, но есть 2D-ускоритель и блок декодирования видео.

  • NAND: 4гб

  • ОЗУ: 256Мб DDR2

  • Дисплей: 7" TN-матрица 800x480, TTL 50pin.

  • Интерфейсы: USB, I2C, SPI, UART. Сеть: Ethernet, Wi-Fi


С аппаратной частью разобрались. Мне лично очень понравилась простота конструкции данного девайса. Учитывая, что некоторые пятачки подписаны, есть возможность превратить девайс в эдакий одноплатник — только с уже готовым дисплеем, клавиатурой и тачпадом. Давайте посмотрим, что же это за девайс в программном плане!

❯ Софт


В программном плане девайс тоже весьма интересен. Для WonderMedia есть порт аж 3 ОС: Windows CE, Linux и Android (тесно связанный с портом Linux). Windows CE считается основной: её есть возможность как дуалбутить с USB-флэшки (чем пользовались некоторые вендоры для тотальной экономии и вместо NAND-чипа распаивали 2гб USB-флэшку… почему это было дешевле — мне неизвестно), так и с NAND или SD. Кроме того, вендоры часто предоставляли возможность перепрошивки устройства на Android 2.2. Бегает он здесь не очень быстро, но достаточно сносно: по крайней мере, в своё время этого хватало для базового сёрфинга интернета и просмотра мультимедиа. А порт дистрибутивов Linux, насколько я понимаю, развивали уже сторонние разработчики. Прошивки всё ещё можно найти на профильных сайтах типа 4pda — и никаких проблем с их поиском не будет.

Гиковский КПК за копейки: как китайцы сделали ARM-ноутбук за 40$ с железом от… навигатора? Девайс, Гаджеты, Linux, Unix, Arm, Кпк, Нетбуки, Ноутбук, Длиннопост



Прошивки можно легко модифицировать и миксовать между собой, не забывая сохранять ядро вашего устройства — поскольку половина девайса выполнена в виде USB-модулей, никакой devicetree не нужен. Однако, прошивка для 10" нетбука не встанет на 7" — у вас будет белый экран из-за несовместимости драйверов дисплея. Теоретически, можно попробовать воткнуть прошивку от китайского айпада на этом чипсете, но это уже близко к извращению.

Мы же посмотрим на WinCE такой, каким его представляет нам производитель. Китайцы довольно сильно заморочились, дабы устройство походило на обычный нетбук на старой доброй Windows XP и даже дописали свой софт!

Девайс включается довольно долго — около 3-4 минут при «холодном старте». Занимательно, что даже анимацию загрузки U-Boot замаскировали под эдакий «типа Windows». :) Видно что инженеры хотели сделать что-то типа OLPC (One Laptop Per Child).

Гиковский КПК за копейки: как китайцы сделали ARM-ноутбук за 40$ с железом от… навигатора? Девайс, Гаджеты, Linux, Unix, Arm, Кпк, Нетбуки, Ноутбук, Длиннопост



После загрузки девайс работает весьма сносно. Производительность далека от современных девайсов и находится примерно на уровне… Win98 машин на Pentium III. Но в целом, за свою цену машинка работает весьма сносно. Другой вопрос, что в 2011-2012 году, настоящий ноутбук на P III можно было взять в пределах тех же 2-х тысяч рублей, а то и дешевле!

Гиковский КПК за копейки: как китайцы сделали ARM-ноутбук за 40$ с железом от… навигатора? Девайс, Гаджеты, Linux, Unix, Arm, Кпк, Нетбуки, Ноутбук, Длиннопост



В девайсе из коробки работает и Wi-Fi и Ethernet, никаких внешних манипуляций не нужно. В целом, машинка может весьма пригодится как терминал: устройство очень компактное и легкое, живет от нормально АКБ относительно долго, а под устройство есть как клиенты RDP/VNC, так и SSH/Telnet (порт Putty).

Девайс может пригодится не только сисдаминам и DIY-щикам, но и стать «гаражным» нетбуком или резервным устройством для просмотра кино или… даже игр! В WM8650 (но не в WM8505) есть аппаратный декодер h263 видео, вплоть до 720p. Поскольку сам дисплей здесь 480p, то какого-либо смысла в дисплеях высокого разрешения нет.

Гиковский КПК за копейки: как китайцы сделали ARM-ноутбук за 40$ с железом от… навигатора? Девайс, Гаджеты, Linux, Unix, Arm, Кпк, Нетбуки, Ноутбук, Длиннопост


Когда-то здесь был даже YouTube!

Гиковский КПК за копейки: как китайцы сделали ARM-ноутбук за 40$ с железом от… навигатора? Девайс, Гаджеты, Linux, Unix, Arm, Кпк, Нетбуки, Ноутбук, Длиннопост


Знакомо?

А что касается игр — ну, тут самое время вспомнить hpc.ru и раздел Windows Mobile на 4pda. Так уж вышло, что многие приложения для Windows Mobile без проблем запускается и на WinCE без изменений — даже программы на .NET! Тут мы и можем разгуляться.

На устройство можно накатить и десктопный дистрибутив Linux! Правда, готовьтесь к тому, что часть софта придется собирать вручную — armv5 и armv6 уже очень давно не поддерживаются в основных дистрибутивах. Поскольку материнская компания WonderMedia, VIA — уважаемая компания, которая (вроде бы) ни разу не нарушала GPL, с релизом устройств был опубликован исходный код порта ядра Linux 2.6 для Android. Путем правки конфигов конфига и сборки ядра, пригодного для десктопных дистрибутивов Linux, энтузиастам удалось портировать Debian (есть только в виде полупустой системы с нужными модулями, без GUI, однако пакеты можно поставить, добавив armlf архивы в sources.list) и arch (с GUI-интерфейсом). Обе системы накатываются на флешку за 5 минут и не заменяют собой WinCE: можно легко сделать дуалбут.

Гиковский КПК за копейки: как китайцы сделали ARM-ноутбук за 40$ с железом от… навигатора? Девайс, Гаджеты, Linux, Unix, Arm, Кпк, Нетбуки, Ноутбук, Длиннопост


Не было скриншотера в репозиториях :(

У устройства довольно «горячий» чипсет без какого-либо охлаждения. Судя по всему, никакого динамического скейлинга частоты ядра нет: процессор всегда «молотит» на полную, что сказывается и на времени работы. Однако, ощутимого нагрева на корпусе не наблюдается. По ощущениям, чипсет греется до ~45-50 градусов.

Гиковский КПК за копейки: как китайцы сделали ARM-ноутбук за 40$ с железом от… навигатора? Девайс, Гаджеты, Linux, Unix, Arm, Кпк, Нетбуки, Ноутбук, Длиннопост

❯ Заключение


Важно отметить, что подобные аппараты были отнюдь не в новинку даже на момент выхода. По сути, это увеличенные в размерах и кратно удешевленные наладнонники из начала 2000-х годов — HPC! Посудите сами, девайс ниже, разработанный компанией Sharp, тоже работал на базе Windows CE, тоже имел полноценную клавиатуру, а некоторые устройства и тачскрин, и тоже предназначался примерно для тех же целей, за исключением просмотра видео.

Гиковский КПК за копейки: как китайцы сделали ARM-ноутбук за 40$ с железом от… навигатора? Девайс, Гаджеты, Linux, Unix, Arm, Кпк, Нетбуки, Ноутбук, Длиннопост


Касательно аппаратного моддинга — это тема для отдельной статьи. С «процессорной платы» выходят несколько протоколов, которые потенциально можно заюзать для своих проектов — как минимум, I2C и UART. Я не уверен насчет возможности использования i2c в юзерспейсе на Windows CE, но вот UART (если он не занят системой) можно будет использовать без проблем. Под Linux всё ещё проще: можно «выкинуть» устройства, которые используют SPI/I2C и подгрузить i2cdev/spidev прямо в юзерспейс! Таким образом, можно попробовать смастерить всякую всячину.

Я лично думал впаять сюда SIM800 и написать фронтэнд для него, а затем попробовать походить как с телефоном. А что, нетбук реально крошечный и легко поместится в карман зимней куртки! Звучит как дикий изврат но я, bodyawm, люблю подобное. :) Иначе не стал бы пилить прошивку под NoName-смартфон 2012 года!

Показать полностью 18

Вот это балдеж. Настоящий артефакт китайских лэптопов!

Вот это балдеж. Настоящий артефакт китайских лэптопов!

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают?

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост



Думаю, многие мои читатели встречались с таким неприятным явлением, как отвал чипа. Эта поломка свойственна многим топовым и околотоповым гаджетам из нулевых: ноутбуки с «отваливающимися» видеочипами и мостами, первые ревизии Xbox 360 (три красных огня) и PlayStation 3 (жёлтый огонёк и моментальное выключение), телефоны-«ударники» и другие девайсы с достаточно горячими чипами. Недавно я листал барахолки на предмет интересных девайсов «за копейки» и наткнулся на топовый игровой ноутбук 2007 года выпуска всего за 1.000 рублей (~10$) — Toshiba <модель>, с просто дичайшими характеристиками для тех лет: GeForce GTS 7900 Go, Core Duo Txxx, 1гб DDR2 ОЗУ и аудиоподготовкой от Harman-Kardon.

Сегодня мы с вами узнаем: почему отваливаются чипы и как продлить жизнь старому топовому железу, «дунем» на видеочип, «воскресим» его на некоторое время и посмотрим, что же крутого было в топовых ноутбуках тех лет. Интересно? Тогда добро пожаловать под кат!

❯ Почему чипы «отваливаются»?


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

DIP— один из самых старых и тем не менее, до сих пор распространенных видов корпусов для чипов. Для таких микросхем сверлятся отверстия в плате, а затем чипы вставляются в отверстия и припаиваются, благодаря чему чип надежно держится на плате. Плюсов у такого способа довольно много: удобство пайки, возможность лёгкой установки чипа в сокет и быстрой его замены (привет Arduino и чипы памяти с BIOS на старых материнских платах), большая надежность соединения, и вероятно, простота производства. Минусов у такого способа тоже хватает: невозможность сделать микросхему с очень большим количеством пинов, громоздкость чипа, без фена чипы с большим количеством ножек выпаять проблематично. Известные примеры: сдвиговые регистры, МК AVR, Z80, MOS6502.

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост


QFP/QFN/SOIC— современный способ монтажа чипов с большим количество пинов на плату. По принципу все они похожи: по разным сторонам микросхемы есть выводы, которыми можно припаять чип к плате. Однако у QFP ножки «торчат» наружу, что даёт возможность легко припаять их к плате, а у QFN контакты спрятаны под пузом самого чипа, из-за чего их можно припаять только феном (если чип достаточно мал — можно попробовать паяльником). Плюсы: надежность пайки, относительная простота монтажа и демонтажа (дунул и чип слетел). Минусы: для таких чипов практически нет сокетов (на самом деле есть, но особо никакой унификации нет — чаще всего сокеты можно встретить в материнских платах и программаторах у ремонтников).
SOIC немного другой тип монтажа, поскольку там ножки выводятся только по бокам чипа (как у DIP), но я не стал выносить его в отдельный типаж.

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост


LGA/PGA/SMT— кристалл или кристаллы (пример — процессорное ядро и отдельно кэш-память на старых процессорах) распаяны на специальной небольшой плате, которая называютсяподложкой. Такие микросхемы обычно предназначаются для установки в сокет (процессоры), либо для пайки платы на плату (SIM800L). Даташит на SIM800C называет свою корпусировку какSMT, поэтому я отнесу его и различные системы на модуле («процессорные» платы с ОЗУ и ПЗУ) к LGA. Один раз я видел PGA-процессор AMD Geode, который запаивали напрямую штырями в плату — но может, меня обманывает память.

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост


BGA— основной тип корпуса для сложных и компактных микросхем таких как SoC или видеочипы. Его суть проста: на плате и на нижней стороны чипа есть маленькие пятачки круглой формы (их размер отличается в зависимости от числа пинов, но стандартизирован), благодаря которым микросхема припаивается к плате. Такой корпус позволяет компактно вывести довольно большое количество пинов — например, SoC MediaTek MT6572 поставляется в корпусе аж с 428-шариками! С завода чипы приходят с уже накатанными шарами, в то время как работнику или машине остаётся их только припаять на плату. Несмотря на большое количество крошечных пинов, при наличии сноровки и должном оборудовании, пайка микросхем очень простая: физика всё сделает за вас и сама «притянет» чип к нужным пятачкам на плате. Это один из самых распространенных корпусов для микросхем и один из самых проблемных. Но почему? Давайте разбираться!

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост


Отвал BGA-чипов далеко не всегда связан с термическим воздействием, как принято считать в широких кругах (от чего и идут советы по типу «погрей видяху в духовке»). Шарики достаточно сильно подвержены влиянию множества внешних факторов: попадание воды — в таком случае, шарики окисляются и со временем могут отгнить вместе с пятачками, падениям — такие устройства называются «ударниками» и шары могут дать микротрещину, что уже может сказаться на нестабильной работе устройства, и в немалой степени — термическому воздействию. Причём здесь мнение делится на два лагеря и сильно зависит от самого устройства.

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост


Отвалы на смартфонах/планшетах в основном являются следствием неудачного падения и лечатся перекаткой уже установленного процессора, иногда — заменой на точно такой же «донорский» и с идентичной маркировкой (да, среди SoC бывают свои «подверсии»). Реже бывает срывает пятачки — тогда опытные мастера ковыряют плату и ставят перемычки вместо отвалившихся шаров (моё почтение вам!). В последнее время замена отдельных чипов на мобильных устройствах сильно затруднена: у девайсов есть жёсткая привязка между ID-процессора (прожжен на заводе в SoC), ID-процессора, записанного в флэш-памяти устройства (в специальном RPMB-разделе, доступный только для чтения, используется для Secure Boot, просчета ключей, шифрования и т. п.) и привязки к модему (насчет Android-устройств точно не могу сказать, но у iPhone такая привязка есть ещё с начала 10х годов: в один момент, после очередного апдейта iOS, многие девайсы с замененной NAND или процессором без замены всех трех чипов, висели на «сбое активации» — и в официальном сервисе такой аппарат не принимали), из-за чего при замене процессора или флэш памяти, придётся менять вообще всю пару на оный с донорского аппарата (а в случае iPhone — еще и не привязанный к iCloud).

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост


Нормальные мастера обычно именно перекатывают чипы, т. е. снимают старые шары и накатывают с помощью трафарета новые, поскольку прогрев может поднять устройство, но это не ремонт, а лишь диагностика — такое устройство может в любой момент «отвалиться». Правда, есть и исключения.

Другой вопрос — отвалы чипов на ноутбуках и десктопах. На десктопных материнских платах отвал — не очень частое явление, поскольку отваливались обычно «горячие» северные мосты по типу nForce (которые славились довольно неплохими интегрированными GPU — тут уж попробуй не нагрейся при очень слабеньком пассивном охлаждении). Сейчас «северник» переместился в процессор, поэтому свежим десктопным материнкам это почти не грозит, однако другое дело — ноутбуки.

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост


Система охлаждения на ноутбуках частенько подразумевает расположение ЦПУ и чипсета (а иногда и GPU) на одной теплотрубке, из-за чего тепло отводится заметно менее эффективно. А особенно ситуация плохая на тех девайсах, которые никто не чистит. И если процессор ещё может начать троттлить (занижать частоты) для того, чтобы понизить температуру ниже определенного порога — то что делать чипсету? После пары лет работы в таком режиме, девайсы внезапно начинают виснуть посередине работы, перезагружаться, выключаться или выдавать непонятные артефакты. Тем же самым когда-то страдала печально известная первая ревизия Xbox 360 — Xenon, которая выдавала три красных огня. Не обошла проблема и PS3 — вспоминаем желтые глазки и выключение устройства.

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост


Даже если взять пример с Xbox 360, когда игрок нёс устройство в неофициальный СЦ, ему перекатывали горячий GPU от ATI (отваливался именно он) и снова припаивали к плате, включили — устройство работает и выдали обратно игроку. Игрок приходит довольный домой, играет день, месяц или даже год и… сталкивается с той же самой проблемой! Снова три красных огня, хотя девайс вроде бы чистый, шуба пыли из него не торчит, а при разборке оказывается, что система охлаждения визуально в норме и кулер работает… в чём же тогда дело?

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост


Всё дело в том, как припаивается кристалл процессора или GPU к плате-подложке. По сути, подложка может быть любой, хоть LGA, хоть BGA: китайские умельцы как-то приноровились делать десктопные подложки для мобильных процессоров в BGA-корпусах. Но сам кристалл припаивается к подложке с помощью точно таких же BGA-шариков, как и подложка к плате, только гораздо меньших размеров. Перекатать такие шары доманевозможно, это можно сделать только в заводских условиях. Но поскольку сами кристаллы залиты компаундом (как раз таки с целью предотвратить внешнее влияние, в том числе и термическое — иначе кристаллы сдувались бы только так), а шарики достаточно маленькие — при прогреве устройства феном, в духовке (популярный когда-то метод), или даже перекатке шаровна подложке, из-за термического воздействия контакт между кристаллом и подложкой на время восстанавливался. Однако поскольку GPU Xbox 360, который я привожу в пример, очень и очень горячий сам по себе, вне зависимости от того, как хорошо от него отводится тепло, со временем контакт кристалла с подложкой снова нарушался и устройство переставало работать…

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост


Происходило это по причине выбора неправильного типа припоя: в целях сохранения природы, использовался не совсем верный состав. Однако зная о проблеме, производители продолжали использовать его примерно до середины 2010-х годов: насколько мне известно, GeForce 1xxx серии и выше не страдают отвалами GPU вообще (но там своих болячек хватает — как минимум, те же банки памяти). Почему так происходило? Вероятнее всего, это изначально закладывание ресурса в технику. И если бюджетные ноутбуки со встроенной графикой и Celeron'ами от этого особо не страдали (их до сих пор очень много на юлито, живеньких и вполне рабочих), то топовые и дорогие устройства с горячими видеочипами отваливались только так…

Прогрев — это исключительно диагностический способ, им можно пользоваться либо в домашних условиях «для себя», либо для того, чтобы выявить неисправность одного из элементов устройства. Брать деньги за прогрев — прямой обман, но если делать просто «для себя», ради того, чтобы немного продлить жизнь крутому девайсу из прошлого — почему бы и нет? Предлагаю в практической части нашей статьи глянуть на топовый ноутбук 2007 года отToshiba, который я купил всего за 1.000 рублей (~10$). Девайс сам по себе очень крут, однако страдал отвалом GPU, который мы на время «вылечим»!

❯ Практическая часть статьи


Сегодняшнего подопытного продавала женщина на запчасти. Состояние было неизвестным: я не спрашивал её ни о симптомах поломки, ни о том, включается ли ноутбук вообще. Я списался с продавцом, договорился об условиях доставке и зарезервировал девайс себе. Через несколько дней ноутбук наконец-то приехал ко мне и я решив не медлить, сразу полез его диагностировать:

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост


Внешне девайс очень симпатичный и сейчас — самое время его включить! Единственный нюанс: проприетарный трапецевидный разъем зарядки. Не беда: до этого я брал другой тошибовский ноутбук за… 300 рублей, который тоже оказался вполне живым, но у него были сломаны петли ( к буку за 3 доллара шёл и родной БП, который уже кто-то ремонтировал на скрутках, но он всё ещё оставался рабочим).

Включаем девайс, прощелкиваем нумпадом и видим, что реакция на него есть, однако изображения нет! Это значит, что ноутбук нормально проходит POST и висит на «CMOS Error, F1 to Continue», однако отсутствие картинки было для меня первым звоночком винить видеочип. Поскольку POST ноутбук проходил, то и реагировал на хоткей смены матрица/VGA: подключаем внешний монитор и видим…

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост



Да, это самый классический отвал GPU. Ну а что вы хотели, GeForce 7900 это вам не шутки! Поскольку это ноутбук с дискреткой 7 серии, ни о каком UMA и речи не идет: отключить GPU и направить вывод на встроенный адаптер не получится. Вернее теоретическая возможность то есть, но линии LVDS/VGA идут с GPU, а не с хаба, как это происходит в современных ноутбуках. Девайс то может и включится, но никакой картинки вообще не будет — если устройство вообще пройдет POST.

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост


Самое время разобрать красавца. Делается это не особо сложно: классическая разборка «с клавиатуры». Для обслуживания системы охлаждения придётся разбирать ноутбук полностью (в том числе снимать матрицу), но никаких особых проблем с этим не возникает: девайс хорошо продуман. При разборке выяснялась причина отсутствия изо на LVDS — матрицу банально отключили. Девайс явно обслуживали до меня и чистили, видимо в надежде что всё «оживет». А может и грели уже, кто его знает? :)

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост


Да, «охлад» здесь и правда довольно серьезный: круче я видел только в ноутбуке с дискреткой ATI и… десктопным Pentium 4!

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост


На ноутбуках тех лет частенько практиковались по настоящему съемные видеокарты. Помимо стандарта MXM (его сейчас вроде только Clevo как-то поддерживает), который предусматривает замену видеокарты в ноутбуке, некоторые вендоры придумывали свои коннекторы а-ля PCI-E. Наш девайс как раз из таких: видеокарту, при желании, можно было заменить на идентичную (возможно и какие-то другие от младших «тошиб» подходили, но мне это неизвестно).

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост
Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост


Снимаем массивную систему охлаждения, которая отводит тепло и от GPU, и от чипов памяти и приступаем к прогреву. Для прогрева подойдет фен от паяльной станции, или даже регулируемый строительный фен (с ним осторожнее, есть шанс угреть чип). Для наглядности «дриставрации», я буду пользоваться именно строительным «интерсколом». Ставим температуру ~250 градусов (в случае строительных фенов — это погода на луне или попугаи, ну или средний режим) и осторожно греем кристалл по периметру. Для временного оживления чипа хватит дунуть секунд 15-30. Дольше не стоит — могут повылазить шары. Никаких утюгов и духовок — это кощунство!

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост


Подсобираем ноутбук и включаем его. Ура, в биосе изображение есть и на первый взгляд всё нормально. Однако, после такой «дриставрации», проблемы могут вылезти где угодно: ошибка 43, артефакты в 3D-режиме, самопроизвольные ребуты и зависания системы. Самое время накатить систему и проверить это.

И таки да, они вылезли практически сразу, причём совершенно с неожиданной стороны. Девайс начал самопроизвольно отключаться в определенные моменты времени (обычно при старте Windows и игр), причём вне зависимости от подключения БП (отметаем версию, что АКБ не держит нагрузку) и заряда аккумулятора (отметаем, что не хватает мощности БП), а температуры судя по датчикам — в норме. Вероятнее всего, проблема в питальниках на GPU/CPU.

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост


К сожалению, нормальные тесты при таких условиях сделать не получится — девайс нужно диагностировать дальше, но делать это с отвальным видеочипом такое себе. Но Proof of Concept есть: многие чипы вполне реагируют на прогрев и могут даже поработать какое-то время. Надолго ли?

Эти кристаллы доживают последние деньки — почему мощные процессоры и видеокарты середины нулевых умирают? Гаджеты, Покупка, Ноутбук, Toshiba, Девайс, Ништяки, Bga, Пайка, Научпоп, Отвал, Длиннопост

❯ Заключение


Данный материал писался в эдаком «научпоп» стиле. Для опытных ремонтников, написанный текст отнюдь не станет каким-то откровением, но полагаю, было всё же интересно почитать о том, почему их любимые девайсы из нулевых «помирают».

Статья подготовлена при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, , чтобы не пропускать новые статьи каждую неделю!

Показать полностью 21

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»?

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


Совсем недавно ярассказывалвам о такой популярной в прошлом консоли, как Тетрис и подробно описал возможности процессора, который в нём использовался. Думаю вам, моим читателям, тематика с разбором «подкапотки» различных редких девайсов как минимум достаточно интересна. Полагаю, многие мои читатели, которые увлекаются играми, а особенно ретро-геймингом, видели на маркетплейсах типа AliExpress «новодельные» игровые консоли с названиями X7, X12 и т. п, которые внешне повторяют Nintendo Switch и предлагают кучу пиратских ромов прямо из коробки! Сегодня мы с вами: выясним, что из себя представляют эти консоли изнутри, на каком чипсете они работают, узнаем немного об их программной платформе и разберемся, причём здесь MP5-плееры из нулевых. Интересно? Тогда жду вас в статье!

❯ Небольшая предыстория


Честно сказать, игровые консоли с эмуляторами ретро-систем были популярны всегда, это отнюдь не какой-то современный тренд. Начиная с их появления в середине-конце нулевых, эти девайсы постоянно сметались с полок магазинов благодаря какой-то неадекватной дешевизне, огромному количеству предварительно загруженных игр и неплохому функционалу, помимо, собственно, эмуляции игр. Основной ЦА таких девайсов предполагаются дети: в более юном возрасте все мы были не искушены вариативным геймплеем или крутой графикой, для многих из нас за счастье было попрыгать, играя за Марио, хотя среди пользователей очень часто находились и взрослые люди, которые хотели бы испытать те же эмоции, что испытывали когда-то сидя перед экраном советского телевизора.

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


Вообще, принято считать, что основными устройствами на рынке портативных систем являются консоли от Nintendo и Sony. Однако в наше время, это не совсем так: сейчас производители ретро-консолей создают свои собственные бренды и выходят на рынок с гораздо более интересными устройствами: вспомнить хотя-бы Miyoo, которые работают на базе собственного дистрибутива Linux, для которого можно писать свой нативный софт помимо запуска эмуляторов, или устройства от Anbernic, которые совмещают в себе функционал Android-смартфона и портативного игрового гаджета. Можно также вспомнить Sup GameBox — нашумевшая ультрадешёвая (~800 рублей или ~8$ на момент написания статьи) консоль с кучей игр для NES (Денди), возможностью подключения к телевизору, а также игры вдвоём с помощью дополнительного геймпада.

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


История «эмуляторных» консолей достаточно богата на события и устройства. Те, кто крутится в теме эмуляции достаточно давно, помнят такие легендарные устройства как Dingoo A320: очень популярная в своё время консоль с возможностью запуска сторонних эмуляторов и нативных игр (в основном, от китайских студий). Известна большим количеством несовместимых с ней клонов. Толчок популярности дал порт Linux: энтузиасты портировали ядро на MIPS-чипсет Ingenic JZ4760, благодаря чему появилось большое количество эмуляторов и портов игр, которые используют библиотеку SDL. Вышла в 2009 году.

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


Также была популярна консоль Ritmix RZX-50, которая являлась духовным наследником A320 и работала на базе того же чипсета от Ingenic. Отличия заключались в увеличенном объёме ОЗУ и более удобном дизайне: «кирпичик» A320 нравился не всем. Вышла в 2012 году.

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


Ближе к 2012-2013 году, стали появляться «эмуляторные» консоли на базе планшетного железа и ОС Android. Эти устройства работали на базе самых разных чипсетов: чаще всего использовались чипсеты Amlogic AML8726-M3 (1 ядро, 1ГГц, Cortex-A9, Mali 400), где-то использовались процессоры AllWinner (я видел только A10: одно ядро, 1ГГц, Cortex A8, Mali 400), в совсем топовых устройствах использовались чипы от Rockchip (и эти устройства были самыми ненадежными). Можно сказать, это было «новое дыхание» для этого рынка: во первых, помимо эмуляторов они тянули большинство Android-игр тех лет. В 2012 году, далеко не у всех были устройства на Android, многие ещё продолжали ходить с тачфонами или кнопочниками а-ля Samsung SGH-E250 и игры на смартфонах для них создавали вау-эффект. А во вторых, эти устройства вполне заменяли планшеты: у них был Wi-Fi, а иногда и 3G, благодаря чему покупатель потенциально получал сразу два устройства: консоль с эмуляторами и физическими кнопками + планшет для серфинга в интернете. Из подобных устройств вспоминаются устройства от JXD и их локализации в РФ: Exeq, Func, Smaggi и иные бренды.
Подобные устройства могут представлять игровую ценность и сейчас: на вторичке они очень быстро дешевеют до «шапки сухарей» — рабочий девайс можно взять в пределах 500 рублей.

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


И это я не говорю об огромном количестве «безымянных» устройств, которые просто выходили на рынок, локализовывались и продавались за довольно небольшой прайс. Относительно недавно рынок заполонили очень дешевые игровые консоли, которые формой и расцветкой напоминают PS Vita и Nintendo Switch. Брендов у этих устройств нет: обычно используются названия X7, X12 и т. п. — каждая обозначает, видимо, размер дисплея. При этом в программном плане они отличаются, в устройствах с одинаковым корпусом могут встретиться разные прошивки. Производитель обещает тысячи встроенных игр, а также кучу мультимедийных возможностей типа видео-плеера и даже… камеры. На «алике» и российских маркетплейсах стоят они достаточно недорого: в среднем 2-3 тысячи рублей за новое устройство. На барахолках новое или почти новое устройство можно взять за 1.000-1.500 (~10$) рублей — вполне лояльный прайс. Так поступил и я: взял X12 Plus за 1.000 рублей с интересующей меня прошивкой.
Правда я взял девайс с небольшим нюансов: левый аналоговый стик не работал по направлению вниз и на дрифт это не было похоже.

И вот, консоль пришла. Самое время её распаковать!

❯ Распаковка


Устройство поставляется в небольшой коробочке, где вкратце описаны характеристики устройства. Весьма забавляет маркетинг производителя: заявляется о «профессиональном» игровом чипе, большом количестве игр и т. п. В целом, производитель нигде не лукавит: в девайсе действительно предустановлено большое количество ромов, некоторые из них даже вынесены в основное меню.

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост
Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


Комплектация девайса не особо богатая: зарядка, кабель для подключения к телевизору (TV-Out, однако чипсеты этого производителя точно умеют HDMI и возможно на других ревизиях консоли он тоже распаян), инструкция и конечно же сама консоль. Сам девайс ощущается действительно большим, после классического форм-фактора PSP.

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


У девайса есть кнопка включения и рычажок питания, который видимо напрямую коммутирует массу с аккумулятора: дабы не портить АКБ при долгом простое.

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост

❯ Что внутри?


Предлагаю разобрать девайс и узнать что у него внутри. Как я уже говорил, продавец заявил о нерабочем направлении «вниз» на левом стике, помимо этого, у консоли также туго нажимался левый триггер. Самое время посмотреть, на чем она работает под капотом и обслужить консоль! Разбирается девайс довольно просто — выкручиваем 4 винтика и снимаем крышку с клипс.

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


Разобрав девайс мы увидим следующую картину: приклеенный к плате аккумулятор, припаянный динамик (причём на корпусе есть место под второй динамик, а на плате пятачки под него — зависит от ревизии), на некоторых устройствах припаянный коаксиал с антенной. В целом, сборка консоли и разводка платы нареканий не вызывает — процесс производства таких консолей отлажен более 10 лет назад.

У устройств подобного плана высокая ремонтопригодность: резинки для кнопок можно попытаться найти в донорских устройствах, спикеры подходят от некоторых планшетов, в качестве АКБ вообще можно использовать хоть BL-4C, а про дисплеи мы поговорим немного позже.

А вот и причина плохой работоспособности нашего триггера. Боковые SMD-кнопки имеют свойство отваливаться, если их сильно и часто нажимать. Кнопки имеют два сигнальных контакта с обратной стороны и две крепежных ножки — именно они чаще всего выламываются. Пофиксить легко: некоторые снимают шелкографию и добавляют дополнительный припой для лучшего крепления, некоторые садят на клей. Я чаще капаю клей под «пузо» кнопки и запаиваю — работает нормально.

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


Переходим к стикам, которые взаимозаменяемы и их без проблем можно выпаять из донорских китайских консолей — они полностью идентичны. Конструкция их довольно простая: по сути, это два переменных резистора, которые выдают напряжение от 0в до 3.3в (референсное, может быть любым) по каждой оси. Разбираются они легко: поддеваем металлические крепления с длинной стороны (не с короткой!) и аккуратно разбираем стик. Здесь его достаточно почистить и всё будет работать нормально.

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


Однако несмотря на то, что стик фактический аналоговый, в большинстве подобных устройств он обрабатывается какцифровой— т. е. влево, вправо, вниз и вверх. Причём далеко не всегда есть возможность одновременно зажать несколько кнопок направления — что может стать проблемой в некоторых играх.

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


Самое интересное у устройства находится с обратной стороны. Отпаиваем аккумулятор, откручиваем винтики, крепящие плату, отсоединяем шлейфы и вытаскиваем материнку. Характеристики нашего устройства следующие:

  • Чипсет: ATJ2279B.

  • ОЗУ: Одна банка DDR1 NANYA на 64Мб. Эти чипы уже очень давно не производятся.

  • NAND: Infineon 29FI6808CCMEI. На чипе стоит маркировка ©'09. Потенциально, этот чип лежал на складе аж с 2009 года — более 14 лет! Даташит на этого чип не нашлось, на этикетке консоли написано 16Гб, по факту система видит 8Гб.

  • Дисплей: На этот раз, довольно «свежая» матрица MLHD5 2022 года выпуска.

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост
Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


Сам по себе ATJ2279B — это полноценная система на кристалле, которая уходит корнями аж в 2010 год. Да, никаких изменений за 13 лет в этих устройствах не произошло, кроме портирования новых эмуляторов. На данный чип естьподробный даташит, который описывает его возможности.

  • Вычислительное ядро: MIPS, на частоте до 450МГц с 16Кб кэша данных и 16Кб кэша инструкций.

  • GPU: 2D-графический ускоритель с поддержкой OpenVG 1.0. В прошивке, похоже, не используется — анимации тормозные.

  • Память: Контроллер DDR1/DDR2 памяти с максимальным объёмом до 256Мб и контроллер NAND-памяти с автоматической коррекцией ошибкой и ремаппингом бэдблоков. Теоретически, на данном чипсете можно запустить Android — поддерживаемый объём ОЗУ и производительность ядра позволяли это сделать, но производительность была бы достаточно низкой.

  • Дисплей: Поддержка TTL-матриц с разрешением до 1024x1024.

  • Ввод: Матричная клавиатура + резистивный тачскрин

  • ТВ: TVOut + HDMI в чипсете (однако на самой плате, HDMI не разведен).

  • USB: OTG хост + ведомое устройство.

  • Питание: 3.3-4.2в, встроенный контроллер для зарядки литий-ионных АКБ + ADC для мониторинга вольтажа аккумулятора при зарядке.


В начале статьи я говорил о том, что данные консоли имеют кое-что общее с MP5-плеерами нулевых. Процессоры компании Actions Semiconductor когда-то использовались в подобных устройствах именно как мультимедийные — они включали в себя DSP-сопроцессор для декодирования звука и работы с видео. Компания славилась тем, что предоставляла исходный код прошивки (на базе RTOS UCOS-II) с готовым плеером, драйверами и.т.п — благодаря чему, на рынке появилось много дешевых устройств, где производителям оставалось лишь кастомизировать интерфейс под себя. Со временем, производители портировали на эту прошивку различные эмуляторы, а сама прошивка научилась запускать сторонние бинарники — мне на флешке попадались so-библиотеки эмуляторов.

Так и появилось кучу самых разных мультимедийных игровых консолей за копейки. Процессоры Actions Semiconductor понемногу развивались — была даже вариацияG1000, которая имелся даже отдельный 3D GPU — Vivante GC и тянул игры уровня PS1, однако серьезного буста в производительности он не давал.

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


JXD5000 на базе G1000.

Производитель предлагал собственный SDK для разработки игр и эмуляторов под устройства на базе этих чипов. Китайские студии делали игры под эти устройства, но в публичный доступ утекало только SDK на Dingoo A320 и есть homebrew SDK для SPMP8k (консоль на котором я ищу). Естьнекий SDKс частичным исходным кодом прошивки: инструкций по сборке нет, но попробовать разобраться можно.

Отдельно хочется сказать про дисплей — их можно было найти в бюджетных планшетах 2010-2014 годов, в основном на базе чипов WM8650, AllWinner A10/A13, AMLogic AML8726-M и дешевых Rockchip. Поскольку родной дисплей по качеству очень «так себе», можно провести апгрейд, взяв матрицу с какого-нибудь нерабочего планшета за 100 рублей с юлито. 100% подходят матрицы от китайских реплик первого iPad с диагональю 7". Это повышает ремонтопригодность гаджета — битые планшеты на всяких скупках можно найти почти в каждом городе. Главное обращайте внимание на форму шлейфа, перед покупкой гуглите "<модель планшета> матрица" и сверяйте с своим. В остальном они должны быть совместимы.

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


Родная матрица.

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


Подкинул дисплей от реплики iPad.

Общение с дисплеем идёт по протоколу RGB, 60 пиновый шлейф, распиновка стандартная: её я прикладываю ниже. Дисплеи 40pin (навигаторы), 50pin (планшеты), 60pin (чуть более свежие планшеты с отдельной подсветкой) хорошо стандартизированы и обычно без каких либо проблем взаимозаменяемы:

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


Собираем девайс обратно. Самое время протестировать устройство в играх!

❯ Играем


При включении устройства, нас встречает забавная анимация и главное меню, которое предлагает следующие возможности:

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


Какие эмуляторы у нас есть? Давайте смотреть:

  • NES

  • SNES

  • SMD

  • GB

  • GBA


В целом — весьма неплохо. Но как у них с производительностью? Давайте посмотрим:

Эмулятор GBA идёт отлично. Даже довольно тяжелые 3D-игры типа NFSU2 идут без каких либо проблем и «рваного» звука. Не могу ничего сказать насчет серьезного пропуска кадров, но в целом этот ром играется неплохо, как и например Street Fighter II:

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


Эмулятор SMD идёт плюс-минус нормально. Видны кое-где корректировки пропуска кадров, но в целом вполне играбельно. Что странно: при таком объеме встроенной памяти, в консоли всего чуть больше 40 ромов для NES и среди них нет ни Earthworm Jim, ни Sonic The Hedgehod! Ну как так-то! 2.5D игры идут неплохо.

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


Эмулятор SFC (SNES) идёт сносно. Ромов реально довольно много и среди них попадаются такие занимательные игры, как Metal Warriors: Run & Gun сайдскроллер про огромного меха. Игры идут вполне хорошо, правда я не тестировал более тяжелые игры для SNES, которые могут использовать альфа-канал, например.

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


Ну и эмулятор NES, с учетом того, что SNES и GBA здесь идут нормально, тоже работает хорошо. Для этой консоли здесь больше всего ромов: как минимум, несколько сотен. Возможности поиска (вроде-бы нет), поэтому навигация по играм может быть не очень удобной.

Дешевые китайские консоли с «AliExpress» — на чём работают бюджетные игровые гаджеты «за тыщу»? Девайс, Гаджеты, Игры, Консоли, Ретро, Dendy, NES, Sfc, Sega, Sega Mega Drive, Smd-технология, Железо, Китайцы, Китайские товары, Покупка, Длиннопост


В целом, консоль весьма неплохо справляется с прямым предназначением — эмуляцией. Кое-где есть слабые места, но это не так критично. Консоль умеет прикидываться USB-флэшкой, благодаря чему на неё можно залить новые ромы или, например, музыку, видео или электронные книги (дисплей здесь очень «так себе» для чтения, глаза быстро устанут). С музыкой есть нюанс: возможно мне попался брак, илиу моих наушников джек слишком короткий, но в моей консоли работает только один канал на звук. Качество вполне неплохое, на уровне MP3-плееров начала 2010х готов, но с Hi-Fi плеерами очевидно не сравнится.

❯ Заключение


Лично как по мне, платформа сама по себе перспективная, как и вся задумка в целом, но подкачала реализация. Если бы китайцы выпустили нормальное SDK для инди-разработчиков, то авось выходили бы порты новых эмуляторов и весьма интересных игр. Конечно на этой консоли можно без проблем поменять дисплей на более качественный, или поставить АКБ побольше (благо места в корпусе просто завались), но экспиренс от игры улучшается совсем незначительно. Если у вас небольшой бюджет, я порекомендую смотреть в сторону старых консолей на Android: у них обычно и дисплеи гораздо лучше, и производительность отличная и они вполне могут послужить и планшетом: клиенты ВК и YouTube на Android 4.x есть.

Вот так работают игровые консоли «под капотом». Эти устройства практически не поменялись за 10 лет, да и зачем? Свою функцию ультрадешевых устройств они выполняют нормально, а это самое главное. Конечно хотелось бы иметь версию с чуть-более качественным IPS-дисплеем и нормальным аналоговым стиком, но если так посмотреть — они уже есть и от более именитых производителей. Причем в разных форм-факторах: кому-то нравится GBA, а кому-то PSP.

Покупать ли такой девайс себе? В качестве основного устройства для игры — я бы не стал, ребенку — вполне возможно. Решайте сами :)

Статья подготовлена при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud , чтобы не пропускать новые статьи каждую неделю!

Показать полностью 24

Сам написал, сам погонял: Как я написал 3D-гонки «на жигулях» за неделю, полностью с нуля?

Сам написал, сам погонял: Как я написал 3D-гонки «на жигулях» за неделю, полностью с нуля? Gamedev, Инди, Игры, Программирование, Графика, Directx, Видеокарта, Железо, Жигули, АвтоВАЗ, Лада, Windows, Видео, YouTube, Длиннопост



Статьи про инди-разработку игр — это всегда интересно и занимательно. Но статьи про разработку игр с нуля, без каких-либо игровых движков — ещё интереснее! У меня есть небольшой фетиш, заключающийся в разработке минимально играбельных 3D-демок, которые нормально работали бы даже на железе 20-летней давности. Полтора года назад, в мае 2022 года, я написал демку гоночной игры с очень знакомым всем нам сеттингом — жигули, девятки, десятки, и всё это даже с тюнингом! В этой статье я расскажу вам о разработке 3D-игр практически с нуля: рендерер, менеджер ресурсов, загрузка уровней и граф сцены, 3D-звук, ввод и интеграция физического движка. Интересна подробнейшая статья формата "старого Пикабу" о разработке игры с нуля? Тогда добро пожаловать!

❯ Предыстория


На момент написания статьи, я всё ещё остаюсь достаточно юным — буквально 5 дней назад мне исполнилось 22 года. Но если откатиться на 4 года назад и вспомнить момент наступления моего совершеннолетия, то на ум приходят сразу два значимых события: отец приходит в один день и говорит «открывай юлито, будем смотреть авто за 40 тыщ рублей». Понятное дело, что за эту сумму (~700$ по тому курсу) особо не разгуляешься, поэтому мой выбор пал на карбюраторную «семерочку», свою ровесницу (2001 год) синего цвета. Приехали с батькой смотреть на машину, обкатали и приняли решение — надо брать!

Сам написал, сам погонял: Как я написал 3D-гонки «на жигулях» за неделю, полностью с нуля? Gamedev, Инди, Игры, Программирование, Графика, Directx, Видеокарта, Железо, Жигули, АвтоВАЗ, Лада, Windows, Видео, YouTube, Длиннопост



С тех пор я ездил на своем «тазе» и горя не знал — машинка не ломалась, ни разу не подводила, вложений в себя не требовала, а я начал все больше увлекаться автомобилями и изучать тематический материал. Со временем я полюбил и другие российские модели автомобилей, но особенно мне нравился АвтоВАЗ. В один момент, вспомнив про популярный и провальный некогдаLada Racing Club, мне захотелось написать «гоночки на жигулях» самому, причём полностью с нуля. А поскольку нормального арта для города у меня не было, игру я решил назвать просто и понятно: «Ралли-кубок ТАЗов» :)

Сам написал, сам погонял: Как я написал 3D-гонки «на жигулях» за неделю, полностью с нуля? Gamedev, Инди, Игры, Программирование, Графика, Directx, Видеокарта, Железо, Жигули, АвтоВАЗ, Лада, Windows, Видео, YouTube, Длиннопост


Поём всем Хабром!

Но с чего начинать писать такой объемный проект самому? Тут нам, конечно же, нужен план. У меня уже был готовый самопальный 3D-фреймворк для игрушек, который я использовал в одной из прошлых демок: арена-шутер от первого лица с модельками из модов для Quake. Фреймворк был вполне рабочим, но требовал некоторой доработки для использования в «кубке тазов».

Сам написал, сам погонял: Как я написал 3D-гонки «на жигулях» за неделю, полностью с нуля? Gamedev, Инди, Игры, Программирование, Графика, Directx, Видеокарта, Железо, Жигули, АвтоВАЗ, Лада, Windows, Видео, YouTube, Длиннопост



На момент начала разработки гоночки у меня уже были готовы следующие фишки:

  • Рендерер: Direct3D9, причём полностью FFP — для того, чтобы игра запускалась даже на встройках Intel, где нормальной поддержки шейдеров до HD-серии вообще не было. Практически все текстурные техники работали через комбайнеры — дальний предок пиксельных шейдеров, где программист оперировал целыми стадиями пиксельного конвейера, а не писал программу напрямую, что накладывало множество ограничений. Поддерживались: многослойные материалы, однопроходной сплат-маппинг для плавного текстурирования ландшафтов, отражения в кубмапах, плавный морфинг (вершинная анимация) с линейной интерполяцией между кадрами, MSAA (это заслуга GAPI), отсечение невидимой геометрии по пирамиде видимости и примитивный альфа-блендинг с ручной сортировкой.

  • Звук: 3D-звук на DirectSound с позиционированием относительно источника звука, ускорением и т. п. Тут моей заслуги особо нет, кроме загрузчика wav-файлов я ничего не писал.

  • Ввод: WinAPI + DirectInput. Клавиатура опрашивалась с помощью классического GetAsyncKeyState, в то время как геймпады с помощью DirectInput. Была и абстракция осей ввода — дабы не адаптировать управление под кучу разных контроллеров.

  • Менеджер ресурсов: достаточно примитивен. К менеджеру ресурсов я отнесу и загрузчики — фреймворк поддерживал модели в форматах SMD (не анимированные меши, формат Half-life) и MD2 (анимированные меши, формат Quake 2, строго один материал на один меш), звуки — wav и простенький самопальный формат конфигов. Стандартный набор: трекинг ресурсов на слабых ссылках, пул ассетов для исключения дублирующейся загрузки и т. п.


Фреймворк выдавал не слишком крутую графику:

Сам написал, сам погонял: Как я написал 3D-гонки «на жигулях» за неделю, полностью с нуля? Gamedev, Инди, Игры, Программирование, Графика, Directx, Видеокарта, Железо, Жигули, АвтоВАЗ, Лада, Windows, Видео, YouTube, Длиннопост



Зато был очень простым «под капотом», имел довольно неплохую расширяемую архитектуру и в целом, на нем можно было запилить что-то прикольное. Где-то за неделю я запилил вот такую демку шутера от первого лица:

Игрушка даже на VIA UniChrome работала — последователе всем известного S3 Savage/S3 Virge!

Минимальное приложение выглядело примерно так:

Сам написал, сам погонял: Как я написал 3D-гонки «на жигулях» за неделю, полностью с нуля? Gamedev, Инди, Игры, Программирование, Графика, Directx, Видеокарта, Железо, Жигули, АвтоВАЗ, Лада, Windows, Видео, YouTube, Длиннопост

Приведённый выше код нарисует модельку с текстурой перед лицом игрока. Всё просто и понятно. Однако, как это всё работает «под капотом»? Давайте попробуем разобраться:

❯ Основа и рендерер


В своих играх я стараюсь придерживаться одной архитектуры: есть условный класс Engine, который управляет созданием платформозависимых окон, организацией главного цикла игры и инициализацией подсистем. Поскольку в одном процессе обычно запущен только один экземпляр игры (исключение — выделенные авторитарные серверы с комнатами, на манер Left 4 Dead), сам по себе Engine является синглтоном и содержит в себе ссылки на все необходимые подмодули.

Game.Initialize(new GameApp());

Game.Current.Run();

Как я уже говорил выше, сам по себе рендерер построен на базе графического API Direct3D9. Выбор DX9 обусловлен его распространенностью на железе прошлых лет, хорошей совместимостью (DX9 легко запускается на железе времен DX8 и даже DX7) и иногда лучшей производительностью на видеочипах от ATI. По сути, всё начинается с создания контекста или устройства в терминологии DirectX: в параметрах создания контекста указывается ширина и высота вторичного буфера, желаемый уровень сглаживания MSAA, видеорежим и частота желаемая частота обновления экрана.

https://pastebin.com/uba62bhu

При создании контекста есть свои нюансы, которые необходимо учитывать — например, большинство встроенных видеокарт не поддерживают аппаратную обработку вершин (D3DCREATE_HARDWARE_VERTEXPROCESSING), из-за чего создание контекста будет заканчиваться ошибкой без соответствующего флага, разные видеокарты поддерживают разные форматы буфера глубины и трафарета (сейчас видеокарты нативно даже 24х-битный RGB для рендертаргетов не умеют использовать, только выравненный XRGB), а видеокарты до GF5xxx-GF6xxx не поддерживали Pure режим D3D, который предполагает, что программист возлагает всю обработку ошибок на себя, при этом количество проверок в самом GAPI уменьшается, благодаря чему мы получаем небольшой выигрыш в производительности.

Важно так же отметить такой аспект, как управление ресурсами. К ресурсам видеокарты в терминологии старых GAPI относятся текстуры и буферы (как вершинные, так и индексные). В OpenGL особо нет такого понятия, как Device Lost. Если пользователь сворачивает ваше приложение из полноэкранного режима, или, например, видеодрайвер крашится — то GL сам должен позаботится о перезагрузке ресурсов обратно в видеопамять (исключение — Android и iOS, на мобилках контекст не уничтожится, но ресурсы будут выгружены и их хендлы станут некорректными). У D3D есть событие Lost, которое вызывается при потенциальной потере контекста — и его тоже нужно грамотно обрабатывать. Поэтому в D3D есть несколько пулов:

  • Managed: D3D9 сам сохраняет копию текстуры или геометрии в ОЗУ, а затем при потере контекста пересоздаёт аппаратные буферы и перезагружает нужные данные сам.

  • Default: данные загружаются напрямую в видеопамять (в терминологии D3D — AGP memory), или, если видеопамяти не хватает — в ОЗУ, если видеокарта, конечно, поддерживает Shared Memory Architecture.

  • System: загрузка ресурсов только в ОЗУ. Этот пул обычно не используется в играх — слишком медленно.


И грузить данные желательно в пул Default. Иначе при относительно большом количестве ресурсов, игра начнет «жрать» ОЗУ не в себя (пример — Civilization 5). При потере контекста, ресурсы нужно перезагружать с диска «на горячую»!

Переходим к самому важному — отрисовке геометрии. Для задания внешнего вида объектов на экране, используются так называемые материалы, которые содержат в себе данные о том, какая текстура должна быть наложена на объект, насколько объект отражает свет, какая техника должна использоваться и т. п. В современных движках система материалов обычно гибкая, поскольку шейдеры могут принимать самые разные параметры. В нашем случае шейдеров нет вообще, набор параметров фиксирован и зависит от видеокарты: стандартные техники типа повершинного затенения по Фонгу/Гуро, цвет объекта, туман и т. п.

Формат материалов в фреймворке выглядит вот так:

Сам написал, сам погонял: Как я написал 3D-гонки «на жигулях» за неделю, полностью с нуля? Gamedev, Инди, Игры, Программирование, Графика, Directx, Видеокарта, Железо, Жигули, АвтоВАЗ, Лада, Windows, Видео, YouTube, Длиннопост

Однако даже без шейдеров была возможность сделать относительно гибкую систему материалов — с помощью комбайнеров, как это делала Quake 3. Самые первые 3D-ускорители не поддерживали смешивание нескольких текстур за один вызов отрисовки, поэтому некоторые игры шли на ухищрение: к примеру Quake вручную сортировал геометрию по отдаленности без использования буфера глубины, он просто… накладывал альфа-блендингом ту же самую геометрию с затененной текстурой освещения (лайтмапа). Это называется многопроходной рендеринг. Комбайнеры, которые появились ближе к концу 90-х, позволяли смешивать несколько текстур с помощью различных операций (Add, Sub, Mul, Xor и т. п.), а также умножать финальный цвет на определенный коэффициент. Именно комбайнеры я использовал в своём фреймворке для реализации некоторых относительно сложных эффектов — например, плавное смешивание текстур на ландшафте:

https://pastebin.com/X6vA76CU

Основная проблема комбайнеров — каша из стейтов, поэтому код выглядит не особо презентабельно. Входная текстура-маска выглядит вот так:

Сам написал, сам погонял: Как я написал 3D-гонки «на жигулях» за неделю, полностью с нуля? Gamedev, Инди, Игры, Программирование, Графика, Directx, Видеокарта, Железо, Жигули, АвтоВАЗ, Лада, Windows, Видео, YouTube, Длиннопост



Переходим к отрисовке. По сути, за рисование полигональной геометрии отвечает один метод — DrawMesh, с несколькими перегрузками (в идеале — основной должен принимать матрицу трансформации, а остальные принимать обычные World-space координаты, из которых будет построена матрица трансформации). В оригинале метод рисует геометрию с помощью DIPUP, поскольку практически вся геометрия в игре была анимирована (и анимация, само собой, обрабатывалась для каждой вершины софтварно, на ЦПУ, поэтому я не видел разницы между перезаливкой геометрии на GPU каждый кадр и DIPUP), однако в одном из бранчей фреймворка я переписал отрисовку статику на обычный DIP. Обратите внимание, что DIPUP для комплексной геометрии на старых GPU будет слишком медленным — когда-то этим страдал графический движок Irrlicht.

https://pastebin.com/L0GYCkmt

В более позднем бранче добавилось отсечение по дистанции от «глаз» игрока и по пирамиде видимости.

Переходим к анимации. Есть три основных метода анимации геометрии в играх:

  • Скиннинг: анимация вершин относительно скелета модели. Очень хорошо подходит для различных персонажей. Весь скелет является иерархией, где каждый элемент трансформируется относительно позиции родителя, что позволяет легко интегрировать «скелетку» в граф-сцены самого движка (Unity — самый яркий пример). Иногда скелетку используют и для «неоживленных» предметов — например, анимация подвески авто.

  • Морфинг: классический способ анимации суть которого заключается в «запекании» всех кадров в виде множества мешей. Затем игра интерполирует вершины между кадрами анимации, благодаря чему достигается эффект плавности.

  • Object-Transform: классический метод иерархической анимации, очень похож на скиннинг, только трансформируются не сами вершины, а привязанные к ним объекты. Применялась, например, во многих играх на PS1 и в GTA III (замечали отсутствие плавности в местах сочленений персонажей — это и есть OT).


Я не умею нормально работать с скиннингом моделей в 3D-редакторах и обычно не юзаю скиннинг в своих игрушках — для небольших демок хватает обычного морфинга с интерполяцией. Если интерполяцию не использовать, то анимация будет выглядеть топорно (в Quake 1 при отключении CVar'а такая и была):

https://pastebin.com/Y5r9eDAk

Работа с анимациями выглядела вот так:

Сам написал, сам погонял: Как я написал 3D-гонки «на жигулях» за неделю, полностью с нуля? Gamedev, Инди, Игры, Программирование, Графика, Directx, Видеокарта, Железо, Жигули, АвтоВАЗ, Лада, Windows, Видео, YouTube, Длиннопост

По сути, одна из самых комплексных частей — рендерер, готова. Однако в играх требуются и другие подсистемы, которые реализовать куда проще.

❯ Звук и ввод


Реализация звука в играх задача не шибко сложная, если дело не доходит до программной реализации микшера, 3D-позиционирования и различных эффектов. Большинству игр хватает обычного не-сжатого wav, звук в котором хранится в виде PCM-потока.

В качестве API для звука я выбрал DirectSound. Очень удобное API, хотя сейчас его фактически вытеснил XAudio. DirectSound поддерживает любые звуковые карты, сам занимается микшированием звука, а в некоторых старичках типа AC97 умеет даже аппаратное ускорение! На современных машинах обычно микширование реализовано полностью софтварно, дабы не упираться в количество каналов/память на борту звукового адаптера, но в прошлом это помогало снизить нагрузку на процессор.

В DirectSound есть два основных объекта: сам IDirectSound8, представляющий интерфейс к звуковой карте и управлению её ресурсами и буфер — который может быть подкреплен как собственными данными, так и данными из другого буфера. В играх, они делятся на три базовых понятия:

  • Слушатель: описание позиции и иных параметров «слушателя» — позиции ушей в игровом мире. Обычно позиция слушателя совпадает с позицией игрока.

  • Источник: описание источника звука в 3D-пространстве. Например, если мимо нас проносится машина, то звуковому API необходимо знать позицию, ускорение и дальность звука, дабы правильно скорректировать звук в пространстве.

  • Поток: поток, который содержит в себе звук. Может быть как обычным буфером, куда звук уже предварительно загружен, так и потоковым буфером, куда загружается часть музыки или другого длинного трека.


Переходим к реализации примитивного звука:

https://pastebin.com/jrG2iaiT

Теперь мы можем воспроизводить звуки в нашей игре!

Однако, нам нужно чтобы пользователь мог взаимодействовать с нашей игрой. Для этого в разных системах есть различные API для взаимодействия с устройствами ввода. В случае Windows — это DirectInput для обычных USB-геймпадов и рулей, и XInput для геймпадов, совместимых с Xbox 360/Xbox One. Нажатия с клавиатуры можно обрабатывать двумя способами: с помощью событий WM_KEYDOWN и WM_KEYUP и функции WinAPI GetAsyncKeyState.

Пока что мне нужна только клавиатура и мышь:

Сам написал, сам погонял: Как я написал 3D-гонки «на жигулях» за неделю, полностью с нуля? Gamedev, Инди, Игры, Программирование, Графика, Directx, Видеокарта, Железо, Жигули, АвтоВАЗ, Лада, Windows, Видео, YouTube, Длиннопост

В идеале обработку ввода лучше абстрагировать от физических устройств взаимодействия. Для этого вводятся понятия осей, кнопок действий и т. п. Желательно сразу продумать, как игра будет работать с геймпадом и уже затем назначать кнопкам на клавиатуре действия абстрактного геймпада.

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

❯ Редактор уровней


Поскольку у фреймворка нет какого-либо своего графа сцены, я реализовываю механизм загрузки уровней в каждой игре с нуля — под конкретные нужды. В какой-то игре нужен стриминг для открытого мира, в другой — быстрая загрузка уровней, где есть множество объектов с разными параметрами. Изначально я использовал Blender в качестве редактора уровней и экспортировал карты небольшим скриптом, который сохранял основные параметры в файл.

Однако блендер (особенно 2.79 и ниже) не очень удобный редактор для работы с достаточно большими картами. Поэтому в определенный момент встал вопрос с организацией графа сцены и собственного редактора карт.

Граф сцены и графом то не назовешь — это просто линейный список объектов, которые присутствуют на сцене. Каждый объект наследуется от базового абстрактного типа Entity, если это «невидимый» объект, или PhysicsEntity, если объект должен интегрироваться с физическим движком. У базового объекта есть только имя и флаг выборки в редакторе.

Сам написал, сам погонял: Как я написал 3D-гонки «на жигулях» за неделю, полностью с нуля? Gamedev, Инди, Игры, Программирование, Графика, Directx, Видеокарта, Железо, Жигули, АвтоВАЗ, Лада, Windows, Видео, YouTube, Длиннопост

Вообще, для редактирования уровней можно хоть редактор Unity использовать, предварительно написав экспортер в самопальный формат. Однако я решил реализовать свой редактор: как обычное Windows Forms приложение + панель, в которую движок рендерит картинку. В его реализации нет ничего необычного: он точно также загружает уровень, как и основная игра, но при этом не создаёт игрока и ботов и имеет свободную камеру.

Сам написал, сам погонял: Как я написал 3D-гонки «на жигулях» за неделю, полностью с нуля? Gamedev, Инди, Игры, Программирование, Графика, Directx, Видеокарта, Железо, Жигули, АвтоВАЗ, Лада, Windows, Видео, YouTube, Длиннопост



Формат уровней примитивный донельзя. В процессе разработки небольших игрушек я обычно следую принципу KISS и не люблю распыляться сложными сериализаторами/десериализаторами и прочими заморочками, реализовывая лишь самые необходимый функционал. Формат карт — текстовый, одна линия на один объект:

p ferns 0 0 10.8 0 0 0 1

Где p — «класс» объекта, в случае p — это Prop, «декорация».
ferns — модель пропа. При этом сами пропы описаны в отдельных текстовых файлах, где в виде key-value значений хранятся настройки коллизии, материала, текстуры и т. п.
XYZ — позиция в мире.
XYZ — поворот в мировых координатах, задаётся в углах Эйлера (это только для статики, которая не подвержена Gimbal Lock, под капотом вся работа идёт с кватернионами).

Сам написал, сам погонял: Как я написал 3D-гонки «на жигулях» за неделю, полностью с нуля? Gamedev, Инди, Игры, Программирование, Графика, Directx, Видеокарта, Железо, Жигули, АвтоВАЗ, Лада, Windows, Видео, YouTube, Длиннопост

❯ Физика автомобилей


После того, как граф сцены был готов, я приступил к реализации физики автомобилей. Но как я уже говорил, физический движок я использовал готовый — т. е. вся работа по резолвингу столкновений, распаралелливанию вычислений и Joint'ам сводилась чисто к нему. Я лишь использовав физику колеса, реализовал поведение машинки, внеся в него некоторые изменения: в основном — вынес в публичные свойства параметры трения колеса.

Сам написал, сам погонял: Как я написал 3D-гонки «на жигулях» за неделю, полностью с нуля? Gamedev, Инди, Игры, Программирование, Графика, Directx, Видеокарта, Железо, Жигули, АвтоВАЗ, Лада, Windows, Видео, YouTube, Длиннопост



Само колесо реализовано по классическому принципу рейкастинга — колесо пускает под себя лучи и определяет трение относительно поверхности, на котором стоит, при этом двигая остальное тело используя собственное ускорение. Сейчас в играх для более точной симуляции используется Pacejka Magic Formula — формула, позволяющая рассчитать физически корректное поведение покрышки с различными диаметрами.

Поскольку класс сущности машинки слишком большой и требует контроля самых разных аспектов (коробка передач, аспекты тюнинга, отрисовка и материалы), я вынес часть физики в отдельный класс CarPhysics:

https://pastebin.com/k9KXtreT

Как можно видеть из метода Move, наша машинка полноприводная и имеет две управляющие оси (передние, само собой). Конфигурацию привода легко можно модифицировать в будущем.
Коллизия кузова машинки — обычный OBB прямоугольник, ну или «коробка».

А вот как это работает на практике:

Пока что гонки на утюгах. Но ездит же. :))
Но с кем мы гоняемся?

❯ Боты


Я не стал называть этот раздел ИИ — боты в игре слишком примитивные. Здесь нет никакого поиска пути, боты просто ездят по заранее отмеченным точкам на карте, которые называются
вейпоинтами. Это стандартная практика во многих гонках, однако её реализация отличается от игры к игре. Вообще, для гонок есть несколько общеизвестных практик реализации навигации противников:

  • Вейпоинты с поиском путей: довольно комплексный метод, который позволяет сделать, например, гонки в открытом городе, где боты сами смогут находить путь к чекпоинтам. Подобный способ используется для гонок в GTA, например. Строго говоря, сам по себе поиск путей — это тоже набор чекпоинтов и преград, поэтому для такого метода навигации необходимо довольно большое количество информации (пути для трафика, светофоры и т. п).

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

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


При этом некоторые разработчики не стесняются красивых фейков: реализация реалистичного входа в поворот с крутой физикой может быть сложной, особенно когда боты «тупые», поэтому в некоторых играх ботам намеренно подкручивали управляемость или максимальную скорость. Помните, как быстро нагоняли соперники в NFS Underground? Вот то-то же. :)

Некоторые могут вообще записать фейковый трек, по которым машина будет просто скользить, без учета физики авто. Но «беспалевные» реализации этого способа я пока не видел.
По настоящему «трушный» способ — это когда противники используют всё те же способы, которые использует игрок — т. е. также «нажимают» на виртуальные кнопки и управляют осями автомобиля. Кроме того, частенько каждому сопернику подмешивают дополнительный фактор, куда он будет ехать — иначе машинки будут толпиться друг за другом и будет выглядеть не интересно.
Я использую классические вейпоинты с подсказками.

Сначала нам необходимо получить угол между машинкой игрока и вейпоинтом. Для этого нам нужно перевести координаты текущего вейпоинта в локальные координаты машинки с учетом её поворота (т. е. относительно неё и её Forward-вектора). Поскольку поворот автомобиля считается в кватернионах, нам нужно помножить матрицу поворота на матрицу позиции машинки в мире и умножить позицию вейпоинта используя полученную инвертированную матрицу. Звучит сложно, на деле легко:

private Vector3 WorldToLocalSpace(Vector3 worldPoint)

{

Matrix transform = Matrix.Invert(Matrix.RotationQuaternion(Rigidbody.Rotation) * Matrix.Translation(Rigidbody.Position));

Vector4 vector4 = Vector4.Transform(new Vector4(worldPoint, 1f), transform);

return new Vector3(vector4.X, vector4.Y, vector4.Z);

}

Если очень условно, то это выражение эквивалентно a — b с учетом поворота. Поскольку мы вычислили локальные координаты вейпоинта, нам остаётся только вычислить угол между ними с помощью классического atan2 и перевести радианы в градусы:

private float AngleBetween(Vector3 v1) {

return (float) Math.Atan2((double) v1.X, (double) v1.Z) * 57.29578f;

}

Полностью логика бота выглядит так:

Сам написал, сам погонял: Как я написал 3D-гонки «на жигулях» за неделю, полностью с нуля? Gamedev, Инди, Игры, Программирование, Графика, Directx, Видеокарта, Железо, Жигули, АвтоВАЗ, Лада, Windows, Видео, YouTube, Длиннопост

Легко и просто, да?

❯ Гараж и гонки


Какой интерес в гонках без… гонок? Поскольку у меня не было особо ассетов для создания пригорода, я решил сделать пересеченную местность. А на пересеченной местности у нас есть как кольцевые гонки, так и спринт — от точки до точки.

Помимо этого, в игре должен быть гараж, где игрок мог бы купить новую машину или тюнинговать текущую. В начале игры выдавалась бы старая дедова копейка (модельки Оки не нашел), а то и Москвич, а потом игрок выигрывал бы в гонках и получал возможности про прокачке тачек и покупке новых. Эээх, лавры Lada Racing Club не дали покоя!

Начал я с реализации гаража. Сам по себе гараж — отдельный уровень, который обрабатывается своим контроллером, также в гараже применяется самый первый доступный UI в фреймворке — меню со списками. Сам гараж поделен на множество подменю: тюнинг, гонки и автосалон.

https://pastebin.com/dakm4AvbПараллельно с гаражом, была проработана система тюнячек — они тоже описывались в простых текстовых файлах и так или иначе влияли на ходовые качества машины. Правда, визуального тюнинга не было предусмотрена — некому моделлить апгрейды. :(

Сам написал, сам погонял: Как я написал 3D-гонки «на жигулях» за неделю, полностью с нуля? Gamedev, Инди, Игры, Программирование, Графика, Directx, Видеокарта, Железо, Жигули, АвтоВАЗ, Лада, Windows, Видео, YouTube, Длиннопост



Сами гонки можно было начать, обратившись к RaceManager и передав структуру RaceParameters:

public struct RaceParameters {

public string Name;

public string Mode;

public int NumOpponents;

public int Difficulty;

public int Prize;

public int ProgressAffection;

}


После этого, игра загружала уровень, создавала ботов на месте spawnPoint (игрок оказывался, как обычно, последним) и запускала гонку.

https://pastebin.com/mgQJjyJL

А затем каждый кадр просчитывала позиции каждого участника гонки:

https://pastebin.com/0ExwDZaY'

Всё! Логикой движения и всем остальным заправляли уже боты. Хотя, там и был костыль на первых этапах, который помечает флаг конца гонки, в остальном — функционал гоночек рабочий. :)

Вот мы и дошли до этапа, когда простенькая, но рабочая демка игры у нас уже есть! Игра запускается на GF4, однако работает не совсем корректно — но оптимизировать её под видеокарты тех лет не составит труда (в основном — пережать текстуры, убрать некоторые техники на комбайнерах и запечь статические пропы в батчи).

❯ Заключение


Вот так я и написал гоночки за неделю. Время разработки демки с нуля до состояния, которое вы видите в статье — всего неделю. Да, за это время реально написать прототип гоночной игры. И я ведь знаю, что в комментариях игру будут сравнивать с Lada Racing Club и шутить о сроках её разработки — ведь в этом и суть! Слишком мало реально прикольных ламповых гоночек на жигулях. Вот что у меня получилось в итоге:

Исходниками игры я конечно же поделюсь: тык на GitHub.
А вот линки на загрузку демки:

Гоночки

Шутан

Ну а для меня это был своеобразный челлендж. И я его выполнил — у меня получилась рабочая демка на выходе! Я вижу что вам, моим читателям, интересна тематика самопальной разработки игр. Судя по комментариям, вам нравится тематика геймдева, программирования графики и разработки игр. Темой одной из следующих статей может стать описание архитектуры графических ускорителей конца 90х, история их API (без D3D) и написание 3D-игры для 3dfx Voodoo с нуля, на базе Glide!

Кроме того, я хотел бы рассказать о графическом API известного многим «3D декселератора» S3 Virge. Интересна ли вам такая рубрика? Пишите в комментариях!

Статья подготовлена при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, , чтобы не пропустить новые статьи каждую неделю!

Показать полностью 16 5

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Мне всегда очень нравились компактные полноценные компьютеры, которые можно куда-нибудь применить и они не будут потреблять слишком много энергии. Время от времени я мониторю различные онлайн-барахолки на манер интересных предложений — с годами, рыночная цена на различные «офисные» девайсы только падает. Недавно я увидел, что цены на неттопы на базе Intel Atom пробили дно и начали стоить какие-то сущие копейки: 400 рублей, 800 рублей, 1300 рублей — и это всё за полноценные, полностью рабочие компьютеры на одно-двух ядерных Intel Atom и с 2-4гб ОЗУ! Но главный интерес заключается не столько в самом атоме, сколько в их «мультимедийной» направленности: многие неттопы тех лет построены на базе чипсета NVidia ION, который был эдакой попыткой сделать нетбуки с более широкими мультимедийными возможностями — в том числе, с довольно неплохим интегрированным GPU GeForce 9400. На что способна компактный «мультимедийный» ПК за 1.000 рублей? Давайте смотреть!

❯ Немного предыстории



Компактные компьютеры появились отнюдь не с появлением первых одноплатников и различных тв-боксов/тв-стиков. Спрос на компактные и недорогие машинки, которые можно использовать для офисных задач, удаленной работы и серфинга в интернете, был практически всегда и их история тянется ещё с прошлого века. Ещё 20-25 лет назад можно было купить полноценный минипк на базе настоящего x86 процессора — Cyrix MediaGX (aka AMD Geode), хотя его производительность была достаточно невысокой. Чаще всего, системы на базе этого процессора работали на Win 3.1/Win95, а в нулевых — на базе Windows CE.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Однако, минипк до конца нулевых в основном оставались исключительно «рабочими» машинами: чаще всего, это были либо тонкие клиенты, либо POS-терминалы а-ля кассы, либо промышленные материнские платы с собственной гребенкой GPIO для управления различными станками. Всё изменилось с выходом Intel Atom в 2008 году, появлением первых APU от AMD и развитием ARM-чипсетов и Linux на них. Техпроцесс уже позволял поместить как само вычислительной ядро/ядра, так и всю необходимую логику под один кристалл — что и дало жизнь двум новым классам устройств: неттопы и нетбуки (правда, тут с оговоркой, поскольку OLPC и EEEPC 701 — это тоже нетбуки, вышедшие аж за год до появления первого Atom, а ещё раньше были UMPC в виде промышленных планшетов на Celeron'ах).

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



В наше время, концепцию неттопов переняли множество самых разных устройств: ТВ-боксы/стики, NUC'и, Compute-стики и в очень большой степени — одноплатные компьютеры, хотя действительно шустрые минипк могут ощутимо ударить по карману. Но, у неттопов-старичков есть одно очень большое преимущество, которое буквально даёт им вторую жизнь в 2023 году: это крайне низкая цена на различных барахолках. Недавно я листал объявления и наткнулся на два интереснейших варианта за реальные копейки:

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Acer Aspire Revo — очень симпатичный и компактный девайс на базе Intel Atom 230 и с чипсетом Nvidia ION. Купил я его за 900 рублей (9$ на момент написания статьи).

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



И неттоп ICL, который по старинке называют тонким клиентом. На самом деле, это Pegatron Amis L6 — OEM-устройство, на которое просто перекинули свои шилдики. Этот девайс уже немного новее и работает на базе Atom D425 и встроенной графики Intel (в некоторых вариациях — двухядерный Atom D525 и ION 2). Цена этого девайса, внимание, всего450рублей (4.5$ на момент написания статьи) — правда у него не было HDD, но заявлен он был как рабочий!

Конечно не стоит забывать и о Mac Mini, который появился ещё в 2005 году: инженеры Apple умудрились уместить в небольшой корпус довольно мощный по тем временам PowerPC G4, а через два года — уже полноценный Core 2 Duo и это учитывая крайне миниатюрный корпус девайса. Но всё же мак был явно не таким дешевым и массовым устройством, как неттопы на базе Atom, хотя и сейчас их можно найти на барахолках по весьма низким ценам: в среднем 2-3 тысячи рублей за модели 2007 и 2008 года, однако учтите что обязательно придётся апгрейдить ОЗУ (ноутбучная DDR2 стоит копейки).

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



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

❯ Характеристики



Несмотря на то, что оба девайса работают на Intel Atom, построены они на совершенно разных платформах. Aspire Revo работает на базе самых первых Intel Atom, которые имели только одно ядро и были не особо шустрыми в повседневных задачах, да и с мультимедией у них были проблемы — ведь GMA3150 особо не переваривал FHD видео. Неттоп от Pegatron построен на базе более свежей платформы Pine Trail, в которой некоторые процессоры имели 2 ядра и 2 потока, что давало неплохой буст производительности. Однако а моем экземпляре, место под ION2 и VRAM на плате было пустым — графику, к сожалению, не распаяли.

Давайте посмотрим на характеристики обоих девайсов поближе:

Aspire Revo R3600:

  • Процессор: Intel Atom 230 на частоте 1.6Ггц, L2 кэшем 512Кб и тепловыделением 4Вт.

  • GPU: GeForce 9400 из NVidia ION. Поддерживается декодирование 1080p видео, DX11, GL 3.0, есть HDMI и VGA одновременно.

  • ОЗУ: 4 гигабайта DDR2 памяти.

  • HDD: 250гб 2.5" SATA + порт eSATA (кто-то помнит такой?).

  • Питание: 65вт, обычный Acer/Asus штекер, практически любой 12в ноутбучный БП должен подойти.



Pegatron Amis D425:

  • Процессор: Intel Atom D425 на частоте 1.8Ггц, L2 кэшем 512Кб и тепловыделением 8Вт.

  • GPU: GMA3150 — GL1.4, DX9 — да и то не полностью. Из видеовыходов только VGA и LVDS (который не задействован т.к у нас неттоп, а не нетбук), HDMI нет.

  • ОЗУ: 2гб одной планкой DDR3. При желании можно и расширить.

  • HDD: 250Гб 2.5" SATA. Порта eSATA нас лишили взамен более компактным размерам устройства.



Самое время обслужить оба девайса. Иногда за 1.000-1.500 рублей можно встретить абсолютно новые неттопы, но в моём случае, девайсы были сильно Б/У. И если Revo ещё выглядел вполне презентабельно, за исключением мелких царапок и даже ни разу не разбирался (пломба была на месте), то Pegatron пришлось тяжко — кто-то явно вскрывал его отверткой. Сами клипсы здесь действительно очень жесткие и снимать их без съемника проблематично, но не отверткой корпус гнуть же! Обратите внимание на «ушко» для открытия корпуса: от него ведите в сторону передних USB-портов и аккуратно расщелкивайте корпус:

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Как и было заявлено, в устройстве не оказалось HDD. В остальном, девайс был в хорошем состоянии и его явно когда-то обслуживали.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост


На фото HDD уже стоит.

Всё охлаждение построено на базе одного кулера и одной теплотрубки, на которой сидит и процессор, и чипсетная графика — если она есть. На больших ноутбуках, такую конструкцию часто ругают за низкий КПД: GPU обычно греется сильнее, отдавая тепло обратно процессору, но на подобном устройстве это не проблема, т.к тепловыделение обоих модулей очень низкое.

Обратите внимание: на плате есть места, где должен быть распаян ION и видеопамять для него. Поскольку ION был построен на базе десктопного GPU, он требовал отдельную видеопамять, несмотря на возможность резервировать часть ОЗУ под свои нужды.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Кроме минорной чистки кулера и радиатора, девайс требовал HDD, благо читатели мне заслали несколько 2.5" HDD и SSD, за что им большое спасибо! Собираем всё обратно и начинаем перебирать второй девайс, пока на первый устанавливается система.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Aspire Revo — вообще верх продуманности как по мне. Крышку держит всего один винт, который закрыт гарантийной пломбой. Срываем пломбу, откручиваем винт и снимаем крышку с клипс — и все! Очень удобно.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Этот девайс уже гораздо серьезнее — здесь довольно большой радиатор охлаждает как здоровенный чипсет (обратите внимание на размер кристалла), так и процессор. Сравните размеры кристаллов на обеих чипах :)

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



В остальном, обслуживать его тоже очень легко и просто — нам доступно два слота для мобильной DDR2-памяти, так что если у вас тоже будет Revo, но чуть более слабый — не беда, можно проапгрейдить, благо DDR2 стоит копейки.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



У моего девайса HDD был жив, однако если вам попадётся экземпляр с мертвым «винтом», то для замены придётся разобрать устройство полностью. Достаточно открутить винты, крепящие плату к корпусу, осторожно вытащить плату с кнопкой включения, eSATA и USB и аккуратно вытащить плату. HDD крепят 4 винта с обратной стороны.

После развертывания системе, предлагаю перейти к практическим тестам!
На Pegatron я накатил Windows XP, на Revo Windows 7 — дабы понимать разницу в производительности.

❯ Синтетика и бенчмарки



В синтетике всё с виду неплохо: производительность ЦПУ обеих девайсов находится примерно на одном уровне: между Pentium 4 Extreme Edition (топовые процессоры 2003 года). Оба процессора имеют одно ядро и два потока.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Тест CPU Queen. В синтетике, процессор весьма близок к сборке из двух Pentium D, пусть и не самых топовых. Revo, конечно же, немного шустрее:

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Обе машинки тихие и не сказать, что горячие. Температура Pegatron при пиковой нагрузке не превышала 40-45 градусов, в то время как Revo грелся до 65 градусов в пике. Даже на нетбуках тех лет, результат обычно хуже: некоторые атомы были достаточно горячими.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост
Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Касательно графики, у Pegatron используется известный многим чипсетный GPU GMA 3150. Это очень слабенький графический ускоритель, у которого большие проблемы с драйверами на OGL — поддерживается DX9.0c (с SM 3.0, но есть болячки совместимости) и OpenGL 1.4 (т.е без шейдеров вообще). Кроме этого, у него полностью программный вершинный конвейер, из-за чего на и без того слабый процессор ложится дополнительная нагрузка. Начиная с 2000 года, как раз с выходом GeForce 2, большинство видеочипов уже обрабатывали всю геометрию на GPU (трансформация из World space в Clip space), а S3 (VIA), SIS и Intel продолжали просчитывать геометрию на процессоре, из-за чего производительность игры падала обратно пропорционально количеству треугольников на экране. Даже на PS2 уже сделали некое подобие вершинных шейдеров — программируемый VPU, где трансформировалась вся геометрия, но производители «встроек» упорно не хотели следовать тендециям. Ситуация изменилась ближе к выходу Intel HD Graphics — там с этим было всё хорошо :)

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Помимо ускорения 3D-графики, он умеет декодировать h263 видео с разрешением до 720p, но для потокового видео из браузера, его конечно же не хватит. Хотя, если предварительно качать видео — то вполне потянет.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Другое дело — Revo с его GeForce 9400. Вообще, выходило целых две версии платформы ION: первая, как уже было сказано выше, использовала GF 9400, а вторая использовала GF 305 (это номер модели, а не чипа). Да, даже слабее «затычки» GT 310. GF9400 уже имел нормальный вершинный конвейер, поддержку DX10, умел декодировать видео до FHD и имел видеовыход на HDMI. Кроме того, с этими GPU нет проблем на Linux: 9400 поддерживает как Nouveau, так и официальные драйвера NV.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Скажу сразу: серфить нормально интернет на этих девайсах не получится. Современный веб очень сильно разжирел: если в 2010-2015 годах, с подобных машинок вполне можно было сидеть в интернете тех лет с относительным комфортом, то сейчас даже Хабр едва ли загружается :( Windows 10 накатывать сюда даже смысла нет — будет неюзабельно!

❯ Играем



Одна из главных ION была встроенная графика. В десктопном и ноутбучном исполнении, GF9400 весьма неплохой видеочип: из ПК на его базе вполне можно соорудить машину для игры в игры эпохи PS2/PS3 с комфортом. Однако, в Revo GF 9400 совсем уж подрезали: производительность игр начала нулевых даже в 720p достаточно печальная.

HL2 с mat_dxlevel 80 идёт… с жалкими 10-15 FPS на сценах с водичкой и 20-30 на закрытах сценах. Да, это очень плачевный результат, при том что остальные настройки выкручены в минимум. На GMA3150, например, с mat_dxlevel 70, у нас есть… кадров 10 максимум :)

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



GTA VC идёт ощутимо получше. Здесь игра относительно нормально работает в 1080p, с просадками до 20 кадров. Такое себе удовольствие, не этого ожидаешь от GF9400! На GMA3150 дела совсем плохи, скажу честно — я удивлен такому результату. У меня есть ноутбук iRu, топовый для своих лет: дискретный GF 4 440 Go + десктопный Pentium 4. Там Vice City «летает» в стабильных 30FPS при 720p, а тут гораздо более свежая встройка не вытягивает и 15 нормально…


А ведь GF4 MX440 когда-то считалась хоть и народной, но слабой карточкой…

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост
Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



NFSU2 обоим девайсам даётся плохо. На GF9400, мы получаем лаги при разрешении выше HD и с средними настройками. На GMA3150 игра идет плохо вообще при любом раскладе. Однако, судя по всему, рендерер NFS тех лет сам по себе не очень оптимален.

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



Но во что тогда играть на них! Правильно, в «героев» :)

Минипк за 1.000 рублей — на что способны дешевые неттопы из прошлого десятилетия Гаджеты, Покупка, Неттоп, Тонкий клиент, Девайс, Одноплатный компьютер, Электроника, Intel, Intel atom, Длиннопост



К сожалению, игровые возможности обеих девайсов оказались не сильно выше тонкого клиента из 2006-2007 года за 500 рублей. ION чуточку нас подвел… хотя интересно было бы разжиться девайсом на базе ION 2 — авось там ситуация лучше.

Пока что я вижу единственный вариант для миниатюрной консоли с эмуляторами + нативными играми на базе ПК-железа — это взять плату от ноутбука 2006-2009 года с дискреткой уровня GF8400, сделать для неё свой корпус на 3D-принтере, развести кнопку включения, дописать «морду» и только тогда получится нормальная машинка для игр уровня PS3!

Может у кого есть битый и распотрошенный ноут середины-конца нулевых? Попробуем дать ему новую жизнь!

❯ Заключение



И хотя ION оказался далеко не таким шустрым, как хотелось бы, применения у этих машинок все еще есть:

  • Торрентокачалка, файловый сервер, DLNA-сервер для мультимедиа

  • Простенький сервер для домашней странички. Сюда же можно складывать бэкапы.

  • Репозиторий для хранения кода.

  • Офисная машинка

  • ТВ-приставка + консоль для ретроигр «в гараж». Почему бы и нет? :)



В целом, если у вас в кармане всего 500-1.000 рублей и вам нужна слабенькая, компактная машинка для каких-либо задач — почему бы не прикупить себе подобный девайс?

Показать полностью 24

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х?

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



В наше время большинство портативных устройств работает на базе достаточно мощных микроконтроллеров, которые способны запускать даже интерпретируемый код на Lua/Python. Чего уж там говорить — даже современная кофеварка или умный электрочайник может быть в разы мощнее оригинального IBM-PC, не говоря уже о автомобильных бортовых компьютерах, которые зачастую мощнее топовых ПК из начала нулевых. Но давайте вспомним конец 90-х и начало 2000-х, когда разработка собственной электроники была практически недоступна рядовому пользователю, а микроконтроллеры программировались в основном только на ассемблере. Недавно я нашёл некоторую информацию о том, какой процессор вероятно использовался в таких знакомых нам приставках Brick Game, которые мы называли «Тетрисами»! Более того, мне удалось найти полный даташит с описанием всех модулей этого процессора, который гордо можно назвать «система на кристалле». Какой была разработка микроэлектроники в 90-х? Читайте в статье!

❯ Немного о «Тетрисе»


Пожалуй, Тетрис или Brick Game был одной из самых популярных портативных игровых консолей в странах СНГ. Появившись где-то в конце 90-х, этот гаджет быстро стал бестселлером среди детишек благодаря наличию сразу нескольких игр, полноценного ЖК-экрана, звука и невероятной дешевизны. Не знаю, сколько Тетрис стоил в момент выхода, но в нулевых цена на него была крайне низкой — около 100-200 рублей в зависимости от корпуса. Типичный школяр мог накопить на собственный Тетрис за несколько недель, что делало его самым доступным игровым девайсом на рынке.

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



Конечно же, на рынке уже были различные консоли с гораздо более богатым функционалом — например GameBoy и даже GameBoy Color с цветным дисплеем, а люди, родившиеся в конце 90-х или начале 2000-х уже застали PlayStation Portable с реально крутой 3D-графикой и телефоны с хорошим игровым потенциалом — как, например, SE K500i. Однако цена на них была непозволительной роскошью для небогатых семей: PSP стоила 250$ (около 7-8 тысяч рублей по тому курсу), плюс каждый UMD-диск с игрой стоил около 1.000 рублей, GameBoy были относительно редкими в России, а телефоны — это всё же прерогатива более юных ребят, да и в нулевых далеко не всем перепадал крутой K500i — чаще всего покупали телефон попроще типа Siemens A55 (грузчика помним?) или Motorola C350 (а мотоциклиста?). Поэтому тетрисы оставались чуть ли не единственным средством развлечения у небогатых ребят.

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



Ощутимым плюсом было и то, что Тетрис работал от батареек: они были не слишком дорогими в то время, а если носить с собой в кармане парочку, то можно не бояться, что консоль сядет в долгой дороге и продолжать себя забавлять, да и сам Тетрис работал довольно долго, мне хватало на неделю игры (может и меньше). Несмотря на низкое разрешением всего в 10x20 пикселей, Тетрис обладал достаточно большим монохромным дисплеем без подсветки, на котором было комфортно играть.
Ещё одним немаловажным плюсом консоли была возможность «кооперативной» игры и эдакого азарта: будучи неискушенными детьми, многие из нас пытались поставить рекорды и выбить как можно больший счёт в каждой из доступных игр. Чем больше счёт, тем ты круче среди друзей!

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



Но что же у Тетриса «под капотом»? На чём он работал внутри? Недавно я нашёл информацию о том, что потенциально в Тетрисе могла использоваться 4х-битная система на чипеHoltek HT1130, которая использовалась в самой разной носимой электроники: от часов на батарейках, до полноценных игровых консолей. Причём я ничуть не преувеличиваю, это действительно SoC: уже в 90-х, тайваньская компания смогла объединить звуковой модуль, контроллер ЖК-дисплея, ввод/вывод и таймер в один чип! Однако тут важно понять, что 100% сказать, на чём работал Тетрис, нельзя — процессор спрятан под компаундом и у него нет корпуса с маркировкой, лишь «голый» кристалл. Тем не менее, мы можем предположить, что это был один из чипов Holtek и посмотреть, на чём же работала портативная электроника тех лет поближе!

Заранее прошу прощения за отсутствие нормальных фотографий. Под рукой у меня не оказалось «старого» Тетриса, а на новодельных показывать как-то не очень.

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



На данный чипсет есть «утёкший» в сеть даташит с полным описанием регистров микроконтроллера и его ТТХ. Чип был спроектирован так, чтобы не требовать практически никакой обвязки в виде конденсаторов/резисторов и других SMD-элементов — он работал фактически напрямую от пальчиковых батареек и его легко было развести на плате даже начинающему инженеру. Микроконтроллер стабильно оперировал при напряжении от 2.4в до 3.3в, что позволяло просто вставить две последовательно соединенные AA или AAA батарейки с напряжением 1.5-1.6в и получить необходимое питание для работы всей «приставки».

❯ Вычислительное ядро


Саму систему на кристалле можно разделить на несколько соединенных модулей в один чип. Основным, конечно же, является 4х-битное вычислительное ядро неизвестной архитектуры, которое компания Holtek разработала сама или лицензировала как IP-ядро у другой компании для использования в собственном чипе (как, например, MediaTek лицензирует у ARM ядра Cortex). Система команд, по крайней мере, описание мнемоник ассемблера в даташите наводят на мысли о некоторой схожести с микроконтроллером Intel 8051 (однако 8051 был 8-битным) и в целом, напоминают типичную интеловскую архитектуру из 80х. Однако только по мнемоникам точно определить архитектуру невозможно: здесь есть «проприетарные» команды типа SOUND и TIMER.

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост
Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост
Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост


Чип работает на частоте 1мгц от встроенного тактового генератора, большинство команд выполняется за один такт, максимум — два. Если говорить совсем грубо, то даже ATMega328 в Arduino условно в 16-раз мощнее HT1130, хотя это совсем некорректное сравнение.

Длина машинного слова HT1130 — 4 бита, что отсылает нас в начало 70х годов, если мы говорим о компьютерах. Это означает, что процессор «аппаратно» мог выполнять операции только с числами от 0 до 16, хотя при программной реализации мог пересчитывать хоть 32х-битные числа. Ширина шины данных — 12 бит, что позволяло адресовать вплоть до 4Кб встроенной ROM-памяти. Кроме того, в МК было встроено 128 ячеек оперативной памяти (или 64 байта), где в00H..7FHхранились временные данные программы (например, позиция танчиков на экране) и сE0H..FFHхранился «буфер» кадра, который определял текущую на экране. Также у микроконтроллера были следующие регистры:

  1. R0-R4 — регистры общего назначения. Пары из регистров используются для адресации памяти.

  2. ACC — регистр-аккумулятор, который хранит результаты текущей операции.

  3. PC — указатель на текущую инструкцию в ROM, которую выполняет процессор.

  4. Стековый регистр — судя по всему, «невидимая» связка регистров, которую процессор использует для хранения PC при вызове функций. Ограничен максимум двумя адресами, что не даёт возможность писать программы с вложенностью более двух функций.


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

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост

Выбор 4х-битного процессора очевиден — они очень недорогие в производстве и достаточно простые. Примеры использования 4х-битных архитектур можно найти даже в советских играх: например, в игре «Волк и яйца» (клоне Nintendo Game & Watch) использовалась «микроЭВМ» КБ1013ВК1-2.
В встраиваемой и переносной электронике, 4х-битные вычислительные ядра продолжают использоваться и сейчас: в калькуляторах, в пультах для управления техникой, в часах. Связано это с простой и дешевизной подобных решений, да и если честно, реализация этих устройств была готова ещё в прошлом веке. Зачем дополнительно тратить деньги на R&D существующих решений? :)

❯ Графика


HT1130 специально разрабатывался для переносимых устройств с новомодными LCD-дисплеями. В те годы было нормой, когда на дисплейной матрице не было собственного контроллера с распространенным интерфейсом по типу 8080 или MIPI: частенько, драйвер дисплея либо выделялся в отдельный чип, либо реализовывался прямо в системе на кристалле. У Brick Game был дисплей разрешением в 10x20 пикселей, причём кастомизированный — с «захардкоженными» значками и сегментными индикаторами:

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



Работа с дисплеем была не особо сложной: один сегмент памяти был отведен специально под эдакий «фреймбуфер» — всё, что мы записывали туда, контроллер дисплея моментально отображал на нашу ЖК-матрицу. Поскольку дисплей был одноцветным, без градаций цвета, память была организована 1 бит — 1 пиксель. Работать со всем этим было как-то так:

MOV A, 0 ; Первая часть адреса (если я не напутал endianness)

MOV R1, A

MOV A, 0b0111 ; Вторая часть адреса. Не удивляйтесь, что по факту получается 224 при 128 байт ОЗУ - часть адресного пространства была как-бы зарезервирована

MOV R0, A

MOV A, 1 ; Закрасим первый пиксель в строке

MOV [R1R0], A ; И запишем это значение в ОЗУ

Частичным доказательством того, что этот чип мог использоваться в Brick Game — это то, что компания Holtek производила готовые «игры на кристалле» — вероятно, уже запрограммированные с завода HT1130 с определенными играми:

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



Примечательно, что даташит на готовые игры датируются ноябрём 1998 года, в то время как даташит на HT1130 — 1999. Если у вас появился Тетрис раньше этого времени — напишите пожалуйста в комментариях!

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост

❯ Звук


Помимо этого, чипсет имел собственный генератор звука, или как вы вероятно подумаете — «пищалку». В чип (или SDK, если честно, не особо понятно из даташита) была уже встроена звуковая библиотека — причём половину из них как раз таки для игр, что ещё раз косвенно подтверждает догадки об использовании этого чипа в «Тетрисе». Всего поддерживалось до 16 «каналов», в которых было по 3 тональности. В звуковой библиотеке содержались следующие звуки:

  • Шумы

  • Мелодии

  • Выстрелы

  • Будильники



Управлять звуковым трактом было очень просто — буквально несколькими командами на ассемблере. Команда SOUND <номер канала> выбирала один из предопределенных звуков (причем не совсем ясно, где они хранились — возможно в ROM), а команда SOUND ONE/LOOP воспроизводила его в одном из режимов — один раз или повторяющийся. SOUND OFF же выключала звук совсем. Как-то так:

play:

SOUND A

SOUND ONE

SOUND OFF

CLC ; А если нет, то снова выполняем, пока не переполнится, эта операция очищает флаг переноса

loop:

INC A ; Увеличиваем значение в аккумуляторе

JC play ; Если флаг переноса установлен, то наш "таймер" как-бы переполнился и пора снова проиграть звук

JMP loop;

Совсем немудрено, согласитесь? :)

❯ Порты ввода/вывода и кнопки


Кроме этого, HT1130 имел несколько портов ввода-вывода, которые, однако, назвать GPIO нельзя — было 12 портов для вывода, которые могли читать логический уровень (для кнопок), и 4 пина, который мог задавать логический уровень (например, управлять вибромотором или светодиодом). Настройки портов задавались с помощью флагов: можно было настроить встроенные pull-up резисторы и они могли вызывать прерывания при переходе из высокого уровня в низкий.

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



Выходной порт мог быть сконфигурирован под тип выхода — CMOS или NMOS. Работа с портами шла с помощью команд IN и OUT — как в x86, а обрабатывать их можно было как-то так:

loop: IN A,0b00110010 ; Загрузить в аккумулятор значение порта PM

AND A,0b0001 ; Отсекаем биты состояний других кнопок и проверяем, нажата ли первая кнопка?

JNZ A, btn_pressed ; Если в аккумуляторе не 0 (а значит кнопка нажата) - то переходим на другую метку

JMP loop ; Если нет - то проверяем по новой

btn_pressed:

SOUND 0

SOUND ONE ; Воспроизвести звук при нажатии


❯ Таймер


В чипсете есть встроенный таймер — ну его ж не просто так для часов использовали. :) Основная суть работы аппаратных таймеров заключается в том, что его тактирует какой-либо внешний тактовый генератор с определенным делителем, в нашем случае — от 1 до 6 относительно системного генератора частоты (т.е 1мгц) и с определенной частотой он делает инкремент внутреннего регистра. Как только регистр переполняется — он очищается и вызывается соответствующее прерывание в основном процессоре.

Это позволяет регулировать скорость работы таймера, а посчитать количество тиков в таком случае не особо сложно. Однако учтите, что чем выше делитель таймера (а значит и обратно-пропорционально снижается точность таймера) — тем реже вызываются прерывания и меньше «кушают» наше процессорное время!

❯ Можно ли написать свою программу для Тетриса?


К сожалению, написать какую-нибудь свою игру для этой консоли в домашних условиях невозможно — таких удобных инструментов для прошивки, как у AVR ещё не было. Holtek предлагала собственный SDK, в которое входила IDE, ассемблер и симулятор отладки финальной программы. Однако дабы получить настоящее «хардварное» устройство, необходимо было заказывать у компании Holtek производство кастомизированного чипа с вашей программой на борту.

Чипсет использовал настоящую масочную Read-Only Memory, которая прожигалась один раз и навсегда на заводе. Производитель электроники отсылал скомпилированную программу Holtek, а они в свою очередь производили кастомный чип с прошитой программой. Несмотря на всю простоту ассемблера и устройства в целом, самому под него ничего написать не получится — внешних шин то у него нет. :(

Однако, в наше время можно разработать и собрать «Тетрис» самому: в том числе, с цветным дисплеем и на базе гораздо более мощного железа! Тут тебе и готовые мощные микроконтроллеры, и возможность собрать приставку на базе легендарного процессора Z80, да при желании можно симулировать почти настоящий HT1130 на FPGA!

❯ Заключение


Разработка вычислительной и при этом недорогой электроники в 90-х было весьма веселым занятием. Несмотря на то, что устройства были на первый взгляд достаточно примитивными, в них всё равно крылось много разных нюансов, которые ограничивали программистов во многом.

Однако embedded-разработка тех лет была весьма интересной: когда полноценные игры вмещали в ПЗУ размером пару килобайт, на ремейки Space Invaders на современных движках весом в под сотню мегабайт смотришь с некоторой улыбкой. :)

Спасибо за наводку ресурсу retroscene:
Пост Legnahar, который один из первых опубликовал предположения насчет HT1130 и комментарию =A=L=X= под тем же постом.

Показать полностью 13
Отличная работа, все прочитано!