Нет описания

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #include <config.h>
  2. .text
  3. .align 2
  4. .thumb
  5. .global on_step
  6. on_step:
  7. push {r5}
  8. bl safari_step
  9. lsl r0, #0x18
  10. lsr r0, #0x18
  11. cmp r0, #1
  12. beq return_true
  13. ldrh r0, =FLAG_WALK_SCRIPT
  14. bl read_flag
  15. cmp r0, #0
  16. beq check_walking_script
  17. sub SP, #4
  18. mov r0, sp
  19. mov r1, sp
  20. add r1, #2
  21. bl get_player_to
  22. mov r0, sp
  23. mov r1, sp
  24. add r1, #2
  25. ldrh r0, [r0]
  26. ldrh r1, [r1]
  27. add sp, #4
  28. lsl r0, #0x10
  29. asr r4, r0, #0x10
  30. lsl r1, #0x10
  31. asr r5, r1, #0x10
  32. mov r0, r4
  33. mov r1, r5
  34. bl check_block_role
  35. lsl r0, #0x18
  36. lsr r0, #0x18
  37. ldr r1, behavior_walk_table
  38. lsl r0, #2
  39. add r0, r1
  40. ldr r0, [r0]
  41. mov r2, #0
  42. sub r2, #1
  43. cmp r0, r2
  44. beq check_walking_script
  45. bl execute_script
  46. b return_false
  47. check_walking_script:
  48. ldrh r0, =WALK_SCRIPT_VAR
  49. bl read_var
  50. ldrh r0, [r0]
  51. cmp r0, #0
  52. beq return_false
  53. sub r0, #1
  54. ldr r1, script_walk_table
  55. lsl r0, #2
  56. add r0, r1
  57. ldr r0, [r0]
  58. mov r2, #0
  59. sub r2, #1
  60. cmp r0, r2
  61. beq return_false
  62. @@@EXECUTE WALKING SCRIPT HERE
  63. bl execute_script
  64. return_false:
  65. mov r0, #0
  66. b end
  67. return_true:
  68. mov r0, #1
  69. end:
  70. pop {r5}
  71. pop {r4}
  72. pop {r1}
  73. bx r1
  74. safari_step:
  75. ldr r3, =0x080A0F0C|1
  76. bx r3
  77. get_player_to:
  78. ldr r3, =0x0805C538|1
  79. bx r3
  80. check_block_role:
  81. ldr r3, =0x08058F78|1
  82. bx r3
  83. read_var:
  84. ldr r3, =var_access
  85. bx r3
  86. read_flag:
  87. ldr r3, =flag_decrypt_func
  88. bx r3
  89. execute_script:
  90. ldr r3, =0x08069AE4|1
  91. bx r3
  92. .align 2
  93. behavior_walk_table:
  94. .word 0x09700B20
  95. script_walk_table:
  96. .word 0x09700F20