Шанувальники ігрових приставок знають, наскільки цікавіше і азартніше грати не поодинці, а в компанії. Добре удвох, а то і втрьох, вчотирьох. Однак не всі ігрові приставки на це розраховані. Зокрема, 16-бітна "SEGA Mega Drive-II" ( "Sega") має на передній панелі тільки два роз'єми для підключення периферійних пристроїв. Проте грати в режимі "multiplayer" вона дозволяє, про що є вказівки в різних книгах і каталогах. На обкладинках картриджів також наводиться інформація у вигляді піктограм адаптерів і цифр, що позначають допустиму кількість джойстиків.
різновиди адаптерів
Програмісти першими усвідомили необхідність збільшення кількості гравців.
Фірми EA SPORTS (підрозділ Electronic Arts), Codemasters і SegaSoft практично одночасно стали розробляти гри, розраховані на кількість учасників від 4 до 8. Для їх роботи були потрібні спеціальні перехідні пристрої або по-іншому, адаптери. На жаль, всі вони виявилися несумісними один з одним. "Засекреченість" протоколів обміну даними і ліцензійні обмеження різко скоротили число мультіджойстікових ігр та кількість фірм, які могли б їх створювати.
Адаптер фірми EA SPORTS називається "4 Way Play". Його можна підключати відразу до двох входів "Sega" з маркуванням "CONTROL-1", "CONTROL-2". Цифра "чотири" вказує на максимальну кількість гравців. Саме стільки учасників, на думку EA SPORTS, досить, щоб повною мірою відчути азарт спортивних змагань з футболу, хокею, баскетболу, тенісу, бейсболу, регбі.
Адаптер фірми SegaSoft називається "Team Player". Він також розрахований на чотири джойстика, але вставляється лише в один роз'єм "Sega". Це означає, що в інший кінець приставки можна включити або додатковий п'ятий джойстик, або ще один адаптер, збільшуючи тим самим максимальне число учасників до 8. На передній панелі "Team Player" є перемикач режимів роботи "1, 2, 3, 4, Multi ".
Адаптер фірми Codemasters називається J-cart (очевидно, скорочення від слів "joystick" і "cartridge"). Родзинка в тому, що цей адаптер вбудований прямо в ігровій картридж і дозволяє підключати до нього через два роз'єми два додаткових джойстика. Всього було випущено 6 різновидів J-cart з іграми фірми Codemasters: "Micro Machines 2" (1994), "Micro Machines 96" (1995), "Micro Machines Military Edition" (1996), "Pete Sampras tennis" (1994), "Pete Sampras tennis 96" (1995), "Super Skidmarks" (1993).
Мал. 2
Оригінальне технічне рішення на практиці не прижилася, незабаром були випущені усічені версії цих ігор в звичайних картриджах без роз'ємів. Можливість гри з чотирма джойстиками у них відсутній, хоча на обкладинці залишилася багатообіцяюча рекламний напис "1-4 player".
Оскільки фірмам не вдалося домовитися про єдиний стандарт, в середині 90-х років були випущені універсальні адаптери Gamester "Team Player II 4-Way". Судячи з назви, вони могли працювати одночасно з картриджами EA SPORTS і SegaSoft. Плата за зручність - висока ціна адаптера. На програмному рівні також були прийняті заходи по уніфікації. Деякі фірми стали вводити в свої ігри драйвери обслуговування джойстиків, які підтримували відразу два стандарти: EA SPORTS і SegaSoft.
Загальна кількість мультіджойстікових ігор становить близько 6-8% від числа всіх випущених для платформи "Sega". До відома, окремих найменувань Sega-ігор налічується трохи більше 1000, а з різновидами картриджів - приблизно 3000! Переважна більшість ігор, розрахованих на 4-8 джойстиків (не плутати з 4-8 гравцями), це спортивні симулятори. У таблиці наведено найбільш відомі ігри фірм EA SPORTS (рис.1) і Electronic Arts. Для їх проходження необхідний адаптер "4 Way Play", схему якого спробуємо синтезувати самостійно.
Вихідні дані для проектування. Адаптер повинен підключатися до двох роз'ємів приставки "Sega", як показано на структурній схемі (рис.2). Адаптер повинен працювати з трьома і чотирма джойстиками на будь-яких іграх фірми EA SPORTS. На жаль, пошук "живого" екземпляра "4 Way Play" виявився безуспішним, фірми-виробники вже перейшли на випуск ігрових аксесуарів для більш сучасних приставок.
Пошук інформації
Тема мультіджойстікових адаптерів в комп'ютерних та електронних журналах країн СНД досі не висвітлювалася. Отже, єдина надія - на допомогу Інтернету. Дійсно, в надрах Мережі вдалося виявити дослідження зарубіжних геймерів про апаратне та програмне пристрої "Sega", точніше, її американської моделі "SEGA Genesis". Найбільш близькою до теми виявилася інформація Генрі Ріка (Henry Rieke) [1]. Її суть.
Управління роботою джойстиків в "Sega" проводиться через 4 восьмирозрядних порту, які доступні на читання і запис, як осередки пам'яті з адресами A10003h, A0005h, A10009h, A1000Bh. Перші два з них є портами прийому / передачі даних DATA1, DATA2 відповідно для джойстиків 1 і 2. Другі називаються портами управління CTRL1, CTRL2 і задають напрямок введення / виведення для кожного розряду портів DATA1, DATA2 (рис.3).
У звичайному режимі лінії обох джойстиків UP, DOWN, LEFT, RIGHT, A / B, ST / C працюють на прийом, а SYN -на передачу [2]. При підключеному адаптері "4 Way Play" лінії UP і DOWN джойстика 2 перемикаються з прийому на передачу і формують на своїх виходах низькі логічні рівні. Адаптер повинен перетрансліровать їх на лінії UP, DOWN джойстика 1. Далі центральний процесор "Sega" опитує стан порту DATA1 джойстика 1 і за наявністю нулів в розрядах PD0, PD1 приймає рішення про наявність чи відсутність адаптера. Надалі вибір одного з чотирьох джойстиків проводиться комбінацією рівнів, що передаються по лініях A / B, ST / C джойстика 2.
Більш детальної інформації по влаштуванню адаптера в [1] не наводиться. Однак на підставі вже наявних відомостей можна створити "детектор мультіджойстікових картриджів" (ДМК). Він необхідний, щоб придбати для подальших досліджень повну (а не усічену) версію гри, розраховану на 4 джойстика.
Схема ДМК (рис.4) містить стандартний одновібратор, виконаний на елементах DD1.2, DD1.3. Він запускається в роботу від схеми збігу DD1.1 при наявність двох логічних нулів на лініях UP і DOWN. Вихідний буфер DD1.4 має здатність навантаження близько 4 мА, що дозволяє підключати індикатор НІ безпосередньо до його виходу.
Розетка XS1 вставляється в роз'єм "C0NTR0L-2" приставки "Sega", при цьому джойстик в її роз'ємі "CONTROL-1" може бути відсутнім. Якщо картридж підтримує стандарт "4 Way Play", то після кожного натискання кнопки скидання "RESET" світлодіод НИ буде на 50-70 мс засвічуватись. Якщо картридж звичайний, розрахований на одного або двох гравців, то індикатор світитися не буде.
Отже, картридж відібраний. Тепер необхідно вивчити логіку роботи його програми, щоб усвідомити послідовність звернень до портів джойстиків в муль-тіплейерном режимі.
Аналіз кодів ігрової програми
Для початку потрібно нескладне перехідний пристрій, що дозволяє підключити SEGA-картридж до LPT-порту IBM-сумісного комп'ютера [3]. Після того, як за допомогою перехідного пристрою буде отримана прошивка кодів програми у вигляді файла з розширенням .bin, її переводять в формат, h68 (утиліта "binh68.exe" [3]) і дізассемб-лируют програмою IDA-3.7 фірми DataRescue. Далі в тілі програми по команді здійснюється пошук рядка, що містить текст "А10005". Це адреса порту даних DATA2 джойстика 2. Якщо в нього виробляється запис кодів OCh, 1Ch, 2Ch, 3Ch, 7Ch, значить, десь близько знаходиться початок підпрограми обслуговування "4 Way Play".
Експериментами встановлено, що звернення до адаптера проводиться в двох окремих місцях програми. Наприклад, для картриджа з грою "NBA Live-98" адреси підпрограм становлять 00072690h і 000726E8h. Перша з них відповідає за перевірку наявності адаптера "4 Way Play" при початковому включенні харчування, друга задає логіку вибору джойстиків в процесі гри.
Аналіз роботи підпрограм нескладний, слід тільки враховувати зворотний до загальноприйнятого порядок запису операндів в асемблерному тексті. Наприклад, рядок "move d0, $ а10005" означає пересилання вмісту регістра d0 в порт A10005h, а не навпаки. Це особливість асемблера процесора MC68000 (Motorola), що застосовується в "Sega".
Отже, при включенні харчування ( "холодний старт") або натисканні кнопки "RESET" ( "теплий старт") відбувається формування перепаду з одиниці в нуль на лініях UP, DOWN джойстика 2. Потім перевіряються стану ліній UP, DOWN джойстика 1. Якщо хоча б на одній з них виявиться лог. "1", програма вважає, що адаптер "4 Way Play" відсутня. Далі відбувається перехід в звичайний режим роботи з двома джойстиками і процедура перевірки адаптера більше не повторюється.
Якщо адаптер виявлено, то всі розряди порту джойстика 2 переводяться зі стану прийому в стан передачі, а по лініях A / B і ST / C кожні 20 мс послідовно в двійковому коді видається номер джойстика. Черговість наступна: код "0-0" (W-ST / C ") - перший," 0-1 "- другий," 1-0 "- третій," 1-1 "- четвертий джойстик. Після кожної з наведених комбінацій кодів запускається в роботу підпрограма зчитування даних з порту А100031! джойстика 1.
висновок
Якщо в такт з опитуванням номера джойстика синхронно будуть перемикатися фізичні лінії від зовнішніх роз'ємів "4 Way Play" до гнізда "CONTROL-1" приставки "Sega", то можна здійснити багато користувачів управління.
Перемикання сигналів легко виконується фізично за допомогою мультиплексорів, тому можна перейти до наступного етапу - побудови схеми вироби.
Електрична схема адаптера. Словесний опис роботи пристрою показує, що схема адаптера повинна містити дві частини, по-перше, блок ініціалізації, по-друге, багатоканальний мультиплексор зміни джойстиків. На рис.5 наведена електрична схема пристрою.
Основою адаптера є три мультиплексора DD1 -DD3. На їх входи D0 ... D3 надходять інформаційні сигнали з роз'ємів XP1 ... XP4 від чотирьох джойстиків. Лінії SYN у них Запаралеленими і комутації не підлягають. Виходи мультиплексорів підключаються до розетки XS1, яка стикується з роз'ємом "CONTROL-1" ігрової приставки. Дешифрация посадочних місць джойстиків відбувається за сигналами з ліній A / B (2) і ST / C (2), які надходять від "Sega" через розетку XS2 "CONTROL-2".
Блок ініціалізації повинен перевіряти наявність адаптера. Його вдалося поєднати з мультиплексором DD1, використовуючи особливість роботи входу блокування S (висновки 1, 15 мікросхеми DD1). У початковий момент часу після подачі живлення лінія DOWN (2) джойстика 2 програмно налаштовується на прийом інформації. Що знаходиться всередині однієї з НВІС "Sega" високоомний "pull-up" резистор "підтягує" потенціал на лінії DOWN (2) до джерела +5 В, утворюючи рівень лог. "1" Цей рівень подається на контакт 2 розетки XS2 і через резистор R1 - на виходи S мікросхеми DD1 адаптера. Як наслідок, на висновках 7, 9 мікросхеми DD1 примусово встановлюються логічні нулі.
Далі на лінії DOWN (2) встановлюється низький рівень. Ланцюжок R1C1 на 30-40 мс затримує зміну рівня з "1" в "0" на висновках S мікросхеми DD1. Цього часу цілком достатньо, щоб центральний процесор "Sega" зміг зафіксувати логічні нулі на лініях UP, DOWN роз'єму XS1 і прийняти рішення про наявність адаптера.
Харчування адаптера здійснюється від джерела 5 В, що знаходиться всередині "Sega", через лінію + 5V розетки XS1. Струм споживання залежить від серії встановлених мікросхем: К155 - 100.120 мА; К555, КР1533 - 15.25 мА; К561-близько 1 мА.
Налагодження схеми не потрібно. Конструкцію краще виконати без жорсткої фіксації роз'ємів XS1, XS2, на коротких (до 100 мм) кабелях. При монтажі особливу увагу слід приділити прозвонке сполучних ланцюгів роз'ємів XS1, XS2, XP1 .XP4. Їх зовнішній вигляд з лицьового боку зображено на рис.10.
Після виготовлення адаптера геймери, нарешті, зможуть "відпочити" від нескінченних стрілялок. Картриджі з іграми на спортивну тематику тепер, без сумніву, отримають більш високу оцінку. Захоплюючий світ спорту розкриє нові грані, гравці зможуть на ділі відчути взаємодопомога, співробітництво, навчитися злагодженої колективній грі.
С. М. Рюмик, м. Чернігів;
література:
1. Henry Rieke. Sega Programming FAQ, Sixth Edition, 18.10.1995.
2. Рюмик С.М. Відновлення працездатності "SEGA" джойстик // Радіоаматор. - 2000. - №2. - С.42-44.
3. Рюмик С.М. Підключення SEGA-картриджів до IBM PC // Радіоаматор. - 2000. - №12. - С.27- 28; 2001. - №1. - С. 26-28.