…Show last 343 lines
61 $A8 $01 # test al, 1
62 $74 $FB # jz @l1
63 #@l2:
64 $EC # in al, dx
65 $A8 $01 # test al, 1
66 $75 $FB # jnz @l2
67 $8B $4E $06 # mov cx, [bp+arg_start]
68 $BA $03D4w # mov dx, 3D4h
69 $B0 $0C # mov al, 0Ch
70 $EE # out dx, al
71 $42 # inc dx
72 $8A $C5 # mov al, ch
73 $EE # out dx, al
74 $4A # dec dx
75 $B0 $0D # mov al, 0Dh
76 $EE # out dx, al
77 $8A $C1 # mov al, cl
78 $42 # inc dx
79 $EE # out dx, al
80 $8B $0E $D022w # mov cx, fixjerky
81 $E3 $03 # jcxz @l3
82 $E8 $F054w # call WaitVBL
83 #@l3:
84 $BA $03C0w # mov dx, 3C0h
85 $B0 $33 # mov al, 33h
86 $EE # out dx, al
87 $EB $00 # jmp $
88 $8A $46 $08 # mov al, [bp+arg_pan]
89 $EE # out dx, al
90 $E9 $F060w # jmp rest_of_VW_SetScreen
91
92# replace VW_Plot with new code (VW_Plot now uses VW_Vlin to plot one pixel)
93%patch $119CC
94 $55 # push bp
95 $8B $EC # mov bp, sp
96 $FF $76 $0A # push [bp+10] ;color
97 $FF $76 $06 # push [bp+6] ;x
98 $8B $46 $08 # mov ax, [bp+8] ;y
99 $50 # push ax ;y
100 $50 # push ax ;y
101 $0E # push cs
102 $E8 $003Dw # call VW_Vlin
103 $8B $E5 # mov sp, bp
104 $5D # pop bp
105 $CB # retf
106
107#WaitVBL:
108 $8B $1E $E3F2w # mov bx, word ptr TimeCount
109 $BA $03DAw # mov dx, 3DAh
110 #@wait:
111 $FB # sti
112 $EB $00 # jmp short $
113 $FA # cli
114 $EC # in al, dx
115 $A8 $08 # test al, 8
116 $75 $0A # jnz @done
117 $A1 $E3F2w # mov ax, word ptr TimeCount
118 $2B $C3 # sub ax, bx
119 $3D $0001w # cmp ax, 1
120 $76 $ED # jbe @wait
121 #@done:
122 $C3 # retn
123
124#rest_of_VW_SetScreen:
125 $0B $C9 # or cx, cx
126 $75 $03 # jnz @l5
127 $E8 $FFDEw # call WaitVBL
128 #@l5:
129 $FB # sti
130 $5D # pop bp
131 $CB # retf
132
133#-------------------------------------------------------
134
135
136
137#=======================================================
138# Dangerous Dave 3 - Dave's Risky Rescue v1.01 (Rev 3):
139#=======================================================
140%exefile DAVE.EXE 208432
141
142#-------------------------------------------------------
143# fix CPU speed sensitivity in AdLib/SoundBlaster code:
144%patch $161F5
145 $BA $0388w # mov dx, 388h
146 $B9 $0009w # mov cx, 9
147 $EC #inl: in al, dx
148 $E2 $FD # loop inl
149
150%patch $16209
151 $BA $0388w # mov dx, 388h
152 $B9 $0064w # mov cx, 100
153 $EC #inl: in al, dx
154 $E2 $FD # loop inl
155
156%patch $164FC
157 $BA $0388w # mov dx, 388h
158 $B9 $0006w # mov cx, 6
159 $EC #inl: in al, dx
160 $E2 $FD # loop inl
161
162%patch $1650D
163 $BA $0388w # mov dx, 388h
164 $B9 $0023w # mov cx, 35
165 $EC #inl: in al, dx
166 $E2 $FD # loop inl
167
168%patch $16B8B
169 $BA $0388w # mov dx, 388h
170 $B9 $0064w # mov cx, 100
171 $EC #inl: in al, dx
172 $E2 $FD # loop inl
173
174#-------------------------------------------------------
175
176
177#-------------------------------------------------------
178# Customized Screen Update Code
179
180# add /JERK parameter check:
181%patch $28930
182 $00E0w # "COMP"
183 $42B6w # "JERK"
184 $0000w
185 "JERK" $00
186
187# replace old VW_SetScreen code (doesn't all fit, though!)
188%patch $12AE5
189 $55 # push bp
190 $8B $EC # mov bp, sp
191 $BA $03DAw # mov dx, 3DAh
192 $FA # cli
193 #@l1:
194 $EC # in al, dx
195 $A8 $01 # test al, 1
196 $74 $FB # jz @l1
197 #@l2:
198 $EC # in al, dx
199 $A8 $01 # test al, 1
200 $75 $FB # jnz @l2
201 $8B $4E $06 # mov cx, [bp+arg_start]
202 $BA $03D4w # mov dx, 3D4h
203 $B0 $0C # mov al, 0Ch
204 $EE # out dx, al
205 $42 # inc dx
206 $8A $C5 # mov al, ch
207 $EE # out dx, al
208 $4A # dec dx
209 $B0 $0D # mov al, 0Dh
210 $EE # out dx, al
211 $8A $C1 # mov al, cl
212 $42 # inc dx
213 $EE # out dx, al
214 $8B $0E $D13Aw # mov cx, fixjerky
215 $E3 $03 # jcxz @l3
216 $E8 $F054w # call WaitVBL
217 #@l3:
218 $BA $03C0w # mov dx, 3C0h
219 $B0 $33 # mov al, 33h
220 $EE # out dx, al
221 $EB $00 # jmp $
222 $8A $46 $08 # mov al, [bp+arg_pan]
223 $EE # out dx, al
224 $E9 $F060w # jmp rest_of_VW_SetScreen
225
226# replace VW_Plot with new code (VW_Plot now uses VW_Vlin to plot one pixel)
227%patch $11B52
228 $55 # push bp
229 $8B $EC # mov bp, sp
230 $FF $76 $0A # push [bp+10] ;color
231 $FF $76 $06 # push [bp+6] ;x
232 $8B $46 $08 # mov ax, [bp+8] ;y
233 $50 # push ax ;y
234 $50 # push ax ;y
235 $0E # push cs
236 $E8 $003Dw # call VW_Vlin
237 $8B $E5 # mov sp, bp
238 $5D # pop bp
239 $CB # retf
240
241#WaitVBL:
242 $8B $1E $E50Aw # mov bx, word ptr TimeCount
243 $BA $03DAw # mov dx, 3DAh
244 #@wait:
245 $FB # sti
246 $EB $00 # jmp short $
247 $FA # cli
248 $EC # in al, dx
249 $A8 $08 # test al, 8
250 $75 $0A # jnz @done
251 $A1 $E50Aw # mov ax, word ptr TimeCount
252 $2B $C3 # sub ax, bx
253 $3D $0001w # cmp ax, 1
254 $76 $ED # jbe @wait
255 #@done:
256 $C3 # retn
257
258#rest_of_VW_SetScreen:
259 $0B $C9 # or cx, cx
260 $75 $03 # jnz @l5
261 $E8 $FFDEw # call WaitVBL
262 #@l5:
263 $FB # sti
264 $5D # pop bp
265 $CB # retf
266
267#-------------------------------------------------------
268
269
270#=======================================================
271# Dangerous Dave 4 - Dave Goes Nutz! v1.01 (Rev 1):
272#=======================================================
273
274%exefile DAVEGAME.EXE 195136
275
276#-------------------------------------------------------
277# fix CPU speed sensitivity in AdLib/SoundBlaster code:
278%patch $15B83
279 $BA $0388w # mov dx, 388h
280 $B9 $0009w # mov cx, 9
281 $EC #inl: in al, dx
282 $E2 $FD # loop inl
283
284%patch $15B97
285 $BA $0388w # mov dx, 388h
286 $B9 $0064w # mov cx, 100
287 $EC #inl: in al, dx
288 $E2 $FD # loop inl
289
290%patch $15E8A
291 $BA $0388w # mov dx, 388h
292 $B9 $0006w # mov cx, 6
293 $EC #inl: in al, dx
294 $E2 $FD # loop inl
295
296%patch $15E9B
297 $BA $0388w # mov dx, 388h
298 $B9 $0023w # mov cx, 35
299 $EC #inl: in al, dx
300 $E2 $FD # loop inl
301
302%patch $16519
303 $BA $0388w # mov dx, 388h
304 $B9 $0064w # mov cx, 100
305 $EC #inl: in al, dx
306 $E2 $FD # loop inl
307
308#-------------------------------------------------------
309
310
311#-------------------------------------------------------
312# Customized Screen Update Code
313
314# add /JERK parameter check:
315%patch $26218
316 $00E0w # "COMP"
317 $420Ew # "JERK"
318 $0000w
319 "JERK" $00
320
321# replace old VW_SetScreen code (doesn't all fit, though!)
322%patch $12473
323 $55 # push bp
324 $8B $EC # mov bp, sp
325 $BA $03DAw # mov dx, 3DAh
326 $FA # cli
327 #@l1:
328 $EC # in al, dx
329 $A8 $01 # test al, 1
330 $74 $FB # jz @l1
331 #@l2:
332 $EC # in al, dx
333 $A8 $01 # test al, 1
334 $75 $FB # jnz @l2
335 $8B $4E $06 # mov cx, [bp+arg_start]
336 $BA $03D4w # mov dx, 3D4h
337 $B0 $0C # mov al, 0Ch
338 $EE # out dx, al
339 $42 # inc dx
340 $8A $C5 # mov al, ch
341 $EE # out dx, al
342 $4A # dec dx
343 $B0 $0D # mov al, 0Dh
344 $EE # out dx, al
345 $8A $C1 # mov al, cl
346 $42 # inc dx
347 $EE # out dx, al
348 $8B $0E $C56Cw # mov cx, fixjerky
349 $E3 $03 # jcxz @l3
350 $E8 $F054w # call WaitVBL
351 #@l3:
352 $BA $03C0w # mov dx, 3C0h
353 $B0 $33 # mov al, 33h
354 $EE # out dx, al
355 $EB $00 # jmp $
356 $8A $46 $08 # mov al, [bp+arg_pan]
357 $EE # out dx, al
358 $E9 $F060w # jmp rest_of_VW_SetScreen
359
360# replace VW_Plot with new code (VW_Plot now uses VW_Vlin to plot one pixel)
361%patch $114E0
362 $55 # push bp
363 $8B $EC # mov bp, sp
364 $FF $76 $0A # push [bp+10] ;color
365 $FF $76 $06 # push [bp+6] ;x
366 $8B $46 $08 # mov ax, [bp+8] ;y
367 $50 # push ax ;y
368 $50 # push ax ;y
369 $0E # push cs
370 $E8 $003Dw # call VW_Vlin
371 $8B $E5 # mov sp, bp
372 $5D # pop bp
373 $CB # retf
374
375#WaitVBL:
376 $8B $1E $D78Cw # mov bx, word ptr TimeCount
377 $BA $03DAw # mov dx, 3DAh
378 #@wait:
379 $FB # sti
380 $EB $00 # jmp short $
381 $FA # cli
382 $EC # in al, dx
383 $A8 $08 # test al, 8
384 $75 $0A # jnz @done
385 $A1 $D78Cw # mov ax, word ptr TimeCount
386 $2B $C3 # sub ax, bx
387 $3D $0001w # cmp ax, 1
388 $76 $ED # jbe @wait
389 #@done:
390 $C3 # retn
391
392#rest_of_VW_SetScreen:
393 $0B $C9 # or cx, cx
394 $75 $03 # jnz @l5
395 $E8 $FFDEw # call WaitVBL
396 #@l5:
397 $FB # sti
398 $5D # pop bp
399 $CB # retf
400
401#-------------------------------------------------------
402
403%end