Verdammt, das ärgert mich jetzt maßlos. Ich habe Rollercoaster Tycoon mit Railroad Tycoon verwechselt, welches ein 16-bit DOS Spiel war. Aber du hast natürlich Recht: Rollercoaster Tycoon ist ein 32-bit Windows-Spiel, und damit ist was ich gesagt habe in diesem Fall völlig hinfällig.
Das ärgert mich jetzt maßlos, da ich es absolut vermeiden will, Fehlinformation zu verbreiten. Technisch stimmt was ich gesagt habe alles… aber halt kein bisschen für das Spiel, um das es hier geht! Meine aufrichtige Entschuldigung!
Ob etwas Mal in Assembler, C, C++ oder sonst was geschrieben wurde ist für die Ausführung völlig irrelevant. All das wird in die gleiche Binärdarstellung übertragen und läuft natürlich noch genau so auf einem modernen Prozessor.
Da verstehe ich jetzt aber nicht ganz, worauf du eingehst? Natürlich ist das irrelevant wenn es für die selbe Architektur geschrieben wurde. Ein Programm das aber z.B. in 68k- oder 8080-Assembly geschrieben wurde, oder eines das in C geschrieben und vom Compiler für eben diese übersetzt wurde, läuft natürlich nicht ohne Emulation auf einer modernen CPU. So würde es sich auch mit 16-bit x86 Code verhalten.
Ja, exakt das meinte ich. Im 64-bit-Modus gibt es (anders als im 32-bit Protected Mode) keine 16-bit-Segmente mehr, demnach auch kein vm86 mehr, und damit keinen 16-bit Code ohne Emulation mehr. (Ich habe sogar schon selbst kleinteilig einen vm86-Monitor geschrieben.) Leider ist Rollercoaster Tycoon wohl überhaupt kein 16-bit Code.
Vor allem weil DOS selbst ein 16-Bit-Produkt ist, und dessen Schnittstellen dann auch. Wobei 32-bit Programme unter DOS üblicherweise über DOS-Extender (bestimmt erinnern sich viele noch z.B. an DOS/4GW) eine 32-bit-Adaption zu diesen Schnittstellen bekommen haben. Windows hatte zumindest mal auch selbst für lange Zeit einen eingebaut.
Wurscht, hat ja mit Rollercoaster Tycoon nix zu tun.
den alten Assembler-Code durch einen decompiler gejagt hat und dann diesen (unlesbaren) C-Code weiter verwendet hat. […] Solange der Code sich an gewisse Regeln hält, können auch Programme die ursprünglich von Hand in Assembler geschrieben wurden, durchaus dekompiliert werden, wenn das einzige Ziel ein erneutes Übersetzen für andere Plattformen ist, kann das durchaus ein adäquater weg sein.
Da wage ich aber ein bisschen Zweifel. Hast du mal gesehen, was dabei dann rauskommt? Wenn etwas in der 16-bit-Ära in Assembly geschrieben wurde, dann folgt das nicht unbedingt gängigen Calling Conventions, sauberen Stack Frames, und generell den üblichen Mustern die ein Compiler produziert. Der decompilierte C-Code (z.B.) ist, falls der Decompiler nicht sowieso wegen komischen Sprüngen mit komischen Stack-Layouts aussteigt, bestenfalls bizarr. Selbst 16-bit C-Sourcecode wäre sehr schwer zu verwerten (ich kann separat ausführen warum).
Um zurück zum Thema Rollercoaster Tycoon zu kommen: Ich vermute, dass auch das weiterverwerten des handgeschriebenen 32-Bit-Windows-Code sich nur schwer für andere Plattformen weiterverwenden lassen würde. Wäre er von einem Compiler generiert worden, sähe das anders aus, da er dann eine viel bessere Chance hätte, sinnvoll decompiliert zu werden.