[TUT] Sega Dreamcast Racing Wheel/Controller Dead Zone Fix

    • Tutorial
    • Dreamcast

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [TUT] Sega Dreamcast Racing Wheel/Controller Dead Zone Fix

      "Vorwort"

      1999 veröffentlichte Sega den Race Controller für die Dreamcast. Allerdings war/ist dieses Lenkrad nicht gerade für sein Ansprechverhalten und seine Genauigkeit berühmt. Im Gegenteil - das Lenkrad besitzt von Haus aus unter anderem eine ziemlich große "Dead Zone" (Weg, bis das Lenkrad auf einen Lenkeinschlag reagiert), was das Steuern von Fahrzeugen bei verschiedenen Spielen nicht gerade erleichtert.
      Aus diesem Grund konzipierte und programmierte Ben Ryves 2019 eine frei verfügbare Schaltung, die die Dead Zone stark verringert und bei Bedarf individuell angepasst werden kann. THX! :)

      Hier ein entsprechendes Demonstrationsvideo von ihm:




      Die Schaltung ist nicht allzu komplex und lässt sich auf einer Lochrasterplatine nachbauen. Hier das entsprechende Schaltbild, das von mir um den ISP JTAG Sockel erweitert wurde:




      Allerdings gestaltet sich der Mod natürlich etwas einfacher, wenn man eine bereits fertige Platine verwenden kann. ;)





      Was wird benötigt?:
      • 1x Dreamcast Racing Wheel De-Dead Zone Fix PCB (bspw. über AISLER.net oder OSHPARK.com erhältlich,
      • 1x ATmega8A,
      • 1x Spule/Drossel 10uH,
      • 1x Widerstand 1KΩ,
      • 1x Widerstand 10KΩ,
      • 3x Keramikkondensator 100nF,
      • 1x Elektrolytkondensator 10uF,
      • 2x PH Stiftleiste 2,0mm Buchse 3-polig (gerade oder rechtwinklig),
      • 2x PH Stiftleiste 2,0mm Stecker 3-polig mit passenden Crimp-Kontakten,
      • ISP Programmer für den ATmega8A (bspw. DIAMEX etc.) + ggf. passender Treiber und Chip-Adapter,
      • ein Programm zum Bearbeiten und/oder Kompilieren des Codes von Ben (lokale Sicherung im CiBo: DeDeadZone.zip); bspw. WinAVR,
      • Lötkolben + Lötzinn,
      • 3 Litzen (je ca. 15cm Länge),
      • Kreuzschraubendreher
      Optional:
      • 1x Sockel für den ATmega8A,
      • 1x ISP JTAG Sockel 2x5 (wenn man die Platine gleich als Adapter für den Programmer nutzen mag),
      • passende Crimp-Zange für die Kontakte der PH Stiftleisten Stecker (oder eine Kombizange etc., wenn ihr die Kontakte an die Litzen löten möchtet)
      • ggf. ein wenig Isopropanol zum Lösen von Heißkleber im Lenkrad
      • 2x Spreiz-/Kunststoffniete oder ähnliches für Löcher mit einem Durchmesser von ca. 3mm (zum zusätzlichen Fixieren der Platine im Lenkradgehäuse)



      Und wir beginnen.


      Schritt 1 - Platine bestücken, Verbindungskabel zur Dreamcast herstellen

      Bestückt zuerst eure Platine gemäß des Silkscreens. Wenn ihr die Platine auch als Chip-Adapter für euren Programmer verwenden wollt, müsst ihr den ISP JTAG Sockel auflöten. Ansonsten könnt ihr ihn weglassen.
      Wenn ihr den ATmega8A eventuell später einmal austauschen wollt, würde ich euch diesbezüglich ebenfalls die Verwendung eines Sockels empfehlen. Wenn nicht, könnt ihr den Chip natürlich auch ohne Sockel auflöten.
      Das 3-adrige Verbindungskabel zur Dreamcast sollte ungefähr 15cm lang sein. Achtet darauf, dass die einzelnen Adern so wie im unteren Foto zu sehen mit den Steckern verbunden sind: rot und schwarz kreuzen sich!




      Wenn ihr über keine passende Crimp-Zange für die Kontakte verfügt, könnt ihr die Kontakte auch einfach an die Litzen löten und die Enden mit einer Kombizange etc. zusammenbiegen.



      Schritt 2 - ATmega8A programmieren

      Vorweg: Ich bin auf diesem Gebiet absolut kein Experte und sicherlich gibt es bessere und einfachere Wege, um den ATmega8A zu programmieren (bspw. über ATMEL Studio oder über WSL (Windows Subsystem for Linux) etc.). Wenn Ihr einen solchen Weg kennt, dürft ihr ihn gerne hier posten. ;)

      Was Ben allerdings nicht empfiehlt, ist das Programmieren mittels Arduino Bootloader, da dieser ein problematisches Delay verursachen kann.

      Zum Kompilieren des Codes in ein .hex-File habe ich das kostenlose Programm WinAVR auf einem alten Windows XP-Rechner genutzt (weil diese Kombination von mir bereits für andere Zwecke erfolgreich verwendet wurde :) ).
      Ben hat bewusst kein bereits fertig kompiliertes .hex-File zur Verfügung gestellt, damit man bei Bedarf (je nach Präferenz und/oder eventuellen, leichten "Fertigungstoleranzen" bei den Lenkrädern) noch Änderungen an den Werten für INPUT_DEAD_ZONE, OUTPUT_DEAD_ZONE_OFFSET, OUTPUT_SCALE_MUL, OUTPUT_SCALE_DIV etc. vornehmen kann.
      Ich habe die Datei main.c aus dem ZIP-Archiv entpackt und in der Software Programmers Notepad [WinAVR] (wird automatisch mit WinAVR installiert) geöffnet.
      Anschließend habe ich in der Menüleiste unter Tools die Option [WinAVR] Make All ausgewählt und so das .hex-File DeDeadZone.hex erstellen lassen.
      Danach sollte der (DIAMEX) Programmer bei WinAVR hinzugefügt werden, damit die Software das Gerät auch kennt.
      Dazu wird zuerst die Datei avrdude.conf unter C:\Programme\WinAVRDude-20100110\bin\ mit einem Editor (bspw. Notepad) geöffnet (ich gehe hier einfach mal davon aus, dass WinAVR unter C:\Programme installiert wurde). Danach werden folgende Zeilen unter # PROGRAMMER DEFINITIONS hinzugefügt:

      Quellcode

      1. programmer
      2. id = "diamex";
      3. desc = "Atmel AVR ISP";
      4. type = stk500v2;
      5. ;

      Solltet ihr einen anderen Programmer verwenden, ist dieser eventuell bereits in der Liste vorhanden oder muss mit anderen Werten eingetragen werden.

      Schließt nun euren Programmer an den PC an.

      Bei WinXP musste damals zusätzlich noch ein Treiber für den DIAMEX Programmer installiert werden. Bei Win10 wird das Gerät automatisch als "Serielles USB-Gerät "erkannt und eine Treiberinstallation sollte damit nicht mehr notwendig sein.

      Anschließend schaut ihr im Gerätemanager nach, unter welchem COM-Port euer Programmer aufgeführt wird (bei mir war es bspw. COM9) und stellt bei den Eigenschaften -> Anschlusseinstellungen noch die passende Bitrate für euren Programmer ein (beim DIAMEX sind es bspw. 19200 Bits pro Sekunde).

      Jetzt verbindet ihr euren Chip-Adapter vom Programmer (oder eure Dead Zone Fix Platine mit ISP JTAG Sockel) mit dem Programmer, öffnet die Eingabeaufforderung (im Suchbereich bei Win10 oder im Ausführen-Dialog von WinXP einfach CMD eingeben und ggf. mit Admin-Rechten öffnen) und gebt folgenden Befehl ein:

      Quellcode

      1. "C:\Programme\WinAVRDude-20100110\bin\avrdude.exe" -C "C:\Programme\WinAVRDude-20100110\bin\avrdude.conf" -c diamex -P COM9 -b 19200 -p atmega8 -U lfuse:w:0x04:m -U hfuse:w:0xd1:m -U flash:w:DeDeadZone.hex"
      2. pause

      Bestätigt anschließend die Eingabe mit ENTER.

      Achtung!: Ich gehe hier wieder davon aus, dass
      • WinAVR unter C:\Programme installiert wurde,
      • ein DIAMEX Programmer verwendet wird,
      • der Programmer bei COM9 aufgeführt wird,
      • die Bitrate bei 19200 liegt und
      • das .hex-File "DeDeadZone.hex" heißt und direkt unter C:\ liegt
      Sollte das bei euch nicht der Fall sein, müsst ihr die Angaben in der Befehlszeile entsprechend anpassen!

      Die lfuse- und hfuse-Werte für den ATmega8A habe ich aus der Datei Makefile übernommen.

      Somit sollte der ATmega8A nun erfolgreich programmiert sein und ihr könnt die Platine ins Lenkrad einbauen.

      Falls ihr gleich mehrere Chips programmieren wollt, könnt ihr für den Befehl natürlich auch ein Batch-File erstellen und euch somit die Schreibarbeit ein wenig sparen. ;)



      Schritt 3 - Lenkrad öffnen und originale Platine temporär ausbauen

      Nehmt nun einen Kreuzschlitzschraubendreher und entfernt die 4 Schrauben auf der Unterseite des Lenkrads.




      Das Anschlusskabel des Controllers und die Verbindungskabel zum Lenkrad sind wahrscheinlich mit ein wenig Heißkleber im Gehäuse fixiert. Ich konnte den Kleber bei meinem Lenkrad einfach abziehen. Sollte der Kleber bei euch etwas fester sitzen, lässt er sich sehr einfach mit ein paar Tropfen Isopropanol lösen und abnehmen.




      Anschließend müsst ihr die 4 Schrauben des Kunststoffschachts für die VMU lösen.




      Danach könnt ihr den Schacht samt originaler Platine aus dem Gehäuse entnehmen und die 2 Schrauben an der Unterseite der Platine lösen.




      Nun könnt ihr den Stecker mit der Verbindung zum 100KΩ Potentiometer am Lenkrad abziehen (siehe Pfeil unteres Foto; interessant: bei meinem Lenkrad ist das Massekabel rot und das 5V-Kabel schwarz ^^ )






      Schritt 4 - Neue Platine mit originaler Platine verbinden

      Jetzt müsst ihr das bei Schritt 1 gebastelte Kabel an der Buchse einstecken, an der sich soeben noch die Verbindung zum Potentiometer befunden hat. Das andere Ende des Kabels steckt ihr auf der neuen Platine in die Buchse mit der Beschriftung "to stock pcb" ein. Kontrolliert hier zur Sicherheit noch einmal, dass sich die Kabel von GND und 5V/Vcc tatsächlich auch kreuzen!

      Das Kabel, das vom Potentiometer kommt, steckt ihr in die Buchse mit der Beschriftung "to wheel" ein.

      Nun könnt ihr optional zwei Spreiz-/Kunststoffnieten oder ähnliches verwenden, um die neue Platine über die beiden äußeren Löcher mit der originalen Platine zu verbinden.




      Danach müsst ihr den Kunststoffschacht wieder mit der originalen Platine verschrauben. Eine der Schrauben dient hierbei jetzt zusätzlich der Fixierung der neuen Platine.




      Jetzt könnt ihr den VMU-Schacht wieder mit dem Gehäuse verschrauben, ggf. das Controllerkabel wieder mit Heißkleber fixieren und das Gehäuse wieder verschließen.
      Wie man sieht, passt die neue Platine problemlos ins Lenkradgehäuse. :)






      Schritt 5 - Funktionstest

      Der De-Dead Zone Fix Code von Ben verfügt über 2 Modi:
      a) der Code ist aktiviert -> die Dead Zone des Lenkrads wird verringert und

      b) der Code ist deaktiviert -> die Dead Zone des Lenkrads wird nicht verändert

      Dies ist notwendig, da Spiele wie Tokyo Highway Challenge (auch als Tokyo Xtreme Racer in den USA, bzw. Shutokou Battle in Japan bekannt) bereits über eine softwareseitige Korrektur der Dead Zone verfügen und es somit notwendig sein kann, dass man die Anpassung über die neue Platine deaktiviert.

      Schließt nun euren Race Controller an die Dreamcast an, sucht euch ein Spiel, mit dem man die analoge Eingabe gut überprüfen und justieren kann (bspw. Sega Rally 2 oder F355 Challenge), schlagt das Lenkrad ganz nach links ein und schaltet die Dreamcast an.

      Das Einschlagen des Lenkrads nach links aktiviert den Code, das Einschlagen ganz nach rechts deaktiviert den Code.
      Beim ersten Einschalten ist es nicht ganz sicher, ob der Code aktiviert ist oder nicht, weshalb das Lenkrad nach links eingeschlagen werden sollte.
      Dies gilt aber nur für die "Erstinbetriebnahme". Bei späteren Einschaltvorgängen "merkt" sich das Lenkrad stets den zuvor eingestellten Modus und muss nur noch eingeschlagen werden, wenn der Modus beim Start geändert werden soll.

      Wenn das Lenkrad nun im Menü und im Spiel auf Lenkeinschläge reagiert, ist das ein gutes Zeichen dafür, dass alles richtig verbaut wurde und der Code funktioniert.

      Optional kann man nun die Dreamcast noch einmal mit dem Lenkrad ganz nach rechts eingeschlagen starten, um einen möglichst direkten Vergleich zwischen optimiert vs. nicht optimiert in Bezug auf die Dead Zone zu haben.

      Sollten die Anpassungen zu stark oder zu gering sein, könnte man den Code über die bei Schritt 2 erwähnten Werte auch noch einmal anpassen und den ATmega8A erneut programmieren (was für mich bislang noch nicht notwendig war).


      Wenn alles wie gewünscht funktioniert, seid ihr mit dem Mod fertig! :D



      Bei Fragen etc. schreibt einfach ins Forum... ;)

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von n00b ()

    • Ich hab am Wochenende die Platine verbaut.

      Was soll ich sagen? Ein Unterschied wie Tag und Nacht!!

      Ich habs bisher mit 2 Spielen getestet:

      Sega Rally: Es gibt keine Deadzone mehr, das spiel lässt sich endlich steuern! Leider hat mein Lenkrad beim Rechtseinschlag minimal mehr Wums als beim Linkseinschlag, daher bleibts trotzdem schwer zu steuern.
      Zusätzlich ist das Lenkrad auch weitrhin zu sensibel, sprich es lenkt zu stark. Leider kann man im Menü nix einstellen außer eines - man kann die Deadzone vergrößern :D Sprich man kann das Lenkgefühl nicht verbessern, nur verschlechtern :D

      F355 challenge: Es lässt sich super steuern, alles super, nur ist mir das Spiel einfach zu schwer.
      Jetzt Neu! DAS BUCH DER BÜCHER!!!
      Bestellungen im folgenden Thread: Joystick und Controller Buch Bestellung
      Mit dem Gutscheincode "ILOV3CH4RLIE" bekommt ihr keinen Rabatt!
    • Interessant wäre es wenn neben der Dead Zone auch die Empfindlichkeit eingestellt werden könnte.

      Sega Rally 2 ist die Hölle (auch mit Pad) weil die Fahrzeuge einfach zu stark reagieren.
      Was sich Sega dabei gedacht hat kann ich nicht nachvollziehen weil die Steuerung bei
      Sega Rally am Saturn perfekt war und man nur diese hätte übernehmen müssen.
      -Play and have fun!-
    • @Flat Eric: Ich habe es gerade mal mit aktiviertem und deaktiviertem Dead Zone Fix ganz kurz angetestet und (wie zu erwarten) springt die Lenkung mit aktiviertem Fix ein klein wenig eher an (das kann man ganz gut auf einer Geraden testen). Trotzdem wird durch den Fix aus dem Lenkrad natürlich kein Profi-Controller. ;)

      @SegaMan:
      So wie ich das lese, sollte die Sensibilität auch einstellbar sein:

      Ben Ryves schrieb:

      Software Features

      When enabled the software greatly reduces the size of the dead zone, making the wheel considerably more responsive.

      It also slightly decreases the strength of your input; this is because in the default configuration the wheel hits its reported minimum or maximum turning position quite a way before it hits the physical minimum or maximum limit stops. By decreasing the strength of your input you can enjoy a greater range of motion with the wheel.

      Aus diesem Grund hat Ben den Fix auch nicht in "Serienproduktion" als fertiges Kit angeboten, da man diese Änderungen im Code anpassen kann/muss:

      Ben Ryves schrieb:

      The code was written with my particular wheel's characteristics in mind, these can be adjusted in the source code as required to suit other wheels. As I don't know how well this will work with other wheels with different characteristics I can't make a generic board to fit in any wheel, sorry.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von n00b ()

    • Mit dem heutigen Stand der Technik sollte man doch günstig, ne komplett neue PCB dafür bauen können, oder nicht? Eventuell auch so, dass man da direkt Settings machen kann und die original PCB von Sega komplett weg tun kann.
      **** COMMODORE 64 BASIC V2 ****
      64K RAM SYSTEM 38911 BASIC BYTES FREE
      FOLLOW @deniz_koekden on Twitter... @deniz_koekden
      Ready.


      CiBo Passwort-Gate Februar 2014 - ich habe es via Mail verfolgt!
    • Dann könntest du aber auch gleich das Lenkrad entsorgen und ein besseres als Grundlage nehmen. Ich glaube bspw. nicht, dass heutzutage die Steuerung noch über Gummizüge realisiert wird, oder?

      Ich sehe den Fix eher als einen kleinen, "nerdigen" Mod, der das alte Lenkrad ein klein wenig verbessert, aber natürlich nicht gleich ein Lenkrand, wie man es heute bauen würde, daraus macht. ^^
    • @n00b: danke dir. Ja, das DC Lenkrad ist jetzt sowieso nicht soo der Hit. Aber gerade Daytona soll mit Lenkrad etwas besser steuerbar sein und der fix könnte tatsächlich noch ein wenig Unterstützung leisten, dass das Feeling noch was wird. Und ja, ich habe alles schon mit Pad versucht, auch die japanische Version, mit den Deadzones gespielt etc., es fühlt sich schon wie Daytona CCE auf Saturn nicht wie ein Original Daytona an...

      Spoiler anzeigen
      Das drum herum der DC ist einmalig, es ist eigentlich die beste Daytona USA Version von Umfang und auch Grafik. PS360 sind mega gut, aber ihnen fehlt Content und auch wenn grafisch 720p und das Automaten-Vorbild angeboten werden, so ist die DC Version doch wirklich ein Mehrwert.
    • n00b schrieb:

      Dann könntest du aber auch gleich das Lenkrad entsorgen und ein besseres als Grundlage nehmen. Ich glaube bspw. nicht, dass heutzutage die Steuerung noch über Gummizüge realisiert wird, oder?
      Ja die Idee würd mir gefallen :)
      -Play and have fun!-