О читерстве в играх можно рассказывать много. Это история настолько древняя, что трудно понять, в какой момент времени люди стали использовать читы. Разработчики включали читы для облегчения разработки, поэтому их можно найти даже в  Manic Miner и аркадном автомате Gradius. В первых компьютерных играх геймеры могли с помощью POKE изменять значения данных, а игровые журналы печатали списки таких команд, ведь они не только могли дать бесконечные жизни, но и исправить ошибки, мешавшие прохождению игры. Бывало и так, что разработчики сами добавляли читы, пароли и коды для того, чтобы игроки могли их использовать. Короче говоря, «коррекция» игр существовала всегда. Но особый интерес вызывают физические чит-устройства, которые обрели немалую популярность в 90-х годах. Многие считают, что первопроходцем была Game Genie, однако это не так. Чит-картриджи изначально появились на рынке домашних компьютеров, и первым их примером стал Action Replay от Datel, выпущенный для C64 и других компьютеров в 1985 году. Британская компания Romantic Robot также выпускала периферийные устройства Multiface для различных компьютеров. Это позволяло использовать не только читы, но и делать сохранения игр. Так что к моменту выхода Game Genie в 1990 году концепция чит-устройств была уже хорошо известна. Однако, в отличие от Game Genie, ни одно из устройств не вызвало гнева Nintendo, направившей судебный иск аж на 15 миллионов долларов. В 1980-х Codemasters занималась разработкой игр для  ZX Spectrum и других устройств. Причём это была одна из немногих компаний, которая продавала свою продукцию по неизменно низкой розничной цене. Как рассказывал соучредитель Codemasters Дэвид Дарлинг, всё началось с выпуска серой консоли NES от Nintendo в Америке, которая поначалу не вызвала особого интереса.  На выставке CES в Чикаго присутствовала небольшая японская компания Nintendo, у которой была забавная маленькая консоль. Люди как-то слабо на неё реагировали, да и сотрудники Codemasters просто отметили забавную вещицу, быстро забыв про неё. Однако шесть месяцев спустя Nintendo была повсюду. Она стала популярной в Америке. Даже на заправочных станциях продавали игры Nintendo. Поэтому братья Дарлинг подумали: «это устройство, с которым нужно работать». Для разработки для NES требовалась дорогая лицензия от Nintendo. Но когда представители Codemasters в ходе CES попытались поговорить с Nintendo о том, чтобы делать игры для них, те даже не стали слушать. Причина была «уважительной»: ребята не записались на приём. Такое отношение было принято как вызов. Ребята решили, что будут создавать что-то своё для приставки  NES, но без одобрения Nintendo.  Как позднее рассказывал Ричард Дарлинг, второй соучредитель Codemasters, самым сложным было найти способ обойти защиту NES, чтобы игры не считались поддельными. «Злым гением» для Nintendo стал Тед Каррон, ещё один участник команды Codemasters. Возмущённый апатией японского холдинга, он всерьёз принялся за работу.  Реверс-инжиниринг приставки, взлом системы безопасности, создание собственного комплекта разработки для NES, и даже разработка самой Game Genie — всё это зависело от технических знаний Каррона. Четвёртый участник команды, Эндрю Грэм, вспоминал, что после того, как он «разобрал» игру Treasure Island Dizzy (Диззи на острове сокровищ) с помощью самодельной системы разработки Codies, Тед создал систему «Хит Робинсон», которая состояла из ПК, подключённого к Commodore 64, подключённого к коробке, полной проводов и электроники. И всё это подключалось к приставке NES. Этого игрового монстра Тед отправил Эндрю в Шотландию, а сам занялся модернизацией устройства. В результате последующие комплекты для разработки NES были более компактными. А назывались они в честь персонажей фильма «Бегущий по лезвию». Изначально Codemasters планировала уйти от разработки компьютеров и начать создавать консольные игры. Это объяснялось тем, что первые успехи компании были связаны с бюджетными играми и спортивными симуляторами. Ведь намного проще привлечь уже существующую аудиторию (например, поклонников BMX или регби), а не наращивать базу фанатов с нуля. Хотя пробным шаром Codemasters в отношении NES был перенос уже существующих компьютерных игр наподобие Dizzy, в компании всё равно думали о способах охвата более широкой аудитории. А есть ли более широкая аудитория, чем все геймеры сразу? Ребята попытались придумать концепцию игры, которая понравилась бы абсолютно всем. И решили, что для достижения этой цели необходимо предоставить игре множество опций, чтобы люди могли сделать её сложной или лёгкой. Менять игру так, как им заблагорассудится. Казалось, это невозможно, ведь игры Nintendo находятся на картридже и поменять ПЗУ не получится. Однако решение всё-таки нашлось: можно не менять ПЗУ, а немного его обмануть. На одном из регулярных собраний, проводимых разработчиками, были сформулированы потребности любого геймера: управление количеством патронов и жизней, добавление нового оружия и тому подобные вещи. Далее нужно было сделать интерфейс, который мог бы взаимодействовать с существующими играми и давать геймерам дополнительные возможности. В Codemasters понимали, это понравится всем американским детям, играющим в Super Mario Bros. Так возникла идея создать устройство, которое каким-то образом изменит поведение существующих игр. И одним прекрасным днём Тед Каррон создал прототип такого устройства. Как именно он это сделал, Тед не рассказывает. Говорит, из-за юридических рисков. Но можно примерно понять принцип самого устройства. Для работы в Codemasters использовали анализаторы LA4800, которые выглядят гораздо внушительнее, чем есть на самом деле.  Приблизительно можно понять, как всё работало. Есть куча цифровых входов, скажем, 32 ~ 48, и LA4800 выполняет их выборку с любой скоростью, которая нужна, скажем, 20 МГц. Затем он отображает результаты либо в виде волнистых линий для одного входа или чисел. Благодаря захвату данных можно было увидеть, что процессор делал с памятью во время работы. Так удавалось понять, что происходит. Чит-устройство для первой версии NES было создано всего за 6 месяцев. И то часть времени ушла на знакомство с принципами создания оборудования и подбор людей, готовых этим заниматься. ПЗУ для пользовательского интерфейса будущего Game Genie было написано Эндрю Грэмом, а коды — Джоном Мензисом.  Первые Game Genie работали как промежуточное звено между картриджем и консолью. После запуска консоли игроку показывалось меню, в котором можно было ввести 16 символов, каждый из которых соответствует шестнадцатеричному значению, и три пунктирные линии, позволяющие вводить коды из 6 или 8 символов. Каждый код представлял собой закодированную последовательность пар чисел «адрес — значение», которая в момент загрузки самой игры меняла соответствующие данные, поступающие из ПЗУ картриджа. Таким образом, устройство модифицировало код игры до того, как он будет запущен консолью, при этом содержимое ПЗУ оставалось не изменённым.  Если выразиться проще, то 6 и 8-символьные коды переводятся в адреса данных игры (верхняя половина адресного пространства 0x8000-0xFFFF), что позволяет Game Genie обманывать центральный процессор, подменяя ожидаемые байты на свои. Подобный процесс делает бесконечным количество возможных кодов, которые можно открыть. Шестисимвольный код переводится в 15-разрядный адрес и 8-битный байт данных. Именно 15-разрядный, так как 15-й бит всегда выставлен как единица, чтобы ссылаться на верхнюю часть адресного пространства процессора. Когда CPU пытается считать адрес памяти, указанный в чит-коде, Game Genie перехватывает процесс и подставляет байт из кода, вместо фактического байта из ПЗУ картриджа. Чтобы расшифровать Game Genie код для NES, переведём каждый символ в его шестнадцатеричный эквивалент, используя эту таблицу:           A     0x0          P     0x1          Z     0x2          L     0x3          G     0x4          I     0x5          T     0x6          Y     0x7          E     0x8          O     0x9          X     0xA          U     0xB          K     0xC          S     0xD          V     0xE          N     0xF Сдвигая «связанные» биты, мы можем получить адрес и данные из Game Genie. Если у вас есть два кода, один из которых дает 5 жизней в игре, а второй 9 жизней,  а разница между ними лишь в одном символе кода, то вполне очевидно, что при замене этого символа на любой другой из доступных, можно получить любое количество жизней в диапазоне от 1 до 16. Представим каждый из переведенных в шестнадцатеричную систему символов чит-кода в виде переменных от n0 до n5. Затем используем следующий псевдокод (надеюсь, вы в курсе битовых операций AND (&) и OR (|), а также операций сдвига << и >>): address  =  0x8000 +                            ((n3 & 7) << 12)                          | ((n5 & 7) << 8) | ((n4 & 8) << 8)                          | ((n2 & 7) << 4) | ((n1 & 8) << 4)                          |  (n4 & 7)          | (n3 & 8); Алгоритм объединяет в себе нижние 3 бита одного полубайта (4 бита) и берёт верхний бит из другого полубайта. В результате получаются другие 4 бита (3+1), которые помещаются куда-то ещё. Ниже алгоритм для данных:  data  =               ((n1 & 7) << 4) | ((n0 & 8) << 4)              | (n0 & 7)           | (n5 & 8);  Для примера возьмём код GOSSIP для игры Ghosts'n Goblins, который даёт персонажу на старте игры необычное оружие. Разберёмся, как это работает:      n0    n1     n2      n3     n4    n5     G     O      S        S       I       P   0x4   0x9   0xD   0xD   0x5   0x1 0100 1001 1101 1101 0101 0001  address = 0xD1DD, data = 0x14  Мы видим, что когда CPU пытается считать данные из адреса 0xD1DD, Game Genie перехватывает процесс и возвращает байт 0x14. Восьмисимвольные коды похожи на шестисимвольные. Разница лишь в том, что  у них существует значение байта сравнения, которое тоже необходимо декодировать. Возможно, это связано с использованием играми мапперов памяти, увеличивающих объём доступных для использования данных. Поскольку игра может свопить входящие и выходящие программные банки (PRG) из адресного пространства центрального процессора, Game Genie не может просто вернуть значение данных из чит-кода, когда процессор считывает из определённого адреса. Поэтому при чтении процессором данных с картриджа Game Genie проверяет, равен ли адрес из картриджа значению переменной сравнения и возвращает данные из чит-кода, если это так. В противном случае возвращаются реальные данные из картриджа.  Алгоритм декодирования адрес для восьмисимвольного чит-кода такой же, как и для шестисимвольногои. А вот алгоритм декодирования данных чуть другой: data  =                      ((n1 & 7) << 4) | ((n0 & 8) << 4)                     | (n0 & 7)          | (n7 & 8);  И ниже алгоритм декодирования переменной сравнения:  compare  =                       ((n7 & 7) << 4) | ((n6 & 8) << 4)                      | (n6 & 7)          | (n5 & 8);  Пример: чит-код ZEXPYGLA. Этот код позволяет в игре очищать ряд или колонку при совпадении трех цветов в линию, вместо изначально положенных четырех. Разберем по алгоритму:      n0    n1     n2      n3     n4    n5     n6    n7     Z      E       X       P       Y      G       L      A   0x2   0x8   0xA    0x1   0x7   0x4   0x3   0x0 0010 1000 1010 0001 0111 0100 0011 0000  address = 0x94A7, data = 0x02, compare = 0x03  Здесь, во время считывания центральным процессором из адреса 0x94A7, проверяется наличие реального байта данных 0x03. Если все совпадает, Game Genie возвращает значение 0x02. Коды давали самый разный результат. Например, если вставить в Game Genie игру Super Mario Bros. 3, а затем ввести пароль LEUXKGAA, можно было попасть в мир 1-1, а Марио превращался в Енота-Марио.  Поскольку Game Genie исправляет программный код игры, эти коды иногда называют кодами исправлений.  Интересно, что Game Genie был защищен патентом США № 5112051 «Интерфейсное устройство для компьютерных игр» от 30 мая 1990 г. Срок действия этого патента истёк 30 мая 2010 г.  Само устройство поставлялось с буклетом, содержащим коды для всех последних игр того времени. Однако выбор букв для представления шестнадцатеричных значений казался совершенно произвольным. Возможно, это было сделано для того, чтобы увеличить вероятность того, что настоящие слова образуют коды, или чтобы упростить запись новых кодов. Например, «PIGPOG» в Super Mario Bros., который случайным образом меняет расположение врагов, намного легче запомнить и рассказать друзьям, чем эквивалент «154194». К сожалению, никто не рассказывает, почему интерфейс меню сформировался именно так. Каррон лишь загадочно утверждает, что «этот шестнадцатеричный код возник по юридическим причинам». Новый продукт Codemasters был почти готов к выходу на рынок. Ему требовалось броское название. Первоначально Game Genie назывался «Power Pak», но затем переименован, так как по мнению соучредителя компании при вводе кодов у игроков исполнялись «три желания». Какими бы ни были причины, новое имя и фигура красного джинна стали культовым и привлекательным брендом. Забавно, но варианты Galoob и Camerica были совершенно разными. Джинн Camerica выходит из пламени в футуристическом научно-фантастическом забрале. Автора этого изображения установить не удалось. Это был кто-то из сотрудников фирмы-распространителя. Чит-устройство было готово, оставалось его распространить. Первоначально делами в Канаде занималась Camerica, в то время как Lewis Galoob Toys работала на территории США, прежде чем в  Galoob полностью взяла на себя управление. И, забегая вперёд, скажем, что продажи были очень хорошими. Game Genie для NES подключался к картриджу таким образом, что исключал возможность достать его из североамериканской консоли обычным способом путём нажатия на картридж. Из-за этого воздействие на ZIF-механизм вставки картриджа стало таким, что контакты разъёма изгибались ещё сильнее (узел вставки картриджа был одним из слабых мест консоли NES), что в конце концов приводило к тому, что играть в игры без установленного Game Genie становилось невозможным. Для решения этой проблемы разработчики выпустили адаптер, который Galoob предлагал владельцам Game Genie бесплатно, но их почти не брали, и запас был ликвидирован. Тед Каррон занимался аппаратным обеспечением, а Эндрю Грэм работал над пользовательским интерфейсом. Последним серьезным препятствием на пути популярности устройства стал поиск кодов для существующих игр, которыми дополнялось устройство. Из-за универсального характера Game Genie, позволяющей использовать коды для всех игр NES — старых, нынешних и будущих — каждый код для каждой игры нужно было искать вручную, методом проб и ошибок. И не все найденные коды были рабочими в разных играх. Не существовало универсального решения для всех игр сразу, а это означало, что Codemasters нужно было привлечь больше людей, чтобы «грубой силой» пробиться сквозь стену шестнадцатеричных чисел. Одним из самых известных «добытчиков» кодов стал Грэхэм Ригби, Вместе с Мензинсом он подключил Commodore 64 для управления прототипом Game Genie с помощью всплывающей утилиты, благодаря чему стало возможно вводить коды в шестнадцатеричном формате, что было намного удобнее, чем работа с контроллером NES. Кроме того, разработчикам удалось последовательно подключить два Genie, чтобы вводить до шести кодов одновременно. Это немного ускорило процесс. Игр было много, но в первую очередь искались коды для Mario и Mega Man, так как в них было весело играть. На прохождение обычной игры уходило около трёх дней, а для некоторых популярных RPG этот срок удваивался. Ригби говорил, что ему особенно запомнился первый комплект разработчика: несколько рядов переключателей, припаянных к верхней части черной 5.25 дюймовой коробки для гибких дисков. Это были двоичные переключатели, в которых нужно было выбрать положение до 0 или 1, чтобы выбрать адрес и значение, которое хотелось установить.  Возможно, это звучит неприглядно, но для всех, кто любил игры, это было невероятным опытом.  Коллеги Ригби вспоминали, что он был главным Codemeister, так как жил в комнате, заполненной только полками и стойками с играми NES — у него были все игры NES! Когда с помощью Galoob дела пошли в гору, команда получала около 10 игр каждые две недели. В то время многие игры не были доступны в Великобритании, поэтому сотрудники видели много нового. Очевидно, что некоторые игры не были хорошими, и им всё равно приходилось вкладывать время и силы в них, но в целом Ригби и другие искатели кодов играли во множество блестящих игр для NES в начале своей карьеры. Версия для NES впервые появилась на полках магазинов в 1990 году. Хотя Game Genie в конечном итоге стала известна исключительно как продукт Galoob, все же напомним, что Camerica продавала устройства в Канаде. Очень скоро Galoob столкнулся с судебным запретом Nintendo прекратить продажи в США, что привело к длительным судебным разбирательствам. В это же время канадские суды отклонили иск Nintendo против Camerica. Этот поворот фортуны привел к тому, что Camerica выпустила печально известный плакат «Спасибо, Канада», в котором говорилось: «Вы хотели Game Genie. Nintendo этого не сделала. Они пытались остановить нас. Они этого не сделали. Genie's жив. Доступно только в Канаде!». Надо сказать, что не Nintendo был инициатором разбирательств, хотя впоследствии и японцы подали многомиллионный иск. В мае 1990 года именно Galoob инициировала процесс, целью которого было получение официального заключения о том, что Game Genie не нарушает авторские права Nintendo, а также постановления суда, которое бы запрещало японской компании умышленно модифицировать NES таким образом, чтобы сделать чит-приставку и консоль несовместимыми.  В понедельник 2 июля 1990 года, 46 дней спустя, суды вынесли предварительный судебный запрет в пользу не подстрекателя Galoob, а Nintendo. Galoob пришлось бы прекратить продавать Game Genie, пока судебное дело не закончилось. Судебный запрет был позже подтверждён апелляционным судом в среду, 27 февраля 1991 года. Уже ответным Nintendo стал встречный иск, в котором юристы компании утверждали, что творение Galoob нарушает авторские права Nintendo на разработанные игры, так как Game Genie создаёт производное произведение (игру с изменённым кодом) без разрешения правообладателя. Если бы суд признал правоту Nintendo, мир был бы другим.  Но американская судебная система встала на сторону геймеров, за что можно сказать спасибо окружному судье Ферн Мейерсон Смит, которая приняла решение, что после приобретения игровой консоли и картриджа покупатель имеет право экспериментировать с продукцией Nintendo так, как сочтёт нужным. То есть если он захочет модифицировать программный код и создавая его новые варианты для личного использования, то и пожалуйста. Так как речь не идёт о распространении полученных таким образом копий игр, то и нарушения закона тоже нет. Хотя некоторые источники пытаются изобразить эту битву как сражение Давида против Голиафа, это не совсем верно. Galoob была основана в 1957 году и регулярно упоминается как одна из десяти крупнейших компаний по производству игрушек в США, а её общий доход за 1989 год составил 228 миллионов долларов.  Nintendo же с момента выхода на розничный рынок США пыталась получить монополию на производство и продажу видеоигр, в основном закулисными методами. Это были настоящие монстры, которые пытались уничтожить друг друга в открытом судебном заседании. А вот и текст судебного постановления после полуторагодичного разбирательства. Nintendo подала апелляцию, и все закончилось только в четверг, 21 мая 1992 года, примерно два года спустя, по-прежнему в пользу Galoob. Nintendo не имеет обыкновения проигрывать юридические баталии, но история с Game Genie — один из немногих случаев, когда японская компания проиграла. Однако даже после решения суда,  прошла пара лет, прежде чем Galoob и Codemasters получили выплаты. В начале судебного процесса Nintendo должна была выплатить залог в размере 15 миллионов долларов в качестве обеспечения предварительного судебного запрета против Galoob. Когда Nintendo проиграла дело, она обжаловала исполнение этого залога, и только 17 февраля 1994 года Апелляционный суд Девятого округа отклонил протест. Деньги частично ушли в Galoob, а частично — в Codemasters. Интересно, что позднее Galoob и Codemasters судились уже между собой. Но это, как говорится, уже совсем другая история. На момент вынесения судебного запрета Galoob произвела 15 000 Game Genie и имела заказы ещё на полмиллиона штук. Аналитики подсчитали, что если бы не судебный запрет, Galoob мог бы зарабатывать на Game Genie до 30 миллионов долларов в год. Это явно был хит. Очевидно, компании хотели оседлать эту волну, и вслед за NES должны были появиться Game Genie для SNES, Game Boy, Genesis/Mega Drive и Game Gear. Много было написано о том, что Sega, казалось бы, официально одобрила Game Genie на своём оборудовании. Однако это произошло не так уж и мирно, как многие думают. Sega разрешила Game Genie только потому, что Codemasters поставила им ультиматум. Представители Codemasters пришли в Sega и заявили, показывая прототип нового устройства, что собираются его выпустить уже совсем скоро. Корпорации был задан простой вопрос:  «хотите подать на нас в суд или договориться?» Codemasters были очень осторожны с юридической стороной и были вполне уверены, что смогут выиграть в суде, если дойдёт до этого. После тяжёлых 11-часовых переговоров и была заключена сделка. Продукция была запущена в производство, компании были юридически безопасны, и деньги потекли в компанию. Книги новых кодов для новых игр продолжали рассылаться всем, кто купил Game Genie. Журналы охотно печатали новые коды.  Game Genie стал успешным явлением, тиражируемым во многих форматах, и с наследием, которое продолжается и по сей день. Точную сумму, которую из-за своей невнимательности потеряла Nintendo и другие компании, назвать трудно. Утверждается, что всего было продано около 5 млн устройств, Game Genie принесла в общей сложности более 140 миллионов долларов. В 1994 году дела у Game Genie тихонько пошли на спад, а Codemasters снова вернулась к разработке игр.  В России такое устройство было не встретить. Зато чит-коды активно распространялись среди школьников, активно играющих в приставки (о книжках, в которых были записаны ВСЕ читы для игр, ходили легенды, но вживую их мало кто видел). А за детьми потянулись и взрослые. https://www.nintendolife.com/features/best-of-2021-the-story-of-the-game-genie-the-cheat-device-nintendo-tried-and-failed-to-kill http://tuxnes.sourceforge.net/gamegenie.html Что ещё интересного есть в блоге Cloud4Y → Айтишный пицца-квест. Итоги → Как я случайно заблокировал 10 000 телефонов в Южной Америке → Клавиатуры, которые постигла неудача → WD-40: средство, которое может почти всё → Изучаем своё железо: сброс паролей BIOS на ноутбуках Подписывайтесь на наш Telegram-канал, чтобы не пропустить очередную статью. Пишем не чаще двух раз в неделю и только по делу. Корпоративный облачный провайдер