Advertisement
Guest User

pokecrystal connection macro

a guest
Nov 10th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; Connections go in order: north, south, west, east
  2. connection: MACRO
  3. ;\1: direction
  4. ;\2: map name
  5. ;\3: map id
  6. ;\4: offset of the target map relative to the current map
  7. ;    (x offset for east/west, y offset for north/south)
  8.  
  9. ; legacy support for old connection macro
  10. if _NARG == 6
  11.     connection \1, \2, \3, (\4) - (\5)
  12. else
  13.  
  14. ; Calculate tile offsets for source (current) and target maps
  15. _r = (\4) + 3
  16. if _r < 0
  17. _s = -_r
  18. _t = 0
  19. else
  20. _s = 0
  21. _t = _r
  22. endc
  23.  
  24. if "\1" == "north"
  25. _foo1 = \3_WIDTH * (\3_HEIGHT + -3) + _s
  26. _foo2 = _t
  27. _foo3 = CURRENT_MAP_WIDTH + 3 - (\4)
  28. if \3_WIDTH < _foo3
  29. _foo3 = \3_WIDTH
  30. endc
  31. _foo4 = \3_HEIGHT * 2 - 1
  32. _foo5 = (\4) * -2
  33. _foo6 = (\3_WIDTH + 6) * \3_HEIGHT + 1
  34.  
  35. elif "\1" == "south"
  36. _foo1 = _s
  37. _foo2 = (CURRENT_MAP_WIDTH + 6) * (CURRENT_MAP_HEIGHT + 3) + _t
  38. _foo3 = CURRENT_MAP_WIDTH + 3 - (\4)
  39. if \3_WIDTH < _foo3
  40. _foo3 = \3_WIDTH
  41. endc
  42. _foo4 = 0
  43. _foo5 = (\4) * -2
  44. _foo6 = \3_WIDTH + 7
  45.  
  46. elif "\1" == "west"
  47. _foo1 = (\3_WIDTH * _s) + \3_WIDTH + -3
  48. _foo2 = (CURRENT_MAP_WIDTH + 6) * _t
  49. _foo3 = CURRENT_MAP_HEIGHT + 3 - (\4)
  50. if \3_HEIGHT < _foo3
  51. _foo3 = \3_HEIGHT
  52. endc
  53. _foo4 = (\4) * -2
  54. _foo5 = \3_WIDTH * 2 - 1
  55. _foo6 = (\3_WIDTH + 6) * 2 + -6
  56.  
  57. elif "\1" == "east"
  58. _foo1 = (\3_WIDTH * _s)
  59. _foo2 = (CURRENT_MAP_WIDTH + 6) * _t + CURRENT_MAP_WIDTH + 3
  60. _foo3 = CURRENT_MAP_HEIGHT + 3 - (\4)
  61. if \3_HEIGHT < _foo3
  62. _foo3 = \3_HEIGHT
  63. endc
  64. _foo4 = (\4) * -2
  65. _foo5 = 0
  66. _foo6 = \3_WIDTH + 7
  67.  
  68. else
  69. fail "Invalid direction for 'connection'."
  70. endc
  71.  
  72.     map_id \3
  73.     dw \2_Blocks + _foo1
  74.     dw wOverworldMapBlocks + _foo2
  75.     db _foo3 - _s
  76.     db \3_WIDTH
  77.     db _foo4
  78.     db _foo5
  79.     dw wOverworldMapBlocks + _foo6
  80. endc
  81. ENDM
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement