Zum Inhalt springen

Arduino Pinball Controller


Black Knight

Empfohlene Beiträge

vor 38 Minuten schrieb Black Knight:

daraus ist ersichtlich, dass Lisy den Bumber (Spule 22) tatsächlich einschaltet, was nicht sein sollte,

&%&$ 😉 schau ich mir morgen an

vor 38 Minuten schrieb Black Knight:

Wenn Ralf einverstanden ist würde ich dann auch gleich noch ein Plätzchen für einen Pi vorsehen, also Lisy_Mini praktisch integrieren.

absolut keine Einwände, nur ein kleiner Schriftzug mit ner URL zu www.lisy.dev auf der Platine wär schön 😎

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Antworten 1,6Tsd
  • Erstellt
  • Letzte Antwort

Top-Benutzer in diesem Thema

  • Black Knight

    642

  • bontango

    438

  • Volley

    100

  • jabdoa

    97

Top-Benutzer in diesem Thema

Veröffentlichte Bilder

vor 45 Minuten schrieb Black Knight:

Ich weiß allerdings noch nicht, warum das Ding hängen bleibt, denn laut Log schaltet Lisy ihn auch wieder aus.

pinmame laesst in 10 Sekunden an ... ich denke das hängt mit Switch:#52 ( Top Jet Bumper) zusammen,  jedenfalls kommt

die Aktivierung direkt danach, und wenn er wieder auf 0 geht, wird die Spule deaktiviert, ABER:

- das macht er nur bei #52, Switch#53 (Bottom Jet Bumper) laesst in kalt obwohl da sind zwischen EIN und AUS auch nur 11 millisekunden

Die Switches der Switchmatrix sollten doch nur 'Zaehlkontakte' sein, oder ist der Upper Jet Bumper irgendwie 'besonders'?

UND:

wieso liegen da 10 Sekunden dazwischen ???

any idea?

 

[618.046657][0.000019] LISY_W_SWITCH_HANDLER Switch#:52 action:1

...

[618.055810][0.000063] LISY_W_SOLENOID_HANDLER: Solenoid:22, changed to 1 ( AC is 1)

...

[628.479499][0.000017] LISY_W_SWITCH_HANDLER Switch#:52 action:0

.....

[628.517388][0.000050] LISY_W_SOLENOID_HANDLER: Solenoid:22, changed to 0 ( AC is 1)

Link zu diesem Kommentar
Auf anderen Seiten teilen

37 minutes ago, bontango said:

nur ein kleiner Schriftzug mit ner URL zu www.lisy.dev auf der Platine wär schön

Klar, kein Problem, vielleicht könnten wir auf deiner Homepage ja auch gleich die entsprechende Doku unterbringen.

23 minutes ago, bontango said:

ich denke das hängt mit Switch:#52 ( Top Jet Bumper) zusammen,

Schalter 52 sollte tatsächlich nur zur Punktezählung sein. Normalerweise werden diese Schalter nur aktiviert, wenn der Bumper anzieht.

Ich habe gerade mal ein Experiment gemacht: ich habe Lisy gestartet und bin ich den Pinbot Testmodus gegangen. Dann habe ich den Bügel des unteren Bumpers von Hand betätigt, woraufhin PinMame ja nur die Punkte zählen sollte. Stattdessen ist die Spule des Bumpers angesprungen und hat den Bügel unten gehalten. PinMame scheint also den Schalter für die Punkte als Aktivierungssignal zu nehmen.

Damit läuft das Ganze im Spiel wohl so ab, dass zunächst der eigentlich Aktivierungsschalter betätigt wird. Dann aktiviert die HW-Rule den Bumper wodurch der Zählschalter aktiv wird. Jetzt kommt PinMame und aktiviert die Spule erneut, so dass der Bumper unten bleibt.

43 minutes ago, bontango said:

wieso liegen da 10 Sekunden dazwischen ???

Als ich gemerkt habe, dass der Bumper hängt habe ich ‚High Score Reset‘ gedrückt. Der fungiert bei mir als Not-Aus und zieht den Blanking, was Lampen, Display und Spulen deaktiviert. Die Schalter laufen dann aber noch, wir sehen bei dem Schalter also nur, dass der Bumper wieder hoch kommt.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Black Knight Mal einige Gedanken zu einer möglichen neuen APC Version:

  • CPLD könnte man auch über den Raspberry Pi programmieren, evtl. mit http://openocd.org/
  • Anstelle CPLDs auf der Hauptplatine zu platzieren, könnte man Shields für Arduino oder Raspberry Pi einsetzen. Oder Breakout Boards, die über Pinheader verlötet werden. Ähnlich wie beim TiltAudio könnte das im Gegensatz zu SMD direkt auf der Platine wieder jeder selbst austauschen:
  • Beim Pinscape-Controller hatten wir uns gegen eine einzelne große Platine entscheiden. Stattdessen werden verschiedene 10x10cm Platinen gestapelt oder nebeneinander montiert und über Pinheader oder Flachbandkabel verbunden. Diese Platinengröße war viel billiger zu produzieren und auch ohne Zollprobleme für unter 22 Euro aus China zu importieren.
  • Ein modularer Aufbau mit mehreren Platinen hätte auch den Vorteil, dass einzelne Komponenten individuell verbessern könnte, z.B. optional bestimmte Treiberausgänge mit Hardware-Timern gegen dauerhaftes Durchschalten schützen.

@bontango Könnte die Lösung vom aktuellen TiltAudio 2.6a nicht auch für LISY für den Sound geeignet sein? Die wenigen Bauteile sind recht günstig, z.B. die Kombination aus

  • PCM5102 I2S DAC Decoder Board
  • Digital PAM8610 2x15W Amplifier Board
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 8 Stunden schrieb mk47:

Stattdessen werden verschiedene 10x10cm Platinen gestapelt oder nebeneinander montiert und über Pinheader oder Flachbandkabel verbunden

Aber jeder zusätzlicher Stecker bzw jedes zusätzliche Kabel ist auch eine neue Fehlerquelle (Kontaktprobleme).

Wenn dann vielleicht ein größeres Base-Board mit vernünftigen Stecker- und Buchsenleisten und Befestigungslöchern für die Verschraubung der Shields und nur da wo es Sinn macht und man wirklich mal wechseln muss (Arduino, Treiber, evt auch Sound)

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 9 Stunden schrieb mk47:

Könnte die Lösung vom aktuellen TiltAudio 2.6a nicht auch für LISY für den Sound geeignet sein?

Ja, hatte da schon 'abgeguckt' und so was ähnliches schon gebaut ( für die aktuelle LISY Version ) -> siehe Bild unten, mit 5Volt, 3W Verstärker, Beschreibung auf lisy.dev folgt

Das Problem ist nur dass Gottlieb einen 'Halbbrückenverstärker' braucht, weil der original Lautsprecher mit einem Bein auf GND hängt.

Deshalb muessen die User den Lautsprecher aktuell neu verdrahten. In der nächsten LISY Version soll da ein Kartenrandstecker direkt für die

Soundkarte mit dran. Werde den Verstärker dann wohl diskret eventuell mit nem TDA2030 aufbauen, obwohl der ja schon Uralt ist ..

schaue mich aber gerade nach Alternativen um, wenn Ihr da Vorschläge habt?!

@Black Knight hattest Du gesehen dass der von Dir verwendete TDA 7496 bei Reichelt nicht mehr lieferbar ist?

Und: Lati sagt, das mit den Augen gehört so!

https://www.flippermarkt.de/community/forum/threads/pinbot-multiball-wie-ist-es-richtig.217453/#post-1727964

grafik.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

14 hours ago, mk47 said:

CPLD könnte man auch über den Raspberry Pi programmieren

Ja, das ginge wohl auch. Allerdings soll der Pi mehr eine Option sein, die nicht jeder benutzen wird.

6 hours ago, Volley said:

Aber jeder zusätzlicher Stecker bzw jedes zusätzliche Kabel ist auch eine neue Fehlerquelle (Kontaktprobleme).

Vermutlich müssten die Stecker auch von Hand bestückt werden, zumindest finde ich in der Teiledatenbank von JLCPCB keine.

5 hours ago, bontango said:

hattest Du gesehen dass der von Dir verwendete TDA 7496 bei Reichelt nicht mehr lieferbar ist?

Tja, das war zu befürchten; schon bei meiner letzten Bestellung hatten sie das Ding nur noch als Restposten. Aber Reichelt hat ja sowieso nicht alle APC-Teile, man muss also noch woanders bestellen und da ist der TDA noch überall zu haben.

5 hours ago, bontango said:

Und: Lati sagt, das mit den Augen gehört so!

Tja, das erklärt dann wohl warum es so nach Absicht aussieht.😉

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 20 Stunden schrieb Black Knight:

Damit läuft das Ganze im Spiel wohl so ab, dass zunächst der eigentlich Aktivierungsschalter betätigt wird. Dann aktiviert die HW-Rule den Bumper wodurch der Zählschalter aktiv wird. Jetzt kommt PinMame und aktiviert die Spule erneut, so dass der Bumper unten bleibt.

Ich könnte die Spulen für die eine HW Rule eingerichtet ist von der Aktivierung ausnehmen. Dann muesste ich nur eine Tabelle machen

in der das pro Pin aufführe, würde es daher lieber 'allgemein' halten.

Habe aber einen 'PROC' Kommentar in der pinmame soure gefunden:

    /*-- special solenoids updated based on switches         -- */
    /*-- but only when no P-ROC, otherwise special solenoids -- */
    /*-- lock on when controlled by direct switches          -- */
    for (ii = 0; ii < 6; ii++) {
      if (core_gameData->sxx.ssSw[ii] && core_getSw(core_gameData->sxx.ssSw[ii]))
        locals.solenoids |= CORE_SOLBIT(CORE_FIRSTSSSOL+ii);
    }

das hört sich nach unserem Problem an!

Ich habe die Routine testweise mal fest rausgenommen und ein kleines update ( _5.25-56 ) hochgeladen

Könntest Du das noch mal testen bitte?

@Snuxkannst du uns da evtl. etwas zu sagen?

Bearbeitet von bontango
Link zu diesem Kommentar
Auf anderen Seiten teilen

40 minutes ago, bontango said:

Könntest Du das noch mal testen bitte?

Das war's, die Special Solenoids funktionieren jetzt sowohl im Spulentest als auch im Spiel selbst.

Habe gerade drei Spiele gemacht und keine Probleme feststellen können. Jetzt noch die restlichen Sounds und wir haben's geschafft. :banano:

Link zu diesem Kommentar
Auf anderen Seiten teilen

😁👍💪

Einen kurzen check musst Du bei der nächsten Version noch machen, ich muss das jetzt als conditional compile reinbringen sonst

zerschisse ich den allgemeinen pinmame code.

Morgen gehts weiter, Heute Abend ist pokern 😎

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 14.2.2020 um 18:15 schrieb Black Knight:

Dann zock sie mal ab und bis morgen.

Leider schief gegangen, mit Flush gegen Full House rausgeflogen. 😧 more luck next time ...

Zum Sound: könntest Du mir noch mal einen Log mit aktiviertem Sound-Debug schicken?

Bei den Logs die ich habe fehlen die Sounds mit Index#1

Link zu diesem Kommentar
Auf anderen Seiten teilen

51 minutes ago, bontango said:

Zum Sound: könntest Du mir noch mal einen Log mit aktiviertem Sound-Debug schicken?

Ist unterwegs.

Ich werde jetzt versuchen, ein Finetuning vom Throttle zu machen. Mal sehen, was ich da als Referenz nehmen kann.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich kann leider den Throttle nicht genau einstellen, da sich die Geschwindigkeit nicht kontinuierlich mit den Einstellungen ändert. Es gibt einen Geschwindigkeitssprung von ca. 20% zwischen Throttle 108 und 107 und die korrekte Geschwindigkeit läge irgendwo dazwischen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

11 minutes ago, bontango said:

20% ?

Ja, zwischen 107 und 108 scheint ein Sprung zu sein, danach tut sich bis 120 oder so gar nichts mehr.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die Sounds vom zweiten Board kann ich jetzt auch rippen. Das ist eine Mischung aus Hintergrundmusik aber auch kurzen Sounds.

Wie wollen wir das machen? Soll ich dir signalisieren dass der Sound ans zweite Board geht (wie?) und wie machen wir das mit 'never ending sounds'?

Nehmen wir da ne Minute oder so auf und gut ist, oder setze ich das Loop-Flag? ( kannst Du loopen?)

Falls ich das loop Flag setzen soll, muestte ich ne Tabelle pro Pin aufbauen um zu wissen welche sounds endlos sind, oder das

irgendwie im Soundnamen mit aufführen ( immer ein _loop an Ende?) 

Da gefällt mir die Minutenvariante am besten, was meinst Du?

Link zu diesem Kommentar
Auf anderen Seiten teilen

4 minutes ago, bontango said:

Soll ich dir signalisieren dass der Sound ans zweite Board geht (wie?)

Ich habe doch zwei Soundkanäle, schick die Sounds für die verschiedenen Boards einfach an verschiedene Kanäle. Ich nehme an, damit wird auch im Original festgelegt, was simultan gespielt wird und was nicht.

7 minutes ago, bontango said:

Nehmen wir da ne Minute oder so auf und gut ist, oder setze ich das Loop-Flag? ( kannst Du loopen?)

Ich kann zwar loopen, aber mir gefällt die Minutenvariante auch besser. Die Soundfiles sind so klein und SD-Karten sooo groß … 😁

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 16.2.2020 um 18:38 schrieb Black Knight:

Ich habe doch zwei Soundkanäle, schick die Sounds für die verschiedenen Boards einfach an verschiedene Kanäle.

Wie mach ich das den mit dem API call, Track = 2 ??

Play Sound File (0x34)

Play a sound file on external hardware. This is used to extend sound capabilities on older machines in LISY. Alternatively, you can use the MPF sound system.

Payload is a null terminated string containing track, flags and the filename of the sound.

Payload of Command 0x34 - Play Sound File
Byte Length Description
1 1 Track to play (default track is 1)
2 1 Flags (bit 0=loop, 1=no cache)
3 n Filename (length n)
3 + n 1 Null terminator
Link zu diesem Kommentar
Auf anderen Seiten teilen

1 hour ago, bontango said:

Wie mach ich das den mit dem API call, Track = 2 ??

Genau, einfach Track = 2 setzen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mal eine ganz blöde Frage, warum nicht die Sounds über den Pi wie sonst auch bei LISY ausgeben?
Das wäre doch auch für das Handling der Sounddateien einfacher, oder? (Ich denke da an "Altsounds".)

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 5 Minuten schrieb mk47:

Ich denke da an "Altsounds".

kannst Du das ein wenig ausführen, Altsounds sagt mir jetzt auf Anhieb nichts

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gerne, über Pinsound oder TiltAudio kannst Du nicht nur die gerippten Sounds aus den originalen ROMs abspielen, sondern auch alternative Sounddateien angeben - meistens qualitativ wesentlich hochwertigere Samples. Dazu gibt es dann Zuordnungstabellen.
Im VPin-Bereich kann das PinMAME auch. (PinMAME und TiltAudio nutzen das selbe Format, Pinsound inzwischen ein proprietäres.)
Wie beim Pin2DMD gibt es hier Synergien zwischen VPin und Real Pin 😀
Wenn entprechende Lautsprecher verbaut sind, sind die Altsounds z.B. für T2 oder Highspeed 2 bei den Williams-Geräten eine enorme Verbesserung!
Aber auch bei Gottlieb würde sich dieses Konzept bei meinem Rock geradezu aufdrängen.

Im Altsound-1-Format liegen alle Sounddateien in einem Verzeichnis, zusammen mit einer altsound.csv. Da ich die hier nicht hochladen kann, hier mal ein Auszug der altsound.csv von Lethal Weapon 3 von Data East.
Irgendwie kommt euch ID, CHANNEL und LOOP nach den letzten Kommentaren hier doch vertraut vor, oder?
 

ID,CHANNEL,DUCK,GAIN,LOOP,STOP,NAME,FNAME,GROUP,SHAKER,SERIAL
0x0001,0,100,50,100,0,"lw3_main","lw3_main.ogg",1,,""
0x0002,0,100,50,100,0,"sharp_dressed_man","sharp_dressed_man.ogg",1,,""
0x0003,,100,50,0,0,"heli_bla","heli_bla.ogg",2,,""
0x0004,0,100,50,100,0,"multiball_ready","multiball_ready.ogg",1,,""
0x0005,0,100,50,100,0,"lotsabal","lotsabal.ogg",1,,""
0x0006,0,100,50,100,0,"zz_top_music_selection","zz_top_music_selection.ogg",1,,""
0x0007,0,100,50,100,0,"music_guitar_waiting","music_guitar_waiting.ogg",1,,""
0x0008,0,100,50,100,0,"default_theme","default_theme.ogg",1,,""
0x0009,0,100,50,100,0,"game_start","game_start.ogg",1,,""
0x000a,0,100,50,100,0,"speed_drums","speed_drums.ogg",1,,""
0x000c,0,100,50,100,0,"everybody_dance_now","everybody_dance_now.ogg",1,,""
0x000d,0,100,50,100,0,"c_c_factory_music","c_c_factory_music.ogg",1,,""
0x000e,1,100,50,0,0,"end_of_ball_bonus_collect","end_of_ball_bonus_collect.ogg",3,,""
0x000f,0,100,50,100,0,"c_c_factory_music","1-c_c_factory_music.ogg",1,,""
0x0010,0,100,50,100,0,"quadrupl","quadrupl.ogg",1,,""
0x0011,0,100,50,100,0,"game_ends","game_ends.ogg",1,,""
0x0012,0,100,50,100,0,"zz_top_music","zz_top_music.ogg",1,,""
0x0013,0,100,50,100,0,"c_c_fatcory_music_selection","c_c_fatcory_music_selection.ogg",1,,""
0x0014,,100,50,0,0,"stunt_bike","stunt_bike.ogg",2,,""
0x0015,,100,50,0,0,"stunt_cop_car","stunt_cop_car.ogg",2,,""
0x0016,,100,50,0,0,"stunt_wc","stunt_wc.ogg",2,,""
0x0017,,100,50,0,0,"big_explosions","big_explosions.ogg",2,,""

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

×
×
  • Neu erstellen...

Wichtige Information

Datenschutzerklärung und Registrierungsbedingungen