Bei dieser Joy-Abfrage gerät die Ausgabe "west" nach dem zweiten drücken der Joytaste ins stocken, während die anderen immer zügig ausgegegeben werden.
Woran liegt das?
mfg
Du bist in Begriff, Forum64 zu verlassen, um auf die folgende Adresse weitergeleitet zu werden:
Bitte beachte, dass wir für den Inhalt der Zielseite nicht verantwortlich sind und unsere Datenschutzbestimmungen dort keine Anwendung finden.
letzter Beitrag von TheRyk am
Bei dieser Joy-Abfrage gerät die Ausgabe "west" nach dem zweiten drücken der Joytaste ins stocken, während die anderen immer zügig ausgegegeben werden.
Woran liegt das?
mfg
Vielleicht stört das Bewegen des Joysticks die Tastaturabfrage in Zeile 1 / 2.
Wie sieht's aus, wenn Du Zeile 100 in "goto 10" änderst?
Am Emulator oder am echten C64? Falls am echten C64 und kein Tippfehler in Zeile10 ist, dann ist der C64 kaputt. Falls am Emulator, dann sehr wahrscheinlich weil der virtuelle Joystick auch mit dem virtuellen Control Port#1 verbunden ist.
Die Bits, die der Joystick in diesem Port ändert sind die gleichen wie bei den Tasten 1, 2, <- (=Backarrow :)) CTRL und SPACE, d.h. das Betriebssystem des C64 kann nicht unterscheiden, ob die entsprechende Taste gedrückt oder der Joystick bewegt wurde.
CTRL wird vom Basic als Ausgabebremse benutzt, daher die Verzögerung.
Dieses Problem hatte ich schon mal vor Jahren am realen C64 am Port 2 und jetzt am VICE.
Hat mich jetzt halt interessiert, weil ich mich mit dem VIce mehr auseinandersetze als damals mit dem realen C64.
Ich kann die Programme jetzt schneller umsetzen, testen, verbessern abspielen, umsetzen ,testen usw. was beim C64 etwas mühe bereitet und man sich die Arbeit nicht macht.
mfg
Dann guck mal unter Settings -> Joystick Settings nach, ob für "Joystick in port#1" die gleiche Belegung wie für Port#2 eingestellt ist. Wenn du die port#1 Belegung auf "none" stellst, sollte das Problem behoben sein.
Andernfalls ist der Vice-C64 kaputt
Jetzt läuft es gleichmässig durch.
Dann kannst du mir auch bestimmt sagen, wie am VICE die RS232 aktiviert wird und wie ich dort irgendwie am PC dann die gesendeten Daten abfange.
mfg
Leider nein, das hab ich noch nie ausprobiert. :rotwerd:
What denn, keiner wees ne Antwort auf Rs232 mit Vice.
mfg
Hmmh.
Also irgendwas hat es doch damit auf sich, denn auch bei dieser Lösung hier
Joystick über Function (aus Emu-Ecke.de)
gibt es bei mir Probleme, und zwar auch bei Westen, aber mit Port 1 !
Und das obwohl ich extra für Port1 "none" im Vice eingestellt habe und immer nur mit ALT+J tausche.
An Doppelbelegung von Keysets kann es also eigentlich nicht liegen.
Witzigerweise läuft die Schleife
fröhlich durch und zeigt flüssig 4en an, wenn man nach Nordwesten oder Südwesten hält (was ja eigentlich nicht abgefragt wird in der Billig-Lösung), nur bei Westen wird die Schleife enorm verlangsamt.
Nein, Port#1 ist ja gerade der, welcher mit der CTRL-Taste ins Gehege kommt. Schnucke hatte zwar Port2 abgefragt, aber halt auch den Joystick in Port#1 mitbewegt (vermute ich jedenfalls).
Ich wüsste auch nicht, wie man dass mit reinem Basic abstellen kann. Schuld ist die Tastaturroutine, welche die Tastenreihe mit der CTRL-Taste zum Schluss abfragt und dann den CIA einfach auf dieser Reihe stehen lässt.
Nein, Port#1 ist ja gerade der, welcher mit der CTRL-Taste ins Gehege kommt. Schnucke hatte zwar Port2 abgefragt, aber halt auch den Joystick in Port#1 mitbewegt (vermute ich jedenfalls).
Ich wüsste auch nicht, wie man dass mit reinem Basic abstellen kann. Schuld ist die Tastaturroutine, welche die Tastenreihe mit der CTRL-Taste zum Schluss abfragt und dann den CIA einfach auf dieser Reihe stehen lässt.
Aaah. Langsam fällt der Groschen.
Das betrifft dann aber nur VICE? Oder auch andere EMUs / echten C64?
EDIT: CCS64 auf jeden Fall auch
Das ist auch am echten C64 so, wann immer ein Joystick in Port1 nach links bewegt wird. Evtl. gibts n paar Pokes, mit denen man das unterdrücken kann, aber k.A. welche das sind.
Das ist auch am echten C64 so, wann immer ein Joystick in Port1 nach links bewegt wird. Evtl. gibts n paar Pokes, mit denen man das unterdrücken kann, aber k.A. welche das sind.
Dascha unter Umständen bei 2-Spieler-Mode voll unfair or what?
Hat z.B. bei Beat-Em-Ups dann derjenige in Port1 immer die A-Karte? Wobei schlechtes Beispiel, bei BeatEmUps muss meistens Feuer gedrückt werden.
Naja, die meisten mir bekannten Kloppspiele sind ja ganz oder teilweise in Assembler geschrieben, da sieht das schon viel entspannter aus. Da ist dann die Tastaturabfrage i.d.R einfach ganz abgeschaltet oder wie auch die Ausgaberoutinen durch "handgedrechselte" Routinen ersetzt.
Evtl. würds aber in Basic sogar schon reichen, einfach nix mit PRINT auszugeben, wenn man es eilig hat, da CTRL nur die Zeichenausgabe über PRINT ausbremst.
evtl reicht auch einfach den irq abzuschalten, oder alternativ den vektor so zu verbiegen das die tastatur nicht mehr abgefragt wird? (hatten wir das nicht vor paar wochen sogar schon in nem andren thread? mmmh)
Hmm, Irq abschalten klappt nicht.:( Wenn man wüsste, wo die Print-Routine im Basic einsteigt, und ob der Vector dazu im Ram liegt (ich kenn nur ab1e als Einsprungaddresse, aber das scheint's nicht zu sein)...
ROOOLAND!!!
ich würde mal versuchen den interruptvektor auf $ea81 umzubiegen, dann ist schluss mit tastenabfrage (aber auch TI$ geht dann nicht mehr, evtl auch noch irgendwelche andren sachen, keine ahnung =P)
Hmm, wenn ich mit poke56333,127 den CIA-Interrupt abschalte, funkt CTRL immer noch dazwischen. Wenn ich aber den Interrupt auf ea81 verbiege, bleibt die Ausgabe irgendwann komplett stecken?!? (Vice und CCS getestet, sowohl per Poke als auch im Monitor verbogen und die Adresse 3x überprüft). Seltsam...
Edit: *Klatsch* dc0d sollte man doch noch lesen, bevor man den irq verlässt
Ich weiß nicht ob das hier hilft, aber versucht's mal damit:
Für Joystick 1 wäre es denn POKE 56321 anstelle von POKE 56320. Wenn die Schleife mit dem Druck auf 'Q' beendet werden soll mußt du die Zeile 7 ändern:
Damit wird die aktuell gedrückte Taste abgfragt, 62 ist der Wert für Q. Da der Tastendruck noch im Tastaturpuffer verbleibt, sollte er anschließend mit POKE 198,0 (Anzahl der Zeichen im Tastaturpuffer) gelöscht werden. Wenn du andere Tasten als Q verwenden willst, kannst du diese Routine verwenden um die Werte zu bekommen:
Getestet habe ich das Proggi auf einem echten C128, kein Emulator oder so.
@Naquaada: Ja, die Joystickabfrage würde so auch aufm C64 funktionieren. Aber an dem Problem mit der verlangsamten Print-Ausgabe ändert das leider auch nix, das scheint sich wirklich nur durch Abändern der Tastaturabfrage- und/oder Print-Routinen beheben zu lassen.
Erstaunlich, dass das immer noch auftritt, wenn man den Interrupt umbiegt oder abschaltet. Ich dachte eigentlich auch immer, da würd die Tastatur drin abgefragt, aber anscheinend wird die bzw. dc00 noch an anderer Stelle manipuliert. Sehr merkwürdig...