Categories
PIAMon

PIAMon WPC?

Beim Projekt PIAMon geht es darum, die gesamten Status der Elektronik eines Flippers auszulesen (d.h. nicht der interne Status der Software, sondern nur Schalter und Lampen). Das bisherige Konzept sieht vor, direkt am CPU-Bus anzudocken. Das funktioniert bei System11/Data East/Sega gut, da hier die CPU direkt die Hardware steuert. Bei WPC-Geräten funktioniert das allerdings etwas anders. Hier wurden viele Aufgaben an einen ASIC ausgelagert

Allerdings kann man den ASIC auch wie einen grossen PIO betrachten, der auf verschiedenen Adressen verschieden Hardware steuert. Die Adressen hierzu sind glücklicherweise gut dokumentiert.

Noch etwas komplizierter wird es allerdings mit WPC-S und WPC-95-Systemen. Während bei WPC ein direkter Zugriff auf die Register des ASICs einfach möglich ist, wird bei WPC-S/WPC-95 noch eine zusätzliche Verschlüsselung eingesetzt. Das macht das ganze leider etwas komplexer. Daher ist eher fraglich, ob es sinnvoll ist, PIAMon für diese System anzupassen.

Categories
PIAMon

Data East PIA Adressen

Für ein kommendes Projekt möchte ich die Daten der Lampen-Matrix von einem Sega Pinball (Baywatch) abgreifen. Die frühen Sega-Maschinen benutzen noch die Data East-Boards, die eng verwand mit System 11 sind. Hier sind CPU und Treiberstufe auf einem gemeinsamen Board vereint, was es etwas schwieriger macht, die Daten abzugreifen. Natürlich ist es möglich, die Lampenmatrix direkt abzugreifen, aber eine einfacherer Lösung könnte es sein, direkt den Address- und Datenbus der CPU abzugreifen. Dazu muss man wissen, dass das Board diverse PIAs nutzt, die über unterschiedliche Adressen angesprochen werden.
Der Adressdekoder auf dem CPU-Board sieht so aus:

Man kann jetzt die ganzen Gatter durchgehen um die Schaltung zu verstehen. Alternativ sind aber auf der rechten Seite die Adressen zu finden.

Jetzt muss man diese nur nachverfolgen und kommt auf folgende Zuordnungen:

2100 Spulentreiber (CN12)
2200 Spulentreiber (CN11)
2400 11D: Lampenmatrix
2800 11B: 7-Segment-Treiber (CN2/CN3)
2C00 9B: Alphanumeric DMD (CN22)
3000 8H: Switches (CN 8, CN10)
3400 7B: Alphanumeric DMD, Sound (CN22, CN21)

Interessant ist es zu sehen, dass die Spulen teilweise über einen PIA (CN12), teilweise über einen reines Flipflop (CN11) angesteuert werden. Warum das so ist, ist mir momentan noch nicht klar.

Damit ist sollte es recht einfach sein, durch “Lauschen” auf dem Bus, sowohl den Status der Lampen als auch der Spulen zu erkennen.

Categories
PIAMon Projekte

Projekt PIAMon

Für ein Flipper-Custom-Projekt benötig ich den aktuellen Status der Lampen und Flasher eines System-11-Gerätes. Im Prinzip gibt es hierzu bereits Open Source Projekte wie AfterGlow und Pinduino. Da diese aber keinen Zugriff auf die Daten von “aussen” ermöglichen müsste das ganze nochmals angepasst werden. Weiterhin ist das ganze recht umständlich, da man hier keine 3.3V oder 5V-Signale hat, sondern 6.3V und 28V. Insgesamt hat man also recht viel Hardware-Aufwand für eine recht einfach Aufgabe.
Daher will ich hier einen anderen Ansatz umsetzen. Die Daten werden direkt von der CPU abgegriffen. Die System11/Data East MPU macht das ganze recht einfach: Sämtliche I/Os werden über PIOs realisiert (Ausnahme ist der onboard-Sound, der einen eigenen 6802-Prozessor nutzt). Die Adressen der PIAs sind im Schaltplan einfach zu finden.

Daher sieht das Konzept im Moment so aus: Die Daten werden direkt vom Adress- und Datenbus der CPU abgegriffen. Zugriffe aus die IO-Chips werden überwacht und der Status der I/Os lokal gespeichert. Für die Kommunikation nach aussen dient RS485. Der Nachteil dieser Lösung ist ein Adapterboard zwischen Mainboard und CPU. Im finalen Design sollte das aber in SMD ausgeführt werden und dann sehr klein ausfallen. Der Prototyp wird noch in klassischer DIP-Technik gebaut, da dann kleine Anpassungen einfacher möglich sind und die Boards auch noch schnell von Hand gelötet werden können.

Als Prozessor wird ein RP2040 genutzt. Dieser Microcontroller hat nicht nur mehr als genug Leistung, sondern bietet mit dem programmierbaren IO die Möglichkeit, die Überwachung der Datenbusse komplett unabhängig vom Hauptprozessor zu erledigen. Das ist für eine CPU, die nur mit 1MHz läuft eigentlich etwas übertrieben, aber ab und an ist es ja auch ganz gut, mal etwas neues zu lernen.

Das ganze bietet dann Zugriff auf folgende Daten:

  • Vollständiger Zustand aller Lampen, Flasher, Spulen und Schalter
  • DMD-Daten und alphanumerische Displays
  • Sound-Ereignisse

Damit lassen sich prinzipiell diverse Anwendungen realisieren:

  • Interaktive Beleuchtungen
  • Shaker-Ansteuerung
  • Sound-Boards
  • Video-Player
  • und vieles andere mehr

Wer das Projekt begleiten will: Die Daten sind auf Github zu finden.