• CAM 3 - AmigaInput

18.02.2005 22:51, autor artykułu: Steffen Haeuser, Hyperion Entertainment
odsłon: 5065, powiększ obrazki, wersja do wydruku,

AmigaInput - Nowe Gaming-API dla AmigaOS

Z punktu widzenia programisty piszącego gry, istnieje tylko jeden obszar API AmigaOS, który nie był rozwijany wraz z systemem operacyjnym. Mowa o Input/Gaming APIs. W Windowsie mamy DirectInput, w MacOS 9 - InputSprockets. W AmigaOS mamy całą gamę różnych API, które nie są ze sobą kompatybilne. Niektóre urządzenia obsługują API, inne nie (lowlevel.library, gameport.device, psxport.device i kilka innych urządzeń są obsługiwane tylko przez "direct hardware access").

Dla osoby tworzącej gry pozostaje więc problem skorzystania z obecnie istniejących input device lub napisać wszystko od początku. Gdy pojawia się nowe urządzenie lub adapter (myszka, pad, joystick) oznacza to, że obsługa tego musi być dodana do gry, zamiast tego, aby użytkownik zainstalował sobie odpowiedni sterownik do całego systemu. Taka sytuacja była oczywiście nieakceptowalna. W planach OS4 Hyperion Entertainment zadecydował, że istnieje wyraźna potrzeba Gaming-API dla Amigi. AmigaInput i jego API zostało zaprojektowane i rozwijane przez Svena Ottemanna, Hans-Joerga Friedena i mnie, z dodatkową pracą Thomasa Friedena. Christopher Kossa i ja pracowaliśmy nad Preferences GUI.

AmigaInput jest systemem sterowników składającym się z głównej biblioteki i zestawu sterowników, które w rzeczywistości są współdzielony bibliotekami AmigaOS4. Każdy sterownik może zaimplementować moduły (dla przykładu, sterownik PSX Port i Classic_PSX_Mouse). Schemat nazewnictwa tych modułów wygląda następująco:

Classic_xxxxxx ten sterownik pracuje tylko na Amidze Classic
Generic_xxxxxx ten sterownik pracuje na wszystkich Amigach działających pod OS4 (z AmigaOne włącznie)
PCI_xxxxxx sterownik pracuje na wszystkich Amigach działających pod OS4 wyposażonych w PCI
AmigaOne_xxxxxx ten sterownik pracuje tylko na AmigaOne

AmigaInput obsługuje gamepady, mysze i klawiatury. Oczywiście w każdym z nich możemy wyróżnić kategorie i podtypy takie jak: Flightstick, Wheel, Joystick i wiele innych.

Gra, która będzie potrzebowała wykorzystać input device, poprosi AmigaInput o podanie listy odpowiednich urządzeń. Udostępniając tak zwaną funkcję "enumeration", AmigaInput wykonuje to. Funkcja ta jest dostarczana przez autora gry i określa wymagania gry (dla przykładu "minimalna ilość przycisków/kierunków" lub "potrzebny device-type"). Jakie dane są dostępne (kierunki, przyciski, współrzędne) zależy oczywiście od typu kontrolera (joystick wysyła inne informacje niż myszka).

Sednem pomysłu AmigaInput jest to, że gra nie musi wiedzieć jaki rodzaj urządzenia przyłączony jest do Amigi. Wszystkie rodzaje urządzeń będą pracować z grą i ani jedna linijka kodu nie będzie musiała być zmieniana w przypadku gdy nowe urządzenie będzie dostępne. Jedyna rzecz, o którą trzeba będzie zadbać to sterownik AmigaInput do nowego urządzenia. Sterowniki takie posiadają niewielką ilość kodu (dla przykładu, sterownik dżojstika analogowego to tylko 7kB).


Obrazek 1 - AmigaInput Preferences

Aby pokazać ogólny zarys systemu powyższy obrazek przedstawia Preferences-GUI AmigaInput. Sterowniki nad którymi obecnie pracujemy to (większość z nich jest już ukończona):

Sterownik Sprzęt
AI_Generic_Mouse.library Generic Mouse Driver
AI_Generic_Keyboard.library Generic Keyboard Driver
AI_Classic_PSX.library PSX Port Driver
AI_Classic_PC.library PC Analog Stick, wykorzystuje interfejs portu klasycznego dżojstika
AI_Classic_CD32.library CD32 Pad w Classic-Amiga
AI_Classic_AJoystick.library Amiga-Joystick w Classic-Amiga
AI_Classic_Sega3.library Sega Genesis Joypad bez przycisków X/Y/Z/Mode wykorzystuje interfejs portu klasycznego dżojstika
AI_Classic_Sega6.library Sega Genesis Joypad z przyciskami X/Y/Z/Mode wykorzystuje interfejs portu klasycznego dżojstika
AI_Classic_Play4.library obsługa starego, dobrego 4-Player-Adapter
AI_Generic_USB.library sterownik Generic USB Gamepad dla określonego typu Gamepadów
AI_PCI_Catweasel.library Obsługa dżojstików podłączonych do Catweasel MK3

Wszystkie sterowniki napisane są w języku C. Warte odnotowania jest to, że sterownik PSX Port obecnie jest tylko dla Amigi Classic, lecz pracujemy nad tym, aby wykorzystać go w AmigaOne. Podziękowania dla Joe Fentona, który udostępnił nam pełen kod źródłowy psxport.device, tak więc mogliśmy zaimplementować obsługę natywnej wersji PPC PSX Port. Chciałbym również podziękować Dreamworlds Development za informacje na temat oprogramowania 4-Player-Adapter.

Po premierze OS4, możemy opracować kolejne sterowniki, jak dla przykładu do obsługi padów N64, SNES czy TurboGraphX. Ludzie pracujący nad specjalnymi adapterami, dla konkretnych kontrolerów proszę o kontakt mailowy (SteffenH@hyperion-entertainment.com), aby obsługa ich sprzętu była zapewniona.

Jeżeli chodzi o myszy i klawiatury, te sterowniki obsługują wszystkie myszy i klawiatury, które są obsługiwane przez input i keyboard.device w OS4.

Oczywiście tak samo ważne jak gaming API jest to, aby była wystarczająca ilość oprogramowania, które go wykorzystuje. Oczywiście, wszystkie przyszłe tytuły Hyperion Entertainment natywnie pracujące pod PPC będą korzystały z AmigaInput do obsługi padów/myszy/klawiatur. W pewnym momencie wypuścimy również uaktualnienia do naszych starszych tytułów, aby stało się możliwe bezproblemowe ich działanie z AmiagInput.


Obrazek 2

Oczywiście są też stare tytuły, głównie pracujące pod 68k, które mogą nie doczekać się wersji OS4 lub nawet wersji PPC. Aby umożliwić użytkownikom grę w te tytuły na AmigaOne (która w końcu nie posiada występującego w Amidze Classic portu dżojstika) opracowaliśmy nową wersję lowlevel.library, która wewnętrznie wykorzystuje AmigaInput. Obrazek 2 pokazuje Preferences GUI nowej lowlevel.library. Tutaj możemy ustawić specyficzne sterowniki AmigaInput, z których ma skorzystać lowlevel.library. Oczywiście gry, które bezpośrednio odwołują się do hardware'u nie będą pracować na AmigaOne (pomimo, że mogą pracować na A4000 lub A1200 pod OS 4).

Użytkownik niezaznajomiony z technologia OS4 może zapytać, "zaraz, a czy przypadkiem AmigaInput nie pracuje natywnie pod PPC, bo przecież te stare gry wykorzystujące lowlevel.library są pod 68k?" Sztuczka polega na tym, że OS4 wykrywa, gdy program 68k odwołuje się do lowlevel.library i sprawia, że kod przełącza się w tryb PPC, wywołując natywną lowlevel.library (a w efekcie AmigaInput natywnie pracujące pod PPC). Ogólnie mówiąc, AmigaInput działać będzie tylko na Amigach wyposażonych w AmigaOS4. Dla programów natywnie pracujących pod OS4 zalecamy nieużywanie lowlevel.library, lecz bezpośrednio wykorzystywanie AmigaInput, aby kontrolery z trybem analogowym lub "większą liczbą przycisków" mogły być obsługiwane i w pełni wykorzystywane.



Tłumaczenie na podstawie Club Amiga Monthly - Sebastian Rosa.

Translated and reproduced by kind permission of Amiga Inc. Not for distribution beyond this site.

Przetłumaczone i opracowane za zgodą Amiga.Inc. Dystrybucja wyłącznie na stronach PPA.

Club Amiga logo concept and artwork by Mark Rickan & Mohamed Moujami, winners of the Club Amiga Logo Contest.
Submitted text and images reproduced in Club Amiga Monthly are copyright by their respective authors.
All other text and images reproduced in Club Amiga Monthly are copyright 2003 Amiga Inc.
Content may not be reprinted or reproduced in part or in whole without express written consent of Amiga Inc.

    
dodaj komentarz
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem