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

letzter Beitrag von Unseen am

Worauf testet ihr eure C64 Software(Emu, C64, U64, Reloaded, ...)?

  • Damit ich hier nicht zu viele Thread kapern muss, habe ich mich entschieden einen eigenen zu dem Thema aufzumachen.


    Zur Motiviation:

    Ich möchte Software auf dem PC für den C64 entwickeln. Da ich dies mit dem C64 Studio + VICE-Emulator erledige, stellt sich mir die Frage, ob meine Sachen auch auf einem echten originalen C64 genauso funktionieren würden wie im Emulator. Was nützt mir Software, die nur im Emulator läuft aber auf echter C64-Hardware seinen Dienst nicht tut?


    Zur Frage:

    Gibt es derzeit eine Alternative um seine Software zu testen die jenseits der Originalhardware liegt? Ist ein Emulator oder auch ein FPGA Nachbau wie U64 oder TC64 nah genug dran um auf solchen Maschinen testen zu können?


    Wie sieht es mit so einem Reloaded MK2 Board aus? Ist das so kompatibel wie ein echter C64?


    Wie testet ihr denn so?


    Ich muss dazu sagen, dass ich noch ganz in den Anfängen der C64 Programmierung stehe und wahrscheinlich sehr lange nur Standardsachen machen werde, also keine besonderen Timingtricks oder so was. Nichts desto trotz interessiert mich das Thema Kompatibilitätstest doch sehr.

  • Warum ich nicht mehr mit einem C64 Emu entwickle/teste...


    Vor einigen Monaten wollte ich ein eigenes Diagnose-Tool schreiben. Dabei habe ich festgestellt das es doch sehr umständlich ist per Assembler Text auszugeben, so wie ich es gerne machen würde: X,Y Koordinate (Spalte/Zeile), Text, fertig (keine Speicheradresse ala 0x0400).


    Und auch erst einmal keine Hardware-Tests, sondern nur eine simple Text-Ausgabe-Routine. Das Ende vom Lied war, es funktionierte mit dem VICE Emulator, aber nicht auf einem echten C64.


    Seit dem bin ich vorsichtig geworden, und entwickle nur noch mit echter C64 Hardware. Da mir aber der große originale C64 auf meinem Schreibtisch zu viel Platz wegnehmen würde (ich habe auch nur einen 1,3m Schreibtisch, wobei ich 2 Monitore benutze und rechts noch ein Oszilloskop + Lötkolben stehen habe), nutze ich dazu meinen neuen Modular64 + Code Injection Karte auf der linken oberen Ecke meines Schreibtisches (perfekte Platzausnutzung :-) ).

  • Ich muss dazu sagen, dass ich noch ganz in den Anfängen der C64 Programmierung stehe und wahrscheinlich sehr lange nur Standardsachen machen werde, also keine besonderen Timingtricks oder so was. Nichts desto trotz interessiert mich das Thema Kompatibilitätstest doch sehr.

    Dann brauchst Du nicht damit zu rechnen, daß Du auf irgendeine Abweichung zwischen C64+1541 und VICE stoßen wirst. Die Basics sind da schon lange geklärt.

    Zitat

    Wie testet ihr denn so?

    Mit VICE eben. Wenn hardwarekritische Sachen eine Rolle spielen, wird so eine Routine auch schon mal nur für sich getestet (also, so nette Sachen wie 'stable Raster', etc.)


    Zum Schluß muß das Programm aber natürlich auch auf der echten Hardware laufen. Nur für den Emulator zu entwickeln wäre ja langweilig und verfehlt m.E. auch den Sinn der Übung.


    Zitat von Matthias

    Und auch erst einmal keine Hardware-Tests, sondern nur eine simple Text-Ausgabe-Routine. Das Ende vom Lied war, es funktionierte mit dem VICE Emulator, aber nicht auf einem echten C64.

    Na, da bin ich aber echt mal neugierig wie Du das hinbekommen hast. Möchtest Du diese Routine vielleicht hier mal anbringen, zusammen mit der genauen Angabe der Version und Plattform von VICE die Du genutzt hast? Oder gibt es schon einen Eintrag von dir im Bugtracker?

  • Zitat

    Na, da bin ich aber echt mal neugierig wie Du das hinbekommen hast.

    Kann ich verstehen, und ich war selbst überrascht. Aber wie auch immer, es geht ja hier nicht darum zu diskutieren ob, warum, wann, welches Programm nicht funktioniert, sondern wie wir testen. Und ich gehe seit dem lieber auf Nummer Sicher und teste gleich auf echter C64 Hardware, dann brauche ich nicht später nach irgendwelchen Lösungen suchen :-)


    Und für mich ist es nicht umständlicher als mit einem Emulator zu testen. Das kompilieren + hochladen auf die echte Hardware dauert 5-6 Sekunden.

  • Deine Lösung mit kleiner C64 Hardware ist natürlich was feines. Was ist das für eine Code-Injection-Karte? Kann man damit auch debuggen?


    Jedes kleine bisschen würde ich wahrscheinlich nicht auf echter Hardware testen, dafür finde ich es mit Laptop auf der Couch einfach zu bequem, aber ab und mal, würde mir schon Sicherheit geben.


    Was meint ihr ist VICE schon so für die Standardsachen wie Rasterbars, Joystickabfrage etc. genau genug?

  • VICE ist schon verdammt genau. Man muss da schon richtig tief in die Technik-Kiste greifen, um damit auf Fehler zu laufen. Und dann bist du besser beraten, da einen Bug im Tracker aufzumachen, so etwas fixen die Kollegen da eigentlich recht flott.


    Es gibt natürlich ein paar Emulations-bedingte Abweichungen; z.Bsp. Zufallsgenerator im SID, Hardware-Timing von C64 zu Peripherie, RAM-Werte beim Anschalten nicht alle zurückgesetzt, Input-Lag bei Joystick. Aber alles, was direkt auf der Kiste ist, das glaube ich nicht, dass es Abweichungen gibt.


    Matthias: Da musst du schon auf un-initialisierten Speicher oder so was zugegriffen habe, so etwas Banales wie eine Textausgabe bekommt der VICE allemal fehlerfrei hin.

    Wenn du das Stück Code noch hast, das im VICE läuft, aber auf der Hardware nicht, das wäre echt interessant zu analysieren. Nicht, um dich niederzumachen, sondern um die Emulation zu verbessern, sofern es denn wirklich ein Bug ist.

  • Zitat

    So richtig überzeugend ist das jetzt nicht.

    Das wundert mich nicht :-) Und wie erwähnt ist mir das auch nicht wichtig. In dem Thread geht es ja um etwas anderes.


    Deine Lösung mit kleiner C64 Hardware ist natürlich was feines. Was ist das für eine Code-Injection-Karte? Kann man damit auch debuggen?

    Aktuell ist es eine mit Dual-Port SRAM bestückte Karte, aber ich arbeite an einer vollkommen neuen Version mit einem Mikroprozessor drauf (der kam erst vor wenigen Wochen auf den Markt), der nicht nur alles steuert, sondern auch den kompletten Datenverkehr belauscht und ausgeben kann. Ich habe da so einiges geplant, damit man auch mit der echten Hardware komfortabel Coden/Analysieren kann ;-)

  • Endurion

    Danke für die Erklärung, also bin ich erst Mal gut mit VICE beraten. Tief und schon gar nicht ganz tief werde ich nicht in die Trickkiste greifen. Im Moment teste ich gerade den VIC-II mit seinen Speichereinstellungen und das kopieren von RAM damit ich ein Koala Bild anzeigen kann. Also wirklich absolute Basics und auch das 6502 Assembler lerne ich nur langsam. Ist schwierig mit so wenigen Registern und nur 8Bit. Aber das alles zu begreifen ist ja auch die Herausforderung.

  • Matthias: Da musst du schon auf un-initialisierten Speicher oder so was zugegriffen habe, so etwas Banales wie eine Textausgabe bekommt der VICE allemal fehlerfrei hin.

    Wenn du das Stück Code noch hast, das im VICE läuft, aber auf der Hardware nicht, das wäre echt interessant zu analysieren. Nicht, um dich niederzumachen, sondern um die Emulation zu verbessern, sofern es denn wirklich ein Bug ist.

    Ich wüsste jetzt nicht warum das kein Bug ist. Wer annimmt das Software einwandfrei läuft, nur weil es bisher noch niemand anderen aufgefallen ist, der täuscht sich :-)


    Aber wie gesagt, das ist hier kein VICE thread und wie behebe ich Bugs, sondern hier geht es darum was für und gegen echte Hardware spricht, und wie wir so testen. Und ich teste meinen eigenen Code nur noch auf echter Hardware, weil ich mir am Ende Arbeit erspare, da ich weiß das es läuft :-)


    Ausserdem hat das Arbeiten mit echter Hardware einen ganz anderen Flair, es ist faszinierender, und nicht so nüchtern ;-)

  • Hier kam noch das Thema Input Lag beim Testen im Emulator auf. Wie sieht es da mit Ansätzen aus die Emus wie Denise hier anbieten? Dort wird ja durch mehrfaches Rendern des aktuellen Frames so ein Lag aufs Minimum reduziert, wenn ich die Technik dahinter richtig verstanden habe.

  • Das Ende vom Lied war, es funktionierte mit dem VICE Emulator, aber nicht auf einem echten C64.

    VICE verwendet per Default Kernalversion 3, dein echter C64 hat vermutlich ein Kernal in Version 2 eingebaut. Der auffälligste Unterschied zwischen den beiden Versionen ist, dass Version 3 beim Löschen des Bildschirms das Farb-RAM mit der Zeichenfarbe füllt und Version 2 dafür die Hintergrundfarbe verwendet - Version 1 hat einfach immer weiss benutzt. Vermutlich hat dieine Textausgabe-Routine nur ins Bildschirm-RAM, aber nicht ins Farb-RAM geschrieben und hat daher den Bug, nur mit Kernalversion 3 oder 1 zu funktionieren.