Themabewertung:
  • 1 Bewertung(en) - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
DOSBox-Patch für Schicksalsklinge
#28
(18.12.2008, 19:38)HenneNWH schrieb: Achtung, jetzt wirds technisch:
Die SCHICKM.EXE enthält C-Library Funktionen wie z.B. memset() die, egal unter welchem OS, immer die gleich Aufgabe haben.
Meine Idee ist nun, anstatt jedes memset() teuer von DOSBox emulieren zu lassen, es stadtdessen durch das memset() der C-Library auf dem eigenen System zu ersetzen und den Funktionsaufruf an entsprechender Stelle zu überspringen.

Das würde, wenn es für alle C-Funktionen gemacht würde, folgende Vorteile haben:
  1. einen netten Geschwindigkeitsvorteil bringen
  2. Codeteile aus dem DOS-Binary könnten nach und nach in C übertragen werden und
  3. DSA1 wäre in jeder Stufe der Entwicklung spielbar

Es wäre z.B. auch möglich die SCHICK.DAT in einen Puffer zu laden und bei Dateioperationen nur aus diesem Puffer zu lesen, anstatt die Festplatte jedesmal zu bemühen. (Green-IT). :D

Ein Nachteil wäre, dass es nur Leute aktiv mitmachen können, die DOS und x86-16-bit-Assembler beherrschen und Wohnungen durchs Schlüsselloch tapezieren.

Was hälste denn davon?

Hi HenneNWH,

Entschuldigung, dass ich deinen Beitrag erst jetzt beantworte, ich hatte ihn im vorweihnachtlichen Trubel einfach übersehen.

Die Idee ist bestechend: Man könnte sozusagen stückweise den Code der Schicksalsklinge rekonstruieren, angefangen mit den C-Funktionen und dann nach und nach die einzelnen Funktionen. Und man hätte zu jeden Zeitpunkt eine direkte Kontrollmöglichkeit, ob sich das Spiel immer noch genauso verhält wie zuvor.

Technisch sind dabei natürlich noch einige Fragen offen. Vor allem würde mich interessieren, wie du dir das Überspringen des Originalcodes vorstellst. Der CALL der C-Funktion lässt sich leicht finden, nichts anderes macht ja mein Patch. Aber kann man auch das passende RET so ohne weiteres ermitteln? Es sollte ja reichen, alle CALL-/RET-Aufrufe mitzuzählen und so über die Tiefe des Callstacks das richtige RET zu finden, und dazwischen alle Befehle zu ignorieren. Oder kann es da zu Problemen kommen, wenn z.B. statt eines RET der Callstack direkt manipuliert wird und mittels JMP zurückgesprungen?

Außerdem ist das ein nicht geringer Aufwand. Die SCHICKM.EXE hat laut meinem Debugger (IDA 4.9) knapp 2500 Funktionen, und die müssten am Ende alle irgendwie abgebildet sein. Auch wenn dabei sicherlich viele Trivialitäten sind, ist das ohne Automatisierung kaum zu schaffen, vor allem, da nur wenige Leute sich daran beteiligen könnten.
Hallo, ich bin's - der Bart von Fidel Castro. Und mir ist total langweilich nie geschnitten wurde.
I'm a roleplayer. My dice are like my relationships: platonic and unlucky.
Zitieren


Nachrichten in diesem Thema
RE: DOSBox-Patch für Schicksalsklinge - von Hendrik - 10.01.2009, 17:12



Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste