amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > 2.+3.Joystikknopf Signale [ - Search - New posts - Register - Login - ]

-1- 2 3 4 5 6 [ - Post reply - ]

2006-06-11, 18:06 h

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

[ - Answer - Quote - Direct link - ]

2006-06-12, 00:43 h

Ralf27
Posts: 2779
User
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

[ - Answer - Quote - Direct link - ]

2006-06-12, 10:43 h

MaikG
Posts: 5172
User
>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.

[ - Answer - Quote - Direct link - ]

2006-06-12, 19:22 h

bubblebobble
Posts: 707
User
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


[ - Answer - Quote - Direct link - ]

2006-06-12, 19:32 h

Holger
Posts: 8116
User
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.

[ - Answer - Quote - Direct link - ]

2006-06-12, 22:24 h

MaikG
Posts: 5172
User
>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.

[ - Answer - Quote - Direct link - ]

2006-06-12, 22:45 h

bubblebobble
Posts: 707
User
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


[ - Answer - Quote - Direct link - ]

2006-06-12, 23:02 h

MaikG
Posts: 5172
User
>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

[ - Answer - Quote - Direct link - ]

2006-06-14, 10:23 h

MaikG
Posts: 5172
User
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.

[ - Answer - Quote - Direct link - ]

2006-06-14, 19:30 h

Ralf27
Posts: 2779
User
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

[ - Answer - Quote - Direct link - ]

2006-06-14, 23:54 h

MaikG
Posts: 5172
User
>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...

[ - Answer - Quote - Direct link - ]

2006-06-15, 02:00 h

bubblebobble
Posts: 707
User
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


[ - Answer - Quote - Direct link - ]

2006-06-15, 10:14 h

MaikG
Posts: 5172
User
>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.

[ - Answer - Quote - Direct link - ]

2006-06-15, 11:31 h

Holger
Posts: 8116
User
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.

[ - Answer - Quote - Direct link - ]

2006-06-15, 12:19 h

bubblebobble
Posts: 707
User
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


[ - Answer - Quote - Direct link - ]

2006-06-15, 17:29 h

platon42
Posts: 400
[Former member]
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 %ldn", 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

[ - Answer - Quote - Direct link - ]

2006-06-15, 17:49 h

Ralf27
Posts: 2779
User
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

[ - Answer - Quote - Direct link - ]

2006-06-15, 18:17 h

MaikG
Posts: 5172
User
>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...

[ - Answer - Quote - Direct link - ]

2006-06-15, 18:30 h

Ralf27
Posts: 2779
User
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

[ - Answer - Quote - Direct link - ]

2006-06-15, 18:31 h

Holger
Posts: 8116
User
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.

[ - Answer - Quote - Direct link - ]

2006-06-15, 18:36 h

Holger
Posts: 8116
User
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.

[ - Answer - Quote - Direct link - ]

2006-06-15, 18:42 h

MaikG
Posts: 5172
User
>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.

[ - Answer - Quote - Direct link - ]

2006-06-15, 18:53 h

Holger
Posts: 8116
User
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.

[ - Answer - Quote - Direct link - ]

2006-06-15, 19:56 h

Ralf27
Posts: 2779
User
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

[ - Answer - Quote - Direct link - ]

2006-06-15, 20:35 h

ylf
Posts: 4112
User
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

[ - Answer - Quote - Direct link - ]

2006-06-15, 21:54 h

platon42
Posts: 400
[Former member]
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

[ - Answer - Quote - Direct link - ]

2006-06-15, 22:13 h

Ralf27
Posts: 2779
User
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

[ - Answer - Quote - Direct link - ]

2006-06-15, 22:16 h

Ralf27
Posts: 2779
User
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

[ - Answer - Quote - Direct link - ]

2006-06-15, 22:20 h

platon42
Posts: 400
[Former member]
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

[ - Answer - Quote - Direct link - ]

2006-06-15, 22:30 h

Ralf27
Posts: 2779
User
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

[ - Answer - Quote - Direct link - ]


-1- 2 3 4 5 6 [ - Post reply - ]


amiga-news.de Forum > Programmierung > 2.+3.Joystikknopf Signale [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.