shithub: pokered

Download patch

ref: 13129459f11e73df8c556f0c02cd4fca7266a346
parent: 45ed05decf330faab4503fe8fecadc54698c9724
author: Rangi <remy.oukaour+rangi42@gmail.com>
date: Tue Jul 7 07:30:10 EDT 2020

Sync coordinate macros with pokecrystal

--- a/engine/battle/animations.asm
+++ b/engine/battle/animations.asm
@@ -682,7 +682,7 @@
 	cp 1
 	ret nz
 .moveGhostMarowakLeft
-	coord hl, 17, 0
+	hlcoord 17, 0
 	ld de, 20
 	lb bc, 7, 7
 .loop
@@ -781,7 +781,7 @@
 	cp 1 ; is it the end of the subanimation?
 	jr nz, FlashScreenEveryFourFrameBlocks
 ; if it's the end of the subanimation, make the attacking pokemon disappear
-	coord hl, 1, 5
+	hlcoord 1, 5
 	jp AnimationHideMonPic ; make pokemon disappear
 
 ; flashes the screen when subanimation counter is 1 modulo 4
@@ -1135,12 +1135,12 @@
 	ld c, 7
 	ldh a, [hWhoseTurn]
 	and a
-	coord hl, 1, 6
-	coord de, 1, 5
+	hlcoord 1, 6
+	decoord 1, 5
 	ld a, $30
 	jr z, .next
-	coord hl, 12, 1
-	coord de, 12, 0
+	hlcoord 12, 1
+	decoord 12, 0
 	ld a, $ff
 .next
 	ld [wSlideMonUpBottomRowLeftTile], a
@@ -1203,9 +1203,9 @@
 ; Fill in the bottom row of the mon pic with the next row's tile IDs.
 	ldh a, [hWhoseTurn]
 	and a
-	coord hl, 1, 11
+	hlcoord 1, 11
 	jr z, .next
-	coord hl, 12, 6
+	hlcoord 12, 6
 .next
 	ld a, [wSlideMonUpBottomRowLeftTile]
 	inc a
@@ -1372,11 +1372,11 @@
 ; The mon's sprite disappears after this animation.
 	ldh a, [hWhoseTurn]
 	and a
-	coord hl, 0, 5
-	coord de, 2, 5
+	hlcoord 0, 5
+	decoord 2, 5
 	jr z, .next
-	coord hl, 11, 0
-	coord de, 13, 0
+	hlcoord 11, 0
+	decoord 13, 0
 
 .next
 	xor a
@@ -1420,9 +1420,9 @@
 	call AnimationHideMonPic
 	ldh a, [hWhoseTurn]
 	and a
-	coord hl, 2, 5
+	hlcoord 2, 5
 	jr z, .next
-	coord hl, 11, 0
+	hlcoord 11, 0
 .next
 	xor a
 	push hl
@@ -1533,12 +1533,12 @@
 	ldh a, [hWhoseTurn]
 	and a
 	jr z, .playerTurn
-	coord hl, 16, 0
-	coord de, 14, 0
+	hlcoord 16, 0
+	decoord 14, 0
 	jr .next
 .playerTurn
-	coord hl, 5, 5
-	coord de, 3, 5
+	hlcoord 5, 5
+	decoord 3, 5
 .next
 	push de
 	xor a ; left
@@ -1746,10 +1746,10 @@
 	ldh a, [hWhoseTurn]
 	and a
 	jr z, .playerTurn
-	coord hl, 12, 0
+	hlcoord 12, 0
 	jr .next
 .playerTurn
-	coord hl, 0, 5
+	hlcoord 0, 5
 .next
 	ld d, 8 ; d's value is unused
 .slideLoop ; iterates once for each time the pic slides by one tile
@@ -1996,7 +1996,7 @@
 	xor a
 	ld [wSpriteFlipped], a
 	call GetMonHeader
-	coord hl, 12, 0
+	hlcoord 12, 0
 	call LoadFrontSpriteByMonIndex
 	jr .done
 .playerTurn
@@ -2064,7 +2064,7 @@
 	push bc
 	ld e, a
 	ld d, 0
-	coord hl, 0, 0
+	hlcoord 0, 0
 	add hl, de
 	lb bc, 7, 7
 	call ClearScreenArea
@@ -2086,7 +2086,7 @@
 .enemyTurn
 	ld a, 12
 .next
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld e, a
 	ld d, 0
 	add hl, de
--- a/engine/battle/battle_transitions.asm
+++ b/engine/battle/battle_transitions.asm
@@ -181,7 +181,7 @@
 	call BattleTransition_InwardSpiral
 	jr .done
 .outwardSpiral
-	coord hl, 10, 10
+	hlcoord 10, 10
 	ld a, $3
 	ld [wOutwardSpiralCurrentDirection], a
 	ld a, l
@@ -210,7 +210,7 @@
 BattleTransition_InwardSpiral:
 	ld a, 7
 	ld [wInwardSpiralUpdateScreenCounter], a
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld c, SCREEN_HEIGHT - 1
 	ld de, SCREEN_WIDTH
 	call BattleTransition_InwardSpiral_
@@ -350,20 +350,20 @@
 	push bc
 	xor a
 	ldh [hAutoBGTransferEnabled], a
-	coord hl, 0, 7
-	coord de, 0, 8
+	hlcoord 0, 7
+	decoord 0, 8
 	ld bc, -SCREEN_WIDTH * 2
 	call BattleTransition_CopyTiles1
-	coord hl, 0, 10
-	coord de, 0, 9
+	hlcoord 0, 10
+	decoord 0, 9
 	ld bc, SCREEN_WIDTH * 2
 	call BattleTransition_CopyTiles1
-	coord hl, 8, 0
-	coord de, 9, 0
+	hlcoord 8, 0
+	decoord 9, 0
 	ld bc, -2
 	call BattleTransition_CopyTiles2
-	coord hl, 11, 0
-	coord de, 10, 0
+	hlcoord 11, 0
+	decoord 10, 0
 	ld bc, 2
 	call BattleTransition_CopyTiles2
 	ld a, $1
@@ -384,20 +384,20 @@
 	ldh [hAutoBGTransferEnabled], a
 .loop
 	push bc
-	coord hl, 0, 16
-	coord de, 0, 17
+	hlcoord 0, 16
+	decoord 0, 17
 	ld bc, -SCREEN_WIDTH * 2
 	call BattleTransition_CopyTiles1
-	coord hl, 0, 1
-	coord de, 0, 0
+	hlcoord 0, 1
+	decoord 0, 0
 	ld bc, SCREEN_WIDTH * 2
 	call BattleTransition_CopyTiles1
-	coord hl, 18, 0
-	coord de, 19, 0
+	hlcoord 18, 0
+	decoord 19, 0
 	ld bc, -2
 	call BattleTransition_CopyTiles2
-	coord hl, 1, 0
-	coord de, 0, 0
+	hlcoord 1, 0
+	decoord 0, 0
 	ld bc, 2
 	call BattleTransition_CopyTiles2
 	call BattleTransition_TransferDelay3
@@ -493,8 +493,8 @@
 ; used for high level wild dungeon battles
 BattleTransition_VerticalStripes:
 	ld c, SCREEN_HEIGHT
-	coord hl, 0, 0
-	coord de, 1, 17
+	hlcoord 0, 0
+	decoord 1, 17
 	xor a
 	ldh [hAutoBGTransferEnabled], a
 .loop
@@ -532,8 +532,8 @@
 ; used for low level wild dungeon battles
 BattleTransition_HorizontalStripes:
 	ld c, SCREEN_WIDTH
-	coord hl, 0, 0
-	coord de, 19, 1
+	hlcoord 0, 0
+	decoord 19, 1
 	xor a
 	ldh [hAutoBGTransferEnabled], a
 .loop
@@ -654,84 +654,84 @@
 BattleTransition_HalfCircle1:
 	db $01
 	dw BattleTransition_CircleData1
-	dwCoord 18, 6
+	dwcoord 18, 6
 
 	db $01
 	dw BattleTransition_CircleData2
-	dwCoord 19, 3
+	dwcoord 19, 3
 
 	db $01
 	dw BattleTransition_CircleData3
-	dwCoord 18, 0
+	dwcoord 18, 0
 
 	db $01
 	dw BattleTransition_CircleData4
-	dwCoord 14, 0
+	dwcoord 14, 0
 
 	db $01
 	dw BattleTransition_CircleData5
-	dwCoord 10, 0
+	dwcoord 10, 0
 
 	db $00
 	dw BattleTransition_CircleData5
-	dwCoord 9, 0
+	dwcoord 9, 0
 
 	db $00
 	dw BattleTransition_CircleData4
-	dwCoord 5, 0
+	dwcoord 5, 0
 
 	db $00
 	dw BattleTransition_CircleData3
-	dwCoord 1, 0
+	dwcoord 1, 0
 
 	db $00
 	dw BattleTransition_CircleData2
-	dwCoord 0, 3
+	dwcoord 0, 3
 
 	db $00
 	dw BattleTransition_CircleData1
-	dwCoord 1, 6
+	dwcoord 1, 6
 
 BattleTransition_HalfCircle2:
 	db $00
 	dw BattleTransition_CircleData1
-	dwCoord 1, 11
+	dwcoord 1, 11
 
 	db $00
 	dw BattleTransition_CircleData2
-	dwCoord 0, 14
+	dwcoord 0, 14
 
 	db $00
 	dw BattleTransition_CircleData3
-	dwCoord 1, 17
+	dwcoord 1, 17
 
 	db $00
 	dw BattleTransition_CircleData4
-	dwCoord 5, 17
+	dwcoord 5, 17
 
 	db $00
 	dw BattleTransition_CircleData5
-	dwCoord 9, 17
+	dwcoord 9, 17
 
 	db $01
 	dw BattleTransition_CircleData5
-	dwCoord 10, 17
+	dwcoord 10, 17
 
 	db $01
 	dw BattleTransition_CircleData4
-	dwCoord 14, 17
+	dwcoord 14, 17
 
 	db $01
 	dw BattleTransition_CircleData3
-	dwCoord 18, 17
+	dwcoord 18, 17
 
 	db $01
 	dw BattleTransition_CircleData2
-	dwCoord 19, 14
+	dwcoord 19, 14
 
 	db $01
 	dw BattleTransition_CircleData1
-	dwCoord 18, 11
+	dwcoord 18, 11
 
 BattleTransition_Circle_Sub3:
 	push hl
--- a/engine/battle/core.asm
+++ b/engine/battle/core.asm
@@ -11,7 +11,7 @@
 	ld a, MESSAGE_BOX ; the usual text box at the bottom of the screen
 	ld [wTextBoxID], a
 	call DisplayTextBoxID
-	coord hl, 1, 5
+	hlcoord 1, 5
 	lb bc, 3, 7
 	call ClearScreenArea
 	call DisableLCD
@@ -27,7 +27,7 @@
 	or c
 	jr nz, .clearBackgroundLoop
 ; copy the work RAM tile map to VRAM
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld de, vBGMap0
 	ld b, 18 ; number of rows
 .copyRowLoop
@@ -86,7 +86,7 @@
 	ldh [hAutoBGTransferEnabled], a
 	ld a, $31
 	ldh [hStartTileID], a
-	coord hl, 1, 5
+	hlcoord 1, 5
 	predef CopyUncompressedPicToTilemap
 	xor a
 	ldh [hWY], a
@@ -232,7 +232,7 @@
 	ld [wcf91], a
 	ld [wBattleMonSpecies2], a
 	call LoadScreenTilesFromBuffer1
-	coord hl, 1, 5
+	hlcoord 1, 5
 	ld a, $9
 	call SlideTrainerPicOffScreen
 	call SaveScreenTilesToBuffer1
@@ -666,12 +666,12 @@
 	ret
 
 UpdateCurMonHPBar:
-	coord hl, 10, 9    ; tile pointer to player HP bar
+	hlcoord 10, 9    ; tile pointer to player HP bar
 	ldh a, [hWhoseTurn]
 	and a
 	ld a, $1
 	jr z, .playersTurn
-	coord hl, 2, 2    ; tile pointer to enemy HP bar
+	hlcoord 2, 2    ; tile pointer to enemy HP bar
 	xor a
 .playersTurn
 	push bc
@@ -767,10 +767,10 @@
 	ld hl, wPlayerUsedMove
 	ld [hli], a
 	ld [hl], a
-	coord hl, 12, 5
-	coord de, 12, 6
+	hlcoord 12, 5
+	decoord 12, 6
 	call SlideDownFaintedMonPic
-	coord hl, 0, 0
+	hlcoord 0, 0
 	lb bc, 4, 11
 	call ClearScreenArea
 	ld a, [wIsInBattle]
@@ -1021,11 +1021,11 @@
 	ld [hl], a
 	ld [wBattleMonStatus], a
 	call ReadPlayerMonCurHPAndStatus
-	coord hl, 9, 7
+	hlcoord 9, 7
 	lb bc, 5, 11
 	call ClearScreenArea
-	coord hl, 1, 10
-	coord de, 1, 11
+	hlcoord 1, 10
+	decoord 1, 11
 	call SlideDownFaintedMonPic
 	ld a, $1
 	ld [wBattleResult], a
@@ -1059,7 +1059,7 @@
 	ld hl, UseNextMonText
 	call PrintText
 .displayYesNoBox
-	coord hl, 13, 9
+	hlcoord 13, 9
 	lb bc, 10, 14
 	ld a, TWO_OPTION_MENU
 	ld [wTextBoxID], a
@@ -1136,7 +1136,7 @@
 	ld a, [wCurOpponent]
 	cp OPP_SONY1
 	jr nz, .notSony1Battle
-	coord hl, 0, 0  ; sony 1 battle
+	hlcoord 0, 0  ; sony 1 battle
 	lb bc, 8, 21
 	call ClearScreenArea
 	call ScrollTrainerPicAfterBattle
@@ -1306,7 +1306,7 @@
 	ld [wAICount], a
 	ld hl, wPlayerBattleStatus1
 	res 5, [hl]
-	coord hl, 18, 0
+	hlcoord 18, 0
 	ld a, 8
 	call SlideTrainerPicOffScreen
 	call PrintEmptyString
@@ -1376,7 +1376,7 @@
 	jr nz, .next4
 	ld hl, TrainerAboutToUseText
 	call PrintText
-	coord hl, 0, 7
+	hlcoord 0, 7
 	lb bc, 8, 1
 	ld a, TWO_OPTION_MENU
 	ld [wTextBoxID], a
@@ -1411,7 +1411,7 @@
 	call LoadScreenTilesFromBuffer1
 .next4
 	call ClearSprites
-	coord hl, 0, 0
+	hlcoord 0, 0
 	lb bc, 4, 11
 	call ClearScreenArea
 	ld b, SET_PAL_BATTLE
@@ -1427,7 +1427,7 @@
 	call LoadMonFrontSprite
 	ld a, -$31
 	ldh [hStartTileID], a
-	coord hl, 15, 6
+	hlcoord 15, 6
 	predef AnimateSendingOutMon
 	ld a, [wEnemyMonSpecies2]
 	call PlayCry
@@ -1757,7 +1757,7 @@
 	ldh [hWhoseTurn], a
 	ld a, POOF_ANIM
 	call PlayMoveAnimation
-	coord hl, 4, 11
+	hlcoord 4, 11
 	predef AnimateSendingOutMon
 	ld a, [wcf91]
 	call PlayCry
@@ -1766,10 +1766,10 @@
 
 ; show 2 stages of the player mon getting smaller before disappearing
 AnimateRetreatingPlayerMon:
-	coord hl, 1, 5
+	hlcoord 1, 5
 	lb bc, 7, 7
 	call ClearScreenArea
-	coord hl, 3, 7
+	hlcoord 3, 7
 	lb bc, 5, 5
 	xor a
 	ld [wDownscaledMonSize], a
@@ -1778,7 +1778,7 @@
 	ld c, 4
 	call DelayFrames
 	call .clearScreenArea
-	coord hl, 4, 9
+	hlcoord 4, 9
 	lb bc, 3, 3
 	ld a, 1
 	ld [wDownscaledMonSize], a
@@ -1788,9 +1788,9 @@
 	call Delay3
 	call .clearScreenArea
 	ld a, $4c
-	Coorda 5, 11
+	ldcoord_a 5, 11
 .clearScreenArea
-	coord hl, 1, 5
+	hlcoord 1, 5
 	lb bc, 7, 7
 	jp ClearScreenArea
 
@@ -1813,14 +1813,14 @@
 DrawPlayerHUDAndHPBar:
 	xor a
 	ldh [hAutoBGTransferEnabled], a
-	coord hl, 9, 7
+	hlcoord 9, 7
 	lb bc, 5, 11
 	call ClearScreenArea
 	callfar PlacePlayerHUDTiles
-	coord hl, 18, 9
+	hlcoord 18, 9
 	ld [hl], $73
 	ld de, wBattleMonNick
-	coord hl, 10, 7
+	hlcoord 10, 7
 	call CenterMonName
 	call PlaceString
 	ld hl, wBattleMonSpecies
@@ -1831,7 +1831,7 @@
 	ld de, wLoadedMonLevel
 	ld bc, wBattleMonPP - wBattleMonLevel
 	call CopyData
-	coord hl, 14, 8
+	hlcoord 14, 8
 	push hl
 	inc hl
 	ld de, wLoadedMonStatus
@@ -1842,7 +1842,7 @@
 .doNotPrintLevel
 	ld a, [wLoadedMonSpecies]
 	ld [wcf91], a
-	coord hl, 10, 9
+	hlcoord 10, 9
 	predef DrawHP
 	ld a, $1
 	ldh [hAutoBGTransferEnabled], a
@@ -1874,15 +1874,15 @@
 DrawEnemyHUDAndHPBar:
 	xor a
 	ldh [hAutoBGTransferEnabled], a
-	coord hl, 0, 0
+	hlcoord 0, 0
 	lb bc, 4, 12
 	call ClearScreenArea
 	callfar PlaceEnemyHUDTiles
 	ld de, wEnemyMonNick
-	coord hl, 1, 0
+	hlcoord 1, 0
 	call CenterMonName
 	call PlaceString
-	coord hl, 4, 1
+	hlcoord 4, 1
 	push hl
 	inc hl
 	ld de, wEnemyMonStatus
@@ -1955,7 +1955,7 @@
 .drawHPBar
 	xor a
 	ld [wHPBarType], a
-	coord hl, 2, 2
+	hlcoord 2, 2
 	call DrawHPBar
 	ld a, $1
 	ldh [hAutoBGTransferEnabled], a
@@ -2030,12 +2030,12 @@
 	ld bc, NAME_LENGTH
 	call CopyData
 ; the following simulates the keystrokes by drawing menus on screen
-	coord hl, 9, 14
+	hlcoord 9, 14
 	ld [hl], "▶"
 	ld c, 80
 	call DelayFrames
 	ld [hl], " "
-	coord hl, 9, 16
+	hlcoord 9, 16
 	ld [hl], "▶"
 	ld c, 50
 	call DelayFrames
@@ -2060,14 +2060,14 @@
 	ld a, " "
 	jr z, .safariLeftColumn
 ; put cursor in left column for normal battle menu (i.e. when it's not a Safari battle)
-	Coorda 15, 14 ; clear upper cursor position in right column
-	Coorda 15, 16 ; clear lower cursor position in right column
+	ldcoord_a 15, 14 ; clear upper cursor position in right column
+	ldcoord_a 15, 16 ; clear lower cursor position in right column
 	ld b, $9 ; top menu item X
 	jr .leftColumn_WaitForInput
 .safariLeftColumn
-	Coorda 13, 14
-	Coorda 13, 16
-	coord hl, 7, 14
+	ldcoord_a 13, 14
+	ldcoord_a 13, 16
+	hlcoord 7, 14
 	ld de, wNumSafariBalls
 	lb bc, 1, 2
 	call PrintNumber
@@ -2093,14 +2093,14 @@
 	ld a, " "
 	jr z, .safariRightColumn
 ; put cursor in right column for normal battle menu (i.e. when it's not a Safari battle)
-	Coorda 9, 14 ; clear upper cursor position in left column
-	Coorda 9, 16 ; clear lower cursor position in left column
+	ldcoord_a 9, 14 ; clear upper cursor position in left column
+	ldcoord_a 9, 16 ; clear lower cursor position in left column
 	ld b, $f ; top menu item X
 	jr .rightColumn_WaitForInput
 .safariRightColumn
-	Coorda 1, 14 ; clear upper cursor position in left column
-	Coorda 1, 16 ; clear lower cursor position in left column
-	coord hl, 7, 14
+	ldcoord_a 1, 14 ; clear upper cursor position in left column
+	ldcoord_a 1, 16 ; clear lower cursor position in left column
+	hlcoord 7, 14
 	ld de, wNumSafariBalls
 	lb bc, 1, 2
 	call PrintNumber
@@ -2321,7 +2321,7 @@
 	call GBPalNormal
 	jp DisplayBattleMenu
 .partyMonDeselected
-	coord hl, 11, 11
+	hlcoord 11, 11
 	ld bc, 6 * SCREEN_WIDTH + 9
 	ld a, " "
 	call FillMemory
@@ -2483,18 +2483,18 @@
 	ret z
 	ld hl, wBattleMonMoves
 	call .loadmoves
-	coord hl, 4, 12
+	hlcoord 4, 12
 	ld b, 4
 	ld c, 14
 	di ; out of pure coincidence, it is possible for vblank to occur between the di and ei
 	   ; so it is necessary to put the di ei block to not cause tearing
 	call TextBoxBorder
-	coord hl, 4, 12
+	hlcoord 4, 12
 	ld [hl], $7a
-	coord hl, 10, 12
+	hlcoord 10, 12
 	ld [hl], $7e
 	ei
-	coord hl, 6, 13
+	hlcoord 6, 13
 	call .writemoves
 	ld b, $5
 	ld a, $c
@@ -2502,11 +2502,11 @@
 .mimicmenu
 	ld hl, wEnemyMonMoves
 	call .loadmoves
-	coord hl, 0, 7
+	hlcoord 0, 7
 	ld b, 4
 	ld c, 14
 	call TextBoxBorder
-	coord hl, 2, 8
+	hlcoord 2, 8
 	call .writemoves
 	ld b, $1
 	ld a, $7
@@ -2517,11 +2517,11 @@
 	ld bc, wPartyMon2 - wPartyMon1
 	call AddNTimes
 	call .loadmoves
-	coord hl, 4, 7
+	hlcoord 4, 7
 	ld b, 4
 	ld c, 14
 	call TextBoxBorder
-	coord hl, 6, 8
+	hlcoord 6, 8
 	call .writemoves
 	ld b, $5
 	ld a, $7
@@ -2577,7 +2577,7 @@
 	jr z, .battleselect
 	dec a
 	jr nz, .select
-	coord hl, 1, 14
+	hlcoord 1, 14
 	ld de, WhichTechniqueString
 	call PlaceString
 	jr .select
@@ -2589,7 +2589,7 @@
 	ld a, [wMenuItemToSwap]
 	and a
 	jr z, .select
-	coord hl, 5, 13
+	hlcoord 5, 13
 	dec a
 	ld bc, SCREEN_WIDTH
 	call AddNTimes
@@ -2826,7 +2826,7 @@
 PrintMenuItem:
 	xor a
 	ldh [hAutoBGTransferEnabled], a
-	coord hl, 0, 8
+	hlcoord 0, 8
 	ld b, 3
 	ld c, 9
 	call TextBoxBorder
@@ -2839,7 +2839,7 @@
 	ld a, [wCurrentMenuItem]
 	cp b
 	jr nz, .notDisabled
-	coord hl, 1, 10
+	hlcoord 1, 10
 	ld de, DisabledText
 	call PlaceString
 	jr .moveDisabled
@@ -2871,23 +2871,23 @@
 	and $3f
 	ld [wcd6d], a
 ; print TYPE/<type> and <curPP>/<maxPP>
-	coord hl, 1, 9
+	hlcoord 1, 9
 	ld de, TypeText
 	call PlaceString
-	coord hl, 7, 11
+	hlcoord 7, 11
 	ld [hl], "/"
-	coord hl, 5, 9
+	hlcoord 5, 9
 	ld [hl], "/"
-	coord hl, 5, 11
+	hlcoord 5, 11
 	ld de, wcd6d
 	lb bc, 1, 2
 	call PrintNumber
-	coord hl, 8, 11
+	hlcoord 8, 11
 	ld de, wMaxPP
 	lb bc, 1, 2
 	call PrintNumber
 	call GetCurrentMove
-	coord hl, 2, 10
+	hlcoord 2, 10
 	predef PrintMoveType
 .moveDisabled
 	ld a, $1
@@ -4822,7 +4822,7 @@
 	ld [wHPBarNewHP+1], a
 	ld a, [hl]
 	ld [wHPBarNewHP], a
-	coord hl, 2, 2
+	hlcoord 2, 2
 	xor a
 	ld [wHPBarType], a
 	predef UpdateHPBar2 ; animate the HP bar shortening
@@ -4940,7 +4940,7 @@
 	ld [wHPBarMaxHP+1], a
 	ld a, [hl]
 	ld [wHPBarMaxHP], a
-	coord hl, 10, 9
+	hlcoord 10, 9
 	ld a, $01
 	ld [wHPBarType], a
 	predef UpdateHPBar2 ; animate the HP bar shortening
@@ -6354,7 +6354,7 @@
 	ld [MBC1SRamEnable], a
 	ld a, $31
 	ldh [hStartTileID], a
-	coord hl, 1, 5
+	hlcoord 1, 5
 	predef_jump CopyUncompressedPicToTilemap
 
 ; does nothing since no stats are ever selected (barring glitches)
@@ -6770,7 +6770,7 @@
 	ldh [hStartTileID], a
 	dec a
 	ld [wAICount], a
-	coord hl, 12, 0
+	hlcoord 12, 0
 	predef CopyUncompressedPicToTilemap
 	ld a, $ff
 	ld [wEnemyMonPartyPos], a
@@ -6824,7 +6824,7 @@
 	xor a
 	ld [wTrainerClass], a
 	ldh [hStartTileID], a
-	coord hl, 12, 0
+	hlcoord 12, 0
 	predef CopyUncompressedPicToTilemap
 
 ; common code that executes after init battle code specific to trainer or wild battles
@@ -6846,10 +6846,10 @@
 	ld a, $9c
 	ldh [hAutoBGTransferDest + 1], a
 	call LoadScreenTilesFromBuffer1
-	coord hl, 9, 7
+	hlcoord 9, 7
 	lb bc, 5, 10
 	call ClearScreenArea
-	coord hl, 1, 0
+	hlcoord 1, 0
 	lb bc, 4, 10
 	call ClearScreenArea
 	call ClearSprites
@@ -6993,7 +6993,7 @@
 ; been loaded with GetMonHeader.
 	ld a, [wBattleMonSpecies2]
 	ld [wcf91], a
-	coord hl, 1, 5
+	hlcoord 1, 5
 	ld b, 7
 	ld c, 8
 	call ClearScreenArea
--- a/engine/battle/draw_hud_pokeball_gfx.asm
+++ b/engine/battle/draw_hud_pokeball_gfx.asm
@@ -121,7 +121,7 @@
 	ld de, wHUDGraphicsTiles
 	ld bc, $3
 	call CopyData
-	coord hl, 18, 10
+	hlcoord 18, 10
 	ld de, -1
 	jr PlaceHUDTiles
 
@@ -136,7 +136,7 @@
 	ld de, wHUDGraphicsTiles
 	ld bc, $3
 	call CopyData
-	coord hl, 1, 2
+	hlcoord 1, 2
 	ld de, $1
 	jr PlaceHUDTiles
 
--- a/engine/battle/end_of_battle.asm
+++ b/engine/battle/end_of_battle.asm
@@ -19,7 +19,7 @@
 	jr z, .placeWinOrLoseString
 	ld de, DrawText
 .placeWinOrLoseString
-	coord hl, 6, 8
+	hlcoord 6, 8
 	call PlaceString
 	ld c, 200
 	call DelayFrames
--- a/engine/battle/ghost_marowak_anim.asm
+++ b/engine/battle/ghost_marowak_anim.asm
@@ -4,7 +4,7 @@
 	ldh [rOBP1], a
 	call CopyMonPicFromBGToSpriteVRAM ; cover the BG ghost pic with a sprite ghost pic that looks the same
 ; now that the ghost pic is being displayed using sprites, clear the ghost pic from the BG tilemap
-	coord hl, 12, 0
+	hlcoord 12, 0
 	lb bc, 7, 7
 	call ClearScreenArea
 	call Delay3
--- a/engine/battle/link_battle_versus_text.asm
+++ b/engine/battle/link_battle_versus_text.asm
@@ -1,18 +1,18 @@
 ; display "[player] VS [enemy]" text box with pokeballs representing their parties next to the names
 DisplayLinkBattleVersusTextBox:
 	call LoadTextBoxTilePatterns
-	coord hl, 3, 4
+	hlcoord 3, 4
 	ld b, 7
 	ld c, 12
 	call TextBoxBorder
-	coord hl, 4, 5
+	hlcoord 4, 5
 	ld de, wPlayerName
 	call PlaceString
-	coord hl, 4, 10
+	hlcoord 4, 10
 	ld de, wLinkEnemyTrainerName
 	call PlaceString
 ; place bold "VS" tiles between the names
-	coord hl, 9, 8
+	hlcoord 9, 8
 	ld a, $69
 	ld [hli], a
 	ld [hl], $6a
--- a/engine/battle/move_effects/drain_hp.asm
+++ b/engine/battle/move_effects/drain_hp.asm
@@ -71,10 +71,10 @@
 .next
 	ldh a, [hWhoseTurn]
 	and a
-	coord hl, 10, 9
+	hlcoord 10, 9
 	ld a, $1
 	jr z, .next2
-	coord hl, 2, 2
+	hlcoord 2, 2
 	xor a
 .next2
 	ld [wHPBarType], a
--- a/engine/battle/move_effects/heal.asm
+++ b/engine/battle/move_effects/heal.asm
@@ -89,10 +89,10 @@
 	call BankswitchEtoF
 	ldh a, [hWhoseTurn]
 	and a
-	coord hl, 10, 9
+	hlcoord 10, 9
 	ld a, $1
 	jr z, .updateHPBar
-	coord hl, 2, 2
+	hlcoord 2, 2
 	xor a
 .updateHPBar
 	ld [wHPBarType], a
--- a/engine/battle/move_effects/recoil.asm
+++ b/engine/battle/move_effects/recoil.asm
@@ -53,12 +53,12 @@
 	ld [hli], a
 	ld [hl], a
 .getHPBarCoords
-	coord hl, 10, 9
+	hlcoord 10, 9
 	ldh a, [hWhoseTurn]
 	and a
 	ld a, $1
 	jr z, .updateHPBar
-	coord hl, 2, 2
+	hlcoord 2, 2
 	xor a
 .updateHPBar
 	ld [wHPBarType], a
--- a/engine/battle/scroll_draw_trainer_pic.asm
+++ b/engine/battle/scroll_draw_trainer_pic.asm
@@ -6,7 +6,7 @@
 	ld b, SET_PAL_BATTLE
 	call RunPaletteCommand
 	callfar _LoadTrainerPic
-	coord hl, 19, 0
+	hlcoord 19, 0
 	ld c, $0
 .scrollLoop
 	inc c
--- a/engine/battle/trainer_ai.asm
+++ b/engine/battle/trainer_ai.asm
@@ -542,7 +542,7 @@
 
 AIPrintItemUseAndUpdateHPBar:
 	call AIPrintItemUse_
-	coord hl, 2, 2
+	hlcoord 2, 2
 	xor a
 	ld [wHPBarType], a
 	predef UpdateHPBar2
--- a/engine/battle/wild_encounters.asm
+++ b/engine/battle/wild_encounters.asm
@@ -25,7 +25,7 @@
 .next
 ; determine if wild pokemon can appear in the half-block we're standing in
 ; is the bottom right tile (9,9) of the half-block we're standing in a grass/water tile?
-	coord hl, 9, 9
+	hlcoord 9, 9
 	ld c, [hl]
 	ld a, [wGrassTile]
 	cp c
@@ -64,7 +64,7 @@
 ; determine which wild pokemon (grass or water) can appear in the half-block we're standing in
 	ld c, [hl]
 	ld hl, wGrassMons
-	aCoord 8, 9
+	lda_coord 8, 9
 	cp $14 ; is the bottom left tile (8,9) of the half-block we're standing in a water tile?
 	jr nz, .gotWildEncounterType ; else, it's treated as a grass tile by default
 	ld hl, wWaterMons
--- a/engine/events/cinnabar_lab.asm
+++ b/engine/events/cinnabar_lab.asm
@@ -20,7 +20,7 @@
 	dec l
 	ld b, l
 	ld c, $d
-	coord hl, 0, 0
+	hlcoord 0, 0
 	call TextBoxBorder
 	call UpdateSprites
 	call PrintFossilsInBag
@@ -100,7 +100,7 @@
 	push hl
 	ld [wd11e], a
 	call GetItemName
-	coord hl, 2, 2
+	hlcoord 2, 2
 	ldh a, [hItemCounter]
 	ld bc, SCREEN_WIDTH * 2
 	call AddNTimes
--- a/engine/events/diploma.asm
+++ b/engine/events/diploma.asm
@@ -14,7 +14,7 @@
 	ld bc, $10
 	ld a, BANK(CircleTile)
 	call FarCopyData2
-	coord hl, 0, 0
+	hlcoord 0, 0
 	lb bc, 16, 18
 	predef Diploma_TextBoxBorder
 	ld hl, DiplomaTextPointersAndCoords
@@ -35,7 +35,7 @@
 	pop bc
 	dec c
 	jr nz, .asm_56715
-	coord hl, 10, 4
+	hlcoord 10, 4
 	ld de, wPlayerName
 	call PlaceString
 	farcall DrawPlayerCharacter
@@ -85,15 +85,15 @@
 
 DiplomaTextPointersAndCoords:
 	dw DiplomaText
-	dwCoord 5, 2
+	dwcoord 5, 2
 	dw DiplomaPlayer
-	dwCoord 3, 4
+	dwcoord 3, 4
 	dw DiplomaEmptyText
-	dwCoord 15, 4
+	dwcoord 15, 4
 	dw DiplomaCongrats
-	dwCoord 2, 6
+	dwcoord 2, 6
 	dw DiplomaGameFreak
-	dwCoord 9, 16
+	dwcoord 9, 16
 
 DiplomaText:
 	db CIRCLE_TILE_ID, "Diploma", CIRCLE_TILE_ID, "@"
--- a/engine/events/hidden_objects/bills_house_pc.asm
+++ b/engine/events/hidden_objects/bills_house_pc.asm
@@ -84,11 +84,11 @@
 .billsPokemonLoop
 	ld hl, wd730
 	set 6, [hl]
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld b, 10
 	ld c, 9
 	call TextBoxBorder
-	coord hl, 2, 2
+	hlcoord 2, 2
 	ld de, BillsMonListText
 	call PlaceString
 	ld hl, BillsHousePokemonListText2
--- a/engine/events/hidden_objects/book_or_sculpture.asm
+++ b/engine/events/hidden_objects/book_or_sculpture.asm
@@ -4,7 +4,7 @@
 	ld a, [wCurMapTileset]
 	cp MANSION ; Celadon Mansion tileset
 	jr nz, .ok
-	aCoord 8, 6
+	lda_coord 8, 6
 	cp $38
 	jr nz, .ok
 	ld hl, DiglettSculptureText
--- a/engine/events/hidden_objects/bookshelves.asm
+++ b/engine/events/hidden_objects/bookshelves.asm
@@ -6,7 +6,7 @@
 ; facing up
 	ld a, [wCurMapTileset]
 	ld b, a
-	aCoord 8, 7
+	lda_coord 8, 7
 	ld c, a
 	ld hl, BookshelfTileIDs
 .loop
--- a/engine/events/hidden_objects/museum_fossils.asm
+++ b/engine/events/hidden_objects/museum_fossils.asm
@@ -42,7 +42,7 @@
 	call LoadMonFrontSprite
 	ld a, $80
 	ldh [hStartTileID], a
-	coord hl, 10, 11
+	hlcoord 10, 11
 	predef AnimateSendingOutMon
 	call WaitForTextScrollButtonPress
 	call LoadScreenTilesFromBuffer1
--- a/engine/events/hidden_objects/school_blackboard.asm
+++ b/engine/events/hidden_objects/school_blackboard.asm
@@ -26,11 +26,11 @@
 .linkHelpLoop
 	ld hl, wd730
 	set 6, [hl]
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld b, 8
 	ld c, 13
 	call TextBoxBorder
-	coord hl, 2, 2
+	hlcoord 2, 2
 	ld de, HowToLinkText
 	call PlaceString
 	ld hl, LinkCableHelpText2
@@ -110,13 +110,13 @@
 .blackboardLoop
 	ld hl, wd730
 	set 6, [hl]
-	coord hl, 0, 0
+	hlcoord 0, 0
 	lb bc, 6, 10
 	call TextBoxBorder
-	coord hl, 1, 2
+	hlcoord 1, 2
 	ld de, StatusAilmentText1
 	call PlaceString
-	coord hl, 6, 2
+	hlcoord 6, 2
 	ld de, StatusAilmentText2
 	call PlaceString
 	ld hl, ViridianSchoolBlackboardText2
--- a/engine/events/pokemart.asm
+++ b/engine/events/pokemart.asm
@@ -84,7 +84,7 @@
 	ld hl, PokemartTellSellPriceText
 	lb bc, 14, 1 ; location that PrintText always prints to, this is useless
 	call PrintText
-	coord hl, 14, 7
+	hlcoord 14, 7
 	lb bc, 8, 15
 	ld a, TWO_OPTION_MENU
 	ld [wTextBoxID], a
@@ -162,7 +162,7 @@
 	call CopyStringToCF4B ; copy name to wcf4b
 	ld hl, PokemartTellBuyPriceText
 	call PrintText
-	coord hl, 14, 7
+	hlcoord 14, 7
 	lb bc, 8, 15
 	ld a, TWO_OPTION_MENU
 	ld [wTextBoxID], a
--- a/engine/events/prize_menu.asm
+++ b/engine/events/prize_menu.asm
@@ -22,7 +22,7 @@
 	ld a, $01
 	ld [wTopMenuItemX], a
 	call PrintPrizePrice
-	coord hl, 0, 2
+	hlcoord 0, 2
 	ld b, 8
 	ld c, 16
 	call TextBoxBorder
@@ -93,17 +93,17 @@
 	ld a, [wPrize1]
 	ld [wd11e], a
 	call GetItemName
-	coord hl, 2, 4
+	hlcoord 2, 4
 	call PlaceString
 	ld a, [wPrize2]
 	ld [wd11e], a
 	call GetItemName
-	coord hl, 2, 6
+	hlcoord 2, 6
 	call PlaceString
 	ld a, [wPrize3]
 	ld [wd11e], a
 	call GetItemName
-	coord hl, 2, 8
+	hlcoord 2, 8
 	call PlaceString
 	jr .putNoThanksText
 .putMonName
@@ -110,25 +110,25 @@
 	ld a, [wPrize1]
 	ld [wd11e], a
 	call GetMonName
-	coord hl, 2, 4
+	hlcoord 2, 4
 	call PlaceString
 	ld a, [wPrize2]
 	ld [wd11e], a
 	call GetMonName
-	coord hl, 2, 6
+	hlcoord 2, 6
 	call PlaceString
 	ld a, [wPrize3]
 	ld [wd11e], a
 	call GetMonName
-	coord hl, 2, 8
+	hlcoord 2, 8
 	call PlaceString
 .putNoThanksText
-	coord hl, 2, 10
+	hlcoord 2, 10
 	ld de, NoThanksText
 	call PlaceString
 ; put prices on the right side of the textbox
 	ld de, wPrize1Price
-	coord hl, 13, 5
+	hlcoord 13, 5
 ; reg. c:
 ; [low nybble] number of bytes
 ; [bits 765 = %100] space-padding (not zero-padding)
@@ -135,11 +135,11 @@
 	ld c, (1 << 7 | 2)
 	call PrintBCDNumber
 	ld de, wPrize2Price
-	coord hl, 13, 7
+	hlcoord 13, 7
 	ld c, (1 << 7 | 2)
 	call PrintBCDNumber
 	ld de, wPrize3Price
-	coord hl, 13, 9
+	hlcoord 13, 9
 	ld c, (1 << 7 | 2)
 	jp PrintBCDNumber
 
@@ -146,18 +146,18 @@
 INCLUDE "data/events/prizes.asm"
 
 PrintPrizePrice:
-	coord hl, 11, 0
+	hlcoord 11, 0
 	ld b, 1
 	ld c, 7
 	call TextBoxBorder
 	call UpdateSprites
-	coord hl, 12, 0
+	hlcoord 12, 0
 	ld de, .CoinString
 	call PlaceString
-	coord hl, 13, 1
+	hlcoord 13, 1
 	ld de, .SixSpacesString
 	call PlaceString
-	coord hl, 13, 1
+	hlcoord 13, 1
 	ld de, wPlayerCoins
 	ld c, %10000010
 	call PrintBCDNumber
--- a/engine/events/vending_machine.asm
+++ b/engine/events/vending_machine.asm
@@ -17,15 +17,15 @@
 	ld [wTopMenuItemX], a
 	ld hl, wd730
 	set 6, [hl]
-	coord hl, 0, 3
+	hlcoord 0, 3
 	ld b, 8
 	ld c, 12
 	call TextBoxBorder
 	call UpdateSprites
-	coord hl, 2, 5
+	hlcoord 2, 5
 	ld de, DrinkText
 	call PlaceString
-	coord hl, 9, 6
+	hlcoord 9, 6
 	ld de, DrinkPriceText
 	call PlaceString
 	ld hl, wd730
--- a/engine/items/item_effects.asm
+++ b/engine/items/item_effects.asm
@@ -1044,7 +1044,7 @@
 	sbc b
 	ld [hl], a
 	ld [wHPBarNewHP+1], a
-	coord hl, 4, 1
+	hlcoord 4, 1
 	ld a, [wWhichPokemon]
 	ld bc, 2 * SCREEN_WIDTH
 	call AddNTimes ; calculate coordinates of HP bar of pokemon that used Softboiled
@@ -2221,7 +2221,7 @@
 	call PrintText
 	ld hl, TeachMachineMoveText
 	call PrintText
-	coord hl, 14, 7
+	hlcoord 14, 7
 	lb bc, 8, 15
 	ld a, TWO_OPTION_MENU
 	ld [wTextBoxID], a
@@ -2607,7 +2607,7 @@
 	call CopyStringToCF4B ; copy name to wcf4b
 	ld hl, IsItOKToTossItemText
 	call PrintText
-	coord hl, 14, 7
+	hlcoord 14, 7
 	lb bc, 8, 15
 	ld a, TWO_OPTION_MENU
 	ld [wTextBoxID], a
--- a/engine/items/town_map.asm
+++ b/engine/items/town_map.asm
@@ -11,7 +11,7 @@
 	push af
 	ld b, $0
 	call DrawPlayerOrBirdSprite ; player sprite
-	coord hl, 1, 0
+	hlcoord 1, 0
 	ld de, wcd6d
 	call PlaceString
 	ld hl, wOAMBuffer
@@ -28,7 +28,7 @@
 	jr .enterLoop
 
 .townMapLoop
-	coord hl, 0, 0
+	hlcoord 0, 0
 	lb bc, 1, 20
 	call ClearScreenArea
 	ld hl, TownMapOrder
@@ -55,7 +55,7 @@
 	inc de
 	cp $50
 	jr nz, .copyMapName
-	coord hl, 1, 0
+	hlcoord 1, 0
 	ld de, wcd6d
 	call PlaceString
 	ld hl, wOAMBuffer + $10
@@ -118,7 +118,7 @@
 	push hl
 	call DisplayWildLocations
 	call GetMonName
-	coord hl, 1, 0
+	hlcoord 1, 0
 	call PlaceString
 	ld h, b
 	ld l, c
@@ -153,7 +153,7 @@
 	push af
 	ld [hl], $ff
 	push hl
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld de, ToText
 	call PlaceString
 	ld a, [wCurMap]
@@ -160,13 +160,13 @@
 	ld b, $0
 	call DrawPlayerOrBirdSprite
 	ld hl, wFlyLocationsList
-	coord de, 18, 0
+	decoord 18, 0
 .townMapFlyLoop
 	ld a, " "
 	ld [de], a
 	push hl
 	push hl
-	coord hl, 3, 0
+	hlcoord 3, 0
 	lb bc, 1, 15
 	call ClearScreenArea
 	pop hl
@@ -173,14 +173,14 @@
 	ld a, [hl]
 	ld b, $4
 	call DrawPlayerOrBirdSprite ; draw bird sprite
-	coord hl, 3, 0
+	hlcoord 3, 0
 	ld de, wcd6d
 	call PlaceString
 	ld c, 15
 	call DelayFrames
-	coord hl, 18, 0
+	hlcoord 18, 0
 	ld [hl], "▲"
-	coord hl, 19, 0
+	hlcoord 19, 0
 	ld [hl], "▼"
 	pop hl
 .inputLoop
@@ -219,7 +219,7 @@
 	ld [hl], a
 	ret
 .pressedUp
-	coord de, 18, 0
+	decoord 18, 0
 	inc hl
 	ld a, [hl]
 	cp $ff
@@ -231,7 +231,7 @@
 	ld hl, wFlyLocationsList
 	jp .townMapFlyLoop
 .pressedDown
-	coord de, 19, 0
+	decoord 19, 0
 	dec hl
 	ld a, [hl]
 	cp $ff
@@ -278,7 +278,7 @@
 	call GBPalWhiteOutWithDelay3
 	call ClearScreen
 	call UpdateSprites
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld b, $12
 	ld c, $12
 	call TextBoxBorder
@@ -293,7 +293,7 @@
 	ld bc, MonNestIconEnd - MonNestIcon
 	ld a, BANK(MonNestIcon)
 	call FarCopyDataDouble
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld de, CompressedMap
 .nextTile
 	ld a, [de]
@@ -395,11 +395,11 @@
 	and a ; were any OAM entries written?
 	jr nz, .drawPlayerSprite
 ; if no OAM entries were written, print area unknown text
-	coord hl, 1, 7
+	hlcoord 1, 7
 	ld b, 2
 	ld c, 15
 	call TextBoxBorder
-	coord hl, 2, 9
+	hlcoord 2, 9
 	ld de, AreaUnknownText
 	call PlaceString
 	jr .done
--- a/engine/link/cable_club.asm
+++ b/engine/link/cable_club.asm
@@ -9,11 +9,11 @@
 	call LoadFontTilePatterns
 	call LoadHpBarAndStatusTilePatterns
 	call LoadTrainerInfoTextBoxTiles
-	coord hl, 3, 8
+	hlcoord 3, 8
 	ld b, 2
 	ld c, 12
 	call CableClub_TextBoxBorder
-	coord hl, 4, 10
+	hlcoord 4, 10
 	ld de, PleaseWaitString
 	call PlaceString
 	ld hl, wPlayerNumHits
@@ -399,7 +399,7 @@
 	ld [wTopMenuItemY], a
 	ld a, 1
 	ld [wTopMenuItemX], a
-	coord hl, 1, 1
+	hlcoord 1, 1
 	lb bc, 6, 1
 	call ClearScreenArea
 .playerMonMenu_HandleInput
@@ -464,11 +464,11 @@
 	dec a
 .displayStatsTradeMenu
 	push af
-	coord hl, 0, 14
+	hlcoord 0, 14
 	ld b, 2
 	ld c, 18
 	call CableClub_TextBoxBorder
-	coord hl, 2, 16
+	hlcoord 2, 16
 	ld de, .statsTrade
 	call PlaceString
 	xor a
@@ -480,7 +480,7 @@
 	ld [wTopMenuItemY], a
 .selectStatsMenuItem
 	ld a, " "
-	Coorda 11, 16
+	ldcoord_a 11, 16
 	ld a, D_RIGHT | B_BUTTON | A_BUTTON
 	ld [wMenuWatchedKeys], a
 	ld a, 1
@@ -497,7 +497,7 @@
 	jp .playerMonMenu
 .selectTradeMenuItem
 	ld a, " "
-	Coorda 1, 16
+	ldcoord_a 1, 16
 	ld a, D_LEFT | B_BUTTON | A_BUTTON
 	ld [wMenuWatchedKeys], a
 	ld a, 11
@@ -548,7 +548,7 @@
 	ld [hl], a
 .cancelMenuItem_Loop
 	ld a, "▶" ; filled arrow cursor
-	Coorda 1, 16
+	ldcoord_a 1, 16
 .cancelMenuItem_JoypadLoop
 	call JoypadLowSensitivity
 	ldh a, [hJoy5]
@@ -560,7 +560,7 @@
 	jr z, .cancelMenuItem_JoypadLoop
 ; if Up pressed
 	ld a, " "
-	Coorda 1, 16
+	ldcoord_a 1, 16
 	ld a, [wPartyCount]
 	dec a
 	ld [wCurrentMenuItem], a
@@ -567,7 +567,7 @@
 	jp .playerMonMenu
 .cancelMenuItem_APressed
 	ld a, "▷" ; unfilled arrow cursor
-	Coorda 1, 16
+	ldcoord_a 1, 16
 	ld a, $f
 	ld [wSerialExchangeNybbleSendData], a
 	call Serial_PrintWaitingTextAndSyncAndExchangeNybble
@@ -596,15 +596,15 @@
 	ret
 
 TradeCenter_DrawCancelBox:
-	coord hl, 11, 15
+	hlcoord 11, 15
 	ld a, $7e
 	ld bc, 2 * SCREEN_WIDTH + 9
 	call FillMemory
-	coord hl, 0, 15
+	hlcoord 0, 15
 	ld b, 1
 	ld c, 9
 	call CableClub_TextBoxBorder
-	coord hl, 2, 16
+	hlcoord 2, 16
 	ld de, CancelTextString
 	jp PlaceString
 
@@ -613,7 +613,7 @@
 
 TradeCenter_PlaceSelectedEnemyMonMenuCursor:
 	ld a, [wSerialSyncAndExchangeNybbleReceiveData]
-	coord hl, 1, 9
+	hlcoord 1, 9
 	ld bc, SCREEN_WIDTH
 	call AddNTimes
 	ld [hl], "▷" ; cursor
@@ -630,24 +630,24 @@
 	jp TradeCenter_DrawCancelBox
 
 TradeCenter_DrawPartyLists:
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld b, 6
 	ld c, 18
 	call CableClub_TextBoxBorder
-	coord hl, 0, 8
+	hlcoord 0, 8
 	ld b, 6
 	ld c, 18
 	call CableClub_TextBoxBorder
-	coord hl, 5, 0
+	hlcoord 5, 0
 	ld de, wPlayerName
 	call PlaceString
-	coord hl, 5, 8
+	hlcoord 5, 8
 	ld de, wLinkEnemyTrainerName
 	call PlaceString
-	coord hl, 2, 1
+	hlcoord 2, 1
 	ld de, wPartySpecies
 	call TradeCenter_PrintPartyListNames
-	coord hl, 2, 9
+	hlcoord 2, 9
 	ld de, wEnemyPartyMons
 	; fall through
 
@@ -684,7 +684,7 @@
 	ld [wSerialExchangeNybbleReceiveData], a
 	ld [wMenuWatchMovingOutOfBounds], a
 	ld [wMenuJoypadPollCount], a
-	coord hl, 0, 12
+	hlcoord 0, 12
 	ld b, 4
 	ld c, 18
 	call CableClub_TextBoxBorder
@@ -709,10 +709,10 @@
 	ld [wd11e], a
 	call GetMonName
 	ld hl, WillBeTradedText
-	coord bc, 1, 14
+	bccoord 1, 14
 	call TextCommandProcessor
 	call SaveScreenTilesToBuffer1
-	coord hl, 10, 7
+	hlcoord 10, 7
 	lb bc, 8, 11
 	ld a, TRADE_CANCEL_MENU
 	ld [wTwoOptionMenuID], a
@@ -726,11 +726,11 @@
 ; if trade cancelled
 	ld a, $1
 	ld [wSerialExchangeNybbleSendData], a
-	coord hl, 0, 12
+	hlcoord 0, 12
 	ld b, 4
 	ld c, 18
 	call CableClub_TextBoxBorder
-	coord hl, 1, 14
+	hlcoord 1, 14
 	ld de, TradeCanceled
 	call PlaceString
 	call Serial_PrintWaitingTextAndSyncAndExchangeNybble
@@ -743,11 +743,11 @@
 	dec a ; did the other person cancel?
 	jr nz, .doTrade
 ; if the other person cancelled
-	coord hl, 0, 12
+	hlcoord 0, 12
 	ld b, 4
 	ld c, 18
 	call CableClub_TextBoxBorder
-	coord hl, 1, 14
+	hlcoord 1, 14
 	ld de, TradeCanceled
 	call PlaceString
 	jp .tradeCancelled
@@ -851,11 +851,11 @@
 	call Serial_PrintWaitingTextAndSyncAndExchangeNybble
 	ld c, 40
 	call DelayFrames
-	coord hl, 0, 12
+	hlcoord 0, 12
 	ld b, 4
 	ld c, 18
 	call CableClub_TextBoxBorder
-	coord hl, 1, 14
+	hlcoord 1, 14
 	ld de, TradeCompleted
 	call PlaceString
 	predef SaveSAVtoSRAM2
--- a/engine/link/print_waiting_text.asm
+++ b/engine/link/print_waiting_text.asm
@@ -1,5 +1,5 @@
 PrintWaitingText::
-	coord hl, 3, 10
+	hlcoord 3, 10
 	ld b, $1
 	ld c, $b
 	ld a, [wIsInBattle]
@@ -10,7 +10,7 @@
 .asm_4c17
 	call CableClub_TextBoxBorder
 .asm_4c1a
-	coord hl, 4, 11
+	hlcoord 4, 11
 	ld de, WaitingText
 	call PlaceString
 	ld c, 50
--- a/engine/menus/display_text_id_init.asm
+++ b/engine/menus/display_text_id_init.asm
@@ -13,18 +13,18 @@
 ; below this, so this seems unnecessary.
 	CheckEvent EVENT_GOT_POKEDEX
 ; start menu with pokedex
-	coord hl, 10, 0
+	hlcoord 10, 0
 	ld b, $0e
 	ld c, $08
 	jr nz, .drawTextBoxBorder
 ; start menu without pokedex
-	coord hl, 10, 0
+	hlcoord 10, 0
 	ld b, $0c
 	ld c, $08
 	jr .drawTextBoxBorder
 ; if text ID is not 0 (i.e. not the start menu) then do a standard dialogue text box
 .notStartMenu
-	coord hl, 0, 12
+	hlcoord 0, 12
 	ld b, $04
 	ld c, $12
 .drawTextBoxBorder
--- a/engine/menus/draw_badges.asm
+++ b/engine/menus/draw_badges.asm
@@ -43,11 +43,11 @@
 	ld [hli], a
 	ld [hl], $60 ; First name
 
-	coord hl, 2, 11
+	hlcoord 2, 11
 	ld de, wTempObtainedBadgesBooleans
 	call .DrawBadgeRow
 
-	coord hl, 2, 14
+	hlcoord 2, 14
 	ld de, wTempObtainedBadgesBooleans + 4
 ;	call .DrawBadgeRow
 ;	ret
--- a/engine/menus/draw_start_menu.asm
+++ b/engine/menus/draw_start_menu.asm
@@ -2,12 +2,12 @@
 DrawStartMenu::
 	CheckEvent EVENT_GOT_POKEDEX
 ; menu with pokedex
-	coord hl, 10, 0
+	hlcoord 10, 0
 	ld b, $0e
 	ld c, $08
 	jr nz, .drawTextBoxBorder
 ; shorter menu if the player doesn't have the pokedex
-	coord hl, 10, 0
+	hlcoord 10, 0
 	ld b, $0c
 	ld c, $08
 .drawTextBoxBorder
@@ -25,7 +25,7 @@
 	ld [wMenuWatchMovingOutOfBounds], a
 	ld hl, wd730
 	set 6, [hl] ; no pauses between printing each letter
-	coord hl, 12, 2
+	hlcoord 12, 2
 	CheckEvent EVENT_GOT_POKEDEX
 ; case for not having pokedex
 	ld a, $06
--- a/engine/menus/league_pc.asm
+++ b/engine/menus/league_pc.asm
@@ -95,18 +95,18 @@
 	ld b, SET_PAL_POKEMON_WHOLE_SCREEN
 	ld c, 0
 	call RunPaletteCommand
-	coord hl, 12, 5
+	hlcoord 12, 5
 	call GetMonHeader
 	call LoadFrontSpriteByMonIndex
 	call GBPalNormal
-	coord hl, 0, 13
+	hlcoord 0, 13
 	ld b, 2
 	ld c, $12
 	call TextBoxBorder
-	coord hl, 1, 15
+	hlcoord 1, 15
 	ld de, HallOfFameNoText
 	call PlaceString
-	coord hl, 16, 15
+	hlcoord 16, 15
 	ld de, wHoFTeamNo
 	lb bc, 1, 3
 	call PrintNumber
--- a/engine/menus/main_menu.asm
+++ b/engine/menus/main_menu.asm
@@ -33,20 +33,20 @@
 	cp 1
 	jr z, .noSaveFile
 ; there's a save file
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld b, 6
 	ld c, 13
 	call TextBoxBorder
-	coord hl, 2, 2
+	hlcoord 2, 2
 	ld de, ContinueText
 	call PlaceString
 	jr .next2
 .noSaveFile
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld b, 4
 	ld c, 13
 	call TextBoxBorder
-	coord hl, 2, 2
+	hlcoord 2, 2
 	ld de, NewGameText
 	call PlaceString
 .next2
@@ -141,12 +141,12 @@
 	call SaveScreenTilesToBuffer1
 	ld hl, WhereWouldYouLikeText
 	call PrintText
-	coord hl, 5, 5
+	hlcoord 5, 5
 	ld b, $6
 	ld c, $d
 	call TextBoxBorder
 	call UpdateSprites
-	coord hl, 7, 7
+	hlcoord 7, 7
 	ld de, CableClubOptionsText
 	call PlaceString
 	xor a
@@ -240,11 +240,11 @@
 	ld c, d
 .updateCursorPosition
 	ld a, b
-	Coorda 6, 7
+	ldcoord_a 6, 7
 	ld a, c
-	Coorda 6, 9
+	ldcoord_a 6, 9
 	ld a, d
-	Coorda 6, 11
+	ldcoord_a 6, 11
 	ld c, 40
 	call DelayFrames
 	call LoadScreenTilesFromBuffer1
@@ -345,21 +345,21 @@
 DisplayContinueGameInfo:
 	xor a
 	ldh [hAutoBGTransferEnabled], a
-	coord hl, 4, 7
+	hlcoord 4, 7
 	ld b, 8
 	ld c, 14
 	call TextBoxBorder
-	coord hl, 5, 9
+	hlcoord 5, 9
 	ld de, SaveScreenInfoText
 	call PlaceString
-	coord hl, 12, 9
+	hlcoord 12, 9
 	ld de, wPlayerName
 	call PlaceString
-	coord hl, 17, 11
+	hlcoord 17, 11
 	call PrintNumBadges
-	coord hl, 16, 13
+	hlcoord 16, 13
 	call PrintNumOwnedMons
-	coord hl, 13, 15
+	hlcoord 13, 15
 	call PrintPlayTime
 	ld a, 1
 	ldh [hAutoBGTransferEnabled], a
@@ -369,23 +369,23 @@
 PrintSaveScreenText:
 	xor a
 	ldh [hAutoBGTransferEnabled], a
-	coord hl, 4, 0
+	hlcoord 4, 0
 	ld b, $8
 	ld c, $e
 	call TextBoxBorder
 	call LoadTextBoxTilePatterns
 	call UpdateSprites
-	coord hl, 5, 2
+	hlcoord 5, 2
 	ld de, SaveScreenInfoText
 	call PlaceString
-	coord hl, 12, 2
+	hlcoord 12, 2
 	ld de, wPlayerName
 	call PlaceString
-	coord hl, 17, 4
+	hlcoord 17, 4
 	call PrintNumBadges
-	coord hl, 16, 6
+	hlcoord 16, 6
 	call PrintNumOwnedMons
-	coord hl, 13, 8
+	hlcoord 13, 8
 	call PrintPlayTime
 	ld a, $1
 	ldh [hAutoBGTransferEnabled], a
@@ -429,28 +429,28 @@
 	next "TIME@"
 
 DisplayOptionMenu:
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld b, 3
 	ld c, 18
 	call TextBoxBorder
-	coord hl, 0, 5
+	hlcoord 0, 5
 	ld b, 3
 	ld c, 18
 	call TextBoxBorder
-	coord hl, 0, 10
+	hlcoord 0, 10
 	ld b, 3
 	ld c, 18
 	call TextBoxBorder
-	coord hl, 1, 1
+	hlcoord 1, 1
 	ld de, TextSpeedOptionText
 	call PlaceString
-	coord hl, 1, 6
+	hlcoord 1, 6
 	ld de, BattleAnimationOptionText
 	call PlaceString
-	coord hl, 1, 11
+	hlcoord 1, 11
 	ld de, BattleStyleOptionText
 	call PlaceString
-	coord hl, 2, 16
+	hlcoord 2, 16
 	ld de, OptionMenuCancelText
 	call PlaceString
 	xor a
@@ -644,7 +644,7 @@
 	dec hl
 	ld a, [hl]
 	ld [wOptionsTextSpeedCursorX], a ; text speed cursor X coordinate
-	coord hl, 0, 3
+	hlcoord 0, 3
 	call .placeUnfilledRightArrow
 	sla c
 	ld a, 1 ; On
@@ -652,7 +652,7 @@
 	ld a, 10 ; Off
 .storeBattleAnimationCursorX
 	ld [wOptionsBattleAnimCursorX], a ; battle animation cursor X coordinate
-	coord hl, 0, 8
+	hlcoord 0, 8
 	call .placeUnfilledRightArrow
 	sla c
 	ld a, 1
@@ -660,10 +660,10 @@
 	ld a, 10
 .storeBattleStyleCursorX
 	ld [wOptionsBattleStyleCursorX], a ; battle style cursor X coordinate
-	coord hl, 0, 13
+	hlcoord 0, 13
 	call .placeUnfilledRightArrow
 ; cursor in front of Cancel
-	coord hl, 0, 16
+	hlcoord 0, 16
 	ld a, 1
 .placeUnfilledRightArrow
 	ld e, a
--- a/engine/menus/naming_screen.asm
+++ b/engine/menus/naming_screen.asm
@@ -4,7 +4,7 @@
 	push hl
 	ld a, [wIsInBattle]
 	dec a
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld b, 4
 	ld c, 11
 	call z, ClearScreenArea ; only if in wild battle
@@ -13,7 +13,7 @@
 	call GetMonName
 	ld hl, DoYouWantToNicknameText
 	call PrintText
-	coord hl, 14, 7
+	hlcoord 14, 7
 	lb bc, 8, 15
 	ld a, TWO_OPTION_MENU
 	ld [wTextBoxID], a
@@ -93,7 +93,7 @@
 	call LoadHpBarAndStatusTilePatterns
 	call LoadEDTile
 	farcall LoadMonPartySpriteGfx
-	coord hl, 0, 4
+	hlcoord 0, 4
 	ld b, 9
 	ld c, 18
 	call TextBoxBorder
@@ -344,7 +344,7 @@
 	jr nz, .lowercase
 	ld de, UpperCaseAlphabet
 .lowercase
-	coord hl, 2, 5
+	hlcoord 2, 5
 	lb bc, 5, 9 ; 5 rows, 9 columns
 .outerLoop
 	push bc
@@ -371,13 +371,13 @@
 	call CalcStringLength
 	ld a, c
 	ld [wNamingScreenNameLength], a
-	coord hl, 10, 2
+	hlcoord 10, 2
 	lb bc, 1, 10
 	call ClearScreenArea
-	coord hl, 10, 2
+	hlcoord 10, 2
 	ld de, wcf4b
 	call PlaceString
-	coord hl, 10, 3
+	hlcoord 10, 3
 	ld a, [wNamingScreenType]
 	cp NAME_MON_SCREEN
 	jr nc, .pokemon1
@@ -416,7 +416,7 @@
 .emptySpacesRemaining
 	ld c, a
 	ld b, $0
-	coord hl, 10, 3
+	hlcoord 10, 3
 	add hl, bc
 	ld [hl], $77 ; raised underscore tile id
 	ret
@@ -450,7 +450,7 @@
 	jr .loop
 
 PrintNamingText:
-	coord hl, 0, 1
+	hlcoord 0, 1
 	ld a, [wNamingScreenType]
 	ld de, YourTextString
 	and a
@@ -465,12 +465,12 @@
 	pop af
 	ld [wd11e], a
 	call GetMonName
-	coord hl, 4, 1
+	hlcoord 4, 1
 	call PlaceString
 	ld hl, $1
 	add hl, bc
 	ld [hl], $c9
-	coord hl, 1, 3
+	hlcoord 1, 3
 	ld de, NicknameTextString
 	jr .placeString
 .notNickname
--- a/engine/menus/party_menu.asm
+++ b/engine/menus/party_menu.asm
@@ -30,7 +30,7 @@
 	jp z, .printMessage
 	call ErasePartyMenuCursors
 	farcall InitPartyMenuBlkPacket
-	coord hl, 3, 0
+	hlcoord 3, 0
 	ld de, wPartySpecies
 	xor a
 	ld c, a
--- a/engine/menus/players_pc.asm
+++ b/engine/menus/players_pc.asm
@@ -22,12 +22,12 @@
 	ld hl, wFlags_0xcd60
 	set 5, [hl]
 	call LoadScreenTilesFromBuffer2
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld b, $8
 	ld c, $e
 	call TextBoxBorder
 	call UpdateSprites
-	coord hl, 2, 2
+	hlcoord 2, 2
 	ld de, PlayersPCMenuEntries
 	call PlaceString
 	ld hl, wTopMenuItemY
--- a/engine/menus/pokedex.asm
+++ b/engine/menus/pokedex.asm
@@ -119,7 +119,7 @@
 	pop af
 	ld [wCurrentMenuItem], a
 	push bc
-	coord hl, 0, 3
+	hlcoord 0, 3
 	ld de, 20
 	lb bc, " ", 13
 	call DrawTileLine ; cover up the menu cursor in the pokemon list
@@ -128,7 +128,7 @@
 
 .buttonBPressed
 	push bc
-	coord hl, 15, 10
+	hlcoord 15, 10
 	ld de, 20
 	lb bc, " ", 7
 	call DrawTileLine ; cover up the menu cursor in the side menu
@@ -158,7 +158,7 @@
 	xor a
 	ldh [hAutoBGTransferEnabled], a
 ; draw the horizontal line separating the seen and owned amounts from the menu
-	coord hl, 15, 8
+	hlcoord 15, 8
 	ld a, "─"
 	ld [hli], a
 	ld [hli], a
@@ -165,17 +165,17 @@
 	ld [hli], a
 	ld [hli], a
 	ld [hli], a
-	coord hl, 14, 0
+	hlcoord 14, 0
 	ld [hl], $71 ; vertical line tile
-	coord hl, 14, 1
+	hlcoord 14, 1
 	call DrawPokedexVerticalLine
-	coord hl, 14, 9
+	hlcoord 14, 9
 	call DrawPokedexVerticalLine
 	ld hl, wPokedexSeen
 	ld b, wPokedexSeenEnd - wPokedexSeen
 	call CountSetBits
 	ld de, wNumSetBits
-	coord hl, 16, 3
+	hlcoord 16, 3
 	lb bc, 1, 3
 	call PrintNumber ; print number of seen pokemon
 	ld hl, wPokedexOwned
@@ -182,19 +182,19 @@
 	ld b, wPokedexOwnedEnd - wPokedexOwned
 	call CountSetBits
 	ld de, wNumSetBits
-	coord hl, 16, 6
+	hlcoord 16, 6
 	lb bc, 1, 3
 	call PrintNumber ; print number of owned pokemon
-	coord hl, 16, 2
+	hlcoord 16, 2
 	ld de, PokedexSeenText
 	call PlaceString
-	coord hl, 16, 5
+	hlcoord 16, 5
 	ld de, PokedexOwnText
 	call PlaceString
-	coord hl, 1, 1
+	hlcoord 1, 1
 	ld de, PokedexContentsText
 	call PlaceString
-	coord hl, 16, 10
+	hlcoord 16, 10
 	ld de, PokedexMenuItemsText
 	call PlaceString
 ; find the highest pokedex number among the pokemon the player has seen
@@ -217,10 +217,10 @@
 .loop
 	xor a
 	ldh [hAutoBGTransferEnabled], a
-	coord hl, 4, 2
+	hlcoord 4, 2
 	lb bc, 14, 10
 	call ClearScreenArea
-	coord hl, 1, 3
+	hlcoord 1, 3
 	ld a, [wListScrollOffset]
 	ld [wd11e], a
 	ld d, 7
@@ -415,43 +415,43 @@
 	xor a
 	ldh [hTilesetType], a
 
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld de, 1
 	lb bc, $64, SCREEN_WIDTH
 	call DrawTileLine ; draw top border
 
-	coord hl, 0, 17
+	hlcoord 0, 17
 	ld b, $6f
 	call DrawTileLine ; draw bottom border
 
-	coord hl, 0, 1
+	hlcoord 0, 1
 	ld de, 20
 	lb bc, $66, $10
 	call DrawTileLine ; draw left border
 
-	coord hl, 19, 1
+	hlcoord 19, 1
 	ld b, $67
 	call DrawTileLine ; draw right border
 
 	ld a, $63 ; upper left corner tile
-	Coorda 0, 0
+	ldcoord_a 0, 0
 	ld a, $65 ; upper right corner tile
-	Coorda 19, 0
+	ldcoord_a 19, 0
 	ld a, $6c ; lower left corner tile
-	Coorda 0, 17
+	ldcoord_a 0, 17
 	ld a, $6e ; lower right corner tile
-	Coorda 19, 17
+	ldcoord_a 19, 17
 
-	coord hl, 0, 9
+	hlcoord 0, 9
 	ld de, PokedexDataDividerLine
 	call PlaceString ; draw horizontal divider line
 
-	coord hl, 9, 6
+	hlcoord 9, 6
 	ld de, HeightWeightText
 	call PlaceString
 
 	call GetMonName
-	coord hl, 9, 2
+	hlcoord 9, 2
 	call PlaceString
 
 	ld hl, PokedexEntryPointers
@@ -465,7 +465,7 @@
 	ld e, a
 	ld d, [hl] ; de = address of pokedex entry
 
-	coord hl, 9, 4
+	hlcoord 9, 4
 	call PlaceString ; print species name
 
 	ld h, b
@@ -475,7 +475,7 @@
 	push af
 	call IndexToPokedex
 
-	coord hl, 2, 8
+	hlcoord 2, 8
 	ld a, "№"
 	ld [hli], a
 	ld a, "<DOT>"
@@ -500,7 +500,7 @@
 	call Delay3
 	call GBPalNormal
 	call GetMonHeader ; load pokemon picture location
-	coord hl, 1, 1
+	hlcoord 1, 1
 	call LoadFlippedFrontSpriteByMonIndex ; draw pokemon picture
 	ld a, [wcf91]
 	call PlayCry ; play pokemon cry
@@ -515,7 +515,7 @@
 	jp z, .waitForButtonPress ; if the pokemon has not been owned, don't print the height, weight, or description
 	inc de ; de = address of feet (height)
 	ld a, [de] ; reads feet, but a is overwritten without being used
-	coord hl, 12, 6
+	hlcoord 12, 6
 	lb bc, 1, 2
 	call PrintNumber ; print feet (height)
 	ld a, "′"
@@ -522,7 +522,7 @@
 	ld [hl], a
 	inc de
 	inc de ; de = address of inches (height)
-	coord hl, 15, 6
+	hlcoord 15, 6
 	lb bc, LEADING_ZEROES | 1, 2
 	call PrintNumber ; print inches (height)
 	ld a, "″"
@@ -544,10 +544,10 @@
 	ld a, [de] ; a = lower byte of weight
 	ld [hl], a ; store lower byte of weight in [hDexWeight + 1]
 	ld de, hDexWeight
-	coord hl, 11, 8
+	hlcoord 11, 8
 	lb bc, 2, 5 ; 2 bytes, 5 digits
 	call PrintNumber ; print weight
-	coord hl, 14, 8
+	hlcoord 14, 8
 	ldh a, [hDexWeight + 1]
 	sub 10
 	ldh a, [hDexWeight]
@@ -565,7 +565,7 @@
 	ldh [hDexWeight], a ; restore original value of [hDexWeight]
 	pop hl
 	inc hl ; hl = address of pokedex description text
-	coord bc, 1, 11
+	bccoord 1, 11
 	ld a, %10
 	ldh [hClearLetterPrintingDelayFlags], a
 	call TextCommandProcessor ; print pokedex description text
--- a/engine/menus/save.asm
+++ b/engine/menus/save.asm
@@ -154,10 +154,10 @@
 	ret nz
 .save
 	call SaveSAVtoSRAM
-	coord hl, 1, 13
+	hlcoord 1, 13
 	lb bc, 4, 18
 	call ClearScreenArea
-	coord hl, 1, 14
+	hlcoord 1, 14
 	ld de, NowSavingString
 	call PlaceString
 	ld c, 120
@@ -175,7 +175,7 @@
 
 SaveSAVConfirm:
 	call PrintText
-	coord hl, 0, 7
+	hlcoord 0, 7
 	lb bc, 8, 1
 	ld a, TWO_OPTION_MENU
 	ld [wTextBoxID], a
@@ -435,13 +435,13 @@
 	and $7f
 	ld [wCurrentMenuItem], a
 	ld [wLastMenuItem], a
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld b, 2
 	ld c, 9
 	call TextBoxBorder
 	ld hl, ChooseABoxText
 	call PrintText
-	coord hl, 11, 0
+	hlcoord 11, 0
 	ld b, 12
 	ld c, 7
 	call TextBoxBorder
@@ -448,7 +448,7 @@
 	ld hl, hFlagsFFF6
 	set 2, [hl]
 	ld de, BoxNames
-	coord hl, 13, 1
+	hlcoord 13, 1
 	call PlaceString
 	ld hl, hFlagsFFF6
 	res 2, [hl]
@@ -457,7 +457,7 @@
 	cp 9
 	jr c, .singleDigitBoxNum
 	sub 9
-	coord hl, 8, 2
+	hlcoord 8, 2
 	ld [hl], "1"
 	add "0"
 	jr .next
@@ -464,12 +464,12 @@
 .singleDigitBoxNum
 	add "1"
 .next
-	Coorda 9, 2
-	coord hl, 1, 2
+	ldcoord_a 9, 2
+	hlcoord 1, 2
 	ld de, BoxNoText
 	call PlaceString
 	call GetMonCountsForAllBoxes
-	coord hl, 18, 1
+	hlcoord 18, 1
 	ld de, wBoxMonCounts
 	ld bc, SCREEN_WIDTH
 	ld a, $c
--- a/engine/menus/start_sub_menus.asm
+++ b/engine/menus/start_sub_menus.asm
@@ -285,7 +285,7 @@
 
 ; writes a blank tile to all possible menu cursor positions on the party menu
 ErasePartyMenuCursors::
-	coord hl, 0, 1
+	hlcoord 0, 1
 	ld bc, 2 * 20 ; menu cursor positions are 2 rows apart
 	ld a, 6 ; 6 menu cursor positions
 .loop
@@ -330,10 +330,10 @@
 .choseItem
 ; erase menu cursor (blank each tile in front of an item name)
 	ld a, " "
-	Coorda 5, 4
-	Coorda 5, 6
-	Coorda 5, 8
-	Coorda 5, 10
+	ldcoord_a 5, 4
+	ldcoord_a 5, 6
+	ldcoord_a 5, 8
+	ldcoord_a 5, 10
 	call PlaceUnfilledArrowMenuCursor
 	xor a
 	ld [wMenuItemToSwap], a
@@ -480,10 +480,10 @@
 	lb bc, BANK(RedPicFront), $01
 	predef DisplayPicCenteredOrUpperRight
 	call DisableLCD
-	coord hl, 0, 2
+	hlcoord 0, 2
 	ld a, " "
 	call TrainerInfo_DrawVerticalLine
-	coord hl, 1, 2
+	hlcoord 1, 2
 	call TrainerInfo_DrawVerticalLine
 	ld hl, vChars2 + $70
 	ld de, vChars2
@@ -526,7 +526,7 @@
 	dec a
 	ld [hli], a
 	ld [hl], 1
-	coord hl, 0, 0
+	hlcoord 0, 0
 	call TrainerInfo_DrawTextBox
 	ld hl, wTrainerInfoTextBoxWidthPlus1
 	ld a, 16 + 1
@@ -534,27 +534,27 @@
 	dec a
 	ld [hli], a
 	ld [hl], 3
-	coord hl, 1, 10
+	hlcoord 1, 10
 	call TrainerInfo_DrawTextBox
-	coord hl, 0, 10
+	hlcoord 0, 10
 	ld a, $d7
 	call TrainerInfo_DrawVerticalLine
-	coord hl, 19, 10
+	hlcoord 19, 10
 	call TrainerInfo_DrawVerticalLine
-	coord hl, 6, 9
+	hlcoord 6, 9
 	ld de, TrainerInfo_BadgesText
 	call PlaceString
-	coord hl, 2, 2
+	hlcoord 2, 2
 	ld de, TrainerInfo_NameMoneyTimeText
 	call PlaceString
-	coord hl, 7, 2
+	hlcoord 7, 2
 	ld de, wPlayerName
 	call PlaceString
-	coord hl, 8, 4
+	hlcoord 8, 4
 	ld de, wPlayerMoney
 	ld c, $e3
 	call PrintBCDNumber
-	coord hl, 9, 6
+	hlcoord 9, 6
 	ld de, wPlayTimeHours ; hours
 	lb bc, LEFT_ALIGN | 1, 3
 	call PrintNumber
@@ -667,7 +667,7 @@
 
 SwitchPartyMon_ClearGfx:
 	push af
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * 2
 	call AddNTimes
 	ld c, SCREEN_WIDTH * 2
--- a/engine/menus/text_box.asm
+++ b/engine/menus/text_box.asm
@@ -111,7 +111,7 @@
 ; hl = address of upper left corner of text box
 GetAddressOfScreenCoords:
 	push bc
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld bc, 20
 .loop ; loop to add d rows to the base address
 	ld a, d
@@ -274,11 +274,11 @@
 	ld a, MONEY_BOX_TEMPLATE
 	ld [wTextBoxID], a
 	call DisplayTextBoxID
-	coord hl, 13, 1
+	hlcoord 13, 1
 	ld b, 1
 	ld c, 6
 	call ClearScreenArea
-	coord hl, 12, 1
+	hlcoord 12, 1
 	ld de, wPlayerMoney
 	ld c, $a3
 	call PrintBCDNumber
@@ -578,7 +578,7 @@
 	jr nz, .fieldMovesExist
 
 ; no field moves
-	coord hl, 11, 11
+	hlcoord 11, 11
 	ld b, 5
 	ld c, 7
 	call TextBoxBorder
@@ -585,7 +585,7 @@
 	call UpdateSprites
 	ld a, 12
 	ldh [hFieldMoveMonMenuTopMenuItemX], a
-	coord hl, 13, 12
+	hlcoord 13, 12
 	ld de, PokemonMenuEntries
 	jp PlaceString
 
@@ -594,7 +594,7 @@
 
 ; Calculate the text box position and dimensions based on the leftmost X coord
 ; of the field move names before adjusting for the number of field moves.
-	coord hl, 0, 11
+	hlcoord 0, 11
 	ld a, [wFieldMovesLeftmostXCoord]
 	dec a
 	ld e, a
@@ -625,7 +625,7 @@
 	call UpdateSprites
 
 ; Calculate the position of the first field move name to print.
-	coord hl, 0, 12
+	hlcoord 0, 12
 	ld a, [wFieldMovesLeftmostXCoord]
 	inc a
 	ld e, a
@@ -674,7 +674,7 @@
 	pop hl
 	ld a, [wFieldMovesLeftmostXCoord]
 	ldh [hFieldMoveMonMenuTopMenuItemX], a
-	coord hl, 0, 12
+	hlcoord 0, 12
 	ld a, [wFieldMovesLeftmostXCoord]
 	inc a
 	ld e, a
--- a/engine/movie/credits.asm
+++ b/engine/movie/credits.asm
@@ -14,9 +14,9 @@
 	ld bc, $10
 	ld a, $ff
 	call FillMemory
-	coord hl, 0, 0
+	hlcoord 0, 0
 	call FillFourRowsWithBlack
-	coord hl, 0, 14
+	hlcoord 0, 14
 	call FillFourRowsWithBlack
 	ld a, %11000000
 	ldh [rBGP], a
@@ -61,7 +61,7 @@
 	ld a, [hl]
 	ld [wcf91], a
 	ld [wd0b5], a
-	coord hl, 8, 6
+	hlcoord 8, 6
 	call GetMonHeader
 	call LoadFrontSpriteByMonIndex
 	ld hl, vBGMap0 + $c
@@ -162,7 +162,7 @@
 	jp FillMemory
 
 FillMiddleOfScreenWithWhite:
-	coord hl, 0, 4
+	hlcoord 0, 4
 	ld bc, SCREEN_WIDTH * 10
 	ld a, " "
 	jp FillMemory
@@ -172,7 +172,7 @@
 	push de
 .nextCreditsScreen
 	pop de
-	coord hl, 9, 6
+	hlcoord 9, 6
 	push hl
 	call FillMiddleOfScreenWithWhite
 	pop hl
@@ -248,10 +248,10 @@
 	ld hl, vChars2 + $600
 	lb bc, BANK(TheEndGfx), (TheEndGfxEnd - TheEndGfx) / $10
 	call CopyVideoData
-	coord hl, 4, 8
+	hlcoord 4, 8
 	ld de, TheEndTextString
 	call PlaceString
-	coord hl, 4, 9
+	hlcoord 4, 9
 	inc de
 	call PlaceString
 	jp FadeInCreditsText
--- a/engine/movie/evolution.asm
+++ b/engine/movie/evolution.asm
@@ -99,7 +99,7 @@
 
 Evolution_LoadPic:
 	call GetMonHeader
-	coord hl, 7, 2
+	hlcoord 7, 2
 	jp LoadFlippedFrontSpriteByMonIndex
 
 Evolution_BackAndForthAnim:
@@ -118,7 +118,7 @@
 	push bc
 	xor a
 	ldh [hAutoBGTransferEnabled], a
-	coord hl, 7, 2
+	hlcoord 7, 2
 	lb bc, 7, 7
 	ld de, SCREEN_WIDTH - 7
 .loop
--- a/engine/movie/hall_of_fame.asm
+++ b/engine/movie/hall_of_fame.asm
@@ -57,11 +57,11 @@
 	call HoFDisplayAndRecordMonInfo
 	ld c, 80
 	call DelayFrames
-	coord hl, 2, 13
+	hlcoord 2, 13
 	ld b, 3
 	ld c, 14
 	call TextBoxBorder
-	coord hl, 4, 15
+	hlcoord 4, 15
 	ld de, HallOfFameText
 	call PlaceString
 	ld c, 180
@@ -112,7 +112,7 @@
 	call HoFLoadPlayerPics
 	jr .next1
 .showMon
-	coord hl, 12, 5
+	hlcoord 12, 5
 	call GetMonHeader
 	call LoadFrontSpriteByMonIndex
 	predef LoadMonBackPic
@@ -157,22 +157,22 @@
 	jp HoFRecordMonInfo
 
 HoFDisplayMonInfo:
-	coord hl, 0, 2
+	hlcoord 0, 2
 	ld b, 9
 	ld c, 10
 	call TextBoxBorder
-	coord hl, 2, 6
+	hlcoord 2, 6
 	ld de, HoFMonInfoText
 	call PlaceString
-	coord hl, 1, 4
+	hlcoord 1, 4
 	ld de, wcd6d
 	call PlaceString
 	ld a, [wHoFMonLevel]
-	coord hl, 8, 7
+	hlcoord 8, 7
 	call PrintLevelCommon
 	ld a, [wHoFMonSpecies]
 	ld [wd0b5], a
-	coord hl, 3, 9
+	hlcoord 3, 9
 	predef PrintMonType
 	ld a, [wHoFMonSpecies]
 	jp PlayCry
@@ -203,27 +203,27 @@
 HoFLoadMonPlayerPicTileIDs:
 ; c = base tile ID
 	ld b, 0
-	coord hl, 12, 5
+	hlcoord 12, 5
 	predef_jump CopyTileIDsFromList
 
 HoFDisplayPlayerStats:
 	SetEvent EVENT_HALL_OF_FAME_DEX_RATING
 	predef DisplayDexRating
-	coord hl, 0, 4
+	hlcoord 0, 4
 	ld b, 6
 	ld c, 10
 	call TextBoxBorder
-	coord hl, 5, 0
+	hlcoord 5, 0
 	ld b, 2
 	ld c, 9
 	call TextBoxBorder
-	coord hl, 7, 2
+	hlcoord 7, 2
 	ld de, wPlayerName
 	call PlaceString
-	coord hl, 1, 6
+	hlcoord 1, 6
 	ld de, HoFPlayTimeText
 	call PlaceString
-	coord hl, 5, 7
+	hlcoord 5, 7
 	ld de, wPlayTimeHours
 	lb bc, 1, 3
 	call PrintNumber
@@ -232,10 +232,10 @@
 	ld de, wPlayTimeMinutes
 	lb bc, LEADING_ZEROES | 1, 2
 	call PrintNumber
-	coord hl, 1, 9
+	hlcoord 1, 9
 	ld de, HoFMoneyText
 	call PlaceString
-	coord hl, 4, 10
+	hlcoord 4, 10
 	ld de, wPlayerMoney
 	ld c, $a3
 	call PrintBCDNumber
--- a/engine/movie/intro.asm
+++ b/engine/movie/intro.asm
@@ -217,7 +217,7 @@
 
 IntroClearMiddleOfScreen:
 ; clear the area of the tile map between the black bars on the top and bottom
-	coord hl, 0, 4
+	hlcoord 0, 4
 	ld bc, SCREEN_WIDTH * 10
 
 IntroClearCommon:
@@ -274,7 +274,7 @@
 	ret
 
 IntroCopyTiles:
-	coord hl, 13, 7
+	hlcoord 13, 7
 
 CopyTileIDsFromList_ZeroBaseTileID:
 	ld c, 0
@@ -348,16 +348,16 @@
 IntroDrawBlackBars:
 ; clear the screen and draw black bars on the top and bottom
 	call IntroClearScreen
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld c, SCREEN_WIDTH * 4
 	call IntroPlaceBlackTiles
-	coord hl, 0, 14
+	hlcoord 0, 14
 	ld c, SCREEN_WIDTH * 4
 	call IntroPlaceBlackTiles
 	ld hl, vBGMap1
 	ld c,  BG_MAP_WIDTH * 4
 	call IntroPlaceBlackTiles
-	ld hl, vBGMap1 + BG_MAP_WIDTH * 14
+	hlbgcoord 0, 14, vBGMap1
 	ld c,  BG_MAP_WIDTH * 4
 	jp IntroPlaceBlackTiles
 
--- a/engine/movie/oak_speech/clear_save.asm
+++ b/engine/movie/oak_speech/clear_save.asm
@@ -5,7 +5,7 @@
 	call LoadTextBoxTilePatterns
 	ld hl, ClearSaveDataText
 	call PrintText
-	coord hl, 14, 7
+	hlcoord 14, 7
 	lb bc, 8, 15
 	ld a, NO_YES_MENU
 	ld [wTwoOptionMenuID], a
--- a/engine/movie/oak_speech/oak_speech.asm
+++ b/engine/movie/oak_speech/oak_speech.asm
@@ -68,7 +68,7 @@
 	ld [wd0b5], a
 	ld [wcf91], a
 	call GetMonHeader
-	coord hl, 6, 4
+	hlcoord 6, 4
 	call LoadFlippedFrontSpriteByMonIndex
 	call MovePicLeft
 	ld hl, OakSpeechText2
@@ -141,7 +141,7 @@
 	ld [MBC1RomBank], a
 	ld c, 20
 	call DelayFrames
-	coord hl, 6, 5
+	hlcoord 6, 5
 	ld b, 7
 	ld c, 7
 	call ClearScreenArea
@@ -224,9 +224,9 @@
 	pop bc
 	ld a, c
 	and a
-	coord hl, 15, 1
+	hlcoord 15, 1
 	jr nz, .next
-	coord hl, 6, 4
+	hlcoord 6, 4
 .next
 	xor a
 	ldh [hStartTileID], a
--- a/engine/movie/oak_speech/oak_speech2.asm
+++ b/engine/movie/oak_speech/oak_speech2.asm
@@ -66,7 +66,7 @@
 
 OakSpeechSlidePicLeft:
 	push de
-	coord hl, 0, 0
+	hlcoord 0, 0
 	lb bc, 12, 11
 	call ClearScreenArea ; clear the name list text box
 	ld c, 10
@@ -76,13 +76,13 @@
 	ld bc, NAME_LENGTH
 	call CopyData
 	call Delay3
-	coord hl, 12, 4
+	hlcoord 12, 4
 	lb de, 6, 6 * SCREEN_WIDTH + 5
 	ld a, $ff
 	jr OakSpeechSlidePicCommon
 
 OakSpeechSlidePicRight:
-	coord hl, 5, 4
+	hlcoord 5, 4
 	lb de, 6, 6 * SCREEN_WIDTH + 5
 	xor a
 
@@ -161,15 +161,15 @@
 
 DisplayIntroNameTextBox:
 	push de
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld b, $a
 	ld c, $9
 	call TextBoxBorder
-	coord hl, 3, 0
+	hlcoord 3, 0
 	ld de, .namestring
 	call PlaceString
 	pop de
-	coord hl, 2, 2
+	hlcoord 2, 2
 	call PlaceString
 	call UpdateSprites
 	xor a
--- a/engine/movie/title.asm
+++ b/engine/movie/title.asm
@@ -63,7 +63,7 @@
 	call ClearBothBGMaps
 
 ; place tiles for pokemon logo (except for the last row)
-	coord hl, 2, 1
+	hlcoord 2, 1
 	ld a, $80
 	ld de, SCREEN_WIDTH
 	ld c, 6
@@ -81,7 +81,7 @@
 	jr nz, .pokemonLogoTileLoop
 
 ; place tiles for the last row of the pokemon logo
-	coord hl, 2, 7
+	hlcoord 2, 7
 	ld a, $31
 	ld b, $10
 .pokemonLogoLastTileRowLoop
@@ -98,7 +98,7 @@
 	ld [hl], a
 
 ; place tiles for title screen copyright
-	coord hl, 2, 17
+	hlcoord 2, 17
 	ld de, .tileScreenCopyrightTiles
 	ld b, $10
 .tileScreenCopyrightTilesLoop
@@ -353,7 +353,7 @@
 LoadTitleMonSprite:
 	ld [wcf91], a
 	ld [wd0b5], a
-	coord hl, 5, 10
+	hlcoord 5, 10
 	call GetMonHeader
 	jp LoadFrontSpriteByMonIndex
 
@@ -372,7 +372,7 @@
 	ld hl, vChars2 + $600
 	lb bc, BANK(NintendoCopyrightLogoGraphics), (GamefreakLogoGraphicsEnd - NintendoCopyrightLogoGraphics) / $10
 	call CopyVideoData
-	coord hl, 2, 7
+	hlcoord 2, 7
 	ld de, CopyrightTextString
 	jp PlaceString
 
@@ -386,7 +386,7 @@
 
 ; prints version text (red, blue)
 PrintGameVersionOnTitleScreen:
-	coord hl, 7, 8
+	hlcoord 7, 8
 	ld de, VersionOnTitleScreenText
 	jp PlaceString
 
--- a/engine/movie/trade.asm
+++ b/engine/movie/trade.asm
@@ -148,7 +148,7 @@
 	jp DelayFrames
 
 Trade_ClearTileMap:
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	ld a, " "
 	jp FillMemory
@@ -232,7 +232,7 @@
 	ldh [hSCX], a
 	xor a
 	ldh [hAutoBGTransferEnabled], a
-	coord hl, 4, 0
+	hlcoord 4, 0
 	ld b, 6
 	ld c, 10
 	call TextBoxBorder
@@ -281,7 +281,7 @@
 	call DelayFrame
 	ld a, %10001011
 	ldh [rLCDC], a
-	coord hl, 6, 2
+	hlcoord 6, 2
 	ld b, $7 ; open end of link cable tile ID list index
 	call CopyTileIDsFromList_ZeroBaseTileID
 	call Trade_CopyTileMapToVRAM
@@ -353,7 +353,7 @@
 	ld a, TRADE_BALL_TILT_ANIM
 	call Trade_ShowAnimation
 	call Trade_ShowClearedWindow
-	coord hl, 4, 10
+	hlcoord 4, 10
 	ld b, 6
 	ld c, 10
 	call TextBoxBorder
@@ -370,7 +370,7 @@
 	ld a, [wTradedEnemyMonSpecies]
 	call PlayCry
 	call Trade_Delay100
-	coord hl, 4, 10
+	hlcoord 4, 10
 	lb bc, 8, 12
 	call ClearScreenArea
 	jp PrintTradeTakeCareText
@@ -462,7 +462,7 @@
 	call Trade_ClearTileMap
 
 ; draw link cable
-	coord hl, 11, 4
+	hlcoord 11, 4
 	ld a, $5d
 	ld [hli], a
 	ld a, $5e
@@ -473,16 +473,16 @@
 	jr nz, .loop
 
 ; draw gameboy pic
-	coord hl, 5, 3
+	hlcoord 5, 3
 	ld b, $6
 	call CopyTileIDsFromList_ZeroBaseTileID
 
 ; draw text box with player name below gameboy pic
-	coord hl, 4, 12
+	hlcoord 4, 12
 	ld b, 2
 	ld c, 7
 	call TextBoxBorder
-	coord hl, 5, 14
+	hlcoord 5, 14
 	ld de, wPlayerName
 	call PlaceString
 
@@ -492,7 +492,7 @@
 	call Trade_ClearTileMap
 
 ; draw horizontal segment of link cable
-	coord hl, 0, 4
+	hlcoord 0, 4
 	ld a, $5e
 	ld c, $e
 .loop
@@ -520,16 +520,16 @@
 	ld [hl], a
 
 ; draw gameboy pic
-	coord hl, 7, 8
+	hlcoord 7, 8
 	ld b, $6
 	call CopyTileIDsFromList_ZeroBaseTileID
 
 ; draw text box with enemy name above link cable
-	coord hl, 6, 0
+	hlcoord 6, 0
 	ld b, 2
 	ld c, 7
 	call TextBoxBorder
-	coord hl, 7, 2
+	hlcoord 7, 2
 	ld de, wLinkEnemyTrainerName
 	call PlaceString
 
@@ -538,7 +538,7 @@
 Trade_DrawCableAcrossScreen:
 ; Draws the link cable across the screen.
 	call Trade_ClearTileMap
-	coord hl, 0, 4
+	hlcoord 0, 4
 	ld a, $5e
 	ld c, SCREEN_WIDTH
 .loop
@@ -551,7 +551,7 @@
 ; This is used to copy the link cable tiles off screen so that the cable
 ; continues when the screen is scrolled.
 	push hl
-	coord hl, 0, 4
+	hlcoord 0, 4
 	call CopyToRedrawRowOrColumnSrcTiles
 	pop hl
 	ld a, h
@@ -735,7 +735,7 @@
 	xor $1
 	ldh [hAutoBGTransferEnabled], a
 	call GetMonHeader
-	coord hl, 7, 2
+	hlcoord 7, 2
 	call LoadFlippedFrontSpriteByMonIndex
 	ld c, 10
 	jp DelayFrames
--- a/engine/movie/trade2.asm
+++ b/engine/movie/trade2.asm
@@ -1,43 +1,43 @@
 Trade_PrintPlayerMonInfoText:
-	coord hl, 5, 0
+	hlcoord 5, 0
 	ld de, Trade_MonInfoText
 	call PlaceString
 	ld a, [wTradedPlayerMonSpecies]
 	ld [wd11e], a
 	predef IndexToPokedex
-	coord hl, 9, 0
+	hlcoord 9, 0
 	ld de, wd11e
 	lb bc, LEADING_ZEROES | 1, 3
 	call PrintNumber
-	coord hl, 5, 2
+	hlcoord 5, 2
 	ld de, wcf4b
 	call PlaceString
-	coord hl, 8, 4
+	hlcoord 8, 4
 	ld de, wTradedPlayerMonOT
 	call PlaceString
-	coord hl, 8, 6
+	hlcoord 8, 6
 	ld de, wTradedPlayerMonOTID
 	lb bc, LEADING_ZEROES | 2, 5
 	jp PrintNumber
 
 Trade_PrintEnemyMonInfoText:
-	coord hl, 5, 10
+	hlcoord 5, 10
 	ld de, Trade_MonInfoText
 	call PlaceString
 	ld a, [wTradedEnemyMonSpecies]
 	ld [wd11e], a
 	predef IndexToPokedex
-	coord hl, 9, 10
+	hlcoord 9, 10
 	ld de, wd11e
 	lb bc, LEADING_ZEROES | 1, 3
 	call PrintNumber
-	coord hl, 5, 12
+	hlcoord 5, 12
 	ld de, wcd6d
 	call PlaceString
-	coord hl, 8, 14
+	hlcoord 8, 14
 	ld de, wTradedEnemyMonOT
 	call PlaceString
-	coord hl, 8, 16
+	hlcoord 8, 16
 	ld de, wTradedEnemyMonOTID
 	lb bc, LEADING_ZEROES | 2, 5
 	jp PrintNumber
--- a/engine/overworld/doors.asm
+++ b/engine/overworld/doors.asm
@@ -11,7 +11,7 @@
 	ld a, [hli]
 	ld h, [hl]
 	ld l, a
-	aCoord 8, 9 ; a = lower left background tile under player's sprite
+	lda_coord 8, 9 ; a = lower left background tile under player's sprite
 	ld b, a
 .loop
 	ld a, [hli]
--- a/engine/overworld/ledges.asm
+++ b/engine/overworld/ledges.asm
@@ -8,7 +8,7 @@
 	predef GetTileAndCoordsInFrontOfPlayer
 	ld a, [wSpritePlayerStateData1FacingDirection]
 	ld b, a
-	aCoord 8, 9
+	lda_coord 8, 9
 	ld c, a
 	ld a, [wTileInFrontOfPlayer]
 	ld d, a
--- a/engine/overworld/movement.asm
+++ b/engine/overworld/movement.asm
@@ -13,7 +13,7 @@
 ; background tile the sprite is standing on is greater than $5F, which is
 ; the maximum number for map tiles
 .checkIfTextBoxInFrontOfSprite
-	aCoord 8, 9
+	lda_coord 8, 9
 	ldh [hTilePlayerStandingOn], a
 	cp MAP_TILESET_SIZE
 	jr c, .lowerLeftTileIsMapTile
@@ -709,7 +709,7 @@
 	add SCREEN_WIDTH ; screen X tile + 20
 	ld d, $0
 	ld e, a
-	coord hl, 0, 0
+	hlcoord 0, 0
 	add hl, bc
 	add hl, bc
 	add hl, bc
--- a/engine/overworld/player_animations.asm
+++ b/engine/overworld/player_animations.asm
@@ -358,7 +358,7 @@
 	jr z, .done
 	cp c
 	jr nz, .nextEntry
-	aCoord 8, 9
+	lda_coord 8, 9
 	cp [hl]
 	jr z, .foundMatch
 .nextEntry
--- a/engine/overworld/player_state.asm
+++ b/engine/overworld/player_state.asm
@@ -204,7 +204,7 @@
 	ld h, [hl]
 	ld l, a
 	ld de, $1
-	aCoord 8, 9
+	lda_coord 8, 9
 	call IsInArray
 	jr nc, .done
 	ld hl, wd736
@@ -223,28 +223,28 @@
 	ret c
 	cp CERULEAN_CAVE_2F
 	ret nc
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld b, 3
 	ld c, 7
 	call TextBoxBorder
-	coord hl, 1, 1
+	hlcoord 1, 1
 	ld de, wSafariSteps
 	lb bc, 2, 3
 	call PrintNumber
-	coord hl, 4, 1
+	hlcoord 4, 1
 	ld de, SafariSteps
 	call PlaceString
-	coord hl, 1, 3
+	hlcoord 1, 3
 	ld de, SafariBallText
 	call PlaceString
 	ld a, [wNumSafariBalls]
 	cp 10
 	jr nc, .asm_c56d
-	coord hl, 5, 3
+	hlcoord 5, 3
 	ld a, " "
 	ld [hl], a
 .asm_c56d
-	coord hl, 6, 3
+	hlcoord 6, 3
 	ld de, wNumSafariBalls
 	lb bc, 1, 2
 	jp PrintNumber
@@ -267,7 +267,7 @@
 	and a ; cp SPRITE_FACING_DOWN
 	jr nz, .notFacingDown
 ; facing down
-	aCoord 8, 11
+	lda_coord 8, 11
 	inc d
 	jr .storeTile
 .notFacingDown
@@ -274,7 +274,7 @@
 	cp SPRITE_FACING_UP
 	jr nz, .notFacingUp
 ; facing up
-	aCoord 8, 7
+	lda_coord 8, 7
 	dec d
 	jr .storeTile
 .notFacingUp
@@ -281,7 +281,7 @@
 	cp SPRITE_FACING_LEFT
 	jr nz, .notFacingLeft
 ; facing left
-	aCoord 6, 9
+	lda_coord 6, 9
 	dec e
 	jr .storeTile
 .notFacingLeft
@@ -288,7 +288,7 @@
 	cp SPRITE_FACING_RIGHT
 	jr nz, .storeTile
 ; facing right
-	aCoord 10, 9
+	lda_coord 10, 9
 	inc e
 .storeTile
 	ld c, a
@@ -308,7 +308,7 @@
 ; facing down
 	ld hl, hPlayerFacing
 	set 0, [hl]
-	aCoord 8, 13
+	lda_coord 8, 13
 	inc d
 	jr .storeTile
 .notFacingDown
@@ -317,7 +317,7 @@
 ; facing up
 	ld hl, hPlayerFacing
 	set 1, [hl]
-	aCoord 8, 5
+	lda_coord 8, 5
 	dec d
 	jr .storeTile
 .notFacingUp
@@ -326,7 +326,7 @@
 ; facing left
 	ld hl, hPlayerFacing
 	set 2, [hl]
-	aCoord 4, 9
+	lda_coord 4, 9
 	dec e
 	jr .storeTile
 .notFacingLeft
@@ -335,7 +335,7 @@
 ; facing right
 	ld hl, hPlayerFacing
 	set 3, [hl]
-	aCoord 12, 9
+	lda_coord 12, 9
 	inc e
 .storeTile
 	ld c, a
--- a/engine/pokemon/bills_pc.asm
+++ b/engine/pokemon/bills_pc.asm
@@ -10,17 +10,17 @@
 	ld a, [wNumHoFTeams]
 	and a
 	jr nz, .leaguePCAvailable
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld b, 8
 	ld c, 14
 	jr .next
 .noOaksPC
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld b, 6
 	ld c, 14
 	jr .next
 .leaguePCAvailable
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld b, 10
 	ld c, 14
 .next
@@ -30,15 +30,15 @@
 	ld [wMaxMenuItem], a
 	CheckEvent EVENT_MET_BILL
 	jr nz, .metBill
-	coord hl, 2, 2
+	hlcoord 2, 2
 	ld de, SomeonesPCText
 	jr .next2
 .metBill
-	coord hl, 2, 2
+	hlcoord 2, 2
 	ld de, BillsPCText
 .next2
 	call PlaceString
-	coord hl, 2, 4
+	hlcoord 2, 4
 	ld de, wPlayerName
 	call PlaceString
 	ld l, c
@@ -47,7 +47,7 @@
 	call PlaceString
 	CheckEvent EVENT_GOT_POKEDEX
 	jr z, .noOaksPC2
-	coord hl, 2, 6
+	hlcoord 2, 6
 	ld de, OaksPCText
 	call PlaceString
 	ld a, [wNumHoFTeams]
@@ -55,20 +55,20 @@
 	jr z, .noLeaguePC
 	ld a, 4
 	ld [wMaxMenuItem], a
-	coord hl, 2, 8
+	hlcoord 2, 8
 	ld de, PKMNLeaguePCText
 	call PlaceString
-	coord hl, 2, 10
+	hlcoord 2, 10
 	ld de, LogOffPCText
 	jr .next3
 .noLeaguePC
-	coord hl, 2, 8
+	hlcoord 2, 8
 	ld de, LogOffPCText
 	jr .next3
 .noOaksPC2
 	ld a, $2
 	ld [wMaxMenuItem], a
-	coord hl, 2, 6
+	hlcoord 2, 6
 	ld de, LogOffPCText
 .next3
 	call PlaceString
@@ -119,11 +119,11 @@
 	lb bc, BANK(PokeballTileGraphics), $01
 	call CopyVideoData
 	call LoadScreenTilesFromBuffer2DisableBGTransfer
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld b, 10
 	ld c, 12
 	call TextBoxBorder
-	coord hl, 2, 2
+	hlcoord 2, 2
 	ld de, BillsPCMenuText
 	call PlaceString
 	ld hl, wTopMenuItemY
@@ -146,7 +146,7 @@
 	ld [wPlayerMonNumber], a
 	ld hl, WhatText
 	call PrintText
-	coord hl, 9, 14
+	hlcoord 9, 14
 	ld b, 2
 	ld c, 9
 	call TextBoxBorder
@@ -156,7 +156,7 @@
 	jr c, .singleDigitBoxNum
 ; two digit box num
 	sub 9
-	coord hl, 17, 16
+	hlcoord 17, 16
 	ld [hl], "1"
 	add "0"
 	jr .next
@@ -163,8 +163,8 @@
 .singleDigitBoxNum
 	add "1"
 .next
-	Coorda 18, 16
-	coord hl, 10, 16
+	ldcoord_a 18, 16
+	hlcoord 10, 16
 	ld de, BoxNoPCText
 	call PlaceString
 	ld a, 1
@@ -380,7 +380,7 @@
 INCLUDE "data/moves/hm_moves.asm"
 
 DisplayDepositWithdrawMenu:
-	coord hl, 9, 10
+	hlcoord 9, 10
 	ld b, 6
 	ld c, 9
 	call TextBoxBorder
@@ -390,9 +390,9 @@
 	jr nz, .next
 	ld de, WithdrawPCText
 .next
-	coord hl, 11, 12
+	hlcoord 11, 12
 	call PlaceString
-	coord hl, 11, 14
+	hlcoord 11, 14
 	ld de, StatsCancelPCText
 	call PlaceString
 	ld hl, wTopMenuItemY
--- a/engine/pokemon/evos_moves.asm
+++ b/engine/pokemon/evos_moves.asm
@@ -121,7 +121,7 @@
 	call DelayFrames
 	xor a
 	ldh [hAutoBGTransferEnabled], a
-	coord hl, 0, 0
+	hlcoord 0, 0
 	lb bc, 12, 20
 	call ClearScreenArea
 	ld a, $1
--- a/engine/pokemon/learn_move.asm
+++ b/engine/pokemon/learn_move.asm
@@ -76,7 +76,7 @@
 AbandonLearning:
 	ld hl, AbandonLearningText
 	call PrintText
-	coord hl, 14, 7
+	hlcoord 14, 7
 	lb bc, 8, 15
 	ld a, TWO_OPTION_MENU
 	ld [wTextBoxID], a
@@ -99,7 +99,7 @@
 	push hl
 	ld hl, TryingToLearnText
 	call PrintText
-	coord hl, 14, 7
+	hlcoord 14, 7
 	lb bc, 8, 15
 	ld a, TWO_OPTION_MENU
 	ld [wTextBoxID], a
@@ -120,11 +120,11 @@
 	push hl
 	ld hl, WhichMoveToForgetText
 	call PrintText
-	coord hl, 4, 7
+	hlcoord 4, 7
 	ld b, 4
 	ld c, 14
 	call TextBoxBorder
-	coord hl, 6, 8
+	hlcoord 6, 8
 	ld de, wMovesString
 	ldh a, [hFlagsFFF6]
 	set 2, a
--- a/engine/pokemon/status_screen.asm
+++ b/engine/pokemon/status_screen.asm
@@ -105,7 +105,7 @@
 	push af
 	xor a
 	ldh [hTilesetType], a
-	coord hl, 19, 1
+	hlcoord 19, 1
 	lb bc, 6, 10
 	call DrawLineBox ; Draws the box around name, HP and status
 	ld de, -6
@@ -113,54 +113,54 @@
 	ld [hl], "<DOT>"
 	dec hl
 	ld [hl], "№"
-	coord hl, 19, 9
+	hlcoord 19, 9
 	lb bc, 8, 6
 	call DrawLineBox ; Draws the box around types, ID No. and OT
-	coord hl, 10, 9
+	hlcoord 10, 9
 	ld de, Type1Text
 	call PlaceString ; "TYPE1/"
-	coord hl, 11, 3
+	hlcoord 11, 3
 	predef DrawHP
 	ld hl, wStatusScreenHPBarColor
 	call GetHealthBarColor
 	ld b, SET_PAL_STATUS_SCREEN
 	call RunPaletteCommand
-	coord hl, 16, 6
+	hlcoord 16, 6
 	ld de, wLoadedMonStatus
 	call PrintStatusCondition
 	jr nz, .StatusWritten
-	coord hl, 16, 6
+	hlcoord 16, 6
 	ld de, OKText
 	call PlaceString ; "OK"
 .StatusWritten
-	coord hl, 9, 6
+	hlcoord 9, 6
 	ld de, StatusText
 	call PlaceString ; "STATUS/"
-	coord hl, 14, 2
+	hlcoord 14, 2
 	call PrintLevel ; Pokémon level
 	ld a, [wMonHIndex]
 	ld [wd11e], a
 	ld [wd0b5], a
 	predef IndexToPokedex
-	coord hl, 3, 7
+	hlcoord 3, 7
 	ld de, wd11e
 	lb bc, LEADING_ZEROES | 1, 3
 	call PrintNumber ; Pokémon no.
-	coord hl, 11, 10
+	hlcoord 11, 10
 	predef PrintMonType
 	ld hl, NamePointers2
 	call .GetStringPointer
 	ld d, h
 	ld e, l
-	coord hl, 9, 1
+	hlcoord 9, 1
 	call PlaceString ; Pokémon name
 	ld hl, OTPointers
 	call .GetStringPointer
 	ld d, h
 	ld e, l
-	coord hl, 12, 16
+	hlcoord 12, 16
 	call PlaceString ; OT
-	coord hl, 12, 14
+	hlcoord 12, 14
 	ld de, wLoadedMonOTID
 	lb bc, LEADING_ZEROES | 2, 5
 	call PrintNumber ; ID Number
@@ -168,7 +168,7 @@
 	call PrintStatsBox
 	call Delay3
 	call GBPalNormal
-	coord hl, 1, 0
+	hlcoord 1, 0
 	call LoadFlippedFrontSpriteByMonIndex ; draw Pokémon picture
 	ld a, [wcf91]
 	call PlayCry ; play Pokémon cry
@@ -252,19 +252,19 @@
 	ld a, d
 	and a ; a is 0 from the status screen
 	jr nz, .DifferentBox
-	coord hl, 0, 8
+	hlcoord 0, 8
 	ld b, 8
 	ld c, 8
 	call TextBoxBorder ; Draws the box
-	coord hl, 1, 9 ; Start printing stats from here
+	hlcoord 1, 9 ; Start printing stats from here
 	ld bc, $19 ; Number offset
 	jr .PrintStats
 .DifferentBox
-	coord hl, 9, 2
+	hlcoord 9, 2
 	ld b, 8
 	ld c, 9
 	call TextBoxBorder
-	coord hl, 11, 3
+	hlcoord 11, 3
 	ld bc, $18
 .PrintStats
 	push bc
@@ -311,16 +311,16 @@
 	ld bc, NUM_MOVES
 	call CopyData
 	callfar FormatMovesString
-	coord hl, 9, 2
+	hlcoord 9, 2
 	lb bc, 5, 10
 	call ClearScreenArea ; Clear under name
-	coord hl, 19, 3
+	hlcoord 19, 3
 	ld [hl], $78
-	coord hl, 0, 8
+	hlcoord 0, 8
 	ld b, 8
 	ld c, 18
 	call TextBoxBorder ; Draw move container
-	coord hl, 2, 9
+	hlcoord 2, 9
 	ld de, wMovesString
 	call PlaceString ; Print moves
 	ld a, [wNumMovesMinusOne]
@@ -329,7 +329,7 @@
 	ld a, $4
 	sub c
 	ld b, a ; Number of moves ?
-	coord hl, 11, 10
+	hlcoord 11, 10
 	ld de, SCREEN_WIDTH * 2
 	ld a, "<BOLD_P>"
 	call StatusScreen_PrintPP ; Print "PP"
@@ -341,7 +341,7 @@
 	call StatusScreen_PrintPP ; Fill the rest with --
 .InitPP
 	ld hl, wLoadedMonMoves
-	coord de, 14, 10
+	decoord 14, 10
 	ld b, 0
 .PrintPP
 	ld a, [hli]
@@ -391,7 +391,7 @@
 	cp $4
 	jr nz, .PrintPP
 .PPDone
-	coord hl, 9, 3
+	hlcoord 9, 3
 	ld de, StatusScreenExpText
 	call PlaceString
 	ld a, [wLoadedMonLevel]
@@ -401,7 +401,7 @@
 	inc a
 	ld [wLoadedMonLevel], a ; Increase temporarily if not 100
 .Level100
-	coord hl, 14, 6
+	hlcoord 14, 6
 	ld [hl], "<to>"
 	inc hl
 	inc hl
@@ -409,22 +409,22 @@
 	pop af
 	ld [wLoadedMonLevel], a
 	ld de, wLoadedMonExp
-	coord hl, 12, 4
+	hlcoord 12, 4
 	lb bc, 3, 7
 	call PrintNumber ; exp
 	call CalcExpToLevelUp
 	ld de, wLoadedMonExp
-	coord hl, 7, 6
+	hlcoord 7, 6
 	lb bc, 3, 7
 	call PrintNumber ; exp needed to level up
-	coord hl, 9, 0
+	hlcoord 9, 0
 	call StatusScreen_ClearName
-	coord hl, 9, 1
+	hlcoord 9, 1
 	call StatusScreen_ClearName
 	ld a, [wMonHIndex]
 	ld [wd11e], a
 	call GetMonName
-	coord hl, 9, 1
+	hlcoord 9, 1
 	call PlaceString
 	ld a, $1
 	ldh [hAutoBGTransferEnabled], a
--- a/engine/slots/slot_machine.asm
+++ b/engine/slots/slot_machine.asm
@@ -79,11 +79,11 @@
 	ld [wCurrentMenuItem], a
 	ld [wLastMenuItem], a
 	ld [wMenuWatchMovingOutOfBounds], a
-	coord hl, 14, 11
+	hlcoord 14, 11
 	ld b, 5
 	ld c, 4
 	call TextBoxBorder
-	coord hl, 16, 12
+	hlcoord 16, 12
 	ld de, CoinMultiplierSlotMachineText
 	call PlaceString
 	call HandleMenuInput
@@ -133,7 +133,7 @@
 .skip2
 	ld hl, OneMoreGoSlotMachineText
 	call PrintText
-	coord hl, 14, 12
+	hlcoord 14, 12
 	lb bc, 13, 15
 	xor a ; YES_NO_MENU
 	ld [wTwoOptionMenuID], a
@@ -615,7 +615,7 @@
 
 SlotMachine_PrintWinningSymbol:
 ; prints winning symbol and down arrow in text box
-	coord hl, 2, 14
+	hlcoord 2, 14
 	ld a, [wSlotMachineWinningSymbol]
 	add $25
 	ld [hli], a
@@ -627,7 +627,7 @@
 	ld [hli], a
 	inc a
 	ld [hl], a
-	coord hl, 18, 16
+	hlcoord 18, 16
 	ld [hl], "▼"
 	ret
 
@@ -642,13 +642,13 @@
 	predef SubBCDPredef
 
 SlotMachine_PrintCreditCoins:
-	coord hl, 5, 1
+	hlcoord 5, 1
 	ld de, wPlayerCoins
 	ld c, $2
 	jp PrintBCDNumber
 
 SlotMachine_PrintPayoutCoins:
-	coord hl, 11, 1
+	hlcoord 11, 1
 	ld de, wPayoutCoins
 	lb bc, LEADING_ZEROES | 2, 4 ; 2 bytes, 4 digits
 	jp PrintNumber
@@ -725,19 +725,19 @@
 	jr z, SlotMachine_UpdateTwoCoinBallTiles
 
 SlotMachine_UpdateThreeCoinBallTiles:
-	coord hl, 3, 2
+	hlcoord 3, 2
 	call SlotMachine_UpdateBallTiles
-	coord hl, 3, 10
+	hlcoord 3, 10
 	call SlotMachine_UpdateBallTiles
 
 SlotMachine_UpdateTwoCoinBallTiles:
-	coord hl, 3, 4
+	hlcoord 3, 4
 	call SlotMachine_UpdateBallTiles
-	coord hl, 3, 8
+	hlcoord 3, 8
 	call SlotMachine_UpdateBallTiles
 
 SlotMachine_UpdateOneCoinBallTiles:
-	coord hl, 3, 6
+	hlcoord 3, 6
 
 SlotMachine_UpdateBallTiles:
 	ld a, [wNewSlotMachineBallTile]
@@ -864,7 +864,7 @@
 	ld a, BANK(SlotMachineTiles2)
 	call FarCopyData2
 	ld hl, SlotMachineMap
-	coord de, 0, 0
+	decoord 0, 0
 	ld bc, SlotMachineMapEnd - SlotMachineMap
 	call CopyData
 	call EnableLCD
--- a/home.asm
+++ b/home.asm
@@ -869,7 +869,7 @@
 	jp UncompressSpriteData
 
 SaveScreenTilesToBuffer2::
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld de, wTileMapBackup2
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	call CopyData
@@ -886,13 +886,13 @@
 	xor a
 	ldh [hAutoBGTransferEnabled], a
 	ld hl, wTileMapBackup2
-	coord de, 0, 0
+	decoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	call CopyData
 	ret
 
 SaveScreenTilesToBuffer1::
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld de, wTileMapBackup
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	jp CopyData
@@ -901,7 +901,7 @@
 	xor a
 	ldh [hAutoBGTransferEnabled], a
 	ld hl, wTileMapBackup
-	coord de, 0, 0
+	decoord 0, 0
 	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
 	call CopyData
 	ld a, 1
@@ -1071,7 +1071,7 @@
 	jr z, .skipAnimation
 	call TownMapSpriteBlinkingAnimation
 .skipAnimation
-	coord hl, 18, 16
+	hlcoord 18, 16
 	call HandleDownArrowBlinkTiming
 	pop hl
 	call JoypadLowSensitivity
@@ -1304,7 +1304,7 @@
 	and a ; was a key pressed?
 	jr nz, .keyPressed
 	push hl
-	coord hl, 18, 11 ; coordinates of blinking down arrow in some menus
+	hlcoord 18, 11 ; coordinates of blinking down arrow in some menus
 	call HandleDownArrowBlinkTiming ; blink down arrow (if any)
 	pop hl
 	ld a, [wMenuJoypadPollCount]
@@ -1395,7 +1395,7 @@
 	ld a, [wTopMenuItemY]
 	and a ; is the y coordinate 0?
 	jr z, .adjustForXCoord
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld bc, SCREEN_WIDTH
 .topMenuItemLoop
 	add hl, bc
@@ -1565,7 +1565,7 @@
 	call Delay3
 	pop hl
 PrintText_NoCreatingTextBox::
-	coord bc, 1, 14
+	bccoord 1, 14
 	jp TextCommandProcessor
 
 INCLUDE "home/print_num.asm"
--- a/home/copy2.asm
+++ b/home/copy2.asm
@@ -184,17 +184,17 @@
 	ld c, 6
 
 	ld hl, $600 * 0
-	coord de, 0, 6 * 0
+	decoord 0, 6 * 0
 	call .setup
 	call DelayFrame
 
 	ld hl, $600 * 1
-	coord de, 0, 6 * 1
+	decoord 0, 6 * 1
 	call .setup
 	call DelayFrame
 
 	ld hl, $600 * 2
-	coord de, 0, 6 * 2
+	decoord 0, 6 * 2
 	call .setup
 	jp DelayFrame
 
@@ -217,7 +217,7 @@
 ; for the bg map to update.
 	ld bc, 20 * 18
 	inc b
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld a, " "
 .loop
 	ld [hli], a
--- a/home/list_menu.asm
+++ b/home/list_menu.asm
@@ -31,7 +31,7 @@
 	call DisplayTextBoxID ; draw the menu text box
 	call UpdateSprites ; disable sprites behind the text box
 ; the code up to .skipMovingSprites appears to be useless
-	coord hl, 4, 2 ; coordinates of upper left corner of menu text box
+	hlcoord 4, 2 ; coordinates of upper left corner of menu text box
 	lb de, 9, 14 ; height and width of menu text box
 	ld a, [wListMenuID]
 	and a ; is it a PC pokemon list?
@@ -67,12 +67,12 @@
 	jr z, .notOldManBattle
 .oldManBattle
 	ld a, "▶"
-	Coorda 5, 4 ; place menu cursor in front of first menu entry
+	ldcoord_a 5, 4 ; place menu cursor in front of first menu entry
 	ld c, 80
 	call DelayFrames
 	xor a
 	ld [wCurrentMenuItem], a
-	coord hl, 5, 4
+	hlcoord 5, 4
 	ld a, l
 	ld [wMenuCursorLocation], a
 	ld a, h
@@ -194,7 +194,7 @@
 
 DisplayChooseQuantityMenu::
 ; text box dimensions/coordinates for just quantity
-	coord hl, 15, 9
+	hlcoord 15, 9
 	ld b, 1 ; height
 	ld c, 3 ; width
 	ld a, [wListMenuID]
@@ -201,16 +201,16 @@
 	cp PRICEDITEMLISTMENU
 	jr nz, .drawTextBox
 ; text box dimensions/coordinates for quantity and price
-	coord hl, 7, 9
+	hlcoord 7, 9
 	ld b, 1  ; height
 	ld c, 11 ; width
 .drawTextBox
 	call TextBoxBorder
-	coord hl, 16, 10
+	hlcoord 16, 10
 	ld a, [wListMenuID]
 	cp PRICEDITEMLISTMENU
 	jr nz, .printInitialQuantity
-	coord hl, 8, 10
+	hlcoord 8, 10
 .printInitialQuantity
 	ld de, InitialQuantityText
 	call PlaceString
@@ -250,7 +250,7 @@
 	ld a, [wMaxItemQuantity]
 	ld [hl], a
 .handleNewQuantity
-	coord hl, 17, 10
+	hlcoord 17, 10
 	ld a, [wListMenuID]
 	cp PRICEDITEMLISTMENU
 	jr nz, .printQuantity
@@ -289,13 +289,13 @@
 	ldh a, [hDivideBCDQuotient + 2]
 	ldh [hMoney + 2], a
 .skipHalvingPrice
-	coord hl, 12, 10
+	hlcoord 12, 10
 	ld de, SpacesBetweenQuantityAndPriceText
 	call PlaceString
 	ld de, hMoney ; total price
 	ld c, $a3
 	call PrintBCDNumber
-	coord hl, 9, 10
+	hlcoord 9, 10
 .printQuantity
 	ld de, wItemQuantity ; current quantity
 	lb bc, LEADING_ZEROES | 1, 2 ; 1 byte, 2 digits
@@ -334,7 +334,7 @@
 	ret
 
 PrintListMenuEntries::
-	coord hl, 5, 3
+	hlcoord 5, 3
 	ld b, 9
 	ld c, 14
 	call ClearScreenArea
@@ -359,7 +359,7 @@
 	jr nc, .noCarry
 	inc d
 .noCarry
-	coord hl, 6, 4 ; coordinates of first list entry name
+	hlcoord 6, 4 ; coordinates of first list entry name
 	ld b, 4 ; print 4 names
 .loop
 	ld a, b
--- a/home/overworld.asm
+++ b/home/overworld.asm
@@ -103,7 +103,7 @@
 	jr nz, .checkForOpponent
 	bit 0, a
 	jr nz, .checkForOpponent
-	aCoord 8, 9
+	lda_coord 8, 9
 	ld [wTilePlayerStandingOn], a ; unused?
 	call DisplayTextID ; display either the start menu or the NPC/sign text
 	ld a, [wEnteringCableClub]
@@ -688,7 +688,7 @@
 
 ; function to play a sound when changing maps
 PlayMapChangeSound::
-	aCoord 8, 8 ; upper left tile of the 4x4 square the player's sprite is standing on
+	lda_coord 8, 8 ; upper left tile of the 4x4 square the player's sprite is standing on
 	cp $0b ; door tile in tileset 0
 	jr nz, .didNotGoThroughDoor
 	ld a, SFX_GO_INSIDE
@@ -1297,7 +1297,7 @@
 ; if not jumping
 
 CheckForTilePairCollisions2::
-	aCoord 8, 9 ; tile the player is on
+	lda_coord 8, 9 ; tile the player is on
 	ld [wTilePlayerStandingOn], a
 
 CheckForTilePairCollisions::
@@ -1438,7 +1438,7 @@
 	ld bc, $2
 	add hl, bc
 .copyToVisibleAreaBuffer
-	coord de, 0, 0 ; base address for the tiles that are directly transferred to VRAM during V-blank
+	decoord 0, 0 ; base address for the tiles that are directly transferred to VRAM during V-blank
 	ld b, SCREEN_HEIGHT
 .rowLoop2
 	ld c, SCREEN_WIDTH
@@ -1711,7 +1711,7 @@
 ; the portion of the map that was newly exposed due to the player's movement
 
 ScheduleNorthRowRedraw::
-	coord hl, 0, 0
+	hlcoord 0, 0
 	call CopyToRedrawRowOrColumnSrcTiles
 	ld a, [wMapViewVRAMPointer]
 	ldh [hRedrawRowOrColumnDest], a
@@ -1733,7 +1733,7 @@
 	ret
 
 ScheduleSouthRowRedraw::
-	coord hl, 0, 16
+	hlcoord 0, 16
 	call CopyToRedrawRowOrColumnSrcTiles
 	ld a, [wMapViewVRAMPointer]
 	ld l, a
@@ -1752,7 +1752,7 @@
 	ret
 
 ScheduleEastColumnRedraw::
-	coord hl, 18, 0
+	hlcoord 18, 0
 	call ScheduleColumnRedrawHelper
 	ld a, [wMapViewVRAMPointer]
 	ld c, a
@@ -1790,7 +1790,7 @@
 	ret
 
 ScheduleWestColumnRedraw::
-	coord hl, 0, 0
+	hlcoord 0, 0
 	call ScheduleColumnRedrawHelper
 	ld a, [wMapViewVRAMPointer]
 	ldh [hRedrawRowOrColumnDest], a
@@ -2342,7 +2342,7 @@
 	call LoadTilesetTilePatternData
 	call LoadCurrentMapView
 ; copy current map view to VRAM
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld de, vBGMap0
 	ld b, 18
 .vramCopyLoop
--- a/home/text.asm
+++ b/home/text.asm
@@ -76,7 +76,7 @@
 	cp "<LINE>"
 	jr nz, .NotLine
 	pop hl
-	coord hl, 1, 16
+	hlcoord 1, 16
 	push hl
 	jp NextChar
 
@@ -207,12 +207,12 @@
 	cp LINK_STATE_BATTLING
 	jp z, .ok
 	ld a, "▼"
-	Coorda 18, 16
+	ldcoord_a 18, 16
 .ok
 	call ProtectedDelay3
 	call ManualTextScroll
 	ld a, " "
-	Coorda 18, 16
+	ldcoord_a 18, 16
 
 DoneText::
 	pop hl
@@ -226,25 +226,25 @@
 Paragraph::
 	push de
 	ld a, "▼"
-	Coorda 18, 16
+	ldcoord_a 18, 16
 	call ProtectedDelay3
 	call ManualTextScroll
-	coord hl, 1, 13
+	hlcoord 1, 13
 	lb bc, 4, 18
 	call ClearScreenArea
 	ld c, 20
 	call DelayFrames
 	pop de
-	coord hl, 1, 14
+	hlcoord 1, 14
 	jp NextChar
 
 PageChar::
 	push de
 	ld a, "▼"
-	Coorda 18, 16
+	ldcoord_a 18, 16
 	call ProtectedDelay3
 	call ManualTextScroll
-	coord hl, 1, 10
+	hlcoord 1, 10
 	lb bc, 7, 18
 	call ClearScreenArea
 	ld c, 20
@@ -251,24 +251,24 @@
 	call DelayFrames
 	pop de
 	pop hl
-	coord hl, 1, 11
+	hlcoord 1, 11
 	push hl
 	jp NextChar
 
 _ContText::
 	ld a, "▼"
-	Coorda 18, 16
+	ldcoord_a 18, 16
 	call ProtectedDelay3
 	push de
 	call ManualTextScroll
 	pop de
 	ld a, " "
-	Coorda 18, 16
+	ldcoord_a 18, 16
 _ContTextNoPause::
 	push de
 	call ScrollTextUpOneLine
 	call ScrollTextUpOneLine
-	coord hl, 1, 16
+	hlcoord 1, 16
 	pop de
 	jp NextChar
 
@@ -277,8 +277,8 @@
 ; first time, copy the two rows of text to the "in between" rows that are usually emtpy
 ; second time, copy the bottom row of text into the top row of text
 ScrollTextUpOneLine::
-	coord hl, 0, 14 ; top row of text
-	coord de, 0, 13 ; empty line above text
+	hlcoord 0, 14 ; top row of text
+	decoord 0, 13 ; empty line above text
 	ld b, SCREEN_WIDTH * 3
 .copyText
 	ld a, [hli]
@@ -286,7 +286,7 @@
 	inc de
 	dec b
 	jr nz, .copyText
-	coord hl, 1, 16
+	hlcoord 1, 16
 	ld a, " "
 	ld b, SCREEN_WIDTH - 2
 .clearText
@@ -424,7 +424,7 @@
 TextCommand_LOW::
 ; write text at (1,16)
 	pop hl
-	coord bc, 1, 16 ; second line of dialogue text box
+	bccoord 1, 16 ; second line of dialogue text box
 	jp NextTextCommand
 
 TextCommand_PROMPT_BUTTON::
@@ -433,12 +433,12 @@
 	cp LINK_STATE_BATTLING
 	jp z, TextCommand_WAIT_BUTTON
 	ld a, "▼"
-	Coorda 18, 16 ; place down arrow in lower right corner of dialogue text box
+	ldcoord_a 18, 16 ; place down arrow in lower right corner of dialogue text box
 	push bc
 	call ManualTextScroll ; blink arrow and wait for A or B to be pressed
 	pop bc
 	ld a, " "
-	Coorda 18, 16 ; overwrite down arrow with blank space
+	ldcoord_a 18, 16 ; overwrite down arrow with blank space
 	pop hl
 	jp NextTextCommand
 
@@ -446,11 +446,11 @@
 ; pushes text up two lines and sets the BC cursor to the border tile
 ; below the first character column of the text box.
 	ld a, " "
-	Coorda 18, 16 ; place blank space in lower right corner of dialogue text box
+	ldcoord_a 18, 16 ; place blank space in lower right corner of dialogue text box
 	call ScrollTextUpOneLine
 	call ScrollTextUpOneLine
 	pop hl
-	coord bc, 1, 16 ; second line of dialogue text box
+	bccoord 1, 16 ; second line of dialogue text box
 	jp NextTextCommand
 
 TextCommand_START_ASM::
--- a/home/vcopy.asm
+++ b/home/vcopy.asm
@@ -134,7 +134,7 @@
 	dec a
 	jr z, .transferMiddleThird
 .transferBottomThird
-	coord hl, 0, 12
+	hlcoord 0, 12
 	ld sp, hl
 	ldh a, [hAutoBGTransferDest + 1]
 	ld h, a
@@ -145,7 +145,7 @@
 	xor a ; TRANSFERTOP
 	jr .doTransfer
 .transferTopThird
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld sp, hl
 	ldh a, [hAutoBGTransferDest + 1]
 	ld h, a
@@ -154,7 +154,7 @@
 	ld a, TRANSFERMIDDLE
 	jr .doTransfer
 .transferMiddleThird
-	coord hl, 0, 6
+	hlcoord 0, 6
 	ld sp, hl
 	ldh a, [hAutoBGTransferDest + 1]
 	ld h, a
--- a/home/yes_no.asm
+++ b/home/yes_no.asm
@@ -14,7 +14,7 @@
 InitYesNoTextBoxParameters::
 	xor a ; YES_NO_MENU
 	ld [wTwoOptionMenuID], a
-	coord hl, 14, 7
+	hlcoord 14, 7
 	ld bc, $80f
 	ret
 
@@ -22,7 +22,7 @@
 	call SaveScreenTilesToBuffer1
 	ld a, HEAL_CANCEL_MENU
 	ld [wTwoOptionMenuID], a
-	coord hl, 11, 6
+	hlcoord 11, 6
 	lb bc, 8, 12
 	jr DisplayYesNoChoice
 
@@ -30,7 +30,7 @@
 	call SaveScreenTilesToBuffer1
 	ld a, WIDE_YES_NO_MENU
 	ld [wTwoOptionMenuID], a
-	coord hl, 12, 7
+	hlcoord 12, 7
 	lb bc, 8, 13
 
 DisplayYesNoChoice::
--- a/macros/coords.asm
+++ b/macros/coords.asm
@@ -1,65 +1,79 @@
-validateCoords: MACRO
-	IF \1 >= SCREEN_WIDTH
-		fail "x coord out of range"
+validate_coords: MACRO
+	IF _NARG >= 4
+		IF \1 >= \3
+			fail "x coord out of range"
+		ENDC
+		IF \2 >= \4
+			fail "y coord out of range"
+		ENDC
+	ELSE
+		validate_coords \1, \2, SCREEN_WIDTH, SCREEN_HEIGHT
 	ENDC
-	IF \2 >= SCREEN_HEIGHT
-		fail "y coord out of range"
-	ENDC
 ENDM
 
-;\1 = r
-;\2 = X
-;\3 = Y
-;\4 = which tilemap (optional)
+hlcoord EQUS "coord hl,"
+bccoord EQUS "coord bc,"
+decoord EQUS "coord de,"
+
 coord: MACRO
-	validateCoords \2, \3
+; register, x, y[, origin]
+	validate_coords \2, \3
 	IF _NARG >= 4
-		ld \1, \4 + SCREEN_WIDTH * \3 + \2
+		ld \1, (\3) * SCREEN_WIDTH + (\2) + \4
 	ELSE
-		ld \1, wTileMap + SCREEN_WIDTH * \3 + \2
+		ld \1, (\3) * SCREEN_WIDTH + (\2) + wTileMap
 	ENDC
 ENDM
 
-;\1 = X
-;\2 = Y
-;\3 = which tilemap (optional)
-aCoord: MACRO
-	validateCoords \1, \2
-	IF _NARG >= 3
-		ld a, [\3 + SCREEN_WIDTH * \2 + \1]
+hlbgcoord EQUS "bgcoord hl,"
+bcbgcoord EQUS "bgcoord bc,"
+debgcoord EQUS "bgcoord de,"
+
+bgcoord: MACRO
+; register, x, y[, origin]
+	validate_coords \2, \3, BG_MAP_WIDTH, BG_MAP_HEIGHT
+	IF _NARG >= 4
+		ld \1, (\3) * BG_MAP_WIDTH + (\2) + \4
 	ELSE
-		ld a, [wTileMap + SCREEN_WIDTH * \2 + \1]
+		ld \1, (\3) * BG_MAP_WIDTH + (\2) + vBGMap0
 	ENDC
 ENDM
 
-;\1 = X
-;\2 = Y
-;\3 = which tilemap (optional)
-Coorda: MACRO
-	validateCoords \1, \2
+hlowcoord EQUS "owcoord hl,"
+bcowcoord EQUS "owcoord bc,"
+deowcoord EQUS "owcoord de,"
+
+owcoord: MACRO
+; register, x, y, map width
+	ld \1, wOverworldMap + ((\2) + 3) + (((\3) + 3) * ((\4) + (3 * 2)))
+ENDM
+
+dwcoord: MACRO
+; x, y
+	validate_coords \1, \2
 	IF _NARG >= 3
-		ld [\3 + SCREEN_WIDTH * \2 + \1], a
+		dw (\2) * SCREEN_WIDTH + (\1) + \3
 	ELSE
-		ld [wTileMap + SCREEN_WIDTH * \2 + \1], a
+		dw (\2) * SCREEN_WIDTH + (\1) + wTileMap
 	ENDC
 ENDM
 
-;\1 = X
-;\2 = Y
-;\3 = which tilemap (optional)
-dwCoord: MACRO
-	validateCoords \1, \2
+ldcoord_a: MACRO
+; x, y[, origin]
+	validate_coords \1, \2
 	IF _NARG >= 3
-		dw \3 + SCREEN_WIDTH * \2 + \1
+		ld [(\2) * SCREEN_WIDTH + (\1) + \3], a
 	ELSE
-		dw wTileMap + SCREEN_WIDTH * \2 + \1
+		ld [(\2) * SCREEN_WIDTH + (\1) + wTileMap], a
 	ENDC
 ENDM
 
-;\1 = r
-;\2 = X
-;\3 = Y
-;\4 = map width
-overworldMapCoord: MACRO
-	ld \1, wOverworldMap + ((\2) + 3) + (((\3) + 3) * ((\4) + (3 * 2)))
+lda_coord: MACRO
+; x, y[, origin]
+	validate_coords \1, \2
+	IF _NARG >= 3
+		ld a, [(\2) * SCREEN_WIDTH + (\1) + \3]
+	ELSE
+		ld a, [(\2) * SCREEN_WIDTH + (\1) + wTileMap]
+	ENDC
 ENDM
--- a/macros/data.asm
+++ b/macros/data.asm
@@ -33,7 +33,7 @@
 	else
 		fail "\1 is not a TM or HM move"
 	ENDC
-	shift
+	SHIFT
 ENDR
 REPT 3 ; TM01-TM24 (24/24)
 	db _tms1 & $ff
--- a/macros/gfx.asm
+++ b/macros/gfx.asm
@@ -1,7 +1,7 @@
 RGB: MACRO
 REPT _NARG / 3
 	dw palred (\1) + palgreen (\2) + palblue (\3)
-	shift 3
+	SHIFT 3
 ENDR
 ENDM
 
--- a/macros/scripts/events.asm
+++ b/macros/scripts/events.asm
@@ -185,7 +185,7 @@
 	SetEvent \1
 	REPT _NARG - 1
 	SetEventReuseHL \2
-	shift
+	SHIFT
 	ENDR
 ENDM
 
@@ -237,7 +237,7 @@
 	ResetEvent \1
 	REPT _NARG - 1
 	ResetEventReuseHL \2
-	shift
+	SHIFT
 	ENDR
 ENDM
 
--- a/macros/scripts/text.asm
+++ b/macros/scripts/text.asm
@@ -200,7 +200,7 @@
 	db _NARG ; number of items
 REPT _NARG
 	db \1 ; item id
-	shift
+	SHIFT
 ENDR
 	db -1 ; end
 ENDM
--- a/scripts/BikeShop.asm
+++ b/scripts/BikeShop.asm
@@ -49,15 +49,15 @@
 	ld [wTopMenuItemX], a
 	ld hl, wd730
 	set 6, [hl]
-	coord hl, 0, 0
+	hlcoord 0, 0
 	ld b, $4
 	ld c, $f
 	call TextBoxBorder
 	call UpdateSprites
-	coord hl, 2, 2
+	hlcoord 2, 2
 	ld de, BikeShopMenuText
 	call PlaceString
-	coord hl, 8, 3
+	hlcoord 8, 3
 	ld de, BikeShopMenuPrice
 	call PlaceString
 	ld hl, BikeShopText_1d815
--- a/scripts/CeladonMartRoof.asm
+++ b/scripts/CeladonMartRoof.asm
@@ -64,7 +64,7 @@
 	dec l
 	ld b, l
 	ld c, 12
-	coord hl, 0, 0
+	hlcoord 0, 0
 	call TextBoxBorder
 	call UpdateSprites
 	call CeladonMartRoofScript_PrintDrinksInBag
@@ -194,7 +194,7 @@
 	push hl
 	ld [wd11e], a
 	call GetItemName
-	coord hl, 2, 2
+	hlcoord 2, 2
 	ldh a, [hItemCounter]
 	ld bc, SCREEN_WIDTH * 2
 	call AddNTimes
--- a/scripts/GameCorner.asm
+++ b/scripts/GameCorner.asm
@@ -474,32 +474,32 @@
 CeladonGameCornerScript_48f1e:
 	ld hl, wd730
 	set 6, [hl]
-	coord hl, 11, 0
+	hlcoord 11, 0
 	ld b, $5
 	ld c, $7
 	call TextBoxBorder
 	call UpdateSprites
-	coord hl, 12, 1
+	hlcoord 12, 1
 	ld b, 4
 	ld c, 7
 	call ClearScreenArea
-	coord hl, 12, 2
+	hlcoord 12, 2
 	ld de, GameCornerMoneyText
 	call PlaceString
-	coord hl, 12, 3
+	hlcoord 12, 3
 	ld de, GameCornerBlankText1
 	call PlaceString
-	coord hl, 12, 3
+	hlcoord 12, 3
 	ld de, wPlayerMoney
 	ld c, $a3
 	call PrintBCDNumber
-	coord hl, 12, 4
+	hlcoord 12, 4
 	ld de, GameCornerCoinText
 	call PlaceString
-	coord hl, 12, 5
+	hlcoord 12, 5
 	ld de, GameCornerBlankText2
 	call PlaceString
-	coord hl, 15, 5
+	hlcoord 15, 5
 	ld de, wPlayerCoins
 	ld c, $82
 	call PrintBCDNumber
--- a/scripts/VermilionDock.asm
+++ b/scripts/VermilionDock.asm
@@ -52,7 +52,7 @@
 	call DelayFrames
 	ld b, $9c
 	call CopyScreenTileBufferToVRAM
-	coord hl, 0, 10
+	hlcoord 0, 10
 	ld bc, SCREEN_WIDTH * 6
 	ld a, $14 ; water tile
 	call FillMemory
@@ -184,7 +184,7 @@
 	ld bc, (5 * BG_MAP_WIDTH) + SCREEN_WIDTH
 	ld a, $14 ; water tile
 	call FillMemory
-	ld hl, vBGMap0 + 10 * BG_MAP_WIDTH
+	hlbgcoord 0, 10
 	ld de, wVermilionDockTileMapBuffer
 	ld bc, (6 * BG_MAP_WIDTH) / 16
 	call CopyVideoData
@@ -194,7 +194,7 @@
 ; the blocks is unnecessary because the blocks the ship occupies are south of
 ; the player and won't be redrawn when the player automatically walks north and
 ; exits the map. This code could be removed without affecting anything.
-	overworldMapCoord hl, 5, 2, VERMILION_DOCK_WIDTH
+	hlowcoord 5, 2, VERMILION_DOCK_WIDTH
 	ld a, $d ; water block
 	ld [hli], a
 	ld [hli], a