Subversion Repositories Kolibri OS

Rev

Rev 950 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;ˆ‘Ž‚€ˆ… ˜€ˆŠ€, Ž ‡€„€ŽŒ“ ID ŠŽŠˆ (AX)
  2. paint_ball:
  3.         pushad
  4.  
  5.         movzx   bx, byte [eax*2 + lineCoord - 4]
  6.         movzx   cx, byte [eax*2 + lineCoord - 3]
  7.  
  8.         movzx   eax, byte [eax + lineBall - 2]
  9.         test    eax, eax
  10.         jz      @F
  11.  
  12.         mov     edx,[tableColor+eax*4]
  13.  
  14.         imul    bx, bx, 37
  15.         add     bx, 11
  16.         shl     ebx, 16
  17.         mov     bx, 19          ; ebx=[x start]*65536+[x size]
  18.  
  19.         imul    cx, cx, 37
  20.         add     cx, 57
  21.         shl     ecx, 16
  22.         mov     cx, 19          ; ecx=[y start]*65536+[y size]
  23.  
  24.         mcall   13
  25.         @@:
  26.         popad
  27.         ret
  28.  
  29.  
  30. ;Žˆ‘Ž‚Š€ €ŒŠˆ ‚ŽŠ“ƒ ‚›€ŽƒŽ ˜€ˆŠ€ [current]
  31. choice_ball:
  32.         pushad
  33.         mov     eax, [current]
  34.         movzx   bx, byte [eax*2 + lineCoord - 4]
  35.         movzx   cx, byte [eax*2 + lineCoord - 3]
  36.  
  37.         imul    bx, bx, 37
  38.         add     bx, 3
  39.         shl     ebx, 16
  40.         mov     bx, 34          ; ebx=[x start]*65536+[x size]
  41.  
  42.         imul    cx, cx, 37
  43.         add     cx, 49
  44.         shl     ecx, 16
  45.         mov     cx, 34          ; ecx=[y start]*65536+[y size]
  46.  
  47.         mov     edx,0x0
  48.         mcall   13
  49.         popad
  50.         ret
  51.  
  52. ;……ˆ‘Ž‚Š€ Ÿ—…‰Šˆ (eax)
  53. redraw_cell:
  54.         pushad
  55.         or      eax, 0x80000000
  56.         mov     edx,eax
  57.         mcall   8
  58.  
  59.         and     edx, 0x7FFFFFFF
  60.         movzx   bx, byte [edx*2 + lineCoord - 4]
  61.         movzx   cx, byte [edx*2 + lineCoord - 3]
  62.  
  63.         imul    bx, bx, 37
  64.         add     bx, 3
  65.         shl     ebx, 16
  66.         mov     bx, 34          ; ebx=[x start]*65536+[x size]
  67.  
  68.         imul    cx, cx, 37
  69.         add     cx, 49
  70.         shl     ecx, 16
  71.         mov     cx, 34          ; ecx=[y start]*65536+[y size]
  72.  
  73.         mov     esi, 0x00B8C2D3
  74.         mcall   8
  75.  
  76.         popad
  77.         ret
  78.  
  79. ;Ž–…„“€ Ž‚…Šˆ „‹ˆ› ‹ˆˆ‰ ˆ ‘ˆ‚€ˆ… ˜€ˆŠŽ‚
  80. vanish_balls:
  81.  
  82.         mov     [countVanishBall], 0
  83.         mov     al, [findUpDown]
  84.         cmp     al, 4
  85.         jb      @F
  86.  
  87.         add     [countVanishBall], al
  88.         mov     ah, 1
  89.         call    zero_vanish_matrix
  90.         mov     ah, 2
  91.         call    zero_vanish_matrix
  92. @@:
  93.         mov     al, [findRightLeft]
  94.         cmp     al, 4
  95.         jb      @F
  96.  
  97.         add     [countVanishBall], al
  98.         mov     ah, 3
  99.         call    zero_vanish_matrix
  100.         mov     ah, 4
  101.         call    zero_vanish_matrix
  102. @@:
  103.         mov     al, [findUpRight_DownLeft]
  104.         cmp     al, 4
  105.         jb      @F
  106.  
  107.         add     [countVanishBall], al
  108.         mov     ah, 7
  109.         call    zero_vanish_matrix
  110.         mov     ah, 8
  111.         call    zero_vanish_matrix
  112. @@:
  113.         mov     al, [findUpLeft_DownRight]
  114.         cmp     al, 4
  115.         jb      @F
  116.  
  117.         add     [countVanishBall], al
  118.         mov     ah, 5
  119.         call    zero_vanish_matrix
  120.         mov     ah, 6
  121.         call    zero_vanish_matrix
  122. @@:
  123.         ret
  124.  
  125. ;®¡­ã«ï¥â ¬ âà¨æã ¯® ᮮ⢠§­ ç¥­¨î ah
  126. zero_vanish_matrix:
  127.  
  128.         mov     ecx, 81
  129.         mov     edi, lineBall
  130.         xor     al, al
  131.  
  132.         .cycle_zeros:
  133.            mov  dl, [edi]
  134.            shr  dl, 4
  135.            cmp  dl, 0x0F
  136.            je   @F
  137.            cmp  dl, ah
  138.            je   @F
  139.            inc  edi
  140.            jmp  .temp
  141.            @@:
  142.            stosb
  143.            push eax
  144.            mov  eax, edi
  145.            sub  eax, lineBall - 1
  146.            call redraw_cell
  147.            pop  eax
  148.            .temp:
  149.            loop .cycle_zeros
  150.         ret
  151.  
  152. ;ˆ‘“…Œ Ž‚›… –‚…’€
  153. paint_new_color:
  154.         movzx   eax, [newColor1]
  155.         mov     edx, [tableColor + eax*4]
  156.         mov     ebx, 123*65536 + 19
  157.         mov     ecx, 15*65536 + 19
  158.         mcall   13
  159.         movzx   eax, [newColor2]
  160.         mov     edx, [tableColor + eax*4]
  161.         mov     ebx, 160*65536 + 19
  162.         mov     ecx, 15*65536 + 19
  163.         mcall   13
  164.         movzx   eax, [newColor3]
  165.         mov     edx, [tableColor + eax*4]
  166.         mov     ebx, 197*65536 + 19
  167.         mov     ecx, 15*65536 + 19
  168.         mcall   13
  169.         ret
  170.  
  171. ;ˆ‘“…Œ Ž—Šˆ
  172. redraw_score:
  173.         mov     ebx, 8*65536 + 100
  174.         mov     ecx, 20*65536 + 20
  175.         mov     edx, 0x0
  176.         mcall   13
  177.  
  178.         mov     ebx, 0xB0000
  179.         mov     ecx, [score]
  180.         mov     edx, 15*65536 + 24
  181.         mov     esi, 0x10ffffff
  182.         mcall   47
  183.         ret