Возвращаемся к шестнадцати битам! Сегодня я готовлю к эксплуатации сразу две игровые консоли Super Nintendo с целью погружения в богатый внутренний мир этой замечательной платформы сразу двух неофитов. Проводником же для них в туда выступит опытный Сусанин, то есть я.
Задача на этот раз максимально проста: доукомплектовать две консоли и сделать им простейший мод со снятием региональной блокировки. Не очень интересный процесс в свете предыдущих публикаций цикла, но можно немного сместить фокус: сегодня это просто повод поговорить про замечательную, но не особо популярную в наших краях платформу, и рассказать личную историю, связанную с ней. Да и модификации получились достаточно разными, а в процессе также были подняты некоторые полезные вопросы.
Очередная будня ретрогеймера начинается!
▍ Это личное
Традиционно, перед началом скучной технической части — столь же увлекательная история моих личных отношений с платформой. Небольшие видеоигровые мемуары в режиме «у нас есть свой Кинаман дома», если позволите. Внимание, выпускаю Кракена!
В последние годы Sega Genesis реклама едва балансировала на грани приличий
Не секрет, что в пресловутых 1990-х, по которым давно уже лютует ностальгия отечественных ретро-геймеров, в наших краях Super Nintendo считалась приставкой богатеньких Буратин. Она стоила в полтора раза дороже, чем более доступная Sega Mega Drive, а некоторые игры для неё и сами могли стоить как целая Сега. И конечно, любые 16-битки стоили в разы дороже любимой народной Денди.
Самые совершенные 16 бит позволить себе могли не только лишь все, мало кто мог это делать. Тем более, что разница между теми и этими битами была не так уж очевидна. К тому же Сега могла похвастать лучшей подборкой модных пацанских игр, балансирующих на грани приличий, тогда как на Нинтендо во все времена процветала семейственность, более спокойные игрушки, и запрет на хоть сколько-то провокационные темы — жестокость, излишне обнажённое тело, религиозную символику.
Спокойная и информативная реклама Super Nintendo
Я к числу мажоров никогда не относился. И всё же в те времена мне удалось познакомиться и с Super Nintendo, и с другими относительно редкими платформами. Секрет прост: классовое неравенство. Среди моих школьных друзей были и такие же, как я, менее состоятельные голодранцы, и хорошо упакованные ребята. Ребята с чуть более высоким достатком водили дружбу с ещё более продвинутыми, и так по системе пяти рукопожатий к нам с мажорских небес снисходила на время различная малодоступная благодать.
Конечно, чтобы прикоснуться к этой благодати, приходилось терпеть некоторые неудобства. Например, после уроков ехать час на автобусе без билета в соседний район, чтобы там посмотреть, как друзья играют в очередную крутую приставку, и потом поздно вечером тёмными подворотнями возвращаться домой. Настоящая романтика, а не эти ваши летсплеи на ютубах.
Первая встреча с Super Nintendo прошла мной незамеченной: местный радиомагазин, куда я регулярно наведывался за деталями, постепенно перепрофилировался, и в какой-то момент там в том числе начали продавать игровые приставки. На большом телевизоре были запущены какие-то Боевые жабы. Я был знаком с этими персонажами по игре Battletoads & Double Dragon на Денди, и читал в журнале про отдельную «первую» (она же третья) часть, но сам её не видел, и резонно предположил, что наверное это она и есть. И только много лет спустя я понял, что это была игра Battletoads in Battlemaniacs.
Страницы обзора на Street Racer 1995 года
Узнал про существование в природе Super Nintendo я из журнала Денди с обзорами игр, а также из телепередачи «Денди — Новая реальность», которую, кстати, вопреки нынешним ностальгическим трендам, в те времена почти не видел, и особо не любил. Тем не менее, я мельком видел сюжеты про Batman Returns и Doom (с которым это тоже было первое знакомство) и слышал рассказы про техническое совершенство местных настоящих 16-ти бит. Местами это было похоже на правду: после игр на Денди графика в играх Street Racer и Stunt Race FX на картинках в журнале казалась абсолютно, умопомрачительно фотореалистичной.
Острые как бритва пиксели на уровне «Ice Age Valley»
Первая же очная ставка состоялась примерно в 1996 году, по описанной ранее схеме. Друг переиграл во всё, что у него было на его Сеге, и поменялся на время со своим другом, обладателем Super Nintendo, а я приезжал к нему посмотреть на это чудо. Посмотреть, разумеется, очень скептическим, пренебрежительным взглядом, так как на дворе бушевали консольные войны, и я уже примкнул к клану «Сега дешевле и тоже 16-битная, а значит, она лучше» (а у самого и Сеги-то не было).
У друга в наличии были картриджи с двумя главнейшими хитами платформы, Donkey Kong Country и Killer Instinct, а также Mickey Mania, и возможно что-то ещё, про что я уже забыл за давностью лет. Также друг обладал очень хорошим импортным телевизором Sharp и композитным AV кабелем. Поэтому первое, на что я обратил внимание в DKC — пиксели. Вероятно, впервые в жизни они предстали передо мной в своей совершенно чёткой прямоугольной форме, а не в виде традиционных мутных пятен, и мне это не понравилось: ну что это такое, да тут же пиксели видны!
Своеобразный стиль изображений бойцов на Versus-экранах Killer Instinct
В Killer Instinct мне не понравились неразборчивые глухие голоса из бочки и весьма специфический размазня-стайл арт на экранах с представлением персонажей перед битвами и после них. Ну а в очень хорошо знакомой по Сеге Mickey Mania я обнаружил мелкие отличия в деталях, в частности, отсутствие некоторых голосов. В общем, знакомство удалось на славу: Super Nintendo оплёвана и посрамлена.
Однако, это была лишь первая встреча. Году в 1998 я сам попал в точно такой же переплёт: уже будучи обладателем личной Сеги и переиграв на ней во всё, что удалось достать, я по совету ещё одного друга, ранее владевшего SNES’ом, на время поменялся с его незнакомым мне товарищем, тоже обладателем такового, который также наигрался в совершенные 16-битные игры, и теперь жаждал перемен.
Игры Demon's Crest, Super Dropzone, Batman Returns
Главной проблемой всех обладателей Super Nintendo являлась труднодоступность игр: их было в принципе мало, и они стоили дорого, независимо от своей лицензионности: в те времена одинаково часто встречались оригиналы и пиратка, и их никто не различал. Но у меня уже было решение: на местном рынке была точка обмена, там водились игры для SNES, а друг, сосватавший мне всю эту затею, был там вхож и имел неплохие скидки.
Игры Donkey Kong Country 2, Castlevania IV, Super Metroid
Не могу точно вспомнить, как долго пробыла SNES у меня в то время, и в какие игры я успел поиграть в этот период, но главными впечатлениями стали Demon’s Crest, дальний сиквел незабвенной Макаимуры, который я прошёл вдоль и поперёк, Batman Returns, а также простенькая аркада Archer Maclean’s Super Dropzone, которая затянула меня настолько, что её я тоже прошёл целиком. И конечно, этот опыт изменил моё отношение к платформе в лучшую сторону.
Игры Ranma ½, Bonkers, Porky Pig's Haunted Holiday
Субъективное время тогда текло иначе, происходило множество событий, сменялись эпохи. Настала и прошла эра PlayStation, и она тоже успела мне надоесть. И в 1999 году я снова совершил временный обмен, но уже с другим человеком — PS1 на SNES. На этот раз и с самой приставкой было немалое количество картриджей, и точка обмена на рынке оставалась доступна.
Игры Dracula XX, Axelay, Super Star Wars
Жизнь повернулась так, что вскоре я сам уже работал на упомянутой выше точке обмена на рынке и имел неограниченный доступ ко всем попавшим туда картриджам. В этот период я переиграл и прошёл большое количество игр, из которых точно могу вспомнить великолепные Donkey Kong Country 2, Super Metroid, Castlevania IV и Dracula XX. Были и зубодробительные Super Star Wars, а также не самые ходовые игры — Axelay, The Pirates of Dark Water, Porky Pig’s Haunted Holiday, Bonkers, и Ranma ½.
В 2000-м году я обзавёлся своим первым «настоящим» (не Спектрумом) ПК и с разбега погрузился в мир эмуляторов. Когда и сами эмуляторы, и мой компьютер доросли до возможности запускать большинство игр для SNES — представьте себе, были времена, когда они прилично тормозили — я постепенно ознакомился с ещё большим количеством игр. А с приходом широкополосного интернета и вовсе пересмотрел всю доступную тогда библиотеку игр целиком, прошёл некоторые ранее недоступные ранее игры и полюбил Chrono Trigger.
Памятный многим интерфейс эмулятора ZSNES
В двух словах о впечатлениях от платформы: графика хорошая, и эффекты интересные. В играх явно ощущается преемственность с восемью битами и отличная от Сеги эстетика. Мультиплатформа всегда немного отличается, а иногда это совершенно другие игры с тем же названием.
Но главным впечатлением, пожалуй, стала местная музыка. Это давний холивар, что лучше — FM-синтезатор на Сеге или рудиментарный табличный синтез на SNES. На самом деле на обеих консолях есть игры и с ужасным звучанием, и с прекрасным. И на обоих консолях бывало, что я доходил до определённых уровней в играх только ради того, чтобы послушать там музыку, или записывал музыку из игр на аудиокассету.
Мои игры для SNES: Christmas Craze, Classic Kong, Hind Strike
В 2010-х годах я сам разработал несколько homebrew-игр для Super Nintendo, а также музыкальный редактор SNESGSS. Но это уже совсем другая история.
▍ Задачи
Однажды получив возможность погрузиться в мир игр для Super Nintendo, к которому в то время смогли прикоснуться немногие, я, конечно, жаждал поделиться впечатлениями — что было затруднительно ввиду непопулярности платформы в наших краях. И теперь, когда некоторые из моих друзей озвучили желание тоже приобщиться к играм совершенной игровой системы, я решил им в этом помочь.
Некоторое количество тушек Super Nintendo
Так сложилось, что в моём владении с начала 2000-х годов сохранилось аж пять SNES’ок — остатки ремонтно-обменного фонда, которые в своё время никуда не пошли из-за внешнего состояния и некомплектности. Одну из них, мою основную, я укомплектовал и доработал под мои специфические нужды, для комфортной эксплуатации в современном мире в контексте потребностей разработчика-энтузиаста. В частности, сделал стандартный RCA-выход вместо фирменного разъёма для простоты подключения к телевизорам и тюнерам.
Остальные же экземпляры моих SNES’ов представляют собой голые, грязные, видавшие виды «тушки» без комплектации. Впрочем, главное, что по крайней мере часть из них исправна. Для реализации плана парочку из этих тушек нужно было привести в порядок: отмыть, укомплектовать всем необходимым для использования — проводами, джойстиками и блоками питания, а также сделать простейший мод для отключения региональной защиты и переключения между режимами 50 и 60 герц.
Модификация будет совершенно колхозная, классическая из конца 1990-х годов: выключатель на чип региональной защиты, позволяющий запретить его работу, а также переключатель режима работы видеоконтроллера между PAL/NTSC. Цель этих манипуляций — открытие доступа к полной библиотеке игр платформы.
Надо отметить, что в наши края Super Nintendo попадала в основном из Германии в оригинальном виде, а игры попадались всех регионов и на разных языках — японском, немецком, французском, английском, и оригинальные, и пиратские. Поэтому все мои тушки Super Nintendo родом из Германии.
Чего у нас почти не встречалось, так это пиратских клонов самой Super Nintendo, хотя и такие существовали. И у меня даже есть один такой — Super Prosystem 16, много лет назад попавший в мои руки в уже неисправном состоянии. Надеюсь, когда-нибудь и до него дойдут руки, накопятся необходимые знания для его восстановления, и я смогу рассказать о нём подробно.
▍ Регионы
Как и большинство консолей прошлого, Super Nintendo принимала разные обличия при выпуске в разных странах. Как водится, были NTSC и PAL версии, но также присутствовала и дополнительная региональная защита — в то время Nintendo уже начала очень жёстко контролировать свою платформу.
Разный дизайн японской Super Famicom и американской Super Nintendo
В результате существует три основные версии консоли: японская Super Famicom (SFC), американская и европейская Super Nintendo (SNES), игры для которых не вполне совместимы между собой, как по причине различия поддерживаемых телевизионных систем NTSC и PAL, так и из-за искусственно введённых ограничений двух видов: механических и электронных.
За механическое ограничение отвечает радикально иной дизайн американской версии консоли, включая форм-фактор картриджа. К счастью, в отличие от NES, которая имела даже совершенно другой разъём картриджа по сравнению с Famicom, здесь отличается только форма отверстия слота.
Сравнение форм-фактора японского и американского картриджей
В американской версии картридж шире, чем в японской и европейской версиях, и имеет дополнительные пластиковые выступы, не позволяющие вставить японский картридж в более широкий слот. Если разобрать корпус консоли, либо отломить выступы, как делают многие пользователи, японский картридж удастся вставить, и он будет работать. Для того, чтобы вставить американский картридж в японскую или европейскую SNES, понадобятся более радикальные действия: расширение отверстия слота, что будет смотреться весьма непривлекательно. Также для целей механической совместимости применяли устройство Game Genie, которое позволяло обходиться без порчи корпуса.
Варианты расширения слота владельцами консолей, удачный и не очень
Японская и европейская версии имеют одинаковый дизайн, но отличаются системой: PAL и NTSC. Помимо естественного влияния этой разницы на совместимость, они имеют дополнительную региональную защиту. За неё отвечает чип региональной защиты, так называемый CIC (Checking Integrated Circuit).
Это целый 4-битный микроконтроллер, установленный в каждом картридже, общающийся по последовательной шине с другим микроконтроллером, установленным внутри каждой консоли — для этого на слоте картриджа предусмотрено четыре контакта (данные и синхронизация каждого из двух чипов). Такая система была введена в американской NES в 1985 году и продолжила использоваться в Super Nintendo.
Чип региональной защиты внутри консоли и картриджа. Фото из Википедии
Микроконтроллеры и их программа совершенно одинаковы, но выполняют разные роли, устанавливаемые одним из выводов чипа: в картридже — «ключ», в консоли — «замок». При подаче питания микроконтроллеры устанавливают соединение, сравнивают случайно выбираемые ключи, и если ключ не совпал, контроллер в консоли начинает генерировать сигнал сброса с частотой 0.4..1 герц (настраивается конфигурацией выводов чипа), не давая таким образом игре запуститься. Сам сигнал сброса генерирует только чип, кнопка сброса подключается к нему — чипы в консоли и картридже заново синхронизируются по нажатию кнопки сброса.
Всего для SNES есть шесть ревизий чипа, по три для NTSC и PAL, и у каждой тройки свой набор ключей. Таким образом обеспечивается защита как от нелицензионных игр, не содержащих ключа, так и от несовпадения регионов: чипы для NTSC и PAL просто не договорятся, и не разрешат игре стартовать.
Алгоритм работы региональной защиты из патента
Разобрать протокол обмена ключами внешним анализом очень непросто — поток данных представляет собой большое количество нулей с очень редкими единицами без повторяющегося паттерна. Однако, его устройство весьма подробно описано в ныне давно уже истёкшем патенте
US4799635A, в формате блок-схемы алгоритма. В своё время именно утечка патента позволила сторонним разработчикам создавать клон чипа и выпускать свои игры для американской NES, не получая лицензию у Nintendo.
Также применялись и другие, более радикальные способы обхода, вроде скачка напряжения при включении, сбивающего работу алгоритма. В настоящее время созданы эмуляторы чипа, позволяющие делать собственные любительские картриджи, которые можно запускать, не прибегая к модификации консоли.
Классический вариант регион-мода с переключателями. Фото из Интернета
Несмотря на довольно мощную для своего времени защиту, на стороне консоли она обходится очень просто: переводом чипа внутри консоли в режим «ключа», отсоединением одного вывода от платы и подключением к земле. Тогда сигнал сброса не генерируется, и игра запускается. Как правило, вывод подключают к переключателю, который подсоединяет его к земле или плюсу питания, и таким образом обеспечивается включение-выключение региональной защиты по желанию. В поздних ревизиях консоли нужно таким же образом отключить ещё один вывод чипа, вход его тактовой частоты.
Во времена до Интернета большинство пользователей, конечно, не знали про все эти тонкости. Да и провести модификацию физически было не так-то просто: Nintendo использует свои особые «секретки» в качестве винтиков, и для их выкручивания нужно изготавливать собственный инструмент (сейчас такие биты можно купить просто на Али). Поэтому существовали готовые решения, не требующие пиления корпуса или произведения пайки внутри — так называемый «Super Key» и его аналоги.
Типичный Super Key
Эти устройства представляют собой переходник, вставляющийся в консоль вместо картриджа. Некоторые устройства, например, HoneyBee Super-Magic Game Converter, имели два слота: один для картриджа местного региона, чтобы обращаться к его CIC, и другой для неродного региона. Более поздние устройства типа SuperKey имели один разъём и свой собственный CIC-чип внутри.
▍ Снова про PAL и NTSC
Региональная блокировка только запрещает вставлять в приставку или запускать игры «чужого» региона. Но остаётся вторая проблема, стандартная для всех игровых консолей, подключаемых к телевизору: разные телевизионные стандарты в разных регионах.
Подключение Super Nintendo через SCART по RGB
Принципиальная разница заключается не в самой системе кодирования цвета — его можно обойти через использование RGB-выхода, благо в Super Nintendo он присутствует изначально. Основная проблема лежит в разнице таймингов, и её можно свести до вопроса разницы частоты переменного тока в розетке: 50 и 60 Герц.
По определённым соображениям однажды в разных странах были выбраны разные частоты переменного тока. Это решение повлияло на разработку систем телевещания, а затем и на разработку цифровых устройств, отображающих изображение на телевизионном экране. А это в том числе и игровые консоли. И эта разница оказала влияние на скорость выполнения кода, частоту обновления состояния игрового процесса и физики игры, тонкие настройки и особенности кода.
Эта разница довольно значительна, и по этой причине игры так или иначе дорабатывались для издания в регионе с другим стандартом, чтобы они игрались примерно одинаково. Но различия неизбежно есть, и единственный способ оценить игру в её оригинальной форме — запустить её на консоли правильного региона.
Так как в реальной жизни обладать всеми версиями каждой консоли и использовать их в зависимости от ситуации довольно сложно, и не каждый на это решится, чаще прибегают к компромиссному решению: доработка одной консоли таким образом, чтобы она могла работать в разных режимах и поддерживать все регионы и видеостандарты.
С технической точки зрения история с поддержкой разной частоты кадров и систем кодирования цвета в Super Nintendo полностью аналогична Sega Genesis, отличаясь в мелких деталях.
Как и в Genesis, в видеоконтроллере Super Nintendo изначально предусмотрено переключение режима, переключающее внутренние счётчики-делители и позволяющие получать на выходе частоту кадров 50 или 60 герц. Один и тот же видеоконтроллер используется в консолях всех регионов и формирует изображение в RGB, а кодирование в композитное видео осуществляется отдельным чипом (Nintendo S-ENC).
Заказной чип Nintendo также умеет кодировать цвет сразу в обе системы, PAL и NTSC, с переключением по управляющему сигналу. Но как и в Genesis, он использует для этого тактовую частоту, получаемую от главного тактового генератора системы, и для получения правильной частоты цветовой поднесущей в версиях разных регионов используется кварцевый резонатор нужного очень точного номинала: 21.47727 МГц для NTSC и 21.28137 МГц для PAL.
Игра Donkey Kong Country определяет регион и не запускается не на той консоли
В разных режимах исходная тактовая частота делится на разные значения, чтобы получить тактовую частоту процессора около 3.58 МГц и частоту цветовой поднесущей для кодировщика цвета. Если последняя хоть немного отличается, цвета не будет. Но в остальном разброс между частотами при выборе правильного предварительного делителя незначителен, и скорость в режимах работы 50 и 60 Герц получается примерно правильной — достаточно, чтобы запустились игры, которые проверяют фактическую частоту кадров, чтобы убедиться, что работают в правильном регионе.
На этом и основаны простые региональные моды: исходная тактовая частота и режим кодирования цвета остаются без изменений, переключается только делитель. Частота кадров и скорость игрового процесса становятся нормальными, большинство игр работает. Главное неудобство в нестандартной системе кодирования цвета, которую понимают не все телевизоры: если таким образом модифицировать NTSC-консоль, она будет работать в режимах NTSC и NTSC 4.43, а если модифицировать PAL-консоль, то в режимах PAL и PAL60.
Плата одного из продвинутых современных модов
Сейчас существуют и более продвинутые моды, содержащие два генератора тактовой частоты, умеющие переключать и частоты, и режимы работы всех чипов. Они также решают прочие тонкости, связанные с длительностью строк. Такое действительно грамотное решение по добавлению полноценной поддержки двух регионов внутри одной консоли представляет собой дополнительную дорогостоящую плату приличной сложности.
В моём случае я посчитал нецелесообразным идти на такие радикальные меры, и сделать самую простую классическую модификацию подручными средствами. В результате консоль будет фактически выдавать сигнал в форматах PAL и PAL60, а на случай проблем всегда остаётся RGB-выход.
Что касается самого видеовыхода, я решил не делать никаких доработок для улучшения качества видеосигнала, оставив стандартный разъём и схему. На данный момент подобные продвинутые опции не востребованы будущими владельцами этих двух консолей, так как это их базовый набор для первого знакомства с Super Nintendo. Если такая опция им понадобится, я всегда смогу её добавить.
▍ Делай раз
Как обычно, процесс начинается с разборки и чистки консоли.
Моя самодельная отвёртка из 90-х и современные биты
Для того, чтобы её разобрать, требуется специнструмент: особые биты для винтов-звёздочек. В прошлом я делал самодельный инструмент: плоская отвёртка с пропилом, чтобы получилось два зуба, или оплавленная пластиковая трубочка. Иногда я откручивал такие винты варварским способом: нагревал длинным жалом паяльника, чтобы они провалились через пластик корпуса. Потом вставлял металлическую шайбу, закрывающую расширенное отверстие. Теперь же всё просто: месяц ожидания заказа с Али, и есть инструмент, которым можно не только открутить, но и закрутить винтики на место.
Корпус Super Nintendo в разборе
Используя этот инструмент, я разобрал консоль на составляющие части. Корпус Super Nintendo значительно отличается от других консолей. Он многосоставной, части закреплены на защёлках и отделяются друг от друга. Очень ремонтопригодно, можно поменять любую испорченную деталь, не меняя весь корпус, и собирать Лего из нескольких старых консолей, чтобы получить лучший результат. Также эти детали удобно мыть по отдельности.
Ещё до разборки я обнаружил нечто странное, хотя и ожидаемое, и я мог бы догадаться. Дело в том, что у этих консолей есть резиновые ножки снизу. Хранились они в одной коробке, одна на другой. Со временем резина из-за контакта с пластиком потекла, и в результате часть ножек превратилась в битум, который измазал все консоли.
Потёкшая резиновая ножка и войлочная альтернатива
Ножки со всех консолей пришлось удалить, даже те, что не успели потечь, консоли отмыть. Вместо старых резиновых ножек я подобрал подходящие по диаметру войлочные мебельные упоры.
После чистки, ревизии, и проверки основной платы я приступил к модификации. Сделал её я полностью по классике, самую простую, с переключателями.
Отогнутый вывод чипа. Нужно отогнуть три
На плате были подняты ножки соответствующих чипов, что оказалось весьма непростым делом: они очень маленькие, их не разглядишь и не подцепишь. Мне трудно представить, как я с такой лёгкостью проделывал это раньше. Наверное, тогда я ещё был просто геймером, а теперь уже ретро.
Отверстия под маленькие движковые выключатели я прорезал на ребре задней стенки модельным скальпелем. Я решил минимизировать количество лишних отверстий и не стал закреплять выключатели винтиками, а приклеил их на традиционный суперклей с содой.
Выключатели внутри и снаружи
Плату и припаянные к выводам тонкие провода я закрепил каптоновым скотчем, чтобы случайно их не оторвать — сделать это очень легко. Из тех же соображений я припаял на край платы разъём, к которому подвёл эти провода. Таким образом, выключатели, закрепляемые на корпусе, подключаются через разъём, а не напрямую к чипам. Это уменьшает вероятность необратимого повреждения платы при последующей разборке и обслуживании консоли.
Плата консоли после модификации
Следующим набором вопросов была комплектация консоли. И первым в списке был джойстик.
Проблема в том, что оригинальные джойстики трудно достать, они стоят дорого, и за давностью лет они просто устали. А современные китайские джойстики хотя и легко доступны, работают плохо, и хуже того, визуально выглядят иначе — в кои-то веки с них решили устранить все упоминания Nintendo, запатентованную цветовую схему, и даже надписи Start и Select.
Старый и новый джойстики снаружи
У меня нашёлся один старый оригинальный джойстик в довольно неплохом состоянии, но от американской версии, с фиолетовыми кнопками, и я приобрёл один новый современный, похожий на европейский вариант с разноцветными кнопками. Я решил попробовать как-нибудь скомпоновать два в один.
Старый и новый джойстики внутри
У старого джойстика устали резинки и были стёрты надписи на шифтах. Я решил попробовать переставить резинки и кнопки нового джойстика в старый, чтобы получить свежие кнопки и европейскую расцветку. Однако, это удалось только частично. Резинки совпали, и их удалось переставить, а вот фиолетовые пластиковые кнопки имели выступы, из-за которых их нельзя было поставить в китайский корпус. Мне же нужно было сохранить оба джойстика. Поэтому ограничился перестановкой резинок.
Помимо джойстика, были найдены и добавлены блок питания, приобретён AV-провод и Flash-картридж Super Everdrive (клон), адаптер для запуска игр от Game Boy — Super Game Boy вместе с Flash-картриджем для Game Boy же. Комплект готов!
Первый комплект
▍ PPU Rot
Часто можно услышать разговоры о необходимости спасения видеоигрового наследия, потому что постепенно выходят из строя картриджи, дискеты и кассеты, и игры древности оказываются утраченными навсегда.
Время показало, что именно Super Nintendo демонстрирует хорошее обоснование для этих опасений, правда, не совсем по ожидаемой схеме. Дело в том, что подвержена некоторой не очень понятной проблеме, называемой «PPU rot» либо «SNES plague». Выражается это в том, что со временем в отображаемой на экране графике появляются разного рода визуальные артефакты: помехи на фоне, мерцающие спрайты, вертикальные полосы. Игры при этом продолжают работать и не зависать.
С момента подготовки первой консоли прошло немало времени, и с тех пор с ней приключилась визуально похожая неприятность. Проявилась она не очень явно, только в некоторых играх, которые я не запускал при тестировании, и я не уверен, не было ли её ранее — ведь мои консоли из ремонтного фонда, и за давностью лет информация о причинах попадания в него не сохранилась.
Проявляется проблема на этом экземпляре так: в игре Killer Instinct изредка на короткое время вместо спрайтов проявляются разбросанные по экрану квадраты с цветным шумом, картинка промигивает на такую, и снова становится нормальной. Игры при этом работают, фон никогда не портится.
По поводу причины проблемы общего мнения нет, как нет и решения. Кому-то помогает пропайка двух основных графических чипов, либо их прогрев феном. Кто-то обходится заменой конденсаторов в цепях питания или даже линейного стабилизатора 7805, который по каким-то причинам начинает сильно занижать выходное напряжение. Иногда ничего из этого не даёт никакого эффекта. Но всегда есть радикальное решение: просто заменить графические чипы или всю плату целиком. Благо, в моих запасах они есть.
▍ Делай два
Для начала повторяю базовое упражнение: разборка, мойка, подготовка к модификации. Я уже рассказал об этом процессе выше. Сам мод на плате сделан точно так же: проводки припаяны к чипам и выведены на новый разъём на плате, к которому уже подключаются переключатели.
Снятый разъём картриджа. Фото из Интернета
В процессе выполнения мода я открыл для себя удивительный момент, о котором не знал за все годы взаимодействия с этой консолью: оказывается, разъём картриджа Super Nintendo состоит из двух разъёмов: он не припаян к плате, а снимается отдельно. Таким образом, можно заменить его в случае износа без пайки. Очень ремонтопригодно. Но это было страшно, когда внезапно часть разъёма оказалась у меня в руках — думал, что он просто отвалился.
Отличие этого мода от первого экземпляра — в управлении. Для разнообразия я решил не делать никаких лишних отверстий в корпусе и вместо механических переключателей реализовать управление от кнопки сброса, сигнал от которой также заведён на мой дополнительный разъём.
Схема подключений мода SuperCIC
Существуют готовые «беспереключательные» моды типа SuperCIC, построенные на микроконтроллерах семейства PIC12 или PIC16 и работающие по принципу перехвата общения чипа региональной защиты в консоли и картриджа. Таким образом они определяют регион игры и переключают приставку в соответствующий режим. У разных модов есть свои особенности алгоритма. Например, некоторые запускают приставку в одном режиме, а через несколько секунд переводят в нужный, когда код игры закончил свои проверки.
Этот подход хорошо работает с обычными картриджами. Но при использовании Flash-картриджей, а как вы понимаете, у малобюджетного ретрогеймера это основной сценарий использования консоли, возникают некоторые проблемы, так как и внутри Flash-картриджа тоже реализована система подстройки под регион консоли.
«Беспереключательный» мод SuperCIC на базе PIC16F630 на плате консоли
Такие моды имеют открытый исходный код и продаются в готовом к установке виде. Однако, в нынешних реалиях они не очень доступны. Контроллеры PIC в наше время в нашей местности тоже не пользуются популярностью. Да и подключение такого мода требует подпайки довольно большого количества проводков, а как вы знаете, я изрядно намучился с этим в предыдущем подходе. К тому же, гораздо интереснее не просто установить готовую платку, а изобрести свой собственный велосипед. В конце концов, это просто пара логических сигналов, устанавливаемых в 0 или 1. С этим справится любая Ардуина, коих в моих запасах как добра за баней.
Схема моего мода на Arduino
Я решил делать свой вариант с учётом использования в основном Flash-картриджа, и вместо сложной процедуры автоопределения и подстройки сделать аналог механического переключателя, но управляемого со штатной кнопки сброса.
Всё устроено очень просто. В простом моде с выключателями один из них выбирает режим 50 или 60 герц, а другой включает и выключает чип региональной защиты. Итого две управляющие линии, которые надо установить в 0 или 1. Теперь вместо выключателей линиями управляет Arduino.
#include <EEPROMWearLevel.h>
#define MODE_CIC 0x01
#define MODE_PPU 0x02
uint8_t snes_mode = 0;
uint8_t led_color = 0;
#define PIN_LED_R 2
#define PIN_LED_G 3
#define PIN_LED_B 4
#define PIN_RESET 5
#define PIN_CIC 6
#define PIN_PPU 7
#define LED_RGB(r,g,b) ((r)|((g)<<1)|((b)<<2))
void config_read()
{
snes_mode = EEPROMwl.read(0);
}
void config_save()
{
EEPROMwl.write(0, snes_mode);
}
void setup() {
EEPROMwl.begin(1);
config_read();
pinMode(PIN_RESET, INPUT);
pinMode(PIN_CIC, OUTPUT);
pinMode(PIN_PPU, OUTPUT);
pinMode(PIN_LED_R, OUTPUT);
pinMode(PIN_LED_G, OUTPUT);
pinMode(PIN_LED_B, OUTPUT);
}
void loop() {
uint8_t down_time = 0;
uint8_t led_flash = 0;
while (1)
{
if (digitalRead(PIN_RESET) == HIGH)
{
if (down_time < 255)
{
++down_time;
if (down_time == 1 * 50)
{
snes_mode ^= MODE_PPU;
config_save();
}
if (down_time == 2 * 50)
{
snes_mode ^= MODE_CIC;
snes_mode ^= MODE_PPU;
led_flash = 1 * 50 / 4;
config_save();
}
}
}
else
{
down_time = 0;
}
if (!(snes_mode & MODE_CIC))
{
if (!(snes_mode & MODE_PPU)) led_color = LED_RGB(1, 0, 0); else led_color = LED_RGB(0, 0, 1); //red PAL /blue NTSC
}
else
{
if (!(snes_mode & MODE_PPU)) led_color = LED_RGB(0, 1, 0); else led_color = LED_RGB(1, 1, 0); //green PAL/yellow NTSC
}
if (led_flash > 0)
{
if (!(led_flash & 1)) led_color = LED_RGB(1, 1, 1); else led_color = 0;
--led_flash;
}
digitalWrite(PIN_CIC, snes_mode & MODE_CIC ? HIGH : LOW);
digitalWrite(PIN_PPU, snes_mode & MODE_PPU ? HIGH : LOW);
digitalWrite(PIN_LED_R, led_color & 0x01 ? HIGH : LOW);
digitalWrite(PIN_LED_G, led_color & 0x02 ? HIGH : LOW);
digitalWrite(PIN_LED_B, led_color & 0x04 ? HIGH : LOW);
delay(20);
}
}
Я решил сделать переключение между 60 и 50 герцами (в таком порядке) через удержание кнопки сброса в течение секунды, с индикацией выбранного режима цветом RGB-светодиода (красный PAL, синий NTSC). Ещё более длительное удержание кнопки, в течение двух секунд, включает и выключает чип региональной защиты, меняя сочетание цветов на зелёный и жёлтый. Короткие нажатия кнопки не вызывают срабатывания переключателей, а сам по себе сброс штатно происходит после отпускания кнопки. Сохраняется состояние системы в EEPROM-память Arduino с распределением износа (через библиотеку
WearLeveling), чтобы ресурса хватило надолго.
Реализация мода на Arduino, проводках и термоклее
Для простоты процесса я применил в моде самую классическую Arduino Nano, хотя это явный перебор, и к тому же она довольно большая. Зато будет легко всё переделать, если захочется. Другим неплохим вариантом стала бы платка на ATtiny85 в форме разъёма USB: она компактная, и управляющих линий на ней достаточно.
Крепление RGB-светодиода и его резисторов
Для индикации режимов работы пришлось выполнить небольшую доработку, установив на блоке разъёмов джойстиков RGB-светодиод и выведя его провода отдельно. Ещё один момент связан с применением Nano — она довольно долго запускается при использовании стандартного бутлоадера, из-за чего после включения питания несколько секунд не загорается светодиод и консоль не выходит в нужный режим. Эту проблему решил
Optiboot, с ним всё работает как надо.
Как и предыдущий, этот экземпляр консоли также был укомплектован всем нужным, включая AV-кабель другого вида, с разъёмами для композитного видео, S-Video и стереофонического звука, трансформаторный блок питания и современный китайский джойстик, такой же унылый, без каких-либо надписей. К сожалению, ничего лучше пока не нашлось, но зато я снабдил его двумя комплектами новых запасных резинок.
Итоговый второй комплект
Некоторые проблемы возникли с очередным Super Everdrive, приобретённым для комплекта: он почему-то не увидел идущую вместе с ним SD-карточку. Другие карточки он видит, и компьютер эту карточку тоже видел. Проблема решилась переформатированием карточки и записью на неё содержимого с другой, от моего личного, но такого же китайского Everdrive.
▍ Заключение
Очередная будня ретрогеймера окончена. Но гора консолей и компьютеров, требующих внимания, по-прежнему растёт быстрее, чем я успеваю её разгребать. В следующий раз поковыряем что-нибудь ещё, для чего найдётся время, настроение, и интересная история.
© 2025 ООО «МТ ФИНАНС»
Telegram-канал со скидками, розыгрышами призов и новостями IT 💻
