Zum Inhalt springen

Arduino Pinball Controller


Black Knight

Empfohlene Beiträge

vor 24 Minuten schrieb Black Knight:

Soll ich die play sound 01_0x6X.BIN Befehle mal einfach ignorieren und sehen, ob die Musik dann läuft?

Würde ich vorschlagen, wenn es daran liegt kann ich die dann (evtl. inkl. der 0x55, 0xaa ?) auch auf meiner Seite rausfiltern

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

Das macht es nicht wirklich viel besser, aber einiges klarer.

Es scheint ein Kommando zu geben, das die Musikausgabe für eine gewisse Zeit stumm schaltet, denn jetzt spielt er teilweise in die Soundeffekte rein.

Wir werden das wohl mal in den diversen Foren nachfragen müssen; irgendjemand wird ja wohl wissen was es da an Kommandos gibt. Ich wüsste allerdings momentan gar nicht genau wonach ich fragen sollte. Was genau fängst du denn da ab, sind das einfach nur die Werte, die die CPU an das Musikboard schickt?

Bearbeitet von Black Knight
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Stunden schrieb Black Knight:

Was genau fängst du denn da ab, sind das einfach nur die Werte, die die CPU an das Musikboard schickt?

Genau, ich reich das stumpf durch.

Hast du da ne Reihenfolge der Codes die am Anfang gesendet werden (also nach dem 0x01 was wie ich

verstanden habe die Anfangsmelodie ist)?

Ich nehme an die reaktion auf die 0x6x code ist abhängig vom aktuell laufenden Sound, das könnte ich dann versuchen in Windows pinmame nachzustellen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nach 0x01 kommen 0x63, 0x62, 0x61, 0x60, er zählt die 60er also regelrecht runter.

Leider sind es aber nicht nur die 0x60er, sondern da scheinen jede Menge Kommandos bei zu sein.

Die PinMame Jungs müssen das ja wissen. Hat da jemand einen Kontakt oder wenigstens einen Tipp wo man fragen kann, VPforums z.B.?

Bearbeitet von Black Knight
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja , hab schon ein paar mal mit Toxie Kontakt gehabt, aber Fragen nach Systeminterna sind nicht

unbedingt das Spezialgebiet des typischen pinmame coders ... da werden wir, zumal die Codes

ja auch noch intern geschickt werden, auf eigene Tests angewiesen sein

Ich hatte vor ein paar Tagen auch mal auf pinside eine ähnliche Frage zum Gottlieb Soundoard gestellt, stil ruht der See ...

https://pinside.com/pinball/forum/topic/gottlieb-system80b-soundboard-extended-sound-set

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn PinMame ganz normal auf dem PC läuft, dann werden (wie ich kürzlich hier gelernt habe) die Soundkommandos doch an eine PC Software geschickt, die daraufhin das richtige Soundfile abspielt. D.h. die Entwickler dieser PC Software müssen ja wissen, was die verschiedenen Soundkommandos bedeuten.

Die Frage ist also wie man an diese Leute ran kommt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Oder noch anders: für diese PC Software (hab den Namen leider vergessen) muss es doch auch eine API-Beschreibung geben, ähnlich wie unsere Lisy 0.09. Es würde ja möglicherweise schon reichen, wenn man die API kennen würde.

Wo ist denn die DEV Seite dieser SW?

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Stunden schrieb Black Knight:

dann werden (wie ich kürzlich hier gelernt habe) die Soundkommandos doch an eine PC Software geschick

Bin da jetzt verwirrt, welche PC Software meinst Du?

Pinmame emuliert ja die komplette Hardwareumgebung, die nehmen 'einfach' die Komponenten und das Rom

und verbinden das miteinander, d.h. die internen Zusammenhänge des Programms muessen die gar nicht kennen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Stunden schrieb mk47:

Da sind doch auch Beiträge von Dir dabei, oder?

Kann mich jetzt nicht direkt an das thema erinnern 🤔 , welchen Beitrag meinst Du?

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 47 Minuten schrieb bontango:

Kann mich jetzt nicht direkt an das thema erinnern 🤔 , welchen Beitrag meinst Du?

Freezy arbeitet an einer moderneren Virtual Pinball Engine für die graphische Darstellung. Mit VPinMAME zur Emulation war er nicht glücklich, da wohl DirectX benutzt wird und seine Engine auf Unity3d aufbaut (meine Interpretation). Ich hatte dann darauf hingewiesen, das bei LISY PinMAME unter Linux läuft.

Da dachte ich, Du hast ja auch Code zu PinMAME beigetragen, zuletzt vor 8 Monaten. Aber es gibt wohl noch neuere Commits zur Plattformunabhängigkeit.
Wenn LISY dementsprechend demnächst Displays und DMDs aus VPinMAME über HDMI ausgeben könnte, wäre das natürlich ein Traum!

Bearbeitet von mk47
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich meine dieses Pinsound Studio von dem hier mal die Rede war.

Wenn ich das richtig verstanden habe, dann kann der PinMame die Soundkommandos doch direkt an dieses Programm schicken (zumindest unter Windows). Da muss es also eine Art API geben.

Bearbeitet von Black Knight
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, pinsound studio , da habe ich mal in den sourcen gesucht aber den Einsprungpunkt in pinmame nicht gefunden,

stimmt das wäre ein Ansatzpunkt wo die pinmame Jungs helfen könnten 👍

Link zu diesem Kommentar
Auf anderen Seiten teilen

Habe die Frage gerade mal auf Pinside geposted.

Ich hoffe, meine Zusammenfassung des Problems war halbwegs treffend.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich kann ein bisschen helfen, aber es ist Sonntag.... also auf Englisch :)

Some of the code here might help.... it should explain the 0x55 and 0xAA plus some other things.  Seems like some "commands" are multi-byte, some are single byte.

https://github.com/vpinball/pinmame/blob/master/src/wpc/snd_alt.h#L614

This is the code that allows to handle sound via some external processing, and some of the comments might be useful.

From some testing with Pinsound Studio and BOP 2.0 (I look after the special BOP 2.0 pinmame build) we determined that command 0x00 means "stop all sound" in case that is useful.

This might be a little useful too....

https://www.vpforums.org/index.php?showtopic=30722

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

OK, das ist doch schon mal ein Anfang. Die erste Aufgabe dürfte jetzt sein herauszufinden, was davon auch für System11 Audioboards gilt.

Vielen Dank für die Hilfe.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das dürfte das hier sein           

 if ((core_gameData->gen == GEN_WPCALPHA_1) || // remaps everything to 16bit, a bit stupid maybe //!! test all these generations!
                (core_gameData->gen == GEN_S11) ||
                (core_gameData->gen == GEN_S11X) ||
                (core_gameData->gen == GEN_S11B2) ||
                (core_gameData->gen == GEN_S11C))
            {
                if (cmd != cmd_buffer[1]) //!! some stuff is doubled or tripled -> filter out?
                {
                    cmd_storage = 0; // 8 bit command //!! 7F & 7E opcodes?
                    cmd_counter = 0;
                }
                else // ignore
                    cmd_counter = 1;
            }

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

13 hours ago, Lucky1 said:

Das dürfte das hier sein

Ja, das sieht ganz gut aus. Wenn ich das richtig verstehe gilt das aber nur in Verbindung mit alt_sound, denn es steht ja in

void alt_sound_handle(int boardNo, int cmd)

Für alle anderen:

Die von Lucky1 zitierte Passage befindet sich in PinMame snd_alt.h

Dieser Programmteil scheint aber nur in einem speziellen Alt_Sounds Modus zum Einsatz zu kommen, denn in PinMame snd_cmd.c findet sich folgendes:

/*----------------------------------------*/
/*-- clean up manual sound command data --*/
/*----------------------------------------*/

void snd_cmd_exit(void) {
  clrCmds();
  wave_exit();

#ifdef VPINMAME_ALTSOUND
  if (options.samplerate != 0 && pmoptions.sound_mode == 1)
    alt_sound_exit();
#endif

#ifdef VPINMAME_PINSOUND
  if (options.samplerate != 0 && (pmoptions.sound_mode == 2 || pmoptions.sound_mode == 3))
    pinsound_exit();
#endif
}
#ifdef VPINMAME_PINSOUND

Sollten wir vielleicht diesen ALTSOUND Modus einschalten?

Dieses snd_cmd.c scheint aber der Schlüssel zu sein. Ich habe mal danach gesucht, wo die Sound Kommandos interpretiert werden und folgendes gefunden:

static void readCmds(int boardNo, const char *head) {
  mame_file *f = mame_fopen(NULL, "sounds.dat", FILETYPE_HIGHSCORE_DB, 0);
  int getData = 0;

  if (f) {
    char buffer[MAX_LINE_LENGTH];
    while (mame_fgets(buffer, MAX_LINE_LENGTH, f)) {
      /* LOG(("line=%s",buffer)); */
      if (buffer[0] == ':') {
        if (getData) {
          struct cmds tmpCmd;
          char *tmp = &buffer[1];
          int   cmd = 0;

          /*-- fetch commands --*/
          tmpCmd.length = 0;

Und im File sounds.dat findet sich dann:

; Common for all pre-DCS games.
; Additions made 01/21/01 by Dorsola (dorsola@descent2.com)
; -------------
; Tech notes re CVSD playback: It appears that CVSD samples are
; affected by tempo/playback speed parameters, which are typically
; set automatically by playing a music command.
; -------------
wpcs:
:00:Reset Sound System
:1e:Decrease Music Tempo
:1f:Increase Music Tempo
:20:Set DAC (drums) volume to 15
:21:Set DAC (drums) volume to 14
:22:Set DAC (drums) volume to 13
:23:Set DAC (drums) volume to 12
:24:Set DAC (drums) volume to 11
:25:Set DAC (drums) volume to 10
:26:Set DAC (drums) volume to 9
:27:Set DAC (drums) volume to 8
:28:Set DAC (drums) volume to 7
:29:Set DAC (drums) volume to 6
:2a:Set DAC (drums) volume to 5
:2b:Set DAC (drums) volume to 4
:2c:Set DAC (drums) volume to 3
:2d:Set DAC (drums) volume to 2
:2e:Set DAC (drums) volume to 1
:2f:Set DAC (drums) volume to 0
:50:FM: Menu Select A
:51:FM: Menu Select B
:52:FM: System Warning Beep
:53:FM: Menu Op Completed
:54:FM: System Attention Beep
:55:FM: Menu Select C
:56:FM: Menu Select D
:57:FM: Menu Enter
:58:FM: Menu Cancel/Clear
:59:FM: System Sweep
:60:Set FM (Music) volume to 18
:61:Set FM (Music) volume to 17
:62:Set FM (Music) volume to 16
:63:Set FM (Music) volume to 15
:64:Set FM (Music) volume to 14
:65:Set FM (Music) volume to 13
:66:Set FM (Music) volume to 12
:67:Set FM (Music) volume to 11
:68:Set FM (Music) volume to 10
:69:Set FM (Music) volume to 9
:6a:Set FM (Music) volume to 8
:6b:Set FM (Music) volume to 7
:6c:Set FM (Music) volume to 6
:6d:Set FM (Music) volume to 5
:6e:Set FM (Music) volume to 4
:6f:Set FM (Music) volume to 3
:70:Set FM (Music) volume to 2
:71:Set FM (Music) volume to 1
:72:Set FM (Music) volume to 0

Ich bin mir noch nicht so ganz sicher, ob das auch wirklich für System11 gilt, aber einige von diesen Codes kommen mir schon bekannt vor.

Ich bin jetzt erst mal in den Garten abkommandiert, aber vielleicht findet ihr ja noch irgendwas raus.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@bontango Angesichts der Fülle an Soundkommandos, die es ja offensichtlich gibt, schlage ich vor den Lisy-Befehl 0x32 (Play Sound) anstelle von 0x34 (Play Sound File) für PinMame  zu verwenden. Ich würde das dann folgendermaßen realisieren:

Wenn die Soundnummer einem bekannten Soundkommando gemäß PinMame bzw. FreeWPC Code entspricht dann führe ich das aus - soweit möglich. Ist es kein Kommando schaue ich ob es eine Datei namens Kanal_Soundnummer.snd gibt und spiele sie ggfs. ab. Wurde keine entsprechende Datei gefunden, dann ignoriere ich das Kommando einfach. Wenn der Debug-Modus aktiv ist kann ich seine Nummer ja im Crédit Display anzeigen, damit man weiß, das da noch irgendwas fehlt.

Was hältst du davon? Ist für dich ja eigentlich bequem; du musst nur die Nummer durchreichen und der Rest bleibt an mir hängen. 🤢

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 3 Minuten schrieb Black Knight:

Ist für dich ja eigentlich bequem; du musst nur die Nummer durchreichen

find ich gut 😀 zumal da ich momentan mal wieder abgelenkt werde (FPGA) 🙄

aber das kann ich morgen reinbringen und Dir ein update schicken

Link zu diesem Kommentar
Auf anderen Seiten teilen

14 minutes ago, bontango said:

zumal da ich momentan mal wieder abgelenkt werde (FPGA)

Was wir gerade für Williams machen, geht bestimmt auch für Gottlieb.

Ich will damit sagen, dass ein FPGA zwar nett aber letztendlich nur ein Nachbau des Alten ist. Ist die Möglichkeit, die Sounds auf SD-Karte zu haben und dadurch auch einfach austauschen zu können nicht noch eine Ecke cooler?

Bearbeitet von Black Knight
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