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

Игры, выжавшие из NES максимум (часть 1)
NES, как и ее многочисленные клоны, была популярна в мире на протяжении целого десятилетия, поэтому игроделы имели возможность прокачать скиллы в разработке под нее, и выжать из старушки максимум возможностей, вплоть до последнего жалкого бита. Ниже приводится обзор самых навороченных и технически продвинутых игр для NES, выполненный уважаемым racketboy.
Это первая часть перевода, продолжение здесь, окончание здесь.
YINLIPS YDP-G18 или PS Vita по-китайски

Строим Android x86

Возможность запуска Android x86 внутри виртуальной машины VirtualBox позволяет энтузиастам и создателям прошивок покопаться в настройках системы, настроить и пересобрать ядро и при этом не «кирпичизировать» настоящее устройство. VirtualBox предоставляет возможность использования привычных для Linux-разработчика средств отладки ОС. Для рядовых разработчиков Android-приложений отлично подходит эмулятор, использующий технологию Intel Hardware Accelerated Execution Manager. (подробнее можно прочесть здесь)
В статье приведен ряд практических советов по сборке образа Android x86 для запуска под виртуальной машиной VirtualBox и сборке эмулятора. Исходный код Android взят из официального репозитория проекта AOSP (Android Open Source Project), в качестве ядра использована адаптированная версия ядра Linux 2.6 от Intel.
[NES] Пишем редактор уровней для Prince of Persia. Глава первая. Знакомство
Disclaimer
В детстве, как и у многих, родившихся в 80-х, у меня была приставка Dendy. Клон японской FamiCom, подаренный нам добрыми китайцами, и распространяемый небезызвестной Steepler, раскрасил в яркие цвета детство многих из поколения 80-х. Раз за разом, проходя полюбившиеся мне игры вдоль и поперек, находя все возможные секреты (причем, зачастую, без книжек с громкими заголовками в духе «Секреты и прохождения 100500+1 игр», ценность которых стремилась к нулю), мне хотелось играть в них еще и еще, но с новыми уровнями, новыми секретами и новыми возможностями.
Некоторые игры предусматривали встроенный редактор уровней (например, Battle City, Fire'n'Ice aka Solomon's Key 2), но большинство из них, разумеется, таковой возможности не предоставляли. Хотелось сыграть (естественно!) в новый Super Mario Bros (о, как я любил и ненавидел китайцев, выпустивших картридж 99...9 in 1, в котором были уровни A-1, B-1,… Z-1, которые невозможно было пройти, или которые представляли собой дубли оригинальных уровней, но с измененными текстурами), Duck Tales 1, 2 и многие другие.
С появлением компьютера и возможности эмуляции на нем игр, забрезжил свет в конце туннеля моей мечты, и во мне начала украдкой теплиться надежда. Начали появляться различные редакторы игр, в которых достаточно указать ROM-файл и ты можешь не только увидеть всю игру целиком со всеми ее секретами и подводными камнями, но и добавить что-то свое.
Между тем, редакторы на одни игры находились чуть ли не по первым ссылкам в гугле, на другие же были запрятаны либо где-то далеко (но находились таки), либо отсутствовали вовсе. Найдя редакторы для большинства любимых мной игр, я никак не мог найти редактор для Персидского принца. Да, есть редакторы для DOS-версии, есть для SNES, но моя родная, — NES-версия, была обделена таким сокровищем.
Различного рода ресурсы по NES и ее эмуляции не очень охотно поддавались моему пониманию и я так и оставался где-то на уровне нуба.
И, однажды, в час небывало жаркого заката, в Москве, я, подтянув ремень, открыв HEX-редактор и эмулятор с отладчиком, приступил к изучению загадочного для меня набора байтов, содержащихся в ROM.
Начал я… Впрочем, перед тем, как я начну рассказывать далее, предостерегу:
Не рекомендуется лезть под кат профессионалам. Там рассматриваются «живодерские» методы новичка! Работа Вашей нервной системы может быть необратимо нарушена! Я предупредил.
[NES] Пишем редактор уровней для Prince of Persia. Глава вторая. Букетно-конфетный период
Disclaimer
Листая в редакторе изображений (в нем было очень удобно переходить между изображениями в папке) скриншоты, которые сделала для меня утилита, я… проснулся от будильника. На экране монитора светился очередной скриншот, который в списке находился где-то в первой трети из общего числа. Вопрос надо было решать каким-то иным способом.
Вечером того же дня…
[NES] Пишем редактор уровней для Prince of Persia. Глава третья. Первые строчки кода
Disclaimer
Процесс исследования — весьма занимательный процесс. Когда по байтику раскидываешь ту бинарную кашу, которая находится в файле, получается весьма стройная архитектура, которая скрывается за пеленой тех забавных закорючек, которые отображаются в шестнадцатеричном редакторе (или того хуже — в текстовом редакторе). Подход к процессу исследования необязательно должен сопровождаться тонкими технологиями, иногда проще разбить все молотком и изучать осколки. Ну, как в детстве.
[NES] Пишем редактор уровней для Prince of Persia. Глава четвертая. Он сам бежит! Или скелет в шкафу
Disclaimer
Если мы редактируем игру, то мы должны привести все ее детали в соответствие. Было бы глупо свою версию игры показывать миру, если в ней вылезают осколки оригинальной версии, вступая в противоречие с новым, вложенным в нее нами смыслом. Редактирование уровней игры не позволяет поменять некоторые повороты сюжета, которые вложили разработчики изначально.
С небольшой задержкой мы будем исправлять и сюжет.
[NES] Пишем редактор уровней для Prince of Persia. Глава пятая. Отражение
Disclaimer
Несмотря на то, что я хотел сделать простой редактор, который позволит изменить лишь «внешний вид» уровней игры, двойник персонажа не давал мне покоя. Мне очень не хотелось лезть глубоко в движок игры, но этот негодяй, появляющийся из зеркала, затем выпивающий бутылку «отравы» в середине игры, а потом и вовсе сбрасывающий принца в пропасть, не давал мне покоя. Неделю я боролся с психологическим эффектом «незавершенного действия», но так и не смог его побороть.
В ночь с пятницы на субботу я снова открыл отладчик, RAM Filter и начал искать…
[NES] Пишем редактор уровней для Prince of Persia. Эпилог. Темница
Disclaimer
«Раз за разом, проходя полюбившиеся мне игры вдоль и поперек, находя все возможные секреты, мне хотелось играть в них еще и еще, но с новыми уровнями, новыми секретами и новыми возможностями.», — писал я. Естественно, проходя одну и ту же игру в «штатном» режиме, начинался поиск чего-то такого, что скрыто за кадром. Если игра имеет скрытые уровни, комнаты, приемы или систему паролей, то обязательно весь день и еще полночи проходили за голубым экраном в попытках это найти, а пароли взломать. PoP не был исключением. И хотя тут я не подобрал алгоритм составления паролей, но все же смог найти парочку методов, которые позволяют составить правильный пароль из уже имеющегося. Правда сказать, куда ведет новый пароль, до момента его использования, я не мог.
Запускаем и эмулируем Windows на Raspberry Pi с помощью QEMU
Какое-то время назад я загорелся идеей запустить на своей Raspberry Pi 2 какую-нибуть Windows систему. Сначала я хотел узнать возможно ли установить её, просто записав на SDCARD и вставив в «малинку», но этому не дано было осуществится…
После я стал искать возможность запуска через какие-нибудь эмуляторы. Наткнулся на QEMU и стал копаться с ним. Пытался я запустить эмулятор очень долго, почти всё, что я находил на форумах, было написано на английском, причём информации там было «по-минимуму», а людей, которые запустили, было совсем немного. После нескольких неудачных попыток запуска QEMU, я решил написать на 4PDA в теме, посвящённой Raspberry. Там мне помогли, и я благополучно запустил Windows 98 (почти идеально...). Запускал я это на Raspibiane (Debian).
Собственная платформа. Часть 0.2 Теория. Интерпретатор CHIP8
Введение
Здравствуй, мир! Сегодня у нас перевод спецификации языка CHIP8. Это статья содержит только теоретическую часть.
Что такое CHIP8?
CHIP8 это интерпретируемый язык программирования, который был разработан Джозефом Вейзбекером (прим. перевод Joseph Weisbecker) в семидесятых для использования в RCA COSMAC VIP. В дальнейшем был использован в COSMAC ELF, Telmac 1800, ETI 660, DREAM 6800. Тридцать одна (35?) инструкция давали возможности для вывода простого звука, монохромной графики в разрешении 64 на 32 пикселя, а также позволяло использовать 16 пользовательских кнопок. Сегодня CHIP-8 часто используется для обучения базовым навыком эмуляции (не интерпретации). Интерпретаторы CHIP-8, часто по ошибке называемые „эмуляторами“, существуют на все более расширяющемся множестве платформ. Это обилие интерпретаторов связано со сходством дизайна интерпретатора CHIP-8 и эмулятора системы. Те, кто хочет разобраться в эмуляторах, нередко начинают с написания интерпретатора CHIP-8.
Удалённое управление эмулятором Fceux с помощью Python

Зачем это нужно?
Некоторые эмуляторы различных игровых консолей, в том числе и Fceux, позволяют писать и запускать пользовательские скрипты на Lua. Но Lua – плохой язык для написания серьёзных программ. Это скорее язык для вызова функций, написанных на Си. Авторы эмуляторов используют его только из-за легковесности и простоты встраивания. Точная эмуляция требует много ресурсов процессора, и ранее скорость эмуляции была одной из главных целей авторов, а о возможности скриптования действий если и вспоминали, то далеко не в первую очередь.
Сейчас мощности среднего процессора с головой хватает для эмуляции NES, почему бы тогда не использовать в эмуляторах мощные скриптовые языки вроде Python или JavaScript?
К сожалению, ни в одном из популярных эмуляторов NES нет возможности использовать эти или другие языки. Я обнаружил только малоизвестный проект Nintaco, который также основан на ядре Fceux, зачем-то переписанном на Java. Тогда я решил добавить возможность написания скриптов на Python для управления эмулятором сам.
Мой результат – это Proof-of-Concept возможности управления эмулятором, он не претендует на скорость или надёжность, но он работает. Я делал его для себя, но так как вопрос о том, как управлять эмулятором с помощью скриптов, встречается достаточно часто, то я выложил исходники на гитхаб.
Общие принципы работы QEMU-KVM

Мое текущее понимание:
1) KVM
KVM (Kernel-based Virtual Machine) – гипервизор (VMM – Virtual Machine Manager), работающий в виде модуля на ОС Linux. Гипервизор нужен для того, чтобы запускать некий софт в несуществующей (виртуальной) среде и при этом, скрывать от этого софта реальное физическое железо, на котором этот софт работает. Гипервизор работает в роли «прокладки» между физическим железом (хостом) и виртуальной ОС (гостем).
Поскольку KVM является стандартным модулем ядра Linux, он получает от ядра все положенные ништяки (работа с памятью, планировщик и пр.). А соответственно, в конечном итоге, все эти преимущества достаются и гостям (т.к. гости работают на гипервизоре, которые работает на/в ядре ОС Linux).
KVM очень быстрый, но его самого по себе недостаточно для запуска виртуальной ОС, т.к. для этого нужна эмуляция I/O. Для I/O (процессор, диски, сеть, видео, PCI, USB, серийные порты и т.д.) KVM использует QEMU.
NVIDIA BlueField 2: Эмуляция NVMe

Крупнейшие облачные провайдеры подключают виртуальные накопители к выделенным физическим серверам. Но если заглянуть в ОС сервера, то там будет физический диск с именем провайдера в поле «производитель». Сегодня мы разберем, как это возможно.
Я нашел 18K+ игр в NVIDIA GeForce NOW

Я, как и многие пользователи NVIDIA GeForce NOW, жду пока там добавят те игры, в которые действительно хотелось бы поиграть. Но бывало и наоборот, игры которые уже были добавлены, позже внезапно удаляли из GFN сервиса. В моем случае я хотел там пройти игры Mafia, и потом их все убрали.
Спустя время, их так и не вернули. И я решил попытаться разблокировать запретные игры NVIDIA GeForce NOW сервиса. Но нашел там то, что никак не ожидал увидеть.
Реализации машины в qemu
В процессе обратной разработки прошивок иногда возникает задача по ее эмуляции, например, для фаззинг тестирования или детального изучения поведения в динамике. На практике обычно для этого хватает фреймворков avatar2, unicorn, qiling и подобных. Однако они поддерживают далеко не все платформы и имеют ряд ограничений для решения таких задач. При разработке эмулятора PLC я столкнулся с тем, что ни один фреймворк для эмуляции не поддерживал требуемую платформу.
Частично эти ограничения снимает разработка эмулятора на базе qemu, однако статей по этой тематике в сети достаточно мало, а официальная документация не содержит примеров реализации простых девайсов. В этой статье я хотел бы восполнить этот недостаток и поделиться своим небольшим опытом по реализации машины в qemu, чтобы сэкономить время начинающих разработчиков и исследователей безопасности, сталкивающихся с похожей задачей.