]> 4ch.mooo.com Git - plz.git/blob - dots/asm.asm
dots for a simple port but damn it!
[plz.git] / dots / asm.asm
1 include clink.inc\r
2 code SEGMENT para public 'CODE'\r
3 ASSUME cs:code\r
4 \r
5 .386\r
6 \r
7 MAXDOTS equ 1024\r
8 \r
9 BOTTOM equ 8000\r
10 \r
11 public _gravitybottom\r
12 _gravitybottom dw BOTTOM\r
13 \r
14 public _bpmin,_bpmax\r
15 _bpmin dw       30000\r
16 _bpmax dw       -30000\r
17 \r
18 public _gravity\r
19 _gravity dw     0\r
20 \r
21 public _dotnum\r
22 _dotnum dw      0\r
23 \r
24 public _gravityd\r
25 _gravityd dw    16\r
26 \r
27 dw -1280\r
28 dw -960\r
29 dw -640\r
30 dw -320\r
31 public _rows\r
32 _rows   dw  200 dup(0)\r
33 \r
34 public _dot\r
35 _dot LABEL WORD\r
36 dot dw  MAXDOTS dup(0,0,0,0,0,0,0,0) ;x,y,z,oldposshadow,oldpos,-,-,-\r
37 \r
38 public _rotsin,_rotcos\r
39 _rotsin dw 0\r
40 _rotcos dw 0\r
41 \r
42 public _bgpic\r
43 _bgpic  dw 0,0\r
44 \r
45 public _depthtable1,_depthtable2,_depthtable3,_depthtable4\r
46 _depthtable1 dd 128 dup(0)\r
47 _depthtable2 dd 128 dup(0)\r
48 _depthtable3 dd 128 dup(0)\r
49 _depthtable4 dd 128 dup(0)\r
50 \r
51 public _drawdots\r
52 _drawdots PROC FAR\r
53         CBEG\r
54         mov     ax,0a000h\r
55         mov     es,ax\r
56         mov     ax,cs\r
57         mov     ds,ax\r
58         mov     fs,cs:_bgpic[2]\r
59         mov     cx,cs:_dotnum\r
60         mov     si,OFFSET dot\r
61 @@loo:\r
62 @@1:    push    cx\r
63 \r
64         mov     ax,ds:[si+0] ;X\r
65         imul    ds:_rotsin\r
66         mov     ax,ax\r
67         mov     cx,dx\r
68         mov     ax,ds:[si+4] ;Z\r
69         imul    ds:_rotcos\r
70         sub     ax,bx\r
71         sub     dx,cx\r
72         mov     bp,dx\r
73         add     bp,9000\r
74         \r
75         mov     ax,ds:[si+0] ;X\r
76         imul    ds:_rotcos\r
77         mov     bx,ax\r
78         mov     cx,dx\r
79         mov     ax,ds:[si+4] ;Z\r
80         imul    ds:_rotsin\r
81         add     ax,bx\r
82         adc     dx,cx\r
83         shrd    ax,dx,8\r
84         sar     dx,8\r
85         \r
86         mov     bx,ax\r
87         mov     cx,dx\r
88         shrd    ax,dx,3\r
89         sar     dx,3\r
90         add     ax,bx\r
91         adc     dx,cx\r
92         \r
93         idiv    bp\r
94         add     ax,160\r
95         push    ax\r
96         cmp     ax,319\r
97         ja      @@2\r
98         \r
99         ;shadow\r
100 \r
101         xor     ax,ax\r
102         mov     dx,8\r
103         idiv    bp\r
104         add     ax,100\r
105         cmp     ax,199\r
106         ja      @@2\r
107         mov     bx,ax\r
108         shl     bx,1\r
109         mov     bx,ds:_rows[bx]\r
110         pop     ax\r
111         add     bx,ax\r
112         push    ax\r
113         \r
114         mov     di,ds:[si+6]\r
115         mov     ax,fs:[di]\r
116         mov     es:[di],ax\r
117         mov     ax,87+87*256\r
118         mov     word ptr es:[bx],ax\r
119         mov     ds:[si+6],bx\r
120         \r
121         ;ball\r
122         \r
123         mov     ax,ds:_gravity\r
124         add     ds:[si+14],ax\r
125         mov     ax,ds:[si+2] ;Y\r
126         add     ax,ds:[si+14]\r
127         cmp     ax,ds:_gravitybottom\r
128         jl      @@4\r
129         push    ax\r
130         mov     ax,ds:[si+14]\r
131         neg     ax\r
132         imul    cs:_gravityd\r
133         sar     ax,4\r
134         mov     ds:[si+14],ax\r
135         pop     ax\r
136         add     ax,ds:[si+14]\r
137 @@4:    mov     ds:[si+2],ax\r
138         cwd\r
139         shld    dx,ax,6\r
140         shl     ax,6\r
141         idiv    bp\r
142         add     ax,100\r
143         cmp     ax,199\r
144         ja      @@3\r
145         mov     bx,ax\r
146         shl     bx,1\r
147         mov     bx,ds:_rows[bx]\r
148         pop     ax\r
149         add     bx,ax\r
150 \r
151         mov     di,ds:[si+8]\r
152         mov     eax,fs:[di]\r
153         mov     es:[di],eax\r
154         add     di,320\r
155         mov     eax,fs:[di]\r
156         mov     es:[di],eax\r
157         add     di,320\r
158         mov     eax,fs:[di]\r
159         mov     es:[di],eax\r
160 ;       add     di,320\r
161 ;       mov     eax,fs:[di]\r
162 ;       mov     es:[di],eax\r
163         shr     bp,6\r
164         and     bp,not 3\r
165         \r
166         cmp     bp,cs:_bpmin\r
167         jge     @@t1\r
168         mov     cs:_bpmin,bp\r
169 @@t1:   cmp     bp,cs:_bpmax\r
170         jle     @@t2\r
171         mov     cs:_bpmax,bp\r
172 @@t2:\r
173         mov     ax,word ptr ds:_depthtable1[bp]\r
174         mov     word ptr es:[bx+1],ax\r
175         mov     eax,ds:_depthtable2[bp]\r
176         mov     dword ptr es:[bx+320],eax\r
177         mov     ax,word ptr ds:_depthtable3[bp]\r
178         mov     word ptr es:[bx+641],ax\r
179         mov     ds:[si+8],bx\r
180 \r
181 @@z:    pop     cx\r
182         add     si,16\r
183         loop    @@1oo\r
184 @@0:    CEND\r
185 \r
186 @@2:    mov     di,ds:[si+8]\r
187         mov     eax,fs:[di]\r
188         mov     es:[di],eax\r
189         add     di,320\r
190         mov     eax,fs:[di]\r
191         mov     es:[di],eax\r
192         add     di,320\r
193         mov     eax,fs:[di]\r
194         mov     es:[di],eax\r
195         mov     di,ds:[si+6]\r
196         mov     ds:[si+6],ax\r
197         mov     ax,fs:[di]\r
198         mov     es:[di],ax\r
199         pop     bx\r
200         pop     cx\r
201         add     si,16\r
202         loop    @@1\r
203         jmp     @@0\r
204 @@3:    mov     di,ds:[si+8]\r
205         mov     eax,fs:[di]\r
206         mov     es:[di],eax\r
207         add     di,320\r
208         mov     eax,fs:[di]\r
209         mov     es:[di],eax\r
210         add     di,320\r
211         mov     eax,fs:[di]\r
212         mov     es:[di],eax\r
213         pop     bx\r
214         pop     cx\r
215         add     si,16\r
216         loop    @@1\r
217         jmp     @@0\r
218 _drawdots ENDP\r
219 \r
220 PUBLIC _setpalette\r
221 _setpalette PROC FAR\r
222         push    bp\r
223         mov     bp,sp\r
224         push    si\r
225         push    di\r
226         push    ds\r
227         mov     si,[bp+6]\r
228         mov     ds,[bp+8]\r
229         mov     dx,3c8h\r
230         mov     al,0\r
231         out     dx,al\r
232         inc     dx\r
233         mov     cx,768\r
234         rep     outsb\r
235         pop     ds\r
236         pop     di\r
237         pop     si\r
238         pop     bp\r
239         ret\r
240 _setpalette ENDP\r
241 \r
242 _face   LABEL WORD\r
243 public _face\r
244 include face.inc\r
245 dw      30000,30000,30000\r
246 \r
247 PUBLIC _sin1024\r
248 include sin1024.inc\r
249 \r
250 code ENDS\r
251 END\r