Rev 2984 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2984 | Rev 6619 | ||
---|---|---|---|
Line 39... | Line 39... | ||
39 | .screen equ ebp-52 |
39 | .screen equ ebp-52 |
40 | .zbuffer equ ebp-56 |
40 | .zbuffer equ ebp-56 |
41 | .ccoord equ ebp-60 ;current coordinate |
41 | .ccoord equ ebp-60 ;current coordinate |
42 | .czbuf equ ebp-64 |
42 | .czbuf equ ebp-64 |
43 | .cscr equ ebp-68 |
43 | .cscr equ ebp-68 |
- | 44 | .xres equ ebp-72 |
|
- | 45 | .yres equ ebp-76 |
|
- | 46 | .xresm1 equ ebp-80 |
|
- | 47 | .yresm1 equ ebp-84 |
|
- | 48 | .xresp1 equ ebp-88 |
|
44 | ;.lasty equ ebp-72 |
49 | .yresp1 equ ebp-92 |
- | 50 | .xres3 equ ebp-96 |
|
- | 51 | .xres4 equ ebp-100 |
|
- | 52 | ||
45 | macro .update_cur_var |
53 | macro .update_cur_var |
46 | { |
54 | { |
47 | if Ext=NON |
55 | if Ext=NON |
48 | mov ebx,[.dz] |
56 | mov ebx,[.dz] |
49 | add [.cz],ebx |
57 | add [.cz],ebx |
Line 124... | Line 132... | ||
124 | mov eax,[.x1] ; check if parameters exceedes screen area |
132 | mov eax,[.x1] ; check if parameters exceedes screen area |
125 | mov ebx,[.x2] |
133 | mov ebx,[.x2] |
126 | or eax,ebx |
134 | or eax,ebx |
127 | test eax,80008000h |
135 | test eax,80008000h |
128 | jne .end_line |
136 | jne .end_line |
- | 137 | movzx edx,word [size_x_var] |
|
- | 138 | mov [.xres],edx |
|
- | 139 | movzx ecx,word [size_y_var] |
|
- | 140 | mov [.yres],ecx |
|
129 | cmp word[.x1],SIZE_X |
141 | cmp word[.x1],dx ;SIZE_X |
130 | jg .end_line |
142 | jg .end_line |
131 | cmp word[.x2],SIZE_X |
143 | cmp word[.x2],dx ;SIZE_X |
132 | jg .end_line |
144 | jg .end_line |
133 | cmp word[.y1],SIZE_Y |
145 | cmp word[.y1],cx ;SIZE_Y |
134 | jg .end_line |
146 | jg .end_line |
135 | cmp word[.y2],SIZE_Y |
147 | cmp word[.y2],cx ;SIZE_Y |
136 | jg .end_line |
148 | jg .end_line |
Line -... | Line 149... | ||
- | 149 | ||
- | 150 | mov edx,[.xres] |
|
- | 151 | shl edx,2 |
|
- | 152 | mov [.xres4],edx |
|
- | 153 | shr edx,2 |
|
- | 154 | lea edx,[edx*3] |
|
- | 155 | mov [.xres3],edx |
|
- | 156 | mov edx,[.xres] |
|
- | 157 | mov ecx,[.yres] |
|
- | 158 | dec edx |
|
- | 159 | dec ecx |
|
- | 160 | mov [.xresm1],edx |
|
- | 161 | mov [.yresm1],ecx |
|
- | 162 | add edx,2 |
|
- | 163 | add ecx,2 |
|
- | 164 | mov [.xresp1],edx |
|
Line 137... | Line 165... | ||
137 | 165 | mov [.yresp1],ecx |
|
138 | 166 | ||
139 | mov [.screen],edi |
167 | mov [.screen],edi |
140 | mov cx,[.x1] |
168 | mov cx,[.x1] |
Line 179... | Line 207... | ||
179 | je .end_line |
207 | je .end_line |
180 | mov [.delta_x],ebx |
208 | mov [.delta_x],ebx |
Line 181... | Line 209... | ||
181 | 209 | ||
Line 182... | Line 210... | ||
182 | call .calc_delta |
210 | call .calc_delta |
183 | 211 | ||
184 | mov eax,SIZE_X |
212 | movzx eax,word [size_x_var] ;SIZE_X |
185 | movsx ebx,word[.y1] |
213 | movsx ebx,word[.y1] |
186 | mul ebx |
214 | mul ebx |
187 | add esi,eax |
215 | add esi,eax |
Line 245... | Line 273... | ||
245 | je .end_line |
273 | je .end_line |
246 | mov [.delta_y],ebx |
274 | mov [.delta_y],ebx |
Line 247... | Line 275... | ||
247 | 275 | ||
Line 248... | Line 276... | ||
248 | call .calc_delta |
276 | call .calc_delta |
249 | 277 | ||
250 | mov eax,SIZE_X |
278 | movzx eax,word[size_x_var] ;SIZE_X |
251 | movsx ebx,word[.y1] |
279 | movsx ebx,word[.y1] |
252 | mul ebx |
280 | mul ebx |
253 | add esi,eax |
281 | add esi,eax |
Line 288... | Line 316... | ||
288 | jle @f |
316 | jle @f |
Line 289... | Line 317... | ||
289 | 317 | ||
Line 290... | Line 318... | ||
290 | .draw_pixel |
318 | .draw_pixel |
291 | 319 | ||
292 | @@: |
320 | @@: |
Line 293... | Line 321... | ||
293 | add edi,SIZE_X*3 |
321 | add edi,[.xres3] |
Line 294... | Line 322... | ||
294 | add esi,SIZE_X*4 |
322 | add esi,[.xres4] |
295 | 323 | ||
Line 316... | Line 344... | ||
316 | movsx ebx,bx |
344 | movsx ebx,bx |
317 | mov [.delta_x],ebx |
345 | mov [.delta_x],ebx |
Line 318... | Line 346... | ||
318 | 346 | ||
Line 319... | Line 347... | ||
319 | call .calc_delta |
347 | call .calc_delta |
320 | 348 | ||
321 | mov eax,SIZE_X |
349 | mov eax,[.xres] |
322 | movsx ebx,word[.y1] ;calc begin values in screen and Z buffers |
350 | movsx ebx,word[.y1] ;calc begin values in screen and Z buffers |
323 | mul ebx |
351 | mul ebx |
324 | lea ebx,[3*eax] |
352 | lea ebx,[3*eax] |
Line 357... | Line 385... | ||
357 | .draw_pixel |
385 | .draw_pixel |
Line 358... | Line 386... | ||
358 | 386 | ||
359 | @@: |
387 | @@: |
360 | cmp dword[.delta_y],0 |
388 | cmp dword[.delta_y],0 |
361 | jl @f |
389 | jl @f |
- | 390 | add edi,[.xres3] ;SIZE_X*3+3 |
|
362 | add edi,SIZE_X*3+3 |
391 | add edi,3 |
- | 392 | add esi,[.xres4] ;SIZE_X*4+4 |
|
363 | add esi,SIZE_X*4+4 |
393 | add esi,4 |
364 | jmp .d45_1 |
394 | jmp .d45_1 |
365 | @@: |
395 | @@: |
- | 396 | sub edi,[.xres3] ;(SIZE_X*3)-3 |
|
366 | sub edi,(SIZE_X*3)-3 |
397 | sub edi,3 |
- | 398 | sub esi,[.xres4] ;(SIZE_X*4)-4 |
|
367 | sub esi,(SIZE_X*4)-4 |
399 | sub esi,4 |
368 | .d45_1: |
400 | .d45_1: |
Line 369... | Line 401... | ||
369 | .update_cur_var |
401 | .update_cur_var |
370 | 402 | ||
Line 393... | Line 425... | ||
393 | idiv ebx |
425 | idiv ebx |
394 | mov [.delta],eax |
426 | mov [.delta],eax |
Line 395... | Line 427... | ||
395 | 427 | ||
Line 396... | Line 428... | ||
396 | call .calc_delta |
428 | call .calc_delta |
397 | 429 | ||
398 | mov eax,SIZE_X |
430 | mov eax,[.xres] ;SIZE_X |
399 | movsx ebx,word[.y1] ;calc begin values in screen and Z buffers |
431 | movsx ebx,word[.y1] ;calc begin values in screen and Z buffers |
400 | mul ebx |
432 | mul ebx |
401 | lea ebx,[3*eax] |
433 | lea ebx,[3*eax] |
Line 444... | Line 476... | ||
444 | 476 | ||
Line 445... | Line 477... | ||
445 | .draw_pixel |
477 | .draw_pixel |
446 | 478 | ||
- | 479 | @@: |
|
447 | @@: |
480 | mov eax,[.delta] |
- | 481 | mov ebx,[.xres3] |
|
448 | mov eax,[.delta] |
482 | add [.ccoord],eax |
449 | add [.ccoord],eax |
483 | mov eax,[.xres4] |
450 | add dword[.cscr],SIZE_X*3 ; |
484 | add dword[.cscr],ebx ;SIZE_X*3 ; |
Line 451... | Line 485... | ||
451 | add dword[.czbuf],SIZE_X*4 |
485 | add dword[.czbuf],eax ;SIZE_X*4 |
Line 452... | Line 486... | ||
452 | .d_m_v1: |
486 | .d_m_v1: |
Line 516... | Line 550... | ||
516 | .draw_m_h: |
550 | .draw_m_h: |
517 | mov edi,[.cscr] |
551 | mov edi,[.cscr] |
518 | mov esi,[.czbuf] |
552 | mov esi,[.czbuf] |
519 | mov eax,[.ccoord] ; ccoord - cur y coordinate |
553 | mov eax,[.ccoord] ; ccoord - cur y coordinate |
520 | sar eax,ROUND |
554 | sar eax,ROUND |
521 | mov ebx,SIZE_X |
555 | mov ebx,[.xres] ;SIZE_X |
522 | mul ebx |
556 | mul ebx |
523 | add esi,eax |
557 | add esi,eax |
524 | lea eax,[eax*3] |
558 | lea eax,[eax*3] |
525 | add esi,eax |
559 | add esi,eax |
526 | add edi,eax |
560 | add edi,eax |