• Реверс-инжиниринг. История. Моя
    +2
    Помогает в какой-то степени. Алгоритмы можно понять и изучая код — структуры данных в сеговских играх те же, алгоритмы компрессии, связанные с разработкой игр алгоритмы — AI врагов, поиск пути, допустимые упрощения в этих алгоритмах. Понимая ассемблер, можно намного лучше разобраться в низкоуровневой оптимизации, в том, какой оверхед дают скриптовые и высокоуровневые языки, в том, во что именно компилируется ваш код.
    Вы будете иметь представление о том, как защитить вашу программу от исследования и модификации. И самое полезное — улучшатся ваши навыки отладки и поиска ошибок в своих программах.
  • Модернизация IDA Pro. Отладчик для Sega Mega Drive (часть 1)
    0
    А ещё кроме иды варианты есть какие-то для исследователя. кстати?
  • Устройство спецэффектов для игр под NES. Часть 2
    0
    Я явно не упоминал в статьях, что число кадров в секунду, отрисовываемое видеопроцессором — постоянное число. Нельзя добиться торможения выводом большого числа спрайтов — видеопроцессор пропускает лишние и будет рендерить дальше с прежней скоростью.

    Тормоза связаны с тем, что разработчики написали слишком медленный игровой код, в примере с контрой причина в физическом движке. Там, фактически, реализована честная модель разрушаемости уровня. Любой враг выстрелом может разбить любой разрушаемый блок на уровне (например, пробить гранатой стенку, которая сдерживала катящуюся бочку), а не только попасть в игрока.
  • Устройство спецэффектов для игр под NES. Часть 2
    0
    В бетмене не мигает. Там разработчики реализовали интересную логику (думаю, в других играх это тоже встречается). Важные объекты, например, сам персонаж и босс рисуются в первую очередь, и из-за этого не мерцают, а пули и спрайт гуи — во вторую очередь и программно рисуются через кадр, т.е. мерцают они всегда, и пропускаться при превышении лимита в 8 спрайтов начинают тоже в первую очередь они. Вероятно, разработчики предполагали ситуацию, когда в строке с гуи будет перебор спрайтов, из-за за этого сделали спрайт с буквами «неважным», чтобы зарезервировать место для немерцающих объектов на этой строке.

    В Mistume Ga Tooru такой логики разделения нет, поэтому мигает всё. Как упоминали выше, можно в эмуляторе отключить лимит на вывод спрайтов в одной строке, и мерцание пропадёт.
  • Устройство спецэффектов для игр под NES. Часть 2
    0
    С мерцающими объектами это не баг, а фича. Разработчики специально выводят их в каждый раз в обратном порядке, чтобы один кадр рендерились одни объекты, а пропускались другие, а затем наоборот. Это не приводит к другим артефактам, кроме мерцания — лишние спрайты (а точнее даже строки спрайтов), просто будут пропущены.

    Каша из тайлов вызывается сбитыми таймингами — где-то в коде игры предполагается, что видеопроцессор находится в определённом месте кадра, а это почему-то не так. Отличий в таймингах денди от других режимов много — wiki.nesdev.com/w/index.php/Clock_rate, точно я не возьмусь предположить, что именно вызывает отличия, вполне возможно, что это связано с Time during which OAM can be written (это как раз время, за которое игра должна успеть записать данные о всех спрайтах на экране).
  • Устройство спецэффектов для игр под NES. Часть 2
    +1
    Из-за чего имена полосок индиакторов мерцают?

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

    Аппаратных причин для этого никаких нет. То, что этот спрайт выводится через кадр просто прописано в коде игры. Разработчики, скорее всего, случайно сделали вывод его той же функцией, которой рендерятся снаряды — там как раз программный вывод через кадр оправдан, чтобы показывать более 8 снарядов в линию (на чётных кадрах выводится одна половина снарядов, на нечётных – другая). Проверю внимательнее к следующей статье.
  • Устройство спецэффектов для игр под NES. Часть 2
    +1
    Таким же способом, как и в Super Spy Hunter, отдельный скроллинг каждой линии.

    (линии в каждой строке наслаиваются и сливаются, поэтому в статье я оставил пример, в котором «слой» состоит из нескольких строк, чтобы было нагляднее).
  • Устройство спецэффектов для игр под NES. Часть 2
    0
    Не могу в эмуляторе такого эффекта добиться. Скорее всего тоже из-за чего-то тайминги сбиваются при скролле.
  • Устройство спецэффектов для игр под NES. Часть 2
    +1
    Артефакты появляются вроде только если запускать PAL версию игры на денди, в NTSC-версиях всё нормально.
    www.emu-land.net/forum/index.php?topic=78279.0

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

    Для Elimination Boards (версия игра для региона PAL) строки разделения экрана на слои
    в режиме PAL:


    в режиме Dendy (сбиты тайминги рассчёта строк, на которых надо разделять экран и тайминг переключения банка памяти с графики GUI на банк с графикой облаков):

  • Устройство спецэффектов для игр под NES. Часть 2
    +1
    Нoстaльгируйте на здоровье. Пожалуйста
  • Последний шаг к «Яровой»
    +1

    Это что за чёрные списки такие, поделитесь, кто и по каким законам их будет составлять?

  • Последний шаг к «Яровой»
    +3
    Если жена вам эротическую фотографию пошлёт, вы её тоже дяденькам показать согласитесь?
  • 10000 лайков
    0
    Трижды пробежался по статье, что найти, какой из факторов четвёртый. Это тоже ваша хитрость для того, чтобы статью внимательнее читали?
  • Может поможет
    +1
    Надо на SkyEng зайти.

    Это те, которых роскомнадзор заблокировал случайно?
  • Устройство спецэффектов для игр под NES. Часть 1
    0
    wiki.nesdev.com/w/index.php/PPU_palettes
    Addresses $3F10/$3F14/$3F18/$3F1C are mirrors of $3F00/$3F04/$3F08/$3F0C. Note that this goes for writing as well as reading


    Нулевой цвет зеркалируется для обеих палитр, т.е. если вы в цикле записываете 32 байта в две палитры, то вы сначала пишете нужный цвет в палитру фона, а потом записью в 0x3F10 его затираете. И наоборот, записью в 0x3F10 вы меняете цвет в 0x3F00.

    Так что при записи палитры спрайтов нужно отдельные байты записывать, пропуская адреса, которые зеркалируются.
  • Устройство спецэффектов для игр под NES. Часть 1
    0
    Не согласен. Трюки и хитрости программисты графики использовали всегда, просто тогда это были трюки для того, чтобы сделать что-то, не умеет процессор. Позже — трюки, чтобы сделать то, что умеет последняя версия DirectX/OpenGL, а сейчас, чаще — трюки для обхода косяков Unity3D.

    Разница в том, что тогда они всё-таки были намного ближе к железу, и у них было меньше возможностей написать код, который работает, но они не знают почему. Ну и тогда разработчик графики мог быть иногда ещё и художником, вот это сейчас уже действительно редкость.
  • Устройство спецэффектов для игр под NES. Часть 1
    +1
    Дык привёл же вроде…
    habrahabr.ru/post/348212
    dendy.migera.ru/nes/g02.html

    Парой предложений понятнее целой статьи не распишешь. Если относительно NES сходу непонятно, сначала попробуйте разобраться с определениями индексированных цветов и палитровой графики.
  • Устройство спецэффектов для игр под NES. Часть 1
    0
    Если можно, объясните, как реализовали эффект «волн»


    Это эффект изменения позиции скроллинга в середине кадра, про такие будет в следующей части. Картинка рисуется нормальной в экранной странице, а при выводе каждой строки осуществляется смещение чётных строк на X пикселей влево, а нечётных — на X пикселей вправо (это позволяет делать маппер MMC3, который используется в игре). X меняется каждый кадр — получаются волны. Вот этот эффект с наложенными зелёными линиями в тех строках, на которых меняется сдвиг.


    Ну и как реализуется логика 3D в этой игре, ведь большинство уровней в трёх измерениях сделано.

    Ну, это называется 2,5D — для полноценного третьего измерения не хватает изменения размеров при удалении объектов от наблюдателя. Хотя там море во втором уровне сделано с симуляцией этого эффекта. Для 2,5D особенно делать ничего и не нужно, достаточно при рендере объектов сортировать в порядке от самых дальних к зрителю к самым ближним, см. Алгоритм художника
  • Пощупать нейросети или конструктор нейронных сетей
    +4
    Ну вот смотрите — вы выбрали интересную тему, но судя по вопросам от меня и выше, отбили интерес к программе, тем что:
    — нет версии под линукс
    — нет версии под веб-браузер
    — не запускается под современные ОС без шаманстве (возможно, потому, что vb6.0 вышел в 1998 году, 20 лет назад).
    — нет исходников (не каждый захочет запускать чужой exe-файл на своей машине).

    Если бы вы использовали, например, python, то ваша программа была бы кросс-платформенной, потенциально запускалась бы в браузере (с помощью jupyter notebook), её можно было бы прочитать перед запуском и выполнить на любой современной ос, кроме того, из-за более популярного языка её вероятнее могли бы покритиковать или улучшить. А так большинство читателей посмотрят картинки, возможно запустят программу на ваших тестовых данных, и закроют навсегда.

    Заодно насчёт тестовых данных – одному вам известно, как составлять обучающие выборки и прочие текстовые файлы для программы.
  • Пощупать нейросети или конструктор нейронных сетей
    +2
    Если оно для обучения и «пощупать», то выложили бы заодно и исходники. Хотя… оно у вас на Visual Basic?
  • Разработка игр под NES на C. Главы 1-3. От введения до Hello World
    +5
    Как раз недавно тоже изучал тему программирования на си под NES. У меня получилась такая демка:

    Как и nesdoug, начинал с движка shiru и модифицировал его немного под себя.

    Хорошо, что вы в своих примерах портируете код под новую версию cc65, буду следить за вашими переводами и добавлять замечания, может напишу от себя статью по темам, которые не раскрыты у nesdoug'а:

    Отладка и профилирование под fceux с помощью lua, использование более продвинутого звукового движка от famitraker'а, использование различных блочных систем для экономии памяти и экспорт данных уровней из готовых игр с использованием редактора CadEditor, реальные примеры реализации спецэффектов из игр, реализация систем паролей/использование батарейки, написание своих компрессоров данных, возможно, создание меню для многоигровок.

    Замечание и неточности в статье:
    1. Флаг компилятору -Cl позволяет сделать все локальные переменные статическими, что позволит не терять в скорости. Однако переменные вообще лучше не заводить без особых на то причин.
    2. Квалификатор типа volatile позволяет отмечать переменные, используемые для чтения/записи регистров процессора и внешних устройств, такие переменные не будут удалены как неиспользуемые при оптимизации.
    3. Директива __fastcall__ задаёт передачу аргументов в функцию через регистры A,X и 2 специально отведённых компилятором байта из нулевой страницы памяти, регистр Y не используется. Если для передачи аргументов требуется больше 4х байт, то всё равно будет задействован стек.
  • Устройство уровней в NES-играх
    0

    Вы не представляете, как часто меня с просьбами по конкретным играм находят по этой теме и не только :)


    Технических требований специальных нет, нужен .Net framework, но он в windows новее xp по умолчанию есть уже.


    Ещё последние 3-4 версии необходимо разблокировать все dll редактора https://blogs.msdn.microsoft.com/delay/p/unblockingdownloadedfile/
    (редактор динамически загружает свои сборки-плагины, а microsoft считает все скачанные из интернета файлы опасными по умолчанию, причём только сборки для новых .Net Framework, я поздновато это заметил, чтобы отключить, после того, как перешёл на следующую версию .Net Framework).


    Если вам не нужна возможность засунуть уровни обратно в ROM с феликсом, а просто получить их для какого-то своего использования, то удобнее будет просто экспортировать их из редактора в формате TMX, я это сделал для вас:
    https://www.dropbox.com/s/pvskvtw6p1mneid/felix_maps_tmx.zip?dl=0


    Файлы TMX открываются с помощью tiled (http://www.mapeditor.org/)

  • Подготовка к программированию ESP8266 на micropython
    +1
    Классно, не думал чего-то даже, что на модуле с 512 кб памяти можно python запустить.
  • Ищем сокровища в исходном коде Aladdin
    0
    Поэтому мне так радостно было найти архив с полным исходным кодом игры в коллекции Video Game History Foundation!

    Собственно, а где ссылка на исходники? Как будто поманили конфеткой и не дали.

    От себя добавлю, что в исходниках Alladin используются всё-таки два варианта распаковки RNC, с сигнатурами 4FEFFE80244F47E800117800181B5344 и 4FEFFE80244F5848610000EC47E8000A.
    Можно отредактировать карту уровня в CadEditor или EWJ2Edit, затем перепаковать с помощью восстановленного RNC_ProPack и засунуть изменённую карту в ROM.

  • Использование инструментов исследования NES-игр на примере разбора формата компрессии игры Felix The Cat
    0
    Несжатые дампы 9 уровней занимают 172 килобайта
    Cжатые данные: 47 кб данных + 2 кб на словари + 14 кб указатели на линии = 63 килобайта.
    Серьёзно улучшает результат дизайн уровней – очень много линий повторяется.
  • Интересные особенности Python, о которых вы могли не догадываться
    0
    Публиковать решения в готовом виде не стоит, конечно, особенно, когда авторы задач просят этого не делать. Ещё как минимум стоило убрать их под спойлер, вы же лишаете людей удовольствия!

    Лучше бы статью про root-me небольшую написали, за наводку на сайт спасибо.
  • Исследование защиты ArtMoney. Часть первая
    0
    Первым делом укажем, что это bp-based функция

    Пояснить бы, что это такое, гугл не помогает
  • Создание инструментов для исследования NES-игр
    0
    Ок, добавлю её к списку для следующей статьи.
    Если интересно посмотреть раньше, вот:
    https://github.com/spiiin/CadEditor/blob/master/JupyterCadEditor/CadEditor-examples-RC_ProAM_2.ipynb
    (острожно, 4 мегабайта картинок)

    Там трассы строятся из блоков размером 16x8 тайлов, блоки одинаковые для всех трасс, а сами трассы хранятся в памяти последовательно, так что отрендерил сразу все восемь.
  • Создание инструментов для исследования NES-игр
    0
    Можно будет эти инструменты изменить для использования с играми для сеги. Идеи из статьи применимы и к ним.
  • Создание инструментов для исследования NES-игр
    0
    Обязательно попробуйте! Набор примеров, в том числе и самые простые для изучения, идёт в комплекте с эмулятором Fceux, в папке luaScripts.
  • 12 игр, которые обучают детей программированию
    0
    Добавлю Robix на iOS, есть поддержка русского языка, графика сделана из пластилина, пробная версия бесплатна, полная за $1.
  • Разработка игры с использованием пластилиновой анимации
    0
    Про языки забыл написать :)
    Одного маловато, я думаю, так что хорошо хотя бы на EFIGS переводить – английский, французский, итальянский, немецкий, испанский.
  • Разработка игры с использованием пластилиновой анимации
    0
    Кажется, этого никто не проверяет. Я просто ссылку на личный блог на русском дал, пришёл код, который попросили разместить на указанном сайте, чтобы доказать, что этот сайт действительно мой.
  • Разработка игры с использованием пластилиновой анимации
    0
    Лет пять профессионально занимаюсь разработкой игр и ни разу не было такой необходимости.

    SDK (для социальных сетей, видеорекламы, сбора статистики) к играм прикручивали? Почти в каждой современной мобильной игре что-либо из этого есть, а готовые плагины для нужного sdk не всегда есть. Навскидку, для VK iOS SDK – добавить код в обработчик openURL или инициализировать сдк с помощью делегата приложения.

    тормоза при разрастании проекта,
    Это больше от рук зависит, а не от движка.

    В 7-й версии, начиная от какого-то количество спрайтов в проекте (штук 300 вроде, не помню), при добавлении новых спрайтов в проект он у меня ощутимо подвисал. Смотрел именно 7-ю, потому что ковырял движок мегамена, в ней сделанный. Возможно, в последних версиях всё лучше.

    Если память не подводит, Xamarin уже полгода (или около того) как бесплатен?

    Если так теперь, то очень круто!
  • Разработка игры с использованием пластилиновой анимации
    0
    Не знаю точно насчёт правил рекламы тут, если что, название игры – первое слово в примере кода :)
    Промо-ролик с примером геймплея есть на App Store и на моём канале на ютубе, примеры роликов с канала приведены в конце первой статье.
  • Разработка игры с использованием пластилиновой анимации
    0
    Пластилин выглядит как-то слабенько, ещё тогда к нему надо шейдер освещения, теней. Кроме того, это же всё 3D, а не 2D-графика.
  • Создание пластилиновой анимации для использования в мобильной игре
    0
    В некоторых роликах с ютуба авторы отписывались, что снимают честные 24 кадра/секунду, поэтому указал эту цифру.
    Насчёт замечаний про свойства пластилина – можно попробовать вместо него глину взять. Трудоёмкость выше, конечно, чем для перекладки, но приемлемая, я пару десятков необходимых мне анимаций модели снял за 3 вечера, не особо напрягаясь.
  • Создание пластилиновой анимации для использования в мобильной игре
    0
    О! Onionskin – вот как эта фича с совмещением полупрозрачных кадров называется. Спасибо!
  • Создание пластилиновой анимации для использования в мобильной игре
    0
    Специализированные сайты и программы, которые я проверял, заточены под морфинг между двумя кадрами. Я пытался подобрать такую, которая в каком-либо виде поддерживает автоматизацию (чтобы увеличивать частоту кадров вдвое, например, добавляя плавный переход), но не нашёл ни одной бесплатной, которая это умеет.

    Во втором ролике с планетами я делал морфинг для Земли таким способом, он добавляет эффект размытия при движении:


    Во второй части статьи расскажу про использование такого метода.
  • CSRF-уязвимость VK Open Api, позволяющая получать Access Token’ы сторонних сайтов, использующих авторизацию через VK
    0
    Можно попробовать не собирать предварительно, а на момент входа проверить.
    Если знать APP_ID приложения, которое на сайте используется, то можно своим пользователем залогиниться в это приложение, и вызвать метод VK API users.isAppUser, с параметром user_id, полученным из куков. Не знаю, правда, насколько быстро можно провернуть такую проверку.