amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > 2.+3.Joystikknopf Signale [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- 2 3 4 5 6 [ - Beitrag schreiben - ]

11.06.2006, 18:06 Uhr

MaikG
Posts: 5172
Nutzer
Weiss jemand wie man an die Signale vom 2. und 3. Joystikknopfes kommt?
(Adresse)

[ - Antworten - Zitieren - Direktlink - ]

12.06.2006, 00:43 Uhr

Ralf27
Posts: 2779
Nutzer
Zitat:
Original von MaikG:
Weiss jemand wie man an die Signale vom 2. und 3. Joystikknopfes kommt?
(Adresse)


Moment, spielst du jetzt auf das CD32-Pad an?
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

12.06.2006, 10:43 Uhr

MaikG
Posts: 5172
Nutzer
>Moment, spielst du jetzt auf das CD32-Pad an?

Nein, die zusätzlichen Tasten werden beim CD32-Pad Seriell übertragen
über die 3. Maustaste.

Ich möchte praktisch vom Joyport "Maustaste 2" und "Maustaste 3"
abfragen. Das entspricht dann Feuer 2 und 3.

Feuer 2 wird durch einige Spiele genutzt Feuer 3 nicht.

[ - Antworten - Zitieren - Direktlink - ]

12.06.2006, 19:22 Uhr

bubblebobble
Posts: 707
Nutzer
Schreib dir ein kleines Prog, dass dir alle IDCMP_MOUSEBUTTON Events ausgibt. Dann drücke den Knopf, und du wirst im EventCode und den Qualifiern sehen, wie manes abfrägt. Über Hardware Register würde ich es nur machen, wenn es nicht auf anderen Maschinen laufen soll.

--
Thilo Köhler, Author von:
HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, TKUnpacker
Homepage: http://www.hd-rec.de


[ - Antworten - Zitieren - Direktlink - ]

12.06.2006, 19:32 Uhr

Holger
Posts: 8116
Nutzer
Der zweite und dritte Joystickknopf sollten identisch mit dem rechten und mittleren Mausknopf sein. Beim CD³² Pad sind's, wenn ich mich richtig erinnere, Roter/Blauer/Play-Pause Knopf. Die anderen werden imho über die paddle-Eingänge übertragen, die entsprechende Analyse will man bestimmt nicht nachprogrammieren.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

12.06.2006, 22:24 Uhr

MaikG
Posts: 5172
Nutzer
>Schreib dir ein kleines Prog, dass dir alle IDCMP_MOUSEBUTTON
>Events ausgibt. Dann drücke den Knopf, und du wirst im EventCode
>und den Qualifiern sehen, wie manes abfrägt. Über Hardware Register
>würde ich es nur machen, wenn es nicht auf anderen Maschinen laufen
>soll.

Ich brauch die Knöpfe vom Joyport, nicht vom Mouseport...
Von wo es kommt ist egal, muss nur auf echten Amigas laufen.


>Der zweite und dritte Joystickknopf sollten identisch mit dem
>rechten und mittleren Mausknopf sein. Beim CD³² Pad sind's, wenn
>ich mich richtig erinnere, Roter/Blauer/Play-Pause Knopf. Die
>anderen werden imho über die paddle-Eingänge übertragen, die
>entsprechende Analyse will man bestimmt nicht nachprogrammieren.

Ich brauche nur das was rechter und mittlerer Maustaste entspricht,
aber am Joyport.

[ - Antworten - Zitieren - Direktlink - ]

12.06.2006, 22:45 Uhr

bubblebobble
Posts: 707
Nutzer
Soweit ich weiss, kommen die Joystick Knöpfe auch als IDCMP Messages an. Ich kann dir ja mal ein kleines Testprogramm zuschicken, dann siehst du ob es geht. (falls du interesse hast, und dich nicht schon auf Hardware Register Peeken eingeschworen hast).
--
Thilo Köhler, Author von:
HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, TKUnpacker
Homepage: http://www.hd-rec.de


[ - Antworten - Zitieren - Direktlink - ]

12.06.2006, 23:02 Uhr

MaikG
Posts: 5172
Nutzer
>Soweit ich weiss, kommen die Joystick Knöpfe auch als IDCMP Messages
>an. Ich kann dir ja mal ein kleines Testprogramm zuschicken, dann
>siehst du ob es geht.

Klar, das währe nett. MaikG492 at freenet.de

[ - Antworten - Zitieren - Direktlink - ]

14.06.2006, 10:23 Uhr

MaikG
Posts: 5172
Nutzer
Hat sich nun erledigt, ich wollte die unteren Bits mit AND
ausmaskieren was natürlich dumm war weil man das mit OR macht.

Also:

POKEB &hDFF034, (PEEKB(&hDFF016) OR 240)

c&=PEEKB(&hDFF016)
LOCATE 8,2:PRINT "Feuer2"; (c& AND 64)\64
LOCATE 9,2:PRINT "Feuer3"; (c& AND 16)\16


Das Poken muss man immer wieder vor dem Lesen machen.

[ - Antworten - Zitieren - Direktlink - ]

14.06.2006, 19:30 Uhr

Ralf27
Posts: 2779
Nutzer
Zitat:
Original von MaikG:
Hat sich nun erledigt, ich wollte die unteren Bits mit AND
ausmaskieren was natürlich dumm war weil man das mit OR macht.

Also:

POKEB &hDFF034, (PEEKB(&hDFF016) OR 240)

c&=PEEKB(&hDFF016)
LOCATE 8,2:PRINT "Feuer2"; (c& AND 64)\64
LOCATE 9,2:PRINT "Feuer3"; (c& AND 16)\16


Das Poken muss man immer wieder vor dem Lesen machen.


Interesante Lösung, wird aber auch auf einem echten laufen (vermute ich einfach mal), aber das war dir ja klar.
Aber wie sieht es mit einer systemkonformen Lösung aus? Interesiert mich halt auch irgendwie. :D

--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

14.06.2006, 23:54 Uhr

MaikG
Posts: 5172
Nutzer
>Interesante Lösung, wird aber auch auf einem echten laufen (vermute
>ich einfach mal), aber das war dir ja klar.

Wird nur auf einem echten Amiga laufen, aber auch wenn OS4 drauf
läuft.
Hat so ein oller AONE überhaupt einen Joyport? Wenn ja Digital?


>Aber wie sieht es mit einer systemkonformen Lösung aus? Interesiert
>mich halt auch irgendwie.

Thilo hat mir inzwischen ein Testprogramm geschickt, mit
IDCMP bekommst du Links, Rechts, Vor, Zurück. Leider keine
Feuerknöpfe.

Es gibt da die lowlevel.library, die das können soll...

[ - Antworten - Zitieren - Direktlink - ]

15.06.2006, 02:00 Uhr

bubblebobble
Posts: 707
Nutzer
Das läuft ganz sicher nicht auf einem AOne, nur auf Classic Hardware und WinUAE.

Komisch, dass Links Recht kommt, aber keine Knöpfe. Ich werde das Testprog mal durchgucken, evtl. habe ich was übersehen.
Ich dachte, die kommen auch als Mausknöpfe an.

--
Thilo Köhler, Author von:
HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, TKUnpacker
Homepage: http://www.hd-rec.de


[ - Antworten - Zitieren - Direktlink - ]

15.06.2006, 10:14 Uhr

MaikG
Posts: 5172
Nutzer
>Das läuft ganz sicher nicht auf einem AOne, nur auf Classic Hardware
>und WinUAE.

Sag ich doch, wenn WinUAE die Ausgabe korrekt auf einem Joyport
umleiten würde, könnte das gehen. Hab am PC aber weder Soundkarte
noch Joyport.

>Komisch, dass Links Recht kommt, aber keine Knöpfe. Ich werde das
>Testprog mal durchgucken, evtl. habe ich was übersehen.
>Ich dachte, die kommen auch als Mausknöpfe an.

Feuer1 weiss ich nicht warum das so ist.

Feuer2 und 3 ist Logisch, weil Intuition müsste dazu dem Joyport
auf Ausgang schalten. Standardmäßig ist er auf Eingang, sehe ich
ja in mein Programm, ich muss das dort ja auch erst machen.

[ - Antworten - Zitieren - Direktlink - ]

15.06.2006, 11:31 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von MaikG:
Feuer2 und 3 ist Logisch, weil Intuition müsste dazu dem Joyport
auf Ausgang schalten. Standardmäßig ist er auf Eingang, sehe ich
ja in mein Programm, ich muss das dort ja auch erst machen.

Hä?
Ein Eingang ist etwas, wo Signale hereinkommen und durch einen Ausgang gehen Signale heraus.

Joystick-Buttons sind draußen, ihre Signale kommen also herein.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

15.06.2006, 12:19 Uhr

bubblebobble
Posts: 707
Nutzer
Normalerweise sollte das das input.device machen. Es wurde ja zu einer Zeit geschrieben, wo es druchaus üblich war einen Joystick am Amiga zu haben. Mehrere Knöpfe sollten auch kein Problem sein, denn es gibt ja ein Feld in den IDCMP_MEssages für die Knopf Nummer.

--
Thilo Köhler, Author von:
HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, TKUnpacker
Homepage: http://www.hd-rec.de


[ - Antworten - Zitieren - Direktlink - ]

15.06.2006, 17:29 Uhr

platon42
Posts: 400
[Ex-Mitglied]
Zitat:
Original von MaikG:
Es gibt da die lowlevel.library, die das können soll...


Allerdings. Und zwar so extrem einfach, dass man das Hardware-Hacking echt vergessen kann. Und dann funktionierts auch mit USB Joysticks :)

code:
#include <proto/exec.h>
#include <proto/lowlevel.h>
#include <proto/dos.h>
#include <dos/dos.h>

#include <libraries/lowlevel_ext.h>

ULONG main(void)
{
    struct Library *LowLevelBase;
    ULONG cnt;
    ULONG val;

    if(LowLevelBase = OpenLibrary("lowlevel.library", 37))
    {
        val = SetJoyPortAttrs(1, SJA_Type, SJA_TYPE_GAMECTLR, TAG_END);
        Printf("SetJoyPortAttrs() returned %ld\n", val);
        Delay(50);
        do
        {
            if(SetSignal(0,0) & SIGBREAKF_CTRL_C)
            {
                break;
            }
            for(cnt = 0; cnt < 4; cnt++)
            {
                val = ReadJoyPort(cnt);
                Printf("Port %ld: %08lx   ", cnt, val);
                if(val & JPB_BUTTON_BLUE)
                {
                    PutStr("2nd Button    ");
                } 
            }
            PutStr("\n");
            Delay(2);
        } while(TRUE);
        CloseLibrary(LowLevelBase);
    }
    return(0);
}


--
--
Best Regards

Chris Hodges

[ - Antworten - Zitieren - Direktlink - ]

15.06.2006, 17:49 Uhr

Ralf27
Posts: 2779
Nutzer
Die LowLevel scheint dafür wirklich genau richtig zu sein. Ich hab mir mal die Doku angesehn und da ist einiges möglich.

@MaikG:
Das scheint genau das richtig zu sein.

Was für ein Game (vermute ich einfach mal) hast du denn gerade in der Entwicklung?

Ich hab hier gerade ein CD32-Knochen in der Hand und überlege gerade ein uraltes Game von mir auf den meinen aktuellen Wissensstand zu heben. ... :D

--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

15.06.2006, 18:17 Uhr

MaikG
Posts: 5172
Nutzer
>Hä?
>Ein Eingang ist etwas, wo Signale hereinkommen und durch einen
>Ausgang gehen Signale heraus.
>Joystick-Buttons sind draußen, ihre Signale kommen also herein.

Tja, warum ist das so? Weil die Joystiknöpfe nach GND geschaltet
werden. Dazu muss aber erst Spannung an den Pins liegen, was
durch das auf "Ausgang" Schalten passiert.
Man könnte warscheinlich auch +5Volt so reinschicken, aber
da ich die Hardware vor der Software gebaut hatte, war das schlecht.

>Allerdings. Und zwar so extrem einfach, dass man das
>Hardware-Hacking echt vergessen kann. Und dann funktionierts auch
>mit USB Joysticks :)

Danke. Guck ich mir mal in Ruhe an.

>Was für ein Game (vermute ich einfach mal) hast du denn gerade in
>der Entwicklung?

Gar keins, ich benötige nur 7 Signal-Eingänge und der Parallelport ist
schon belegt...

[ - Antworten - Zitieren - Direktlink - ]

15.06.2006, 18:30 Uhr

Ralf27
Posts: 2779
Nutzer
Ich hab das ganze eben in MaxonBasic programmiert und vollgendes festgestellt:

code:
if(val & JPB_BUTTON_BLUE)


Läuft so nicht, außer wenn man JPF_BUTTON_BLUE schreibt. Dann läuft es auch mit den anderen Knöpfen. :)

Oder überseh ich da jetzt was?
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

15.06.2006, 18:31 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von MaikG:
Tja, warum ist das so? Weil die Joystiknöpfe nach GND geschaltet
werden. Dazu muss aber erst Spannung an den Pins liegen, was
durch das auf "Ausgang" Schalten passiert.

Nein, das ist totaler Quatsch. Ausgang und Eingang sind Bezeichner für den Datenfluß, nicht für den Stromfluß. Glaubst Du nicht, daß die Konstrukteure des Amiga wußten, daß man eine Verbindung zu GND nur dann registrieren kann, wenn man eine Spannung anlegt?

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

15.06.2006, 18:36 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Ralf27:
Läuft so nicht, außer wenn man JPF_BUTTON_BLUE schreibt. Dann läuft es auch mit den anderen Knöpfen. :)

Oder überseh ich da jetzt was?


Wenn die Bezeichner dem üblichen Schema entsprechen, liegst Du richtig. XXF_YYY ist der Flag-Wert, also genau das richtige für die AND-Verknüfung und XXB_YYY ist die Bitnummer, also (1<<XXB_YYY) == XXF_YYY

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

15.06.2006, 18:42 Uhr

MaikG
Posts: 5172
Nutzer
>Nein, das ist totaler Quatsch. Ausgang und Eingang sind Bezeichner
>für den Datenfluß, nicht für den Stromfluß. Glaubst Du nicht, daß
>die Konstrukteure des Amiga wußten, daß man eine Verbindung zu GND
>nur dann registrieren kann, wenn man eine Spannung anlegt?

Doch, aber das ist nunmal so, probier es einfach aus.

[ - Antworten - Zitieren - Direktlink - ]

15.06.2006, 18:53 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von MaikG:
Doch, aber das ist nunmal so, probier es einfach aus.


Ist es nicht. Glaub es einfach, bislang hat noch niemand einen JoystickPort auf Ausgang geschaltet, um ihn zu lesen. Wenn es mit Deiner Hardwarebastelei nicht funktioniert, ist Deine Hardware fehlerhaft.
Probier es einfach mal mit einem richtigen Joystick.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

15.06.2006, 19:56 Uhr

Ralf27
Posts: 2779
Nutzer
Zitat:
Original von Holger:
Wenn die Bezeichner dem üblichen Schema entsprechen, liegst Du richtig. XXF_YYY ist der Flag-Wert, also genau das richtige für die AND-Verknüfung und XXB_YYY ist die Bitnummer, also (1<<XXB_YYY) == XXF_YYY


Ja, und somit läuft es recht einfach und flexsibel. Aber leider hat sich eben beim testen SFS auf der Startplatte verabschiedet und en haufen Müll hinterlassen denn ich erst beseitigen muß. Ich bekomm en Hals! :nuke:

Zum Glück hab ich eine "Nothintertür" eingebaut und wieder da, aber leider nicht ganz.
So, wie bekomme ich jetzt SFS wieder hin. Da, dann darf ich mal wieder auf die Suche gehn. Leider ist auch mein großer seit einigen Monaten platt und ich komme da einfach nicht weiter. Langsam geht es da wohl auch bei mir zu Ende in Sachen lauffähige Amigas. :nuke: :angry: :shock2:
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

15.06.2006, 20:35 Uhr

ylf
Posts: 4112
Nutzer
Zitat:
Original von Holger:
Zitat:
Original von MaikG:
Tja, warum ist das so? Weil die Joystiknöpfe nach GND geschaltet
werden. Dazu muss aber erst Spannung an den Pins liegen, was
durch das auf "Ausgang" Schalten passiert.

Nein, das ist totaler Quatsch. Ausgang und Eingang sind Bezeichner für den Datenfluß, nicht für den Stromfluß. Glaubst Du nicht, daß die Konstrukteure des Amiga wußten, daß man eine Verbindung zu GND nur dann registrieren kann, wenn man eine Spannung anlegt?

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.


So sieht's aus.
Übrigens: alter TTL-Trick, es genügt den Eingang offen zu lassen, damit High erkannt wird. Sauberes Design ist dies zwar nicht, dazu müßte man noch einen Pull-Up dazu schalten. Bei einem TTL-Gatter fließt der Strom immer aus dem Eingang heraus, wenn dieser auf Low liegt. Das liegt daran, daß der Eingang nicht etwa die Basis eines Transistors ist, sondern der Emitter.

bye, ylf

[ - Antworten - Zitieren - Direktlink - ]

15.06.2006, 21:54 Uhr

platon42
Posts: 400
[Ex-Mitglied]
Zitat:
Original von Ralf27:
code:
if(val & JPB_BUTTON_BLUE)


Läuft so nicht, außer wenn man JPF_BUTTON_BLUE schreibt. Dann läuft es auch mit den anderen Knöpfen. :)

Oder überseh ich da jetzt was?


So kommts, wenn man "schnell mal" nen Testsourcecode zusammenschustert... Natürlich muss es JPF_xxx heißen (oder val & (1<<JPB_xxx) ). Danke für den Hinweis :)
--
--
Best Regards

Chris Hodges

[ - Antworten - Zitieren - Direktlink - ]

15.06.2006, 22:13 Uhr

Ralf27
Posts: 2779
Nutzer
Zitat:
Original von MaikG:
>Moment, spielst du jetzt auf das CD32-Pad an?

Nein, die zusätzlichen Tasten werden beim CD32-Pad Seriell übertragen
über die 3. Maustaste.

Ich möchte praktisch vom Joyport "Maustaste 2" und "Maustaste 3"
abfragen. Das entspricht dann Feuer 2 und 3.

Feuer 2 wird durch einige Spiele genutzt Feuer 3 nicht.


Ich vermute mal das dann der Hack sogar schwerer ist als der offizielle Weg. So kann man gerade 7 Buttons auf den CD32-Knochen recht einfach auswerten. :P
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

15.06.2006, 22:16 Uhr

Ralf27
Posts: 2779
Nutzer
Zitat:
Original von platon42:
So kommts, wenn man "schnell mal" nen Testsourcecode zusammenschustert... Natürlich muss es JPF_xxx heißen (oder val & (1<<JPB_xxx) ). Danke für den Hinweis :)


Gern geschehn. Und das werd ich vermutlich auch nicht vergessen, da gerade beim Testprogrammschreiben sich meine StartSFS-Platte verabschiedet hat. Aber ich schreib gerade über die Notplatte. Zja, auf die alten Tage werd ich auch immer vorrausschauender. :)

Aber das ich bis jetzt kein SFSRepairtool gefunden habe, macht mich schon nachdenklich...
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

15.06.2006, 22:20 Uhr

platon42
Posts: 400
[Ex-Mitglied]
Zitat:
Original von Ralf27:

Aber das ich bis jetzt kein SFSRepairtool gefunden habe, macht mich schon nachdenklich...


Es gibt einen Grund, warum meine Partition mit allen Entwicklungssachen und Sourcen in den unteren 4 GB der Platte liegt und FFS ist...

Viel Glück und Erfolg!


--
--
Best Regards

Chris Hodges

[ - Antworten - Zitieren - Direktlink - ]

15.06.2006, 22:30 Uhr

Ralf27
Posts: 2779
Nutzer
Zitat:
Original von platon42:
Es gibt einen Grund, warum meine Partition mit allen Entwicklungssachen und Sourcen in den unteren 4 GB der Platte liegt und FFS ist...

Zja, diesmal war es wohl die Hitze. Mein Amiga ist leider auch nicht mehr Hitzeunempfindlich.

Es hat ja mit der Datenparitition angefangen und erst mal hab ich en Schock bekommen. Und was macht man dann als erstes? Genau, Datensicherung. Dummerweise wollte ich diese auf die Startpartition machen (hat noch sehr viel Platz frei) und dann hab ich diese mit dem überhitzen Amiga wohl etwas verdellert.

Das Ende vom Lied:
Programmdaten vermutlich alle vorhanden und fehlerfrei, aber die Startpartition etwas (2 Fehlerhafte Dateien gefunden) lediert.


Das dumme ist ja das seit einigen Monaten mein zweiter, großer Amiga1200T ganz und gar nicht mehr will und ich einfach nicht versteh was da abgeht. Da steh ich wirklich auf dem Schlauch. Da war das hier was kleineres, aber auch der Schock des Tages...
Zitat:
Viel Glück und Erfolg!

Danke, das kann ich bei beiden Amigas sehr gut gebrauchen! :glow:
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]


-1- 2 3 4 5 6 [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > 2.+3.Joystikknopf Signale [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.