A2601 Core für das Turbo Chameleon

Es gibt 20 Antworten in diesem Thema, welches 7.435 mal aufgerufen wurde. Der letzte Beitrag (23. August 2015 um 22:00) ist von gartenzwerg.

  • Ich habe mal begonnen, den A2601 Core für das Chameleon zu portieren (implementiert einen ATARI 2600), Bitte melde dich an, um diesen Link zu sehen..


    Ist eine Mischung aus dem Bitte melde dich an, um diesen Link zu sehen. und dem Chameleon Hardwaretestprojekt. Alle Dinge im Quelltext sind soweit angepasst, daß der A2601 Core laufen sollte, also im wesentlichen das Taktverfahren umgestellt und die Xilinx RAM/ROMs durch vom Quartus MegaWizard erstellte ersetzt, sowie der Core an die Anschlüsse des Chameleons angebunden. Ich habe auch ein unter GPL stehendes Spiel gefunden (Details dazu in der Readme), was zum Testen fest eingebunden ist.


    Da mein Chameleon aber noch unterwegs ist, kann ich es noch nicht testen. Wer aber abenteuerlustig ist, kann es ja mal ausprobieren, die rbf-Datei liegt im Quartus-Verzeichnis und heisst TCA2601.rbf. Das Chameleon muß dazu im Standalone-Modus betrieben werden, mit angeschlossenem VGA-Monitor. Über die Docking-Station sind zwei Joysticks vorgesehen. Compilieren kann man es mit der freien Quartus 12 WebEdition. Würde mich aber wundern, wenn da irgendwas funktioniert und Benutzung ist auf eigene Gefahr, denn ich kann nicht ausschließen, daß Bauteile auf dem Chameleon zerstört werden (bei FPGAs muß man immer aufpassen, wenn man eigentlich als Eingänge vorgesehene Signal als Ausgang betreibt usw.).


    Sobald der erste Test läuft, würde ich als nächstes versuchen, die Implementierung aufzubohren, sodaß mehr Module unterstützt werden (gibt da ein paar interessante Bank-Switching Verfahren) und die per Menü von der SD-Card ausgewählt und gestartet werden können. Wenn noch einer Featurewünsche hat, immer her damit. Unmögliches wird sofort erledigt, Wunder dauern etwas länger 8)

  • Ich habe mal begonnen, den A2601 Core für das Chameleon zu portieren, [url='' [url']Bitte melde dich an, um diesen Link zu sehen.[/url]']hier der aktuelle Stand[/url].

    Link ist defekt. Wofür steht das A2601 ?

  • Heute ist das Chameleon angekommen, jetzt kann es nicht mehr lange dauern, bis der neue Core läuft ;) Ich konnte ihn aufspielen, die LEDs blinken auch schön, und noch nichts abgeraucht, nur der VGA Ausgang läuft noch nicht. Mein Scope sagt, es kommt was an HSync raus, aber noch nicht an VSync. Scheint so, daß tatsächlich das VSync-Signal beim Atari 2600 von der CPU generiert wird, daher läuft dort wohl noch was nicht, z.B. das ROM-Image.


    Der Original-Core ist meiner Meinung nach übrigens nur Beta-Status. Sind Kommentare wie "Only one controller port supported. -- FIXME -- does 2nd port work ?" im Source Code und müsste man auch mal aufräumen: Nicht benutze "signal" Deklarationen sollten in VHDL ein Error sein, nicht nur eine Warnung und für jeden undokmentierten und nichtssagenden Portnamen (z.B. "p_s") sollte eine Hand aus dem Monitor kommen und dem Programmierer eine langen :bgdev Ist aber immer noch weniger Arbeit, das zu korrigieren, als einen neuen Core selbst zu programmieren.

  • Eine erste Version des Cores läuft nun, kann man hier downloaden:

    Bitte melde dich an, um diesen Link zu sehen.

    Dann im UPDATE-Verzeichnis als chameleon_beta8b.rbf speichern und mit dem update-Programm flashen, oder direkt per "chacocmd --flashrbf 0 TCA2601.rbf" und mit "chacocmd --start 0" starten. Ich habe noch keine Docking Station (habe es aber schon nachbestellt), sodaß es erstmal nur mit den drei Tasten am Chameleon selbst zu bedienen ist, für links/rechts/springen. Die VSync-Frequenz liegt bei ca. 62 Hz, sollte also jeder VGA-Monitor schaffen. Soundausgabe gibt es auch.

    Zur Fehlersuche habe ich die beiden Verilog-Dateien nach VHDL portiert, sodaß man es nun in ModelSim testen kann (die spezielle Altera-Version von ModelSim kann nicht Projekten zurechtkommen, die VHDL und Verilog gleichzeitig enthalten). Gibt dazu eine Testbench. Von dort konnte ich dann die CPU debuggen und war nur ein Problem, daß nicht initialisierter ROM-Speicher gelesen wurde. Der Testbench läuft allerdings nicht sehr schnell. Könnte schon ein paar Tage dauern, bis auch nur ein VSync komplett simuliert wird.

    Manchmal springt das Bild ein wenig um eine Zeile hoch/runter. Ich vermute mal, daß das vom Spiel abhängt, da die CPU den VSync generiert. In manchen Bildern ist es nicht so schlimm, scheint also etwas Jitter zu sein. Wie könnte man das verbessern? Wenn ich den VSync selbst generieren würde, dann würde das wahrscheinlich auseinander laufen mit der Simulation. Vielleicht die CPU mal kurz anhalten (oder was schneller laufen lassen), wenn sie den VSync generiert, um mit dem realen VSync synchron zu sein? Das könnte allerdings was schwieriger zu programmieren sein und Nebenwirkungen haben.

  • Hab' den Core grad mal getestet, und scheint soweit erstmal ordentlich zu laufen.
    Die Steuerung kann ich im Moment auch nur über die Taster testen, geht aber auch einwandfrei. Der Sound ebenfalls.

    Was bei mir noch nicht so richtig funktioniert ist, das mein Monitor dauernd in den automatischen Abgleich springt (was er eigentlich nur dann macht, wenn ein neuer Modi erkannt wurde). Dadurch kann ich das Bild leider immer nur sekundenweise erkennen.

    Aber ich denke das wird schon noch, sind auf jeden Fall schonmal gut aus :)

    I wanted to make this world better, but god denied to give me the sources...

  • Klingt zwar etwas neunmalklug, aber: Wenn das mit den unregelmäßigen Syncs mit dem gleichen Spiel auf einer echten 2600 nicht passiert, stimmt wohl was mit dem Core noch nicht. Statt einen Workaround dafür einzubauen, solltest Du die Ursache bekämpfen.

    Aber insgesamt: Schön, dass es voran geht. Ich kenne einen, der sich dann vielleicht ein Chameleon gönnt :)

    Hast Du eigentlich einen Plan, wie Du das alles mit Cartridge-Images von SD-Karte machst? Wird ja sonst langweilig auf Dauer.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

  • Ich habe mal eine neue Testversion generiert, diesmal mit 4 Spielen, die alle 20 Sekunden wechseln, mit unterschiedlichem Erfolg spielbar:


    Bitte melde dich an, um diesen Link zu sehen.
    Folgende Spiele sind drauf:


    hunchy1K(PAL).bin (scheint gut zu laufen)

    Donkey Kong (1983) (Pet Boat) (PAL).bin (geht auch, flackert aber manchmal ein wenig, wieder mit der einen Zeile)

    Gorf (1982) (CBS Electronics, Joe Gaucher, Alex Leavens) (4L1751, 4L1752, 4L1753, 4L2275)(PAL).bin (irgendwie ist das nach links verschoben)


    Jumping Jack (AKA Bobby Is Going Home) (1983) (Dynamics) (DY-293005) (PAL).bin (merkwürdiger Ton und links/rechts geht nicht)

    Interessant dabei ist, daß das erste Spiel "hunchy", was zuvor die springende Zeile hat, jetzt scheinbar sauber läuft, zumindest auf meinem TFT-Display. Vielleicht sollte ich doch die drei "Critical Warning: Timing requirements not met" in Quartus mal genauer ansehen :whistling: Bis Quartus 9.1 konnte man ja zum Glück den Classical Timing Analyzer verwenden, der das meiste selbst berechnet und optimiert hat. Mit Version 12 geht das scheinbar nicht mehr, da muß man jetzt "TimeQuest" nehmen und ein "Synopsys Design Constraints File" anlegen. Ich werde am Wochenende weiter dran arbeiten.

    Mit der SD-Card wäre wahrscheinlich am einfachsten, wenn man die mit FAT32 formatieren könnte und dann einfach die ROM-Dateien da reinkopieren könnte. Ein spezielles Startup-ROM, wie beim Chameleon, das im internen Flash-Speicher dann abgelegt wird, zeigt dann ein Menü an, wo man die ROMs auswählen kann. Werde ich wohl noch eine Speichererweiterung für den Atari 2600 implementieren, da man mit 128 Bytes RAM das FAT-Dateisystem nicht so einfach wird lesen können. Vielleicht 16 kB oder so. Mal schauen, wieviel Platz noch im FPGA ist.

    Wie sieht das eigentlich mit den Rechten der ROMs aus? Viele der Firmen wird es ja nicht mehr geben, aber die Rechte werden vielleicht an Nachfolgefirmen verkauft worden sein. Stört das einen, wenn man die ROMs verwendet?

  • Zitat

    Wie sieht das eigentlich mit den Rechten der ROMs aus? Viele der Firmen wird es ja nicht mehr geben, aber die Rechte werden vielleicht an Nachfolgefirmen verkauft worden sein. Stört das einen, wenn man die ROMs verwendet?


    ja, lass das lieber sein - ein grosser teil der rechte liegt heute bei firmen wie zb ubisoft, und die schlachten das zeug teilweise auch noch aus.

  • Werde ich wohl noch eine Speichererweiterung für den Atari 2600 implementieren, da man mit 128 Bytes RAM das FAT-Dateisystem nicht so einfach wird lesen können.

    Wäre es evtl. sinnvoll, ein eigenständiges OSD-System, wie beim Minimig dafür zu verwenden? Da könnte man bestimmt sogar einiges an Code recyceln.

  • Ein OSD klingt gut. Da könnte man dann auch wie bei Stella von PAL auf NTSC usw. umschalten. Gibt es eigentlich ein Standard für Atari 2600 Moduldateien, analog wie beim C64 die CRT-Dateien? Habe bis jetzt nur bin-Dumps von den Catridges gefunden, ohne Meta-Information, sodaß man nie so genau weiß, welcher Grafikmodus oder welches Bank-Switching Verfahren verwendet wird.

    Die Minimig Implementierung des OSDs gefällt mir aber nicht so gut, da die scheinbar ein SPI-Interface verwendet und auch von den Grafikfunktionen her etwas limitiert ist. Könnte man durch direkten Speicherzugriff einfacher implementieren. Ich denke ich werde mein Bitte melde dich an, um diesen Link zu sehen. einsetzen (aber mit Memory Mapped Interface) und parallel dazu ein weiteres System mit einer 6502 CPU auf dem FPGA instantiieren, was nicht die Einschränkungen des Atari-Systems haben braucht. Platz genug ist da, denn momentan werden erst 6% der LEs auf dem Cyclone gebraucht und 23% des Block RAMs. So kann YaGraphCon sich um einen schnellen Grafikaufbau kümmern (zusammen mit einer VHDL-Implementierung um das aktuelle Atari-Bild zu überlagern) und mit CC65 kann man das dann leicht verwenden. FatFs könnte man für die SD-Card Unterstützung mit einbinden.

  • Ich denke ich werde mein YaGraphCon einsetzen


    Ah, hübsches kleines Dingens mit hübscher Lizenz. Jefälltma.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

  • Gestern ist die Docking Station angekommen, jetzt kann man mit Joystick spielen, Bitte melde dich an, um diesen Link zu sehen.. Die Tastenbelegung für den Core am Chameleon ist:

    - Spiel weiterschalten
    - Start
    - Select

    Sind zum Testen dieselben Spiele wie letztens drauf, spielbar mit einem Joystick an Port 1 der Docking Station. Ohne den automatischen Wechsel alle paar Sekunden kann man jetzt auch in den nächsten Level von Donkey Kong kommen ^^

    Was übrigens merkwürdig war: Als ich das Chameleon in die Docking Station eingesteckt habe und danach den USB-Stecker, gingen erstmal die LEDs aus und das Chameleon meldete sich nicht mehr am PC. Habe es dann aufgeschraubt und scheint keine Verbindung mehr von den 5V am USB-Port zu den Spannungsreglern zu geben. Wenn ich mit einem externen Netzteil da 5V draufgebe, läuft es. Stromverbrauch liegt nur bei 200mA, daher wundert es mich, daß da was kaputt gegangen ist. Ist da eine Sicherung drauf? Habe auf Anhieb nichts gefunden. Sonst löte ich enfach einen Draht vom USB-Anschluss zu den Spannungsreglern.

    Der Core ist also erstmal weiterhin erstmal nur experimentell, bis Jens da vielleicht mal draufgeschaut hat, aber dauert auch noch was, bis ich alles geplante da eingebaut habe, da ich aktuell wieder in einem bezahlten freiberuflichen Projekt arbeite, sodaß es hauptsächlich am Wochenende was wird, was allerdings mit Doctor Who konkurriert (gibt alle Folgen auf Netflix :drunk: ).

  • Lass Dir Zeit...
    Freue mich riesig auf den neuen Core (auch wenn ich noch kein TC besitze).

  • Das Chameleon hat zwei USB-Anschlüsse. Einer im Kabelbaum, der ist für Power. Und nur der!

    Der mini-USB ist allein für Daten. Da ist absichtlich keine Verbindung für Power drin, damit man auch im cartridge mode eine Datenverbindung herstellen kann, ohne dass der USB-Port eines PC den ganzen C64 versorgt.

    Jens

    Bitte melde dich an, um diesen Link zu sehen. - Das offizielle iComp Supportforum ist online.

  • Das Chameleon hat zwei USB-Anschlüsse. Einer im Kabelbaum, der ist für Power. Und nur der!

    DEN haste von der Länge aber ziemlich kurz bemessen, wie ich finde.

  • Das Chameleon hat zwei USB-Anschlüsse. Einer im Kabelbaum, der ist für Power. Und nur der!

    Der mini-USB ist allein für Daten. Da ist absichtlich keine Verbindung für Power drin, damit man auch im cartridge mode eine Datenverbindung herstellen kann, ohne dass der USB-Port eines PC den ganzen C64 versorgt.


    Stimmt, so hatte ich das letztens auch angeschlossen, war wohl zu spät (oder früh) heute morgen :zzz: . Bei meinem Cartridge mit USB-Anschluss habe ich übrigens einfach über zwei Dioden die 5 V entkoppelt, da ich in der sonstigen Schaltung nur 3,3 V brauchte und der Low-Drop Regler problemlos mit den ca. 4,3 V auskommt, sodaß man C64 und USB auch parallel anschließen kann, aber es auch nur mit USB oder nur mit C64 alleine funktioniert. Aber meine Schaltung braucht auch viel weniger Strom. Wenn der Chameleon Core mit dem RAM, hohem Takt, Tastatur, Maus und Dockingstation dran ist, wäre das wahrscheinlich zu viel.

  • Fast pünktlich zum Geek Pride Day (war gestern) gibt es eine neue Version vom Core. Es ist jetzt eine weitere 6502 CPU dazugekommen, die mit 8,3 MHz läuft und meinen YaGraphCon Grafikcontroller per Memory Mapped Interface ansprechen kann, mit dem ich mit 50 Millionen Pixel pro Sekunde Linien zeichnen, Rechtecke füllen und Blitten kann, was auf dem VGA-Ausgang ausgegeben wird. Um das ganze einfacher programmierbar zu machen, habe ich ein neues Target für den CC65 Compiler erstellt, der jetzt C-Programme für das neue System (habe ich MyComputer genannt) compilieren kann.

    Zu sehen ist aber noch nicht viel: Das YaGraphCon C-Demo-Programm läuft und zeigt das Testbild am VGA-Ausgang an. Als nächstes plane ich die SD-Card Unterstützung einzubauen, sodaß dann Atari Programme davon geladen werden können. Mal schauen, ob das noch alles ins Block-RAM des Cyclone passt, sonst muß ich mal sehen, ob ich den SDRAM zum laufen bekomme. Ist alles im Github-Projekt eingecheckt, hier die Änderungen: Bitte melde dich an, um diesen Link zu sehen.