Hallo Besucher, der Thread wurde 9,2k mal aufgerufen und enthält 40 Antworten

letzter Beitrag von OliverW. am

Welche Autofeuer-Modes braucht man?

  • Ich bin gerade am Autofeuermodul, welches zwischen Computer und Joystick gesteckt wird. Ich überlege, was man denn so braucht. Bisher habe ich:


    - Frequenz verstellbar
    - Pulsweite (also "Schussdauer") verstellbar
    - abschaltbar
    - Mode 1: Autofeuer wird mit dem Feuerknopf des angeschlossenen Joysticks ausgelöst; Loslassen bedeutet "kein Feuer"
    - Mode 2: Es wird immer dauerhaft geballert, und wenn man den Joystick-Knopf gedrückt hält, wird auch der Knopf in Richtung Computer gedrückt gehalten (wird z.B. für Turrican oder Delta gebraucht)


    Ist damit alles abgedeckt? Oder gibt es noch komplexere Dinge, die man berücksichtigen sollte?


    Wie schon mehrfach in anderen Threads angekündigt, habe ich ein mini-Modul mit einem 8-Pin Microcontroller und einem Taster gebaut. Microcontroller sind heutzutage billiger als ein NE555 mit Außenbeschaltung, außerdem kann man die Dinge präziser steuern.Mit dem Taster cyclet man durch die drei Modes (aus-1-2) und wenn man ihn gedrückt hält, gelangt man in den Config-Modus, wo man per Joystick hoch/runter die Geschwindigkeit einstellen kann. Nochmaliger Druck auf den Modultaster beendet den Config-Mode und speichert die Einstellung im EEPROM des Controllers, so dass die gewählte Geschwindigkeit und Schussdauer auch nach dem Ausschalten erhalten bleibt.


    Der Microcontroller "sieht" auch die vier Joystickrichtungen, könnte sie sogar bedienen. Die vier Richtungen sind "durchverbunden", der Feuerknopf läuft immer durch den Microcontroller (dafür habe ich zwei Pins vergeben, einer rein, einer raus). Auf dem Pin in Richtung Computer ist noch eine schön-helle rote LED angebracht, damit man das Feuern auch gleich sehen kann.


    Also.. was muss ein "Autofeuer Deluxe" Eurer Meinung nach noch alles haben?


    Jens

  • Also.. was muss ein "Autofeuer Deluxe" Eurer Meinung nach noch alles haben?

    Video-synchrones Autofeuer mit 0.5x und 0.25x der Framerate (evtl. auch 1.0x), um bei "einmal pro Frame"-Joystickabfragen beliebig lange die maximale Feuerrate rauszuholen.

  • Falls das Poti wie von Commodore Man vorgeschlagen nicht machbar ist, sollten zumindest eine Handvoll Presets abrufbar sein. Z.B. durch links und rechts im Configmodus, mit Blinken der LED in der gewählten Geschwindigkeit als optisches Feedback.

  • Da ich den Mode 2 nicht so ganz verstehen, hier ein weiterer Modus:
    - Mode 3: Wird der Feuerknopf gedrückt wird Autofeuer erzeugt. Lässt man los wird der Feuerknopf gehalten, so dass sich z.B. bei R-Type der Schuss aufläd. Drückt man wieder den Feuerknopf wird Autofeuer wieder gestartet.

  • Ein Doppel-Autofire für 2 Joysticks mit integriertem Joystick-Changer wäre ultra mega deluxe.... Ist wahrscheinlich aber etwas zuviel des Guten ;)



    - Frequenz verstellbar
    - Pulsweite (also "Schussdauer") verstellbar
    - abschaltbar
    - Mode 1: Autofeuer wird mit dem Feuerknopf des angeschlossenen Joysticks ausgelöst; Loslassen bedeutet "kein Feuer"
    - Mode 2: Es wird immer dauerhaft geballert, und wenn man den Joystick-Knopf gedrückt hält, wird auch der Knopf in Richtung Computer gedrückt gehalten (wird z.B. für Turrican oder Delta gebraucht)

    Ansonsten deckt das meine Wünsche völlig ab.

  • Ich persönlich hätte aber gerne ein Poti zum ändern der schussfrequenz.

    Poti ist analog, wir reden hier von einem digitalen Microcontroller. Als Ersatz für das Poti gibt es den Config-Mode, in dem man die Geschwindigkeit und Schussdauer einstellt.

    Video-synchrones Autofeuer mit 0.5x und 0.25x der Framerate (evtl. auch 1.0x), um bei "einmal pro Frame"-Joystickabfragen beliebig lange die maximale Feuerrate rauszuholen.

    Komplett videosyncron geht leider nicht, weil ich am Joystickport keinerlei Anhaltspunkte habe, wann ein VBlank kommt. Außerdem läuft der Microcontroller mit seinem internen RC-Oszillator, der bis zu 0,5% Abweichung hat. Ich habe jedoch bewusst eine IRQ-Rate von 300kHz gewählt, damit ich sowohl bei PAL als auch bei NTSC sehr nahe an die von Dir gewünschten Raten heran komme.

    Falls das Poti wie von Commodore Man vorgeschlagen nicht machbar ist, sollten zumindest eine Handvoll Presets abrufbar sein. Z.B. durch links und rechts im Configmodus, mit Blinken der LED in der gewählten Geschwindigkeit als optisches Feedback.

    Blinken im Configmode ist ohnehin schon drin, aber Presets sind ne gute Idee.

    - Mode 3: Wird der Feuerknopf gedrückt wird Autofeuer erzeugt. Lässt man los wird der Feuerknopf gehalten, so dass sich z.B. bei R-Type der Schuss aufläd. Drückt man wieder den Feuerknopf wird Autofeuer wieder gestartet.

    Das ist "Modus 2" mit invertiertem Feuerknopf. Halte ich für überflüssig, da die Bedienung von R-Type und z.B. Delta doch recht ähnlich zu sein scheint.

    Ein Doppel-Autofire für 2 Joysticks mit integriertem Joystick-Changer wäre ultra mega deluxe.... Ist wahrscheinlich aber etwas zuviel des Guten

    Mit dieser Hardware geht das nicht, weil nur 1x joystick-in und 1x joystick out dran ist. Die Platine ist echt klein mit ca. 2cm2. Außerdem ergibt sich aus so einer Aufgabenstellung gleich eine weitere Komplikation, nämlich das Weiterreichen der analogen Paddle-Signale. Keine unlösbare Aufgabe, aber um einige Größenordnungen teurer als das, was ich jetzt plane (bzw. hardwaremäßig schon gebaut habe). Das Autofeuermodul wird so schon bei knapp 15,- EUR liegen, was der vielen Handarbeit geschuldet ist: 2x Joystickports anlöten und transparenten Berührschutz ankleben dauert halt.


    Für einen Joystickport-Vertauscher wären gleich noch mehr Taster und ein größerer Microcontroller erforderlich. Ich fürchte, dass sowas allein aufgrund der Teile und der größeren Platine zwischen 30,- und 40,- EUR landen würde.


    Jens

  • Eventuell mit einem Megadrive Pad o.Ä. (Ich weiss das das MD Pad elektrisch nicht passt - vielleicht kann man das anpassen)

    Passt man das MD Pad an, schafft man neue Inkompatibilitäten. Das Produkt wird damit zu erklärungsbedürftig. Wenn Du Dir eins so modifizieren möchtest, dass der C64 bei Verwendung eines MD Pads nicht kaputt geht, ist das sicher machbar, aber nichts für die Serie.


    Eine Möglichkeit die SPACE Taste über den 2. Joystickport anzusprechen.

    Das ist hardwaretechnisch überhaupt nicht drin, weil die falschen Leitungen an Port2 anliegen. Das wäre allenfalls eine Sache für den Joystickport-Vertauscher, den Adam angesprochen hat, jedoch auch wieder stark erklärungsbedürftig, weil die Lösung dafür wäre, dass man bei Druck auf Feuer in Port 2 gleich beide Feuerknöpfe auslöst. Solche Spezialitäten betteln geradezu danach, tausende Support-e-Mails zur Folge zu haben (AKA "Supporthölle").


    Jens

  • Was evtl praktisch wäre, wenn man den Dauerimpuls, nicht nur auf den Feuerknopf, sondern wahlweise auf die diversen Richtungen des Joysticks legen könnte.
    Ich denke dabei an die bekannten "Rüttelspiele" (Decatlon etc) da könnte man dann nach Links einen Dauerfeuerimpuls geben, und den Joystick dann nach rechts halten. Wenn man jetzt den Impuls in der Geschwindigkeit regeln kann, schafft man diese Spiele ohne Probleme. :)

  • Was evtl praktisch wäre, wenn man den Dauerimpuls, nicht nur auf den Feuerknopf, sondern wahlweise auf die diversen Richtungen des Joysticks legen könnte.
    Ich denke dabei an die bekannten "Rüttelspiele" (Decatlon etc) da könnte man dann nach Links einen Dauerfeuerimpuls geben, und den Joystick dann nach rechts halten.

    Das geht nur eingeschränkt. Ja, der Adapter kann nicht nur auf Richtungen "lauschen" sondern diese auch "drücken", aber wenn der Joystick in eine Richtung gedrückt ist, kann der Adapter diese Richtung NICHT loslassen. Und eine weitere Einschränkung gibt es: Der Modulknopf ist so verdrahtet, dass er die ansonsten unmögliche Kombination "links und rechts gleichzeitig" auslöst (Taster->Doppeldiode->Richtungsleitungen). Es wäre also mit ein wenig Softwareaufwand (in der MCU) verbunden, solche Dinge zu filtern (MCU muss sich merken, welche Richtungssignale intern gezogen wurden und muss den Modulknopf u.U. ignorieren).


    Will sagen: Man kann problemlos das "Rütteln" implementieren, aber das wäre entweder ein dauerhaftes Rütteln, oder es könnte nur mit dem Joystick-Knopf ein/ausgeschaltet werden. Inwiefern das praktikabel ist, müsste man in der Praxis testen. Außerdem.. ja, Decathlon war das erste Rüttelspiel, aber hat nicht Track&Field letztlich den Standard in Sachen Rüttelspiele gesetzt?


    Jens

  • Was das Rütteln angeht: Ich hab hier einen Selbstbau Dauerfeuer Kasten, der kann das. Da ist aber kaum Elektronik drin, und dennoch funktioniert es. Team Patrol zB lässt sich damit problemlos spielen. Obwohl da jedesmal beide Leitungen aktiv sind. Irgendwie kann der C64 damit umgehen. Oder das Spiel nimmt das an... :)
    Die Problematik mit den unmöglichen Kombinationen könnte man umgehen, wenn man das so schaltet, daß bei "Richtungs-Dauerfeuer" immer während des Impulses der Joystick selbst überstimmt wird, sprich die Joystickleitungen werden dann während des Impulses kurz Getrennt (Feuerleitung kann ja in Betrieb bleiben) der Impuls wird ausgelöst, und dann wird wieder auf Joystick zurückgeschaltet. Damit erreicht man dann den Rütteleffekt.

  • Die vier Richtungen sind "durchverbunden", der Feuerknopf läuft immer durch den Microcontroller (dafür habe ich zwei Pins vergeben, einer rein, einer raus).

    Ja, der Adapter kann nicht nur auf Richtungen "lauschen" sondern diese auch "drücken", aber wenn der Joystick in eine Richtung gedrückt ist, kann der Adapter diese Richtung NICHT loslassen.

    Warum hast du denn die Richtungen durchgeführt? Fürchtest du die Zeitverzögerung im MC oder hast du nicht mehr genügend Pins frei?

  • Warum hast du denn die Richtungen durchgeführt? Fürchtest du die Zeitverzögerung im MC oder hast du nicht mehr genügend Pins frei?

    Da ging es nur um die Anzahl Pins am Microcontroller. Zum "Auftrennen" braucht man insgesamt 10 Signalleitungen, die sind naturgemäß an einem 8-Beiner nicht vorhanden.


    Jens

  • Wie wäre modus 3: (für Joysticks/Joypads mit 2 tasten, z.B. vom Amiga) 1. taste = feuer (so wie immer) 2. taste = autofeuer (oder beide tasten umgekehrt)

    Auch das scheitert an den Grenzen der Hardware. Ein 8-Beiniger Microcontroller hat zwei Pins für die Stromversorgung, ergo 6 Signalpins, die er nutzen kann. Vier davon sind die vier Joystick-Richtungen, einer ist der Joystick-Feuerknopf und einer ist der Computer-Feuerknopf.


    Leider ist da kein Platz für einen weiteren Feuerknopf. Die Paddle-Pins sind wohl vom Joystick-input zum Joystick-output durchgeführt, ergo kann man basteln wenn man möchte. Das ist dann für Fortgeschrittene Löter, nichts für Otto-Normalanwender.


    Jens

  • Auch das scheitert an den Grenzen der Hardware. Ein 8-Beiniger Microcontroller hat zwei Pins für die Stromversorgung, ergo 6 Signalpins, die er nutzen kann. Vier davon sind die vier Joystick-Richtungen, einer ist der Joystick-Feuerknopf und einer ist der Computer-Feuerknopf.

    Uups, hatte das mit dem 8 Pins überlesen. Aber dann hast du dich auch verzaehlt, oder wird der Modus-Taster nicht über eine eigene Leitung angeschlossen?


    P.S.: Mich persönlich interessiert das nicht so sehr, aber dachte es wäre eine nette Idee ;-)

  • Der Modus Taster könnte ja die Leitung z.B. bei "hoch" und "runter" gleichzeitig oder "links" und "rechts" gleichzeitig betätigen.

    ...und wer den Thread aufmerksam mitgelesen hat der weiß, dass er rechts+links gleichzeitig zieht. Ich habe mich bewusst gegen "hoch+runter gleichzeitig" entschieden, weil das die Menü-Taste am Minimig ist.


    Jens

  • Also irgendwie kann ich mir die Bedienung von dem Modul in der Praxis nicht so recht vorstellen, insbesondere in Mode2 wo es dauernd ballert.
    Und wenn von der Programmierbarkeit unterm Strich auch fast nix mehr übrigbleibt kann ich mir als Hobby-Löter auch gleich den NE555 hernehmen. Okay, für Nicht-Löter wird das vermutlich anders aussehen ;)


    Was mein Dauerfeuer-Kästchen auf Basis der Schaltung von CapFuture hat:
    - Kippschalter zum Dauerfeuer einschalten
    - Poti für die Frequenz
    - Joystickbutton überstimmt die Schaltung
    - LED zeigt die Dauerfeuer-Frequenz (hier wäre vielleicht eine Schaltung die den Joystick-Button mit berücksichtigt sinnvoller gewesen)
    - ausreichend langes Kabel, um den Kasten in Joystick-Nähe zu platzieren
    Das Ganze kann quasi blind bedient werden während das Spiel läuft. Mehr wie Einschalten (und beim GameOver schnelles Ausschalten) und Geschwindigkeit regeln hab ich noch nie gebraucht.