Hallo Besucher, der Thread wurde 17k mal aufgerufen und enthält 167 Antworten

letzter Beitrag von sm74 am

Zu hohe Hardwareanforderungen bei Emulatoren unter DOS?

  • Hier ein Beitrag, den ich schon mal im DOS-Forum gepostet hatte. Vielleicht findet er auch hier Interesse und Antworten.


    Mal eine generelle Frage: ich habe manchmal den Eindruck, dass die Hardware-Anforderungen von Emulatoren weitaus höher sind, als sie eigentlich sein müssten. Liegt der Eindruck nur an mir, oder ist dem wirklich so? Könnte so mancher Emulator unter reinem DOS bei effizienter Programmierung auch auf älteren PCs bzw. unterhalb der Pentium-Schwelle flüssig(er) laufen?


    Damit meine ich jetzt nicht, dass ich von einem 386er erwarte, einen Amiga oder eine Playstation etc. flüssig zu emulieren. Irgendwo muss natürlich eine Grenze sein. Aber sollte es nicht theoretisch möglich sein, mit einem schnellen 486er (66 Mhz oder mehr) einen Großteil der 8-Bit-Rechner und Konsolen akzeptabel zu emulieren, eventuell auch einige 16-Bit-Geräte? In der Praxis geht das ja leider oft nicht.


    Mal zwei Beispiele bzw. Denkanregungen: vor einiger Zeit hatte ich nach einem guten Gameboy-Emulator für DOS gesucht. Es finden sich ja auch einige online, manche davon wollen aber mit echtem DOS nicht recht funktionieren oder haben hohe Anforderungen. Bei einem Emulator stand z.B. in der txt, dass er eventuell "auch" noch mit weniger als 400 Mhz funktioniert, wenn man mit den Frameskip-Werten rumspielt. So genau konnte das der Programmierer aber nicht sagen, solche "langsamen" Rechner hatte er nämlich nicht zum Nachprüfen. Alles unter DOS, wohlgemerkt.


    Ich habe dann einen gut funktionierenden Emulator namens VGB gefunden, dessen Anforderungen in der txt mit "mindestens 486DX/33, empfohlen 486DX/66" angegeben sind. Läuft auf dem P166 natürlich absolut flüssig. Wie detailliert und komplex die Emulation nun intern funktioniert, weiß ich nicht, aber es haben damit zumindest alle regulären GB-Programme funktioniert, die ich ausprobiert habe. Und das ist für mich die Hauptsache. Wie kann es also sein, dass ein Emulator des selben Systems einen Pentium 2 mit mehr als 400 Mhz "benötigt" und ein anderer mit einem Mittelklasse-486er auskommt? Das Endresultat (GB-Spiel mit Sound und Musik unter DOS) ist bei beiden Programmen nach außen hin das Gleiche.


    Zweites Beispiel: auf meinem EuroPC-XT mit weniger als 10 Mhz habe ich einen C64-Emulator, der nur mit Monochrom-Monitor läuft. Das ist zugegeben eine ziemlich unausgereifte Sache, und man kann damit nicht viel mehr machen, als ein wenig in BASIC 2.0 programmieren. Aber in dieser Hinsicht verhält er sich tatsächlich erkennbar wie ein echter C64. Und man kann mit 8088er und weniger als 10 Mhz sogar halbwegs gut damit Programme eintippen. Als dann im Laufe der 90er die ersten "echten" C64-Emulatoren auftauchten, schraubten sich die Anforderungen mit steigender Kompatibilität zum Original aber schnell nach oben, und selbst für DOS-Versionen von z.B. VICE reichte bald ein schneller 486er nicht mehr für originale Geschwindigkeit aus.


    Auf meinem Rechner daheim benutze ich aktuell z.B. DOSVice 1.9 von 2002. Auf dem läuft meiner Erfahrung nach über 95% aller Software, auch aktuelle Games, Demos und Diskmags. Aktuellere Versionen von DOSVice laufen auf meinem P166 nicht mehr flüssig, daher muss ich die unter 5% Software, die Probleme macht, in Kauf nehmen.


    Die Frage ist: muss das sein? Ist eine (ausreichend) akkurate Emulation selbst von 8-Bit-Systemen tatsächlich kaum möglich, wenn man nicht mindestens einen Pentium mit 100 Mhz+ zur Verfügung hat? Oder haben sich die Programmierer einfach (stets) darauf verlassen, dass sowieso jeder Anwender einen aktuellen Rechner zur Verfügung hat, und dass effizienter Code gar nicht nötig ist? Und liegt es vielleicht auch daran, dass viele Emulationen einfach zu komplex und mit Features und Komfortfunktionen überfrachtet geworden sind, nur weil jeder Anwender unbedingt die x-fache Bequemlichkeit und Funktionsumfang wie auf dem Original haben will?


    Was ist wichtiger - ein Emulator, der mit relativ wenig Ressourcen dazu in der Lage ist, ein anderes Gerät nach außen glaubhaft nachzubilden? Oder ein Emulator, der für "Nebensächlichkeiten" gigahertzweise Leistung verbrät, nur weil er intern z.B. ein 100% exaktes Thermalmodell erstellt, und jedes mögliche Staubkorn auf virtuellen Bausteinen einzeln emuliert? Nicht, weil es nötig ist, sondern weil es heutzutage geht.


    Zumindest auf meinem Pentium 166 habe ich unter DOS eine ordentliche Auswahl von guten Emulatoren gefunden, die darauf flüssig bis annehmbar laufen, einige haben auch "schnieke" Oberflächen und GUIs wie HuGo, ZSNES oder MEKA. Wobei MEKA z.B. ein Multisystem-Emulator von 2016 ist, der trotz seiner "Neuheit" noch flüssig läuft. Es geht also doch. Okay, no$gba für DOS ist da schon ein bisschen an der Grenze, aber es geht.


    Hier mal ein paar Bilder von Emulatoren, denen unter DOS zumindest ein Rechner unterhalb der 200-Mhz-Schwelle ausreicht (sorry, unscharfe Bilder. Ich fotografiere lieber vom Bildschirm ab, als Screenshots zu machen, damit auch die Hardware im Bild ist):







    Und trotzdem frage ich mich manchmal, ob es theoretisch möglich wäre, auch aus z.B. einem 486DX2/66 eine vielseitige und flüssig laufenden Emulationsmaschine zu machen, wenn es effizientere und mehr auf originales DOS und ältere Rechner angepasste Emulatoren gäbe. Nur reines Wunschdenken oder möglich? Meinungen?


    Als Anregung vielleicht noch das hier: das ist tatsächlich mein 386SX25. Der bringt natürlich bei weitem keine C64-Originalgeschwindigkeit, aber im Prinzip geht auch dort stabile Emulation (zumindest dann, wenn der Emulator keine FPU voraussetzt, was VICE allerdings von Anfang an getan hat):


  • Intel gibt es, Microsoft nimmt es (leider nur auf Englisch)


    https://en.wikipedia.org/wiki/Andy_and_Bill%27s_law


    Chip Hersteller wollen ja dass ihre Chips voll ausgereizt werden. Und Software Hersteller wollen neue Versionen rausbringen.

    Wahrscheinlich würde vieles effizienter gehen. Es ist aber schlicht und ergreifend nicht nötig so zu denken, wie es scheint.

  • Mich stoert schon wieder dieser unterschwellige (bzw. eigentlich doch recht deutliche) "die Programmierer von heute coden nicht mehr effizient und sind zu faul und zu ignorant, um sich 'langsame' (30 Jahre alte) Rechner hinzustellen, um darauf ihre Software zu testen"-Vibe. Das macht es mir schwer zu antworten. Also antworte ich mal mit einer Gegenfrage: Bist Du eigentlich Programmierer? Hast Du schonmal drueber nachgedacht, einen Emulator zu coden? Warum probierst Du es nicht einfach mal aus?

  • Naja, seien wir doch mal ehrlich, welcher Programmierer macht sich denn heutzutage die Mühe, einen Emulator eines Retro Systems (C64 etc.) FÜR ein anderes Retro System (DOSe) anzupassen ....


    Klar würde da mehr gehen, aber alle angenehmen Features wie die Emulation vieler Hardware Erweiterungen etc müsste dann wegfallen. Dazu rufen alle immer nach Cycle Exact Emulation und das ist mit untermotorisierter Hardware schlecht bis garnicht möglich ...

  • Warum will man einen alten Rechner einen noch älteren Rechner emulieren lassen?

    Das ist genau der Punkt. Das ist eine sehr abstruse Anforderung. Statt einen C64 auf einem Retro 486 zu emulieren, kann ich doch gleich einen echten C64 nehmen. Wenn ich was emulieren will, dann auf einem aktuellen PC.


    Daher kann ich verstehen, wenn es wenige bis gar keine Programmierer gibt, die sowas für die fünf Anwender (weltweit) programmieren, die sowas haben wollen.

  • wenn es wenige bis kar keine Programmierer gibt, die sowas für die fünf Anwender (weltweit) programmieren, die sowas haben wollen.

    Sowas wollte ich auch gerade schreiben.

    Die Nachfrage bestimmt das Angebot.

    Naja, nicht immer. Es gibt natürlich Hobby-Programmierer (wie ich), die das eine oder andere auch einfach aus Spaß am Projekt programmieren.

    Aber es macht eben auch nur begrenzt Sinn.

  • Naja, nicht immer. Es gibt natürlich Hobby-Programmierer (wie ich), die das eine oder andere auch einfach aus Spaß am Projekt programmieren.

    "Nachfrage" war hier jetzt nicht im kommerziellem Sinn gemeint. Sonst gäbe es ja viel schönes Retrozeug gar nicht erst.

    Aber wenn es keinen oder nur ein, zwei Anwender Deiner Programme gibt, ist die Motivation dazu vermutlich niedriger als für solche, die 100en oder 1000en Freude bereiten, oder? ;)

  • Wie kann es also sein, dass ein Emulator des selben Systems einen Pentium 2 mit mehr als 400 Mhz "benötigt" und ein anderer mit einem Mittelklasse-486er auskommt?

    Weil der eine Emulator das Originalsystem genauer nachbildet als der andere. Für manche Software des emulierten Systems mag das egal sein, für andere macht es einen Unterschied.


    Hier gibts einen empfehlenswerten Artikel zu dem Thema.

  • Mich stoert schon wieder dieser unterschwellige (bzw. eigentlich doch recht deutliche) "die Programmierer von heute coden nicht mehr effizient und sind zu faul und zu ignorant, um sich 'langsame' (30 Jahre alte) Rechner hinzustellen, um darauf ihre Software zu testen"-Vibe.

    Nicht meine Absicht, aber es wird halt leider in alles reininterpretiert, was ich schreibe. Mir persönlich fehlt eben das Verständnis dafür, warum ein reines DOS-Programm Hunderte von Mhz brauchen soll, während ein anderes DOS-Programm die selbe Aufgabe auf einem 486er erledigt (siehe Gameboy-Emulatoren). Oder warum VICE nach der Version 1.9 plötzlich nicht mehr flüssig auf einem P166 laufen mag, obwohl auch dort schon eine gut ausgereifte Emulation möglich war.


    Und subjektiv denke ich, dass die Emulation ziemlich aller 8- und 16-Bit-Rechner und Konsolen rein vom Prinzip her innerhalb der Grenzen eines schnellen 486ers liegen könnte. Theoretisch. Ob es praktisch möglich ist, weiß ich nicht, da ich kein Programmierer bin.


    Warum man das heutzutage noch versuchen und motiviert programmieren sollte? Keine Ahnung. Ich glaube, da fallen wir wieder in den widersprüchlichen Fragenbereich:


    A.) Soll ich einem C64 was Gutes tun und effizient für ihn programmieren bzw. neue Dinge erforschen/ausloten?

    Antwort: aber immer doch. Das ist Retrokult.


    B.) Soll ich einem DOSen-486er was Gutes tun und effizient für ihn programmieren bzw. neue Dinge erforschen/ausloten?

    Antwort: Näh. Wieso sollte man sowas tun? Bringt doch nix...


    Und das verstehe ich als aktiver DOS-Anwender nicht wirklich. Es liegt aber an mir. Sorry.

    Wenn ich was emulieren will, dann auf einem aktuellen PC.

    Warum? Braucht ein C64 oder ein ZX Spectrum oder selbst ein Amiga einen aktuellen PC zur Emulation?

  • Nicht meine Absicht, aber es wird halt leider in alles reininterpretiert, was ich schreibe

    Na dann schauen wir doch mal, was Du schreibst:


    So genau konnte das der Programmierer aber nicht sagen, solche "langsamen" Rechner hatte er nämlich nicht zum Nachprüfen.

    Das klingt, als waerst Du mit seiner Verwendung des Begriffs "langsam" nicht einverstanden - obwohl Du Dir natuerlich dessen bewusst bist, dass heute im Grunde jeder (ausser Dir) mit moderneren Rechnern arbeitet und "solch einen langsamen Rechner habe ich nicht" nun wirklich nichts verwerfliches ist.


    Oder haben sich die Programmierer einfach (stets) darauf verlassen, dass sowieso jeder Anwender einen aktuellen Rechner zur Verfügung hat, und dass effizienter Code gar nicht nötig ist?

    Das klingt, als wuerden heutige Programmierer Deiner Meinung nach die Effizienz vernachlaessigen (und sowas wird uebrigens heute oft schnell dahergesagt, gerade in Retrokreisen - dabei ist heute die Programmierwelt einfach anders und auch die Prioritaeten liegen woanders. Im Gegenzug koennte man auch sagen, einige Programmierer "von damals" kommen nicht mit heutigen Anforderungen klar, weil sie am liebsten alles so wie in den 80ern machen wuerden).


    nur weil jeder Anwender unbedingt die x-fache Bequemlichkeit und Funktionsumfang wie auf dem Original haben will?

    Das klingt, als waerst Du der Meinung, die heutigen Anwender waeren (wieder mal) mit nichts anderem zufrieden als dem allerneuesten Scheiss, und das ist fuer Dich vermutlich (wieder mal) ein Widerspruch, denn Retro-Begeisterung und moderne Rechner passen Deiner Meinung nach ja nicht so gut zusammen (wie wir aus anderen Threads schon wissen).


    Was ist wichtiger - ein Emulator, der mit relativ wenig Ressourcen dazu in der Lage ist, ein anderes Gerät nach außen glaubhaft nachzubilden? Oder ein Emulator, der für "Nebensächlichkeiten" gigahertzweise Leistung verbrät, nur weil er intern z.B. ein 100% exaktes Thermalmodell erstellt, und jedes mögliche Staubkorn auf virtuellen Bausteinen einzeln emuliert? Nicht, weil es nötig ist, sondern weil es heutzutage geht.

    Hier ziehst Du eine moeglichst akkurate Emulation ins Laecherliche, obwohl sich da manche schlaue Menschen in den letzten 20-30 Jahren enorm viel Gedanken und Muehe gemacht haben, um diese Systeme so exakt wie moeglich nachzubilden. Das finde ich ehrlich gesagt nicht besonders nett.


    Meine Meinung dazu:

    Du haettest Deine urspruengliche Frage in meinen Augen auf jeden Fall deutlich neutraler formulieren koennen. Stattdessen mussten natuerlich die oben zitierten Seitenhiebe alle irgendwie untergebracht werden. Das lenkt den Thread natuerlich schon wieder in eine gewisse "Richtung", vor allem wenn man Deine anderen Threads bereits kennt.

    Die ernsthafte Antwort auf Deine Frage findest Du auf jeden Fall in dem Artikel den Unseen gepostet hat, und ich empfehle Dir auf jeden Fall, ihn zu lesen.

  • Und subjektiv denke ich, dass die Emulation ziemlich aller 8- und 16-Bit-Rechner und Konsolen rein vom Prinzip her innerhalb der Grenzen eines schnellen 486ers liegen könnte.

    Das glaube ich eher nicht aber das ist nur meine Meinung ;)



    Oder warum VICE nach der Version 1.9 plötzlich nicht mehr flüssig auf einem P166 laufen mag, obwohl auch dort schon eine gut ausgereifte Emulation möglich war.

    Weil sich jeder Emulator weiter entwickelt und wenn neue Features dazu kommen und neue Abhängigkeiten der emulierten Hardware zwischen einzelnen emulierten ICs, dann wachsen damit auch die Systemanforderungen des Host Systems.



    A.) Soll ich einem C64 was Gutes tun und effizient für ihn programmieren bzw. neue Dinge erforschen/ausloten?

    Antwort: aber immer doch. Das ist Retrokult.


    B.) Soll ich einem DOSen-486er was Gutes tun und effizient für ihn programmieren bzw. neue Dinge erforschen/ausloten?

    Antwort: Näh. Wieso sollte man sowas tun? Bringt doch nix...

    Das ist wie Äpfel mit Birnen vergleichen ... oder programmiert jemand einen Amiga Emulator auf dem C64 ? Es gibt doch genug Emulatoren die auch unter DOS auf älteren Rechnern funktionieren, man darf aber a) nie erwarten dass jede Software darauf läuft und b) niemals die neueste Version nehmen ...

  • Wenn ich was emulieren will, dann auf einem aktuellen PC.

    Warum? Braucht ein C64 oder ein ZX Spectrum oder selbst ein Amiga einen aktuellen PC zur Emulation?

    Vermutlich schlichtweg deshalb, weil er einen aktuellen PC hat. Deshalb will er - genauso wie so ziemlich jeder andere User auch - darauf emulieren. Und nicht auf einem alten PC, den man nicht (mehr) hat.


    Das ist doch echt nicht so schwer zu verstehen.

  • Man darf auch nicht dem Glauben verfallen, dass ein scheinbar "einfach aufgebautes" und "überschaubares" Betriebsystem (MS-DOS) das man "gut im Griff" hat und das "flott auf alter Hardware läuft", automatisch mehr "Effizenz" und "Geschwindigkeit" bedeutet.

    Akkurate Emulation benötigt, abhänging vom emulierten System, generell viel Rechenpower. Das muss man immer in Relation setzen. Dass ein schneller 486er für "dies und das" ausreicht, wenn man nur "effizient genug programmiert", kann man pauschal nicht sagen.

    Oder anders: Wieso musste man sich z.B. für Strike Commander einen schnellen 486er zulegen? Hätten die mal effizienter programmiert, dann wäre das auch auf einem 386er unter DOS noch flüssig gelaufen. :emojiSmiley-13: Vor allem exakte Emulation ist auch heute noch so ein "Strike Commander". (die tatsächliche Effizienz des Codes mal ausser Acht gelassen :emojiSmiley-28: )

  • Warum will man einen alten Rechner einen noch älteren Rechner emulieren lassen?

    Man könnte ja mit einem aktuellen Rechner einen 386er emulieren und auf diesem dann den ganz alten Rechner emulieren. Und alle 5 Jahre packt man eine Zwischenebene in der Emulationskette dazu. :D


    Ich habe gar nichts mehr an Rechnern im 386/486-Bereich hier. Irgendwann wird halt auch der Platz dafür wenig. ;)

  • Man darf auch nicht dem Glauben verfallen, dass ein scheinbar "einfach aufgebautes" und "überschaubares" Betriebsystem (MS-DOS) das man "gut im Griff" hat und das "flott auf alter Hardware läuft", automatisch mehr "Effizenz" und "Geschwindigkeit" bedeutet.

    Insbesondere da die Intel-Prozessoren seit dem 386er eine ISA mit 32-Bit-Befehlen hatten. Wer drei Prozessorgenerationen später immer noch ein 16-Bit-Betriebssystem nutzt, sollte vielleicht vor Gebrauch des Wortes "Effizienz" noch mal darüber nachdenken...