summaryrefslogtreecommitdiff
path: root/pages/dekomp.php
blob: 0dbfe75876a33106f97a26aaac5f9b90e8a5da44 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<?php $NAV_LINK_ID = "dekomp"; ?>
<?php $PAGE_TITLE = "Dekomp"; ?>
<?php include __DIR__ . "/../includes/template_start.php"; ?>

<h1>Dekomp</h1>

<?php c_alert('<b>Falls du mithelfen m&ouml;chtest:</b> Melde dich bitte ' .
    'im <a href="https://forum.mystic.jkohl.link" target="_top">' .
    '<font color=blue>Forum</font></a> und wir werden uns mit dir '.
    'in Verbindung setzen!', "info", "info-sign"); ?>

<p>Folgendes wissen wir bereits:</p>

<p>
Die Spiele&ndash;Engine nennt sich <i>GadgetPlayer</i> und liegt in einer 16&ndash;
und einer 32&ndash;Bit&ndash;Variante vor. Diese Spiele&ndash;Engine scheint generisch
zu sein, da die Versionen in <i>Mystic House</i> und <i>Yucatan: Das Gold der Mayas</i>
(welches von den selben Entwicklern gemacht wurde) identisch sind. Stattdessen wird die
<tt>GPLAY<i>xx</i>.EXE</tt> mit dem Parameter <tt>/N<i>&lt;Basispfad zu Spiel&ndash;Dateien&gt;</i></tt>
aufgerufen. Bei <i>Mystic House</i> ist der Aufruf also beispielsweise
<tt>GPLAY32.EXE /NC:\MYSTIC\HOUSE</tt>, wenn das Spiel in <tt>C:\MYSTIC</tt> installiert
wurde. Dabei ist vor Allem der letzte Part des Pfades interessant: Das <i>HOUSE</i> am Ende
ist Basis f&uuml;r Zugriff auf die <tt>HOUSE.GAD</tt> (welche &mdash; vermutlich &mdash; die meisten Parameter
und Individualit&auml;t f&uuml;r das Spiel bereitstellt), die <tt>HOUSE.ACT</tt>, <tt>HOUSE.GTX</tt> und <tt>HOUSE.INF</tt>.
</p>

<p>
Auch wissen wir, dass das Spiel mit <i>Microsoft Visual C++ 4.x</i> (Linker Version 4.20) mithilfe
der MFC (also der <i>Windows Media Foundation Classes</i>) entwickelt wurde. Es ist also erst einmal
weniger Spiel und mehr klassische Win32 Desktop&ndash;Anwendung, wie man sie aus der Windows
3.11 &Auml;ra nunmal kennt. F&uuml;r die Video&ndash;Wiedergabe kommt <i>Microsoft Video For Windows</i>
zum Einsatz.
</p>

<h2>Dateien</h2>
<p>Im Folgenden sind die Dateien im Spieleverzeichnis und deren Zweck dokumentiert:</p>
<?php if ($__mobile): ?>
<table class="table table-bordered table-striped">
<?php else: ?>
<table border="1" bordercolor="#996633" cellspacing="0" cellpadding="2">
<?php endif; ?>
<thead>
<tr>
<th>Art</th>
<th>Name</th>
<th>Beschreibung/Inhalt</th>
</tr>
</thead>
<tbody>
<tr>
<td>Verzeichnis</td>
<td><tt>RESAUDIO</tt></td>
<td>Enth&auml;lt Soundeffekte und Musik (im WAV&ndash; resp. MIDI&ndash;Format)</td>
</tr>
<tr>
<td>Verzeichnis</td>
<td><tt>RESIMAGE</tt></td>
<td>Enthält die Hintrgr&uuml;nde und weitere Bilder des Spiels (die IMG&ndash;Dateien sind umbenannte BMP&ndash;Dateien)</td>
</tr>
<tr>
<td>Verzeichnis</td>
<td><tt>RESVIDEO</tt></td>
<td>Beinhaltet die Video&ndash;Sequenzen des Spiels</td>
</tr>
<tr>
<td>Verzeichnis</td>
<td><tt>VFW</tt></td>
<td>Enth&auml;lt das &bdquo;Video For Windows&ldquo;&ndash;Setup (Ben&ouml;tigt f&uuml;r Windows 3.11)</td>
</tr>
<tr>
<td>Datei</td>
<td><tt>GPLAY16.EXE</tt></td>
<td>GadgetPlayer (16&ndash;Bit&ndash;Version, f&uuml;r Windows 3.11)</td>
</tr>
<tr>
<td>Datei</td>
<td><tt>GPLAY32.EXE</tt></td>
<td>GadgetPlayer (32&ndash;Bit&ndash;Version, f&uuml;r Windows 95 und neuer)</td>
</tr>
<tr>
<td>Datei</td>
<td><tt>HOUSE.ACT</tt></td>
<td>?</td>
</tr>
<tr>
<td>Datei</td>
<td><tt>HOUSE.EXE</tt></td>
<td>Initialer &bdquo;Launcher&ldquo;. Startet die jeweilige <tt>GPLAY<i>xx</i>.EXE</tt> mit dem richtigen Parameter.</td>
</tr>
<tr>
<td>Datei</td>
<td><tt><a href="#file_house_gad">HOUSE.GAD</a></tt></td>
<td>Die Haupt&ndash;Gameplay&ndash;Datei (&bdquo;Gadget&ndash;Datei&ldquo;)</td>
</tr>
<tr>
<td>Datei</td>
<td><tt>HOUSE.GTX</tt></td>
<td>Datei im INI&ndash;Format. Enth&auml;lt Dialogtexte f&uuml;r das Spiel (Windows 1252 kodiert)</td>
</tr>
<tr>
<td>Datei</td>
<td><tt>HOUSE.INF</tt></td>
<td>Datei im INI&ndash;Format. Enth&auml;lt Men&uuml;texte des Spiels (Windows 1252 kodiert)</td>
</tr>
<tr>
<td>Datei</td>
<td><tt>Loesung.txt</tt></td>
<td>Die <a href="../site.php?p=loesung.php" target="_top">Komplettl&ouml;sung</a> des Spiels</td>
</tr>
</tbody>
</table>

<a name="file_house_gad"></a>
<h3>HOUSE.GAD</h3>

<p>Diese Datei scheint verantwortlich f&uuml;r das Gameplay und das Branding des Spiels.</p>

<p>Magic Bytes: <tt>47 41 44 47 45 54</tt> (<tt>GADGET</tt>)</p>

<h4>Strings</h4>

<?php if ($__mobile): ?>
<table class="table table-bordered table-striped">
<?php else: ?>
<table border="1" bordercolor="#996633" cellspacing="0" cellpadding="2">
<?php endif; ?>
<thead>
<tr>
<th align="right">Offset</th>
<th align="right">L&auml;nge</th>
<th>Zweck</th>
</tr>
</thead>
<tbody>
<tr>
<td align="right"><tt>0x414</tt></td>
<td align="right"><tt>0x80</tt></td>
<td>Spielname in Fenstertiteln (ANSI). <strong>Muss mit einem terminierenden <tt>NUL</tt>&ndash;Byte abschlie&szlig;en, um nicht <i>out of bounds</i> zu lesen.</strong></td>
</tr>
<tr>
<td align="right"><tt>0x494</tt></td>
<td align="right"><tt>0x80</tt></td>
<td>Spielname im &bdquo;&Uuml;ber&hellip;&ldquo;&ndash;Fenster. Muss ebenfalls mit <tt>NUL</tt>&ndash;Byte abschlie&szlig;en.</td>
</tr>
<tr>
<td align="right"><tt>0x514</tt></td>
<td align="right"><tt>0x80</tt></td>
<td>Copyright&ndash;Text im &bdquo;&Uuml;ber&hellip;&ldquo;&ndash;Fenster. Wird unter <em>Part. Copyright &copy; 1996 by Microsoft Corp.</em> angezeigt. Muss ebenfalls mit <tt>NUL</tt>&ndash;Byte abschlie&szlig;en.</td>
</tr>
<tr>
<td align="right"><tt>0x594</tt></td>
<td align="right"><tt>0x08</tt></td>
<td>Versionsnummer als Klartext. Muss mit <tt>NUL</tt>&ndash;Byte abschlie&szlig;en.</td>
</tr>
</tbody>
</table>

<?php include __DIR__ . "/../includes/template_end.php"; ?>