monobogdan

monobogdan

Топовый автор
На Пикабу
Дата рождения: 25 сентября
Dillan33 ivan1s1s user9791051
user9791051 и еще 79 донатеров

Собираем на оборудование для ремонта и девайсы

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

7 470 27 530
из 35 000 собрано осталось собрать
85К рейтинг 3150 подписчиков 0 подписок 351 пост 293 в горячем
Награды:
5 лет на Пикабу За киноманство За участие в Авторской неделеболее 1000 подписчиков Высокий разум
199
TECHNO BROTHER

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Пожалуй, все мы с вами любим диковинные гаджеты из 2000-х годов, когда производители всё ещё пытались удивить пользователя некой изюминкой. Таким необычным устройством был и предок современных планшетов — MID SmartQ V7, где за цену в 150$, производитель предлагал неплохое железо, приятный дисплей и целых три предустановленных операционных системы!

Что было «под капотом» у первых планшетов и что умел «дедушка» современного iPad с Android, Ubuntu и Windows CE «на борту» — читайте в сегодняшней подробной статье!

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

Планшеты — достаточно интересный класс устройств, который за всё время существования пережил недоступность, подъём и даже в какой-то степени забвение. Их история началась ещё в конце 80-х годов с выходом GRiDPad 1900, который представлял из себя небольшой x86-компьютер с полноценным HDD, резистивным тачскрином и MS-DOS на борту:

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Фото с сайта https://randoc.wordpress.com/

Планшет хоть и был популярен в узких кругах, но до массового рынка ему было ещё далеко — стоимость в 3 750$ была по карману далеко не каждому заинтересованному пользователю. Однако в 90-х годах концепция планшетов и приближенных к ним устройств только развивалась. Сначала вышел Apple Newton в 1993 году по цене в 990$, а в 1996 году — уже и доступный КПК Palm Pilot 1000 по 299$.

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

И хотя Pilot — это именно КПК, чаще всего их использовали для тех же целей, что и современные планшеты

Но настоящий бум случился в 2005 году, когда Nokia на LinuxWorld Summit представила принципиально новое устройство — 770 Internet Tablet. Как становится ясно из названия, этот гаджет был предназначен для серфинга в интернете, однако благодаря Linux-дистрибутиву Maemo, он мог выполнять и другие функции обычного компьютера.

Дело в том, что в отличии от той же самой Motorola, которая использовала MontaVista Linux в своих телефонах на платформе EZX, Nokia сразу позиционировала свои гаджеты как открытые и созданные специально для гиков. После выхода устройства, Nokia опубликовала SDK для портирования существующих и разработки новых программ — благодаря чему список доступного софта постоянно расширялся и даже спустя 20 лет после релиза, коммьюнити Maemo всё ещё поддерживает их!

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

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Гаджет использовал стандартный стек технологий, знакомый любому линуксоиду: X11, GTK2, D-Bus, systemd

В 2008 году Intel представляет новое семейство энергоэффективных процессоров под названием Atom, а параллельно с ними концепцию MID — Mobile Internet Device, то есть портативных компьютеров с возможностью выхода в сеть. И вот тут-то началось!

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

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Прототип MID от Intel

К 2010 году на рынке мобильных чипсетов случился бум: новые процессоры выходили буквально каждые полгода, их функционал и производительность росли обратно пропорционально цене. Чипы ОЗУ и флэш-памяти тоже стремительно дешевели, а TN-TFT дисплеи пристойного разрешения уже стоили отнюдь не как крыло от Боинга. Воспользовавшись моментом, несколько китайских компаний представили как минимум 3 модели, которые выбрались за пределы локального рынка в Китае. Одним из таких был и герой сегодняшней статьи — SmartQ V7!

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

В 2010 году успех Android всё ещё не был очевиден. Некоторые производители продолжали продвигать свои платформы (например Bada), да и для Android ещё было разработано не так много полезного софта. Поэтому когда перед инженерами встал выбор операционной системы, они долго не думали... и решили установить в одно устройство целых три ОС: Android, Ubuntu и Windows CE, а для переключения между ними написали собственный загрузчик!

О SmartQ V7 я узнал в начале этого года, когда исследовал китайские барахолки. Мне даже удалось раздобыть один экземпляр к себе в коллекцию, но из-за особенностей загрузчика (о которых мы поговорим позже), я окирпичил свой экземпляр... Но затем на мои поиски этого устройства откликнулся пользователь с 4pda под ником spbplus (его канал на Дзене) и согласился безвозмездно отправить мне гаджет, за что ему огромное спасибо!

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Полноразмерный USB 2.0, HDMI, разъем зарядки как у Nokia и ножка — неотъемлемые атрибуты гаджетов тех лет!

Давайте же по классике разберем наше устройство и узнаем, что здесь скрывается «под капотом»!

❯ Что внутри?

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

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

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

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Из-за материала плёнки, как дисплей не вытирай — всё равно будут оставаться небольшие пылинки!

Материнская плата отделена от дисплея той самой средней частью корпуса, которая крепится на 5 винтов и две клипсы. И самое забавное то, что по материалу средняя часть напоминает первые опыты в 3D-печати: всё очень примитивно и несимметрично, из-за чего плату немного перекашивает уже с завода. Под дисплеем спрятано 3 потайных винта и при их откручивании надо быть предельно осторожным: если дисплей зайдет уголком за ушко, то есть немалый шанс случайно порвать его шлейф.

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Уже виднеется обвязка процессора!

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

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

В качестве сердца устройства, здесь используется система на кристалле TeleChips TCC8902, которая состоит из одного ARM1176-ядра, работающего на частоте 800МГц, контроллера DDR2-памяти, видеоускорителя Mali-200 (в отличии от Mali-400, о существовании Mali-200 слышали единицы), а также периферийных контроллеров по типу USB, SPI, I2C, UART. Помимо этого, TCC8902 поддерживает вывод видео на множество разных источников, начиная от HDMI, заканчивая NTSC/PAL.

Выше процессора расположилась микросхема EEPROM-памяти AT88 производства Atmel. Что на ней хранится — мне неизвестно, вполне возможно что ID чипа или, что гораздо хуже, конфигурация NAND-контроллера (программаторы под эти чипы очень дорогие, а у меня «запорота» именно она).

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Столько всего в одном маленьком чипе!

Чуть правее процессора расположилось два чипа оперативной памяти производства Samsung, объёмом по 128МБ каждый. В целом, 256МБ были стандартным объёмом ОЗУ почти для всех портативных гаджетов тех лет. Даже в первом iPad был именно такой объём оперативной памяти!

Почти на самом верху платы расположился чип NAND флэш-памяти производства всё той-же Samsung, объёмом в 2ГБ. В целом, это объём характерный для MP3-плееров и совсем неясно, как на таком чипе уживаются аж три операционные системы!

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

А вот у Galaxy Tab 7.0 было аж 512МБ оперативной памяти!

Слева расположился аудиокодек Wolfson WM8987G, отвечающий за вывод и запись звука, а также усилитель для стереодинамиков. Чуть ниже расположился чип M1530DM, выполняющий роль повышающего DC-DC преобразователя для подсветки дисплея, а рядом с коннектором шлейфа дисплея расположился неопознанный контроллер питания, который также выполняет функции чарджера.

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

В качестве дисплея используется классическая 60 pin RGB матрица. Такую можно достать с многих планшетов тех лет!

Питает весь планшет литий-ионный аккумулятор с номинальным напряжением в 3.7В, что несвойственно для планшетов тех лет. Обычно ставили две последовательно соединенные банки. Интересно то, что аккумулятор до сих пор держит заряд и не вздулся — даже спустя 15 лет после выхода планшета на рынок. Достойный результат!

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Вот и весь конструктив планшета. Как известно, всё гениальное — просто. И планшет, который в отличии от конкурентов, стоил всего 150$ — это тоже своего рода достижение и шедевр технологической мысли! Ну, что у него внутри мы узнали, а как он проявлял себя на практике? Давайте включим и узнаем!

❯ Включаем...

После включения планшета, нас встречает меню загрузчика (местный аналог BIOS) аж с тремя системами на выбор. Но помимо выбора ОС, здесь есть дополнительная менюшка с настройками загрузки системы, где можно отрегулировать объём памяти для видеоускорителя (я такого вообще больше нигде не видел на мобильных устройствах).

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Однако с этим загрузчиком был определенный нюанс. Дело в том, что большинство V7'ых и V5'ых, которые можно найти сейчас на вторичке, частично окирпиченные. Из-за своеобразного механизма разметки разделов, для установки обновленных версий Android, WinCE и Linux требовалось обновление загрузчика — так называемая смена с «синего» на «фиолетовый». Однако планшет никак не был защищен от даунгрейда прошивки, что превращало его в кирпич при попытке установить старый загрузчик поверх обновленного.

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

На втором экземпляре SmartQ V7 у меня грузился только Android, остальные две системы не работали, но подготовка флэшки с обновленными образами WinCE и Ubuntu решила проблему (и сломала Android, а в веб-архиве архив битый). Скачать образы ОС можно здесь, для установки достаточно лишь скопировать их в корень SD-карты и включить планшет с зажатой кнопкой действия.

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

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

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Как сюда пропатчить KDE2?

При разработке девайса, SmartQ явно оглядывалась на идейного вдохновителя — Nokia 770 Internet Tablet. Многие элементы интерфейса повторяют Maemo, но при этом, как и в прародителе, пользователь никак не ограничен в модификации своего собственного устройства. Прямо из менюшки можно открыть терминал, запатчить sources.list и накатить deb-пакеты из репозитория с помощью apt.

Но если пользователь был новичком, он мог поставить пакеты с помощью GUI-программы. Не Ubuntu Store, но тоже ничего.

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

По строке Hardware в ядре, мы сразу видим куда идут корни устройства — к референсной плате Telechips!

Впрочем, несмотря на явно гиковское направление данного гаджета, он вполне подходил и рядовому пользователю. Из коробки были доступны самые разные программы, включая просмотр документов (для чтения книг), текстовый редактор и медиаплеер VLC. Путём установки устройства на ножку и подключения хаба в полноценный USB 2.0-разъём, можно было получить почти полноценный самостоятельный компьютер, а если подключить его к телевизору с помощью HDMI — так вообще медиацентр с выходным разрешением в 1080p!

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Для подключения к сети, в планшете есть Wi-Fi. Однако если возможности подключится к точке доступа не было, к планшету можно было подключить самый обычный 3G-модем и работал он не только в Linux, но и Android! Правда, аккумулятор в таком случае высаживался ещё быстрее!

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Ну и куда-же без браузера! В качестве основного здесь используется Midori на базе движка WebKit. Но несмотря на то, что я успешно подключился к сети, мне не удалось открыть ни Linux.org.ru, ни OpenNet — сайт, который открывает даже PocketIE. К сожалению, сборок Chromium под ARMv6 в те годы не было, а FireFox будет слишком медленным, так что наш максимум — это Dillo.

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Как перестать намеренно убирать TLS 1.2 — так это "безопасность", а как показывать заглушки доменов - так это хоть на IE 1.0!

Далее я загрузился во вторую из трёх доступных систем — Windows CE. И вот здесь картина была менее радужной, поскольку порт WinCE на Evaluation-board был ну очень кривым. Например, при переключении режима USB из Client в Host — планшет зависал, а тачскрин работал некорректно и откалибровать его возможности не было из-за кривой реализации драйвера (он эмулирует мышь, а не реализует стилус, как должно быть).

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Но к теме Windows CE на планшетах мы обязательно с вами вернемся немного позже, ведь помимо SmartQ V7, был ещё один планшет с возможностью загрузки нескольких ОС. И имя ему — ePad Zenithink ZT-180!

❯ Заключение

Вот такая статья про интересный гаджет из далекого 2010 года у нас с вами получилась. И хотя на первый взгляд кажется, что установка сразу 3-х ОС — странное решение, однако в годы когда на рынке мобильных систем ещё не было однозначного лидера — это было логично, ведь производитель предоставлял пользователю полную свободу действий над своим устройством.

Если вы хотите поддержать блог материально, то это можно сделать используя форму ниже. всем большое спасибо!

А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А ролики (не всегда дублирующие статьи) можно найти на моём YouTube канале.

Как вам SmartQ V7?
Всего голосов:

Очень важно! Разыскиваются девайсы для будущих статей!

Друзья! Я ищу подделки на брендовые смартфоны 2009-2015 года выпуска. Многие из них работают на весьма интересном железе и об их моддинге я бы мог сделать интересный контент. Особо разыскиваются подделки Apple iPhone и HTC (по типу HD2 и Touch Diamond 2) на Windows Mobile и Android, а также Samsung Galaxy. Также представляют моддерский интерес первые смартфоны Xiaomi из серии Mi, Meizu (ещё на Exynos) и телефоны Motorola на Linux (например, EM30, RAZR V8, ROKR Z6, ROKR E2, ROKR E5, ZINE ZN5, о которых я хотел бы подготовить отдельные статью и видео, поскольку они работали на очень мощных для своих лет процессорах, поддавались серьезному моддингу и были способны запустить даже Quake.

Большое спасибо читателям и зрителям за подгоны, без вас контент бы не выходил! Связаться со мной можно в тг monobogdan.

Необычный гиковский девайс: как китайский стартап сделал планшет с тремя ОС одновременно Опрос, Гаджеты, Покупка, Планшет, Android, Linux, Unix, Моддинг, Своими руками, Ретроспектива, Обзор, Apple, Длиннопост

Подготовлено при поддержке @Timeweb.Cloud

Показать полностью 24 1
54
TECHNO BROTHER

Nokia 8800 Arte и Asphalt Urban GT 3

На OLED-дисплее игра выглядит просто потрясающе. Подарок от подписчика @kievrr

Nokia 8800 Arte и Asphalt Urban GT 3 Опрос, Гаджеты, Телефон, Nokia, Ностальгия, Oled
?
Всего голосов:
Показать полностью 1 1
678
TECHNO BROTHER

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

Сегодня компьютером на x86-совместимом процессоре едва ли можно кого-то удивить с гиковской точки зрения. Другое дело - обучающий ноутбук для детей, который работает на интересном и необычном ARM-процессоре от небезызвестной компании VIA. И хотя для запуска произвольных программ его необязательно было хакать - всем гикам известно, надо было ставить Linux!

К чему приводит давняя детская мечта об обучающем ноутбуке, что скрывается внутри устройства за 500 рублей и как на всё это накатить Linux с дуалбутом в родную систему - читайте в сегодняшней подробной статье!

❯ Предисловие

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

В те годы, даже в моём провинциальном Ейске уже можно было найти за бесценок списанный с госсектора компьютер на условном 486'ом или даже Pentium MMX. Однако у моих родителей таких знакомств не было, да и друзей с личными ПК — тоже. Даже с популярными в те годы «Денди-ноутбуками» я познакомился лишь пару лет назад, несмотря на то, что аппаратный клон NES стал моей основной игровой платформой детства.

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

О нём я тоже писал статью. Довольно интересный гаджет, храню его в своей коллекции.

В те времена, зажиточные семьи часто покупали своим детям так называемые детские обучающие компьютеры, которые представляли из себя ничто иное, как «Brick Game» с клавиатурой и несколькими обучающими играми/программами. Примитивность и одновременная гениальность этих устройств зашкаливала: тайваньские инженеры умудрились сделать достаточно многофункциональную машину на простейшем микроконтроллере из 90-х — по типу тех, что использовались в «Тетрисе»: 4-битный процессор на 1МГц, система команд напоминающая 8051 с отдельными инструкциями для управления звукогенератором, встроенный контроллер ЖК-дисплея, 4Кб ROM-памяти и 64 байта оперативной - в общем, это маленькое инженерное чудо не могло не привлекать к себе внимание детей с гиковскими наклонностями!

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

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

К 2010 году, в Китае и Тайване случился бум мощных и недорогих систем на кристалле. Буквально каждые полгода выходили новые чипы, которые совмещали в одном корпусе практически весь компьютер: от центрального процессора, до 3D-видеоускорителя и всё это буквально за пару долларов. Среди популярных моделей вспоминаются MIPS-чипсеты от Ingenic (использовались в плеерах и игровых консолях Dingoo и Ritmix) и ARM-чипсеты от InfoTMIC, TeleChips, Rockchip (использовались в первых Android-планшетах за 100-150$, которые в те годы назывались MID). Добавьте к этому резкое удешевление NAND-памяти объёмом в 2-4ГБ и оперативной памяти типа SDRAM/DDR1 - очевидно, что предприимчивые китайские компании захотят собрать что-нибудь массовое и при этом недорогое!

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

Планшет с процессором в слоте DDR2-SODIMM - это самое диковинное, что вы сегодня видели :)

На волне популярности нетбуков, а конкретно — свежего Asus EeePC 700, некий китайский ODM-производитель разработал несколько очень дешевых платформ для ноутбуков, которые между собой были похожи как две капли воды, но отличались процессорами. Больше всего устройств использовало чипы разработки WonderMedia, но также встречались гаджеты на процессорах Anyka и даже Ingenic. И цена таких ноутбуков была просто невероятной: от 50$ до 100$ за штучку. Полноценный ноутбук с RJ-45, Wi-Fi модулем, 2-4ГБ встроенной памяти и лицензионной Windows всего за 2.000 рублей по тому курсу... это было что-то невероятное!

В России такие ноутбуки тоже продавались. В основном их закупали предприимчивые граждане с Таобао/Алика и затем торговали ими в павильоне на рынке или в переходе. Но были также и небольшие официальные поставки, среди которых затесался герой нашей сегодняшней статьи — некий «Бам-Бук», который стоил аж 6.500 рублей в 2010 году (~210$ по тому курсу)!

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

Будучи фанатом портативных гаджетов на необычных процессорах, я разместил пост о поиске подобных ноутбуков на Хабре, Пикабу и 4pda. И год спустя, Toshan с 4pda предложил мне купить тот самый «Бам-Бук» за символические 500 рублей... а мы ведь помним, что такое несбывшиеся детские мечты!

❯ Что внутри?

Ноутбук приехал в целостности и сохранности, однако Антон сразу предупредил о том, что у устройства не работает часть клавиш на клавиатуре, а также тачпад. После включения «БамБука», меня встретил рабочий стол Windows CE, но системой едва ли можно было пользоваться без клавиатуры.

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

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

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

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

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

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

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

На плате устройства и тут и там были видны следы неотмытого флюса. Все DIP-элементы (разъёмы), а также динамики паялись вручную. Судя по маске, в плате используется не более 5-6 слоев — что очень и очень мало для ноутбука... но в чём секрет?

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

Переворачиваем плату устройства и всё становится предельно ясно! Дело в том, что процессор, ОЗУ и Flash-память распаяны на отдельной плате, называемой System on Module (SoM), которая припаяна к основной методом поверхностного монтажа. Такие платы служат для быстрой разработки и прототипирования устройств в условиях ограниченного техпроцесса и бюджета — по сути, на хост-плате разводят лишь питание и периферию, а используют их везде: начиная от ЧПУ-станков, заканчивая кассовыми аппаратами!

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

В качестве сердца устройства используется система на кристалле WonderMedia WM8505, также известная как VIA VT8505. В её основе лежит ARMv5-совместимое ядро 926EJ-S на частоте 300МГц с 16Кб кэша, кастомный 2D GPU собственной разработки VIA, контроллер DDR2-памяти, а также большое количество самой разной периферии: от шин по типу SPI, I2C и UART, до SD и USB. И всё это в миниатюрном чипе за несколько долларов!

Снизу расположилась одна банка оперативной памяти типа DDR2 объёмом в 128МБ, а справа — микросхема SPI-флэш памяти, где хранится загрузчик U-Boot (BIOS) устройства.

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

Многим читателям корпорация VIA знакома как производитель чипсетов, аудио-кодеков и даже x86-процессоров... кто бы мог подумать, что они будут делать и ARM-чипсеты?

Немного выше процессора расположилась микросхема NAND-памяти производства Samsung. И как мы с вами видим по характерным потертостям и следам флюса - скорее всего этот чип сдули с MP4-плеера, который когда-то сдали в утиль. В Китае эти чипы памяти продают за бесценок сразу с частями платы устройств - их даже не всегда выпаивают!

Чуть выше SoM можно обнаружить 4 пина под колодку — это диагностический UART-разъём, который можно использовать для восстановления устройства при окирпичивании.

С левой части платы расположился USB-хаб AU6256, а рядом с ним — микроконтроллер производства Holtek (и тут процессор от «Тетриса»!) в весьма необычном корпусе. Скорее всего, он выполняет функции SMC и контроллера клавиатуры одновременно — эдакий мультиконтроллер «на коленке»!

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

С правой стороны платы у нас расположилась схема питания на основе чарджера SUN4001S, понижающего DC-DC преобразователя APW7145 (основная шина питания) и LDO SY8088, формирующий напряжение 3.3В. Немного правее расположился аудиокодек Wolfson WM1613G - чаще в таких ноутбуках можно найти что-то от самой VIA!

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

И... это всё! Вся схема ноутбука настолько простая и гениальная, что буквально состоит из SoM, микроконтроллера, USB-хаба, аудиокодека и простейших питальников...

❯ Включаем...

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

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

Помимо клавиатуры, мне не удалось отремонтировать и тачпад. Не знаю, что с ним делали, но даже GPIO-кнопки мыши не работают.

С завода здесь стоит Windows CE 6.0 с различным обучающим софтом для детей, но прошлый хозяин накатил сюда универсальную кастомную прошивку для устройств на WM8505 от PC_USER. Для верности я решил переустановить образ системы (благо он сохранился здесь): для этого достаточно лишь отформатировать SD-карту в FAT и скопировать папку script из архива в корень карты памяти. Поскольку в устройстве используется U-Boot, обновление прошивки реализовано за счёт использования autoscript'ов, которые заставляют загрузчик грузить ядро Linux или Windows CE с карты памяти и уже из юзерспейса копировать себя в NAND. Путем небольших манипуляций с скриптами, можно реализовать полноценный дуалбут или даже триплбут!

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

После установки системы, нас встречает такой родной рабочий стол... и вендор устройства сделал всё, чтобы опыт использования такого ноутбука был максимально приближен к полноценному компьютеру. Тут есть большое количество самого разного софта: начиная от офиса, заканчивая играми. И даже есть полноценный Windows Media Player вместе с TCPMP для поддержки YouTube:

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

Другие ревизии этого ноутбука с Wi-Fi и Ethernet могли также свободно сёрфить интернет. Из коробки был предустановлен пока ещё не совсем бесполезный PocketIE, а с помощью небольших манипуляций можно было даже установить Opera Mobile на актуальном в те годы движке Presto:

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

OpenNet откроет — и этого хватит!

Помимо этого, в устройстве был предустановлен клиент ещё популярного тогда Skype. Уж не знаю как он работал на Windows CE, но учитывая что нормальный порт на Android делали года три — возможно что определенные нюансы точно в нём были.

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

Касательно офиса — здесь было всё необходимое: начиная от клиента почты, заканчивая эдакой вариацией на тему Excel. В целом, такие ноутбуки чаще всего и покупали для использования в качестве печатных машинок, SSH-терминалов (есть порт Putty на WinCE) и других подобных целей. Интересно что для WinCE есть частичный порт MS Office, причём даже с PowerPoint'ом, но в этой прошивке его почему-то нет.

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

Ну и куда-же без игр! Под ARM WinCE было достаточно много портов различной классики: начиная от эмуляторов игровых консолей, заканчивая казуалками по типу Zuma от Astraware. Однако большинство игр и программ использовали библиотеку gx.dll, которая давала прямой доступ к фреймбуферу устройства и была доступна только на коммуникаторах и КПК с PocketPC/WinMobile на борту. Энтузиаст из Германии даже разработал свою реализацию gx через GDI (заведомо более медленную), но большинство игр работает не совсем корректно, а эмуляторы по типу PocketNES банально не влезают в экран:

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

Внимательные читатели могли заметить, что в таскбаре запущено много программ, но при этом оперативной памяти в устройстве всего 128Мб и её всё ещё достаточно для запуска ещё нескольких приложений. В чём-же секрет? В том, что Windows CE потребляла памяти даже меньше, чем Win95, но при этом на ней был доступен .NET и часть прелестей WinAPI времен Windows XP. При этом над оптимизацией программ действительно заморачивались и поэтому софт не только экономен к ОЗУ, но ещё и шустро бегает на горяченном 300МГц ARMv5 процессоре!

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

Все запущенные программы в сумме занимают 30 мегабайт памяти с учетом ядра системы. Впечатляет!

❯ Ставим Linux

Эти ноутбуки появились в золотое время развития Android, когда каждый вендор чипсетов старался поддерживать все доступные на рынке операционные системы. Поскольку WonderMedia разрабатывала 8505 в том числе и для MID (планшетов), для чипсета был доступен порт Android 1.5 и исходный код ядра Linux. Имея такие вводные данные, вполне очевидно, что гики рано или поздно смогли запустить на нём какой-нибудь дистрибутив.

На WM8505 доступно два образа: с Arch и Debian Lenny. Поскольку я никогда не пользовался Арчем и всю линуксоидную жизнь я сидел либо на Debian, либо на Slackware, я решил остановиться на Дебиане. Некий добродетель выложил на archive.org уже собранное ядро + rootfs, готовое к установке: нам достаточно лишь разбить SD-карту на два раздела (первый — 32Мб, второй — остальное доступное пространство) с помощью утилиты fdisk, отформатировать первый раздел в FAT и скопировать на него папку script с ядром:

su
mkfs.fat /dev/sdb1
mkdir /mnt/wmboot
mount /dev/sdb1 /mnt/wmboot
tar -xvf ~/fatpart.tgz
sync

И отформатировать второй раздел в ext2, распаковав туда rootfs:

su
mkfs.ext2 /dev/sdb2
mkdir /mnt/wmrootfs
mount /dev/sdb2 /mnt/wmrootfs
tar -xvf ~/extpart.tgz
sync

После этого можно вставить SD-карту в ноутбук, включить его и посмотреть на надпись «Loading Windows...», которая плавно сменяется на вывод kmsg :)

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

Единственный нюанс — здесь собрана минимальная рутфс со всем необходимым софтом, включая dpkg и apt. Чтобы поставить XOrg и другие программы нужно искать свисток на чипе Realtek RT3070, либо же организовывать локальный файловый репозиторий на USB-флэшке (ведь в комплекте нет даже веб-сервера, который можно было бы развернуть на локалхосте)... но это мы с вами оставим уже для следующей статьи :)

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

В общем и целом, гиковские перспективы у таких гаджета есть. Если бы у меня было чуточку больше времени, я бы портировал в фреймбуфер эмулятор NES и SEGA, как я это делал для детского MIPS-ноутбука и мы бы с вами даже провели тесты — чьи 300МГц быстрее!

❯ Заключение

Вот такая статья об интересном детском ноутбуке у нас с вами сегодня получилось. Конечно нельзя сказать, что такой ноутбук является альтернативой старенькому ThinkPad'у с Арчем на борту, но сама концепция и понимание того, что твой гаджет работает на ARM-процессоре, как минимум достойна внимания!

А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А ролики (не всегда дублирующие статьи) можно найти на моём YouTube канале.

Как вам такой ноутбук?
Всего голосов:
Что больше всего любите в моих статьях из рубрики обзоров и моддинга ретро-гаджетов?
Всего голосов:

Очень важно! Разыскиваются девайсы для будущих статей!

Друзья! Для подготовки статей с разработкой самопальных игрушек под необычные устройства, объявляется розыск телефонов и консолей! В 2000-х годах, китайцы часто делали дешевые телефоны с игровым уклоном — обычно у них было подобие геймпада (джойстика) или хотя бы две кнопки с верхней части устройства, выполняющие функцию A/B, а также предустановлены эмуляторы NES/Sega. Фишка в том, что на таких телефонах можно выполнять нативный код и портировать на них новые эмуляторы, чем я и хочу заняться и написать об этом подробную статью и записать видео! Если у вас есть телефон подобного формата и вы готовы его задонатить или продать, пожалуйста напишите мне в Telegram (@monobogdan) или в комментарии. Также интересуют смартфоны-консоли на Android (на рынке РФ точно была Func Much-01), там будет контент чуточку другого формата :)

А также я ищу старые (2010-2014) подделки на брендовые смартфоны Samsung, Apple и т. п. Они зачастую работают на весьма интересных чипсетах и поддаются хорошему моддингу, парочку статей уже вышло, но у меня ещё есть идеи по их моддингу! Также может у кого-то остались самые первые смартфоны Xiaomi (серии Mi), Meizu (ещё на Exynos) или телефоны Motorola на Linux (например, EM30, RAZR V8, ROKR Z6, ROKR E2, ROKR E5, ZINE ZN5 и т. п., о них я хотел бы подготовить специальную статью и видео т. к. на самом деле они работали на очень мощных для своих лет процессорах, поддавались серьезному моддингу и были способны запустить даже Quake!). Всем большое спасибо за донаты!

Я купил детский ARM-ноутбук за 500 рублей, чтобы поставить на него Linux Опрос, Покупка, Ноутбук, Нетбук, Гаджеты, Linux, Windows, Wince, Via, Компьютерное железо, Ретроспектива, Моддинг, Длиннопост

Подготовлено при поддержке TimeWeb.Cloud

Показать полностью 25 2
Автомобильное сообщество

Я купил первую иномарку (почти) на свои деньги!

Очень хотелось к 24-м годам стать владельцем не только десятки, но ещё и иномарки. Изначально думал взять короллу сотку или что-то из JDM прульных (на Кубани их довольно много и кузова у них в относительно неплохом состоянии), но по итогу обратил внимание на корейцев... И что-ж, я был неправ, когда говорил мол "им никогда не достичь уровня японцев, кредитотошноты".

Я купил первую иномарку (почти) на свои деньги! Опрос, Покупка, Авто, Hyundai, Машина

Купил в долг. 150к заработал за месяц (в том числе и написания годных статей о моддинге и реверс-инжиниринге ретро-гаджетов), плюс еще 100 занял у мамы-папы и подписчицы Алисы, за что всем огромное спасибо)

?
Всего голосов:
Показать полностью 1 1
66
Автомобильное сообщество

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

Подбирал авто в бюджете до 250к на Кубани, рассчитывал найти что-то более-менее живое и перспективное для прямых рук среди японцев по типу Nissan Cube или той же самой короллы сотки... Но открываешь автотеку, а там очередной перепук купил тачку за 100, подмазал заборной краской пороги и выставил за 250.

Какой же грустный нынче рынок автомобилей Авто, Грусть, Авито, Без рейтинга, Объявление
511
TECHNO BROTHER

Пишем 3D-игру для ретро-устройств весом в 600Кб…

...которая работает на первых Android-смартфонах в мире, компьютерах из 90-х и даже Mac'ах! Часть 2.

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

Иногда у меня лежит душа просто взять и написать какую-нибудь небольшую игрушку с нуля, без использования готовых движков. В процессе разработки я ставлю перед собой интересные задачки: игра должна весить как можно меньше, работать на как можно большем числе платформ и использовать нетипичный для меня архитектурный паттерн. Недавно я начал писать ремейк классических «танчиков» и в рамках серии статей готов рассказать о всех деталях разработки трёхмерной игры с нуля в 2025 году. Если вам интересно узнать, как работают небольшие 3D-демки «под капотом» от написания фреймворка до разработки геймплея — жду вас под катом!

❯ Предисловие

Ещё в начале этого года, мне взбрело в голову проверить насколько концепция «Write once, run anywhere» правдива. Все мы знаем, что Java достаточно обширно используется в Enterprise-секторе по типу банков, Android-гаджетах в качестве языка, на котором написано около 80% системы и даже в смарт-карточках, куда входят привычные нам SIM и банковские карты.

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

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

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

В игре был мультиреднер для M3G и MascotCapsule... не хуже игр Fishlabs :))

Но затем я понял, что лишаюсь очень многих фич языка. Дело в том, что игры для Java-телефонов писались не столько на самой «джаве», сколько на её своеобразном диалекте. В мире C/C++ такой подход принято называть «C с классами», но в случае Java - подход заключался в написании большей части логики в одном-двух классах для улучшения производительности игры. Наследование, полиморфизм и абстракции на кнопочных телефонах использовать не рекомендуется. Кроме того, версия JDK в кнопочных телефонах была на уровне 1.3 — а значит, никаких дженериков и иных полезных фишек Java.

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

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

По итогу я решил сфокусироваться на относительно свежем HTC Dream — первом серийном Android-смартфоне в мире, который вышел в далёком 2008 году с Android 1.0 на борту. В нём используется уже не JVM, а своя виртуальная машина Dalvik с собственным байткодом и версией JDK — 1.5, да и процессор здесь значительно помощнее, а следовательно и куда больше возможностей для разработки!

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

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

❯ Рендер

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

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

Например, если грузить уровень «в лоб» и на каждый кубик выделять по отдельному игровому объекту, который «рисует сам себя отдельно» — мы быстро столкнемся с тем, что количество вызовов отрисовки (DIP'ов) превысит все разумные нормы. Для уровня в 16x16 блоков это уже целых 256 DIP'ов - а вкупе с другими танчиками и UI - не менее 260-270.

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

Самая базовая оптимизация в таком случае — это отсечение по пирамиде видимости (Frustum culling). Концепция простая: для отрисовки всего, что мы видим с вами на экране используется три матрицы размерности 4x4: мировая (позиция и поворот объекта в мире), вида (камера, позиция из «глаз») и проекции. При перемножении, они образуют так называемую WorldViewProjection-матрицу и если каждую вершину модели умножить на эту матрицу — то мы получаем её позицию в Clip-Space (или NDC) пространстве. Далее растеризатор берёт каждые три трансформированные вершины в качестве углов треугольника и отрисовывает их в рендертаргет - в нашем случае, это экран. Именно за счёт перспективной матрицы проекции и Z-буфера, мы с вами и получаем тот самый эффект трёхмерного пространства.

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

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

public void calculate(Matrix viewProj) {
float[] items = viewProj.Matrix;
planes[0].set(items[3] - items[0], items[7] - items[4], items[11] - items[8], items[15] - items[12]).normalize();
planes[1].set(items[3] + items[0], items[7] + items[4], items[11] + items[8], items[15] + items[12]).normalize();
planes[2].set(items[3] + items[1], items[7] + items[5], items[11] + items[9], items[15] + items[13]).normalize();
planes[3].set(items[3] - items[1], items[7] - items[5], items[11] - items[9], items[15] - items[13]).normalize();
planes[4].set(items[3] - items[2], items[7] - items[6], items[11] - items[10], items[15] - items[14]).normalize();
planes[5].set(items[3] + items[2], items[7] + items[6], items[11] + items[10], items[15] + items[14]).normalize();
}

// Allocation-less
public boolean isPointInFrustum(float x, float y, float z)
{
for(int i = 0; i < planes.length; i++)
{
Plane plane = planes[i];

if ((plane.A * x) + (plane.B * y) + (plane.C * z) + plane.D <= 0)
return false;
}

return true;
}

Далее проверить попадает ли наш кубик или танчик в кадр — дело техники. Есть два подхода: подсчитать Bounding-sphere для модели (радиус относительно самой нижней и самой верхней вершины), или Bounding-box. В самом простом случае, можно обойтись проверкой самой нижней и самой верхней точки Bounding-box'а, однако в некоторых случаях такой алгоритм может давать сбой — например если уткнутся в «стенку» носом в игре:

public boolean isMeshRendererInFrustum(MeshRenderer renderer) {
float x = renderer.Parent.Position.X;
float y = renderer.Parent.Position.Y;
float z = renderer.Parent.Position.Z;
Vector min = renderer.Mesh.BoundingMin;
Vector max = renderer.Mesh.BoundingMax;

return isPointInFrustum(x + min.X, -(y + min.Y), z + min.Z) || isPointInFrustum(x + max.X, -(y + max.Y), z + max.Z);
}

Конкретно в нашем случае, такая оптимизация помогает сэкономить около 100 DIP'ов и даёт неплохой прирост FPS. На Galaxy S3 с Mali 400MP4 мы получаем стабильные 60FPS, в то время как на Xperia Play — около 30... Что-ж, этого всё равно мало, тем более для смартфона, в котором GPU — кровный брат Xenos в Xbox 360...

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

Нарисовать 256 кубиков для GPU, даже мобильного — не проблема, особенно если они не бьют по филлрейту. Однако на классических мобильных GPU был строгий бюджет на число DIP'ов — в идеале не более 100, иначе FPS заметно просаживается даже на примитивной геометрии. Поэтому для оптимизации можно использовать технику батчинга: объединяем все кубики с одним материалом в сцене в одну большую модель и рисуем за один вызов DIPUP:

public void bake() {
int uniqueMaterials = 0;

batchList.clear();
batchRenderers.clear();
world.findComponentsOfType(BatchedMeshRenderer.class, batchRenderers);

for(int i = 0; i < batchRenderers.size(); i++) {
BatchedMeshRenderer renderer = batchRenderers.get(i);
renderer.IsTakenByBatcher = false;

if(renderer.Mesh != null && renderer.Material != null) {
if(renderer.Mesh.Buffers.length != 1)
continue; // Only simple meshes is supported now

Batch batch = meshes.get(renderer.Material);

if(batch == null)
meshes.put(renderer.Material, batch = new Batch(renderer.Material));

batch.addMesh(renderer);
}
}

for(Map.Entry<Material, Batch> materialBatch : meshes.entrySet()) {
batchList.add(new BatchHolder(materialBatch.getKey(), materialBatch.getValue()));
materialBatch.getValue().finish(); // Upload mesh to GPU
}
}

После этого, FPS поднимается до очень приятных значений - целых 45! Однако есть и обратная сторона: эта техника очень сильно бьёт не только по памяти, но и в случае динамического батчинга (танки ведь уничтожают кубики) - по процессору. Однако можно и далее оптимизировать этот алгоритм путём разбиения батчей на сетку, чтобы отсекать невидимые группы "кубиков" :)

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

Следующая тема — это материалы для поверхностей, описывающие внешний вид модели на экране. В первой статье я написал базовую систему материалов, которая оборачивала в себе набор рендерстейтов и парочку текстур: Diffuse и Detail. Но мало кто помнит, что ещё до шейдеров, в FFP был довольно мощный инструмент, именуемый комбайнерами. По сути, комбайнеры — это возможность задействования сразу нескольких текстурных юнитов для смешивания двух и более текстур за один вызов отрисовки.

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

Пример использования комбайнеров — плавное смешивание двух текстур на ландшафте с использованием маски. Эдакая вариация техники Splat mapping

Поэтому я решил написать загрузчик для материалов, описанных в простом текстовом формате по типу ini-файлов. В секции Texture описываются используемые текстуры, которые затем подгружаются из пула ресурсов, в RenderStates — напрямую указаны поля в классе Material, а в Combiners — очень-очень примитивная вариация на тему шейдеров!

[Texture]
Primary = textures/t72_diffuse.tex
Secondary = textures/brick.tex

[RenderStates]
AlphaTest = 0
AlphaTestValue = 1

DepthWrite = 1
DepthTest = 1
AlphaBlend = 0
Fog = 1
Unlit = 1

[Combiners]
Sample Primary
Interpolate Secondary 0.3
MultiplyColor Primary

Изначально я хотел сделать чтобы материалы описывали эдакий набор инструкций как «шейдеры» в Quake 3. Однако учитывая отсутствие лямбд в Java 1.5, реализация на интерфейсах (и тем более на рефлексии) не впечатлила своей производительностью и я решил сделать «программируемыми» только сами комбайнеры. Суть простая: отдельные псевдо-шейдеры реализуют интерфейс FixedFunctionShader и в теле метода onApply применяют необходимые операции над комбайнерами. При этом строго запрещается менять стейт самого графического API кроме биндинга текстур:

static class Sample implements BaseGraphics.FixedFunctionShader {

@override
public void onApply(Material material, int combiner, float[] params) {
if(params.length != 1)
throw new ShaderException(this, material, params, "Expected 1 argument");

int texId = (int)params[0];
Texture2D tex = material.Textures[texId];

if(tex == null)
throw new ShaderException(this, material, params, "Texture " + texId + " was null");

tex.bind();

glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_TEXTURE0 + combiner);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_TEXTURE0 + combiner);

glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA);
}
}

Затем при вызове отрисовки модели, рендерер выполняет «инструкции» для таких комбайнеров по одному и если нужно — откатывается до простой «однотекстурной» версии (драйвер GLES на Mali-400 и VideoCore IV не поддерживает комбайнеры, несмотря на то, что спецификация требует их поддержки). Получается довольно шустро:

if(GPUClass.QualityLevel >= com.monobogdan.engine.GPUClass.QUALITY_LEVEL_NORMAL) {
for (int i = 0; i < Material.COMBINER_STAGE_COUNT; i++) {
// Reset combiner state
glActiveTexture(GL_TEXTURE0 + i);
glDisable(GL_TEXTURE_2D);
}

for (int i = 0; i < material.Shaders.length; i++) {
Material.ShaderInstance instance = material.Shaders[i];

glActiveTexture(GL_TEXTURE0 + i);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
glEnable(GL_TEXTURE_2D);
instance.Shader.onApply(material, i, instance.Params);
}
} else {
// Single texture fallback for very slow GPU's
glActiveTexture(GL_TEXTURE0);
setState(GL_TEXTURE_2D, material.Textures[0] != null);
material.Textures[0].bind();
}

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

Наполовину кирпичный танк — видели ли вы когда-нибудь такой камуфляж? :)

Следующая тема — рендеринг текста. В более ранних статьях я обычно не парился над демками и просто рисовал текст нативными средствами системы в текстуру, а затем рисовал полноэкранный квад. Такая методика работает шустро на смартфонах, но очень тормозная на ПК и более того, такая текстура занимает слишком много VRAM! Однако чаще всего я использую так называемые битмапные шрифты, которые состоят из атласа — текстуры с «запеченными» буквами и информации о том, где какой символ в ней находится. Для генерации таких шрифтов я использую утилиту BMFont, а сам код рендеринга получается очень простым:

public void drawString(BitmapFont font, Vector color, float x, float y, String str) {
if(font == null)
throw new NullPointerException("font was null");

if(str == null)
return;

int sz = font.Size / 2;

for(int i = 0; i < str.length(); i++) {
char chr = str.charAt(i);

if(chr == ' ')
x += sz;
else {
BitmapFont.CharacterInfo chrInfo = font.getCharacter(chr);
drawImage(font.Pages[chrInfo.Page], x, y + chrInfo.YOffset, chrInfo.X, chrInfo.Y, chrInfo.Width, chrInfo.Height, chrInfo.Width, chrInfo.Height, color);
x += chrInfo.Width;
}
}
}

И результат - весьма симпатичным:

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

В целом, далее особо оптимизировать и нечего для рендерера. Инстансинга в FFP нет, шейдеров — тоже, а рендер идентичный и на Android, и на ПК. Поэтому имеем что имеем!

❯ Аллокации

Однако когда я начал отлаживать игру на смартфонах, я заметил резкие просадки кадров и абсолютно нестабильный FPS. При этом характер лагов был константный: раз в 2-3 секунды просадка в 20 кадров. Заглянув в logcat, я обнаружил что Dalvik постоянно вызывает GC (сборщик мусора) и блокирует все потоки на невероятные 16мс — даже для простейших объектов в «куче»! В зависимости от устройства, Dalvik выделяет от 8 до 32Мб памяти для каждого приложения - что очень немного!

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

В первой статье я рассказывал о том, что большинство объектов у меня мутабельные и предполагают аллокацию не в update/draw, а в конструкторе компонента. Это касается векторов, матриц и иных примитивных классов для различных расчетов — ведь в отличии от .NET, в Java нет Value-типов, которые можно выделить на стеке, кроме примитивов. Например, если в C# написать такой код для сложения двух векторов:

struct Vector3 {
public float X, Y, Z;

public Vector3(float x, float y, float z)
{
X = x;
Y = y;
Z = z;
}

public static Vector3 operator +(Vector3 a, Vector3 b)
{
return new Vector3(a.X + b.X, a.Y + b.y, a.Z + b.z);
}
}

...

Transform.Position += Velocity;

То из-за того, что Vector3 — простая структура без ссылок на управляемые объекты, которая не требует контроля от GC, рантайм .NET выделит её на стеке, а не в куче и автоматически удалит при выходе из скоупа метода, где она использовалась. Если попытаться сделать такое в Java:

public static Vector3 add(Vector3 a, Vector3 b)
{
return new Vector3(a.X + b.X, a.Y + b.y, a.Z + b.z);
}

...

transform.position = Vector3.add(transform.position, velocity);

То мы получим аллокацию для каждого объекта, вызывающий этот участок кода на каждый кадр. И когда придёт время вызывать GC — он обязательно тормознет игру и вызовет огромные фризы, прямо как в Minecraft на ПК. Главный нюанс здесь в том, что Dalvik оптимизирован под минимальное потребление памяти и поэтому начинает слишком часто вызывать GC, тормозя работу игры. В смартфонах с большим объёмом ОЗУ (хотя-бы 1Гб) таких проблем уже нет.

Но как я уже и сказал выше — мои игровые объекты и компоненты написаны так, чтобы не нагружать ни GC, ни кучу, но сборщик мусора всё равно продолжает тормозить игру, а значит нужно максимально экономить аллокации. Начав профайлить код, я обнаружил что огромное число аллокаций приходится на... итераторы! Да-да, та же самая проблема, что и в примере с векторами: даже несмотря на крошечный вес в памяти, итерации в каждом кадре засоряют хип и по итогу вызывают GC. Решение: перевести все индексированные списки на классический for:

for(int i = 0; i < GameObjects.size(); i++) {
GameObjects.get(i).onUpdate();
}

// Second pass for late updates
for(int i = 0; i < GameObjects.size(); i++)
GameObjects.get(i).onLateUpdate();

И после этого, частота вызова GC наконец-то стабилизировалась!

❯ Ввод

Отдельный вопрос — это грамотная обработка ввода. Хочется чтобы наша игра поддерживала не только клавиатуру, но и геймпады, а на смартфонах — ещё и виртуальные джойстики. Чтобы не размазывать подсистему ввода в игре на 150 источников как в Unity, есть смысл её абстрагировать на некий виртуальный геймпад с необходимыми для игры кнопками: в нашем случае это стрелки и кнопка стрельбы.

Затем необходимо замаппить физические кнопки на наш виртуальный геймпад. Для этого, на смартфонах я сделал таблицу с маппингом, которая подходит для большинства игровых гаджетов: Xperia Play, игровых консолей на Android'е из 2012-го и даже смартфонов с аппаратными QWERTY-клавиатурами. И если захочется добавить возможность переназначения кнопок — это тоже не станет проблемой!

private static int[] xperiaPlayMapping = {
KeyEvent.KEYCODE_DPAD_UP, KeyEvent.KEYCODE_DPAD_DOWN, KeyEvent.KEYCODE_DPAD_LEFT, KeyEvent.KEYCODE_DPAD_RIGHT, KeyEvent.KEYCODE_DPAD_CENTER,
KeyEvent.KEYCODE_BACK, KeyEvent.KEYCODE_BUTTON_X, KeyEvent.KEYCODE_BUTTON_Y, KeyEvent.KEYCODE_BUTTON_R1, KeyEvent.KEYCODE_BUTTON_L1
};

private static int[] genericQWERTYMapping = {
KeyEvent.KEYCODE_A, KeyEvent.KEYCODE_D, KeyEvent.KEYCODE_W, KeyEvent.KEYCODE_S, KeyEvent.KEYCODE_ENTER, KeyEvent.KEYCODE_SPACE, KeyEvent.KEYCODE_J, KeyEvent.KEYCODE_K,
KeyEvent.KEYCODE_Q, KeyEvent.KEYCODE_E
};

public static int[][] ConversionTable = {
xperiaPlayMapping,
genericQWERTYMapping
};

...

private int resolveGamePadTranslationTable(int keyCode) {
for(int i = 0; i < GamePadKeyTable.ConversionTable.length; i++) {
int[] keys = GamePadKeyTable.ConversionTable[i];

for(int j = 0; j < keys.length; j++) {
if(keyCode == keys[j])
return j;
}
}

return -1; // Not resolved
}

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
int gamePadKey = resolveGamePadTranslationTable(keyCode);
handleKeyEvent(event.getScanCode(), Input.STATE_RELEASED);

if(gamePadKey != -1)
handleGamePadEvent(gamePadKey, Input.STATE_RELEASED);

return true;
}

По итогу, у нас есть унифицированное управление на ПК и смартфонах, покататься в нашей демке можно даже на легендарной Xperia Play!

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

Для смартфонов без аппаратной клавиатуры, виртуальный геймпад пишется буквально за 5 минут. Главное — использовать относительные нормализованные координаты для адаптивности и учитывать Aspect Ratio устройства, который может быть разным:

public void drawUI() {
VerticalInput = 0;
HorizontalInput = 0;

float scaled = UI_BASE_SIZE * Scale;
float baseY = 1.0f - (scaled * 3); // 0.7f is base coefficient for 1.0f scaling

if(game.Runtime.UI.imageButton(arrowUp, scaled, baseY, scaled, scaled, true))
VerticalInput = 1;

if(game.Runtime.UI.imageButton(arrowDown, scaled, baseY + (scaled * 2), scaled, scaled, true))
VerticalInput = -1;

if(game.Runtime.UI.imageButton(arrowLeft, 0.0f, baseY + scaled, scaled, scaled, true))
HorizontalInput = -1;

if(game.Runtime.UI.imageButton(arrowRight, scaled * 2, baseY + scaled, scaled, scaled, true))
HorizontalInput = 1;
}

❯ Тестируем игру

Пришло время протестировать то, что мы успели с вами сделать за неделю. И сегодня в тестах участвует сразу несколько машинок: Asus eeePC 4G в роли «компьютера из 90-х», Sony Ericsson Xperia Play, iPhone 4S с нюансом и Samsung Galaxy Y Pro. Все гаджеты по своему хороши, имеют разные GPU и всех их объединяет статус легендарных.

Начинаем с SE Xperia Play 2011 года выпуска, который изначально позиционировался как игровой смартфон. По сути, Xperia Play - чуточку переделанный Xperia Pro, где QWERTY-клавиатуру заменили на геймпад, при этом аппаратная платформа почти всех "сонериков" 2011 года идентичная: чипсет Qualcomm MSM8250 с ARMv7-совместимым ядром Scorpio на частоте 1ГГц и GPU Adreno 205 (ребрендинг ATI Imageon Z430, на архитектуре Xenos), 512Мб ОЗУ типа DDR1 и 512Мб флэш-памяти. С смартфонами в те годы была такая же ситуация, как и с компьютерами в начале нулевых: прогресс был слишком быстрым и уже в 2012 году, Xperia Play не тянул многие свежие игры из-за слабенького процессора и GPU!
Но в нашем случае, он показывает себя неплохо и стабильно тянет рендеринг уровня и танчика в 40-45 FPS... В играх на Unity3D, Adreno 205 таким результатом похвастаться не мог.

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

Переходим к iPhone 4S, который, как я уже сказал, с некоторым нюансом: это китайская реплика на Android. При этом довольно интересен тот факт, что у копии очень крутая IPS-матрица почти такого же разрешения (800x480 против 960x640), как и на оригинальном айфоне. Работает "клон" на базе чипсета MediaTek MT6515 2012 года выпуска с одним ядром Cortex-A9, работающим на частоте 1ГГц и GPU PowerVR SGX531 Ultra. Также в смартфоне установлено 256Мб оперативной памяти и 256Мб постоянной - в общем, типичный бюджетник тех лет. GPU от PowerVR - главное достоинство этого смартфона в плане гейминга, наша демка спокойно выдаёт 50-60 стабильных FPS. Я считаю что это прекрасный результат.

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

ERTY-клавиатурой, но и очень диковинным (и родственным Raspberry Pi) процессором Broadcom BCM21553 с одним ARMv6-совместимым ядром на частоте 832МГц и крайне необычным GPU собственной разработки VideoCore IV. Дело в том, что GPU в чипсетах Broadcom выполняет роль системного монитора и по архитектуре заметно отличается от классических видеоускорителей. По сути, это DSP с очень крутым векторным сопроцессором из-за чего его отчасти можно назвать софтрендером. Однако ранние драйвера для этого GPU были очень сырыми из-за чего большинство игр выдавали артефакты или работали очень медленно. Наша игрушка - не исключение, всего лишь 20 FPS при 240x320...

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

Переходим к довольно необычной машинке: Asus eeePC 4G. Первые модели легендарной линейки нетбуков отличались очень низкой ценой, довольно слабым и прожорливым процессором Celeron M 353 на архитектуре Dothan (прямой поток Pentium III Tualatin) и частоте 900МГц, встроенной графикой Intel GMA900 с поддержкой пиксельных шейдеров 2.0 и довольно небольшим объёмом ОЗУ в 512Мб типа DDR2. Здесь я проводил тесты на JRE 1.7 - и получил почти 60 FPS... за вычетом того, что раз в 3-4 секунды я получаю микрофризы и нагрузку на процессор в 80%. Однако сама JRE здесь не причём: такая высокая нагрузка связана с тем, что у GPU нет аппаратного вершинного конвейера и поэтому вся трансформация геометрии происходит на процессоре. Такой вот нюанс:

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

❯ Заключение

Вот такая статья о разработке 3D-игры с нуля у нас с вами получилась. Прошлые статьи в этой рубрике я писал в стиле туториала, но в этой я решил рассмотреть конкретные кейсы и архитектурные решения. И может она не настолько простая и понятная, как статья про разработку «самолетиков» или Top-Down стрелялки по зомби, думаю своего читателя она точно нашла! Если вам интересно, с кодом можно ознакомиться на моём Github.

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А ролики (не всегда дублирующие статьи) можно найти на моём YouTube канале.

Что думаете о таком формате статей?
Всего голосов:

Очень важно! Разыскиваются девайсы для будущих статей!

Друзья! Для подготовки статей с разработкой самопальных игрушек под необычные устройства, объявляется розыск телефонов и консолей! В 2000-х годах, китайцы часто делали дешевые телефоны с игровым уклоном — обычно у них было подобие геймпада (джойстика) или хотя бы две кнопки с верхней части устройства, выполняющие функцию A/B, а также предустановлены эмуляторы NES/Sega. Фишка в том, что на таких телефонах можно выполнять нативный код и портировать на них новые эмуляторы, чем я и хочу заняться и написать об этом подробную статью и записать видео! Если у вас есть телефон подобного формата и вы готовы его задонатить или продать, пожалуйста напишите мне в Telegram (@monobogdan) или в комментарии. Также интересуют смартфоны-консоли на Android (на рынке РФ точно была Func Much-01), там будет контент чуточку другого формата :)

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

А также я ищу старые (2010-2014) подделки на брендовые смартфоны Samsung, Apple и т. п. Они зачастую работают на весьма интересных чипсетах и поддаются хорошему моддингу, парочку статей уже вышло, но у меня ещё есть идеи по их моддингу! Также может у кого-то остались самые первые смартфоны Xiaomi (серии Mi), Meizu (ещё на Exynos) или телефоны Motorola на Linux (например, EM30, RAZR V8, ROKR Z6, ROKR E2, ROKR E5, ZINE ZN5 и т. п., о них я хотел бы подготовить специальную статью и видео т. к. на самом деле они работали на очень мощных для своих лет процессорах, поддавались серьезному моддингу и были способны запустить даже Quake!). Всем большое спасибо за донаты!

Пишем 3D-игру для ретро-устройств весом в 600Кб… Опрос, Гаджеты, Смартфон, Программирование, Java, 3D, Gamedev, Opengl, Android, Android разработка, Гифка, Длиннопост

Статья написана при поддержке Таймвеб КЛАУД.

Показать полностью 22 1
55
TECHNO BROTHER

Ищу смартфон для будущего контента!

Привет, Пикабу! Ищу один интересный ретро-смартфончик с корнями из Китая. В 2009-2011 году, еще до массового развития Android, китайцы делали подделки современных на тот момент смартфонов с процессорами HiSilicon K3v2 (зачастую в менюшке их маскировали под Marvell PXA312 или MSM7200A). В основном это были клоны HTC HD2, HTC Touch Diamond 2, iPhone 3GS и некоторых моторолл, но вариации бывали самые разные. Ключевая фича - дуалбут в Android и WM с завода. Если у вас есть такой китаец - напишите пожалуйста в комментах. Готов принять в дар или купить, хочу сделать видеоролик и написать статью ;)

Если вдруг не знаете о моем блоге, то вот пример статьи: Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором

Ищу смартфон для будущего контента! Телефон, Смартфон, Розыск, Поиск, Девайс, Гаджеты, Китай, Подделка, Реплики, Китайцы, Мобильные телефоны, Длиннопост
Ищу смартфон для будущего контента! Телефон, Смартфон, Розыск, Поиск, Девайс, Гаджеты, Китай, Подделка, Реплики, Китайцы, Мобильные телефоны, Длиннопост
Ищу смартфон для будущего контента! Телефон, Смартфон, Розыск, Поиск, Девайс, Гаджеты, Китай, Подделка, Реплики, Китайцы, Мобильные телефоны, Длиннопост
Показать полностью 3
890
TECHNO BROTHER

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

Пару лет назад я начал коллекционировать интересные гаджеты, в форм-факторе ноутбука. Особое место в моей коллекции занимают устройства на диковинных процессорных архитектурах — и нет, речь даже не об ARM, а о куда более редких MIPS и SH4. Недавно я исследовал китайский аналог Авито и наткнулся на очень интересный предсерийный прототип ноутбука Fujitsu Intertop CX300 всего за 3.000 рублей — и в сегодняшней ретроспективной статье, мы с вами посмотрим на это чудо японской инженерной мысли поподробнее!

❯ Предисловие

Давным-давно, в конце 80-х годов, на рынке появился новый класс портативных устройств — карманные персональные компьютеры, также известные как HPC или Palmtop. До привычных нам КПК с резистивным тачскрином и Windows Mobile на борту оставалось ещё добрых лет 10, а первые палмтопы представляли из себя ни что иное как маленькие, но вполне полнофункциональные ноутбуки!

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

Фото с страницы о HP 95LX в Википедии

Поскольку выбор процессоров в те годы не был особо велик, а Z80 и 6502 устанавливать в портативные компьютеры было моветоном, нередко эти гаджеты были частично IBM-PC совместимыми, использовали производные от x86 процессоры (8088/80186) и более того, работали на специализированных версиях DOS, а порой имели и свои собственные UI-оболочки!

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

Фото Пикабушника @dlinyj

Однако эти гаджеты относились исключительно к бизнес-классу, стоили очень дорого и далеко не всегда позволяли расширить свой функционал за счет установки стороннего софта. Но время шло, вот уже и 486'ой стал одним из самых популярных процессоров, и первый Pentium вышел на рынок, и портативные гаджеты развивались семимильными шагами. Новая операционная система Windows 95 стала очень популярной на десктопных машинах и дабы не упускать мобильный рынок, Microsoft параллельно разрабатывает и выпускает свою первую мобильную операционную систему — Windows CE.

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

В отличии от привязанной к архитектуре IBM-PC Win9x и новомодной требовательной Windows NT, WinCE предназначалась для встраиваемых устройств с ограниченными характеристиками и, что немаловажно, поддержкой eXecute In Place памяти. Минимальные системные требования были очень скромными: процессор с поддержкой MMU и архитектурой MIPS/ARM/SH4 на частоте ~32МГц, 4Мб ROM-памяти для хранения образа системы и 2Мб оперативной памяти для запуска ядра и графической оболочки. При этом оболочка практически точь в точь повторяла интерфейс десктопной Windows и была во многом совместима с ней на уровне WinAPI, что позволяло легко портировать программы с одной системы на другую.

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

Производители портативных гаджетов сразу обратили внимание на новую систему и выпустили несколько десятков интересных гаджетов. Сначала выходили модели с монохромными дисплеями — HP 300LX, Casio Cassiopeia A-10 и NEC MobilePro 200, а уже через два года, в 1998 году, на рынок вышли легендарные HP Jornada 680 и 820 с мощными процессорами на архитектуре Hitachi SH4 и очень неплохими цветными дисплеями приличного разрешения — 640x240.

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

Особенно сильно Windows CE и устройства в формате миниатюрных ноутбуков полюбили в Японии. Там выходили десятки самых разных интересных и необычных моделей: начиная от молодежных портативных коммуникаторов с ярким дизайном, заканчивая очень серьезными моделями как, например, вся линейка Fujitsu Intertop. Несколько месяцев назад я искал интересные гаджеты на онлайн-барахолке Сяньюй, китайском аналоге Авито, и мой взгляд привлек Fujitsu Intertop CX300, который висел за 320 юаней — или около 3.500 рублей. Чуток подсобрав денег, я попросил у читателя Романа помочь с перевозкой гаджета в Россию и вот, спустя месяц — легендарный гаджет у меня в руках!

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

Продавец в описании упомянул одну очень интересную деталь: дело в том, что у моего экземпляра необычный серийный номер — 0123456789, а это значит что скорее всего в моих руках оказался редчайший предсерийный прототип устройства, который когда-то стоял на выставке или презентации!

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

❯ Что внутри?

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

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

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

Но это ещё не всё: рядом со слотом для ПЗУ расположен ещё один проприетарный слот, используемый для установки дополнительной оперативной памяти. Даже в HPC 1999 года можно было прокачать память, не то что современные ноутбуки с распаянными чипами!

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

Под модулем ПЗУ скрывается сердце устройства и его главная гордость — процессор NEC VR4121. Внутри компактного чипа скрывается 64х-битное ядро MIPS R4000, работающее на частоте от 131 до 168МГц, 16Кб кэша инструкций и 8Кб данных, SDRAM-контроллер с MMU и множество разной периферии: контроллер питания, DMA, RTC, аппаратные таймеры, UART-контроллер, контроллер клавиатуры и тачскрина, АЦП и ЦАП. В общем, полноценная система на кристалле с техпроцессом в 250нм (почти как у Pentium II) — и это уже в 1998 году!

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

С обратной стороны платы расположился хаб NEC 4171A, который служит сопроцессором к VR4121. В его задачи входит работа с шиной PCMCIA, GPIO, а также простенький контроллер дисплея с фреймбуфером и аппаратным курсором.

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

Правее расположился очень большой чип ITE IT8181E. Некоторые читатели могут узнать этого производителя по мультиконтроллерам для десктопных плат, однако на данном ноутбуке именно он скорее всего выполняет роль контроллера дисплея и видеоадаптера. Дело в том, что рядом с ним расположилось ещё несколько чипов памяти EDO RAM производства Mitsubishi (такие же применялись в легендарных S3 ViRGE), которые скорее всего выполняют роль видеопамяти:

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

Внимательный читатель мог заметить следы флюса и большое количество перемычек на плате. В те годы техпроцесс для изготовления плат был ограничен и не всегда можно было уместить все линии в условные 7-8 слоев, поэтому во многих КПК (включая HP Jornada), сборщики прямо на заводе припаивали перемычки. Недостаточно было просто собрать гаджет, нужно было ещё и уметь паять на достойном уровне!

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

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

❯ Включаем

Нас встречает логотип Fujitsu, а затем окно с предложением откалибровать тачскрин и ввести информацию о владельце. Дело в том, что практически все HPC хранили пользовательские данные в оперативной памяти. Та самая CR2032 батарейка подпитывает не только RTC, но и контроллер оперативной памяти, дабы пользователь не потерял данные когда устройство разрядится или понадобится заменить аккумулятор.

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

После настройки нас встречает такой уютный и родной рабочий стол Windows, практически полностью повторяющий Win9x. Для установки программ предлагается использовать комплектный дата-кабель и программу ActiveSync, ИК-порт, либо же CF-карточки. Но вот нюанс: CF-карта то у меня есть, а вот софта под MIPS HPC в наше время почти не осталось, тем более для WinCE Professional!

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

Дело в том, что HPC с MIPS-процессорами были крайне редкими и продавались в основном на рынке Японии. В остальном мире были куда более распространены устройства с процессорами Hitach SH4 и ближе к 2000-ому году — ARM. Поэтому остаётся лишь довольствоваться тем софтом, что предустановлен в здесь из коробки.

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

Поскольку гаджет позиционировался для бизнес-пользователей, в нём предустановлено множество офисных программ: как от самой Fujitsu, так и от Microsoft. И что небезынтересно, здесь есть «младшие» версии привычных программ — PocketWord, PocketExcel, PocketAccess, PocketPowerPoint.

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

А ещё HPC могли свободно сёрфить полноценный веб 1.0 и даже чуточку веб 2.0! Во всех HPC на WinCE был предустановлен браузер PocketIE, так что если подключить CX300 к интернету через ИК-порт, то возможно даже OpenNet откроет!

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

Ну и конечно на WinCE были игры! Предустановлена всего одна — косынка, но энтузиасты портировали на HPC самые разные эмуляторы и опенсорсные игры. Но, поскольку у нас гаджет на MIPS'е, пока что остаётся играть лишь в косынку :)

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

❯ Заключение

Вот такой интересный гаджет разработала компания Fujitsu ни много, ни мало — 26 лет назад. И ведь столько лет прошло — а старичок всё ещё бодрый и даже не думает уходить на покой. Что-ж, думаю в моей коллекции крутых гаджетов прошлых лет ему будет гораздо лучше, чем в утиле!

Если вам интересна тема моддинга HPC и необычных ретро-ноутбуков, то жду от вас фидбека и в рамках одной из следующих статей, мы с вами портируем на него (а заодно и на NEC MobilePro) эмулятор IBM-PC, NES и GBA. Ну а в случае если вы хотите поддержать блог материально - ниже есть формочка, мне будет приятно (или как вариант - донат на Boosty):

А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А ролики (не всегда дублирующие статью) можно найти на моём YouTube канале.

Как вам Intertop CX300?
Всего голосов:
Делаем вторую часть с портированием эмуляторов на Intertop CX300 и MobilePro 900?
Всего голосов:

Очень важно! Разыскиваются девайсы для будущих статей!

Друзья! Для подготовки статей с разработкой самопальных игрушек под необычные устройства, объявляется розыск телефонов и консолей! В 2000-х годах, китайцы часто делали дешевые телефоны с игровым уклоном — обычно у них было подобие геймпада (джойстика) или хотя бы две кнопки с верхней части устройства, выполняющие функцию A/B, а также предустановлены эмуляторы NES/Sega. Фишка в том, что на таких телефонах можно выполнять нативный код и портировать на них новые эмуляторы, чем я и хочу заняться и написать об этом подробную статью и записать видео! Если у вас есть телефон подобного формата и вы готовы его задонатить или продать, пожалуйста напишите мне в Telegram (@monobogdan) или в комментарии. Также интересуют смартфоны-консоли на Android (на рынке РФ точно была Func Much-01), там будет контент чуточку другого формата :)

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

А также я ищу старые (2010-2014) подделки на брендовые смартфоны Samsung, Apple и т. п. Они зачастую работают на весьма интересных чипсетах и поддаются хорошему моддингу, парочку статей уже вышло, но у меня ещё есть идеи по их моддингу! Также может у кого-то остались самые первые смартфоны Xiaomi (серии Mi), Meizu (ещё на Exynos) или телефоны Motorola на Linux (например, EM30, RAZR V8, ROKR Z6, ROKR E2, ROKR E5, ZINE ZN5 и т. п., о них я хотел бы подготовить специальную статью и видео т. к. на самом деле они работали на очень мощных для своих лет процессорах, поддавались серьезному моддингу и были способны запустить даже Quake!). Всем большое спасибо за донаты!

Устройства, которые мы потеряли: редчайший японский ноутбук с MIPS-процессором Опрос, Покупка, Япония, Fujitsu, Windows, Wince, Процессор, Технологии, Ретроспектива, Обзор, Длиннопост

Статья подготовлена при поддержке @Timeweb.Cloud

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