Jump to content

Arduino Pinball Controller


Recommended Posts

 

vor 23 Stunden schrieb mokopin:

Ich mach dann mal ein sound debug log

Soundlog vom kompletten Spiel:

- 0x24-0x29 etc kommt nicht vor

- 0xFE kommt 4x auf dem Soundboard

- am Spielende kommt 0xEA auf dem Soundboard

- am Spielende kommt 0x0B auf dem Musikboard

Mir scheint dass 0xEA und 0x0B den Sound bzw. Musik stoppen sollen. Das passiert auch wenn keine *.SND hinterlegt sind.
Ich muss wohl ein längeres Spiel machen, vielleicht kommen dann noch andere Kommandos. Melde mich wieder wenn Hiscore >5Mio :ruettler:

[190.152076][0.000033] play soundindex 45 on board 0 (Bumper?)

[190.425199][0.273123] LISY_W sound_handler: board:0 0xfe (254)

[190.425234][0.000035] play soundindex 254 on board 0

[190.902006][0.476772] LISY_W sound_handler: board:0 0x9a (154) (inlane oben?)

[190.902045][0.000039] play soundindex 154 on board 0#

 

[237.690525][0.000033] play soundindex 45 on board 0

[237.965715][0.275190] LISY_W sound_handler: board:0 0xfe (254)

[237.965774][0.000059] play soundindex 254 on board 0

[238.360563][0.394789] LISY_W sound_handler: board:0 0x9a (154)

[238.360602][0.000039] play soundindex 154 on board 0

 

[238.699905][0.339303] LISY_W sound_handler: board:0 0xfc (252) (ringmodulation aufsteigend)

[238.699941][0.000036] play soundindex 252 on board 0

[241.080807][2.380866] LISY_W sound_handler: board:0 0xfe (254)

[241.080872][0.000065] play soundindex 254 on board 0

[241.224379][0.143507] LISY_W sound_handler: board:0 0x9e (158) (Orbit switch)

[241.224427][0.000048] play soundindex 158 on board 0

 

[407.046206][0.000039] play soundindex 252 on board 0

[409.378235][2.332029] LISY_W sound_handler: board:0 0xfe (254)

[409.378300][0.000065] play soundindex 254 on board 0

[414.533732][5.155432] LISY_W sound_handler: board:0 0x9a (154)

[414.533797][0.000065] play soundindex 154 on board 0

 

[471.418616][3.162709] LISY_W sound_handler: board:0 0xea (234)

[471.418678][0.000062] play soundindex 234 on board 0

[471.494792][0.076114] LISY_W sound_handler: board:0 0x0 (0)

[471.494825][0.000033] play soundindex 0 on board 0

[480.679487][9.184662] LISY_W sound_handler: board:1 0xb (11)

[480.679567][0.000080] play soundindex 11 on board 1

Link to comment
Share on other sites

  • Replies 1.4k
  • Created
  • Last Reply

Top Posters In This Topic

Beim Pinbot sieht das übrigens z.B. so aus:

Zitat

[156.127099][0.013583] LISY_W sound_handler: board:1 0x63 (99)
[156.127127][0.000028] play soundindex 99 on board 1 
[156.130425][0.003298] LISY_W sound_handler: board:0 0x79 (121)
[156.130467][0.000042] play soundindex 121 on board 0 
[156.956068][0.825601] LISY_W sound_handler: board:1 0x62 (98)
[156.956111][0.000043] play soundindex 98 on board 1 
[157.129199][0.173088] LISY_W sound_handler: board:1 0x61 (97)
[157.129234][0.000035] play soundindex 97 on board 1 
[157.314078][0.184844] LISY_W sound_handler: board:1 0x60 (96)
[157.314113][0.000035] play soundindex 96 on board 1 

Mit 0x63 setzt er die Musiklautstärke (Kanal 1) herunter. Dann spielt er den Sound 0x79 auf Kanal 0 und dreht die Musiklaustärke in drei Schritten wieder auf.

Das mag beim RK aber anders sein. Erstens ist die Sound HW nur fast identisch und außerdem ist RK ja einer der ersten System11 und die SW der Audio-Boards wird sich ja auch im Laufe der Zeit weiter entwickelt haben.

Beim Pinbot habe ich mir damals die Sound-Logs von Lisy angeschaut und die Kommandos in den Windows PinMame eingegeben. Die meisten spielen irgendwelche Sound aber manche auch nicht und bei denen habe ich aus dem Kontext heraus versucht, auf die Funktion zu schließen.

Link to comment
Share on other sites

Am 17.1.2021 um 18:56 schrieb Black Knight:

Ja, genau aber wohl ohne Leerzeichen also "ROLLERGAMES".

Vermutlich verschluckt er das R in der Mitte, da er das als Inhalt des Credit Displays interpretiert. Bei den Displays mit Credit (wie Sys11) sind nämlich die Strobes (Stellen) 1 und 9 für das Credit Display zuständig.

Habe eine Displayroutine für SYS11C mit zwei reihen a 16 Stellen hinzugefügt: lisy_update_APC.tgz

Damit sollte der Rollergames laufen ...

Davon unabhängig werde ich morgen die restlichen Williams roms sowie die Einträge dazu nachpflegen und dann mal ein neues Release machen damit deine APC 3.0 Tester etwas zum ausprobieren haben. Die US Jungs sind ja recht aktiv?!

Gruesse

Ralf

Link to comment
Share on other sites

Am 22.1.2021 um 12:49 schrieb Black Knight:

Mit 0x63 setzt er die Musiklautstärke (Kanal 1) herunter. Dann spielt er den Sound 0x79 auf Kanal 0 und dreht die Musiklaustärke in drei Schritten wieder auf.

Hab mir den Code dazu angeschaut. Dabei sind mir zwei Dinge aufgefallen. Zum einen die PWM Lautstärkeregelung des Arduino. Diese scheint bei meinem RK den Rauschpegel hörbar anzuheben (sollte theoretisch nicht sein). Mit analoger Lautstärke (Poti) kommt der Ton klarer heraus. Zum anderen habe ich übersehen dass Du bei Sys11 Systemen eine Priorisierung/Unterscheidung von Sounds <128 machst. Kann das dazu führen dass manchmal Sounds (>128) nicht ausgespielt werden (z.b. wenn direkt danach Sounds <128 beauftragt werden? Ich habe im Debug Display manchmal Soundnummern im Musikkanal stehen die eigentlich auf der SD Karte drauf sind (0x06, 0x0A) . Und manchmal den Eindruck dass entsprechend ein Musikstück nicht gespielt wird. Hat der SD.exists Befehl einen Timeout? Oder ich einen Wackler auf der SD-Karte ?

Viele Grüße!

ps: bin immer noch unter 5 Mio :ruettler:

Link to comment
Share on other sites

vor 19 Stunden schrieb bontango:

Damit sollte der Rollergames laufen ...

Er zickt leider noch rum. Es sieht so aus, als würde Lisy im Befehl immer noch 14 Bytes ankündigen. Ein Beispiel:

Zitat

 [138.689223][0.049813] send cmd 31 to Display 1: 14 bytes of SEG14 data

row1: 0x0000 0x0000 0x0000 0x1873 0x003f 0x0038 0x0038 0x0079 0x1873 0x083d 0x0877 0x0536 0x0079 0x086d 0x0000 0x0000 
row1:    R0LLERGAME5  
row2: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 
row2:   

Ich kann jetzt den eigentlichen Befehl nicht sehen, aber

send cmd 31 to Display 1: 14 bytes of SEG14 data

heisst ja wohl Kommando 31 14 Dezimal anstatt 31 32, so dass im Display nur ROLL erscheint.

vor 19 Stunden schrieb bontango:

Die US Jungs sind ja recht aktiv?!

Ja, die drehen ziemlich auf und haben eine Sammelbestellung über 20 Boards organisiert - das wird wohl noch einiges an Support nach sich ziehen.

vor 18 Stunden schrieb mokopin:

Diese scheint bei meinem RK den Rauschpegel hörbar anzuheben (sollte theoretisch nicht sein).

Nein, das sollte nicht so sein. Hast du daran gedacht, den Stecker für's Poti 1J16 abzuziehen, wenn du die PWM Regelung einschaltest? Sonst stören die sich gegenseitig.

vor 19 Stunden schrieb mokopin:

Zum anderen habe ich übersehen dass Du bei Sys11 Systemen eine Priorisierung/Unterscheidung von Sounds <128 machst.

Wenn ich mich richtig erinnere sind Sounds >128 beim Pinbot gesampelte Sequenzen und ich möchte nicht, dass diese von irgendwelchen Geräuschen abgebrochen werden können. Die Musik sollte dadurch aber nicht beeinflusst werden, da sie auf dem 2. Kanal läuft.

Die alten Boards hatten ja verschiedene Bausteine für die unterschiedlichen Soundarten, also z.B ein Yamaha Musiksynthesizer IC, einen DAC und einen CW-Modulator. Je nachdem ob Musik, Sprache oder ein Geräusch gespielt werden sollte wurde eine andere Schaltung angesprochen und das schlägt sich beim Pinbot in den Nummern nieder.

Das kann bei RK aber alles anders sein, daher müssten wir mal einen Überblick kriegen, welche Nummern welche Art von Sound erzeugen.

Link to comment
Share on other sites

vor 1 Stunde schrieb Black Knight:

Er zickt leider noch rum. Es sieht so aus, als würde Lisy im Befehl immer noch 14 Bytes ankündigen.

Ja, man sollte auch die Länge auf 16 Zeichen (32 bytes) setzen wenn man 16 Zeichen senden will. 😐

Noch ein Versuch ... ( 5_27-15) lisy_update_APC.tgz

Link to comment
Share on other sites

vor 2 Stunden schrieb bontango:

Noch ein Versuch ... ( 5_27-15) lisy_update_APC.tgz

Jetzt sendet er 64 Bytes auf einen Haufen:

Zitat

[138.493658][0.780332] send cmd 31 to Display 1: 64 bytes of SEG14 data

row1: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0038 0x0079 0x1873 0x083d 0x0877 0x0536 0x0079 0x086d 0x0000 0x0000 
row1:       LERGAME5  
row2: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 
row2:                 
 

Fehlt da der Befehl für das zweite Display? Ich würde ja sowas erwarten wie:

Zitat

[138.493658][0.780332] send cmd 31 to Display 1: 32 bytes of SEG14 data

row1: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0038 0x0079 0x1873 0x083d 0x0877 0x0536 0x0079 0x086d 0x0000 0x0000 
row1:       LERGAME5  

send cmd 32 to Display 2: 32 bytes of SEG14 data
row2: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 
row2:

 

vor 23 Stunden schrieb bontango:

Davon unabhängig werde ich morgen die restlichen Williams roms sowie die Einträge dazu nachpflegen und dann mal ein neues Release machen

Dann setz doch bitte auch die default-Throttlewerte alle auf 120, das scheint ganz gut zu passen.

Link to comment
Share on other sites

vor 56 Minuten schrieb Black Knight:

Jetzt sendet er 64 Bytes auf einen Haufen:

erst zu wenig, jetzt zu viel, Dir kann man es aber auch nicht recht machen 😁😉

Hatte die Längenberechnung über 'sizeof' gemacht aber nicht bedacht dass die Elemente UINT16 sind, deshalb kam das doppelte von dem raus was ich wollte (Anzahl der Elemente)

update ist upgedated, versuch bitte nochmal

Link to comment
Share on other sites

vor 12 Minuten schrieb bontango:

erst zu wenig, jetzt zu viel, Dir kann man es aber auch nicht recht machen 😁😉

Ich will dich doch nur ein bisschen auf Trab halten.:schaem:

Die goldene Mitte hat's mal wieder gebracht, aber ich habe natürlich trotzdem noch was zu meckern.🤪

Es sieht so aus, als würden bei Display 2 immer 8 Nullbytes eingefügt. Lisy zeigt das im Debug-Log auch entsprechend an:

Zitat

 [153.168167][0.058229] send cmd 31 to Display 1: 32 bytes of SEG14 data
[153.168228][0.000061] send cmd 32 to Display 2: 32 bytes of SEG14 data

row1: 0x0866 0x0866 0x0866 0x0866 0x0866 0x0866 0x0866 0x0866 0x0866 0x0866 0x0866 0x0866 0x0866 0x0866 0x0866 0x0866 
row1: 4444444444444444
row2: 0x0000 0x0000 0x0000 0x0000 0x0866 0x0866 0x0866 0x0866 0x0866 0x0866 0x0866 0x0866 0x0866 0x0866 0x0866 0x0866 
row2:     444444444444

Dadurch sind die ersten 4 Stellen im unteren Display immer leer. Das Beispiel ist aus dem Display-Test,  bei dem beide Zeilen durchgehend Vieren anzeigen sollten.

Ansonsten scheint es jetzt zu passen.

Link to comment
Share on other sites

So leicht wirst du mich nicht los. Jetzt scheinen wir wieder das 64 Byte Problem zu haben:

Zitat

 [139.821059][0.121108] send cmd 32 to Display 2: 64 bytes of SEG14 data

row1: 0x0000 0x0000 0x0000 0x0039 0x1873 0x0079 0x220f 0x2209 0x2201 0x086d 0x0000 0x0000 0x0006 0x0000 0x0000 0x0000 
row1:    CREDIT5  1   
row2: 0x0000 0x0000 0x0000 0x0873 0x1873 0x0079 0x086d 0x086d 0x0000 0x086d 0x2201 0x0877 0x1873 0x2201 0x0000 0x0000 
row2:    PRE55 5TART 

 

Link to comment
Share on other sites

Eine Sache gibt's bei System11C doch noch:

Irgendwann Ende Sys11B hat Williams aufgehört die Special Solenoids über Logik und extra Schalter zu steuern. Daher funktionieren unsere festen HW-Rules mit den Spulen 17 bis 22 und den Schaltern 65 bis 70 bei diesen Geräten nicht mehr.  
Stattdessen machen sie das gleiche wie wir und steuern diese Spulen über die CPU. Der Nachteil für uns ist, dass wir die HW-Rules für jedes 11C Gerät individuell definieren müssen.

Für den Rollergames wären das z.B. folgende Regeln:

- Schalter 35 steuert Spule 17  
- Schalter 36 steuert Spule 19  
- Schalter 37 steuert Spule 21  
- Schalter 33 steuert Spule 15  
- Schalter 34 steuert Spule 16  

Wegen der Punktezählung etc. müssten die Schalter trotzdem noch an PinMame gemeldet werden, aber die Aktivierung der entsprechenden Spulen durch PinMame müsste unterdrückt werden, da das ja dann die HW-Rule im APC macht.

Ist das für dich OK wenn wir diese Funktionalität in Lisy integrieren? Da die HW-Rules von Lisy geschrieben werden, müssten wir da ohnehin eine Tabelle der individuellen Rules einbauen und dann macht es vermutlich Sinn wenn Lisy auch gleich die entsprechenden Spulenkommandos unterdrückt, oder?

Link to comment
Share on other sites

vor 21 Stunden schrieb Black Knight:

Ist das für dich OK wenn wir diese Funktionalität in Lisy integrieren?

Im Moment setzte ich die HW Rules fuer Schalter 65-70 default für alle Williams. Kommen die sich denn mit anderen Funktionen ins Gehege? Falls nicht, brauchen wir denn da eine Zusatzfunktion? Die Punktezählung aund Spulenauslösung für dei aufgeführten Schalter sollte ja ganz normal über pinmame laufen, wie bei den anderen Spulen auch?!

Link to comment
Share on other sites

vor 8 Stunden schrieb bontango:

Die Punktezählung aund Spulenauslösung für dei aufgeführten Schalter sollte ja ganz normal über pinmame laufen, wie bei den anderen Spulen auch?!

Ja, im Prinzip läuft alles, aber unsere HW-Rules laufen ins Leere.  
Beim Rollergames existieren die Schalter 65-70 nicht mehr, stattdessen werden Bumper und Slingshots über normale Spielfeldschalter gesteuert (beim Rollergames 33-37). Dadurch geht das alles über PinMame und lässt daher zur Zeit etwas Spieldynamik vermissen.

Um das zu ändern müsste man eine Tabelle anlegen, in der die betroffenen Geräte vermerkt sind (ich schätze die Zahl auf 15 bis 20) und die neuen Schalter-Spulen Kombinationen für jedes dieser Geräte festgelegt sind. Alle anderen Geräte laufen mit den Standardregeln, wie wir sie jetzt haben.

Link to comment
Share on other sites

vor 33 Minuten schrieb Black Knight:

und lässt daher zur Zeit etwas Spieldynamik vermissen.

Ah OK, wenn es zu Verzögerungen kommt ...

Ich würde dann wie schon bei anderen Configfiles ein Verzeichnis anlegen und dort eine default

config ( alte HW rules) plus nach Bedarf pro Game nach dem Muster <config-nr>_hw_rules

spezielle configs die den default übersteuern.

Was hältst Du davon?

 

Kann ich bei der Programmierung davon ausgehen dass die Spulen NUR über diese Schalter ausgelöst werden? Würde mir die Sache einfacher machen, dann würde ich bei aktiver HW Rule Aktivierungen für diese Spulen generell ignorieren.

Link to comment
Share on other sites

vor 18 Minuten schrieb bontango:

Was hältst Du davon?

Klingt gut, dann können wir diese Configs ja nach und nach mit Leben füllen, d.h. ich muss mir die ganzen Handbücher mal reinziehen und die HW-Rules raus lesen.🤢

vor 21 Minuten schrieb bontango:

Kann ich bei der Programmierung davon ausgehen dass die Spulen NUR über diese Schalter ausgelöst werden? Würde mir die Sache einfacher machen, dann würde ich bei aktiver HW Rule Aktivierungen für diese Spulen generell ignorieren.

Ja, davon würde ich ausgehen. Bis jetzt ist mir zumindest kein Gerät bekannt, bei dem das nicht zutreffen würde. Wir müssen nur auf mehr als 6 Regeln vorbereitet sein, denn der Whirlwind hat z.B. 6 Bumper und zwei Slingshots - macht 8 HW-Rules.

Link to comment
Share on other sites

Erste Testversion verfügbar:  5.27-22

lisy_update_APC.tgz

( Das update über LISY_control timed übrigens aus, update klappt aber, da bin ich dran )

Für den Rollergames hab ich ne Beispieldatei gemacht: /lisy/lisy_m/coils/067_APC_hw_rules.csv

die sollte also nach update direkt 'ziehen'

Erste Doku: rephrasing and/or corrections welcome!

1.1. Hardware rules for solenoids with APC

To speed up game reaction Williams has introduced ‘special solenoids’. These solenoids are not triggered via the MPU but controlled directly with hardware. With APC this can be ‘emulated’ with hardware rules. These hardware rules are triggered directly in the Arduino of the APC without any interaction to LISY/pinmame. By default these are the special solenoids 17 … 22 controlled by the special switches 65 … 70.

Later < end of SYS11B insert game here> they went back to the MPU controlled method (cost cutting?). If you experience delay with some solenoids in these games you can speed up reaction time by defining your own hardware rules per game.

The config files are on the SD card in the folder /lisy/lisy_m/coils. Hardware rules can be defined via the file ‘<NNN>_APC_hw_rules.csv ‘ for a Williams game with NNN as the internal number according to appendix E for APC. Just put the solenoid number followed by the controlling switch line per line.

If a config file for the running game is found, the hardware rules from this file will be set, otherwise LISY will set the default HW rules.


Link to comment
Share on other sites

vor 3 Stunden schrieb bontango:

die sollte also nach update direkt 'ziehen'

Jawohl, das klappt.

vor 3 Stunden schrieb bontango:

Erste Doku: rephrasing and/or corrections welcome!

Gefällt mir. Soll ich den Abschnitt auch auf meine PinMame Howto Seite packen? Da versuche ich ja zu beschreiben, wie man ein Spiel ans laufen bringen kann und das gehört ja irgendwie dazu.

Den Link von Snux sollten wir auch noch einfügen.

vor 2 Stunden schrieb Snux:

In the "Notes" column here you can see which used special solenoid switches and which did not.

Es war mir nicht bewusst, dass Williams eine Zeit lang mal dies und mal das benutzt hat. Ich dachte, es gäbe da eine feste Grenze.

Link to comment
Share on other sites

vor 11 Stunden schrieb Black Knight:

Jawohl, das klappt.

Prima 🙂 merkt man denn sofort einen Unterschied im 'Ansprechverhalten'?

 

vor 11 Stunden schrieb Black Knight:

Gefällt mir. Soll ich den Abschnitt auch auf meine PinMame Howto Seite packen? Da versuche ich ja zu beschreiben, wie man ein Spiel ans laufen bringen kann und das gehört ja irgendwie dazu.

Ja, gehört dazu. Ist aber noch die Beschreibung APC 2.x/LISY Mini ?!

Edit:

Da sollte dann auch deine Liste mit supported games rein, die ist glaub ich derzeit 'woanders'?

( btw: System6 bin ich grad dran )

Edited by bontango
Link to comment
Share on other sites

vor 9 Stunden schrieb bontango:

Ist aber noch die Beschreibung APC 2.x/LISY Mini ?

Die Seite gilt für beides.

vor 9 Stunden schrieb bontango:

Da sollte dann auch deine Liste mit supported games rein, die ist glaub ich derzeit 'woanders'

Die ist ganz oben verlinkt, aber das sieht man kaum. Vielleicht sollte ich den Link noch etwas hervorheben, aber er ist auch nochmal in den Documentation Contents unten auf der Hauptseite drin.

Ich muss die Tabelle aber auch nochmal updaten; da stehen noch einige place_ho drin.

vor 9 Stunden schrieb bontango:

Prima 🙂 merkt man denn sofort einen Unterschied im 'Ansprechverhalten'?

Spritzig ist er immer noch nicht, aber das liegt wohl daran, dass die Kiste noch im Aufbau ist. Bröselnde Gummis und verstellte Kontakte steigern den Spielfluss jetzt auch nicht wirklich.

Was macht eigentlich dein Comet, hast du den schon richtig am Laufen?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share


×
×
  • Create New...

Important Information

Privacy Policy and Community Guidelines