Pull to refresh
14
7.5
Дмитрий @xverizex

Разработчик

Send message

Игры на промышленных девайсах? Легко! Портируем эмуляторы и Wolfenstein 3D на ТСД за 500 рублей на практике

Level of difficultyMedium
Reading time9 min
Views4.6K

Дисклеймер: употребляемые слова ‭вроде «портируем‭», ‭«хакаем‭» и ‭«реверсим‭» совсем не значат, что статья предназначена исключительно для гиков! Я стараюсь писать так, чтобы было понятно и интересно абсолютно всем!

Наверняка многие мои читатели так или иначе слышали новости о том, что известные игры были портированы на самые разные платформы. В какой-то момент к такой же идее пришёл и я, однако мне хотелось портировать игры и эмуляторы на довольно диковинные промышленные девайсы, которые работают на платформе Windows CE. Как я портировал Wolfenstein и эмулятор NES на бравого, но списанного в утиль трудягу склада и зачем? Читайте в сегодняшней подробнейшей статье!

Читать далее
Total votes 36: ↑34 and ↓2+47
Comments17

Рецензия на книгу «Изучаем Git: пошаговое руководство с наглядными примерами»

Level of difficultyEasy
Reading time8 min
Views9.6K

Если и есть инструмент, который на 100% обязаны освоить все слушатели ИТ‑курсов и начинающие разработчики еще в начале карьеры — то это Git. Книга «Изучаем Git: пошаговое руководство с наглядными примерами» (Learning Git. A Hands‑On and Visual Guide to the Basics of Git) от издательства O'Reilly Media, в переводе от Alist (БХВ Петербург) — это руководство «с нуля» по самой популярной системой контроля версий. Изложены основы Git: установка, графический интерфейс и командная строка, локальные репозитории и коммиты, ветки и слияния.

Читать далее
Total votes 14: ↑12 and ↓2+16
Comments8

Детекторный приёмник. Немного практики

Level of difficultyEasy
Reading time15 min
Views11K

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

Читать далее
Total votes 38: ↑37 and ↓1+60
Comments101

Интегральные резисторы или О чем молчат в спорах про проектные нормы

Level of difficultyMedium
Reading time20 min
Views11K

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

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

Правильно, ничего! Но есть нюансы.
Total votes 98: ↑98 and ↓0+127
Comments18

Некоторые малоизвестные фичи, фокусы и причуды языка C

Reading time19 min
Views23K

В этом посте разобраны некоторые фокусы, причуды и фичи языка C (некоторые из них – весьма фундаментальные!), которые, казалось бы, могут сбить с толку даже опытного разработчика. Поэтому я потрудился сделать за вас грязную работу и (в произвольном порядке) собрал некоторые из них в этом посте. Примеры сопровождаются ещё более вольными краткими пояснениями и/или листингами (некоторые из них цитируются).

Конечно же, здесь я не берусь перечислять абсолютно всё, так как факты из разряда «функция nan() не может устанавливать errno, поскольку в определённых ситуациях поведёт себя как strtod()» не слишком интересны.

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

Читать далее
Total votes 75: ↑74 and ↓1+93
Comments45

МК-85С. Оживляем шифровальный калькулятор

Level of difficultyMedium
Reading time11 min
Views13K
Приветствую всех!
Уверен, каждый из тех, кто интересуется отечественной вычислительной техникой, слышал про этот прибор. Давным-давно на базе «гражданского» микрокомпьютера «Электроника МК-85» была выпущена специализированная версия — МК-85С. Предназначена она была для шифрования. Очень мало кто видел этот аппарат вживую, а тех, кто знает, как он работает, ещё меньше. Долгое время считалось, что таких девайсов остались считанные единицы, но вот не так давно мне повезло и я смог заполучить себе такой экземпляр. Так что сегодня у вас есть уникальный шанс узнать его тайну и даже попробовать что-то зашифровать или расшифровать.



Итак, в сегодняшней статье поговорим, наверное, о самом загадочном представителе отечественной портативной вычислительной техники. Заодно посмотрим на него в работе и узнаем, что у него внутри. Традиционно будет много интересного.
Читать дальше →
Total votes 130: ↑129 and ↓1+166
Comments112

Радио без батареек

Reading time3 min
Views141K
Может ли радиоприемник состоять менее чем из 10 деталей и работать без батареек?

Да, может: детекторные радиоприемники очень просты и могут работать, получая питание только от радиоволн. В этой статье я опишу, как можно сделать такую штуку своими руками, потратив на всю работу не более часа! ;)

Чем хорош детекторный радиоприемник?
Читать дальше →
Total votes 189: ↑166 and ↓23+143
Comments265

Тетрис на ATtiny10

Level of difficultyHard
Reading time4 min
Views10K

Решив использовать последние дни отпуска для приведения имеющихся у меня запасов электронных компанентов к некоторому подобию порядка я наткнулся на неизвестную михросхему SOT-23-6 с еле читаемой маркировкой.

Читать далее
Total votes 124: ↑124 and ↓0+170
Comments30

Самые главные ошибки в карьере UX дизайнера и уроки, которые я усвоил

Level of difficultyMedium
Reading time5 min
Views2.7K

Мой путь UX-дизайнера, разумеется, состоял из взлетов и падений.

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

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

Итак, какую самую серьезную ошибку совершил я? И какой урок я извлек после?

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

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

Оставлю на ваше усмотрение: либо последовать нашим советам, либо самостоятельно строить свой путь.

Итак, классифицировал самые популярные ошибки 👇

Читать далее
Total votes 9: ↑6 and ↓3+3
Comments2

Создание простого для использования конфига DWM

Level of difficultyMedium
Reading time3 min
Views12K

Как настроить DWM для простого использования? Как настроить систему для DWM и других WM? Как сконфигурировать SlStatus? Я расскажу все тут четко и понятно

Читать далее
Total votes 4: ↑4 and ↓0+4
Comments15

Model-View в QML. Часть первая: Представления на основе готовых компонентов

Reading time10 min
Views64K
В этой части моего цикла статей про Model-View в QML мы начнем рассматривать представления и начнем с тех, которые делаются на основе готовых компонентов.

Model-View в QML:
  1. Model-View в QML. Часть нулевая, вводная
  2. Model-View в QML. Часть первая: Представления на основе готовых компонентов
  3. Model-View в QML. Часть вторая: Кастомные представления
  4. Model-View в QML. Часть третья: Модели в QML и JavaScript
  5. Model-View в QML. Часть четвертая: C++-модели

Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments10

Делаем твёрдый переплёт для любимых книжек

Reading time6 min
Views531K
Небольшое вступление

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

В своей статье мне хотелось бы поподробнее остановиться на вопросах собственно печати (как сделать этот процесс быстрым и удобным) и изготовления книги из доступных материалов.

Большое вступление

Некоторое время назад мне захотелось прочитать цикл Дугласа Адамса «Автостопом по галактике». Я попробовал почитать несколько переводов и не один меня не устроил. Поэтому было принято решение — читать на английском! Найти эти книги в оригинале в наших книжных магазинах довольно сложно. А если и есть, то только первая часть цикла. В электронном виде найти несколько проще. Но я предпочитаю читать с бумаги (читалку на E-ink куплю обязательно — очень нравятся), поэтому книги я распечатываю.

Первые две книги выглядели так:
image

Я их прочитал с огромным удовольствием, но выглядели они не очень хорошо. И я решил, что «Life, the Universe, and Everything» нужно делать книжкой.

Процесс с картинками и комментариями под катом. Осторожно, действительно много картинок.
Читать дальше →
Total votes 348: ↑337 and ↓11+326
Comments142

Имплементация маппера MMC1 ассемблер 6502 nes/famicom/dendy

Level of difficultyMedium
Reading time6 min
Views2.7K

Игры не использующие мапперы в NES ограничены, 16 кб PRG ROM (хранилище программного кода) и 8 кб CHR ROM (хранилище графики). С развитием разработки игр на NES, встал вопрос, а как увеличить данные ограничения и на помощь пришли микросхемы мапперы. Что же такое мапперы мы и разберем сегодня и как их использовать в своем коде.

Читать далее
Total votes 22: ↑22 and ↓0+22
Comments7

Android NDK: работа с OpenSL ES

Reading time11 min
Views15K
День добрый, Хабражители.

Я ранее писал про OpenAL. Позже товарищ zagayevskiy написал хорошую статью по OpenSL ES. В одной из наших игр, дабы не переписывать весь код по работе со звуком, мы не стали переписывать всё на OpenSL ES (при порте на Android). В игре использовалось не так много звуков, поэтому проблем с OpenAL не было. А вот в последней игре у нас использовалось много звуков (специфика игры обязывает), вот тут-то мы и столкнулись с большой проблемой (задержки при воспроизведении — меньшая из них). Было решено переписать всё на OpenSL ES. Для этого я написал парочку враперов, про которые уже рассказывал. Решил поделиться этим и на хабре, может кому-то пригодится.

  1. Краткое описание OpenSL ES.
  2. Аудио контент.
  3. Немного про обёртки.
  4. Принцип работы с объектами.
  5. Инициализация библиотеки (контекста).
  6. Работа со звуками.
  7. Проигрывание PCM.
  8. Проигрывание сжатых форматов.
  9. Заключение.
  10. Доп. информация.

Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments2

Реверс-инжиниринг домашнего роутера с помощью binwalk. Доверяете софту своего роутера?

Reading time10 min
Views67K


Несколько дней назад, я решил провести реверс-инжиниринг прошивки своего роутера используя binwalk.


Я купил себе TP-Link Archer C7 home router. Не самый лучший роутер, но для моих нужд вполне хватает.


Каждый раз когда я покупаю новый роутер, я устанавливаю OpenWRT. Зачем? Как правило производители не сильно заботятся о поддержке своих роутеров и со временем софт устаревает, появляются уязвимости и так далее, в общем вы поняли. Поэтому я предпочитаю хорошо поддерживаемую сообществом open-source прошивку OpenWRT.


Скачав себе OpenWRT, я так же скачал последний образ прошивки под мой новый Archer C7 с официального сайта и решил проанализировать его. Чисто ради фана и рассказать о binwalk.

Читать дальше →
Total votes 41: ↑40 and ↓1+55
Comments16

Пишем эмулятор Gameboy, часть 1

Reading time21 min
Views54K
Здравствуйте!

Не так давно на Хабре появилась статья о создании эмулятора chip-8, благодаря которой удалось хотя бы поверхностно понять, как пишутся эмуляторы. После реализации своего эмулятора появилось желание пойти дальше. Выбор пал на оригинальный Gameboy. Как оказалось, выбор был идеальным для ситуации, когда хочется реализовать что-то более серьезное, а опыт разработки эмуляторов практически отсутствует.

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

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

В данной статье мы познакомимся с Gameboy и начнем с эмуляции его процессора и памяти.

Пишем эмулятор Gameboy, часть 1
Пишем эмулятор Gameboy, часть 2
Пишем эмулятор Gameboy, часть 3
Читать дальше →
Total votes 122: ↑118 and ↓4+114
Comments32

Создаем ELF-файл с отладочной информацией (DWARF) вручную (для микроконтроллеров ARM)

Reading time27 min
Views30K

Введение


С недавнего времени я увлекся микроконтроллерами. Сначала AVR, затем ARM. Для программирования микроконтроллеров существует два основных варианта: ассемблер и С. Однако, я фанат языка программирования Форт и занялся портированием его на эти микроконтроллеры. Конечно, существуют и готовые решения, но ни в одном из них не было того, что я хотел: отладки с помощью gdb. И я задался целью заполнить этот пробел (пока только для ARM). В моем распоряжении была плата stm32vldiscovery с 32-битным процессором ARM Cortex-M3, 128кБ flash и 8 кБ RAM, поэтому я и начал с нее.
Писал я кросс-транслятор Форта конечно на Форте, и кода в статье не будет, так как этот язык считается экзотическим. Ограничусь достаточно подробными рекомендациями. Документации и примеров в сети по предмету почти нет, некоторые параметры подбирались мной путем проб и ошибок, некоторые — путем анализа выходных файлов компилятора gcc. Кроме того, я использовал только необходимый минимум отладочной информации, не касаясь, например, relocation-ов и множества других вещей. Тема очень обширна и, признаюсь, разобрался я с ней только процентов на 30, что оказалось для меня достаточным.
Читать дальше →
Total votes 30: ↑30 and ↓0+30
Comments3

Шейдеры 3D-игр для начинающих: эффекты

Reading time18 min
Views14K
[Первая часть]

Разобравшись с основами, в этой части статьи мы реализуем такие эффекты, как контуры объектов, bloom, SSAO, размытие, глубина резкости, пикселизация и другие.

Контуры



Создание контуров вокруг геометрии сцены придаёт игре уникальный внешний вид, напоминающий комиксы или мультфильмы.

Diffuse материала


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

uniform struct
  { vec4 diffuse
  ;
  } p3d_Material;

out vec4 fragColor;

void main() {
  vec3 diffuseColor = p3d_Material.diffuse.rgb;
  fragColor = vec4(diffuseColor, 1);
}

Здесь показан небольшой фрагментный шейдер, который рендерит диффузный цвет материала геометрии в текстуру буфера кадров. Эта текстура диффузного цвета из буфера кадров будет входящей текстурой для шейдера контуров.
Читать дальше →
Total votes 43: ↑41 and ↓2+39
Comments5

Налоги при продаже приложений и рекламы Google

Reading time7 min
Views34K
image

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

В прошлой статье Какие налоги нужно платить при выводе доходов от приложений в Apple iTunes мы кратко изложили алгоритм расчета налогов при получении дохода в iTunes Apple. Теперь предлагаем обсудить налоги с продаж приложений Google Play и рекламы Google AdSense.

Руководствоваться будем следующими договорами с Гугл, которые есть в официальном русском переводе на сайте корпорации:


Подробности под катом.
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments21

Operating Systems: Three Easy Pieces. Part 4: Введение в планировщик (перевод)

Reading time8 min
Views5.1K

Введение в операционные системы


Привет, Хабр! Хочу представить вашему вниманию серию статей-переводов одной интересной на мой взгляд литературы — OSTEP. В этом материале рассматривается достаточно глубоко работа unix-подобных операционных систем, а именно — работа с процессами, различными планировщиками, памятью и прочиими подобными компонентами, которые составляют современную ОС. Оригинал всех материалов вы можете посмотреть вот тут. Прошу учесть, что перевод выполнен непрофессионально (достаточно вольно), но надеюсь общий смысл я сохранил.

Лабораторные работы по данному предмету можно найти вот тут:


Другие части:


А еще можете заглядывать ко мне на канал в телеграм =)
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments0
1

Information

Rating
763-rd
Location
Россия
Date of birth
Registered
Activity