summaryrefslogtreecommitdiff
path: root/macros.asm
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-06-12 00:51:59 -0700
committerYamaArashi <shadow962@live.com>2016-06-12 00:52:14 -0700
commit61ee39678695479816feff4b58baaa6953ff219f (patch)
tree3f917e1bf896e380cfea6d2d876ff68a4db87a57 /macros.asm
parentfd2235e678c58cebd6255b5e658e704ee5138591 (diff)
more syncing with pokeyellow
Diffstat (limited to 'macros.asm')
-rw-r--r--macros.asm132
1 files changed, 102 insertions, 30 deletions
diff --git a/macros.asm b/macros.asm
index 8475582c..661fde0c 100644
--- a/macros.asm
+++ b/macros.asm
@@ -81,29 +81,62 @@ bcd3: MACRO
coins equs "bcd2"
money equs "bcd3"
+validateCoords: MACRO
+ if \1 >= SCREEN_WIDTH
+ fail "x coord out of range"
+ endc
+ if \2 >= SCREEN_HEIGHT
+ fail "y coord out of range"
+ endc
+ endm
+
;\1 = r
;\2 = X
;\3 = Y
+;\4 = which tilemap (optional)
coord: MACRO
- ld \1, wTileMap + 20 * \3 + \2
+ validateCoords \2, \3
+if _NARG >= 4
+ ld \1, \4 + SCREEN_WIDTH * \3 + \2
+else
+ ld \1, wTileMap + SCREEN_WIDTH * \3 + \2
+endc
ENDM
;\1 = X
;\2 = Y
+;\3 = which tilemap (optional)
aCoord: MACRO
- ld a, [wTileMap + 20 * \2 + \1]
+ validateCoords \1, \2
+if _NARG >= 3
+ ld a, [\3 + SCREEN_WIDTH * \2 + \1]
+else
+ ld a, [wTileMap + SCREEN_WIDTH * \2 + \1]
+endc
ENDM
;\1 = X
;\2 = Y
+;\3 = which tilemap (optional)
Coorda: MACRO
- ld [wTileMap + 20 * \2 + \1], a
+ validateCoords \1, \2
+if _NARG >= 3
+ ld [\3 + SCREEN_WIDTH * \2 + \1], a
+else
+ ld [wTileMap + SCREEN_WIDTH * \2 + \1], a
+endc
ENDM
;\1 = X
;\2 = Y
+;\3 = which tilemap (optional)
dwCoord: MACRO
- dw wTileMap + 20 * \2 + \1
+ validateCoords \1, \2
+if _NARG >= 3
+ dw \3 + SCREEN_WIDTH * \2 + \1
+else
+ dw wTileMap + SCREEN_WIDTH * \2 + \1
+endc
ENDM
;\1 = r
@@ -134,7 +167,7 @@ EMAP: MACRO ; emap x-coordinate,y-coordinate,textpointer
; nybble: y-coordinate
; nybble: x-coordinate
; word : pointer to map name
- db (\1 + (\2 << 4))
+ dn \2, \1
dw \3
ENDM
@@ -146,7 +179,7 @@ IMAP: MACRO ; imap mapid_less_than,x-coordinate,y-coordinate,textpointer
; nybble: x-coordinate
; word : pointer to map name
db \1 + 1
- db \2 + \3 << 4
+ dn \3, \2
dw \4
ENDM
@@ -174,28 +207,30 @@ dbw: MACRO
dw \2
ENDM
-; data format macros
-RGB: MACRO
- dw (\3 << 10 | \2 << 5 | \1)
+dba: MACRO
+ dbw BANK(\1), \1
ENDM
-; text macros
-TX_NUM: MACRO
-; print a big-endian decimal number.
-; \1: address to read from
-; \2: number of bytes to read
-; \3: number of digits to display
- db $09
+dwb: MACRO
dw \1
- db \2 << 4 | \3
+ db \2
ENDM
-TX_FAR: MACRO
- db $17
- dw \1
- db BANK(\1)
+dab: MACRO
+ dwb \1, BANK(\1)
ENDM
+dbbw: MACRO
+ db \1, \2
+ dw \3
+ ENDM
+
+; data format macros
+RGB: MACRO
+ dw (\3 << 10 | \2 << 5 | \1)
+ ENDM
+
+; text macros
; text engine command $1
TX_RAM: MACRO
; prints text to screen
@@ -212,32 +247,62 @@ TX_BCD: MACRO
db \2
ENDM
-TX_MART: MACRO
- db $FE, _NARG
- rept _NARG
- db \1
- shift
- endr
- db $FF
+TX_CURSOR: MACRO
+; Move cursor to (\1, \2)
+; \1: X coord (0 - 19)
+; \2: Y coord (0 - 17)
+ db $3
+ dwCoord \1, \2
ENDM
TX_LINE EQUS "db $05"
TX_BUTTON_SOUND EQUS "db $06"
TX_ASM EQUS "db $08"
+
+TX_NUM: MACRO
+; print a big-endian decimal number.
+; \1: address to read from
+; \2: number of bytes to read
+; \3: number of digits to display
+ db $09
+ dw \1
+ db \2 << 4 | \3
+ ENDM
+
TX_SFX_ITEM EQUS "db $0b"
TX_WAIT_BUTTON EQUS "db $0d"
TX_SFX_CONGRATS EQUS "db $10"
TX_SFX_KEY_ITEM EQUS "db $11"
+TX_FAR: MACRO
+; 17AAAABB (call text at BB:AAAA)
+ db $17
+ dab \1
+ ENDM
+
TX_VENDING_MACHINE EQUS "db $f5"
TX_CABLE_CLUB_RECEPTIONIST EQUS "db $f6"
TX_PRIZE_VENDOR EQUS "db $f7"
TX_POKECENTER_PC EQUS "db $f9"
TX_PLAYERS_PC EQUS "db $fc"
TX_BILLS_PC EQUS "db $fd"
+
+TX_MART: MACRO
+ db $FE, _NARG
+ rept _NARG
+ db \1
+ shift
+ endr
+ db $FF
+ ENDM
+
TX_POKECENTER_NURSE EQUS "db $ff"
; Predef macro.
+predef_const: MACRO
+ const \1PredefID
+ ENDM
+
add_predef: MACRO
\1Predef::
db BANK(\1)
@@ -258,11 +323,18 @@ predef_jump: MACRO
jp Predef
ENDM
+tx_pre_const: MACRO
+ const \1_id
+ ENDM
add_tx_pre: MACRO
\1_id:: dw \1
ENDM
+db_tx_pre: MACRO
+ db (\1_id - TextPredefs) / 2 + 1
+ENDM
+
tx_pre_id: MACRO
ld a, (\1_id - TextPredefs) / 2 + 1
ENDM
@@ -674,9 +746,9 @@ ENDM
tmlearn: MACRO
x = 0
rept _NARG
-if \1 != 0
+IF \1 != 0
x = x | (1 << ((\1 - 1) % 8))
-endc
+ENDC
shift
endr
db x