Címkék

Címkefelhő

Ajánlott oldalak

C64-games.info
Itt online játszhatsz a kedvencekkel, nem kell letölteni semmit ... :)
Oszt gyün ami gyün blog
Szellemi maszturbációk made by Banyapeat&spanjai

Hotdog

C64 RuL3z

Egy vén fanatikus emlékei és 21.századi élményei. Játékinfók, könyvajánlók, tippek-trükkök, érdekességek. És persze minden a C64 születéséről, tündökléséről, tündökléséről és tündökléséről ...

Friss topikok

  • twollah / bRoKEn hOPe, sUppLeX: Nagyon meghalt az oldal. (2012.03.18. 07:59) In Memoriam 1541 #2
  • Zz_: Jaj, ezt én is megkönnyeztem. 36 vagyok, én '88ban kezdtem c64-el. Sokat jártam az Eötvös utcai Cs... (2011.02.24. 19:06) Régi idők karácsonya
  • sese: Nagyon szép írás. A megszemélyesítéstől meg igazán könnyfakasztó. Lassan mi is megyünk a szekrényb... (2010.09.02. 00:29) In Memoriam 1541
  • vili/c64user: Tetszik a dolog! Igaz ugyan, hogy csak egy logó, de akkor is, mennyivel másabb érzés lehet egy ily... (2009.09.05. 13:17) Végre itt a Commodore Netbook!
  • viktor134: vettem hálókártyát, de tv hiányában nem tudom kipróbálni. :D (2009.07.13. 10:05) Hackeljünk és netezzünk c64-el!

Joystick magic :P

2008.05.06. 21:37 | Dey | 3 komment

Címkék: cia érdekesség hardware

Én is átestem az első meglepetésen, amikor joy-t dugtam az 1-es portba, és rángattam a sticket, mindenféle karakterek jelentek meg a képernyőn (space,2,<-,stb). Persze akkoriban nem akadtunk fent ilyesféle problémán, elkönyveltük magunkban mint apró kényelmetlenséget, és kész.
Gondolom sokakban felmerült a kérdés, hogy mi a fene okozza ezt? Tervezési hiba? Vagy csak szimpla figyelmetlenség? Vagy mi?
Rövid postomban most felfedem a titkot. :)
Egy...keto...háom... múúkodj!


A probléma megértéséhez kicsit bele kell mászni a CIA (Complex Interface Adapter) működésébe. Ja, hogy mi ez? Ez egy chip a c64 dobozában, aminek (egyik) feladata a billentyűzet és a joystickok kezelése.
Van nekünk ugye 66 billentyűnk + a 2 joysticknál még 4-4 irány és 1-1 tűzgomb. Tehát összesen 76 féle billentyűt és joy-irányt kellene érzékelni. (66+2x5) Ehhez jó esetben kellene valami olyan processzor (chip) aminek van legalább 76 lába, mindegyiken egy-egy jelet érzékel. Az adott lábra érkező jel megmondja, melyik billentyűt ütöttük le, vagy éppen milyen irányba mozdítottuk a joyt.

A rutinos vén rókák, akik kicsit jobban elmélyedtek a jó öreg működésében, nem lepődnek meg, hogy a tervezők ezt is trükkösen oldották meg. :)
Ha kicsit jobban utánanézük, kiderül, hogy a 66 billentyű valójában csak 65, mert a bal shift és a 'beragadós' SHIFT-LOCK gomb, ugyanazt a billentyűt jelenti. (Könnyen kipróbálható: Gianna Sisters - bal shift pauzál, jobbal nem, viszont shift-lockkal szintén)
Ott van még a bűvös RESTORE billentyű, ami pedig közvetlenül a processzor NMI lábára van kötve, azt nem a CIA vezérli. Lényegében maradt pontosan 64 billentyűnk.
Hmmm... 8x8=64. Ha veszünk egy 8x8-as négyzetrácsot, akkor minden 'kockába' beírhatunk egy billentyűt. Ez a c64 esetében valahogy így néz ki:





















A sorok a CIA ún. A-portjára vannak kötve, az oszlopok pedig a B-re. Minden sor és oszlop egy-egy bitet jelképez. Ha lenyomunk egy billentyűt, akkor a sor-oszlop szám megadja a lenyomott billentyű 'nevét', így azonosítható.
Ráadásul nem kell hozzá 76 láb, elég 16.
Oké, kicsit leegyszerűsítettem a dolgot, de a lényeg ugyanaz.

De hol van már a joystick magic? A magic nagyon egyszerű, ugyanis ugyanezt a mátrixot használja a kütyü a joyok lekérdezéséhez. Egész pontosan az 1-es joy irányai a B-port 0-4 bitjeit jelentik. (Ezek pedig a Space,2,Ctrl, stb, billentyűknek felelnek meg.)
Vagyis ha elhúzom a joyt balra, a gépnek (majdnem) ugyanaz, mintha megnyomnám pl. a 2-es gombot.
És persze mindez visszafelé is működik, ha megnyomom a 2-est, az egyenértékű a joy balra irányával.

Na persze programból nagyon egyszerűen lekérdezhető, hogy most joyt nyomtam, vagy a billentyűket, de a BASIC és a régebbi játékok mindezt lesz*rták. Ezekkel simán el lehet játszani billentyűzetről. Emléxem az ACE c. nagysikerű 'replülőszimulátor'-ral így játszottam, mikor nem volt joyom. Hát nagy élmény volt, de legalább tudtam játszani... :)

Visszatérve a kezdeti problémánkra, a jelenség nem hiba, és nem átgondolatlanság műve, csupán a tervező bácsik kerestek egy olcsóbb, ésszerűbb megoldást.
A BASIC készítők pedig nem is gondoltak arra, hogy gépelés helyett az ember a joyt húzgálja majd, vagy csak lusták voltak 3 sorral többet írni :)

Remélem sok arc nyugszik majd meg ezen sorokat olvasva, hiszen többéves kétségbeesés és értetlenkedés után végre meszűnt a titok :))

Vajon milyen furcsa megoldások leledzenek még ezekben a vasakban?

A bejegyzés trackback címe:

https://c64rulez.blog.hu/api/trackback/id/tr38457383

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

SzigMa 2008.05.09. 10:22:18

Oké, akkor azt nem értem, hogyha hardwareileg van így bekábelezve, akkor hogyan kérdezhető le softwareből, hogy billentyű vagy joy?

Dey · http://c64rulez.blog.hu 2008.05.09. 11:36:33

Vazz, ilyen kérdéseket :) Most szedhetem elő a szakkönyveket, mer fejből nekem se megy ám minden :))))))

sikitomi 2008.11.04. 19:35:57

wow! nagyon komoly! most találtam a blogra és veszett jó! eddig jutottam el, hogy az első kommentet bevéssem és ááá! én is anno mikor proggoltam nem a billencseket figyeltem emlékszem. de már nem is tudom mivel kellett.. talán PEEK-el? hmm...