summaryrefslogtreecommitdiff
path: root/macros/map.asm
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2016-01-29 18:36:31 -0500
committerPikalaxALT <PikalaxALT@gmail.com>2016-01-29 18:36:31 -0500
commit2bf93c5905319e9181f87b3f83cd3bce7b9feeca (patch)
tree3ebf17c8879e5d6243d81aac8f1c36eb226fac26 /macros/map.asm
parented3f9395f6d45f6554ed9d9c49c41ea86a8e2447 (diff)
Import stuff from pokecrystal; diff gold and silver
Diffstat (limited to 'macros/map.asm')
-rw-r--r--macros/map.asm189
1 files changed, 189 insertions, 0 deletions
diff --git a/macros/map.asm b/macros/map.asm
new file mode 100644
index 00000000..2e876577
--- /dev/null
+++ b/macros/map.asm
@@ -0,0 +1,189 @@
+map: MACRO
+ db GROUP_\1, MAP_\1
+ENDM
+
+roam_map: MACRO
+; A map and an arbitrary number of some more maps.
+
+ map \1
+ db \2
+
+ rept \2
+ map \3
+ shift
+ endr
+
+ db 0
+ENDM
+
+person_event: macro
+ db \1 ; sprite
+ db \2 + 4 ; y
+ db \3 + 4 ; x
+ db \4 ; movement function
+ dn \5, \6 ; radius: y, x
+ db \7 ; clock_hour
+ db \8 ; clock_daytime
+ shift
+ dn \8, \9 ; color_function
+ shift
+ db \9 ; sight_range
+ shift
+ dw \9 ; pointer
+ shift
+ dw \9 ; event flag
+ endm
+
+signpost: macro
+ db \1 ; y
+ db \2 ; x
+ db \3 ; function
+ dw \4 ; pointer
+ endm
+
+xy_trigger: macro
+ db \1 ; number
+ db \2 ; y
+ db \3 ; x
+ db \4 ; unknown1
+ dw \5 ; script
+ db \6 ; unknown2
+ db \7 ; unknown3
+ endm
+
+warp_def: macro
+ db \1 ; y
+ db \2 ; x
+ db \3 ; warp_to
+ map \4 ; map
+ endm
+
+
+map_header: MACRO
+ ; label, tileset, permission, location, music, phone service flag, time of day, fishing group
+\1_MapHeader:
+ db BANK(\1_SecondMapHeader), \2, \3
+ dw \1_SecondMapHeader
+ db \4, \5
+ dn \6, \7
+ db \8
+ENDM
+
+
+map_header_2: MACRO
+; label, map, border block, connections
+\1_SecondMapHeader::
+ db \3
+ db \2_HEIGHT, \2_WIDTH
+ db BANK(\1_BlockData)
+ dw \1_BlockData
+ db BANK(\1_MapScriptHeader)
+ dw \1_MapScriptHeader
+ dw \1_MapEventHeader
+ db \4
+ENDM
+
+connection: MACRO
+if "\1" == "north"
+;\2: map id
+;\3: map label (eventually will be rolled into map id)
+;\4: x
+;\5: offset?
+;\6: strip length
+;\7: this map id
+ map \2
+ dw \3_BlockData + \2_WIDTH * (\2_HEIGHT - 3) + \5
+ dw OverworldMap + \4 + 3
+ db \6
+ db \2_WIDTH
+ db \2_HEIGHT * 2 - 1
+ db (\4 - \5) * -2
+ dw OverworldMap + \2_HEIGHT * (\2_WIDTH + 6) + 1
+endc
+
+if "\1" == "south"
+;\2: map id
+;\3: map label (eventually will be rolled into map id)
+;\4: x
+;\5: offset?
+;\6: strip length
+;\7: this map id
+ map \2
+ dw \3_BlockData + \5
+ dw OverworldMap + (\7_HEIGHT + 3) * (\7_WIDTH + 6) + \4 + 3
+ db \6
+ db \2_WIDTH
+ db 0
+ db (\4 - \5) * -2
+ dw OverworldMap + \2_WIDTH + 7
+endc
+
+if "\1" == "west"
+;\2: map id
+;\3: map label (eventually will be rolled into map id)
+;\4: y
+;\5: offset?
+;\6: strip length
+;\7: this map id
+ map \2
+ dw \3_BlockData + (\2_WIDTH * \5) + \2_WIDTH - 3
+ dw OverworldMap + (\7_WIDTH + 6) * (\4 + 3)
+ db \6
+ db \2_WIDTH
+ db (\4 - \5) * -2
+ db \2_WIDTH * 2 - 1
+ dw OverworldMap + \2_WIDTH * 2 + 6
+endc
+
+if "\1" == "east"
+;\2: map id
+;\3: map label (eventually will be rolled into map id)
+;\4: y
+;\5: offset?
+;\6: strip length
+;\7: this map id
+ map \2
+ dw \3_BlockData + (\2_WIDTH * \5)
+ dw OverworldMap + (\7_WIDTH + 6) * (\4 + 3 + 1) - 3
+ db \6
+ db \2_WIDTH
+ db (\4 - \5) * -2
+ db 0
+ dw OverworldMap + \2_WIDTH + 7
+endc
+
+ENDM
+
+mapgroup: MACRO
+GROUP_\1 EQU const_value
+ enum MAP_\1
+\1_HEIGHT EQU \2
+\1_WIDTH EQU \3
+ENDM
+
+newgroup: MACRO
+const_value = const_value + 1
+ enum_start 1
+ENDM
+
+elevfloor: MACRO
+ db \1, \2
+ map \3
+ENDM
+
+itemball: MACRO
+if _NARG == 2
+ db \1, \2
+else
+ db \1, 1
+endc
+endm
+
+stonetable: MACRO
+ db \1, \2
+ dw \3
+endm
+
+maptrigger: MACRO
+ dw \1, 0
+endm