Hallo Besucher, der Thread wurde 11k mal aufgerufen und enthält 78 Antworten

letzter Beitrag von SID-Bastler am

Projekt: Hardware .SID Player

  • Hi,
    schon vor einer ganzen Weile hab ich mich hier im Forum Registriert.
    Da das schon so lange her ist, stell ich mich einfach nochmal vor:
    Ich lebe in Baden Württemberg, bin 16 Jahre alt, Schüler und interessiere mich für alles was mit "alter" Technik zu tun hat:
    Das geht von Röhrenfernsehern der 50er bis hin zur C64 ära.
    Nun habe ich folgendes Projekt:
    Ein komplett eigenständiger Player, der .SID Dateien von einer SD Karte auf einem echten 6581/8580 SID abspielen kann.



    Zum Aufbau:
    Der gesamte Player ist in zwei Einheiten Aufgeteilt: Der SD-Controller und der Player.
    Als erstes zum SD-Controller:
    1. 4x20 Zeichen Text-LCD: zur Anzeige eines Dateimanagers, Statusinformationen usw.
    2. ATmega 1284: Liest die SD Karte und sendet Daten an den Player.
    3. Tastenfeld zur Bedienung


    Als nächstes der Player:
    1. 128K SRAM (64K genutzt) + 6510 CPU + 6581 SID
    2. ATmega16: Empfängt die Daten vom SD-Controller und schreibt diese, unter Zuhilfenahme zweier Schieberegister vom Typ 74HC 595 in den RAM.
    3. Ein Adress-Dekoder, der automatisch das /CS Signal des SID auf Low legt, sobald der 6510 auf den entsprechenden Speicherbereich zugreift.


    Soviel funktioniert bisher Problemlos:
    - LCD+ Tastenfeld
    - Lesen eines SID-Files von der SD Karte und Anhängen einer Startroutine.
    - Lesen des .SID-Headers (Init, Play, Titel usw.)
    - Übertragen des SID-Files in den RAM
    - Adress-Dekoder
    - Ein Testprogramm auf dem 6510 (Irgendwelche Werte in die Register) hat den SID zum "Töne" erzeugen gebracht.


    Nun besteht aktuell folgendes Problem:
    Nach dem ich eine "echte" SID-Datei in den RAM geschrieben hab, und am IRQ Pin ein 50Hz Signal anlege, kommt tatsächlich etwas, das sich stark nach dem gewählten SID-file anhört. Das läuft allerdings nur ca. 0,2-0,3 Sekunden.
    Dann passiert nichts mehr.
    Mit dem Oszilloskop, konnte ich feststellen, das der 6510 nach diesem Augenblick alle Adress-Leitungen auf High setzt.


    An dieser Adresse liegt ja das High-Byte des IRQ Vektors.
    Kann sich jemand dieses Verhalten erklären?


    Interessant ist zu wissen, dass meine Startroutine in einer Endlosschleife endet:

    Code
    1. loop
    2. jmp loop


    Als ich kein IRQ Signal anlegte, konnte ich mit dem Oszilloskop feststellen, dass diese Endlosschleife wirklich durchlaufen wird.
    Was auch ein Beweis dafür ist, dass zum Beispiel das SID-File an der richtigen Stelle im RAM steht. Sonst würde es nämlich bei der Initialisierung zu einem Absturz kommen.


    Ich hoffe mir kann jemand helfen.


    Grüße
    BasicFan.

  • Hi,
    ja den kenn ich. Die Seite bin ich ausführlich durchgegangen. Allerdings wollte ich ein Gerät, dass absolut unabhängig ist, also nur ein Netzteil zum arbeiten braucht.
    Der Player von der Seite benötigt einen PC, der die Daten bereitstellt und vorher auswertet.
    Außerdem entwickel ich sowas, zwecks Spaß, gerne selber, bzw. in diesem Fall weiter.


    Grüße
    BasicFan.

  • So jung und schon so ein BASIC-Fan, unglaublich!


    BTT: So schlecht/überflüssig finde ich die Idee gar nicht. Der SIDStick ist nicht wirklich eine Alternative, da - man korrigiere mich, wenn ich falsch liege - der ja eben keine PSID-Files abspielt, sondern man die erst in .WAV/irgendein wirres Chiptunes Weirdo Format umwandeln muss vorher, right?


    Vom anderen verlinkten Projekt hör ich glaub ich zum ersten Mal.


    Viel Erfolg, Du wirst aber schnell merken, dass das Programmieren ein ziemliches Gefummel sein wird ^^ sag ich Dir als jemand, der gerade einen annähernd universellen SoftwarePlayer für C64 in Arbeit hat (2nd Gen Massenspeicher wie SD2IEC etc dank KERNEL-Load supported).

  • Hi,
    Fehler Gefunden!!!
    Bei der Entwicklung im Voraus habe ich ein bisschen experimentiert, da ich noch nicht alle Teile hatte:
    Der ATmega 1284 hat die Daten, die er eigentlich senden sollte wieder auf die SD-Karte geschrieben.
    Dadurch ist ein .prg-File entstanden, dass sich mittels SYS im Emulator starten lies. Beim Interrupt im C64 werden ja als erstes die Register gesichert und dann wird der IRQ-Vektor an $0314/$0315 (Oder so ähnlich) geprüft.



    Es lag daran, wie er den IRQ beendet hat:
    Ich hab die Register danach wieder vom Stack geholt.
    Im Player gibt es aber kein ROM, sondern es wird sofort die richtige Adresse an $FFFE/FFFF abgelegt.
    Bei dem Versuch einen Wert vom Stack zu holen, ist der Prozessor dann abgestürzt


    Da die CPU nur auf IRQs wartet, ist es auch nicht nötig die Register vom Stack zu holen.
    Ich springe jetzt also direkt nach dem Aufruf der Play-Routine wieder zurück


    Jetzt kann ich mich endlich an den Dateimanager machen!


    Grüße
    BasicFan.

  • just an idea: wäre es eigentlich möglich die sid dateien so aufzusplitten und zu filtern das man drei sid chips mit einem song ansprechen kann, auf jedem der chips aber nur eine stimme spielt? dann könnte man selber etwas individueller mixen oder z.b. die bass sachen auf einen subwoofer legen und die beiden anderen stimmen im stereo spektrum verteilen. die player daten müssten halt so gefiltert werden das zwar alle daten ankommen, aber jeweils die adsr werte von zwei stimmen auf $00 sind, so das nur eine zu hören ist. denke bei ring und sync effekten braucht man die daten der vorherigen stimme, der effekt wird auf rechnerischer ebene erzeugt oder? (eine frage die mir auch zrx nicht beantworten konnte)

  • Hi,
    als erstes muss ich zu meiner Verteidigung sagen, dass ich das ganze mit nem SwinSid getestet habe, dann aber nach dem nichts passiert ist umsteigen musste, da mir mein Seitenschneider auf die Platine vom SwinSid draufgefallen ist :(.


    Das mit dem Mischen mehrerer SIDs müsste funktionieren. Eigentlich müsste nur ein ziemlich Leistungsfähiger Mikrocontroller den Daten und Adressbus überwachen und dann im richtigen Moment den richtigen SID einblenden.
    Dann müssten "nurnoch" die gemeinsamen Register korrekt beschrieben werden usw...


    In der Praxis ist da allerdings sicher noch einiges mehr zu beachten...


    Grüße
    BasicFan.

  • Absolut? Soo schlecht ist er doch nun auch nicht :) 8580er-.sids laufen damit doch meistens sehr gut....nagut, ´meistens´ ist nicht gut...^^
    Aber wenigstens handelt es sich (hoffentlich) um durch Software behebbare Probleme...hoffe ja sehr das Swinkels da nochmal beigeht

    I have plans to release new firmware versions, but I can't promise anything right now.

    - hab ihm grad einfach mal geschrieben und nachgefragt

  • wohl ein subjektives thema. die meisten hubbard sachen klingen echt schrecklich imho. so daneben wie der filter ist kann ich mir schwer vorstellen das 8580 sachen gut gehen. es ist eine alternative in dem sinn wenn man überhaupt keinen sid chip hat und sound nicht so wichtig ist; es gibt halt auch leute die schon damals spiele nur geladen haben um die mucke zu hören, diejenigen können mit dem swinsid sicher nichts anfangen.

  • es ist eine alternative in dem sinn wenn man überhaupt keinen sid chip hat und sound nicht so wichtig ist; es gibt halt auch leute die schon damals spiele nur geladen haben um die mucke zu hören, diejenigen können mit dem swinsid sicher nichts anfangen.

    Auf der anderen Seite gibt es Funktionen, die damit deutlich besser klingen als auf dem Originalchip - hab hier eine angepasste Version des Limon-Players, das klingt deutlich(!) besser, vor allen Dingen lauter. Gut, aber das ist n anderes Thema....

    jegliche firmware verbesserungen am SwinSID sind SEHR wünschenswert

    Auch hierzu hab ich einige Betas irgendwo auf dem PC, Swinkels hat da zwischendurch irgendwann schonmal ein wenig rumprobiert - leider waren die Ergebnisse meiner Meinung nach schlechter als vorher und somit hat er dann ja nur die ´sound-off-Funktion´ zuletzt veröffentlicht...es mangelte bei ihm ´damals´ an dem Programmiergerät zum testen, mal schauen was er jetzt schreibt - wenn es ihm immernoch daran mangelt schenk ich ihm meins ;)


    Hubbard hab ich noch nichts probiert, aber bei Whittaker, Lazy Jones streikt er z.B. nahezu komplett - man hört nur alle paar Sekuinden Fetzen

  • [offtopic]

    die meisten hubbard sachen klingen echt schrecklich imho.


    dabei sind gerade die hubbard dinger noch die paar, bei denen ich den eindruck habe, z.B. auf LightForce wurde die Firmware getrimmt und versagt nicht völlig, während andere 6581 Stücke völlig kaputt klingen[/offtopic]

  • Ich gehöre zur im letzten Satz von Posting #13 genannten Fraktion. Ich würde auch zum jetzigen Stand eher Geräte mit SWINSID bestücken, die ich eh kaum bis nie nutze (steckt hier in einem 128D, der eigtl nur rumsteht) oder ihn für Basteleien wie hier im Fred angesprochen einsetzen - so es denn Sinn macht. Aber IRGENDwann wird das SID-Ersatz Thema so aktuell werden, dass etwas entwickelt werden "muss"/sollte, was z.B. an die Qualität einer halbwegs tauglichen Emulation am PC heranreicht, von daher finde ich den Ansatz von SWINSID gut. Bei mir fiel er als SID-Ersatz zwar auch erstmal ziemlich gründlich durch und hat eher Spielzeug-Charakter, aber man soll es nicht verteufeln, sondern lieber drängeln, dass die Firmware verbessert wird.

  • ok ich muss wohl auch zurückrudern, was ich jetzt so gelesen habe kann das ding keine kombinierten wellenformen, auch der entwickler meint das das marginal ist weil nur ca. 3% der tunes das nutzen (?!). es hat wohl jeder den fokus wo anders bei sid replacement chips. also bleibt dann doch nur wieder "the real thing".