Advertisement
Squeetz

Omnidirectional jump tile

May 31st, 2018
311
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 1.20 KB | None | 0 0
  1. .thumb
  2.  
  3. .global AnyDirectionJumptile
  4. .equ rom, 0x08000001
  5. .equ offset, 0xXXXXXX
  6.  
  7. /*
  8. Behavior bytes:
  9. 0x7F = able to jump in any direction (only on height 0x0 & 0x10)
  10. 0x7E = able to jump up and down
  11. 0x7D = able to jump left and right
  12. */
  13.  
  14. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  15.  
  16. .org 0x59AF6
  17.     cmp r0, #0x7D
  18.     beq 0x59B02
  19.  
  20. .org 0x59B0A
  21.     cmp r0, #0x7D
  22.     beq 0x59B16
  23.  
  24. .org 0x59B1E
  25.     cmp r0, #0x7E
  26.     beq 0x59B2A
  27.  
  28. .org 0x59B32
  29.     cmp r0, #0x7E
  30.     beq 0x59B3E
  31.  
  32. .org 0x6812C
  33.     bx r2
  34.    
  35. .org 0x68144
  36.     .word main + rom
  37.  
  38. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  39.    
  40. .org offset
  41. main:
  42.     cmp r0, #0x7F   @behavior byte
  43.     beq CheckJump
  44.     ldr r2, =(0x083A705C)
  45.     lsl r1, r4, #0x2
  46.     ldr r3, =(0x0806812E|1)
  47.     bx r3
  48.    
  49. CheckJump:
  50.     bl CanPlayerJump
  51.     cmp r0, #0x0
  52.     beq CantJump
  53. CanJump:
  54.     ldr r0, =(0x08068148|1)
  55.     bx r0
  56.    
  57. CantJump:
  58.     ldr r0, =(0x0806813E|1)
  59.     bx r0
  60.    
  61. CanPlayerJump:
  62.     ldr r1, npc_states
  63.     ldrb r0, [r1, #0xB]     @player height
  64.     mov r1, #0xF
  65.     and r0, r1              @lower 4 bits are height
  66.     cmp r0, #0x4            @movement permission 0x10
  67.     beq TheyCan
  68.     cmp r0, #0x0            @movement permission 0x0
  69.     beq TheyCan
  70. TheyCant:
  71.     mov r0, #0x0
  72.     bx lr
  73.    
  74. TheyCan:
  75.     mov r0, #0x1
  76.     bx lr
  77.    
  78. .align 2
  79.     npc_states:     .word 0x02036E38
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement