"DosBox" (oder Emulator) in VB programmieren

Clocker 2800+

Lt. Commander
Registriert
Apr. 2007
Beiträge
1.409
Hallo,

kann man in Visual Basic einen Emulator programmieren, der z.B. das Spielen alter Dos-Spiele erlaubt. Oder dass die Befehle direkt an die Host-CPU gehen, und nur die "Dos-Umgebung" emuliert "virtuell erstellt" wird.

Es gibt ja z.B. Qemu, Dos-Box die das so machen.

Für Qemu kann man ja den Quellcode downloaden.
In welcher Programmier-Sprache ist der ?

Wenn der z.B. in "C" ist, kann man den irgendwie in VB umschreiben ?

Oder gibt es bereits einen (auch nicht fertigen) Emualtor, der in VB programmiert ist.


----
Wäre so was überhaupt in VB zu realisieren ? (also ob es überhaupt möglich wäre, wie schwer das werden würde, ist egal)

Es würde aber auch gehen, wenn nur Teile des Programms in z.B. "C" geschrieben wären, und man dann die exe, dll-Dateien aus VB heraus ansprechen kann (z.b. mit Parametern).
Wäre so was möglich ?

----
In welchen Programmiersprachen wäre dies am leichtesten möglich ?
Und in welchen wäre es überhaupt machbar ?
 
Zuletzt bearbeitet:
Clocker 2800+ schrieb:
Es gibt ja z.B. Qemu, Dos-Box die das so machen.

Für Qemu kann man ja den Quellcode downloaden.
In welcher Programmier-Sprache ist der ?
Runterladen, reingucken.



Oder gibt es bereits einen (auch nicht fertigen) Emualtor, der in VB programmiert ist.
Ganz bestimmt nicht.

Wäre so was überhaupt in VB zu realisieren ? (also ob es überhaupt möglich wäre, wie schwer das werden würde, ist egal)
ja, das wäre es

Und in welchen wäre es überhaupt machbar ?
Theoretisch in fast jeder. Ist alles eine Frage des Aufwandes den man betreiben möchte und vor allem auch, ob es hinterher in einer halbwegs aktzeptablen Geschwindigkeit laufen soll.

Schreib doch am besten, was du überhaupt machen möchtest. Gibt da bestimmt eine Lösung für dein Problem, die nicht so arg kompliziert ist, wie du dir das denkst.
 
Zuletzt bearbeitet:
1.) Natürlich kann man das in VB programmieren, aber die Performance wird unter aller Sau sein. Als Faustregel kann man sagen, dass managed Code ca. 1/4 so schnell ist, wie nativer bzw. genauso schnell wie C-Code im Debug Modus. Ich habe das mit einem Primzahlenberechnungsprogramm gemacht, das auf der einfach Variante mit modulo rechnen basiert, also etwas sehr einfaches:

Java: ca. 50-60s
Visual Studio C im Debug-Modus: ca. 50-60s
Visual Studio C im Release-Modus: ca. 10-15s

VB bzw. VB.NET sollte dasselbe sein. Reine Interpretersprachen wie z.B. das VB in Access sind natürlich noch einmal um ein ordentliches Eck langsamer.

Der Grund dafür liegt einfach an den Compileroptimierungen, die in VB und Java einfach so gut wie unmöglich sind, dafür ist der Komfort bei C/C++ ziemlich mies, auch mit einer ordentlichen Entwicklungsumgebung (die vi Murkserei unter Linux ist sowieso eine Katastrophe).

2.) DosBox an sich ist ein Betriebssystem-Emulator und der ist immer extrem langsam. Bei den uralten DOS-Spielen ist das zwar egal, aber bei doch etwas neueren Spielen, so um 1995 oder nachher erschienen sind und wo ein Pentium 133 schon ins Schwitzen gekommen ist, bei denen merkt man das dann schon bei den Ladezeiten. Abgesehen davon gibt es immer extreme Probleme bei der Kompatibilität, weil immer irgendetwas nicht ganz passt und man auf 100 Stellen basteln muss, damit es halbwegs läuft. Die bessere Möglichkeit alte Software zu emulieren besteht bei einer virtuellen Maschine. Hier würde ich VMWare empfehlen. Da gibt es deutlich weniger Schwierigkeiten und die Performance ist fast in Echtzeit außer bei 3D-Spielen. So richtige 3D Effekte gibt es nicht, aber z.B. DirectX 3 läuft ganz brav. Am Besten sollte man sich einfach ein Win98 installieren, wo noch alles gelaufen ist.
 
Schreib doch am besten, was du überhaupt machen möchtest. Gibt da bestimmt eine Lösung für dein Problem, die nicht so arg kompliziert ist, wie du dir das denkst.

Was ich machen möchte, ist so ein Programm wie Dos-Box. (Also einen 386 oder 486 CPU emulieren, (oder virtuell erstellen), in dem man dann alte Dos-Spiele spielen kann.

Also das gleiche Prinzip (und auch vom Umfang das gleiche) wie Dos-Box.

Was die Performance betrifft, ist egal.

Und am besten in VB.
 
Warum nimmst du nicht einfach DOSBox?

DOSBox selbst in VB nachzuprogrammieren kannst du dir erstmal abschminken, das übersteigt deine Programmierkenntnisse und damit vermutlich vor allem deine Freizeit bei weitem. ;)
 
Zuletzt bearbeitet:
Ich will ja so ein Programm wie Dos-Box selber "nach"-programmieren.

Vielleicht gibt´s ja schon einen "halb"-fertigen Quellcode, den man benützen könnte.
Oder dll, ocx, die man dann in VB "ansprechen" kann.
 
Aber wieso? Das wird bloß abartig lahm mit VB ohne sehr fundiertes Wissen.

Was stört dich an DOSBox? Bist du sicher dass du es besser kannst?
 
Clocker 2800+ schrieb:
Ich will ja so ein Programm wie Dos-Box selber "nach"-programmieren.

Vielleicht gibt´s ja schon einen "halb"-fertigen Quellcode, den man benützen könnte.
Oder dll, ocx, die man dann in VB "ansprechen" kann.
Was willst du überhaupt? Selber nachprogrammieren oder ein vorhandenes Programm einbinden? Satz 1 und 3 sind widersprüchlich.
 
Ich möchte das schon von Grund auf programmieren.

Nur wenn´s halt bereits einen "halb"-fertigen Quellcode (oder Beispiele, Anleitungen) gibt, dann würde ich die gerne als "Grundgerüst" nehmen.
(Das wäre die beste Variante).


Oder wenn´s nix gibt, dann möchte ich (wenn´s so was zum downloaden gibt) dll, ocx-Dateien in Visual Basic einbinden und "ansprechen".

Sprich: Vielleicht gibt´s ja dll, ocx-Dateien, die z.B. schon einen CPU emulieren.

-----
Eine Anleitungen, Beispiele, usw.. (die vielleicht zeigen, wie man so was realisieren kann) wären nicht schlecht. (in VB)
 
Zuletzt bearbeitet:
Hallo Clocker 2800+

Also irgendwie verstehe ich den Nutzen nicht, den du daraus ziehen willst. Was bringt es dir, die DosBox nachzubaun, ohne etwas besser zu machen?
Natürlich kannst du das in VB machen, aber wenn du es langsam haben willst, dann kannst du die Pixel auch per Hand ausmalen.
Also mal ernsthaft, was erhoffst du dir davon?
Ich hab da einige Theorieren:
  1. Du willst das Programm dann für ~5€ verkaufen (was in die Hose gehen wird, da es die DosBox für 0€ gibt).
  2. Du willst wirklich was lernen. Dann ist ein fertiges Grundgerüst aber total sinnlos.
  3. Du willst die DosBox selbst bauen, was nur sinn macht, wenn du neue Funktionen / höhere Geschwindigkeit haben willst. Dem steht aber ein enormer Zeitaufwand (der dir wahrscheinlich zum Verhängniss werden dürfte) und vor allem VB im weg (weil es einfach langsam ist, und bei solchen Sachen Geschwindigkeit / Effizienz doch wichtig ist)

Am anfang könntest du dir wie Darii schon sagt den Quellcode von Qemu runterladen und da mal reinschaun. Der ist aber, soweit ich gesehen habe, in C geschrieben.

greetz
-Fr34k-
 
Und auch nur C/++ machen da eigentlich Sinn. Klar wird's mit VB irgendwie möglich sein, aber eben lahm. Und das ist ja anscheinend genau das was dich an DOSBox stört.
Was lernen willst du ja anscheinend auch nicht, da du immer quasi fertigen Code bzw vorgefertigte Lösugen willst. Und dann auch noch Geld dafür verlangen, tststs...
Sowas klickt man nicht schnell mal zusammen. Wenn das alles so einfach wäre würden wir alle unser Geld damit verdienen.
 
Du willst das Programm dann für ~5€ verkaufen (was in die Hose gehen wird, da es die DosBox für 0€ gibt).
Das ist mir auch schon klar, und ich will ja das Programm überhaupt nicht verkaufen.

Du willst wirklich was lernen. Dann ist ein fertiges Grundgerüst aber total sinnlos.
Das finde ich nicht so. Denn wenn es ein übersichtlicher Code ist, und mann ein wenig Zeit investiert den durchzuschauen, dann kann man durchaus was daraus lernen.

Klar wird's mit VB irgendwie möglich sein, aber eben lahm.
Wie ich schon vorher sagte,
Was die Performance betrifft, ist egal.

----- Wie ich schon sagte:
Eine Anleitungen, Beispiele, usw.. (die vielleicht zeigen, wie man so was realisieren kann) wären nicht schlecht. (in VB)
-----
 
Aber was lernst du denn dabei.. du klickst dann alles möglichst aus vorgefertigten Codeschnipseln zusammen und hast am Ende vielleicht sogar eine Lösung. Du lernst *viel* mehr wenn du den Code selbst schreibst. Nebenbei bemerkt glaube ich nicht dass es da so einfache Komponenten gibt und wenn dann ist alles in der Richtung in C/++ geschrieben.
Und wenn DOSBox sogar schneller ist macht das ganze doch keinen Sinn. Dann such dir doch lieber eine sinnvolle und für VB etwas "realitätsnahere" ("naher"? na Firefox will's jedenfalls so;)) Anwendung.

mfg
 
Clocker 2800+ schrieb:
Ja schon, aber dazu bäuchte ich wenigestens ein paar Anleitungen, Beispiele, wie man so was realisieren kann
Man, dann schau dir halt den DOSBox Quellcode an, das ist das vermutlich einzige, was du zu dem Thema finden wirst. Wie ich schon angedeutet habe, das ist wirklich kein Gebiet bei dem es im Netz nur so vor halbfertigem Quelltext und Tutorials wimmelt und schon gar nicht in VB.

Ich glaube dir sind da die Dimensionen dessen, was du dir da vorgenommen hast, nicht recht bewusst. Ich an deiner Stelle würde mich erstmal damit beschäftigen, wie ein Computer eigentlich *genau* funktioniert (und dazu gibts Bibliotheken) bevor du dir überhaupt erstmal Gedanken machst wie du das programmieren könntest. Vom Quelltext anstarren lernst du bestimmt nix.

Das finde ich nicht so. Denn wenn es ein übersichtlicher Code ist, und mann ein wenig Zeit investiert den durchzuschauen, dann kann man durchaus was daraus lernen.
Dein Problem ist nicht, das man daraus nichts lernen kann oder dass der code übersichtlich sein muss, dein Problem ist, dass dir selbst sehr viel Zeit zu wenig sein wird.

Sprich: Vielleicht gibt´s ja dll, ocx-Dateien, die z.B. schon einen CPU emulieren.
Dann benutz doch einfach mal google. Was du da nicht findest wird hier wohl auch keiner aus dem Hut zaubern können.

Ich kann dir nur raten: Fang klein an!
 
Zuletzt bearbeitet:
Ich kann dir nur raten: Fang klein an!

O.K. Den Quellcode von Dos-Box 0.72 habe ich mal heruntergeladen.

Aber gibt es auch noch ältere Versionen des Quellcodes von Dos-Box ? z.B. die 1.0 Version.
 
Ältere gibt es hier.

1.0 wäre aber wesentlich neuer, so neu sogar, dass es sie noch gar nicht gibt. Die älteste dort ist 0.58.
 
Zurück
Oben