Оглавление
FlashMe
Вы когда-нибудь задумывались о перепрошивке своей консоли Nintendo DS? Если вбить в Яндекс запрос «как прошить Nintendo DS», то вы узнаете миллион и один способ прошивки Nintendo DSi и DSi XL, а в случае с Nintendo DS и DS Lite вам скажут, что они не прошиваются и нужно купить флеш-картридж. Но так ли это?
На самом деле нет. Существует способ прошивки Nintendo DS и Nintendo DS Lite. Вопрос только в том, а зачем это нужно? Но давайте пойдем по порядку.
История появления FlashMe
Loopy начал разрабатывать FlashMe уже после появления PassMe и WiFiMe. Причина тут крайне проста: оба этих способа для запуска homebrew приложений были крайне неудобными. Первые PassMe (еще не заводские, а кустарные), представляли собой платы с припаянным Nintendo DS картриджем, а для работы WiFiMe нужна была специальная Wi-Fi плата на чипсете Ralink RT2500 (а она зачастую стоила дороже чем PassMe).
Мало того, что это выглядело ужасно, так еще и было не очень надежным. Одно неосторожное движение и всё.
Давайте посмотрим, как была реализована прошивка на Nintendo DS. По своей сути прошивка – это интерактивная оболочка. Если говорить простым языком, то включая консоль, сначала запускается BIOS, а потом он запускает прошивку и передает ей управление. Сама прошивка находится на отдельном чипе flash памяти, объемом 256 килобайт.
На чипе Flash памяти написано F5Z08C4F 3.
Представим всё наглядно.
Flash память объемом 256 килобайт.
Прошивка на нем занимает полностью 256 килобайт, но при этом внутри неё оставшаяся четвертая часть пуста.
Слева код прошивки, а справа пустое место.
При этом, сразу было обнаружено, что первые 64 килобайта данных защищены от записи.
Часть закрытая для перезаписи.
11 апреля 2005 года DarkFader выложил пост, где сообщил, что он обнаружил как обойти защиту прошивки (для первых 64 килобайт). Защита выключается, если замкнуть контакты SL1. Там же он добавил, что Loopy начал делать первый патч для прошивки, чтобы разрешить запуск NDS приложений с GBA картриджей.
Элемент SL1 находится чуть левее и выше центра.
Примерно в 20-х числах апреля 2005 года появилась нулевая версия этой прошивки. Вам нужно было скачать файл getID.ds.gba и используя PassMe или WiFiMe, а также Game Boy Advance флеш-картридж, запустить этот файл на консоли. Вы получали код, например, такой: CREM57I27HWAK. И под ваш код формировался файл прошивки. Соответственно под каждую консоль нужно было отослать свой код.
Дополнительный код FlashMe записывался в пустую часть оригинальной прошивки.
FlashMe записывает свой код в свободную часть справа.
Но менялась и часть с оригинальной прошивкой, причем изменения должны были вноситься в защищённую часть. Для этого на консоли нужно было закоротить контакты SL1. Самое интересное, что доступ к этим контактам открывается из аккумуляторного отсека. Скорее всего Nintendo оставили себе лазейку для ремонта, а ею воспользовались хакеры.
Теперь у вас должно появится представление как происходила перепрошивка консоли.
Не будем рассматривать каждую версию FlashMe. Зачастую там были совсем маленькие исправления. Давайте остановимся на одной проблеме.
Пожалуй, самое интересное произошло во время выхода игры Mario Kart. 23 октября 2005 года пользователь с ником YaW создал ветку на форуме gbadev.org, где написал, что после того, как он поиграл по сети в Mario Kart DS его консоль больше не включилась. Тоже самое произошло и с его другом. Благо разработчики FlashMe сразу добавили в код прошивки способ ее восстановления и ничего непоправимого не произошло.
Loopy начал разбираться, что случилось. Оказалось - то пустое место в прошивке было таким неспроста. Nintendo туда записывали Wi-Fi и другие онлайн настройки.
Оказалось, что правая часть зарезервирована под Wi-Fi и сетевые данные.
И получилось, что пока прошивка находится в оперативной памяти, та часть, которая была на незащищенной части чипа, перезаписывалась. А как я вам рассказывал выше, именно в неё устанавливался FlashMe.
И вот в пятой части FlashMe (NDS-FW-V5) разработчики ужали прошивку так, чтобы она не занимала пустое место.
Конечно, больше таких ярких событий не было и скоро обновление FlashMe закончилось. В апреле 2007 года вышла последняя версия прошивки FlashMe – NDS-FW-V8a. Это практически идеальная версия за исключением одного минуса – режим сна. Он не работал если не вставлен картридж в консоль.
Зачем нужна прошивка FlashMe в 2023 году?
Пожалуй, самый главный вопрос – зачем вообще нужно прошивать свою консоль Nintendo DS?
Чтобы дать ответ на этот вопрос, давайте посмотрим, что мы получали, устанавливая прошивку:
1. В первые 10% прошивки устанавливался код отказоустойчивости. То есть, если скажем ваша прошивка испортилась по какой-то причине, то у вас будет шанс ее восстановить (что было актуально, ведь кое-кто выпустил на Nintendo DS вирус, который убивал прошивку).
2. Пропадала надоедливая заставка с предупреждением о здоровье. То есть консоль сразу грузилась в стартовое меню прошивки.
3. Пропадала необходимость использовать PassMe и WiFiMe (они позволяли запускать Game Boy Advance флеш-картриджи в режиме Nintendo DS, то есть можно было с GBA картриджа запускать NDS игры).
Это три основных бонуса, которая давала прошивка FlashMe.
Если актуализировать эти бонусы, то окажется, что первый пункт уже не нужен: вирусы уже не найти, да и никто уже не прошивает свою консоль. Третий пункт потерял актуальность в 2008 году, когда стали массово появляться Slot-1 флеш-картриджи. А вот второй пункт в какой-то мере актуален. Если вас раздражает постоянно появляющаяся плашка о здоровье, то это ваше единственное спасение.
Но был и один секретный пункт, ради которого я сам перепрошил свою консоль.
FlashMe и подсветка Nintendo DS
Как вы знаете Nintendo DS выпускались практически два года. За это время Nintendo закрывали разные лазейки, которые находили хакеры. Но менялась не только программная, но и аппаратная часть. Начиная с конца 4-ой прошивки в Nintendo DS начал устанавливаться такой-же чип подсветки, как и на Nintendo DS Lite. То есть если у вас более поздняя ревизия Nintendo DS, то у вас такой чип будет.
Как узнать какая у вас прошивка описано в статье: «Прошивка Nintendo DS».
Если у вас пятая или более поздняя прошивка, то с 99% вероятностью у вас будет работать эта фишка. А вот четвертую прошивку нужно проверять дополнительно.
Раскрутите отсек для аккумулятора и вытащите его. Там находится маленькое отверстие. Если у вас там написано 20, то у вас есть этот чип.
После установки FlashMe 8a, кнопка, которая раньше выключала и включала подсветку перейдет в режим смены яркости – как на Nintendo DS Lite. Причем максимальная яркость будет лучше, чем была изначально на непрошитой консоли. Правда и расход батареи будет больше.
Что нам понадобится?
Итак, если вы все же решили установить FlashMe, то вам понадобится флеш-картридж. Здесь всё не так просто. С одной стороны не все флеш-картриджи умеют запускать файл flashme.nds (это основной файл для установки прошивки), с другой стороны, это можно пофиксить.
Чуть-чуть затронем эту проблему. Когда вы разрабатываете свою программу (homebrew приложение), то нужно как-то сохранять данные на флеш-картридже. А все картриджи имеют разные команды чтения/записи. То есть вы разработали свою программу для R4, а на других флеш-картриджах она не запустится. Чтобы решить эту проблему Chishm разработал DLDI (Dynamically Linked Device Interface). Если говорить простым языком, то вы добавляли в свой homebrew интерфейс DLDI, а разработчики флеш-картриджей в свою прошивку возможность работы с DLDI. Однако, по понятным причинам не все флеш-картриджи поддерживают интерфейс DLDI.
Для этой статьи я буду использовать обычный клон R4 флеш-картриджа (в него НЕ встроили DLDI), который можно купить на Алиэкспресс.
Что нам понадобится?
Флеш-картридж R4 SDHC.
Купить картридж
R4 можно на
Алиэкспресс:
Карта памяти к нему (не более 32 гигабайт):
Купить карту
памяти можно здесь, на
Алиэкспресс:
Также нужны будут маленькая крестовая и прямая отвертки.
Скачайте архивы:
r4i-sdhc-ysmenu.zip
– он нам понадобится, чтобы не использовать стандартную прошивку этого клона (она не сможет запустить flashme.nds);
sd-card-formatter.zip
– он нам понадобится для форматирования карты памяти;
flashme8a.zip
– файл прошивки.
Если у вас все куплено и файлы скачаны, то можно приступать.
Как установить прошивку FlashMe?
Перед тем как мы начнем, хочу обратить ваше внимание: эта инструкция работает с любым флеш-картриджем, если он сможет запустить файл flashme.nds. Если вам повезло и никакие дополнительные настройки не нужны, то переходите к шагу 4, а если нет, то попробуйте узнать, можно ли на ваш флеш-картридж установить YSMenu.
Шаг 1.
Запустите файл SD Card Formatter 5.0.2 Setup EN.exe (из архива sc-card-formatter.zip) и произведите установку программы.
Вставьте карту памяти вашего флеш-картриджа в компьютер и откройте программу SD Card Formatter.
Выберите диск вашей карты памяти (у меня H:\).
Выберите Overwrite format.
Нажмите Format.
Дождитесь окончания форматирования.
Шаг 2.
Разархивируйте r4i-sdhc-ysmenu.zip
. Внутри будут 2 папки и 4 файла:
Скопируйте их в корень карты памяти.
Шаг 3.
Разархивируйте flashme8a.zip. Там вы увидите еще 4 архива:
Остановимся на каждом поподробнее:
FlashMe-8a
– основная версия прошивки. Убирает заставку здоровья и дает все бонусы, о которых мы говорили выше. По умолчанию, если в Nintendo DS вставлен Game Boy Advance флеш-картридж, который умеет запускаться в режиме для NDS игр, то после включения консоли он сразу загрузится именно в такой режим (нужно нажать Select при включении консоли, чтобы этого не произошло).
FlashMe-noautoboot
– в архиве находится два файла:
flashme_noauto
- такая же прошивка как вариант выше, только не будет автоматически загружать GBA флеш-картридж в NDS режиме (нужно нажать Select при включении консоли и тогда такая автоматическая загрузка произойдет).
flashme_stealth_noauto
– консоль загружается как обычная (с экраном здоровья) имитируя оригинальную прошивку. Автозагрузка GBA картриджа в режиме NDS также отключена.
FlashMe-noinstaller
– удаляет FLashMe.
Flashme-stealth
- консоль загружается как обычная (с экраном здоровья) имитируя оригинальную прошивку.
После того как вы выберете нужную вам версию скопируйте файл прошивки на консоль (в корень карты памяти).
Структура файлов на моей карты памяти выглядела так:
Шаг 4. Открутите крышку аккумулятора, снимите ее. Аккумулятор вынимать не нужно. В самом верхнем отверстии располагается элемент SL1 (если он скрыт под наклейкой, то ее можно снять). Его нужно будет замкнуть прямой отверткой, но не сейчас.
Шаг 5. Вытащите карту памяти, вставьте ее в флеш-картридж. Вставьте его в Nintendo DS и включите консоль (закручивать крышку аккумуляторного отсека не нужно). Запустите флеш-картридж. Сразу откроется такое меню:
Шаг 6. Выберите flashme.nds. И нажмите А. Консоль создаст системные файлы (TTMENU.SYS) и запустит программу. Вы попадете в такое меню:
Обратите внимание! Несмотря на то, что возможность убить свою консоль мала, но такое может произойти. ДАЛЬШЕ ВЫ ДЕЙСТВУЕТЕ НА СВОЙ СТРАХ И РИСК!
Перед тем как идти дальше полностью зарядите свою консоль. Во время прошивки не снимайте консоль с зарядки! Ни в коем случае не выключайте консоль.
Шаг 7. Нажмите X – B – X – B.
Появится надпись Progress: 0%.
Теперь вам нужно замкнуть контакты SL1. Для этого подойдет простая прямая отвертка.
Обратите внимание, если прогресс остановился, значит контакты SL1 не нажаты. Программа будет ждать пока вы их опять не нажмете. То есть в потере контакта нет ничего страшного!
Основные проблемы могут быть из-за двух вещей: выпадет аккумулятор или вы выключите консоль. Если первые 10% успели прошиться, то скорее всего вы сможете восстановить консоль, в других случаях она превратится в кирпич.
Ни в коем случае не выключайте консоль на 100%. Ее можно выключить только после появления надписи: Firmware flashing completed successfully. Is is safe to turn off your DS.
После появления надписи можно выключить и включить консоль.
Если вы перепрошивали ее ради подсветки, то понажимайте на кнопку яркости на стартовом меню (в левом нижнем углу).