Subversion Repositories Kolibri OS

Rev

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