• Доброшрифт

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


      Читать дальше →
    • Реверс-инжиниринг неизвестного процессора по единственной программе

      • Перевод

      TL;DR: мы выполнили обратную разработку программы, написанной для полностью неизвестной архитектуры ЦП без какой-либо документации на ЦП (без эмулятора, без ISA, без всего) всего за десять часов. Из статьи вы узнаете, как нам это удалось…

      В прошлые выходные мы с командой CMU PPP поучаствовали Teaser CTF 2019 команды Dragon Sector, чтобы расслабиться и отойти от жёсткого дедлайна CHI 2020. Dragon Sector — это уважаемая польская команда, имеющая историю интересных CTF, поэтому мне было интересно, что у них есть в запасе.

      Решив “ummmfpu”, — задачу, в которую входил реверс-инжиниринг байткода для сопроцессора с плавающей запятой Micromega uM-FPU, я решил поучаствовать в соревновании по решению задачи CPU Adventure, которая на тот момент не была решена ни одной из команд (в результате мы оказались единственными, кто справился с заданием).

      Вот описание задачи CPU Adventure:

      Мой дедушка в 60-х годах занимался разработкой компьютеров. Наводя порядок на его чердаке, я нашёл странную машину. Рядом с машиной лежала стопка перфокарт с пометкой “Dragon Adventure Game”. Спустя какое-то время мне удалось подключить её к современному оборудованию, но игра слишком сложная и я не могу добраться до конца без читерства. Сможете мне помочь? Прилагаю транскрипцию перфокарт, используемых в машине. Утверждается, что машина имеет 4 регистра общего назначения, 1 кибибайт памяти данных и 32 кибибайта памяти команд. Чтобы сыграть в игру, подключитесь к серверу следующим образом: socat tcp4-connect:cpuadventure.hackable.software:1234 fd:0,rawer Подсказка: процессор машины уникален, не пытайтесь гуглить информацию по нему.

      game.bin
      Читать дальше →
    • Причудливая история перевода на английский Metal Gear Solid

      • Перевод
      image

      Когда я в последний раз видел Хидео Кодзиму, мы оба были голыми.

      Это произошло в ротэнбуро (горячем источнике) традиционной японской гостиницы рёкан, во время отпуска компании Konami неподалёку от горы Фудзи. Тогда он ещё не начал качать железо и был намного худее. Хидео больше походил на Сайко Мэнтиса (Psycho Mantis). Сегодня он вполне бы сошёл за Снейка. Рад за него.

      Хотя сейчас в это трудно поверить, но тогда, в середине 90-х, Кодзима был почти неизвестен на Западе. Впервые я встретился с ним в офисе Konami в токийском деловом районе Тораномон, где мы работали примерно с сентября 1993 года до марта 1995 года. Эти полтора года показались мне из-за сильного стресса пятью: я был единственным иностранцем в офисе и на работу приходилось добираться на поезде в ужасных условиях токийского часа пик. Позже мне предстояло заняться переводом на английский язык Metal Gear Solid — задачей, слишком масштабной для одного человека.

      И вот как это было.
      Читать дальше →
      • +19
      • 7,3k
      • 6
    • Как разработчик, я никогда не знаю себе цену, потому что её нет. Но вся система построена так, как будто она есть


        Каждый раз перед собесом я говорю себе: "Спокойно, не нужно ничего выдумывать, доучивать и врать, твоих знаний и опыта достаточно для того, что бы работать у них. Ты усилишь любую команду, тебе есть что предложить, а пробелы в твоих знаниях — приемлемы. Если бы они знали о твоих навыках всё, что знаешь ты, они бы точно тебя взяли". Но когда начинается собеседование, я всегда перестаю в это верить. Все два часа интервью я хожу как по минному полю, что бы не дай бог не спалиться, что я чего-то не знаю.

        Читать дальше →
      • Современная игра для NES, написанная на Lisp-подобном языке

        • Перевод
        What Remains — это повествовательная игра-адвенчура для 8-битной видеоигровой консоли NES, выпущенная в марте 2019 года как бесплатный ROM, запускаемый в эмуляторе. Она создавалась небольшой командой Iodine Dynamics на протяжении двух лет с перерывами. В настоящий момент игра находится на этапе реализации в «железе»: мы создаём из переработанных деталей ограниченный набор картриджей.


        В игре есть 6 уровней, на которых игрок ходит по нескольким сценам с картами с прокруткой в четырёх направлениях, общается с NPC, собирает улики, знакомится их миром, играет в мини-игры и решает простые головоломки. Я был главным инженером проекта, поэтому столкнулся со множеством трудностей при реализации видения команды. Учитывая серьёзные ограничения оборудования NES, достаточно сложно создавать для неё любую игру, не говоря уже о проекте с таким количеством контента, как в What Remains. Только благодаря созданным полезным подсистемам, позволяющим скрыть эту сложность и управлять ею, мы смогли работать как одна команда и завершить игру.


        В этой статье я расскажу о некоторых технических подробностях отдельных частей движка игры. Надеюсь, другим разработчикам они окажутся полезными или хотя бы любопытными.
        Читать дальше →
        • +23
        • 6,6k
        • 3
      • Создаём портативную платформенную игру на микроконтроллере Cortex M0+

        • Перевод

        Введение


        (Ссылки на исходный код и проект KiCAD приведены в конце статьи.)

        Хотя мы родились в 8-битную эпоху, нашим первым компьютером был Amiga 500. Это великолепная 16-битная машина, обладавшая потрясающими графикой и звуком, благодаря чему она отлично подходила для игр. Очень популярным игровым жанром на этом компьютере стали платформеры. Многие из них были очень цветастыми и обладали очень плавным параллаксным скроллингом. Это стало возможно благодаря талантливым программистам, гениально использовавшим сопроцессоры Amiga для увеличения количества экранных цветов. Взгляните, например на LionHeart!


        Lionheart на Amiga. Это статичное изображение не передаёт всю красоту графики.

        С 90-х электроника сильно поменялась, и теперь есть множество маленьких микроконтроллеров, позволяющих создавать удивительные вещи.

        Мы всегда любили платформенные игры, а сегодня всего за несколько долларов можно купить Raspberry Zero, установить Linux и «довольно легко» написать красочный платформер.

        Но это задача не по нам — мы не хотим палить из пушки по воробьям!

        Мы хотим использовать микроконтроллеры с ограниченной памятью, а не мощную систему на чипе со встроенным GPU! Другими словами, мы хотим трудностей!
        Читать дальше →
      • В кабине машиниста поезда


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

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

          В общем, добро пожаловать в кабину поезда «Аэроэкспресс» и в рабочий день машиниста. Причём не обычного, а Алексея Александровича Назарова — человека, который испытывал первые швейцарские составы компании Stadler, принимал их для России и учил других машинистов обращаться с ними.
          Читать дальше →
        • В гостях у Владимира Лихачева, отца Николая Лихачева, более известного как Крис Касперски

            Привет, Хабравчане.

            Как я и обещал, сегодня я расскажу как я съездил в первый раз в Успенское, в гости к Владимиру Лихачеву. И хотя поездка была уже больше года назад, сейчас я буду вспоминать специально для Вас, как я провел эти 4 дня в доме Криса Касперски. Но как это ни печально, на самом деле я ездил не в гости, а на помины. Погостить я ездил уже в следующий раз, но чтобы не смущать читателя столь таким трагическим заголовком, пусть будет так как есть. А случилось всё это так.

            image
            Читать дальше →
          • Грязные хаки ассемблера 6502

            • Перевод
            В этой статье перечислены некоторые трюки, которые применяли участники моего маленького конкурса программирования Commodore 64. Правила конкурса были просты: создать исполняемый файл C64 (PRG), который рисует две линии, чтобы сформировать изображение ниже. Побеждал тот, чей файл меньше по размеру.


            Конкурсные работы публиковались в открытых твитах и личными сообщениями, которые содержали только байты PRG-файла и хэш MD5.
            Читать дальше →
          • Не работайте в плохих проектах

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


              Читать дальше →
            • Криптографические атаки: объяснение для смятённых умов

              • Перевод
              При слове «криптография» некоторые вспоминают свой пароль WiFi, зелёный замочек рядом с адресом любимого сайта и то, как трудно залезть в чужую почту. Другие вспоминают череду уязвимостей последних лет с говорящими аббревиатурами (DROWN, FREAK, POODLE...), стильными логотипами и предупреждением срочно обновить браузер.

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

              За последние годы коллекция криптографических атак превратилась в зоопарк кричащих логотипов, набитых формулами научных статей и породила общее мрачное ощущение, что всё сломано. Но на самом деле многие из атак основаны на нескольких общих принципах, а бесконечные страницы формул часто сводятся к простым для понимания идеям.
              Читать дальше →
            • Революция закончилась. Есть ли альтернатива литий-ионному аккумулятору?



                Недавно мы рассказывали об истории изобретения литий-ионных аккумуляторов, которые дали мощнейший толчок развитию портативной электроники. Каждый год технологические СМИ сообщают нам о готовящейся энергетической революции — ещё чуть-чуть, еще год-другой, и мир увидит аккумуляторы с фантастическими характеристиками. Время идет, а революции не видно, в наших телефонах, ноутбуках, квадрокоптерах, электромобилях и смарт-часах по-прежнему установлены разные модификации литий-ионных батарей. Так куда делись все инновационные аккумуляторы и есть ли вообще какая-то альтернатива Li-Ion?
                Читать дальше →
              • Создание игры для Game Boy

                • Перевод
                image

                Несколько недель назад я решила поработать над игрой для Game Boy, создание которой доставило мне большое удовольствие. Её рабочее название «Aqua and Ashes». Игра имеет открытые исходники и выложена на GitHub.

                Как мне пришла в голову эта идея


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

                Мне на почту пришёл еженедельный дайджест itch.io о гейм-джемах, в котором объявлялось начало Mini Jam 4. Это был 48-часовой (ну, на самом деле чуть больше) джем, в котором ограничением было создание графики в стиле Game Boy. Моей первой вполне логичной реакцией стало желание создать homebrew-игру для Game Boy. Темой джема были «времена года» и «пламя».

                Немного подумав над сюжетом и механиками, которые можно реализовать за 48 часов и вписывающиеся в ограничения темы, я придумала клон новую интерпретацию уровня из игры для SNES 1993 года Tiny Toon Adventures: Buster Busts Loose!, в которой игрок в роли Бастера играет в американский футбол.
                Читать дальше →
                • +42
                • 9,2k
                • 3
              • Создаем 2D игру на Python с библиотекой Arcade

                  Всем привет!

                  Мы продолжаем делится с вами интересными найденными вещами про питончик. Сегодня вот решили разобраться с 2D играми. Это, конечно, немного попроще, чем то, что проходят у нас на курсе «Разработчик Python», но не менее интересно это уж точно.

                  ПЕРЕВОД
                  Оригинал статьи — opensource.com/article/18/4/easy-2d-game-creation-python-and-arcade
                  Автор — Paul Vincent Craven


                  Поехали.

                  Python — выдающийся язык для начинающих изучать программирование. Он также идеально подходит тем, кто хочет “просто взять и сделать”, а не тратить кучу времени на шаблонный код. Arcade — библиотека Python для создания 2D игр, с низким порогом вхождения, но очень функциональная в опытных руках. В этом статье я объясню, как начать использовать Python и Arcade для программирования игр.

                  Я начал разрабатывать на Arcade после преподавания азов библиотеки PyGame студентам. Я очно преподавал PyGames в течение почти 10 лет, а также разработал ProgramArcadeGames.com для обучения онлайн. PyGames отличная, но в какой-то момент я понял, что устал тратить время на оправдание багов, которые никогда не фиксятся.

                  Меня беспокоило преподавание таких вещей, как событийный цикл, которым уже почти не пользовались. И был целый раздел, в котором я объяснял, почему y-координаты повернуты в противоположном направлении. PyGames обновлялась редко и базировалась на старой библиотеке SDL 1, а не чем-то более современном вроде OpenGL. На светлое будущее я не рассчитывал.

                  В моих мечтах была простая и мощная библиотека, которая бы использовала новые фичи Python 3, например, декораторы и тайп-хинтинг. Ей оказалась Arcade. Посмотрим, как начать ее использовать.

                  Читать дальше →