- Interessanter Beitrag
Hallo lieber Chris P. ,
also ich kann deine Gedanken nachvollziehen, ich habe in den 90ern dieselbe Fragen gestellt.
C64-Emulatoren habe ich schon am A500 genutzt, z.B. den A64. Die konnten kaum was, aber wenn man genau hinschaute wurde es interessant: Der Autor des A64 hatte wohl Teile des BASIC-ROMs in 68000er Assembler re-implementiert, um hier viel Zeit bei der Emulation einzusparen. Damit liefen BASIC-Programme fast in Original-C64-Geschwindigkeit! Oha. War der Amiga etwa doch nicht so ein ultimativer Traumcomputer, wenn er nichtmal den C64 richtig emulieren konnte?
Der Autor des CCS64 hat übrigens in den frühen 90ern für den A500 eine spezielle Music-Collection rausgebracht, in der C64-SID-Musik abgespielt wurde. Das war die Geburt des "PSID" Formats. Und spätere SID-Player auf dem PC, wenn man sich da mal die CPU-Last angeschaut hat... HALLO? Das war mindestens so CPU-intensiv wie ein MP3-Decoding, wenn nicht noch mehr.
Später habe ich für meine Bitte melde dich an, um diesen Link zu sehen. den Testbericht für DOSUAE geschrieben. Vorher hatte die Amiga Special schon berichtet und nur sehr oberflächlich am Ende gemeint "Der Emulator funktioniert". Naja, wenn man mal kurz die Workbench startet ja, aber z.B. Lotus lief erst auf einem 400 MHz PC so richtig gut (und nein, 1 GHz war nicht nötig!). Und trotzdem lief vieles unsauber, z.B. das berühmte Demo "9 Fingers" machte Grafikfehler.
Die Gründe sind natürlich inzwischen längst klar und schon erwähnt worden: Die Emulation aller Hardware-Komponenten ist tatsächlich extrem CPU-intensiv. Dazu kommt noch bei älteren PCs die nicht auf hohe Performance ausgelegte Anbindung der Grafik. Aber schon beim Amiga hatte der arme 68000er viel zu tun, nämlich das C64-Grafikformat dauernd bei jedem kleinen Pixel umzurechnen in das völlig andere Amiga-Bitplane-Format. Da konnte ein POKE 1024,1 schonmal tonnenweise Befehle kosten, denn während der VIC einfach ein "A" in die linke obere Ecke malte, musste der Amiga mangels Charset-Mode dieses "A" Pixel für Pixel selber zeichnen.
Ähnlich beim SID: Ein paar Hüllkurven nachmachen geht vielleicht noch, aber sobald es an die Filter geht wird es extrem intensiv. Das ist auch der Grund, warum z.B. der ARMSID einen 100 MHz ARM-Prozessor benötigt, NUR um den SID nachzuahmen. Das ist nicht ineffiziente Programmierung, das kommt daher, wenn man in Software eine Hardware nachahmen will. Deshalb benötigen auch SIDPlayer am PC relativ viel CPU-Zeit dafür, dass sie doch "eigentlich nur einen primitiven 80er Jahre Soundchip nachahmen". So einfach ist es halt nicht.
Alte Emulatoren haben z.B. beim VIC auch lediglich zeilenweise emuliert, d.h. jede Zeile wurde der emulierte VIC aktualisiert. Ändert jemand mitten in einer Zeile einen Wert, wird das im Emulator erst in der nächsten Zeile realisiert. Bei vielen Spielen reicht das, aber gerade bei Demos die viel tricksen überhaupt nicht. Ergo: Man muss pixelgenau emulieren, damit bestimmte Effekte auch im Emulator sichtbar werden, und das ist sehr sehr zeitaufwändig, sprich man braucht extrem schnelle Hardware...
Da Emulatoren einzig und allein das Ziel verfolgen, das Original so genau wie möglich nachzubilden, berücksichtigt niemand explizit ältere PCs. Vielmehr wird z.B. die GPU in neueren PCs sogar mitbenutzt. Man wünscht sich auch beim Bildaufbau nicht nur eine pixelgenaue Darstellung, sondern zusätzlich Effekte die durch Composite-Video, PAL-Darstellung, Scanlines u.v.m. entstehen. Manchmal kommt dann Feedback von den Usern, dass neuere Versionen nicht mehr laufen oder zu langsam sind - z.B. der Webbrowser-basierte SID-Emulator "DeepSID" ist schon recht hungrig, wer da einen älteren PC hat kann da schon an Grenzen stoßen.
Fazit: Die hohen Hardware-Anforderungen von Emulatoren sind in der Regel absolut berechtigt. Durch weitere Optimierungen ist nur schwer etwas rauszuholen, und wenn nur ein paar Prozent. Auf uralten Retro-Rechnern dann noch andere Systeme zu emulieren ist sicher eine recht coole Spielerei, ich selbst starte auch noch gelegentlich den A64 oder The 64 Emulator auf meinem Amiga, aber dass dort nicht viel geht ist normal.