Was aber gar nicht sein Ziel war denke ich ...
Es gibt Dinge, die tatsächlich nicht mein Ziel waren. Es war bisher nicht mein Ziel, dass der Yaumataca einfach auf magische Weise mit jedem USB Eingabegerät funktioniert. Ausnahme sind Mäuse. USB Mäuse halten sich alle an Standards. Und wenn nicht, wäre der Hersteller, der dahinter steht relativ schnell pleite. Das gleiche gilt für Tastaturen. USB Mäuse und USB Tastaturen starten stets in einem Kompatibilitätsmodus auf und werden durch die spezifischen Treiber erst nachträglich in einen Modus gebracht, in welchem die Spezialitäten zum Ausdruck gebracht werden.
Die Sache mit den Gamepads ist fürchterlich und die Komplexität kann ich alleine nicht handeln. Das ist wahrscheinlich auch der Grund, warum bisher kein kommerzielles Gerät auf dem Markt verfügbar ist, welches das probiert, was der Yaumataca als Ziel hat. Oder es gibt eines und ich kenne es noch nicht.
So sieht das hier jetzt aus:
Viel zu viele Kabel. 4 Stück, wenn die 5V nicht aus dem C64 kommen. 3 Stück, wenn das Teil am C64 hängt. Dann braucht man nur noch SWDIO, SWCLK und GND.
Mehr wird für die Entwicklung der Yaumataca Firmware nicht benötigt, inklusive der Debugging-Ausgaben.
pasted-from-clipboard.png
Nur muss ich diese jetzt erst einmal im Code zu den "Bytes" zuordnen - das bleibt eine Ratespiel: "Now - by observing the change - I know the bit position of this specific button!" - bleibt eine Kunst beim Erfinder - Mir zumindest erschliesst sich der direkte Zusammenhang noch nicht, zumal die Bytes in den Kommentaren und in den Outputs abweichen - "Be creative" bedeutet hier Such, Struppi, such bis in die Nacht...
Wie im letzten Post davor erwähnt ist diese Anleitung ein "lebendiges" Dokument. Ich bin mir noch unsicher, welche Informationen genau notwendig sind. Mit "Be creative" ist gemeint, dass jedes USB Gamepad einen anderen Report sendet.
Ich bin mir noch nicht sicher, ob generell klar ist, wie USB hier an dieser Stelle funktioniert. Deswegen eine Zusammenfassung.
Der USB Standard sieht das "Human Interface Device" (kurz HID) vor. Das ist eine Kategorie von Geräten, die mit Menschen interagieren. Dazu gehören unter anderem Maus, Tastatur und Gamepad.
Jedes HID verfügt über einen oder mehrere "Human Interface Device Report Descriptors". Das ist ein Binärklumpen, welcher die Struktur des "Human Interface Device Reports" dokumentiert, damit sich das Betriebssystem darauf einstellen kann.
Dieser Report Descriptor wurde bisher durch den Yaumataca nicht analysiert. Das ist auch das Problem, welches dazu führte, dass einige Mäuse einfach nicht richtig funktionieren. Das kriege ich aber gerade in den Griff und wird in naher Zukunft hier als Release bereitstehen.
Potentiell kann man damit auch das Gamepad Problem lösen. In der Praxis gibt es damit aber so viele Probleme, dass ich das aktuell nur mit Strahlenschutz-Anzug anfassen würde. Alleine, weil einige Gamepads (Nintendo Switch, ick hör dir trapsen) einfach den falschen übertragen.
TLDR: Mit Kreativität ist gemeint, dass man sich überlegen muss, wie man die Bits des Gamepads auf die interne Datenstruktur des Yaumataca mappt. Die Software erwartet einen Report als Ausgabe des HID Handlers, in welchem die Buttons drin stehen. Das ist bei jedem Gamepad unterschiedlich.
Das Github Repo wurde heute von mir erweitert. Mäuse sollten damit nun ohne Probleme funzen. Wer sich den Schmerz antun mag, darf den Report Descriptor Parser auch für Gamepads einsetzen. Es wird jedoch der Weg des Schmerzes sein.
spacepilot3000 Warum RTT bei dir nicht geht, weiß ich noch nicht. Aber das kriegen wir bestimmt noch raus.