Tandy Soundboard - SN76489 Audio Card / aka Tandy 3 Voice Sound

  • 100% sind nicht erreichbar, wenn niemand einen Tandy Grafikadapter in FPGA implentiert.

    Ich kann das leider nicht :)


    Kaufen ? hoffentlich bald bei Serdaco.

    Es hängt wirklich nur noch an den Slot Blechen im Moment.

    Es gibt eine Firma in DE die diese herstellen kann.

    совок

  • Sehr cool.


    Scali hatte doch auch mal Skate or Die gepatched- ist dieser patch eigentlich öffentlich?

    Und könnte man nicht den Alley Cat patch von New Rising Sun so ändern, dass dieser nur Tandy-Sound enabled und die CGA Grafik beibehält?

  • Treiber Probleme fast ausgeschlossen, dank Dragonsphere ist die Kompatibilität jetzt stark erhöht!


    Bisher getestet:


    - Ultima 6

    - Stunts


    Testing Release ( Only Tandy Card @ 2C0, note this is Testing VERSION only!)

    command:

    tndy C0-C7 2C0 nosb tandy


    TNDY094-2.zip


    Bitte probiert es aus und berichtet!


    TNDLPT ist damit leider noch nicht funktional.

  • Super, dass mein kleines TSR jetzt auch mit diesen Spielen funkioniert :)

    Anscheinend können beim Tandy die IO Ports C0h und C1h genutzt werden, um Daten an den Soundchip zu senden.


    Etwas technischer Hintergrund für alle Interessierten:

    Der Chip (TI SN76496 oder ein kompatibler) hat ein 8 Bit breites interface, kann also immer nur ein Byte auf einmal verarbeiten.

    Um einen Ton zu spielen, müssen aber mehrere Bytes übertragen werden: Zuerst ein Byte mit Angabe des Channels und den ersten vier Bits der gewünschten Frequenz senden, dann ein Byte mit den restlichen Bits der Frequenz. Als drittes dann noch ein Byte bestehend aus Channel und Lautstärke.

    Es funktioniert gut, dass alles hintereinander an denselben Port zu schreiben, daher nutzen viele Spiele nur C0h

    Einige Spiele, Stunts zum Beispiel, schreiben das erste und das dritte Byte (die "Command bytes", die auch eine Angabe des Channels enthalten) an Port C0h und das zweite Byte, als reines Datenbyte, an C1h.


    Wird nur C0h auf einen anderen Port umgeleitet, fehlt hier also das zweite Byte. Das war bisher das Problem und darum funktionierte das TSR mit diesen Spielen nicht.

    Bisher hatte ich versucht, alle Zugriffe auf die Ports C0-C7 auf den einen angegebenen Port umzuleiten. Da scheint es dann aber Überschneidungen zu geben....

    Jetzt wird C0 z.b. auf 2C0 umgeleitet, C1 auf 2C1 usw.

    Das klappt aber natürlich nicht beim LPT, denn da gibt es ja nur einen Port für den Soundchip.

    Meine DOS-Rechner:

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR 24 und SB 16 ( CT2770 ) + TNDY

    "Frankenstein" Pentium II mit 266 MHz, Elsa Winner 1000 TrioV + Voodoo I, SB 16 (CT2290) + Yamaha DB50XG


    Von mir geschriebene DOS-Programme gibt es hier.

  • Sehr cool! Hast Du schon eine Idee, wie man das mit LPT machen könnte? Ich bin da leider total unwissend, aber die Daten zu puffern wäre keine Lösung? Auch ein Frage, die Du vielleicht beantworten kannst, warum schreiben einige Spiele die Daten getrennt von Befehlen und einige nicht? Welche Vor-/Nachteile gibt es Deiner Meinung nach?

  • Mich wundert etwas, dass es bisher nicht funktioniert hat bzw. bei LPT nicht funktioniert, denn die Spiele, die nur auf C0h schreiben, funktionieren ja auch.

    Wahrscheinlich würde eine kurze Wartezeit zwischen den Portzugriffen schon reichen, aber leider ist Musik ja nun mal sehr sensibel beim Timing :)


    Ich vermute, dass die Daten über zwei I/O Ports schneller geschrieben werden können, ohne das der Chip sich dabei verschluckt.

    Ist nur eine Vermutung, aber dazu passt auch, dass die Spiele, die auch Port C1h nutzen (Stunts, Day of the Viper, PGA Tour Golf...) alle von 1989/1990 und schon auf deutlich flottere CPUs ausgelegt sind, als z.B. Silpheed oder Sierra Adventures, die nur C0h verwenden.

    Das Daten und Befehle getrennt voneinander geschrieben werden liegt wohl nur daran, dass die Daten das zweite Byte sind. Ich habe es ausprobiert und man könnte genau so gut das erte Byte in C1h und das zweite in C0h schreiben, funktioniert auch. Aber das erste Byte in C0h und das zweite C1h zu schreiben ist natürlich logischer.

    Meine DOS-Rechner:

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR 24 und SB 16 ( CT2770 ) + TNDY

    "Frankenstein" Pentium II mit 266 MHz, Elsa Winner 1000 TrioV + Voodoo I, SB 16 (CT2290) + Yamaha DB50XG


    Von mir geschriebene DOS-Programme gibt es hier.

  • So,


    DMA/LBA Cache sollte man mit dem Treiber noch meiden.


    Und alles was DMA 5 nutzt würfelt da was durcheinander.


    Aber es wird :D

  • Demnächst gehts hier mit paar Verbesserungen weiter,


    - PC-Speaker Eingang hat nun Verstärker

    - Schaltung ohne MCU (Nur 74 Logik)

    - Playback Slowdowns mit manchen Systemen behoben. (Sehr selten)

  • EMM386 geht, aber dazu müsste man die Änderungen vom TNDLPT Treiber zurückportieren in den Lo-Tech Treiber.


    EMM386 erlaubt es normal nicht Ports die auf einen AT ohnehin belegt sind zu nutzen, wie 0C0h eben.

    Das Problem wurde von Peter De Waechter schon vor einer Weile gelöst.

    Und jetzt ist der Treiber auch mit EMM386 Karten lauffähig.


    Viel Spaß!


    Nach meinen Umzug wird es auch eine neue HW Revision geben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!