mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-01-23 09:16:20 -08:00
Updated map and mapgroup macros to get around an rgbds bug. Legendary beast locale handling annotated and relabeled. Added a new constant NUM_ENGINE_FLAGS for use in the EngineFlagAction function. This will make it easier for modders to add or remove engine flags.
184 lines
2.9 KiB
NASM
184 lines
2.9 KiB
NASM
map: MACRO
|
|
; This is a silly hack to get around an rgbds bug.
|
|
|
|
; Ideally:
|
|
; db GROUP_\1, MAP_\1
|
|
|
|
\1\@ EQUS "GROUP_\1"
|
|
\1\@_2 EQUS "MAP_\1"
|
|
db \1\@, \1\@_2
|
|
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 ; y
|
|
db \3 ; x
|
|
db \4 ; facing
|
|
db \5 ; movement
|
|
db \6 ; clock_hour
|
|
db \7 ; clock_daytime
|
|
db \8 ; color_function
|
|
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
|
|
\2\@HEIGHT EQUS "\2_HEIGHT"
|
|
\2\@WIDTH EQUS "\2_WIDTH"
|
|
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
|
|
; map id, height, width
|
|
\1\@ EQUS "GROUP_\1"
|
|
\1\@_2 EQUS "MAP_\1"
|
|
\1\@ EQU const_value
|
|
enum \1\@_2
|
|
\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
|