]> 4ch.mooo.com Git - plz.git/blob - tweak.asm
wwwwwwwwww
[plz.git] / tweak.asm
1                 IDEAL\r
2                 MODEL huge\r
3 \r
4 CODESEG\r
5 \r
6 PUBLIC  C tw_opengraph, C tw_putpixel, C tw_setpalette, C tw_setstart\r
7 PUBLIC  C tw_pictovmem, C tw_closegraph, C tw_waitvr, C tw_setrgbpalette\r
8 PUBLIC  C tw_clrscr, C tw_setpalarea, C tw_getpixel, C tw_opengraph2\r
9 \r
10 PUBLIC          C scr_seg               ; videomuistin alku segmentti\r
11 \r
12 planetau        db      1,2,4,8\r
13 scr_seg         dw      0a000h\r
14 \r
15 ;       avaa 320x200 tweak tilan, 4 sivua, 4 planea\r
16 \r
17 PROC    tw_opengraph\r
18 \r
19         mov     dx, 03c4h\r
20         mov     ax, 0f02h\r
21         out     dx, ax\r
22         mov     dx, 0a000h\r
23         mov     es, dx\r
24         xor     di, di\r
25         xor     ax, ax\r
26         mov     cx, 8000h\r
27         rep     stosw                   ; clear vmem\r
28 \r
29         mov     dx, 3d4h\r
30         mov     ax, 0209h\r
31         out     dx, ax                  ; 134 y\r
32 \r
33         mov     ax, 5013h\r
34         out     dx, ax                  ; 640 wide\r
35         ret\r
36 ENDP\r
37 \r
38 \r
39 PROC    tw_opengraph2\r
40 \r
41         mov     dx, 03c4h\r
42         mov     ax, 0604h\r
43         out     dx, ax                  ; chain4 off\r
44 \r
45         mov     ax, 0f02h\r
46         out     dx, ax\r
47         mov     dx, 0a000h\r
48         mov     es, dx\r
49         xor     di, di\r
50         xor     ax, ax\r
51         mov     cx, 8000h\r
52         rep     stosw                   ; clear vmem\r
53 \r
54         mov     dx, 03d4h\r
55         mov     ax, 0014h\r
56         out     dx, ax                  ; crtc long off\r
57 \r
58         mov     ax, 0e317h\r
59         out     dx, ax                  ; crtc byte on\r
60 \r
61         mov     ax, 0009h\r
62         out     dx, ax                  ; 400\r
63 \r
64         mov     ax, 3013h\r
65         out     dx, ax                  ; 384 wide\r
66 \r
67         ret\r
68 ENDP\r
69 \r
70 \r
71 \r
72 PROC    tw_clrscr\r
73 \r
74         mov     dx, 3c4h\r
75         mov     ax, 0f02h\r
76         out     dx, ax\r
77         mov     dx, [cs:scr_seg]\r
78         mov     es, dx\r
79         xor     di, di\r
80         xor     eax, eax\r
81         mov     cx, 1000h\r
82         rep     stosd                   ; clear vmem\r
83 \r
84         ret\r
85 ENDP\r
86 \r
87 PROC    tw_closegraph\r
88 \r
89         mov     ax, 03h\r
90         int     10h\r
91 \r
92         ret\r
93 ENDP\r
94 \r
95 ;       piirt\84\84 pisteen ruudulle\r
96 \r
97 PROC    tw_putpixel\r
98 \r
99         ARG     x:word, y:word, color:word\r
100 \r
101         push    bp\r
102         mov     bp, sp\r
103 \r
104         mov     ax, [cs:scr_seg]\r
105         mov     es, ax\r
106 \r
107         mov     dx, 03c4h\r
108         mov     bx, [x]\r
109         and     bx, 03h\r
110         mov     ah, [cs:planetau+bx]\r
111         mov     al, 02h\r
112         out     dx, ax              ; select plane\r
113 \r
114         mov     bx, [x]\r
115         shr     bx, 2\r
116         mov     ax, [y]\r
117         shl     ax, 4\r
118         add     bx, ax\r
119         shl     ax, 1\r
120         add     bx, ax\r
121         shl     ax, 2\r
122         add     bx, ax\r
123 \r
124         mov cx, [color]\r
125         mov     [es:bx], cl\r
126 \r
127         pop     bp\r
128         ret\r
129 ENDP\r
130 \r
131 PROC    tw_getpixel\r
132 \r
133         ARG     x:word, y:word\r
134 \r
135         push    bp\r
136         mov     bp, sp\r
137 \r
138         mov     ax, [scr_seg]\r
139         mov     es, ax\r
140 \r
141         mov     dx, 03ceh\r
142         mov     ax, [x]\r
143         and     ax, 03h\r
144         mov     ah, al\r
145         mov     al, 04h\r
146         out     dx, ax                          ; select plane\r
147 \r
148         mov     ax, [y]\r
149         shl     ax, 4\r
150         mov     bx, ax\r
151         shl     ax, 1\r
152         add     bx, ax\r
153         shl     ax, 2\r
154         add     bx, ax\r
155         mov     ax, [x]\r
156         shr     ax, 2\r
157         add     bx, ax\r
158 \r
159         xor     ax, ax\r
160         mov     al,[es:bx]\r
161 \r
162         pop     bp\r
163         ret\r
164 ENDP\r
165 ;       vaihtaa koko paletin\r
166 \r
167 PROC    tw_setpalette\r
168 \r
169         ARG     pal:dword\r
170 \r
171         push    bp\r
172         mov     bp, sp\r
173         push    si ds\r
174 \r
175         lds     si,[pal]\r
176         cld\r
177         mov     cx, 300h\r
178         mov     dx, 03c8h\r
179         mov     al, 0\r
180         out     dx, al\r
181         inc     dx\r
182 \r
183         rep     outsb\r
184 \r
185         pop     ds si\r
186         pop     bp\r
187         ret\r
188 ENDP\r
189 \r
190 PROC    C tw_setpalarea\r
191 \r
192         ARG     pal:dword, start:word, cnt:word\r
193 \r
194         push    si ds\r
195 \r
196         lds     si,[pal]\r
197         cld\r
198         mov     cx, [cnt]\r
199         mov     ax, cx\r
200         add     cx, ax\r
201         add     cx, ax\r
202         mov     dx, 03c8h\r
203         mov     ax, [start]\r
204         out     dx, al\r
205         inc     dx\r
206 \r
207         rep     outsb\r
208 \r
209         pop     ds si\r
210         ret\r
211 ENDP\r
212 \r
213 ;       asettaa videomuistin alun\r
214 \r
215 PROC    tw_setstart\r
216 \r
217         ARG     start:word\r
218 \r
219         push    bp\r
220         mov     bp,sp\r
221 \r
222         mov     bx, [start]\r
223         mov     dx, 03d4h\r
224         mov     al, 0dh\r
225         mov     ah, bl\r
226         out     dx, ax\r
227         mov     al, 0ch\r
228         mov     ah, bh\r
229         out     dx, ax\r
230 \r
231         pop     bp\r
232         ret\r
233 ENDP\r
234 \r
235 ; kopioi muistista unpacked 1bpl kuvan 4planen kuvaksi videomuistiin\r
236 ; void tw_pictovmem(char far *pic, unsigned int vstart, unsigned int bytes);\r
237 \r
238 PROC    tw_pictovmem\r
239 \r
240         ARG     pic:dword,to:word,len:word\r
241 \r
242         push    bp\r
243         mov     bp,sp\r
244         push    ds es si di\r
245 \r
246         mov     es, [scr_seg]\r
247         mov     di, [to]\r
248         lds     si, [pic]\r
249         mov     cx, [len]\r
250 \r
251         mov    dx,03ceh\r
252         mov    ax,4005h                 ; w-mode 0\r
253         out    dx,ax\r
254 \r
255         mov     dx, 03c4h\r
256         mov     al, 02h\r
257         mov     ah, 1h\r
258         out     dx, ax\r
259         shr     cx, 2\r
260 @@l1:\r
261         movsb\r
262         add     si, 3\r
263         loop    @@l1\r
264 \r
265 \r
266         lds     si, [pic]\r
267         add     si, 1d\r
268         mov     di, [to]\r
269         mov     cx, [len]\r
270 \r
271         mov     ax, 0202h\r
272         out     dx, ax\r
273         shr     cx, 2\r
274 @@l2:\r
275         movsb\r
276         add     si, 3\r
277         loop    @@l2\r
278 \r
279 \r
280         lds     si, [pic]\r
281         add     si, 2d\r
282         mov     di, [to]\r
283         mov     cx, [len]\r
284 \r
285         mov     ax, 0402h\r
286         out     dx, ax\r
287         shr     cx, 2\r
288 @@l3:\r
289         movsb\r
290         add     si, 3\r
291         loop    @@l3\r
292 \r
293 \r
294         lds     si, [pic]\r
295         add     si, 3d\r
296         mov     di, [to]\r
297         mov     cx, [len]\r
298 \r
299         mov     ax, 0802h\r
300         out     dx, ax\r
301         shr     cx, 2\r
302 @@l4:\r
303         movsb\r
304         add     si, 3\r
305         loop    @@l4\r
306 \r
307         pop     di si es ds\r
308         pop     bp\r
309         ret\r
310 ENDP\r
311 \r
312 PROC    tw_waitvr\r
313 \r
314         mov     dx, 03dah\r
315 \r
316 @@loop1:\r
317         in      al, dx\r
318         test    al, 08h\r
319         jnz     @@loop1\r
320 \r
321 @@loop2:\r
322         in      al, dx\r
323         test    al, 08h\r
324         jz      @@loop2\r
325 \r
326         ret\r
327 ENDP\r
328 \r
329 \r
330 PROC    C tw_setrgbpalette\r
331 \r
332         ARG     pal:word, r:word, g:word, b:word\r
333 \r
334         mov     dx, 3c8h\r
335         mov     ax, [pal]\r
336         out     dx, al\r
337 \r
338         inc     dx\r
339         mov     ax, [r]\r
340         out     dx, al\r
341         mov     ax, [g]\r
342         out     dx, al\r
343         mov     ax, [b]\r
344         out     dx, al\r
345 \r
346         ret\r
347 ENDP\r
348 \r
349 END\r