Advertisement
ColdWater0

Snake Non-Optimized

Aug 1st, 2018
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. start:
  2.     mov r10, 0
  3.     mov r11, 1
  4.     mov sp, 0x0200
  5.     send r10, 0x200F
  6. ;terminal&input : port 0
  7. ;random source : port 1
  8. ;r4: head's position
  9. ;r5: tail's position
  10. ;r6: apple's position
  11. mov r4, map
  12. add r4, 19
  13. mov r5, map
  14. add r5, 17
  15. jmp apple
  16. head:
  17.     recv r0, r10
  18.     add r0, h_table
  19.     jmp [r0]
  20. chkapple:
  21.     cmp r4, r6
  22.     je apple
  23. tale:
  24.     mov r0, [r5]
  25.     add r0, t_table
  26.     mov [r5], 0
  27.     jmp [r0]
  28.  
  29. h_up:
  30.     mov r1, [r4-16]
  31.     jnz gameover
  32.     mov [r4], 3
  33.     sub r4, 16
  34.     mov r2, r4
  35.     sub r2, map
  36.     or r2, 0x1000
  37.     send r10, r2
  38.     send r10, 0x7F
  39.     jmp chkapple
  40. h_down:
  41.     mov r1, [r4+16]
  42.     jnz gameover
  43.     mov [r4], 4
  44.     add r4, 16
  45.     mov r2, r4
  46.     sub r2, map
  47.     or r2, 0x1000
  48.     send r10, r2
  49.     send r10, 0x7F
  50.     jmp chkapple
  51. h_left:
  52.     mov r1, [r4-1]
  53.     jnz gameover
  54.     mov [r4], 1
  55.     sub r4, 1
  56.     mov r2, r4
  57.     sub r2, map
  58.     or r2, 0x1000
  59.     send r10, r2
  60.     send r10, 0x7F
  61.     jmp chkapple
  62. h_right:
  63.     mov r1, [r4+1]
  64.     jnz gameover
  65.     mov [r4], 2
  66.     add r4, 1
  67.     mov r2, r4
  68.     sub r2, map
  69.     or r2, 0x1000
  70.     send r10, r2
  71.     send r10, 0x7F
  72.     jmp chkapple
  73.  
  74.    
  75.  
  76. t_up:
  77.     mov r2, r5
  78.     sub r2, map
  79.     or r2, 0x1000
  80.     send r10, r2
  81.     send r10, 0x20
  82.     sub r5, 16
  83.     jmp head
  84. t_down:
  85.     mov r2, r5
  86.     sub r2, map
  87.     or r2, 0x1000
  88.     send r10, r2
  89.     send r10, 0x20
  90.     add r5, 16
  91.     jmp head
  92. t_left:
  93.     mov r2, r5
  94.     sub r2, map
  95.     or r2, 0x1000
  96.     send r10, r2
  97.     send r10, 0x20
  98.     sub r5, 1
  99.     jmp head
  100. t_right:
  101.     mov r2, r5
  102.     sub r2, map
  103.     or r2, 0x1000
  104.     send r10, r2
  105.     send r10, 0x20
  106.     add r5, 1
  107.     jmp head
  108.  
  109. apple:
  110.     recv r0, r11
  111.     and r0, 0xFF
  112.     cmp r0, 0xBF
  113.     ja apple
  114.     add r0, map
  115.     mov r1, [r0]
  116.     jnz apple
  117.     mov r6, r0
  118.     sub r0, map
  119.     or r0, 0x1000
  120.     send r10, r0
  121.     send r10, 0x30
  122.     jmp head
  123.    
  124. gameover:
  125.     hlt
  126.  
  127.  
  128.  
  129. h_table:
  130.     %dw 0, h_left, h_right, h_up, h_down
  131. t_table:
  132.     %dw 0, t_left, t_right, t_up, t_down
  133.  
  134. map:
  135.     %dw 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  136.     %dw 1,2,2,2,0,0,0,0,0,0,0,0,0,0,0,1
  137.     %dw 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  138.     %dw 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  139.     %dw 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  140.     %dw 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  141.     %dw 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  142.     %dw 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  143.     %dw 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  144.     %dw 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  145.     %dw 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  146.     %dw 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement