Формат Mii QR-кода: байты FFL и смещение 0x04
Отсканируйте Mii QR-код обычным телефоном — и получите экран с кашей из символов. Отсканируйте тот же код на 3DS — и получите целого персонажа: лицо, имя, телосложение плюс набор невидимых правил о том, кто может его копировать, пересылать и редактировать. Эта пропасть между двумя сценариями — маленький кусок бинарной инженерии, и именно поэтому существует наш Mii QR Unlocker. Гайд проходит формат так, как его видит инструмент: слой QR, блок данных FFL, поля разрешений на смещениях вроде 0x01 и 0x04 и точные причины, по которым консоль пишет «Этот Mii нельзя отредактировать». Каждое утверждение здесь исходит от того же декодера, что работает в нашем инструменте, — ничего не пересказано из вики.
Первый сюрприз: в Mii QR-коде нет текста
Большинство QR-кодов, которые вы сканируете каждый день, несут чистый текст: ссылку, пароль от Wi-Fi, меню ресторана. Mii QR-код — нет. Внутри нагрузка в byte-режиме: сырой кусок двоичных данных, который имеет смысл только для консоли, знающей формат. Телефонный сканер пытается прочитать эти байты как текст в какой-нибудь кодировке, спотыкается на середине и печатает ту самую абракадабру, которую вы наверняка видели.
Техническая разница кроется в самой спецификации QR. Код может нести данные в нескольких режимах: числовом, буквенно-цифровом, байтовом и кандзи. Текст идёт в буквенно-цифровом или byte-режиме с полезной нагрузкой в UTF-8; Mii тоже использует byte-режим, но его нагрузка — вообще не текст. Наш декодер читает код через jsQR и берёт сырой массив binaryData, а не расшифрованную строку. Это важнейшая деталь всей реализации: в момент, когда вы обращаетесь с Mii QR-кодом как со строкой, он уже испорчен.
При записи обратно та же ловушка ждёт с другой стороны. Генератор, заточенный под ссылки, с лёгкостью прогонит бинарные данные через текстовый слой и уничтожит их. Поэтому наш кодировщик пропускает буфер в byte-режиме с фиксированной версией QR и уровнем коррекции ошибок, подбирая размер так, чтобы камера 3DS надёжно читала код с экрана телефона. Бинарь на входе — бинарь на выходе: нагрузка не касается строки ни разу.
FFL: библиотека лиц, стоящая за каждым Mii
Данные внутри кода описывают Mii в формате FFL (Face Library) — кросс-консольной библиотеке рендеринга персонажей Nintendo, публично задокументированной сообществом. Это основа тех самых данных Mii, которые потребляют игры Wii, 3DS, Wii U и Switch. FFL хранит Mii как компактную структуру: поля идентичности вроде имени и пола, набор полей внешности — черты лица, телосложение, цвета — и небольшой блок флагов разрешений, определяющий, что чужая консоль может делать с этим персонажем.
Два свойства формата определяют всё дальнейшее в этом гайде. Первое: он стабилен между поколениями консолей — Mii QR-код эпохи 3DS до сих пор сканируется на Wii U, а игры Switch потребляют те же базовые данные Mii, поэтому гайд по формату, написанный однажды, остаётся полезным. Второе: он чувствителен к позициям — каждое поле лежит на фиксированном смещении от начала блока, и между поколениями эти смещения слегка сдвигаются. Ошибётесь на одно смещение — получите не слегка странного Mii, а Mii, который вообще не сканируется. Эта же строгость объясняет, почему формат невредимым переживает смены консолей: игры не изобретают его заново, они передают свои данные персонажей той же библиотеке.
Карта заголовка, поле за полем
Прежде чем что-либо менять, наш инструмент разбирает первые байты блока и показывает превью. Вот поля заголовка, определённые форматом, и то, за что каждое отвечает:
| Смещение | Поле | Что содержит |
|---|---|---|
0x00 | Байт версии | Какое поколение данных Mii использует блок |
0x01 | Флаги-опции | Бит 0 несёт флаг разрешить копирование; остальные биты — флаг грубости и региональная блокировка |
0x02–0x03 | Заголовок слота | На какой странице и в каком слоте Mii Maker сохранён Mii |
0x04–0x0B | System ID | Восемь байт, идентифицирующих консоль владельца — поле, которое проверяет запрет редактирования, и которое переписывает наш шаг разблокировки |
0x18 | Пол и личные биты | Бит пола, плюс дата рождения и любимый цвет |
0x1A–0x2D | Имя | До 10 символов в UTF-16, завершается нулём |
0x30 | Флаг обмена | Бит 0 здесь — выключатель запрета пересылки (источник: документация формата Mii на 3dbrew) |
На поле имени стоит остановиться: именно здесь чаще всего спотыкается ручная правка. «Десять символов» — не «десять байтов»: в UTF-16 каждый символ занимает два байта, свободные позиции заполняются нулями, а декодер останавливается на первом нулевом байте. Запишете имя в UTF-8 — японское или немецкое имя на консоли превратится в кашу; забудете терминирующий ноль — имя вползёт в то, что лежит следом.
Всё, что идёт после заголовка, — сам Mii: десятки полей внешности, от формы лица, волос, глаз, бровей, носа и рта до очков, роста, телосложения и любимых цветов, каждое упаковано в свои биты. Инструмент читает ровно столько, сколько нужно для превью, а дальше нарочно не трогает ничего: разблокировка, меняющая хоть один пиксель лица, не заслуживает доверия.
Почему отсканированные Mii говорят «этот Mii нельзя отредактировать»
Система разрешений существует потому, что Mii QR-код — механизм обмена, и Nintendo отдала создателю решение о том, как далеко этот обмен заходит. Когда Mii создаётся на консоли, его FFL-данные фиксируют выбор автора флагами внутри блока. Когда чужая консоль сканирует этот QR, прибывший Mii помечен как полученный: консоль считает оригинального создателя автором, читает флаги и применяет их:
- Разрешить копирование — если автор закрыл копирование, принимающая консоль не даст дублировать Mii или сохранить его куда-либо ещё.
- Запрет пересылки — когда пересылка выключена, из этого Mii нельзя сделать новый QR-код и передать его дальше.
- Редактирование — полученный Mii не редактируется на принимающей консоли никогда, что бы ни было с двумя другими флагами. Право редактирования принадлежит консоли, на которой Mii родился. Та же логика владения определяет умолчания личности и голоса — мы разбирали её в гайде по синтезу голоса.
Неожиданность кроется в третьем правиле. Вы можете отсканировать Mii, любоваться им, использовать в играх — но стоит попытаться открыть его в редакторе, как консоль откажет: «Этот Mii нельзя отредактировать». Это не сбой. Это флаги, честно делающие ровно то, о чём попросил их автор.
Официальный обходной путь существует ровно один, и работает он только если автор разрешил копирование: на 3DS скопировать Mii в собственный Mii Maker и собрать заново из деталей. Пересобранный Mii родился на вашей консоли — он полностью ваш и полностью редактируемый. Но всё, что сложнее быстрого косметического ремонта, мучительно делать таким способом, а когда закрыто само копирование, путь исчезает вовсе. Этот зазор между «официально возможно» и «на практике применимо» — пространство, в котором живёт любой инструмент разблокировки.
Что меняет наш анлокер и чего он никогда не трогает
Раз карта полей ясна, понятно, что операция разблокировки нарочно мала. Инструмент читает нагрузку и перезаписывает первый байт System ID по смещению 0x04 — идентификатор владельца, по которому консоль решает, можно ли редактировать полученного Mii, — так что Mii больше не указывает на чужого владельца. Если хотите переименовать его, инструмент в том же проходе перепишет поле имени в корректном UTF-16. Затем он перекодирует блок в свежий byte-mode QR. Все остальные байты проходят насквозь нетронутыми — один к одному.
Шаг перекодировки важнее, чем звучит. Новый QR генерируется в byte-режиме с фиксированной версией и уровнем коррекции M, а размер подобран под чтение с экрана телефона камерой 3DS. Ошибётесь с настройками QR — код будет выглядеть безупречно и откажется читаться ровно на той консоли, на которую вы его наводите. Уровни коррекции ошибок обменивают устойчивость сканирования на ёмкость данных, а нагрузка Mii ходит у самой границы, так что выбор здесь не косметический.
Весь этот процесс происходит в вашем браузере. Нагрузка декодируется из брошенного вами файла, держится в памяти, правится и рисуется обратно; история сеансов лежит в IndexedDB вашего собственного браузера. Посередине нет сервера — и дело не только в приватности: это значит, что у инструмента в принципе нет возможности тихо оставить себе чью-то копию Mii, включая вашу.
С 3DS на Switch: камеры, QR-коды и ключи доступа
Большая часть сегодняшней путаницы вокруг обмена Mii объясняется историей железа. У 3DS были две камеры, и сканировать QR-код там было привычным, встроенным действием: Mii Maker, Tomodachi Life, Miitopia и StreetPass — все они питались этими кодами. Switch камеры убрала совсем. Mii Maker на Switch всё ещё умеет читать Mii QR-коды 3DS и Wii U, но впустую: сканировать их нечем. Switch сохранила сами данные FFL, поэтому знание формата из этого гайда не устарело; поменялся слой обмена.
Для Miitopia на Switch Nintendo заменила QR-коды ключами доступа: короткий код скачивает Mii из онлайн-сервиса, а публикация собственного выдаёт другой ключ. Switch 2 продолжает этот подход. Ключи доступа изящно решают проблему отсутствующей камеры, но наследуют ту же философию разрешений — скачанный Mii остаётся чужой работой, — и работают только в играх с поддержкой сервиса.
Практический мост между поколениями консолей лежит через формат эпохи 3DS: берёте Mii QR-код, открываете флаги, если они закрыты, и доставляете его в Mii Maker на Switch любым из способов, которыми игроки обходят отсутствующую камеру, — эмулированное сканирование на модифицированной консоли или воссоздание разблокированного Mii вручную по декодированному превью. Как только Mii поселился на Switch, его данные становятся родными, и его принимают везде, где Switch поддерживает Mii, — от Tomodachi Life: Living the Dream до Miitopia. А поскольку система личностей работает на тех же данных Mii, всё из нашего разбора MBTI-соответствия Tomodachi Life применимо к перевезённому персонажу без изменений.
Почему ручная правка в hex-редакторе обычно проваливается
Раз карту полей вы знаете, тянет пропустить инструмент и щёлкать байтами прямо в hex-редакторе. Там ждут три вида отказа, и все три безмолвны: файл никогда не сообщит, что именно пошло не так.
- 1Другое поколение — другие смещения. Позиции полей различаются между поколениями формата Wii, 3DS и Switch. Патч по неверной разметке правит неверные байты — и первыми жертвами чаще всего становятся поля внешности, которые вы и не думали трогать.
- 2Ловушка строки. Hex-редакторы по умолчанию мыслят текстом. Открыли нагрузку, поправили имя как ASCII, сохранили — поле имени в UTF-16 неизбежно разъехалось, и байты за ним рухнули следом.
- 3Ловушка перекодировки. После правки байтов остаётся сделать QR-код. Генераторы для ссылок кодируют через текстовый слой и ломают бинарные нагрузки; только byte-режим с правильными версией и уровнем коррекции даёт код, который консоль примет.
Специальный инструмент существует именно для того, чтобы все три ошибки стали невозможными в принципе: фиксированные смещения, byte-режим на входе и выходе, поле имени, записанное с правильной кодировкой и набивкой. Ровно поэтому наш анлокер — страница, а не комментарий в документации.
Вопросы, которые задают о Mii QR-кодах
Разблокировка Mii QR-кода законна и безопасна?
С безопасностью всё в порядке — механика на вашей стороне: разблокировка переписывает только байты разрешений и не трогает блок внешности, поэтому изменённый код либо сканируется как тот же Mii с новыми правами, либо не сканируется вовсе — третьего, тихого варианта нет. Что до законности: формат задокументирован сообществом, инструмент работает с данными Mii, которыми вы уже располагаете, а дальше действуют те же правила, что и для любого фанатского занятия, — уважайте автора оригинала и не выдавайте чужих персонажей за свои. Отношение Nintendo к изменённым данным Mii такое же, как к прочему файловому хозяйству консоли: территория без официальной поддержки, решение за вами.
Подойдут ли Mii из Miitopia и Smash Bros.?
Да. Miitopia и Super Smash Bros. Ultimate потребляют те же данные Mii формата FFL, что и Tomodachi Life с Mii Maker на 3DS, поэтому QR-код, сделанный для одной игры, сканируется в другие — на консолях, которые принимают QR-ввод. Формат — общий язык, игры просто разные слушатели.
Почему камера консоли не читает разблокированный QR?
Девять случаев из десяти — это оптика, а не данные. Выведите яркость экрана на максимум, держите консоль на расстоянии, где QR заполняет кадр, не размываясь, протрите объектив и избегайте бликов от верхнего света. Не помогло — сгенерируйте заново: скриншот QR-кода может нести артефакты сжатия, ломающие декодирование, поэтому всегда храните исходное отрисованное изображение.
Разблокированный Mii будет выглядеть в играх иначе?
Нет. Блок внешности проходит побайтово: лицо, причёска, цвета, рост, имя и настройки голоса прибывают ровно такими, как их задал автор. Видимые изменения — только те, что вы попросили, например новое имя. Если Mii после сканирования выглядит не так, где-то по дороге пострадало само изображение QR: перегенерируйте и пересканируйте, прежде чем винить данные.
Можно ли редактировать Mii прямо на Switch?
Полученный — нет. Mii Maker на Switch правит тех, кто создан на этой консоли; Mii, пришедший извне — ключом доступа или сканированием, — заперт ради защиты автора — точно так же, как на 3DS. Путь к редактируемой копии по-прежнему лежит через формат: разблокируйте исходный QR, чтобы он опознавался как локальный и редактируемый, а дальше доставьте его на Switch любым доступным вашему хозяйству способом.
А новая система Mii на Switch 2?
Switch 2 продолжает подход с ключами доступа для Miitopia, а базовые данные Mii остаются той же линией FFL. QR-коды как физический носитель обмена принадлежат консолям с камерами — 3DS и Wii U, — и именно поэтому понимание формата не потеряло цену: данные, которые несли те QR-коды, — это те же данные, что ваши игры на Switch потребляют сегодня.
Можно ли вернуть исходные разрешения?
Сохраните исходную картинку QR — разблокировка никогда не перезаписывает её, а лишь создаёт новый код с открытыми флагами. Если ограничения понадобятся обратно, оригинал по-прежнему несёт настройки создателя и отсканируется как прежде. Что невозможно — снова запереть Mii, уже живущий на консоли: право редактирования, однажды переданное вашей консоли разблокированным сканом, остаётся за этим Mii навсегда. Об этой асимметрии стоит помнить, прежде чем разблокировать что-то, взятое у друга на время.
Попробуйте сами
Быстрее всего формат становится осязаемым, когда скормите инструменту собственного Mii и посмотрите, как всплывают поля:
- Mii QR Unlocker — бросьте QR-код, увидите декодированные имя и флаги разрешений и получите новый, редактируемый код.
- Создатель Mii — соберите Mii с нуля с живым FFL-рендерингом и экспортом.
- Редактор глаз Mii — узкий редактор для форм глаз, задающих выражение лица Mii.
- Voice Lab — послушайте, как Tomodachi Life превращает личность в синтезированный голос.