Как переделать наушники под usb
Перейти к содержимому

Как переделать наушники под usb

  • автор:

usb провода. хочу переделать наушники под USb, Но не знаю оьозначения проводов дайте схемку с обозначением проводов

держи

Остальные ответы

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

ЖкПрофи (689) 12 лет назад

я видел юсб колонки в действии

не как 0_о обычные наушники с 3,5 милиметров штекером ты не как не заставиш работать от USB

это цифровые данные а не анолог сигнал. непарь себе мозг лишним. есть обычные наушники

USB наушники состоят из ЦАП ( цифро аналоговый преобразователь) с програмным обеспечением, усилителей и собственно самих наушников . Ты сможеш самостоятельно собрать ЦАП с усилителями и воткнуть все это во внутрь наушников ?

Похожие вопросы

Как подключить проводные наушники к разъему 3.5 или USB (к ПК)?

HyperX Cloud Stinger Core и HyperX Cloud Stinger Core 7.1

Разберёмся как подключить проводные наушники к разъему 3.5 мм или USB, на примере ноутбука и стационарного компьютера (к передней и задней панели), под Windows 10. Если нужного разъема нет, рассмотрим как подключить наушники (к разъёму 3,5) с переходником.

  • Как подключить проводные наушники с микрофоном ��️ к ПК — мы разобрали отдельно.

⭐ Лучшие игровые наушники (2024):

  1. Как подключить проводные наушники к 3.5 разъему ноутбука;
  2. Как подключить проводные наушники в переднюю или заднюю панель ПК;
  3. Как подключить USB наушники к компьютеру или ноутбуку;
  4. Что делать если ноутбук или компьютер не видит наушники воткнутые в разъем?

Как к ноутбуку (компьютеру) подключить наушники с микрофоном или без — видео

�� 1. Как подключить проводные наушники к 3.5 разъему ноутбука

С одним и двумя штекерами (с микрофоном)

Разъем для ноутбука

Как подключить проводные наушники к разъёму 3,5 мм?

  • Если микрофон есть, то штекер точно 4-контактный – на нём 3 чёрных кольца. Его нужно подключить в комбинированный разъём ноутбука. Он помечен пиктограммой наушников и микрофона вместе. В этом случае будут работать и наушники, и микрофон. Без переходника подключаем наушники.
  • Если нужно подключить наушники без микрофона к ноутбуку, то просто подключайте штекер 3,5 мм в подходящий разъём: комбинированный или отдельный для наушников.

Разъёмы для наушников и микрофона на ноутбуке

Раздельные разъёмы для наушников и микрофона на ноутбуке

Отдельные разъёмы для наушников и микрофона на ноутбуках встречаются нечасто, но, если у вас не оказалось комбинированного, а есть только отдельные, можно приобрести переходник с 1 комбо-штекера на 2 раздельных.

Если нужно подключить наушники с двумя штекерами к ноутбуку, то вариантов тоже 2:

  1. Если есть два отдельных выхода на наушники и микрофон — подключаем штекеры в нужные разъемы.
  2. Если имеется только комбо-выход, то нужен переходник с 2 штекеров на один комбо-разъём. Обязательно нужно смотреть, чтобы штекер на переходнике был комбинированный.

нужен переходник с 1 разъема на 2 Наушники с одним штекером (разъемом) для ноутбука Переходник с 2 штекеров на один комбинированный (с проводом) Переходник на совмещенный разъём Переходник без провода: с двух на один

��️ 2. Как подключить проводные наушники к компьютеру — в переднюю или заднюю панель ПК

Разъёмы подключения наушников на передней и задней панели

Как подключит проводные наушники к компьютеру? Если у вас гарнитура с 2 штекерами, то разъёмы подключения наушников и микрофона есть и на передней, и на задней панели. Выбирайте, какие удобнее. Если просто наушники без микрофона, то, соответственно, подключаем в гнездо наушников.

Как подключить наушники с комбо-штекером? Переходником, как упомянуто выше: с 1 комбинированного на 2 раздельных. Об этом подробнее в отдельной статье.

�� Проводные наушники для компьютера или ноутбука

�� 3. Как подключить USB наушники к компьютеру или ноутбуку

Logitech G Pro X USB аудиокарта

Подключение USB-наушников не сложнее, чем по 3,5 мм разъёму – недаром, plug&play. �� Подключаем штекер наушников в свободный USB-порт на компьютере или ноутбуке и смотрим за всплывающими сообщениями. Компьютер должен обнаружить наушники и настроить их. После этого убедитесь, что в качестве устройства воспроизведения выбраны именно наушники.

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

��‍��️ 4. Что делать если ноутбук или компьютер не видит наушники воткнутые в разъем (Windows 10)?

Как включать наушники на ноутбуке

Находим свои наушники (USB) в звуковых устройствах

Если компьютер не видит наушники воткнутые в разъём, то это обычно легко решается. Кстати сказать, обычные проводные наушники он и не должен «видеть», они не отображаются в списке подключённых устройств. Там показано устройство воспроизведения – звуковая карта. А вот если в них нет звука и\или не работает микрофон – другое дело.

Наушники, подключённые по USB к компьютеру или ноутбуку, должны отображаться в устройствах воспроизведения звука. Если их там нет, нужно произвести нехитрую настройку. Все детали в инструкциях:

  • Компьютер не видит наушники – все возможные решения
  • Ноутбук не видит наушники (проводные) — как подключить?

Переоборудовать наушники с разъемом Jack в USB: Как это сделать?

Переоборудовать наушники с разъемом Jack в USB: Как это сделать?

В мире технологий эволюция постоянна, и иногда мы сталкиваемся с небольшими препятствиями, которые мешают нам в полной мере наслаждаться нашими устройствами. Один из таких случаев — когда наши наушники с разъемом Jack больше не совместимы с новыми устройствами, имеющими только порты USB. Но не волнуйтесь, в этой статье мы покажем вам, как легко и без потери качества звука преобразовать наушники с разъемом Jack в USB. Читайте дальше и узнайте, как подарить новую жизнь вашим любимым наушникам!

# Предварительный просмотр продукт Цена
1 Аудиоадаптер внешней звуковой карты MOSWAG с USB-A на 3,5 мм Aux стереоконвертер, совместимый с наушниками, ПК, ноутбуком, Linux, настольным компьютером, PS4 Аудиоадаптер MOSWAG с внешней звуковой картой USB-A на дополнительный стереоконвертер 3,5. 7,99 EUR Ver en Amazon
2 KiWiBiRD USB-адаптер аудиоразъема 3,5 мм, внешняя звуковая стереокарта, адаптер для наушников, динамиков и микрофонов, 4 полюса TRRS, совместимый с MacBook, PS4, Windows PC, Raspberry Pi KiWiBiRD Переходник USB на 3,5 мм аудиоразъем, внешняя звуковая стереокарта, адаптер. 10,89 EUR Ver en Amazon
3 KING - 3,5MM Jack to USB 2.0 Female Adapter Connector Connector Cable Converter Черный KING — 3,5MM Jack to USB 2.0 Female Adapter Connector Connector Cable Converter Черный 3,99 EUR Ver en Amazon
4 CKCN Адаптер USB C на разъем 3,5 мм, аудиоадаптеры для наушников USB Type C, наушники Type C, совместимые с Samsung Galaxy S21+ S21 S20, MacBook Pro, Huawei P30/P20, Xiaomi CKCN Адаптер USB C на разъем 3,5 мм, аудиоадаптеры USB Type C для наушников, наушники Type C. 4,99 EUR Ver en Amazon
5 ENVEL 3,5 мм переходник для наушников «мама-USB-папа», встроенный чип стереофонической звуковой карты, TRRS-совместимый 4-полюсный адаптер USB-микрофон-наушники для ноутбука PS4 и др. Адаптер для наушников ENVEL 3,5 мм, разъем USB, разъем USB, встроенная звуковая карта с чипом. 7,99 EUR Ver en Amazon
6 UGREEN внешняя звуковая карта USB с поддержкой наушников и микрофона, аудиоадаптер USB на разъем 3.5 мм, звуковой адаптер USB, совместимый с PS4 PS5, Macbook, MateBook, динамиками, усилителем UGREEN Внешняя звуковая карта USB с поддержкой наушников и микрофона, аудиоадаптер USB to Jack. 11,89 EUR Ver en Amazon
      • Подключение USB через разъем 3.5 мм: практическое руководство
      • Быстрое решение: заставьте свой мобильный телефон распознавать наушники типа C всего за несколько шагов.

      Подключение USB через разъем 3.5 мм: практическое руководство

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

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

      Хотя на первый взгляд это может показаться нетрадиционным подключением, есть возможность подключения USB-устройств через разъем 3.5 мм. Это может быть особенно полезно в определенных ситуациях, когда у нас нет USB-порта, но есть аудиоразъем.

      Для осуществления этого подключения нам понадобится специальный переходник, преобразующий разъем USB в аудиоразъем 3.5 мм. Этот адаптер подключается к USB-порту устройства и позволяет использовать аудиоразъем для передачи данных или зарядки аккумулятора.

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

      Кроме того, надо иметь в виду, что скорость передачи данных через это соединение может быть медленнее, чем при использовании обычного USB-порта. Это связано с тем, что адаптеру необходимо преобразовать сигнал USB в аудиосигнал, что может повлиять на скорость передачи.

      С другой стороны, важно отметить, что не все USB-устройства совместимы с этим подключением. Некоторые устройства поддерживают функцию зарядки только через разъем 3.5 мм, а другие позволяют как передавать данные, так и заряжать.

      Вы заинтересованы в: Узнайте о различных типах емкостных датчиков и их применении в современных технологиях.

      Быстрое решение: заставьте свой мобильный телефон распознавать наушники типа C всего за несколько шагов.

      Если у вас есть сотовый телефон с портом USB Type C и у вас возникли проблемы с распознаванием наушников Type C, не волнуйтесь. Есть несколько простых шагов, которые вы можете выполнить, чтобы решить эту проблему быстро и эффективно. Вот как это сделать:

      1. Проверить совместимость: Прежде чем приступить к какому-либо решению, убедитесь, что наушники типа C совместимы с вашим мобильным телефоном. Некоторые старые модели могут не поддерживать это соединение, поэтому важно проверить этот аспект.

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

      3. Очистите порт USB Type C: Иногда пыль, ворс или другой мусор на USB-порте могут помешать подключению наушников. Мягкой тканью или ватным тампоном тщательно очистите порт и убедитесь, что в нем нет никаких препятствий.

      4. Обновление программного обеспечения: Проблема с распознаванием слуховых аппаратов типа C может быть вызвана устаревшим программным обеспечением. Проверьте, доступны ли обновления для вашего мобильного телефона, и обязательно установите их. Это может решить проблемы совместимости и улучшить распознавание слуховых аппаратов.

      5. Попробуйте другие наушники типа C: Если вы проверили совместимость своих слуховых аппаратов, но они по-прежнему не распознаются вашим мобильным телефоном, попробуйте другие наушники типа C. Это поможет вам определить, связана ли проблема со слуховыми аппаратами или с вашим устройством.

      6. Связаться со службой поддержки клиентов: Если вы выполнили все предыдущие шаги, но ваш мобильный телефон по-прежнему не распознает наушники типа C, мы рекомендуем вам обратиться в службу поддержки вашего мобильного телефона. Они смогут предоставить вам дополнительную помощь и решить любые технические проблемы, с которыми вы можете столкнуться.

      Помните, что это всего лишь несколько шагов, которые вы можете выполнить, чтобы решить проблему распознавания слухового аппарата типа C на своем мобильном телефоне. Если ни один из этих методов не помогает, возможно, возникла более сложная проблема, требующая помощи специалиста.

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

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

      Помните, всегда приятно иметь выбор и адаптироваться к новым технологиям. Так что независимо от того, попали ли вы в мир USB или просто хотите попробовать что-то новое, этот трюк станет вашим спасением.

      А теперь преобразуйте эти наушники в USB и приготовьтесь танцевать так, как будто никто не смотрит. Музыка не ждет, так и вы не должны!

      Перепайка разъёма наушников jack 3.5 мм. на USB type C ⁠ ⁠

      Давным-давно приобрёл себе такие проводные наушники, всем меня устраивали, но наслаждался эксплуатацией я недолго — спустя полгода в спортзале одним ловким движением оторвал разъём начисто �� погоревал недолго и убрал наушники в ящик где они пролежали без малого три года. И как-то в ходе ревизии всей своей электроники решил я их отремонтировать — отнёс в мастерскую в Питере где мне припаяли новый разъём. Визуально получилось не очень, конечно, но как говорится — на «скорость» не влияло. И пользовался я ими до недавнего времени, но практически одновременно случились два события — в одном из наушников стал пропадать звук по причине того, что провод где-то перетёрся в районе разъёма (если провод пошевелить, то звук снова появляется), второе событие — приобрёл я себе новый смартфон без выхода mini-jack. В связи с чем появилась задумка — модернизировать данные наушники путем замены разъёма jack 3.5 на USB type C. Можно, конечно, отремонтировать имеющийся разъём и прикупить переходник как на фото, но как мне видится — получится более громоздкая и менее надёжная конструкция. В связи с чем вопрос — подскажите где можно найти распиновку для наушников Beats Tour и для переходника с USB type C на mini-jack. Хочу попробовать заморочиться.

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

      Перепайка разъёма наушников jack 3.5 мм. на USB type C Наушники, Ремонт, Usb type-c, Своими руками, Смартфон, Длиннопост

      Перепайка разъёма наушников jack 3.5 мм. на USB type C Наушники, Ремонт, Usb type-c, Своими руками, Смартфон, Длиннопост

      Разъём после ремонта

      Перепайка разъёма наушников jack 3.5 мм. на USB type C Наушники, Ремонт, Usb type-c, Своими руками, Смартфон, Длиннопост

      Опциональный донор разъёма USB type C

      1.1K поста 9K подписчиков

      Подписаться Добавить пост

      Правила сообщества

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

      Постарайтесь не быть снобами в отношении новичков. Все мы когда-то ничего не знали и ничего не умели.

      За попытку приплести политику или религию — предупреждение. 2 предупреждения — бан.

      3 месяца назад

      О! Даже в едином стиле получилось.

      Резистор, судя по схеме, можно не ставить, а просто перемычку кинуть.

      Если не осилишь, привози в Выборг, помогу.

      Иллюстрация к комментарию Иллюстрация к комментарию

      раскрыть ветку
      3 месяца назад

      Все равно провод резать — сразу и прозвонишь контакты.

      3 месяца назад

      Предпросмотр

      3 месяца назад

      Спасибо за помощь котику из моего поста

      раскрыть ветку
      3 месяца назад

      Всем спасибо за помощь, весьма исчерпывающе ))) сейчас в отъезде, как доберусь до наушников и препарирую их, так сразу отпишусь ����

      Похожие посты
      14 часов назад

      Если у вас. ⁠ ⁠

      Лопнула филенка на старенькой дверце любимого шкафа

      Если у вас. Мебель, Ремонт, Длиннопост, Своими руками, Рукоделие с процессом

      Дверцу скорее снимайте, на верстак её покладайте, смело ломайте всю раму

      Если у вас. Мебель, Ремонт, Длиннопост, Своими руками, Рукоделие с процессом

      Как то вот примерно так, что б достать до жирной Фа

      Если у вас. Мебель, Ремонт, Длиннопост, Своими руками, Рукоделие с процессом

      Совсем не держится старушка

      Если у вас. Мебель, Ремонт, Длиннопост, Своими руками, Рукоделие с процессом

      Заодно смастрячим новое крепление

      Если у вас. Мебель, Ремонт, Длиннопост, Своими руками, Рукоделие с процессом

      Если у вас. Мебель, Ремонт, Длиннопост, Своими руками, Рукоделие с процессом

      вычищаем всё стамеской/лобзиком ручным и делаем новый шип!

      Если у вас. Мебель, Ремонт, Длиннопост, Своими руками, Рукоделие с процессом

      Если у вас. Мебель, Ремонт, Длиннопост, Своими руками, Рукоделие с процессом

      От так!! Рама будет теперь держать филенку. По бокам поджимаем раму прижимами со струбциной. ( Что бы не елозила по верстаку )

      Если у вас. Мебель, Ремонт, Длиннопост, Своими руками, Рукоделие с процессом

      Вставив филенку в раму,фрезером расшиваем трещины, делаем заглубление что бы в них поместить вставки. Прореить их.

      Если у вас. Мебель, Ремонт, Длиннопост, Своими руками, Рукоделие с процессом

      Вставки надо выровнять в плоскости. Я это делаю стамеской. А, ну и шпаТлевки добавить. Ведь не всюду ровно прилегает вставка.

      Если у вас. Мебель, Ремонт, Длиннопост, Своими руками, Рукоделие с процессом

      Ну, а дальше уже скучно. Всё посадить на клей, затонировать в тон основы.
      раму склеить и жирную Фа на место прибить.

      Если у вас. Мебель, Ремонт, Длиннопост, Своими руками, Рукоделие с процессом

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

      Показать полностью 12
      1 день назад

      Бюджетная переделка туалета⁠ ⁠

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

      Бюджетная переделка туалета Ремонт, Своими руками, Плитка ПВХ, Туалет, Строительство, Сантехника, Длиннопост

      Бюджетная переделка туалета Ремонт, Своими руками, Плитка ПВХ, Туалет, Строительство, Сантехника, Длиннопост

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

      Закупил материал, дождался отпуска и понеслась..

      Бюджетная переделка туалета Ремонт, Своими руками, Плитка ПВХ, Туалет, Строительство, Сантехника, Длиннопост

      Решил сделать тёмную стену напротив входа и такой же пол, боковые стены сделал более светлыми. Покрасил вчерный вытяжной вентилятор, типа лофт))

      Бюджетная переделка туалета Ремонт, Своими руками, Плитка ПВХ, Туалет, Строительство, Сантехника, Длиннопост

      Бюджетная переделка туалета Ремонт, Своими руками, Плитка ПВХ, Туалет, Строительство, Сантехника, Длиннопост

      Бюджетная переделка туалета Ремонт, Своими руками, Плитка ПВХ, Туалет, Строительство, Сантехника, Длиннопост

      Бюджетная переделка туалета Ремонт, Своими руками, Плитка ПВХ, Туалет, Строительство, Сантехника, Длиннопост

      На мой взгляд получилось более чем! Потратил на всё 2 дня.

      Показать полностью 7
      6 дней назад

      Кому тут полочку прибить? А то три дня наблюдаю посты про эту несчастную полочку⁠ ⁠

      Кому тут полочку прибить? А то три дня наблюдаю посты про эту несчастную полочку Своими руками, Полочка, Ремонт

      Супруга всё что-то рисует, а я тут полочки потихоньку прибиваю, скоро свободных стен не останется и нервов у соседей ������

      6 дней назад

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов⁠ ⁠

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

      Если сейчас приехать в пункт приема металлолома, то можно обнаружить просто огромные кучи различных телефонов и прочих электронных «отходов», которые стоят под открытым небом и ждут, когда придёт их черёд окончательного разложения. Однако при ближайшем рассмотрении выясняется, что многие девайсы оказываются полностью рабочими даже после недельного лежания под палящим солнцем и проливными дождями, а сдали их в чермет по причинам «не нужен, надоел, купил новый» и т. п. Я не считаю это правильным, ведь даже в простые кнопочные звонилки имеется возможность вдохнуть новую жизнь, если знать один интересный, но малоизвестный факт: для них можно писать нативные приложения на C и использовать железо телефона в своих целях. А это, на минуточку, как минимум: дисплей с подсветкой, вибромотор, динамик, клавиатура и GSM-радиомодуль с возможностью выхода в сеть. Сегодня мы с вами: узнаем, на каких аппаратных платформах работают китайские телефоны, какие существуют программные платформы и где взять для них SDK, а в практической части мы напишем 2D-игру с нуля, которая будет работать на многих китайских кнопочниках. Интересно? Тогда жду вас под катом!

      • Не J2ME едины
      • Аппаратные ресурсы
      • Кроссплатформенный рантайм
      • Кроссплатформенный рантайм: Win32
      • Кроссплатформенный рантайм: MRE
      • Кроссплатформенный рантайм: VXP
      • Наконец-то пишем игру
      • Тестируем на реальных девайсах
      • Заключение

      ❯ Не J2ME едины

      Думаю, многие мои читатели помнят о такой платформе, как J2ME. Java-приложения стали фактически основной возможностью расширения функционала телефонов в 2000-х годах. API для них был достаточно хорошо стандартизировано, программы не зависели от архитектуры процессора и ОС устройства, а порог вхождения для написания собственных приложений был довольно низкий и даже новички могли за пару дней написать свою игрушку или какое-нибудь GUI-приложение!

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

      Однако не одним J2ME мы были едины: существовало множество платформ, которые так или иначе пытались занять нишу Java на рынке. Некоторые из них я упоминал в своей прошлой статье о написании 3D-игры под Sony Ericsson с нуля: например, была такая платформа на телефонах Sony Ericsson серии T, как Mophun, а CDMA-телефонами с чипсетами Qualcomm использовалась нативная платформа BREW. Пожалуй, я не буду упоминать о .sis и .cab — поскольку это форматы нативных приложений для смартфонов, а не простых «фичефонов».

      В какой-то момент, ближе к 2006-2007 году, прилавки российских официальных ритейлеров (по большей части это были телефоны Fly) и неофициальных продавцов на рынках заполонили различные китайские телефоны, которые предлагали какой-то немыслимый функционал для тех лет за копейки, да ещё и визуально напоминали флагманские модели известных брендов. Пожалуй, одним из самых популярных таких телефонов была Nokla TV E71/E72 (да, именно «нокла»), вышедшая примерно в 2008 году и производившаяся аж до 2011 года! За 2-3 тысячи рублей (это менее 100 баксов), пользователь получал здоровый 2.4″ дисплей с разрешением 240×320 весьма неплохого качества (когда в те годы многие продолжали ходить с 176×220), да ещё и с тачскрином, гироскоп, огромный громкий динамик (пусть и не очень качественный), поддержку SD-карточек до 32Гб, нередко фронтальную камеру, а также премиальный дизайн с вставками из алюминия. Частенько китайцы заботливо клали в коробку ещё чехольчик и дополнительный аккумулятор 🙂

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

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

      Но была и ложка дёгтя в этой бочке меда: китайские телефоны очень часто не имели поддержки Java, из-за чего многие пользователи разочаровывались в них из-за отсутствия возможности установить необходимые им приложения. Никакой тебе оперы, аськи, игр… Скорее всего, это связано с необходимостью отчислений Sun, а также разработчикам реализации J2ME-машины (JBed/JBlend) и установки чипа флэш-памяти чуть большего объёма.

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

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

      Всё как вы любите: HiTech-девайсы на фоне ковра, который старше автора лет на 30 🙂

      В ранних китайских телефонах использовалась платформа Mythroad (MRP, MiniJ) от китайской компании SkyWorks, которая лицензировала свою технологию производителям чипсетов. Поддержку MRP можно было встретить на телефонах с чипсетами MediaTek, Spreadtrum, а также MStar (и возможно Coolsand). Mythroad предоставлял некоторое API для работы с железом телефона и разработки как UI-приложений, так и игр, кроме того, Mythroad позволял хранить ресурсы в одном бинарнике с основной программой и даже имел какой-то интерпретируемый язык помимо возможности запуска нативного кода. Для работы таких приложений необходимо было скопировать менеджер приложений dsm_gm.mrp и игру в папку mythroad во внутренней памяти устройства или на флэшке, а затем набрать в номеронабирателе код *#220807#, иногда при отключенной первой SIM-карте. Костыльно? Костыльно! Откуда об этом знать среднестатистическому пользователю? Не откуда! Но работало!

      Эта платформа поддерживалась на большинстве подделок под брендовые устройства Nokia, Sony Ericsson и Samsung, а также iPhone и на многих китайских кнопочных телефонах 2008-2010 годов.

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

      Ближе к 2010 году MediaTek разработала свою собственную платформу, которая должна была заменить MRP — WRE (VXP). Эта платформа была гораздо шире с точки зрения функционала (например, был доступ к UART) и её API был вполне удобно читаем для программиста, а SDK свободно доступен для всех. Один нюанс всё портил — приложения без подписи привязывались к IMSI (даже не IMEI) симки в девайсе и на некоторых девайсах требовали переподписания под каждую конкретную SIM или патчинг дампа оригинальной прошивки телефона на отключение проверки подписи. Эта платформа поддерживалась на многих кнопочниках и смарт-часиках 2010-2020 годов: к ним относятся новодельные телефоны Nokia, телефоны DNS и DEXP, Explay и т. п. Для запуска приложений достаточно было выбрать файл с разрешением VXP в проводнике и просто запустить его. Но с совместимостью всё равно имелись проблемы: если запустить VXP для версии 2.0 и выше, мы получим лишь белый экран. Ну хоть не софтресет, и на том спасибо!

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

      Далеко не все такие часы поддерживают MRE, смотреть нужно от устройства к устройству

      ❯ Аппаратные ресурсы

      Большинство китайских кнопочных телефонов работает на базе одних и тех же чипсетов. В конце нулевых чаще всего использовались чипсеты MT6225, SC6520 и некоторые чипы от Coolsand. Средние хар-ки девайса были следующими:

      • Процессор: ARMv5 ядро на частоте ~104МГц, ARM926EJ-S. Нет FPU, есть Thumb. Большую часть процессорного времени программа могла забрать себе.
      • ОЗУ: ~4Мб SDRAM. Программам было доступно 512Кб-1Мб Heap’а. Это, в целом, довольно немало для большинства применений.
      • Флэш-память: ~32Мб, пользователю доступно пару сотен килобайт. Да, вы не ослышались, килобайт! Однако можно без проблем использовать MicroSD-флэшки до 32Гб.
      • Дисплей: от 128×128 до 320×480, почти всегда есть 18-битный цвет (262.000 цветов), в случае TV E71/E72 используется очень неплохая TN-матрица с хорошими углами обзора и яркой подсветкой. Иногда есть тачскрин.
      • Звук: громкий динамик, наушники.
      • Аккумулятор: ~800мАч, на некоторых девайсах может быть и 2.000мАч, а то и больше!
      • Ввод: клавиатура, иногда была поддержка QWERTY.
      • Внешние шины: почти всегда был доступен UART, причём его можно было свободно взять прямо с платы — он был явно подмечен! Взять GPIO с проца не выйдет (кроме, возможно, вибромотора), SPI и I2C также напрямую недоступны. Внешние шины можно реализовать с помощью UART через GPIO-мост из микроконтроллера.

      В итоге мы получаем очень неплохие характеристики для устройства, которое сочетает в себе сразу всё. На базе такого девайса можно сделать и сигнализацию, и HMI-дисплей с интерфейсом для управления каким-нибудь устройством, и игровую консоль с эмуляторами… да на что фантазии хватает! И это за какие-то 200-300 рублей, если мы говорим о б/у устройстве или 600 рублей, если говорим о новом. Это дешевле, чем собирать девайс с подобным функционалом самому из готового МК (например, RP2040) и отдельных модулей. Кстати, дешевые 2.4″ дисплеи на алике — это ни что иное, как невостребованные остатки дисплеев для подобных китайских телефонов на складах! А вы думали, откуда там значки на тачскрине снизу?

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

      Однако в рамках данной статьи мы не будем ограничиваться лишь теорией и на практике напишем примитивную 2D-игрушку, которая будет работать сразу на трех платформах без каких-либо изменений в коде самой игры: Windows, MRP (Mythroad) и VXP. Но для того, чтобы достигнуть такого уровня абстракции от платформы, нам необходимо написать рантайм, который оборачивает все необходимые платформозависимые функции для нашей игры.

      Игрушка будет простой: 2D скролл-шутер с видом сверху, а-ля Asteroids. Летаем по космосу, и стреляем по враждебным корабликам, стараясь не попасть под вражеские лазеры. Всё просто и понятно 🙂

      ❯ Практическая часть: Кроссплатформенный рантайм

      Итак, что нам необходимо от абстракции для такой простой игры? Давайте посмотрим:

      • Графика: очистка экрана, отрисовка спрайтов с прозрачностью (без альфа-блендинга, только колоркей), отрисовка текста. При возможности, желательно использовать нативное API системы для рисования графики, а не городить собственный блиттер. Формат пикселя фиксирован: RGB565 (65к цветов).
      • Ресурсы: хранятся в одном образе с основной игрой. Фактически, все ресурсы упакованы в виде обычных массивов байт в заголовочных файлах. Я пользуюсь вот этой тулзой для конвертации спрайтов в массивы байтов.
      • Звук: воспроизведение хотя-бы одного WAV-потока. Почему одного? Потому что далеко не на всех платформах есть доступ к аппаратному микшеру… да и вообще не везде есть прямой доступ к PCM (привет MRP), иногда разработчики ограничиваются лишь одним каналом для WAV-звука без возможности воспроизведения нескольких аудиофайлов одновременно.
      • Ввод: абстракция от клавиатуры классического моноблока: стрелки, OK, левый и правые софткеи.
      • Стандартная библиотека: не на всех платформах можно вызывать функции напрямую из stdlib. Как минимум в MRP и, например, «эльфах» для Motorola, нет возможности вызывать аллокатор, rand и некоторые другие функции из обычных заголовочников стандартной библиотеки. На таких платформах, системные инклуды дефайнами подменяют стандартные функции на своих реализации:

      #define malloc system_alloc #define free system_free

      Выглядит всё достаточно просто, верно? Примерно такого набора функций хватит для нашей игры:

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

      ❯ Win32

      Давайте же перейдем к реализации рантайма на каждой платформе по отдельности. Начнём с Win32, поскольку адекватно отлаживать игру можно только на ПК.

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

      На десктопе у нас будет фиксированное окно 240×320, в качестве GAPI будет использоваться аппаратно-ускоренный OpenGL, а для обработки ввода будет использоваться классически GetAsyncKeyState. Реализация точки входа, создания окна и инициализации контекста GL и главного цикла приложения у нас такая:

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

      Реализация отрисовки спрайтов очень примитивная — OGL 1.0, полностью FFP, вся отрисовка — это 2 треугольника, формирующие квад. Спрайт заливается при первом использовании в текстуру, последующие кадры реюзается уже готовая текстура. Фактическая реализация всего рендерера — т. е. функций для рисования «просто картинок», без поддержки атласов, блендинга цветов (З.Ы — длинные листинги будут на пастбине, на Пикабу нет нормального тега для кода):

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

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

      ❯ MiniJ

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

      SDK для MRE можно найти здесь (SKYSDK.zip): оно уже пропатчено от необходимости покупки лицензии. MRP не развивается более 10 лет, поэтому, думаю, его можно считать Abandonware. Компилятор находится в compiler/mrpbuilder.NET1.exe. За китайские SDK в публичном доступе нужно поблагодарить пользователя 4pda AjlekcaHgp MejlbHukoB, который раздобыл их на всяких csdn и выложил в свободный доступ 🙂

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

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

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

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

      С вводом тоже никаких проблем нет, нажатия кнопок прилетают как события в mrc_event. Переводим кейкоды MRE в наши кейкоды и сохраняем их состояние:

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

      Опять же, отлаживать MRP-приложение под реальным устройством проблематично, поэтому платформозависимый код должен быть минимальным. Кроме того, обратите внимание, что некоторые функции в MRP зависят от библиотек-плагинов. Линкер слинкует вашу программу, но на реальном устройстве их вызов вывалится в SIGSEGV и софтресет устройства. Также нельзя использовать ничего из стандартной библиотеки именно в стандартных заголовочниках (т. е. stdlib.h, string.h и т. д.), часть стандартной библиотеки реализовывается MRP и дефайнится в mrc_base.h

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

      Что интересно, защиты памяти толком нет. Если приложение падает в SIGSEGV или портит память — систему, судя по всему, ребутит Watchdog. Защиты памяти никакой, можно напрямую читать и писать в память ядра, а также писать в регистры периферии чипсета. jpegqs, покумекаем над этим? 🙂

      Переходим к рендереру. Тут буквально две функции, gClearScreen очищает экран, а gDrawBitmap рисует произвольный спрайт с форматом пикселя RGB565. В качестве ROP используется BM_TRANSPARENT — таким образом, mrc_bitmapShowEx будет использовать левый верхний пиксель в качестве референсного цвета для реализации прозрачности без альфа-блендинга.

      void gDrawBitmap(CBitmap* bmp, int x, int y)

      mrc_bitmapShowEx((uint16*)bmp->pixels, x, y, bmp->width, bmp->width, bmp->height, BM_TRANSPARENT, 0, 0);

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

      ❯ VXP

      Теперь переходим к VXP — платформе не менее неоднозначной, чем MRP. Пожалуй, начать стоит с того, что VXP существует аж в трёх версиях: MRE 1.0, MRE 2.0 и MRE 3.0. В MRE 2.0 и выше появилась поддержка плюсов (в MRE 1.0 только Plain C) и довольно интересного GUI-фреймворка, MRE 1.0 же предлагает реализовывать гуй самому. Платформа распространена на большинстве кнопочных телефонов и смарт-часиков на чипсетах MediaTek, примерно начиная с 6235 и заканчивания 6261D. SDK можно скачать вот здесь (см MRE_SDK_3.0).

      VXP сам по себе более функционален чем MRE, поскольку ориентирован исключительно на телефоны с чипсетами MediaTek. Но что самое приятное — есть доступ к уарту без каких либо костылей! То есть, если сделать GPIO-мост на условной ESP32, то мы можем получить готовый мощный МК с клавиатурой, кнопками, дисплеем, звуком и т. д. Звучит не хило, да? Кроме того, у нас есть доступ и к BT, и к GPRS, и к SMS без каких либо ограничений.

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

      Однако в бочке мёда нашлась и ложка дёгтя: для компиляции MRE-приложений необходимо накатывать и крякать довольно старый компилятор ADS, который сам по себе поддерживает только C89 (например, нет возможности объявить переменную в объявлении цикла или середине функции, только в начале, как в Pascal). ADS уже вроде как Abandonware, так что это вроде не наказуемо… но всё равно неприятно.

      Кроме того, на некоторых девайсах (в основном, фирменных Nokia а-ля 225), прошивка требует подписи у всех бинарников, либо если бинарник отладочный, то должна быть привязка к конкретному IMSI.

      К тому же, каждая программа должна фиксированно указывать в заголовке, сколько Heap-памяти ей необходимо выделить. Оптимальный вариант — ~500Кб, тогда приложение запустится вообще на всех MRE-телефонах.

      Зато у VXP есть адекватный симулятор под Windows. Но зачем он нам, если у нас порт игры под Win32 есть? 🙂

      Начинаем с инициализации приложения. В процессе вызова точки входа, приложение должно назначить обработчики системных событий, коих бывает несколько. Для обработки ввода и базовых событий хватает всего три: sysevt (события окна), keyboard (физическая клавиатура. Есть полная поддержка QWERTY-клавиатур), pen (тачскрин).

      vm_reg_sysevt_callback(handle_sysevt); vm_reg_keyboard_callback(handle_keyevt); vm_reg_pen_callback(handle_penevt);

      Переходим к обработчику системных событий. Обратите внимание, что MRE-приложения могут работать в фоне, из-за чего необходимо ответственно подходить к созданию и освобождению объектов. Что важно усвоить с самого начала — в MRE нет понятия процессов и защиты памяти, как на ПК и полноценных смартфонах. Любая программа может попортить память или стек ОС, более того, программа использует аллокатор остальной системы, поэтому если ваша программа не «убирает» после себя, данные останутся в памяти со временем приведут к зависанию. Впрочем, WatchDog делает свою работу быстро и приводит телефон в чувство (софтресетом) за 1-2 секунды. Но как и в случае с MRE, есть приятный бонус: прямой доступ к регистрам чипсета 🙂

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

      Переходим к обработке событий с кнопок. Тут всё абсолютно также, как и на MRE, лишь имена дейфанов поменялись 🙂

      И наконец-то, к графике! Пожалуй, стоит сразу отметить, что более 20-30 FPS на большинстве устройств вы не получите даже с прямым доступом к фреймбуферу. Похоже, это связано с тем, что в MRE довольно замороченная графическая подсистема с поддержкой альфа-канала (только фиксированного во время вызова функции отрисовки картинки/примитивов, сам пиксельформат всегда RGB565) и нескольких слоев. Кроме того, похоже есть ограничения со стороны контроллера дисплея.

      Изначально, MRE предполагает то, что все картинки в программе хранятся в формате… GIF. Да, весьма необычный выбор. Однако для работы с пользовательской графикой, есть возможность блиттить произвольные картинки напрямую из RAM. Вот только один нюанс — посмотрите внимательно не объявление следующей функции:

      void vm_graphic_blt( VMBYTE * dst_disp_buf, VMINT x_dest, VMINT y_dest, VMBYTE * src_disp_buf, VMINT x_src, VMINT y_src, VMINT width, VMINT height, VMINT frame_index );

      dst_disp_buf — это целевой RGB565-буфер. Логично предположить, что и src_disp_buf — тоже обычный RGB565-буфер! Но как бы не так. Документация крайне скудная, пришлось посидеть и покумекать, откуда в обычном 565 буфере возьмется индекс кадра. С подсказкой пришёл пользователь 4pda Ximik_Boda — он скинул структуру-заголовок, которая идёт перед началом каждого кадра. В документации об этом не сказано ровным счетом ничего!

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

      Сначала я реализовал софтовый блиттинг, но он безбожно лагал. Мне стало интересно, почему нативный blt быстрее и… вопросы отпали после того, как я поглядел в ДШ чипсета: тут есть аппаратный блиттинг. И даже с ним девайс не может выдать более 20FPS!

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

      Для реализации более-менее шустрого вывода графики, необходимо сначала создать канвас (фактически, Bitmap в MRE), создать и привязать к нему layer, получить указатель на буфер слоя и только потом скопировать туда нашу картинку. Да, вот так вот замороченно:

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

      На данный момент, этого достаточно для нашей игры.

      ❯ Пишем геймплей

      Рантайм у нас есть, а значит, можно начинать писать игрушку. Хоть пишем мы на Plain-C, я всё равно из проекта в проект использую +- одну и ту же архитектуру относительно системы сущностей, стейтов и т. п. Поэтому центральным объектом у нас станет CWorld, который хранит в себе на пулы с указателями на другие объектами в сцене, а также игрока и его состояние:

      typedef struct

      int nextSpawn; // In ticks

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

      typedef void(CGameStateCallback)();

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

      А также описываем игрока:

      typedef struct

      int health;

      int nextAttack;

      Всё! Для текущего уровня реализации игры этого достаточно 🙂
      Переходим к реализации игровой логики. Вообще, динамический аллокатор в играх для китайских платформ лучше использовать как можно меньше. Heap’а довольно мало (~600Кб), да и не совсем понятно, как этот аллокатор реализован, есть вероятность, что используется аллокатор и куча основной ОС.

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

      На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

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

      При обходе пула во время обновления кадра, мы обновляем состояние каждого объекта и если его функция Think вернула true, значит объект больше не нужен и его нужно удалить:

      if (enemyThink(world.enemyPool[i]))

      А вот и реализация Think:

      bool enemyThink(CEnemy* enemy)

      if (enemy->y > gGetScreenHeight() || enemy->health return true;

      return false;

      Но кораблики должны же откуда-то появляться! Для этого у нас есть переменная nextSpawn, которая позволяет реализовать самый простой тип спавнера — относительно времени (или в нашем случае тиков):

      if (world.nextSpawn < 0)

      world.nextSpawn = randRange(40, 70);

      Результат: мы уже можем полетать, пострелять и поуворачиваться от вражеских корабликов!

      Уже что-то напоминающее игру! Осталось лишь добавить подсчет очков, менюшку, разные виды противников, возможно какие-то бонусы и у нас будет готовая простенькая аркада. В целом, выше приведена достаточно неплохая архитектура для простых 2D-игр на Plain C. Фактически, она может быть хорошей базой и для ваших игр: в теме о китах на 4pda я встречал немало людей, которые банально не знали, с чего начать.

      ❯ Что у нас получилось?

      Но без тестов на реальных устройствах материал не был бы таким интересным! Поэтому давайте протестируем игру на двух реальных телефонах, как вы уже догадались, один — Nokla TV E71, а второй — клон Nokia 6700, который подарил мне мой читатель Никита.

      На TV E71 игра идёт не сказать что очень бодро. Кадров 15 точно есть, что, учитывая разрешение 240×320, весьма неплохо для такого девайса.

      а 6700,, даже учитывая более низкое разрешение — 176×220, дела примерно также — ~15FPS! Но поиграть всё равно можно. Уже хотите написать «автор наговнокодил, а теперь ноет из-за низкого FPS»? Ан-нет, я попробовал игры сторонних разработчиков — они идут примерно также 🙁 К сожалению, таковы аппаратные ограничения устройства.

      Исходный код игры с Makefile’ами и файлами проектов для Visual Studio и MRELauncher доступны на моём GitHub. Свободно изучайте и используйте его в любых целях 🙂

      ❯ Заключение

      Но в остальном же, демка получилась довольно прикольной, как и сам опыт программирования для китайских телефонов. В общем и целом, китайцы пытались максимально упростить API и привлечь разработчиков к своей платформе. Если ради примера взглянуть на API для Elf’ов на Motorola, можно ужаснуться от state-based архитектуры платформы P2K. А тут тебе init, event, draw — и всё!

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

      P. S.: Друзья! Время от времени я пишу пост о поиске различных китайских девайсов (подделок, реплик, закосов на айфоны, самсунги, сони, HTC и т. п.) для будущих статей. Однако очень часто читатели пишут «где ж ты был месяц назад, мешок таких выбросил!», поэтому я решил в заключение каждой статьи вставлять объявление о поиске девайсов для контента. Есть желание что-то выкинуть или отправить в чермет? Даже нерабочую «невключайку» или полурабочую? А может, у этих девайсов есть шанс на более интересное существование! Смотрите в соответствующем посте, что я делаю с китайскими подделками на айфоны, самсунги, макбуки и айпады! Да и чего уж там говорить: эта статья уже сама по себе весьма наглядный пример! Найти меня можно в комментариях тут, на Пикабу, и в тг @monobogdan

      Понравился материал? У меня есть канал в Телеге, куда я публикую бэкстейдж со статей, всякие мысли и советы касательно ремонта и программирования под различные девайсы, а также вовремя публикую ссылки на свои новые статьи. 1-2 поста в день, никакого мусора!

      Полезный материал? Всего голосов:
      Были ли у вас такие китайчики? Всего голосов:

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

      Показать полностью 20 4 2
      Поддержать
      7 дней назад

      Стеллаж⁠ ⁠

      Без сварки и всего остального.

      Стеллаж Своими руками, Ремонт, Стеллаж, Рукоделие без процесса

      Показать полностью 1
      15 дней назад

      Лесенка в Вороново⁠ ⁠

      Изготовил и установил лестницу на бетонное основание

      Лесенка в Вороново Лестница, Своими руками, Ограждение, Ремонт, Дизайн интерьера, Дом, Длиннопост

      Подступята мдф эмаль

      Лесенка в Вороново Лестница, Своими руками, Ограждение, Ремонт, Дизайн интерьера, Дом, Длиннопост

      Лесенка в Вороново Лестница, Своими руками, Ограждение, Ремонт, Дизайн интерьера, Дом, Длиннопост

      Лесенка в Вороново Лестница, Своими руками, Ограждение, Ремонт, Дизайн интерьера, Дом, Длиннопост

      Процесс монтажа ограждения

      Лесенка в Вороново Лестница, Своими руками, Ограждение, Ремонт, Дизайн интерьера, Дом, Длиннопост

      Лесенка в Вороново Лестница, Своими руками, Ограждение, Ремонт, Дизайн интерьера, Дом, Длиннопост

      Показать полностью 6
      Поддержать
      17 дней назад

      Как мы санузел ремонтировали⁠ ⁠

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

      Как мы санузел ремонтировали Ремонт, Ремонт санузла, Своими руками, Туалет, Длиннопост

      Совсем первоначального вида санузла нет, на этом фото уже демонтирован потолок и стена от которой отвалилась плитка уже отштукатурена.

      Ремонт делался ОЧЕНЬ постепенно, всегда возникали какие-то глупые обстоятельства тормозившие процесс. К примеру, даже поиск плитки был тем ещё квестом, хотя казалось бы супер базовая плитка — белая, квадратная, примерно 10×10 см. Но нашли мы такую только в соседнем городе. У отделочных материалов тоже есть мода, и такая плитка сейчас, так сказать, не в тренде.

      Как мы санузел ремонтировали Ремонт, Ремонт санузла, Своими руками, Туалет, Длиннопост

      Как мы санузел ремонтировали Ремонт, Ремонт санузла, Своими руками, Туалет, Длиннопост

      Всё демонтировано, заново переделан короб из гипсокартона (так как во время снятия плитки он сильно пострадал), стены отштукарены, загрунтованы и готовы к покраске.

      Как мы санузел ремонтировали Ремонт, Ремонт санузла, Своими руками, Туалет, Длиннопост

      Первый слой краски — сперва я опешила от количества проплешин и общего вида, и поняла, что будет не всё так просто.

      Как мы санузел ремонтировали Ремонт, Ремонт санузла, Своими руками, Туалет, Длиннопост

      Тут уже 3 слоя краски. Пришлось докупать ещё баночку, так как укрывистость была так себе.

      Как мы санузел ремонтировали Ремонт, Ремонт санузла, Своими руками, Туалет, Длиннопост

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

      Как мы санузел ремонтировали Ремонт, Ремонт санузла, Своими руками, Туалет, Длиннопост

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

      Как мы санузел ремонтировали Ремонт, Ремонт санузла, Своими руками, Туалет, Длиннопост

      Балончиком для покраски радиаторов крашу пластиковые трубы, которые со временем стали совсем страшненькие.

      Как мы санузел ремонтировали Ремонт, Ремонт санузла, Своими руками, Туалет, Длиннопост

      Муж смастерил тумбочку для раковины, в Леруа Мерлен продавалась маленькая тумбочка, подходящая нам, но у неё был ряд проблем, и мы решили сделать сами. Щит сосновый, двери жалюзийные и аквалазурь цвета дуб.

      Как мы санузел ремонтировали Ремонт, Ремонт санузла, Своими руками, Туалет, Длиннопост

      Ну тут уже готовый результат.

      Как мы санузел ремонтировали Ремонт, Ремонт санузла, Своими руками, Туалет, Длиннопост

      Как мы санузел ремонтировали Ремонт, Ремонт санузла, Своими руками, Туалет, Длиннопост

      Как мы санузел ремонтировали Ремонт, Ремонт санузла, Своими руками, Туалет, Длиннопост

      Как мы санузел ремонтировали Ремонт, Ремонт санузла, Своими руками, Туалет, Длиннопост

      Как мы санузел ремонтировали Ремонт, Ремонт санузла, Своими руками, Туалет, Длиннопост

      П.С.: мы с мужем самоучки, на привлечение мастеров особо денюжков нет, поэтому ютюб нам был главным помощником.

      Показать полностью 15
      27 дней назад

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian⁠ ⁠

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      Друзья! Многие ли из вас помнят такой телефон, как Nokia N-Gage? В начале нулевых финская компания сделала смелую попытку ворваться на рынок игровых консолей, создав устройство, которое сочетало в себе сразу две функции: полноценный смартфон на базе аппаратной платформы WD2 с Symbian на борту и игровая консоль с собственными картриджами! Год назад читатель подарил мне N-Gage QD с некоторыми аппаратными проблемами, которую я успешно оживил и подготовил подробную статью, в которой мы: узнаем историю появления N-Gage на свет и на чём он работал «под капотом», отремонтируем устройство и узнаем о самых частых аппаратных «болячках» смартфонов Nokia на платформе WD2, а также посмотрим на местную игровую библиотеку подробнее и выясним особенности разработки игр под Symbian! Интересно? Тогда добро пожаловать под кат!

      ❯ Что за N-Gage и как он появился?

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

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      По сути, N-Gage является уникальным смартфоном. За всё время существования мобильного рынка, по настоящему игровых телефонов почти и не выходило: можно вспомнить телефоны Sony Ericsson с геймпадом EGB-30,Xperia Play, японские и корейские телефоны, о которых мало кто слышал, да и китайские реплики Nokia с эмулятором NES на борту.

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      Я писал материал о Xperia Play год назад

      В начале нулевых, рынок мобильных игр начинал активно развиваться. С ростом мощностей мобильных девайсов и появлением цветных дисплеев, стали появляться самые разные платформы для запуска мобильных приложений и продажи игр через операторские сети. Например, довольно большим успехом пользовалась перспективная платформа Mophun (Sony Ericsson T310, T610), которая использовала собственный платформо-независимый байткод. Помимо этого, в платформе были уже готовые библиотеки для упрощения разработки игр: вывод 2D спрайтов, 3D графики (программный рендеринг), звука и обработка ввода. Нельзя также не вспомнить о Qualcomm BREW — который использовался во многих CDMA-телефонах в США и была по настоящему нативной, позволяя использовать все ресурсы телефона. Но самой популярной стала, конечно же, J2ME, которая предустанавливалась на большинство телефонов до ~2014 года.

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      Sony Ericsson T610 — один из девайсов, поддерживающих Mophun

      Само собой Nokia не могли упустить момент и не попытаться занять нишу на мобильном рынке игр. У Nokia было две основные платформы: S40, используемая в кнопочных телефонах и S60, платформа основанная на Symbian, которая использовалась в смартфонах компании. Уже в 2003 году, в платформах S40 и S60 была полноценная поддержка J2ME игр и Java показывала себя как достаточно перспективная платформа. Nokia даже реализовали свои собственные расширения для J2ME, дабы игры могли использовать больше возможностей устройства, чем предоставляет MIDP. В целом, телефоны Nokia были очень популярными, благодаря чему почти все J2ME игры имели собственную версию под S40 (а иногда и более навороченные под S60).
      N-Gage, который должен был объединить телефон и игровую консоль, был анонсирован ещё в ноябре 2002 года, однако вышел в свет 7 октября 2003 года.

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      Первая версия N-Gage

      Однако N-Gage был отнюдь не первым устройством в подобном дизайне. Его предком принято считать Nokia 3300 — смартфон, который в первую очередь был ориентирован для использования в качестве мультимедийного устройства и прослушивания музыки. Тем не менее, устройство тоже поддерживало J2ME и на нём вполне можно было проходить Symbian-годноту из нулевых.

      N-Gage был встречен весьма неоднозначно. В устройстве было достаточно много как аппаратных, так и программных недоработок, которые вызывали недовольство среди пользователей. Первая и пожалуй самая главная для игровой консоли — отсутствие возможности горячей смены картриджей с играми. Сами игровые картриджи были реализованы в виде обычных MMC-карт памяти, однако, судя по всему в S60 не было поддержки «горячей» замены карт памяти как таковой, из-за чего для смены игры необходимо было сначала достать аккумулятор, заменить флэшку с игрой, установить аккумулятор, включить устройство и дождаться его загрузки (секунд 15) и только потом уже начинать играть. А учитывая, что это был телефон, то довольно длительное пребывание вне сети устраивало далеко не всех пользователей.

      Картриджи были проблемой и для жителей отдаленных регионов. В России, насколько мне известно, картриджи можно было купить только в Москве и СПБ, хотя возможно и ещё в каких-то больших городах. Но вот, например, у меня, жителя Ейска, едва ли была возможность купить картридж «физически» — разве что только под заказ. Другое дело Java игры, которые весили по 50-100 килобайт в те годы и без проблем скачивались даже через мобильный интернет. Впрочем, судя по всему, никакого особого DRM в N-Gage играх не было и после того, как энтузиасты научились сливать игры с MMC-карточек — на N-Gage начало процветать пиратство.

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      Даже с точки зрения звонков у девайса были свои нарекания. Конструктивно инженеры Nokia решили расположить слуховой динамик не с лицевой части, а с боковой. Из-за этого для разговоров приходилось переворачивать телефон боком. Выглядело это весьма необычно для прохожих, незнакомых с N-Gage. 🙂
      Тем не менее, в устройстве были и революционные решения: вспомнить хотя-бы N-Gage Arena, который объединял мобильных игроков в одну сеть с друзьями, таблицами рекордов и т. д.

      Чуть меньше чем через год, в мае 2004 года вышла N-Gage QD: исправленная и доработанная версия N-Gage, в которой заметно изменили дизайн, добавили поддержку замены картриджей без выключения девайса и добавили слуховой динамик на переднюю часть корпуса. Именно эта версия N-Gage стала популярной и её чаще всего можно найти на онлайн-барахолках.
      И хотя N-Gage ругали за недоработки, мобильным игрокам она полюбилась за высокий уровень игр для телефонов тех лет: графика была гораздо лучше чем на GBA и была близка по уровню к PS1, геймплей разнообразнее, чем в Java-версиях, да и сами игры имели довольно большой полноценный сюжет. Это был действительно замах на уровень таких мастодонтов, как Nintendo! Приятным бонусом была полноценная поддержка Java-игр, благодаря чему на телефоне можно было гораздо удобнее проходить уже вышедшие игры для MIDP 1.0, даже если вся библиотека игр N-Gage уже была пройдена!

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      Не менее интересно девайс устроен и «под капотом». Как я уже говорил выше, N-Gage был построен на базе зарекомендовавшей себя платформы Nokia WD2, которая использовалась в смартфонах 3650, 3300, 3230, 6600 и.т.д. Многие годы смартфоны Nokia работали на базе чипсетов OMAP, в случае WD2 это скорее всего (не точно, есть вероятность что UPP собственной разработки — как и в случае с S40) были специализированные версии OMAP с «перевернутыми» регистрами для предотвращения портирования Linux на устройства Nokia, поскольку OMAP были доступны рядовым энтузиастам.

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      Характеристики N-Gage были следующими:

      • Процессор: ARMv4 ядро на частоте 104МГц, что было стандартом для многих телефонов в те годы (например Siemens на платформе S-Gold работали на той же частоте, а E-Gold — вдвое меньшей). Скорее всего, процессор собственной разработки Nokia.
      • Память: 16Мб SDRAM ОЗУ и 16Мб ПЗУ, раздельно. Иногда флэш-память изнашивалась и в СЦ её нередко меняли. Мои читатели, которые в нулевых работали в СЦ наверняка вспомнят о «бутербродах» на некоторых телефонах 🙂
      • Дисплей: 2.1″ матрица с разрешением 176×208 и глубиной цвета 12-бит (4096 цветов), выполненная по технологии CSTN (хотя возможно и TN). Для тех лет, диагональ дисплея и его разрешение были оптимальными, круче были только коммуникаторы с 2.4″ дисплеями 240×320. Фактически все (или почти все) смартфоны Nokia на Symbian тех лет использовали одну и ту же матрицу, с чуть разной длинной шлейфа (просто где-то её переворачивали вверх-тормашками, как на N70).
      • ОС: Symbian 6.1
      • Аудиовыход: 2.5мм джек (моно)

      Как видите, ни о каком GPU и речи не шло. Вся отрисовка полагалась исключительно на процессор и результат того, что даже такие крутые 3D-игры как Tony Hawks и Tomb Raider идут на N-Gage — заслуга программистов, которые оптимизировали свои рендереры для работы на 104МГц ядре! А ведь некоторые телефоны тех лет (например, Motorola) использовали отдельные 2D GPU для ускорения отрисовки интерфейса и работы с камерой — ATI Imageon!
      Благодаря тому, что девайс строился на смартфонной платформе, на нем можно было не только играть, но и слушать музыку, а также смотреть видео и серфить интернет. Весьма и весьма для тех лет!

      Даже спустя несколько лет после выхода телефон N-Gage, сам бренд и платформа N-Gage Arena продолжила существование на флагманских смартфонах Symbian, которые уже не имели такой игровой дизайн. Одним из N-Gage 2.0 девайсов была легендарная Nokia N95, которая в плане игровой направленности была гораздо круче, поскольку в устройстве использовался GPU PowerVR MBX Lite. Да, точно такой же, как и в iPhone 2G!

      ❯ Как он ко мне попал?

      Конечно же, рано или поздно я и сам хотел обзавестись собственной N-Gage, с чем мне помог мой читатель, причём всё как я люблю: девайс был полурабочим и требовал некоторого ремонта. Более года назад мне написал подписчик на DTF с никнеймом «Improved white bonkle» и предложил заслать N-Gage QD и ещё одну плату под ремонт с некоторыми аппаратными проблемами: первая плата висела на белом экране, а вторая просто висела на логотипе Nokia без подсветки экрана. Помимо N-Gage, читатель положил «толстую» зарядку и флэшку на 1Гб, за что ему огромное спасибо.

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      Читатель рассказывал, что девайс он покупал у некого коллекционера «гаг» в России и довольно много играл на ней в эксклюзивные игры для данной платформы. После поломки устройства, девайс лежал у него какое-то время, пока он не заметил мои статьи и не решил заслать устройство под ремонт в хорошие руки. 🙂
      Ну что-ж, давайте оживим девайс!

      ❯ Ремонтируем устройство

      Я не зря отметил то, что девайс подарили мне более года назад. Мне удалось сразу продиагностировать N-Gage и обнаружить неисправности, однако фактически отремонтировать устройство у меня не вышло: в то время я откровенно «бомжевал» и у меня даже более-менее адекватной паяльной станции не было. Дабы было понятно: тогда я перепаял коннектор АКБ, сейчас я восстановил BTEMP. На данный момент мне материально активно помогаете вы, мои читатели, поэтому за год я смог обустроить небольшое рабочее место, пригодное для проведения большинства ремонтных работ.

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

      Обратите внимание на то, что некоторые детские болячки пользователь и сам мог отремонтировать. Не работает разъём ЗУ, наушники, вибромотор или динамик? Пошёл, купил за 10 рублей на ближайшем радиорынке и сам поменял! Вот уж настоящий right to repair. 🙂

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      Визуально осмотрев плату, я пришёл к выводу, что плата скорее всего не копанная китайцами: компаунд UPP’а (процессор) и Mjoelner (радиотракт) был не тронут, флэша с виду тоже в норме, все элементы стояли ровно. Однако около коннектора аккумулятора, я обнаружил следы канифоли: кто-то явно вручную перепаивал коннектор АКБ. Спросив у читателя, я получил утвердительный ответ: он действительно пытался перепаять коннектор аккумулятора с помощью советского паяльника.

      Но почему же тогда устройство виснет на заставке Nokia без подсветки? Давайте взглянем на схему:

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      У коннектора АКБ три контакта: плюс питания, масса и BSI, который уходит напрямую в UEM (контроллер питания). Смартфоны Nokia на платформе WD2 были очень капризны к сопротивлению на BSI и UEM отказывался давать разрешение на старт при установке несовместимого аккумулятора. Казалось бы, BL-4C, BL-5C и BL-5CB по размерам почти одинаковые, но имеют разное сопротивление на BSI.

      Однако даже при установке совместимого АКБ, устройство отказывалось включаться. Вывод простой: линия BSI находится в обрыве. Первым делом я сдул коннектор АКБ, перепаял его и девайс наконец-то нормально включился… ненадолго.
      Произошло падение в «белый экран», как и вторая плата. Причиной этому стала «стекляшка» рядом — токовый датчик LM3820: вероятно, в ходе ремонта коннектора, читатель умудрился неравномерно поплавить шары под стекляхой, из-за чего контакт нарушился. Стекляха среагировала на прогрев с флюсом и девайс снова включился…

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      Коннектор АКБ уже был, в скажем так, не идеальном состоянии, поэтому для точного исключения влияния коннектора я залудил контакты. Я люблю, когда платы не уколхожены, а весь ремонт близок к заводскому — поэтому коннектор «за кадром» будет заменен на норм.

      Но не заряжался. 🙁 При попытке зарядить девайс, система показывала сообщение «не заряжается» и потребление падало в ноль. Ремонт я проводил ещё тогда, когда у меня и станции нормальной не было, из-за чего я умудрился сколоть NTC-термистор прямо под коннектором аккумулятора (обычно он расположен либо с обратной стороны коннектора АКБ, либо с обратной стороны платы), прямо с пятачками.

      Я знаю, что иногда меня читают опытные мастера с многолетним опытом, которые уже тянутся написать «Рукожоп! Мы в нулевых в ещё более тяжелых условиях умудрялись мобилки ремонтировать, а ты вон люкей себе не смог купить!». Но я лично считаю, что если косяк нормально исправлен, даже через год — то это не косяк. 🙂 Поэтому лезем в схему и смотрим, куда у нас уходит BTEMP:

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      BTEMP идёт в UEM через обвязку в виде конденсатора C230, который расположен с обратной стороны платы, около КП. Найти его можно в Component finder’e, который можно найти в самом конце почти любой схемы на телефоны Nokia:

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      Подпаиваемся, включаем и девайс и… всё снова работает, в том числе и зарядка. 🙂
      На этом ремонт устройства закончен.

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      Отдельное слово хотелось бы сказать о дисплеях: для N-Gage обычно их принято считать достаточно редкими. Однако есть нюанс: практически все смартфоны Nokia на платформе WD2 (и пару на BB5 — например, N70) использовали одну и ту же матрицу с параллельным интерфейсом. Различия были лишь в форме шлейфа. В N70, например, этот дисплей ставился «перевернутым», однако длины шлейфа не хватало для того, чтобы поставить дисплей в N-Gage. Тем не менее, теоретически можно попробовать поставить куда менее редкий дисплей от 6630.

      В процессе подготовки материала и изучения схемы, я вывел небольшой мануал по базовой диагностике N-Gage и любого телефона Nokia на платформе WD2:

      • Белый экран, есть звук включения и реакция кнопок. Чаще всего виноват EMIF-фильтр COM01F2: хрупкая «стекляха», которая повреждается при попадании влаги или падении устройства. Реже — обрыв сигнальных линий дисплея до коннектора дисплея, а то и отвал омапа.
      • Белый экран, ноль реакции: из-за бага в первых версиях прошивки, при полном заполнении внутренней памяти девайс виснул на белом экране. Реже — проблемы с питанием на OMAP, отвал процессора. Из-за попадания воды может пострадать токовый датчик.
      • Нет подсветки, лого Nokia: обрыв BSI или неподходящий аккумулятор.
      • Нет реакции на кнопку включения: замерить напряжение на входе кнопки включения (должно быть близко к VBAT), дальше смотреть в сторону UEM и его обвязки. На некоторых смартфонах Nokia (уже чуть более поздней платформы — например N70) кнопка включения идёт через EMIF-фильтр вместе с клавиатурой, из-за чего убитая стекляха может стать причиной отсутствия напряжения на PWRON.
      • Нет подсветки, есть изображение: проверить напряжение на C130 — если там есть 13.3В, значит бустер работает нормально. Если напряжение более 13В, то нет фидбека (т. е. катода с подсветки на самом дисплее), необходимо проверить обрыв на коннекторе дисплея. Проверить драйвер подсветки D130, при необходимости заменить (подходит с многих Nokia тех лет, иногда кустарно заменяют на драйверы подсветки с других телефонов).

      ❯ Знакомимся с девайсом поближе

      Как я уже говорил выше, читатель задарил мне ещё и флэшку, на которой было установлено куча игр: как портов игр с других платформ, так и нативных «дампов» с картриджей, а также эмуляторов. Было ли во что поиграть на N-Gage? Давайте узнаем:

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      Именно на платформу N-Gage вышло не так уж и много игр: всего около 50. Однако среди них всё равно найдется во что поиграть: многие известные издатели решили рискнуть и разработать игры по собственным вселенным для N-Gage. В каких-то случаях это были порты с других платформ (например, Asphalt 2 с PSP, хотя это не совсем верно, поскольку Asphalt изначально мобильная игра), в каких-то уникальные игры, дополняющие ЛОР той или иной вселенной (например, TES Travellers). Не забываем про игры для обычных Symbian-смартфонов, порты и J2ME игры: таким образом, библиотека получается весьма и весьма обширной!

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      Ну и не стоит забывать и о эмуляторах! С играми для NES и SMD, игровой потенциал N-Gage увеличивается в разы. Ещё бы дисплей был чуть-чуть побольше и хотя-бы классический TN, а не немного блеклый CSTN и было бы вообще идеально.

      Помимо игр, на многих Symbian-смартфонах стояли некоторые приложения, которые были must-have для тех лет: например, файловый менеджер X-Plore с диспетчером задач, а также сторонний плеер LCG JukeBox (нормальный плеер с плейлистами появился только в Symbian 8). Иногда диспетчер задач не спасал и девайс приходилось перезагружать.

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      Давайте же глянем на игры подробнее. Как я уже говорил ранее, все 3D-игры были софтварными: т. е. вся трансформация, обработка освещения и растеризация треугольников с текстурированием и перспективной коррекцией (если была) происходила исключительно на ЦПУ. Поскольку FPU в процессоре не было, использовались fixed-point числа.

      Переходим к гоночкам. Тут у нас аж две части Asphalt, ещё тогда, когда серия не стала донатным «фритуплеем». Asphalt 2 весьма занимательная игра с оптимальной производительностью, кое-где конечно бывают просадки, но в целом более чем играбельно. Как это игралось в нулевых? Сравните скриншоты с j2me-версией, которая напоминает гоночные 2.5D игры с SMD и NES (при этом, в ней есть 3D-элементы и игра использует M3G) и версию для Symbian/PSP/NDS, думаю тут всё итак будет понятно:

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      Однако большинство читателей наверняка интересуют игры в известных вселенных. Взять, например, полноценный порт первой Tomb Raider. Насколько я понимаю, оригинальная TR славилась тем, что изначально разрабатывалась с расчетом на легкое портирование между разными платформами (да чего уж там говорить, игру отреверсили и переписали с нуля как минимум два раза!). Первый Pentium неплохо тянул TR в софтваре, а N-Gage справляется явно не хуже:

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      Не забываем и про 2D! В некоторых телефонах Motorola, Siemens и Samsung использовались внешние 2D видеоускорители ATI Imageon. В их задачи входила обработка изображения с камеры, функции контроллера дисплея, а также аппаратное ускорение некоторых 2D-операцией: блиттинг, отрисовка линий, прямоугольников и возможно ещё каких-то примитивов. Однако N-Gage, даже без помощи аппаратного блиттинга был способен выдавать приемлемый FPS и уровень графики в 2D играх. Например, в Sonic, где у нас есть параллаксовые фоны с покадровой анимацией:

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      Ну и нельзя не вспомнить про уникальную игру на N-Gage: TES Travels Shadowkey, которая была разработана специально для N-Gage и поиграть в неё можно только на оригинальном N-Gage, пропатченном Symbian-девайсе или EKA2L1. Вообще, это полноценная RPG от первого лица, расширяющая лор игры в Хаммерфелле и как минимум из-за этого она достойна к ознакомлению. Игра стилистически заметно напоминает Morrowind, графика близка по уровню к PS2. FPS, конечно, колеблется в районе 10, из-за чего игру можно считать пошаговой… но тем не менее, полноценная FPS RPG на мобилках — это многого стоит!

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      Есть также примеры отличной графики и… очень низкой производительности. Если в TES ещё можно попробовать поиграть в пошаговой манере, то как насчет шутера от первого лица в 5-6 кадров? Речь, конечно же, о Call of Duty. Игра получилась очень красочной (с трушными полигональными ландшафтами и кучей пропов), но крайне медленно работало на желез N-Gage.

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      ❯ А как насчёт хоумбрю?

      С разработкой своих приложений под N-Gage дела обстоят сложно. С одной стороны, в Symbian 6.1 ещё не было сертификатов, необходимости делать джейлбрейк и менять дату в устройстве. С другой стороны, для разработки под N-Gage требуется установка оригинального SDK для S60: приложения скомпилированные с помощью более свежих версий SDK работать не будут! Ни о каком Qt и речи не идёт и даже Carbide окажется слишком свежим для нашего устройства.
      Оригинальный SDK можно скачать здесь.

      Игровая легенда из нулевых: каким был Nokia N-Gage QD? Обзор, аппаратный ремонт и программирование под Symbian Опрос, Гаджеты, Программирование, Обсуждение, Электроника, Nokia, N-gage, Ретро, Телефон, Смартфон, Symbian, Девайс, Ништяки, Редкость, Коллекция, Ремонт, Схемотехника, Wd2, Видео, YouTube, Длиннопост

      Кроме того, SDK использует весьма своеобразную систему сборки, написанную на Perl, которая поддерживает только древнюю версию ActiveState Perl 5.6.1 аж от 2001 года и не работает на Windows 7/8/10! С отладкой на реальном устройстве тоже возникнут проблемы: для этого необходим относительно редкий FBus-кабель (который устанавливается вместо аккумулятора и подключается к ПК через RS232-преобразователь), либо использование программатора а-ля UFS HWK. Хотите отлаживать игру на ПК? Тут есть симулятор, прямо как при разработке под iOS: однако этих симуляторов целых два (для Visual C++ 98 и CodeWarrior) и с каждым возникают проблемы при сборке (то линкер крашнется, то разработчики забудут положить часть реализации системных либ для разных симуляторов в разные версии SDK). Хотите разрабатывать игры? С симулятором об этом можно забыть — отрисовка слишком медленная. Готовьтесь писать кроссплатформенный рантайм, который под Windows будет использовать GDI, а под Symbian нативное API для графики! Программа крашнулась на реальном устройстве и инструментов для отладки у вас нет? Ничего подробнее «приложение остановлено» вы не получите!

      Ну а вишенкой на торте станет весьма своеобразный сабсет C++, который используется для написания приложений. Сама система полностью построена по принципам ООП, однако ради уменьшения размера выходного кода была полностью убрана поддержка исключений: предполагается, что программист будет вручную помещать объекты на стек (для Stack unwinding’а), полностью убран RAII как концепция с введением NewL и ConstructL, где L — означает Leave (т.е исключение может выбросить только функция-фабрика, а не фактический конструктор) и кодов ошибок, а также полное отсутствие поддержки глобальных переменных (но есть частичная поддержка констант — из преинициализированных данных, судя по всему, поддерживаются только строковые литералы). Да, никакого .data и .bss, что серьёзно усложняет портирование существующих приложений под Symbian. Спасибо что есть пакет для совместимости с POSIX и реализовали часть stdlib.

      Почему нет глобальных переменных?

      Приложения в Symbian — это, по сути, dll-библиотеки, с которыми общается UI-фреймворк. Ради сохранения памяти, в Symbian решили сделать все загружаемые библиотеки доступными для любых процессов в системе. Поэтому Symbian и не позволяет библиотекам иметь собственную статическую память, зато можно свободно использовать динамический аллокатор. У exe таких ограничений нет, однако там свои сложности при взаимодействии с системным API. Тем не менее, с Quake поступили своеобразным грязным хаком: Приложение в меню лишь «значок», который фактически запускает соответствующий exe-файл на флэшке!

      Дело улучшает кастомный SDK для хоумбрю от энтузиаста из Германии. Он портировал SDL2, Lua и адаптировал тулчейн для работы в современных системах. Но лично для меня это не трушно — нужно использовать оригинальный SDK. 🙂

      В целом — это одно из объяснений того, почему N-Gage стала относительно провальной как платформа для игр. Конечно в своё время был жив форум разработчиков Nokia, где были как официальные сэмплы от Nokia, так и мануалы от других разработчиков, однако базовые косяки при проектировании архитектуры платформы портили всю малину. Чего уж стоит обратная совместимость: для быстрой отрисовки графики предполагалось рисовать картинку в обход графического сервера, напрямую получая указатель на фреймбуфер. В начале фреймбуфера лежала структура с описанием разных пиксельформатов, которые были отнюдь нестандартными: 12-битный, 16-битный, 18-битный. Из-за этого, игры для старых версий Symbian могли давать артефакты на 9.x, например.

      Написание полноценной, пусть и небольшой игры — материал для отдельной статьи. Есть идея написать кроссплатформенную игрушку, которая работала под разными платформами кнопочных девайсов: от Motorola ROKR на Linux и китайских клонах Nokia (E71 все помнят?), до эльфов на Siemens’ах и Motorola E398. Таким образом, мы рассмотрим особенности разработки под каждую платформу (например, на моторах был 2D-ускоритель ATI Imageon).

      ❯ Заключение

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

      А вам понравился N-Gage?

      P. S.: Друзья! Время от времени я пишу пост о поиске различных китайских девайсов (подделок, реплик, закосов на айфоны, самсунги, сони, HTC и т. п.) для будущих статей. Однако очень часто читатели пишут «где ж ты был месяц назад, мешок таких выбросил!», поэтому я решил в заключение каждой статьи вставлять объявление о поиске девайсов для контента. Есть желание что-то выкинуть или отправить в чермет? Даже нерабочую «невключайку» или полурабочую? А может, у этих девайсов есть шанс на более интересное существование! Смотрите в соответствующем посте, что я делаю с китайскими подделками на айфоны, самсунги, макбуки и айпады!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *