Rev 2752 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1806 | yogev_ezra | 1 | ; |
2 | ; MARIO for MENUET |
||
3 | ; |
||
4 | ; Compile with fasm |
||
5 | ; |
||
6 | |||
7 | use32 |
||
8 | |||
9 | org 0x0 |
||
9971 | Doczom | 10 | |
11 | db 'MENUET01' ; header |
||
12 | dd 1 ; version |
||
13 | dd START ; program start |
||
14 | dd I_END ; image size |
||
15 | dd MEM ; size memory program |
||
16 | dd STACKTOP ; pointer to begin stack pos |
||
17 | dd 0 |
||
18 | dd 0 |
||
1806 | yogev_ezra | 19 | |
9971 | Doczom | 20 | res_base = loadp + 0x36 ; offset on array pixel in BMP file |
21 | res_width_px = 150 |
||
22 | res_height_px = 35 |
||
23 | res_line_size = (res_width_px*3 + 11b) and not 11b ; 150*3 + 2 |
||
24 | |||
25 | |||
26 | block_width = 40 |
||
27 | block_height = 40 |
||
28 | block_line_size = block_width * 3 |
||
29 | block_img_size = block_width * block_height * 3 |
||
30 | block_draw_size = (block_width shl 16) + block_height ; for sysfn 7 |
||
31 | block_count_pixel = block_width * block_height |
||
32 | |||
33 | mario_width = 50 |
||
34 | mario_height = 70 |
||
35 | mario_line_size = mario_width * 3 |
||
36 | mario_img_size = mario_width * mario_height * 3 |
||
37 | mario_draw_size = (mario_width shl 16) + mario_height |
||
38 | mario_count_pixel = mario_width * mario_height |
||
39 | |||
40 | |||
41 | wnd_pos_x = 80 |
||
42 | wnd_pos_y = 20 |
||
43 | |||
44 | wnd_header_size = 0x16 |
||
45 | wnd_height = 9*block_height + wnd_header_size |
||
46 | wnd_width = 12*block_width + 1 |
||
47 | |||
48 | |||
1806 | yogev_ezra | 49 | START: |
50 | |||
51 | |||
52 | call load_graph |
||
53 | |||
54 | mov [marioxy], dword 300*65536+270 |
||
55 | mov [leftright], dword 1 |
||
56 | mov [velocity], dword 0xff |
||
57 | |||
58 | call draw_window |
||
59 | |||
60 | |||
61 | sta: |
||
62 | |||
63 | mov eax,field |
||
9971 | Doczom | 64 | mov dword[xxyy], 1*65536 + wnd_header_size |
1806 | yogev_ezra | 65 | |
66 | stl: |
||
67 | |||
9971 | Doczom | 68 | cmp byte[eax], ' ' |
69 | jnz @f |
||
1806 | yogev_ezra | 70 | mov ebx,empty |
9971 | Doczom | 71 | @@: |
1806 | yogev_ezra | 72 | |
9971 | Doczom | 73 | cmp byte[eax], '1' |
74 | jnz @f |
||
1806 | yogev_ezra | 75 | mov ebx,build_1 |
9971 | Doczom | 76 | @@: |
1806 | yogev_ezra | 77 | |
9971 | Doczom | 78 | cmp byte[eax], '2' |
79 | jnz @f |
||
1806 | yogev_ezra | 80 | mov ebx,build_2 |
9971 | Doczom | 81 | @@: |
1806 | yogev_ezra | 82 | |
9971 | Doczom | 83 | cmp byte[eax], '3' |
84 | jnz @f |
||
1806 | yogev_ezra | 85 | mov ebx,build_3 |
9971 | Doczom | 86 | @@: |
1806 | yogev_ezra | 87 | |
88 | pusha |
||
89 | |||
90 | mov edx,[xxyy] |
||
91 | |||
92 | mov eax,7 ; display image |
||
9971 | Doczom | 93 | mov ecx, block_draw_size |
1806 | yogev_ezra | 94 | int 0x40 |
95 | |||
96 | popa |
||
97 | |||
9971 | Doczom | 98 | add word [xxyy+2], block_width |
99 | cmp word [xxyy+2], block_width*12+1 |
||
100 | jnz .nonewline |
||
101 | |||
102 | mov word [xxyy+2], 1 |
||
103 | add word [xxyy+0], block_height |
||
104 | .nonewline: |
||
1806 | yogev_ezra | 105 | |
106 | add eax,1 |
||
9971 | Doczom | 107 | cmp eax, field.end |
108 | jnz stl |
||
1806 | yogev_ezra | 109 | |
110 | ; ********* MAIN LOOP *********** |
||
111 | |||
112 | |||
113 | wait_for_event: |
||
114 | |||
115 | call draw_mario |
||
116 | |||
2752 | leency | 117 | mov eax,11 ; check for event |
1806 | yogev_ezra | 118 | int 0x40 |
9971 | Doczom | 119 | |
1806 | yogev_ezra | 120 | cmp eax,1 |
121 | jz red |
||
122 | cmp eax,2 |
||
123 | jz key |
||
9971 | Doczom | 124 | cmp eax,3 ; check pressed button |
1806 | yogev_ezra | 125 | jnz wait_for_event |
9971 | Doczom | 126 | |
127 | mov eax, -1 ; close this program |
||
128 | int 0x40 |
||
1806 | yogev_ezra | 129 | |
130 | red: |
||
131 | |||
132 | mov [mariomem],dword 0x0 |
||
133 | |||
134 | call draw_window |
||
135 | jmp sta |
||
136 | |||
137 | key: |
||
138 | |||
139 | mov [mariomem],dword 0x0 |
||
2752 | leency | 140 | |
1806 | yogev_ezra | 141 | mov eax,2 ; ah <- key |
142 | int 0x40 |
||
143 | |||
9971 | Doczom | 144 | cmp ah,176 ; 'left' |
1806 | yogev_ezra | 145 | jnz key1 |
146 | mov byte [leftright],byte 1 |
||
147 | key1: |
||
148 | |||
9971 | Doczom | 149 | cmp ah,179 ; 'right' |
1806 | yogev_ezra | 150 | jnz key2 |
151 | mov byte [leftright],byte 4 |
||
152 | key2: |
||
153 | |||
9971 | Doczom | 154 | cmp ah,177 ; 'down' |
1806 | yogev_ezra | 155 | jnz key3 |
156 | mov al,byte [leftright] |
||
157 | mov bl,al |
||
158 | cmp al,1 |
||
159 | jnz key31 |
||
160 | mov bl,2 |
||
161 | key31: |
||
162 | cmp al,4 |
||
163 | jnz key32 |
||
164 | mov bl,3 |
||
165 | key32: |
||
166 | mov byte [leftright],bl |
||
167 | key3: |
||
168 | |||
9971 | Doczom | 169 | cmp ah,178 ; 'up' |
1806 | yogev_ezra | 170 | jnz key4 |
171 | cmp [velocity],dword 0xff |
||
172 | jnz key4 |
||
173 | mov [velocity],dword 0x110 |
||
174 | key4: |
||
9971 | Doczom | 175 | |
176 | ; this code using for fix defects drawing(draw in caption area) |
||
177 | mov eax,71 ;draw caption |
||
178 | mov ebx,1 |
||
179 | mov ecx,title |
||
180 | int 0x40 |
||
181 | |||
182 | jmp sta ;draw field |
||
183 | |||
2752 | leency | 184 | ;jmp wait_for_event |
1806 | yogev_ezra | 185 | |
186 | load_graph: |
||
187 | |||
188 | pusha |
||
189 | |||
9971 | Doczom | 190 | ; empty block init - set in 0x00500f color |
1806 | yogev_ezra | 191 | mov edi,empty |
9971 | Doczom | 192 | mov ecx, block_count_pixel |
1806 | yogev_ezra | 193 | mov eax,0x00500f |
194 | cld |
||
9971 | Doczom | 195 | @@: |
1806 | yogev_ezra | 196 | mov [edi],eax |
9971 | Doczom | 197 | add edi, 3 |
198 | loop @b |
||
1806 | yogev_ezra | 199 | |
9971 | Doczom | 200 | mov [width], block_line_size |
201 | mov [width_move], block_width/2 |
||
202 | mov [height_move], block_height/2 |
||
1806 | yogev_ezra | 203 | mov [imul_esi],20*3 |
9971 | Doczom | 204 | mov [base], res_base + 3*res_width_px * 34 +3*98-1 |
1806 | yogev_ezra | 205 | |
206 | mov esi,0 |
||
207 | mov edi,build_1 |
||
208 | call convert |
||
209 | |||
210 | mov esi,1 |
||
211 | mov edi,build_2 |
||
212 | call convert |
||
213 | |||
214 | |||
215 | |||
216 | ; build_3 |
||
217 | mov edi,build_3 |
||
9971 | Doczom | 218 | mov esi, res_base + 230*3+3*300*69 |
219 | mov ecx, block_height |
||
1806 | yogev_ezra | 220 | build_3l: |
221 | pusha |
||
9971 | Doczom | 222 | mov ecx, block_line_size |
1806 | yogev_ezra | 223 | cld |
224 | rep movsb |
||
225 | popa |
||
226 | sub esi,300*3 |
||
9971 | Doczom | 227 | add edi, block_line_size |
1806 | yogev_ezra | 228 | loop build_3l |
229 | |||
9971 | Doczom | 230 | mov [width], mario_line_size |
231 | mov [width_move], mario_width/2 |
||
232 | mov [height_move], mario_height/2 |
||
1806 | yogev_ezra | 233 | mov [imul_esi],25*3 |
9971 | Doczom | 234 | mov [base], res_base + 3*res_width_px*34 + 68 |
1806 | yogev_ezra | 235 | |
236 | mov esi,0 |
||
237 | mov edi,mario_1 |
||
238 | call convert |
||
239 | |||
240 | mov esi,1 |
||
241 | mov edi,mario_2 |
||
242 | call convert |
||
243 | |||
244 | mov esi,2 |
||
245 | mov edi,mario_3 |
||
246 | call convert |
||
247 | |||
248 | jmp mario_mirror |
||
249 | |||
250 | |||
9971 | Doczom | 251 | ; copy in [edi], image x2 |
1806 | yogev_ezra | 252 | convert: |
253 | |||
254 | imul esi,[imul_esi] |
||
255 | add esi,[base] ; loadp+18*3+3*150*34+68 |
||
256 | |||
9971 | Doczom | 257 | mov eax, [width] |
258 | shl eax, 1 ; *2 |
||
259 | mov ecx, [height_move] ;? |
||
260 | |||
261 | .new_line: |
||
1806 | yogev_ezra | 262 | pusha |
263 | mov ecx,[width_move] |
||
9971 | Doczom | 264 | |
265 | .putpix: ; set 4 pixel: edi, edi+3, edi+width, edi+width+3 |
||
1806 | yogev_ezra | 266 | mov eax,[esi] |
267 | mov [edi+00],ax |
||
268 | mov [edi+03],ax |
||
269 | mov ebx,[width] |
||
270 | mov [edi+ebx],ax |
||
271 | add ebx,3 |
||
272 | mov [edi+ebx],ax |
||
273 | shr eax,16 |
||
274 | mov [edi+02],al |
||
275 | dec ebx |
||
276 | mov [edi+ebx],al |
||
277 | mov [edi+05],al |
||
278 | add ebx,3 |
||
279 | mov [edi+ebx],al |
||
280 | add esi,3 |
||
281 | add edi,6 |
||
9971 | Doczom | 282 | loop .putpix |
1806 | yogev_ezra | 283 | popa |
9971 | Doczom | 284 | |
285 | sub esi,res_line_size |
||
286 | add edi, eax |
||
287 | loop .new_line |
||
1806 | yogev_ezra | 288 | |
289 | ret |
||
9971 | Doczom | 290 | |
291 | imul_esi dd 0 |
||
292 | base dd 0 |
||
293 | width dd 0 |
||
294 | width_move dd 0 |
||
295 | height_move dd 0 |
||
1806 | yogev_ezra | 296 | |
297 | |||
298 | |||
299 | mario_mirror: |
||
9971 | Doczom | 300 | |
1806 | yogev_ezra | 301 | ; mario_green |
302 | mov edi,mario_green |
||
9971 | Doczom | 303 | mov ecx, mario_count_pixel |
304 | @@: |
||
1806 | yogev_ezra | 305 | mov [edi],dword 0x00500f |
9971 | Doczom | 306 | add edi, 3 |
307 | loop @b |
||
1806 | yogev_ezra | 308 | |
9971 | Doczom | 309 | ; mario_4 - reverse mario_1 |
1806 | yogev_ezra | 310 | |
9971 | Doczom | 311 | mov edi, mario_4 |
312 | mov esi, mario_1 + (mario_width - 1)*3 |
||
313 | mov ecx, mario_height |
||
1806 | yogev_ezra | 314 | m4l1: |
315 | pusha |
||
9971 | Doczom | 316 | mov ecx, mario_width |
1806 | yogev_ezra | 317 | m4l2: |
318 | mov eax,[esi] |
||
319 | mov [edi],ax |
||
320 | shr eax,16 |
||
321 | mov [edi+2],al |
||
322 | add edi,3 |
||
323 | sub esi,3 |
||
324 | loop m4l2 |
||
325 | popa |
||
9971 | Doczom | 326 | |
327 | add esi, mario_width*3 |
||
328 | add edi, mario_width*3 |
||
1806 | yogev_ezra | 329 | loop m4l1 |
330 | |||
331 | |||
9971 | Doczom | 332 | ; mario_5 - reverse mario_2 |
1806 | yogev_ezra | 333 | |
9971 | Doczom | 334 | mov edi, mario_5 |
335 | mov esi, mario_2 + (mario_width - 1)*3 |
||
336 | mov ecx, mario_height |
||
1806 | yogev_ezra | 337 | m5l1: |
338 | pusha |
||
9971 | Doczom | 339 | mov ecx, mario_width |
1806 | yogev_ezra | 340 | m5l2: |
341 | mov eax,[esi] |
||
342 | mov [edi],ax |
||
343 | shr eax,16 |
||
344 | mov [edi+2],al |
||
345 | add edi,3 |
||
346 | sub esi,3 |
||
347 | loop m5l2 |
||
348 | popa |
||
9971 | Doczom | 349 | |
350 | add esi, mario_width*3 |
||
351 | add edi, mario_width*3 |
||
1806 | yogev_ezra | 352 | loop m5l1 |
353 | |||
354 | |||
9971 | Doczom | 355 | ; mario_6 - reverse mario_3 |
1806 | yogev_ezra | 356 | |
9971 | Doczom | 357 | mov edi, mario_6 |
358 | mov esi, mario_3 + (mario_width - 1)*3 |
||
359 | mov ecx, mario_height |
||
1806 | yogev_ezra | 360 | m6l1: |
361 | pusha |
||
9971 | Doczom | 362 | mov ecx, mario_width |
1806 | yogev_ezra | 363 | m6l2: |
364 | mov eax,[esi] |
||
365 | mov [edi],ax |
||
366 | shr eax,16 |
||
367 | mov [edi+2],al |
||
368 | add edi,3 |
||
369 | sub esi,3 |
||
370 | loop m6l2 |
||
371 | popa |
||
9971 | Doczom | 372 | |
373 | add esi, mario_width*3 |
||
374 | add edi, mario_width*3 |
||
1806 | yogev_ezra | 375 | loop m6l1 |
376 | |||
377 | |||
378 | popa |
||
379 | ret |
||
380 | |||
381 | |||
382 | |||
383 | advance_mario: |
||
384 | |||
385 | pusha |
||
386 | |||
387 | mov eax,[marioxy] ; wherey ? |
||
388 | and eax,65535 |
||
389 | add eax,40+21 |
||
390 | xor edx,edx |
||
391 | mov ebx,40 |
||
392 | div ebx |
||
393 | mov [marioy],eax |
||
394 | |||
395 | mov eax,[marioxy] ; wherex ? |
||
396 | shr eax,16 |
||
397 | add eax,20 |
||
398 | xor edx,edx |
||
399 | mov ebx,40 |
||
400 | div ebx |
||
401 | mov [mariox],eax |
||
402 | |||
403 | |||
404 | |||
405 | cmp byte [leftright],byte 1 ; go left |
||
406 | jnz noleft |
||
407 | mov eax,[marioxy] |
||
408 | xor edx,edx |
||
409 | shr eax,16 |
||
410 | sub eax,7 |
||
411 | mov ebx,40 |
||
412 | div ebx |
||
413 | add eax,field+7*12 |
||
414 | cmp [eax],byte ' ' |
||
415 | jz mgoleft |
||
416 | mov byte [leftright],byte 2 |
||
417 | jmp noleft |
||
418 | mgoleft: |
||
419 | mov eax,[marioxy] |
||
420 | sub eax,6*65536 |
||
421 | mov [marioxy],eax |
||
422 | noleft: |
||
423 | |||
424 | |||
425 | |||
426 | cmp byte [leftright],byte 4 ; go right |
||
427 | jnz noright |
||
428 | mov eax,[marioxy] |
||
429 | xor edx,edx |
||
430 | shr eax,16 |
||
431 | add eax,54 |
||
432 | mov ebx,40 |
||
433 | div ebx |
||
434 | add eax,field+7*12 |
||
435 | cmp byte [eax],byte ' ' |
||
436 | jz mgoright |
||
437 | mov byte [leftright],byte 3 |
||
438 | jmp noright |
||
439 | mgoright: |
||
440 | mov eax,[marioxy] |
||
441 | add eax,6*65536 |
||
442 | mov [marioxy],eax |
||
443 | noright: |
||
444 | |||
445 | |||
446 | |||
447 | |||
448 | cmp [velocity],dword 0x100 ; jump up ? |
||
449 | jbe nojumpup |
||
450 | mov ebx,[velocity] |
||
451 | sub ebx,1 |
||
452 | cmp ebx,0x100 |
||
453 | jnz no0x100 |
||
454 | mov [velocity],dword 0xff |
||
455 | jmp nojumpup |
||
456 | no0x100: |
||
457 | mov [velocity],ebx |
||
458 | sub ebx,0x100-1 |
||
459 | mov eax,[marioxy] |
||
460 | sub ax,bx |
||
461 | mov [marioxy],eax |
||
462 | nojumpup: |
||
463 | |||
464 | call mario_environment |
||
465 | |||
466 | cmp [velocity],dword 0x100 ; jump -> down ? |
||
467 | jge nojumpdown |
||
468 | mov eax,[marioy] |
||
469 | cmp eax,[mario_below] |
||
470 | jb yesgd |
||
471 | mov [velocity],dword 0xff |
||
472 | mov eax,[marioxy] |
||
473 | mov eax,[mario_below] |
||
474 | sub eax,1 |
||
475 | mov ebx,40 |
||
476 | mul ebx |
||
477 | sub eax,10 |
||
478 | mov word [marioxy],ax |
||
479 | jmp nojumpdown |
||
480 | yesgd: |
||
481 | mov ebx,[velocity] |
||
482 | sub ebx,1 |
||
483 | mov [velocity],ebx |
||
484 | mov eax,[marioxy] |
||
485 | add ax,0xff |
||
486 | sub ax,bx |
||
487 | mov [marioxy],eax |
||
488 | nojumpdown: |
||
489 | |||
490 | |||
491 | popa |
||
492 | |||
493 | ret |
||
494 | |||
495 | |||
496 | marioy dd 0x0 |
||
497 | |||
498 | mariox dd 0x0 |
||
499 | |||
500 | mario_below dd 5 |
||
501 | |||
502 | |||
503 | mario_environment: |
||
504 | |||
505 | pusha |
||
506 | |||
507 | mov eax,[marioy] |
||
508 | mov ebx,12 |
||
509 | mul ebx |
||
510 | add eax,[mariox] |
||
511 | add eax,field |
||
512 | |||
513 | cmp [eax],byte ' ' |
||
514 | jz me_ok |
||
515 | |||
516 | mov eax,[marioy] |
||
517 | mov [mario_below],eax |
||
518 | |||
519 | popa |
||
520 | ret |
||
521 | |||
522 | me_ok: |
||
523 | |||
524 | mov [mario_below],dword 100 |
||
525 | |||
526 | popa |
||
527 | ret |
||
528 | |||
529 | |||
530 | mario_delay: |
||
531 | |||
532 | pusha |
||
533 | |||
9971 | Doczom | 534 | mov eax,5 ;pause |
1806 | yogev_ezra | 535 | mov ebx,2 |
536 | int 0x40 |
||
537 | |||
538 | popa |
||
539 | ret |
||
540 | |||
541 | |||
542 | |||
543 | draw_mario: |
||
544 | |||
545 | pusha |
||
546 | |||
547 | mov eax,[mariomem] |
||
548 | cmp eax,[marioxy] |
||
9971 | Doczom | 549 | jnz @f |
550 | |||
1806 | yogev_ezra | 551 | call mario_delay |
2752 | leency | 552 | |
1806 | yogev_ezra | 553 | popa |
554 | ret |
||
9971 | Doczom | 555 | |
556 | @@: |
||
1806 | yogev_ezra | 557 | mov eax,[marioxy] |
558 | mov [mariomem],eax |
||
559 | |||
560 | |||
9971 | Doczom | 561 | cmp byte [leftright], 1 ; go left |
562 | jz m_left |
||
1806 | yogev_ezra | 563 | |
9971 | Doczom | 564 | cmp byte [leftright], 4 ; go right |
565 | jz m_right |
||
1806 | yogev_ezra | 566 | |
9971 | Doczom | 567 | cmp byte [leftright], 2 ; stand left |
1806 | yogev_ezra | 568 | jnz no_r_still |
9971 | Doczom | 569 | |
1806 | yogev_ezra | 570 | mov eax,7 |
571 | mov ebx,mario_green |
||
9971 | Doczom | 572 | mov ecx, mario_draw_size |
1806 | yogev_ezra | 573 | mov edx,[marioxy] |
574 | int 0x40 |
||
9971 | Doczom | 575 | |
1806 | yogev_ezra | 576 | call advance_mario |
577 | mov eax,7 |
||
578 | mov ebx,mario_1 |
||
9971 | Doczom | 579 | mov ecx, mario_draw_size |
1806 | yogev_ezra | 580 | mov edx,[marioxy] |
581 | int 0x40 |
||
9971 | Doczom | 582 | |
1806 | yogev_ezra | 583 | call mario_delay |
9971 | Doczom | 584 | |
1806 | yogev_ezra | 585 | popa |
586 | ret |
||
9971 | Doczom | 587 | |
1806 | yogev_ezra | 588 | no_r_still: |
589 | cmp byte [leftright],byte 3 ; stand right |
||
590 | jnz no_l_still |
||
9971 | Doczom | 591 | |
1806 | yogev_ezra | 592 | mov eax,7 |
593 | mov ebx,mario_green |
||
9971 | Doczom | 594 | mov ecx, mario_draw_size |
1806 | yogev_ezra | 595 | mov edx,[marioxy] |
596 | int 0x40 |
||
9971 | Doczom | 597 | |
1806 | yogev_ezra | 598 | call advance_mario |
599 | mov eax,7 |
||
600 | mov ebx,mario_4 |
||
9971 | Doczom | 601 | mov ecx, mario_draw_size |
1806 | yogev_ezra | 602 | mov edx,[marioxy] |
603 | int 0x40 |
||
9971 | Doczom | 604 | |
1806 | yogev_ezra | 605 | call mario_delay |
9971 | Doczom | 606 | |
1806 | yogev_ezra | 607 | no_l_still: |
608 | |||
609 | popa |
||
610 | ret |
||
9971 | Doczom | 611 | |
1806 | yogev_ezra | 612 | m_left: |
613 | |||
614 | mov eax,7 |
||
615 | mov ebx,mario_green |
||
9971 | Doczom | 616 | mov ecx, mario_draw_size |
1806 | yogev_ezra | 617 | mov edx,[marioxy] |
618 | int 0x40 |
||
9971 | Doczom | 619 | |
1806 | yogev_ezra | 620 | call advance_mario |
621 | mov eax,7 |
||
622 | mov ebx,mario_1 |
||
9971 | Doczom | 623 | mov ecx, mario_draw_size |
1806 | yogev_ezra | 624 | mov edx,[marioxy] |
625 | int 0x40 |
||
9971 | Doczom | 626 | |
1806 | yogev_ezra | 627 | call mario_delay |
628 | |||
629 | mov eax,7 |
||
630 | mov ebx,mario_green |
||
9971 | Doczom | 631 | mov ecx, mario_draw_size |
1806 | yogev_ezra | 632 | mov edx,[marioxy] |
633 | int 0x40 |
||
9971 | Doczom | 634 | |
1806 | yogev_ezra | 635 | call advance_mario |
636 | mov eax,7 |
||
637 | mov ebx,mario_2 |
||
9971 | Doczom | 638 | mov ecx, mario_draw_size |
1806 | yogev_ezra | 639 | mov edx,[marioxy] |
640 | int 0x40 |
||
9971 | Doczom | 641 | |
1806 | yogev_ezra | 642 | call mario_delay |
643 | |||
644 | mov eax,7 |
||
645 | mov ebx,mario_green |
||
9971 | Doczom | 646 | mov ecx, mario_draw_size |
1806 | yogev_ezra | 647 | mov edx,[marioxy] |
648 | int 0x40 |
||
9971 | Doczom | 649 | |
1806 | yogev_ezra | 650 | call advance_mario |
651 | mov eax,7 |
||
652 | mov ebx,mario_3 |
||
9971 | Doczom | 653 | mov ecx, mario_draw_size |
1806 | yogev_ezra | 654 | mov edx,[marioxy] |
655 | int 0x40 |
||
9971 | Doczom | 656 | |
1806 | yogev_ezra | 657 | call mario_delay |
658 | |||
659 | mov eax,7 |
||
660 | mov ebx,mario_green |
||
9971 | Doczom | 661 | mov ecx, mario_draw_size |
1806 | yogev_ezra | 662 | mov edx,[marioxy] |
663 | int 0x40 |
||
9971 | Doczom | 664 | |
1806 | yogev_ezra | 665 | call advance_mario |
666 | mov eax,7 |
||
667 | mov ebx,mario_2 |
||
9971 | Doczom | 668 | mov ecx, mario_draw_size |
1806 | yogev_ezra | 669 | mov edx,[marioxy] |
670 | int 0x40 |
||
9971 | Doczom | 671 | |
1806 | yogev_ezra | 672 | call mario_delay |
673 | |||
674 | popa |
||
675 | ret |
||
676 | |||
677 | m_right: |
||
678 | |||
679 | |||
680 | mov eax,7 |
||
681 | mov ebx,mario_green |
||
9971 | Doczom | 682 | mov ecx, mario_draw_size |
1806 | yogev_ezra | 683 | mov edx,[marioxy] |
684 | int 0x40 |
||
9971 | Doczom | 685 | |
1806 | yogev_ezra | 686 | call advance_mario |
687 | mov eax,7 |
||
688 | mov ebx,mario_4 |
||
9971 | Doczom | 689 | mov ecx, mario_draw_size |
1806 | yogev_ezra | 690 | mov edx,[marioxy] |
691 | int 0x40 |
||
9971 | Doczom | 692 | |
1806 | yogev_ezra | 693 | call mario_delay |
694 | |||
695 | mov eax,7 |
||
696 | mov ebx,mario_green |
||
9971 | Doczom | 697 | mov ecx, mario_draw_size |
1806 | yogev_ezra | 698 | mov edx,[marioxy] |
699 | int 0x40 |
||
9971 | Doczom | 700 | |
1806 | yogev_ezra | 701 | call advance_mario |
702 | mov eax,7 |
||
703 | mov ebx,mario_5 |
||
9971 | Doczom | 704 | mov ecx, mario_draw_size |
1806 | yogev_ezra | 705 | mov edx,[marioxy] |
706 | int 0x40 |
||
9971 | Doczom | 707 | |
1806 | yogev_ezra | 708 | call mario_delay |
709 | |||
710 | mov eax,7 |
||
711 | mov ebx,mario_green |
||
9971 | Doczom | 712 | mov ecx, mario_draw_size |
1806 | yogev_ezra | 713 | mov edx,[marioxy] |
714 | int 0x40 |
||
9971 | Doczom | 715 | |
1806 | yogev_ezra | 716 | call advance_mario |
717 | mov eax,7 |
||
718 | mov ebx,mario_6 |
||
9971 | Doczom | 719 | mov ecx, mario_draw_size |
1806 | yogev_ezra | 720 | mov edx,[marioxy] |
721 | int 0x40 |
||
9971 | Doczom | 722 | |
1806 | yogev_ezra | 723 | call mario_delay |
724 | |||
725 | mov eax,7 |
||
726 | mov ebx,mario_green |
||
9971 | Doczom | 727 | mov ecx, mario_draw_size |
1806 | yogev_ezra | 728 | mov edx,[marioxy] |
729 | int 0x40 |
||
9971 | Doczom | 730 | |
1806 | yogev_ezra | 731 | call advance_mario |
732 | mov eax,7 |
||
733 | mov ebx,mario_5 |
||
9971 | Doczom | 734 | mov ecx, mario_draw_size |
1806 | yogev_ezra | 735 | mov edx,[marioxy] |
736 | int 0x40 |
||
9971 | Doczom | 737 | |
1806 | yogev_ezra | 738 | call mario_delay |
739 | |||
740 | popa |
||
741 | ret |
||
9971 | Doczom | 742 | |
1806 | yogev_ezra | 743 | draw_window: |
744 | |||
745 | pusha |
||
746 | |||
747 | mov eax,12 ; tell os about redraw |
||
748 | mov ebx,1 |
||
749 | int 0x40 |
||
750 | |||
751 | mov eax,0 ; define and draw window |
||
9971 | Doczom | 752 | mov ebx, (wnd_pos_x shl 16) + wnd_width ;80*65536+480+1 |
753 | mov ecx, (wnd_pos_y shl 16) + wnd_height ;20*65536+382 |
||
754 | mov edx,0x5466AA88 ; 4 type window + title + no draw work space |
||
2752 | leency | 755 | mov edi,title |
1806 | yogev_ezra | 756 | int 0x40 |
757 | |||
758 | mov eax,12 ; tell os about redraw end |
||
759 | mov ebx,2 |
||
760 | int 0x40 |
||
761 | |||
762 | popa |
||
763 | |||
764 | ret |
||
765 | |||
766 | |||
767 | ; DATA SECTION |
||
768 | |||
2752 | leency | 769 | title: |
770 | db 'SUPER MARIO - USE ARROW KEYS', 0 |
||
1806 | yogev_ezra | 771 | |
772 | field: |
||
773 | |||
774 | db '1 1' |
||
775 | db '1 1' |
||
776 | db '111 111' |
||
777 | db '1 1' |
||
778 | db '1 1' |
||
779 | db '1 111111 1' |
||
780 | db '1 1' |
||
781 | db '1 1' |
||
782 | db '222222222222' |
||
9971 | Doczom | 783 | .end: |
1806 | yogev_ezra | 784 | |
785 | xxyy dd 0x0 |
||
786 | |||
787 | marioxy dd 0x0 |
||
788 | |||
789 | mariomem dd 0x0 |
||
790 | |||
791 | leftright dd 0x0 |
||
792 | |||
793 | velocity dd 0x0 |
||
794 | |||
9971 | Doczom | 795 | align 16 |
796 | loadp: |
||
797 | file 'MARIOALL.BMP' |
||
798 | |||
1806 | yogev_ezra | 799 | I_END: |
9971 | Doczom | 800 | |
801 | align 0x1000 |
||
802 | |||
803 | empty: rb block_img_size |
||
804 | build_1: rb block_img_size |
||
805 | build_2: rb block_img_size |
||
806 | build_3: rb block_img_size |
||
807 | |||
808 | align 0x1000 |
||
809 | |||
810 | mario_1: rb mario_img_size |
||
811 | mario_2: rb mario_img_size |
||
812 | mario_3: rb mario_img_size |
||
813 | mario_4: rb mario_img_size |
||
814 | mario_5: rb mario_img_size |
||
815 | mario_6: rb mario_img_size |
||
816 | mario_green: rb mario_img_size |
||
817 | |||
818 | |||
819 | rb 4096 |
||
820 | STACKTOP: |
||
821 | MEM:-> |
||
1806 | yogev_ezra | 822 |