Как сделать на флешку игру для сеги

Добавил пользователь Евгений Кузнецов
Обновлено: 14.09.2024

Несмотря на мой большой опыт в реверсе игр под Sega Mega Drive , крякмисов под неё я никогда не решал, да и не попадались они мне на просторах интернета. Но, на днях появился забавный крэкми, который захотелось решить. Делюсь с вами решением.

Описание

Описание задания и сам ром можно скачать здесь.

Несмотря на то, что в списке ресурсов там говорится про Гидру, стандартом де-факто среди инструментов для отладки и реверса игр на Сегу является Smd Ida Tools. В нём есть всё необходимое для решения данного крекми:

  • Загрузчик ромов для Иды
  • Отладчик
  • Просмотр и изменение памяти RAM/VDP
  • Отображение практически полной информации по VDP

Закидываем в плагины к Иде последний релиз, и начинаем смотреть, что у нас имеется.

Решение

Запуск любой игры на Сегу начинается с выполнения вектора Reset . Указатель на него можно найти во втором DWORD-е от начала рома.



Видим парочку неопознанных функций начиная с адреса 0x27A . Давайте взглянем что там.

sub_2EA()


По своему опыту скажу, что так обычно выглядит функция ожидания завершения VBLANK -прерывания. Посмотрим, где ещё есть обращения к переменной byte_FF0026 :


Видим, что нулевой бит как раз устанавливается в прерывании VBLANK . Значит переменную назовём vblank_ready , а функцию, где она проверяется — wait_for_vblank .

sub_60E()

Далее по коду вызывается функция sub_60E . Посмотрим, что там:


То, что записывается первой командой в адрес VDP_CTRL — это команда управления VDP . Чтобы узнать, что же она делает, становимся на эту команду, и нажимаем клавишу J :


Видим, что инициализируется запись в CRAM (место, где хранятся палитры). Значит, весь последующий код функции просто задаёт какую-то начальную палитру. Соответственно, функцию можно назвать init_cram .

sub_71A()


Видим, что снова передаётся какая-то команда в VDP_CTRL , значит снова жмём J и узнаём, что это команда инициализирует запись в видеопамять:


Далее разбираться, что же там передаётся в видео-память, смысла нет. Поэтому просто обзываем функцию load_vdp_data .

sub_C60()

Здесь происходит практически то же самое, что и в предыдущей функции, поэтому, не вдаваясь в подробности, просто назовём функцию load_vdp_data2 .

sub_8DA()

Тут уже кода побольше. И, к тому же, в этой функции вызывается ещё одна. Заглянем сразу туда — в sub_D08 .


Видим, что в регистре D0 приходит команда для VDP_CTRL , в D1 — значение, которым будет заполняться VRAM , а в D2 и D3 — ширина и высота заполнения (т.к. получается два цикла: внутренний и внешний). Обзываем функцию fill_vram_by_addr .

sub_8DA()

Возвращаемся в предыдущую функцию. Раз значение в регистре D0 передаётся как команда для VDP_CTRL , нажмём на значении клавишу J . Получим:


Опять же, из опыта реверса игр на Сегу могу сказать, что эта команда инициализирует запись маппинга тайлов. Адреса, которые начинаются на $Fxxx , $Exxx , $Dxxx , $Cxxx в 90% случаев будут адресами регионов с этими самыми маппингами. Что такое маппинги:
это такие значения, которыми можно указывать, куда выводить тот или иной тайл на экране (тайл — это квадрат из пикселей размером 8x8 ).

Значит функцию можно назвать как init_tile_mappings .

sub_CDC()


Первая же команда инициализирует запись по адресу $F000 . Одно замечание: среди адресов "маппингов", есть ещё регион, где хранится таблица спрайтов (это их позиции, тайлы, на которые они указывают и т.д.) Узнать, какой регион за что отвечает можно будет под отладкой. Но пока нам это не нужно, поэтому назовём функцию просто init_other_mappings .

VBLANK

Так как дальше по коду идёт цикл, то можно предположить, что основную инициализацию мы закончили. Теперь можно посмотреть на VBLANK -прерывание.


Видим, что инкрементируются две переменные (что странно, в списке ссылок на каждую из них абсолютно пусто). Но, раз они обновляются раз в кадр, можно назвать их timer1 и timer2 .

Далее вызывается функция sub_2FE . Посмотрим, что там:

sub_2FE()


А там — работа с IO_CT1_DATA портом (отвечает за первый джойстик). В регистр A0 грузится адрес порта, и передаётся в функцию sub_310 . Переходим туда:

sub_310()


Мой опыт снова мне помогает. Если вы видите код, который работает с джойстиком, и две переменные в памяти, значит одна хранит pressed keys , а вторая — held keys , т.е. нажатые только что и удерживаемые клавиши. Так и обзовём эти переменные: pressed_keys и held_keys . А функцию тогда можно назвать как update_joypad_state .

sub_2FE()

Обзываем функцию как read_joypad .

Цикл обработчика

Теперь всё выглядит куда понятнее:


Значит этот цикл реагирует на нажатые клавиши, и выполняет соответствующие им действия. Пройдёмся по каждой из вызываемых в цикле функций.

sub_4D4()


Кода здесь много. Начнём с первой вызываемой функции: sub_60C .

sub_60C()

Она ничего не делает — так может показаться сначала. Просто возврат из текущей функции — rts . Но, т.к. на неё происходят только прыжки ( bsr ), значит rts вернёт нас обратно в цикл обработчика. Я бы назвал эту функцию как retn_to_loop .

sub_4D4()

Далее видим обращение к переменной word_FF000E . Она нигде, кроме текущей функции не используется и, поначалу, назначение мне её было не понятно. Но, если присмотреться, можно предположить, что эта переменная нужна лишь для небольшой задержки между обработкой нажатых клавиш. (Она и так плохо реализована в этом роме, но, думаю, без этой переменной было бы куда хуже).


Далее у нас идёт большое количество кода, который как-то обрабатывает переменные sprite_pos_x и sprite_pos_y , что может говорить только об одном — это нужно для отображения спрайта выделения вокруг выделенного в алфавите символа.

Значит теперь можно смело назвать функцию как update_selection . Идём дальше.


Код проверяет, установлены ли биты каких-то нажатых клавиш, и вызывает определённые функции. Посмотрим на них.


Какая-то шаманская магия. Сначала из переменной word_FF0018 берётся WORD , затем происходит выполнение одной интересной инструкции:

Эта команда просто прыгает на следующую за ней инструкцию.

Далее — ещё одна магия:

Значение в регистре D0 кладётся на вершину стека. Тут стоит отметить, что у Сеги, как и у какого-нибудь x86 , адрес возврата из функции при её вызове кладётся на вершину стека. Соответственно, первая инструкция кладёт на вершину какой-то адрес, а вторая — поднимает его со стека и совершает по нему переход. Хороший трюк.

Теперь нужно понять, что это за значение в переменной, по которому потом происходит переход. Но, для начала назовём эту переменную как jmp_addr .

А функции назовём так:

  • sub_D38 : goto_to_d0
  • sub_D28 : jump_to_var_addr

jmp_addr

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


Существует лишь одно место записи в эту переменную. Посмотрим на него.

sub_3A4()


Здесь, в зависимости от координаты спрайта (помним, что это скорее всего адрес выделенного символа), заносится то или иное значение. Видим следующий участок кода:


Имеющееся значение сдвигается вправо на 4 бита, в младший байт помещается новое значение, и результат заносится в переменную снова. В теории, наша переменная jmp_addr хранит те символы, которые мы можем вводить на экране ввода ключа. Заметим также, что размер переменной — WORD .

По сути, функцию sub_3A4 можно назвать как update_jmp_addr .

sub_414()

Теперь у нас осталась всего одна функция в цикле, которая не распознана. И называется она sub_414 .


Код её напоминает код функции update_jmp_addr , только в конце у нас происходит вызов функции sub_45E . Заглянем туда.

sub_45E()


Далее по коду происходит работа с переменной byte_FF0014 , которая нигде, кроме текущей функции не используется. Если присмотреться, как она используется, можно заметить, что максимальное число, которое в ней может установиться, это 4 . У меня такое предположение, что эта текущая длина введённого ключа. Давайте это проверим.

Запускаем отладчик

Я воспользуюсь отладчиком из Smd Ida Tools , но, по сути, достаточно будет и какого-нибудь Gens KMod, или Gens ReRecording. Главное, чтобы была фича с отображением адресов в памяти.


Моя теория подтвердилась. Значит переменную byte_FF0014 теперь можно обозвать key_length .

Так что же делает эта функция? У меня есть предположение, что она отрисовывает введённый символ. Проверить это просто — запустив отладчик, и сравнив состояние до вызова функции sub_45E и после:



Я был прав — эта функция отрисовывает введённый символ. Назовём её do_draw_input_char , а функцию, которая её вызывает ( sub_414 ) — draw_input_char .

Что теперь?

Давайте пока проверим, что переменная, которую мы назвали jmp_addr действительно хранит введённый ключ. Воспользуемся теми же Memory Watch :


Как видим, догадка была верна. Что нам это даёт? Мы можем прыгать на любой адрес. Только на какой? В списке функций все разобраны ведь:


Тогда я начал просто прокручивать код, пока не обнаружил вот такое:


Намётанный глаз увидел в конце неразмеченных байт последовательность $4E, $75 . Это опкод инструкции rts , т.е. возврата из функции. Значит эти неразмеченные байтики могут быть кодом какой-то функции. Попробуем их обозначить как код, жмём C :


Очевидно, это код функции. Можно также нажать на нём P , чтобы код стал функцией. Запомним это имя: sub_D3C .

Тут возникает мысль: а что если прыгнуть на sub_D3C ? Звучит неплохо, правда одного прыжка сюда явно будет недостаточно, т.к. на переменную word_FF0020 ссылок больше не нашлось.

Тогда меня посетила ещё одна мысль: а что если поискать другой такой неразмеченный код? Открываем диалог Binary search (Alt+B), вводим в нём последовательность 4E 75 , ставим галку Find all occurrences :


Жмём ОК , чтобы начать поиск, получаем следующие результаты.


Как минимум ещё два места в роме могут содержать код функции, нужно их проверить. Кликаем по первому из вариантов, прокручиваем чуть вверх, и снова видим последовательность неопределённых байт. Обозначим их как функция? Да! Жмём P там, где начинаются байты:


Круто! Теперь у нас есть функция sub_34C . Пробуем повторить то же самое ещё и с последним из найденных вариантов, и… получаем облом. Там такое большое количество байт перед 4E 75 , что не понятно, где начинается функция. И, явно, не всех из этих байт выше являются кодом, т.к. очень много повторяющихся байт.

Определяем начало функции

Нам будет проще всего найти начало функции, если мы найдём, где заканчиваются именно данные. Как это сделать? На самом деле совершенно не сложно:

  1. Крутим до начала данных (там будет ссылка на них из кода)
  2. Переходим по ссылке и ищем цикл, в котором должен будет фигурировать размер этих самых данных
  3. Размечаем массив

Итак, выполняем первый пункт.


… и сразу видим, что в цикле из нашего массива копируется по 4 байта данных за раз (потому что move.l ) в VDP_DATA . Рядом видим число 2047 . Может сначала показаться, что итоговый размер массива 2047 * 4 , но цикл на основе dbf выполняется на +1 итерацию больше, т.к. последнее сравниваемое значение не 0 , а -1 .

Итого: размер массива равен 2048 * 4 = 8192 . Обозначим байты как массив. Для этого жмём * и указываем размер:


Крутим в конец массива, и видим там байты, которые являются именно байтами кода:



Теперь у нас появилась функция sub_2D86 , и у нас есть всё, чтобы решить этот крекми! Посмотрим, что делает новоиспечённая функция.

sub_2D86()

sub_34C()


Видим, что здесь вычитывается значение переменной word_FF0020 . Если посмотреть ссылки на неё, то увидим ещё одно место, где как раз происходит запись в эту переменную, и это будет как раз то место, куда я хотел прыгать через переменную jmp_addr . Это подтверждает догадку, что прыгать на sub_D3C точно нужно.

А вот происходящее далее мне стало лень понимать, поэтому я закинул ром в GHIDRA, нашёл эту функцию, и посмотрел декомпилированный код:

Видим, что используется переменная со странным именем in_D1w , а ещё переменная DAT_00ff0020 , которая адресом своим напоминает упомянутую ранее word_FF0020 .

Для этого в окне с декомпилированным кодом жмём правой кнопкой мыши на имени функции, и выбираем пункт меню Edit Function Signature :


Для того, чтобы указать, что функция принимает аргумент через конкретный регистр, а именно не стандартным для текущей конвенции вызовов способом, нужно поставить галку Use Custom Storage и нажать на иконку с зелёным плюсом:


Появится позиция для нового входного аргумента. Кликаем по ней два раза, и получаем диалог указания типа и носителя аргумента:


В декомпилированном коде видим, что in_D1w имеет тип ushort , значит его и укажем в поле с типом. Затем нажмём кнопку Add :


Появится позиция для указания носителя аргумента, нам нужно указать в Location регистр D1w , и нажать OK :


Декомпилированный код примет вид:

Т.к. xor — операция обратимая, можно все константные числа поксорить между собой и получить искомое значение переменной DAT_00ff0020 .

Выходит, что значение переменной должно быть равно 0x4553 . Кажется, я уже видел место, где такое значение устанавливается.


Выводы и решение

Приходим к следующим результатам:

Экспериментальным путём выясняем клавишу, которую нужно нажать, чтобы проверить введённый ключ: B . Пробуем:

постер Сборник консольных игр Sega Mega Drive для новодельных консолей (Под флешку)

Год выпуска: 2013 г.
Жанр: Самые разные
Разработчик: Sega и не только
Язык интерфейса: Русский
Консоль: Sega Mega Drive Genesis Под флешку
Описание: Самый полный сборник игр на русском языке для игровой приставки Sega Mega Drive.
Для новодельных консолей: TITAN 2,Sega Mega Drive / Genesis - GameShelf,Sega Mega Drive 2 HD,Mega Drive Turtles (69 встроенных игр),SUPER DRIVE.

СПИСОК НА РУССКОМ

Addams Family
Addams Family Values
Adventures of Batman and Robin, The
Aero the Acro-Bat 2
After Burner II
Alien Soldier
Alien Storm
Animaniacs
Arcus Odyssey
Ariel The Little Mermaid
Asterix and the Great Rescue
Asterix and the Power of the Gods
Barbie Super Model
Batman - Revenge of the Joker
Batman
Batman Foreve
Batman Returns
Battletech
Battletoads
Battletoads And Double Dragon
Beauty and the Beast - Belle's Quest
Beauty and the Beast - Roar of the Beast
Beyond Oasis (Story of Thor, The - A Successor of The Light)
Beyond Zero Tolerance
Bloodshot (Battle Frenzy)
Boogerman A Pick and Flick Adventure
Bubba'n Stix
Bubsy II
Bubsy in Claws Encounters of the Furred Kind
Bug's Life, A
Bugs Bunny In Double Trouble
Caliber Fifty
Cannon Fodder
Capitain America & Avengers
Castle of Illusion starring Mickey Mouse
Castlevania Bloodlines
Championship Pro-Am
Chase HQ II
Cheese Cat-Astrophe
Chess
Cliffhanger
Cliffhanger
Clue
Combat Cars
Comix Zone
Commandos
Contra Hard Coprs
Cool Spot
Crusader of Centy
Cutthroat Island
Cyber Cop
Cyber Shell Multigame Cartridge
Daffy Duck in Hollywood
Death and Return of Superman
Death Caliber
Deer Hunter
Demolition Man
Desert Demolition
Desert Strike - Return to the Gulf
Dick Tracy
Disney's Aladdin )
Domino
Donald Duck in Maui Mallard
Doom Troopers
Double Dragon 2
Double Dragon 3
Double Dragon
Dragon The Bruce Lee Story
Duke Nukem 3D
Dune - The Battle for Arrakis
Dynamite Duke
Earthworm Jim 2
Earthworm Jim
Earthworm Jim
Ecco - The Tides of Time
Ecco Junior
Ecco the Dolphin
Evander Holyfield's Real Deal Boxing
F1 World Championship
Fantasia
Fantastic Dizzy
Fatal Labyrinth
Fatal Labyrinth
Flashback - The Quest for Identity
Flintstones, The
Flintstones, The
Gargoyles
Gemfire
General Chaos
Generations Lost
Ghostbusters
Gley Lancer
Gods
Golden Axe 2
Golden Axe 3
Golden Axe
Goofy's Hysterical History Tour
Granada
Greendog

Hacks · 30.49 MB
o Dune - Mission Sardaukar Hack (Dune 2 Hack)
o King Colossus (God mode Hack)
o
Pirate Hacks · 22.59 MB
+ Avatar (Jim Power - The Arcade Game Hack)
+ Crash Bandicoot (Zero the Kamikaze Squirrel Hack)
+ Diablo - Labirint Sydby (Fatal Labyrinth Hack)
+ Final Fantasy (Barver Battle Saga - The Space Fighter Hack)
+ Final Fantasy (Barver Battle Saga - The Space Fighter Hack)
+ Final Fantasy (Barver Battle Saga - The Space Fighter Hack)
+ Forsazh 5 - Bystraja Pyaterka (Combat Cars Hack)
+ Gran Turismo 5 (Fun Car Rally Hack)
+ Harry Potter and Chamber of Secrets (Mick & Mack Hack)
+ Ice Age (Awesome Possum Hack)
+ Ice Age 3 (Chuck Rock Hack)
+ Ice Age 4 (Chuck Rock Hack)
+ Kamennye Reindzhery
+ Kolobok - Piramida (Uwol Quest For Money Hack)
+ Kung Fu Panda 2 (Brutal - Paws of Fury Hack)
+ Kyzya - Ekologiya v Opasnosti (Chuck II - Son of Chuck Hack)
+ Kyzya v Mire Dinozavrov (Chuck II - Son of Chuck Hack)
+ Madagascar - Operacia Pingvin (Majikaru Hashito Hack)
+ Madagascar 3 (A Dinosaur's Tale Hack)
+ Mafia (Dick Tracy Hack)
+ Monsters Inc (Decap Attack Hack)
+ Narnia 3 (Galahad Hack)
+ Naruto (3 Ninjas Kick Back Hack)
+ Need for Speed Undercover (Turbo Outrun Hack)
+ Pirates of the Caribbean (Uncharted Waters Hack)
+ Piraty Karibskogo Morya - Na Strannyh Beregah (Battle City Hack)
+ RHL 2007 (NHLPA Hockey '93 Hack)
+ Sezon Ohoty (Hack)
+ Sezon Ohoty 3 (Rolo to the Rescue Hack)
+ Shrek (Yogi Bear's Cartoon Capers Hack)
+ Shrek 2 (Ottifants Hack)
+ Snezhnaya Koroleva (Mick & Mack Hack)
+ Tachki (Super Skidmarks Hack)
+ Tachki 2 (Championship Pro-Am Hack)
+ Tanki 2011
+ Tanki Klassika (Battle City Hack)
+ Transformers 3 (Mazin Saga Hack)
+ Winx 3D - Volshebnoe Prikluchenie (Valis III Hack)
o Rings of Power (Beskonechnii blud Hack)
o Rings of Power (Money Hack)
o Rings of Power (Quick god Hack)
o Sonic 2 Beta Jk.fox Remake 2011 (STH2 Beta Hack)
o Sonic HighForce (STH Hack)
o Sonic NaoSI (STH Hack)
o Sonic Quick Winter Adventures
o Sonic Sad Hill (STH Hack)
o Surging Aura (Byezuslovnaya Pobeda Hack)
o Surging Aura (Zamorozheny Protivnniki Hack)
Home Alone 2
Incredible Hulk
James Bond 007 - The Duel
James Pond - Underwater Agent
Jewel Master
Judge Dredd - The Movie
Jungle Book
Jungle Strike
Jurassic Park - Rampage Edition
Jurassic Park 2 - The Lost World [T+Rus_NewGame].zip 1.95 MB (2046045)
Jurassic Park
King Colossus
Klax
Landstalker - The Treasures of King Nole
Light Crusader
Lion King 2
Lion King 3
Lion King
Lost Vikings
Mary Shelley's Frankenstein
Michael Jackson's Moonwalker
Mickey Mania
Micro Machines 2
Micro Machines
Midnight Resistance
Midnight Resistance
Mig-29 Fighter Pilot
Mighty Morphin Power Rangers - The Movie
Monopoly
Monster World IV
Mortal Kombat 3
Mortal Kombat 3
Mortal Kombat 5 - Sub Zero
Mortal Kombat
Mortal Kombat II
Mr. Nutz [T+Rus_Pirates].
MTV's Beavis and Butthead
Old Ship (PD)
Out of This World (Another World)
Phantasy Star - The End of the Millenium
Phantasy Star II
Phantasy Star III - Generations of Doom
Pinocchio
Pirates of Dark Water, The
Pirates! Gold
Pocahontas
Populous II
Power Monger
Predator 2
Prince of Persia
Prince of Persia 2 - The Shadow and The Flame (Beta)
Punisher
Quack Shot Starring Donald Duck
Radical Rex
Rambo III
Red Zone
Rings of Power
Ristar
Road Blasters
Road Rash 2
Road Rash 3
Road Rash
RoboCop 3
RoboCop versus The Terminator
Rock 'n Roll Racing
Rolo to the Rescue
Scooby Doo Mystery
Second Samurai, The
Shadowrun
Shining Force
Shining Force II
Shinobi III - Return of the Ninja Master
Shove It! The Warehouse Game (Sokoban)
Side Pocket
Skeleton Krew
Soldiers of Fortune (Chaos Engine, The)
Sonic & Knuckles
Sonic 3D Blast
Sonic Spinball
Sonic The Hedgehog 2
Sonic The Hedgehog 2
Sonic The Hedgehog 3
Sonic The Hedgehog
Spider-Man (Spider-Man vs The Kingpin)
Spider-Man - The Animated Series
Spider-Man and Venom - Maximum Carnage
Spiderman & Venom Separation Anxiety
Splatterhouse 2
Splatterhouse 3
Spot Goes to Hollywood
Squirrel King
Stargate
Street Fighter II' - Special Champion Edition
Streets of Rage (Bare Knuckle - Ikari no Tekken)
Streets of Rage 2 (Bare Knuckle 2) (Beta)
Streets of Rage 2 (Bare Knuckle 2)
Streets of Rage 2 (Bare Knuckle 2)
Streets of Rage 3 (Bare Knuckle 3)
Sunset Riders
Super Battle Tank - War in the Gulf
Super Battleship
Super Donkey Kong 99
Super Hang On
Super Mario World
Surging Aura
Sylvester and Tweety in Cagey Capers
Syndicate
T2 - The Arcade Game )
Tale Spin
Taz in Escape from Mars
Taz-Mania
Teenage Mutant Ninja Turtles - The Hyperstone Heist
Terminator 2 - Judgment Day
Terminator, The
The Duel - Test Drive II
The Simpsons Bart vs. the Space Mutants
Theme Park
Tick
Tiny Toon Adventures - Buster's Hidden Treasure
Tom and Jerry Frantic Antics
Top Gear 2
Toy Story
True Lies
Turbo Outrun
Ultimate Mortal Kombat 3
Uncharted Waters - New Horizons
Urban Strike
Valis
Valis 3
Vectorman 2
Vectorman
Warlock
Warsong
Waterworld
Wolverine - Adamantium Rage
World of Illusions
Worms
X-Men 2 - Clone Wars
X-Men
X-perts
Yuu Yuu Hakusho - Makyou Toitsusen
Zero the Kamikaze Squirrel
Zero Tolerance
Zombies Ate My Neighbors



Скриншоты:

Magistr Mega drive (250 игр 16 bit) Page 1

граммы форматиров ания. Соз дайте на карте памяти папку с именем GAME .

Вариант 2: Предв арите льно на ПК о тформатир уйте карту с помощью сторонней программы для фор-

матиро вания. Со здайт е на карте памяти папку с именем GAMES .

Скопируйте файлы (ромы) игр чере з картридер с компьютера на карту . Запишите игры в папку в фор-

мат е Sega (.bin) Вставь те к арту в раз ъем для карты памяти в приставке. Встав лять необ хо димо с раз ум-

Внимание! Файлы (ромы) игр об язательно до лжны быть стандарта SEGA 16-bit и име ть расширение

.bin (например, Pocahontas.bin). На карте памяти не до лжно быть сторонних папок и файлов в разных

форм атах, при наличии посторонней инф орм ации выдается ошибка, кар та памяти не работае т .

Меры безопасности при испо льз овании игров ой видеоприст авки

– Без опасность. При использ овании игровой видеоприст авки соб людайт е меры предост орожности,

порядок включения и эксплуа тации, а т акже условия хранения. Не использ уйте устройств о

в следующих у словиях: крайне высокие или крайне низкие температуры, высокая влажность,

– Не используйт е игровую консоль в лажными руками, устройство не яв ляе тся в одонепроницаемым.

Немедленно прекра тить испо льзование при ненормиров анном функционировании игров ой консоли.

– Избег айте у даров и падения игров ой консоли. В противном случае э то мо же т привести

к повреждениям и по ломке. Не пытайтесь самостояте льно ра збира ть игровую консоль или её части.

– Сохранение з доровья. Через каждый час игры де лайте перерывы для о т дыха на 10-15 минут .

Не играйте, если вы о чень устали и не выспались. Во время игры сле дуе т нах одиться на максимально

возмо жном расстоянии о т экрана те левизора. Помещ ение, в котором вы играе т е, должно быть

доста то чно освещено и пров е трено. Лицам, предраспо ложенным к эпилепсии, не рекомендуе тся

ИНСТРУКЦИЯ ПО ЭКСПЛУАТАЦИИ Magistr X

Поздравляем вас с приобретением игровой видеоприставки 16-бит Magistr X. Перед началом эксплуатации настоятельно рекомендуем внимательно ознакомиться с данной инструкцией, она познакомит вас с правилами пользования, ответит на возможные вопросы и позволит продлить срок службы изделия.

– Игровая консоль - 1 шт.

– Блок питания* - 1 шт.

– Аудио-видео кабель для подключения к телевизору - 1 шт.

– Инструкция по эксплуатации - 1 шт.

* – В некоторых моделях блок питания является встроенным.


Составные части игровой видеоприставки

1. Игровая консоль

2. Кнопка включения ON/OFF

4. Индикатор питания

5. Аудио-видео разъемы

6. Разъём для карты памяти microSD или microSDHC

7. Разъём для подключения блока питания/сетевой кабель

8. Разъёмы для подключения джойстиков

Подключение к телевизору

1. Присоедините штекеры кабеля к аудио-видео выходу игровой консоли.

2. Присоедините жёлтый штекер кабеля к видеовходу телевизора, а белый и красный штекеры кабеля – к аудиовходам телевизора.

3. Переведите телевизор в режим Видео.

4. Подключите блок питания или сетевой кабель к игровой консоли и включите его в сеть.

5. Включите игровую консоль.

Подключение к телевизорам c различными видеовходами

– При наличии в телевизоре стандартного входа AV (RCA) подключение осуществляется согласно инструкции с помощью входящих в комплектацию кабелей.

– Если в телевизоре разъём SCART, то для подключения необходимо использовать переходник SCART – RCA (в комплект не входит).

– Если в телевизоре разъём HDMI, то для подключения необходимо использовать переходник HDMI – RCA (в комплект не входит).

– Если в вашем телевизоре разъем для входа отличается от приведенных выше, обратитесь к инструкции к своему телевизору.

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

Навигация по Главному меню:

– Перемещение между папками: крестик джойстика в положении ВПРАВО или ВЛЕВО.

– Перемещение между файлами в папках: крестик в положении ВПРАВО, ВЛЕВО, ВВЕРХ или ВНИЗ.

– Подтверждение выбора: кнопки START или А.

– Возврат: кнопка В.

– Возврат в Главное меню: кнопка MENU на игровой консоли.

Как начать игру

Игровая консоль Magistr X имеет встроенную память с предустановленными играми разных жанров.

Для начала игры включите игровую консоль (кнопка ON/OFF), в открывшемся меню крестиком выберите игру и нажмите кнопку START или А на джойстике.

Чтобы вернуться к списку игр, нажмите кнопку MENU.

Использование карты памяти microSD

  • С игровыми приставками используются карты памяти micro SD, microSDHC (формат FAT или FAT32) объемом до 2 GB.
  • Обращаем ваше внимание, при использовании с Magistr X 220, 222, 250 на карте не должно быть файлов с разным типом информации. Если карта все равно не читается рекомендуется использовать программу HP low format и отформатировать карту в формат FAT.
  • Форматирование и запись игр производится на компьютере или ноутбуке.
  • Подготовьте карту памяти к использованию с приставкой с помощью одного из двух вариантов:
  • Вариант 1: Предварительно отформатируйте карту памяти с помощью встроенной в ОС программы форматирования. Создайте на карте памяти папку с именем GAME.
  • Вариант 2: Предварительно отформатируйте карту с помощью сторонней программы для форматирования. Создайте на карте памяти папку с именем GAMES.
  • Запишите игры, затем вставьте карточку в разъем приставки, игры запускаются из раздела SD.

Внимание! Файлы (ромы) игр обязательно должны быть стандарта SEGA 16-бит и иметь расширение .bin (например, Pocahontas.bin). На карте памяти не должно быть сторонних папок и файлов в разных форматах, при наличии посторонней информации выдается ошибка, карта памяти не работает.

Меры безопасности при использовании игровой видеоприставки

– Безопасность. При использовании игровой видеоприставки соблюдайте меры предосторожности, порядок включения и эксплуатации, а также условия хранения. Не используйте устройство в следующих условиях: крайне высокие или крайне низкие температуры, высокая влажность, запыленность.

– Не используйте игровую консоль влажными руками, устройство не является водонепроницаемым. Немедленно прекратить использование при ненормированном функционировании игровой консоли.

– Избегайте ударов и падения игровой консоли. В противном случае это может привести к повреждениям и поломке. Не пытайтесь самостоятельно разбирать игровую консоль или её части.

– Сохранение здоровья. Через каждый час игры делайте перерывы для отдыха на 10-15 минут. Не играйте, если вы очень устали и не выспались. Во время игры следует находиться на максимально возможном расстоянии от экрана телевизора. Помещение, в котором вы играете, должно быть достаточно освещено и проветрено. Лицам, предрасположенным к эпилепсии, не рекомендуется пользоваться игровой видеоприставкой без консультации с врачом.

Читайте также: