Subversion Repositories Kolibri OS

Rev

Rev 5253 | Blame | Last modification | View Log | Download | RSS feed

  1. ;---------------------------------------------------------------------
  2. processing_protagonist_action:
  3. ;;        DEBUGF  1, "processing_protagonist_action\n"
  4.         cmp     dl,ROUTE_UP
  5.         je      protagonist_route_up
  6.  
  7.         cmp     dl,ROUTE_DOWN
  8.         je      protagonist_route_down
  9.  
  10.         cmp     dl,ROUTE_LEFT
  11.         je      protagonist_route_left
  12.  
  13.         cmp     dl,ROUTE_RIGHT
  14.         je      protagonist_route_right
  15.  
  16.         ret
  17. ;---------------------------------------------------------------------
  18. protagonist_route_up:
  19. ;        DEBUGF  1, "protagonist route_up\n"
  20.         cmp     ebx,1   ; border of map?
  21.         je      action_stop
  22.  
  23. ;        DEBUGF  1, "protagonist up @@:\n"
  24.         mov     eax,[ecx-LEVEL_MAP_SIZE_X*4]
  25.         test    ah,ah
  26.         jnz     action_stop
  27.        
  28. ;       cmp     al,BASE_WATER
  29. ;       jz      action_stop
  30.        
  31. ;        DEBUGF  1, "protagonist good route up\n"
  32.         dec     [protagonist_position.y]
  33.         mov     si,0x0100+ROUTE_UP
  34.         mov     edi,ecx
  35.         sub     edi,LEVEL_MAP_SIZE_X*4
  36.         jmp     save_new_and_clear_old_position
  37. ;---------------------------------------------------------------------
  38. protagonist_route_down:
  39. ;        DEBUGF  1, "protagonist route_down\n"
  40.         cmp     ebx,LEVEL_MAP_SIZE_Y    ; border of map?
  41.         je      action_stop
  42.  
  43. ;        DEBUGF  1, "protagonist down @@:\n"
  44.         mov     eax,[ecx+LEVEL_MAP_SIZE_X*4]
  45.         test    ah,ah
  46.         jnz     action_stop
  47.  
  48. ;       cmp     al,BASE_WATER
  49. ;       jz      action_stop
  50.        
  51. ;        DEBUGF  1, "protagonist good route down\n"
  52.         inc     [protagonist_position.y]
  53.         mov     si,0x0100+ROUTE_DOWN
  54.         mov     edi,ecx
  55.         add     edi,LEVEL_MAP_SIZE_X*4
  56.         jmp     save_new_and_clear_old_position
  57. ;---------------------------------------------------------------------
  58. protagonist_route_left:
  59. ;        DEBUGF  1, "protagonist route_left\n"
  60.         cmp     eax,1   ; border of map?
  61.         je      action_stop
  62.  
  63. ;        DEBUGF  1, "protagonist left @@:\n"
  64.         mov     eax,[ecx-4]
  65.         test    ah,ah
  66.         jnz     action_stop
  67.  
  68. ;       cmp     al,BASE_WATER
  69. ;       jz      action_stop
  70.        
  71. ;        DEBUGF  1, "protagonist good route left\n"
  72.         dec     [protagonist_position.x]
  73.         mov     si,0x0100+ROUTE_LEFT
  74.         mov     edi,ecx
  75.         sub     edi,4
  76.         jmp     save_new_and_clear_old_position
  77. ;---------------------------------------------------------------------
  78. protagonist_route_right:
  79. ;        DEBUGF  1, "protagonist route_right\n"
  80.         cmp     eax,LEVEL_MAP_SIZE_X    ; border of map?
  81.         je      action_stop
  82.  
  83. ;        DEBUGF  1, "protagonist righ @@:\n"
  84.         mov     eax,[ecx+4]
  85.         test    ah,ah
  86.         jnz     action_stop
  87.  
  88. ;       cmp     al,BASE_WATER
  89. ;       jz      action_stop
  90.        
  91. ;        DEBUGF  1, "protagonist good route righ\n"
  92.         inc     [protagonist_position.x]
  93.         mov     si,0x0100+ROUTE_RIGHT
  94.         mov     edi,ecx
  95.         add     edi,4
  96.         jmp     save_new_and_clear_old_position
  97. ;---------------------------------------------------------------------
  98.