shithub: pokered

Download patch

ref: 139a28ff9906d728a6820fe678a2a616eb309421
parent: 2718c36065e7eb201a149938bcdd51987c4e56b6
author: Rangi <remy.oukaour+rangi42@gmail.com>
date: Sat Jul 4 13:09:35 EDT 2020

Port pokecrystal's formatting of text commands and special characters

--- a/charmap.asm
+++ b/charmap.asm
@@ -1,265 +1,386 @@
-charmap "ガ", $05
-charmap "ギ", $06
-charmap "グ", $07
-charmap "ゲ", $08
-charmap "ゴ", $09
-charmap "ザ", $0A
-charmap "ジ", $0B
-charmap "ズ", $0C
-charmap "ゼ", $0D
-charmap "ゾ", $0E
-charmap "ダ", $0F
-charmap "ヂ", $10
-charmap "ヅ", $11
-charmap "デ", $12
-charmap "ド", $13
-charmap "バ", $19
-charmap "ビ", $1A
-charmap "ブ", $1B
-charmap "ボ", $1C
-charmap "が", $26
-charmap "ぎ", $27
-charmap "ぐ", $28
-charmap "げ", $29
-charmap "ご", $2A
-charmap "ざ", $2B
-charmap "じ", $2C
-charmap "ず", $2D
-charmap "ぜ", $2E
-charmap "ぞ", $2F
-charmap "だ", $30
-charmap "ぢ", $31
-charmap "づ", $32
-charmap "で", $33
-charmap "ど", $34
-charmap "ば", $3A
-charmap "び", $3B
-charmap "ぶ", $3C
-charmap "べ", $3D
-charmap "ぼ", $3E
-charmap "パ", $40
-charmap "ピ", $41
-charmap "プ", $42
-charmap "ポ", $43
-charmap "ぱ", $44
-charmap "ぴ", $45
-charmap "ぷ", $46
-charmap "ぺ", $47
-charmap "ぽ", $48
-charmap "ア", $80
-charmap "イ", $81
-charmap "ウ", $82
-charmap "エ", $83
-charmap "ォ", $84
-charmap "カ", $85
-charmap "キ", $86
-charmap "ク", $87
-charmap "ケ", $88
-charmap "コ", $89
-charmap "サ", $8A
-charmap "シ", $8B
-charmap "ス", $8C
-charmap "セ", $8D
-charmap "ソ", $8E
-charmap "タ", $8F
-charmap "チ", $90
-charmap "ツ", $91
-charmap "テ", $92
-charmap "ト", $93
-charmap "ナ", $94
-charmap "ニ", $95
-charmap "ヌ", $96
-charmap "ネ", $97
-charmap "ノ", $98
-charmap "ハ", $99
-charmap "ヒ", $9A
-charmap "フ", $9B
-charmap "ホ", $9C
-charmap "マ", $9D
-charmap "ミ", $9E
-charmap "ム", $9F
-charmap "メ", $A0
-charmap "モ", $A1
-charmap "ヤ", $A2
-charmap "ユ", $A3
-charmap "ヨ", $A4
-charmap "ラ", $A5
-charmap "ル", $A6
-charmap "レ", $A7
-charmap "ロ", $A8
-charmap "ワ", $A9
-charmap "ヲ", $AA
-charmap "ン", $AB
-charmap "ッ", $AC
-charmap "ャ", $AD
-charmap "ュ", $AE
-charmap "ョ", $AF
-charmap "ィ", $B0
-charmap "あ", $B1
-charmap "い", $B2
-charmap "う", $B3
-charmap "え", $B4
-charmap "お", $B5
-charmap "か", $B6
-charmap "き", $B7
-charmap "く", $B8
-charmap "け", $B9
-charmap "こ", $BA
-charmap "さ", $BB
-charmap "し", $BC
-charmap "す", $BD
-charmap "せ", $BE
-charmap "そ", $BF
-charmap "た", $C0
-charmap "ち", $C1
-charmap "つ", $C2
-charmap "て", $C3
-charmap "と", $C4
-charmap "な", $C5
-charmap "に", $C6
-charmap "ぬ", $C7
-charmap "ね", $C8
-charmap "の", $C9
-charmap "は", $CA
-charmap "ひ", $CB
-charmap "ふ", $CC
-charmap "へ", $CD
-charmap "ほ", $CE
-charmap "ま", $CF
-charmap "み", $D0
-charmap "む", $D1
-charmap "め", $D2
-charmap "も", $D3
-charmap "や", $D4
-charmap "ゆ", $D5
-charmap "よ", $D6
-charmap "ら", $D7
-charmap "り", $D8
-charmap "る", $D9
-charmap "れ", $DA
-charmap "ろ", $DB
-charmap "わ", $DC
-charmap "を", $DD
-charmap "ん", $DE
-charmap "っ", $DF
-charmap "ゃ", $E0
-charmap "ゅ", $E1
-charmap "ょ", $E2
-charmap "ー", $E3
+; $00-$17 are TX_* constants (see macros/scripts/text.asm)
+
+; Control characters (see home/text.asm)
+
+	charmap "<NULL>",    $00
+	charmap "<PAGE>",    $49
+	charmap "<PKMN>",    $4a ; "<PK><MN>"
+	charmap "<_CONT>",   $4b ; implements "<CONT>"
+	charmap "<SCROLL>",  $4c
+	charmap "<NEXT>",    $4e
+	charmap "<LINE>",    $4f
+	charmap "@",         $50 ; string terminator
+	charmap "<PARA>",    $51
+	charmap "<PLAYER>",  $52 ; wPlayerName
+	charmap "<RIVAL>",   $53 ; wRivalName
+	charmap "#",         $54 ; "POKé"
+	charmap "<CONT>",    $55
+	charmap "<……>",      $56 ; "……"
+	charmap "<DONE>",    $57
+	charmap "<PROMPT>",  $58
+	charmap "<TARGET>",  $59
+	charmap "<USER>",    $5a
+	charmap "<PC>",      $5b ; "PC"
+	charmap "<TM>",      $5c ; "TM"
+	charmap "<TRAINER>", $5d ; "TRAINER"
+	charmap "<ROCKET>",  $5e ; "ROCKET"
+	charmap "<DEXEND>",  $5f
+
+; Actual characters (from gfx/font/font_extra.png)
+
+	charmap "<BOLD_A>",  $60 ; unused
+	charmap "<BOLD_B>",  $61 ; unused
+	charmap "<BOLD_C>",  $62 ; unused
+	charmap "<BOLD_D>",  $63 ; unused
+	charmap "<BOLD_E>",  $64 ; unused
+	charmap "<BOLD_F>",  $65 ; unused
+	charmap "<BOLD_G>",  $66 ; unused
+	charmap "<BOLD_H>",  $67 ; unused
+	charmap "<BOLD_I>",  $68 ; unused
+	charmap "<BOLD_V>",  $69
+	charmap "<BOLD_S>",  $6a
+	charmap "<BOLD_L>",  $6b ; unused
+	charmap "<BOLD_M>",  $6c ; unused
+	charmap "<COLON>",   $6d ; colon with tinier dots than ":"
+	charmap "ぃ",         $6e ; hiragana small i, unused
+	charmap "ぅ",         $6f ; hiragana small u, unused
+	charmap "‘",         $70 ; opening single quote
+	charmap "’",         $71 ; closing single quote
+	charmap "“",         $72 ; opening quote
+	charmap "”",         $73 ; closing quote
+	charmap "·",         $74 ; middle dot, unused
+	charmap "…",         $75 ; ellipsis
+	charmap "ぁ",         $76 ; hiragana small a, unused
+	charmap "ぇ",         $77 ; hiragana small e, unused
+	charmap "ぉ",         $78 ; hiragana small o, unused
+
+	charmap "┌",         $79
+	charmap "─",         $7a
+	charmap "┐",         $7b
+	charmap "│",         $7c
+	charmap "└",         $7d
+	charmap "┘",         $7e
+	charmap " ",         $7f
+
+; Actual characters (from gfx/font/font_battle_extra.png)
+
+	charmap "<LV>",      $6e
+
+	charmap "<to>",      $70 ; narrow "to"
+
+	charmap "『",         $72 ; Japanese opening quote, unused
+	charmap "<ID>",      $73
+	charmap "№",         $74
+
+; Actual characters (from other graphics files)
+
+	; needed for ShowPokedexDataInternal (see engine/menus/pokedex.asm)
+	charmap "′",         $60 ; gfx/pokedex/pokedex.png
+	charmap "″",         $61 ; gfx/pokedex/pokedex.png
+
+	; needed for StatusScreen (see engine/pokemon/status_screen.asm)
+	charmap "<BOLD_P>",  $72 ; gfx/font/P.1bpp
+
+	; needed for LoadTownMap_Fly (see engine/items/town_map.asm)
+	charmap "▲",         $ed ; gfx/town_map/up_arrow.1bpp
+
+	; needed for PrintAlphabet (see engine/menus/naming_screen.asm)
+	charmap "<ED>",      $f0 ; gfx/font/ED.1bpp
+
+; Actual characters (from gfx/font/font.png)
+
+	charmap "A",         $80
+	charmap "B",         $81
+	charmap "C",         $82
+	charmap "D",         $83
+	charmap "E",         $84
+	charmap "F",         $85
+	charmap "G",         $86
+	charmap "H",         $87
+	charmap "I",         $88
+	charmap "J",         $89
+	charmap "K",         $8a
+	charmap "L",         $8b
+	charmap "M",         $8c
+	charmap "N",         $8d
+	charmap "O",         $8e
+	charmap "P",         $8f
+	charmap "Q",         $90
+	charmap "R",         $91
+	charmap "S",         $92
+	charmap "T",         $93
+	charmap "U",         $94
+	charmap "V",         $95
+	charmap "W",         $96
+	charmap "X",         $97
+	charmap "Y",         $98
+	charmap "Z",         $99
+
+	charmap "(",         $9a
+	charmap ")",         $9b
+	charmap ":",         $9c
+	charmap ";",         $9d
+	charmap "[",         $9e
+	charmap "]",         $9f
+
+	charmap "a",         $a0
+	charmap "b",         $a1
+	charmap "c",         $a2
+	charmap "d",         $a3
+	charmap "e",         $a4
+	charmap "f",         $a5
+	charmap "g",         $a6
+	charmap "h",         $a7
+	charmap "i",         $a8
+	charmap "j",         $a9
+	charmap "k",         $aa
+	charmap "l",         $ab
+	charmap "m",         $ac
+	charmap "n",         $ad
+	charmap "o",         $ae
+	charmap "p",         $af
+	charmap "q",         $b0
+	charmap "r",         $b1
+	charmap "s",         $b2
+	charmap "t",         $b3
+	charmap "u",         $b4
+	charmap "v",         $b5
+	charmap "w",         $b6
+	charmap "x",         $b7
+	charmap "y",         $b8
+	charmap "z",         $b9
+
+	charmap "é",         $ba
+	charmap "'d",        $bb
+	charmap "'l",        $bc
+	charmap "'s",        $bd
+	charmap "'t",        $be
+	charmap "'v",        $bf
+
+	charmap "'",         $e0
+	charmap "<PK>",      $e1
+	charmap "<MN>",      $e2
+	charmap "-",         $e3
+
+	charmap "'r",        $e4
+	charmap "'m",        $e5
+
+	charmap "?",         $e6
+	charmap "!",         $e7
+	charmap ".",         $e8
+
+	charmap "ァ",         $e9 ; katakana small a, unused
+	charmap "ゥ",         $ea ; katakana small u, unused
+	charmap "ェ",         $eb ; katakana small e, unused
+
+	charmap "▷",         $ec
+	charmap "▶",         $ed
+	charmap "▼",         $ee
+	charmap "♂",         $ef
+	charmap "¥",         $f0
+	charmap "×",         $f1
+	charmap "<DOT>",     $f2 ; decimal point; same as "." in English
+	charmap "/",         $f3
+	charmap ",",         $f4
+	charmap "♀",         $f5
+
+	charmap "0",         $f6
+	charmap "1",         $f7
+	charmap "2",         $f8
+	charmap "3",         $f9
+	charmap "4",         $fa
+	charmap "5",         $fb
+	charmap "6",         $fc
+	charmap "7",         $fd
+	charmap "8",         $fe
+	charmap "9",         $ff
+
+
+; Japanese kana, for those bits of text that were not translated to English
+
+	charmap "ガ", $05
+	charmap "ギ", $06
+	charmap "グ", $07
+	charmap "ゲ", $08
+	charmap "ゴ", $09
+	charmap "ザ", $0a
+	charmap "ジ", $0b
+	charmap "ズ", $0c
+	charmap "ゼ", $0d
+	charmap "ゾ", $0e
+	charmap "ダ", $0f
+	charmap "ヂ", $10
+	charmap "ヅ", $11
+	charmap "デ", $12
+	charmap "ド", $13
+
+	charmap "バ", $19
+	charmap "ビ", $1a
+	charmap "ブ", $1b
+	charmap "ボ", $1c
+
+	charmap "が", $26
+	charmap "ぎ", $27
+	charmap "ぐ", $28
+	charmap "げ", $29
+	charmap "ご", $2a
+	charmap "ざ", $2b
+	charmap "じ", $2c
+	charmap "ず", $2d
+	charmap "ぜ", $2e
+	charmap "ぞ", $2f
+	charmap "だ", $30
+	charmap "ぢ", $31
+	charmap "づ", $32
+	charmap "で", $33
+	charmap "ど", $34
 
-charmap "<pkmn>", $4A ; PkMn
-charmap "@", $50
-charmap "<PLAYER>", $52
-charmap "<RIVAL>", $53
-charmap "#", $54
-;charmap "POKé", $54
-charmap "<TARGET>", $59
-charmap "<USER>", $5A
-charmap "′", $71
-charmap "″", $73
-charmap "№", $74
-charmap "…", $75
+	charmap "ば", $3a
+	charmap "び", $3b
+	charmap "ぶ", $3c
+	charmap "べ", $3d
+	charmap "ぼ", $3e
 
-charmap "┌", $79
-charmap "─", $7A
-charmap "┐", $7B
-charmap "│", $7C
-charmap "└", $7D
-charmap "┘", $7E
+	charmap "パ", $40
+	charmap "ピ", $41
+	charmap "プ", $42
+	charmap "ポ", $43
+	charmap "ぱ", $44
+	charmap "ぴ", $45
+	charmap "ぷ", $46
+	charmap "ぺ", $47
+	charmap "ぽ", $48
 
-charmap " ", $7F
-charmap "A", $80
-charmap "B", $81
-charmap "C", $82
-charmap "D", $83
-charmap "E", $84
-charmap "F", $85
-charmap "G", $86
-charmap "H", $87
-charmap "I", $88
-charmap "J", $89
-charmap "K", $8A
-charmap "L", $8B
-charmap "M", $8C
-charmap "N", $8D
-charmap "O", $8E
-charmap "P", $8F
-charmap "Q", $90
-charmap "R", $91
-charmap "S", $92
-charmap "T", $93
-charmap "U", $94
-charmap "V", $95
-charmap "W", $96
-charmap "X", $97
-charmap "Y", $98
-charmap "Z", $99
-charmap "(", $9A
-charmap ")", $9B
-charmap ":", $9C
-charmap ";", $9D
-charmap "[", $9E
-charmap "]", $9F
-charmap "a", $A0
-charmap "b", $A1
-charmap "c", $A2
-charmap "d", $A3
-charmap "e", $A4
-charmap "f", $A5
-charmap "g", $A6
-charmap "h", $A7
-charmap "i", $A8
-charmap "j", $A9
-charmap "k", $AA
-charmap "l", $AB
-charmap "m", $AC
-charmap "n", $AD
-charmap "o", $AE
-charmap "p", $AF
-charmap "q", $B0
-charmap "r", $B1
-charmap "s", $B2
-charmap "t", $B3
-charmap "u", $B4
-charmap "v", $B5
-charmap "w", $B6
-charmap "x", $B7
-charmap "y", $B8
-charmap "z", $B9
-charmap "é", $BA
-charmap "'d", $BB
-charmap "'l", $BC
-charmap "'s", $BD
-charmap "'t", $BE
-charmap "'v", $BF
+	charmap "「", $70
+	charmap "」", $71
+	charmap "』", $73
+	charmap "⋯", $75
 
-charmap "'", $E0
+	charmap " ", $7f
 
-charmap "-", $E3
-charmap "'r", $E4
-charmap "'m", $E5
-charmap "?", $E6
-charmap "!", $E7
-charmap ".", $E8
+	charmap "ア", $80
+	charmap "イ", $81
+	charmap "ウ", $82
+	charmap "エ", $83
+	charmap "ォ", $84
+	charmap "カ", $85
+	charmap "キ", $86
+	charmap "ク", $87
+	charmap "ケ", $88
+	charmap "コ", $89
+	charmap "サ", $8a
+	charmap "シ", $8b
+	charmap "ス", $8c
+	charmap "セ", $8d
+	charmap "ソ", $8e
+	charmap "タ", $8f
+	charmap "チ", $90
+	charmap "ツ", $91
+	charmap "テ", $92
+	charmap "ト", $93
+	charmap "ナ", $94
+	charmap "ニ", $95
+	charmap "ヌ", $96
+	charmap "ネ", $97
+	charmap "ノ", $98
+	charmap "ハ", $99
+	charmap "ヒ", $9a
+	charmap "フ", $9b
+	charmap "ホ", $9c
+	charmap "マ", $9d
+	charmap "ミ", $9e
+	charmap "ム", $9f
+	charmap "メ", $a0
+	charmap "モ", $a1
+	charmap "ヤ", $a2
+	charmap "ユ", $a3
+	charmap "ヨ", $a4
+	charmap "ラ", $a5
+	charmap "ル", $a6
+	charmap "レ", $a7
+	charmap "ロ", $a8
+	charmap "ワ", $a9
+	charmap "ヲ", $aa
+	charmap "ン", $ab
+	charmap "ッ", $ac
+	charmap "ャ", $ad
+	charmap "ュ", $ae
+	charmap "ョ", $af
+	charmap "ィ", $b0
 
-charmap "▷", $EC
-charmap "▶", $ED
-charmap "▲", $ED
-charmap "▼", $EE
-charmap "♂", $EF
-charmap "¥", $F0
-charmap "×", $F1
-charmap "⠄", $F2
-charmap "/", $F3
-charmap ",", $F4
-charmap "♀", $F5
-charmap "0", $F6
-charmap "1", $F7
-charmap "2", $F8
-charmap "3", $F9
-charmap "4", $FA
-charmap "5", $FB
-charmap "6", $FC
-charmap "7", $FD
-charmap "8", $FE
-charmap "9", $FF
+	charmap "あ", $b1
+	charmap "い", $b2
+	charmap "う", $b3
+	charmap "え", $b4
+	charmap "お", $b5
+	charmap "か", $b6
+	charmap "き", $b7
+	charmap "く", $b8
+	charmap "け", $b9
+	charmap "こ", $ba
+	charmap "さ", $bb
+	charmap "し", $bc
+	charmap "す", $bd
+	charmap "せ", $be
+	charmap "そ", $bf
+	charmap "た", $c0
+	charmap "ち", $c1
+	charmap "つ", $c2
+	charmap "て", $c3
+	charmap "と", $c4
+	charmap "な", $c5
+	charmap "に", $c6
+	charmap "ぬ", $c7
+	charmap "ね", $c8
+	charmap "の", $c9
+	charmap "は", $ca
+	charmap "ひ", $cb
+	charmap "ふ", $cc
+	charmap "へ", $cd
+	charmap "ほ", $ce
+	charmap "ま", $cf
+	charmap "み", $d0
+	charmap "む", $d1
+	charmap "め", $d2
+	charmap "も", $d3
+	charmap "や", $d4
+	charmap "ゆ", $d5
+	charmap "よ", $d6
+	charmap "ら", $d7
+	charmap "り", $d8
+	charmap "る", $d9
+	charmap "れ", $da
+	charmap "ろ", $db
+	charmap "わ", $dc
+	charmap "を", $dd
+	charmap "ん", $de
+	charmap "っ", $df
+	charmap "ゃ", $e0
+	charmap "ゅ", $e1
+	charmap "ょ", $e2
+
+	charmap "ー", $e3
+	charmap "゚", $e4
+	charmap "゙", $e5
+
+	charmap "?", $e6
+	charmap "!", $e7
+	charmap "。", $e8
+
+	charmap "円", $f0
+
+	charmap ".", $f2
+	charmap "/", $f3
+
+	charmap "ォ", $f4
+
+	charmap "0", $f6
+	charmap "1", $f7
+	charmap "2", $f8
+	charmap "3", $f9
+	charmap "4", $fa
+	charmap "5", $fb
+	charmap "6", $fc
+	charmap "7", $fd
+	charmap "8", $fe
+	charmap "9", $ff
--- a/constants/text_constants.asm
+++ b/constants/text_constants.asm
@@ -1,12 +1,6 @@
 NAME_LENGTH EQU 11
 ITEM_NAME_LENGTH EQU 13
 
-; special text IDs
-TEXT_MON_FAINTED      EQU $d0
-TEXT_BLACKED_OUT      EQU $d1
-TEXT_REPEL_WORE_OFF   EQU $d2
-TEXT_SAFARI_GAME_OVER EQU $d3
-
 ; PrintNumber
 BIT_MONEY_SIGN     EQU 5
 BIT_LEFT_ALIGN     EQU 6
@@ -15,3 +9,12 @@
 MONEY_SIGN EQU     (1 << BIT_MONEY_SIGN)
 LEFT_ALIGN EQU     (1 << BIT_LEFT_ALIGN)
 LEADING_ZEROES EQU (1 << BIT_LEADING_ZEROES)
+
+; special text IDs (see home/text_script.asm)
+	const_def $d0
+	const TEXT_MON_FAINTED      ; $d0
+	const TEXT_BLACKED_OUT      ; $d1
+	const TEXT_REPEL_WORE_OFF   ; $d2
+	const TEXT_SAFARI_GAME_OVER ; $d3
+
+TEXT_START_MENU EQU $00
--- a/data/items/marts.asm
+++ b/data/items/marts.asm
@@ -3,62 +3,62 @@
 
 ; Viridian
 ViridianCashierText::
-	TX_MART POKE_BALL, ANTIDOTE, PARLYZ_HEAL, BURN_HEAL
+	script_mart POKE_BALL, ANTIDOTE, PARLYZ_HEAL, BURN_HEAL
 
 ; Pewter
 PewterCashierText::
-	TX_MART POKE_BALL, POTION, ESCAPE_ROPE, ANTIDOTE, BURN_HEAL, AWAKENING, PARLYZ_HEAL
+	script_mart POKE_BALL, POTION, ESCAPE_ROPE, ANTIDOTE, BURN_HEAL, AWAKENING, PARLYZ_HEAL
 
 ; Cerulean
 CeruleanCashierText::
-	TX_MART POKE_BALL, POTION, REPEL, ANTIDOTE, BURN_HEAL, AWAKENING, PARLYZ_HEAL
+	script_mart POKE_BALL, POTION, REPEL, ANTIDOTE, BURN_HEAL, AWAKENING, PARLYZ_HEAL
 
 ; Bike shop
-	TX_MART BICYCLE
+	script_mart BICYCLE
 
 ; Vermilion
 VermilionCashierText::
-	TX_MART POKE_BALL, SUPER_POTION, ICE_HEAL, AWAKENING, PARLYZ_HEAL, REPEL
+	script_mart POKE_BALL, SUPER_POTION, ICE_HEAL, AWAKENING, PARLYZ_HEAL, REPEL
 
 ; Lavender
 LavenderCashierText::
-	TX_MART GREAT_BALL, SUPER_POTION, REVIVE, ESCAPE_ROPE, SUPER_REPEL, ANTIDOTE, BURN_HEAL, ICE_HEAL, PARLYZ_HEAL
+	script_mart GREAT_BALL, SUPER_POTION, REVIVE, ESCAPE_ROPE, SUPER_REPEL, ANTIDOTE, BURN_HEAL, ICE_HEAL, PARLYZ_HEAL
 
 ; Celadon Dept. Store 2F (1)
 CeladonMart2Clerk1Text::
-	TX_MART GREAT_BALL, SUPER_POTION, REVIVE, SUPER_REPEL, ANTIDOTE, BURN_HEAL, ICE_HEAL, AWAKENING, PARLYZ_HEAL
+	script_mart GREAT_BALL, SUPER_POTION, REVIVE, SUPER_REPEL, ANTIDOTE, BURN_HEAL, ICE_HEAL, AWAKENING, PARLYZ_HEAL
 
 ; Celadon Dept. Store 2F (2)
 CeladonMart2Clerk2Text::
-	TX_MART TM_32, TM_33, TM_02, TM_07, TM_37, TM_01, TM_05, TM_09, TM_17
+	script_mart TM_32, TM_33, TM_02, TM_07, TM_37, TM_01, TM_05, TM_09, TM_17
 
 ; Celadon Dept. Store 4F
 CeladonMart4ClerkText::
-	TX_MART POKE_DOLL, FIRE_STONE, THUNDER_STONE, WATER_STONE, LEAF_STONE
+	script_mart POKE_DOLL, FIRE_STONE, THUNDER_STONE, WATER_STONE, LEAF_STONE
 
 ; Celadon Dept. Store 5F (1)
 CeladonMart5Clerk1Text::
-	TX_MART X_ACCURACY, GUARD_SPEC, DIRE_HIT, X_ATTACK, X_DEFEND, X_SPEED, X_SPECIAL
+	script_mart X_ACCURACY, GUARD_SPEC, DIRE_HIT, X_ATTACK, X_DEFEND, X_SPEED, X_SPECIAL
 
 ; Celadon Dept. Store 5F (2)
 CeladonMart5Clerk2Text::
-	TX_MART HP_UP, PROTEIN, IRON, CARBOS, CALCIUM
+	script_mart HP_UP, PROTEIN, IRON, CARBOS, CALCIUM
 
 ; Fuchsia
 FuchsiaCashierText::
-	TX_MART ULTRA_BALL, GREAT_BALL, SUPER_POTION, REVIVE, FULL_HEAL, SUPER_REPEL
+	script_mart ULTRA_BALL, GREAT_BALL, SUPER_POTION, REVIVE, FULL_HEAL, SUPER_REPEL
 
 ; unused?
-	TX_MART GREAT_BALL, HYPER_POTION, SUPER_POTION, FULL_HEAL, REVIVE
+	script_mart GREAT_BALL, HYPER_POTION, SUPER_POTION, FULL_HEAL, REVIVE
 
 ; Cinnabar
 CinnabarCashierText::
-	TX_MART ULTRA_BALL, GREAT_BALL, HYPER_POTION, MAX_REPEL, ESCAPE_ROPE, FULL_HEAL, REVIVE
+	script_mart ULTRA_BALL, GREAT_BALL, HYPER_POTION, MAX_REPEL, ESCAPE_ROPE, FULL_HEAL, REVIVE
 
 ; Saffron
 SaffronCashierText::
-	TX_MART GREAT_BALL, HYPER_POTION, MAX_REPEL, ESCAPE_ROPE, FULL_HEAL, REVIVE
+	script_mart GREAT_BALL, HYPER_POTION, MAX_REPEL, ESCAPE_ROPE, FULL_HEAL, REVIVE
 
 ; Indigo
 IndigoCashierText::
-	TX_MART ULTRA_BALL, GREAT_BALL, FULL_RESTORE, MAX_POTION, FULL_HEAL, REVIVE, MAX_REPEL
+	script_mart ULTRA_BALL, GREAT_BALL, FULL_RESTORE, MAX_POTION, FULL_HEAL, REVIVE, MAX_REPEL
--- a/data/maps/names.asm
+++ b/data/maps/names.asm
@@ -98,7 +98,7 @@
 SilphCoName:
 	db "SILPH CO.@"
 PokemonMansionName:
-	db "<pkmn> MANSION@"
+	db "<PKMN> MANSION@"
 SafariZoneName:
 	db "SAFARI ZONE@"
 CeruleanCaveName:
--- a/data/pokemon/dex_entries.asm
+++ b/data/pokemon/dex_entries.asm
@@ -199,1061 +199,1061 @@
 	db "DRILL@"
 	db 6,3
 	dw 2650
-	TX_FAR _RhydonDexEntry
-	db "@"
+	text_far _RhydonDexEntry
+	text_end
 
 KangaskhanDexEntry:
 	db "PARENT@"
 	db 7,3
 	dw 1760
-	TX_FAR _KangaskhanDexEntry
-	db "@"
+	text_far _KangaskhanDexEntry
+	text_end
 
 NidoranMDexEntry:
 	db "POISON PIN@"
 	db 1,8
 	dw 200
-	TX_FAR _NidoranMDexEntry
-	db "@"
+	text_far _NidoranMDexEntry
+	text_end
 
 ClefairyDexEntry:
 	db "FAIRY@"
 	db 2,0
 	dw 170
-	TX_FAR _ClefairyDexEntry
-	db "@"
+	text_far _ClefairyDexEntry
+	text_end
 
 SpearowDexEntry:
 	db "TINY BIRD@"
 	db 1,0
 	dw 40
-	TX_FAR _SpearowDexEntry
-	db "@"
+	text_far _SpearowDexEntry
+	text_end
 
 VoltorbDexEntry:
 	db "BALL@"
 	db 1,8
 	dw 230
-	TX_FAR _VoltorbDexEntry
-	db "@"
+	text_far _VoltorbDexEntry
+	text_end
 
 NidokingDexEntry:
 	db "DRILL@"
 	db 4,7
 	dw 1370
-	TX_FAR _NidokingDexEntry
-	db "@"
+	text_far _NidokingDexEntry
+	text_end
 
 SlowbroDexEntry:
 	db "HERMITCRAB@"
 	db 5,3
 	dw 1730
-	TX_FAR _SlowbroDexEntry
-	db "@"
+	text_far _SlowbroDexEntry
+	text_end
 
 IvysaurDexEntry:
 	db "SEED@"
 	db 3,3
 	dw 290
-	TX_FAR _IvysaurDexEntry
-	db "@"
+	text_far _IvysaurDexEntry
+	text_end
 
 ExeggutorDexEntry:
 	db "COCONUT@"
 	db 6,7
 	dw 2650
-	TX_FAR _ExeggutorDexEntry
-	db "@"
+	text_far _ExeggutorDexEntry
+	text_end
 
 LickitungDexEntry:
 	db "LICKING@"
 	db 3,11
 	dw 1440
-	TX_FAR _LickitungDexEntry
-	db "@"
+	text_far _LickitungDexEntry
+	text_end
 
 ExeggcuteDexEntry:
 	db "EGG@"
 	db 1,4
 	dw 60
-	TX_FAR _ExeggcuteDexEntry
-	db "@"
+	text_far _ExeggcuteDexEntry
+	text_end
 
 GrimerDexEntry:
 	db "SLUDGE@"
 	db 2,11
 	dw 660
-	TX_FAR _GrimerDexEntry
-	db "@"
+	text_far _GrimerDexEntry
+	text_end
 
 GengarDexEntry:
 	db "SHADOW@"
 	db 4,11
 	dw 890
-	TX_FAR _GengarDexEntry
-	db "@"
+	text_far _GengarDexEntry
+	text_end
 
 NidoranFDexEntry:
 	db "POISON PIN@"
 	db 1,4
 	dw 150
-	TX_FAR _NidoranFDexEntry
-	db "@"
+	text_far _NidoranFDexEntry
+	text_end
 
 NidoqueenDexEntry:
 	db "DRILL@"
 	db 4,3
 	dw 1320
-	TX_FAR _NidoqueenDexEntry
-	db "@"
+	text_far _NidoqueenDexEntry
+	text_end
 
 CuboneDexEntry:
 	db "LONELY@"
 	db 1,4
 	dw 140
-	TX_FAR _CuboneDexEntry
-	db "@"
+	text_far _CuboneDexEntry
+	text_end
 
 RhyhornDexEntry:
 	db "SPIKES@"
 	db 3,3
 	dw 2540
-	TX_FAR _RhyhornDexEntry
-	db "@"
+	text_far _RhyhornDexEntry
+	text_end
 
 LaprasDexEntry:
 	db "TRANSPORT@"
 	db 8,2
 	dw 4850
-	TX_FAR _LaprasDexEntry
-	db "@"
+	text_far _LaprasDexEntry
+	text_end
 
 ArcanineDexEntry:
 	db "LEGENDARY@"
 	db 6,3
 	dw 3420
-	TX_FAR _ArcanineDexEntry
-	db "@"
+	text_far _ArcanineDexEntry
+	text_end
 
 MewDexEntry:
 	db "NEW SPECIE@"
 	db 1,4
 	dw 90
-	TX_FAR _MewDexEntry
-	db "@"
+	text_far _MewDexEntry
+	text_end
 
 GyaradosDexEntry:
 	db "ATROCIOUS@"
 	db 21,4
 	dw 5180
-	TX_FAR _GyaradosDexEntry
-	db "@"
+	text_far _GyaradosDexEntry
+	text_end
 
 ShellderDexEntry:
 	db "BIVALVE@"
 	db 1,0
 	dw 90
-	TX_FAR _ShellderDexEntry
-	db "@"
+	text_far _ShellderDexEntry
+	text_end
 
 TentacoolDexEntry:
 	db "JELLYFISH@"
 	db 2,11
 	dw 1000
-	TX_FAR _TentacoolDexEntry
-	db "@"
+	text_far _TentacoolDexEntry
+	text_end
 
 GastlyDexEntry:
 	db "GAS@"
 	db 4,3
 	dw 2
-	TX_FAR _GastlyDexEntry
-	db "@"
+	text_far _GastlyDexEntry
+	text_end
 
 ScytherDexEntry:
 	db "MANTIS@"
 	db 4,11
 	dw 1230
-	TX_FAR _ScytherDexEntry
-	db "@"
+	text_far _ScytherDexEntry
+	text_end
 
 StaryuDexEntry:
 	db "STARSHAPE@"
 	db 2,7
 	dw 760
-	TX_FAR _StaryuDexEntry
-	db "@"
+	text_far _StaryuDexEntry
+	text_end
 
 BlastoiseDexEntry:
 	db "SHELLFISH@"
 	db 5,3
 	dw 1890
-	TX_FAR _BlastoiseDexEntry
-	db "@"
+	text_far _BlastoiseDexEntry
+	text_end
 
 PinsirDexEntry:
 	db "STAGBEETLE@"
 	db 4,11
 	dw 1210
-	TX_FAR _PinsirDexEntry
-	db "@"
+	text_far _PinsirDexEntry
+	text_end
 
 TangelaDexEntry:
 	db "VINE@"
 	db 3,3
 	dw 770
-	TX_FAR _TangelaDexEntry
-	db "@"
+	text_far _TangelaDexEntry
+	text_end
 
 GrowlitheDexEntry:
 	db "PUPPY@"
 	db 2,4
 	dw 420
-	TX_FAR _GrowlitheDexEntry
-	db "@"
+	text_far _GrowlitheDexEntry
+	text_end
 
 OnixDexEntry:
 	db "ROCK SNAKE@"
 	db 28,10
 	dw 4630
-	TX_FAR _OnixDexEntry
-	db "@"
+	text_far _OnixDexEntry
+	text_end
 
 FearowDexEntry:
 	db "BEAK@"
 	db 3,11
 	dw 840
-	TX_FAR _FearowDexEntry
-	db "@"
+	text_far _FearowDexEntry
+	text_end
 
 PidgeyDexEntry:
 	db "TINY BIRD@"
 	db 1,0
 	dw 40
-	TX_FAR _PidgeyDexEntry
-	db "@"
+	text_far _PidgeyDexEntry
+	text_end
 
 SlowpokeDexEntry:
 	db "DOPEY@"
 	db 3,11
 	dw 790
-	TX_FAR _SlowpokeDexEntry
-	db "@"
+	text_far _SlowpokeDexEntry
+	text_end
 
 KadabraDexEntry:
 	db "PSI@"
 	db 4,3
 	dw 1250
-	TX_FAR _KadabraDexEntry
-	db "@"
+	text_far _KadabraDexEntry
+	text_end
 
 GravelerDexEntry:
 	db "ROCK@"
 	db 3,3
 	dw 2320
-	TX_FAR _GravelerDexEntry
-	db "@"
+	text_far _GravelerDexEntry
+	text_end
 
 ChanseyDexEntry:
 	db "EGG@"
 	db 3,7
 	dw 760
-	TX_FAR _ChanseyDexEntry
-	db "@"
+	text_far _ChanseyDexEntry
+	text_end
 
 MachokeDexEntry:
 	db "SUPERPOWER@"
 	db 4,11
 	dw 1550
-	TX_FAR _MachokeDexEntry
-	db "@"
+	text_far _MachokeDexEntry
+	text_end
 
 MrMimeDexEntry:
 	db "BARRIER@"
 	db 4,3
 	dw 1200
-	TX_FAR _MrMimeDexEntry
-	db "@"
+	text_far _MrMimeDexEntry
+	text_end
 
 HitmonleeDexEntry:
 	db "KICKING@"
 	db 4,11
 	dw 1100
-	TX_FAR _HitmonleeDexEntry
-	db "@"
+	text_far _HitmonleeDexEntry
+	text_end
 
 HitmonchanDexEntry:
 	db "PUNCHING@"
 	db 4,7
 	dw 1110
-	TX_FAR _HitmonchanDexEntry
-	db "@"
+	text_far _HitmonchanDexEntry
+	text_end
 
 ArbokDexEntry:
 	db "COBRA@"
 	db 11,6
 	dw 1430
-	TX_FAR _ArbokDexEntry
-	db "@"
+	text_far _ArbokDexEntry
+	text_end
 
 ParasectDexEntry:
 	db "MUSHROOM@"
 	db 3,3
 	dw 650
-	TX_FAR _ParasectDexEntry
-	db "@"
+	text_far _ParasectDexEntry
+	text_end
 
 PsyduckDexEntry:
 	db "DUCK@"
 	db 2,7
 	dw 430
-	TX_FAR _PsyduckDexEntry
-	db "@"
+	text_far _PsyduckDexEntry
+	text_end
 
 DrowzeeDexEntry:
 	db "HYPNOSIS@"
 	db 3,3
 	dw 710
-	TX_FAR _DrowzeeDexEntry
-	db "@"
+	text_far _DrowzeeDexEntry
+	text_end
 
 GolemDexEntry:
 	db "MEGATON@"
 	db 4,7
 	dw 6620
-	TX_FAR _GolemDexEntry
-	db "@"
+	text_far _GolemDexEntry
+	text_end
 
 MagmarDexEntry:
 	db "SPITFIRE@"
 	db 4,3
 	dw 980
-	TX_FAR _MagmarDexEntry
-	db "@"
+	text_far _MagmarDexEntry
+	text_end
 
 ElectabuzzDexEntry:
 	db "ELECTRIC@"
 	db 3,7
 	dw 660
-	TX_FAR _ElectabuzzDexEntry
-	db "@"
+	text_far _ElectabuzzDexEntry
+	text_end
 
 MagnetonDexEntry:
 	db "MAGNET@"
 	db 3,3
 	dw 1320
-	TX_FAR _MagnetonDexEntry
-	db "@"
+	text_far _MagnetonDexEntry
+	text_end
 
 KoffingDexEntry:
 	db "POISON GAS@"
 	db 2,0
 	dw 20
-	TX_FAR _KoffingDexEntry
-	db "@"
+	text_far _KoffingDexEntry
+	text_end
 
 MankeyDexEntry:
 	db "PIG MONKEY@"
 	db 1,8
 	dw 620
-	TX_FAR _MankeyDexEntry
-	db "@"
+	text_far _MankeyDexEntry
+	text_end
 
 SeelDexEntry:
 	db "SEA LION@"
 	db 3,7
 	dw 1980
-	TX_FAR _SeelDexEntry
-	db "@"
+	text_far _SeelDexEntry
+	text_end
 
 DiglettDexEntry:
 	db "MOLE@"
 	db 0,8
 	dw 20
-	TX_FAR _DiglettDexEntry
-	db "@"
+	text_far _DiglettDexEntry
+	text_end
 
 TaurosDexEntry:
 	db "WILD BULL@"
 	db 4,7
 	dw 1950
-	TX_FAR _TaurosDexEntry
-	db "@"
+	text_far _TaurosDexEntry
+	text_end
 
 FarfetchdDexEntry:
 	db "WILD DUCK@"
 	db 2,7
 	dw 330
-	TX_FAR _FarfetchdDexEntry
-	db "@"
+	text_far _FarfetchdDexEntry
+	text_end
 
 VenonatDexEntry:
 	db "INSECT@"
 	db 3,3
 	dw 660
-	TX_FAR _VenonatDexEntry
-	db "@"
+	text_far _VenonatDexEntry
+	text_end
 
 DragoniteDexEntry:
 	db "DRAGON@"
 	db 7,3
 	dw 4630
-	TX_FAR _DragoniteDexEntry
-	db "@"
+	text_far _DragoniteDexEntry
+	text_end
 
 DoduoDexEntry:
 	db "TWIN BIRD@"
 	db 4,7
 	dw 860
-	TX_FAR _DoduoDexEntry
-	db "@"
+	text_far _DoduoDexEntry
+	text_end
 
 PoliwagDexEntry:
 	db "TADPOLE@"
 	db 2,0
 	dw 270
-	TX_FAR _PoliwagDexEntry
-	db "@"
+	text_far _PoliwagDexEntry
+	text_end
 
 JynxDexEntry:
 	db "HUMANSHAPE@"
 	db 4,7
 	dw 900
-	TX_FAR _JynxDexEntry
-	db "@"
+	text_far _JynxDexEntry
+	text_end
 
 MoltresDexEntry:
 	db "FLAME@"
 	db 6,7
 	dw 1320
-	TX_FAR _MoltresDexEntry
-	db "@"
+	text_far _MoltresDexEntry
+	text_end
 
 ArticunoDexEntry:
 	db "FREEZE@"
 	db 5,7
 	dw 1220
-	TX_FAR _ArticunoDexEntry
-	db "@"
+	text_far _ArticunoDexEntry
+	text_end
 
 ZapdosDexEntry:
 	db "ELECTRIC@"
 	db 5,3
 	dw 1160
-	TX_FAR _ZapdosDexEntry
-	db "@"
+	text_far _ZapdosDexEntry
+	text_end
 
 DittoDexEntry:
 	db "TRANSFORM@"
 	db 1,0
 	dw 90
-	TX_FAR _DittoDexEntry
-	db "@"
+	text_far _DittoDexEntry
+	text_end
 
 MeowthDexEntry:
 	db "SCRATCHCAT@"
 	db 1,4
 	dw 90
-	TX_FAR _MeowthDexEntry
-	db "@"
+	text_far _MeowthDexEntry
+	text_end
 
 KrabbyDexEntry:
 	db "RIVER CRAB@"
 	db 1,4
 	dw 140
-	TX_FAR _KrabbyDexEntry
-	db "@"
+	text_far _KrabbyDexEntry
+	text_end
 
 VulpixDexEntry:
 	db "FOX@"
 	db 2,0
 	dw 220
-	TX_FAR _VulpixDexEntry
-	db "@"
+	text_far _VulpixDexEntry
+	text_end
 
 NinetalesDexEntry:
 	db "FOX@"
 	db 3,7
 	dw 440
-	TX_FAR _NinetalesDexEntry
-	db "@"
+	text_far _NinetalesDexEntry
+	text_end
 
 PikachuDexEntry:
 	db "MOUSE@"
 	db 1,4
 	dw 130
-	TX_FAR _PikachuDexEntry
-	db "@"
+	text_far _PikachuDexEntry
+	text_end
 
 RaichuDexEntry:
 	db "MOUSE@"
 	db 2,7
 	dw 660
-	TX_FAR _RaichuDexEntry
-	db "@"
+	text_far _RaichuDexEntry
+	text_end
 
 DratiniDexEntry:
 	db "DRAGON@"
 	db 5,11
 	dw 70
-	TX_FAR _DratiniDexEntry
-	db "@"
+	text_far _DratiniDexEntry
+	text_end
 
 DragonairDexEntry:
 	db "DRAGON@"
 	db 13,1
 	dw 360
-	TX_FAR _DragonairDexEntry
-	db "@"
+	text_far _DragonairDexEntry
+	text_end
 
 KabutoDexEntry:
 	db "SHELLFISH@"
 	db 1,8
 	dw 250
-	TX_FAR _KabutoDexEntry
-	db "@"
+	text_far _KabutoDexEntry
+	text_end
 
 KabutopsDexEntry:
 	db "SHELLFISH@"
 	db 4,3
 	dw 890
-	TX_FAR _KabutopsDexEntry
-	db "@"
+	text_far _KabutopsDexEntry
+	text_end
 
 HorseaDexEntry:
 	db "DRAGON@"
 	db 1,4
 	dw 180
-	TX_FAR _HorseaDexEntry
-	db "@"
+	text_far _HorseaDexEntry
+	text_end
 
 SeadraDexEntry:
 	db "DRAGON@"
 	db 3,11
 	dw 550
-	TX_FAR _SeadraDexEntry
-	db "@"
+	text_far _SeadraDexEntry
+	text_end
 
 SandshrewDexEntry:
 	db "MOUSE@"
 	db 2,0
 	dw 260
-	TX_FAR _SandshrewDexEntry
-	db "@"
+	text_far _SandshrewDexEntry
+	text_end
 
 SandslashDexEntry:
 	db "MOUSE@"
 	db 3,3
 	dw 650
-	TX_FAR _SandslashDexEntry
-	db "@"
+	text_far _SandslashDexEntry
+	text_end
 
 OmanyteDexEntry:
 	db "SPIRAL@"
 	db 1,4
 	dw 170
-	TX_FAR _OmanyteDexEntry
-	db "@"
+	text_far _OmanyteDexEntry
+	text_end
 
 OmastarDexEntry:
 	db "SPIRAL@"
 	db 3,3
 	dw 770
-	TX_FAR _OmastarDexEntry
-	db "@"
+	text_far _OmastarDexEntry
+	text_end
 
 JigglypuffDexEntry:
 	db "BALLOON@"
 	db 1,8
 	dw 120
-	TX_FAR _JigglypuffDexEntry
-	db "@"
+	text_far _JigglypuffDexEntry
+	text_end
 
 WigglytuffDexEntry:
 	db "BALLOON@"
 	db 3,3
 	dw 260
-	TX_FAR _WigglytuffDexEntry
-	db "@"
+	text_far _WigglytuffDexEntry
+	text_end
 
 EeveeDexEntry:
 	db "EVOLUTION@"
 	db 1,0
 	dw 140
-	TX_FAR _EeveeDexEntry
-	db "@"
+	text_far _EeveeDexEntry
+	text_end
 
 FlareonDexEntry:
 	db "FLAME@"
 	db 2,11
 	dw 550
-	TX_FAR _FlareonDexEntry
-	db "@"
+	text_far _FlareonDexEntry
+	text_end
 
 JolteonDexEntry:
 	db "LIGHTNING@"
 	db 2,7
 	dw 540
-	TX_FAR _JolteonDexEntry
-	db "@"
+	text_far _JolteonDexEntry
+	text_end
 
 VaporeonDexEntry:
 	db "BUBBLE JET@"
 	db 3,3
 	dw 640
-	TX_FAR _VaporeonDexEntry
-	db "@"
+	text_far _VaporeonDexEntry
+	text_end
 
 MachopDexEntry:
 	db "SUPERPOWER@"
 	db 2,7
 	dw 430
-	TX_FAR _MachopDexEntry
-	db "@"
+	text_far _MachopDexEntry
+	text_end
 
 ZubatDexEntry:
 	db "BAT@"
 	db 2,7
 	dw 170
-	TX_FAR _ZubatDexEntry
-	db "@"
+	text_far _ZubatDexEntry
+	text_end
 
 EkansDexEntry:
 	db "SNAKE@"
 	db 6,7
 	dw 150
-	TX_FAR _EkansDexEntry
-	db "@"
+	text_far _EkansDexEntry
+	text_end
 
 ParasDexEntry:
 	db "MUSHROOM@"
 	db 1,0
 	dw 120
-	TX_FAR _ParasDexEntry
-	db "@"
+	text_far _ParasDexEntry
+	text_end
 
 PoliwhirlDexEntry:
 	db "TADPOLE@"
 	db 3,3
 	dw 440
-	TX_FAR _PoliwhirlDexEntry
-	db "@"
+	text_far _PoliwhirlDexEntry
+	text_end
 
 PoliwrathDexEntry:
 	db "TADPOLE@"
 	db 4,3
 	dw 1190
-	TX_FAR _PoliwrathDexEntry
-	db "@"
+	text_far _PoliwrathDexEntry
+	text_end
 
 WeedleDexEntry:
 	db "HAIRY BUG@"
 	db 1,0
 	dw 70
-	TX_FAR _WeedleDexEntry
-	db "@"
+	text_far _WeedleDexEntry
+	text_end
 
 KakunaDexEntry:
 	db "COCOON@"
 	db 2,0
 	dw 220
-	TX_FAR _KakunaDexEntry
-	db "@"
+	text_far _KakunaDexEntry
+	text_end
 
 BeedrillDexEntry:
 	db "POISON BEE@"
 	db 3,3
 	dw 650
-	TX_FAR _BeedrillDexEntry
-	db "@"
+	text_far _BeedrillDexEntry
+	text_end
 
 DodrioDexEntry:
 	db "TRIPLEBIRD@"
 	db 5,11
 	dw 1880
-	TX_FAR _DodrioDexEntry
-	db "@"
+	text_far _DodrioDexEntry
+	text_end
 
 PrimeapeDexEntry:
 	db "PIG MONKEY@"
 	db 3,3
 	dw 710
-	TX_FAR _PrimeapeDexEntry
-	db "@"
+	text_far _PrimeapeDexEntry
+	text_end
 
 DugtrioDexEntry:
 	db "MOLE@"
 	db 2,4
 	dw 730
-	TX_FAR _DugtrioDexEntry
-	db "@"
+	text_far _DugtrioDexEntry
+	text_end
 
 VenomothDexEntry:
 	db "POISONMOTH@"
 	db 4,11
 	dw 280
-	TX_FAR _VenomothDexEntry
-	db "@"
+	text_far _VenomothDexEntry
+	text_end
 
 DewgongDexEntry:
 	db "SEA LION@"
 	db 5,7
 	dw 2650
-	TX_FAR _DewgongDexEntry
-	db "@"
+	text_far _DewgongDexEntry
+	text_end
 
 CaterpieDexEntry:
 	db "WORM@"
 	db 1,0
 	dw 60
-	TX_FAR _CaterpieDexEntry
-	db "@"
+	text_far _CaterpieDexEntry
+	text_end
 
 MetapodDexEntry:
 	db "COCOON@"
 	db 2,4
 	dw 220
-	TX_FAR _MetapodDexEntry
-	db "@"
+	text_far _MetapodDexEntry
+	text_end
 
 ButterfreeDexEntry:
 	db "BUTTERFLY@"
 	db 3,7
 	dw 710
-	TX_FAR _ButterfreeDexEntry
-	db "@"
+	text_far _ButterfreeDexEntry
+	text_end
 
 MachampDexEntry:
 	db "SUPERPOWER@"
 	db 5,3
 	dw 2870
-	TX_FAR _MachampDexEntry
-	db "@"
+	text_far _MachampDexEntry
+	text_end
 
 GolduckDexEntry:
 	db "DUCK@"
 	db 5,7
 	dw 1690
-	TX_FAR _GolduckDexEntry
-	db "@"
+	text_far _GolduckDexEntry
+	text_end
 
 HypnoDexEntry:
 	db "HYPNOSIS@"
 	db 5,3
 	dw 1670
-	TX_FAR _HypnoDexEntry
-	db "@"
+	text_far _HypnoDexEntry
+	text_end
 
 GolbatDexEntry:
 	db "BAT@"
 	db 5,3
 	dw 1210
-	TX_FAR _GolbatDexEntry
-	db "@"
+	text_far _GolbatDexEntry
+	text_end
 
 MewtwoDexEntry:
 	db "GENETIC@"
 	db 6,7
 	dw 2690
-	TX_FAR _MewtwoDexEntry
-	db "@"
+	text_far _MewtwoDexEntry
+	text_end
 
 SnorlaxDexEntry:
 	db "SLEEPING@"
 	db 6,11
 	dw 10140
-	TX_FAR _SnorlaxDexEntry
-	db "@"
+	text_far _SnorlaxDexEntry
+	text_end
 
 MagikarpDexEntry:
 	db "FISH@"
 	db 2,11
 	dw 220
-	TX_FAR _MagikarpDexEntry
-	db "@"
+	text_far _MagikarpDexEntry
+	text_end
 
 MukDexEntry:
 	db "SLUDGE@"
 	db 3,11
 	dw 660
-	TX_FAR _MukDexEntry
-	db "@"
+	text_far _MukDexEntry
+	text_end
 
 KinglerDexEntry:
 	db "PINCER@"
 	db 4,3
 	dw 1320
-	TX_FAR _KinglerDexEntry
-	db "@"
+	text_far _KinglerDexEntry
+	text_end
 
 CloysterDexEntry:
 	db "BIVALVE@"
 	db 4,11
 	dw 2920
-	TX_FAR _CloysterDexEntry
-	db "@"
+	text_far _CloysterDexEntry
+	text_end
 
 ElectrodeDexEntry:
 	db "BALL@"
 	db 3,11
 	dw 1470
-	TX_FAR _ElectrodeDexEntry
-	db "@"
+	text_far _ElectrodeDexEntry
+	text_end
 
 ClefableDexEntry:
 	db "FAIRY@"
 	db 4,3
 	dw 880
-	TX_FAR _ClefableDexEntry
-	db "@"
+	text_far _ClefableDexEntry
+	text_end
 
 WeezingDexEntry:
 	db "POISON GAS@"
 	db 3,11
 	dw 210
-	TX_FAR _WeezingDexEntry
-	db "@"
+	text_far _WeezingDexEntry
+	text_end
 
 PersianDexEntry:
 	db "CLASSY CAT@"
 	db 3,3
 	dw 710
-	TX_FAR _PersianDexEntry
-	db "@"
+	text_far _PersianDexEntry
+	text_end
 
 MarowakDexEntry:
 	db "BONEKEEPER@"
 	db 3,3
 	dw 990
-	TX_FAR _MarowakDexEntry
-	db "@"
+	text_far _MarowakDexEntry
+	text_end
 
 HaunterDexEntry:
 	db "GAS@"
 	db 5,3
 	dw 2
-	TX_FAR _HaunterDexEntry
-	db "@"
+	text_far _HaunterDexEntry
+	text_end
 
 AbraDexEntry:
 	db "PSI@"
 	db 2,11
 	dw 430
-	TX_FAR _AbraDexEntry
-	db "@"
+	text_far _AbraDexEntry
+	text_end
 
 AlakazamDexEntry:
 	db "PSI@"
 	db 4,11
 	dw 1060
-	TX_FAR _AlakazamDexEntry
-	db "@"
+	text_far _AlakazamDexEntry
+	text_end
 
 PidgeottoDexEntry:
 	db "BIRD@"
 	db 3,7
 	dw 660
-	TX_FAR _PidgeottoDexEntry
-	db "@"
+	text_far _PidgeottoDexEntry
+	text_end
 
 PidgeotDexEntry:
 	db "BIRD@"
 	db 4,11
 	dw 870
-	TX_FAR _PidgeotDexEntry
-	db "@"
+	text_far _PidgeotDexEntry
+	text_end
 
 StarmieDexEntry:
 	db "MYSTERIOUS@"
 	db 3,7
 	dw 1760
-	TX_FAR _StarmieDexEntry
-	db "@"
+	text_far _StarmieDexEntry
+	text_end
 
 BulbasaurDexEntry:
 	db "SEED@"
 	db 2,4
 	dw 150
-	TX_FAR _BulbasaurDexEntry
-	db "@"
+	text_far _BulbasaurDexEntry
+	text_end
 
 VenusaurDexEntry:
 	db "SEED@"
 	db 6,7
 	dw 2210
-	TX_FAR _VenusaurDexEntry
-	db "@"
+	text_far _VenusaurDexEntry
+	text_end
 
 TentacruelDexEntry:
 	db "JELLYFISH@"
 	db 5,3
 	dw 1210
-	TX_FAR _TentacruelDexEntry
-	db "@"
+	text_far _TentacruelDexEntry
+	text_end
 
 GoldeenDexEntry:
 	db "GOLDFISH@"
 	db 2,0
 	dw 330
-	TX_FAR _GoldeenDexEntry
-	db "@"
+	text_far _GoldeenDexEntry
+	text_end
 
 SeakingDexEntry:
 	db "GOLDFISH@"
 	db 4,3
 	dw 860
-	TX_FAR _SeakingDexEntry
-	db "@"
+	text_far _SeakingDexEntry
+	text_end
 
 PonytaDexEntry:
 	db "FIRE HORSE@"
 	db 3,3
 	dw 660
-	TX_FAR _PonytaDexEntry
-	db "@"
+	text_far _PonytaDexEntry
+	text_end
 
 RapidashDexEntry:
 	db "FIRE HORSE@"
 	db 5,7
 	dw 2090
-	TX_FAR _RapidashDexEntry
-	db "@"
+	text_far _RapidashDexEntry
+	text_end
 
 RattataDexEntry:
 	db "RAT@"
 	db 1,0
 	dw 80
-	TX_FAR _RattataDexEntry
-	db "@"
+	text_far _RattataDexEntry
+	text_end
 
 RaticateDexEntry:
 	db "RAT@"
 	db 2,4
 	dw 410
-	TX_FAR _RaticateDexEntry
-	db "@"
+	text_far _RaticateDexEntry
+	text_end
 
 NidorinoDexEntry:
 	db "POISON PIN@"
 	db 2,11
 	dw 430
-	TX_FAR _NidorinoDexEntry
-	db "@"
+	text_far _NidorinoDexEntry
+	text_end
 
 NidorinaDexEntry:
 	db "POISON PIN@"
 	db 2,7
 	dw 440
-	TX_FAR _NidorinaDexEntry
-	db "@"
+	text_far _NidorinaDexEntry
+	text_end
 
 GeodudeDexEntry:
 	db "ROCK@"
 	db 1,4
 	dw 440
-	TX_FAR _GeodudeDexEntry
-	db "@"
+	text_far _GeodudeDexEntry
+	text_end
 
 PorygonDexEntry:
 	db "VIRTUAL@"
 	db 2,7
 	dw 800
-	TX_FAR _PorygonDexEntry
-	db "@"
+	text_far _PorygonDexEntry
+	text_end
 
 AerodactylDexEntry:
 	db "FOSSIL@"
 	db 5,11
 	dw 1300
-	TX_FAR _AerodactylDexEntry
-	db "@"
+	text_far _AerodactylDexEntry
+	text_end
 
 MagnemiteDexEntry:
 	db "MAGNET@"
 	db 1,0
 	dw 130
-	TX_FAR _MagnemiteDexEntry
-	db "@"
+	text_far _MagnemiteDexEntry
+	text_end
 
 CharmanderDexEntry:
 	db "LIZARD@"
 	db 2,0
 	dw 190
-	TX_FAR _CharmanderDexEntry
-	db "@"
+	text_far _CharmanderDexEntry
+	text_end
 
 SquirtleDexEntry:
 	db "TINYTURTLE@"
 	db 1,8
 	dw 200
-	TX_FAR _SquirtleDexEntry
-	db "@"
+	text_far _SquirtleDexEntry
+	text_end
 
 CharmeleonDexEntry:
 	db "FLAME@"
 	db 3,7
 	dw 420
-	TX_FAR _CharmeleonDexEntry
-	db "@"
+	text_far _CharmeleonDexEntry
+	text_end
 
 WartortleDexEntry:
 	db "TURTLE@"
 	db 3,3
 	dw 500
-	TX_FAR _WartortleDexEntry
-	db "@"
+	text_far _WartortleDexEntry
+	text_end
 
 CharizardDexEntry:
 	db "FLAME@"
 	db 5,7
 	dw 2000
-	TX_FAR _CharizardDexEntry
-	db "@"
+	text_far _CharizardDexEntry
+	text_end
 
 OddishDexEntry:
 	db "WEED@"
 	db 1,8
 	dw 120
-	TX_FAR _OddishDexEntry
-	db "@"
+	text_far _OddishDexEntry
+	text_end
 
 GloomDexEntry:
 	db "WEED@"
 	db 2,7
 	dw 190
-	TX_FAR _GloomDexEntry
-	db "@"
+	text_far _GloomDexEntry
+	text_end
 
 VileplumeDexEntry:
 	db "FLOWER@"
 	db 3,11
 	dw 410
-	TX_FAR _VileplumeDexEntry
-	db "@"
+	text_far _VileplumeDexEntry
+	text_end
 
 BellsproutDexEntry:
 	db "FLOWER@"
 	db 2,4
 	dw 90
-	TX_FAR _BellsproutDexEntry
-	db "@"
+	text_far _BellsproutDexEntry
+	text_end
 
 WeepinbellDexEntry:
 	db "FLYCATCHER@"
 	db 3,3
 	dw 140
-	TX_FAR _WeepinbellDexEntry
-	db "@"
+	text_far _WeepinbellDexEntry
+	text_end
 
 VictreebelDexEntry:
 	db "FLYCATCHER@"
 	db 5,7
 	dw 340
-	TX_FAR _VictreebelDexEntry
-	db "@"
+	text_far _VictreebelDexEntry
+	text_end
 
 MissingNoDexEntry:
 	db "???@"
 	db 10 ; 1.0 m
 	db 100 ; 10.0 kg
-	text "コメント さくせいちゅう@" ; コメント作成中 (Comment to be written)
+	text "コメント さくせいちゅう@" ; コメント作成中 (Comment to be written)
--- a/data/text/alphabets.asm
+++ b/data/text/alphabets.asm
@@ -1,5 +1,15 @@
 LowerCaseAlphabet:
-	db "abcdefghijklmnopqrstuvwxyz ×():;[]",$e1,$e2,"-?!♂♀/⠄,¥UPPER CASE@"
+	db "abcdefghi"
+	db "jklmnopqr"
+	db "stuvwxyz "
+	db "×():;[]<PK><MN>"
+	db "-?!♂♀/<DOT>,<ED>"
+	db "UPPER CASE@"
 
 UpperCaseAlphabet:
-	db "ABCDEFGHIJKLMNOPQRSTUVWXYZ ×():;[]",$e1,$e2,"-?!♂♀/⠄,¥lower case@"
+	db "ABCDEFGHI"
+	db "JKLMNOPQR"
+	db "STUVWXYZ "
+	db "×():;[]<PK><MN>"
+	db "-?!♂♀/<DOT>,<ED>"
+	db "lower case@"
--- a/data/text/dakutens.asm
+++ b/data/text/dakutens.asm
@@ -7,9 +7,9 @@
 	db "サザ", "シジ", "スズ", "セゼ", "ソゾ"
 	db "タダ", "チヂ", "ツヅ", "テデ", "トド"
 	db "ハバ", "ヒビ", "フブ", "へべ", "ホボ"
-	db $ff
+	db -1 ; end
 
 Handakutens:
 	db "はぱ", "ひぴ", "ふぷ", "へぺ", "ほぽ"
 	db "ハパ", "ヒピ", "フプ", "へぺ", "ホポ"
-	db $ff
+	db -1 ; end
--- a/data/text/text_1.asm
+++ b/data/text/text_1.asm
@@ -1,8 +1,9 @@
 _CardKeySuccessText1::
-	text "Bingo!@@"
+	text "Bingo!@"
+	text_end
 
 _CardKeySuccessText2::
-	text ""
+	text_start
 	line "The CARD KEY"
 	cont "opened the door!"
 	done
@@ -13,8 +14,9 @@
 	done
 
 _TrainerNameText::
-	TX_RAM wcd6d
-	text ": @@"
+	text_ram wcd6d
+	text ": @"
+	text_end
 
 _NoNibbleText::
 	text "Not even a nibble!"
@@ -58,8 +60,9 @@
 _FoundItemText::
 	text "<PLAYER> found"
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _NoMoreRoomForItemText::
 	text "No more room for"
@@ -72,19 +75,19 @@
 	cont "AIDE!"
 
 	para "If you caught @"
-	TX_NUM hOaksAideRequirement, 1, 3
-	text ""
+	text_decimal hOaksAideRequirement, 1, 3
+	text_start
 	line "kinds of #MON,"
 	cont "I'm supposed to"
 	cont "give you an"
 	cont "@"
-	TX_RAM wOaksAideRewardItemName
+	text_ram wOaksAideRewardItemName
 	text "!"
 
 	para "So, <PLAYER>! Have"
 	line "you caught at"
 	cont "least @"
-	TX_NUM hOaksAideRequirement, 1, 3
+	text_decimal hOaksAideRequirement, 1, 3
 	text " kinds of"
 	cont "#MON?"
 	done
@@ -93,16 +96,16 @@
 	text "Let's see..."
 	line "Uh-oh! You have"
 	cont "caught only @"
-	TX_NUM hOaksAideNumMonsOwned, 1, 3
-	text ""
+	text_decimal hOaksAideNumMonsOwned, 1, 3
+	text_start
 	cont "kinds of #MON!"
 
 	para "You need @"
-	TX_NUM hOaksAideRequirement, 1, 3
+	text_decimal hOaksAideRequirement, 1, 3
 	text " kinds"
 	line "if you want the"
 	cont "@"
-	TX_RAM wOaksAideRewardItemName
+	text_ram wOaksAideRewardItemName
 	text "."
 	done
 
@@ -110,11 +113,11 @@
 	text "Oh. I see."
 
 	para "When you get @"
-	TX_NUM hOaksAideRequirement, 1, 3
-	text ""
+	text_decimal hOaksAideRequirement, 1, 3
+	text_start
 	line "kinds, come back"
 	cont "for @"
-	TX_RAM wOaksAideRewardItemName
+	text_ram wOaksAideRewardItemName
 	text "."
 	done
 
@@ -121,7 +124,7 @@
 _OaksAideHereYouGoText::
 	text "Great! You have"
 	line "caught @"
-	TX_NUM hOaksAideNumMonsOwned, 1, 3
+	text_decimal hOaksAideNumMonsOwned, 1, 3
 	text " kinds "
 	cont "of #MON!"
 	cont "Congratulations!"
@@ -132,8 +135,9 @@
 _OaksAideGotItemText::
 	text "<PLAYER> got the"
 	line "@"
-	TX_RAM wOaksAideRewardItemName
-	text "!@@"
+	text_ram wOaksAideRewardItemName
+	text "!@"
+	text_end
 
 _OaksAideNoRoomText::
 	text "Oh! I see you"
@@ -140,6 +144,6 @@
 	line "don't have any"
 	cont "room for the"
 	cont "@"
-	TX_RAM wOaksAideRewardItemName
+	text_ram wOaksAideRewardItemName
 	text "."
 	done
--- a/data/text/text_2.asm
+++ b/data/text/text_2.asm
@@ -1,27 +1,27 @@
 _AIBattleWithdrawText::
-	TX_RAM wTrainerName
+	text_ram wTrainerName
 	text " with-"
 	line "drew @"
-	TX_RAM wEnemyMonNick
+	text_ram wEnemyMonNick
 	text "!"
 	prompt
 
 _AIBattleUseItemText::
-	TX_RAM wTrainerName
-	text ""
+	text_ram wTrainerName
+	text_start
 	line "used @"
-	TX_RAM wcd6d
-	text ""
+	text_ram wcd6d
+	text_start
 	cont "on @"
-	TX_RAM wEnemyMonNick
+	text_ram wEnemyMonNick
 	text "!"
 	prompt
 
 _TradeWentToText::
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text " went"
 	line "to @"
-	TX_RAM wLinkEnemyTrainerName
+	text_ram wLinkEnemyTrainerName
 	text "."
 	done
 
@@ -28,26 +28,26 @@
 _TradeForText::
 	text "For <PLAYER>'s"
 	line "@"
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text ","
 	done
 
 _TradeSendsText::
-	TX_RAM wLinkEnemyTrainerName
+	text_ram wLinkEnemyTrainerName
 	text " sends"
 	line "@"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "."
 	done
 
 _TradeWavesFarewellText::
-	TX_RAM wLinkEnemyTrainerName
+	text_ram wLinkEnemyTrainerName
 	text " waves"
 	line "farewell as"
 	done
 
 _TradeTransferredText::
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text " is"
 	line "transferred."
 	done
@@ -55,22 +55,22 @@
 _TradeTakeCareText::
 	text "Take good care of"
 	line "@"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "."
 	done
 
 _TradeWillTradeText::
-	TX_RAM wLinkEnemyTrainerName
+	text_ram wLinkEnemyTrainerName
 	text " will"
 	line "trade @"
-	TX_RAM wcd6d
-	text ""
+	text_ram wcd6d
+	text_start
 	done
 
 _TradeforText::
 	text "for <PLAYER>'s"
 	line "@"
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text "."
 	done
 
@@ -106,7 +106,7 @@
 _LinedUpText::
 	text " lined up!"
 	line "Scored @"
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text " coins!"
 	done
 
@@ -115,27 +115,28 @@
 	prompt
 
 _YeahText::
-	text "Yeah!@@"
+	text "Yeah!@"
+	text_end
 
 _DexSeenOwnedText::
 	text "#DEX   Seen:@"
-	TX_NUM wDexRatingNumMonsSeen, 1, 3
-	text ""
+	text_decimal wDexRatingNumMonsSeen, 1, 3
+	text_start
 	line "         Owned:@"
-	TX_NUM wDexRatingNumMonsOwned, 1, 3
-	db "@"
+	text_decimal wDexRatingNumMonsOwned, 1, 3
+	text_end
 
 _DexRatingText::
-	text "#DEX Rating", $6d
+	text "#DEX Rating<COLON>"
 	done
 
 _GymStatueText1::
-	TX_RAM wGymCityName
-	text ""
+	text_ram wGymCityName
+	text_start
 	line "#MON GYM"
 	cont "LEADER: @"
-	TX_RAM wGymLeaderName
-	text ""
+	text_ram wGymLeaderName
+	text_start
 
 	para "WINNING TRAINERS:"
 	line "<RIVAL>"
@@ -142,12 +143,12 @@
 	done
 
 _GymStatueText2::
-	TX_RAM wGymCityName
-	text ""
+	text_ram wGymCityName
+	text_start
 	line "#MON GYM"
 	cont "LEADER: @"
-	TX_RAM wGymLeaderName
-	text ""
+	text_ram wGymLeaderName
+	text_start
 
 	para "WINNING TRAINERS:"
 	line "<RIVAL>"
@@ -375,7 +376,8 @@
 	text "You're absolutely"
 	line "correct!"
 
-	para "Go on through!@@"
+	para "Go on through!@"
+	text_end
 
 _CinnabarGymQuizIncorrectText::
 	text "Sorry! Bad call!"
@@ -398,7 +400,8 @@
 _BillsHouseInitiatedText::
 	text "<PLAYER> initiated"
 	line "TELEPORTER's Cell"
-	cont "Separator!@@"
+	cont "Separator!@"
+	text_end
 
 _BillsHousePokemonListText1::
 	text "BILL's favorite"
@@ -479,7 +482,8 @@
 	line "HMs that can be"
 	cont "used repeatedly."
 
-	para "SILPH CO.@@"
+	para "SILPH CO.@"
+	text_end
 
 _TurnPageText::
 	text "Turn the page?"
@@ -487,7 +491,8 @@
 
 _ViridianSchoolNotebookText5::
 	text "GIRL: Hey! Don't"
-	line "look at my notes!@@"
+	line "look at my notes!@"
+	text_end
 
 _ViridianSchoolNotebookText1::
 	text "Looked at the"
@@ -718,7 +723,8 @@
 	cont "Turn it on!"
 
 	para "The 1st electric"
-	line "lock opened!@@"
+	line "lock opened!@"
+	text_end
 
 _VermilionGymTrashSuccessText2::
 	text "Hey! There's"
@@ -732,19 +738,22 @@
 	line "lock opened!"
 
 	para "The motorized door"
-	line "opened!@@"
+	line "opened!@"
+	text_end
 
 _VermilionGymTrashFailText::
 	text "Nope! There's"
 	line "only trash here."
 	cont "Hey! The electric"
-	cont "locks were reset!@@"
+	cont "locks were reset!@"
+	text_end
 
 _FoundHiddenItemText::
 	text "<PLAYER> found"
 	line "@"
-	TX_RAM wcd6d
-	text "!@@"
+	text_ram wcd6d
+	text "!@"
+	text_end
 
 _HiddenItemBagFullText::
 	text "But, <PLAYER> has"
@@ -755,17 +764,19 @@
 _FoundHiddenCoinsText::
 	text "<PLAYER> found"
 	line "@"
-	TX_BCD hCoins, 2 | LEADING_ZEROES | LEFT_ALIGN
-	text " coins!@@"
+	text_bcd hCoins, 2 | LEADING_ZEROES | LEFT_ALIGN
+	text " coins!@"
+	text_end
 
 _FoundHiddenCoins2Text::
 	text "<PLAYER> found"
 	line "@"
-	TX_BCD hCoins, 2 | LEADING_ZEROES | LEFT_ALIGN
-	text " coins!@@"
+	text_bcd hCoins, 2 | LEADING_ZEROES | LEFT_ALIGN
+	text " coins!@"
+	text_end
 
 _DroppedHiddenCoinsText::
-	text ""
+	text_start
 	para "Oops! Dropped"
 	line "some coins!"
 	done
@@ -802,7 +813,8 @@
 	done
 
 _TownMapText::
-	text "A TOWN MAP.@@"
+	text "A TOWN MAP.@"
+	text_end
 
 _PokemonStuffText::
 	text "Wow! Tons of"
@@ -818,15 +830,15 @@
 
 _WildRanText::
 	text "Wild @"
-	TX_RAM wEnemyMonNick
-	text ""
+	text_ram wEnemyMonNick
+	text_start
 	line "ran!"
 	prompt
 
 _EnemyRanText::
 	text "Enemy @"
-	TX_RAM wEnemyMonNick
-	text ""
+	text_ram wEnemyMonNick
+	text_start
 	line "ran!"
 	prompt
 
@@ -847,15 +859,15 @@
 
 _EnemyMonFaintedText::
 	text "Enemy @"
-	TX_RAM wEnemyMonNick
-	text ""
+	text_ram wEnemyMonNick
+	text_start
 	line "fainted!"
 	prompt
 
 _MoneyForWinningText::
 	text "<PLAYER> got ¥@"
-	TX_BCD wAmountMoneyWon, 3 | LEADING_ZEROES | LEFT_ALIGN
-	text ""
+	text_bcd wAmountMoneyWon, 3 | LEADING_ZEROES | LEFT_ALIGN
+	text_start
 	line "for winning!"
 	prompt
 
@@ -862,13 +874,13 @@
 _TrainerDefeatedText::
 	text "<PLAYER> defeated"
 	line "@"
-	TX_RAM wTrainerName
+	text_ram wTrainerName
 	text "!"
 	prompt
 
 _PlayerMonFaintedText::
-	TX_RAM wBattleMonNick
-	text ""
+	text_ram wBattleMonNick
+	text_start
 	line "fainted!"
 	prompt
 
@@ -892,16 +904,16 @@
 _LinkBattleLostText::
 	text "<PLAYER> lost to"
 	line "@"
-	TX_RAM wTrainerName
+	text_ram wTrainerName
 	text "!"
 	prompt
 
 _TrainerAboutToUseText::
-	TX_RAM wTrainerName
+	text_ram wTrainerName
 	text " is"
 	line "about to use"
 	cont"@"
-	TX_RAM wEnemyMonNick
+	text_ram wEnemyMonNick
 	text "!"
 
 	para "Will <PLAYER>"
@@ -909,10 +921,10 @@
 	done
 
 _TrainerSentOutText::
-	TX_RAM wTrainerName
+	text_ram wTrainerName
 	text " sent"
 	line "out @"
-	TX_RAM wEnemyMonNick
+	text_ram wEnemyMonNick
 	text "!"
 	done
 
@@ -941,7 +953,7 @@
 	prompt
 
 _AlreadyOutText::
-	TX_RAM wBattleMonNick
+	text_ram wBattleMonNick
 	text " is"
 	line "already out!"
 	prompt
@@ -957,7 +969,7 @@
 	prompt
 
 _NoMovesLeftText::
-	TX_RAM wBattleMonNick
+	text_ram wBattleMonNick
 	text " has no"
 	line "moves left!"
 	done
@@ -965,12 +977,12 @@
 _MultiHitText::
 	text "Hit the enemy"
 	line "@"
-	TX_NUM wPlayerNumHits,1,1
+	text_decimal wPlayerNumHits, 1, 1
 	text " times!"
 	prompt
 
 _ScaredText::
-	TX_RAM wBattleMonNick
+	text_ram wBattleMonNick
 	text " is too"
 	line "scared to move!"
 	prompt
@@ -1058,28 +1070,32 @@
 _MoveIsDisabledText::
 	text "<USER>'s"
 	line "@"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text " is"
 	cont "disabled!"
 	prompt
 
 _MonName1Text::
-	text "<USER>@@"
+	text "<USER>@"
+	text_end
 
 _Used1Text::
-	text ""
-	line "used @@"
+	text_start
+	line "used @"
+	text_end
 
 _Used2Text::
-	text ""
-	line "used @@"
+	text_start
+	line "used @"
+	text_end
 
 _InsteadText::
 	text "instead,"
-	cont "@@"
+	cont "@"
+	text_end
 
 _CF4BText::
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text "@"
 
 _ExclamationPoint1Text::
@@ -1132,32 +1148,32 @@
 	prompt
 
 _LoafingAroundText::
-	TX_RAM wBattleMonNick
+	text_ram wBattleMonNick
 	text " is"
 	line "loafing around."
 	prompt
 
 _BeganToNapText::
-	TX_RAM wBattleMonNick
+	text_ram wBattleMonNick
 	text " began"
 	line "to nap!"
 	prompt
 
 _WontObeyText::
-	TX_RAM wBattleMonNick
+	text_ram wBattleMonNick
 	text " won't"
 	line "obey!"
 	prompt
 
 _TurnedAwayText::
-	TX_RAM wBattleMonNick
+	text_ram wBattleMonNick
 	text " turned"
 	line "away!"
 	prompt
 
 _IgnoredOrdersText::
-	TX_RAM wBattleMonNick
-	text ""
+	text_ram wBattleMonNick
+	text_start
 	line "ignored orders!"
 	prompt
 
@@ -1184,39 +1200,43 @@
 
 _HitXTimesText::
 	text "Hit @"
-	TX_NUM wEnemyNumHits, 1, 1
+	text_decimal wEnemyNumHits, 1, 1
 	text " times!"
 	prompt
 
 _GainedText::
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text " gained"
-	line "@@"
+	line "@"
+	text_end
 
 _WithExpAllText::
 	text "with EXP.ALL,"
-	cont "@@"
+	cont "@"
+	text_end
 
 _BoostedText::
 	text "a boosted"
-	cont "@@"
+	cont "@"
+	text_end
 
 _ExpPointsText::
-	TX_NUM wExpAmountGained, 2, 4
+	text_decimal wExpAmountGained, 2, 4
 	text " EXP. Points!"
 	prompt
 
 _GrewLevelText::
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text " grew"
 	line "to level @"
-	TX_NUM wCurEnemyLVL, 1, 3
-	text "!@@"
+	text_decimal wCurEnemyLVL, 1, 3
+	text "!@"
+	text_end
 
 _WildMonAppearedText::
 	text "Wild @"
-	TX_RAM wEnemyMonNick
-	text ""
+	text_ram wEnemyMonNick
+	text_start
 	line "appeared!"
 	prompt
 
@@ -1223,19 +1243,19 @@
 _HookedMonAttackedText::
 	text "The hooked"
 	line "@"
-	TX_RAM wEnemyMonNick
-	text ""
+	text_ram wEnemyMonNick
+	text_start
 	cont "attacked!"
 	prompt
 
 _EnemyAppearedText::
-	TX_RAM wEnemyMonNick
-	text ""
+	text_ram wEnemyMonNick
+	text_start
 	line "appeared!"
 	prompt
 
 _TrainerWantsToFightText::
-	TX_RAM wTrainerName
+	text_ram wTrainerName
 	text " wants"
 	line "to fight!"
 	prompt
@@ -1252,38 +1272,46 @@
 	prompt
 
 _GoText::
-	text "Go! @@"
+	text "Go! @"
+	text_end
 
 _DoItText::
-	text "Do it! @@"
+	text "Do it! @"
+	text_end
 
 _GetmText::
-	text "Get'm! @@"
+	text "Get'm! @"
+	text_end
 
 _EnemysWeakText::
 	text "The enemy's weak!"
-	line "Get'm! @@"
+	line "Get'm! @"
+	text_end
 
 _PlayerMon1Text::
-	TX_RAM wBattleMonNick
+	text_ram wBattleMonNick
 	text "!"
 	done
 
 _PlayerMon2Text::
-	TX_RAM wBattleMonNick
-	text " @@"
+	text_ram wBattleMonNick
+	text " @"
+	text_end
 
 _EnoughText::
-	text "enough!@@"
+	text "enough!@"
+	text_end
 
 _OKExclamationText::
-	text "OK!@@"
+	text "OK!@"
+	text_end
 
 _GoodText::
-	text "good!@@"
+	text "good!@"
+	text_end
 
 _ComeBackText::
-	text ""
+	text_start
 	line "Come back!"
 	done
 
@@ -1299,15 +1327,15 @@
 
 _SafariZoneEatingText::
 	text "Wild @"
-	TX_RAM wEnemyMonNick
-	text ""
+	text_ram wEnemyMonNick
+	text_start
 	line "is eating!"
 	prompt
 
 _SafariZoneAngryText::
 	text "Wild @"
-	TX_RAM wEnemyMonNick
-	text ""
+	text_ram wEnemyMonNick
+	text_start
 	line "is angry!"
 	prompt
 
@@ -1315,7 +1343,7 @@
 _PickUpPayDayMoneyText::
 	text "<PLAYER> picked up"
 	line "¥@"
-	TX_BCD wTotalPayDayMoney, 3 | LEADING_ZEROES | LEFT_ALIGN
+	text_bcd wTotalPayDayMoney, 3 | LEADING_ZEROES | LEFT_ALIGN
 	text "!"
 	prompt
 
@@ -1354,61 +1382,62 @@
 	done
 
 _PotionText::
-	TX_RAM wcd6d
-	text ""
+	text_ram wcd6d
+	text_start
 	line "recovered by @"
-	TX_NUM wHPBarHPDifference, 2, 3
+	text_decimal wHPBarHPDifference, 2, 3
 	text "!"
 	done
 
 _AntidoteText::
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text " was"
 	line "cured of poison!"
 	done
 
 _ParlyzHealText::
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "'s"
 	line "rid of paralysis!"
 	done
 
 _BurnHealText::
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "'s"
 	line "burn was healed!"
 	done
 
 _IceHealText::
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text " was"
 	line "defrosted!"
 	done
 
 _AwakeningText::
-	TX_RAM wcd6d
-	text ""
+	text_ram wcd6d
+	text_start
 	line "woke up!"
 	done
 
 _FullHealText::
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "'s"
 	line "health returned!"
 	done
 
 _ReviveText::
-	TX_RAM wcd6d
-	text ""
+	text_ram wcd6d
+	text_start
 	line "is revitalized!"
 	done
 
 _RareCandyText::
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text " grew"
 	line "to level @"
-	TX_NUM wCurEnemyLVL, 1, 3
-	text "!@@"
+	text_decimal wCurEnemyLVL, 1, 3
+	text "!@"
+	text_end
 
 _TurnedOnPC1Text::
 	text "<PLAYER> turned on"
@@ -1458,7 +1487,7 @@
 	done
 
 _ItemWasStoredText::
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text " was"
 	line "stored via PC."
 	prompt
@@ -1485,7 +1514,7 @@
 _WithdrewItemText::
 	text "Withdrew"
 	line "@"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "."
 	prompt
 
@@ -1530,10 +1559,10 @@
 	done
 
 _MonWasStoredText::
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text " was"
 	line "stored in Box @"
-	TX_RAM wBoxNumString
+	text_ram wBoxNumString
 	text "."
 	prompt
 
@@ -1548,11 +1577,11 @@
 	prompt
 
 _MonIsTakenOutText::
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text " is"
 	line "taken out."
 	cont "Got @"
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text "."
 	prompt
 
@@ -1577,25 +1606,26 @@
 _OnceReleasedText::
 	text "Once released,"
 	line "@"
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text " is"
 	cont "gone forever. OK?"
 	done
 
 _MonWasReleasedText::
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text " was"
 	line "released outside."
 	cont "Bye @"
 
 _CF4BExclamationText::
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text "!"
 	prompt
 
 _RequireCoinCaseText::
 	text "A COIN CASE is"
-	line "required!@@"
+	line "required!@"
+	text_end
 
 _ExchangeCoinsForPrizesText::
 	text "We exchange your"
@@ -1608,25 +1638,29 @@
 	done
 
 _HereYouGoText::
-	text "Here you go!@@"
+	text "Here you go!@"
+	text_end
 
 _SoYouWantPrizeText::
 	text "So, you want"
 	line "@"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "?"
 	done
 
 _SorryNeedMoreCoinsText::
 	text "Sorry, you need"
-	line "more coins.@@"
+	line "more coins.@"
+	text_end
 
 _OopsYouDontHaveEnoughRoomText::
 	text "Oops! You don't"
-	line "have enough room.@@"
+	line "have enough room.@"
+	text_end
 
 _OhFineThenText::
-	text "Oh, fine then.@@"
+	text "Oh, fine then.@"
+	text_end
 
 _GetDexRatedText::
 	text "Want to get your"
@@ -1635,7 +1669,8 @@
 
 _ClosedOaksPCText::
 	text "Closed link to"
-	line "PROF.OAK's PC.@@"
+	line "PROF.OAK's PC.@"
+	text_end
 
 _AccessedOaksPCText::
 	text "Accessed PROF."
@@ -1674,10 +1709,13 @@
 	text "This world is"
 	line "inhabited by"
 	cont "creatures called"
-	cont "#MON!@@"
+	cont "#MON!@"
+	text_end
 
 _OakSpeechText2B::
-	text $51,"For some people,"
+	text_start
+
+	para "For some people,"
 	line "#MON are"
 	cont "pets. Others use"
 	cont "them for fights."
@@ -1720,7 +1758,7 @@
 	text "Do you want to"
 	line "give a nickname"
 	cont "to @"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "?"
 	done
 
@@ -1736,18 +1774,19 @@
 	prompt
 
 _WillBeTradedText::
-	TX_RAM wNameOfPlayerMonToBeTraded
+	text_ram wNameOfPlayerMonToBeTraded
 	text " and"
 	line "@"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text " will"
 	cont "be traded."
 	done
 
-_Char00Text::
-	TX_NUM hSpriteIndexOrTextID,1,2
+_TextIDErrorText::
+	text_decimal hSpriteIndexOrTextID, 1, 2
 	text " ERROR."
 	done
 
-_Char55Text::
-	text $4B,"@@"
+_ContCharText::
+	text "<_CONT>@"
+	text_end
--- a/data/text/text_3.asm
+++ b/data/text/text_3.asm
@@ -29,31 +29,32 @@
 
 _ChooseABoxText::
 	text "Choose a"
-	line "<pkmn> BOX.@@"
+	line "<PKMN> BOX.@"
+	text_end
 
 _EvolvedText::
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text " evolved"
 	done
 
 _IntoText::
-	text ""
+	text_start
 	line "into @"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "!"
 	done
 
 _StoppedEvolvingText::
 	text "Huh? @"
-	TX_RAM wcf4b
-	text ""
+	text_ram wcf4b
+	text_start
 	line "stopped evolving!"
 	prompt
 
 _IsEvolvingText::
 	text "What? @"
-	TX_RAM wcf4b
-	text ""
+	text_ram wcf4b
+	text_start
 	line "is evolving!"
 	done
 
@@ -95,11 +96,13 @@
 _MonsStatsRoseText::
 	text "<USER>'s"
 	line "@"
-	TX_RAM wcf4b
-	text "@@"
+	text_ram wcf4b
+	text "@"
+	text_end
 
 _GreatlyRoseText::
-	text $4c, "greatly@@"
+	text "<SCROLL>greatly@"
+	text_end
 
 _RoseText::
 	text " rose!"
@@ -108,11 +111,13 @@
 _MonsStatsFellText::
 	text "<TARGET>'s"
 	line "@"
-	TX_RAM wcf4b
-	text "@@"
+	text_ram wcf4b
+	text "@"
+	text_end
 
 _GreatlyFellText::
-	text $4c, "greatly@@"
+	text "<SCROLL>greatly@"
+	text_end
 
 _FellText::
 	text " fell!"
@@ -134,35 +139,36 @@
 	prompt
 
 _ChargeMoveEffectText::
-	text "<USER>@@"
+	text "<USER>@"
+	text_end
 
 _MadeWhirlwindText::
-	text ""
+	text_start
 	line "made a whirlwind!"
 	prompt
 
 _TookInSunlightText::
-	text ""
+	text_start
 	line "took in sunlight!"
 	prompt
 
 _LoweredItsHeadText::
-	text ""
+	text_start
 	line "lowered its head!"
 	prompt
 
 _SkyAttackGlowingText::
-	text ""
+	text_start
 	line "is glowing!"
 	prompt
 
 _FlewUpHighText::
-	text ""
+	text_start
 	line "flew up high!"
 	prompt
 
 _DugAHoleText::
-	text ""
+	text_start
 	line "dug a hole!"
 	prompt
 
@@ -175,7 +181,7 @@
 	text "<USER>"
 	line "learned"
 	cont "@"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "!"
 	prompt
 
@@ -182,7 +188,7 @@
 _MoveWasDisabledText::
 	text "<TARGET>'s"
 	line "@"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text " was"
 	cont "disabled!"
 	prompt
@@ -285,7 +291,7 @@
 	text "<USER>"
 	line "transformed into"
 	cont "@"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "!"
 	prompt
 
--- a/data/text/text_4.asm
+++ b/data/text/text_4.asm
@@ -4,8 +4,8 @@
 	done
 
 _PokemonFaintedText::
-	TX_RAM wcd6d
-	text ""
+	text_ram wcd6d
+	text_start
 	line "fainted!"
 	done
 
@@ -27,11 +27,11 @@
 	done
 
 _PokemartTellBuyPriceText::
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text "?"
 	line "That will be"
 	cont "¥@"
-	TX_BCD hMoney, 3 | LEADING_ZEROES | LEFT_ALIGN
+	text_bcd hMoney, 3 | LEADING_ZEROES | LEFT_ALIGN
 	text ". OK?"
 	done
 
@@ -58,7 +58,7 @@
 _PokemartTellSellPriceText::
 	text "I can pay you"
 	line "¥@"
-	TX_BCD hMoney, 3 | LEADING_ZEROES | LEFT_ALIGN
+	text_bcd hMoney, 3 | LEADING_ZEROES | LEFT_ALIGN
 	text " for that."
 	done
 
@@ -82,11 +82,12 @@
 	done
 
 _LearnedMove1Text::
-	TX_RAM wLearnMoveMonName
+	text_ram wLearnMoveMonName
 	text " learned"
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _WhichMoveToForgetText::
 	text "Which move should"
@@ -96,30 +97,30 @@
 _AbandonLearningText::
 	text "Abandon learning"
 	line "@"
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text "?"
 	done
 
 _DidNotLearnText::
-	TX_RAM wLearnMoveMonName
-	text ""
+	text_ram wLearnMoveMonName
+	text_start
 	line "did not learn"
 	cont "@"
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text "!"
 	prompt
 
 _TryingToLearnText::
-	TX_RAM wLearnMoveMonName
+	text_ram wLearnMoveMonName
 	text " is"
 	line "trying to learn"
 	cont "@"
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text "!"
 
 	para "But, @"
-	TX_RAM wLearnMoveMonName
-	text ""
+	text_ram wLearnMoveMonName
+	text_start
 	line "can't learn more"
 	cont "than 4 moves!"
 
@@ -126,23 +127,25 @@
 	para "Delete an older"
 	line "move to make room"
 	cont "for @"
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text "?"
 	done
 
 _OneTwoAndText::
-	text "1, 2 and...@@"
+	text "1, 2 and...@"
+	text_end
 
 _PoofText::
-	text " Poof!@@"
+	text " Poof!@"
+	text_end
 
 _ForgotAndText::
-	text ""
+	text_start
 	para "@"
-	TX_RAM wLearnMoveMonName
+	text_ram wLearnMoveMonName
 	text " forgot"
 	line "@"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "!"
 
 	para "And..."
@@ -204,7 +207,8 @@
 	done
 
 _CableClubNPCPleaseWaitText::
-	text "Please wait.@@"
+	text "Please wait.@"
+	text_end
 
 _CableClubNPCLinkClosedBecauseOfInactivityText::
 	text "The link has been"
--- a/data/text/text_5.asm
+++ b/data/text/text_5.asm
@@ -9,12 +9,13 @@
 	done
 
 _UsedStrengthText::
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text " used"
-	line "STRENGTH.@@"
+	line "STRENGTH.@"
+	text_end
 
 _CanMoveBouldersText::
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text " can"
 	line "move boulders."
 	prompt
@@ -40,13 +41,13 @@
 	done
 
 _CannotUseTeleportNowText::
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text " can't"
 	line "use TELEPORT now."
 	prompt
 
 _CannotFlyHereText::
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text " can't"
 	line "FLY here."
 	prompt
@@ -74,18 +75,19 @@
 _GotMonText::
 	text "<PLAYER> got"
 	line "@"
-	TX_RAM wcd6d
-	text "!@@"
+	text_ram wcd6d
+	text "!@"
+	text_end
 
 _SentToBoxText::
 	text "There's no more"
 	line "room for #MON!"
 	cont "@"
-	TX_RAM wBoxMonNicks
+	text_ram wBoxMonNicks
 	text " was"
 	cont "sent to #MON"
 	cont "BOX @"
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text " on PC!"
 	done
 
--- a/data/text/text_6.asm
+++ b/data/text/text_6.asm
@@ -29,12 +29,13 @@
 _ItemUseBallText05::
 	text "All right!"
 	line "@"
-	TX_RAM wEnemyMonNick
+	text_ram wEnemyMonNick
 	text " was"
-	cont "caught!@@"
+	cont "caught!@"
+	text_end
 
 _ItemUseBallText07::
-	TX_RAM wBoxMonNicks
+	text_ram wBoxMonNicks
 	text " was"
 	line "transferred to"
 	cont "BILL's PC!"
@@ -41,7 +42,7 @@
 	prompt
 
 _ItemUseBallText08::
-	TX_RAM wBoxMonNicks
+	text_ram wBoxMonNicks
 	text " was"
 	line "transferred to"
 	cont "someone's PC!"
@@ -51,13 +52,14 @@
 	text "New #DEX data"
 	line "will be added for"
 	cont "@"
-	TX_RAM wEnemyMonNick
-	text "!@@"
+	text_ram wEnemyMonNick
+	text "!@"
+	text_end
 
 _SurfingGotOnText::
 	text "<PLAYER> got on"
 	line "@"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "!"
 	prompt
 
@@ -67,10 +69,10 @@
 	prompt
 
 _VitaminStatRoseText::
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "'s"
 	line "@"
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text " rose."
 	prompt
 
@@ -104,12 +106,13 @@
 
 _PlayedFluteHadEffectText::
 	text "<PLAYER> played the"
-	line "# FLUTE.@@"
+	line "# FLUTE.@"
+	text_end
 
 _CoinCaseNumCoinsText::
 	text "Coins"
 	line "@"
-	TX_BCD wPlayerCoins, 2 | LEADING_ZEROES | LEFT_ALIGN
+	text_bcd wPlayerCoins, 2 | LEADING_ZEROES | LEFT_ALIGN
 	text " "
 	prompt
 
@@ -135,13 +138,13 @@
 	done
 
 _PPMaxedOutText::
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text "'s PP"
 	line "is maxed out."
 	prompt
 
 _PPIncreasedText::
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text "'s PP"
 	line "increased."
 	prompt
@@ -161,26 +164,26 @@
 _TeachMachineMoveText::
 	text "It contained"
 	line "@"
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text "!"
 
 	para "Teach @"
-	TX_RAM wcf4b
-	text ""
+	text_ram wcf4b
+	text_start
 	line "to a #MON?"
 	done
 
 _MonCannotLearnMachineMoveText::
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text " is not"
 	line "compatible with"
 	cont "@"
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text "."
 
 	para "It can't learn"
 	line "@"
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text "."
 	prompt
 
@@ -217,7 +220,7 @@
 _NoSurfingHereText::
 	text "No SURFing on"
 	line "@"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text " here!"
 	prompt
 
--- a/data/text/text_7.asm
+++ b/data/text/text_7.asm
@@ -1,25 +1,28 @@
 _ItemUseText001::
-	text "<PLAYER> used@@"
+	text "<PLAYER> used@"
+	text_end
 
 _ItemUseText002::
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text "!"
 	done
 
 _GotOnBicycleText1::
-	text "<PLAYER> got on the@@"
+	text "<PLAYER> got on the@"
+	text_end
 
 _GotOnBicycleText2::
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text "!"
 	prompt
 
 _GotOffBicycleText1::
-	text "<PLAYER> got off@@"
+	text "<PLAYER> got off@"
+	text_end
 
 _GotOffBicycleText2::
 	text "the @"
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text "."
 	prompt
 
@@ -26,7 +29,7 @@
 _ThrewAwayItemText::
 	text "Threw away"
 	line "@"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "."
 	prompt
 
@@ -33,7 +36,7 @@
 _IsItOKToTossItemText::
 	text "Is it OK to toss"
 	line "@"
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text "?"
 	prompt
 
@@ -43,10 +46,10 @@
 	prompt
 
 _AlreadyKnowsText::
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text " knows"
 	line "@"
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text "!"
 	prompt
 
@@ -58,21 +61,22 @@
 _TradedForText::
 	text "<PLAYER> traded"
 	line "@"
-	TX_RAM wInGameTradeGiveMonName
+	text_ram wInGameTradeGiveMonName
 	text " for"
 	cont "@"
-	TX_RAM wInGameTradeReceiveMonName
-	text "!@@"
+	text_ram wInGameTradeReceiveMonName
+	text "!@"
+	text_end
 
 _WannaTrade1Text::
 	text "I'm looking for"
 	line "@"
-	TX_RAM wInGameTradeGiveMonName
+	text_ram wInGameTradeGiveMonName
 	text "! Wanna"
 
 	para "trade one for"
 	line "@"
-	TX_RAM wInGameTradeReceiveMonName
+	text_ram wInGameTradeReceiveMonName
 	text "? "
 	done
 
@@ -84,7 +88,7 @@
 _WrongMon1Text::
 	text "What? That's not"
 	line "@"
-	TX_RAM wInGameTradeGiveMonName
+	text_ram wInGameTradeGiveMonName
 	text "!"
 
 	para "If you get one,"
@@ -98,7 +102,7 @@
 _AfterTrade1Text::
 	text "Isn't my old"
 	line "@"
-	TX_RAM wInGameTradeReceiveMonName
+	text_ram wInGameTradeReceiveMonName
 	text " great?"
 	done
 
@@ -107,10 +111,10 @@
 	line "you want to trade"
 
 	para "your @"
-	TX_RAM wInGameTradeGiveMonName
-	text ""
+	text_ram wInGameTradeGiveMonName
+	text_start
 	line "for @"
-	TX_RAM wInGameTradeReceiveMonName
+	text_ram wInGameTradeReceiveMonName
 	text "?"
 	done
 
@@ -122,7 +126,7 @@
 _WrongMon2Text::
 	text "Hmmm? This isn't"
 	line "@"
-	TX_RAM wInGameTradeGiveMonName
+	text_ram wInGameTradeGiveMonName
 	text "."
 
 	para "Think of me when"
@@ -135,7 +139,7 @@
 
 _AfterTrade2Text::
 	text "The @"
-	TX_RAM wInGameTradeGiveMonName
+	text_ram wInGameTradeGiveMonName
 	text " you"
 	line "traded to me"
 
@@ -145,12 +149,12 @@
 _WannaTrade3Text::
 	text "Hi! Do you have"
 	line "@"
-	TX_RAM wInGameTradeGiveMonName
+	text_ram wInGameTradeGiveMonName
 	text "?"
 
 	para "Want to trade it"
 	line "for @"
-	TX_RAM wInGameTradeReceiveMonName
+	text_ram wInGameTradeReceiveMonName
 	text "?"
 	done
 
@@ -161,7 +165,7 @@
 _WrongMon3Text::
 	text "...This is no"
 	line "@"
-	TX_RAM wInGameTradeGiveMonName
+	text_ram wInGameTradeGiveMonName
 	text "."
 
 	para "If you get one,"
@@ -175,11 +179,11 @@
 _AfterTrade3Text::
 	text "How is my old"
 	line "@"
-	TX_RAM wInGameTradeReceiveMonName
+	text_ram wInGameTradeReceiveMonName
 	text "?"
 
 	para "My @"
-	TX_RAM wInGameTradeGiveMonName
+	text_ram wInGameTradeGiveMonName
 	text " is"
 	line "doing great!"
 	done
@@ -190,7 +194,7 @@
 	prompt
 
 _UsedCutText::
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text " hacked"
 	line "away with CUT!"
 	prompt
--- a/engine/battle/common_text.asm
+++ b/engine/battle/common_text.asm
@@ -71,28 +71,28 @@
 	ret
 
 WildMonAppearedText:
-	TX_FAR _WildMonAppearedText
-	db "@"
+	text_far _WildMonAppearedText
+	text_end
 
 HookedMonAttackedText:
-	TX_FAR _HookedMonAttackedText
-	db "@"
+	text_far _HookedMonAttackedText
+	text_end
 
 EnemyAppearedText:
-	TX_FAR _EnemyAppearedText
-	db "@"
+	text_far _EnemyAppearedText
+	text_end
 
 TrainerWantsToFightText:
-	TX_FAR _TrainerWantsToFightText
-	db "@"
+	text_far _TrainerWantsToFightText
+	text_end
 
 UnveiledGhostText:
-	TX_FAR _UnveiledGhostText
-	db "@"
+	text_far _UnveiledGhostText
+	text_end
 
 GhostCantBeIDdText:
-	TX_FAR _GhostCantBeIDdText
-	db "@"
+	text_far _GhostCantBeIDdText
+	text_end
 
 PrintSendOutMonMessage:
 	ld hl, wEnemyMonHP
@@ -138,23 +138,23 @@
 	jp PrintText
 
 GoText:
-	TX_FAR _GoText
-	TX_ASM
+	text_far _GoText
+	text_asm
 	jr PrintPlayerMon1Text
 
 DoItText:
-	TX_FAR _DoItText
-	TX_ASM
+	text_far _DoItText
+	text_asm
 	jr PrintPlayerMon1Text
 
 GetmText:
-	TX_FAR _GetmText
-	TX_ASM
+	text_far _GetmText
+	text_asm
 	jr PrintPlayerMon1Text
 
 EnemysWeakText:
-	TX_FAR _EnemysWeakText
-	TX_ASM
+	text_far _EnemysWeakText
+	text_asm
 
 PrintPlayerMon1Text:
 	ld hl, PlayerMon1Text
@@ -161,8 +161,8 @@
 	ret
 
 PlayerMon1Text:
-	TX_FAR _PlayerMon1Text
-	db "@"
+	text_far _PlayerMon1Text
+	text_end
 
 RetreatMon:
 	ld hl, PlayerMon2Text
@@ -169,8 +169,8 @@
 	jp PrintText
 
 PlayerMon2Text:
-	TX_FAR _PlayerMon2Text
-	TX_ASM
+	text_far _PlayerMon2Text
+	text_asm
 	push de
 	push bc
 	ld hl, wEnemyMonHP + 1
@@ -220,18 +220,18 @@
 	ret
 
 EnoughText:
-	TX_FAR _EnoughText
-	TX_ASM
+	text_far _EnoughText
+	text_asm
 	jr PrintComeBackText
 
 OKExclamationText:
-	TX_FAR _OKExclamationText
-	TX_ASM
+	text_far _OKExclamationText
+	text_asm
 	jr PrintComeBackText
 
 GoodText:
-	TX_FAR _GoodText
-	TX_ASM
+	text_far _GoodText
+	text_asm
 	jr PrintComeBackText
 
 PrintComeBackText:
@@ -239,5 +239,5 @@
 	ret
 
 ComeBackText:
-	TX_FAR _ComeBackText
-	db "@"
+	text_far _ComeBackText
+	text_end
--- a/engine/battle/core.asm
+++ b/engine/battle/core.asm
@@ -207,8 +207,8 @@
 	jr EnemyRan ; if b was greater than the random value, the enemy runs
 
 .outOfSafariBallsText
-	TX_FAR _OutOfSafariBallsText
-	db "@"
+	text_far _OutOfSafariBallsText
+	text_end
 
 .playerSendOutFirstMon
 	xor a
@@ -270,12 +270,12 @@
 	jpab AnimationSlideEnemyMonOff
 
 WildRanText:
-	TX_FAR _WildRanText
-	db "@"
+	text_far _WildRanText
+	text_end
 
 EnemyRanText:
-	TX_FAR _EnemyRanText
-	db "@"
+	text_far _EnemyRanText
+	text_end
 
 MainInBattleLoop:
 	call ReadPlayerMonCurHPAndStatus
@@ -532,16 +532,16 @@
 	ret
 
 HurtByPoisonText:
-	TX_FAR _HurtByPoisonText
-	db "@"
+	text_far _HurtByPoisonText
+	text_end
 
 HurtByBurnText:
-	TX_FAR _HurtByBurnText
-	db "@"
+	text_far _HurtByBurnText
+	text_end
 
 HurtByLeechSeedText:
-	TX_FAR _HurtByLeechSeedText
-	db "@"
+	text_far _HurtByLeechSeedText
+	text_end
 
 ; decreases the mon's current HP by 1/16 of the Max HP (multiplied by number of toxic ticks if active)
 ; note that the toxic ticks are considered even if the damage is not poison (hence the Leech Seed glitch)
@@ -858,8 +858,8 @@
 	jpab GainExperience
 
 EnemyMonFaintedText:
-	TX_FAR _EnemyMonFaintedText
-	db "@"
+	text_far _EnemyMonFaintedText
+	text_end
 
 EndLowHealthAlarm:
 ; This function is called when the player has the won the battle. It turns off
@@ -949,12 +949,12 @@
 	predef_jump AddBCDPredef
 
 MoneyForWinningText:
-	TX_FAR _MoneyForWinningText
-	db "@"
+	text_far _MoneyForWinningText
+	text_end
 
 TrainerDefeatedText:
-	TX_FAR _TrainerDefeatedText
-	db "@"
+	text_far _TrainerDefeatedText
+	text_end
 
 PlayBattleVictoryMusic:
 	push af
@@ -1044,8 +1044,8 @@
 	jp PrintText
 
 PlayerMonFaintedText:
-	TX_FAR _PlayerMonFaintedText
-	db "@"
+	text_far _PlayerMonFaintedText
+	text_end
 
 ; asks if you want to use next mon
 ; stores whether you ran in C flag
@@ -1078,8 +1078,8 @@
 	jp TryRunningFromBattle
 
 UseNextMonText:
-	TX_FAR _UseNextMonText
-	db "@"
+	text_far _UseNextMonText
+	text_end
 
 ; choose next player mon to send out
 ; stores whether enemy mon has no HP left in Z flag
@@ -1165,16 +1165,16 @@
 	ret
 
 Sony1WinText:
-	TX_FAR _Sony1WinText
-	db "@"
+	text_far _Sony1WinText
+	text_end
 
 PlayerBlackedOutText2:
-	TX_FAR _PlayerBlackedOutText2
-	db "@"
+	text_far _PlayerBlackedOutText2
+	text_end
 
 LinkBattleLostText:
-	TX_FAR _LinkBattleLostText
-	db "@"
+	text_far _LinkBattleLostText
+	text_end
 
 ; slides pic of fainted mon downwards until it disappears
 ; bug: when this is called, [hAutoBGTransferEnabled] is non-zero, so there is screen tearing
@@ -1442,12 +1442,12 @@
 	jp SwitchPlayerMon
 
 TrainerAboutToUseText:
-	TX_FAR _TrainerAboutToUseText
-	db "@"
+	text_far _TrainerAboutToUseText
+	text_end
 
 TrainerSentOutText:
-	TX_FAR _TrainerSentOutText
-	db "@"
+	text_far _TrainerSentOutText
+	text_end
 
 ; tests if the player has any pokemon that are not fainted
 ; sets d = 0 if all fainted, d != 0 if some mons are still alive
@@ -1487,8 +1487,8 @@
 	ret
 
 NoWillText:
-	TX_FAR _NoWillText
-	db "@"
+	text_far _NoWillText
+	text_end
 
 ; try to run from battle (hl = player speed, de = enemy speed)
 ; stores whether the attempt was successful in carry flag
@@ -1610,16 +1610,16 @@
 	ret
 
 CantEscapeText:
-	TX_FAR _CantEscapeText
-	db "@"
+	text_far _CantEscapeText
+	text_end
 
 NoRunningText:
-	TX_FAR _NoRunningText
-	db "@"
+	text_far _NoRunningText
+	text_end
 
 GotAwayText:
-	TX_FAR _GotAwayText
-	db "@"
+	text_far _GotAwayText
+	text_end
 
 ; copies from party data to battle mon data when sending out a new player mon
 LoadBattleMonFromParty:
@@ -2289,8 +2289,8 @@
 	ret
 
 ItemsCantBeUsedHereText:
-	TX_FAR _ItemsCantBeUsedHereText
-	db "@"
+	text_far _ItemsCantBeUsedHereText
+	text_end
 
 PartyMenuOrRockOrRun:
 	dec a ; was Run selected?
@@ -2434,8 +2434,8 @@
 	ret
 
 AlreadyOutText:
-	TX_FAR _AlreadyOutText
-	db "@"
+	text_far _AlreadyOutText
+	text_end
 
 BattleMenu_RunWasSelected:
 	call LoadScreenTilesFromBuffer1
@@ -2667,12 +2667,12 @@
 	jp MoveSelectionMenu
 
 MoveNoPPText:
-	TX_FAR _MoveNoPPText
-	db "@"
+	text_far _MoveNoPPText
+	text_end
 
 MoveDisabledText:
-	TX_FAR _MoveDisabledText
-	db "@"
+	text_far _MoveDisabledText
+	text_end
 
 WhichTechniqueString:
 	db "WHICH TECHNIQUE?@"
@@ -2744,8 +2744,8 @@
 	ret
 
 NoMovesLeftText:
-	TX_FAR _NoMovesLeftText
-	db "@"
+	text_far _NoMovesLeftText
+	text_end
 
 SwapMovesInMenu:
 	ld a, [wMenuItemToSwap]
@@ -3239,8 +3239,8 @@
 	jp ExecutePlayerMoveDone
 
 MultiHitText:
-	TX_FAR _MultiHitText
-	db "@"
+	text_far _MultiHitText
+	text_end
 
 ExecutePlayerMoveDone:
 	xor a
@@ -3269,12 +3269,12 @@
 	ret
 
 ScaredText:
-	TX_FAR _ScaredText
-	db "@"
+	text_far _ScaredText
+	text_end
 
 GetOutText:
-	TX_FAR _GetOutText
-	db "@"
+	text_far _GetOutText
+	text_end
 
 IsGhostBattle:
 	ld a, [wIsInBattle]
@@ -3557,64 +3557,64 @@
 	ret
 
 FastAsleepText:
-	TX_FAR _FastAsleepText
-	db "@"
+	text_far _FastAsleepText
+	text_end
 
 WokeUpText:
-	TX_FAR _WokeUpText
-	db "@"
+	text_far _WokeUpText
+	text_end
 
 IsFrozenText:
-	TX_FAR _IsFrozenText
-	db "@"
+	text_far _IsFrozenText
+	text_end
 
 FullyParalyzedText:
-	TX_FAR _FullyParalyzedText
-	db "@"
+	text_far _FullyParalyzedText
+	text_end
 
 FlinchedText:
-	TX_FAR _FlinchedText
-	db "@"
+	text_far _FlinchedText
+	text_end
 
 MustRechargeText:
-	TX_FAR _MustRechargeText
-	db "@"
+	text_far _MustRechargeText
+	text_end
 
 DisabledNoMoreText:
-	TX_FAR _DisabledNoMoreText
-	db "@"
+	text_far _DisabledNoMoreText
+	text_end
 
 IsConfusedText:
-	TX_FAR _IsConfusedText
-	db "@"
+	text_far _IsConfusedText
+	text_end
 
 HurtItselfText:
-	TX_FAR _HurtItselfText
-	db "@"
+	text_far _HurtItselfText
+	text_end
 
 ConfusedNoMoreText:
-	TX_FAR _ConfusedNoMoreText
-	db "@"
+	text_far _ConfusedNoMoreText
+	text_end
 
 SavingEnergyText:
-	TX_FAR _SavingEnergyText
-	db "@"
+	text_far _SavingEnergyText
+	text_end
 
 UnleashedEnergyText:
-	TX_FAR _UnleashedEnergyText
-	db "@"
+	text_far _UnleashedEnergyText
+	text_end
 
 ThrashingAboutText:
-	TX_FAR _ThrashingAboutText
-	db "@"
+	text_far _ThrashingAboutText
+	text_end
 
 AttackContinuesText:
-	TX_FAR _AttackContinuesText
-	db "@"
+	text_far _AttackContinuesText
+	text_end
 
 CantMoveText:
-	TX_FAR _CantMoveText
-	db "@"
+	text_far _CantMoveText
+	text_end
 
 PrintMoveIsDisabledText:
 	ld hl, wPlayerSelectedMove
@@ -3635,8 +3635,8 @@
 	jp PrintText
 
 MoveIsDisabledText:
-	TX_FAR _MoveIsDisabledText
-	db "@"
+	text_far _MoveIsDisabledText
+	text_end
 
 HandleSelfConfusionDamage:
 	ld hl, HurtItselfText
@@ -3692,8 +3692,8 @@
 ; this likely had to do with Japanese grammar that got translated,
 ; but the functionality didn't get removed
 MonName1Text:
-	TX_FAR _MonName1Text
-	TX_ASM
+	text_far _MonName1Text
+	text_asm
 	ld a, [hWhoseTurn]
 	and a
 	ld a, [wPlayerMoveNum]
@@ -3717,13 +3717,13 @@
 	ret
 
 Used1Text:
-	TX_FAR _Used1Text
-	TX_ASM
+	text_far _Used1Text
+	text_asm
 	jr PrintInsteadText
 
 Used2Text:
-	TX_FAR _Used2Text
-	TX_ASM
+	text_far _Used2Text
+	text_asm
 	; fall through
 
 PrintInsteadText:
@@ -3734,8 +3734,8 @@
 	ret
 
 InsteadText:
-	TX_FAR _InsteadText
-	TX_ASM
+	text_far _InsteadText
+	text_asm
 	; fall through
 
 PrintMoveName:
@@ -3743,8 +3743,8 @@
 	ret
 
 _PrintMoveName:
-	TX_FAR _CF4BText
-	TX_ASM
+	text_far _CF4BText
+	text_asm
 	ld hl, ExclamationPointPointerTable
 	ld a, [wd11e] ; exclamation point num
 	add a
@@ -3766,24 +3766,24 @@
 	dw ExclamationPoint5Text
 
 ExclamationPoint1Text:
-	TX_FAR _ExclamationPoint1Text
-	db "@"
+	text_far _ExclamationPoint1Text
+	text_end
 
 ExclamationPoint2Text:
-	TX_FAR _ExclamationPoint2Text
-	db "@"
+	text_far _ExclamationPoint2Text
+	text_end
 
 ExclamationPoint3Text:
-	TX_FAR _ExclamationPoint3Text
-	db "@"
+	text_far _ExclamationPoint3Text
+	text_end
 
 ExclamationPoint4Text:
-	TX_FAR _ExclamationPoint4Text
-	db "@"
+	text_far _ExclamationPoint4Text
+	text_end
 
 ExclamationPoint5Text:
-	TX_FAR _ExclamationPoint5Text
-	db "@"
+	text_far _ExclamationPoint5Text
+	text_end
 
 ; this function does nothing useful
 ; if the move being used is in set [1-4] from ExclamationPointMoveSets,
@@ -3874,16 +3874,16 @@
 	jp ApplyDamageToEnemyPokemon
 
 AttackMissedText:
-	TX_FAR _AttackMissedText
-	db "@"
+	text_far _AttackMissedText
+	text_end
 
 KeptGoingAndCrashedText:
-	TX_FAR _KeptGoingAndCrashedText
-	db "@"
+	text_far _KeptGoingAndCrashedText
+	text_end
 
 UnaffectedText:
-	TX_FAR _UnaffectedText
-	db "@"
+	text_far _UnaffectedText
+	text_end
 
 PrintDoesntAffectText:
 	ld hl, DoesntAffectMonText
@@ -3890,8 +3890,8 @@
 	jp PrintText
 
 DoesntAffectMonText:
-	TX_FAR _DoesntAffectMonText
-	db "@"
+	text_far _DoesntAffectMonText
+	text_end
 
 ; if there was a critical hit or an OHKO was successful, print the corresponding text
 PrintCriticalOHKOText:
@@ -3919,12 +3919,12 @@
 	dw OHKOText
 
 CriticalHitText:
-	TX_FAR _CriticalHitText
-	db "@"
+	text_far _CriticalHitText
+	text_end
 
 OHKOText:
-	TX_FAR _OHKOText
-	db "@"
+	text_far _OHKOText
+	text_end
 
 ; checks if a traded mon will disobey due to lack of badges
 ; stores whether the mon will use a move in Z flag
@@ -4108,24 +4108,24 @@
 	ret
 
 LoafingAroundText:
-	TX_FAR _LoafingAroundText
-	db "@"
+	text_far _LoafingAroundText
+	text_end
 
 BeganToNapText:
-	TX_FAR _BeganToNapText
-	db "@"
+	text_far _BeganToNapText
+	text_end
 
 WontObeyText:
-	TX_FAR _WontObeyText
-	db "@"
+	text_far _WontObeyText
+	text_end
 
 TurnedAwayText:
-	TX_FAR _TurnedAwayText
-	db "@"
+	text_far _TurnedAwayText
+	text_end
 
 IgnoredOrdersText:
-	TX_FAR _IgnoredOrdersText
-	db "@"
+	text_far _IgnoredOrdersText
+	text_end
 
 ; sets b, c, d, and e for the CalculateDamage routine in the case of an attack by the player mon
 GetDamageVarsForPlayerAttack:
@@ -4997,12 +4997,12 @@
 	jp DrawHUDsAndHPBars
 
 SubstituteTookDamageText:
-	TX_FAR _SubstituteTookDamageText
-	db "@"
+	text_far _SubstituteTookDamageText
+	text_end
 
 SubstituteBrokeText:
-	TX_FAR _SubstituteBrokeText
-	db "@"
+	text_far _SubstituteBrokeText
+	text_end
 
 ; this function raises the attack modifier of a pokemon using Rage when that pokemon is attacked
 HandleBuildingRage:
@@ -5048,8 +5048,8 @@
 	ret
 
 BuildingRageText:
-	TX_FAR _BuildingRageText
-	db "@"
+	text_far _BuildingRageText
+	text_end
 
 ; copy last move for Mirror Move
 ; sets zero flag on failure and unsets zero flag on success
@@ -5084,8 +5084,8 @@
 	ret
 
 MirrorMoveFailedText:
-	TX_FAR _MirrorMoveFailedText
-	db "@"
+	text_far _MirrorMoveFailedText
+	text_end
 
 ; function used to reload move data for moves like Mirror Move and Metronome
 ReloadMoveData:
@@ -5759,8 +5759,8 @@
 	jr ExecuteEnemyMoveDone
 
 HitXTimesText:
-	TX_FAR _HitXTimesText
-	db "@"
+	text_far _HitXTimesText
+	text_end
 
 ExecuteEnemyMoveDone:
 	ld b, $1
@@ -6626,6 +6626,7 @@
 PrintEmptyString:
 	ld hl, .emptyString
 	jp PrintText
+
 .emptyString
 	db "@"
 
--- a/engine/battle/display_effectiveness.asm
+++ b/engine/battle/display_effectiveness.asm
@@ -10,9 +10,9 @@
 	jp PrintText
 
 SuperEffectiveText:
-	TX_FAR _SuperEffectiveText
-	db "@"
+	text_far _SuperEffectiveText
+	text_end
 
 NotVeryEffectiveText:
-	TX_FAR _NotVeryEffectiveText
-	db "@"
+	text_far _NotVeryEffectiveText
+	text_end
--- a/engine/battle/effects.asm
+++ b/engine/battle/effects.asm
@@ -68,12 +68,12 @@
 	jp PrintDidntAffectText
 
 FellAsleepText:
-	TX_FAR _FellAsleepText
-	db "@"
+	text_far _FellAsleepText
+	text_end
 
 AlreadyAsleepText:
-	TX_FAR _AlreadyAsleepText
-	db "@"
+	text_far _AlreadyAsleepText
+	text_end
 
 PoisonEffect:
 	ld hl, wEnemyMonStatus
@@ -162,12 +162,12 @@
 	jp PrintDidntAffectText
 
 PoisonedText:
-	TX_FAR _PoisonedText
-	db "@"
+	text_far _PoisonedText
+	text_end
 
 BadlyPoisonedText:
-	TX_FAR _BadlyPoisonedText
-	db "@"
+	text_far _BadlyPoisonedText
+	text_end
 
 DrainHPEffect:
 	jpab DrainHPEffect_
@@ -297,12 +297,12 @@
 	jp PrintText
 
 BurnedText:
-	TX_FAR _BurnedText
-	db "@"
+	text_far _BurnedText
+	text_end
 
 FrozenText:
-	TX_FAR _FrozenText
-	db "@"
+	text_far _FrozenText
+	text_end
 
 CheckDefrost:
 ; any fire-type move that has a chance inflict burn (all but Fire Spin) will defrost a frozen target
@@ -340,8 +340,8 @@
 	jp PrintText
 
 FireDefrostedText:
-	TX_FAR _FireDefrostedText
-	db "@"
+	text_far _FireDefrostedText
+	text_end
 
 StatModifierUpEffect:
 	ld hl, wPlayerMonStatMods
@@ -508,8 +508,8 @@
 	jp PrintText
 
 MonsStatsRoseText:
-	TX_FAR _MonsStatsRoseText
-	TX_ASM
+	text_far _MonsStatsRoseText
+	text_asm
 	ld hl, GreatlyRoseText
 	ld a, [hWhoseTurn]
 	and a
@@ -523,12 +523,12 @@
 	ret
 
 GreatlyRoseText:
-	TX_DELAY
-	TX_FAR _GreatlyRoseText
+	text_pause
+	text_far _GreatlyRoseText
 ; fallthrough
 RoseText:
-	TX_FAR _RoseText
-	db "@"
+	text_far _RoseText
+	text_end
 
 StatModifierDownEffect:
 	ld hl, wEnemyMonStatMods
@@ -710,8 +710,8 @@
 	jp ConditionalPrintButItFailed
 
 MonsStatsFellText:
-	TX_FAR _MonsStatsFellText
-	TX_ASM
+	text_far _MonsStatsFellText
+	text_asm
 	ld hl, FellText
 	ld a, [hWhoseTurn]
 	and a
@@ -728,12 +728,12 @@
 	ret
 
 GreatlyFellText:
-	TX_DELAY
-	TX_FAR _GreatlyFellText
+	text_pause
+	text_far _GreatlyFellText
 ; fallthrough
 FellText:
-	TX_FAR _FellText
-	db "@"
+	text_far _FellText
+	text_end
 
 PrintStatText:
 	ld hl, StatsTextStrings
@@ -905,16 +905,16 @@
 	jp PrintText
 
 RanFromBattleText:
-	TX_FAR _RanFromBattleText
-	db "@"
+	text_far _RanFromBattleText
+	text_end
 
 RanAwayScaredText:
-	TX_FAR _RanAwayScaredText
-	db "@"
+	text_far _RanAwayScaredText
+	text_end
 
 WasBlownAwayText:
-	TX_FAR _WasBlownAwayText
-	db "@"
+	text_far _WasBlownAwayText
+	text_end
 
 TwoToFiveAttacksEffect:
 	ld hl, wPlayerBattleStatus1
@@ -1024,8 +1024,8 @@
 	jp PrintText
 
 ChargeMoveEffectText:
-	TX_FAR _ChargeMoveEffectText
-	TX_ASM
+	text_far _ChargeMoveEffectText
+	text_asm
 	ld a, [wChargeMoveNum]
 	cp RAZOR_WIND
 	ld hl, MadeWhirlwindText
@@ -1048,28 +1048,28 @@
 	ret
 
 MadeWhirlwindText:
-	TX_FAR _MadeWhirlwindText
-	db "@"
+	text_far _MadeWhirlwindText
+	text_end
 
 TookInSunlightText:
-	TX_FAR _TookInSunlightText
-	db "@"
+	text_far _TookInSunlightText
+	text_end
 
 LoweredItsHeadText:
-	TX_FAR _LoweredItsHeadText
-	db "@"
+	text_far _LoweredItsHeadText
+	text_end
 
 SkyAttackGlowingText:
-	TX_FAR _SkyAttackGlowingText
-	db "@"
+	text_far _SkyAttackGlowingText
+	text_end
 
 FlewUpHighText:
-	TX_FAR _FlewUpHighText
-	db "@"
+	text_far _FlewUpHighText
+	text_end
 
 DugAHoleText:
-	TX_FAR _DugAHoleText
-	db "@"
+	text_far _DugAHoleText
+	text_end
 
 TrappingEffect:
 	ld hl, wPlayerBattleStatus1
@@ -1146,8 +1146,8 @@
 	jp PrintText
 
 BecameConfusedText:
-	TX_FAR _BecameConfusedText
-	db "@"
+	text_far _BecameConfusedText
+	text_end
 
 ConfusionEffectFailed:
 	cp CONFUSION_SIDE_EFFECT
@@ -1267,8 +1267,8 @@
 	jp PrintButItFailedText_
 
 MimicLearnedMoveText:
-	TX_FAR _MimicLearnedMoveText
-	db "@"
+	text_far _MimicLearnedMoveText
+	text_end
 
 LeechSeedEffect:
 	jpab LeechSeedEffect_
@@ -1361,8 +1361,8 @@
 	jp PrintButItFailedText_
 
 MoveWasDisabledText:
-	TX_FAR _MoveWasDisabledText
-	db "@"
+	text_far _MoveWasDisabledText
+	text_end
 
 PayDayEffect:
 	jpab PayDayEffect_
@@ -1383,8 +1383,8 @@
 	jpab ReflectLightScreenEffect_
 
 NothingHappenedText:
-	TX_FAR _NothingHappenedText
-	db "@"
+	text_far _NothingHappenedText
+	text_end
 
 PrintNoEffectText:
 	ld hl, NoEffectText
@@ -1391,8 +1391,8 @@
 	jp PrintText
 
 NoEffectText:
-	TX_FAR _NoEffectText
-	db "@"
+	text_far _NoEffectText
+	text_end
 
 ConditionalPrintButItFailed:
 	ld a, [wMoveDidntMiss]
@@ -1404,8 +1404,8 @@
 	jp PrintText
 
 ButItFailedText:
-	TX_FAR _ButItFailedText
-	db "@"
+	text_far _ButItFailedText
+	text_end
 
 PrintDidntAffectText:
 	ld hl, DidntAffectText
@@ -1412,12 +1412,12 @@
 	jp PrintText
 
 DidntAffectText:
-	TX_FAR _DidntAffectText
-	db "@"
+	text_far _DidntAffectText
+	text_end
 
 IsUnaffectedText:
-	TX_FAR _IsUnaffectedText
-	db "@"
+	text_far _IsUnaffectedText
+	text_end
 
 PrintMayNotAttackText:
 	ld hl, ParalyzedMayNotAttackText
@@ -1424,8 +1424,8 @@
 	jp PrintText
 
 ParalyzedMayNotAttackText:
-	TX_FAR _ParalyzedMayNotAttackText
-	db "@"
+	text_far _ParalyzedMayNotAttackText
+	text_end
 
 CheckTargetSubstitute:
 	push hl
--- a/engine/battle/end_of_battle.asm
+++ b/engine/battle/end_of_battle.asm
@@ -84,5 +84,5 @@
 	db "  DRAW@"
 
 PickUpPayDayMoneyText:
-	TX_FAR _PickUpPayDayMoneyText
-	db "@"
+	text_far _PickUpPayDayMoneyText
+	text_end
--- a/engine/battle/experience.asm
+++ b/engine/battle/experience.asm
@@ -340,8 +340,8 @@
 	ret
 
 GainedText:
-	TX_FAR _GainedText
-	TX_ASM
+	text_far _GainedText
+	text_asm
 	ld a, [wBoostExpByExpAll]
 	ld hl, WithExpAllText
 	and a
@@ -354,19 +354,19 @@
 	ret
 
 WithExpAllText:
-	TX_FAR _WithExpAllText
-	TX_ASM
+	text_far _WithExpAllText
+	text_asm
 	ld hl, ExpPointsText
 	ret
 
 BoostedText:
-	TX_FAR _BoostedText
+	text_far _BoostedText
 
 ExpPointsText:
-	TX_FAR _ExpPointsText
-	db "@"
+	text_far _ExpPointsText
+	text_end
 
 GrewLevelText:
-	TX_FAR _GrewLevelText
-	TX_SFX_LEVEL_UP
-	db "@"
+	text_far _GrewLevelText
+	sound_level_up
+	text_end
--- a/engine/battle/move_effects/conversion.asm
+++ b/engine/battle/move_effects/conversion.asm
@@ -25,8 +25,8 @@
 	jp PrintText
 
 ConvertedTypeText:
-	TX_FAR _ConvertedTypeText
-	db "@"
+	text_far _ConvertedTypeText
+	text_end
 
 PrintButItFailedText:
 	ld hl, PrintButItFailedText_
--- a/engine/battle/move_effects/drain_hp.asm
+++ b/engine/battle/move_effects/drain_hp.asm
@@ -96,9 +96,9 @@
 	jp PrintText
 
 SuckedHealthText:
-	TX_FAR _SuckedHealthText
-	db "@"
+	text_far _SuckedHealthText
+	text_end
 
 DreamWasEatenText:
-	TX_FAR _DreamWasEatenText
-	db "@"
+	text_far _DreamWasEatenText
+	text_end
--- a/engine/battle/move_effects/focus_energy.asm
+++ b/engine/battle/move_effects/focus_energy.asm
@@ -17,6 +17,6 @@
 	jpab PrintButItFailedText_
 
 GettingPumpedText:
-	TX_DELAY
-	TX_FAR _GettingPumpedText
-	db "@"
+	text_pause
+	text_far _GettingPumpedText
+	text_end
--- a/engine/battle/move_effects/haze.asm
+++ b/engine/battle/move_effects/haze.asm
@@ -77,5 +77,5 @@
 	ret
 
 StatusChangesEliminatedText:
-	TX_FAR _StatusChangesEliminatedText
-	db "@"
+	text_far _StatusChangesEliminatedText
+	text_end
--- a/engine/battle/move_effects/heal.asm
+++ b/engine/battle/move_effects/heal.asm
@@ -108,13 +108,13 @@
 	jp BankswitchEtoF
 
 StartedSleepingEffect:
-	TX_FAR _StartedSleepingEffect
-	db "@"
+	text_far _StartedSleepingEffect
+	text_end
 
 FellAsleepBecameHealthyText:
-	TX_FAR _FellAsleepBecameHealthyText
-	db "@"
+	text_far _FellAsleepBecameHealthyText
+	text_end
 
 RegainedHealthText:
-	TX_FAR _RegainedHealthText
-	db "@"
+	text_far _RegainedHealthText
+	text_end
--- a/engine/battle/move_effects/leech_seed.asm
+++ b/engine/battle/move_effects/leech_seed.asm
@@ -32,9 +32,9 @@
 	jp PrintText
 
 WasSeededText:
-	TX_FAR _WasSeededText
-	db "@"
+	text_far _WasSeededText
+	text_end
 
 EvadedAttackText:
-	TX_FAR _EvadedAttackText
-	db "@"
+	text_far _EvadedAttackText
+	text_end
--- a/engine/battle/move_effects/mist.asm
+++ b/engine/battle/move_effects/mist.asm
@@ -15,5 +15,5 @@
 	jpab PrintButItFailedText_
 
 ShroudedInMistText:
-	TX_FAR _ShroudedInMistText
-	db "@"
+	text_far _ShroudedInMistText
+	text_end
--- a/engine/battle/move_effects/pay_day.asm
+++ b/engine/battle/move_effects/pay_day.asm
@@ -41,5 +41,5 @@
 	jp PrintText
 
 CoinsScatteredText:
-	TX_FAR _CoinsScatteredText
-	db "@"
+	text_far _CoinsScatteredText
+	text_end
--- a/engine/battle/move_effects/recoil.asm
+++ b/engine/battle/move_effects/recoil.asm
@@ -66,5 +66,5 @@
 	ld hl, HitWithRecoilText
 	jp PrintText
 HitWithRecoilText:
-	TX_FAR _HitWithRecoilText
-	db "@"
+	text_far _HitWithRecoilText
+	text_end
--- a/engine/battle/move_effects/reflect_light_screen.asm
+++ b/engine/battle/move_effects/reflect_light_screen.asm
@@ -33,12 +33,12 @@
 	jp BankswitchEtoF
 
 LightScreenProtectedText:
-	TX_FAR _LightScreenProtectedText
-	db "@"
+	text_far _LightScreenProtectedText
+	text_end
 
 ReflectGainedArmorText:
-	TX_FAR _ReflectGainedArmorText
-	db "@"
+	text_far _ReflectGainedArmorText
+	text_end
 
 BankswitchEtoF:
 	ld b, BANK(BattleCore)
--- a/engine/battle/move_effects/substitute.asm
+++ b/engine/battle/move_effects/substitute.asm
@@ -65,13 +65,13 @@
 	jp PrintText
 
 SubstituteText:
-	TX_FAR _SubstituteText
-	db "@"
+	text_far _SubstituteText
+	text_end
 
 HasSubstituteText:
-	TX_FAR _HasSubstituteText
-	db "@"
+	text_far _HasSubstituteText
+	text_end
 
 TooWeakSubstituteText:
-	TX_FAR _TooWeakSubstituteText
-	db "@"
+	text_far _TooWeakSubstituteText
+	text_end
--- a/engine/battle/move_effects/transform.asm
+++ b/engine/battle/move_effects/transform.asm
@@ -144,5 +144,5 @@
 	jp BankswitchEtoF
 
 TransformedText:
-	TX_FAR _TransformedText
-	db "@"
+	text_far _TransformedText
+	text_end
--- a/engine/battle/safari_zone.asm
+++ b/engine/battle/safari_zone.asm
@@ -28,9 +28,9 @@
 	jp PrintText
 
 SafariZoneEatingText:
-	TX_FAR _SafariZoneEatingText
-	db "@"
+	text_far _SafariZoneEatingText
+	text_end
 
 SafariZoneAngryText:
-	TX_FAR _SafariZoneAngryText
-	db "@"
+	text_far _SafariZoneAngryText
+	text_end
--- a/engine/battle/trainer_ai.asm
+++ b/engine/battle/trainer_ai.asm
@@ -610,8 +610,8 @@
 	ret
 
 AIBattleWithdrawText:
-	TX_FAR _AIBattleWithdrawText
-	db "@"
+	text_far _AIBattleWithdrawText
+	text_end
 
 AIUseFullHeal:
 	call AIPlayRestoringSFX
@@ -735,5 +735,5 @@
 	jp PrintText
 
 AIBattleUseItemText:
-	TX_FAR _AIBattleUseItemText
-	db "@"
+	text_far _AIBattleUseItemText
+	text_end
--- a/engine/events/card_key.asm
+++ b/engine/events/card_key.asm
@@ -72,14 +72,14 @@
 	db $FF
 
 CardKeySuccessText::
-	TX_FAR _CardKeySuccessText1
-	TX_SFX_ITEM_1
-	TX_FAR _CardKeySuccessText2
-	db "@"
+	text_far _CardKeySuccessText1
+	sound_get_item_1
+	text_far _CardKeySuccessText2
+	text_end
 
 CardKeyFailText::
-	TX_FAR _CardKeyFailText
-	db "@"
+	text_far _CardKeyFailText
+	text_end
 
 ; d = Y
 ; e = X
--- a/engine/events/cinnabar_lab.asm
+++ b/engine/events/cinnabar_lab.asm
@@ -73,20 +73,20 @@
 	ret
 
 LabFossil_610ae:
-	TX_FAR _Lab4Text_610ae
-	db "@"
+	text_far _Lab4Text_610ae
+	text_end
 
 LabFossil_610b3:
-	TX_FAR _Lab4Text_610b3
-	db "@"
+	text_far _Lab4Text_610b3
+	text_end
 
 LabFossil_610b8:
-	TX_FAR _Lab4Text_610b8
-	db "@"
+	text_far _Lab4Text_610b8
+	text_end
 
 LabFossil_610bd:
-	TX_FAR _Lab4Text_610bd
-	db "@"
+	text_far _Lab4Text_610bd
+	text_end
 
 PrintFossilsInBag:
 ; Prints each fossil in the player's bag on a separate line in the menu.
--- a/engine/events/diploma.asm
+++ b/engine/events/diploma.asm
@@ -1,3 +1,5 @@
+CIRCLE_TILE_ID EQU $70
+
 DisplayDiploma::
 	call SaveScreenTilesToBuffer2
 	call GBPalWhiteOutWithDelay3
@@ -8,7 +10,7 @@
 	set 6, [hl]
 	call DisableLCD
 	ld hl, CircleTile
-	ld de, vChars2 + $700
+	ld de, vChars2 + CIRCLE_TILE_ID * $10
 	ld bc, $10
 	ld a, BANK(CircleTile)
 	call FarCopyData2
@@ -94,7 +96,7 @@
 	dwCoord 9, 16
 
 DiplomaText:
-	db $70,"Diploma",$70,"@"
+	db CIRCLE_TILE_ID, "Diploma", CIRCLE_TILE_ID, "@"
 
 DiplomaPlayer:
 	db "Player@"
--- a/engine/events/elevator.asm
+++ b/engine/events/elevator.asm
@@ -44,5 +44,5 @@
 	ret
 
 WhichFloorText:
-	TX_FAR _WhichFloorText
-	db "@"
+	text_far _WhichFloorText
+	text_end
--- a/engine/events/give_pokemon.asm
+++ b/engine/events/give_pokemon.asm
@@ -69,14 +69,14 @@
 	jp PrintText
 
 GotMonText:
-	TX_FAR _GotMonText
-	TX_SFX_ITEM_1
-	db "@"
+	text_far _GotMonText
+	sound_get_item_1
+	text_end
 
 SentToBoxText:
-	TX_FAR _SentToBoxText
-	db "@"
+	text_far _SentToBoxText
+	text_end
 
 BoxIsFullText:
-	TX_FAR _BoxIsFullText
-	db "@"
+	text_far _BoxIsFullText
+	text_end
--- a/engine/events/hidden_items.asm
+++ b/engine/events/hidden_items.asm
@@ -21,8 +21,8 @@
 INCLUDE "data/events/hidden_item_coords.asm"
 
 FoundHiddenItemText::
-	TX_FAR _FoundHiddenItemText
-	TX_ASM
+	text_far _FoundHiddenItemText
+	text_asm
 	ld a, [wHiddenObjectFunctionArgument] ; item ID
 	ld b, a
 	ld c, 1
@@ -46,8 +46,8 @@
 	jp TextScriptEnd
 
 HiddenItemBagFullText::
-	TX_FAR _HiddenItemBagFullText
-	db "@"
+	text_far _HiddenItemBagFullText
+	text_end
 
 HiddenCoins:
 	ld b, COIN_CASE
@@ -121,15 +121,15 @@
 INCLUDE "data/events/hidden_coins.asm"
 
 FoundHiddenCoinsText::
-	TX_FAR _FoundHiddenCoinsText
-	TX_SFX_ITEM_2
-	db "@"
+	text_far _FoundHiddenCoinsText
+	sound_get_item_2
+	text_end
 
 DroppedHiddenCoinsText::
-	TX_FAR _FoundHiddenCoins2Text
-	TX_SFX_ITEM_2
-	TX_FAR _DroppedHiddenCoinsText
-	db "@"
+	text_far _FoundHiddenCoins2Text
+	sound_get_item_2
+	text_far _DroppedHiddenCoinsText
+	text_end
 
 FindHiddenItemOrCoinsIndex:
 	ld a, [wHiddenObjectY]
--- a/engine/events/hidden_objects/bench_guys.asm
+++ b/engine/events/hidden_objects/bench_guys.asm
@@ -50,59 +50,59 @@
 	db $FF
 
 ViridianCityPokecenterBenchGuyText::
-	TX_FAR _ViridianCityPokecenterGuyText
-	db "@"
+	text_far _ViridianCityPokecenterGuyText
+	text_end
 
 PewterCityPokecenterBenchGuyText::
-	TX_FAR _PewterCityPokecenterGuyText
-	db "@"
+	text_far _PewterCityPokecenterGuyText
+	text_end
 
 CeruleanCityPokecenterBenchGuyText::
-	TX_FAR _CeruleanPokecenterGuyText
-	db "@"
+	text_far _CeruleanPokecenterGuyText
+	text_end
 
 LavenderCityPokecenterBenchGuyText::
-	TX_FAR _LavenderPokecenterGuyText
-	db "@"
+	text_far _LavenderPokecenterGuyText
+	text_end
 
 MtMoonPokecenterBenchGuyText::
-	TX_FAR _MtMoonPokecenterBenchGuyText
-	db "@"
+	text_far _MtMoonPokecenterBenchGuyText
+	text_end
 
 RockTunnelPokecenterBenchGuyText::
-	TX_FAR _RockTunnelPokecenterGuyText
-	db "@"
+	text_far _RockTunnelPokecenterGuyText
+	text_end
 
 UnusedBenchGuyText1::
-	TX_FAR _UnusedBenchGuyText1
-	db "@"
+	text_far _UnusedBenchGuyText1
+	text_end
 
 UnusedBenchGuyText2::
-	TX_FAR _UnusedBenchGuyText2
-	db "@"
+	text_far _UnusedBenchGuyText2
+	text_end
 
 UnusedBenchGuyText3::
-	TX_FAR _UnusedBenchGuyText3
-	db "@"
+	text_far _UnusedBenchGuyText3
+	text_end
 
 VermilionCityPokecenterBenchGuyText::
-	TX_FAR _VermilionPokecenterGuyText
-	db "@"
+	text_far _VermilionPokecenterGuyText
+	text_end
 
 CeladonCityPokecenterBenchGuyText::
-	TX_FAR _CeladonCityPokecenterGuyText
-	db "@"
+	text_far _CeladonCityPokecenterGuyText
+	text_end
 
 FuchsiaCityPokecenterBenchGuyText::
-	TX_FAR _FuchsiaCityPokecenterGuyText
-	db "@"
+	text_far _FuchsiaCityPokecenterGuyText
+	text_end
 
 CinnabarIslandPokecenterBenchGuyText::
-	TX_FAR _CinnabarPokecenterGuyText
-	db "@"
+	text_far _CinnabarPokecenterGuyText
+	text_end
 
 SaffronCityPokecenterBenchGuyText::
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	ld hl, SaffronCityPokecenterBenchGuyText2
 	jr nz, .asm_624f2
@@ -112,13 +112,13 @@
 	jp TextScriptEnd
 
 SaffronCityPokecenterBenchGuyText1:
-	TX_FAR _SaffronCityPokecenterGuyText1
-	db "@"
+	text_far _SaffronCityPokecenterGuyText1
+	text_end
 
 SaffronCityPokecenterBenchGuyText2:
-	TX_FAR _SaffronCityPokecenterGuyText2
-	db "@"
+	text_far _SaffronCityPokecenterGuyText2
+	text_end
 
 CeladonCityHotelText::
-	TX_FAR _CeladonCityHotelText
-	db "@"
+	text_far _CeladonCityHotelText
+	text_end
--- a/engine/events/hidden_objects/bills_house_pc.asm
+++ b/engine/events/hidden_objects/bills_house_pc.asm
@@ -45,13 +45,13 @@
 	ret
 
 BillsHouseMonitorText::
-	TX_FAR _BillsHouseMonitorText
-	db "@"
+	text_far _BillsHouseMonitorText
+	text_end
 
 BillsHouseInitiatedText::
-	TX_FAR _BillsHouseInitiatedText
-	TX_BLINK
-	TX_ASM
+	text_far _BillsHouseInitiatedText
+	text_promptbutton
+	text_asm
 	ld a, SFX_STOP_ALL_MUSIC
 	ld [wNewSoundID], a
 	call PlaySound
@@ -65,7 +65,7 @@
 	jp TextScriptEnd
 
 BillsHousePokemonList::
-	TX_ASM
+	text_asm
 	call SaveScreenTilesToBuffer1
 	ld hl, BillsHousePokemonListText1
 	call PrintText
@@ -119,8 +119,8 @@
 	jp TextScriptEnd
 
 BillsHousePokemonListText1:
-	TX_FAR _BillsHousePokemonListText1
-	db "@"
+	text_far _BillsHousePokemonListText1
+	text_end
 
 BillsMonListText:
 	db   "EEVEE"
@@ -130,5 +130,5 @@
 	next "CANCEL@"
 
 BillsHousePokemonListText2:
-	TX_FAR _BillsHousePokemonListText2
-	db "@"
+	text_far _BillsHousePokemonListText2
+	text_end
--- a/engine/events/hidden_objects/blues_room.asm
+++ b/engine/events/hidden_objects/blues_room.asm
@@ -9,5 +9,5 @@
 	tx_pre_jump BookcaseText
 
 BookcaseText::
-	TX_FAR _BookcaseText
-	db "@"
+	text_far _BookcaseText
+	text_end
--- a/engine/events/hidden_objects/book_or_sculpture.asm
+++ b/engine/events/hidden_objects/book_or_sculpture.asm
@@ -1,5 +1,5 @@
 BookOrSculptureText::
-	TX_ASM
+	text_asm
 	ld hl, PokemonBooksText
 	ld a, [wCurMapTileset]
 	cp MANSION ; Celadon Mansion tileset
@@ -13,9 +13,9 @@
 	jp TextScriptEnd
 
 PokemonBooksText:
-	TX_FAR _PokemonBooksText
-	db "@"
+	text_far _PokemonBooksText
+	text_end
 
 DiglettSculptureText:
-	TX_FAR _DiglettSculptureText
-	db "@"
+	text_far _DiglettSculptureText
+	text_end
--- a/engine/events/hidden_objects/cinnabar_gym_quiz.asm
+++ b/engine/events/hidden_objects/cinnabar_gym_quiz.asm
@@ -6,7 +6,7 @@
 	tx_pre_jump CinnabarGymQuiz
 
 CinnabarGymQuiz::
-	TX_ASM
+	text_asm
 	xor a
 	ld [wOpponentAfterWrongAnswer], a
 	ld a, [wHiddenObjectFunctionArgument]
@@ -36,8 +36,8 @@
 	jp TextScriptEnd
 
 CinnabarGymQuizIntroText:
-	TX_FAR _CinnabarGymQuizIntroText
-	db "@"
+	text_far _CinnabarGymQuizIntroText
+	text_end
 
 CinnabarQuizQuestions:
 	dw CinnabarQuizQuestionsText1
@@ -48,28 +48,28 @@
 	dw CinnabarQuizQuestionsText6
 
 CinnabarQuizQuestionsText1:
-	TX_FAR _CinnabarQuizQuestionsText1
-	db "@"
+	text_far _CinnabarQuizQuestionsText1
+	text_end
 
 CinnabarQuizQuestionsText2:
-	TX_FAR _CinnabarQuizQuestionsText2
-	db "@"
+	text_far _CinnabarQuizQuestionsText2
+	text_end
 
 CinnabarQuizQuestionsText3:
-	TX_FAR _CinnabarQuizQuestionsText3
-	db "@"
+	text_far _CinnabarQuizQuestionsText3
+	text_end
 
 CinnabarQuizQuestionsText4:
-	TX_FAR _CinnabarQuizQuestionsText4
-	db "@"
+	text_far _CinnabarQuizQuestionsText4
+	text_end
 
 CinnabarQuizQuestionsText5:
-	TX_FAR _CinnabarQuizQuestionsText5
-	db "@"
+	text_far _CinnabarQuizQuestionsText5
+	text_end
 
 CinnabarQuizQuestionsText6:
-	TX_FAR _CinnabarQuizQuestionsText6
-	db "@"
+	text_far _CinnabarQuizQuestionsText6
+	text_end
 
 CinnabarGymGateFlagAction:
 	EventFlagAddress hl, EVENT_CINNABAR_GYM_GATE0_UNLOCKED
@@ -117,10 +117,10 @@
 	ret
 
 CinnabarGymQuizCorrectText:
-	TX_SFX_ITEM_1
-	TX_FAR _CinnabarGymQuizCorrectText
-	TX_BLINK
-	TX_ASM
+	sound_get_item_1
+	text_far _CinnabarGymQuizCorrectText
+	text_promptbutton
+	text_asm
 
 	ld a, [hBackupGymGateIndex]
 	AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0
@@ -137,8 +137,8 @@
 	jp TextScriptEnd
 
 CinnabarGymQuizIncorrectText:
-	TX_FAR _CinnabarGymQuizIncorrectText
-	db "@"
+	text_far _CinnabarGymQuizIncorrectText
+	text_end
 
 UpdateCinnabarGymGateTileBlocks_::
 ; Update the overworld map with open floor blocks or locked gate blocks
--- a/engine/events/hidden_objects/elevator.asm
+++ b/engine/events/hidden_objects/elevator.asm
@@ -1,3 +1,3 @@
 ElevatorText::
-	TX_FAR _ElevatorText
-	db "@"
+	text_far _ElevatorText
+	text_end
--- a/engine/events/hidden_objects/fighting_dojo.asm
+++ b/engine/events/hidden_objects/fighting_dojo.asm
@@ -3,8 +3,8 @@
 	tx_pre_jump EnemiesOnEverySideText
 
 EnemiesOnEverySideText::
-	TX_FAR _EnemiesOnEverySideText
-	db "@"
+	text_far _EnemiesOnEverySideText
+	text_end
 
 PrintFightingDojoText3:
 	call EnableAutoTextBoxDrawing
@@ -11,8 +11,8 @@
 	tx_pre_jump WhatGoesAroundComesAroundText
 
 WhatGoesAroundComesAroundText::
-	TX_FAR _WhatGoesAroundComesAroundText
-	db "@"
+	text_far _WhatGoesAroundComesAroundText
+	text_end
 
 PrintFightingDojoText:
 	call EnableAutoTextBoxDrawing
@@ -19,5 +19,5 @@
 	tx_pre_jump FightingDojoText
 
 FightingDojoText::
-	TX_FAR _FightingDojoText
-	db "@"
+	text_far _FightingDojoText
+	text_end
--- a/engine/events/hidden_objects/gym_statues.asm
+++ b/engine/events/hidden_objects/gym_statues.asm
@@ -40,9 +40,9 @@
 	db $ff
 
 GymStatueText1::
-	TX_FAR _GymStatueText1
-	db "@"
+	text_far _GymStatueText1
+	text_end
 
 GymStatueText2::
-	TX_FAR _GymStatueText2
-	db "@"
+	text_far _GymStatueText2
+	text_end
--- a/engine/events/hidden_objects/indigo_plateau_hq.asm
+++ b/engine/events/hidden_objects/indigo_plateau_hq.asm
@@ -6,5 +6,5 @@
 	tx_pre_jump IndigoPlateauHQText
 
 IndigoPlateauHQText::
-	TX_FAR _IndigoPlateauHQText
-	db "@"
+	text_far _IndigoPlateauHQText
+	text_end
--- a/engine/events/hidden_objects/indigo_plateau_statues.asm
+++ b/engine/events/hidden_objects/indigo_plateau_statues.asm
@@ -1,5 +1,5 @@
 IndigoPlateauStatues::
-	TX_ASM
+	text_asm
 	ld hl, IndigoPlateauStatuesText1
 	call PrintText
 	ld a, [wXCoord]
@@ -12,13 +12,13 @@
 	jp TextScriptEnd
 
 IndigoPlateauStatuesText1:
-	TX_FAR _IndigoPlateauStatuesText1
-	db "@"
+	text_far _IndigoPlateauStatuesText1
+	text_end
 
 IndigoPlateauStatuesText2:
-	TX_FAR _IndigoPlateauStatuesText2
-	db "@"
+	text_far _IndigoPlateauStatuesText2
+	text_end
 
 IndigoPlateauStatuesText3:
-	TX_FAR _IndigoPlateauStatuesText3
-	db "@"
+	text_far _IndigoPlateauStatuesText3
+	text_end
--- a/engine/events/hidden_objects/magazines.asm
+++ b/engine/events/hidden_objects/magazines.asm
@@ -4,5 +4,5 @@
 	ret
 
 MagazinesText::
-	TX_FAR _MagazinesText
-	db "@"
+	text_far _MagazinesText
+	text_end
--- a/engine/events/hidden_objects/museum_fossils.asm
+++ b/engine/events/hidden_objects/museum_fossils.asm
@@ -7,8 +7,8 @@
 	ret
 
 AerodactylFossilText::
-	TX_FAR _AerodactylFossilText
-	db "@"
+	text_far _AerodactylFossilText
+	text_end
 
 KabutopsFossil:
 	ld a, FOSSIL_KABUTOPS
@@ -19,8 +19,8 @@
 	ret
 
 KabutopsFossilText::
-	TX_FAR _KabutopsFossilText
-	db "@"
+	text_far _KabutopsFossilText
+	text_end
 
 DisplayMonFrontSpriteInBox:
 ; Displays a pokemon's front sprite in a pop-up window.
--- a/engine/events/hidden_objects/new_bike.asm
+++ b/engine/events/hidden_objects/new_bike.asm
@@ -3,5 +3,5 @@
 	tx_pre_jump NewBicycleText
 
 NewBicycleText::
-	TX_FAR _NewBicycleText
-	db "@"
+	text_far _NewBicycleText
+	text_end
--- a/engine/events/hidden_objects/oaks_lab_email.asm
+++ b/engine/events/hidden_objects/oaks_lab_email.asm
@@ -6,5 +6,5 @@
 	tx_pre_jump OakLabEmailText
 
 OakLabEmailText::
-	TX_FAR _OakLabEmailText
-	db "@"
+	text_far _OakLabEmailText
+	text_end
--- a/engine/events/hidden_objects/oaks_lab_posters.asm
+++ b/engine/events/hidden_objects/oaks_lab_posters.asm
@@ -3,8 +3,8 @@
 	tx_pre_jump PushStartText
 
 PushStartText::
-	TX_FAR _PushStartText
-	db "@"
+	text_far _PushStartText
+	text_end
 
 DisplayOakLabRightPoster:
 	call EnableAutoTextBoxDrawing
@@ -21,9 +21,9 @@
 	jp PrintPredefTextID
 
 SaveOptionText::
-	TX_FAR _SaveOptionText
-	db "@"
+	text_far _SaveOptionText
+	text_end
 
 StrengthsAndWeaknessesText::
-	TX_FAR _StrengthsAndWeaknessesText
-	db "@"
+	text_far _StrengthsAndWeaknessesText
+	text_end
--- a/engine/events/hidden_objects/pokecenter_pc.asm
+++ b/engine/events/hidden_objects/pokecenter_pc.asm
@@ -8,4 +8,4 @@
 	tx_pre_jump PokemonCenterPCText
 
 PokemonCenterPCText::
-	TX_POKECENTER_PC
+	script_pokecenter_pc
--- a/engine/events/hidden_objects/pokemon_stuff.asm
+++ b/engine/events/hidden_objects/pokemon_stuff.asm
@@ -1,3 +1,3 @@
 PokemonStuffText::
-	TX_FAR _PokemonStuffText
-	db "@"
+	text_far _PokemonStuffText
+	text_end
--- a/engine/events/hidden_objects/reds_room.asm
+++ b/engine/events/hidden_objects/reds_room.asm
@@ -3,8 +3,8 @@
 	tx_pre_jump RedBedroomSNESText
 
 RedBedroomSNESText::
-	TX_FAR _RedBedroomSNESText
-	db "@"
+	text_far _RedBedroomSNESText
+	text_end
 
 OpenRedsPC:
 	call EnableAutoTextBoxDrawing
@@ -11,4 +11,4 @@
 	tx_pre_jump RedBedroomPCText
 
 RedBedroomPCText::
-	TX_PLAYERS_PC
+	script_players_pc
--- a/engine/events/hidden_objects/route_15_binoculars.asm
+++ b/engine/events/hidden_objects/route_15_binoculars.asm
@@ -10,5 +10,5 @@
 	jp DisplayMonFrontSpriteInBox
 
 Route15UpstairsBinocularsText::
-	TX_FAR _Route15UpstairsBinocularsText
-	db "@"
+	text_far _Route15UpstairsBinocularsText
+	text_end
--- a/engine/events/hidden_objects/safari_game.asm
+++ b/engine/events/hidden_objects/safari_game.asm
@@ -59,7 +59,7 @@
 	jp PrintText
 
 SafariGameOverText:
-	TX_ASM
+	text_asm
 	ld a, [wNumSafariBalls]
 	and a
 	jr z, .noMoreSafariBalls
@@ -71,9 +71,9 @@
 	jp TextScriptEnd
 
 TimesUpText:
-	TX_FAR _TimesUpText
-	db "@"
+	text_far _TimesUpText
+	text_end
 
 GameOverText:
-	TX_FAR _GameOverText
-	db "@"
+	text_far _GameOverText
+	text_end
--- a/engine/events/hidden_objects/school_blackboard.asm
+++ b/engine/events/hidden_objects/school_blackboard.asm
@@ -7,7 +7,7 @@
 	ret
 
 LinkCableHelp::
-	TX_ASM
+	text_asm
 	call SaveScreenTilesToBuffer1
 	ld hl, LinkCableHelpText1
 	call PrintText
@@ -60,12 +60,12 @@
 	jp TextScriptEnd
 
 LinkCableHelpText1:
-	TX_FAR _LinkCableHelpText1
-	db "@"
+	text_far _LinkCableHelpText1
+	text_end
 
 LinkCableHelpText2:
-	TX_FAR _LinkCableHelpText2
-	db "@"
+	text_far _LinkCableHelpText2
+	text_end
 
 HowToLinkText:
 	db   "HOW TO LINK"
@@ -79,19 +79,19 @@
 	dw LinkCableInfoText3
 
 LinkCableInfoText1:
-	TX_FAR _LinkCableInfoText1
-	db "@"
+	text_far _LinkCableInfoText1
+	text_end
 
 LinkCableInfoText2:
-	TX_FAR _LinkCableInfoText2
-	db "@"
+	text_far _LinkCableInfoText2
+	text_end
 
 LinkCableInfoText3:
-	TX_FAR _LinkCableInfoText3
-	db "@"
+	text_far _LinkCableInfoText3
+	text_end
 
 ViridianSchoolBlackboard::
-	TX_ASM
+	text_asm
 	call SaveScreenTilesToBuffer1
 	ld hl, ViridianSchoolBlackboardText1
 	call PrintText
@@ -177,12 +177,12 @@
 	jp TextScriptEnd
 
 ViridianSchoolBlackboardText1:
-	TX_FAR _ViridianSchoolBlackboardText1
-	db "@"
+	text_far _ViridianSchoolBlackboardText1
+	text_end
 
 ViridianSchoolBlackboardText2:
-	TX_FAR _ViridianSchoolBlackboardText2
-	db "@"
+	text_far _ViridianSchoolBlackboardText2
+	text_end
 
 StatusAilmentText1:
 	db   " SLP"
@@ -192,8 +192,10 @@
 StatusAilmentText2:
 	db   " BRN"
 	next " FRZ"
-	next " QUIT@@"
+	next " QUIT@"
 
+	db "@" ; unused
+
 ViridianBlackboardStatusPointers:
 	dw ViridianBlackboardSleepText
 	dw ViridianBlackboardPoisonText
@@ -202,21 +204,21 @@
 	dw ViridianBlackboardFrozenText
 
 ViridianBlackboardSleepText:
-	TX_FAR _ViridianBlackboardSleepText
-	db "@"
+	text_far _ViridianBlackboardSleepText
+	text_end
 
 ViridianBlackboardPoisonText:
-	TX_FAR _ViridianBlackboardPoisonText
-	db "@"
+	text_far _ViridianBlackboardPoisonText
+	text_end
 
 ViridianBlackboardPrlzText:
-	TX_FAR _ViridianBlackboardPrlzText
-	db "@"
+	text_far _ViridianBlackboardPrlzText
+	text_end
 
 ViridianBlackboardBurnText:
-	TX_FAR _ViridianBlackboardBurnText
-	db "@"
+	text_far _ViridianBlackboardBurnText
+	text_end
 
 ViridianBlackboardFrozenText:
-	TX_FAR _ViridianBlackboardFrozenText
-	db "@"
+	text_far _ViridianBlackboardFrozenText
+	text_end
--- a/engine/events/hidden_objects/school_notebooks.asm
+++ b/engine/events/hidden_objects/school_notebooks.asm
@@ -6,12 +6,12 @@
 	jp PrintPredefTextID
 
 TMNotebook::
-	TX_FAR TMNotebookText
-	TX_WAIT
-	db "@"
+	text_far TMNotebookText
+	text_linkpromptbutton
+	text_end
 
 ViridianSchoolNotebook::
-	TX_ASM
+	text_asm
 	ld hl, ViridianSchoolNotebookText1
 	call PrintText
 	call TurnPageSchoolNotebook
@@ -40,26 +40,26 @@
 	ret
 
 TurnPageText:
-	TX_FAR _TurnPageText
-	db "@"
+	text_far _TurnPageText
+	text_end
 
 ViridianSchoolNotebookText5:
-	TX_FAR _ViridianSchoolNotebookText5
-	TX_WAIT
-	db "@"
+	text_far _ViridianSchoolNotebookText5
+	text_linkpromptbutton
+	text_end
 
 ViridianSchoolNotebookText1:
-	TX_FAR _ViridianSchoolNotebookText1
-	db "@"
+	text_far _ViridianSchoolNotebookText1
+	text_end
 
 ViridianSchoolNotebookText2:
-	TX_FAR _ViridianSchoolNotebookText2
-	db "@"
+	text_far _ViridianSchoolNotebookText2
+	text_end
 
 ViridianSchoolNotebookText3:
-	TX_FAR _ViridianSchoolNotebookText3
-	db "@"
+	text_far _ViridianSchoolNotebookText3
+	text_end
 
 ViridianSchoolNotebookText4:
-	TX_FAR _ViridianSchoolNotebookText4
-	db "@"
+	text_far _ViridianSchoolNotebookText4
+	text_end
--- a/engine/events/hidden_objects/town_map.asm
+++ b/engine/events/hidden_objects/town_map.asm
@@ -1,7 +1,7 @@
 TownMapText::
-	TX_FAR _TownMapText
-	TX_BLINK
-	TX_ASM
+	text_far _TownMapText
+	text_promptbutton
+	text_asm
 	ld a, $1
 	ld [wDoNotWaitForButtonPressAfterDisplayingText], a
 	ld hl, wd730
--- a/engine/events/hidden_objects/vermilion_gym_trash.asm
+++ b/engine/events/hidden_objects/vermilion_gym_trash.asm
@@ -3,8 +3,8 @@
 	tx_pre_jump VermilionGymTrashText
 
 VermilionGymTrashText::
-	TX_FAR _VermilionGymTrashText
-	db "@"
+	text_far _VermilionGymTrashText
+	text_end
 
 GymTrashScript:
 	call EnableAutoTextBoxDrawing
@@ -128,8 +128,8 @@
 	db 2, 11, 13,  0,  0 ; 14
 
 VermilionGymTrashSuccessText1::
-	TX_FAR _VermilionGymTrashSuccessText1
-	TX_ASM
+	text_far _VermilionGymTrashSuccessText1
+	text_asm
 	call WaitForSoundToFinish
 	ld a, SFX_SWITCH
 	call PlaySound
@@ -138,12 +138,12 @@
 
 ; unused
 VermilionGymTrashSuccessText2::
-	TX_FAR _VermilionGymTrashSuccessText2
-	db "@"
+	text_far _VermilionGymTrashSuccessText2
+	text_end
 
 ; unused
 VermilionGymTrashSuccesPlaySfx:
-	TX_ASM
+	text_asm
 	call WaitForSoundToFinish
 	ld a, SFX_SWITCH
 	call PlaySound
@@ -151,8 +151,8 @@
 	jp TextScriptEnd
 
 VermilionGymTrashSuccessText3::
-	TX_FAR _VermilionGymTrashSuccessText3
-	TX_ASM
+	text_far _VermilionGymTrashSuccessText3
+	text_asm
 	call WaitForSoundToFinish
 	ld a, SFX_GO_INSIDE
 	call PlaySound
@@ -160,8 +160,8 @@
 	jp TextScriptEnd
 
 VermilionGymTrashFailText::
-	TX_FAR _VermilionGymTrashFailText
-	TX_ASM
+	text_far _VermilionGymTrashFailText
+	text_asm
 	call WaitForSoundToFinish
 	ld a, SFX_DENIED
 	call PlaySound
--- a/engine/events/in_game_trades.asm
+++ b/engine/events/in_game_trades.asm
@@ -230,8 +230,7 @@
 	ret
 
 InGameTrade_TrainerString:
-	; "TRAINER@@@@@@@@@@"
-	db $5d, "@@@@@@@@@@"
+	db "<TRAINER>@@@@@@@@@@"
 
 InGameTradeTextPointers:
 	dw TradeTextPointers1
@@ -260,71 +259,71 @@
 	dw AfterTrade3Text
 
 ConnectCableText:
-	TX_FAR _ConnectCableText
-	db "@"
+	text_far _ConnectCableText
+	text_end
 
 TradedForText:
-	TX_FAR _TradedForText
-	TX_SFX_KEY_ITEM
-	TX_DELAY
-	db "@"
+	text_far _TradedForText
+	sound_get_key_item
+	text_pause
+	text_end
 
 WannaTrade1Text:
-	TX_FAR _WannaTrade1Text
-	db "@"
+	text_far _WannaTrade1Text
+	text_end
 
 NoTrade1Text:
-	TX_FAR _NoTrade1Text
-	db "@"
+	text_far _NoTrade1Text
+	text_end
 
 WrongMon1Text:
-	TX_FAR _WrongMon1Text
-	db "@"
+	text_far _WrongMon1Text
+	text_end
 
 Thanks1Text:
-	TX_FAR _Thanks1Text
-	db "@"
+	text_far _Thanks1Text
+	text_end
 
 AfterTrade1Text:
-	TX_FAR _AfterTrade1Text
-	db "@"
+	text_far _AfterTrade1Text
+	text_end
 
 WannaTrade2Text:
-	TX_FAR _WannaTrade2Text
-	db "@"
+	text_far _WannaTrade2Text
+	text_end
 
 NoTrade2Text:
-	TX_FAR _NoTrade2Text
-	db "@"
+	text_far _NoTrade2Text
+	text_end
 
 WrongMon2Text:
-	TX_FAR _WrongMon2Text
-	db "@"
+	text_far _WrongMon2Text
+	text_end
 
 Thanks2Text:
-	TX_FAR _Thanks2Text
-	db "@"
+	text_far _Thanks2Text
+	text_end
 
 AfterTrade2Text:
-	TX_FAR _AfterTrade2Text
-	db "@"
+	text_far _AfterTrade2Text
+	text_end
 
 WannaTrade3Text:
-	TX_FAR _WannaTrade3Text
-	db "@"
+	text_far _WannaTrade3Text
+	text_end
 
 NoTrade3Text:
-	TX_FAR _NoTrade3Text
-	db "@"
+	text_far _NoTrade3Text
+	text_end
 
 WrongMon3Text:
-	TX_FAR _WrongMon3Text
-	db "@"
+	text_far _WrongMon3Text
+	text_end
 
 Thanks3Text:
-	TX_FAR _Thanks3Text
-	db "@"
+	text_far _Thanks3Text
+	text_end
 
 AfterTrade3Text:
-	TX_FAR _AfterTrade3Text
-	db "@"
+	text_far _AfterTrade3Text
+	text_end
--- a/engine/events/oaks_aide.asm
+++ b/engine/events/oaks_aide.asm
@@ -46,26 +46,26 @@
 	ret
 
 OaksAideHiText:
-	TX_FAR _OaksAideHiText
-	db "@"
+	text_far _OaksAideHiText
+	text_end
 
 OaksAideUhOhText:
-	TX_FAR _OaksAideUhOhText
-	db "@"
+	text_far _OaksAideUhOhText
+	text_end
 
 OaksAideComeBackText:
-	TX_FAR _OaksAideComeBackText
-	db "@"
+	text_far _OaksAideComeBackText
+	text_end
 
 OaksAideHereYouGoText:
-	TX_FAR _OaksAideHereYouGoText
-	db "@"
+	text_far _OaksAideHereYouGoText
+	text_end
 
 OaksAideGotItemText:
-	TX_FAR _OaksAideGotItemText
-	TX_SFX_ITEM_1
-	db "@"
+	text_far _OaksAideGotItemText
+	sound_get_item_1
+	text_end
 
 OaksAideNoRoomText:
-	TX_FAR _OaksAideNoRoomText
-	db "@"
+	text_far _OaksAideNoRoomText
+	text_end
--- a/engine/events/pick_up_item.asm
+++ b/engine/events/pick_up_item.asm
@@ -45,10 +45,10 @@
 	ret
 
 FoundItemText:
-	TX_FAR _FoundItemText
-	TX_SFX_ITEM_1
-	db "@"
+	text_far _FoundItemText
+	sound_get_item_1
+	text_end
 
 NoMoreRoomForItemText:
-	TX_FAR _NoMoreRoomForItemText
-	db "@"
+	text_far _NoMoreRoomForItemText
+	text_end
--- a/engine/events/pokecenter.asm
+++ b/engine/events/pokecenter.asm
@@ -46,23 +46,23 @@
 	jp UpdateSprites
 
 PokemonCenterWelcomeText:
-	TX_FAR _PokemonCenterWelcomeText
-	db "@"
+	text_far _PokemonCenterWelcomeText
+	text_end
 
 ShallWeHealYourPokemonText:
-	TX_DELAY
-	TX_FAR _ShallWeHealYourPokemonText
-	db "@"
+	text_pause
+	text_far _ShallWeHealYourPokemonText
+	text_end
 
 NeedYourPokemonText:
-	TX_FAR _NeedYourPokemonText
-	db "@"
+	text_far _NeedYourPokemonText
+	text_end
 
 PokemonFightingFitText:
-	TX_FAR _PokemonFightingFitText
-	db "@"
+	text_far _PokemonFightingFitText
+	text_end
 
 PokemonCenterFarewellText:
-	TX_DELAY
-	TX_FAR _PokemonCenterFarewellText
-	db "@"
+	text_pause
+	text_far _PokemonCenterFarewellText
+	text_end
--- a/engine/events/pokedex_rating.asm
+++ b/engine/events/pokedex_rating.asm
@@ -52,8 +52,8 @@
 	ret
 
 PokedexRatingText_441cc:
-	TX_FAR _OaksLabText_441cc
-	db "@"
+	text_far _OaksLabText_441cc
+	text_end
 
 DexRatingsTable:
 	db 10
@@ -90,65 +90,65 @@
 	dw PokedexRatingText_4424c
 
 PokedexRatingText_44201:
-	TX_FAR _OaksLabText_44201
-	db "@"
+	text_far _OaksLabText_44201
+	text_end
 
 PokedexRatingText_44206:
-	TX_FAR _OaksLabText_44206
-	db "@"
+	text_far _OaksLabText_44206
+	text_end
 
 PokedexRatingText_4420b:
-	TX_FAR _OaksLabText_4420b
-	db "@"
+	text_far _OaksLabText_4420b
+	text_end
 
 PokedexRatingText_44210:
-	TX_FAR _OaksLabText_44210
-	db "@"
+	text_far _OaksLabText_44210
+	text_end
 
 PokedexRatingText_44215:
-	TX_FAR _OaksLabText_44215
-	db "@"
+	text_far _OaksLabText_44215
+	text_end
 
 PokedexRatingText_4421a:
-	TX_FAR _OaksLabText_4421a
-	db "@"
+	text_far _OaksLabText_4421a
+	text_end
 
 PokedexRatingText_4421f:
-	TX_FAR _OaksLabText_4421f
-	db "@"
+	text_far _OaksLabText_4421f
+	text_end
 
 PokedexRatingText_44224:
-	TX_FAR _OaksLabText_44224
-	db "@"
+	text_far _OaksLabText_44224
+	text_end
 
 PokedexRatingText_44229:
-	TX_FAR _OaksLabText_44229
-	db "@"
+	text_far _OaksLabText_44229
+	text_end
 
 PokedexRatingText_4422e:
-	TX_FAR _OaksLabText_4422e
-	db "@"
+	text_far _OaksLabText_4422e
+	text_end
 
 PokedexRatingText_44233:
-	TX_FAR _OaksLabText_44233
-	db "@"
+	text_far _OaksLabText_44233
+	text_end
 
 PokedexRatingText_44238:
-	TX_FAR _OaksLabText_44238
-	db "@"
+	text_far _OaksLabText_44238
+	text_end
 
 PokedexRatingText_4423d:
-	TX_FAR _OaksLabText_4423d
-	db "@"
+	text_far _OaksLabText_4423d
+	text_end
 
 PokedexRatingText_44242:
-	TX_FAR _OaksLabText_44242
-	db "@"
+	text_far _OaksLabText_44242
+	text_end
 
 PokedexRatingText_44247:
-	TX_FAR _OaksLabText_44247
-	db "@"
+	text_far _OaksLabText_44247
+	text_end
 
 PokedexRatingText_4424c:
-	TX_FAR _OaksLabText_4424c
-	db "@"
+	text_far _OaksLabText_4424c
+	text_end
--- a/engine/events/pokemart.asm
+++ b/engine/events/pokemart.asm
@@ -228,45 +228,45 @@
 	ret
 
 PokemartBuyingGreetingText:
-	TX_FAR _PokemartBuyingGreetingText
-	db "@"
+	text_far _PokemartBuyingGreetingText
+	text_end
 
 PokemartTellBuyPriceText:
-	TX_FAR _PokemartTellBuyPriceText
-	db "@"
+	text_far _PokemartTellBuyPriceText
+	text_end
 
 PokemartBoughtItemText:
-	TX_FAR _PokemartBoughtItemText
-	db "@"
+	text_far _PokemartBoughtItemText
+	text_end
 
 PokemartNotEnoughMoneyText:
-	TX_FAR _PokemartNotEnoughMoneyText
-	db "@"
+	text_far _PokemartNotEnoughMoneyText
+	text_end
 
 PokemartItemBagFullText:
-	TX_FAR _PokemartItemBagFullText
-	db "@"
+	text_far _PokemartItemBagFullText
+	text_end
 
 PokemonSellingGreetingText:
-	TX_FAR _PokemonSellingGreetingText
-	db "@"
+	text_far _PokemonSellingGreetingText
+	text_end
 
 PokemartTellSellPriceText:
-	TX_FAR _PokemartTellSellPriceText
-	db "@"
+	text_far _PokemartTellSellPriceText
+	text_end
 
 PokemartItemBagEmptyText:
-	TX_FAR _PokemartItemBagEmptyText
-	db "@"
+	text_far _PokemartItemBagEmptyText
+	text_end
 
 PokemartUnsellableItemText:
-	TX_FAR _PokemartUnsellableItemText
-	db "@"
+	text_far _PokemartUnsellableItemText
+	text_end
 
 PokemartThankYouText:
-	TX_FAR _PokemartThankYouText
-	db "@"
+	text_far _PokemartThankYouText
+	text_end
 
 PokemartAnythingElseText:
-	TX_FAR _PokemartAnythingElseText
-	db "@"
+	text_far _PokemartAnythingElseText
+	text_end
--- a/engine/events/prize_menu.asm
+++ b/engine/events/prize_menu.asm
@@ -43,17 +43,17 @@
 	ret
 
 RequireCoinCaseTextPtr:
-	TX_FAR _RequireCoinCaseText
-	TX_WAIT
-	db "@"
+	text_far _RequireCoinCaseText
+	text_linkpromptbutton
+	text_end
 
 ExchangeCoinsForPrizesTextPtr:
-	TX_FAR _ExchangeCoinsForPrizesText
-	db "@"
+	text_far _ExchangeCoinsForPrizesText
+	text_end
 
 WhichPrizeTextPtr:
-	TX_FAR _WhichPrizeText
-	db "@"
+	text_far _WhichPrizeText
+	text_end
 
 GetPrizeMenuId:
 ; determine which one among the three
@@ -263,28 +263,28 @@
 	db $00,$01,$00,$01,$00,$01,$00,$00,$01
 
 HereYouGoTextPtr:
-	TX_FAR _HereYouGoText
-	TX_WAIT
-	db "@"
+	text_far _HereYouGoText
+	text_linkpromptbutton
+	text_end
 
 SoYouWantPrizeTextPtr:
-	TX_FAR _SoYouWantPrizeText
-	db "@"
+	text_far _SoYouWantPrizeText
+	text_end
 
 SorryNeedMoreCoinsText:
-	TX_FAR _SorryNeedMoreCoinsText
-	TX_WAIT
-	db "@"
+	text_far _SorryNeedMoreCoinsText
+	text_linkpromptbutton
+	text_end
 
 PrizeRoomBagIsFullTextPtr:
-	TX_FAR _OopsYouDontHaveEnoughRoomText
-	TX_WAIT
-	db "@"
+	text_far _OopsYouDontHaveEnoughRoomText
+	text_linkpromptbutton
+	text_end
 
 OhFineThenTextPtr:
-	TX_FAR _OhFineThenText
-	TX_WAIT
-	db "@"
+	text_far _OhFineThenText
+	text_linkpromptbutton
+	text_end
 
 GetPrizeMonLevel:
 	ld a, [wcf91]
--- a/engine/events/vending_machine.asm
+++ b/engine/events/vending_machine.asm
@@ -81,8 +81,8 @@
 	jp PrintText
 
 VendingMachineText1:
-	TX_FAR _VendingMachineText1
-	db "@"
+	text_far _VendingMachineText1
+	text_end
 
 DrinkText:
 	db   "FRESH WATER"
@@ -97,20 +97,20 @@
 	next "@"
 
 VendingMachineText4:
-	TX_FAR _VendingMachineText4
-	db "@"
+	text_far _VendingMachineText4
+	text_end
 
 VendingMachineText5:
-	TX_FAR _VendingMachineText5
-	db "@"
+	text_far _VendingMachineText5
+	text_end
 
 VendingMachineText6:
-	TX_FAR _VendingMachineText6
-	db "@"
+	text_far _VendingMachineText6
+	text_end
 
 VendingMachineText7:
-	TX_FAR _VendingMachineText7
-	db "@"
+	text_far _VendingMachineText7
+	text_end
 
 LoadVendingMachineItem:
 	ld hl, VendingPrices
--- a/engine/items/item_effects.asm
+++ b/engine/items/item_effects.asm
@@ -586,47 +586,47 @@
 ItemUseBallText00:
 ;"It dodged the thrown ball!"
 ;"This pokemon can't be caught"
-	TX_FAR _ItemUseBallText00
-	db "@"
+	text_far _ItemUseBallText00
+	text_end
 ItemUseBallText01:
 ;"You missed the pokemon!"
-	TX_FAR _ItemUseBallText01
-	db "@"
+	text_far _ItemUseBallText01
+	text_end
 ItemUseBallText02:
 ;"Darn! The pokemon broke free!"
-	TX_FAR _ItemUseBallText02
-	db "@"
+	text_far _ItemUseBallText02
+	text_end
 ItemUseBallText03:
 ;"Aww! It appeared to be caught!"
-	TX_FAR _ItemUseBallText03
-	db "@"
+	text_far _ItemUseBallText03
+	text_end
 ItemUseBallText04:
 ;"Shoot! It was so close too!"
-	TX_FAR _ItemUseBallText04
-	db "@"
+	text_far _ItemUseBallText04
+	text_end
 ItemUseBallText05:
 ;"All right! {MonName} was caught!"
 ;play sound
-	TX_FAR _ItemUseBallText05
-	TX_SFX_CAUGHT_MON
-	TX_BLINK
-	db "@"
+	text_far _ItemUseBallText05
+	sound_caught_mon
+	text_promptbutton
+	text_end
 ItemUseBallText07:
 ;"X was transferred to Bill's PC"
-	TX_FAR _ItemUseBallText07
-	db "@"
+	text_far _ItemUseBallText07
+	text_end
 ItemUseBallText08:
 ;"X was transferred to someone's PC"
-	TX_FAR _ItemUseBallText08
-	db "@"
+	text_far _ItemUseBallText08
+	text_end
 
 ItemUseBallText06:
 ;"New DEX data will be added..."
 ;play sound
-	TX_FAR _ItemUseBallText06
-	TX_SFX_DEX_PAGE_ADDED
-	TX_BLINK
-	db "@"
+	text_far _ItemUseBallText06
+	sound_dex_page_added
+	text_promptbutton
+	text_end
 
 ItemUseTownMap:
 	ld a, [wIsInBattle]
@@ -745,12 +745,12 @@
 	ret
 
 SurfingGotOnText:
-	TX_FAR _SurfingGotOnText
-	db "@"
+	text_far _SurfingGotOnText
+	text_end
 
 SurfingNoPlaceToGetOffText:
-	TX_FAR _SurfingNoPlaceToGetOffText
-	db "@"
+	text_far _SurfingNoPlaceToGetOffText
+	text_end
 
 ItemUsePokedex:
 	predef_jump ShowPokedexMenu
@@ -1417,12 +1417,12 @@
 	jp RemoveUsedItem
 
 VitaminStatRoseText:
-	TX_FAR _VitaminStatRoseText
-	db "@"
+	text_far _VitaminStatRoseText
+	text_end
 
 VitaminNoEffectText:
-	TX_FAR _VitaminNoEffectText
-	db "@"
+	text_far _VitaminNoEffectText
+	text_end
 
 VitaminText:
 	db "HEALTH@"
@@ -1479,12 +1479,12 @@
 	jp DelayFrames
 
 ThrewBaitText:
-	TX_FAR _ThrewBaitText
-	db "@"
+	text_far _ThrewBaitText
+	text_end
 
 ThrewRockText:
-	TX_FAR _ThrewRockText
-	db "@"
+	text_far _ThrewRockText
+	text_end
 
 ; also used for Dig out-of-battle effect
 ItemUseEscapeRope:
@@ -1829,17 +1829,17 @@
 	db $ff ; terminator
 
 PlayedFluteNoEffectText:
-	TX_FAR _PlayedFluteNoEffectText
-	db "@"
+	text_far _PlayedFluteNoEffectText
+	text_end
 
 FluteWokeUpText:
-	TX_FAR _FluteWokeUpText
-	db "@"
+	text_far _FluteWokeUpText
+	text_end
 
 PlayedFluteHadEffectText:
-	TX_FAR _PlayedFluteHadEffectText
-	TX_BLINK
-	TX_ASM
+	text_far _PlayedFluteHadEffectText
+	text_promptbutton
+	text_asm
 	ld a, [wIsInBattle]
 	and a
 	jr nz, .done
@@ -1865,8 +1865,8 @@
 	jp PrintText
 
 CoinCaseNumCoinsText:
-	TX_FAR _CoinCaseNumCoinsText
-	db "@"
+	text_far _CoinCaseNumCoinsText
+	text_end
 
 ItemUseOldRod:
 	call FishingInit
@@ -1984,12 +1984,12 @@
 	jp PrintText
 
 ItemfinderFoundItemText:
-	TX_FAR _ItemfinderFoundItemText
-	db "@"
+	text_far _ItemfinderFoundItemText
+	text_end
 
 ItemfinderFoundNothingText:
-	TX_FAR _ItemfinderFoundNothingText
-	db "@"
+	text_far _ItemfinderFoundNothingText
+	text_end
 
 ItemUsePPUp:
 	ld a, [wIsInBattle]
@@ -2173,24 +2173,24 @@
 	ret
 
 RaisePPWhichTechniqueText:
-	TX_FAR _RaisePPWhichTechniqueText
-	db "@"
+	text_far _RaisePPWhichTechniqueText
+	text_end
 
 RestorePPWhichTechniqueText:
-	TX_FAR _RestorePPWhichTechniqueText
-	db "@"
+	text_far _RestorePPWhichTechniqueText
+	text_end
 
 PPMaxedOutText:
-	TX_FAR _PPMaxedOutText
-	db "@"
+	text_far _PPMaxedOutText
+	text_end
 
 PPIncreasedText:
-	TX_FAR _PPIncreasedText
-	db "@"
+	text_far _PPIncreasedText
+	text_end
 
 PPRestoredText:
-	TX_FAR _PPRestoredText
-	db "@"
+	text_far _PPRestoredText
+	text_end
 
 ; for items that can't be used from the Item menu
 UnusableItem:
@@ -2294,20 +2294,20 @@
 	jp RemoveUsedItem
 
 BootedUpTMText:
-	TX_FAR _BootedUpTMText
-	db "@"
+	text_far _BootedUpTMText
+	text_end
 
 BootedUpHMText:
-	TX_FAR _BootedUpHMText
-	db "@"
+	text_far _BootedUpHMText
+	text_end
 
 TeachMachineMoveText:
-	TX_FAR _TeachMachineMoveText
-	db "@"
+	text_far _TeachMachineMoveText
+	text_end
 
 MonCannotLearnMachineMoveText:
-	TX_FAR _MonCannotLearnMachineMoveText
-	db "@"
+	text_far _MonCannotLearnMachineMoveText
+	text_end
 
 PrintItemUseTextAndRemoveItem:
 	ld hl, ItemUseText00
@@ -2364,54 +2364,54 @@
 	jp PrintText
 
 ItemUseNotTimeText:
-	TX_FAR _ItemUseNotTimeText
-	db "@"
+	text_far _ItemUseNotTimeText
+	text_end
 
 ItemUseNotYoursToUseText:
-	TX_FAR _ItemUseNotYoursToUseText
-	db "@"
+	text_far _ItemUseNotYoursToUseText
+	text_end
 
 ItemUseNoEffectText:
-	TX_FAR _ItemUseNoEffectText
-	db "@"
+	text_far _ItemUseNoEffectText
+	text_end
 
 ThrowBallAtTrainerMonText1:
-	TX_FAR _ThrowBallAtTrainerMonText1
-	db "@"
+	text_far _ThrowBallAtTrainerMonText1
+	text_end
 
 ThrowBallAtTrainerMonText2:
-	TX_FAR _ThrowBallAtTrainerMonText2
-	db "@"
+	text_far _ThrowBallAtTrainerMonText2
+	text_end
 
 NoCyclingAllowedHereText:
-	TX_FAR _NoCyclingAllowedHereText
-	db "@"
+	text_far _NoCyclingAllowedHereText
+	text_end
 
 NoSurfingHereText:
-	TX_FAR _NoSurfingHereText
-	db "@"
+	text_far _NoSurfingHereText
+	text_end
 
 BoxFullCannotThrowBallText:
-	TX_FAR _BoxFullCannotThrowBallText
-	db "@"
+	text_far _BoxFullCannotThrowBallText
+	text_end
 
 ItemUseText00:
-	TX_FAR _ItemUseText001
-	TX_LINE
-	TX_FAR _ItemUseText002
-	db "@"
+	text_far _ItemUseText001
+	text_low
+	text_far _ItemUseText002
+	text_end
 
 GotOnBicycleText:
-	TX_FAR _GotOnBicycleText1
-	TX_LINE
-	TX_FAR _GotOnBicycleText2
-	db "@"
+	text_far _GotOnBicycleText1
+	text_low
+	text_far _GotOnBicycleText2
+	text_end
 
 GotOffBicycleText:
-	TX_FAR _GotOffBicycleText1
-	TX_LINE
-	TX_FAR _GotOffBicycleText2
-	db "@"
+	text_far _GotOffBicycleText1
+	text_low
+	text_far _GotOffBicycleText2
+	text_end
 
 ; restores bonus PP (from PP Ups) when healing at a pokemon center
 ; also, when a PP Up is used, it increases the current PP by one PP Up bonus
@@ -2639,16 +2639,16 @@
 	ret
 
 ThrewAwayItemText:
-	TX_FAR _ThrewAwayItemText
-	db "@"
+	text_far _ThrewAwayItemText
+	text_end
 
 IsItOKToTossItemText:
-	TX_FAR _IsItOKToTossItemText
-	db "@"
+	text_far _IsItOKToTossItemText
+	text_end
 
 TooImportantToTossText:
-	TX_FAR _TooImportantToTossText
-	db "@"
+	text_far _TooImportantToTossText
+	text_end
 
 ; checks if an item is a key item
 ; INPUT:
--- a/engine/items/tmhm.asm
+++ b/engine/items/tmhm.asm
@@ -22,5 +22,5 @@
 	ret
 
 AlreadyKnowsText:
-	TX_FAR _AlreadyKnowsText
-	db "@"
+	text_far _AlreadyKnowsText
+	text_end
--- a/engine/link/cable_club.asm
+++ b/engine/link/cable_club.asm
@@ -872,8 +872,8 @@
 	jp CallCurrentTradeCenterFunction
 
 WillBeTradedText:
-	TX_FAR _WillBeTradedText
-	db "@"
+	text_far _WillBeTradedText
+	text_end
 
 TradeCompleted:
 	db "Trade completed!@"
--- a/engine/link/cable_club_npc.asm
+++ b/engine/link/cable_club_npc.asm
@@ -110,33 +110,33 @@
 	jpab LinkMenu
 
 CableClubNPCAreaReservedFor2FriendsLinkedByCableText:
-	TX_FAR _CableClubNPCAreaReservedFor2FriendsLinkedByCableText
-	db "@"
+	text_far _CableClubNPCAreaReservedFor2FriendsLinkedByCableText
+	text_end
 
 CableClubNPCWelcomeText:
-	TX_FAR _CableClubNPCWelcomeText
-	db "@"
+	text_far _CableClubNPCWelcomeText
+	text_end
 
 CableClubNPCPleaseApplyHereHaveToSaveText:
-	TX_FAR _CableClubNPCPleaseApplyHereHaveToSaveText
-	db "@"
+	text_far _CableClubNPCPleaseApplyHereHaveToSaveText
+	text_end
 
 CableClubNPCPleaseWaitText:
-	TX_FAR _CableClubNPCPleaseWaitText
-	TX_DELAY
-	db "@"
+	text_far _CableClubNPCPleaseWaitText
+	text_pause
+	text_end
 
 CableClubNPCLinkClosedBecauseOfInactivityText:
-	TX_FAR _CableClubNPCLinkClosedBecauseOfInactivityText
-	db "@"
+	text_far _CableClubNPCLinkClosedBecauseOfInactivityText
+	text_end
 
 CableClubNPCPleaseComeAgainText:
-	TX_FAR _CableClubNPCPleaseComeAgainText
-	db "@"
+	text_far _CableClubNPCPleaseComeAgainText
+	text_end
 
 CableClubNPCMakingPreparationsText:
-	TX_FAR _CableClubNPCMakingPreparationsText
-	db "@"
+	text_far _CableClubNPCMakingPreparationsText
+	text_end
 
 CloseLinkConnection:
 	call Delay3
--- a/engine/menus/league_pc.asm
+++ b/engine/menus/league_pc.asm
@@ -116,5 +116,5 @@
 	db "HALL OF FAME No   @"
 
 AccessedHoFPCText:
-	TX_FAR _AccessedHoFPCText
-	db "@"
+	text_far _AccessedHoFPCText
+	text_end
--- a/engine/menus/main_menu.asm
+++ b/engine/menus/main_menu.asm
@@ -136,7 +136,7 @@
 	ld [wLetterPrintingDelayFlags], a
 	ld hl, wd72e
 	set 6, [hl]
-	ld hl, TextTerminator_6b20
+	ld hl, LinkMenuEmptyText
 	call PrintText
 	call SaveScreenTilesToBuffer1
 	ld hl, WhereWouldYouLikeText
@@ -293,16 +293,16 @@
 	ret
 
 WhereWouldYouLikeText:
-	TX_FAR _WhereWouldYouLikeText
-	db "@"
+	text_far _WhereWouldYouLikeText
+	text_end
 
 PleaseWaitText:
-	TX_FAR _PleaseWaitText
-	db "@"
+	text_far _PleaseWaitText
+	text_end
 
 LinkCanceledText:
-	TX_FAR _LinkCanceledText
-	db "@"
+	text_far _LinkCanceledText
+	text_end
 
 StartNewGame:
 	ld hl, wd732
@@ -329,7 +329,9 @@
 	jp EnterMap
 
 ContinueText:
-	db "CONTINUE", $4e
+	db "CONTINUE"
+	next ""
+	; fallthrough
 
 NewGameText:
 	db   "NEW GAME"
--- a/engine/menus/naming_screen.asm
+++ b/engine/menus/naming_screen.asm
@@ -50,8 +50,8 @@
 	jp CopyData
 
 DoYouWantToNicknameText:
-	TX_FAR _DoYouWantToNicknameText
-	db "@"
+	text_far _DoYouWantToNicknameText
+	text_end
 
 DisplayNameRaterScreen::
 	ld hl, wBuffer
--- a/engine/menus/oaks_pc.asm
+++ b/engine/menus/oaks_pc.asm
@@ -15,14 +15,14 @@
 	jp LoadScreenTilesFromBuffer2
 
 GetDexRatedText:
-	TX_FAR _GetDexRatedText
-	db "@"
+	text_far _GetDexRatedText
+	text_end
 
 ClosedOaksPCText:
-	TX_FAR _ClosedOaksPCText
-	TX_WAIT
-	db "@"
+	text_far _ClosedOaksPCText
+	text_linkpromptbutton
+	text_end
 
 AccessedOaksPCText:
-	TX_FAR _AccessedOaksPCText
-	db "@"
+	text_far _AccessedOaksPCText
+	text_end
--- a/engine/menus/party_menu.asm
+++ b/engine/menus/party_menu.asm
@@ -254,62 +254,62 @@
 	dw PartyMenuItemUseText
 
 PartyMenuNormalText:
-	TX_FAR _PartyMenuNormalText
-	db "@"
+	text_far _PartyMenuNormalText
+	text_end
 
 PartyMenuItemUseText:
-	TX_FAR _PartyMenuItemUseText
-	db "@"
+	text_far _PartyMenuItemUseText
+	text_end
 
 PartyMenuBattleText:
-	TX_FAR _PartyMenuBattleText
-	db "@"
+	text_far _PartyMenuBattleText
+	text_end
 
 PartyMenuUseTMText:
-	TX_FAR _PartyMenuUseTMText
-	db "@"
+	text_far _PartyMenuUseTMText
+	text_end
 
 PartyMenuSwapMonText:
-	TX_FAR _PartyMenuSwapMonText
-	db "@"
+	text_far _PartyMenuSwapMonText
+	text_end
 
 PotionText:
-	TX_FAR _PotionText
-	db "@"
+	text_far _PotionText
+	text_end
 
 AntidoteText:
-	TX_FAR _AntidoteText
-	db "@"
+	text_far _AntidoteText
+	text_end
 
 ParlyzHealText:
-	TX_FAR _ParlyzHealText
-	db "@"
+	text_far _ParlyzHealText
+	text_end
 
 BurnHealText:
-	TX_FAR _BurnHealText
-	db "@"
+	text_far _BurnHealText
+	text_end
 
 IceHealText:
-	TX_FAR _IceHealText
-	db "@"
+	text_far _IceHealText
+	text_end
 
 AwakeningText:
-	TX_FAR _AwakeningText
-	db "@"
+	text_far _AwakeningText
+	text_end
 
 FullHealText:
-	TX_FAR _FullHealText
-	db "@"
+	text_far _FullHealText
+	text_end
 
 ReviveText:
-	TX_FAR _ReviveText
-	db "@"
+	text_far _ReviveText
+	text_end
 
 RareCandyText:
-	TX_FAR _RareCandyText
-	TX_SFX_ITEM_1 ; probably supposed to play SFX_LEVEL_UP but the wrong music bank is loaded
-	TX_BLINK
-	db "@"
+	text_far _RareCandyText
+	sound_get_item_1 ; probably supposed to play SFX_LEVEL_UP but the wrong music bank is loaded
+	text_promptbutton
+	text_end
 
 SetPartyMenuHPBarColor:
 	ld hl, wPartyMenuHPBarColors
--- a/engine/menus/pc.asm
+++ b/engine/menus/pc.asm
@@ -99,20 +99,20 @@
 	ret
 
 TurnedOnPC1Text:
-	TX_FAR _TurnedOnPC1Text
-	db "@"
+	text_far _TurnedOnPC1Text
+	text_end
 
 AccessedBillsPCText:
-	TX_FAR _AccessedBillsPCText
-	db "@"
+	text_far _AccessedBillsPCText
+	text_end
 
 AccessedSomeonesPCText:
-	TX_FAR _AccessedSomeonesPCText
-	db "@"
+	text_far _AccessedSomeonesPCText
+	text_end
 
 AccessedMyPCText:
-	TX_FAR _AccessedMyPCText
-	db "@"
+	text_far _AccessedMyPCText
+	text_end
 
 ; removes one of the specified item ID [hItemToRemoveID] from bag (if existent)
 RemoveItemByID::
--- a/engine/menus/players_pc.asm
+++ b/engine/menus/players_pc.asm
@@ -247,57 +247,57 @@
 	next "LOG OFF@"
 
 TurnedOnPC2Text:
-	TX_FAR _TurnedOnPC2Text
-	db "@"
+	text_far _TurnedOnPC2Text
+	text_end
 
 WhatDoYouWantText:
-	TX_FAR _WhatDoYouWantText
-	db "@"
+	text_far _WhatDoYouWantText
+	text_end
 
 WhatToDepositText:
-	TX_FAR _WhatToDepositText
-	db "@"
+	text_far _WhatToDepositText
+	text_end
 
 DepositHowManyText:
-	TX_FAR _DepositHowManyText
-	db "@"
+	text_far _DepositHowManyText
+	text_end
 
 ItemWasStoredText:
-	TX_FAR _ItemWasStoredText
-	db "@"
+	text_far _ItemWasStoredText
+	text_end
 
 NothingToDepositText:
-	TX_FAR _NothingToDepositText
-	db "@"
+	text_far _NothingToDepositText
+	text_end
 
 NoRoomToStoreText:
-	TX_FAR _NoRoomToStoreText
-	db "@"
+	text_far _NoRoomToStoreText
+	text_end
 
 WhatToWithdrawText:
-	TX_FAR _WhatToWithdrawText
-	db "@"
+	text_far _WhatToWithdrawText
+	text_end
 
 WithdrawHowManyText:
-	TX_FAR _WithdrawHowManyText
-	db "@"
+	text_far _WithdrawHowManyText
+	text_end
 
 WithdrewItemText:
-	TX_FAR _WithdrewItemText
-	db "@"
+	text_far _WithdrewItemText
+	text_end
 
 NothingStoredText:
-	TX_FAR _NothingStoredText
-	db "@"
+	text_far _NothingStoredText
+	text_end
 
 CantCarryMoreText:
-	TX_FAR _CantCarryMoreText
-	db "@"
+	text_far _CantCarryMoreText
+	text_end
 
 WhatToTossText:
-	TX_FAR _WhatToTossText
-	db "@"
+	text_far _WhatToTossText
+	text_end
 
 TossHowManyText:
-	TX_FAR _TossHowManyText
-	db "@"
+	text_far _TossHowManyText
+	text_end
--- a/engine/menus/pokedex.asm
+++ b/engine/menus/pokedex.asm
@@ -478,7 +478,7 @@
 	coord hl, 2, 8
 	ld a, "№"
 	ld [hli], a
-	ld a, "⠄"
+	ld a, "<DOT>"
 	ld [hli], a
 	ld de, wd11e
 	lb bc, LEADING_ZEROES | 1, 3
@@ -518,7 +518,7 @@
 	coord hl, 12, 6
 	lb bc, 1, 2
 	call PrintNumber ; print feet (height)
-	ld a, $60 ; feet symbol tile (one tick)
+	ld a, "′"
 	ld [hl], a
 	inc de
 	inc de ; de = address of inches (height)
@@ -525,7 +525,7 @@
 	coord hl, 15, 6
 	lb bc, LEADING_ZEROES | 1, 2
 	call PrintNumber ; print inches (height)
-	ld a, $61 ; inches symbol tile (two ticks)
+	ld a, "″"
 	ld [hl], a
 ; now print the weight (note that weight is stored in tenths of pounds internally)
 	inc de
@@ -558,7 +558,7 @@
 	inc hl
 	ld a, [hli]
 	ld [hld], a ; make space for the decimal point by moving the last digit forward one tile
-	ld [hl], "⠄" ; decimal point tile
+	ld [hl], "<DOT>" ; decimal point tile
 	pop af
 	ld [hDexWeight + 1], a ; restore original value of [hDexWeight + 1]
 	pop af
@@ -590,7 +590,7 @@
 	ret
 
 HeightWeightText:
-	db   "HT  ?",$60,"??",$61
+	db   "HT  ?′??″"
 	next "WT   ???lb@"
 
 ; XXX does anything point to this?
--- a/engine/menus/save.asm
+++ b/engine/menus/save.asm
@@ -28,8 +28,8 @@
 	ret
 
 FileDataDestroyedText:
-	TX_FAR _FileDataDestroyedText
-	db "@"
+	text_far _FileDataDestroyedText
+	text_end
 
 LoadSAV0:
 	ld a, SRAM_ENABLE
@@ -184,16 +184,16 @@
 	ret
 
 WouldYouLikeToSaveText:
-	TX_FAR _WouldYouLikeToSaveText
-	db "@"
+	text_far _WouldYouLikeToSaveText
+	text_end
 
 GameSavedText:
-	TX_FAR _GameSavedText
-	db "@"
+	text_far _GameSavedText
+	text_end
 
 OlderFileWillBeErasedText:
-	TX_FAR _OlderFileWillBeErasedText
-	db "@"
+	text_far _OlderFileWillBeErasedText
+	text_end
 
 SaveSAVtoSRAM0:
 	ld a, SRAM_ENABLE
@@ -386,8 +386,8 @@
 	ret
 
 WhenYouChangeBoxText:
-	TX_FAR _WhenYouChangeBoxText
-	db "@"
+	text_far _WhenYouChangeBoxText
+	text_end
 
 CopyBoxToOrFromSRAM:
 ; copy an entire box from hl to de with b as the SRAM bank
@@ -490,8 +490,8 @@
 	ret
 
 ChooseABoxText:
-	TX_FAR _ChooseABoxText
-	db "@"
+	text_far _ChooseABoxText
+	text_end
 
 BoxNames:
 	db   "BOX 1"
--- a/engine/menus/start_sub_menus.asm
+++ b/engine/menus/start_sub_menus.asm
@@ -190,8 +190,8 @@
 	call GBPalWhiteOutWithDelay3
 	jp .goBackToMap
 .flashLightsAreaText
-	TX_FAR _FlashLightsAreaText
-	db "@"
+	text_far _FlashLightsAreaText
+	text_end
 .dig
 	ld a, ESCAPE_ROPE
 	ld [wcf91], a
@@ -225,14 +225,14 @@
 	call GBPalWhiteOutWithDelay3
 	jp .goBackToMap
 .warpToLastPokemonCenterText
-	TX_FAR _WarpToLastPokemonCenterText
-	db "@"
+	text_far _WarpToLastPokemonCenterText
+	text_end
 .cannotUseTeleportNowText
-	TX_FAR _CannotUseTeleportNowText
-	db "@"
+	text_far _CannotUseTeleportNowText
+	text_end
 .cannotFlyHereText
-	TX_FAR _CannotFlyHereText
-	db "@"
+	text_far _CannotFlyHereText
+	text_end
 .softboiled
 	ld hl, wPartyMon1MaxHP
 	ld a, [wWhichPokemon]
@@ -270,8 +270,8 @@
 	call PrintText
 	jp .loop
 .notHealthyEnoughText
-	TX_FAR _NotHealthyEnoughText
-	db "@"
+	text_far _NotHealthyEnoughText
+	text_end
 .goBackToMap
 	call RestoreScreenTilesAndReloadTilePatterns
 	jp CloseTextDisplay
@@ -280,8 +280,8 @@
 	call PrintText
 	jp .loop
 .newBadgeRequiredText
-	TX_FAR _NewBadgeRequiredText
-	db "@"
+	text_far _NewBadgeRequiredText
+	text_end
 
 ; writes a blank tile to all possible menu cursor positions on the party menu
 ErasePartyMenuCursors::
@@ -439,12 +439,12 @@
 	jp ItemMenuLoop
 
 CannotUseItemsHereText:
-	TX_FAR _CannotUseItemsHereText
-	db "@"
+	text_far _CannotUseItemsHereText
+	text_end
 
 CannotGetOffHereText:
-	TX_FAR _CannotGetOffHereText
-	db "@"
+	text_far _CannotGetOffHereText
+	text_end
 
 INCLUDE "data/items/use_party.asm"
 
--- a/engine/menus/text_box.asm
+++ b/engine/menus/text_box.asm
@@ -220,8 +220,10 @@
 BuySellQuitText:
 	db   "BUY"
 	next "SELL"
-	next "QUIT@@"
+	next "QUIT@"
 
+	db "@" ; unused
+
 UseTossText:
 	db   "USE"
 	next "TOSS@"
@@ -245,7 +247,7 @@
 	next "さいしょから@"
 
 BattleMenuText:
-	db   "FIGHT ",$E1,$E2
+	db   "FIGHT <PK><MN>"
 	next "ITEM  RUN@"
 
 SafariZoneBattleMenuText:
@@ -258,7 +260,7 @@
 	next "CANCEL@"
 
 JapaneseAhText:
-	db "アッ!@"
+	db "アッ!@"
 
 JapanesePokedexMenu:
 	db   "データをみる"
--- a/engine/movie/hall_of_fame.asm
+++ b/engine/movie/hall_of_fame.asm
@@ -257,12 +257,12 @@
 	db "MONEY@"
 
 DexSeenOwnedText:
-	TX_FAR _DexSeenOwnedText
-	db "@"
+	text_far _DexSeenOwnedText
+	text_end
 
 DexRatingText:
-	TX_FAR _DexRatingText
-	db "@"
+	text_far _DexRatingText
+	text_end
 
 HoFRecordMonInfo:
 	ld hl, wHallOfFame
--- a/engine/movie/oak_speech/clear_save.asm
+++ b/engine/movie/oak_speech/clear_save.asm
@@ -19,5 +19,5 @@
 	jp Init
 
 ClearSaveDataText:
-	TX_FAR _ClearSaveDataText
-	db "@"
+	text_far _ClearSaveDataText
+	text_end
--- a/engine/movie/oak_speech/oak_speech.asm
+++ b/engine/movie/oak_speech/oak_speech.asm
@@ -153,22 +153,22 @@
 	call GBFadeOutToWhite
 	jp ClearScreen
 OakSpeechText1:
-	TX_FAR _OakSpeechText1
-	db "@"
+	text_far _OakSpeechText1
+	text_end
 OakSpeechText2:
-	TX_FAR _OakSpeechText2A
-	TX_CRY_NIDORINA
-	TX_FAR _OakSpeechText2B
-	db "@"
+	text_far _OakSpeechText2A
+	sound_cry_nidorina
+	text_far _OakSpeechText2B
+	text_end
 IntroducePlayerText:
-	TX_FAR _IntroducePlayerText
-	db "@"
+	text_far _IntroducePlayerText
+	text_end
 IntroduceRivalText:
-	TX_FAR _IntroduceRivalText
-	db "@"
+	text_far _IntroduceRivalText
+	text_end
 OakSpeechText3:
-	TX_FAR _OakSpeechText3
-	db "@"
+	text_far _OakSpeechText3
+	text_end
 
 FadeInIntroPic:
 	ld hl, IntroFadePalettes
--- a/engine/movie/oak_speech/oak_speech2.asm
+++ b/engine/movie/oak_speech/oak_speech2.asm
@@ -28,8 +28,8 @@
 	jp PrintText
 
 YourNameIsText:
-	TX_FAR _YourNameIsText
-	db "@"
+	text_far _YourNameIsText
+	text_end
 
 ChooseRivalName:
 	call OakSpeechSlidePicRight
@@ -61,8 +61,8 @@
 	jp PrintText
 
 HisNameIsText:
-	TX_FAR _HisNameIsText
-	db "@"
+	text_far _HisNameIsText
+	text_end
 
 OakSpeechSlidePicLeft:
 	push de
@@ -215,5 +215,5 @@
 
 INCLUDE "data/player_names_list.asm"
 
-TextTerminator_6b20:
-	db "@"
+LinkMenuEmptyText:
+	text_end
--- a/engine/movie/trade.asm
+++ b/engine/movie/trade.asm
@@ -785,8 +785,8 @@
 	jp Trade_SlideTextBoxOffScreen
 
 TradeWentToText:
-	TX_FAR _TradeWentToText
-	db "@"
+	text_far _TradeWentToText
+	text_end
 
 PrintTradeForSendsText:
 	ld hl, TradeForText
@@ -797,12 +797,12 @@
 	jp Trade_Delay80
 
 TradeForText:
-	TX_FAR _TradeForText
-	db "@"
+	text_far _TradeForText
+	text_end
 
 TradeSendsText:
-	TX_FAR _TradeSendsText
-	db "@"
+	text_far _TradeSendsText
+	text_end
 
 PrintTradeFarewellText:
 	ld hl, TradeWavesFarewellText
@@ -814,12 +814,12 @@
 	jp Trade_SlideTextBoxOffScreen
 
 TradeWavesFarewellText:
-	TX_FAR _TradeWavesFarewellText
-	db "@"
+	text_far _TradeWavesFarewellText
+	text_end
 
 TradeTransferredText:
-	TX_FAR _TradeTransferredText
-	db "@"
+	text_far _TradeTransferredText
+	text_end
 
 PrintTradeTakeCareText:
 	ld hl, TradeTakeCareText
@@ -827,8 +827,8 @@
 	jp Trade_Delay80
 
 TradeTakeCareText:
-	TX_FAR _TradeTakeCareText
-	db "@"
+	text_far _TradeTakeCareText
+	text_end
 
 PrintTradeWillTradeText:
 	ld hl, TradeWillTradeText
@@ -839,12 +839,12 @@
 	jp Trade_Delay80
 
 TradeWillTradeText:
-	TX_FAR _TradeWillTradeText
-	db "@"
+	text_far _TradeWillTradeText
+	text_end
 
 TradeforText:
-	TX_FAR _TradeforText
-	db "@"
+	text_far _TradeforText
+	text_end
 
 Trade_ShowAnimation:
 	ld [wAnimationID], a
--- a/engine/movie/trade2.asm
+++ b/engine/movie/trade2.asm
@@ -43,6 +43,7 @@
 	jp PrintNumber
 
 Trade_MonInfoText:
-	db "──№⠄",$4E
+	db   "──№<DOT>"
+	next ""
 	next "OT/"
-	next $73,"№⠄","@"
+	next "<ID>№<DOT>@"
--- a/engine/overworld/cut.asm
+++ b/engine/overworld/cut.asm
@@ -22,8 +22,8 @@
 	jp PrintText
 
 .NothingToCutText
-	TX_FAR _NothingToCutText
-	db "@"
+	text_far _NothingToCutText
+	text_end
 
 .canCut
 	ld [wCutTile], a
@@ -68,8 +68,8 @@
 	jp RedrawMapView
 
 UsedCutText:
-	TX_FAR _UsedCutText
-	db "@"
+	text_far _UsedCutText
+	text_end
 
 InitCutAnimOAM:
 	xor a
--- a/engine/overworld/field_move_messages.asm
+++ b/engine/overworld/field_move_messages.asm
@@ -7,8 +7,8 @@
 	jp PrintText
 
 UsedStrengthText:
-	TX_FAR _UsedStrengthText
-	TX_ASM
+	text_far _UsedStrengthText
+	text_asm
 	ld a, [wcf91]
 	call PlayCry
 	call Delay3
@@ -15,8 +15,8 @@
 	jp TextScriptEnd
 
 CanMoveBouldersText:
-	TX_FAR _CanMoveBouldersText
-	db "@"
+	text_far _CanMoveBouldersText
+	text_end
 
 IsSurfingAllowed:
 ; Returns whether surfing is allowed in bit 1 of wd728.
@@ -49,9 +49,9 @@
 	db $0B,$07,$FF
 
 CurrentTooFastText:
-	TX_FAR _CurrentTooFastText
-	db "@"
+	text_far _CurrentTooFastText
+	text_end
 
 CyclingIsFunText:
-	TX_FAR _CyclingIsFunText
-	db "@"
+	text_far _CyclingIsFunText
+	text_end
--- a/engine/overworld/map_sprites.asm
+++ b/engine/overworld/map_sprites.asm
@@ -133,7 +133,7 @@
 	jr nc, .fourTileSpriteVRAMAddr
 	ld d, a
 	dec d
-; vSprites += [hVRAMSlot] * $C0 (the number of bytes in 12 tiles)
+; hl = vSprites + [hVRAMSlot] * $C0 (the number of bytes in 12 tiles)
 .calculateVRAMAddrLoop
 	add hl, bc
 	dec d
--- a/engine/overworld/player_animations.asm
+++ b/engine/overworld/player_animations.asm
@@ -457,16 +457,16 @@
 	ret
 
 NoNibbleText:
-	TX_FAR _NoNibbleText
-	db "@"
+	text_far _NoNibbleText
+	text_end
 
 NothingHereText:
-	TX_FAR _NothingHereText
-	db "@"
+	text_far _NothingHereText
+	text_end
 
 ItsABiteText:
-	TX_FAR _ItsABiteText
-	db "@"
+	text_far _ItsABiteText
+	text_end
 
 FishingRodOAM:
 ; specifies how the fishing rod should be drawn on the screen
--- a/engine/pokemon/bills_pc.asm
+++ b/engine/pokemon/bills_pc.asm
@@ -89,7 +89,7 @@
 BillsPCText:      db "BILL's PC@"
 PlayersPCText:    db "'s PC@"
 OaksPCText:       db "PROF.OAK's PC@"
-PKMNLeaguePCText: db "<pkmn>LEAGUE@"
+PKMNLeaguePCText: db "<PKMN>LEAGUE@"
 LogOffPCText:     db "LOG OFF@"
 
 BillsPC_::
@@ -339,9 +339,9 @@
 	ret
 
 BillsPCMenuText:
-	db   "WITHDRAW <pkmn>"
-	next "DEPOSIT <pkmn>"
-	next "RELEASE <pkmn>"
+	db   "WITHDRAW <PKMN>"
+	next "DEPOSIT <PKMN>"
+	next "RELEASE <PKMN>"
 	next "CHANGE BOX"
 	next "SEE YA!"
 	db "@"
@@ -453,52 +453,52 @@
 	next "CANCEL@"
 
 SwitchOnText:
-	TX_FAR _SwitchOnText
-	db "@"
+	text_far _SwitchOnText
+	text_end
 
 WhatText:
-	TX_FAR _WhatText
-	db "@"
+	text_far _WhatText
+	text_end
 
 DepositWhichMonText:
-	TX_FAR _DepositWhichMonText
-	db "@"
+	text_far _DepositWhichMonText
+	text_end
 
 MonWasStoredText:
-	TX_FAR _MonWasStoredText
-	db "@"
+	text_far _MonWasStoredText
+	text_end
 
 CantDepositLastMonText:
-	TX_FAR _CantDepositLastMonText
-	db "@"
+	text_far _CantDepositLastMonText
+	text_end
 
 BoxFullText:
-	TX_FAR _BoxFullText
-	db "@"
+	text_far _BoxFullText
+	text_end
 
 MonIsTakenOutText:
-	TX_FAR _MonIsTakenOutText
-	db "@"
+	text_far _MonIsTakenOutText
+	text_end
 
 NoMonText:
-	TX_FAR _NoMonText
-	db "@"
+	text_far _NoMonText
+	text_end
 
 CantTakeMonText:
-	TX_FAR _CantTakeMonText
-	db "@"
+	text_far _CantTakeMonText
+	text_end
 
 ReleaseWhichMonText:
-	TX_FAR _ReleaseWhichMonText
-	db "@"
+	text_far _ReleaseWhichMonText
+	text_end
 
 OnceReleasedText:
-	TX_FAR _OnceReleasedText
-	db "@"
+	text_far _OnceReleasedText
+	text_end
 
 MonWasReleasedText:
-	TX_FAR _MonWasReleasedText
-	db "@"
+	text_far _MonWasReleasedText
+	text_end
 
 CableClubLeftGameboy::
 	ld a, [hSerialConnectionStatus]
@@ -535,8 +535,8 @@
 	tx_pre_jump JustAMomentText
 
 JustAMomentText::
-	TX_FAR _JustAMomentText
-	db "@"
+	text_far _JustAMomentText
+	text_end
 
 	ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
 	cp SPRITE_FACING_UP
@@ -545,5 +545,5 @@
 	tx_pre_jump OpenBillsPCText
 
 OpenBillsPCText::
-	TX_BILLS_PC
+	script_bills_pc
 
--- a/engine/pokemon/evos_moves.asm
+++ b/engine/pokemon/evos_moves.asm
@@ -296,20 +296,20 @@
 	jp Evolution_PartyMonLoop
 
 EvolvedText:
-	TX_FAR _EvolvedText
-	db "@"
+	text_far _EvolvedText
+	text_end
 
 IntoText:
-	TX_FAR _IntoText
-	db "@"
+	text_far _IntoText
+	text_end
 
 StoppedEvolvingText:
-	TX_FAR _StoppedEvolvingText
-	db "@"
+	text_far _StoppedEvolvingText
+	text_end
 
 IsEvolvingText:
-	TX_FAR _IsEvolvingText
-	db "@"
+	text_far _IsEvolvingText
+	text_end
 
 Evolution_ReloadTilesetTilePatterns:
 	ld a, [wLinkState]
--- a/engine/pokemon/learn_move.asm
+++ b/engine/pokemon/learn_move.asm
@@ -184,31 +184,31 @@
 	ret
 
 LearnedMove1Text:
-	TX_FAR _LearnedMove1Text
-	TX_SFX_ITEM_1 ; plays SFX_GET_ITEM_1 in the party menu (rare candy) and plays SFX_LEVEL_UP in battle
-	TX_BLINK
-	db "@"
+	text_far _LearnedMove1Text
+	sound_get_item_1 ; plays SFX_GET_ITEM_1 in the party menu (rare candy) and plays SFX_LEVEL_UP in battle
+	text_promptbutton
+	text_end
 
 WhichMoveToForgetText:
-	TX_FAR _WhichMoveToForgetText
-	db "@"
+	text_far _WhichMoveToForgetText
+	text_end
 
 AbandonLearningText:
-	TX_FAR _AbandonLearningText
-	db "@"
+	text_far _AbandonLearningText
+	text_end
 
 DidNotLearnText:
-	TX_FAR _DidNotLearnText
-	db "@"
+	text_far _DidNotLearnText
+	text_end
 
 TryingToLearnText:
-	TX_FAR _TryingToLearnText
-	db "@"
+	text_far _TryingToLearnText
+	text_end
 
 OneTwoAndText:
-	TX_FAR _OneTwoAndText
-	TX_DELAY
-	TX_ASM
+	text_far _OneTwoAndText
+	text_pause
+	text_asm
 	ld a, SFX_SWAP
 	call PlaySoundWaitForCurrent
 	ld hl, PoofText
@@ -215,12 +215,12 @@
 	ret
 
 PoofText:
-	TX_FAR _PoofText
-	TX_DELAY
+	text_far _PoofText
+	text_pause
 ForgotAndText:
-	TX_FAR _ForgotAndText
-	db "@"
+	text_far _ForgotAndText
+	text_end
 
 HMCantDeleteText:
-	TX_FAR _HMCantDeleteText
-	db "@"
+	text_far _HMCantDeleteText
+	text_end
--- a/engine/pokemon/status_screen.asm
+++ b/engine/pokemon/status_screen.asm
@@ -110,7 +110,7 @@
 	call DrawLineBox ; Draws the box around name, HP and status
 	ld de, -6
 	add hl, de
-	ld [hl], "⠄" ; . after No ("." is a different one)
+	ld [hl], "<DOT>"
 	dec hl
 	ld [hl], "№"
 	coord hl, 19, 9
@@ -205,14 +205,17 @@
 	dw wDayCareMonName
 
 Type1Text:
-	db "TYPE1/", $4e
-
+	db   "TYPE1/"
+	next ""
+	; fallthrough
 Type2Text:
-	db "TYPE2/", $4e
-
+	db   "TYPE2/"
+	next ""
+	; fallthrough
 IDNoText:
-	db $73, "№/", $4e
-
+	db   "<ID>№/"
+	next ""
+	; fallthrough
 OTText:
 	db   "OT/"
 	next "@"
@@ -328,7 +331,7 @@
 	ld b, a ; Number of moves ?
 	coord hl, 11, 10
 	ld de, SCREEN_WIDTH * 2
-	ld a, $72 ; special P tile id
+	ld a, "<BOLD_P>"
 	call StatusScreen_PrintPP ; Print "PP"
 	ld a, b
 	and a
@@ -399,7 +402,7 @@
 	ld [wLoadedMonLevel], a ; Increase temporarily if not 100
 .Level100
 	coord hl, 14, 6
-	ld [hl], $70 ; 1-tile "to"
+	ld [hl], "<to>"
 	inc hl
 	inc hl
 	call PrintLevel
--- a/engine/slots/game_corner_slots.asm
+++ b/engine/slots/game_corner_slots.asm
@@ -42,13 +42,13 @@
 	ret
 
 GameCornerOutOfOrderText::
-	TX_FAR _GameCornerOutOfOrderText
-	db "@"
+	text_far _GameCornerOutOfOrderText
+	text_end
 
 GameCornerOutToLunchText::
-	TX_FAR _GameCornerOutToLunchText
-	db "@"
+	text_far _GameCornerOutToLunchText
+	text_end
 
 GameCornerSomeonesKeysText::
-	TX_FAR _GameCornerSomeonesKeysText
-	db "@"
+	text_far _GameCornerSomeonesKeysText
+	text_end
--- a/engine/slots/game_corner_slots2.asm
+++ b/engine/slots/game_corner_slots2.asm
@@ -23,9 +23,9 @@
 	ret
 
 GameCornerCoinCaseText::
-	TX_FAR _GameCornerCoinCaseText
-	db "@"
+	text_far _GameCornerCoinCaseText
+	text_end
 
 GameCornerNoCoinsText::
-	TX_FAR _GameCornerNoCoinsText
-	db "@"
+	text_far _GameCornerNoCoinsText
+	text_end
--- a/engine/slots/slot_machine.asm
+++ b/engine/slots/slot_machine.asm
@@ -53,8 +53,8 @@
 	jp CloseTextDisplay
 
 PlaySlotMachineText:
-	TX_FAR _PlaySlotMachineText
-	db "@"
+	text_far _PlaySlotMachineText
+	text_end
 
 MainSlotMachineLoop:
 	call SlotMachine_PrintCreditCoins
@@ -152,24 +152,24 @@
 	next "×1@"
 
 OutOfCoinsSlotMachineText:
-	TX_FAR _OutOfCoinsSlotMachineText
-	db "@"
+	text_far _OutOfCoinsSlotMachineText
+	text_end
 
 BetHowManySlotMachineText:
-	TX_FAR _BetHowManySlotMachineText
-	db "@"
+	text_far _BetHowManySlotMachineText
+	text_end
 
 StartSlotMachineText:
-	TX_FAR _StartSlotMachineText
-	db "@"
+	text_far _StartSlotMachineText
+	text_end
 
 NotEnoughCoinsSlotMachineText:
-	TX_FAR _NotEnoughCoinsSlotMachineText
-	db "@"
+	text_far _NotEnoughCoinsSlotMachineText
+	text_end
 
 OneMoreGoSlotMachineText:
-	TX_FAR _OneMoreGoSlotMachineText
-	db "@"
+	text_far _OneMoreGoSlotMachineText
+	text_end
 
 SlotMachine_SetFlags:
 	ld hl, wSlotMachineFlags
@@ -476,7 +476,7 @@
 	jp .done
 
 SymbolLinedUpSlotMachineText:
-	TX_ASM
+	text_asm
 	push bc
 	call SlotMachine_PrintWinningSymbol
 	ld hl, LinedUpText
@@ -488,8 +488,8 @@
 	ret
 
 LinedUpText:
-	TX_FAR _LinedUpText
-	db "@"
+	text_far _LinedUpText
+	text_end
 
 SlotRewardPointers:
 	dw SlotReward300Func
@@ -518,8 +518,8 @@
 	db "15@"
 
 NotThisTimeText:
-	TX_FAR _NotThisTimeText
-	db "@"
+	text_far _NotThisTimeText
+	text_end
 
 ; compares the slot machine tiles at bc, de, and hl
 SlotMachine_CheckForMatch:
@@ -609,9 +609,9 @@
 	ret
 
 YeahText:
-	TX_FAR _YeahText
-	TX_DELAY
-	db "@"
+	text_far _YeahText
+	text_pause
+	text_end
 
 SlotMachine_PrintWinningSymbol:
 ; prints winning symbol and down arrow in text box
--- a/home.asm
+++ b/home.asm
@@ -175,7 +175,7 @@
 	ld [wNewSoundID], a
 	jp PlaySound
 
-INCLUDE "home/predef_text.asm"
+INCLUDE "home/text_script.asm"
 INCLUDE "home/start_menu.asm"
 
 ; function to count how many bits are set in a string of bytes
@@ -456,19 +456,19 @@
 	inc hl
 	jr DecodeArrowMovementRLE
 
-FuncTX_ItemStoragePC::
+TextScript_ItemStoragePC::
 	call SaveScreenTilesToBuffer2
 	ld b, BANK(PlayerPC)
 	ld hl, PlayerPC
 	jr bankswitchAndContinue
 
-FuncTX_BillsPC::
+TextScript_BillsPC::
 	call SaveScreenTilesToBuffer2
 	ld b, BANK(BillsPC_)
 	ld hl, BillsPC_
 	jr bankswitchAndContinue
 
-FuncTX_GameCornerPrizeMenu::
+TextScript_GameCornerPrizeMenu::
 ; XXX find a better name for this function
 ; special_F7
 	ld b, BANK(CeladonPrizeMenu)
@@ -477,7 +477,7 @@
 	call Bankswitch
 	jp HoldTextDisplayOpen        ; continue to main text-engine function
 
-FuncTX_PokemonCenterPC::
+TextScript_PokemonCenterPC::
 	ld b, BANK(ActivatePC)
 	ld hl, ActivatePC
 	jr bankswitchAndContinue
--- a/home/overworld.asm
+++ b/home/overworld.asm
@@ -75,8 +75,8 @@
 	bit 3, a ; start button
 	jr z, .startButtonNotPressed
 ; if START is pressed
-	xor a
-	ld [hSpriteIndexOrTextID], a ; start menu text ID
+	xor a ; TEXT_START_MENU
+	ld [hSpriteIndexOrTextID], a
 	jp .displayDialogue
 .startButtonNotPressed
 	bit 0, a ; A button
--- a/home/overworld_text.asm
+++ b/home/overworld_text.asm
@@ -1,31 +1,31 @@
-TextScriptEndingChar::
-	db "@"
+TextScriptEndingText::
+	text_end
 
 TextScriptEnd::
-	ld hl, TextScriptEndingChar
+	ld hl, TextScriptEndingText
 	ret
 
 ExclamationText::
-	TX_FAR _ExclamationText
-	db "@"
+	text_far _ExclamationText
+	text_end
 
 GroundRoseText::
-	TX_FAR _GroundRoseText
-	db "@"
+	text_far _GroundRoseText
+	text_end
 
 BoulderText::
-	TX_FAR _BoulderText
-	db "@"
+	text_far _BoulderText
+	text_end
 
 MartSignText::
-	TX_FAR _MartSignText
-	db "@"
+	text_far _MartSignText
+	text_end
 
 PokeCenterSignText::
-	TX_FAR _PokeCenterSignText
-	db "@"
+	text_far _PokeCenterSignText
+	text_end
 
 PickUpItemText::
-	TX_ASM
+	text_asm
 	predef PickUpItem
 	jp TextScriptEnd
--- a/home/pokemon.asm
+++ b/home/pokemon.asm
@@ -342,7 +342,7 @@
 ; hl = destination address
 ; [wLoadedMonLevel] = level
 PrintLevel::
-	ld a, $6e ; ":L" tile ID
+	ld a, "<LV>" ; ":L" tile ID
 	ld [hli], a
 	ld c, 2 ; number of digits
 	ld a, [wLoadedMonLevel] ; level
@@ -358,7 +358,7 @@
 ; hl = destination address
 ; [wLoadedMonLevel] = level
 PrintLevelFull::
-	ld a, $6e ; ":L" tile ID
+	ld a, "<LV>" ; ":L" tile ID
 	ld [hli], a
 	ld c, 3 ; number of digits
 	ld a, [wLoadedMonLevel] ; level
--- a/home/predef_text.asm
+++ /dev/null
@@ -1,237 +1,0 @@
-; this function is used to display sign messages, sprite dialog, etc.
-; INPUT: [hSpriteIndexOrTextID] = sprite ID or text ID
-DisplayTextID::
-	ld a, [hLoadedROMBank]
-	push af
-	callba DisplayTextIDInit ; initialization
-	ld hl, wTextPredefFlag
-	bit 0, [hl]
-	res 0, [hl]
-	jr nz, .skipSwitchToMapBank
-	ld a, [wCurMap]
-	call SwitchToMapRomBank
-.skipSwitchToMapBank
-	ld a, 30 ; half a second
-	ld [hFrameCounter], a ; used as joypad poll timer
-	ld hl, wMapTextPtr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a ; hl = map text pointer
-	ld d, $00
-	ld a, [hSpriteIndexOrTextID] ; text ID
-	ld [wSpriteIndex], a
-	and a
-	jp z, DisplayStartMenu
-	cp TEXT_SAFARI_GAME_OVER
-	jp z, DisplaySafariGameOverText
-	cp TEXT_MON_FAINTED
-	jp z, DisplayPokemonFaintedText
-	cp TEXT_BLACKED_OUT
-	jp z, DisplayPlayerBlackedOutText
-	cp TEXT_REPEL_WORE_OFF
-	jp z, DisplayRepelWoreOffText
-	ld a, [wNumSprites]
-	ld e, a
-	ld a, [hSpriteIndexOrTextID] ; sprite ID
-	cp e
-	jr z, .spriteHandling
-	jr nc, .skipSpriteHandling
-.spriteHandling
-; get the text ID of the sprite
-	push hl
-	push de
-	push bc
-	callba UpdateSpriteFacingOffsetAndDelayMovement ; update the graphics of the sprite the player is talking to (to face the right direction)
-	pop bc
-	pop de
-	ld hl, wMapSpriteData ; NPC text entries
-	ld a, [hSpriteIndexOrTextID]
-	dec a
-	add a
-	add l
-	ld l, a
-	jr nc, .noCarry
-	inc h
-.noCarry
-	inc hl
-	ld a, [hl] ; a = text ID of the sprite
-	pop hl
-.skipSpriteHandling
-; look up the address of the text in the map's text entries
-	dec a
-	ld e, a
-	sla e
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a ; hl = address of the text
-	ld a, [hl] ; a = first byte of text
-; check first byte of text for special cases
-	cp $fe   ; Pokemart NPC
-	jp z, DisplayPokemartDialogue
-	cp $ff   ; Pokemon Center NPC
-	jp z, DisplayPokemonCenterDialogue
-	cp $fc   ; Item Storage PC
-	jp z, FuncTX_ItemStoragePC
-	cp $fd   ; Bill's PC
-	jp z, FuncTX_BillsPC
-	cp $f9   ; Pokemon Center PC
-	jp z, FuncTX_PokemonCenterPC
-	cp $f5   ; Vending Machine
-	jr nz, .notVendingMachine
-	callba VendingMachineMenu ; jump banks to vending machine routine
-	jr AfterDisplayingTextID
-.notVendingMachine
-	cp $f7   ; prize menu
-	jp z, FuncTX_GameCornerPrizeMenu
-	cp $f6   ; cable connection NPC in Pokemon Center
-	jr nz, .notSpecialCase
-	callab CableClubNPC
-	jr AfterDisplayingTextID
-.notSpecialCase
-	call PrintText_NoCreatingTextBox ; display the text
-	ld a, [wDoNotWaitForButtonPressAfterDisplayingText]
-	and a
-	jr nz, HoldTextDisplayOpen
-
-AfterDisplayingTextID::
-	ld a, [wEnteringCableClub]
-	and a
-	jr nz, HoldTextDisplayOpen
-	call WaitForTextScrollButtonPress ; wait for a button press after displaying all the text
-
-; loop to hold the dialogue box open as long as the player keeps holding down the A button
-HoldTextDisplayOpen::
-	call Joypad
-	ld a, [hJoyHeld]
-	bit 0, a ; is the A button being pressed?
-	jr nz, HoldTextDisplayOpen
-
-CloseTextDisplay::
-	ld a, [wCurMap]
-	call SwitchToMapRomBank
-	ld a, $90
-	ld [hWY], a ; move the window off the screen
-	call DelayFrame
-	call LoadGBPal
-	xor a
-	ld [hAutoBGTransferEnabled], a ; disable continuous WRAM to VRAM transfer each V-blank
-; loop to make sprites face the directions they originally faced before the dialogue
-	ld hl, wSpriteStateData2 + $19
-	ld c, $0f
-	ld de, $10
-.restoreSpriteFacingDirectionLoop
-	ld a, [hl]
-	dec h
-	ld [hl], a
-	inc h
-	add hl, de
-	dec c
-	jr nz, .restoreSpriteFacingDirectionLoop
-	ld a, BANK(InitMapSprites)
-	ld [hLoadedROMBank], a
-	ld [MBC1RomBank], a
-	call InitMapSprites ; reload sprite tile pattern data (since it was partially overwritten by text tile patterns)
-	ld hl, wFontLoaded
-	res 0, [hl]
-	ld a, [wd732]
-	bit 3, a ; used fly warp
-	call z, LoadPlayerSpriteGraphics
-	call LoadCurrentMapView
-	pop af
-	ld [hLoadedROMBank], a
-	ld [MBC1RomBank], a
-	jp UpdateSprites
-
-DisplayPokemartDialogue::
-	push hl
-	ld hl, PokemartGreetingText
-	call PrintText
-	pop hl
-	inc hl
-	call LoadItemList
-	ld a, PRICEDITEMLISTMENU
-	ld [wListMenuID], a
-	ld a, [hLoadedROMBank]
-	push af
-	ld a, BANK(DisplayPokemartDialogue_)
-	ld [hLoadedROMBank], a
-	ld [MBC1RomBank], a
-	call DisplayPokemartDialogue_
-	pop af
-	ld [hLoadedROMBank], a
-	ld [MBC1RomBank], a
-	jp AfterDisplayingTextID
-
-PokemartGreetingText::
-	TX_FAR _PokemartGreetingText
-	db "@"
-
-LoadItemList::
-	ld a, 1
-	ld [wUpdateSpritesEnabled], a
-	ld a, h
-	ld [wItemListPointer], a
-	ld a, l
-	ld [wItemListPointer + 1], a
-	ld de, wItemList
-.loop
-	ld a, [hli]
-	ld [de], a
-	inc de
-	cp $ff
-	jr nz, .loop
-	ret
-
-DisplayPokemonCenterDialogue::
-; zeroing these doesn't appear to serve any purpose
-	xor a
-	ld [hItemPrice], a
-	ld [hItemPrice + 1], a
-	ld [hItemPrice + 2], a
-
-	inc hl
-	ld a, [hLoadedROMBank]
-	push af
-	ld a, BANK(DisplayPokemonCenterDialogue_)
-	ld [hLoadedROMBank], a
-	ld [MBC1RomBank], a
-	call DisplayPokemonCenterDialogue_
-	pop af
-	ld [hLoadedROMBank], a
-	ld [MBC1RomBank], a
-	jp AfterDisplayingTextID
-
-DisplaySafariGameOverText::
-	callab PrintSafariGameOverText
-	jp AfterDisplayingTextID
-
-DisplayPokemonFaintedText::
-	ld hl, PokemonFaintedText
-	call PrintText
-	jp AfterDisplayingTextID
-
-PokemonFaintedText::
-	TX_FAR _PokemonFaintedText
-	db "@"
-
-DisplayPlayerBlackedOutText::
-	ld hl, PlayerBlackedOutText
-	call PrintText
-	ld a, [wd732]
-	res 5, a ; reset forced to use bike bit
-	ld [wd732], a
-	jp HoldTextDisplayOpen
-
-PlayerBlackedOutText::
-	TX_FAR _PlayerBlackedOutText
-	db "@"
-
-DisplayRepelWoreOffText::
-	ld hl, RepelWoreOffText
-	call PrintText
-	jp AfterDisplayingTextID
-
-RepelWoreOffText::
-	TX_FAR _RepelWoreOffText
-	db "@"
--- a/home/text.asm
+++ b/home/text.asm
@@ -5,9 +5,9 @@
 	push hl
 	ld a, "┌"
 	ld [hli], a
-	inc a ; ─
-	call NPlaceChar
-	inc a ; ┐
+	inc a ; "─"
+	call .PlaceChars
+	inc a ; "┐"
 	ld [hl], a
 	pop hl
 
@@ -20,7 +20,7 @@
 	ld a, "│"
 	ld [hli], a
 	ld a, " "
-	call NPlaceChar
+	call .PlaceChars
 	ld [hl], "│"
 	pop hl
 
@@ -33,11 +33,11 @@
 	ld a, "└"
 	ld [hli], a
 	ld a, "─"
-	call NPlaceChar
+	call .PlaceChars
 	ld [hl], "┘"
 	ret
 
-NPlaceChar::
+.PlaceChars::
 ; Place char a c times.
 	ld d, c
 .loop
@@ -48,19 +48,19 @@
 
 PlaceString::
 	push hl
+
 PlaceNextChar::
 	ld a, [de]
-
 	cp "@"
-	jr nz, Char4ETest
+	jr nz, .NotTerminator
 	ld b, h
 	ld c, l
 	pop hl
 	ret
 
-Char4ETest::
-	cp $4E ; next
-	jr nz, .char4FTest
+.NotTerminator
+	cp "<NEXT>"
+	jr nz, .NotNext
 	ld bc, 2 * SCREEN_WIDTH
 	ld a, [hFlagsFFF6]
 	bit 2, a
@@ -70,142 +70,101 @@
 	pop hl
 	add hl, bc
 	push hl
-	jp PlaceNextChar_inc
+	jp NextChar
 
-.char4FTest
-	cp $4F ; line
-	jr nz, .next3
+.NotNext
+	cp "<LINE>"
+	jr nz, .NotLine
 	pop hl
 	coord hl, 1, 16
 	push hl
-	jp PlaceNextChar_inc
+	jp NextChar
 
-.next3 ; Check against a dictionary
-dict: macro
-if \1 == 0
-	and a
-else
-	cp \1
-endc
-	jp z, \2
-endm
+.NotLine
 
-	dict $00, Char00 ; error
-	dict $4C, Char4C ; autocont
-	dict $4B, Char4B ; cont_
-	dict $51, Char51 ; para
-	dict $49, Char49 ; page
-	dict $52, Char52 ; player
-	dict $53, Char53 ; rival
-	dict $54, Char54 ; POKé
-	dict $5B, Char5B ; PC
-	dict $5E, Char5E ; ROCKET
-	dict $5C, Char5C ; TM
-	dict $5D, Char5D ; TRAINER
-	dict $55, Char55 ; cont
-	dict $56, Char56 ; 6 dots
-	dict $57, Char57 ; done
-	dict $58, Char58 ; prompt
-	dict $4A, Char4A ; PKMN
-	dict $5F, Char5F ; dex
-	dict $59, Char59 ; TARGET
-	dict $5A, Char5A ; USER
+; Check against a dictionary
+	dict "<NULL>",    NullChar
+	dict "<SCROLL>",  _ContTextNoPause
+	dict "<_CONT>",   _ContText
+	dict "<PARA>",    Paragraph
+	dict "<PAGE>",    PageChar
+	dict "<PLAYER>",  PrintPlayerName
+	dict "<RIVAL>",   PrintRivalName
+	dict "#",         PlacePOKe
+	dict "<PC>",      PCChar
+	dict "<ROCKET>",  RocketChar
+	dict "<TM>",      TMChar
+	dict "<TRAINER>", TrainerChar
+	dict "<CONT>",    ContText
+	dict "<……>",      SixDotsChar
+	dict "<DONE>",    DoneText
+	dict "<PROMPT>",  PromptText
+	dict "<PKMN>",    PlacePKMN
+	dict "<DEXEND>",  PlaceDexEnd
+	dict "<TARGET>",  PlaceMoveTargetsName
+	dict "<USER>",    PlaceMoveUsersName
 
 	ld [hli], a
 	call PrintLetterDelay
-PlaceNextChar_inc::
+
+NextChar::
 	inc de
 	jp PlaceNextChar
 
-Char00::
+NullChar::
 	ld b, h
 	ld c, l
 	pop hl
-	ld de, Char00Text
+	ld de, TextIDErrorText
 	dec de
 	ret
 
-Char00Text:: ; “%d ERROR.”
-	TX_FAR _Char00Text
-	db "@"
+TextIDErrorText:: ; "[hSpriteIndexOrTextID] ERROR."
+	text_far _TextIDErrorText
+	text_end
 
-Char52:: ; player’s name
+print_name: MACRO
 	push de
-	ld de, wPlayerName
-	jr FinishDTE
+	ld de, \1
+	jr PlaceCommandCharacter
+ENDM
 
-Char53:: ; rival’s name
-	push de
-	ld de, wRivalName
-	jr FinishDTE
+PrintPlayerName:: print_name wPlayerName
+PrintRivalName::  print_name wRivalName
 
-Char5D:: ; TRAINER
-	push de
-	ld de, Char5DText
-	jr FinishDTE
+TrainerChar:: print_name TrainerCharText
+TMChar::      print_name TMCharText
+PCChar::      print_name PCCharText
+RocketChar::  print_name RocketCharText
+PlacePOKe::   print_name PlacePOKeText
+SixDotsChar:: print_name SixDotsCharText
+PlacePKMN::   print_name PlacePKMNText
 
-Char5C:: ; TM
-	push de
-	ld de, Char5CText
-	jr FinishDTE
-
-Char5B:: ; PC
-	push de
-	ld de, Char5BText
-	jr FinishDTE
-
-Char5E:: ; ROCKET
-	push de
-	ld de, Char5EText
-	jr FinishDTE
-
-Char54:: ; POKé
-	push de
-	ld de, Char54Text
-	jr FinishDTE
-
-Char56:: ; ……
-	push de
-	ld de, Char56Text
-	jr FinishDTE
-
-Char4A:: ; PKMN
-	push de
-	ld de, Char4AText
-	jr FinishDTE
-
-Char59::
-; depending on whose turn it is, print
-; enemy active monster’s name, prefixed with “Enemy ”
-; or
-; player active monster’s name
-; (like Char5A but flipped)
+PlaceMoveTargetsName::
 	ld a, [hWhoseTurn]
 	xor 1
-	jr MonsterNameCharsCommon
+	jr PlaceMoveUsersName.place
 
-Char5A::
-; depending on whose turn it is, print
-; player active monster’s name
-; or
-; enemy active monster’s name, prefixed with “Enemy ”
+PlaceMoveUsersName::
 	ld a, [hWhoseTurn]
-MonsterNameCharsCommon::
+
+.place:
 	push de
 	and a
-	jr nz, .Enemy
-	ld de, wBattleMonNick ; player active monster name
-	jr FinishDTE
+	jr nz, .enemy
 
-.Enemy
-	; print “Enemy ”
-	ld de, Char5AText
+	ld de, wBattleMonNick
+	jr PlaceCommandCharacter
+
+.enemy
+	ld de, EnemyText
 	call PlaceString
 	ld h, b
 	ld l, c
-	ld de, wEnemyMonNick ; enemy active monster name
+	ld de, wEnemyMonNick
+	; fallthrough
 
-FinishDTE::
+PlaceCommandCharacter::
 	call PlaceString
 	ld h, b
 	ld l, c
@@ -213,28 +172,20 @@
 	inc de
 	jp PlaceNextChar
 
-Char5CText::
-	db "TM@"
-Char5DText::
-	db "TRAINER@"
-Char5BText::
-	db "PC@"
-Char5EText::
-	db "ROCKET@"
-Char54Text::
-	db "POKé@"
-Char56Text::
-	db "……@"
-Char5AText::
-	db "Enemy @"
-Char4AText::
-	db $E1,$E2,"@" ; PKMN
+TMCharText::      db "TM@"
+TrainerCharText:: db "TRAINER@"
+PCCharText::      db "PC@"
+RocketCharText::  db "ROCKET@"
+PlacePOKeText::   db "POKé@"
+SixDotsCharText:: db "……@"
+EnemyText::       db "Enemy @"
+PlacePKMNText::   db "<PK><MN>@"
 
-Char55::
+ContText::
 	push de
 	ld b, h
 	ld c, l
-	ld hl, Char55Text
+	ld hl, ContCharText
 	call TextCommandProcessor
 	ld h, b
 	ld l, c
@@ -242,18 +193,16 @@
 	inc de
 	jp PlaceNextChar
 
-Char55Text::
-; equivalent to Char4B
-	TX_FAR _Char55Text
-	db "@"
+ContCharText::
+	text_far _ContCharText
+	text_end
 
-Char5F::
-; ends a Pokédex entry
+PlaceDexEnd::
 	ld [hl], "."
 	pop hl
 	ret
 
-Char58:: ; prompt
+PromptText::
 	ld a, [wLinkState]
 	cp LINK_STATE_BATTLING
 	jp z, .ok
@@ -264,16 +213,17 @@
 	call ManualTextScroll
 	ld a, " "
 	Coorda 18, 16
-Char57:: ; done
+
+DoneText::
 	pop hl
-	ld de, Char58Text
+	ld de, .stop
 	dec de
 	ret
 
-Char58Text::
-	db "@"
+.stop:
+	text_end
 
-Char51:: ; para
+Paragraph::
 	push de
 	ld a, "▼"
 	Coorda 18, 16
@@ -286,9 +236,9 @@
 	call DelayFrames
 	pop de
 	coord hl, 1, 14
-	jp PlaceNextChar_inc
+	jp NextChar
 
-Char49::
+PageChar::
 	push de
 	ld a, "▼"
 	Coorda 18, 16
@@ -303,9 +253,9 @@
 	pop hl
 	coord hl, 1, 11
 	push hl
-	jp PlaceNextChar_inc
+	jp NextChar
 
-Char4B::
+_ContText::
 	ld a, "▼"
 	Coorda 18, 16
 	call ProtectedDelay3
@@ -314,14 +264,13 @@
 	pop de
 	ld a, " "
 	Coorda 18, 16
-	;fall through
-Char4C::
+_ContTextNoPause::
 	push de
 	call ScrollTextUpOneLine
 	call ScrollTextUpOneLine
 	coord hl, 1, 16
 	pop de
-	jp PlaceNextChar_inc
+	jp NextChar
 
 ; move both rows of text in the normal text box up one row
 ; always called twice in a row
@@ -345,7 +294,6 @@
 	dec b
 	jr nz, .clearText
 
-	; wait five frames
 	ld b, 5
 .WaitFrame
 	call DelayFrame
@@ -375,18 +323,18 @@
 
 NextTextCommand::
 	ld a, [hli]
-	cp "@" ; terminator
-	jr nz, .doTextCommand
+	cp TX_END
+	jr nz, .TextCommand
 	pop af
 	ld [wLetterPrintingDelayFlags], a
 	ret
-.doTextCommand
+
+.TextCommand:
 	push hl
-	cp $17
-	jp z, TextCommand17
-	cp $0e
-	jp nc, TextCommand0B ; if a != 0x17 and a >= 0xE, go to command 0xB
-; if a < 0xE, use a jump table
+	cp TX_FAR
+	jp z, TextCommand_FAR
+	cp TX_SOUND_POKEDEX_RATING
+	jp nc, TextCommand_SOUND
 	ld hl, TextCommandJumpTable
 	push bc
 	add a
@@ -399,12 +347,8 @@
 	ld l, a
 	jp hl
 
-; draw box
-; 04AAAABBCC
-; AAAA = address of upper left corner
-; BB = height
-; CC = width
-TextCommand04::
+TextCommand_BOX::
+; draw a box (height, width)
 	pop hl
 	ld a, [hli]
 	ld e, a
@@ -421,9 +365,8 @@
 	pop hl
 	jr NextTextCommand
 
-; place string inline
-; 00{string}
-TextCommand00::
+TextCommand_START::
+; write text until "@"
 	pop hl
 	ld d, h
 	ld e, l
@@ -435,10 +378,8 @@
 	inc hl
 	jr NextTextCommand
 
-; place string from RAM
-; 01AAAA
-; AAAA = address of string
-TextCommand01::
+TextCommand_RAM::
+; write text from a ram address (little endian)
 	pop hl
 	ld a, [hli]
 	ld e, a
@@ -451,13 +392,8 @@
 	pop hl
 	jr NextTextCommand
 
-; print BCD number
-; 02AAAABB
-; AAAA = address of BCD number
-; BB
-; bits 0-4 = length in bytes
-; bits 5-7 = unknown flags
-TextCommand02::
+TextCommand_BCD::
+; write bcd from address, typically ram
 	pop hl
 	ld a, [hli]
 	ld e, a
@@ -474,10 +410,8 @@
 	pop hl
 	jr NextTextCommand
 
-; repoint destination address
-; 03AAAA
-; AAAA = new destination address
-TextCommand03::
+TextCommand_MOVE::
+; move to a new tile
 	pop hl
 	ld a, [hli]
 	ld [wTextDest], a
@@ -487,21 +421,17 @@
 	ld b, a
 	jp NextTextCommand
 
-; repoint destination to second line of dialogue text box
-; 05
-; (no arguments)
-TextCommand05::
+TextCommand_LOW::
+; write text at (1,16)
 	pop hl
-	coord bc, 1, 16 ; address of second line of dialogue text box
+	coord bc, 1, 16 ; second line of dialogue text box
 	jp NextTextCommand
 
-; blink arrow and wait for A or B to be pressed
-; 06
-; (no arguments)
-TextCommand06::
+TextCommand_PROMPT_BUTTON::
+; wait for button press; show arrow
 	ld a, [wLinkState]
 	cp LINK_STATE_BATTLING
-	jp z, TextCommand0D
+	jp z, TextCommand_LINK_PROMPT_BUTTON
 	ld a, "▼"
 	Coorda 18, 16 ; place down arrow in lower right corner of dialogue text box
 	push bc
@@ -512,33 +442,26 @@
 	pop hl
 	jp NextTextCommand
 
-; scroll text up one line
-; 07
-; (no arguments)
-TextCommand07::
+TextCommand_SCROLL::
+; 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
 	call ScrollTextUpOneLine
 	call ScrollTextUpOneLine
 	pop hl
-	coord bc, 1, 16 ; address of second line of dialogue text box
+	coord bc, 1, 16 ; second line of dialogue text box
 	jp NextTextCommand
 
-; execute asm inline
-; 08{code}
-TextCommand08::
+TextCommand_START_ASM::
+; run assembly code
 	pop hl
 	ld de, NextTextCommand
-	push de ; return address
+	push de
 	jp hl
 
-; print decimal number (converted from binary number)
-; 09AAAABB
-; AAAA = address of number
-; BB
-; bits 0-3 = how many digits to display
-; bits 4-7 = how long the number is in bytes
-TextCommand09::
+TextCommand_NUM::
+; print a number
 	pop hl
 	ld a, [hli]
 	ld e, a
@@ -554,7 +477,7 @@
 	ld a, b
 	and $f0
 	swap a
-	set BIT_LEFT_ALIGN,a
+	set BIT_LEFT_ALIGN, a
 	ld b, a
 	call PrintNumber
 	ld b, h
@@ -562,45 +485,42 @@
 	pop hl
 	jp NextTextCommand
 
-; wait half a second if the user doesn't hold A or B
-; 0A
-; (no arguments)
-TextCommand0A::
+TextCommand_PAUSE::
+; wait for button press or 30 frames
 	push bc
 	call Joypad
 	ld a, [hJoyHeld]
 	and A_BUTTON | B_BUTTON
-	jr nz, .skipDelay
-	ld c, 30
+	jr nz, .done
+	ld c, 30 ; half a second
 	call DelayFrames
-.skipDelay
+.done
 	pop bc
 	pop hl
 	jp NextTextCommand
 
-; plays sounds
-; this actually handles various command ID's, not just 0B
-; (no arguments)
-TextCommand0B::
+TextCommand_SOUND::
+; play a sound effect from TextCommandSounds
 	pop hl
 	push bc
 	dec hl
 	ld a, [hli]
-	ld b, a ; b = command number that got us here
+	ld b, a ; b = text command number that got us here
 	push hl
 	ld hl, TextCommandSounds
 .loop
 	ld a, [hli]
 	cp b
-	jr z, .matchFound
+	jr z, .play
 	inc hl
 	jr .loop
-.matchFound
-	cp $14
+
+.play
+	cp TX_SOUND_CRY_NIDORINA
 	jr z, .pokemonCry
-	cp $15
+	cp TX_SOUND_CRY_PIDGEOT
 	jr z, .pokemonCry
-	cp $16
+	cp TX_SOUND_CRY_DEWGONG
 	jr z, .pokemonCry
 	ld a, [hl]
 	call PlaySound
@@ -608,6 +528,7 @@
 	pop hl
 	pop bc
 	jp NextTextCommand
+
 .pokemonCry
 	push de
 	ld a, [hl]
@@ -617,23 +538,20 @@
 	pop bc
 	jp NextTextCommand
 
-; format: text command ID, sound ID or cry ID
 TextCommandSounds::
-	db $0B, SFX_GET_ITEM_1 ; actually plays SFX_LEVEL_UP when the battle music engine is loaded
-	db $12, SFX_CAUGHT_MON
-	db $0E, SFX_POKEDEX_RATING ; unused?
-	db $0F, SFX_GET_ITEM_1 ; unused?
-	db $10, SFX_GET_ITEM_2
-	db $11, SFX_GET_KEY_ITEM
-	db $13, SFX_DEX_PAGE_ADDED
-	db $14, NIDORINA ; used in OakSpeech
-	db $15, PIDGEOT  ; used in SaffronCityText12
-	db $16, DEWGONG  ; unused?
+	db TX_SOUND_GET_ITEM_1,           SFX_GET_ITEM_1 ; actually plays SFX_LEVEL_UP when the battle music engine is loaded
+	db TX_SOUND_CAUGHT_MON,           SFX_CAUGHT_MON
+	db TX_SOUND_POKEDEX_RATING,       SFX_POKEDEX_RATING ; unused
+	db TX_SOUND_GET_ITEM_1_DUPLICATE, SFX_GET_ITEM_1 ; unused
+	db TX_SOUND_GET_ITEM_2,           SFX_GET_ITEM_2
+	db TX_SOUND_GET_KEY_ITEM,         SFX_GET_KEY_ITEM
+	db TX_SOUND_DEX_PAGE_ADDED,       SFX_DEX_PAGE_ADDED
+	db TX_SOUND_CRY_NIDORINA,         NIDORINA ; used in OakSpeech
+	db TX_SOUND_CRY_PIDGEOT,          PIDGEOT  ; used in SaffronCityText12
+	db TX_SOUND_CRY_DEWGONG,          DEWGONG  ; unused
 
-; draw ellipses
-; 0CAA
-; AA = number of ellipses to draw
-TextCommand0C::
+TextCommand_DOTS::
+; wait for button press or 30 frames while printing "…"s
 	pop hl
 	ld a, [hli]
 	ld d, a
@@ -640,6 +558,7 @@
 	push hl
 	ld h, b
 	ld l, c
+
 .loop
 	ld a, "…"
 	ld [hli], a
@@ -648,47 +567,47 @@
 	pop de
 	ld a, [hJoyHeld] ; joypad state
 	and A_BUTTON | B_BUTTON
-	jr nz, .skipDelay ; if so, skip the delay
+	jr nz, .next ; if so, skip the delay
 	ld c, 10
 	call DelayFrames
-.skipDelay
+.next
 	dec d
 	jr nz, .loop
+
 	ld b, h
 	ld c, l
 	pop hl
 	jp NextTextCommand
 
-; wait for A or B to be pressed
-; 0D
-; (no arguments)
-TextCommand0D::
+TextCommand_LINK_PROMPT_BUTTON::
+; wait for button press; display arrow
 	push bc
-	call ManualTextScroll ; wait for A or B to be pressed
+	call ManualTextScroll
 	pop bc
 	pop hl
 	jp NextTextCommand
 
-; process text commands in another ROM bank
-; 17AAAABB
-; AAAA = address of text commands
-; BB = bank
-TextCommand17::
+TextCommand_FAR::
+; write text from a different bank (little endian)
 	pop hl
 	ld a, [hLoadedROMBank]
 	push af
+
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
 	ld d, a
 	ld a, [hli]
+
 	ld [hLoadedROMBank], a
 	ld [MBC1RomBank], a
+
 	push hl
 	ld l, e
 	ld h, d
 	call TextCommandProcessor
 	pop hl
+
 	pop af
 	ld [hLoadedROMBank], a
 	ld [MBC1RomBank], a
@@ -695,17 +614,19 @@
 	jp NextTextCommand
 
 TextCommandJumpTable::
-	dw TextCommand00
-	dw TextCommand01
-	dw TextCommand02
-	dw TextCommand03
-	dw TextCommand04
-	dw TextCommand05
-	dw TextCommand06
-	dw TextCommand07
-	dw TextCommand08
-	dw TextCommand09
-	dw TextCommand0A
-	dw TextCommand0B
-	dw TextCommand0C
-	dw TextCommand0D
+; entries correspond to TX_* constants (see macros/scripts/text.asm)
+	dw TextCommand_START              ; TX_START
+	dw TextCommand_RAM                ; TX_RAM
+	dw TextCommand_BCD                ; TX_BCD
+	dw TextCommand_MOVE               ; TX_MOVE
+	dw TextCommand_BOX                ; TX_BOX
+	dw TextCommand_LOW                ; TX_LOW
+	dw TextCommand_PROMPT_BUTTON      ; TX_PROMPT_BUTTON
+	dw TextCommand_SCROLL             ; TX_SCROLL
+	dw TextCommand_START_ASM          ; TX_START_ASM
+	dw TextCommand_NUM                ; TX_NUM
+	dw TextCommand_PAUSE              ; TX_PAUSE
+	dw TextCommand_SOUND              ; TX_SOUND_GET_ITEM_1 (also handles other TX_SOUND_* commands)
+	dw TextCommand_DOTS               ; TX_DOTS
+	dw TextCommand_LINK_PROMPT_BUTTON ; TX_LINK_PROMPT_BUTTON
+	; greater TX_* constants are handled directly by NextTextCommand
--- /dev/null
+++ b/home/text_script.asm
@@ -1,0 +1,231 @@
+; this function is used to display sign messages, sprite dialog, etc.
+; INPUT: [hSpriteIndexOrTextID] = sprite ID or text ID
+DisplayTextID::
+	ld a, [hLoadedROMBank]
+	push af
+	callba DisplayTextIDInit ; initialization
+	ld hl, wTextPredefFlag
+	bit 0, [hl]
+	res 0, [hl]
+	jr nz, .skipSwitchToMapBank
+	ld a, [wCurMap]
+	call SwitchToMapRomBank
+.skipSwitchToMapBank
+	ld a, 30 ; half a second
+	ld [hFrameCounter], a ; used as joypad poll timer
+	ld hl, wMapTextPtr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a ; hl = map text pointer
+	ld d, $00
+	ld a, [hSpriteIndexOrTextID] ; text ID
+	ld [wSpriteIndex], a
+
+	dict TEXT_START_MENU,       DisplayStartMenu
+	dict TEXT_SAFARI_GAME_OVER, DisplaySafariGameOverText
+	dict TEXT_MON_FAINTED,      DisplayPokemonFaintedText
+	dict TEXT_BLACKED_OUT,      DisplayPlayerBlackedOutText
+	dict TEXT_REPEL_WORE_OFF,   DisplayRepelWoreOffText
+
+	ld a, [wNumSprites]
+	ld e, a
+	ld a, [hSpriteIndexOrTextID] ; sprite ID
+	cp e
+	jr z, .spriteHandling
+	jr nc, .skipSpriteHandling
+.spriteHandling
+; get the text ID of the sprite
+	push hl
+	push de
+	push bc
+	callba UpdateSpriteFacingOffsetAndDelayMovement ; update the graphics of the sprite the player is talking to (to face the right direction)
+	pop bc
+	pop de
+	ld hl, wMapSpriteData ; NPC text entries
+	ld a, [hSpriteIndexOrTextID]
+	dec a
+	add a
+	add l
+	ld l, a
+	jr nc, .noCarry
+	inc h
+.noCarry
+	inc hl
+	ld a, [hl] ; a = text ID of the sprite
+	pop hl
+.skipSpriteHandling
+; look up the address of the text in the map's text entries
+	dec a
+	ld e, a
+	sla e
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a ; hl = address of the text
+	ld a, [hl] ; a = first byte of text
+
+; check first byte of text for special cases
+
+dict2: MACRO
+	cp \1
+	jr nz, .not\@
+	\2
+	jr AfterDisplayingTextID
+.not\@
+ENDM
+
+	dict  TX_SCRIPT_MART,                    DisplayPokemartDialogue
+	dict  TX_SCRIPT_POKECENTER_NURSE,        DisplayPokemonCenterDialogue
+	dict  TX_SCRIPT_PLAYERS_PC,              TextScript_ItemStoragePC
+	dict  TX_SCRIPT_BILLS_PC,                TextScript_BillsPC
+	dict  TX_SCRIPT_POKECENTER_PC,           TextScript_PokemonCenterPC
+	dict2 TX_SCRIPT_VENDING_MACHINE,         callba VendingMachineMenu
+	dict  TX_SCRIPT_PRIZE_VENDOR,            TextScript_GameCornerPrizeMenu
+	dict2 TX_SCRIPT_CABLE_CLUB_RECEPTIONIST, callab CableClubNPC
+
+	call PrintText_NoCreatingTextBox ; display the text
+	ld a, [wDoNotWaitForButtonPressAfterDisplayingText]
+	and a
+	jr nz, HoldTextDisplayOpen
+
+AfterDisplayingTextID::
+	ld a, [wEnteringCableClub]
+	and a
+	jr nz, HoldTextDisplayOpen
+	call WaitForTextScrollButtonPress ; wait for a button press after displaying all the text
+
+; loop to hold the dialogue box open as long as the player keeps holding down the A button
+HoldTextDisplayOpen::
+	call Joypad
+	ld a, [hJoyHeld]
+	bit 0, a ; is the A button being pressed?
+	jr nz, HoldTextDisplayOpen
+
+CloseTextDisplay::
+	ld a, [wCurMap]
+	call SwitchToMapRomBank
+	ld a, $90
+	ld [hWY], a ; move the window off the screen
+	call DelayFrame
+	call LoadGBPal
+	xor a
+	ld [hAutoBGTransferEnabled], a ; disable continuous WRAM to VRAM transfer each V-blank
+; loop to make sprites face the directions they originally faced before the dialogue
+	ld hl, wSpriteStateData2 + $19
+	ld c, $0f
+	ld de, $10
+.restoreSpriteFacingDirectionLoop
+	ld a, [hl]
+	dec h
+	ld [hl], a
+	inc h
+	add hl, de
+	dec c
+	jr nz, .restoreSpriteFacingDirectionLoop
+	ld a, BANK(InitMapSprites)
+	ld [hLoadedROMBank], a
+	ld [MBC1RomBank], a
+	call InitMapSprites ; reload sprite tile pattern data (since it was partially overwritten by text tile patterns)
+	ld hl, wFontLoaded
+	res 0, [hl]
+	ld a, [wd732]
+	bit 3, a ; used fly warp
+	call z, LoadPlayerSpriteGraphics
+	call LoadCurrentMapView
+	pop af
+	ld [hLoadedROMBank], a
+	ld [MBC1RomBank], a
+	jp UpdateSprites
+
+DisplayPokemartDialogue::
+	push hl
+	ld hl, PokemartGreetingText
+	call PrintText
+	pop hl
+	inc hl
+	call LoadItemList
+	ld a, PRICEDITEMLISTMENU
+	ld [wListMenuID], a
+	ld a, [hLoadedROMBank]
+	push af
+	ld a, BANK(DisplayPokemartDialogue_)
+	ld [hLoadedROMBank], a
+	ld [MBC1RomBank], a
+	call DisplayPokemartDialogue_
+	pop af
+	ld [hLoadedROMBank], a
+	ld [MBC1RomBank], a
+	jp AfterDisplayingTextID
+
+PokemartGreetingText::
+	text_far _PokemartGreetingText
+	text_end
+
+LoadItemList::
+	ld a, 1
+	ld [wUpdateSpritesEnabled], a
+	ld a, h
+	ld [wItemListPointer], a
+	ld a, l
+	ld [wItemListPointer + 1], a
+	ld de, wItemList
+.loop
+	ld a, [hli]
+	ld [de], a
+	inc de
+	cp $ff
+	jr nz, .loop
+	ret
+
+DisplayPokemonCenterDialogue::
+; zeroing these doesn't appear to serve any purpose
+	xor a
+	ld [hItemPrice], a
+	ld [hItemPrice + 1], a
+	ld [hItemPrice + 2], a
+
+	inc hl
+	ld a, [hLoadedROMBank]
+	push af
+	ld a, BANK(DisplayPokemonCenterDialogue_)
+	ld [hLoadedROMBank], a
+	ld [MBC1RomBank], a
+	call DisplayPokemonCenterDialogue_
+	pop af
+	ld [hLoadedROMBank], a
+	ld [MBC1RomBank], a
+	jp AfterDisplayingTextID
+
+DisplaySafariGameOverText::
+	callab PrintSafariGameOverText
+	jp AfterDisplayingTextID
+
+DisplayPokemonFaintedText::
+	ld hl, PokemonFaintedText
+	call PrintText
+	jp AfterDisplayingTextID
+
+PokemonFaintedText::
+	text_far _PokemonFaintedText
+	text_end
+
+DisplayPlayerBlackedOutText::
+	ld hl, PlayerBlackedOutText
+	call PrintText
+	ld a, [wd732]
+	res 5, a ; reset forced to use bike bit
+	ld [wd732], a
+	jp HoldTextDisplayOpen
+
+PlayerBlackedOutText::
+	text_far _PlayerBlackedOutText
+	text_end
+
+DisplayRepelWoreOffText::
+	ld hl, RepelWoreOffText
+	call PrintText
+	jp AfterDisplayingTextID
+
+RepelWoreOffText::
+	text_far _RepelWoreOffText
+	text_end
--- a/home/trainers.asm
+++ b/home/trainers.asm
@@ -371,8 +371,8 @@
 	ret
 
 TrainerEndBattleText::
-	TX_FAR _TrainerNameText
-	TX_ASM
+	text_far _TrainerNameText
+	text_asm
 	call GetSavedEndBattleTextPointer
 	call TextCommandProcessor
 	jp TextScriptEnd
--- a/macros/code.asm
+++ b/macros/code.asm
@@ -7,3 +7,14 @@
 ldPal: MACRO
 	ld \1, \2 << 6 | \3 << 4 | \4 << 2 | \5
 ENDM
+
+; Design patterns
+
+dict: MACRO
+if \1 == 0
+	and a
+else
+	cp \1
+endc
+	jp z, \2
+ENDM
--- a/macros/scripts/text.asm
+++ b/macros/scripts/text.asm
@@ -1,78 +1,211 @@
-text   EQUS "db $00," ; Start writing text.
-next   EQUS "db $4e," ; Move a line down.
-line   EQUS "db $4f," ; Start writing at the bottom line.
-para   EQUS "db $51," ; Start a new paragraph.
-cont   EQUS "db $55," ; Scroll to the next line.
-done   EQUS "db $57"  ; End a text box.
-prompt EQUS "db $58"  ; Prompt the player to end a text box (initiating some other event).
+text   EQUS "db TX_START,"    ; Start writing text.
+next   EQUS "db \"<NEXT>\","  ; Move a line down.
+line   EQUS "db \"<LINE>\","  ; Start writing at the bottom line.
+para   EQUS "db \"<PARA>\","  ; Start a new paragraph.
+cont   EQUS "db \"<CONT>\","  ; Scroll to the next line.
+done   EQUS "db \"<DONE>\""   ; End a text box.
+prompt EQUS "db \"<PROMPT>\"" ; Prompt the player to end a text box (initiating some other event).
 
-page   EQUS "db $49,"     ; Start a new Pokedex page.
-dex    EQUS "db $5f, $50" ; End a Pokedex entry.
+page   EQUS "db \"<PAGE>\","         ; Start a new Pokédex page.
+dex    EQUS "db \"<DEXEND>\", \"@\"" ; End a Pokédex entry.
 
-TX_RAM: MACRO
-; prints text to screen
-; \1: RAM address to read from
-	db $1
-	dw \1
+
+; TextCommandJumpTable indexes (see home/text.asm)
+	enum_start
+
+	enum TX_START ; $00
+text_start: MACRO
+	db TX_START
 ENDM
 
-TX_BCD: MACRO
-; \1: RAM address to read from
-; \2: number of bytes + print flags
-	db $2
-	dw \1
-	db \2
+	enum TX_RAM ; $01
+text_ram: MACRO
+	db TX_RAM
+	dw \1 ; address to read from
 ENDM
 
-TX_LINE    EQUS "db $05"
-TX_BLINK   EQUS "db $06"
-;TX_SCROLL EQUS "db $07"
-TX_ASM     EQUS "db $08"
+	enum TX_BCD ; $02
+text_bcd: MACRO
+	db TX_BCD
+	dw \1 ; address to read from
+	db \2 ; number of bytes + print flags
+ENDM
 
-TX_NUM: MACRO
+	enum TX_MOVE ; $03
+text_move: MACRO
+	db TX_MOVE
+	dw \1 ; address of the new location
+ENDM
+
+	enum TX_BOX ; $04
+text_box: MACRO
+; draw box
+	db TX_BOX
+	dw \1 ; address of upper left corner
+	db \2, \3 ; height, width
+ENDM
+
+	enum TX_LOW ; $05
+text_low: MACRO
+	db TX_LOW
+ENDM
+
+	enum TX_PROMPT_BUTTON ; $06
+text_promptbutton: MACRO
+	db TX_PROMPT_BUTTON
+ENDM
+
+	enum TX_SCROLL ; $07
+text_scroll: MACRO
+	db TX_SCROLL
+ENDM
+
+	enum TX_START_ASM ; $08
+text_asm: MACRO
+	db TX_START_ASM
+ENDM
+
+	enum TX_NUM ; $09
+text_decimal: 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
+	db TX_NUM
+	dw \1 ; address to read from
+	dn \2, \3 ; number of bytes to read, number of digits to display
 ENDM
 
-TX_DELAY              EQUS "db $0a"
-TX_SFX_ITEM_1         EQUS "db $0b"
-TX_SFX_LEVEL_UP       EQUS "db $0b"
-;TX_ELLIPSES          EQUS "db $0c"
-TX_WAIT               EQUS "db $0d"
-;TX_SFX_DEX_RATING    EQUS "db $0e"
-TX_SFX_ITEM_2         EQUS "db $10"
-TX_SFX_KEY_ITEM       EQUS "db $11"
-TX_SFX_CAUGHT_MON     EQUS "db $12"
-TX_SFX_DEX_PAGE_ADDED EQUS "db $13"
-TX_CRY_NIDORINA       EQUS "db $14"
-TX_CRY_PIDGEOT        EQUS "db $15"
-;TX_CRY_DEWGONG       EQUS "db $16"
+	enum TX_PAUSE ; $0a
+text_pause: MACRO
+	db TX_PAUSE
+ENDM
 
-TX_FAR: MACRO
-	db $17
-	dw \1
-	db BANK(\1)
+	enum TX_SOUND_GET_ITEM_1 ; $0b
+sound_get_item_1: MACRO
+	db TX_SOUND_GET_ITEM_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_SOUND_LEVEL_UP EQU TX_SOUND_GET_ITEM_1
+sound_level_up EQUS "sound_get_item_1"
 
-TX_MART: MACRO
-	db $FE, _NARG
-	REPT _NARG
-	db \1
-	SHIFT
-	ENDR
-	db $FF
+	enum TX_DOTS ; $0c
+text_dots: MACRO
+	db TX_DOTS
+	db \1 ; number of ellipses to draw
 ENDM
 
-TX_POKECENTER_NURSE        EQUS "db $ff"
+	enum TX_LINK_PROMPT_BUTTON ; $0d
+text_linkpromptbutton: MACRO
+	db TX_LINK_PROMPT_BUTTON
+ENDM
+
+	enum TX_SOUND_POKEDEX_RATING ; $0e
+sound_pokedex_rating: MACRO
+	db TX_SOUND_POKEDEX_RATING
+ENDM
+
+	enum TX_SOUND_GET_ITEM_1_DUPLICATE ; $0f
+sound_get_item_1_duplicate: MACRO
+	db TX_SOUND_GET_ITEM_1_DUPLICATE
+ENDM
+
+	enum TX_SOUND_GET_ITEM_2 ; $10
+sound_get_item_2: MACRO
+	db TX_SOUND_GET_ITEM_2
+ENDM
+
+	enum TX_SOUND_GET_KEY_ITEM ; $11
+sound_get_key_item: MACRO
+	db TX_SOUND_GET_KEY_ITEM
+ENDM
+
+	enum TX_SOUND_CAUGHT_MON ; $12
+sound_caught_mon: MACRO
+	db TX_SOUND_CAUGHT_MON
+ENDM
+
+	enum TX_SOUND_DEX_PAGE_ADDED ; $13
+sound_dex_page_added: MACRO
+	db TX_SOUND_DEX_PAGE_ADDED
+ENDM
+
+	enum TX_SOUND_CRY_NIDORINA ; $14
+sound_cry_nidorina: MACRO
+	db TX_SOUND_CRY_NIDORINA
+ENDM
+
+	enum TX_SOUND_CRY_PIDGEOT ; $15
+sound_cry_pidgeot: MACRO
+	db TX_SOUND_CRY_PIDGEOT
+ENDM
+
+	enum TX_SOUND_CRY_DEWGONG ; $16
+sound_cry_dewgong: MACRO
+	db TX_SOUND_CRY_DEWGONG
+ENDM
+
+	enum TX_FAR ; $17
+text_far: MACRO
+	db TX_FAR
+	dab \1 ; address of text commands
+ENDM
+
+
+	enum_set $50
+
+	enum TX_END ; $50
+text_end: MACRO
+	db TX_END
+ENDM
+
+
+; Text script IDs (see home/text_script.asm)
+	enum_set $f5
+
+	enum TX_SCRIPT_VENDING_MACHINE ; $f5
+script_vending_machine: MACRO
+	db TX_SCRIPT_VENDING_MACHINE
+ENDM
+
+	enum TX_SCRIPT_CABLE_CLUB_RECEPTIONIST ; $f6
+script_cable_club_receptionist: MACRO
+	db TX_SCRIPT_CABLE_CLUB_RECEPTIONIST
+ENDM
+
+	enum TX_SCRIPT_PRIZE_VENDOR ; $f7
+script_prize_vendor: MACRO
+	db TX_SCRIPT_PRIZE_VENDOR
+ENDM
+
+	enum_set $f9
+
+	enum TX_SCRIPT_POKECENTER_PC ; $f9
+script_pokecenter_pc: MACRO
+	db TX_SCRIPT_POKECENTER_PC
+ENDM
+
+	enum_set $fc
+
+	enum TX_SCRIPT_PLAYERS_PC ; $fc
+script_players_pc: MACRO
+	db TX_SCRIPT_PLAYERS_PC
+ENDM
+
+	enum TX_SCRIPT_BILLS_PC ; $fd
+script_bills_pc: MACRO
+	db TX_SCRIPT_BILLS_PC
+ENDM
+
+	enum TX_SCRIPT_MART ; $fe
+script_mart: MACRO
+	db TX_SCRIPT_MART
+	db _NARG ; number of items
+rept _NARG
+	db \1 ; item id
+	shift
+endr
+	db -1 ; end
+ENDM
+
+	enum TX_SCRIPT_POKECENTER_NURSE ; $ff
+script_pokecenter_nurse: MACRO
+	db TX_SCRIPT_POKECENTER_NURSE
+ENDM
--- a/scripts/AgathasRoom.asm
+++ b/scripts/AgathasRoom.asm
@@ -132,23 +132,23 @@
 	db $ff
 
 AgathaText1:
-	TX_ASM
+	text_asm
 	ld hl, AgathaTrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 AgathaBeforeBattleText:
-	TX_FAR _AgathaBeforeBattleText
-	db "@"
+	text_far _AgathaBeforeBattleText
+	text_end
 
 AgathaEndBattleText:
-	TX_FAR _AgathaEndBattleText
-	db "@"
+	text_far _AgathaEndBattleText
+	text_end
 
 AgathaAfterBattleText:
-	TX_FAR _AgathaAfterBattleText
-	db "@"
+	text_far _AgathaAfterBattleText
+	text_end
 
 AgathaDontRunAwayText:
-	TX_FAR _AgathaDontRunAwayText
-	db "@"
+	text_far _AgathaDontRunAwayText
+	text_end
--- a/scripts/BikeShop.asm
+++ b/scripts/BikeShop.asm
@@ -7,7 +7,7 @@
 	dw BikeShopText3
 
 BikeShopText1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_BICYCLE
 	jr z, .asm_260d4
 	ld hl, BikeShopText_1d82f
@@ -86,50 +86,50 @@
 	db "¥1000000@"
 
 BikeShopText_1d810:
-	TX_FAR _BikeShopText_1d810
-	db "@"
+	text_far _BikeShopText_1d810
+	text_end
 
 BikeShopText_1d815:
-	TX_FAR _BikeShopText_1d815
-	db "@"
+	text_far _BikeShopText_1d815
+	text_end
 
 BikeShopCantAffordText:
-	TX_FAR _BikeShopCantAffordText
-	db "@"
+	text_far _BikeShopCantAffordText
+	text_end
 
 BikeShopText_1d81f:
-	TX_FAR _BikeShopText_1d81f
-	db "@"
+	text_far _BikeShopText_1d81f
+	text_end
 
 BikeShopText_1d824:
-	TX_FAR _BikeShopText_1d824
-	TX_SFX_KEY_ITEM
-	db "@"
+	text_far _BikeShopText_1d824
+	sound_get_key_item
+	text_end
 
 BikeShopComeAgainText:
-	TX_FAR _BikeShopComeAgainText
-	db "@"
+	text_far _BikeShopComeAgainText
+	text_end
 
 BikeShopText_1d82f:
-	TX_FAR _BikeShopText_1d82f
-	db "@"
+	text_far _BikeShopText_1d82f
+	text_end
 
 BikeShopText_1d834:
-	TX_FAR _BikeShopText_1d834
-	db "@"
+	text_far _BikeShopText_1d834
+	text_end
 
 BikeShopText2:
-	TX_ASM
+	text_asm
 	ld hl, BikeShopText_1d843
 	call PrintText
 	jp TextScriptEnd
 
 BikeShopText_1d843:
-	TX_FAR _BikeShopText_1d843
-	db "@"
+	text_far _BikeShopText_1d843
+	text_end
 
 BikeShopText3:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_BICYCLE
 	ld hl, BikeShopText_1d861
 	jr nz, .asm_34d2d
@@ -139,9 +139,9 @@
 	jp TextScriptEnd
 
 BikeShopText_1d85c:
-	TX_FAR _BikeShopText_1d85c
-	db "@"
+	text_far _BikeShopText_1d85c
+	text_end
 
 BikeShopText_1d861:
-	TX_FAR _BikeShopText_1d861
-	db "@"
+	text_far _BikeShopText_1d861
+	text_end
--- a/scripts/BillsHouse.asm
+++ b/scripts/BillsHouse.asm
@@ -122,10 +122,10 @@
 	dw BillsHouseText4
 
 BillsHouseText4:
-	TX_BILLS_PC
+	script_bills_pc
 
 BillsHouseText1:
-	TX_ASM
+	text_asm
 	ld hl, BillsHouseText_1e865
 	call PrintText
 	call YesNoChoice
@@ -146,19 +146,19 @@
 	jp TextScriptEnd
 
 BillsHouseText_1e865:
-	TX_FAR _BillsHouseText_1e865
-	db "@"
+	text_far _BillsHouseText_1e865
+	text_end
 
 BillsHouseText_1e86a:
-	TX_FAR _BillsHouseText_1e86a
-	db "@"
+	text_far _BillsHouseText_1e86a
+	text_end
 
 BillsHouseText_1e86f:
-	TX_FAR _BillsHouseText_1e86f
-	db "@"
+	text_far _BillsHouseText_1e86f
+	text_end
 
 BillsHouseText2:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_SS_TICKET
 	jr nz, .asm_1e8a9
 	ld hl, BillThankYouText
@@ -186,29 +186,29 @@
 	jp TextScriptEnd
 
 BillThankYouText:
-	TX_FAR _BillThankYouText
-	db "@"
+	text_far _BillThankYouText
+	text_end
 
 SSTicketReceivedText:
-	TX_FAR _SSTicketReceivedText
-	TX_SFX_KEY_ITEM
-	TX_BLINK
-	db "@"
+	text_far _SSTicketReceivedText
+	sound_get_key_item
+	text_promptbutton
+	text_end
 
 SSTicketNoRoomText:
-	TX_FAR _SSTicketNoRoomText
-	db "@"
+	text_far _SSTicketNoRoomText
+	text_end
 
 BillsHouseText_1e8cb:
-	TX_FAR _BillsHouseText_1e8cb
-	db "@"
+	text_far _BillsHouseText_1e8cb
+	text_end
 
 BillsHouseText3:
-	TX_ASM
+	text_asm
 	ld hl, BillsHouseText_1e8da
 	call PrintText
 	jp TextScriptEnd
 
 BillsHouseText_1e8da:
-	TX_FAR _BillsHouseText_1e8da
-	db "@"
+	text_far _BillsHouseText_1e8da
+	text_end
--- a/scripts/BluesHouse.asm
+++ b/scripts/BluesHouse.asm
@@ -25,7 +25,7 @@
 	dw BluesHouseText3
 
 BluesHouseText1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_TOWN_MAP
 	jr nz, .GotMap
 	CheckEvent EVENT_GOT_POKEDEX
@@ -60,30 +60,30 @@
 	jp TextScriptEnd
 
 DaisyInitialText:
-	TX_FAR _DaisyInitialText
-	db "@"
+	text_far _DaisyInitialText
+	text_end
 
 DaisyOfferMapText:
-	TX_FAR _DaisyOfferMapText
-	db "@"
+	text_far _DaisyOfferMapText
+	text_end
 
 GotMapText:
-	TX_FAR _GotMapText
-	TX_SFX_KEY_ITEM
-	db "@"
+	text_far _GotMapText
+	sound_get_key_item
+	text_end
 
 DaisyBagFullText:
-	TX_FAR _DaisyBagFullText
-	db "@"
+	text_far _DaisyBagFullText
+	text_end
 
 DaisyUseMapText:
-	TX_FAR _DaisyUseMapText
-	db "@"
+	text_far _DaisyUseMapText
+	text_end
 
 BluesHouseText2: ; Daisy, walking around
-	TX_FAR _BluesHouseText2
-	db "@"
+	text_far _BluesHouseText2
+	text_end
 
 BluesHouseText3: ; map on table
-	TX_FAR _BluesHouseText3
-	db "@"
+	text_far _BluesHouseText3
+	text_end
--- a/scripts/BrunosRoom.asm
+++ b/scripts/BrunosRoom.asm
@@ -129,23 +129,23 @@
 	db $ff
 
 BrunoText1:
-	TX_ASM
+	text_asm
 	ld hl, BrunoTrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 BrunoBeforeBattleText:
-	TX_FAR _BrunoBeforeBattleText
-	db "@"
+	text_far _BrunoBeforeBattleText
+	text_end
 
 BrunoEndBattleText:
-	TX_FAR _BrunoEndBattleText
-	db "@"
+	text_far _BrunoEndBattleText
+	text_end
 
 BrunoAfterBattleText:
-	TX_FAR _BrunoAfterBattleText
-	db "@"
+	text_far _BrunoAfterBattleText
+	text_end
 
 BrunoDontRunAwayText:
-	TX_FAR _BrunoDontRunAwayText
-	db "@"
+	text_far _BrunoDontRunAwayText
+	text_end
--- a/scripts/CeladonChiefHouse.asm
+++ b/scripts/CeladonChiefHouse.asm
@@ -8,13 +8,13 @@
 	dw CeladonHouseText3
 
 CeladonHouseText1:
-	TX_FAR _CeladonHouseText1
-	db "@"
+	text_far _CeladonHouseText1
+	text_end
 
 CeladonHouseText2:
-	TX_FAR _CeladonHouseText2
-	db "@"
+	text_far _CeladonHouseText2
+	text_end
 
 CeladonHouseText3:
-	TX_FAR _CeladonHouseText3
-	db "@"
+	text_far _CeladonHouseText3
+	text_end
--- a/scripts/CeladonCity.asm
+++ b/scripts/CeladonCity.asm
@@ -25,23 +25,23 @@
 	dw CeladonCityText18
 
 CeladonCityText1:
-	TX_FAR _CeladonCityText1
-	db "@"
+	text_far _CeladonCityText1
+	text_end
 
 CeladonCityText2:
-	TX_FAR _CeladonCityText2
-	db "@"
+	text_far _CeladonCityText2
+	text_end
 
 CeladonCityText3:
-	TX_FAR _CeladonCityText3
-	db "@"
+	text_far _CeladonCityText3
+	text_end
 
 CeladonCityText4:
-	TX_FAR _CeladonCityText4
-	db "@"
+	text_far _CeladonCityText4
+	text_end
 
 CeladonCityText5:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_TM41
 	jr nz, .asm_7053f
 	ld hl, TM41PreText
@@ -64,69 +64,69 @@
 	jp TextScriptEnd
 
 TM41PreText:
-	TX_FAR _TM41PreText
-	db "@"
+	text_far _TM41PreText
+	text_end
 
 ReceivedTM41Text:
-	TX_FAR _ReceivedTM41Text
-	TX_SFX_ITEM_1
-	db "@"
+	text_far _ReceivedTM41Text
+	sound_get_item_1
+	text_end
 
 TM41ExplanationText:
-	TX_FAR _TM41ExplanationText
-	db "@"
+	text_far _TM41ExplanationText
+	text_end
 
 TM41NoRoomText:
-	TX_FAR _TM41NoRoomText
-	db "@"
+	text_far _TM41NoRoomText
+	text_end
 
 CeladonCityText6:
-	TX_FAR _CeladonCityText6
-	db "@"
+	text_far _CeladonCityText6
+	text_end
 
 CeladonCityText7:
-	TX_FAR _CeladonCityText7
-	TX_ASM
+	text_far _CeladonCityText7
+	text_asm
 	ld a, POLIWRATH
 	call PlayCry
 	jp TextScriptEnd
 
 CeladonCityText8:
-	TX_FAR _CeladonCityText8
-	db "@"
+	text_far _CeladonCityText8
+	text_end
 
 CeladonCityText9:
-	TX_FAR _CeladonCityText9
-	db "@"
+	text_far _CeladonCityText9
+	text_end
 
 CeladonCityText10:
-	TX_FAR _CeladonCityText10
-	db "@"
+	text_far _CeladonCityText10
+	text_end
 
 CeladonCityText11:
-	TX_FAR _CeladonCityText11
-	db "@"
+	text_far _CeladonCityText11
+	text_end
 
 CeladonCityText13:
-	TX_FAR _CeladonCityText13
-	db "@"
+	text_far _CeladonCityText13
+	text_end
 
 CeladonCityText14:
-	TX_FAR _CeladonCityText14
-	db "@"
+	text_far _CeladonCityText14
+	text_end
 
 CeladonCityText15:
-	TX_FAR _CeladonCityText15
-	db "@"
+	text_far _CeladonCityText15
+	text_end
 
 CeladonCityText16:
-	TX_FAR _CeladonCityText16
-	db "@"
+	text_far _CeladonCityText16
+	text_end
 
 CeladonCityText17:
-	TX_FAR _CeladonCityText17
-	db "@"
+	text_far _CeladonCityText17
+	text_end
 
 CeladonCityText18:
-	TX_FAR _CeladonCityText18
-	db "@"
+	text_far _CeladonCityText18
+	text_end
--- a/scripts/CeladonDiner.asm
+++ b/scripts/CeladonDiner.asm
@@ -10,23 +10,23 @@
 	dw CeladonDinerText5
 
 CeladonDinerText1:
-	TX_FAR _CeladonDinerText1
-	db "@"
+	text_far _CeladonDinerText1
+	text_end
 
 CeladonDinerText2:
-	TX_FAR _CeladonDinerText2
-	db "@"
+	text_far _CeladonDinerText2
+	text_end
 
 CeladonDinerText3:
-	TX_FAR _CeladonDinerText3
-	db "@"
+	text_far _CeladonDinerText3
+	text_end
 
 CeladonDinerText4:
-	TX_FAR _CeladonDinerText4
-	db "@"
+	text_far _CeladonDinerText4
+	text_end
 
 CeladonDinerText5:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_COIN_CASE
 	jr nz, .asm_eb14d
 	ld hl, CeladonDinerText_491a7
@@ -49,18 +49,18 @@
 	jp TextScriptEnd
 
 CeladonDinerText_491a7:
-	TX_FAR _CeladonDinerText_491a7
-	db "@"
+	text_far _CeladonDinerText_491a7
+	text_end
 
 ReceivedCoinCaseText:
-	TX_FAR _ReceivedCoinCaseText
-	TX_SFX_KEY_ITEM
-	db "@"
+	text_far _ReceivedCoinCaseText
+	sound_get_key_item
+	text_end
 
 CoinCaseNoRoomText:
-	TX_FAR _CoinCaseNoRoomText
-	db "@"
+	text_far _CoinCaseNoRoomText
+	text_end
 
 CeladonDinerText_491b7:
-	TX_FAR _CeladonDinerText_491b7
-	db "@"
+	text_far _CeladonDinerText_491b7
+	text_end
--- a/scripts/CeladonGym.asm
+++ b/scripts/CeladonGym.asm
@@ -149,7 +149,7 @@
 	db $ff
 
 CeladonGymText1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_ERIKA
 	jr z, .beginBattle
 	CheckEventReuseA EVENT_GOT_TM21
@@ -183,153 +183,153 @@
 	jp TextScriptEnd
 
 CeladonGymText_48a5e:
-	TX_FAR _CeladonGymText_48a5e
-	db "@"
+	text_far _CeladonGymText_48a5e
+	text_end
 
 CeladonGymText_48a63:
-	TX_FAR _CeladonGymText_48a63
-	db "@"
+	text_far _CeladonGymText_48a63
+	text_end
 
 CeladonGymText_48a68:
-	TX_FAR _CeladonGymText_48a68
-	db "@"
+	text_far _CeladonGymText_48a68
+	text_end
 
 CeladonGymText9:
-	TX_FAR _CeladonGymText9
-	db "@"
+	text_far _CeladonGymText9
+	text_end
 
 TM21Text:
-	TX_FAR _ReceivedTM21Text
-	TX_SFX_ITEM_1
-	TX_FAR _TM21ExplanationText
-	db "@"
+	text_far _ReceivedTM21Text
+	sound_get_item_1
+	text_far _TM21ExplanationText
+	text_end
 
 TM21NoRoomText:
-	TX_FAR _TM21NoRoomText
-	db "@"
+	text_far _TM21NoRoomText
+	text_end
 
 CeladonGymText2:
-	TX_ASM
+	text_asm
 	ld hl, CeladonGymTrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 CeladonGymBattleText2:
-	TX_FAR _CeladonGymBattleText2
-	db "@"
+	text_far _CeladonGymBattleText2
+	text_end
 
 CeladonGymEndBattleText2:
-	TX_FAR _CeladonGymEndBattleText2
-	db "@"
+	text_far _CeladonGymEndBattleText2
+	text_end
 
 CeladonGymAfterBattleText2:
-	TX_FAR _CeladonGymAfterBattleText2
-	db "@"
+	text_far _CeladonGymAfterBattleText2
+	text_end
 
 CeladonGymText3:
-	TX_ASM
+	text_asm
 	ld hl, CeladonGymTrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 CeladonGymBattleText3:
-	TX_FAR _CeladonGymBattleText3
-	db "@"
+	text_far _CeladonGymBattleText3
+	text_end
 
 CeladonGymEndBattleText3:
-	TX_FAR _CeladonGymEndBattleText3
-	db "@"
+	text_far _CeladonGymEndBattleText3
+	text_end
 
 CeladonGymAfterBattleText3:
-	TX_FAR _CeladonGymAfterBattleText3
-	db "@"
+	text_far _CeladonGymAfterBattleText3
+	text_end
 
 CeladonGymText4:
-	TX_ASM
+	text_asm
 	ld hl, CeladonGymTrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 CeladonGymBattleText4:
-	TX_FAR _CeladonGymBattleText4
-	db "@"
+	text_far _CeladonGymBattleText4
+	text_end
 
 CeladonGymEndBattleText4:
-	TX_FAR _CeladonGymEndBattleText4
-	db "@"
+	text_far _CeladonGymEndBattleText4
+	text_end
 
 CeladonGymAfterBattleText4:
-	TX_FAR _CeladonGymAfterBattleText4
-	db "@"
+	text_far _CeladonGymAfterBattleText4
+	text_end
 
 CeladonGymText5:
-	TX_ASM
+	text_asm
 	ld hl, CeladonGymTrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 CeladonGymBattleText5:
-	TX_FAR _CeladonGymBattleText5
-	db "@"
+	text_far _CeladonGymBattleText5
+	text_end
 
 CeladonGymEndBattleText5:
-	TX_FAR _CeladonGymEndBattleText5
-	db "@"
+	text_far _CeladonGymEndBattleText5
+	text_end
 
 CeladonGymAfterBattleText5:
-	TX_FAR _CeladonGymAfterBattleText5
-	db "@"
+	text_far _CeladonGymAfterBattleText5
+	text_end
 
 CeladonGymText6:
-	TX_ASM
+	text_asm
 	ld hl, CeladonGymTrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 CeladonGymBattleText6:
-	TX_FAR _CeladonGymBattleText6
-	db "@"
+	text_far _CeladonGymBattleText6
+	text_end
 
 CeladonGymEndBattleText6:
-	TX_FAR _CeladonGymEndBattleText6
-	db "@"
+	text_far _CeladonGymEndBattleText6
+	text_end
 
 CeladonGymAfterBattleText6:
-	TX_FAR _CeladonGymAfterBattleText6
-	db "@"
+	text_far _CeladonGymAfterBattleText6
+	text_end
 
 CeladonGymText7:
-	TX_ASM
+	text_asm
 	ld hl, CeladonGymTrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 CeladonGymBattleText7:
-	TX_FAR _CeladonGymBattleText7
-	db "@"
+	text_far _CeladonGymBattleText7
+	text_end
 
 CeladonGymEndBattleText7:
-	TX_FAR _CeladonGymEndBattleText7
-	db "@"
+	text_far _CeladonGymEndBattleText7
+	text_end
 
 CeladonGymAfterBattleText7:
-	TX_FAR _CeladonGymAfterBattleText7
-	db "@"
+	text_far _CeladonGymAfterBattleText7
+	text_end
 
 CeladonGymText8:
-	TX_ASM
+	text_asm
 	ld hl, CeladonGymTrainerHeader6
 	call TalkToTrainer
 	jp TextScriptEnd
 
 CeladonGymBattleText8:
-	TX_FAR _CeladonGymBattleText8
-	db "@"
+	text_far _CeladonGymBattleText8
+	text_end
 
 CeladonGymEndBattleText8:
-	TX_FAR _CeladonGymEndBattleText8
-	db "@"
+	text_far _CeladonGymEndBattleText8
+	text_end
 
 CeladonGymAfterBattleText8:
-	TX_FAR _CeladonGymAfterBattleText8
-	db "@"
+	text_far _CeladonGymAfterBattleText8
+	text_end
--- a/scripts/CeladonHotel.asm
+++ b/scripts/CeladonHotel.asm
@@ -7,13 +7,13 @@
 	dw CeladonHotelText3
 
 CeladonHotelText1:
-	TX_FAR _CeladonHotelText1
-	db "@"
+	text_far _CeladonHotelText1
+	text_end
 
 CeladonHotelText2:
-	TX_FAR _CeladonHotelText2
-	db "@"
+	text_far _CeladonHotelText2
+	text_end
 
 CeladonHotelText3:
-	TX_FAR _CeladonHotelText3
-	db "@"
+	text_far _CeladonHotelText3
+	text_end
--- a/scripts/CeladonMansion1F.asm
+++ b/scripts/CeladonMansion1F.asm
@@ -13,27 +13,27 @@
 	jp TextScriptEnd
 
 CeladonMansion1Text1:
-	TX_FAR _CeladonMansion1Text1
-	TX_ASM
+	text_far _CeladonMansion1Text1
+	text_asm
 	ld a, MEOWTH
 	jp CeladonMansion1_486a1
 
 CeladonMansion1Text2:
-	TX_FAR _CeladonMansion1Text2
-	db "@"
+	text_far _CeladonMansion1Text2
+	text_end
 
 CeladonMansion1Text3:
-	TX_FAR _CeladonMansion1Text3
-	TX_ASM
+	text_far _CeladonMansion1Text3
+	text_asm
 	ld a, CLEFAIRY
 	jp CeladonMansion1_486a1
 
 CeladonMansion1Text4:
-	TX_FAR _CeladonMansion1Text4
-	TX_ASM
+	text_far _CeladonMansion1Text4
+	text_asm
 	ld a, NIDORAN_F
 	jp CeladonMansion1_486a1
 
 CeladonMansion1Text5:
-	TX_FAR _CeladonMansion1Text5
-	db "@"
+	text_far _CeladonMansion1Text5
+	text_end
--- a/scripts/CeladonMansion2F.asm
+++ b/scripts/CeladonMansion2F.asm
@@ -6,5 +6,5 @@
 	dw CeladonMansion2Text1
 
 CeladonMansion2Text1:
-	TX_FAR _CeladonMansion2Text1
-	db "@"
+	text_far _CeladonMansion2Text1
+	text_end
--- a/scripts/CeladonMansion3F.asm
+++ b/scripts/CeladonMansion3F.asm
@@ -12,19 +12,19 @@
 	dw GameFreakSignText
 
 ProgrammerText:
-	TX_FAR _ProgrammerText
-	db "@"
+	text_far _ProgrammerText
+	text_end
 
 GraphicArtistText:
-	TX_FAR _GraphicArtistText
-	db "@"
+	text_far _GraphicArtistText
+	text_end
 
 WriterText:
-	TX_FAR _WriterText
-	db "@"
+	text_far _WriterText
+	text_end
 
 DirectorText:
-	TX_ASM
+	text_asm
 
 	; check pokédex
 	ld hl, wPokedexOwned
@@ -42,13 +42,13 @@
 	jp TextScriptEnd
 
 .GameDesigner
-	TX_FAR _GameDesignerText
-	db "@"
+	text_far _GameDesignerText
+	text_end
 
 .CompletedDexText
-	TX_FAR _CompletedDexText
-	TX_BLINK
-	TX_ASM
+	text_far _CompletedDexText
+	text_promptbutton
+	text_asm
 	callab DisplayDiploma
 	ld a, $1
 	ld [wDoNotWaitForButtonPressAfterDisplayingText], a
@@ -55,17 +55,17 @@
 	jp TextScriptEnd
 
 GameFreakPCText1:
-	TX_FAR _CeladonMansion3Text5
-	db "@"
+	text_far _CeladonMansion3Text5
+	text_end
 
 GameFreakPCText2:
-	TX_FAR _CeladonMansion3Text6
-	db "@"
+	text_far _CeladonMansion3Text6
+	text_end
 
 GameFreakPCText3:
-	TX_FAR _CeladonMansion3Text7
-	db "@"
+	text_far _CeladonMansion3Text7
+	text_end
 
 GameFreakSignText:
-	TX_FAR _CeladonMansion3Text8
-	db "@"
+	text_far _CeladonMansion3Text8
+	text_end
--- a/scripts/CeladonMansionRoof.asm
+++ b/scripts/CeladonMansionRoof.asm
@@ -5,5 +5,5 @@
 	dw CeladonMansion4Text1
 
 CeladonMansion4Text1:
-	TX_FAR _CeladonMansion4Text1
-	db "@"
+	text_far _CeladonMansion4Text1
+	text_end
--- a/scripts/CeladonMansionRoofHouse.asm
+++ b/scripts/CeladonMansionRoofHouse.asm
@@ -6,11 +6,11 @@
 	dw CeladonMansion5Text2
 
 CeladonMansion5Text1:
-	TX_FAR _CeladonMansion5Text1
-	db "@"
+	text_far _CeladonMansion5Text1
+	text_end
 
 CeladonMansion5Text2:
-	TX_ASM
+	text_asm
 	lb bc, EEVEE, 25
 	call GivePokemon
 	jr nc, .asm_24365
--- a/scripts/CeladonMart1F.asm
+++ b/scripts/CeladonMart1F.asm
@@ -7,13 +7,13 @@
 	dw CeladonMart1Text3
 
 CeladonMart1Text1:
-	TX_FAR _CeladonMart1Text1
-	db "@"
+	text_far _CeladonMart1Text1
+	text_end
 
 CeladonMart1Text2:
-	TX_FAR _CeladonMart1Text2
-	db "@"
+	text_far _CeladonMart1Text2
+	text_end
 
 CeladonMart1Text3:
-	TX_FAR _CeladonMart1Text3
-	db "@"
+	text_far _CeladonMart1Text3
+	text_end
--- a/scripts/CeladonMart2F.asm
+++ b/scripts/CeladonMart2F.asm
@@ -9,13 +9,13 @@
 	dw CeladonMart2Text5
 
 CeladonMart2Text3:
-	TX_FAR _CeladonMart2Text3
-	db "@"
+	text_far _CeladonMart2Text3
+	text_end
 
 CeladonMart2Text4:
-	TX_FAR _CeladonMart2Text4
-	db "@"
+	text_far _CeladonMart2Text4
+	text_end
 
 CeladonMart2Text5:
-	TX_FAR _CeladonMart2Text5
-	db "@"
+	text_far _CeladonMart2Text5
+	text_end
--- a/scripts/CeladonMart3F.asm
+++ b/scripts/CeladonMart3F.asm
@@ -21,7 +21,7 @@
 	dw CeladonMart3Text17
 
 CeladonMart3Text1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_TM18
 	jr nz, .asm_a5463
 	ld hl, TM18PreReceiveText
@@ -42,67 +42,67 @@
 	jp TextScriptEnd
 
 TM18PreReceiveText:
-	TX_FAR _TM18PreReceiveText
-	db "@"
+	text_far _TM18PreReceiveText
+	text_end
 
 ReceivedTM18Text:
-	TX_FAR _ReceivedTM18Text
-	TX_SFX_ITEM_1
-	db "@"
+	text_far _ReceivedTM18Text
+	sound_get_item_1
+	text_end
 
 TM18ExplanationText:
-	TX_FAR _TM18ExplanationText
-	db "@"
+	text_far _TM18ExplanationText
+	text_end
 
 TM18NoRoomText:
-	TX_FAR _TM18NoRoomText
-	db "@"
+	text_far _TM18NoRoomText
+	text_end
 
 CeladonMart3Text2:
-	TX_FAR _CeladonMart3Text2
-	db "@"
+	text_far _CeladonMart3Text2
+	text_end
 
 CeladonMart3Text3:
-	TX_FAR _CeladonMart3Text3
-	db "@"
+	text_far _CeladonMart3Text3
+	text_end
 
 CeladonMart3Text4:
-	TX_FAR _CeladonMart3Text4
-	db "@"
+	text_far _CeladonMart3Text4
+	text_end
 
 CeladonMart3Text5:
-	TX_FAR _CeladonMart3Text5
-	db "@"
+	text_far _CeladonMart3Text5
+	text_end
 
 CeladonMart3Text12:
 CeladonMart3Text10:
 CeladonMart3Text8:
 CeladonMart3Text6:
-	TX_FAR _CeladonMart3Text6
-	db "@"
+	text_far _CeladonMart3Text6
+	text_end
 
 CeladonMart3Text7:
-	TX_FAR _CeladonMart3Text7
-	db "@"
+	text_far _CeladonMart3Text7
+	text_end
 
 CeladonMart3Text9:
-	TX_FAR _CeladonMart3Text9
-	db "@"
+	text_far _CeladonMart3Text9
+	text_end
 
 CeladonMart3Text11:
-	TX_FAR _CeladonMart3Text11
-	db "@"
+	text_far _CeladonMart3Text11
+	text_end
 
 CeladonMart3Text13:
-	TX_FAR _CeladonMart3Text13
-	db "@"
+	text_far _CeladonMart3Text13
+	text_end
 
 CeladonMart3Text14:
-	TX_FAR _CeladonMart3Text14
-	db "@"
+	text_far _CeladonMart3Text14
+	text_end
 
 CeladonMart3Text17:
 CeladonMart3Text16:
 CeladonMart3Text15:
-	TX_FAR _CeladonMart3Text15
-	db "@"
+	text_far _CeladonMart3Text15
+	text_end
--- a/scripts/CeladonMart4F.asm
+++ b/scripts/CeladonMart4F.asm
@@ -8,13 +8,13 @@
 	dw CeladonMart4Text4
 
 CeladonMart4Text2:
-	TX_FAR _CeladonMart4Text2
-	db "@"
+	text_far _CeladonMart4Text2
+	text_end
 
 CeladonMart4Text3:
-	TX_FAR _CeladonMart4Text3
-	db "@"
+	text_far _CeladonMart4Text3
+	text_end
 
 CeladonMart4Text4:
-	TX_FAR _CeladonMart4Text4
-	db "@"
+	text_far _CeladonMart4Text4
+	text_end
--- a/scripts/CeladonMart5F.asm
+++ b/scripts/CeladonMart5F.asm
@@ -9,13 +9,13 @@
 	dw CeladonMart5Text5
 
 CeladonMart5Text1:
-	TX_FAR _CeladonMart5Text1
-	db "@"
+	text_far _CeladonMart5Text1
+	text_end
 
 CeladonMart5Text2:
-	TX_FAR _CeladonMart5Text2
-	db "@"
+	text_far _CeladonMart5Text2
+	text_end
 
 CeladonMart5Text5:
-	TX_FAR _CeladonMart5Text5
-	db "@"
+	text_far _CeladonMart5Text5
+	text_end
--- a/scripts/CeladonMartElevator.asm
+++ b/scripts/CeladonMartElevator.asm
@@ -66,7 +66,7 @@
 	dw CeladonMartElevatorText1
 
 CeladonMartElevatorText1:
-	TX_ASM
+	text_asm
 	call CeladonMartElevatorScript_48631
 	ld hl, CeladonMartElevatorWarpMaps
 	predef DisplayElevatorFloorMenu
--- a/scripts/CeladonMartRoof.asm
+++ b/scripts/CeladonMartRoof.asm
@@ -134,54 +134,54 @@
 	jpba RemoveItemByID
 
 CeladonMartRoofText_484ee:
-	TX_FAR _CeladonMartRoofText_484ee
-	db "@"
+	text_far _CeladonMartRoofText_484ee
+	text_end
 
 CeladonMartRoofText_484f3:
-	TX_FAR _CeladonMartRoofText_484f3
-	TX_WAIT
-	db "@"
+	text_far _CeladonMartRoofText_484f3
+	text_linkpromptbutton
+	text_end
 
 CeladonMartRoofText_484f9:
-	TX_FAR _CeladonMartRoofText_484f9
-	TX_SFX_ITEM_1
-	TX_FAR _CeladonMartRoofText_484fe
-	TX_WAIT
-	db "@"
+	text_far _CeladonMartRoofText_484f9
+	sound_get_item_1
+	text_far _CeladonMartRoofText_484fe
+	text_linkpromptbutton
+	text_end
 
 CeladonMartRoofText_48504:
-	TX_FAR _CeladonMartRoofText_48504
-	TX_WAIT
-	db "@"
+	text_far _CeladonMartRoofText_48504
+	text_linkpromptbutton
+	text_end
 
 CeladonMartRoofText_4850a:
-	TX_FAR _CeladonMartRoofText_4850a
-	TX_SFX_ITEM_1
-	TX_FAR _CeladonMartRoofText_4850f
-	TX_WAIT
-	db "@"
+	text_far _CeladonMartRoofText_4850a
+	sound_get_item_1
+	text_far _CeladonMartRoofText_4850f
+	text_linkpromptbutton
+	text_end
 
 CeladonMartRoofText_48515:
-	TX_FAR _CeladonMartRoofText_48515
-	TX_WAIT
-	db "@"
+	text_far _CeladonMartRoofText_48515
+	text_linkpromptbutton
+	text_end
 
 ReceivedTM49Text:
-	TX_FAR _ReceivedTM49Text
-	TX_SFX_ITEM_1
-	TX_FAR _CeladonMartRoofText_48520
-	TX_WAIT
-	db "@"
+	text_far _ReceivedTM49Text
+	sound_get_item_1
+	text_far _CeladonMartRoofText_48520
+	text_linkpromptbutton
+	text_end
 
 CeladonMartRoofText_48526:
-	TX_FAR _CeladonMartRoofText_48526
-	TX_WAIT
-	db "@"
+	text_far _CeladonMartRoofText_48526
+	text_linkpromptbutton
+	text_end
 
 CeladonMartRoofText_4852c:
-	TX_FAR _CeladonMartRoofText_4852c
-	TX_WAIT
-	db "@"
+	text_far _CeladonMartRoofText_4852c
+	text_linkpromptbutton
+	text_end
 
 CeladonMartRoofScript_PrintDrinksInBag:
 	ld hl, wFilteredBagItems
@@ -214,11 +214,11 @@
 	dw CeladonMartRoofText6
 
 CeladonMartRoofText1:
-	TX_FAR _CeladonMartRoofText1
-	db "@"
+	text_far _CeladonMartRoofText1
+	text_end
 
 CeladonMartRoofText2:
-	TX_ASM
+	text_asm
 	call CeladonMartRoofScript_GetDrinksInBag
 	ld a, [wFilteredBagItemsCount]
 	and a
@@ -240,16 +240,16 @@
 	jp TextScriptEnd
 
 CeladonMartRoofText3:
-	TX_FAR _CeladonMartRoofText_48598
-	db "@"
+	text_far _CeladonMartRoofText_48598
+	text_end
 
 CeladonMartRoofText4:
-	TX_FAR _CeladonMartRoofText4
-	db "@"
+	text_far _CeladonMartRoofText4
+	text_end
 
 CeladonMartRoofText5:
-	TX_VENDING_MACHINE
+	script_vending_machine
 
 CeladonMartRoofText6:
-	TX_FAR _CeladonMartRoofText6
-	db "@"
+	text_far _CeladonMartRoofText6
+	text_end
--- a/scripts/CeladonPokecenter.asm
+++ b/scripts/CeladonPokecenter.asm
@@ -9,15 +9,15 @@
 	dw CeladonTradeNurseText
 
 CeladonTradeNurseText:
-	TX_CABLE_CLUB_RECEPTIONIST
+	script_cable_club_receptionist
 
 CeladonHealNurseText:
-	TX_POKECENTER_NURSE
+	script_pokecenter_nurse
 
 CeladonPokecenterText2:
-	TX_FAR _CeladonPokecenterText2
-	db "@"
+	text_far _CeladonPokecenterText2
+	text_end
 
 CeladonPokecenterText3:
-	TX_FAR _CeladonPokecenterText3
-	db "@"
+	text_far _CeladonPokecenterText3
+	text_end
--- a/scripts/CeruleanBadgeHouse.asm
+++ b/scripts/CeruleanBadgeHouse.asm
@@ -9,7 +9,7 @@
 	dw CeruleanHouse2Text1
 
 CeruleanHouse2Text1:
-	TX_ASM
+	text_asm
 	ld hl, CeruleanHouse2Text_74e77
 	call PrintText
 	xor a
@@ -55,16 +55,16 @@
 	db $8,BOULDERBADGE,CASCADEBADGE,THUNDERBADGE,RAINBOWBADGE,SOULBADGE,MARSHBADGE,VOLCANOBADGE,EARTHBADGE,$FF
 
 CeruleanHouse2Text_74e77:
-	TX_FAR _CeruleanHouse2Text_74e77
-	db "@"
+	text_far _CeruleanHouse2Text_74e77
+	text_end
 
 CeruleanHouse2Text_74e7c:
-	TX_FAR _CeruleanHouse2Text_74e7c
-	db "@"
+	text_far _CeruleanHouse2Text_74e7c
+	text_end
 
 CeruleanHouse2Text_74e81:
-	TX_FAR _CeruleanHouse2Text_74e81
-	db "@"
+	text_far _CeruleanHouse2Text_74e81
+	text_end
 
 TextPointers_74e86:
 	dw CeruleanHouse2Text_74e96
@@ -77,33 +77,33 @@
 	dw CeruleanHouse2Text_74eb9
 
 CeruleanHouse2Text_74e96:
-	TX_FAR _CeruleanHouse2Text_74e96
-	db "@"
+	text_far _CeruleanHouse2Text_74e96
+	text_end
 
 CeruleanHouse2Text_74e9b:
-	TX_FAR _CeruleanHouse2Text_74e9b
-	db "@"
+	text_far _CeruleanHouse2Text_74e9b
+	text_end
 
 CeruleanHouse2Text_74ea0:
-	TX_FAR _CeruleanHouse2Text_74ea0
-	db "@"
+	text_far _CeruleanHouse2Text_74ea0
+	text_end
 
 CeruleanHouse2Text_74ea5:
-	TX_FAR _CeruleanHouse2Text_74ea5
-	db "@"
+	text_far _CeruleanHouse2Text_74ea5
+	text_end
 
 CeruleanHouse2Text_74eaa:
-	TX_FAR _CeruleanHouse2Text_74eaa
-	db "@"
+	text_far _CeruleanHouse2Text_74eaa
+	text_end
 
 CeruleanHouse2Text_74eaf:
-	TX_FAR _CeruleanHouse2Text_74eaf
-	db "@"
+	text_far _CeruleanHouse2Text_74eaf
+	text_end
 
 CeruleanHouse2Text_74eb4:
-	TX_FAR _CeruleanHouse2Text_74eb4
-	db "@"
+	text_far _CeruleanHouse2Text_74eb4
+	text_end
 
 CeruleanHouse2Text_74eb9:
-	TX_FAR _CeruleanHouse2Text_74eb9
-	db "@"
+	text_far _CeruleanHouse2Text_74eb9
+	text_end
--- a/scripts/CeruleanCaveB1F.asm
+++ b/scripts/CeruleanCaveB1F.asm
@@ -29,14 +29,14 @@
 	db $ff
 
 MewtwoText:
-	TX_ASM
+	text_asm
 	ld hl, MewtwoTrainerHeader
 	call TalkToTrainer
 	jp TextScriptEnd
 
 MewtwoBattleText:
-	TX_FAR _MewtwoBattleText
-	TX_ASM
+	text_far _MewtwoBattleText
+	text_asm
 	ld a, MEWTWO
 	call PlayCry
 	call WaitForSoundToFinish
--- a/scripts/CeruleanCity.asm
+++ b/scripts/CeruleanCity.asm
@@ -247,7 +247,7 @@
 	dw CeruleanCityText17
 
 CeruleanCityText1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_CERULEAN_RIVAL
 	; do pre-battle text
 	jr z, .PreBattleText
@@ -262,23 +262,23 @@
 	jp TextScriptEnd
 
 CeruleanCityText_19668:
-	TX_FAR _CeruleanCityText_19668
-	db "@"
+	text_far _CeruleanCityText_19668
+	text_end
 
 CeruleanCityText_1966d:
-	TX_FAR _CeruleanCityText_1966d
-	db "@"
+	text_far _CeruleanCityText_1966d
+	text_end
 
 CeruleanCityText_19672:
-	TX_FAR _CeruleanCityText_19672
-	db "@"
+	text_far _CeruleanCityText_19672
+	text_end
 
 CeruleanCityText_19677:
-	TX_FAR _CeruleanCityText_19677
-	db "@"
+	text_far _CeruleanCityText_19677
+	text_end
 
 CeruleanCityText2:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_CERULEAN_ROCKET_THIEF
 	jr nz, .asm_4ca20
 	ld hl, CeruleanCityText_196d9
@@ -315,47 +315,47 @@
 	jp TextScriptEnd
 
 CeruleanCityText_196d9:
-	TX_FAR _CeruleanCityText_196d9
-	db "@"
+	text_far _CeruleanCityText_196d9
+	text_end
 
 ReceivedTM28Text:
-	TX_FAR _ReceivedTM28Text
-	TX_SFX_ITEM_1
-	TX_FAR _ReceivedTM28Text2
-	TX_WAIT
-	db "@"
+	text_far _ReceivedTM28Text
+	sound_get_item_1
+	text_far _ReceivedTM28Text2
+	text_linkpromptbutton
+	text_end
 
 TM28NoRoomText:
-	TX_FAR _TM28NoRoomText
-	db "@"
+	text_far _TM28NoRoomText
+	text_end
 
 CeruleanCityText_196ee:
-	TX_FAR _CeruleanCityText_196ee
-	db "@"
+	text_far _CeruleanCityText_196ee
+	text_end
 
 CeruleanCityText_196f3:
-	TX_FAR _CeruleanCityText_196f3
-	db "@"
+	text_far _CeruleanCityText_196f3
+	text_end
 
 CeruleanCityText3:
-	TX_FAR _CeruleanCityText3
-	db "@"
+	text_far _CeruleanCityText3
+	text_end
 
 CeruleanCityText4:
-	TX_FAR _CeruleanCityText4
-	db "@"
+	text_far _CeruleanCityText4
+	text_end
 
 CeruleanCityText5:
-	TX_FAR _CeruleanCityText5
-	db "@"
+	text_far _CeruleanCityText5
+	text_end
 
 CeruleanCityText11:
 CeruleanCityText6:
-	TX_FAR _CeruleanCityText6
-	db "@"
+	text_far _CeruleanCityText6
+	text_end
 
 CeruleanCityText7:
-	TX_ASM
+	text_asm
 	ld a, [hRandomAdd]
 	cp 180
 	jr c, .asm_e9fc9
@@ -375,19 +375,19 @@
 	jp TextScriptEnd
 
 CeruleanCityText_19730:
-	TX_FAR _CeruleanCityText_19730
-	db "@"
+	text_far _CeruleanCityText_19730
+	text_end
 
 CeruleanCityText_19735:
-	TX_FAR _CeruleanCityText_19735
-	db "@"
+	text_far _CeruleanCityText_19735
+	text_end
 
 CeruleanCityText_1973a:
-	TX_FAR _CeruleanCityText_1973a
-	db "@"
+	text_far _CeruleanCityText_1973a
+	text_end
 
 CeruleanCityText8:
-	TX_ASM
+	text_asm
 	ld a, [hRandomAdd]
 	cp 180
 	jr c, .asm_e28da
@@ -413,41 +413,41 @@
 	jp TextScriptEnd
 
 CeruleanCityText_1976f:
-	TX_FAR _CeruleanCityText_1976f
-	db "@"
+	text_far _CeruleanCityText_1976f
+	text_end
 
 CeruleanCityText_19774:
-	TX_FAR _CeruleanCityText_19774
-	db "@"
+	text_far _CeruleanCityText_19774
+	text_end
 
 CeruleanCityText_19779:
-	TX_FAR _CeruleanCityText_19779
-	db "@"
+	text_far _CeruleanCityText_19779
+	text_end
 
 CeruleanCityText_1977e:
-	TX_FAR _CeruleanCityText_1977e
-	db "@"
+	text_far _CeruleanCityText_1977e
+	text_end
 
 CeruleanCityText9:
-	TX_FAR _CeruleanCityText9
-	db "@"
+	text_far _CeruleanCityText9
+	text_end
 
 CeruleanCityText10:
-	TX_FAR _CeruleanCityText10
-	db "@"
+	text_far _CeruleanCityText10
+	text_end
 
 CeruleanCityText12:
-	TX_FAR _CeruleanCityText12
-	db "@"
+	text_far _CeruleanCityText12
+	text_end
 
 CeruleanCityText13:
-	TX_FAR _CeruleanCityText13
-	db "@"
+	text_far _CeruleanCityText13
+	text_end
 
 CeruleanCityText16:
-	TX_FAR _CeruleanCityText16
-	db "@"
+	text_far _CeruleanCityText16
+	text_end
 
 CeruleanCityText17:
-	TX_FAR _CeruleanCityText17
-	db "@"
+	text_far _CeruleanCityText17
+	text_end
--- a/scripts/CeruleanGym.asm
+++ b/scripts/CeruleanGym.asm
@@ -100,7 +100,7 @@
 	db $ff
 
 CeruleanGymText1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_MISTY
 	jr z, .beginBattle
 	CheckEventReuseA EVENT_GOT_TM11
@@ -135,70 +135,70 @@
 	jp TextScriptEnd
 
 CeruleanGymText_5c7be:
-	TX_FAR _CeruleanGymText_5c7be
-	db "@"
+	text_far _CeruleanGymText_5c7be
+	text_end
 
 CeruleanGymText_5c7c3:
-	TX_FAR _CeruleanGymText_5c7c3
-	db "@"
+	text_far _CeruleanGymText_5c7c3
+	text_end
 
 CeruleanGymText5:
-	TX_FAR _CeruleanGymText_5c7c8
-	db "@"
+	text_far _CeruleanGymText_5c7c8
+	text_end
 
 CeruleanGymText6:
-	TX_FAR _ReceivedTM11Text
-	TX_SFX_ITEM_1
-	db "@"
+	text_far _ReceivedTM11Text
+	sound_get_item_1
+	text_end
 
 CeruleanGymText7:
-	TX_FAR _CeruleanGymText_5c7d3
-	db "@"
+	text_far _CeruleanGymText_5c7d3
+	text_end
 
 CeruleanGymText_5c7d8:
-	TX_FAR _CeruleanGymText_5c7d8
-	TX_SFX_KEY_ITEM ; actually plays the second channel of SFX_BALL_POOF due to the wrong music bank being loaded
-	TX_BLINK
-	db "@"
+	text_far _CeruleanGymText_5c7d8
+	sound_get_key_item ; actually plays the second channel of SFX_BALL_POOF due to the wrong music bank being loaded
+	text_promptbutton
+	text_end
 
 CeruleanGymText2:
-	TX_ASM
+	text_asm
 	ld hl, CeruleanGymTrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 CeruleanGymBattleText1:
-	TX_FAR _CeruleanGymBattleText1
-	db "@"
+	text_far _CeruleanGymBattleText1
+	text_end
 
 CeruleanGymEndBattleText1:
-	TX_FAR _CeruleanGymEndBattleText1
-	db "@"
+	text_far _CeruleanGymEndBattleText1
+	text_end
 
 CeruleanGymAfterBattleText1:
-	TX_FAR _CeruleanGymAfterBattleText1
-	db "@"
+	text_far _CeruleanGymAfterBattleText1
+	text_end
 
 CeruleanGymText3:
-	TX_ASM
+	text_asm
 	ld hl, CeruleanGymTrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 CeruleanGymBattleText2:
-	TX_FAR _CeruleanGymBattleText2
-	db "@"
+	text_far _CeruleanGymBattleText2
+	text_end
 
 CeruleanGymEndBattleText2:
-	TX_FAR _CeruleanGymEndBattleText2
-	db "@"
+	text_far _CeruleanGymEndBattleText2
+	text_end
 
 CeruleanGymAfterBattleText2:
-	TX_FAR _CeruleanGymAfterBattleText2
-	db "@"
+	text_far _CeruleanGymAfterBattleText2
+	text_end
 
 CeruleanGymText4:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_MISTY
 	jr nz, .asm_5c821
 	ld hl, CeruleanGymText_5c82a
@@ -211,9 +211,9 @@
 	jp TextScriptEnd
 
 CeruleanGymText_5c82a:
-	TX_FAR _CeruleanGymText_5c82a
-	db "@"
+	text_far _CeruleanGymText_5c82a
+	text_end
 
 CeruleanGymText_5c82f:
-	TX_FAR _CeruleanGymText_5c82f
-	db "@"
+	text_far _CeruleanGymText_5c82f
+	text_end
--- a/scripts/CeruleanMart.asm
+++ b/scripts/CeruleanMart.asm
@@ -7,9 +7,9 @@
 	dw CeruleanMartText3
 
 CeruleanMartText2:
-	TX_FAR _CeruleanMartText2
-	db "@"
+	text_far _CeruleanMartText2
+	text_end
 
 CeruleanMartText3:
-	TX_FAR _CeruleanMartText3
-	db "@"
+	text_far _CeruleanMartText3
+	text_end
--- a/scripts/CeruleanPokecenter.asm
+++ b/scripts/CeruleanPokecenter.asm
@@ -9,15 +9,15 @@
 	dw CeruleanTradeNurseText
 
 CeruleanTradeNurseText:
-	TX_CABLE_CLUB_RECEPTIONIST
+	script_cable_club_receptionist
 
 CeruleanHealNurseText:
-	TX_POKECENTER_NURSE
+	script_pokecenter_nurse
 
 CeruleanPokecenterText2:
-	TX_FAR _CeruleanPokecenterText2
-	db "@"
+	text_far _CeruleanPokecenterText2
+	text_end
 
 CeruleanPokecenterText3:
-	TX_FAR _CeruleanPokecenterText3
-	db "@"
+	text_far _CeruleanPokecenterText3
+	text_end
--- a/scripts/CeruleanTradeHouse.asm
+++ b/scripts/CeruleanTradeHouse.asm
@@ -6,11 +6,11 @@
 	dw CeruleanHouse1Text2
 
 CeruleanHouse1Text1:
-	TX_FAR _CeruleanHouse1Text1
-	db "@"
+	text_far _CeruleanHouse1Text1
+	text_end
 
 CeruleanHouse1Text2:
-	TX_ASM
+	text_asm
 	ld a, $6
 	ld [wWhichTrade], a
 	predef DoInGameTradeDialogue
--- a/scripts/CeruleanTrashedHouse.asm
+++ b/scripts/CeruleanTrashedHouse.asm
@@ -8,7 +8,7 @@
 	dw CeruleanHouseTrashedText3
 
 CeruleanHouseTrashedText1:
-	TX_ASM
+	text_asm
 	ld b, $e4
 	predef GetQuantityOfItemInBag
 	and b
@@ -23,17 +23,17 @@
 	jp TextScriptEnd
 
 CeruleanHouseTrashedText_1d6ab:
-	TX_FAR _CeruleanTrashedText_1d6ab
-	db "@"
+	text_far _CeruleanTrashedText_1d6ab
+	text_end
 
 CeruleanHouseTrashedText_1d6b0:
-	TX_FAR _CeruleanTrashedText_1d6b0
-	db "@"
+	text_far _CeruleanTrashedText_1d6b0
+	text_end
 
 CeruleanHouseTrashedText2:
-	TX_FAR _CeruleanHouseTrashedText2
-	db "@"
+	text_far _CeruleanHouseTrashedText2
+	text_end
 
 CeruleanHouseTrashedText3:
-	TX_FAR _CeruleanHouseTrashedText3
-	db "@"
+	text_far _CeruleanHouseTrashedText3
+	text_end
--- a/scripts/ChampionsRoom.asm
+++ b/scripts/ChampionsRoom.asm
@@ -247,7 +247,7 @@
 	dw GaryText5
 
 GaryText1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_CHAMPION_RIVAL
 	ld hl, GaryChampionIntroText
 	jr z, .printText
@@ -257,27 +257,27 @@
 	jp TextScriptEnd
 
 GaryChampionIntroText:
-	TX_FAR _GaryChampionIntroText
-	db "@"
+	text_far _GaryChampionIntroText
+	text_end
 
 GaryDefeatedText:
-	TX_FAR _GaryDefeatedText
-	db "@"
+	text_far _GaryDefeatedText
+	text_end
 
 GaryVictoryText:
-	TX_FAR _GaryVictoryText
-	db "@"
+	text_far _GaryVictoryText
+	text_end
 
 GaryText_76103:
-	TX_FAR _GaryText_76103
-	db "@"
+	text_far _GaryText_76103
+	text_end
 
 GaryText2:
-	TX_FAR _GaryText2
-	db "@"
+	text_far _GaryText2
+	text_end
 
 GaryText3:
-	TX_ASM
+	text_asm
 	ld a, [wPlayerStarter]
 	ld [wd11e], a
 	call GetMonName
@@ -286,13 +286,13 @@
 	jp TextScriptEnd
 
 GaryText_76120:
-	TX_FAR _GaryText_76120
-	db "@"
+	text_far _GaryText_76120
+	text_end
 
 GaryText4:
-	TX_FAR _GaryText_76125
-	db "@"
+	text_far _GaryText_76125
+	text_end
 
 GaryText5:
-	TX_FAR _GaryText_7612a
-	db "@"
+	text_far _GaryText_7612a
+	text_end
--- a/scripts/CinnabarGym.asm
+++ b/scripts/CinnabarGym.asm
@@ -205,7 +205,7 @@
 	jp TextScriptEnd
 
 CinnabarGymText1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_BLAINE
 	jr z, .beginBattle
 	CheckEventReuseA EVENT_GOT_TM38
@@ -228,35 +228,35 @@
 	jp CinnabarGymScript_758b7
 
 BlaineBattleText:
-	TX_FAR _BlaineBattleText
-	db "@"
+	text_far _BlaineBattleText
+	text_end
 
 BlaineEndBattleText:
-	TX_FAR _BlaineEndBattleText
-	TX_SFX_KEY_ITEM ; actually plays the second channel of SFX_BALL_POOF due to the wrong music bank being loaded
-	TX_WAIT
-	db "@"
+	text_far _BlaineEndBattleText
+	sound_get_key_item ; actually plays the second channel of SFX_BALL_POOF due to the wrong music bank being loaded
+	text_linkpromptbutton
+	text_end
 
 BlaineFireBlastText:
-	TX_FAR _BlaineFireBlastText
-	db "@"
+	text_far _BlaineFireBlastText
+	text_end
 
 BlaineBadgeText:
-	TX_FAR _BlaineBadgeText
-	db "@"
+	text_far _BlaineBadgeText
+	text_end
 
 ReceivedTM38Text:
-	TX_FAR _ReceivedTM38Text
-	TX_SFX_ITEM_1
-	TX_FAR _TM38ExplanationText
-	db "@"
+	text_far _ReceivedTM38Text
+	sound_get_item_1
+	text_far _TM38ExplanationText
+	text_end
 
 TM38NoRoomText:
-	TX_FAR _TM38NoRoomText
-	db "@"
+	text_far _TM38NoRoomText
+	text_end
 
 CinnabarGymText2:
-	TX_ASM
+	text_asm
 	call CinnabarGymScript_757a0
 	CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_0
 	jr nz, .asm_46bb4
@@ -272,19 +272,19 @@
 	jp TextScriptEnd
 
 CinnabarGymText_7595f:
-	TX_FAR _CinnabarGymText_7595f
-	db "@"
+	text_far _CinnabarGymText_7595f
+	text_end
 
 CinnabarGymText_75964:
-	TX_FAR _CinnabarGymText_75964
-	db "@"
+	text_far _CinnabarGymText_75964
+	text_end
 
 CinnabarGymText_75969:
-	TX_FAR _CinnabarGymText_75969
-	db "@"
+	text_far _CinnabarGymText_75969
+	text_end
 
 CinnabarGymText3:
-	TX_ASM
+	text_asm
 	call CinnabarGymScript_757a0
 	CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_1
 	jr nz, .asm_4b406
@@ -300,19 +300,19 @@
 	jp TextScriptEnd
 
 CinnabarGymText_75994:
-	TX_FAR _CinnabarGymText_75994
-	db "@"
+	text_far _CinnabarGymText_75994
+	text_end
 
 CinnabarGymText_75999:
-	TX_FAR _CinnabarGymText_75999
-	db "@"
+	text_far _CinnabarGymText_75999
+	text_end
 
 CinnabarGymText_7599e:
-	TX_FAR _CinnabarGymText_7599e
-	db "@"
+	text_far _CinnabarGymText_7599e
+	text_end
 
 CinnabarGymText4:
-	TX_ASM
+	text_asm
 	call CinnabarGymScript_757a0
 	CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_2
 	jr nz, .asm_c0673
@@ -328,19 +328,19 @@
 	jp TextScriptEnd
 
 CinnabarGymText_759c9:
-	TX_FAR _CinnabarGymText_759c9
-	db "@"
+	text_far _CinnabarGymText_759c9
+	text_end
 
 CinnabarGymText_759ce:
-	TX_FAR _CinnabarGymText_759ce
-	db "@"
+	text_far _CinnabarGymText_759ce
+	text_end
 
 CinnabarGymText_759d3:
-	TX_FAR _CinnabarGymText_759d3
-	db "@"
+	text_far _CinnabarGymText_759d3
+	text_end
 
 CinnabarGymText5:
-	TX_ASM
+	text_asm
 	call CinnabarGymScript_757a0
 	CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_3
 	jr nz, .asm_5cfd7
@@ -356,19 +356,19 @@
 	jp TextScriptEnd
 
 CinnabarGymText_759fe:
-	TX_FAR _CinnabarGymText_759fe
-	db "@"
+	text_far _CinnabarGymText_759fe
+	text_end
 
 CinnabarGymText_75a03:
-	TX_FAR _CinnabarGymText_75a03
-	db "@"
+	text_far _CinnabarGymText_75a03
+	text_end
 
 CinnabarGymText_75a08:
-	TX_FAR _CinnabarGymText_75a08
-	db "@"
+	text_far _CinnabarGymText_75a08
+	text_end
 
 CinnabarGymText6:
-	TX_ASM
+	text_asm
 	call CinnabarGymScript_757a0
 	CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_4
 	jr nz, .asm_776b4
@@ -384,19 +384,19 @@
 	jp TextScriptEnd
 
 CinnabarGymText_75a33:
-	TX_FAR _CinnabarGymText_75a33
-	db "@"
+	text_far _CinnabarGymText_75a33
+	text_end
 
 CinnabarGymText_75a38:
-	TX_FAR _CinnabarGymText_75a38
-	db "@"
+	text_far _CinnabarGymText_75a38
+	text_end
 
 CinnabarGymText_75a3d:
-	TX_FAR _CinnabarGymText_75a3d
-	db "@"
+	text_far _CinnabarGymText_75a3d
+	text_end
 
 CinnabarGymText7:
-	TX_ASM
+	text_asm
 	call CinnabarGymScript_757a0
 	CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_5
 	jr nz, .asm_2f755
@@ -412,19 +412,19 @@
 	jp TextScriptEnd
 
 CinnabarGymText_75a68:
-	TX_FAR _CinnabarGymText_75a68
-	db "@"
+	text_far _CinnabarGymText_75a68
+	text_end
 
 CinnabarGymText_75a6d:
-	TX_FAR _CinnabarGymText_75a6d
-	db "@"
+	text_far _CinnabarGymText_75a6d
+	text_end
 
 CinnabarGymText_75a72:
-	TX_FAR _CinnabarGymText_75a72
-	db "@"
+	text_far _CinnabarGymText_75a72
+	text_end
 
 CinnabarGymText8:
-	TX_ASM
+	text_asm
 	call CinnabarGymScript_757a0
 	CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_6
 	jr nz, .asm_d87be
@@ -440,19 +440,19 @@
 	jp TextScriptEnd
 
 CinnabarGymText_75a9d:
-	TX_FAR _CinnabarGymText_75a9d
-	db "@"
+	text_far _CinnabarGymText_75a9d
+	text_end
 
 CinnabarGymText_75aa2:
-	TX_FAR _CinnabarGymText_75aa2
-	db "@"
+	text_far _CinnabarGymText_75aa2
+	text_end
 
 CinnabarGymText_75aa7:
-	TX_FAR _CinnabarGymText_75aa7
-	db "@"
+	text_far _CinnabarGymText_75aa7
+	text_end
 
 CinnabarGymText9:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_BLAINE
 	jr nz, .asm_627d9
 	ld hl, CinnabarGymText_75ac2
@@ -464,9 +464,9 @@
 	jp TextScriptEnd
 
 CinnabarGymText_75ac2:
-	TX_FAR _CinnabarGymText_75ac2
-	db "@"
+	text_far _CinnabarGymText_75ac2
+	text_end
 
 CinnabarGymText_75ac7:
-	TX_FAR _CinnabarGymText_75ac7
-	db "@"
+	text_far _CinnabarGymText_75ac7
+	text_end
--- a/scripts/CinnabarIsland.asm
+++ b/scripts/CinnabarIsland.asm
@@ -61,25 +61,25 @@
 	dw CinnabarIslandText8
 
 CinnabarIslandText8:
-	TX_FAR _CinnabarIslandText8
-	db "@"
+	text_far _CinnabarIslandText8
+	text_end
 
 CinnabarIslandText1:
-	TX_FAR _CinnabarIslandText1
-	db "@"
+	text_far _CinnabarIslandText1
+	text_end
 
 CinnabarIslandText2:
-	TX_FAR _CinnabarIslandText2
-	db "@"
+	text_far _CinnabarIslandText2
+	text_end
 
 CinnabarIslandText3:
-	TX_FAR _CinnabarIslandText3
-	db "@"
+	text_far _CinnabarIslandText3
+	text_end
 
 CinnabarIslandText6:
-	TX_FAR _CinnabarIslandText6
-	db "@"
+	text_far _CinnabarIslandText6
+	text_end
 
 CinnabarIslandText7:
-	TX_FAR _CinnabarIslandText7
-	db "@"
+	text_far _CinnabarIslandText7
+	text_end
--- a/scripts/CinnabarLab.asm
+++ b/scripts/CinnabarLab.asm
@@ -10,21 +10,21 @@
 	dw Lab1Text5
 
 Lab1Text1:
-	TX_FAR _Lab1Text1
-	db "@"
+	text_far _Lab1Text1
+	text_end
 
 Lab1Text2:
-	TX_FAR _Lab1Text2
-	db "@"
+	text_far _Lab1Text2
+	text_end
 
 Lab1Text3:
-	TX_FAR _Lab1Text3
-	db "@"
+	text_far _Lab1Text3
+	text_end
 
 Lab1Text4:
-	TX_FAR _Lab1Text4
-	db "@"
+	text_far _Lab1Text4
+	text_end
 
 Lab1Text5:
-	TX_FAR _Lab1Text5
-	db "@"
+	text_far _Lab1Text5
+	text_end
--- a/scripts/CinnabarLabFossilRoom.asm
+++ b/scripts/CinnabarLabFossilRoom.asm
@@ -47,7 +47,7 @@
 	db $00
 
 Lab4Text1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GAVE_FOSSIL_TO_LAB
 	jr nz, .asm_75d96
 	ld hl, Lab4Text_75dc6
@@ -83,23 +83,23 @@
 	jr .asm_75d93
 
 Lab4Text_75dc6:
-	TX_FAR _Lab4Text_75dc6
-	db "@"
+	text_far _Lab4Text_75dc6
+	text_end
 
 Lab4Text_75dcb:
-	TX_FAR _Lab4Text_75dcb
-	db "@"
+	text_far _Lab4Text_75dcb
+	text_end
 
 Lab4Text_75dd0:
-	TX_FAR _Lab4Text_75dd0
-	db "@"
+	text_far _Lab4Text_75dd0
+	text_end
 
 Lab4Text_75dd5:
-	TX_FAR _Lab4Text_75dd5
-	db "@"
+	text_far _Lab4Text_75dd5
+	text_end
 
 Lab4Text2:
-	TX_ASM
+	text_asm
 	ld a, $3
 	ld [wWhichTrade], a
 	predef DoInGameTradeDialogue
--- a/scripts/CinnabarLabMetronomeRoom.asm
+++ b/scripts/CinnabarLabMetronomeRoom.asm
@@ -9,7 +9,7 @@
 	dw Lab3Text5
 
 Lab3Text1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_TM35
 	jr nz, .asm_e551a
 	ld hl, TM35PreReceiveText
@@ -32,31 +32,31 @@
 	jp TextScriptEnd
 
 TM35PreReceiveText:
-	TX_FAR _TM35PreReceiveText
-	db "@"
+	text_far _TM35PreReceiveText
+	text_end
 
 ReceivedTM35Text:
-	TX_FAR _ReceivedTM35Text
-	TX_SFX_ITEM_1
-	db "@"
+	text_far _ReceivedTM35Text
+	sound_get_item_1
+	text_end
 
 TM35ExplanationText:
-	TX_FAR _TM35ExplanationText
-	db "@"
+	text_far _TM35ExplanationText
+	text_end
 
 TM35NoRoomText:
-	TX_FAR _TM35NoRoomText
-	db "@"
+	text_far _TM35NoRoomText
+	text_end
 
 Lab3Text2:
-	TX_FAR _Lab3Text2
-	db "@"
+	text_far _Lab3Text2
+	text_end
 
 Lab3Text4:
 Lab3Text3:
-	TX_FAR _Lab3Text3
-	db "@"
+	text_far _Lab3Text3
+	text_end
 
 Lab3Text5:
-	TX_FAR _Lab3Text5
-	db "@"
+	text_far _Lab3Text5
+	text_end
--- a/scripts/CinnabarLabTradeRoom.asm
+++ b/scripts/CinnabarLabTradeRoom.asm
@@ -7,17 +7,17 @@
 	dw Lab2Text3
 
 Lab2Text1:
-	TX_FAR _Lab2Text1
-	db "@"
+	text_far _Lab2Text1
+	text_end
 
 Lab2Text2:
-	TX_ASM
+	text_asm
 	ld a, $7
 	ld [wWhichTrade], a
 	jr Lab2DoTrade
 
 Lab2Text3:
-	TX_ASM
+	text_asm
 	ld a, $8
 	ld [wWhichTrade], a
 Lab2DoTrade:
--- a/scripts/CinnabarMart.asm
+++ b/scripts/CinnabarMart.asm
@@ -7,9 +7,9 @@
 	dw CinnabarMartText3
 
 CinnabarMartText2:
-	TX_FAR _CinnabarMartText2
-	db "@"
+	text_far _CinnabarMartText2
+	text_end
 
 CinnabarMartText3:
-	TX_FAR _CinnabarMartText3
-	db "@"
+	text_far _CinnabarMartText3
+	text_end
--- a/scripts/CinnabarPokecenter.asm
+++ b/scripts/CinnabarPokecenter.asm
@@ -9,15 +9,15 @@
 	dw CinnabarTradeNurseText
 
 CinnabarHealNurseText:
-	TX_POKECENTER_NURSE
+	script_pokecenter_nurse
 
 CinnabarPokecenterText2:
-	TX_FAR _CinnabarPokecenterText2
-	db "@"
+	text_far _CinnabarPokecenterText2
+	text_end
 
 CinnabarPokecenterText3:
-	TX_FAR _CinnabarPokecenterText3
-	db "@"
+	text_far _CinnabarPokecenterText3
+	text_end
 
 CinnabarTradeNurseText:
-	TX_CABLE_CLUB_RECEPTIONIST
+	script_cable_club_receptionist
--- a/scripts/Colosseum.asm
+++ b/scripts/Colosseum.asm
@@ -5,5 +5,5 @@
 	dw ColosseumText1
 
 ColosseumText1:
-	TX_FAR _ColosseumText1
-	db "@"
+	text_far _ColosseumText1
+	text_end
--- a/scripts/CopycatsHouse1F.asm
+++ b/scripts/CopycatsHouse1F.asm
@@ -7,16 +7,16 @@
 	dw CopycatsHouse1FText3
 
 CopycatsHouse1FText1:
-	TX_FAR _CopycatsHouse1FText1
-	db "@"
+	text_far _CopycatsHouse1FText1
+	text_end
 
 CopycatsHouse1FText2:
-	TX_FAR _CopycatsHouse1FText2
-	db "@"
+	text_far _CopycatsHouse1FText2
+	text_end
 
 CopycatsHouse1FText3:
-	TX_FAR _CopycatsHouse1FText3
-	TX_ASM
+	text_far _CopycatsHouse1FText3
+	text_asm
 	ld a, CHANSEY
 	call PlayCry
 	jp TextScriptEnd
--- a/scripts/CopycatsHouse2F.asm
+++ b/scripts/CopycatsHouse2F.asm
@@ -11,7 +11,7 @@
 	dw CopycatsHouse2FText7
 
 CopycatsHouse2FText1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_TM31
 	jr nz, .asm_7ccf3
 	ld a, $1
@@ -44,46 +44,46 @@
 	jp TextScriptEnd
 
 CopycatsHouse2FText_5ccd4:
-	TX_FAR _CopycatsHouse2FText_5ccd4
-	db "@"
+	text_far _CopycatsHouse2FText_5ccd4
+	text_end
 
 TM31PreReceiveText:
-	TX_FAR _TM31PreReceiveText
-	db "@"
+	text_far _TM31PreReceiveText
+	text_end
 
 ReceivedTM31Text:
-	TX_FAR _ReceivedTM31Text
-	TX_SFX_ITEM_1
+	text_far _ReceivedTM31Text
+	sound_get_item_1
 TM31ExplanationText1:
-	TX_FAR _TM31ExplanationText1
-	TX_WAIT
-	db "@"
+	text_far _TM31ExplanationText1
+	text_linkpromptbutton
+	text_end
 
 TM31ExplanationText2:
-	TX_FAR _TM31ExplanationText2
-	db "@"
+	text_far _TM31ExplanationText2
+	text_end
 
 TM31NoRoomText:
-	TX_FAR _TM31NoRoomText
-	TX_WAIT
-	db "@"
+	text_far _TM31NoRoomText
+	text_linkpromptbutton
+	text_end
 
 CopycatsHouse2FText2:
-	TX_FAR _CopycatsHouse2FText2
-	db "@"
+	text_far _CopycatsHouse2FText2
+	text_end
 
 CopycatsHouse2FText5:
 CopycatsHouse2FText4:
 CopycatsHouse2FText3:
-	TX_FAR _CopycatsHouse2FText3
-	db "@"
+	text_far _CopycatsHouse2FText3
+	text_end
 
 CopycatsHouse2FText6:
-	TX_FAR _CopycatsHouse2FText6
-	db "@"
+	text_far _CopycatsHouse2FText6
+	text_end
 
 CopycatsHouse2FText7:
-	TX_ASM
+	text_asm
 	ld a, [wSpriteStateData1 + 9]
 	cp SPRITE_FACING_UP
 	ld hl, CopycatsHouse2FText_5cd1c
@@ -94,9 +94,9 @@
 	jp TextScriptEnd
 
 CopycatsHouse2FText_5cd17:
-	TX_FAR _CopycatsHouse2FText_5cd17
-	db "@"
+	text_far _CopycatsHouse2FText_5cd17
+	text_end
 
 CopycatsHouse2FText_5cd1c:
-	TX_FAR _CopycatsHouse2FText_5cd1c
-	db "@"
+	text_far _CopycatsHouse2FText_5cd1c
+	text_end
--- a/scripts/Daycare.asm
+++ b/scripts/Daycare.asm
@@ -5,7 +5,7 @@
 	dw DayCareMText1
 
 DayCareMText1:
-	TX_ASM
+	text_asm
 	call SaveScreenTilesToBuffer2
 	ld a, [wDayCareInUse]
 	and a
@@ -211,59 +211,59 @@
 	jp TextScriptEnd
 
 DayCareIntroText:
-	TX_FAR _DayCareIntroText
-	db "@"
+	text_far _DayCareIntroText
+	text_end
 
 DayCareWhichMonText:
-	TX_FAR _DayCareWhichMonText
-	db "@"
+	text_far _DayCareWhichMonText
+	text_end
 
 DayCareWillLookAfterMonText:
-	TX_FAR _DayCareWillLookAfterMonText
-	db "@"
+	text_far _DayCareWillLookAfterMonText
+	text_end
 
 DayCareComeSeeMeInAWhileText:
-	TX_FAR _DayCareComeSeeMeInAWhileText
-	db "@"
+	text_far _DayCareComeSeeMeInAWhileText
+	text_end
 
 DayCareMonHasGrownText:
-	TX_FAR _DayCareMonHasGrownText
-	db "@"
+	text_far _DayCareMonHasGrownText
+	text_end
 
 DayCareOweMoneyText:
-	TX_FAR _DayCareOweMoneyText
-	db "@"
+	text_far _DayCareOweMoneyText
+	text_end
 
 DayCareGotMonBackText:
-	TX_FAR _DayCareGotMonBackText
-	db "@"
+	text_far _DayCareGotMonBackText
+	text_end
 
 DayCareMonNeedsMoreTimeText:
-	TX_FAR _DayCareMonNeedsMoreTimeText
-	db "@"
+	text_far _DayCareMonNeedsMoreTimeText
+	text_end
 
 DayCareAllRightThenText:
-	TX_FAR _DayCareAllRightThenText
+	text_far _DayCareAllRightThenText
 DayCareComeAgainText:
-	TX_FAR _DayCareComeAgainText
-	db "@"
+	text_far _DayCareComeAgainText
+	text_end
 
 DayCareNoRoomForMonText:
-	TX_FAR _DayCareNoRoomForMonText
-	db "@"
+	text_far _DayCareNoRoomForMonText
+	text_end
 
 DayCareOnlyHaveOneMonText:
-	TX_FAR _DayCareOnlyHaveOneMonText
-	db "@"
+	text_far _DayCareOnlyHaveOneMonText
+	text_end
 
 DayCareCantAcceptMonWithHMText:
-	TX_FAR _DayCareCantAcceptMonWithHMText
-	db "@"
+	text_far _DayCareCantAcceptMonWithHMText
+	text_end
 
 DayCareHeresYourMonText:
-	TX_FAR _DayCareHeresYourMonText
-	db "@"
+	text_far _DayCareHeresYourMonText
+	text_end
 
 DayCareNotEnoughMoneyText:
-	TX_FAR _DayCareNotEnoughMoneyText
-	db "@"
+	text_far _DayCareNotEnoughMoneyText
+	text_end
--- a/scripts/DiglettsCave.asm
+++ b/scripts/DiglettsCave.asm
@@ -2,4 +2,4 @@
 	jp EnableAutoTextBoxDrawing
 
 DiglettsCave_TextPointers:
-	db "@"
+	text_end
--- a/scripts/DiglettsCaveRoute11.asm
+++ b/scripts/DiglettsCaveRoute11.asm
@@ -8,5 +8,5 @@
 	dw DiglettsCaveEntranceRoute11Text1
 
 DiglettsCaveEntranceRoute11Text1:
-	TX_FAR _DiglettsCaveEntRoute11Text1
-	db "@"
+	text_far _DiglettsCaveEntRoute11Text1
+	text_end
--- a/scripts/DiglettsCaveRoute2.asm
+++ b/scripts/DiglettsCaveRoute2.asm
@@ -7,5 +7,5 @@
 	dw DiglettsCaveRoute2Text1
 
 DiglettsCaveRoute2Text1:
-	TX_FAR _DiglettsCaveRoute2Text1
-	db "@"
+	text_far _DiglettsCaveRoute2Text1
+	text_end
--- a/scripts/FightingDojo.asm
+++ b/scripts/FightingDojo.asm
@@ -129,7 +129,7 @@
 	db $ff
 
 FightingDojoText1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_DEFEATED_FIGHTING_DOJO
 	jp nz, .continue1
 	CheckEventReuseA EVENT_BEAT_KARATE_MASTER
@@ -161,96 +161,96 @@
 	jp TextScriptEnd
 
 FightingDojoText_5ce8e:
-	TX_FAR _FightingDojoText_5ce8e
-	db "@"
+	text_far _FightingDojoText_5ce8e
+	text_end
 
 FightingDojoText_5ce93:
-	TX_FAR _FightingDojoText_5ce93
-	db "@"
+	text_far _FightingDojoText_5ce93
+	text_end
 
 FightingDojoText8:
-	TX_FAR _FightingDojoText_5ce98
-	db "@"
+	text_far _FightingDojoText_5ce98
+	text_end
 
 FightingDojoText_5ce9d:
-	TX_FAR _FightingDojoText_5ce9d
-	db "@"
+	text_far _FightingDojoText_5ce9d
+	text_end
 
 FightingDojoText2:
-	TX_ASM
+	text_asm
 	ld hl, FightingDojoTrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 FightingDojoBattleText1:
-	TX_FAR _FightingDojoBattleText1
-	db "@"
+	text_far _FightingDojoBattleText1
+	text_end
 
 FightingDojoEndBattleText1:
-	TX_FAR _FightingDojoEndBattleText1
-	db "@"
+	text_far _FightingDojoEndBattleText1
+	text_end
 
 FightingDojoAfterBattleText1:
-	TX_FAR _FightingDojoAfterBattleText1
-	db "@"
+	text_far _FightingDojoAfterBattleText1
+	text_end
 
 FightingDojoText3:
-	TX_ASM
+	text_asm
 	ld hl, FightingDojoTrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 FightingDojoBattleText2:
-	TX_FAR _FightingDojoBattleText2
-	db "@"
+	text_far _FightingDojoBattleText2
+	text_end
 
 FightingDojoEndBattleText2:
-	TX_FAR _FightingDojoEndBattleText2
-	db "@"
+	text_far _FightingDojoEndBattleText2
+	text_end
 
 FightingDojoAfterBattleText2:
-	TX_FAR _FightingDojoAfterBattleText2
-	db "@"
+	text_far _FightingDojoAfterBattleText2
+	text_end
 
 FightingDojoText4:
-	TX_ASM
+	text_asm
 	ld hl, FightingDojoTrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 FightingDojoBattleText3:
-	TX_FAR _FightingDojoBattleText3
-	db "@"
+	text_far _FightingDojoBattleText3
+	text_end
 
 FightingDojoEndBattleText3:
-	TX_FAR _FightingDojoEndBattleText3
-	db "@"
+	text_far _FightingDojoEndBattleText3
+	text_end
 
 FightingDojoAfterBattleText3:
-	TX_FAR _FightingDojoAfterBattleText3
-	db "@"
+	text_far _FightingDojoAfterBattleText3
+	text_end
 
 FightingDojoText5:
-	TX_ASM
+	text_asm
 	ld hl, FightingDojoTrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 FightingDojoBattleText4:
-	TX_FAR _FightingDojoBattleText4
-	db "@"
+	text_far _FightingDojoBattleText4
+	text_end
 
 FightingDojoEndBattleText4:
-	TX_FAR _FightingDojoEndBattleText4
-	db "@"
+	text_far _FightingDojoEndBattleText4
+	text_end
 
 FightingDojoAfterBattleText4:
-	TX_FAR _FightingDojoAfterBattleText4
-	db "@"
+	text_far _FightingDojoAfterBattleText4
+	text_end
 
 FightingDojoText6:
 ; Hitmonlee Poké Ball
-	TX_ASM
+	text_asm
 	CheckEitherEventSet EVENT_GOT_HITMONLEE, EVENT_GOT_HITMONCHAN
 	jr z, .GetMon
 	ld hl, OtherHitmonText
@@ -280,12 +280,12 @@
 	jp TextScriptEnd
 
 WantHitmonleeText:
-	TX_FAR _WantHitmonleeText
-	db "@"
+	text_far _WantHitmonleeText
+	text_end
 
 FightingDojoText7:
 ; Hitmonchan Poké Ball
-	TX_ASM
+	text_asm
 	CheckEitherEventSet EVENT_GOT_HITMONLEE, EVENT_GOT_HITMONCHAN
 	jr z, .GetMon
 	ld hl, OtherHitmonText
@@ -315,9 +315,9 @@
 	jp TextScriptEnd
 
 WantHitmonchanText:
-	TX_FAR _WantHitmonchanText
-	db "@"
+	text_far _WantHitmonchanText
+	text_end
 
 OtherHitmonText:
-	TX_FAR _OtherHitmonText
-	db "@"
+	text_far _OtherHitmonText
+	text_end
--- a/scripts/FuchsiaBillsGrandpasHouse.asm
+++ b/scripts/FuchsiaBillsGrandpasHouse.asm
@@ -8,13 +8,13 @@
 	dw FuchsiaHouse1Text3
 
 FuchsiaHouse1Text1:
-	TX_FAR _FuchsiaHouse1Text1
-	db "@"
+	text_far _FuchsiaHouse1Text1
+	text_end
 
 FuchsiaHouse1Text2:
-	TX_FAR _FuchsiaHouse1Text2
-	db "@"
+	text_far _FuchsiaHouse1Text2
+	text_end
 
 FuchsiaHouse1Text3:
-	TX_FAR _FuchsiaHouse1Text3
-	db "@"
+	text_far _FuchsiaHouse1Text3
+	text_end
--- a/scripts/FuchsiaCity.asm
+++ b/scripts/FuchsiaCity.asm
@@ -28,20 +28,20 @@
 	dw FuchsiaCityText24
 
 FuchsiaCityText1:
-	TX_FAR _FuchsiaCityText1
-	db "@"
+	text_far _FuchsiaCityText1
+	text_end
 
 FuchsiaCityText2:
-	TX_FAR _FuchsiaCityText2
-	db "@"
+	text_far _FuchsiaCityText2
+	text_end
 
 FuchsiaCityText3:
-	TX_FAR _FuchsiaCityText3
-	db "@"
+	text_far _FuchsiaCityText3
+	text_end
 
 FuchsiaCityText4:
-	TX_FAR _FuchsiaCityText4
-	db "@"
+	text_far _FuchsiaCityText4
+	text_end
 
 FuchsiaCityText5:
 FuchsiaCityText6:
@@ -49,32 +49,32 @@
 FuchsiaCityText8:
 FuchsiaCityText9:
 FuchsiaCityText10:
-	TX_FAR _FuchsiaCityText5
-	db "@"
+	text_far _FuchsiaCityText5
+	text_end
 
 FuchsiaCityText12:
 FuchsiaCityText11:
-	TX_FAR _FuchsiaCityText11
-	db "@"
+	text_far _FuchsiaCityText11
+	text_end
 
 FuchsiaCityText13:
-	TX_FAR _FuchsiaCityText13
-	db "@"
+	text_far _FuchsiaCityText13
+	text_end
 
 FuchsiaCityText16:
-	TX_FAR _FuchsiaCityText16
-	db "@"
+	text_far _FuchsiaCityText16
+	text_end
 
 FuchsiaCityText17:
-	TX_FAR _FuchsiaCityText17
-	db "@"
+	text_far _FuchsiaCityText17
+	text_end
 
 FuchsiaCityText18:
-	TX_FAR _FuchsiaCityText18
-	db "@"
+	text_far _FuchsiaCityText18
+	text_end
 
 FuchsiaCityText19:
-	TX_ASM
+	text_asm
 	ld hl, FuchsiaCityChanseyText
 	call PrintText
 	ld a, CHANSEY
@@ -82,11 +82,11 @@
 	jp TextScriptEnd
 
 FuchsiaCityChanseyText:
-	TX_FAR _FuchsiaCityChanseyText
-	db "@"
+	text_far _FuchsiaCityChanseyText
+	text_end
 
 FuchsiaCityText20:
-	TX_ASM
+	text_asm
 	ld hl, FuchsiaCityVoltorbText
 	call PrintText
 	ld a, VOLTORB
@@ -94,11 +94,11 @@
 	jp TextScriptEnd
 
 FuchsiaCityVoltorbText:
-	TX_FAR _FuchsiaCityVoltorbText
-	db "@"
+	text_far _FuchsiaCityVoltorbText
+	text_end
 
 FuchsiaCityText21:
-	TX_ASM
+	text_asm
 	ld hl, FuchsiaCityKangaskhanText
 	call PrintText
 	ld a, KANGASKHAN
@@ -106,11 +106,11 @@
 	jp TextScriptEnd
 
 FuchsiaCityKangaskhanText:
-	TX_FAR _FuchsiaCityKangaskhanText
-	db "@"
+	text_far _FuchsiaCityKangaskhanText
+	text_end
 
 FuchsiaCityText22:
-	TX_ASM
+	text_asm
 	ld hl, FuchsiaCitySlowpokeText
 	call PrintText
 	ld a, SLOWPOKE
@@ -118,11 +118,11 @@
 	jp TextScriptEnd
 
 FuchsiaCitySlowpokeText:
-	TX_FAR _FuchsiaCitySlowpokeText
-	db "@"
+	text_far _FuchsiaCitySlowpokeText
+	text_end
 
 FuchsiaCityText23:
-	TX_ASM
+	text_asm
 	ld hl, FuchsiaCityLaprasText
 	call PrintText
 	ld a, LAPRAS
@@ -130,11 +130,11 @@
 	jp TextScriptEnd
 
 FuchsiaCityLaprasText:
-	TX_FAR _FuchsiaCityLaprasText
-	db "@"
+	text_far _FuchsiaCityLaprasText
+	text_end
 
 FuchsiaCityText24:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_DOME_FOSSIL
 	jr nz, .asm_3b4e8
 	CheckEventReuseA EVENT_GOT_HELIX_FOSSIL
@@ -157,13 +157,13 @@
 	jp TextScriptEnd
 
 FuchsiaCityOmanyteText:
-	TX_FAR _FuchsiaCityOmanyteText
-	db "@"
+	text_far _FuchsiaCityOmanyteText
+	text_end
 
 FuchsiaCityKabutoText:
-	TX_FAR _FuchsiaCityKabutoText
-	db "@"
+	text_far _FuchsiaCityKabutoText
+	text_end
 
 FuchsiaCityText_19b2a:
-	TX_FAR _FuchsiaCityText_19b2a
-	db "@"
+	text_far _FuchsiaCityText_19b2a
+	text_end
--- a/scripts/FuchsiaGoodRodHouse.asm
+++ b/scripts/FuchsiaGoodRodHouse.asm
@@ -5,7 +5,7 @@
 	dw FuchsiaHouse3Text1
 
 FuchsiaHouse3Text1:
-	TX_ASM
+	text_asm
 	ld a, [wd728]
 	bit 4, a
 	jr nz, .after
@@ -44,32 +44,32 @@
 	jp TextScriptEnd
 
 FuchsiaHouse3Text_561bd:
-	TX_FAR _FuchsiaHouse3Text_561bd
-	db "@"
+	text_far _FuchsiaHouse3Text_561bd
+	text_end
 
 FuchsiaHouse3Text_561c2:
-	TX_FAR _FuchsiaHouse3Text_561c2
-	TX_SFX_ITEM_1
-	db "@"
+	text_far _FuchsiaHouse3Text_561c2
+	sound_get_item_1
+	text_end
 
 UnusedText_561c8:
-	para "つり こそ"
-	line "おとこの ロマン だ!"
+	para "つり こそ"
+	line "おとこの ロマン だ!"
 
 	para "へぼいつりざおは"
-	line "コイキングしか つれ なんだが"
-	line "この いいつりざおなら"
-	line "もっと いいもんが つれるんじゃ!"
+	line "コイキングしか つれ なんだが"
+	line "この いいつりざおなら"
+	line "もっと いいもんが つれるんじゃ!"
 	done
 
 FuchsiaHouse3Text_56212:
-	TX_FAR _FuchsiaHouse3Text_56212
-	db "@"
+	text_far _FuchsiaHouse3Text_56212
+	text_end
 
 FuchsiaHouse3Text_56217:
-	TX_FAR _FuchsiaHouse3Text_56217
-	db "@"
+	text_far _FuchsiaHouse3Text_56217
+	text_end
 
 FuchsiaHouse3Text_5621c:
-	TX_FAR _FuchsiaHouse3Text_5621c
-	db "@"
+	text_far _FuchsiaHouse3Text_5621c
+	text_end
--- a/scripts/FuchsiaGym.asm
+++ b/scripts/FuchsiaGym.asm
@@ -140,7 +140,7 @@
 	db $ff
 
 FuchsiaGymText1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_KOGA
 	jr z, .beginBattle
 	CheckEventReuseA EVENT_GOT_TM06
@@ -175,143 +175,143 @@
 	jp TextScriptEnd
 
 KogaBeforeBattleText:
-	TX_FAR _KogaBeforeBattleText
-	db "@"
+	text_far _KogaBeforeBattleText
+	text_end
 
 KogaAfterBattleText:
-	TX_FAR _KogaAfterBattleText
-	db "@"
+	text_far _KogaAfterBattleText
+	text_end
 
 KogaExplainToxicText:
-	TX_FAR _KogaExplainToxicText
-	db "@"
+	text_far _KogaExplainToxicText
+	text_end
 
 FuchsiaGymText9:
-	TX_FAR _FuchsiaGymText9
-	db "@"
+	text_far _FuchsiaGymText9
+	text_end
 
 FuchsiaGymText10:
-	TX_FAR _ReceivedTM06Text
-	TX_SFX_KEY_ITEM
+	text_far _ReceivedTM06Text
+	sound_get_key_item
 
 TM06ExplanationText:
-	TX_FAR _TM06ExplanationText
-	db "@"
+	text_far _TM06ExplanationText
+	text_end
 
 FuchsiaGymText11:
-	TX_FAR _TM06NoRoomText
-	db "@"
+	text_far _TM06NoRoomText
+	text_end
 
 FuchsiaGymText2:
-	TX_ASM
+	text_asm
 	ld hl, FuchsiaGymTrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 FuchsiaGymBattleText1:
-	TX_FAR _FuchsiaGymBattleText1
-	db "@"
+	text_far _FuchsiaGymBattleText1
+	text_end
 
 FuchsiaGymEndBattleText1:
-	TX_FAR _FuchsiaGymEndBattleText1
-	db "@"
+	text_far _FuchsiaGymEndBattleText1
+	text_end
 
 FuchsiaGymAfterBattleText1:
-	TX_FAR _FuchsiaGymAfterBattleText1
-	db "@"
+	text_far _FuchsiaGymAfterBattleText1
+	text_end
 
 FuchsiaGymText3:
-	TX_ASM
+	text_asm
 	ld hl, FuchsiaGymTrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 FuchsiaGymBattleText2:
-	TX_FAR _FuchsiaGymBattleText2
-	db "@"
+	text_far _FuchsiaGymBattleText2
+	text_end
 
 FuchsiaGymEndBattleText2:
-	TX_FAR _FuchsiaGymEndBattleText2
-	db "@"
+	text_far _FuchsiaGymEndBattleText2
+	text_end
 
 FuchsiaGymAfterBattleText2:
-	TX_FAR _FuchsiaGymAfterBattleText2
-	db "@"
+	text_far _FuchsiaGymAfterBattleText2
+	text_end
 
 FuchsiaGymText4:
-	TX_ASM
+	text_asm
 	ld hl, FuchsiaGymTrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 FuchsiaGymBattleText3:
-	TX_FAR _FuchsiaGymBattleText3
-	db "@"
+	text_far _FuchsiaGymBattleText3
+	text_end
 
 FuchsiaGymEndBattleText3:
-	TX_FAR _FuchsiaGymEndBattleText3
-	db "@"
+	text_far _FuchsiaGymEndBattleText3
+	text_end
 
 FuchsiaGymAfterBattleText3:
-	TX_FAR _FuchsiaGymAfterBattleText3
-	db "@"
+	text_far _FuchsiaGymAfterBattleText3
+	text_end
 
 FuchsiaGymText5:
-	TX_ASM
+	text_asm
 	ld hl, FuchsiaGymTrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 FuchsiaGymBattleText4:
-	TX_FAR _FuchsiaGymBattleText4
-	db "@"
+	text_far _FuchsiaGymBattleText4
+	text_end
 
 FuchsiaGymEndBattleText4:
-	TX_FAR _FuchsiaGymEndBattleText4
-	db "@"
+	text_far _FuchsiaGymEndBattleText4
+	text_end
 
 FuchsiaGymAfterBattleText4:
-	TX_FAR _FuchsiaGymAfterBattleText4
-	db "@"
+	text_far _FuchsiaGymAfterBattleText4
+	text_end
 
 FuchsiaGymText6:
-	TX_ASM
+	text_asm
 	ld hl, FuchsiaGymTrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 FuchsiaGymBattleText5:
-	TX_FAR _FuchsiaGymBattleText5
-	db "@"
+	text_far _FuchsiaGymBattleText5
+	text_end
 
 FuchsiaGymEndBattleText5:
-	TX_FAR _FuchsiaGymEndBattleText5
-	db "@"
+	text_far _FuchsiaGymEndBattleText5
+	text_end
 
 FuchsiaGymAfterBattleText5:
-	TX_FAR _FuchsiaGymAfterBattleText5
-	db "@"
+	text_far _FuchsiaGymAfterBattleText5
+	text_end
 
 FuchsiaGymText7:
-	TX_ASM
+	text_asm
 	ld hl, FuchsiaGymTrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 FuchsiaGymBattleText6:
-	TX_FAR _FuchsiaGymBattleText6
-	db "@"
+	text_far _FuchsiaGymBattleText6
+	text_end
 
 FuchsiaGymEndBattleText6:
-	TX_FAR _FuchsiaGymEndBattleText6
-	db "@"
+	text_far _FuchsiaGymEndBattleText6
+	text_end
 
 FuchsiaGymAfterBattleText6:
-	TX_FAR _FuchsiaGymAfterBattleText6
-	db "@"
+	text_far _FuchsiaGymAfterBattleText6
+	text_end
 
 FuchsiaGymText8:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_KOGA
 	ld hl, FuchsiaGymText_75653
 	jr nz, .asm_50671
@@ -321,9 +321,9 @@
 	jp TextScriptEnd
 
 FuchsiaGymText_7564e:
-	TX_FAR _FuchsiaGymText_7564e
-	db "@"
+	text_far _FuchsiaGymText_7564e
+	text_end
 
 FuchsiaGymText_75653:
-	TX_FAR _FuchsiaGymText_75653
-	db "@"
+	text_far _FuchsiaGymText_75653
+	text_end
--- a/scripts/FuchsiaMart.asm
+++ b/scripts/FuchsiaMart.asm
@@ -7,9 +7,9 @@
 	dw FuchsiaMartText3
 
 FuchsiaMartText2:
-	TX_FAR _FuchsiaMartText2
-	db "@"
+	text_far _FuchsiaMartText2
+	text_end
 
 FuchsiaMartText3:
-	TX_FAR _FuchsiaMartText3
-	db "@"
+	text_far _FuchsiaMartText3
+	text_end
--- a/scripts/FuchsiaMeetingRoom.asm
+++ b/scripts/FuchsiaMeetingRoom.asm
@@ -8,13 +8,13 @@
 	dw FuchsiaMeetingRoomText3
 
 FuchsiaMeetingRoomText1:
-	TX_FAR _FuchsiaMeetingRoomText1
-	db "@"
+	text_far _FuchsiaMeetingRoomText1
+	text_end
 
 FuchsiaMeetingRoomText2:
-	TX_FAR _FuchsiaMeetingRoomText2
-	db "@"
+	text_far _FuchsiaMeetingRoomText2
+	text_end
 
 FuchsiaMeetingRoomText3:
-	TX_FAR _FuchsiaMeetingRoomText3
-	db "@"
+	text_far _FuchsiaMeetingRoomText3
+	text_end
--- a/scripts/FuchsiaPokecenter.asm
+++ b/scripts/FuchsiaPokecenter.asm
@@ -9,15 +9,15 @@
 	dw FuchsiaTradeNurseText
 
 FuchsiaHealNurseText:
-	TX_POKECENTER_NURSE
+	script_pokecenter_nurse
 
 FuchsiaPokecenterText2:
-	TX_FAR _FuchsiaPokecenterText1
-	db "@"
+	text_far _FuchsiaPokecenterText1
+	text_end
 
 FuchsiaPokecenterText3:
-	TX_FAR _FuchsiaPokecenterText3
-	db "@"
+	text_far _FuchsiaPokecenterText3
+	text_end
 
 FuchsiaTradeNurseText:
-	TX_CABLE_CLUB_RECEPTIONIST
+	script_cable_club_receptionist
--- a/scripts/GameCorner.asm
+++ b/scripts/GameCorner.asm
@@ -132,11 +132,11 @@
 	dw CeladonGameCornerText13
 
 CeladonGameCornerText1:
-	TX_FAR _CeladonGameCornerText1
-	db "@"
+	text_far _CeladonGameCornerText1
+	text_end
 
 CeladonGameCornerText2:
-	TX_ASM
+	text_asm
 	call CeladonGameCornerScript_48f1e
 	ld hl, CeladonGameCornerText_48d22
 	call PrintText
@@ -193,39 +193,39 @@
 	jp TextScriptEnd
 
 CeladonGameCornerText_48d22:
-	TX_FAR _CeladonGameCornerText_48d22
-	db "@"
+	text_far _CeladonGameCornerText_48d22
+	text_end
 
 CeladonGameCornerText_48d27:
-	TX_FAR _CeladonGameCornerText_48d27
-	db "@"
+	text_far _CeladonGameCornerText_48d27
+	text_end
 
 CeladonGameCornerText_48d2c:
-	TX_FAR _CeladonGameCornerText_48d2c
-	db "@"
+	text_far _CeladonGameCornerText_48d2c
+	text_end
 
 CeladonGameCornerText_48d31:
-	TX_FAR _CeladonGameCornerText_48d31
-	db "@"
+	text_far _CeladonGameCornerText_48d31
+	text_end
 
 CeladonGameCornerText_48d36:
-	TX_FAR _CeladonGameCornerText_48d36
-	db "@"
+	text_far _CeladonGameCornerText_48d36
+	text_end
 
 CeladonGameCornerText_48d3b:
-	TX_FAR _CeladonGameCornerText_48d3b
-	db "@"
+	text_far _CeladonGameCornerText_48d3b
+	text_end
 
 CeladonGameCornerText3:
-	TX_FAR _CeladonGameCornerText3
-	db "@"
+	text_far _CeladonGameCornerText3
+	text_end
 
 CeladonGameCornerText4:
-	TX_FAR _CeladonGameCornerText4
-	db "@"
+	text_far _CeladonGameCornerText4
+	text_end
 
 CeladonGameCornerText5:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_10_COINS
 	jr nz, .asm_48d89
 	ld hl, CeladonGameCornerText_48d9c
@@ -262,28 +262,28 @@
 	jp TextScriptEnd
 
 CeladonGameCornerText_48d9c:
-	TX_FAR _CeladonGameCornerText_48d9c
-	db "@"
+	text_far _CeladonGameCornerText_48d9c
+	text_end
 
 Received10CoinsText:
-	TX_FAR _Received10CoinsText
-	TX_SFX_ITEM_1
-	db "@"
+	text_far _Received10CoinsText
+	sound_get_item_1
+	text_end
 
 CeladonGameCornerText_48da7:
-	TX_FAR _CeladonGameCornerText_48da7
-	db "@"
+	text_far _CeladonGameCornerText_48da7
+	text_end
 
 CeladonGameCornerText_48dac:
-	TX_FAR _CeladonGameCornerText_48dac
-	db "@"
+	text_far _CeladonGameCornerText_48dac
+	text_end
 
 CeladonGameCornerText6:
-	TX_FAR _CeladonGameCornerText6
-	db "@"
+	text_far _CeladonGameCornerText6
+	text_end
 
 CeladonGameCornerText7:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_ERIKA
 	ld hl, CeladonGameCornerText_48dca
 	jr z, .asm_48dc4
@@ -293,19 +293,19 @@
 	jp TextScriptEnd
 
 CeladonGameCornerText_48dca:
-	TX_FAR _CeladonGameCornerText_48dca
-	db "@"
+	text_far _CeladonGameCornerText_48dca
+	text_end
 
 CeladonGameCornerText_48dcf:
-	TX_FAR _CeladonGameCornerText_48dcf
-	db "@"
+	text_far _CeladonGameCornerText_48dcf
+	text_end
 
 CeladonGameCornerText8:
-	TX_FAR _CeladonGameCornerText8
-	db "@"
+	text_far _CeladonGameCornerText8
+	text_end
 
 CeladonGameCornerText9:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_20_COINS_2
 	jr nz, .asm_48e13
 	ld hl, CeladonGameCornerText_48e26
@@ -340,24 +340,24 @@
 	jp TextScriptEnd
 
 CeladonGameCornerText_48e26:
-	TX_FAR _CeladonGameCornerText_48e26
-	db "@"
+	text_far _CeladonGameCornerText_48e26
+	text_end
 
 Received20CoinsText:
-	TX_FAR _Received20CoinsText
-	TX_SFX_ITEM_1
-	db "@"
+	text_far _Received20CoinsText
+	sound_get_item_1
+	text_end
 
 CeladonGameCornerText_48e31:
-	TX_FAR _CeladonGameCornerText_48e31
-	db "@"
+	text_far _CeladonGameCornerText_48e31
+	text_end
 
 CeladonGameCornerText_48e36:
-	TX_FAR _CeladonGameCornerText_48e36
-	db "@"
+	text_far _CeladonGameCornerText_48e36
+	text_end
 
 CeladonGameCornerText10:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_20_COINS
 	jr nz, .asm_48e75
 	ld hl, CeladonGameCornerText_48e88
@@ -392,24 +392,24 @@
 	jp TextScriptEnd
 
 CeladonGameCornerText_48e88:
-	TX_FAR _CeladonGameCornerText_48e88
-	db "@"
+	text_far _CeladonGameCornerText_48e88
+	text_end
 
 CeladonGameCornerText_48e8d:
-	TX_FAR _CeladonGameCornerText_48e8d
-	TX_SFX_ITEM_1
-	db "@"
+	text_far _CeladonGameCornerText_48e8d
+	sound_get_item_1
+	text_end
 
 CeladonGameCornerText_48e93:
-	TX_FAR _CeladonGameCornerText_48e93
-	db "@"
+	text_far _CeladonGameCornerText_48e93
+	text_end
 
 CeladonGameCornerText_48e98:
-	TX_FAR _CeladonGameCornerText_48e98
-	db "@"
+	text_far _CeladonGameCornerText_48e98
+	text_end
 
 CeladonGameCornerText11:
-	TX_ASM
+	text_asm
 	ld hl, CeladonGameCornerText_48ece
 	call PrintText
 	ld hl, wd72d
@@ -431,19 +431,19 @@
 	jp TextScriptEnd
 
 CeladonGameCornerText_48ece:
-	TX_FAR _CeladonGameCornerText_48ece
-	db "@"
+	text_far _CeladonGameCornerText_48ece
+	text_end
 
 CeladonGameCornerText_48ed3:
-	TX_FAR _CeladonGameCornerText_48ed3
-	db "@"
+	text_far _CeladonGameCornerText_48ed3
+	text_end
 
 CeladonGameCornerText13:
-	TX_FAR _CeladonGameCornerText_48ed8
-	db "@"
+	text_far _CeladonGameCornerText_48ed8
+	text_end
 
 CeladonGameCornerText12:
-	TX_ASM
+	text_asm
 	ld a, $1
 	ld [wDoNotWaitForButtonPressAfterDisplayingText], a
 	ld hl, CeladonGameCornerText_48f09
@@ -460,8 +460,8 @@
 	jp TextScriptEnd
 
 CeladonGameCornerText_48f09:
-	TX_FAR _CeladonGameCornerText_48f09
-	TX_ASM
+	text_far _CeladonGameCornerText_48f09
+	text_asm
 	ld a, SFX_SWITCH
 	call PlaySound
 	call WaitForSoundToFinish
@@ -468,8 +468,8 @@
 	jp TextScriptEnd
 
 CeladonGameCornerText_48f19:
-	TX_FAR _CeladonGameCornerText_48f19
-	db "@"
+	text_far _CeladonGameCornerText_48f19
+	text_end
 
 CeladonGameCornerScript_48f1e:
 	ld hl, wd730
--- a/scripts/GameCornerPrizeRoom.asm
+++ b/scripts/GameCornerPrizeRoom.asm
@@ -9,12 +9,12 @@
 	dw CeladonPrizeRoomText3
 
 CeladonPrizeRoomText1:
-	TX_FAR _CeladonPrizeRoomText1
-	db "@"
+	text_far _CeladonPrizeRoomText1
+	text_end
 
 CeladonPrizeRoomText2:
-	TX_FAR _CeladonPrizeRoomText2
-	db "@"
+	text_far _CeladonPrizeRoomText2
+	text_end
 
 CeladonPrizeRoomText3:
-	TX_PRIZE_VENDOR
+	script_prize_vendor
--- a/scripts/HallOfFame.asm
+++ b/scripts/HallOfFame.asm
@@ -105,5 +105,5 @@
 	dw HallofFameRoomText1
 
 HallofFameRoomText1:
-	TX_FAR _HallofFameRoomText1
-	db "@"
+	text_far _HallofFameRoomText1
+	text_end
--- a/scripts/IndigoPlateauLobby.asm
+++ b/scripts/IndigoPlateauLobby.asm
@@ -22,15 +22,15 @@
 	dw IndigoTradeNurseText
 
 IndigoHealNurseText:
-	TX_POKECENTER_NURSE
+	script_pokecenter_nurse
 
 IndigoPlateauLobbyText2:
-	TX_FAR _IndigoPlateauLobbyText2
-	db "@"
+	text_far _IndigoPlateauLobbyText2
+	text_end
 
 IndigoPlateauLobbyText3:
-	TX_FAR _IndigoPlateauLobbyText3
-	db "@"
+	text_far _IndigoPlateauLobbyText3
+	text_end
 
 IndigoTradeNurseText:
-	TX_CABLE_CLUB_RECEPTIONIST
+	script_cable_club_receptionist
--- a/scripts/LancesRoom.asm
+++ b/scripts/LancesRoom.asm
@@ -142,21 +142,21 @@
 	db $ff
 
 LanceText1:
-	TX_ASM
+	text_asm
 	ld hl, LanceTrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 LanceBeforeBattleText:
-	TX_FAR _LanceBeforeBattleText
-	db "@"
+	text_far _LanceBeforeBattleText
+	text_end
 
 LanceEndBattleText:
-	TX_FAR _LanceEndBattleText
-	db "@"
+	text_far _LanceEndBattleText
+	text_end
 
 LanceAfterBattleText:
-	TX_FAR _LanceAfterBattleText
-	TX_ASM
+	text_far _LanceAfterBattleText
+	text_asm
 	SetEvent EVENT_BEAT_LANCE
 	jp TextScriptEnd
--- a/scripts/LavenderCuboneHouse.asm
+++ b/scripts/LavenderCuboneHouse.asm
@@ -7,14 +7,14 @@
 	dw LavenderHouse2Text2
 
 LavenderHouse2Text1:
-	TX_FAR _LavenderHouse2Text1
-	TX_ASM
+	text_far _LavenderHouse2Text1
+	text_asm
 	ld a, CUBONE
 	call PlayCry
 	jp TextScriptEnd
 
 LavenderHouse2Text2:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_RESCUED_MR_FUJI
 	jr nz, .asm_65711
 	ld hl, LavenderHouse2Text_1d9dc
@@ -27,9 +27,9 @@
 	jp TextScriptEnd
 
 LavenderHouse2Text_1d9dc:
-	TX_FAR _LavenderHouse2Text_1d9dc
-	db "@"
+	text_far _LavenderHouse2Text_1d9dc
+	text_end
 
 LavenderHouse2Text_1d9e1:
-	TX_FAR _LavenderHouse2Text_1d9e1
-	db "@"
+	text_far _LavenderHouse2Text_1d9e1
+	text_end
--- a/scripts/LavenderMart.asm
+++ b/scripts/LavenderMart.asm
@@ -7,11 +7,11 @@
 	dw LavenderMartText3
 
 LavenderMartText2:
-	TX_FAR _LavenderMartText2
-	db "@"
+	text_far _LavenderMartText2
+	text_end
 
 LavenderMartText3:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_RESCUED_MR_FUJI
 	jr nz, .Nugget
 	ld hl, .ReviveText
@@ -24,9 +24,9 @@
 	jp TextScriptEnd
 
 .ReviveText
-	TX_FAR _LavenderMartReviveText
-	db "@"
+	text_far _LavenderMartReviveText
+	text_end
 
 .NuggetText
-	TX_FAR _LavenderMartNuggetText
-	db "@"
+	text_far _LavenderMartNuggetText
+	text_end
--- a/scripts/LavenderPokecenter.asm
+++ b/scripts/LavenderPokecenter.asm
@@ -9,15 +9,15 @@
 	dw LavenderTradeNurseText
 
 LavenderTradeNurseText:
-	TX_CABLE_CLUB_RECEPTIONIST
+	script_cable_club_receptionist
 
 LavenderHealNurseText:
-	TX_POKECENTER_NURSE
+	script_pokecenter_nurse
 
 LavenderPokecenterText2:
-	TX_FAR _LavenderPokecenterText2
-	db "@"
+	text_far _LavenderPokecenterText2
+	text_end
 
 LavenderPokecenterText3:
-	TX_FAR _LavenderPokecenterText3
-	db "@"
+	text_far _LavenderPokecenterText3
+	text_end
--- a/scripts/LavenderTown.asm
+++ b/scripts/LavenderTown.asm
@@ -13,7 +13,7 @@
 	dw LavenderTownText9
 
 LavenderTownText1:
-	TX_ASM
+	text_asm
 	ld hl, LavenderTownText_4413c
 	call PrintText
 	call YesNoChoice
@@ -27,37 +27,37 @@
 	jp TextScriptEnd
 
 LavenderTownText_4413c:
-	TX_FAR _LavenderTownText_4413c
-	db "@"
+	text_far _LavenderTownText_4413c
+	text_end
 
 LavenderTownText_44141:
-	TX_FAR _LavenderTownText_44141
-	db "@"
+	text_far _LavenderTownText_44141
+	text_end
 
 LavenderTownText_44146:
-	TX_FAR _LavenderTownText_44146
-	db "@"
+	text_far _LavenderTownText_44146
+	text_end
 
 LavenderTownText2:
-	TX_FAR _LavenderTownText2
-	db "@"
+	text_far _LavenderTownText2
+	text_end
 
 LavenderTownText3:
-	TX_FAR _LavenderTownText3
-	db "@"
+	text_far _LavenderTownText3
+	text_end
 
 LavenderTownText4:
-	TX_FAR _LavenderTownText4
-	db "@"
+	text_far _LavenderTownText4
+	text_end
 
 LavenderTownText5:
-	TX_FAR _LavenderTownText5
-	db "@"
+	text_far _LavenderTownText5
+	text_end
 
 LavenderTownText8:
-	TX_FAR _LavenderTownText8
-	db "@"
+	text_far _LavenderTownText8
+	text_end
 
 LavenderTownText9:
-	TX_FAR _LavenderTownText9
-	db "@"
+	text_far _LavenderTownText9
+	text_end
--- a/scripts/LoreleisRoom.asm
+++ b/scripts/LoreleisRoom.asm
@@ -131,23 +131,23 @@
 	db $ff
 
 LoreleiText1:
-	TX_ASM
+	text_asm
 	ld hl, LoreleiTrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 LoreleiBeforeBattleText:
-	TX_FAR _LoreleiBeforeBattleText
-	db "@"
+	text_far _LoreleiBeforeBattleText
+	text_end
 
 LoreleiEndBattleText:
-	TX_FAR _LoreleiEndBattleText
-	db "@"
+	text_far _LoreleiEndBattleText
+	text_end
 
 LoreleiAfterBattleText:
-	TX_FAR _LoreleiAfterBattleText
-	db "@"
+	text_far _LoreleiAfterBattleText
+	text_end
 
 LoreleiDontRunAwayText:
-	TX_FAR _LoreleiDontRunAwayText
-	db "@"
+	text_far _LoreleiDontRunAwayText
+	text_end
--- a/scripts/MrFujisHouse.asm
+++ b/scripts/MrFujisHouse.asm
@@ -11,7 +11,7 @@
 	dw LavenderHouse1Text6
 
 LavenderHouse1Text1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_RESCUED_MR_FUJI
 	jr nz, .asm_72e5d
 	ld hl, LavenderHouse1Text_1d8d1
@@ -24,15 +24,15 @@
 	jp TextScriptEnd
 
 LavenderHouse1Text_1d8d1:
-	TX_FAR _LavenderHouse1Text_1d8d1
-	db "@"
+	text_far _LavenderHouse1Text_1d8d1
+	text_end
 
 LavenderHouse1Text_1d8d6:
-	TX_FAR _LavenderHouse1Text_1d8d6
-	db "@"
+	text_far _LavenderHouse1Text_1d8d6
+	text_end
 
 LavenderHouse1Text2:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_RESCUED_MR_FUJI
 	jr nz, .asm_06470
 	ld hl, LavenderHouse1Text_1d8f4
@@ -45,29 +45,29 @@
 	jp TextScriptEnd
 
 LavenderHouse1Text_1d8f4:
-	TX_FAR _LavenderHouse1Text_1d8f4
-	db "@"
+	text_far _LavenderHouse1Text_1d8f4
+	text_end
 
 LavenderHouse1Text_1d8f9:
-	TX_FAR _LavenderHouse1Text_1d8f9
-	db "@"
+	text_far _LavenderHouse1Text_1d8f9
+	text_end
 
 LavenderHouse1Text3:
-	TX_FAR _LavenderHouse1Text3
-	TX_ASM
+	text_far _LavenderHouse1Text3
+	text_asm
 	ld a, PSYDUCK
 	call PlayCry
 	jp TextScriptEnd
 
 LavenderHouse1Text4:
-	TX_FAR _LavenderHouse1Text4
-	TX_ASM
+	text_far _LavenderHouse1Text4
+	text_asm
 	ld a, NIDORINO
 	call PlayCry
 	jp TextScriptEnd
 
 LavenderHouse1Text5:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_POKE_FLUTE
 	jr nz, .asm_15ac2
 	ld hl, LavenderHouse1Text_1d94c
@@ -90,23 +90,23 @@
 	jp TextScriptEnd
 
 LavenderHouse1Text_1d94c:
-	TX_FAR _LavenderHouse1Text_1d94c
-	db "@"
+	text_far _LavenderHouse1Text_1d94c
+	text_end
 
 ReceivedFluteText:
-	TX_FAR _ReceivedFluteText
-	TX_SFX_KEY_ITEM
-	TX_FAR _FluteExplanationText
-	db "@"
+	text_far _ReceivedFluteText
+	sound_get_key_item
+	text_far _FluteExplanationText
+	text_end
 
 FluteNoRoomText:
-	TX_FAR _FluteNoRoomText
-	db "@"
+	text_far _FluteNoRoomText
+	text_end
 
 MrFujiAfterFluteText:
-	TX_FAR _MrFujiAfterFluteText
-	db "@"
+	text_far _MrFujiAfterFluteText
+	text_end
 
 LavenderHouse1Text6:
-	TX_FAR _LavenderHouse1Text6
-	db "@"
+	text_far _LavenderHouse1Text6
+	text_end
--- a/scripts/MrPsychicsHouse.asm
+++ b/scripts/MrPsychicsHouse.asm
@@ -5,7 +5,7 @@
 	dw SaffronHouse2Text1
 
 SaffronHouse2Text1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_TM29
 	jr nz, .asm_9e72b
 	ld hl, TM29PreReceiveText
@@ -28,18 +28,18 @@
 	jp TextScriptEnd
 
 TM29PreReceiveText:
-	TX_FAR _TM29PreReceiveText
-	db "@"
+	text_far _TM29PreReceiveText
+	text_end
 
 ReceivedTM29Text:
-	TX_FAR _ReceivedTM29Text
-	TX_SFX_ITEM_1
-	db "@"
+	text_far _ReceivedTM29Text
+	sound_get_item_1
+	text_end
 
 TM29ExplanationText:
-	TX_FAR _TM29ExplanationText
-	db "@"
+	text_far _TM29ExplanationText
+	text_end
 
 TM29NoRoomText:
-	TX_FAR _TM29NoRoomText
-	db "@"
+	text_far _TM29NoRoomText
+	text_end
--- a/scripts/MtMoon1F.asm
+++ b/scripts/MtMoon1F.asm
@@ -94,131 +94,131 @@
 	db $ff
 
 MtMoon1Text1:
-	TX_ASM
+	text_asm
 	ld hl, MtMoon1TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 MtMoon1Text2:
-	TX_ASM
+	text_asm
 	ld hl, MtMoon1TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 MtMoon1Text3:
-	TX_ASM
+	text_asm
 	ld hl, MtMoon1TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 MtMoon1Text4:
-	TX_ASM
+	text_asm
 	ld hl, MtMoon1TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 MtMoon1Text5:
-	TX_ASM
+	text_asm
 	ld hl, MtMoon1TrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 MtMoon1Text6:
-	TX_ASM
+	text_asm
 	ld hl, MtMoon1TrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 MtMoon1Text7:
-	TX_ASM
+	text_asm
 	ld hl, MtMoon1TrainerHeader6
 	call TalkToTrainer
 	jp TextScriptEnd
 
 MtMoon1BattleText2:
-	TX_FAR _MtMoon1BattleText2
-	db "@"
+	text_far _MtMoon1BattleText2
+	text_end
 
 MtMoon1EndBattleText2:
-	TX_FAR _MtMoon1EndBattleText2
-	db "@"
+	text_far _MtMoon1EndBattleText2
+	text_end
 
 MtMoon1AfterBattleText2:
-	TX_FAR _MtMoon1AfterBattleText2
-	db "@"
+	text_far _MtMoon1AfterBattleText2
+	text_end
 
 MtMoon1BattleText3:
-	TX_FAR _MtMoon1BattleText3
-	db "@"
+	text_far _MtMoon1BattleText3
+	text_end
 
 MtMoon1EndBattleText3:
-	TX_FAR _MtMoon1EndBattleText3
-	db "@"
+	text_far _MtMoon1EndBattleText3
+	text_end
 
 MtMoon1AfterBattleText3:
-	TX_FAR _MtMoon1AfterBattleText3
-	db "@"
+	text_far _MtMoon1AfterBattleText3
+	text_end
 
 MtMoon1BattleText4:
-	TX_FAR _MtMoon1BattleText4
-	db "@"
+	text_far _MtMoon1BattleText4
+	text_end
 
 MtMoon1EndBattleText4:
-	TX_FAR _MtMoon1EndBattleText4
-	db "@"
+	text_far _MtMoon1EndBattleText4
+	text_end
 
 MtMoon1AfterBattleText4:
-	TX_FAR _MtMoon1AfterBattleText4
-	db "@"
+	text_far _MtMoon1AfterBattleText4
+	text_end
 
 MtMoon1BattleText5:
-	TX_FAR _MtMoon1BattleText5
-	db "@"
+	text_far _MtMoon1BattleText5
+	text_end
 
 MtMoon1EndBattleText5:
-	TX_FAR _MtMoon1EndBattleText5
-	db "@"
+	text_far _MtMoon1EndBattleText5
+	text_end
 
 MtMoon1AfterBattleText5:
-	TX_FAR _MtMoon1AfterBattleText5
-	db "@"
+	text_far _MtMoon1AfterBattleText5
+	text_end
 
 MtMoon1BattleText6:
-	TX_FAR _MtMoon1BattleText6
-	db "@"
+	text_far _MtMoon1BattleText6
+	text_end
 
 MtMoon1EndBattleText6:
-	TX_FAR _MtMoon1EndBattleText6
-	db "@"
+	text_far _MtMoon1EndBattleText6
+	text_end
 
 MtMoon1AfterBattleText6:
-	TX_FAR _MtMoon1AfterBattleText6
-	db "@"
+	text_far _MtMoon1AfterBattleText6
+	text_end
 
 MtMoon1BattleText7:
-	TX_FAR _MtMoon1BattleText7
-	db "@"
+	text_far _MtMoon1BattleText7
+	text_end
 
 MtMoon1EndBattleText7:
-	TX_FAR _MtMoon1EndBattleText7
-	db "@"
+	text_far _MtMoon1EndBattleText7
+	text_end
 
 MtMoon1AfterBattleText7:
-	TX_FAR _MtMoon1AfterBattleText7
-	db "@"
+	text_far _MtMoon1AfterBattleText7
+	text_end
 
 MtMoon1BattleText8:
-	TX_FAR _MtMoon1BattleText8
-	db "@"
+	text_far _MtMoon1BattleText8
+	text_end
 
 MtMoon1EndBattleText8:
-	TX_FAR _MtMoon1EndBattleText8
-	db "@"
+	text_far _MtMoon1EndBattleText8
+	text_end
 
 MtMoon1AfterBattleText8:
-	TX_FAR _MtMoon1AfterBattleText8
-	db "@"
+	text_far _MtMoon1AfterBattleText8
+	text_end
 
 MtMoon1Text14:
-	TX_FAR _MtMoon1Text14
-	db "@"
+	text_far _MtMoon1Text14
+	text_end
--- a/scripts/MtMoonB1F.asm
+++ b/scripts/MtMoonB1F.asm
@@ -6,5 +6,5 @@
 	dw MtMoonText1
 
 MtMoonText1:
-	TX_FAR _MtMoonText1
-	db "@"
+	text_far _MtMoonText1
+	text_end
--- a/scripts/MtMoonB2F.asm
+++ b/scripts/MtMoonB2F.asm
@@ -205,7 +205,7 @@
 	db $ff
 
 MtMoon3Text1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD
 	jr z, .asm_49e8d
 	and $c0
@@ -237,31 +237,31 @@
 	jp TextScriptEnd
 
 MtMoon3Text2:
-	TX_ASM
+	text_asm
 	ld hl, MtMoon3TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 MtMoon3Text3:
-	TX_ASM
+	text_asm
 	ld hl, MtMoon3TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 MtMoon3Text4:
-	TX_ASM
+	text_asm
 	ld hl, MtMoon3TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 MtMoon3Text5:
-	TX_ASM
+	text_asm
 	ld hl, MtMoon3TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 MtMoon3Text6:
-	TX_ASM
+	text_asm
 	ld a, $1
 	ld [wDoNotWaitForButtonPressAfterDisplayingText], a
 	ld hl, MtMoon3Text_49f24
@@ -285,11 +285,11 @@
 	jp TextScriptEnd
 
 MtMoon3Text_49f24:
-	TX_FAR _MtMoon3Text_49f24
-	db "@"
+	text_far _MtMoon3Text_49f24
+	text_end
 
 MtMoon3Text7:
-	TX_ASM
+	text_asm
 	ld a, $1
 	ld [wDoNotWaitForButtonPressAfterDisplayingText], a
 	ld hl, MtMoon3Text_49f64
@@ -313,8 +313,8 @@
 	jp TextScriptEnd
 
 MtMoon3Text_49f64:
-	TX_FAR _MtMoon3Text_49f64
-	db "@"
+	text_far _MtMoon3Text_49f64
+	text_end
 
 MtMoon3Script_49f69:
 	ld hl, MtMoon3Text_49f6f
@@ -321,10 +321,10 @@
 	jp PrintText
 
 MtMoon3Text_49f6f:
-	TX_FAR _MtMoon3Text_49f6f
-	TX_SFX_KEY_ITEM
-	TX_WAIT
-	db "@"
+	text_far _MtMoon3Text_49f6f
+	sound_get_key_item
+	text_linkpromptbutton
+	text_end
 
 MtMoon3Script_49f76:
 	ld hl, MtMoon3Text_49f7f
@@ -332,75 +332,75 @@
 	jp TextScriptEnd
 
 MtMoon3Text_49f7f:
-	TX_FAR _MtMoon3Text_49f7f
-	TX_WAIT
-	db "@"
+	text_far _MtMoon3Text_49f7f
+	text_linkpromptbutton
+	text_end
 
 MtMoon3Text_49f85:
-	TX_FAR _MtMoon3Text_49f85
-	db "@"
+	text_far _MtMoon3Text_49f85
+	text_end
 
 MtMoon3Text_49f8a:
-	TX_FAR _MtMoon3Text_49f8a
-	db "@"
+	text_far _MtMoon3Text_49f8a
+	text_end
 
 MtMoon3Text_49f8f:
-	TX_FAR _MtMoon3Text_49f8f
-	db "@"
+	text_far _MtMoon3Text_49f8f
+	text_end
 
 MtMoon3Text_49f94:
-	TX_FAR _MtMoon3Text_49f94
-	db "@"
+	text_far _MtMoon3Text_49f94
+	text_end
 
 MtMoon3Text_49f99:
-	TX_FAR _MtMoon3Text_49f99
-	TX_SFX_KEY_ITEM
-	db "@"
+	text_far _MtMoon3Text_49f99
+	sound_get_key_item
+	text_end
 
 MtMoon3BattleText2:
-	TX_FAR _MtMoon3BattleText2
-	db "@"
+	text_far _MtMoon3BattleText2
+	text_end
 
 MtMoon3EndBattleText2:
-	TX_FAR _MtMoon3EndBattleText2
-	db "@"
+	text_far _MtMoon3EndBattleText2
+	text_end
 
 MtMoon3AfterBattleText2:
-	TX_FAR _MtMoon3AfterBattleText2
-	db "@"
+	text_far _MtMoon3AfterBattleText2
+	text_end
 
 MtMoon3BattleText3:
-	TX_FAR _MtMoon3BattleText3
-	db "@"
+	text_far _MtMoon3BattleText3
+	text_end
 
 MtMoon3EndBattleText3:
-	TX_FAR _MtMoon3EndBattleText3
-	db "@"
+	text_far _MtMoon3EndBattleText3
+	text_end
 
 MtMoon3AfterBattleText3:
-	TX_FAR _MtMoon3AfterBattleText3
-	db "@"
+	text_far _MtMoon3AfterBattleText3
+	text_end
 
 MtMoon3BattleText4:
-	TX_FAR _MtMoon3BattleText4
-	db "@"
+	text_far _MtMoon3BattleText4
+	text_end
 
 MtMoon3EndBattleText4:
-	TX_FAR _MtMoon3EndBattleText4
-	db "@"
+	text_far _MtMoon3EndBattleText4
+	text_end
 
 MtMoon3AfterBattleText4:
-	TX_FAR _MtMoon3AfterBattleText4
-	db "@"
+	text_far _MtMoon3AfterBattleText4
+	text_end
 
 MtMoon3BattleText5:
-	TX_FAR _MtMoon3BattleText5
-	db "@"
+	text_far _MtMoon3BattleText5
+	text_end
 
 MtMoon3EndBattleText5:
-	TX_FAR _MtMoon3EndBattleText5
-	db "@"
+	text_far _MtMoon3EndBattleText5
+	text_end
 
 MtMoon3AfterBattleText5:
-	TX_FAR _MtMoon3AfterBattleText5
-	db "@"
+	text_far _MtMoon3AfterBattleText5
+	text_end
--- a/scripts/MtMoonPokecenter.asm
+++ b/scripts/MtMoonPokecenter.asm
@@ -14,15 +14,15 @@
 	db $ff
 
 MtMoonPokecenterText2:
-	TX_FAR _MtMoonPokecenterText1
-	db "@"
+	text_far _MtMoonPokecenterText1
+	text_end
 
 MtMoonPokecenterText3:
-	TX_FAR _MtMoonPokecenterText3
-	db "@"
+	text_far _MtMoonPokecenterText3
+	text_end
 
 MagikarpSalesmanText:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BOUGHT_MAGIKARP, 1
 	jp c, .alreadyBoughtMagikarp
 	ld hl, .Text1
@@ -71,24 +71,24 @@
 	jp TextScriptEnd
 
 .Text1
-	TX_FAR _MagikarpSalesmanText1
-	db "@"
+	text_far _MagikarpSalesmanText1
+	text_end
 
 .RefuseText
-	TX_FAR _MagikarpSalesmanNoText
-	db "@"
+	text_far _MagikarpSalesmanNoText
+	text_end
 
 .NoMoneyText
-	TX_FAR _MagikarpSalesmanNoMoneyText
-	db "@"
+	text_far _MagikarpSalesmanNoMoneyText
+	text_end
 
 .Text2
-	TX_FAR _MagikarpSalesmanText2
-	db "@"
+	text_far _MagikarpSalesmanText2
+	text_end
 
 MtMoonPokecenterText5:
-	TX_FAR _MtMoonPokecenterText5
-	db "@"
+	text_far _MtMoonPokecenterText5
+	text_end
 
 MtMoonTradeNurseText:
 	db $f6
--- a/scripts/Museum1F.asm
+++ b/scripts/Museum1F.asm
@@ -39,7 +39,7 @@
 	dw Museum1FText5
 
 Museum1FText1:
-	TX_ASM
+	text_asm
 	ld a, [wYCoord]
 	cp $4
 	jr nz, .asm_8774b
@@ -140,53 +140,53 @@
 	jp TextScriptEnd
 
 Museum1FText_5c21a:
-	TX_FAR _Museum1FText_5c21a
-	db "@"
+	text_far _Museum1FText_5c21a
+	text_end
 
 Museum1FText_5c21f:
-	TX_FAR _Museum1FText_5c21f
-	db "@"
+	text_far _Museum1FText_5c21f
+	text_end
 
 Museum1FText_5c224:
-	TX_FAR _Museum1FText_5c224
-	db "@"
+	text_far _Museum1FText_5c224
+	text_end
 
 Museum1FText_5c229:
-	TX_FAR _Museum1FText_5c229
-	db "@"
+	text_far _Museum1FText_5c229
+	text_end
 
 Museum1FText_5c22e:
-	TX_FAR _Museum1FText_5c22e
-	db "@"
+	text_far _Museum1FText_5c22e
+	text_end
 
 Museum1FText_5c233:
-	TX_FAR _Museum1FText_5c233
-	db "@"
+	text_far _Museum1FText_5c233
+	text_end
 
 Museum1FText_5c238:
-	TX_FAR _Museum1FText_5c238
-	db "@"
+	text_far _Museum1FText_5c238
+	text_end
 
 Museum1FText_5c23d:
-	TX_FAR _Museum1FText_5c23d
-	db "@"
+	text_far _Museum1FText_5c23d
+	text_end
 
 Museum1FText_5c242:
-	TX_FAR _Museum1FText_5c242
-	db "@"
+	text_far _Museum1FText_5c242
+	text_end
 
 Museum1FText2:
-	TX_ASM
+	text_asm
 	ld hl, Museum1FText_5c251
 	call PrintText
 	jp TextScriptEnd
 
 Museum1FText_5c251:
-	TX_FAR _Museum1FText_5c251
-	db "@"
+	text_far _Museum1FText_5c251
+	text_end
 
 Museum1FText3:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_OLD_AMBER
 	jr nz, .asm_5c285
 	ld hl, Museum1FText_5c28e
@@ -210,38 +210,38 @@
 	jp TextScriptEnd
 
 Museum1FText_5c28e:
-	TX_FAR _Museum1FText_5c28e
-	db "@"
+	text_far _Museum1FText_5c28e
+	text_end
 
 ReceivedOldAmberText:
-	TX_FAR _ReceivedOldAmberText
-	TX_SFX_ITEM_1
-	db "@"
+	text_far _ReceivedOldAmberText
+	sound_get_item_1
+	text_end
 
 Museum1FText_5c299:
-	TX_FAR _Museum1FText_5c299
-	db "@"
+	text_far _Museum1FText_5c299
+	text_end
 
 Museum1FText_5c29e:
-	TX_FAR _Museum1FText_5c29e
-	db "@"
+	text_far _Museum1FText_5c29e
+	text_end
 
 Museum1FText4:
-	TX_ASM
+	text_asm
 	ld hl, Museum1FText_5c2ad
 	call PrintText
 	jp TextScriptEnd
 
 Museum1FText_5c2ad:
-	TX_FAR _Museum1FText_5c2ad
-	db "@"
+	text_far _Museum1FText_5c2ad
+	text_end
 
 Museum1FText5:
-	TX_ASM
+	text_asm
 	ld hl, Museum1FText_5c2bc
 	call PrintText
 	jp TextScriptEnd
 
 Museum1FText_5c2bc:
-	TX_FAR _Museum1FText_5c2bc
-	db "@"
+	text_far _Museum1FText_5c2bc
+	text_end
--- a/scripts/Museum2F.asm
+++ b/scripts/Museum2F.asm
@@ -11,29 +11,29 @@
 	dw Museum2FText7
 
 Museum2FText1:
-	TX_FAR _Museum2FText1
-	db "@"
+	text_far _Museum2FText1
+	text_end
 
 Museum2FText2:
-	TX_FAR _Museum2FText2
-	db "@"
+	text_far _Museum2FText2
+	text_end
 
 Museum2FText3:
-	TX_FAR _Museum2FText3
-	db "@"
+	text_far _Museum2FText3
+	text_end
 
 Museum2FText4:
-	TX_FAR _Museum2FText4
-	db "@"
+	text_far _Museum2FText4
+	text_end
 
 Museum2FText5:
-	TX_FAR _Museum2FText5
-	db "@"
+	text_far _Museum2FText5
+	text_end
 
 Museum2FText6:
-	TX_FAR _Museum2FText6
-	db "@"
+	text_far _Museum2FText6
+	text_end
 
 Museum2FText7:
-	TX_FAR _Museum2FText7
-	db "@"
+	text_far _Museum2FText7
+	text_end
--- a/scripts/NameRatersHouse.asm
+++ b/scripts/NameRatersHouse.asm
@@ -41,7 +41,7 @@
 	dw NameRaterText1
 
 NameRaterText1:
-	TX_ASM
+	text_asm
 	call SaveScreenTilesToBuffer2
 	ld hl, NameRaterText_1dab3
 	call NameRaterScript_1da15
@@ -79,29 +79,29 @@
 	jr .asm_1daa8
 
 NameRaterText_1dab3:
-	TX_FAR _NameRaterText_1dab3
-	db "@"
+	text_far _NameRaterText_1dab3
+	text_end
 
 NameRaterText_1dab8:
-	TX_FAR _NameRaterText_1dab8
-	db "@"
+	text_far _NameRaterText_1dab8
+	text_end
 
 NameRaterText_1dabd:
-	TX_FAR _NameRaterText_1dabd
-	db "@"
+	text_far _NameRaterText_1dabd
+	text_end
 
 NameRaterText_1dac2:
-	TX_FAR _NameRaterText_1dac2
-	db "@"
+	text_far _NameRaterText_1dac2
+	text_end
 
 NameRaterText_1dac7:
-	TX_FAR _NameRaterText_1dac7
-	db "@"
+	text_far _NameRaterText_1dac7
+	text_end
 
 NameRaterText_1dacc:
-	TX_FAR _NameRaterText_1dacc
-	db "@"
+	text_far _NameRaterText_1dacc
+	text_end
 
 NameRaterText_1dad1:
-	TX_FAR _NameRaterText_1dad1
-	db "@"
+	text_far _NameRaterText_1dad1
+	text_end
--- a/scripts/OaksLab.asm
+++ b/scripts/OaksLab.asm
@@ -762,7 +762,7 @@
 	dw OaksLabText11
 
 OaksLabText1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_FOLLOWED_OAK_INTO_LAB_2
 	jr nz, .beforeChooseMon
 	ld hl, OaksLabGaryText1
@@ -781,19 +781,19 @@
 	jp TextScriptEnd
 
 OaksLabGaryText1:
-	TX_FAR _OaksLabGaryText1
-	db "@"
+	text_far _OaksLabGaryText1
+	text_end
 
 OaksLabText40:
-	TX_FAR _OaksLabText40
-	db "@"
+	text_far _OaksLabText40
+	text_end
 
 OaksLabText41:
-	TX_FAR _OaksLabText41
-	db "@"
+	text_far _OaksLabText41
+	text_end
 
 OaksLabText2:
-	TX_ASM
+	text_asm
 	ld a, STARTER2
 	ld [wRivalStarterTemp], a
 	ld a, $3
@@ -803,7 +803,7 @@
 	jr OaksLabScript_1d133
 
 OaksLabText3:
-	TX_ASM
+	text_asm
 	ld a, STARTER3
 	ld [wRivalStarterTemp], a
 	ld a, $4
@@ -813,7 +813,7 @@
 	jr OaksLabScript_1d133
 
 OaksLabText4:
-	TX_ASM
+	text_asm
 	ld a, STARTER1
 	ld [wRivalStarterTemp], a
 	ld a, $2
@@ -835,8 +835,8 @@
 	jp TextScriptEnd
 
 OaksLabText39:
-	TX_FAR _OaksLabText39
-	db "@"
+	text_far _OaksLabText39
+	text_end
 
 OaksLabScript_1d157:
 	ld a, $5
@@ -870,22 +870,22 @@
 	ld hl, OaksLabCharmanderText
 	jr OaksLabMonChoiceMenu
 OaksLabCharmanderText:
-	TX_FAR _OaksLabCharmanderText
-	db "@"
+	text_far _OaksLabCharmanderText
+	text_end
 
 OaksLabLookAtSquirtle:
 	ld hl, OaksLabSquirtleText
 	jr OaksLabMonChoiceMenu
 OaksLabSquirtleText:
-	TX_FAR _OaksLabSquirtleText
-	db "@"
+	text_far _OaksLabSquirtleText
+	text_end
 
 OaksLabLookAtBulbasaur:
 	ld hl, OaksLabBulbasaurText
 	jr OaksLabMonChoiceMenu
 OaksLabBulbasaurText:
-	TX_FAR _OaksLabBulbasaurText
-	db "@"
+	text_far _OaksLabBulbasaurText
+	text_end
 
 OaksLabMonChoiceMenu:
 	call PrintText
@@ -937,13 +937,13 @@
 	jp TextScriptEnd
 
 OaksLabMonEnergeticText:
-	TX_FAR _OaksLabMonEnergeticText
-	db "@"
+	text_far _OaksLabMonEnergeticText
+	text_end
 
 OaksLabReceivedMonText:
-	TX_FAR _OaksLabReceivedMonText
-	TX_SFX_KEY_ITEM
-	db "@"
+	text_far _OaksLabReceivedMonText
+	sound_get_key_item
+	text_end
 
 OaksLabScript_1d22d:
 	ld a, $5
@@ -957,12 +957,12 @@
 	jp TextScriptEnd
 
 OaksLabLastMonText:
-	TX_FAR _OaksLabLastMonText
-	db "@"
+	text_far _OaksLabLastMonText
+	text_end
 
 OaksLabText32:
 OaksLabText5:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS
 	jr nz, .asm_1d266
 	ld hl, wPokedexOwned
@@ -1033,201 +1033,201 @@
 	jp TextScriptEnd
 
 OaksLabText_1d2f0:
-	TX_FAR _OaksLabText_1d2f0
-	db "@"
+	text_far _OaksLabText_1d2f0
+	text_end
 
 OaksLabText_1d2f5:
-	TX_FAR _OaksLabText_1d2f5
-	db "@"
+	text_far _OaksLabText_1d2f5
+	text_end
 
 OaksLabText_1d2fa:
-	TX_FAR _OaksLabText_1d2fa
-	db "@"
+	text_far _OaksLabText_1d2fa
+	text_end
 
 OaksLabDeliverParcelText:
-	TX_FAR _OaksLabDeliverParcelText1
-	TX_SFX_KEY_ITEM
-	TX_FAR _OaksLabDeliverParcelText2
-	db "@"
+	text_far _OaksLabDeliverParcelText1
+	sound_get_key_item
+	text_far _OaksLabDeliverParcelText2
+	text_end
 
 OaksLabAroundWorldText:
-	TX_FAR _OaksLabAroundWorldText
-	db "@"
+	text_far _OaksLabAroundWorldText
+	text_end
 
 OaksLabGivePokeballsText:
-	TX_FAR _OaksLabGivePokeballsText1
-	TX_SFX_KEY_ITEM
-	TX_FAR _OaksLabGivePokeballsText2
-	db "@"
+	text_far _OaksLabGivePokeballsText1
+	sound_get_key_item
+	text_far _OaksLabGivePokeballsText2
+	text_end
 
 OaksLabPleaseVisitText:
-	TX_FAR _OaksLabPleaseVisitText
-	db "@"
+	text_far _OaksLabPleaseVisitText
+	text_end
 
 OaksLabText_1d31d:
-	TX_FAR _OaksLabText_1d31d
-	db "@"
+	text_far _OaksLabText_1d31d
+	text_end
 
 OaksLabText7:
 OaksLabText6:
-	TX_ASM
+	text_asm
 	ld hl, OaksLabText_1d32c
 	call PrintText
 	jp TextScriptEnd
 
 OaksLabText_1d32c:
-	TX_FAR _OaksLabText_1d32c
-	db "@"
+	text_far _OaksLabText_1d32c
+	text_end
 
 OaksLabText8:
-	TX_FAR _OaksLabText8
-	db "@"
+	text_far _OaksLabText8
+	text_end
 
 OaksLabText9:
-	TX_ASM
+	text_asm
 	ld hl, OaksLabText_1d340
 	call PrintText
 	jp TextScriptEnd
 
 OaksLabText_1d340:
-	TX_FAR _OaksLabText_1d340
-	db "@"
+	text_far _OaksLabText_1d340
+	text_end
 
 OaksLabText17:
-	TX_ASM
+	text_asm
 	ld hl, OaksLabRivalWaitingText
 	call PrintText
 	jp TextScriptEnd
 
 OaksLabRivalWaitingText:
-	TX_FAR _OaksLabRivalWaitingText
-	db "@"
+	text_far _OaksLabRivalWaitingText
+	text_end
 
 OaksLabText18:
-	TX_ASM
+	text_asm
 	ld hl, OaksLabChooseMonText
 	call PrintText
 	jp TextScriptEnd
 
 OaksLabChooseMonText:
-	TX_FAR _OaksLabChooseMonText
-	db "@"
+	text_far _OaksLabChooseMonText
+	text_end
 
 OaksLabText19:
-	TX_ASM
+	text_asm
 	ld hl, OaksLabRivalInterjectionText
 	call PrintText
 	jp TextScriptEnd
 
 OaksLabRivalInterjectionText:
-	TX_FAR _OaksLabRivalInterjectionText
-	db "@"
+	text_far _OaksLabRivalInterjectionText
+	text_end
 
 OaksLabText20:
-	TX_ASM
+	text_asm
 	ld hl, OaksLabBePatientText
 	call PrintText
 	jp TextScriptEnd
 
 OaksLabBePatientText:
-	TX_FAR _OaksLabBePatientText
-	db "@"
+	text_far _OaksLabBePatientText
+	text_end
 
 OaksLabText12:
-	TX_ASM
+	text_asm
 	ld hl, OaksLabLeavingText
 	call PrintText
 	jp TextScriptEnd
 
 OaksLabLeavingText:
-	TX_FAR _OaksLabLeavingText
-	db "@"
+	text_far _OaksLabLeavingText
+	text_end
 
 OaksLabText13:
-	TX_ASM
+	text_asm
 	ld hl, OaksLabRivalPickingMonText
 	call PrintText
 	jp TextScriptEnd
 
 OaksLabRivalPickingMonText:
-	TX_FAR _OaksLabRivalPickingMonText
-	db "@"
+	text_far _OaksLabRivalPickingMonText
+	text_end
 
 OaksLabText14:
-	TX_ASM
+	text_asm
 	ld hl, OaksLabRivalReceivedMonText
 	call PrintText
 	jp TextScriptEnd
 
 OaksLabRivalReceivedMonText:
-	TX_FAR _OaksLabRivalReceivedMonText
-	TX_SFX_KEY_ITEM
-	db "@"
+	text_far _OaksLabRivalReceivedMonText
+	sound_get_key_item
+	text_end
 
 OaksLabText15:
-	TX_ASM
+	text_asm
 	ld hl, OaksLabRivalChallengeText
 	call PrintText
 	jp TextScriptEnd
 
 OaksLabRivalChallengeText:
-	TX_FAR _OaksLabRivalChallengeText
-	db "@"
+	text_far _OaksLabRivalChallengeText
+	text_end
 
 OaksLabText_1d3be:
-	TX_FAR _OaksLabText_1d3be
-	db "@"
+	text_far _OaksLabText_1d3be
+	text_end
 
 OaksLabText_1d3c3:
-	TX_FAR _OaksLabText_1d3c3
-	db "@"
+	text_far _OaksLabText_1d3c3
+	text_end
 
 OaksLabText16:
-	TX_ASM
+	text_asm
 	ld hl, OaksLabRivalToughenUpText
 	call PrintText
 	jp TextScriptEnd
 
 OaksLabRivalToughenUpText:
-	TX_FAR _OaksLabRivalToughenUpText
-	db "@"
+	text_far _OaksLabRivalToughenUpText
+	text_end
 
 OaksLabText21:
-	TX_FAR _OaksLabText21
-	db "@"
+	text_far _OaksLabText21
+	text_end
 
 OaksLabText22:
-	TX_FAR _OaksLabText22
-	db "@"
+	text_far _OaksLabText22
+	text_end
 
 OaksLabText23:
-	TX_FAR _OaksLabText23
-	db "@"
+	text_far _OaksLabText23
+	text_end
 
 OaksLabText24:
-	TX_FAR _OaksLabText24
-	db "@"
+	text_far _OaksLabText24
+	text_end
 
 OaksLabText25:
-	TX_FAR _OaksLabText25
-	TX_SFX_KEY_ITEM
-	db "@"
+	text_far _OaksLabText25
+	sound_get_key_item
+	text_end
 
 OaksLabText26:
-	TX_FAR _OaksLabText26
-	db "@"
+	text_far _OaksLabText26
+	text_end
 
 OaksLabText27:
-	TX_FAR _OaksLabText27
-	db "@"
+	text_far _OaksLabText27
+	text_end
 
 OaksLabText11:
 OaksLabText10:
-	TX_ASM
+	text_asm
 	ld hl, OaksLabText_1d405
 	call PrintText
 	jp TextScriptEnd
 
 OaksLabText_1d405:
-	TX_FAR _OaksLabText_1d405
-	db "@"
+	text_far _OaksLabText_1d405
+	text_end
--- a/scripts/PalletTown.asm
+++ b/scripts/PalletTown.asm
@@ -158,7 +158,7 @@
 	dw PalletTownText7
 
 PalletTownText1:
-	TX_ASM
+	text_asm
 	ld a, [wcf0d]
 	and a
 	jr nz, .next
@@ -173,8 +173,8 @@
 	jp TextScriptEnd
 
 OakAppearsText:
-	TX_FAR _OakAppearsText
-	TX_ASM
+	text_far _OakAppearsText
+	text_asm
 	ld c, 10
 	call DelayFrames
 	xor a
@@ -186,29 +186,29 @@
 	jp TextScriptEnd
 
 OakWalksUpText:
-	TX_FAR _OakWalksUpText
-	db "@"
+	text_far _OakWalksUpText
+	text_end
 
 PalletTownText2: ; girl
-	TX_FAR _PalletTownText2
-	db "@"
+	text_far _PalletTownText2
+	text_end
 
 PalletTownText3: ; fat man
-	TX_FAR _PalletTownText3
-	db "@"
+	text_far _PalletTownText3
+	text_end
 
 PalletTownText4: ; sign by lab
-	TX_FAR _PalletTownText4
-	db "@"
+	text_far _PalletTownText4
+	text_end
 
 PalletTownText5: ; sign by fence
-	TX_FAR _PalletTownText5
-	db "@"
+	text_far _PalletTownText5
+	text_end
 
 PalletTownText6: ; sign by Red’s house
-	TX_FAR _PalletTownText6
-	db "@"
+	text_far _PalletTownText6
+	text_end
 
 PalletTownText7: ; sign by Blue’s house
-	TX_FAR _PalletTownText7
-	db "@"
+	text_far _PalletTownText7
+	text_end
--- a/scripts/PewterCity.asm
+++ b/scripts/PewterCity.asm
@@ -193,15 +193,15 @@
 	dw PewterCityText14
 
 PewterCityText1:
-	TX_FAR _PewterCityText1
-	db "@"
+	text_far _PewterCityText1
+	text_end
 
 PewterCityText2:
-	TX_FAR _PewterCityText2
-	db "@"
+	text_far _PewterCityText2
+	text_end
 
 PewterCityText3:
-	TX_ASM
+	text_asm
 	ld hl, PewterCityText_193f1
 	call PrintText
 	call YesNoChoice
@@ -231,23 +231,23 @@
 	jp TextScriptEnd
 
 PewterCityText_193f1:
-	TX_FAR _PewterCityText_193f1
-	db "@"
+	text_far _PewterCityText_193f1
+	text_end
 
 PewterCityText_193f6:
-	TX_FAR _PewterCityText_193f6
-	db "@"
+	text_far _PewterCityText_193f6
+	text_end
 
 PewterCityText_193fb:
-	TX_FAR _PewterCityText_193fb
-	db "@"
+	text_far _PewterCityText_193fb
+	text_end
 
 PewterCityText13:
-	TX_FAR _PewterCityText13
-	db "@"
+	text_far _PewterCityText13
+	text_end
 
 PewterCityText4:
-	TX_ASM
+	text_asm
 	ld hl, PewterCityText_19427
 	call PrintText
 	call YesNoChoice
@@ -264,19 +264,19 @@
 	jp TextScriptEnd
 
 PewterCityText_19427:
-	TX_FAR _PewterCityText_19427
-	db "@"
+	text_far _PewterCityText_19427
+	text_end
 
 PewterCityText_1942c:
-	TX_FAR _PewterCityText_1942c
-	db "@"
+	text_far _PewterCityText_1942c
+	text_end
 
 PewterCityText_19431:
-	TX_FAR _PewterCityText_19431
-	db "@"
+	text_far _PewterCityText_19431
+	text_end
 
 PewterCityText5:
-	TX_ASM
+	text_asm
 	ld hl, PewterCityText_1945d
 	call PrintText
 	xor a
@@ -294,29 +294,29 @@
 	jp TextScriptEnd
 
 PewterCityText_1945d:
-	TX_FAR _PewterCityText_1945d
-	db "@"
+	text_far _PewterCityText_1945d
+	text_end
 
 PewterCityText14:
-	TX_FAR _PewterCityText14
-	db "@"
+	text_far _PewterCityText14
+	text_end
 
 PewterCityText6:
-	TX_FAR _PewterCityText6
-	db "@"
+	text_far _PewterCityText6
+	text_end
 
 PewterCityText7:
-	TX_FAR _PewterCityText7
-	db "@"
+	text_far _PewterCityText7
+	text_end
 
 PewterCityText10:
-	TX_FAR _PewterCityText10
-	db "@"
+	text_far _PewterCityText10
+	text_end
 
 PewterCityText11:
-	TX_FAR _PewterCityText11
-	db "@"
+	text_far _PewterCityText11
+	text_end
 
 PewterCityText12:
-	TX_FAR _PewterCityText12
-	db "@"
+	text_far _PewterCityText12
+	text_end
--- a/scripts/PewterGym.asm
+++ b/scripts/PewterGym.asm
@@ -99,7 +99,7 @@
 	db $ff
 
 PewterGymText1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_BROCK
 	jr z, .beginBattle
 	CheckEventReuseA EVENT_GOT_TM34
@@ -135,53 +135,53 @@
 	jp TextScriptEnd
 
 PewterGymText_5c49e:
-	TX_FAR _PewterGymText_5c49e
-	db "@"
+	text_far _PewterGymText_5c49e
+	text_end
 
 PewterGymText_5c4a3:
-	TX_FAR _PewterGymText_5c4a3
-	db "@"
+	text_far _PewterGymText_5c4a3
+	text_end
 
 PewterGymText4:
-	TX_FAR _TM34PreReceiveText
-	db "@"
+	text_far _TM34PreReceiveText
+	text_end
 
 PewterGymText5:
-	TX_FAR _ReceivedTM34Text
-	TX_SFX_ITEM_1
-	TX_FAR _TM34ExplanationText
-	db "@"
+	text_far _ReceivedTM34Text
+	sound_get_item_1
+	text_far _TM34ExplanationText
+	text_end
 
 PewterGymText6:
-	TX_FAR _TM34NoRoomText
-	db "@"
+	text_far _TM34NoRoomText
+	text_end
 
 PewterGymText_5c4bc:
-	TX_FAR _PewterGymText_5c4bc
-	TX_SFX_LEVEL_UP ; probably supposed to play SFX_GET_ITEM_1 but the wrong music bank is loaded
-	TX_FAR _PewterGymText_5c4c1
-	db "@"
+	text_far _PewterGymText_5c4bc
+	sound_level_up ; probably supposed to play SFX_GET_ITEM_1 but the wrong music bank is loaded
+	text_far _PewterGymText_5c4c1
+	text_end
 
 PewterGymText2:
-	TX_ASM
+	text_asm
 	ld hl, PewterGymTrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 PewterGymBattleText1:
-	TX_FAR _PewterGymBattleText1
-	db "@"
+	text_far _PewterGymBattleText1
+	text_end
 
 PewterGymEndBattleText1:
-	TX_FAR _PewterGymEndBattleText1
-	db "@"
+	text_far _PewterGymEndBattleText1
+	text_end
 
 PewterGymAfterBattleText1:
-	TX_FAR _PewterGymAfterBattleText1
-	db "@"
+	text_far _PewterGymAfterBattleText1
+	text_end
 
 PewterGymText3:
-	TX_ASM
+	text_asm
 	ld a, [wBeatGymFlags]
 	bit 0, a
 	jr nz, .asm_5c50c
@@ -208,21 +208,21 @@
 	jp TextScriptEnd
 
 PewterGymText_5c515:
-	TX_FAR _PewterGymText_5c515
-	db "@"
+	text_far _PewterGymText_5c515
+	text_end
 
 PewterGymText_5c51a:
-	TX_FAR _PewterGymText_5c51a
-	db "@"
+	text_far _PewterGymText_5c51a
+	text_end
 
 PewterGymText_5c51f:
-	TX_FAR _PewterGymText_5c51f
-	db "@"
+	text_far _PewterGymText_5c51f
+	text_end
 
 PewterGymText_5c524:
-	TX_FAR _PewterGymText_5c524
-	db "@"
+	text_far _PewterGymText_5c524
+	text_end
 
 PewterGymText_5c529:
-	TX_FAR _PewterGymText_5c529
-	db "@"
+	text_far _PewterGymText_5c529
+	text_end
--- a/scripts/PewterMart.asm
+++ b/scripts/PewterMart.asm
@@ -10,19 +10,19 @@
 	dw PewterMartText3
 
 PewterMartText2:
-	TX_ASM
+	text_asm
 	ld hl, .Text
 	call PrintText
 	jp TextScriptEnd
 .Text
-	TX_FAR _PewterMartText2
-	db "@"
+	text_far _PewterMartText2
+	text_end
 
 PewterMartText3:
-	TX_ASM
+	text_asm
 	ld hl, .Text
 	call PrintText
 	jp TextScriptEnd
 .Text
-	TX_FAR _PewterMartText3
-	db "@"
+	text_far _PewterMartText3
+	text_end
--- a/scripts/PewterNidoranHouse.asm
+++ b/scripts/PewterNidoranHouse.asm
@@ -7,8 +7,8 @@
 	dw PewterHouse1Text3
 
 PewterHouse1Text1:
-	TX_FAR _PewterHouse1Text1
-	TX_ASM
+	text_far _PewterHouse1Text1
+	text_asm
 	ld a, NIDORAN_M
 	call PlayCry
 	call WaitForSoundToFinish
@@ -15,9 +15,9 @@
 	jp TextScriptEnd
 
 PewterHouse1Text2:
-	TX_FAR _PewterHouse1Text2
-	db "@"
+	text_far _PewterHouse1Text2
+	text_end
 
 PewterHouse1Text3:
-	TX_FAR _PewterHouse1Text3
-	db "@"
+	text_far _PewterHouse1Text3
+	text_end
--- a/scripts/PewterPokecenter.asm
+++ b/scripts/PewterPokecenter.asm
@@ -9,14 +9,14 @@
 	dw PewterTradeNurseText
 
 PewterHealNurseText:
-	TX_POKECENTER_NURSE
+	script_pokecenter_nurse
 
 PewterPokecenterText2:
-	TX_FAR _PewterPokecenterText2
-	db "@"
+	text_far _PewterPokecenterText2
+	text_end
 
 PewterJigglypuffText:
-	TX_ASM
+	text_asm
 	ld a, $1
 	ld [wDoNotWaitForButtonPressAfterDisplayingText], a
 	ld hl, .Text
@@ -71,8 +71,8 @@
 	jp TextScriptEnd
 
 .Text
-	TX_FAR _PewterJigglypuffText
-	db "@"
+	text_far _PewterJigglypuffText
+	text_end
 
 JigglypuffFacingDirections:
 	db $30 | SPRITE_FACING_DOWN
@@ -82,4 +82,4 @@
 JigglypuffFacingDirectionsEnd:
 
 PewterTradeNurseText:
-	TX_CABLE_CLUB_RECEPTIONIST
+	script_cable_club_receptionist
--- a/scripts/PewterSpeechHouse.asm
+++ b/scripts/PewterSpeechHouse.asm
@@ -6,9 +6,9 @@
 	dw PewterHouse2Text2
 
 PewterHouse2Text1:
-	TX_FAR _PewterHouse2Text1
-	db "@"
+	text_far _PewterHouse2Text1
+	text_end
 
 PewterHouse2Text2:
-	TX_FAR _PewterHouse2Text2
-	db "@"
+	text_far _PewterHouse2Text2
+	text_end
--- a/scripts/PokemonFanClub.asm
+++ b/scripts/PokemonFanClub.asm
@@ -23,7 +23,7 @@
 
 FanClubText1:
 ; pikachu fan
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_PIKACHU_FAN_BOAST
 	jr nz, .mineisbetter
 	ld hl, .normaltext
@@ -38,16 +38,16 @@
 	jp TextScriptEnd
 
 .normaltext
-	TX_FAR PikachuFanText
-	db "@"
+	text_far PikachuFanText
+	text_end
 
 .bettertext
-	TX_FAR PikachuFanBetterText
-	db "@"
+	text_far PikachuFanBetterText
+	text_end
 
 FanClubText2:
 ; seel fan
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_SEEL_FAN_BOAST
 	jr nz, .mineisbetter
 	ld hl, .normaltext
@@ -62,16 +62,16 @@
 	jp TextScriptEnd
 
 .normaltext
-	TX_FAR SeelFanText
-	db "@"
+	text_far SeelFanText
+	text_end
 
 .bettertext
-	TX_FAR SeelFanBetterText
-	db "@"
+	text_far SeelFanBetterText
+	text_end
 
 FanClubText3:
 ; pikachu
-	TX_ASM
+	text_asm
 	ld hl, .text
 	call PrintText
 	ld a, PIKACHU
@@ -80,12 +80,12 @@
 	jp TextScriptEnd
 
 .text
-	TX_FAR FanClubPikachuText
-	db "@"
+	text_far FanClubPikachuText
+	text_end
 
 FanClubText4:
 ; seel
-	TX_ASM
+	text_asm
 	ld hl, .text
 	call PrintText
 	ld a, SEEL
@@ -94,12 +94,12 @@
 	jp TextScriptEnd
 
 .text
-	TX_FAR FanClubSeelText
-	db "@"
+	text_far FanClubSeelText
+	text_end
 
 FanClubText5:
 ; chair
-	TX_ASM
+	text_asm
 	call FanClubBikeInBag
 	jr nz, .nothingleft
 
@@ -135,39 +135,39 @@
 	jp TextScriptEnd
 
 .meetchairtext
-	TX_FAR FanClubMeetChairText
-	db "@"
+	text_far FanClubMeetChairText
+	text_end
 
 .storytext
-	TX_FAR FanClubChairStoryText
-	db "@"
+	text_far FanClubChairStoryText
+	text_end
 
 .receivedvouchertext
-	TX_FAR ReceivedBikeVoucherText
-	TX_SFX_KEY_ITEM
-	TX_FAR ExplainBikeVoucherText
-	db "@"
+	text_far ReceivedBikeVoucherText
+	sound_get_key_item
+	text_far ExplainBikeVoucherText
+	text_end
 
 .nostorytext
-	TX_FAR FanClubNoStoryText
-	db "@"
+	text_far FanClubNoStoryText
+	text_end
 
 .finaltext
-	TX_FAR FanClubChairFinalText
-	db "@"
+	text_far FanClubChairFinalText
+	text_end
 
 .bagfulltext
-	TX_FAR FanClubBagFullText
-	db "@"
+	text_far FanClubBagFullText
+	text_end
 
 FanClubText6:
-	TX_FAR _FanClubText6
-	db "@"
+	text_far _FanClubText6
+	text_end
 
 FanClubText7:
-	TX_FAR _FanClubText7
-	db "@"
+	text_far _FanClubText7
+	text_end
 
 FanClubText8:
-	TX_FAR _FanClubText8
-	db "@"
+	text_far _FanClubText8
+	text_end
--- a/scripts/PokemonMansion1F.asm
+++ b/scripts/PokemonMansion1F.asm
@@ -78,25 +78,25 @@
 	db $ff
 
 Mansion1Text1:
-	TX_ASM
+	text_asm
 	ld hl, Mansion1TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Mansion1BattleText2:
-	TX_FAR _Mansion1BattleText2
-	db "@"
+	text_far _Mansion1BattleText2
+	text_end
 
 Mansion1EndBattleText2:
-	TX_FAR _Mansion1EndBattleText2
-	db "@"
+	text_far _Mansion1EndBattleText2
+	text_end
 
 Mansion1AfterBattleText2:
-	TX_FAR _Mansion1AfterBattleText2
-	db "@"
+	text_far _Mansion1AfterBattleText2
+	text_end
 
 Mansion1Text4:
-	TX_ASM
+	text_asm
 	ld hl, MansionSwitchText
 	call PrintText
 	call YesNoChoice
@@ -122,13 +122,13 @@
 	jp TextScriptEnd
 
 MansionSwitchText:
-	TX_FAR _MansionSwitchText
-	db "@"
+	text_far _MansionSwitchText
+	text_end
 
 MansionSwitchPressedText:
-	TX_FAR _MansionSwitchPressedText
-	db "@"
+	text_far _MansionSwitchPressedText
+	text_end
 
 MansionSwitchNotPressedText:
-	TX_FAR _MansionSwitchNotPressedText
-	db "@"
+	text_far _MansionSwitchNotPressedText
+	text_end
--- a/scripts/PokemonMansion2F.asm
+++ b/scripts/PokemonMansion2F.asm
@@ -75,34 +75,34 @@
 	db $ff
 
 Mansion2Text1:
-	TX_ASM
+	text_asm
 	ld hl, Mansion2TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Mansion2BattleText1:
-	TX_FAR _Mansion2BattleText1
-	db "@"
+	text_far _Mansion2BattleText1
+	text_end
 
 Mansion2EndBattleText1:
-	TX_FAR _Mansion2EndBattleText1
-	db "@"
+	text_far _Mansion2EndBattleText1
+	text_end
 
 Mansion2AfterBattleText1:
-	TX_FAR _Mansion2AfterBattleText1
-	db "@"
+	text_far _Mansion2AfterBattleText1
+	text_end
 
 Mansion2Text3:
-	TX_FAR _Mansion2Text3
-	db "@"
+	text_far _Mansion2Text3
+	text_end
 
 Mansion2Text4:
-	TX_FAR _Mansion2Text4
-	db "@"
+	text_far _Mansion2Text4
+	text_end
 
 Mansion3Text6:
 Mansion2Text5:
-	TX_ASM
+	text_asm
 	ld hl, Mansion2Text_520c2
 	call PrintText
 	call YesNoChoice
@@ -128,13 +128,13 @@
 	jp TextScriptEnd
 
 Mansion2Text_520c2:
-	TX_FAR _Mansion2Text_520c2
-	db "@"
+	text_far _Mansion2Text_520c2
+	text_end
 
 Mansion2Text_520c7:
-	TX_FAR _Mansion2Text_520c7
-	db "@"
+	text_far _Mansion2Text_520c7
+	text_end
 
 Mansion2Text_520cc:
-	TX_FAR _Mansion2Text_520cc
-	db "@"
+	text_far _Mansion2Text_520cc
+	text_end
--- a/scripts/PokemonMansion3F.asm
+++ b/scripts/PokemonMansion3F.asm
@@ -111,41 +111,41 @@
 	db $ff
 
 Mansion3Text1:
-	TX_ASM
+	text_asm
 	ld hl, Mansion3TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Mansion3Text2:
-	TX_ASM
+	text_asm
 	ld hl, Mansion3TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Mansion3BattleText1:
-	TX_FAR _Mansion3BattleText1
-	db "@"
+	text_far _Mansion3BattleText1
+	text_end
 
 Mansion3EndBattleText1:
-	TX_FAR _Mansion3EndBattleText1
-	db "@"
+	text_far _Mansion3EndBattleText1
+	text_end
 
 Mansion3AfterBattleText1:
-	TX_FAR _Mansion3AfterBattleText1
-	db "@"
+	text_far _Mansion3AfterBattleText1
+	text_end
 
 Mansion3BattleText2:
-	TX_FAR _Mansion3BattleText2
-	db "@"
+	text_far _Mansion3BattleText2
+	text_end
 
 Mansion3EndBattleText2:
-	TX_FAR _Mansion3EndBattleText2
-	db "@"
+	text_far _Mansion3EndBattleText2
+	text_end
 
 Mansion3AfterBattleText2:
-	TX_FAR _Mansion3AfterBattleText2
-	db "@"
+	text_far _Mansion3AfterBattleText2
+	text_end
 
 Mansion3Text5:
-	TX_FAR _Mansion3Text5
-	db "@"
+	text_far _Mansion3Text5
+	text_end
--- a/scripts/PokemonMansionB1F.asm
+++ b/scripts/PokemonMansionB1F.asm
@@ -90,41 +90,41 @@
 	db $ff
 
 Mansion4Text1:
-	TX_ASM
+	text_asm
 	ld hl, Mansion4TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Mansion4Text2:
-	TX_ASM
+	text_asm
 	ld hl, Mansion4TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Mansion4BattleText1:
-	TX_FAR _Mansion4BattleText1
-	db "@"
+	text_far _Mansion4BattleText1
+	text_end
 
 Mansion4EndBattleText1:
-	TX_FAR _Mansion4EndBattleText1
-	db "@"
+	text_far _Mansion4EndBattleText1
+	text_end
 
 Mansion4AfterBattleText1:
-	TX_FAR _Mansion4AfterBattleText1
-	db "@"
+	text_far _Mansion4AfterBattleText1
+	text_end
 
 Mansion4BattleText2:
-	TX_FAR _Mansion4BattleText2
-	db "@"
+	text_far _Mansion4BattleText2
+	text_end
 
 Mansion4EndBattleText2:
-	TX_FAR _Mansion4EndBattleText2
-	db "@"
+	text_far _Mansion4EndBattleText2
+	text_end
 
 Mansion4AfterBattleText2:
-	TX_FAR _Mansion4AfterBattleText2
-	db "@"
+	text_far _Mansion4AfterBattleText2
+	text_end
 
 Mansion4Text7:
-	TX_FAR _Mansion4Text7
-	db "@"
+	text_far _Mansion4Text7
+	text_end
--- a/scripts/PokemonTower1F.asm
+++ b/scripts/PokemonTower1F.asm
@@ -9,21 +9,21 @@
 	dw PokemonTower1Text5
 
 PokemonTower1Text1:
-	TX_FAR _PokemonTower1Text1
-	db "@"
+	text_far _PokemonTower1Text1
+	text_end
 
 PokemonTower1Text2:
-	TX_FAR _PokemonTower1Text2
-	db "@"
+	text_far _PokemonTower1Text2
+	text_end
 
 PokemonTower1Text3:
-	TX_FAR _PokemonTower1Text3
-	db "@"
+	text_far _PokemonTower1Text3
+	text_end
 
 PokemonTower1Text4:
-	TX_FAR _PokemonTower1Text4
-	db "@"
+	text_far _PokemonTower1Text4
+	text_end
 
 PokemonTower1Text5:
-	TX_FAR _PokemonTower1Text5
-	db "@"
+	text_far _PokemonTower1Text5
+	text_end
--- a/scripts/PokemonTower2F.asm
+++ b/scripts/PokemonTower2F.asm
@@ -127,7 +127,7 @@
 	dw PokemonTower2Text2
 
 PokemonTower2Text1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_POKEMON_TOWER_RIVAL
 	jr z, .asm_16f24
 	ld hl, PokemonTower2Text_6063c
@@ -168,21 +168,21 @@
 	jp TextScriptEnd
 
 PokemonTower2Text_6062d:
-	TX_FAR _PokemonTower2Text_6062d
-	db "@"
+	text_far _PokemonTower2Text_6062d
+	text_end
 
 PokemonTower2Text_60632:
-	TX_FAR _PokemonTower2Text_60632
-	db "@"
+	text_far _PokemonTower2Text_60632
+	text_end
 
 PokemonTower2Text_60637:
-	TX_FAR _PokemonTower2Text_60637
-	db "@"
+	text_far _PokemonTower2Text_60637
+	text_end
 
 PokemonTower2Text_6063c:
-	TX_FAR _PokemonTower2Text_6063c
-	db "@"
+	text_far _PokemonTower2Text_6063c
+	text_end
 
 PokemonTower2Text2:
-	TX_FAR _PokemonTower2Text2
-	db "@"
+	text_far _PokemonTower2Text2
+	text_end
--- a/scripts/PokemonTower3F.asm
+++ b/scripts/PokemonTower3F.asm
@@ -47,55 +47,55 @@
 	db $ff
 
 PokemonTower3Text1:
-	TX_ASM
+	text_asm
 	ld hl, PokemonTower3TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 PokemonTower3Text2:
-	TX_ASM
+	text_asm
 	ld hl, PokemonTower3TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 PokemonTower3Text3:
-	TX_ASM
+	text_asm
 	ld hl, PokemonTower3TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 PokemonTower3BattleText1:
-	TX_FAR _PokemonTower3BattleText1
-	db "@"
+	text_far _PokemonTower3BattleText1
+	text_end
 
 PokemonTower3EndBattleText1:
-	TX_FAR _PokemonTower3EndBattleText1
-	db "@"
+	text_far _PokemonTower3EndBattleText1
+	text_end
 
 PokemonTower3AfterBattleText1:
-	TX_FAR _PokemonTower3AfterBattleText1
-	db "@"
+	text_far _PokemonTower3AfterBattleText1
+	text_end
 
 PokemonTower3BattleText2:
-	TX_FAR _PokemonTower3BattleText2
-	db "@"
+	text_far _PokemonTower3BattleText2
+	text_end
 
 PokemonTower3EndBattleText2:
-	TX_FAR _PokemonTower3EndBattleText2
-	db "@"
+	text_far _PokemonTower3EndBattleText2
+	text_end
 
 PokemonTower3AfterBattleText2:
-	TX_FAR _PokemonTower3AfterBattleText2
-	db "@"
+	text_far _PokemonTower3AfterBattleText2
+	text_end
 
 PokemonTower3BattleText3:
-	TX_FAR _PokemonTower3BattleText3
-	db "@"
+	text_far _PokemonTower3BattleText3
+	text_end
 
 PokemonTower3EndBattleText3:
-	TX_FAR _PokemonTower3EndBattleText3
-	db "@"
+	text_far _PokemonTower3EndBattleText3
+	text_end
 
 PokemonTower3AfterBattleText3:
-	TX_FAR _PokemonTower3AfterBattleText3
-	db "@"
+	text_far _PokemonTower3AfterBattleText3
+	text_end
--- a/scripts/PokemonTower4F.asm
+++ b/scripts/PokemonTower4F.asm
@@ -50,55 +50,55 @@
 	db $ff
 
 PokemonTower4Text1:
-	TX_ASM
+	text_asm
 	ld hl, PokemonTower4TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 PokemonTower4Text2:
-	TX_ASM
+	text_asm
 	ld hl, PokemonTower4TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 PokemonTower4Text3:
-	TX_ASM
+	text_asm
 	ld hl, PokemonTower4TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 PokemonTower4BattleText1:
-	TX_FAR _PokemonTower4BattleText1
-	db "@"
+	text_far _PokemonTower4BattleText1
+	text_end
 
 PokemonTower4EndBattleText1:
-	TX_FAR _PokemonTower4EndBattleText1
-	db "@"
+	text_far _PokemonTower4EndBattleText1
+	text_end
 
 PokemonTower4AfterBattleText1:
-	TX_FAR _PokemonTower4AfterBattleText1
-	db "@"
+	text_far _PokemonTower4AfterBattleText1
+	text_end
 
 PokemonTower4BattleText2:
-	TX_FAR _PokemonTower4BattleText2
-	db "@"
+	text_far _PokemonTower4BattleText2
+	text_end
 
 PokemonTower4EndBattleText2:
-	TX_FAR _PokemonTower4EndBattleText2
-	db "@"
+	text_far _PokemonTower4EndBattleText2
+	text_end
 
 PokemonTower4AfterBattleText2:
-	TX_FAR _PokemonTower4AfterBattleText2
-	db "@"
+	text_far _PokemonTower4AfterBattleText2
+	text_end
 
 PokemonTower4BattleText3:
-	TX_FAR _PokemonTower4BattleText3
-	db "@"
+	text_far _PokemonTower4BattleText3
+	text_end
 
 PokemonTower4EndBattleText3:
-	TX_FAR _PokemonTower4EndBattleText3
-	db "@"
+	text_far _PokemonTower4EndBattleText3
+	text_end
 
 PokemonTower4AfterBattleText3:
-	TX_FAR _PokemonTower4AfterBattleText3
-	db "@"
+	text_far _PokemonTower4AfterBattleText3
+	text_end
--- a/scripts/PokemonTower5F.asm
+++ b/scripts/PokemonTower5F.asm
@@ -96,81 +96,81 @@
 	db $ff
 
 PokemonTower5Text1:
-	TX_FAR _PokemonTower5Text1
-	db "@"
+	text_far _PokemonTower5Text1
+	text_end
 
 PokemonTower5Text2:
-	TX_ASM
+	text_asm
 	ld hl, PokemonTower5TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 PokemonTower5BattleText1:
-	TX_FAR _PokemonTower5BattleText1
-	db "@"
+	text_far _PokemonTower5BattleText1
+	text_end
 
 PokemonTower5EndBattleText1:
-	TX_FAR _PokemonTower5EndBattleText1
-	db "@"
+	text_far _PokemonTower5EndBattleText1
+	text_end
 
 PokemonTower5AfterBattleText1:
-	TX_FAR _PokemonTower5AfterBattleText1
-	db "@"
+	text_far _PokemonTower5AfterBattleText1
+	text_end
 
 PokemonTower5Text3:
-	TX_ASM
+	text_asm
 	ld hl, PokemonTower5TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 PokemonTower5BattleText2:
-	TX_FAR _PokemonTower5BattleText2
-	db "@"
+	text_far _PokemonTower5BattleText2
+	text_end
 
 PokemonTower5EndBattleText2:
-	TX_FAR _PokemonTower5EndBattleText2
-	db "@"
+	text_far _PokemonTower5EndBattleText2
+	text_end
 
 PokemonTower5AfterBattleText2:
-	TX_FAR _PokemonTower5AfterBattleText2
-	db "@"
+	text_far _PokemonTower5AfterBattleText2
+	text_end
 
 PokemonTower5Text4:
-	TX_ASM
+	text_asm
 	ld hl, PokemonTower5TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 PokemonTower5BattleText3:
-	TX_FAR _PokemonTower5BattleText3
-	db "@"
+	text_far _PokemonTower5BattleText3
+	text_end
 
 PokemonTower5EndBattleText3:
-	TX_FAR _PokemonTower5EndBattleText3
-	db "@"
+	text_far _PokemonTower5EndBattleText3
+	text_end
 
 PokemonTower5AfterBattleText3:
-	TX_FAR _PokemonTower5AfterBattleText3
-	db "@"
+	text_far _PokemonTower5AfterBattleText3
+	text_end
 
 PokemonTower5Text5:
-	TX_ASM
+	text_asm
 	ld hl, PokemonTower5TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 PokemonTower5BattleText4:
-	TX_FAR _PokemonTower5BattleText4
-	db "@"
+	text_far _PokemonTower5BattleText4
+	text_end
 
 PokemonTower5EndBattleText4:
-	TX_FAR _PokemonTower5EndBattleText4
-	db "@"
+	text_far _PokemonTower5EndBattleText4
+	text_end
 
 PokemonTower5AfterBattleText4:
-	TX_FAR _PokemonTower5AfterBattleText4
-	db "@"
+	text_far _PokemonTower5AfterBattleText4
+	text_end
 
 PokemonTower5Text7:
-	TX_FAR _PokemonTower5Text7
-	db "@"
+	text_far _PokemonTower5Text7
+	text_end
--- a/scripts/PokemonTower6F.asm
+++ b/scripts/PokemonTower6F.asm
@@ -133,25 +133,25 @@
 	db $ff
 
 PokemonTower6Text1:
-	TX_ASM
+	text_asm
 	ld hl, PokemonTower6TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 PokemonTower6Text2:
-	TX_ASM
+	text_asm
 	ld hl, PokemonTower6TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 PokemonTower6Text3:
-	TX_ASM
+	text_asm
 	ld hl, PokemonTower6TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 PokemonTower6Text7:
-	TX_ASM
+	text_asm
 	ld hl, PokemonTower2Text_60c1f
 	call PrintText
 	ld a, MAROWAK
@@ -164,49 +164,49 @@
 	jp TextScriptEnd
 
 PokemonTower2Text_60c1f:
-	TX_FAR _PokemonTower2Text_60c1f
-	db "@"
+	text_far _PokemonTower2Text_60c1f
+	text_end
 
 PokemonTower2Text_60c24:
-	TX_FAR _PokemonTower2Text_60c24
-	db "@"
+	text_far _PokemonTower2Text_60c24
+	text_end
 
 PokemonTower6BattleText1:
-	TX_FAR _PokemonTower6BattleText1
-	db "@"
+	text_far _PokemonTower6BattleText1
+	text_end
 
 PokemonTower6EndBattleText1:
-	TX_FAR _PokemonTower6EndBattleText1
-	db "@"
+	text_far _PokemonTower6EndBattleText1
+	text_end
 
 PokemonTower6AfterBattleText1:
-	TX_FAR _PokemonTower6AfterBattleText1
-	db "@"
+	text_far _PokemonTower6AfterBattleText1
+	text_end
 
 PokemonTower6BattleText2:
-	TX_FAR _PokemonTower6BattleText2
-	db "@"
+	text_far _PokemonTower6BattleText2
+	text_end
 
 PokemonTower6EndBattleText2:
-	TX_FAR _PokemonTower6EndBattleText2
-	db "@"
+	text_far _PokemonTower6EndBattleText2
+	text_end
 
 PokemonTower6AfterBattleText2:
-	TX_FAR _PokemonTower6AfterBattleText2
-	db "@"
+	text_far _PokemonTower6AfterBattleText2
+	text_end
 
 PokemonTower6BattleText3:
-	TX_FAR _PokemonTower6BattleText3
-	db "@"
+	text_far _PokemonTower6BattleText3
+	text_end
 
 PokemonTower6EndBattleText3:
-	TX_FAR _PokemonTower6EndBattleText3
-	db "@"
+	text_far _PokemonTower6EndBattleText3
+	text_end
 
 PokemonTower6AfterBattleText3:
-	TX_FAR _PokemonTower6AfterBattleText3
-	db "@"
+	text_far _PokemonTower6AfterBattleText3
+	text_end
 
 PokemonTower6Text6:
-	TX_FAR _PokemonTower6Text6
-	db "@"
+	text_far _PokemonTower6Text6
+	text_end
--- a/scripts/PokemonTower7F.asm
+++ b/scripts/PokemonTower7F.asm
@@ -234,25 +234,25 @@
 	db $ff
 
 PokemonTower7Text1:
-	TX_ASM
+	text_asm
 	ld hl, PokemonTower7TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 PokemonTower7Text2:
-	TX_ASM
+	text_asm
 	ld hl, PokemonTower7TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 PokemonTower7Text3:
-	TX_ASM
+	text_asm
 	ld hl, PokemonTower7TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 PokemonTower7FujiText:
-	TX_ASM
+	text_asm
 	ld hl, TowerRescueFujiText
 	call PrintText
 	SetEvent EVENT_RESCUED_MR_FUJI
@@ -272,41 +272,41 @@
 	jp TextScriptEnd
 
 TowerRescueFujiText:
-	TX_FAR _TowerRescueFujiText
-	db "@"
+	text_far _TowerRescueFujiText
+	text_end
 
 PokemonTower7BattleText1:
-	TX_FAR _PokemonTower7BattleText1
-	db "@"
+	text_far _PokemonTower7BattleText1
+	text_end
 
 PokemonTower7EndBattleText1:
-	TX_FAR _PokemonTower7EndBattleText1
-	db "@"
+	text_far _PokemonTower7EndBattleText1
+	text_end
 
 PokemonTower7AfterBattleText1:
-	TX_FAR _PokemonTower7AfterBattleText1
-	db "@"
+	text_far _PokemonTower7AfterBattleText1
+	text_end
 
 PokemonTower7BattleText2:
-	TX_FAR _PokemonTower7BattleText2
-	db "@"
+	text_far _PokemonTower7BattleText2
+	text_end
 
 PokemonTower7EndBattleText2:
-	TX_FAR _PokemonTower7EndBattleText2
-	db "@"
+	text_far _PokemonTower7EndBattleText2
+	text_end
 
 PokemonTower7AfterBattleText2:
-	TX_FAR _PokemonTower7AfterBattleText2
-	db "@"
+	text_far _PokemonTower7AfterBattleText2
+	text_end
 
 PokemonTower7BattleText3:
-	TX_FAR _PokemonTower7BattleText3
-	db "@"
+	text_far _PokemonTower7BattleText3
+	text_end
 
 PokemonTower7EndBattleText3:
-	TX_FAR _PokemonTower7EndBattleText3
-	db "@"
+	text_far _PokemonTower7EndBattleText3
+	text_end
 
 PokemonTower7AfterBattleText3:
-	TX_FAR _PokemonTower7AfterBattleText3
-	db "@"
+	text_far _PokemonTower7AfterBattleText3
+	text_end
--- a/scripts/PowerPlant.asm
+++ b/scripts/PowerPlant.asm
@@ -118,57 +118,57 @@
 	jp TextScriptEnd
 
 Voltorb0Text:
-	TX_ASM
+	text_asm
 	ld hl, Voltorb0TrainerHeader
 	jr InitVoltorbBattle
 
 Voltorb1Text:
-	TX_ASM
+	text_asm
 	ld hl, Voltorb1TrainerHeader
 	jr InitVoltorbBattle
 
 Voltorb2Text:
-	TX_ASM
+	text_asm
 	ld hl, Voltorb2TrainerHeader
 	jr InitVoltorbBattle
 
 Voltorb3Text:
-	TX_ASM
+	text_asm
 	ld hl, Voltorb3TrainerHeader
 	jr InitVoltorbBattle
 
 Voltorb4Text:
-	TX_ASM
+	text_asm
 	ld hl, Voltorb4TrainerHeader
 	jr InitVoltorbBattle
 
 Voltorb5Text:
-	TX_ASM
+	text_asm
 	ld hl, Voltorb5TrainerHeader
 	jr InitVoltorbBattle
 
 Voltorb6Text:
-	TX_ASM
+	text_asm
 	ld hl, Voltorb6TrainerHeader
 	jr InitVoltorbBattle
 
 Voltorb7Text:
-	TX_ASM
+	text_asm
 	ld hl, Voltorb7TrainerHeader
 	jr InitVoltorbBattle
 
 ZapdosText:
-	TX_ASM
+	text_asm
 	ld hl, ZapdosTrainerHeader
 	jr InitVoltorbBattle
 
 VoltorbBattleText:
-	TX_FAR _VoltorbBattleText
-	db "@"
+	text_far _VoltorbBattleText
+	text_end
 
 ZapdosBattleText:
-	TX_FAR _ZapdosBattleText
-	TX_ASM
+	text_far _ZapdosBattleText
+	text_asm
 	ld a, ZAPDOS
 	call PlayCry
 	call WaitForSoundToFinish
--- a/scripts/RedsHouse1F.asm
+++ b/scripts/RedsHouse1F.asm
@@ -6,7 +6,7 @@
 	dw RedsHouse1FText2
 
 RedsHouse1FText1: ; Mom
-	TX_ASM
+	text_asm
 	ld a, [wd72e]
 	bit 3, a
 	jr nz, .heal ; if player has received a Pokémon from Oak, heal team
@@ -19,8 +19,8 @@
 	jp TextScriptEnd
 
 MomWakeUpText:
-	TX_FAR _MomWakeUpText
-	db "@"
+	text_far _MomWakeUpText
+	text_end
 
 MomHealPokemon:
 	ld hl, MomHealText1
@@ -43,14 +43,14 @@
 	jp PrintText
 
 MomHealText1:
-	TX_FAR _MomHealText1
-	db "@"
+	text_far _MomHealText1
+	text_end
 MomHealText2:
-	TX_FAR _MomHealText2
-	db "@"
+	text_far _MomHealText2
+	text_end
 
 RedsHouse1FText2: ; TV
-	TX_ASM
+	text_asm
 	ld a, [wSpriteStateData1 + 9]
 	cp SPRITE_FACING_UP
 	ld hl, TVWrongSideText
@@ -61,9 +61,9 @@
 	jp TextScriptEnd
 
 StandByMeText:
-	TX_FAR _StandByMeText
-	db "@"
+	text_far _StandByMeText
+	text_end
 
 TVWrongSideText:
-	TX_FAR _TVWrongSideText
-	db "@"
+	text_far _TVWrongSideText
+	text_end
--- a/scripts/RedsHouse2F.asm
+++ b/scripts/RedsHouse2F.asm
@@ -21,4 +21,4 @@
 	ret
 
 RedsHouse2F_TextPointers:
-	db "@"
+	text_end
--- a/scripts/RockTunnel1F.asm
+++ b/scripts/RockTunnel1F.asm
@@ -88,37 +88,37 @@
 	db $ff
 
 RockTunnel1Text1:
-	TX_ASM
+	text_asm
 	ld hl, RockTunnel1TrainerHeader0
 	jr RockTunnel1TalkToTrainer
 
 RockTunnel1Text2:
-	TX_ASM
+	text_asm
 	ld hl, RockTunnel1TrainerHeader1
 	jr RockTunnel1TalkToTrainer
 
 RockTunnel1Text3:
-	TX_ASM
+	text_asm
 	ld hl, RockTunnel1TrainerHeader2
 	jr RockTunnel1TalkToTrainer
 
 RockTunnel1Text4:
-	TX_ASM
+	text_asm
 	ld hl, RockTunnel1TrainerHeader3
 	jr RockTunnel1TalkToTrainer
 
 RockTunnel1Text5:
-	TX_ASM
+	text_asm
 	ld hl, RockTunnel1TrainerHeader4
 	jr RockTunnel1TalkToTrainer
 
 RockTunnel1Text6:
-	TX_ASM
+	text_asm
 	ld hl, RockTunnel1TrainerHeader5
 	jr RockTunnel1TalkToTrainer
 
 RockTunnel1Text7:
-	TX_ASM
+	text_asm
 	ld hl, RockTunnel1TrainerHeader6
 RockTunnel1TalkToTrainer:
 	call TalkToTrainer
@@ -125,89 +125,89 @@
 	jp TextScriptEnd
 
 RockTunnel1BattleText1:
-	TX_FAR _RockTunnel1BattleText1
-	db "@"
+	text_far _RockTunnel1BattleText1
+	text_end
 
 RockTunnel1EndBattleText1:
-	TX_FAR _RockTunnel1EndBattleText1
-	db "@"
+	text_far _RockTunnel1EndBattleText1
+	text_end
 
 RockTunnel1AfterBattleText1:
-	TX_FAR _RockTunnel1AfterBattleText1
-	db "@"
+	text_far _RockTunnel1AfterBattleText1
+	text_end
 
 RockTunnel1BattleText2:
-	TX_FAR _RockTunnel1BattleText2
-	db "@"
+	text_far _RockTunnel1BattleText2
+	text_end
 
 RockTunnel1EndBattleText2:
-	TX_FAR _RockTunnel1EndBattleText2
-	db "@"
+	text_far _RockTunnel1EndBattleText2
+	text_end
 
 RockTunnel1AfterBattleText2:
-	TX_FAR _RockTunnel1AfterBattleText2
-	db "@"
+	text_far _RockTunnel1AfterBattleText2
+	text_end
 
 RockTunnel1BattleText3:
-	TX_FAR _RockTunnel1BattleText3
-	db "@"
+	text_far _RockTunnel1BattleText3
+	text_end
 
 RockTunnel1EndBattleText3:
-	TX_FAR _RockTunnel1EndBattleText3
-	db "@"
+	text_far _RockTunnel1EndBattleText3
+	text_end
 
 RockTunnel1AfterBattleText3:
-	TX_FAR _RockTunnel1AfterBattleText3
-	db "@"
+	text_far _RockTunnel1AfterBattleText3
+	text_end
 
 RockTunnel1BattleText4:
-	TX_FAR _RockTunnel1BattleText4
-	db "@"
+	text_far _RockTunnel1BattleText4
+	text_end
 
 RockTunnel1EndBattleText4:
-	TX_FAR _RockTunnel1EndBattleText4
-	db "@"
+	text_far _RockTunnel1EndBattleText4
+	text_end
 
 RockTunnel1AfterBattleText4:
-	TX_FAR _RockTunnel1AfterBattleText4
-	db "@"
+	text_far _RockTunnel1AfterBattleText4
+	text_end
 
 RockTunnel1BattleText5:
-	TX_FAR _RockTunnel1BattleText5
-	db "@"
+	text_far _RockTunnel1BattleText5
+	text_end
 
 RockTunnel1EndBattleText5:
-	TX_FAR _RockTunnel1EndBattleText5
-	db "@"
+	text_far _RockTunnel1EndBattleText5
+	text_end
 
 RockTunnel1AfterBattleText5:
-	TX_FAR _RockTunnel1AfterBattleText5
-	db "@"
+	text_far _RockTunnel1AfterBattleText5
+	text_end
 
 RockTunnel1BattleText6:
-	TX_FAR _RockTunnel1BattleText6
-	db "@"
+	text_far _RockTunnel1BattleText6
+	text_end
 
 RockTunnel1EndBattleText6:
-	TX_FAR _RockTunnel1EndBattleText6
-	db "@"
+	text_far _RockTunnel1EndBattleText6
+	text_end
 
 RockTunnel1AfterBattleText6:
-	TX_FAR _RockTunnel1AfterBattleText6
-	db "@"
+	text_far _RockTunnel1AfterBattleText6
+	text_end
 
 RockTunnel1BattleText7:
-	TX_FAR _RockTunnel1BattleText7
-	db "@"
+	text_far _RockTunnel1BattleText7
+	text_end
 
 RockTunnel1EndBattleText7:
-	TX_FAR _RockTunnel1EndBattleText7
-	db "@"
+	text_far _RockTunnel1EndBattleText7
+	text_end
 
 RockTunnel1AfterBattleText7:
-	TX_FAR _RockTunnel1AfterBattleText7
-	db "@"
+	text_far _RockTunnel1AfterBattleText7
+	text_end
 
 RockTunnel1Text8:
-	TX_FAR _RockTunnel1Text8
-	db "@"
+	text_far _RockTunnel1Text8
+	text_end
--- a/scripts/RockTunnelB1F.asm
+++ b/scripts/RockTunnelB1F.asm
@@ -97,145 +97,145 @@
 	db $ff
 
 RockTunnel2Text1:
-	TX_ASM
+	text_asm
 	ld hl, RockTunnel2TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 RockTunnel2Text2:
-	TX_ASM
+	text_asm
 	ld hl, RockTunnel2TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 RockTunnel2Text3:
-	TX_ASM
+	text_asm
 	ld hl, RockTunnel2TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 RockTunnel2Text4:
-	TX_ASM
+	text_asm
 	ld hl, RockTunnel2TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 RockTunnel2Text5:
-	TX_ASM
+	text_asm
 	ld hl, RockTunnel2TrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 RockTunnel2Text6:
-	TX_ASM
+	text_asm
 	ld hl, RockTunnel2TrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 RockTunnel2Text7:
-	TX_ASM
+	text_asm
 	ld hl, RockTunnel2TrainerHeader6
 	call TalkToTrainer
 	jp TextScriptEnd
 
 RockTunnel2Text8:
-	TX_ASM
+	text_asm
 	ld hl, RockTunnel2TrainerHeader7
 	call TalkToTrainer
 	jp TextScriptEnd
 
 RockTunnel2BattleText2:
-	TX_FAR _RockTunnel2BattleText2
-	db "@"
+	text_far _RockTunnel2BattleText2
+	text_end
 
 RockTunnel2EndBattleText2:
-	TX_FAR _RockTunnel2EndBattleText2
-	db "@"
+	text_far _RockTunnel2EndBattleText2
+	text_end
 
 RockTunnel2AfterBattleText2:
-	TX_FAR _RockTunnel2AfterBattleText2
-	db "@"
+	text_far _RockTunnel2AfterBattleText2
+	text_end
 
 RockTunnel2BattleText3:
-	TX_FAR _RockTunnel2BattleText3
-	db "@"
+	text_far _RockTunnel2BattleText3
+	text_end
 
 RockTunnel2EndBattleText3:
-	TX_FAR _RockTunnel2EndBattleText3
-	db "@"
+	text_far _RockTunnel2EndBattleText3
+	text_end
 
 RockTunnel2AfterBattleText3:
-	TX_FAR _RockTunnel2AfterBattleText3
-	db "@"
+	text_far _RockTunnel2AfterBattleText3
+	text_end
 
 RockTunnel2BattleText4:
-	TX_FAR _RockTunnel2BattleText4
-	db "@"
+	text_far _RockTunnel2BattleText4
+	text_end
 
 RockTunnel2EndBattleText4:
-	TX_FAR _RockTunnel2EndBattleText4
-	db "@"
+	text_far _RockTunnel2EndBattleText4
+	text_end
 
 RockTunnel2AfterBattleText4:
-	TX_FAR _RockTunnel2AfterBattleText4
-	db "@"
+	text_far _RockTunnel2AfterBattleText4
+	text_end
 
 RockTunnel2BattleText5:
-	TX_FAR _RockTunnel2BattleText5
-	db "@"
+	text_far _RockTunnel2BattleText5
+	text_end
 
 RockTunnel2EndBattleText5:
-	TX_FAR _RockTunnel2EndBattleText5
-	db "@"
+	text_far _RockTunnel2EndBattleText5
+	text_end
 
 RockTunnel2AfterBattleText5:
-	TX_FAR _RockTunnel2AfterBattleText5
-	db "@"
+	text_far _RockTunnel2AfterBattleText5
+	text_end
 
 RockTunnel2BattleText6:
-	TX_FAR _RockTunnel2BattleText6
-	db "@"
+	text_far _RockTunnel2BattleText6
+	text_end
 
 RockTunnel2EndBattleText6:
-	TX_FAR _RockTunnel2EndBattleText6
-	db "@"
+	text_far _RockTunnel2EndBattleText6
+	text_end
 
 RockTunnel2AfterBattleText6:
-	TX_FAR _RockTunnel2AfterBattleText6
-	db "@"
+	text_far _RockTunnel2AfterBattleText6
+	text_end
 
 RockTunnel2BattleText7:
-	TX_FAR _RockTunnel2BattleText7
-	db "@"
+	text_far _RockTunnel2BattleText7
+	text_end
 
 RockTunnel2EndBattleText7:
-	TX_FAR _RockTunnel2EndBattleText7
-	db "@"
+	text_far _RockTunnel2EndBattleText7
+	text_end
 
 RockTunnel2AfterBattleText7:
-	TX_FAR _RockTunnel2AfterBattleText7
-	db "@"
+	text_far _RockTunnel2AfterBattleText7
+	text_end
 
 RockTunnel2BattleText8:
-	TX_FAR _RockTunnel2BattleText8
-	db "@"
+	text_far _RockTunnel2BattleText8
+	text_end
 
 RockTunnel2EndBattleText8:
-	TX_FAR _RockTunnel2EndBattleText8
-	db "@"
+	text_far _RockTunnel2EndBattleText8
+	text_end
 
 RockTunnel2AfterBattleText8:
-	TX_FAR _RockTunnel2AfterBattleText8
-	db "@"
+	text_far _RockTunnel2AfterBattleText8
+	text_end
 
 RockTunnel2BattleText9:
-	TX_FAR _RockTunnel2BattleText9
-	db "@"
+	text_far _RockTunnel2BattleText9
+	text_end
 
 RockTunnel2EndBattleText9:
-	TX_FAR _RockTunnel2EndBattleText9
-	db "@"
+	text_far _RockTunnel2EndBattleText9
+	text_end
 
 RockTunnel2AfterBattleText9:
-	TX_FAR _RockTunnel2AfterBattleText9
-	db "@"
+	text_far _RockTunnel2AfterBattleText9
+	text_end
--- a/scripts/RockTunnelPokecenter.asm
+++ b/scripts/RockTunnelPokecenter.asm
@@ -12,12 +12,12 @@
 	db $ff
 
 RockTunnelPokecenterText2:
-	TX_FAR _RockTunnelPokecenterText2
-	db "@"
+	text_far _RockTunnelPokecenterText2
+	text_end
 
 RockTunnelPokecenterText3:
-	TX_FAR _RockTunnelPokecenterText3
-	db "@"
+	text_far _RockTunnelPokecenterText3
+	text_end
 
 RockTunnelTradeNurseText:
 	db $f6
--- a/scripts/RocketHideoutB1F.asm
+++ b/scripts/RocketHideoutB1F.asm
@@ -92,98 +92,98 @@
 	db $ff
 
 RocketHideout1Text1:
-	TX_ASM
+	text_asm
 	ld hl, RocketHideout1TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 RocketHideout1Text2:
-	TX_ASM
+	text_asm
 	ld hl, RocketHideout1TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 RocketHideout1Text3:
-	TX_ASM
+	text_asm
 	ld hl, RocketHideout1TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 RocketHideout1Text4:
-	TX_ASM
+	text_asm
 	ld hl, RocketHideout1TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 RocketHideout1Text5:
-	TX_ASM
+	text_asm
 	ld hl, RocketHideout1TrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 RocketHideout1EndBattleText6:
-	TX_FAR _RocketHideout1EndBattleText6
-	TX_ASM
+	text_far _RocketHideout1EndBattleText6
+	text_asm
 	SetEvent EVENT_BEAT_ROCKET_HIDEOUT_1_TRAINER_4
 	ld hl, RocketHideout1Text_44c9f
 	ret
 
 RocketHideout1Text_44c9f:
-	TX_BLINK
-	db "@"
+	text_promptbutton
+	text_end
 
 RocketHideout1BattleText2:
-	TX_FAR _RocketHideout1BattleText2
-	db "@"
+	text_far _RocketHideout1BattleText2
+	text_end
 
 RocketHideout1EndBattleText2:
-	TX_FAR _RocketHideout1EndBattleText2
-	db "@"
+	text_far _RocketHideout1EndBattleText2
+	text_end
 
 RocketHideout1AfterBattleTxt2:
-	TX_FAR _RocketHideout1AfterBattleTxt2
-	db "@"
+	text_far _RocketHideout1AfterBattleTxt2
+	text_end
 
 RocketHideout1BattleText3:
-	TX_FAR _RocketHideout1BattleText3
-	db "@"
+	text_far _RocketHideout1BattleText3
+	text_end
 
 RocketHideout1EndBattleText3:
-	TX_FAR _RocketHideout1EndBattleText3
-	db "@"
+	text_far _RocketHideout1EndBattleText3
+	text_end
 
 RocketHideout1AfterBattleTxt3:
-	TX_FAR _RocketHideout1AfterBattleTxt3
-	db "@"
+	text_far _RocketHideout1AfterBattleTxt3
+	text_end
 
 RocketHideout1BattleText4:
-	TX_FAR _RocketHideout1BattleText4
-	db "@"
+	text_far _RocketHideout1BattleText4
+	text_end
 
 RocketHideout1EndBattleText4:
-	TX_FAR _RocketHideout1EndBattleText4
-	db "@"
+	text_far _RocketHideout1EndBattleText4
+	text_end
 
 RocketHideout1AfterBattleTxt4:
-	TX_FAR _RocketHideout1AfterBattleTxt4
-	db "@"
+	text_far _RocketHideout1AfterBattleTxt4
+	text_end
 
 RocketHideout1BattleText5:
-	TX_FAR _RocketHideout1BattleText5
-	db "@"
+	text_far _RocketHideout1BattleText5
+	text_end
 
 RocketHideout1EndBattleText5:
-	TX_FAR _RocketHideout1EndBattleText5
-	db "@"
+	text_far _RocketHideout1EndBattleText5
+	text_end
 
 RocketHideout1AfterBattleTxt5:
-	TX_FAR _RocketHideout1AfterBattleTxt5
-	db "@"
+	text_far _RocketHideout1AfterBattleTxt5
+	text_end
 
 RocketHideout1BattleText6:
-	TX_FAR _RocketHideout1BattleText6
-	db "@"
+	text_far _RocketHideout1BattleText6
+	text_end
 
 RocketHideout1AfterBattleTxt6:
-	TX_FAR _RocketHideout1AfterBattleTxt6
-	db "@"
+	text_far _RocketHideout1AfterBattleTxt6
+	text_end
--- a/scripts/RocketHideoutB2F.asm
+++ b/scripts/RocketHideoutB2F.asm
@@ -432,19 +432,19 @@
 	db $ff
 
 RocketHideout2Text1:
-	TX_ASM
+	text_asm
 	ld hl, RocketHideout2TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 RocketHideout2BattleText2:
-	TX_FAR _RocketHideout2BattleText2
-	db "@"
+	text_far _RocketHideout2BattleText2
+	text_end
 
 RocketHideout2EndBattleText2:
-	TX_FAR _RocketHideout2EndBattleText2
-	db "@"
+	text_far _RocketHideout2EndBattleText2
+	text_end
 
 RocketHideout2AfterBattleTxt2:
-	TX_FAR _RocketHideout2AfterBattleTxt2
-	db "@"
+	text_far _RocketHideout2AfterBattleTxt2
+	text_end
--- a/scripts/RocketHideoutB3F.asm
+++ b/scripts/RocketHideoutB3F.asm
@@ -170,37 +170,37 @@
 	db $ff
 
 RocketHideout3Text1:
-	TX_ASM
+	text_asm
 	ld hl, RocketHideout3TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 RocketHideout3BattleText2:
-	TX_FAR _RocketHideout3BattleText2
-	db "@"
+	text_far _RocketHideout3BattleText2
+	text_end
 
 RocketHideout3EndBattleText2:
-	TX_FAR _RocketHideout3EndBattleText2
-	db "@"
+	text_far _RocketHideout3EndBattleText2
+	text_end
 
 RocketHideout3AfterBattleTxt2:
-	TX_FAR _RocketHideout3AfterBattleTxt2
-	db "@"
+	text_far _RocketHideout3AfterBattleTxt2
+	text_end
 
 RocketHideout3Text2:
-	TX_ASM
+	text_asm
 	ld hl, RocketHideout3TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 RocketHideout3BattleTxt:
-	TX_FAR _RocketHideout3BattleTxt
-	db "@"
+	text_far _RocketHideout3BattleTxt
+	text_end
 
 RocketHideout3EndBattleText3:
-	TX_FAR _RocketHideout3EndBattleText3
-	db "@"
+	text_far _RocketHideout3EndBattleText3
+	text_end
 
 RocketHideout3AfterBattleText3:
-	TX_FAR _RocketHide3AfterBattleText3
-	db "@"
+	text_far _RocketHide3AfterBattleText3
+	text_end
--- a/scripts/RocketHideoutB4F.asm
+++ b/scripts/RocketHideoutB4F.asm
@@ -114,7 +114,7 @@
 	db $ff
 
 RocketHideout4Text1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_GIOVANNI
 	jp nz, .asm_545571
 	ld hl, RocketHideout4Text_4557a
@@ -142,69 +142,69 @@
 	jp TextScriptEnd
 
 RocketHideout4Text_4557a:
-	TX_FAR _RocketHideout4Text_4557a
-	db "@"
+	text_far _RocketHideout4Text_4557a
+	text_end
 
 RocketHideout4Text_4557f:
-	TX_FAR _RocketHideout4Text_4557f
-	db "@"
+	text_far _RocketHideout4Text_4557f
+	text_end
 
 RocketHideout4Text10:
-	TX_FAR _RocketHideout4Text_45584
-	db "@"
+	text_far _RocketHideout4Text_45584
+	text_end
 
 RocketHideout4Text2:
-	TX_ASM
+	text_asm
 	ld hl, RocketHideout4TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 RocketHideout4BattleText2:
-	TX_FAR _RocketHideout4BattleText2
-	db "@"
+	text_far _RocketHideout4BattleText2
+	text_end
 
 RocketHideout4EndBattleText2:
-	TX_FAR _RocketHideout4EndBattleText2
-	db "@"
+	text_far _RocketHideout4EndBattleText2
+	text_end
 
 RocketHideout4AfterBattleText2:
-	TX_FAR _RocketHide4AfterBattleText2
-	db "@"
+	text_far _RocketHide4AfterBattleText2
+	text_end
 
 RocketHideout4Text3:
-	TX_ASM
+	text_asm
 	ld hl, RocketHideout4TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 RocketHideout4BattleText3:
-	TX_FAR _RocketHideout4BattleText3
-	db "@"
+	text_far _RocketHideout4BattleText3
+	text_end
 
 RocketHideout4EndBattleText3:
-	TX_FAR _RocketHideout4EndBattleText3
-	db "@"
+	text_far _RocketHideout4EndBattleText3
+	text_end
 
 RocketHideout4AfterBattleText3:
-	TX_FAR _RocketHide4AfterBattleText3
-	db "@"
+	text_far _RocketHide4AfterBattleText3
+	text_end
 
 RocketHideout4Text4:
-	TX_ASM
+	text_asm
 	ld hl, RocketHideout4TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 RocketHideout4BattleText4:
-	TX_FAR _RocketHideout4BattleText4
-	db "@"
+	text_far _RocketHideout4BattleText4
+	text_end
 
 RocketHideout4EndBattleText4:
-	TX_FAR _RocketHideout4EndBattleText4
-	db "@"
+	text_far _RocketHideout4EndBattleText4
+	text_end
 
 RocketHideout4AfterBattleText4:
-	TX_ASM
+	text_asm
 	ld hl, RocketHideout4Text_455ec
 	call PrintText
 	CheckAndSetEvent EVENT_ROCKET_DROPPED_LIFT_KEY
@@ -216,5 +216,5 @@
 	jp TextScriptEnd
 
 RocketHideout4Text_455ec:
-	TX_FAR _RocketHideout4Text_455ec
-	db "@"
+	text_far _RocketHideout4Text_455ec
+	text_end
--- a/scripts/RocketHideoutElevator.asm
+++ b/scripts/RocketHideoutElevator.asm
@@ -65,7 +65,7 @@
 	dw RocketHideoutElevatorText1
 
 RocketHideoutElevatorText1:
-	TX_ASM
+	text_asm
 	ld b, LIFT_KEY
 	call IsItemInBag
 	jr z, .asm_45782
@@ -80,6 +80,6 @@
 	jp TextScriptEnd
 
 RocketHideoutElevatorText_4578b:
-	TX_FAR _RocketElevatorText_4578b
-	TX_WAIT
-	db "@"
+	text_far _RocketElevatorText_4578b
+	text_linkpromptbutton
+	text_end
--- a/scripts/Route1.asm
+++ b/scripts/Route1.asm
@@ -7,7 +7,7 @@
 	dw Route1Text3
 
 Route1Text1:
-	TX_ASM
+	text_asm
 	CheckAndSetEvent EVENT_GOT_POTION_SAMPLE
 	jr nz, .asm_1cada
 	ld hl, Route1ViridianMartSampleText
@@ -27,26 +27,26 @@
 	jp TextScriptEnd
 
 Route1ViridianMartSampleText:
-	TX_FAR _Route1ViridianMartSampleText
-	db "@"
+	text_far _Route1ViridianMartSampleText
+	text_end
 
 Route1Text_1cae8:
-	TX_FAR _Route1Text_1cae8
-	TX_SFX_ITEM_1
-	db "@"
+	text_far _Route1Text_1cae8
+	sound_get_item_1
+	text_end
 
 Route1Text_1caee:
-	TX_FAR _Route1Text_1caee
-	db "@"
+	text_far _Route1Text_1caee
+	text_end
 
 Route1Text_1caf3:
-	TX_FAR _Route1Text_1caf3
-	db "@"
+	text_far _Route1Text_1caf3
+	text_end
 
 Route1Text2:
-	TX_FAR _Route1Text2
-	db "@"
+	text_far _Route1Text2
+	text_end
 
 Route1Text3:
-	TX_FAR _Route1Text3
-	db "@"
+	text_far _Route1Text3
+	text_end
--- a/scripts/Route10.asm
+++ b/scripts/Route10.asm
@@ -81,118 +81,118 @@
 	db $ff
 
 Route10Text1:
-	TX_ASM
+	text_asm
 	ld hl, Route10TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route10BattleText1:
-	TX_FAR _Route10BattleText1
-	db "@"
+	text_far _Route10BattleText1
+	text_end
 
 Route10EndBattleText1:
-	TX_FAR _Route10EndBattleText1
-	db "@"
+	text_far _Route10EndBattleText1
+	text_end
 
 Route10AfterBattleText1:
-	TX_FAR _Route10AfterBattleText1
-	db "@"
+	text_far _Route10AfterBattleText1
+	text_end
 
 Route10Text2:
-	TX_ASM
+	text_asm
 	ld hl, Route10TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route10BattleText2:
-	TX_FAR _Route10BattleText2
-	db "@"
+	text_far _Route10BattleText2
+	text_end
 
 Route10EndBattleText2:
-	TX_FAR _Route10EndBattleText2
-	db "@"
+	text_far _Route10EndBattleText2
+	text_end
 
 Route10AfterBattleText2:
-	TX_FAR _Route10AfterBattleText2
-	db "@"
+	text_far _Route10AfterBattleText2
+	text_end
 
 Route10Text3:
-	TX_ASM
+	text_asm
 	ld hl, Route10TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route10BattleText3:
-	TX_FAR _Route10BattleText3
-	db "@"
+	text_far _Route10BattleText3
+	text_end
 
 Route10EndBattleText3:
-	TX_FAR _Route10EndBattleText3
-	db "@"
+	text_far _Route10EndBattleText3
+	text_end
 
 Route10AfterBattleText3:
-	TX_FAR _Route10AfterBattleText3
-	db "@"
+	text_far _Route10AfterBattleText3
+	text_end
 
 Route10Text4:
-	TX_ASM
+	text_asm
 	ld hl, Route10TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route10BattleText4:
-	TX_FAR _Route10BattleText4
-	db "@"
+	text_far _Route10BattleText4
+	text_end
 
 Route10EndBattleText4:
-	TX_FAR _Route10EndBattleText4
-	db "@"
+	text_far _Route10EndBattleText4
+	text_end
 
 Route10AfterBattleText4:
-	TX_FAR _Route10AfterBattleText4
-	db "@"
+	text_far _Route10AfterBattleText4
+	text_end
 
 Route10Text5:
-	TX_ASM
+	text_asm
 	ld hl, Route10TrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route10BattleText5:
-	TX_FAR _Route10BattleText5
-	db "@"
+	text_far _Route10BattleText5
+	text_end
 
 Route10EndBattleText5:
-	TX_FAR _Route10EndBattleText5
-	db "@"
+	text_far _Route10EndBattleText5
+	text_end
 
 Route10AfterBattleText5:
-	TX_FAR _Route10AfterBattleText5
-	db "@"
+	text_far _Route10AfterBattleText5
+	text_end
 
 Route10Text6:
-	TX_ASM
+	text_asm
 	ld hl, Route10TrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route10BattleText6:
-	TX_FAR _Route10BattleText6
-	db "@"
+	text_far _Route10BattleText6
+	text_end
 
 Route10EndBattleText6:
-	TX_FAR _Route10EndBattleText6
-	db "@"
+	text_far _Route10EndBattleText6
+	text_end
 
 Route10AfterBattleText6:
-	TX_FAR _Route10AfterBattleText6
-	db "@"
+	text_far _Route10AfterBattleText6
+	text_end
 
 Route10Text9:
 Route10Text7:
-	TX_FAR _Route10Text7 ; _Route10Text9
-	db "@"
+	text_far _Route10Text7 ; _Route10Text9
+	text_end
 
 Route10Text10:
-	TX_FAR _Route10Text10
-	db "@"
+	text_far _Route10Text10
+	text_end
--- a/scripts/Route11.asm
+++ b/scripts/Route11.asm
@@ -118,185 +118,185 @@
 	db $ff
 
 Route11Text1:
-	TX_ASM
+	text_asm
 	ld hl, Route11TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route11BattleText1:
-	TX_FAR _Route11BattleText1
-	db "@"
+	text_far _Route11BattleText1
+	text_end
 
 Route11EndBattleText1:
-	TX_FAR _Route11EndBattleText1
-	db "@"
+	text_far _Route11EndBattleText1
+	text_end
 
 Route11AfterBattleText1:
-	TX_FAR _Route11AfterBattleText1
-	db "@"
+	text_far _Route11AfterBattleText1
+	text_end
 
 Route11Text2:
-	TX_ASM
+	text_asm
 	ld hl, Route11TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route11BattleText2:
-	TX_FAR _Route11BattleText2
-	db "@"
+	text_far _Route11BattleText2
+	text_end
 
 Route11EndBattleText2:
-	TX_FAR _Route11EndBattleText2
-	db "@"
+	text_far _Route11EndBattleText2
+	text_end
 
 Route11AfterBattleText2:
-	TX_FAR _Route11AfterBattleText2
-	db "@"
+	text_far _Route11AfterBattleText2
+	text_end
 
 Route11Text3:
-	TX_ASM
+	text_asm
 	ld hl, Route11TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route11BattleText3:
-	TX_FAR _Route11BattleText3
-	db "@"
+	text_far _Route11BattleText3
+	text_end
 
 Route11EndBattleText3:
-	TX_FAR _Route11EndBattleText3
-	db "@"
+	text_far _Route11EndBattleText3
+	text_end
 
 Route11AfterBattleText3:
-	TX_FAR _Route11AfterBattleText3
-	db "@"
+	text_far _Route11AfterBattleText3
+	text_end
 
 Route11Text4:
-	TX_ASM
+	text_asm
 	ld hl, Route11TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route11BattleText4:
-	TX_FAR _Route11BattleText4
-	db "@"
+	text_far _Route11BattleText4
+	text_end
 
 Route11EndBattleText4:
-	TX_FAR _Route11EndBattleText4
-	db "@"
+	text_far _Route11EndBattleText4
+	text_end
 
 Route11AfterBattleText4:
-	TX_FAR _Route11AfterBattleText4
-	db "@"
+	text_far _Route11AfterBattleText4
+	text_end
 
 Route11Text5:
-	TX_ASM
+	text_asm
 	ld hl, Route11TrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route11BattleText5:
-	TX_FAR _Route11BattleText5
-	db "@"
+	text_far _Route11BattleText5
+	text_end
 
 Route11EndBattleText5:
-	TX_FAR _Route11EndBattleText5
-	db "@"
+	text_far _Route11EndBattleText5
+	text_end
 
 Route11AfterBattleText5:
-	TX_FAR _Route11AfterBattleText5
-	db "@"
+	text_far _Route11AfterBattleText5
+	text_end
 
 Route11Text6:
-	TX_ASM
+	text_asm
 	ld hl, Route11TrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route11BattleText6:
-	TX_FAR _Route11BattleText6
-	db "@"
+	text_far _Route11BattleText6
+	text_end
 
 Route11EndBattleText6:
-	TX_FAR _Route11EndBattleText6
-	db "@"
+	text_far _Route11EndBattleText6
+	text_end
 
 Route11AfterBattleText6:
-	TX_FAR _Route11AfterBattleText6
-	db "@"
+	text_far _Route11AfterBattleText6
+	text_end
 
 Route11Text7:
-	TX_ASM
+	text_asm
 	ld hl, Route11TrainerHeader6
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route11BattleText7:
-	TX_FAR _Route11BattleText7
-	db "@"
+	text_far _Route11BattleText7
+	text_end
 
 Route11EndBattleText7:
-	TX_FAR _Route11EndBattleText7
-	db "@"
+	text_far _Route11EndBattleText7
+	text_end
 
 Route11AfterBattleText7:
-	TX_FAR _Route11AfterBattleText7
-	db "@"
+	text_far _Route11AfterBattleText7
+	text_end
 
 Route11Text8:
-	TX_ASM
+	text_asm
 	ld hl, Route11TrainerHeader7
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route11BattleText8:
-	TX_FAR _Route11BattleText8
-	db "@"
+	text_far _Route11BattleText8
+	text_end
 
 Route11EndBattleText8:
-	TX_FAR _Route11EndBattleText8
-	db "@"
+	text_far _Route11EndBattleText8
+	text_end
 
 Route11AfterBattleText8:
-	TX_FAR _Route11AfterBattleText8
-	db "@"
+	text_far _Route11AfterBattleText8
+	text_end
 
 Route11Text9:
-	TX_ASM
+	text_asm
 	ld hl, Route11TrainerHeader8
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route11BattleText9:
-	TX_FAR _Route11BattleText9
-	db "@"
+	text_far _Route11BattleText9
+	text_end
 
 Route11EndBattleText9:
-	TX_FAR _Route11EndBattleText9
-	db "@"
+	text_far _Route11EndBattleText9
+	text_end
 
 Route11AfterBattleText9:
-	TX_FAR _Route11AfterBattleText9
-	db "@"
+	text_far _Route11AfterBattleText9
+	text_end
 
 Route11Text10:
-	TX_ASM
+	text_asm
 	ld hl, Route11TrainerHeader9
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route11BattleText10:
-	TX_FAR _Route11BattleText10
-	db "@"
+	text_far _Route11BattleText10
+	text_end
 
 Route11EndBattleText10:
-	TX_FAR _Route11EndBattleText10
-	db "@"
+	text_far _Route11EndBattleText10
+	text_end
 
 Route11AfterBattleText10:
-	TX_FAR _Route11AfterBattleText10
-	db "@"
+	text_far _Route11AfterBattleText10
+	text_end
 
 Route11Text11:
-	TX_FAR _Route11Text11
-	db "@"
+	text_far _Route11Text11
+	text_end
--- a/scripts/Route11Gate1F.asm
+++ b/scripts/Route11Gate1F.asm
@@ -5,5 +5,5 @@
 	dw Route11GateText1
 
 Route11GateText1:
-	TX_FAR _Route11GateText1
-	db "@"
+	text_far _Route11GateText1
+	text_end
--- a/scripts/Route11Gate2F.asm
+++ b/scripts/Route11Gate2F.asm
@@ -8,7 +8,7 @@
 	dw Route11GateUpstairsText4
 
 Route11GateUpstairsText1:
-	TX_ASM
+	text_asm
 	xor a
 	ld [wWhichTrade], a
 	predef DoInGameTradeDialogue
@@ -16,7 +16,7 @@
 	jp TextScriptEnd
 
 Route11GateUpstairsText2:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_ITEMFINDER, 1
 	jr c, .asm_4949b
 	ld a, 30 ; pokemon needed
@@ -42,11 +42,11 @@
 	jr Route11GateUpstairsScriptEnd
 
 Route11GateUpstairsText_494a3:
-	TX_FAR _Route11GateUpstairsText_494a3
-	db "@"
+	text_far _Route11GateUpstairsText_494a3
+	text_end
 
 Route11GateUpstairsText3:
-	TX_ASM
+	text_asm
 	ld a, [wSpriteStateData1 + 9]
 	cp SPRITE_FACING_UP
 	jp nz, GateUpstairsScript_PrintIfFacingUp
@@ -59,18 +59,18 @@
 	jp TextScriptEnd
 
 BinocularsSnorlaxText:
-	TX_FAR _BinocularsSnorlaxText
-	db "@"
+	text_far _BinocularsSnorlaxText
+	text_end
 
 BinocularsNoSnorlaxText:
-	TX_FAR _BinocularsNoSnorlaxText
-	db "@"
+	text_far _BinocularsNoSnorlaxText
+	text_end
 
 Route11GateUpstairsText4:
-	TX_ASM
+	text_asm
 	ld hl, Route11GateUpstairsText_494d5
 	jp GateUpstairsScript_PrintIfFacingUp
 
 Route11GateUpstairsText_494d5:
-	TX_FAR _Route11GateUpstairsText_494d5
-	db "@"
+	text_far _Route11GateUpstairsText_494d5
+	text_end
--- a/scripts/Route12.asm
+++ b/scripts/Route12.asm
@@ -142,147 +142,147 @@
 	db $ff
 
 Route12Text1:
-	TX_FAR _Route12Text1
-	db "@"
+	text_far _Route12Text1
+	text_end
 
 Route12Text13:
-	TX_FAR _Route12Text13
-	db "@"
+	text_far _Route12Text13
+	text_end
 
 Route12Text14:
-	TX_FAR _Route12Text14
-	db "@"
+	text_far _Route12Text14
+	text_end
 
 Route12Text2:
-	TX_ASM
+	text_asm
 	ld hl, Route12TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route12BattleText1:
-	TX_FAR _Route12BattleText1
-	db "@"
+	text_far _Route12BattleText1
+	text_end
 
 Route12EndBattleText1:
-	TX_FAR _Route12EndBattleText1
-	db "@"
+	text_far _Route12EndBattleText1
+	text_end
 
 Route12AfterBattleText1:
-	TX_FAR _Route12AfterBattleText1
-	db "@"
+	text_far _Route12AfterBattleText1
+	text_end
 
 Route12Text3:
-	TX_ASM
+	text_asm
 	ld hl, Route12TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route12BattleText2:
-	TX_FAR _Route12BattleText2
-	db "@"
+	text_far _Route12BattleText2
+	text_end
 
 Route12EndBattleText2:
-	TX_FAR _Route12EndBattleText2
-	db "@"
+	text_far _Route12EndBattleText2
+	text_end
 
 Route12AfterBattleText2:
-	TX_FAR _Route12AfterBattleText2
-	db "@"
+	text_far _Route12AfterBattleText2
+	text_end
 
 Route12Text4:
-	TX_ASM
+	text_asm
 	ld hl, Route12TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route12BattleText3:
-	TX_FAR _Route12BattleText3
-	db "@"
+	text_far _Route12BattleText3
+	text_end
 
 Route12EndBattleText3:
-	TX_FAR _Route12EndBattleText3
-	db "@"
+	text_far _Route12EndBattleText3
+	text_end
 
 Route12AfterBattleText3:
-	TX_FAR _Route12AfterBattleText3
-	db "@"
+	text_far _Route12AfterBattleText3
+	text_end
 
 Route12Text5:
-	TX_ASM
+	text_asm
 	ld hl, Route12TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route12BattleText4:
-	TX_FAR _Route12BattleText4
-	db "@"
+	text_far _Route12BattleText4
+	text_end
 
 Route12EndBattleText4:
-	TX_FAR _Route12EndBattleText4
-	db "@"
+	text_far _Route12EndBattleText4
+	text_end
 
 Route12AfterBattleText4:
-	TX_FAR _Route12AfterBattleText4
-	db "@"
+	text_far _Route12AfterBattleText4
+	text_end
 
 Route12Text6:
-	TX_ASM
+	text_asm
 	ld hl, Route12TrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route12BattleText5:
-	TX_FAR _Route12BattleText5
-	db "@"
+	text_far _Route12BattleText5
+	text_end
 
 Route12EndBattleText5:
-	TX_FAR _Route12EndBattleText5
-	db "@"
+	text_far _Route12EndBattleText5
+	text_end
 
 Route12AfterBattleText5:
-	TX_FAR _Route12AfterBattleText5
-	db "@"
+	text_far _Route12AfterBattleText5
+	text_end
 
 Route12Text7:
-	TX_ASM
+	text_asm
 	ld hl, Route12TrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route12BattleText6:
-	TX_FAR _Route12BattleText6
-	db "@"
+	text_far _Route12BattleText6
+	text_end
 
 Route12EndBattleText6:
-	TX_FAR _Route12EndBattleText6
-	db "@"
+	text_far _Route12EndBattleText6
+	text_end
 
 Route12AfterBattleText6:
-	TX_FAR _Route12AfterBattleText6
-	db "@"
+	text_far _Route12AfterBattleText6
+	text_end
 
 Route12Text8:
-	TX_ASM
+	text_asm
 	ld hl, Route12TrainerHeader6
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route12BattleText7:
-	TX_FAR _Route12BattleText7
-	db "@"
+	text_far _Route12BattleText7
+	text_end
 
 Route12EndBattleText7:
-	TX_FAR _Route12EndBattleText7
-	db "@"
+	text_far _Route12EndBattleText7
+	text_end
 
 Route12AfterBattleText7:
-	TX_FAR _Route12AfterBattleText7
-	db "@"
+	text_far _Route12AfterBattleText7
+	text_end
 
 Route12Text11:
-	TX_FAR _Route12Text11
-	db "@"
+	text_far _Route12Text11
+	text_end
 
 Route12Text12:
-	TX_FAR _Route12Text12
-	db "@"
+	text_far _Route12Text12
+	text_end
--- a/scripts/Route12Gate1F.asm
+++ b/scripts/Route12Gate1F.asm
@@ -5,5 +5,5 @@
 	dw Route12GateText1
 
 Route12GateText1:
-	TX_FAR _Route12GateText1
-	db "@"
+	text_far _Route12GateText1
+	text_end
--- a/scripts/Route12Gate2F.asm
+++ b/scripts/Route12Gate2F.asm
@@ -7,7 +7,7 @@
 	dw Route12GateUpstairsText3
 
 Route12GateUpstairsText1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_TM39, 1
 	jr c, .asm_0ad3c
 	ld hl, TM39PreReceiveText
@@ -30,39 +30,39 @@
 	jp TextScriptEnd
 
 TM39PreReceiveText:
-	TX_FAR _TM39PreReceiveText
-	db "@"
+	text_far _TM39PreReceiveText
+	text_end
 
 ReceivedTM39Text:
-	TX_FAR _ReceivedTM39Text
-	TX_SFX_ITEM_1
-	db "@"
+	text_far _ReceivedTM39Text
+	sound_get_item_1
+	text_end
 
 TM39ExplanationText:
-	TX_FAR _TM39ExplanationText
-	db "@"
+	text_far _TM39ExplanationText
+	text_end
 
 TM39NoRoomText:
-	TX_FAR _TM39NoRoomText
-	db "@"
+	text_far _TM39NoRoomText
+	text_end
 
 Route12GateUpstairsText2:
-	TX_ASM
+	text_asm
 	ld hl, Route12GateUpstairsText_495b8
 	jp GateUpstairsScript_PrintIfFacingUp
 
 Route12GateUpstairsText_495b8:
-	TX_FAR _Route12GateUpstairsText_495b8
-	db "@"
+	text_far _Route12GateUpstairsText_495b8
+	text_end
 
 Route12GateUpstairsText3:
-	TX_ASM
+	text_asm
 	ld hl, Route12GateUpstairsText_495c4
 	jp GateUpstairsScript_PrintIfFacingUp
 
 Route12GateUpstairsText_495c4:
-	TX_FAR _Route12GateUpstairsText_495c4
-	db "@"
+	text_far _Route12GateUpstairsText_495c4
+	text_end
 
 GateUpstairsScript_PrintIfFacingUp:
 	ld a, [wSpriteStateData1 + 9]
--- a/scripts/Route12SuperRodHouse.asm
+++ b/scripts/Route12SuperRodHouse.asm
@@ -5,7 +5,7 @@
 	dw Route12HouseText1
 
 Route12HouseText1:
-	TX_ASM
+	text_asm
 	ld a, [wd728]
 	bit 5, a
 	jr nz, .asm_b4cad
@@ -35,23 +35,23 @@
 	jp TextScriptEnd
 
 Route12HouseText_564c0:
-	TX_FAR _Route12HouseText_564c0
-	db "@"
+	text_far _Route12HouseText_564c0
+	text_end
 
 Route12HouseText_564c5:
-	TX_FAR _Route12HouseText_564c5
-	TX_SFX_ITEM_1
-	TX_FAR _Route12HouseText_564ca
-	db "@"
+	text_far _Route12HouseText_564c5
+	sound_get_item_1
+	text_far _Route12HouseText_564ca
+	text_end
 
 Route12HouseText_564cf:
-	TX_FAR _Route12HouseText_564cf
-	db "@"
+	text_far _Route12HouseText_564cf
+	text_end
 
 Route12HouseText_564d4:
-	TX_FAR _Route12HouseText_564d4
-	db "@"
+	text_far _Route12HouseText_564d4
+	text_end
 
 Route12HouseText_564d9:
-	TX_FAR _Route12HouseText_564d9
-	db "@"
+	text_far _Route12HouseText_564d9
+	text_end
--- a/scripts/Route13.asm
+++ b/scripts/Route13.asm
@@ -120,193 +120,193 @@
 	db $ff
 
 Route13Text1:
-	TX_ASM
+	text_asm
 	ld hl, Route13TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route13BattleText2:
-	TX_FAR _Route13BattleText2
-	db "@"
+	text_far _Route13BattleText2
+	text_end
 
 Route13EndBattleText2:
-	TX_FAR _Route13EndBattleText2
-	db "@"
+	text_far _Route13EndBattleText2
+	text_end
 
 Route13AfterBattleText2:
-	TX_FAR _Route13AfterBattleText2
-	db "@"
+	text_far _Route13AfterBattleText2
+	text_end
 
 Route13Text2:
-	TX_ASM
+	text_asm
 	ld hl, Route13TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route13BattleText3:
-	TX_FAR _Route13BattleText3
-	db "@"
+	text_far _Route13BattleText3
+	text_end
 
 Route13EndBattleText3:
-	TX_FAR _Route13EndBattleText3
-	db "@"
+	text_far _Route13EndBattleText3
+	text_end
 
 Route13AfterBattleText3:
-	TX_FAR _Route13AfterBattleText3
-	db "@"
+	text_far _Route13AfterBattleText3
+	text_end
 
 Route13Text3:
-	TX_ASM
+	text_asm
 	ld hl, Route13TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route13BattleText4:
-	TX_FAR _Route13BattleText4
-	db "@"
+	text_far _Route13BattleText4
+	text_end
 
 Route13EndBattleText4:
-	TX_FAR _Route13EndBattleText4
-	db "@"
+	text_far _Route13EndBattleText4
+	text_end
 
 Route13AfterBattleText4:
-	TX_FAR _Route13AfterBattleText4
-	db "@"
+	text_far _Route13AfterBattleText4
+	text_end
 
 Route13Text4:
-	TX_ASM
+	text_asm
 	ld hl, Route13TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route13BattleText5:
-	TX_FAR _Route13BattleText5
-	db "@"
+	text_far _Route13BattleText5
+	text_end
 
 Route13EndBattleText5:
-	TX_FAR _Route13EndBattleText5
-	db "@"
+	text_far _Route13EndBattleText5
+	text_end
 
 Route13AfterBattleText5:
-	TX_FAR _Route13AfterBattleText5
-	db "@"
+	text_far _Route13AfterBattleText5
+	text_end
 
 Route13Text5:
-	TX_ASM
+	text_asm
 	ld hl, Route13TrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route13BattleText6:
-	TX_FAR _Route13BattleText6
-	db "@"
+	text_far _Route13BattleText6
+	text_end
 
 Route13EndBattleText6:
-	TX_FAR _Route13EndBattleText6
-	db "@"
+	text_far _Route13EndBattleText6
+	text_end
 
 Route13AfterBattleText6:
-	TX_FAR _Route13AfterBattleText6
-	db "@"
+	text_far _Route13AfterBattleText6
+	text_end
 
 Route13Text6:
-	TX_ASM
+	text_asm
 	ld hl, Route13TrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route13BattleText7:
-	TX_FAR _Route13BattleText7
-	db "@"
+	text_far _Route13BattleText7
+	text_end
 
 Route13EndBattleText7:
-	TX_FAR _Route13EndBattleText7
-	db "@"
+	text_far _Route13EndBattleText7
+	text_end
 
 Route13AfterBattleText7:
-	TX_FAR _Route13AfterBattleText7
-	db "@"
+	text_far _Route13AfterBattleText7
+	text_end
 
 Route13Text7:
-	TX_ASM
+	text_asm
 	ld hl, Route13TrainerHeader6
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route13BattleText8:
-	TX_FAR _Route13BattleText8
-	db "@"
+	text_far _Route13BattleText8
+	text_end
 
 Route13EndBattleText8:
-	TX_FAR _Route13EndBattleText8
-	db "@"
+	text_far _Route13EndBattleText8
+	text_end
 
 Route13AfterBattleText8:
-	TX_FAR _Route13AfterBattleText8
-	db "@"
+	text_far _Route13AfterBattleText8
+	text_end
 
 Route13Text8:
-	TX_ASM
+	text_asm
 	ld hl, Route13TrainerHeader7
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route13BattleText9:
-	TX_FAR _Route13BattleText9
-	db "@"
+	text_far _Route13BattleText9
+	text_end
 
 Route13EndBattleText9:
-	TX_FAR _Route13EndBattleText9
-	db "@"
+	text_far _Route13EndBattleText9
+	text_end
 
 Route13AfterBattleText9:
-	TX_FAR _Route13AfterBattleText9
-	db "@"
+	text_far _Route13AfterBattleText9
+	text_end
 
 Route13Text9:
-	TX_ASM
+	text_asm
 	ld hl, Route13TrainerHeader8
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route13BattleText10:
-	TX_FAR _Route13BattleText10
-	db "@"
+	text_far _Route13BattleText10
+	text_end
 
 Route13EndBattleText10:
-	TX_FAR _Route13EndBattleText10
-	db "@"
+	text_far _Route13EndBattleText10
+	text_end
 
 Route13AfterBattleText10:
-	TX_FAR _Route13AfterBattleText10
-	db "@"
+	text_far _Route13AfterBattleText10
+	text_end
 
 Route13Text10:
-	TX_ASM
+	text_asm
 	ld hl, Route13TrainerHeader9
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route13BattleText11:
-	TX_FAR _Route13BattleText11
-	db "@"
+	text_far _Route13BattleText11
+	text_end
 
 Route13EndBattleText11:
-	TX_FAR _Route13EndBattleText11
-	db "@"
+	text_far _Route13EndBattleText11
+	text_end
 
 Route13AfterBattleText11:
-	TX_FAR _Route13AfterBattleText11
-	db "@"
+	text_far _Route13AfterBattleText11
+	text_end
 
 Route13Text11:
-	TX_FAR _Route13Text11
-	db "@"
+	text_far _Route13Text11
+	text_end
 
 Route13Text12:
-	TX_FAR _Route13Text12
-	db "@"
+	text_far _Route13Text12
+	text_end
 
 Route13Text13:
-	TX_FAR _Route13Text13
-	db "@"
+	text_far _Route13Text13
+	text_end
--- a/scripts/Route14.asm
+++ b/scripts/Route14.asm
@@ -118,185 +118,185 @@
 	db $ff
 
 Route14Text1:
-	TX_ASM
+	text_asm
 	ld hl, Route14TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route14BattleText1:
-	TX_FAR _Route14BattleText1
-	db "@"
+	text_far _Route14BattleText1
+	text_end
 
 Route14EndBattleText1:
-	TX_FAR _Route14EndBattleText1
-	db "@"
+	text_far _Route14EndBattleText1
+	text_end
 
 Route14AfterBattleText1:
-	TX_FAR _Route14AfterBattleText1
-	db "@"
+	text_far _Route14AfterBattleText1
+	text_end
 
 Route14Text2:
-	TX_ASM
+	text_asm
 	ld hl, Route14TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route14BattleText2:
-	TX_FAR _Route14BattleText2
-	db "@"
+	text_far _Route14BattleText2
+	text_end
 
 Route14EndBattleText2:
-	TX_FAR _Route14EndBattleText2
-	db "@"
+	text_far _Route14EndBattleText2
+	text_end
 
 Route14AfterBattleText2:
-	TX_FAR _Route14AfterBattleText2
-	db "@"
+	text_far _Route14AfterBattleText2
+	text_end
 
 Route14Text3:
-	TX_ASM
+	text_asm
 	ld hl, Route14TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route14BattleText3:
-	TX_FAR _Route14BattleText3
-	db "@"
+	text_far _Route14BattleText3
+	text_end
 
 Route14EndBattleText3:
-	TX_FAR _Route14EndBattleText3
-	db "@"
+	text_far _Route14EndBattleText3
+	text_end
 
 Route14AfterBattleText3:
-	TX_FAR _Route14AfterBattleText3
-	db "@"
+	text_far _Route14AfterBattleText3
+	text_end
 
 Route14Text4:
-	TX_ASM
+	text_asm
 	ld hl, Route14TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route14BattleText4:
-	TX_FAR _Route14BattleText4
-	db "@"
+	text_far _Route14BattleText4
+	text_end
 
 Route14EndBattleText4:
-	TX_FAR _Route14EndBattleText4
-	db "@"
+	text_far _Route14EndBattleText4
+	text_end
 
 Route14AfterBattleText4:
-	TX_FAR _Route14AfterBattleText4
-	db "@"
+	text_far _Route14AfterBattleText4
+	text_end
 
 Route14Text5:
-	TX_ASM
+	text_asm
 	ld hl, Route14TrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route14BattleText5:
-	TX_FAR _Route14BattleText5
-	db "@"
+	text_far _Route14BattleText5
+	text_end
 
 Route14EndBattleText5:
-	TX_FAR _Route14EndBattleText5
-	db "@"
+	text_far _Route14EndBattleText5
+	text_end
 
 Route14AfterBattleText5:
-	TX_FAR _Route14AfterBattleText5
-	db "@"
+	text_far _Route14AfterBattleText5
+	text_end
 
 Route14Text6:
-	TX_ASM
+	text_asm
 	ld hl, Route14TrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route14BattleText6:
-	TX_FAR _Route14BattleText6
-	db "@"
+	text_far _Route14BattleText6
+	text_end
 
 Route14EndBattleText6:
-	TX_FAR _Route14EndBattleText6
-	db "@"
+	text_far _Route14EndBattleText6
+	text_end
 
 Route14AfterBattleText6:
-	TX_FAR _Route14AfterBattleText6
-	db "@"
+	text_far _Route14AfterBattleText6
+	text_end
 
 Route14Text7:
-	TX_ASM
+	text_asm
 	ld hl, Route14TrainerHeader6
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route14BattleText7:
-	TX_FAR _Route14BattleText7
-	db "@"
+	text_far _Route14BattleText7
+	text_end
 
 Route14EndBattleText7:
-	TX_FAR _Route14EndBattleText7
-	db "@"
+	text_far _Route14EndBattleText7
+	text_end
 
 Route14AfterBattleText7:
-	TX_FAR _Route14AfterBattleText7
-	db "@"
+	text_far _Route14AfterBattleText7
+	text_end
 
 Route14Text8:
-	TX_ASM
+	text_asm
 	ld hl, Route14TrainerHeader7
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route14BattleText8:
-	TX_FAR _Route14BattleText8
-	db "@"
+	text_far _Route14BattleText8
+	text_end
 
 Route14EndBattleText8:
-	TX_FAR _Route14EndBattleText8
-	db "@"
+	text_far _Route14EndBattleText8
+	text_end
 
 Route14AfterBattleText8:
-	TX_FAR _Route14AfterBattleText8
-	db "@"
+	text_far _Route14AfterBattleText8
+	text_end
 
 Route14Text9:
-	TX_ASM
+	text_asm
 	ld hl, Route14TrainerHeader8
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route14BattleText9:
-	TX_FAR _Route14BattleText9
-	db "@"
+	text_far _Route14BattleText9
+	text_end
 
 Route14EndBattleText9:
-	TX_FAR _Route14EndBattleText9
-	db "@"
+	text_far _Route14EndBattleText9
+	text_end
 
 Route14AfterBattleText9:
-	TX_FAR _Route14AfterBattleText9
-	db "@"
+	text_far _Route14AfterBattleText9
+	text_end
 
 Route14Text10:
-	TX_ASM
+	text_asm
 	ld hl, Route14TrainerHeader9
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route14BattleText10:
-	TX_FAR _Route14BattleText10
-	db "@"
+	text_far _Route14BattleText10
+	text_end
 
 Route14EndBattleText10:
-	TX_FAR _Route14EndBattleText10
-	db "@"
+	text_far _Route14EndBattleText10
+	text_end
 
 Route14AfterBattleText10:
-	TX_FAR _Route14AfterBattleText10
-	db "@"
+	text_far _Route14AfterBattleText10
+	text_end
 
 Route14Text11:
-	TX_FAR _Route14Text11
-	db "@"
+	text_far _Route14Text11
+	text_end
--- a/scripts/Route15.asm
+++ b/scripts/Route15.asm
@@ -119,52 +119,52 @@
 	db $ff
 
 Route15Text1:
-	TX_ASM
+	text_asm
 	ld hl, Route15TrainerHeader0
 	jr Route15TalkToTrainer
 
 Route15Text2:
-	TX_ASM
+	text_asm
 	ld hl, Route15TrainerHeader1
 	jr Route15TalkToTrainer
 
 Route15Text3:
-	TX_ASM
+	text_asm
 	ld hl, Route15TrainerHeader2
 	jr Route15TalkToTrainer
 
 Route15Text4:
-	TX_ASM
+	text_asm
 	ld hl, Route15TrainerHeader3
 	jr Route15TalkToTrainer
 
 Route15Text5:
-	TX_ASM
+	text_asm
 	ld hl, Route15TrainerHeader4
 	jr Route15TalkToTrainer
 
 Route15Text6:
-	TX_ASM
+	text_asm
 	ld hl, Route15TrainerHeader5
 	jr Route15TalkToTrainer
 
 Route15Text7:
-	TX_ASM
+	text_asm
 	ld hl, Route15TrainerHeader6
 	jr Route15TalkToTrainer
 
 Route15Text8:
-	TX_ASM
+	text_asm
 	ld hl, Route15TrainerHeader7
 	jr Route15TalkToTrainer
 
 Route15Text9:
-	TX_ASM
+	text_asm
 	ld hl, Route15TrainerHeader8
 	jr Route15TalkToTrainer
 
 Route15Text10:
-	TX_ASM
+	text_asm
 	ld hl, Route15TrainerHeader9
 Route15TalkToTrainer:
 	call TalkToTrainer
@@ -171,125 +171,125 @@
 	jp TextScriptEnd
 
 Route15BattleText1:
-	TX_FAR _Route15BattleText1
-	db "@"
+	text_far _Route15BattleText1
+	text_end
 
 Route15EndBattleText1:
-	TX_FAR _Route15EndBattleText1
-	db "@"
+	text_far _Route15EndBattleText1
+	text_end
 
 Route15AfterBattleText1:
-	TX_FAR _Route15AfterBattleText1
-	db "@"
+	text_far _Route15AfterBattleText1
+	text_end
 
 Route15BattleText2:
-	TX_FAR _Route15BattleText2
-	db "@"
+	text_far _Route15BattleText2
+	text_end
 
 Route15EndBattleText2:
-	TX_FAR _Route15EndBattleText2
-	db "@"
+	text_far _Route15EndBattleText2
+	text_end
 
 Route15AfterBattleText2:
-	TX_FAR _Route15AfterBattleText2
-	db "@"
+	text_far _Route15AfterBattleText2
+	text_end
 
 Route15BattleText3:
-	TX_FAR _Route15BattleText3
-	db "@"
+	text_far _Route15BattleText3
+	text_end
 
 Route15EndBattleText3:
-	TX_FAR _Route15EndBattleText3
-	db "@"
+	text_far _Route15EndBattleText3
+	text_end
 
 Route15AfterBattleText3:
-	TX_FAR _Route15AfterBattleText3
-	db "@"
+	text_far _Route15AfterBattleText3
+	text_end
 
 Route15BattleText4:
-	TX_FAR _Route15BattleText4
-	db "@"
+	text_far _Route15BattleText4
+	text_end
 
 Route15EndBattleText4:
-	TX_FAR _Route15EndBattleText4
-	db "@"
+	text_far _Route15EndBattleText4
+	text_end
 
 Route15AfterBattleText4:
-	TX_FAR _Route15AfterBattleText4
-	db "@"
+	text_far _Route15AfterBattleText4
+	text_end
 
 Route15BattleText5:
-	TX_FAR _Route15BattleText5
-	db "@"
+	text_far _Route15BattleText5
+	text_end
 
 Route15EndBattleText5:
-	TX_FAR _Route15EndBattleText5
-	db "@"
+	text_far _Route15EndBattleText5
+	text_end
 
 Route15AfterBattleText5:
-	TX_FAR _Route15AfterBattleText5
-	db "@"
+	text_far _Route15AfterBattleText5
+	text_end
 
 Route15BattleText6:
-	TX_FAR _Route15BattleText6
-	db "@"
+	text_far _Route15BattleText6
+	text_end
 
 Route15EndBattleText6:
-	TX_FAR _Route15EndBattleText6
-	db "@"
+	text_far _Route15EndBattleText6
+	text_end
 
 Route15AfterBattleText6:
-	TX_FAR _Route15AfterBattleText6
-	db "@"
+	text_far _Route15AfterBattleText6
+	text_end
 
 Route15BattleText7:
-	TX_FAR _Route15BattleText7
-	db "@"
+	text_far _Route15BattleText7
+	text_end
 
 Route15EndBattleText7:
-	TX_FAR _Route15EndBattleText7
-	db "@"
+	text_far _Route15EndBattleText7
+	text_end
 
 Route15AfterBattleText7:
-	TX_FAR _Route15AfterBattleText7
-	db "@"
+	text_far _Route15AfterBattleText7
+	text_end
 
 Route15BattleText8:
-	TX_FAR _Route15BattleText8
-	db "@"
+	text_far _Route15BattleText8
+	text_end
 
 Route15EndBattleText8:
-	TX_FAR _Route15EndBattleText8
-	db "@"
+	text_far _Route15EndBattleText8
+	text_end
 
 Route15AfterBattleText8:
-	TX_FAR _Route15AfterBattleText8
-	db "@"
+	text_far _Route15AfterBattleText8
+	text_end
 
 Route15BattleText9:
-	TX_FAR _Route15BattleText9
-	db "@"
+	text_far _Route15BattleText9
+	text_end
 
 Route15EndBattleText9:
-	TX_FAR _Route15EndBattleText9
-	db "@"
+	text_far _Route15EndBattleText9
+	text_end
 
 Route15AfterBattleText9:
-	TX_FAR _Route15AfterBattleText9
-	db "@"
+	text_far _Route15AfterBattleText9
+	text_end
 
 Route15BattleText10:
-	TX_FAR _Route15BattleText10
-	db "@"
+	text_far _Route15BattleText10
+	text_end
 
 Route15EndBattleText10:
-	TX_FAR _Route15EndBattleText10
-	db "@"
+	text_far _Route15EndBattleText10
+	text_end
 
 Route15AfterBattleText10:
-	TX_FAR _Route15AfterBattleText10
-	db "@"
+	text_far _Route15AfterBattleText10
+	text_end
 
 Route15Text12:
-	TX_FAR _Route15Text12
-	db "@"
+	text_far _Route15Text12
+	text_end
--- a/scripts/Route15Gate1F.asm
+++ b/scripts/Route15Gate1F.asm
@@ -5,5 +5,5 @@
 	dw Route15GateText1
 
 Route15GateText1:
-	TX_FAR _Route15GateText1
-	db "@"
+	text_far _Route15GateText1
+	text_end
--- a/scripts/Route15Gate2F.asm
+++ b/scripts/Route15Gate2F.asm
@@ -6,7 +6,7 @@
 	dw Route15GateUpstairsText2
 
 Route15GateUpstairsText1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_EXP_ALL
 	jr nz, .asm_49683
 	ld a, 50 ; pokemon needed
@@ -31,14 +31,14 @@
 	jp TextScriptEnd
 
 Route15GateUpstairsText_4968c:
-	TX_FAR _Route15GateUpstairsText_4968c
-	db "@"
+	text_far _Route15GateUpstairsText_4968c
+	text_end
 
 Route15GateUpstairsText2:
-	TX_ASM
+	text_asm
 	ld hl, Route15GateUpstairsText_49698
 	jp GateUpstairsScript_PrintIfFacingUp
 
 Route15GateUpstairsText_49698:
-	TX_FAR _Route15GateUpstairsText_49698
-	db "@"
+	text_far _Route15GateUpstairsText_49698
+	text_end
--- a/scripts/Route16.asm
+++ b/scripts/Route16.asm
@@ -131,129 +131,129 @@
 	db $ff
 
 Route16Text1:
-	TX_ASM
+	text_asm
 	ld hl, Route16TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route16BattleText1:
-	TX_FAR _Route16BattleText1
-	db "@"
+	text_far _Route16BattleText1
+	text_end
 
 Route16EndBattleText1:
-	TX_FAR _Route16EndBattleText1
-	db "@"
+	text_far _Route16EndBattleText1
+	text_end
 
 Route16AfterBattleText1:
-	TX_FAR _Route16AfterBattleText1
-	db "@"
+	text_far _Route16AfterBattleText1
+	text_end
 
 Route16Text2:
-	TX_ASM
+	text_asm
 	ld hl, Route16TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route16BattleText2:
-	TX_FAR _Route16BattleText2
-	db "@"
+	text_far _Route16BattleText2
+	text_end
 
 Route16EndBattleText2:
-	TX_FAR _Route16EndBattleText2
-	db "@"
+	text_far _Route16EndBattleText2
+	text_end
 
 Route16AfterBattleText2:
-	TX_FAR _Route16AfterBattleText2
-	db "@"
+	text_far _Route16AfterBattleText2
+	text_end
 
 Route16Text3:
-	TX_ASM
+	text_asm
 	ld hl, Route16TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route16BattleText3:
-	TX_FAR _Route16BattleText3
-	db "@"
+	text_far _Route16BattleText3
+	text_end
 
 Route16EndBattleText3:
-	TX_FAR _Route16EndBattleText3
-	db "@"
+	text_far _Route16EndBattleText3
+	text_end
 
 Route16AfterBattleText3:
-	TX_FAR _Route16AfterBattleText3
-	db "@"
+	text_far _Route16AfterBattleText3
+	text_end
 
 Route16Text4:
-	TX_ASM
+	text_asm
 	ld hl, Route16TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route16BattleText4:
-	TX_FAR _Route16BattleText4
-	db "@"
+	text_far _Route16BattleText4
+	text_end
 
 Route16EndBattleText4:
-	TX_FAR _Route16EndBattleText4
-	db "@"
+	text_far _Route16EndBattleText4
+	text_end
 
 Route16AfterBattleText4:
-	TX_FAR _Route16AfterBattleText4
-	db "@"
+	text_far _Route16AfterBattleText4
+	text_end
 
 Route16Text5:
-	TX_ASM
+	text_asm
 	ld hl, Route16TrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route16BattleText5:
-	TX_FAR _Route16BattleText5
-	db "@"
+	text_far _Route16BattleText5
+	text_end
 
 Route16EndBattleText5:
-	TX_FAR _Route16EndBattleText5
-	db "@"
+	text_far _Route16EndBattleText5
+	text_end
 
 Route16AfterBattleText5:
-	TX_FAR _Route16AfterBattleText5
-	db "@"
+	text_far _Route16AfterBattleText5
+	text_end
 
 Route16Text6:
-	TX_ASM
+	text_asm
 	ld hl, Route16TrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route16BattleText6:
-	TX_FAR _Route16BattleText6
-	db "@"
+	text_far _Route16BattleText6
+	text_end
 
 Route16EndBattleText6:
-	TX_FAR _Route16EndBattleText6
-	db "@"
+	text_far _Route16EndBattleText6
+	text_end
 
 Route16AfterBattleText6:
-	TX_FAR _Route16AfterBattleText6
-	db "@"
+	text_far _Route16AfterBattleText6
+	text_end
 
 Route16Text7:
-	TX_FAR _Route16Text7
-	db "@"
+	text_far _Route16Text7
+	text_end
 
 Route16Text10:
-	TX_FAR _Route16Text10
-	db "@"
+	text_far _Route16Text10
+	text_end
 
 Route16Text11:
-	TX_FAR _Route16Text11
-	db "@"
+	text_far _Route16Text11
+	text_end
 
 Route16Text8:
-	TX_FAR _Route16Text8
-	db "@"
+	text_far _Route16Text8
+	text_end
 
 Route16Text9:
-	TX_FAR _Route16Text9
-	db "@"
+	text_far _Route16Text9
+	text_end
--- a/scripts/Route16FlyHouse.asm
+++ b/scripts/Route16FlyHouse.asm
@@ -6,7 +6,7 @@
 	dw Route16HouseText2
 
 Route16HouseText1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_HM02
 	ld hl, HM02ExplanationText
 	jr nz, .asm_13616
@@ -25,24 +25,24 @@
 	jp TextScriptEnd
 
 Route16HouseText3:
-	TX_FAR _Route16HouseText3
-	db "@"
+	text_far _Route16HouseText3
+	text_end
 
 ReceivedHM02Text:
-	TX_FAR _ReceivedHM02Text
-	TX_SFX_KEY_ITEM
-	db "@"
+	text_far _ReceivedHM02Text
+	sound_get_key_item
+	text_end
 
 HM02ExplanationText:
-	TX_FAR _HM02ExplanationText
-	db "@"
+	text_far _HM02ExplanationText
+	text_end
 
 HM02NoRoomText:
-	TX_FAR _HM02NoRoomText
-	db "@"
+	text_far _HM02NoRoomText
+	text_end
 
 Route16HouseText2:
-	TX_ASM
+	text_asm
 	ld hl, Route16HouseText_1e652
 	call PrintText
 	ld a, FEAROW
@@ -51,5 +51,5 @@
 	jp TextScriptEnd
 
 Route16HouseText_1e652:
-	TX_FAR _Route16HouseText_1e652
-	db "@"
+	text_far _Route16HouseText_1e652
+	text_end
--- a/scripts/Route16Gate1F.asm
+++ b/scripts/Route16Gate1F.asm
@@ -92,7 +92,7 @@
 	dw Route16GateText3
 
 Route16GateText1:
-	TX_ASM
+	text_asm
 	call Route16GateScript_49755
 	jr z, .asm_0bdf3
 	ld hl, Route16GateText_4977c
@@ -105,17 +105,17 @@
 	jp TextScriptEnd
 
 Route16GateText_49777:
-	TX_FAR _Route16GateText_49777
-	db "@"
+	text_far _Route16GateText_49777
+	text_end
 
 Route16GateText_4977c:
-	TX_FAR _Route16GateText_4977c
-	db "@"
+	text_far _Route16GateText_4977c
+	text_end
 
 Route16GateText3:
-	TX_FAR _Route16GateText_49781
-	db "@"
+	text_far _Route16GateText_49781
+	text_end
 
 Route16GateText2:
-	TX_FAR _Route16GateText2
-	db "@"
+	text_far _Route16GateText2
+	text_end
--- a/scripts/Route16Gate2F.asm
+++ b/scripts/Route16Gate2F.asm
@@ -8,39 +8,39 @@
 	dw Route16GateUpstairsText4
 
 Route16GateUpstairsText1:
-	TX_ASM
+	text_asm
 	ld hl, Route16GateUpstairsText_49820
 	call PrintText
 	jp TextScriptEnd
 
 Route16GateUpstairsText_49820:
-	TX_FAR _Route16GateUpstairsText_49820
-	db "@"
+	text_far _Route16GateUpstairsText_49820
+	text_end
 
 Route16GateUpstairsText2:
-	TX_ASM
+	text_asm
 	ld hl, Route16GateUpstairsText_4982f
 	call PrintText
 	jp TextScriptEnd
 
 Route16GateUpstairsText_4982f:
-	TX_FAR _Route16GateUpstairsText_4982f
-	db "@"
+	text_far _Route16GateUpstairsText_4982f
+	text_end
 
 Route16GateUpstairsText3:
-	TX_ASM
+	text_asm
 	ld hl, Route16GateUpstairsText_4983b
 	jp GateUpstairsScript_PrintIfFacingUp
 
 Route16GateUpstairsText_4983b:
-	TX_FAR _Route16GateUpstairsText_4983b
-	db "@"
+	text_far _Route16GateUpstairsText_4983b
+	text_end
 
 Route16GateUpstairsText4:
-	TX_ASM
+	text_asm
 	ld hl, Route16GateUpstairsText_49847
 	jp GateUpstairsScript_PrintIfFacingUp
 
 Route16GateUpstairsText_49847:
-	TX_FAR _Route16GateUpstairsText_49847
-	db "@"
+	text_far _Route16GateUpstairsText_49847
+	text_end
--- a/scripts/Route17.asm
+++ b/scripts/Route17.asm
@@ -123,205 +123,205 @@
 	db $ff
 
 Route17Text1:
-	TX_ASM
+	text_asm
 	ld hl, Route17TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route17BattleText1:
-	TX_FAR _Route17BattleText1
-	db "@"
+	text_far _Route17BattleText1
+	text_end
 
 Route17EndBattleText1:
-	TX_FAR _Route17EndBattleText1
-	db "@"
+	text_far _Route17EndBattleText1
+	text_end
 
 Route17AfterBattleText1:
-	TX_FAR _Route17AfterBattleText1
-	db "@"
+	text_far _Route17AfterBattleText1
+	text_end
 
 Route17Text2:
-	TX_ASM
+	text_asm
 	ld hl, Route17TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route17BattleText2:
-	TX_FAR _Route17BattleText2
-	db "@"
+	text_far _Route17BattleText2
+	text_end
 
 Route17EndBattleText2:
-	TX_FAR _Route17EndBattleText2
-	db "@"
+	text_far _Route17EndBattleText2
+	text_end
 
 Route17AfterBattleText2:
-	TX_FAR _Route17AfterBattleText2
-	db "@"
+	text_far _Route17AfterBattleText2
+	text_end
 
 Route17Text3:
-	TX_ASM
+	text_asm
 	ld hl, Route17TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route17BattleText3:
-	TX_FAR _Route17BattleText3
-	db "@"
+	text_far _Route17BattleText3
+	text_end
 
 Route17EndBattleText3:
-	TX_FAR _Route17EndBattleText3
-	db "@"
+	text_far _Route17EndBattleText3
+	text_end
 
 Route17AfterBattleText3:
-	TX_FAR _Route17AfterBattleText3
-	db "@"
+	text_far _Route17AfterBattleText3
+	text_end
 
 Route17Text4:
-	TX_ASM
+	text_asm
 	ld hl, Route17TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route17BattleText4:
-	TX_FAR _Route17BattleText4
-	db "@"
+	text_far _Route17BattleText4
+	text_end
 
 Route17EndBattleText4:
-	TX_FAR _Route17EndBattleText4
-	db "@"
+	text_far _Route17EndBattleText4
+	text_end
 
 Route17AfterBattleText4:
-	TX_FAR _Route17AfterBattleText4
-	db "@"
+	text_far _Route17AfterBattleText4
+	text_end
 
 Route17Text5:
-	TX_ASM
+	text_asm
 	ld hl, Route17TrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route17BattleText5:
-	TX_FAR _Route17BattleText5
-	db "@"
+	text_far _Route17BattleText5
+	text_end
 
 Route17EndBattleText5:
-	TX_FAR _Route17EndBattleText5
-	db "@"
+	text_far _Route17EndBattleText5
+	text_end
 
 Route17AfterBattleText5:
-	TX_FAR _Route17AfterBattleText5
-	db "@"
+	text_far _Route17AfterBattleText5
+	text_end
 
 Route17Text6:
-	TX_ASM
+	text_asm
 	ld hl, Route17TrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route17BattleText6:
-	TX_FAR _Route17BattleText6
-	db "@"
+	text_far _Route17BattleText6
+	text_end
 
 Route17EndBattleText6:
-	TX_FAR _Route17EndBattleText6
-	db "@"
+	text_far _Route17EndBattleText6
+	text_end
 
 Route17AfterBattleText6:
-	TX_FAR _Route17AfterBattleText6
-	db "@"
+	text_far _Route17AfterBattleText6
+	text_end
 
 Route17Text7:
-	TX_ASM
+	text_asm
 	ld hl, Route17TrainerHeader6
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route17BattleText7:
-	TX_FAR _Route17BattleText7
-	db "@"
+	text_far _Route17BattleText7
+	text_end
 
 Route17EndBattleText7:
-	TX_FAR _Route17EndBattleText7
-	db "@"
+	text_far _Route17EndBattleText7
+	text_end
 
 Route17AfterBattleText7:
-	TX_FAR _Route17AfterBattleText7
-	db "@"
+	text_far _Route17AfterBattleText7
+	text_end
 
 Route17Text8:
-	TX_ASM
+	text_asm
 	ld hl, Route17TrainerHeader7
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route17BattleText8:
-	TX_FAR _Route17BattleText8
-	db "@"
+	text_far _Route17BattleText8
+	text_end
 
 Route17EndBattleText8:
-	TX_FAR _Route17EndBattleText8
-	db "@"
+	text_far _Route17EndBattleText8
+	text_end
 
 Route17AfterBattleText8:
-	TX_FAR _Route17AfterBattleText8
-	db "@"
+	text_far _Route17AfterBattleText8
+	text_end
 
 Route17Text9:
-	TX_ASM
+	text_asm
 	ld hl, Route17TrainerHeader8
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route17BattleText9:
-	TX_FAR _Route17BattleText9
-	db "@"
+	text_far _Route17BattleText9
+	text_end
 
 Route17EndBattleText9:
-	TX_FAR _Route17EndBattleText9
-	db "@"
+	text_far _Route17EndBattleText9
+	text_end
 
 Route17AfterBattleText9:
-	TX_FAR _Route17AfterBattleText9
-	db "@"
+	text_far _Route17AfterBattleText9
+	text_end
 
 Route17Text10:
-	TX_ASM
+	text_asm
 	ld hl, Route17TrainerHeader9
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route17BattleText10:
-	TX_FAR _Route17BattleText10
-	db "@"
+	text_far _Route17BattleText10
+	text_end
 
 Route17EndBattleText10:
-	TX_FAR _Route17EndBattleText10
-	db "@"
+	text_far _Route17EndBattleText10
+	text_end
 
 Route17AfterBattleText10:
-	TX_FAR _Route17AfterBattleText10
-	db "@"
+	text_far _Route17AfterBattleText10
+	text_end
 
 Route17Text11:
-	TX_FAR _Route17Text11
-	db "@"
+	text_far _Route17Text11
+	text_end
 
 Route17Text12:
-	TX_FAR _Route17Text12
-	db "@"
+	text_far _Route17Text12
+	text_end
 
 Route17Text13:
-	TX_FAR _Route17Text13
-	db "@"
+	text_far _Route17Text13
+	text_end
 
 Route17Text14:
-	TX_FAR _Route17Text14
-	db "@"
+	text_far _Route17Text14
+	text_end
 
 Route17Text15:
-	TX_FAR _Route17Text15
-	db "@"
+	text_far _Route17Text15
+	text_end
 
 Route17Text16:
-	TX_FAR _Route17Text16
-	db "@"
+	text_far _Route17Text16
+	text_end
--- a/scripts/Route18.asm
+++ b/scripts/Route18.asm
@@ -49,63 +49,63 @@
 	db $ff
 
 Route18Text1:
-	TX_ASM
+	text_asm
 	ld hl, Route18TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route18BattleText1:
-	TX_FAR _Route18BattleText1
-	db "@"
+	text_far _Route18BattleText1
+	text_end
 
 Route18EndBattleText1:
-	TX_FAR _Route18EndBattleText1
-	db "@"
+	text_far _Route18EndBattleText1
+	text_end
 
 Route18AfterBattleText1:
-	TX_FAR _Route18AfterBattleText1
-	db "@"
+	text_far _Route18AfterBattleText1
+	text_end
 
 Route18Text2:
-	TX_ASM
+	text_asm
 	ld hl, Route18TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route18BattleText2:
-	TX_FAR _Route18BattleText2
-	db "@"
+	text_far _Route18BattleText2
+	text_end
 
 Route18EndBattleText2:
-	TX_FAR _Route18EndBattleText2
-	db "@"
+	text_far _Route18EndBattleText2
+	text_end
 
 Route18AfterBattleText2:
-	TX_FAR _Route18AfterBattleText2
-	db "@"
+	text_far _Route18AfterBattleText2
+	text_end
 
 Route18Text3:
-	TX_ASM
+	text_asm
 	ld hl, Route18TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route18BattleText3:
-	TX_FAR _Route18BattleText3
-	db "@"
+	text_far _Route18BattleText3
+	text_end
 
 Route18EndBattleText3:
-	TX_FAR _Route18EndBattleText3
-	db "@"
+	text_far _Route18EndBattleText3
+	text_end
 
 Route18AfterBattleText3:
-	TX_FAR _Route18AfterBattleText3
-	db "@"
+	text_far _Route18AfterBattleText3
+	text_end
 
 Route18Text4:
-	TX_FAR _Route18Text4
-	db "@"
+	text_far _Route18Text4
+	text_end
 
 Route18Text5:
-	TX_FAR _Route18Text5
-	db "@"
+	text_far _Route18Text5
+	text_end
--- a/scripts/Route18Gate1F.asm
+++ b/scripts/Route18Gate1F.asm
@@ -87,7 +87,7 @@
 	dw Route18GateText2
 
 Route18GateText1:
-	TX_ASM
+	text_asm
 	call Route16GateScript_49755
 	jr z, .asm_3c84d
 	ld hl, Route18GateText_4992d
@@ -100,13 +100,13 @@
 	jp TextScriptEnd
 
 Route18GateText_49928:
-	TX_FAR _Route18GateText_49928
-	db "@"
+	text_far _Route18GateText_49928
+	text_end
 
 Route18GateText_4992d:
-	TX_FAR _Route18GateText_4992d
-	db "@"
+	text_far _Route18GateText_4992d
+	text_end
 
 Route18GateText2:
-	TX_FAR _Route18GateText_49932
-	db "@"
+	text_far _Route18GateText_49932
+	text_end
--- a/scripts/Route18Gate2F.asm
+++ b/scripts/Route18Gate2F.asm
@@ -7,7 +7,7 @@
 	dw Route18GateUpstairsText3
 
 Route18GateUpstairsText1:
-	TX_ASM
+	text_asm
 	ld a, $5
 	ld [wWhichTrade], a
 	predef DoInGameTradeDialogue
@@ -14,19 +14,19 @@
 	jp TextScriptEnd
 
 Route18GateUpstairsText2:
-	TX_ASM
+	text_asm
 	ld hl, Route18GateUpstairsText_49993
 	jp GateUpstairsScript_PrintIfFacingUp
 
 Route18GateUpstairsText_49993:
-	TX_FAR _Route18GateUpstairsText_49993
-	db "@"
+	text_far _Route18GateUpstairsText_49993
+	text_end
 
 Route18GateUpstairsText3:
-	TX_ASM
+	text_asm
 	ld hl, Route18GateUpstairsText_4999f
 	jp GateUpstairsScript_PrintIfFacingUp
 
 Route18GateUpstairsText_4999f:
-	TX_FAR _Route18GateUpstairsText_4999f
-	db "@"
+	text_far _Route18GateUpstairsText_4999f
+	text_end
--- a/scripts/Route19.asm
+++ b/scripts/Route19.asm
@@ -118,185 +118,185 @@
 	db $ff
 
 Route19Text1:
-	TX_ASM
+	text_asm
 	ld hl, Route19TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route19Text2:
-	TX_ASM
+	text_asm
 	ld hl, Route19TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route19Text3:
-	TX_ASM
+	text_asm
 	ld hl, Route19TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route19Text4:
-	TX_ASM
+	text_asm
 	ld hl, Route19TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route19Text5:
-	TX_ASM
+	text_asm
 	ld hl, Route19TrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route19Text6:
-	TX_ASM
+	text_asm
 	ld hl, Route19TrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route19Text7:
-	TX_ASM
+	text_asm
 	ld hl, Route19TrainerHeader6
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route19Text8:
-	TX_ASM
+	text_asm
 	ld hl, Route19TrainerHeader7
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route19Text9:
-	TX_ASM
+	text_asm
 	ld hl, Route19TrainerHeader8
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route19Text10:
-	TX_ASM
+	text_asm
 	ld hl, Route19TrainerHeader9
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route19BattleText1:
-	TX_FAR _Route19BattleText1
-	db "@"
+	text_far _Route19BattleText1
+	text_end
 
 Route19EndBattleText1:
-	TX_FAR _Route19EndBattleText1
-	db "@"
+	text_far _Route19EndBattleText1
+	text_end
 
 Route19AfterBattleText1:
-	TX_FAR _Route19AfterBattleText1
-	db "@"
+	text_far _Route19AfterBattleText1
+	text_end
 
 Route19BattleText2:
-	TX_FAR _Route19BattleText2
-	db "@"
+	text_far _Route19BattleText2
+	text_end
 
 Route19EndBattleText2:
-	TX_FAR _Route19EndBattleText2
-	db "@"
+	text_far _Route19EndBattleText2
+	text_end
 
 Route19AfterBattleText2:
-	TX_FAR _Route19AfterBattleText2
-	db "@"
+	text_far _Route19AfterBattleText2
+	text_end
 
 Route19BattleText3:
-	TX_FAR _Route19BattleText3
-	db "@"
+	text_far _Route19BattleText3
+	text_end
 
 Route19EndBattleText3:
-	TX_FAR _Route19EndBattleText3
-	db "@"
+	text_far _Route19EndBattleText3
+	text_end
 
 Route19AfterBattleText3:
-	TX_FAR _Route19AfterBattleText3
-	db "@"
+	text_far _Route19AfterBattleText3
+	text_end
 
 Route19BattleText4:
-	TX_FAR _Route19BattleText4
-	db "@"
+	text_far _Route19BattleText4
+	text_end
 
 Route19EndBattleText4:
-	TX_FAR _Route19EndBattleText4
-	db "@"
+	text_far _Route19EndBattleText4
+	text_end
 
 Route19AfterBattleText4:
-	TX_FAR _Route19AfterBattleText4
-	db "@"
+	text_far _Route19AfterBattleText4
+	text_end
 
 Route19BattleText5:
-	TX_FAR _Route19BattleText5
-	db "@"
+	text_far _Route19BattleText5
+	text_end
 
 Route19EndBattleText5:
-	TX_FAR _Route19EndBattleText5
-	db "@"
+	text_far _Route19EndBattleText5
+	text_end
 
 Route19AfterBattleText5:
-	TX_FAR _Route19AfterBattleText5
-	db "@"
+	text_far _Route19AfterBattleText5
+	text_end
 
 Route19BattleText6:
-	TX_FAR _Route19BattleText6
-	db "@"
+	text_far _Route19BattleText6
+	text_end
 
 Route19EndBattleText6:
-	TX_FAR _Route19EndBattleText6
-	db "@"
+	text_far _Route19EndBattleText6
+	text_end
 
 Route19AfterBattleText6:
-	TX_FAR _Route19AfterBattleText6
-	db "@"
+	text_far _Route19AfterBattleText6
+	text_end
 
 Route19BattleText7:
-	TX_FAR _Route19BattleText7
-	db "@"
+	text_far _Route19BattleText7
+	text_end
 
 Route19EndBattleText7:
-	TX_FAR _Route19EndBattleText7
-	db "@"
+	text_far _Route19EndBattleText7
+	text_end
 
 Route19AfterBattleText7:
-	TX_FAR _Route19AfterBattleText7
-	db "@"
+	text_far _Route19AfterBattleText7
+	text_end
 
 Route19BattleText8:
-	TX_FAR _Route19BattleText8
-	db "@"
+	text_far _Route19BattleText8
+	text_end
 
 Route19EndBattleText8:
-	TX_FAR _Route19EndBattleText8
-	db "@"
+	text_far _Route19EndBattleText8
+	text_end
 
 Route19AfterBattleText8:
-	TX_FAR _Route19AfterBattleText8
-	db "@"
+	text_far _Route19AfterBattleText8
+	text_end
 
 Route19BattleText9:
-	TX_FAR _Route19BattleText9
-	db "@"
+	text_far _Route19BattleText9
+	text_end
 
 Route19EndBattleText9:
-	TX_FAR _Route19EndBattleText9
-	db "@"
+	text_far _Route19EndBattleText9
+	text_end
 
 Route19AfterBattleText9:
-	TX_FAR _Route19AfterBattleText9
-	db "@"
+	text_far _Route19AfterBattleText9
+	text_end
 
 Route19BattleText10:
-	TX_FAR _Route19BattleText10
-	db "@"
+	text_far _Route19BattleText10
+	text_end
 
 Route19EndBattleText10:
-	TX_FAR _Route19EndBattleText10
-	db "@"
+	text_far _Route19EndBattleText10
+	text_end
 
 Route19AfterBattleText10:
-	TX_FAR _Route19AfterBattleText10
-	db "@"
+	text_far _Route19AfterBattleText10
+	text_end
 
 Route19Text11:
-	TX_FAR _Route19Text11
-	db "@"
+	text_far _Route19Text11
+	text_end
--- a/scripts/Route2.asm
+++ b/scripts/Route2.asm
@@ -8,9 +8,9 @@
 	dw Route2Text4
 
 Route2Text3:
-	TX_FAR _Route2Text3
-	db "@"
+	text_far _Route2Text3
+	text_end
 
 Route2Text4:
-	TX_FAR _Route2Text4
-	db "@"
+	text_far _Route2Text4
+	text_end
--- a/scripts/Route20.asm
+++ b/scripts/Route20.asm
@@ -168,186 +168,186 @@
 	db $ff
 
 Route20Text1:
-	TX_ASM
+	text_asm
 	ld hl, Route20TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route20Text2:
-	TX_ASM
+	text_asm
 	ld hl, Route20TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route20Text3:
-	TX_ASM
+	text_asm
 	ld hl, Route20TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route20Text4:
-	TX_ASM
+	text_asm
 	ld hl, Route20TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route20Text5:
-	TX_ASM
+	text_asm
 	ld hl, Route20TrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route20Text6:
-	TX_ASM
+	text_asm
 	ld hl, Route20TrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route20Text7:
-	TX_ASM
+	text_asm
 	ld hl, Route20TrainerHeader6
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route20Text8:
-	TX_ASM
+	text_asm
 	ld hl, Route20TrainerHeader7
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route20Text9:
-	TX_ASM
+	text_asm
 	ld hl, Route20TrainerHeader8
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route20Text10:
-	TX_ASM
+	text_asm
 	ld hl, Route20TrainerHeader9
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route20BattleText1:
-	TX_FAR _Route20BattleText1
-	db "@"
+	text_far _Route20BattleText1
+	text_end
 
 Route20EndBattleText1:
-	TX_FAR _Route20EndBattleText1
-	db "@"
+	text_far _Route20EndBattleText1
+	text_end
 
 Route20AfterBattleText1:
-	TX_FAR _Route20AfterBattleText1
-	db "@"
+	text_far _Route20AfterBattleText1
+	text_end
 
 Route20BattleText2:
-	TX_FAR _Route20BattleText2
-	db "@"
+	text_far _Route20BattleText2
+	text_end
 
 Route20EndBattleText2:
-	TX_FAR _Route20EndBattleText2
-	db "@"
+	text_far _Route20EndBattleText2
+	text_end
 
 Route20AfterBattleText2:
-	TX_FAR _Route20AfterBattleText2
-	db "@"
+	text_far _Route20AfterBattleText2
+	text_end
 
 Route20BattleText3:
-	TX_FAR _Route20BattleText3
-	db "@"
+	text_far _Route20BattleText3
+	text_end
 
 Route20EndBattleText3:
-	TX_FAR _Route20EndBattleText3
-	db "@"
+	text_far _Route20EndBattleText3
+	text_end
 
 Route20AfterBattleText3:
-	TX_FAR _Route20AfterBattleText3
-	db "@"
+	text_far _Route20AfterBattleText3
+	text_end
 
 Route20BattleText4:
-	TX_FAR _Route20BattleText4
-	db "@"
+	text_far _Route20BattleText4
+	text_end
 
 Route20EndBattleText4:
-	TX_FAR _Route20EndBattleText4
-	db "@"
+	text_far _Route20EndBattleText4
+	text_end
 
 Route20AfterBattleText4:
-	TX_FAR _Route20AfterBattleText4
-	db "@"
+	text_far _Route20AfterBattleText4
+	text_end
 
 Route20BattleText5:
-	TX_FAR _Route20BattleText5
-	db "@"
+	text_far _Route20BattleText5
+	text_end
 
 Route20EndBattleText5:
-	TX_FAR _Route20EndBattleText5
-	db "@"
+	text_far _Route20EndBattleText5
+	text_end
 
 Route20AfterBattleText5:
-	TX_FAR _Route20AfterBattleText5
-	db "@"
+	text_far _Route20AfterBattleText5
+	text_end
 
 Route20BattleText6:
-	TX_FAR _Route20BattleText6
-	db "@"
+	text_far _Route20BattleText6
+	text_end
 
 Route20EndBattleText6:
-	TX_FAR _Route20EndBattleText6
-	db "@"
+	text_far _Route20EndBattleText6
+	text_end
 
 Route20AfterBattleText6:
-	TX_FAR _Route20AfterBattleText6
-	db "@"
+	text_far _Route20AfterBattleText6
+	text_end
 
 Route20BattleText7:
-	TX_FAR _Route20BattleText7
-	db "@"
+	text_far _Route20BattleText7
+	text_end
 
 Route20EndBattleText7:
-	TX_FAR _Route20EndBattleText7
-	db "@"
+	text_far _Route20EndBattleText7
+	text_end
 
 Route20AfterBattleText7:
-	TX_FAR _Route20AfterBattleText7
-	db "@"
+	text_far _Route20AfterBattleText7
+	text_end
 
 Route20BattleText8:
-	TX_FAR _Route20BattleText8
-	db "@"
+	text_far _Route20BattleText8
+	text_end
 
 Route20EndBattleText8:
-	TX_FAR _Route20EndBattleText8
-	db "@"
+	text_far _Route20EndBattleText8
+	text_end
 
 Route20AfterBattleText8:
-	TX_FAR _Route20AfterBattleText8
-	db "@"
+	text_far _Route20AfterBattleText8
+	text_end
 
 Route20BattleText9:
-	TX_FAR _Route20BattleText9
-	db "@"
+	text_far _Route20BattleText9
+	text_end
 
 Route20EndBattleText9:
-	TX_FAR _Route20EndBattleText9
-	db "@"
+	text_far _Route20EndBattleText9
+	text_end
 
 Route20AfterBattleText9:
-	TX_FAR _Route20AfterBattleText9
-	db "@"
+	text_far _Route20AfterBattleText9
+	text_end
 
 Route20BattleText10:
-	TX_FAR _Route20BattleText10
-	db "@"
+	text_far _Route20BattleText10
+	text_end
 
 Route20EndBattleText10:
-	TX_FAR _Route20EndBattleText10
-	db "@"
+	text_far _Route20EndBattleText10
+	text_end
 
 Route20AfterBattleText10:
-	TX_FAR _Route20AfterBattleText10
-	db "@"
+	text_far _Route20AfterBattleText10
+	text_end
 
 Route20Text12:
 Route20Text11:
-	TX_FAR _Route20Text11
-	db "@"
+	text_far _Route20Text11
+	text_end
--- a/scripts/Route21.asm
+++ b/scripts/Route21.asm
@@ -107,163 +107,163 @@
 	db $ff
 
 Route21Text1:
-	TX_ASM
+	text_asm
 	ld hl, Route21TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route21Text2:
-	TX_ASM
+	text_asm
 	ld hl, Route21TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route21Text3:
-	TX_ASM
+	text_asm
 	ld hl, Route21TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route21Text4:
-	TX_ASM
+	text_asm
 	ld hl, Route21TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route21Text5:
-	TX_ASM
+	text_asm
 	ld hl, Route21TrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route21Text6:
-	TX_ASM
+	text_asm
 	ld hl, Route21TrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route21Text7:
-	TX_ASM
+	text_asm
 	ld hl, Route21TrainerHeader6
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route21Text8:
-	TX_ASM
+	text_asm
 	ld hl, Route21TrainerHeader7
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route21Text9:
-	TX_ASM
+	text_asm
 	ld hl, Route21TrainerHeader8
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route21BattleText1:
-	TX_FAR _Route21BattleText1
-	db "@"
+	text_far _Route21BattleText1
+	text_end
 
 Route21EndBattleText1:
-	TX_FAR _Route21EndBattleText1
-	db "@"
+	text_far _Route21EndBattleText1
+	text_end
 
 Route21AfterBattleText1:
-	TX_FAR _Route21AfterBattleText1
-	db "@"
+	text_far _Route21AfterBattleText1
+	text_end
 
 Route21BattleText2:
-	TX_FAR _Route21BattleText2
-	db "@"
+	text_far _Route21BattleText2
+	text_end
 
 Route21EndBattleText2:
-	TX_FAR _Route21EndBattleText2
-	db "@"
+	text_far _Route21EndBattleText2
+	text_end
 
 Route21AfterBattleText2:
-	TX_FAR _Route21AfterBattleText2
-	db "@"
+	text_far _Route21AfterBattleText2
+	text_end
 
 Route21BattleText3:
-	TX_FAR _Route21BattleText3
-	db "@"
+	text_far _Route21BattleText3
+	text_end
 
 Route21EndBattleText3:
-	TX_FAR _Route21EndBattleText3
-	db "@"
+	text_far _Route21EndBattleText3
+	text_end
 
 Route21AfterBattleText3:
-	TX_FAR _Route21AfterBattleText3
-	db "@"
+	text_far _Route21AfterBattleText3
+	text_end
 
 Route21BattleText4:
-	TX_FAR _Route21BattleText4
-	db "@"
+	text_far _Route21BattleText4
+	text_end
 
 Route21EndBattleText4:
-	TX_FAR _Route21EndBattleText4
-	db "@"
+	text_far _Route21EndBattleText4
+	text_end
 
 Route21AfterBattleText4:
-	TX_FAR _Route21AfterBattleText4
-	db "@"
+	text_far _Route21AfterBattleText4
+	text_end
 
 Route21BattleText5:
-	TX_FAR _Route21BattleText5
-	db "@"
+	text_far _Route21BattleText5
+	text_end
 
 Route21EndBattleText5:
-	TX_FAR _Route21EndBattleText5
-	db "@"
+	text_far _Route21EndBattleText5
+	text_end
 
 Route21AfterBattleText5:
-	TX_FAR _Route21AfterBattleText5
-	db "@"
+	text_far _Route21AfterBattleText5
+	text_end
 
 Route21BattleText6:
-	TX_FAR _Route21BattleText6
-	db "@"
+	text_far _Route21BattleText6
+	text_end
 
 Route21EndBattleText6:
-	TX_FAR _Route21EndBattleText6
-	db "@"
+	text_far _Route21EndBattleText6
+	text_end
 
 Route21AfterBattleText6:
-	TX_FAR _Route21AfterBattleText6
-	db "@"
+	text_far _Route21AfterBattleText6
+	text_end
 
 Route21BattleText7:
-	TX_FAR _Route21BattleText7
-	db "@"
+	text_far _Route21BattleText7
+	text_end
 
 Route21EndBattleText7:
-	TX_FAR _Route21EndBattleText7
-	db "@"
+	text_far _Route21EndBattleText7
+	text_end
 
 Route21AfterBattleText7:
-	TX_FAR _Route21AfterBattleText7
-	db "@"
+	text_far _Route21AfterBattleText7
+	text_end
 
 Route21BattleText8:
-	TX_FAR _Route21BattleText8
-	db "@"
+	text_far _Route21BattleText8
+	text_end
 
 Route21EndBattleText8:
-	TX_FAR _Route21EndBattleText8
-	db "@"
+	text_far _Route21EndBattleText8
+	text_end
 
 Route21AfterBattleText8:
-	TX_FAR _Route21AfterBattleText8
-	db "@"
+	text_far _Route21AfterBattleText8
+	text_end
 
 Route21BattleText9:
-	TX_FAR _Route21BattleText9
-	db "@"
+	text_far _Route21BattleText9
+	text_end
 
 Route21EndBattleText9:
-	TX_FAR _Route21EndBattleText9
-	db "@"
+	text_far _Route21EndBattleText9
+	text_end
 
 Route21AfterBattleText9:
-	TX_FAR _Route21AfterBattleText9
-	db "@"
+	text_far _Route21AfterBattleText9
+	text_end
--- a/scripts/Route22.asm
+++ b/scripts/Route22.asm
@@ -383,7 +383,7 @@
 	dw Route22FrontGateText
 
 Route22Text1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE
 	jr z, .asm_5118b
 	ld hl, Route22RivalAfterBattleText1
@@ -396,7 +396,7 @@
 	jp TextScriptEnd
 
 Route22Text2:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE
 	jr z, .asm_511a4
 	ld hl, Route22RivalAfterBattleText2
@@ -409,37 +409,37 @@
 	jp TextScriptEnd
 
 Route22RivalBeforeBattleText1:
-	TX_FAR _Route22RivalBeforeBattleText1
-	db "@"
+	text_far _Route22RivalBeforeBattleText1
+	text_end
 
 Route22RivalAfterBattleText1:
-	TX_FAR _Route22RivalAfterBattleText1
-	db "@"
+	text_far _Route22RivalAfterBattleText1
+	text_end
 
 Route22RivalDefeatedText1:
-	TX_FAR _Route22RivalDefeatedText1
-	db "@"
+	text_far _Route22RivalDefeatedText1
+	text_end
 
 Route22Text_511bc:
-	TX_FAR _Route22Text_511bc
-	db "@"
+	text_far _Route22Text_511bc
+	text_end
 
 Route22RivalBeforeBattleText2:
-	TX_FAR _Route22RivalBeforeBattleText2
-	db "@"
+	text_far _Route22RivalBeforeBattleText2
+	text_end
 
 Route22RivalAfterBattleText2:
-	TX_FAR _Route22RivalAfterBattleText2
-	db "@"
+	text_far _Route22RivalAfterBattleText2
+	text_end
 
 Route22RivalDefeatedText2:
-	TX_FAR _Route22RivalDefeatedText2
-	db "@"
+	text_far _Route22RivalDefeatedText2
+	text_end
 
 Route22Text_511d0:
-	TX_FAR _Route22Text_511d0
-	db "@"
+	text_far _Route22Text_511d0
+	text_end
 
 Route22FrontGateText:
-	TX_FAR _Route22FrontGateText
-	db "@"
+	text_far _Route22FrontGateText
+	text_end
--- a/scripts/Route22Gate.asm
+++ b/scripts/Route22Gate.asm
@@ -57,7 +57,7 @@
 	dw Route22GateText1
 
 Route22GateText1:
-	TX_ASM
+	text_asm
 	ld a, [wObtainedBadges]
 	bit 0, a
 	jr nz, .asm_1e6f6
@@ -75,8 +75,8 @@
 	jp TextScriptEnd
 
 Route22GateText_1e704:
-	TX_FAR _Route22GateText_1e704
-	TX_ASM
+	text_far _Route22GateText_1e704
+	text_asm
 	ld a, SFX_DENIED
 	call PlaySoundWaitForCurrent
 	call WaitForSoundToFinish
@@ -84,10 +84,10 @@
 	ret
 
 Route22GateText_1e715:
-	TX_FAR _Route22GateText_1e715
-	db "@"
+	text_far _Route22GateText_1e715
+	text_end
 
 Route22GateText_1e71a:
-	TX_FAR _Route22GateText_1e71a
-	TX_SFX_ITEM_1
-	db "@"
+	text_far _Route22GateText_1e71a
+	sound_get_item_1
+	text_end
--- a/scripts/Route23.asm
+++ b/scripts/Route23.asm
@@ -142,43 +142,43 @@
 	dw Route23Text8
 
 Route23Text1:
-	TX_ASM
+	text_asm
 	EventFlagBit a, EVENT_PASSED_EARTHBADGE_CHECK, EVENT_PASSED_CASCADEBADGE_CHECK
 	call Route23Script_51346
 	jp TextScriptEnd
 
 Route23Text2:
-	TX_ASM
+	text_asm
 	EventFlagBit a, EVENT_PASSED_VOLCANOBADGE_CHECK, EVENT_PASSED_CASCADEBADGE_CHECK
 	call Route23Script_51346
 	jp TextScriptEnd
 
 Route23Text3:
-	TX_ASM
+	text_asm
 	EventFlagBit a, EVENT_PASSED_MARSHBADGE_CHECK, EVENT_PASSED_CASCADEBADGE_CHECK
 	call Route23Script_51346
 	jp TextScriptEnd
 
 Route23Text4:
-	TX_ASM
+	text_asm
 	EventFlagBit a, EVENT_PASSED_SOULBADGE_CHECK, EVENT_PASSED_CASCADEBADGE_CHECK
 	call Route23Script_51346
 	jp TextScriptEnd
 
 Route23Text5:
-	TX_ASM
+	text_asm
 	EventFlagBit a, EVENT_PASSED_RAINBOWBADGE_CHECK, EVENT_PASSED_CASCADEBADGE_CHECK
 	call Route23Script_51346
 	jp TextScriptEnd
 
 Route23Text6:
-	TX_ASM
+	text_asm
 	EventFlagBit a, EVENT_PASSED_THUNDERBADGE_CHECK, EVENT_PASSED_CASCADEBADGE_CHECK
 	call Route23Script_51346
 	jp TextScriptEnd
 
 Route23Text7:
-	TX_ASM
+	text_asm
 	EventFlagBit a, EVENT_PASSED_CASCADEBADGE_CHECK
 	call Route23Script_51346
 	jp TextScriptEnd
@@ -218,8 +218,8 @@
 	jp PrintText
 
 VictoryRoadGuardText1:
-	TX_FAR _VictoryRoadGuardText1
-	TX_ASM
+	text_far _VictoryRoadGuardText1
+	text_asm
 	ld a, SFX_DENIED
 	call PlaySoundWaitForCurrent
 	call WaitForSoundToFinish
@@ -226,11 +226,11 @@
 	jp TextScriptEnd
 
 VictoryRoadGuardText2:
-	TX_FAR _VictoryRoadGuardText2
-	TX_SFX_ITEM_1
-	TX_FAR _VictoryRoadGuardText_513a3
-	db "@"
+	text_far _VictoryRoadGuardText2
+	sound_get_item_1
+	text_far _VictoryRoadGuardText_513a3
+	text_end
 
 Route23Text8:
-	TX_FAR _Route23Text8
-	db "@"
+	text_far _Route23Text8
+	text_end
--- a/scripts/Route24.asm
+++ b/scripts/Route24.asm
@@ -142,7 +142,7 @@
 	db $ff
 
 Route24Text1:
-	TX_ASM
+	text_asm
 	ResetEvent EVENT_NUGGET_REWARD_AVAILABLE
 	CheckEvent EVENT_GOT_NUGGET
 	jr nz, .asm_514f9
@@ -183,137 +183,137 @@
 	jp TextScriptEnd
 
 Route24Text_51510:
-	TX_FAR _Route24Text_51510
-	TX_SFX_ITEM_1
-	TX_FAR _Route24Text_51515
-	db "@"
+	text_far _Route24Text_51510
+	sound_get_item_1
+	text_far _Route24Text_51515
+	text_end
 
 Route24Text_5151a:
-	TX_FAR _Route24Text_5151a
-	TX_SFX_ITEM_1
-	TX_BLINK
-	db "@"
+	text_far _Route24Text_5151a
+	sound_get_item_1
+	text_promptbutton
+	text_end
 
 Route24Text_51521:
-	TX_FAR _Route24Text_51521
-	db "@"
+	text_far _Route24Text_51521
+	text_end
 
 Route24Text_51526:
-	TX_FAR _Route24Text_51526
-	db "@"
+	text_far _Route24Text_51526
+	text_end
 
 Route24Text_5152b:
-	TX_FAR _Route24Text_5152b
-	db "@"
+	text_far _Route24Text_5152b
+	text_end
 
 Route24Text_51530:
-	TX_FAR _Route24Text_51530
-	db "@"
+	text_far _Route24Text_51530
+	text_end
 
 Route24Text2:
-	TX_ASM
+	text_asm
 	ld hl, Route24TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route24Text3:
-	TX_ASM
+	text_asm
 	ld hl, Route24TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route24Text4:
-	TX_ASM
+	text_asm
 	ld hl, Route24TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route24Text5:
-	TX_ASM
+	text_asm
 	ld hl, Route24TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route24Text6:
-	TX_ASM
+	text_asm
 	ld hl, Route24TrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route24Text7:
-	TX_ASM
+	text_asm
 	ld hl, Route24TrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route24BattleText1:
-	TX_FAR _Route24BattleText1
-	db "@"
+	text_far _Route24BattleText1
+	text_end
 
 Route24EndBattleText1:
-	TX_FAR _Route24EndBattleText1
-	db "@"
+	text_far _Route24EndBattleText1
+	text_end
 
 Route24AfterBattleText1:
-	TX_FAR _Route24AfterBattleText1
-	db "@"
+	text_far _Route24AfterBattleText1
+	text_end
 
 Route24BattleText2:
-	TX_FAR _Route24BattleText2
-	db "@"
+	text_far _Route24BattleText2
+	text_end
 
 Route24EndBattleText2:
-	TX_FAR _Route24EndBattleText2
-	db "@"
+	text_far _Route24EndBattleText2
+	text_end
 
 Route24AfterBattleText2:
-	TX_FAR _Route24AfterBattleText2
-	db "@"
+	text_far _Route24AfterBattleText2
+	text_end
 
 Route24BattleText3:
-	TX_FAR _Route24BattleText3
-	db "@"
+	text_far _Route24BattleText3
+	text_end
 
 Route24EndBattleText3:
-	TX_FAR _Route24EndBattleText3
-	db "@"
+	text_far _Route24EndBattleText3
+	text_end
 
 Route24AfterBattleText3:
-	TX_FAR _Route24AfterBattleText3
-	db "@"
+	text_far _Route24AfterBattleText3
+	text_end
 
 Route24BattleText4:
-	TX_FAR _Route24BattleText4
-	db "@"
+	text_far _Route24BattleText4
+	text_end
 
 Route24EndBattleText4:
-	TX_FAR _Route24EndBattleText4
-	db "@"
+	text_far _Route24EndBattleText4
+	text_end
 
 Route24AfterBattleText4:
-	TX_FAR _Route24AfterBattleText4
-	db "@"
+	text_far _Route24AfterBattleText4
+	text_end
 
 Route24BattleText5:
-	TX_FAR _Route24BattleText5
-	db "@"
+	text_far _Route24BattleText5
+	text_end
 
 Route24EndBattleText5:
-	TX_FAR _Route24EndBattleText5
-	db "@"
+	text_far _Route24EndBattleText5
+	text_end
 
 Route24AfterBattleText5:
-	TX_FAR _Route24AfterBattleText5
-	db "@"
+	text_far _Route24AfterBattleText5
+	text_end
 
 Route24BattleText6:
-	TX_FAR _Route24BattleText6
-	db "@"
+	text_far _Route24BattleText6
+	text_end
 
 Route24EndBattleText6:
-	TX_FAR _Route24EndBattleText6
-	db "@"
+	text_far _Route24EndBattleText6
+	text_end
 
 Route24AfterBattleText6:
-	TX_FAR _Route24AfterBattleText6
-	db "@"
+	text_far _Route24AfterBattleText6
+	text_end
--- a/scripts/Route25.asm
+++ b/scripts/Route25.asm
@@ -137,167 +137,167 @@
 	db $ff
 
 Route25Text1:
-	TX_ASM
+	text_asm
 	ld hl, Route25TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route25Text2:
-	TX_ASM
+	text_asm
 	ld hl, Route25TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route25Text3:
-	TX_ASM
+	text_asm
 	ld hl, Route25TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route25Text4:
-	TX_ASM
+	text_asm
 	ld hl, Route25TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route25Text5:
-	TX_ASM
+	text_asm
 	ld hl, Route25TrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route25Text6:
-	TX_ASM
+	text_asm
 	ld hl, Route25TrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route25Text7:
-	TX_ASM
+	text_asm
 	ld hl, Route25TrainerHeader6
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route25Text8:
-	TX_ASM
+	text_asm
 	ld hl, Route25TrainerHeader7
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route25Text9:
-	TX_ASM
+	text_asm
 	ld hl, Route25TrainerHeader8
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route25BattleText1:
-	TX_FAR _Route25BattleText1
-	db "@"
+	text_far _Route25BattleText1
+	text_end
 
 Route25EndBattleText1:
-	TX_FAR _Route25EndBattleText1
-	db "@"
+	text_far _Route25EndBattleText1
+	text_end
 
 Route25AfterBattleText1:
-	TX_FAR _Route25AfterBattleText1
-	db "@"
+	text_far _Route25AfterBattleText1
+	text_end
 
 Route25BattleText2:
-	TX_FAR _Route25BattleText2
-	db "@"
+	text_far _Route25BattleText2
+	text_end
 
 Route25EndBattleText2:
-	TX_FAR _Route25EndBattleText2
-	db "@"
+	text_far _Route25EndBattleText2
+	text_end
 
 Route25AfterBattleText2:
-	TX_FAR _Route25AfterBattleText2
-	db "@"
+	text_far _Route25AfterBattleText2
+	text_end
 
 Route25BattleText3:
-	TX_FAR _Route25BattleText3
-	db "@"
+	text_far _Route25BattleText3
+	text_end
 
 Route25EndBattleText3:
-	TX_FAR _Route25EndBattleText3
-	db "@"
+	text_far _Route25EndBattleText3
+	text_end
 
 Route25AfterBattleText3:
-	TX_FAR _Route25AfterBattleText3
-	db "@"
+	text_far _Route25AfterBattleText3
+	text_end
 
 Route25BattleText4:
-	TX_FAR _Route25BattleText4
-	db "@"
+	text_far _Route25BattleText4
+	text_end
 
 Route25EndBattleText4:
-	TX_FAR _Route25EndBattleText4
-	db "@"
+	text_far _Route25EndBattleText4
+	text_end
 
 Route25AfterBattleText4:
-	TX_FAR _Route25AfterBattleText4
-	db "@"
+	text_far _Route25AfterBattleText4
+	text_end
 
 Route25BattleText5:
-	TX_FAR _Route25BattleText5
-	db "@"
+	text_far _Route25BattleText5
+	text_end
 
 Route25EndBattleText5:
-	TX_FAR _Route25EndBattleText5
-	db "@"
+	text_far _Route25EndBattleText5
+	text_end
 
 Route25AfterBattleText5:
-	TX_FAR _Route25AfterBattleText5
-	db "@"
+	text_far _Route25AfterBattleText5
+	text_end
 
 Route25BattleText6:
-	TX_FAR _Route25BattleText6
-	db "@"
+	text_far _Route25BattleText6
+	text_end
 
 Route25EndBattleText6:
-	TX_FAR _Route25EndBattleText6
-	db "@"
+	text_far _Route25EndBattleText6
+	text_end
 
 Route25AfterBattleText6:
-	TX_FAR _Route25AfterBattleText6
-	db "@"
+	text_far _Route25AfterBattleText6
+	text_end
 
 Route25BattleText7:
-	TX_FAR _Route25BattleText7
-	db "@"
+	text_far _Route25BattleText7
+	text_end
 
 Route25EndBattleText7:
-	TX_FAR _Route25EndBattleText7
-	db "@"
+	text_far _Route25EndBattleText7
+	text_end
 
 Route25AfterBattleText7:
-	TX_FAR _Route25AfterBattleText7
-	db "@"
+	text_far _Route25AfterBattleText7
+	text_end
 
 Route25BattleText8:
-	TX_FAR _Route25BattleText8
-	db "@"
+	text_far _Route25BattleText8
+	text_end
 
 Route25EndBattleText8:
-	TX_FAR _Route25EndBattleText8
-	db "@"
+	text_far _Route25EndBattleText8
+	text_end
 
 Route25AfterBattleText8:
-	TX_FAR _Route25AfterBattleText8
-	db "@"
+	text_far _Route25AfterBattleText8
+	text_end
 
 Route25BattleText9:
-	TX_FAR _Route25BattleText9
-	db "@"
+	text_far _Route25BattleText9
+	text_end
 
 Route25EndBattleText9:
-	TX_FAR _Route25EndBattleText9
-	db "@"
+	text_far _Route25EndBattleText9
+	text_end
 
 Route25AfterBattleText9:
-	TX_FAR _Route25AfterBattleText9
-	db "@"
+	text_far _Route25AfterBattleText9
+	text_end
 
 Route25Text11:
-	TX_FAR _Route25Text11
-	db "@"
+	text_far _Route25Text11
+	text_end
--- a/scripts/Route2Gate.asm
+++ b/scripts/Route2Gate.asm
@@ -6,7 +6,7 @@
 	dw Route2GateText2
 
 Route2GateText1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_HM05
 	jr nz, .asm_5d60d
 	ld a, 10 ; pokemon needed
@@ -31,9 +31,9 @@
 	jp TextScriptEnd
 
 Route2GateText_5d616:
-	TX_FAR _Route2GateText_5d616
-	db "@"
+	text_far _Route2GateText_5d616
+	text_end
 
 Route2GateText2:
-	TX_FAR _Route2GateText2
-	db "@"
+	text_far _Route2GateText2
+	text_end
--- a/scripts/Route2TradeHouse.asm
+++ b/scripts/Route2TradeHouse.asm
@@ -6,11 +6,11 @@
 	dw Route2HouseText2
 
 Route2HouseText1:
-	TX_FAR _Route2HouseText1
-	db "@"
+	text_far _Route2HouseText1
+	text_end
 
 Route2HouseText2:
-	TX_ASM
+	text_asm
 	ld a, $1
 	ld [wWhichTrade], a
 	predef DoInGameTradeDialogue
--- a/scripts/Route3.asm
+++ b/scripts/Route3.asm
@@ -99,153 +99,153 @@
 	db $ff
 
 Route3Text1:
-	TX_FAR _Route3Text1
-	db "@"
+	text_far _Route3Text1
+	text_end
 
 Route3Text2:
-	TX_ASM
+	text_asm
 	ld hl, Route3TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route3BattleText1:
-	TX_FAR _Route3BattleText1
-	db "@"
+	text_far _Route3BattleText1
+	text_end
 
 Route3EndBattleText1:
-	TX_FAR _Route3EndBattleText1
-	db "@"
+	text_far _Route3EndBattleText1
+	text_end
 
 Route3AfterBattleText1:
-	TX_FAR _Route3AfterBattleText1
-	db "@"
+	text_far _Route3AfterBattleText1
+	text_end
 
 Route3Text3:
-	TX_ASM
+	text_asm
 	ld hl, Route3TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route3BattleText2:
-	TX_FAR _Route3BattleText2
-	db "@"
+	text_far _Route3BattleText2
+	text_end
 
 Route3EndBattleText2:
-	TX_FAR _Route3EndBattleText2
-	db "@"
+	text_far _Route3EndBattleText2
+	text_end
 
 Route3AfterBattleText2:
-	TX_FAR _Route3AfterBattleText2
-	db "@"
+	text_far _Route3AfterBattleText2
+	text_end
 
 Route3Text4:
-	TX_ASM
+	text_asm
 	ld hl, Route3TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route3BattleText3:
-	TX_FAR _Route3BattleText3
-	db "@"
+	text_far _Route3BattleText3
+	text_end
 
 Route3EndBattleText3:
-	TX_FAR _Route3EndBattleText3
-	db "@"
+	text_far _Route3EndBattleText3
+	text_end
 
 Route3AfterBattleText3:
-	TX_FAR _Route3AfterBattleText3
-	db "@"
+	text_far _Route3AfterBattleText3
+	text_end
 
 Route3Text5:
-	TX_ASM
+	text_asm
 	ld hl, Route3TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route3BattleText4:
-	TX_FAR _Route3BattleText4
-	db "@"
+	text_far _Route3BattleText4
+	text_end
 
 Route3EndBattleText4:
-	TX_FAR _Route3EndBattleText4
-	db "@"
+	text_far _Route3EndBattleText4
+	text_end
 
 Route3AfterBattleText4:
-	TX_FAR _Route3AfterBattleText4
-	db "@"
+	text_far _Route3AfterBattleText4
+	text_end
 
 Route3Text6:
-	TX_ASM
+	text_asm
 	ld hl, Route3TrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route3BattleText5:
-	TX_FAR _Route3BattleText5
-	db "@"
+	text_far _Route3BattleText5
+	text_end
 
 Route3EndBattleText5:
-	TX_FAR _Route3EndBattleText5
-	db "@"
+	text_far _Route3EndBattleText5
+	text_end
 
 Route3AfterBattleText5:
-	TX_FAR _Route3AfterBattleText5
-	db "@"
+	text_far _Route3AfterBattleText5
+	text_end
 
 Route3Text7:
-	TX_ASM
+	text_asm
 	ld hl, Route3TrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route3BattleText6:
-	TX_FAR _Route3BattleText6
-	db "@"
+	text_far _Route3BattleText6
+	text_end
 
 Route3EndBattleText6:
-	TX_FAR _Route3EndBattleText6
-	db "@"
+	text_far _Route3EndBattleText6
+	text_end
 
 Route3AfterBattleText6:
-	TX_FAR _Route3AfterBattleText6
-	db "@"
+	text_far _Route3AfterBattleText6
+	text_end
 
 Route3Text8:
-	TX_ASM
+	text_asm
 	ld hl, Route3TrainerHeader6
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route3BattleText7:
-	TX_FAR _Route3BattleText7
-	db "@"
+	text_far _Route3BattleText7
+	text_end
 
 Route3EndBattleText7:
-	TX_FAR _Route3EndBattleText7
-	db "@"
+	text_far _Route3EndBattleText7
+	text_end
 
 Route3AfterBattleText7:
-	TX_FAR _Route3AfterBattleText7
-	db "@"
+	text_far _Route3AfterBattleText7
+	text_end
 
 Route3Text9:
-	TX_ASM
+	text_asm
 	ld hl, Route3TrainerHeader7
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route3BattleText8:
-	TX_FAR _Route3BattleText8
-	db "@"
+	text_far _Route3BattleText8
+	text_end
 
 Route3EndBattleText8:
-	TX_FAR _Route3EndBattleText8
-	db "@"
+	text_far _Route3EndBattleText8
+	text_end
 
 Route3AfterBattleText8:
-	TX_FAR _Route3AfterBattleText8
-	db "@"
+	text_far _Route3AfterBattleText8
+	text_end
 
 Route3Text10:
-	TX_FAR _Route3Text10
-	db "@"
+	text_far _Route3Text10
+	text_end
--- a/scripts/Route4.asm
+++ b/scripts/Route4.asm
@@ -32,31 +32,31 @@
 	db $ff
 
 Route4Text1:
-	TX_FAR _Route4Text1
-	db "@"
+	text_far _Route4Text1
+	text_end
 
 Route4Text2:
-	TX_ASM
+	text_asm
 	ld hl, Route4TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route4BattleText1:
-	TX_FAR _Route4BattleText1
-	db "@"
+	text_far _Route4BattleText1
+	text_end
 
 Route4EndBattleText1:
-	TX_FAR _Route4EndBattleText1
-	db "@"
+	text_far _Route4EndBattleText1
+	text_end
 
 Route4AfterBattleText1:
-	TX_FAR _Route4AfterBattleText1
-	db "@"
+	text_far _Route4AfterBattleText1
+	text_end
 
 Route4Text5:
-	TX_FAR _Route4Text5
-	db "@"
+	text_far _Route4Text5
+	text_end
 
 Route4Text6:
-	TX_FAR _Route4Text6
-	db "@"
+	text_far _Route4Text6
+	text_end
--- a/scripts/Route5.asm
+++ b/scripts/Route5.asm
@@ -5,5 +5,5 @@
 	dw Route5Text1
 
 Route5Text1:
-	TX_FAR _Route5Text1
-	db "@"
+	text_far _Route5Text1
+	text_end
--- a/scripts/Route5Gate.asm
+++ b/scripts/Route5Gate.asm
@@ -69,7 +69,7 @@
 Route7GateText1:
 Route6GateText1:
 Route5GateText1:
-	TX_ASM
+	text_asm
 	ld a, [wd728]
 	bit 6, a
 	jr nz, .asm_88856
@@ -98,20 +98,20 @@
 Route7GateText2:
 Route6GateText2:
 Route5GateText2:
-	TX_FAR _SaffronGateText_1dfe7
-	db "@"
+	text_far _SaffronGateText_1dfe7
+	text_end
 
 Route8GateText3:
 Route7GateText3:
 Route6GateText3:
 Route5GateText3:
-	TX_FAR _SaffronGateText_8aaa9
-	TX_SFX_KEY_ITEM
-	TX_FAR _SaffronGateText_1dff1
-	db "@"
+	text_far _SaffronGateText_8aaa9
+	sound_get_key_item
+	text_far _SaffronGateText_1dff1
+	text_end
 
 SaffronGateText_1dff6:
-	TX_FAR _SaffronGateText_1dff6
-	db "@"
+	text_far _SaffronGateText_1dff6
+	text_end
 
 
--- a/scripts/Route6.asm
+++ b/scripts/Route6.asm
@@ -78,109 +78,109 @@
 	db $ff
 
 Route6Text1:
-	TX_ASM
+	text_asm
 	ld hl, Route6TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route6BattleText1:
-	TX_FAR _Route6BattleText1
-	db "@"
+	text_far _Route6BattleText1
+	text_end
 
 Route6EndBattleText1:
-	TX_FAR _Route6EndBattleText1
-	db "@"
+	text_far _Route6EndBattleText1
+	text_end
 
 Route6AfterBattleText1:
-	TX_FAR _Route6AfterBattleText1
-	db "@"
+	text_far _Route6AfterBattleText1
+	text_end
 
 Route6Text2:
-	TX_ASM
+	text_asm
 	ld hl, Route6TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route6BattleText2:
-	TX_FAR _Route6BattleText2
-	db "@"
+	text_far _Route6BattleText2
+	text_end
 
 Route6EndBattleText2:
-	TX_FAR _Route6EndBattleText2
-	db "@"
+	text_far _Route6EndBattleText2
+	text_end
 
 Route6Text3:
-	TX_ASM
+	text_asm
 	ld hl, Route6TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route6BattleText3:
-	TX_FAR _Route6BattleText3
-	db "@"
+	text_far _Route6BattleText3
+	text_end
 
 Route6EndBattleText3:
-	TX_FAR _Route6EndBattleText3
-	db "@"
+	text_far _Route6EndBattleText3
+	text_end
 
 Route6AfterBattleText3:
-	TX_FAR _Route6AfterBattleText3
-	db "@"
+	text_far _Route6AfterBattleText3
+	text_end
 
 Route6Text4:
-	TX_ASM
+	text_asm
 	ld hl, Route6TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route6BattleText4:
-	TX_FAR _Route6BattleText4
-	db "@"
+	text_far _Route6BattleText4
+	text_end
 
 Route6EndBattleText4:
-	TX_FAR _Route6EndBattleText4
-	db "@"
+	text_far _Route6EndBattleText4
+	text_end
 
 Route6AfterBattleText4:
-	TX_FAR _Route6AfterBattleText4
-	db "@"
+	text_far _Route6AfterBattleText4
+	text_end
 
 Route6Text5:
-	TX_ASM
+	text_asm
 	ld hl, Route6TrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route6BattleText5:
-	TX_FAR _Route6BattleText5
-	db "@"
+	text_far _Route6BattleText5
+	text_end
 
 Route6EndBattleText5:
-	TX_FAR _Route6EndBattleText5
-	db "@"
+	text_far _Route6EndBattleText5
+	text_end
 
 Route6AfterBattleText5:
-	TX_FAR _Route6AfterBattleText5
-	db "@"
+	text_far _Route6AfterBattleText5
+	text_end
 
 Route6Text6:
-	TX_ASM
+	text_asm
 	ld hl, Route6TrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route6BattleText6:
-	TX_FAR _Route6BattleText6
-	db "@"
+	text_far _Route6BattleText6
+	text_end
 
 Route6EndBattleText6:
-	TX_FAR _Route6EndBattleText6
-	db "@"
+	text_far _Route6EndBattleText6
+	text_end
 
 Route6AfterBattleText6:
-	TX_FAR _Route6AfterBattleText6
-	db "@"
+	text_far _Route6AfterBattleText6
+	text_end
 
 Route6Text7:
-	TX_FAR _Route6Text7
-	db "@"
+	text_far _Route6Text7
+	text_end
--- a/scripts/Route7.asm
+++ b/scripts/Route7.asm
@@ -5,5 +5,5 @@
 	dw Route7Text1
 
 Route7Text1:
-	TX_FAR _Route7Text1
-	db "@"
+	text_far _Route7Text1
+	text_end
--- a/scripts/Route8.asm
+++ b/scripts/Route8.asm
@@ -108,167 +108,167 @@
 	db $ff
 
 Route8Text1:
-	TX_ASM
+	text_asm
 	ld hl, Route8TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route8BattleText1:
-	TX_FAR _Route8BattleText1
-	db "@"
+	text_far _Route8BattleText1
+	text_end
 
 Route8EndBattleText1:
-	TX_FAR _Route8EndBattleText1
-	db "@"
+	text_far _Route8EndBattleText1
+	text_end
 
 Route8AfterBattleText1:
-	TX_FAR _Route8AfterBattleText1
-	db "@"
+	text_far _Route8AfterBattleText1
+	text_end
 
 Route8Text2:
-	TX_ASM
+	text_asm
 	ld hl, Route8TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route8BattleText2:
-	TX_FAR _Route8BattleText2
-	db "@"
+	text_far _Route8BattleText2
+	text_end
 
 Route8EndBattleText2:
-	TX_FAR _Route8EndBattleText2
-	db "@"
+	text_far _Route8EndBattleText2
+	text_end
 
 Route8AfterBattleText2:
-	TX_FAR _Route8AfterBattleText2
-	db "@"
+	text_far _Route8AfterBattleText2
+	text_end
 
 Route8Text3:
-	TX_ASM
+	text_asm
 	ld hl, Route8TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route8BattleText3:
-	TX_FAR _Route8BattleText3
-	db "@"
+	text_far _Route8BattleText3
+	text_end
 
 Route8EndBattleText3:
-	TX_FAR _Route8EndBattleText3
-	db "@"
+	text_far _Route8EndBattleText3
+	text_end
 
 Route8AfterBattleText3:
-	TX_FAR _Route8AfterBattleText3
-	db "@"
+	text_far _Route8AfterBattleText3
+	text_end
 
 Route8Text4:
-	TX_ASM
+	text_asm
 	ld hl, Route8TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route8BattleText4:
-	TX_FAR _Route8BattleText4
-	db "@"
+	text_far _Route8BattleText4
+	text_end
 
 Route8EndBattleText4:
-	TX_FAR _Route8EndBattleText4
-	db "@"
+	text_far _Route8EndBattleText4
+	text_end
 
 Route8AfterBattleText4:
-	TX_FAR _Route8AfterBattleText4
-	db "@"
+	text_far _Route8AfterBattleText4
+	text_end
 
 Route8Text5:
-	TX_ASM
+	text_asm
 	ld hl, Route8TrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route8BattleText5:
-	TX_FAR _Route8BattleText5
-	db "@"
+	text_far _Route8BattleText5
+	text_end
 
 Route8EndBattleText5:
-	TX_FAR _Route8EndBattleText5
-	db "@"
+	text_far _Route8EndBattleText5
+	text_end
 
 Route8AfterBattleText5:
-	TX_FAR _Route8AfterBattleText5
-	db "@"
+	text_far _Route8AfterBattleText5
+	text_end
 
 Route8Text6:
-	TX_ASM
+	text_asm
 	ld hl, Route8TrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route8BattleText6:
-	TX_FAR _Route8BattleText6
-	db "@"
+	text_far _Route8BattleText6
+	text_end
 
 Route8EndBattleText6:
-	TX_FAR _Route8EndBattleText6
-	db "@"
+	text_far _Route8EndBattleText6
+	text_end
 
 Route8AfterBattleText6:
-	TX_FAR _Route8AfterBattleText6
-	db "@"
+	text_far _Route8AfterBattleText6
+	text_end
 
 Route8Text7:
-	TX_ASM
+	text_asm
 	ld hl, Route8TrainerHeader6
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route8BattleText7:
-	TX_FAR _Route8BattleText7
-	db "@"
+	text_far _Route8BattleText7
+	text_end
 
 Route8EndBattleText7:
-	TX_FAR _Route8EndBattleText7
-	db "@"
+	text_far _Route8EndBattleText7
+	text_end
 
 Route8AfterBattleText7:
-	TX_FAR _Route8AfterBattleText7
-	db "@"
+	text_far _Route8AfterBattleText7
+	text_end
 
 Route8Text8:
-	TX_ASM
+	text_asm
 	ld hl, Route8TrainerHeader7
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route8BattleText8:
-	TX_FAR _Route8BattleText8
-	db "@"
+	text_far _Route8BattleText8
+	text_end
 
 Route8EndBattleText8:
-	TX_FAR _Route8EndBattleText8
-	db "@"
+	text_far _Route8EndBattleText8
+	text_end
 
 Route8AfterBattleText8:
-	TX_FAR _Route8AfterBattleText8
-	db "@"
+	text_far _Route8AfterBattleText8
+	text_end
 
 Route8Text9:
-	TX_ASM
+	text_asm
 	ld hl, Route8TrainerHeader8
 	call TalkToTrainer
 	jp TextScriptEnd
 
 Route8BattleText9:
-	TX_FAR _Route8BattleText9
-	db "@"
+	text_far _Route8BattleText9
+	text_end
 
 Route8EndBattleText9:
-	TX_FAR _Route8EndBattleText9
-	db "@"
+	text_far _Route8EndBattleText9
+	text_end
 
 Route8AfterBattleText9:
-	TX_FAR _Route8AfterBattleText9
-	db "@"
+	text_far _Route8AfterBattleText9
+	text_end
 
 Route8Text10:
-	TX_FAR _Route8Text10
-	db "@"
+	text_far _Route8Text10
+	text_end
--- a/scripts/Route9.asm
+++ b/scripts/Route9.asm
@@ -109,47 +109,47 @@
 	db $ff
 
 Route9Text1:
-	TX_ASM
+	text_asm
 	ld hl, Route9TrainerHeader0
 	jr Route9TalkToTrainer
 
 Route9Text2:
-	TX_ASM
+	text_asm
 	ld hl, Route9TrainerHeader1
 	jr Route9TalkToTrainer
 
 Route9Text3:
-	TX_ASM
+	text_asm
 	ld hl, Route9TrainerHeader2
 	jr Route9TalkToTrainer
 
 Route9Text4:
-	TX_ASM
+	text_asm
 	ld hl, Route9TrainerHeader3
 	jr Route9TalkToTrainer
 
 Route9Text5:
-	TX_ASM
+	text_asm
 	ld hl, Route9TrainerHeader4
 	jr Route9TalkToTrainer
 
 Route9Text6:
-	TX_ASM
+	text_asm
 	ld hl, Route9TrainerHeader5
 	jr Route9TalkToTrainer
 
 Route9Text7:
-	TX_ASM
+	text_asm
 	ld hl, Route9TrainerHeader6
 	jr Route9TalkToTrainer
 
 Route9Text8:
-	TX_ASM
+	text_asm
 	ld hl, Route9TrainerHeader7
 	jr Route9TalkToTrainer
 
 Route9Text9:
-	TX_ASM
+	text_asm
 	ld hl, Route9TrainerHeader8
 Route9TalkToTrainer:
 	call TalkToTrainer
@@ -156,113 +156,113 @@
 	jp TextScriptEnd
 
 Route9BattleText1:
-	TX_FAR _Route9BattleText1
-	db "@"
+	text_far _Route9BattleText1
+	text_end
 
 Route9EndBattleText1:
-	TX_FAR _Route9EndBattleText1
-	db "@"
+	text_far _Route9EndBattleText1
+	text_end
 
 Route9AfterBattleText1:
-	TX_FAR _Route9AfterBattleText1
-	db "@"
+	text_far _Route9AfterBattleText1
+	text_end
 
 Route9BattleText2:
-	TX_FAR _Route9BattleText2
-	db "@"
+	text_far _Route9BattleText2
+	text_end
 
 Route9EndBattleText2:
-	TX_FAR _Route9EndBattleText2
-	db "@"
+	text_far _Route9EndBattleText2
+	text_end
 
 Route9AfterBattleText2:
-	TX_FAR _Route9AfterBattleText2
-	db "@"
+	text_far _Route9AfterBattleText2
+	text_end
 
 Route9BattleText3:
-	TX_FAR _Route9BattleText3
-	db "@"
+	text_far _Route9BattleText3
+	text_end
 
 Route9EndBattleText3:
-	TX_FAR _Route9EndBattleText3
-	db "@"
+	text_far _Route9EndBattleText3
+	text_end
 
 Route9AfterBattleText3:
-	TX_FAR _Route9AfterBattleText3
-	db "@"
+	text_far _Route9AfterBattleText3
+	text_end
 
 Route9BattleText4:
-	TX_FAR _Route9BattleText4
-	db "@"
+	text_far _Route9BattleText4
+	text_end
 
 Route9EndBattleText4:
-	TX_FAR _Route9EndBattleText4
-	db "@"
+	text_far _Route9EndBattleText4
+	text_end
 
 Route9AfterBattleText4:
-	TX_FAR _Route9AfterBattleText4
-	db "@"
+	text_far _Route9AfterBattleText4
+	text_end
 
 Route9BattleText5:
-	TX_FAR _Route9BattleText5
-	db "@"
+	text_far _Route9BattleText5
+	text_end
 
 Route9EndBattleText5:
-	TX_FAR _Route9EndBattleText5
-	db "@"
+	text_far _Route9EndBattleText5
+	text_end
 
 Route9AfterBattleText5:
-	TX_FAR _Route9AfterBattleText5
-	db "@"
+	text_far _Route9AfterBattleText5
+	text_end
 
 Route9BattleText6:
-	TX_FAR _Route9BattleText6
-	db "@"
+	text_far _Route9BattleText6
+	text_end
 
 Route9EndBattleText6:
-	TX_FAR _Route9EndBattleText6
-	db "@"
+	text_far _Route9EndBattleText6
+	text_end
 
 Route9AfterBattleText6:
-	TX_FAR _Route9AfterBattleText6
-	db "@"
+	text_far _Route9AfterBattleText6
+	text_end
 
 Route9BattleText7:
-	TX_FAR _Route9BattleText7
-	db "@"
+	text_far _Route9BattleText7
+	text_end
 
 Route9EndBattleText7:
-	TX_FAR _Route9EndBattleText7
-	db "@"
+	text_far _Route9EndBattleText7
+	text_end
 
 Route9AfterBattleText7:
-	TX_FAR _Route9AfterBattleText7
-	db "@"
+	text_far _Route9AfterBattleText7
+	text_end
 
 Route9BattleText8:
-	TX_FAR _Route9BattleText8
-	db "@"
+	text_far _Route9BattleText8
+	text_end
 
 Route9EndBattleText8:
-	TX_FAR _Route9EndBattleText8
-	db "@"
+	text_far _Route9EndBattleText8
+	text_end
 
 Route9AfterBattleText8:
-	TX_FAR _Route9AfterBattleText8
-	db "@"
+	text_far _Route9AfterBattleText8
+	text_end
 
 Route9BattleText9:
-	TX_FAR _Route9BattleText9
-	db "@"
+	text_far _Route9BattleText9
+	text_end
 
 Route9EndBattleText9:
-	TX_FAR _Route9EndBattleText9
-	db "@"
+	text_far _Route9EndBattleText9
+	text_end
 
 Route9AfterBattleText9:
-	TX_FAR _Route9AfterBattleText9
-	db "@"
+	text_far _Route9AfterBattleText9
+	text_end
 
 Route9Text11:
-	TX_FAR _Route9Text11
-	db "@"
+	text_far _Route9Text11
+	text_end
--- a/scripts/SSAnne1F.asm
+++ b/scripts/SSAnne1F.asm
@@ -7,9 +7,9 @@
 	dw SSAnne1Text2
 
 SSAnne1Text1:
-	TX_FAR _SSAnne1Text1
-	db "@"
+	text_far _SSAnne1Text1
+	text_end
 
 SSAnne1Text2:
-	TX_FAR _SSAnne1Text2
-	db "@"
+	text_far _SSAnne1Text2
+	text_end
--- a/scripts/SSAnne1FRooms.asm
+++ b/scripts/SSAnne1FRooms.asm
@@ -64,100 +64,100 @@
 	db $ff
 
 SSAnne8Text1:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne8TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SSAnne8Text2:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne8TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SSAnne8Text3:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne8TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SSAnne8Text4:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne8TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SSAnne8Text8:
-	TX_FAR _SSAnne8Text8
-	TX_ASM
+	text_far _SSAnne8Text8
+	text_asm
 	ld a, WIGGLYTUFF
 	call PlayCry
 	jp TextScriptEnd
 
 SSAnne8BattleText1:
-	TX_FAR _SSAnne8BattleText1
-	db "@"
+	text_far _SSAnne8BattleText1
+	text_end
 
 SSAnne8EndBattleText1:
-	TX_FAR _SSAnne8EndBattleText1
-	db "@"
+	text_far _SSAnne8EndBattleText1
+	text_end
 
 SSAnne8AfterBattleText1:
-	TX_FAR _SSAnne8AfterBattleText1
-	db "@"
+	text_far _SSAnne8AfterBattleText1
+	text_end
 
 SSAnne8BattleText2:
-	TX_FAR _SSAnne8BattleText2
-	db "@"
+	text_far _SSAnne8BattleText2
+	text_end
 
 SSAnne8EndBattleText2:
-	TX_FAR _SSAnne8EndBattleText2
-	db "@"
+	text_far _SSAnne8EndBattleText2
+	text_end
 
 SSAnne8AfterBattleText2:
-	TX_FAR _SSAnne8AfterBattleText2
-	db "@"
+	text_far _SSAnne8AfterBattleText2
+	text_end
 
 SSAnne8BattleText3:
-	TX_FAR _SSAnne8BattleText3
-	db "@"
+	text_far _SSAnne8BattleText3
+	text_end
 
 SSAnne8EndBattleText3:
-	TX_FAR _SSAnne8EndBattleText3
-	db "@"
+	text_far _SSAnne8EndBattleText3
+	text_end
 
 SSAnne8AfterBattleText3:
-	TX_FAR _SSAnne8AfterBattleText3
-	db "@"
+	text_far _SSAnne8AfterBattleText3
+	text_end
 
 SSAnne8BattleText4:
-	TX_FAR _SSAnne8BattleText4
-	db "@"
+	text_far _SSAnne8BattleText4
+	text_end
 
 SSAnne8EndBattleText4:
-	TX_FAR _SSAnne8EndBattleText4
-	db "@"
+	text_far _SSAnne8EndBattleText4
+	text_end
 
 SSAnne8AfterBattleText4:
-	TX_FAR _SSAnne8AfterBattleText4
-	db "@"
+	text_far _SSAnne8AfterBattleText4
+	text_end
 
 SSAnne8Text5:
-	TX_FAR _SSAnne8Text5
-	db "@"
+	text_far _SSAnne8Text5
+	text_end
 
 SSAnne8Text6:
-	TX_FAR _SSAnne8Text6
-	db "@"
+	text_far _SSAnne8Text6
+	text_end
 
 SSAnne8Text7:
-	TX_FAR _SSAnne8Text7
-	db "@"
+	text_far _SSAnne8Text7
+	text_end
 
 SSAnne8Text9:
-	TX_FAR _SSAnne8Text9
-	db "@"
+	text_far _SSAnne8Text9
+	text_end
 
 SSAnne8Text11:
-	TX_FAR _SSAnne8Text11
-	db "@"
+	text_far _SSAnne8Text11
+	text_end
--- a/scripts/SSAnne2F.asm
+++ b/scripts/SSAnne2F.asm
@@ -184,11 +184,11 @@
 	dw SSAnne2Text3
 
 SSAnne2Text1:
-	TX_FAR _SSAnne2Text1
-	db "@"
+	text_far _SSAnne2Text1
+	text_end
 
 SSAnne2Text2:
-	TX_ASM
+	text_asm
 	ld hl, SSAnneRivalBeforeBattleText
 	call PrintText
 	ld hl, wd72d
@@ -200,17 +200,17 @@
 	jp TextScriptEnd
 
 SSAnneRivalBeforeBattleText:
-	TX_FAR _SSAnneRivalBeforeBattleText
-	db "@"
+	text_far _SSAnneRivalBeforeBattleText
+	text_end
 
 SSAnneRivalDefeatedText:
-	TX_FAR _SSAnneRivalDefeatedText
-	db "@"
+	text_far _SSAnneRivalDefeatedText
+	text_end
 
 SSAnneRivalWonText:
-	TX_FAR _SSAnneRivalWonText
-	db "@"
+	text_far _SSAnneRivalWonText
+	text_end
 
 SSAnne2Text3:
-	TX_FAR _SSAnneRivalCaptainText
-	db "@"
+	text_far _SSAnneRivalCaptainText
+	text_end
--- a/scripts/SSAnne2FRooms.asm
+++ b/scripts/SSAnne2FRooms.asm
@@ -69,31 +69,31 @@
 	db $ff
 
 SSAnne9Text1:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne9TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SSAnne9Text2:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne9TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SSAnne9Text3:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne9TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SSAnne9Text4:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne9TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SSAnne9Text5:
-	TX_ASM
+	text_asm
 	call SaveScreenTilesToBuffer1
 	ld hl, SSAnne9Text_61bf2
 	call PrintText
@@ -103,113 +103,113 @@
 	jp TextScriptEnd
 
 SSAnne9Text_61bf2:
-	TX_FAR _SSAnne9Text_61bf2
-	db "@"
+	text_far _SSAnne9Text_61bf2
+	text_end
 
 SSAnne9Text7:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne9Text_61c01
 	call PrintText
 	jp TextScriptEnd
 
 SSAnne9Text_61c01:
-	TX_FAR _SSAnne9Text_61c01
-	db "@"
+	text_far _SSAnne9Text_61c01
+	text_end
 
 SSAnne9Text8:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne9Text_61c10
 	call PrintText
 	jp TextScriptEnd
 
 SSAnne9Text_61c10:
-	TX_FAR _SSAnne9Text_61c10
-	db "@"
+	text_far _SSAnne9Text_61c10
+	text_end
 
 SSAnne9Text10:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne9Text_61c1f
 	call PrintText
 	jp TextScriptEnd
 
 SSAnne9Text_61c1f:
-	TX_FAR _SSAnne9Text_61c1f
-	db "@"
+	text_far _SSAnne9Text_61c1f
+	text_end
 
 SSAnne9Text11:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne9Text_61c2e
 	call PrintText
 	jp TextScriptEnd
 
 SSAnne9Text_61c2e:
-	TX_FAR _SSAnne9Text_61c2e
-	db "@"
+	text_far _SSAnne9Text_61c2e
+	text_end
 
 SSAnne9Text12:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne9Text_61c3d
 	call PrintText
 	jp TextScriptEnd
 
 SSAnne9Text_61c3d:
-	TX_FAR _SSAnne9Text_61c3d
-	db "@"
+	text_far _SSAnne9Text_61c3d
+	text_end
 
 SSAnne9Text13:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne9Text_61c4c
 	call PrintText
 	jp TextScriptEnd
 
 SSAnne9Text_61c4c:
-	TX_FAR _SSAnne9Text_61c4c
-	db "@"
+	text_far _SSAnne9Text_61c4c
+	text_end
 
 SSAnne9BattleText1:
-	TX_FAR _SSAnne9BattleText1
-	db "@"
+	text_far _SSAnne9BattleText1
+	text_end
 
 SSAnne9EndBattleText1:
-	TX_FAR _SSAnne9EndBattleText1
-	db "@"
+	text_far _SSAnne9EndBattleText1
+	text_end
 
 SSAnne9AfterBattleText1:
-	TX_FAR _SSAnne9AfterBattleText1
-	db "@"
+	text_far _SSAnne9AfterBattleText1
+	text_end
 
 SSAnne9BattleText2:
-	TX_FAR _SSAnne9BattleText2
-	db "@"
+	text_far _SSAnne9BattleText2
+	text_end
 
 SSAnne9EndBattleText2:
-	TX_FAR _SSAnne9EndBattleText2
-	db "@"
+	text_far _SSAnne9EndBattleText2
+	text_end
 
 SSAnne9AfterBattleText2:
-	TX_FAR _SSAnne9AfterBattleText2
-	db "@"
+	text_far _SSAnne9AfterBattleText2
+	text_end
 
 SSAnne9BattleText3:
-	TX_FAR _SSAnne9BattleText3
-	db "@"
+	text_far _SSAnne9BattleText3
+	text_end
 
 SSAnne9EndBattleText3:
-	TX_FAR _SSAnne9EndBattleText3
-	db "@"
+	text_far _SSAnne9EndBattleText3
+	text_end
 
 SSAnne9AfterBattleText3:
-	TX_FAR _SSAnne9AfterBattleText3
-	db "@"
+	text_far _SSAnne9AfterBattleText3
+	text_end
 
 SSAnne9BattleText4:
-	TX_FAR _SSAnne9BattleText4
-	db "@"
+	text_far _SSAnne9BattleText4
+	text_end
 
 SSAnne9EndBattleText4:
-	TX_FAR _SSAnne9EndBattleText4
-	db "@"
+	text_far _SSAnne9EndBattleText4
+	text_end
 
 SSAnne9AfterBattleText4:
-	TX_FAR _SSAnne9AfterBattleText4
-	db "@"
+	text_far _SSAnne9AfterBattleText4
+	text_end
--- a/scripts/SSAnne3F.asm
+++ b/scripts/SSAnne3F.asm
@@ -5,5 +5,5 @@
 	dw SSAnne3Text1
 
 SSAnne3Text1:
-	TX_FAR _SSAnne3Text1
-	db "@"
+	text_far _SSAnne3Text1
+	text_end
--- a/scripts/SSAnneB1F.asm
+++ b/scripts/SSAnneB1F.asm
@@ -2,4 +2,4 @@
 	jp EnableAutoTextBoxDrawing
 
 SSAnneB1F_TextPointers:
-	db "@"
+	text_end
--- a/scripts/SSAnneB1FRooms.asm
+++ b/scripts/SSAnneB1FRooms.asm
@@ -82,120 +82,120 @@
 	db $ff
 
 SSAnne10Text1:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne10TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SSAnne10Text2:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne10TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SSAnne10Text3:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne10TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SSAnne10Text4:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne10TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SSAnne10Text5:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne10TrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SSAnne10Text6:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne10TrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SSAnne10Text8:
-	TX_FAR _SSAnne10Text8
-	TX_ASM
+	text_far _SSAnne10Text8
+	text_asm
 	ld a, MACHOKE
 	call PlayCry
 	jp TextScriptEnd
 
 SSAnne10BattleText1:
-	TX_FAR _SSAnne10BattleText1
-	db "@"
+	text_far _SSAnne10BattleText1
+	text_end
 
 SSAnne10EndBattleText1:
-	TX_FAR _SSAnne10EndBattleText1
-	db "@"
+	text_far _SSAnne10EndBattleText1
+	text_end
 
 SSAnne10AfterBattleText1:
-	TX_FAR _SSAnne10AfterBattleText1
-	db "@"
+	text_far _SSAnne10AfterBattleText1
+	text_end
 
 SSAnne10BattleText2:
-	TX_FAR _SSAnne10BattleText2
-	db "@"
+	text_far _SSAnne10BattleText2
+	text_end
 
 SSAnne10EndBattleText2:
-	TX_FAR _SSAnne10EndBattleText2
-	db "@"
+	text_far _SSAnne10EndBattleText2
+	text_end
 
 SSAnne10AfterBattleText2:
-	TX_FAR _SSAnne10AfterBattleText2
-	db "@"
+	text_far _SSAnne10AfterBattleText2
+	text_end
 
 SSAnne10BattleText3:
-	TX_FAR _SSAnne10BattleText3
-	db "@"
+	text_far _SSAnne10BattleText3
+	text_end
 
 SSAnne10EndBattleText3:
-	TX_FAR _SSAnne10EndBattleText3
-	db "@"
+	text_far _SSAnne10EndBattleText3
+	text_end
 
 SSAnne10AfterBattleText3:
-	TX_FAR _SSAnne10AfterBattleText3
-	db "@"
+	text_far _SSAnne10AfterBattleText3
+	text_end
 
 SSAnne10BattleText4:
-	TX_FAR _SSAnne10BattleText4
-	db "@"
+	text_far _SSAnne10BattleText4
+	text_end
 
 SSAnne10EndBattleText4:
-	TX_FAR _SSAnne10EndBattleText4
-	db "@"
+	text_far _SSAnne10EndBattleText4
+	text_end
 
 SSAnne10AfterBattleText4:
-	TX_FAR _SSAnne10AfterBattleText4
-	db "@"
+	text_far _SSAnne10AfterBattleText4
+	text_end
 
 SSAnne10BattleText5:
-	TX_FAR _SSAnne10BattleText5
-	db "@"
+	text_far _SSAnne10BattleText5
+	text_end
 
 SSAnne10EndBattleText5:
-	TX_FAR _SSAnne10EndBattleText5
-	db "@"
+	text_far _SSAnne10EndBattleText5
+	text_end
 
 SSAnne10AfterBattleText5:
-	TX_FAR _SSAnne10AfterBattleText5
-	db "@"
+	text_far _SSAnne10AfterBattleText5
+	text_end
 
 SSAnne10BattleText6:
-	TX_FAR _SSAnne10BattleText6
-	db "@"
+	text_far _SSAnne10BattleText6
+	text_end
 
 SSAnne10EndBattleText6:
-	TX_FAR _SSAnne10EndBattleText6
-	db "@"
+	text_far _SSAnne10EndBattleText6
+	text_end
 
 SSAnne10AfterBattleText6:
-	TX_FAR _SSAnne10AfterBattleText6
-	db "@"
+	text_far _SSAnne10AfterBattleText6
+	text_end
 
 SSAnne10Text7:
-	TX_FAR _SSAnne10Text7
-	db "@"
+	text_far _SSAnne10Text7
+	text_end
--- a/scripts/SSAnneBow.asm
+++ b/scripts/SSAnneBow.asm
@@ -40,49 +40,49 @@
 	db $ff
 
 SSAnne5Text1:
-	TX_FAR _SSAnne5Text1
-	db "@"
+	text_far _SSAnne5Text1
+	text_end
 
 SSAnne5Text2:
-	TX_FAR _SSAnne5Text2
-	db "@"
+	text_far _SSAnne5Text2
+	text_end
 
 SSAnne5Text3:
-	TX_FAR _SSAnne5Text3
-	db "@"
+	text_far _SSAnne5Text3
+	text_end
 
 SSAnne5Text4:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne5TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SSAnne5BattleText1:
-	TX_FAR _SSAnne5BattleText1
-	db "@"
+	text_far _SSAnne5BattleText1
+	text_end
 
 SSAnne5EndBattleText1:
-	TX_FAR _SSAnne5EndBattleText1
-	db "@"
+	text_far _SSAnne5EndBattleText1
+	text_end
 
 SSAnne5AfterBattleText1:
-	TX_FAR _SSAnne5AfterBattleText1
-	db "@"
+	text_far _SSAnne5AfterBattleText1
+	text_end
 
 SSAnne5Text5:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne5TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SSAnne5BattleText2:
-	TX_FAR _SSAnne5BattleText2
-	db "@"
+	text_far _SSAnne5BattleText2
+	text_end
 
 SSAnne5EndBattleText2:
-	TX_FAR _SSAnne5EndBattleText2
-	db "@"
+	text_far _SSAnne5EndBattleText2
+	text_end
 
 SSAnne5AfterBattleText2:
-	TX_FAR _SSAnne5AfterBattleText2
-	db "@"
+	text_far _SSAnne5AfterBattleText2
+	text_end
--- a/scripts/SSAnneCaptainsRoom.asm
+++ b/scripts/SSAnneCaptainsRoom.asm
@@ -15,7 +15,7 @@
 	dw SSAnne7Text3
 
 SSAnne7Text1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_HM01
 	jr nz, .asm_797c4
 	ld hl, SSAnne7RubText
@@ -42,8 +42,8 @@
 	jp TextScriptEnd
 
 SSAnne7RubText:
-	TX_FAR _SSAnne7RubText
-	TX_ASM
+	text_far _SSAnne7RubText
+	text_asm
 	ld a, [wAudioROMBank]
 	cp BANK(Audio3_UpdateMusic)
 	ld [wAudioSavedROMBank], a
@@ -68,26 +68,26 @@
 	jp TextScriptEnd
 
 ReceivingHM01Text:
-	TX_FAR _ReceivingHM01Text
-	db "@"
+	text_far _ReceivingHM01Text
+	text_end
 
 ReceivedHM01Text:
-	TX_FAR _ReceivedHM01Text
-	TX_SFX_KEY_ITEM
-	db "@"
+	text_far _ReceivedHM01Text
+	sound_get_key_item
+	text_end
 
 SSAnne7Text_61932:
-	TX_FAR _SSAnne7Text_61932
-	db "@"
+	text_far _SSAnne7Text_61932
+	text_end
 
 HM01NoRoomText:
-	TX_FAR _HM01NoRoomText
-	db "@"
+	text_far _HM01NoRoomText
+	text_end
 
 SSAnne7Text2:
-	TX_FAR _SSAnne7Text2
-	db "@"
+	text_far _SSAnne7Text2
+	text_end
 
 SSAnne7Text3:
-	TX_FAR _SSAnne7Text3
-	db "@"
+	text_far _SSAnne7Text3
+	text_end
--- a/scripts/SSAnneKitchen.asm
+++ b/scripts/SSAnneKitchen.asm
@@ -12,31 +12,31 @@
 	dw SSAnne6Text7
 
 SSAnne6Text1:
-	TX_FAR _SSAnne6Text1
-	db "@"
+	text_far _SSAnne6Text1
+	text_end
 
 SSAnne6Text2:
-	TX_FAR _SSAnne6Text2
-	db "@"
+	text_far _SSAnne6Text2
+	text_end
 
 SSAnne6Text3:
-	TX_FAR _SSAnne6Text3
-	db "@"
+	text_far _SSAnne6Text3
+	text_end
 
 SSAnne6Text4:
-	TX_FAR _SSAnne6Text4
-	db "@"
+	text_far _SSAnne6Text4
+	text_end
 
 SSAnne6Text5:
-	TX_FAR _SSAnne6Text5
-	db "@"
+	text_far _SSAnne6Text5
+	text_end
 
 SSAnne6Text6:
-	TX_FAR _SSAnne6Text6
-	db "@"
+	text_far _SSAnne6Text6
+	text_end
 
 SSAnne6Text7:
-	TX_ASM
+	text_asm
 	ld hl, SSAnne6Text_61807
 	call PrintText
 	ld a, [hRandomAdd]
@@ -56,17 +56,17 @@
 	jp TextScriptEnd
 
 SSAnne6Text_61807:
-	TX_FAR _SSAnne6Text_61807
-	db "@"
+	text_far _SSAnne6Text_61807
+	text_end
 
 SSAnne6Text_6180c:
-	TX_FAR _SSAnne6Text_6180c
-	db "@"
+	text_far _SSAnne6Text_6180c
+	text_end
 
 SSAnne6Text_61811:
-	TX_FAR _SSAnne6Text_61811
-	db "@"
+	text_far _SSAnne6Text_61811
+	text_end
 
 SSAnne6Text_61816:
-	TX_FAR _SSAnne6Text_61816
-	db "@"
+	text_far _SSAnne6Text_61816
+	text_end
--- a/scripts/SafariZoneCenter.asm
+++ b/scripts/SafariZoneCenter.asm
@@ -7,9 +7,9 @@
 	dw SafariZoneCenterText3
 
 SafariZoneCenterText2:
-	TX_FAR _SafariZoneCenterText2
-	db "@"
+	text_far _SafariZoneCenterText2
+	text_end
 
 SafariZoneCenterText3:
-	TX_FAR _SafariZoneCenterText3
-	db "@"
+	text_far _SafariZoneCenterText3
+	text_end
--- a/scripts/SafariZoneCenterRestHouse.asm
+++ b/scripts/SafariZoneCenterRestHouse.asm
@@ -6,9 +6,9 @@
 	dw SafariZoneRestHouse1Text2
 
 SafariZoneRestHouse1Text1:
-	TX_FAR _SafariZoneRestHouse1Text1
-	db "@"
+	text_far _SafariZoneRestHouse1Text1
+	text_end
 
 SafariZoneRestHouse1Text2:
-	TX_FAR _SafariZoneRestHouse1Text2
-	db "@"
+	text_far _SafariZoneRestHouse1Text2
+	text_end
--- a/scripts/SafariZoneEast.asm
+++ b/scripts/SafariZoneEast.asm
@@ -11,13 +11,13 @@
 	dw SafariZoneEastText7
 
 SafariZoneEastText5:
-	TX_FAR _SafariZoneEastText5
-	db "@"
+	text_far _SafariZoneEastText5
+	text_end
 
 SafariZoneEastText6:
-	TX_FAR _SafariZoneEastText6
-	db "@"
+	text_far _SafariZoneEastText6
+	text_end
 
 SafariZoneEastText7:
-	TX_FAR _SafariZoneEastText7
-	db "@"
+	text_far _SafariZoneEastText7
+	text_end
--- a/scripts/SafariZoneEastRestHouse.asm
+++ b/scripts/SafariZoneEastRestHouse.asm
@@ -8,13 +8,13 @@
 	dw SafariZoneRestHouse3Text3
 
 SafariZoneRestHouse3Text1:
-	TX_FAR _SafariZoneRestHouse3Text1
-	db "@"
+	text_far _SafariZoneRestHouse3Text1
+	text_end
 
 SafariZoneRestHouse3Text2:
-	TX_FAR _SafariZoneRestHouse3Text2
-	db "@"
+	text_far _SafariZoneRestHouse3Text2
+	text_end
 
 SafariZoneRestHouse3Text3:
-	TX_FAR _SafariZoneRestHouse3Text3
-	db "@"
+	text_far _SafariZoneRestHouse3Text3
+	text_end
--- a/scripts/SafariZoneGate.asm
+++ b/scripts/SafariZoneGate.asm
@@ -139,12 +139,12 @@
 	dw .SafariZoneEntranceText6
 
 .SafariZoneEntranceText1
-	TX_FAR _SafariZoneEntranceText1
-	db "@"
+	text_far _SafariZoneEntranceText1
+	text_end
 
 .SafariZoneEntranceText4
-	TX_FAR SafariZoneEntranceText_9e6e4
-	TX_ASM
+	text_far SafariZoneEntranceText_9e6e4
+	text_asm
 	ld a, MONEY_BOX
 	ld [wTextBoxID], a
 	call DisplayTextBoxID
@@ -208,22 +208,22 @@
 	jp TextScriptEnd
 
 .MakePaymentText
-	TX_FAR SafariZoneEntranceText_9e747
-	TX_SFX_ITEM_1
-	TX_FAR _SafariZoneEntranceText_75360
-	db "@"
+	text_far SafariZoneEntranceText_9e747
+	sound_get_item_1
+	text_far _SafariZoneEntranceText_75360
+	text_end
 
 .PleaseComeAgainText
-	TX_FAR _SafariZoneEntranceText_75365
-	db "@"
+	text_far _SafariZoneEntranceText_75365
+	text_end
 
 .NotEnoughMoneyText
-	TX_FAR _SafariZoneEntranceText_7536a
-	db "@"
+	text_far _SafariZoneEntranceText_7536a
+	text_end
 
 .SafariZoneEntranceText5
-	TX_FAR SafariZoneEntranceText_9e814
-	TX_ASM
+	text_far SafariZoneEntranceText_9e814
+	text_asm
 	call YesNoChoice
 	ld a, [wCurrentMenuItem]
 	and a
@@ -255,19 +255,19 @@
 	jp TextScriptEnd
 
 .SafariZoneEntranceText_753bb
-	TX_FAR _SafariZoneEntranceText_753bb
-	db "@"
+	text_far _SafariZoneEntranceText_753bb
+	text_end
 
 .SafariZoneEntranceText_753c0
-	TX_FAR _SafariZoneEntranceText_753c0
-	db "@"
+	text_far _SafariZoneEntranceText_753c0
+	text_end
 
 .SafariZoneEntranceText6
-	TX_FAR _SafariZoneEntranceText_753c5
-	db "@"
+	text_far _SafariZoneEntranceText_753c5
+	text_end
 
 .SafariZoneEntranceText2
-	TX_ASM
+	text_asm
 	ld hl, .FirstTimeQuestionText
 	call PrintText
 	call YesNoChoice
@@ -281,13 +281,13 @@
 	jp TextScriptEnd
 
 .FirstTimeQuestionText
-	TX_FAR _SafariZoneEntranceText_753e6
-	db "@"
+	text_far _SafariZoneEntranceText_753e6
+	text_end
 
 .ExplanationText
-	TX_FAR _SafariZoneEntranceText_753eb
-	db "@"
+	text_far _SafariZoneEntranceText_753eb
+	text_end
 
 .RegularText
-	TX_FAR _SafariZoneEntranceText_753f0
-	db "@"
+	text_far _SafariZoneEntranceText_753f0
+	text_end
--- a/scripts/SafariZoneNorth.asm
+++ b/scripts/SafariZoneNorth.asm
@@ -11,21 +11,21 @@
 	dw SafariZoneNorthText7
 
 SafariZoneNorthText3:
-	TX_FAR _SafariZoneNorthText3
-	db "@"
+	text_far _SafariZoneNorthText3
+	text_end
 
 SafariZoneNorthText4:
-	TX_FAR _SafariZoneNorthText4
-	db "@"
+	text_far _SafariZoneNorthText4
+	text_end
 
 SafariZoneNorthText5:
-	TX_FAR _SafariZoneNorthText5
-	db "@"
+	text_far _SafariZoneNorthText5
+	text_end
 
 SafariZoneNorthText6:
-	TX_FAR _SafariZoneNorthText6
-	db "@"
+	text_far _SafariZoneNorthText6
+	text_end
 
 SafariZoneNorthText7:
-	TX_FAR _SafariZoneNorthText7
-	db "@"
+	text_far _SafariZoneNorthText7
+	text_end
--- a/scripts/SafariZoneNorthRestHouse.asm
+++ b/scripts/SafariZoneNorthRestHouse.asm
@@ -8,13 +8,13 @@
 	dw SafariZoneRestHouse4Text3
 
 SafariZoneRestHouse4Text1:
-	TX_FAR _SafariZoneRestHouse4Text1
-	db "@"
+	text_far _SafariZoneRestHouse4Text1
+	text_end
 
 SafariZoneRestHouse4Text2:
-	TX_FAR _SafariZoneRestHouse4Text2
-	db "@"
+	text_far _SafariZoneRestHouse4Text2
+	text_end
 
 SafariZoneRestHouse4Text3:
-	TX_FAR _SafariZoneRestHouse4Text3
-	db "@"
+	text_far _SafariZoneRestHouse4Text3
+	text_end
--- a/scripts/SafariZoneSecretHouse.asm
+++ b/scripts/SafariZoneSecretHouse.asm
@@ -5,7 +5,7 @@
 	dw SafariZoneSecretHouseText1
 
 SafariZoneSecretHouseText1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_HM03
 	jr nz, .asm_20a9b
 	ld hl, SafariZoneSecretHouseText_4a350
@@ -28,18 +28,18 @@
 	jp TextScriptEnd
 
 SafariZoneSecretHouseText_4a350:
-	TX_FAR _SecretHouseText_4a350
-	db "@"
+	text_far _SecretHouseText_4a350
+	text_end
 
 ReceivedHM03Text:
-	TX_FAR _ReceivedHM03Text
-	TX_SFX_ITEM_1
-	db "@"
+	text_far _ReceivedHM03Text
+	sound_get_item_1
+	text_end
 
 HM03ExplanationText:
-	TX_FAR _HM03ExplanationText
-	db "@"
+	text_far _HM03ExplanationText
+	text_end
 
 HM03NoRoomText:
-	TX_FAR _HM03NoRoomText
-	db "@"
+	text_far _HM03NoRoomText
+	text_end
--- a/scripts/SafariZoneWest.asm
+++ b/scripts/SafariZoneWest.asm
@@ -12,17 +12,17 @@
 	dw SafariZoneWestText8
 
 SafariZoneWestText5:
-	TX_FAR _SafariZoneWestText5
-	db "@"
+	text_far _SafariZoneWestText5
+	text_end
 
 SafariZoneWestText6:
-	TX_FAR _SafariZoneWestText6
-	db "@"
+	text_far _SafariZoneWestText6
+	text_end
 
 SafariZoneWestText7:
-	TX_FAR _SafariZoneWestText7
-	db "@"
+	text_far _SafariZoneWestText7
+	text_end
 
 SafariZoneWestText8:
-	TX_FAR _SafariZoneWestText8
-	db "@"
+	text_far _SafariZoneWestText8
+	text_end
--- a/scripts/SafariZoneWestRestHouse.asm
+++ b/scripts/SafariZoneWestRestHouse.asm
@@ -8,13 +8,13 @@
 	dw SafariZoneRestHouse2Text3
 
 SafariZoneRestHouse2Text1:
-	TX_FAR _SafariZoneRestHouse2Text1
-	db "@"
+	text_far _SafariZoneRestHouse2Text1
+	text_end
 
 SafariZoneRestHouse2Text2:
-	TX_FAR _SafariZoneRestHouse2Text2
-	db "@"
+	text_far _SafariZoneRestHouse2Text2
+	text_end
 
 SafariZoneRestHouse2Text3:
-	TX_FAR _SafariZoneRestHouse2Text3
-	db "@"
+	text_far _SafariZoneRestHouse2Text3
+	text_end
--- a/scripts/SaffronCity.asm
+++ b/scripts/SaffronCity.asm
@@ -29,94 +29,94 @@
 	dw SaffronCityText25
 
 SaffronCityText1:
-	TX_FAR _SaffronCityText1
-	db "@"
+	text_far _SaffronCityText1
+	text_end
 
 SaffronCityText2:
-	TX_FAR _SaffronCityText2
-	db "@"
+	text_far _SaffronCityText2
+	text_end
 
 SaffronCityText3:
-	TX_FAR _SaffronCityText3
-	db "@"
+	text_far _SaffronCityText3
+	text_end
 
 SaffronCityText4:
-	TX_FAR _SaffronCityText4
-	db "@"
+	text_far _SaffronCityText4
+	text_end
 
 SaffronCityText5:
-	TX_FAR _SaffronCityText5
-	db "@"
+	text_far _SaffronCityText5
+	text_end
 
 SaffronCityText6:
-	TX_FAR _SaffronCityText6
-	db "@"
+	text_far _SaffronCityText6
+	text_end
 
 SaffronCityText7:
-	TX_FAR _SaffronCityText7
-	db "@"
+	text_far _SaffronCityText7
+	text_end
 
 SaffronCityText8:
-	TX_FAR _SaffronCityText8
-	db "@"
+	text_far _SaffronCityText8
+	text_end
 
 SaffronCityText9:
-	TX_FAR _SaffronCityText9
-	db "@"
+	text_far _SaffronCityText9
+	text_end
 
 SaffronCityText10:
-	TX_FAR _SaffronCityText10
-	db "@"
+	text_far _SaffronCityText10
+	text_end
 
 SaffronCityText11:
-	TX_FAR _SaffronCityText11
-	db "@"
+	text_far _SaffronCityText11
+	text_end
 
 SaffronCityText12:
-	TX_FAR _SaffronCityText12
-	TX_CRY_PIDGEOT
-	db "@"
+	text_far _SaffronCityText12
+	sound_cry_pidgeot
+	text_end
 
 SaffronCityText13:
-	TX_FAR _SaffronCityText13
-	db "@"
+	text_far _SaffronCityText13
+	text_end
 
 SaffronCityText14:
-	TX_FAR _SaffronCityText14
-	db "@"
+	text_far _SaffronCityText14
+	text_end
 
 SaffronCityText15:
-	TX_FAR _SaffronCityText15
-	db "@"
+	text_far _SaffronCityText15
+	text_end
 
 SaffronCityText16:
-	TX_FAR _SaffronCityText16
-	db "@"
+	text_far _SaffronCityText16
+	text_end
 
 SaffronCityText17:
-	TX_FAR _SaffronCityText17
-	db "@"
+	text_far _SaffronCityText17
+	text_end
 
 SaffronCityText18:
-	TX_FAR _SaffronCityText18
-	db "@"
+	text_far _SaffronCityText18
+	text_end
 
 SaffronCityText20:
-	TX_FAR _SaffronCityText20
-	db "@"
+	text_far _SaffronCityText20
+	text_end
 
 SaffronCityText21:
-	TX_FAR _SaffronCityText21
-	db "@"
+	text_far _SaffronCityText21
+	text_end
 
 SaffronCityText22:
-	TX_FAR _SaffronCityText22
-	db "@"
+	text_far _SaffronCityText22
+	text_end
 
 SaffronCityText24:
-	TX_FAR _SaffronCityText24
-	db "@"
+	text_far _SaffronCityText24
+	text_end
 
 SaffronCityText25:
-	TX_FAR _SaffronCityText25
-	db "@"
+	text_far _SaffronCityText25
+	text_end
--- a/scripts/SaffronGym.asm
+++ b/scripts/SaffronGym.asm
@@ -150,7 +150,7 @@
 	db $ff
 
 SaffronGymText1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_SABRINA
 	jr z, .beginBattle
 	CheckEventReuseA EVENT_GOT_TM46
@@ -183,77 +183,77 @@
 	jp TextScriptEnd
 
 SaffronGymText_5d162:
-	TX_FAR _SaffronGymText_5d162
-	db "@"
+	text_far _SaffronGymText_5d162
+	text_end
 
 SaffronGymText_5d167:
-	TX_FAR _SaffronGymText_5d167
-	TX_SFX_KEY_ITEM ; actually plays the second channel of SFX_BALL_POOF due to the wrong music bank being loaded
-	TX_BLINK
-	db "@"
+	text_far _SaffronGymText_5d167
+	sound_get_key_item ; actually plays the second channel of SFX_BALL_POOF due to the wrong music bank being loaded
+	text_promptbutton
+	text_end
 
 SaffronGymText_5d16e:
-	TX_FAR _SaffronGymText_5d16e
-	db "@"
+	text_far _SaffronGymText_5d16e
+	text_end
 
 SaffronGymText10:
-	TX_FAR _SaffronGymText_5d173
-	db "@"
+	text_far _SaffronGymText_5d173
+	text_end
 
 SaffronGymText11:
-	TX_FAR ReceivedTM46Text
-	TX_SFX_ITEM_1
-	TX_FAR _TM46ExplanationText
-	db "@"
+	text_far ReceivedTM46Text
+	sound_get_item_1
+	text_far _TM46ExplanationText
+	text_end
 
 SaffronGymText12:
-	TX_FAR _TM46NoRoomText
-	db "@"
+	text_far _TM46NoRoomText
+	text_end
 
 SaffronGymText2:
-	TX_ASM
+	text_asm
 	ld hl, SaffronGymTrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SaffronGymText3:
-	TX_ASM
+	text_asm
 	ld hl, SaffronGymTrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SaffronGymText4:
-	TX_ASM
+	text_asm
 	ld hl, SaffronGymTrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SaffronGymText5:
-	TX_ASM
+	text_asm
 	ld hl, SaffronGymTrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SaffronGymText6:
-	TX_ASM
+	text_asm
 	ld hl, SaffronGymTrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SaffronGymText7:
-	TX_ASM
+	text_asm
 	ld hl, SaffronGymTrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SaffronGymText8:
-	TX_ASM
+	text_asm
 	ld hl, SaffronGymTrainerHeader6
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SaffronGymText9:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_SABRINA
 	jr nz, .asm_5d1dd
 	ld hl, SaffronGymText_5d1e6
@@ -266,93 +266,93 @@
 	jp TextScriptEnd
 
 SaffronGymText_5d1e6:
-	TX_FAR _SaffronGymText_5d1e6
-	db "@"
+	text_far _SaffronGymText_5d1e6
+	text_end
 
 SaffronGymText_5d1eb:
-	TX_FAR _SaffronGymText_5d1eb
-	db "@"
+	text_far _SaffronGymText_5d1eb
+	text_end
 
 SaffronGymBattleText1:
-	TX_FAR _SaffronGymBattleText1
-	db "@"
+	text_far _SaffronGymBattleText1
+	text_end
 
 SaffronGymEndBattleText1:
-	TX_FAR _SaffronGymEndBattleText1
-	db "@"
+	text_far _SaffronGymEndBattleText1
+	text_end
 
 SaffronGymAfterBattleText1:
-	TX_FAR _SaffronGymAfterBattleText1
-	db "@"
+	text_far _SaffronGymAfterBattleText1
+	text_end
 
 SaffronGymBattleText2:
-	TX_FAR _SaffronGymBattleText2
-	db "@"
+	text_far _SaffronGymBattleText2
+	text_end
 
 SaffronGymEndBattleText2:
-	TX_FAR _SaffronGymEndBattleText2
-	db "@"
+	text_far _SaffronGymEndBattleText2
+	text_end
 
 SaffronGymAfterBattleText2:
-	TX_FAR _SaffronGymAfterBattleText2
-	db "@"
+	text_far _SaffronGymAfterBattleText2
+	text_end
 
 SaffronGymBattleText3:
-	TX_FAR _SaffronGymBattleText3
-	db "@"
+	text_far _SaffronGymBattleText3
+	text_end
 
 SaffronGymEndBattleText3:
-	TX_FAR _SaffronGymEndBattleText3
-	db "@"
+	text_far _SaffronGymEndBattleText3
+	text_end
 
 SaffronGymAfterBattleText3:
-	TX_FAR _SaffronGymAfterBattleText3
-	db "@"
+	text_far _SaffronGymAfterBattleText3
+	text_end
 
 SaffronGymBattleText4:
-	TX_FAR _SaffronGymBattleText4
-	db "@"
+	text_far _SaffronGymBattleText4
+	text_end
 
 SaffronGymEndBattleText4:
-	TX_FAR _SaffronGymEndBattleText4
-	db "@"
+	text_far _SaffronGymEndBattleText4
+	text_end
 
 SaffronGymAfterBattleText4:
-	TX_FAR _SaffronGymAfterBattleText4
-	db "@"
+	text_far _SaffronGymAfterBattleText4
+	text_end
 
 SaffronGymBattleText5:
-	TX_FAR _SaffronGymBattleText5
-	db "@"
+	text_far _SaffronGymBattleText5
+	text_end
 
 SaffronGymEndBattleText5:
-	TX_FAR _SaffronGymEndBattleText5
-	db "@"
+	text_far _SaffronGymEndBattleText5
+	text_end
 
 SaffronGymAfterBattleText5:
-	TX_FAR _SaffronGymAfterBattleText5
-	db "@"
+	text_far _SaffronGymAfterBattleText5
+	text_end
 
 SaffronGymBattleText6:
-	TX_FAR _SaffronGymBattleText6
-	db "@"
+	text_far _SaffronGymBattleText6
+	text_end
 
 SaffronGymEndBattleText6:
-	TX_FAR _SaffronGymEndBattleText6
-	db "@"
+	text_far _SaffronGymEndBattleText6
+	text_end
 
 SaffronGymAfterBattleText6:
-	TX_FAR _SaffronGymAfterBattleText6
-	db "@"
+	text_far _SaffronGymAfterBattleText6
+	text_end
 
 SaffronGymBattleText7:
-	TX_FAR _SaffronGymBattleText7
-	db "@"
+	text_far _SaffronGymBattleText7
+	text_end
 
 SaffronGymEndBattleText7:
-	TX_FAR _SaffronGymEndBattleText7
-	db "@"
+	text_far _SaffronGymEndBattleText7
+	text_end
 
 SaffronGymAfterBattleText7:
-	TX_FAR _SaffronGymAfterBattleText7
-	db "@"
+	text_far _SaffronGymAfterBattleText7
+	text_end
--- a/scripts/SaffronMart.asm
+++ b/scripts/SaffronMart.asm
@@ -7,9 +7,9 @@
 	dw SaffronMartText3
 
 SaffronMartText2:
-	TX_FAR _SaffronMartText2
-	db "@"
+	text_far _SaffronMartText2
+	text_end
 
 SaffronMartText3:
-	TX_FAR _SaffronMartText3
-	db "@"
+	text_far _SaffronMartText3
+	text_end
--- a/scripts/SaffronPidgeyHouse.asm
+++ b/scripts/SaffronPidgeyHouse.asm
@@ -8,20 +8,20 @@
 	dw SaffronHouse1Text4
 
 SaffronHouse1Text1:
-	TX_FAR _SaffronHouse1Text1
-	db "@"
+	text_far _SaffronHouse1Text1
+	text_end
 
 SaffronHouse1Text2:
-	TX_FAR _SaffronHouse1Text2
-	TX_ASM
+	text_far _SaffronHouse1Text2
+	text_asm
 	ld a, PIDGEY
 	call PlayCry
 	jp TextScriptEnd
 
 SaffronHouse1Text3:
-	TX_FAR _SaffronHouse1Text3
-	db "@"
+	text_far _SaffronHouse1Text3
+	text_end
 
 SaffronHouse1Text4:
-	TX_FAR _SaffronHouse1Text4
-	db "@"
+	text_far _SaffronHouse1Text4
+	text_end
--- a/scripts/SaffronPokecenter.asm
+++ b/scripts/SaffronPokecenter.asm
@@ -9,15 +9,15 @@
 	dw SaffronTradeNurseText
 
 SaffronHealNurseText:
-	TX_POKECENTER_NURSE
+	script_pokecenter_nurse
 
 SaffronPokecenterText2:
-	TX_FAR _SaffronPokecenterText2
-	db "@"
+	text_far _SaffronPokecenterText2
+	text_end
 
 SaffronPokecenterText3:
-	TX_FAR _SaffronPokecenterText3
-	db "@"
+	text_far _SaffronPokecenterText3
+	text_end
 
 SaffronTradeNurseText:
-	TX_CABLE_CLUB_RECEPTIONIST
+	script_cable_club_receptionist
--- a/scripts/SeafoamIslandsB4F.asm
+++ b/scripts/SeafoamIslandsB4F.asm
@@ -149,7 +149,7 @@
 	db $ff
 
 ArticunoText:
-	TX_ASM
+	text_asm
 	ld hl, ArticunoTrainerHeader
 	call TalkToTrainer
 	ld a, $4
@@ -157,8 +157,8 @@
 	jp TextScriptEnd
 
 ArticunoBattleText:
-	TX_FAR _ArticunoBattleText
-	TX_ASM
+	text_far _ArticunoBattleText
+	text_asm
 	ld a, ARTICUNO
 	call PlayCry
 	call WaitForSoundToFinish
@@ -165,9 +165,9 @@
 	jp TextScriptEnd
 
 SeafoamIslands5Text4:
-	TX_FAR _SeafoamIslands5Text4
-	db "@"
+	text_far _SeafoamIslands5Text4
+	text_end
 
 SeafoamIslands5Text5:
-	TX_FAR _SeafoamIslands5Text5
-	db "@"
+	text_far _SeafoamIslands5Text5
+	text_end
--- a/scripts/SilphCo10F.asm
+++ b/scripts/SilphCo10F.asm
@@ -68,19 +68,19 @@
 	db $ff
 
 SilphCo10Text1:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo10TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo10Text2:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo10TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo10Text3:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	ld hl, SilphCo10Text_5a1d8
 	jr nz, .asm_cf85f
@@ -90,33 +90,33 @@
 	jp TextScriptEnd
 
 SilphCo10Text_5a1d3:
-	TX_FAR _SilphCo10Text_5a1d3
-	db "@"
+	text_far _SilphCo10Text_5a1d3
+	text_end
 
 SilphCo10Text_5a1d8:
-	TX_FAR _SilphCo10Text_5a1d8
-	db "@"
+	text_far _SilphCo10Text_5a1d8
+	text_end
 
 SilphCo10BattleText1:
-	TX_FAR _SilphCo10BattleText1
-	db "@"
+	text_far _SilphCo10BattleText1
+	text_end
 
 SilphCo10EndBattleText1:
-	TX_FAR _SilphCo10EndBattleText1
-	db "@"
+	text_far _SilphCo10EndBattleText1
+	text_end
 
 SilphCo10AfterBattleText1:
-	TX_FAR _SilphCo10AfterBattleText1
-	db "@"
+	text_far _SilphCo10AfterBattleText1
+	text_end
 
 SilphCo10BattleText2:
-	TX_FAR _SilphCo10BattleText2
-	db "@"
+	text_far _SilphCo10BattleText2
+	text_end
 
 SilphCo10EndBattleText2:
-	TX_FAR _SilphCo10EndBattleText2
-	db "@"
+	text_far _SilphCo10EndBattleText2
+	text_end
 
 SilphCo10AfterBattleText2:
-	TX_FAR _SilphCo10AfterBattleText2
-	db "@"
+	text_far _SilphCo10AfterBattleText2
+	text_end
--- a/scripts/SilphCo11F.asm
+++ b/scripts/SilphCo11F.asm
@@ -301,7 +301,7 @@
 	db $ff
 
 SilphCo11Text1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_MASTER_BALL
 	jp nz, .asm_62308
 	ld hl, SilphCoPresidentText
@@ -324,76 +324,76 @@
 	jp TextScriptEnd
 
 SilphCoPresidentText:
-	TX_FAR _SilphCoPresidentText
-	db "@"
+	text_far _SilphCoPresidentText
+	text_end
 
 ReceivedSilphCoMasterBallText:
-	TX_FAR _ReceivedSilphCoMasterBallText
-	TX_SFX_KEY_ITEM
-	db "@"
+	text_far _ReceivedSilphCoMasterBallText
+	sound_get_key_item
+	text_end
 
 SilphCo10Text_6231c:
-	TX_FAR _SilphCo10Text_6231c
-	db "@"
+	text_far _SilphCo10Text_6231c
+	text_end
 
 SilphCoMasterBallNoRoomText:
-	TX_FAR _SilphCoMasterBallNoRoomText
-	db "@"
+	text_far _SilphCoMasterBallNoRoomText
+	text_end
 
 SilphCo11Text2:
-	TX_FAR _SilphCo11Text2
-	db "@"
+	text_far _SilphCo11Text2
+	text_end
 
 SilphCo11Text3:
-	TX_FAR _SilphCo11Text3
-	db "@"
+	text_far _SilphCo11Text3
+	text_end
 
 SilphCo10Text_62330:
-	TX_FAR _SilphCo10Text_62330
-	db "@"
+	text_far _SilphCo10Text_62330
+	text_end
 
 SilphCo11Text6:
-	TX_FAR _SilphCo10Text_62335
-	db "@"
+	text_far _SilphCo10Text_62335
+	text_end
 
 SilphCo11Text4:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo11TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo11BattleText1:
-	TX_FAR _SilphCo11BattleText1
-	db "@"
+	text_far _SilphCo11BattleText1
+	text_end
 
 SilphCo11EndBattleText1:
-	TX_FAR _SilphCo11EndBattleText1
-	db "@"
+	text_far _SilphCo11EndBattleText1
+	text_end
 
 SilphCo11AfterBattleText1:
-	TX_FAR _SilphCo11AfterBattleText1
-	db "@"
+	text_far _SilphCo11AfterBattleText1
+	text_end
 
 SilphCo11Text5:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo11TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo11BattleText2:
-	TX_FAR _SilphCo11BattleText2
-	db "@"
+	text_far _SilphCo11BattleText2
+	text_end
 
 SilphCo11EndBattleText2:
-	TX_FAR _SilphCo11EndBattleText2
-	db "@"
+	text_far _SilphCo11EndBattleText2
+	text_end
 
 SilphCo11AfterBattleText2:
-	TX_FAR _SilphCo11AfterBattleText2
-	db "@"
+	text_far _SilphCo11AfterBattleText2
+	text_end
 
 SilphCo10Text_6236c:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo10Text_6237b
 	call PrintText
 	ld a, PORYGON
@@ -401,5 +401,5 @@
 	jp TextScriptEnd
 
 SilphCo10Text_6237b:
-	TX_FAR _SilphCo10Text_6237b
-	db "@"
+	text_far _SilphCo10Text_6237b
+	text_end
--- a/scripts/SilphCo1F.asm
+++ b/scripts/SilphCo1F.asm
@@ -12,5 +12,5 @@
 	dw SilphCo1Text1
 
 SilphCo1Text1:
-	TX_FAR _SilphCo1Text1
-	db "@"
+	text_far _SilphCo1Text1
+	text_end
--- a/scripts/SilphCo2F.asm
+++ b/scripts/SilphCo2F.asm
@@ -137,7 +137,7 @@
 	db $ff
 
 SilphCo2Text1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_TM36
 	jr nz, .asm_59de4
 	ld hl, SilphCo2Text_59ded
@@ -156,90 +156,90 @@
 	jp TextScriptEnd
 
 SilphCo2Text_59ded:
-	TX_FAR _SilphCo2Text_59ded
-	db "@"
+	text_far _SilphCo2Text_59ded
+	text_end
 
 ReceivedTM36Text:
-	TX_FAR _ReceivedTM36Text
-	TX_SFX_ITEM_1
-	db "@"
+	text_far _ReceivedTM36Text
+	sound_get_item_1
+	text_end
 
 TM36ExplanationText:
-	TX_FAR _TM36ExplanationText
-	db "@"
+	text_far _TM36ExplanationText
+	text_end
 
 TM36NoRoomText:
-	TX_FAR _TM36NoRoomText
-	db "@"
+	text_far _TM36NoRoomText
+	text_end
 
 SilphCo2Text2:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo2TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo2Text3:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo2TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo2Text4:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo2TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo2Text5:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo2TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo2BattleText1:
-	TX_FAR _SilphCo2BattleText1
-	db "@"
+	text_far _SilphCo2BattleText1
+	text_end
 
 SilphCo2EndBattleText1:
-	TX_FAR _SilphCo2EndBattleText1
-	db "@"
+	text_far _SilphCo2EndBattleText1
+	text_end
 
 SilphCo2AfterBattleText1:
-	TX_FAR _SilphCo2AfterBattleText1
-	db "@"
+	text_far _SilphCo2AfterBattleText1
+	text_end
 
 SilphCo2BattleText2:
-	TX_FAR _SilphCo2BattleText2
-	db "@"
+	text_far _SilphCo2BattleText2
+	text_end
 
 SilphCo2EndBattleText2:
-	TX_FAR _SilphCo2EndBattleText2
-	db "@"
+	text_far _SilphCo2EndBattleText2
+	text_end
 
 SilphCo2AfterBattleText2:
-	TX_FAR _SilphCo2AfterBattleText2
-	db "@"
+	text_far _SilphCo2AfterBattleText2
+	text_end
 
 SilphCo2BattleText3:
-	TX_FAR _SilphCo2BattleText3
-	db "@"
+	text_far _SilphCo2BattleText3
+	text_end
 
 SilphCo2EndBattleText3:
-	TX_FAR _SilphCo2EndBattleText3
-	db "@"
+	text_far _SilphCo2EndBattleText3
+	text_end
 
 SilphCo2AfterBattleText3:
-	TX_FAR _SilphCo2AfterBattleText3
-	db "@"
+	text_far _SilphCo2AfterBattleText3
+	text_end
 
 SilphCo2BattleText4:
-	TX_FAR _SilphCo2BattleText4
-	db "@"
+	text_far _SilphCo2BattleText4
+	text_end
 
 SilphCo2EndBattleText4:
-	TX_FAR _SilphCo2EndBattleText4
-	db "@"
+	text_far _SilphCo2EndBattleText4
+	text_end
 
 SilphCo2AfterBattleText4:
-	TX_FAR _SilphCo2AfterBattleText4
-	db "@"
+	text_far _SilphCo2AfterBattleText4
+	text_end
--- a/scripts/SilphCo3F.asm
+++ b/scripts/SilphCo3F.asm
@@ -82,7 +82,7 @@
 	db $ff
 
 SilphCo3Text1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	ld hl, SilphCo3Text_59ffe
 	jr nz, .asm_59fee
@@ -92,45 +92,45 @@
 	jp TextScriptEnd
 
 SilphCo3Text_59ff9:
-	TX_FAR _SilphCo3Text_59ff9
-	db "@"
+	text_far _SilphCo3Text_59ff9
+	text_end
 
 SilphCo3Text_59ffe:
-	TX_FAR _SilphCo3Text_59ffe
-	db "@"
+	text_far _SilphCo3Text_59ffe
+	text_end
 
 SilphCo3Text2:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo3TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo3BattleText1:
-	TX_FAR _SilphCo3BattleText1
-	db "@"
+	text_far _SilphCo3BattleText1
+	text_end
 
 SilphCo3EndBattleText1:
-	TX_FAR _SilphCo3EndBattleText1
-	db "@"
+	text_far _SilphCo3EndBattleText1
+	text_end
 
 SilphCo3AfterBattleText1:
-	TX_FAR _SilphCo3AfterBattleText1
-	db "@"
+	text_far _SilphCo3AfterBattleText1
+	text_end
 
 SilphCo3Text3:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo3TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo3BattleText2:
-	TX_FAR _SilphCo3BattleText2
-	db "@"
+	text_far _SilphCo3BattleText2
+	text_end
 
 SilphCo3EndBattleText2:
-	TX_FAR _SilphCo3EndBattleText2
-	db "@"
+	text_far _SilphCo3EndBattleText2
+	text_end
 
 SilphCo3AfterBattleText2:
-	TX_FAR _SilphCo3AfterBattleText2
-	db "@"
+	text_far _SilphCo3AfterBattleText2
+	text_end
--- a/scripts/SilphCo4F.asm
+++ b/scripts/SilphCo4F.asm
@@ -130,7 +130,7 @@
 	db $ff
 
 SilphCo4Text1:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo4Text_19de0
 	ld de, SilphCo4Text_19de5
 	call SilphCo6Script_1a22f
@@ -137,63 +137,63 @@
 	jp TextScriptEnd
 
 SilphCo4Text_19de0:
-	TX_FAR _SilphCo4Text_19de0
-	db "@"
+	text_far _SilphCo4Text_19de0
+	text_end
 
 SilphCo4Text_19de5:
-	TX_FAR _SilphCo4Text_19de5
-	db "@"
+	text_far _SilphCo4Text_19de5
+	text_end
 
 SilphCo4Text2:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo4TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo4BattleText2:
-	TX_FAR _SilphCo4BattleText2
-	db "@"
+	text_far _SilphCo4BattleText2
+	text_end
 
 SilphCo4EndBattleText2:
-	TX_FAR _SilphCo4EndBattleText2
-	db "@"
+	text_far _SilphCo4EndBattleText2
+	text_end
 
 SilphCo4AfterBattleText2:
-	TX_FAR _SilphCo4AfterBattleText2
-	db "@"
+	text_far _SilphCo4AfterBattleText2
+	text_end
 
 SilphCo4Text3:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo4TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo4BattleText3:
-	TX_FAR _SilphCo4BattleText3
-	db "@"
+	text_far _SilphCo4BattleText3
+	text_end
 
 SilphCo4EndBattleText3:
-	TX_FAR _SilphCo4EndBattleText3
-	db "@"
+	text_far _SilphCo4EndBattleText3
+	text_end
 
 SilphCo4AfterBattleText3:
-	TX_FAR _SilphCo4AfterBattleText3
-	db "@"
+	text_far _SilphCo4AfterBattleText3
+	text_end
 
 SilphCo4Text4:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo4TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo4BattleText4:
-	TX_FAR _SilphCo4BattleText4
-	db "@"
+	text_far _SilphCo4BattleText4
+	text_end
 
 SilphCo4EndBattleText4:
-	TX_FAR _SilphCo4EndBattleText4
-	db "@"
+	text_far _SilphCo4EndBattleText4
+	text_end
 
 SilphCo4AfterBattleText4:
-	TX_FAR _SilphCo4AfterBattleText4
-	db "@"
+	text_far _SilphCo4AfterBattleText4
+	text_end
--- a/scripts/SilphCo5F.asm
+++ b/scripts/SilphCo5F.asm
@@ -122,7 +122,7 @@
 	db $ff
 
 SilphCo5Text1:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo5Text_1a010
 	ld de, SilphCo5Text_1a015
 	call SilphCo6Script_1a22f
@@ -129,93 +129,93 @@
 	jp TextScriptEnd
 
 SilphCo5Text_1a010:
-	TX_FAR _SilphCo5Text_1a010
-	db "@"
+	text_far _SilphCo5Text_1a010
+	text_end
 
 SilphCo5Text_1a015:
-	TX_FAR _SilphCo5Text_1a015
-	db "@"
+	text_far _SilphCo5Text_1a015
+	text_end
 
 SilphCo5Text2:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo5TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo5BattleText2:
-	TX_FAR _SilphCo5BattleText2
-	db "@"
+	text_far _SilphCo5BattleText2
+	text_end
 
 SilphCo5EndBattleText2:
-	TX_FAR _SilphCo5EndBattleText2
-	db "@"
+	text_far _SilphCo5EndBattleText2
+	text_end
 
 SilphCo5AfterBattleText2:
-	TX_FAR _SilphCo5AfterBattleText2
-	db "@"
+	text_far _SilphCo5AfterBattleText2
+	text_end
 
 SilphCo5Text3:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo5TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo5BattleText3:
-	TX_FAR _SilphCo5BattleText3
-	db "@"
+	text_far _SilphCo5BattleText3
+	text_end
 
 SilphCo5EndBattleText3:
-	TX_FAR _SilphCo5EndBattleText3
-	db "@"
+	text_far _SilphCo5EndBattleText3
+	text_end
 
 SilphCo5AfterBattleText3:
-	TX_FAR _SilphCo5AfterBattleText3
-	db "@"
+	text_far _SilphCo5AfterBattleText3
+	text_end
 
 SilphCo5Text4:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo5TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo5BattleText4:
-	TX_FAR _SilphCo5BattleText4
-	db "@"
+	text_far _SilphCo5BattleText4
+	text_end
 
 SilphCo5EndBattleText4:
-	TX_FAR _SilphCo5EndBattleText4
-	db "@"
+	text_far _SilphCo5EndBattleText4
+	text_end
 
 SilphCo5AfterBattleText4:
-	TX_FAR _SilphCo5AfterBattleText4
-	db "@"
+	text_far _SilphCo5AfterBattleText4
+	text_end
 
 SilphCo5Text5:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo5TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo5BattleText5:
-	TX_FAR _SilphCo5BattleText5
-	db "@"
+	text_far _SilphCo5BattleText5
+	text_end
 
 SilphCo5EndBattleText5:
-	TX_FAR _SilphCo5EndBattleText5
-	db "@"
+	text_far _SilphCo5EndBattleText5
+	text_end
 
 SilphCo5AfterBattleText5:
-	TX_FAR _SilphCo5AfterBattleText5
-	db "@"
+	text_far _SilphCo5AfterBattleText5
+	text_end
 
 SilphCo5Text9:
-	TX_FAR _SilphCo5Text9
-	db "@"
+	text_far _SilphCo5Text9
+	text_end
 
 SilphCo5Text10:
-	TX_FAR _SilphCo5Text10
-	db "@"
+	text_far _SilphCo5Text10
+	text_end
 
 SilphCo5Text11:
-	TX_FAR _SilphCo5Text11
-	db "@"
+	text_far _SilphCo5Text11
+	text_end
--- a/scripts/SilphCo6F.asm
+++ b/scripts/SilphCo6F.asm
@@ -91,7 +91,7 @@
 	jp PrintText
 
 SilphCo6Text1:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo6Text_1a24a
 	ld de, SilphCo6Text_1a24f
 	call SilphCo6Script_1a22f
@@ -98,15 +98,15 @@
 	jp TextScriptEnd
 
 SilphCo6Text_1a24a:
-	TX_FAR _SilphCo6Text_1a24a
-	db "@"
+	text_far _SilphCo6Text_1a24a
+	text_end
 
 SilphCo6Text_1a24f:
-	TX_FAR _SilphCo6Text_1a24f
-	db "@"
+	text_far _SilphCo6Text_1a24f
+	text_end
 
 SilphCo6Text2:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo6Text_1a261
 	ld de, SilphCo6Text_1a266
 	call SilphCo6Script_1a22f
@@ -113,15 +113,15 @@
 	jp TextScriptEnd
 
 SilphCo6Text_1a261:
-	TX_FAR _SilphCo6Text_1a261
-	db "@"
+	text_far _SilphCo6Text_1a261
+	text_end
 
 SilphCo6Text_1a266:
-	TX_FAR _SilphCo6Text_1a266
-	db "@"
+	text_far _SilphCo6Text_1a266
+	text_end
 
 SilphCo6Text3:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo6Text_1a278
 	ld de, SilphCo6Text_1a27d
 	call SilphCo6Script_1a22f
@@ -128,15 +128,15 @@
 	jp TextScriptEnd
 
 SilphCo6Text_1a278:
-	TX_FAR _SilphCo6Text_1a278
-	db "@"
+	text_far _SilphCo6Text_1a278
+	text_end
 
 SilphCo6Text_1a27d:
-	TX_FAR _SilphCo6Text_1a27d
-	db "@"
+	text_far _SilphCo6Text_1a27d
+	text_end
 
 SilphCo6Text4:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo6Text_1a28f
 	ld de, SilphCo6Text_1a294
 	call SilphCo6Script_1a22f
@@ -143,15 +143,15 @@
 	jp TextScriptEnd
 
 SilphCo6Text_1a28f:
-	TX_FAR _SilphCo6Text_1a28f
-	db "@"
+	text_far _SilphCo6Text_1a28f
+	text_end
 
 SilphCo6Text_1a294:
-	TX_FAR _SilphCo6Text_1a294
-	db "@"
+	text_far _SilphCo6Text_1a294
+	text_end
 
 SilphCo6Text5:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo6Text_1a2a6
 	ld de, SilphCo6Text_1a2ab
 	call SilphCo6Script_1a22f
@@ -158,63 +158,63 @@
 	jp TextScriptEnd
 
 SilphCo6Text_1a2a6:
-	TX_FAR _SilphCo6Text_1a2a6
-	db "@"
+	text_far _SilphCo6Text_1a2a6
+	text_end
 
 SilphCo6Text_1a2ab:
-	TX_FAR _SilphCo6Text_1a2ab
-	db "@"
+	text_far _SilphCo6Text_1a2ab
+	text_end
 
 SilphCo6Text6:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo6TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo6BattleText2:
-	TX_FAR _SilphCo6BattleText2
-	db "@"
+	text_far _SilphCo6BattleText2
+	text_end
 
 SilphCo6EndBattleText2:
-	TX_FAR _SilphCo6EndBattleText2
-	db "@"
+	text_far _SilphCo6EndBattleText2
+	text_end
 
 SilphCo6AfterBattleText2:
-	TX_FAR _SilphCo6AfterBattleText2
-	db "@"
+	text_far _SilphCo6AfterBattleText2
+	text_end
 
 SilphCo6Text7:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo6TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo6BattleText3:
-	TX_FAR _SilphCo6BattleText3
-	db "@"
+	text_far _SilphCo6BattleText3
+	text_end
 
 SilphCo6EndBattleText3:
-	TX_FAR _SilphCo6EndBattleText3
-	db "@"
+	text_far _SilphCo6EndBattleText3
+	text_end
 
 SilphCo6AfterBattleText3:
-	TX_FAR _SilphCo6AfterBattleText3
-	db "@"
+	text_far _SilphCo6AfterBattleText3
+	text_end
 
 SilphCo6Text8:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo6TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo6BattleText4:
-	TX_FAR _SilphCo6BattleText4
-	db "@"
+	text_far _SilphCo6BattleText4
+	text_end
 
 SilphCo6EndBattleText4:
-	TX_FAR _SilphCo6EndBattleText4
-	db "@"
+	text_far _SilphCo6EndBattleText4
+	text_end
 
 SilphCo6AfterBattleText4:
-	TX_FAR _SilphCo6AfterBattleText4
-	db "@"
+	text_far _SilphCo6AfterBattleText4
+	text_end
--- a/scripts/SilphCo7F.asm
+++ b/scripts/SilphCo7F.asm
@@ -319,7 +319,7 @@
 
 SilphCo7Text1:
 ; lapras guy
-	TX_ASM
+	text_asm
 	ld a, [wd72e]
 	bit 0, a ; got lapras?
 	jr z, .givelapras
@@ -350,23 +350,23 @@
 	jp TextScriptEnd
 
 .MeetLaprasGuyText
-	TX_FAR _MeetLaprasGuyText
-	db "@"
+	text_far _MeetLaprasGuyText
+	text_end
 
 .HeresYourLaprasText
-	TX_FAR _HeresYourLaprasText
-	db "@"
+	text_far _HeresYourLaprasText
+	text_end
 
 .LaprasGuyText
-	TX_FAR _LaprasGuyText
-	db "@"
+	text_far _LaprasGuyText
+	text_end
 
 .LaprasGuySavedText
-	TX_FAR _LaprasGuySavedText
-	db "@"
+	text_far _LaprasGuySavedText
+	text_end
 
 SilphCo7Text2:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	jr nz, .savedsilph
 	ld hl, .rockettext
@@ -379,15 +379,15 @@
 	jp TextScriptEnd
 
 .rockettext
-	TX_FAR _SilphCo7Text_51e00
-	db "@"
+	text_far _SilphCo7Text_51e00
+	text_end
 
 .savedtext
-	TX_FAR _CanceledMasterBallText
-	db "@"
+	text_far _CanceledMasterBallText
+	text_end
 
 SilphCo7Text3:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	jr nz, .savedsilph
 	ld hl, .rockettext
@@ -400,15 +400,15 @@
 	jp TextScriptEnd
 
 .rockettext
-	TX_FAR _SilphCo7Text_51e23
-	db "@"
+	text_far _SilphCo7Text_51e23
+	text_end
 
 .savedtext
-	TX_FAR _SilphCo7Text_51e28
-	db "@"
+	text_far _SilphCo7Text_51e28
+	text_end
 
 SilphCo7Text4:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	jr nz, .savedsilph
 	ld hl, .rockettext
@@ -421,107 +421,107 @@
 	jp TextScriptEnd
 
 .rockettext
-	TX_FAR _SilphCo7Text_51e46
-	db "@"
+	text_far _SilphCo7Text_51e46
+	text_end
 
 .savedtext
-	TX_FAR _SilphCo7Text_51e4b
-	db "@"
+	text_far _SilphCo7Text_51e4b
+	text_end
 
 SilphCo7Text5:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo7TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo7BattleText1:
-	TX_FAR _SilphCo7BattleText1
-	db "@"
+	text_far _SilphCo7BattleText1
+	text_end
 
 SilphCo7EndBattleText1:
-	TX_FAR _SilphCo7EndBattleText1
-	db "@"
+	text_far _SilphCo7EndBattleText1
+	text_end
 
 SilphCo7AfterBattleText1:
-	TX_FAR _SilphCo7AfterBattleText1
-	db "@"
+	text_far _SilphCo7AfterBattleText1
+	text_end
 
 SilphCo7Text6:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo7TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo7BattleText2:
-	TX_FAR _SilphCo7BattleText2
-	db "@"
+	text_far _SilphCo7BattleText2
+	text_end
 
 SilphCo7EndBattleText2:
-	TX_FAR _SilphCo7EndBattleText2
-	db "@"
+	text_far _SilphCo7EndBattleText2
+	text_end
 
 SilphCo7AfterBattleText2:
-	TX_FAR _SilphCo7AfterBattleText2
-	db "@"
+	text_far _SilphCo7AfterBattleText2
+	text_end
 
 SilphCo7Text7:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo7TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo7BattleText3:
-	TX_FAR _SilphCo7BattleText3
-	db "@"
+	text_far _SilphCo7BattleText3
+	text_end
 
 SilphCo7EndBattleText3:
-	TX_FAR _SilphCo7EndBattleText3
-	db "@"
+	text_far _SilphCo7EndBattleText3
+	text_end
 
 SilphCo7AfterBattleText3:
-	TX_FAR _SilphCo7AfterBattleText3
-	db "@"
+	text_far _SilphCo7AfterBattleText3
+	text_end
 
 SilphCo7Text8:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo7TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo7BattleText4:
-	TX_FAR _SilphCo7BattleText4
-	db "@"
+	text_far _SilphCo7BattleText4
+	text_end
 
 SilphCo7EndBattleText4:
-	TX_FAR _SilphCo7EndBattleText4
-	db "@"
+	text_far _SilphCo7EndBattleText4
+	text_end
 
 SilphCo7AfterBattleText4:
-	TX_FAR _SilphCo7AfterBattleText4
-	db "@"
+	text_far _SilphCo7AfterBattleText4
+	text_end
 
 SilphCo7Text9:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo7Text_51ebe
 	call PrintText
 	jp TextScriptEnd
 
 SilphCo7Text_51ebe:
-	TX_FAR _SilphCo7Text_51ebe
-	db "@"
+	text_far _SilphCo7Text_51ebe
+	text_end
 
 SilphCo7Text13:
-	TX_FAR _SilphCo7Text_51ec3
-	db "@"
+	text_far _SilphCo7Text_51ec3
+	text_end
 
 SilphCo7Text14:
-	TX_FAR _SilphCo7Text_51ec8
-	db "@"
+	text_far _SilphCo7Text_51ec8
+	text_end
 
 SilphCo7Text_51ecd:
-	TX_FAR _SilphCo7Text_51ecd
-	db "@"
+	text_far _SilphCo7Text_51ecd
+	text_end
 
 SilphCo7Text15:
-	TX_FAR _SilphCo7Text_51ed2
-	db "@"
+	text_far _SilphCo7Text_51ed2
+	text_end
--- a/scripts/SilphCo8F.asm
+++ b/scripts/SilphCo8F.asm
@@ -111,7 +111,7 @@
 	db $ff
 
 SilphCo8Text1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	ld hl, SilphCo8Text_565c3
 	jr nz, .asm_565b8
@@ -121,63 +121,63 @@
 	jp TextScriptEnd
 
 SilphCo8Text_565be:
-	TX_FAR _SilphCo8Text_565be
-	db "@"
+	text_far _SilphCo8Text_565be
+	text_end
 
 SilphCo8Text_565c3:
-	TX_FAR _SilphCo8Text_565c3
-	db "@"
+	text_far _SilphCo8Text_565c3
+	text_end
 
 SilphCo8Text2:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo8TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo8Text3:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo8TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo8Text4:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo8TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo8BattleText1:
-	TX_FAR _SilphCo8BattleText1
-	db "@"
+	text_far _SilphCo8BattleText1
+	text_end
 
 SilphCo8EndBattleText1:
-	TX_FAR _SilphCo8EndBattleText1
-	db "@"
+	text_far _SilphCo8EndBattleText1
+	text_end
 
 SilphCo8AfterBattleText1:
-	TX_FAR _SilphCo8AfterBattleText1
-	db "@"
+	text_far _SilphCo8AfterBattleText1
+	text_end
 
 SilphCo8BattleText2:
-	TX_FAR _SilphCo8BattleText2
-	db "@"
+	text_far _SilphCo8BattleText2
+	text_end
 
 SilphCo8EndBattleText2:
-	TX_FAR _SilphCo8EndBattleText2
-	db "@"
+	text_far _SilphCo8EndBattleText2
+	text_end
 
 SilphCo8AfterBattleText2:
-	TX_FAR _SilphCo8AfterBattleText2
-	db "@"
+	text_far _SilphCo8AfterBattleText2
+	text_end
 
 SilphCo8BattleText3:
-	TX_FAR _SilphCo8BattleText3
-	db "@"
+	text_far _SilphCo8BattleText3
+	text_end
 
 SilphCo8EndBattleText3:
-	TX_FAR _SilphCo8EndBattleText3
-	db "@"
+	text_far _SilphCo8EndBattleText3
+	text_end
 
 SilphCo8AfterBattleText3:
-	TX_FAR _SilphCo8AfterBattleText3
-	db "@"
+	text_far _SilphCo8AfterBattleText3
+	text_end
--- a/scripts/SilphCo9F.asm
+++ b/scripts/SilphCo9F.asm
@@ -159,7 +159,7 @@
 	db $ff
 
 SilphCo9Text1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
 	jr nz, .asm_5d8dc
 	ld hl, SilphCo9Text_5d8e5
@@ -178,67 +178,67 @@
 	jp TextScriptEnd
 
 SilphCo9Text_5d8e5:
-	TX_FAR _SilphCo9Text_5d8e5
-	db "@"
+	text_far _SilphCo9Text_5d8e5
+	text_end
 
 SilphCo9Text_5d8ea:
-	TX_FAR _SilphCo9Text_5d8ea
-	db "@"
+	text_far _SilphCo9Text_5d8ea
+	text_end
 
 SilphCo9Text_5d8ef:
-	TX_FAR _SilphCo9Text_5d8ef
-	db "@"
+	text_far _SilphCo9Text_5d8ef
+	text_end
 
 SilphCo9Text2:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo9TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo9Text3:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo9TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo9Text4:
-	TX_ASM
+	text_asm
 	ld hl, SilphCo9TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 SilphCo9BattleText1:
-	TX_FAR _SilphCo9BattleText1
-	db "@"
+	text_far _SilphCo9BattleText1
+	text_end
 
 SilphCo9EndBattleText1:
-	TX_FAR _SilphCo9EndBattleText1
-	db "@"
+	text_far _SilphCo9EndBattleText1
+	text_end
 
 SilphCo9AfterBattleText1:
-	TX_FAR _SilphCo9AfterBattleText1
-	db "@"
+	text_far _SilphCo9AfterBattleText1
+	text_end
 
 SilphCo9BattleText2:
-	TX_FAR _SilphCo9BattleText2
-	db "@"
+	text_far _SilphCo9BattleText2
+	text_end
 
 SilphCo9EndBattleText2:
-	TX_FAR _SilphCo9EndBattleText2
-	db "@"
+	text_far _SilphCo9EndBattleText2
+	text_end
 
 SilphCo9AfterBattleText2:
-	TX_FAR _SilphCo9AfterBattleText2
-	db "@"
+	text_far _SilphCo9AfterBattleText2
+	text_end
 
 SilphCo9BattleText3:
-	TX_FAR _SilphCo9BattleText3
-	db "@"
+	text_far _SilphCo9BattleText3
+	text_end
 
 SilphCo9EndBattleText3:
-	TX_FAR _SilphCo9EndBattleText3
-	db "@"
+	text_far _SilphCo9EndBattleText3
+	text_end
 
 SilphCo9AfterBattleText3:
-	TX_FAR _SilphCo9AfterBattleText3
-	db "@"
+	text_far _SilphCo9AfterBattleText3
+	text_end
--- a/scripts/SilphCoElevator.asm
+++ b/scripts/SilphCoElevator.asm
@@ -81,7 +81,7 @@
 	dw SilphCoElevatorText1
 
 SilphCoElevatorText1:
-	TX_ASM
+	text_asm
 	call SilphCoElevatorScript_457f1
 	ld hl, SilphCoElevatorWarpMaps
 	predef DisplayElevatorFloorMenu
--- a/scripts/TradeCenter.asm
+++ b/scripts/TradeCenter.asm
@@ -34,5 +34,5 @@
 	dw TradeCenterText1
 
 TradeCenterText1:
-	TX_FAR _TradeCenterText1
-	db "@"
+	text_far _TradeCenterText1
+	text_end
--- a/scripts/UndergroundPathNorthSouth.asm
+++ b/scripts/UndergroundPathNorthSouth.asm
@@ -2,4 +2,4 @@
 	jp EnableAutoTextBoxDrawing
 
 UndergroundPathNorthSouth_TextPointers:
-	db "@"
+	text_end
--- a/scripts/UndergroundPathRoute5.asm
+++ b/scripts/UndergroundPathRoute5.asm
@@ -3,16 +3,16 @@
 	ld [wLastMap], a
 	ret
 
-UndergroundPathEntranceRoute5_5d6af:
-	db "@"
+UndergroundPathEntranceRoute5_TextScriptEndingText:
+	text_end
 
 UndergroundPathRoute5_TextPointers:
 	dw UndergroundPathEntranceRoute5Text1
 
 UndergroundPathEntranceRoute5Text1:
-	TX_ASM
+	text_asm
 	ld a, $9
 	ld [wWhichTrade], a
 	predef DoInGameTradeDialogue
-	ld hl, UndergroundPathEntranceRoute5_5d6af
+	ld hl, UndergroundPathEntranceRoute5_TextScriptEndingText
 	ret
--- a/scripts/UndergroundPathRoute6.asm
+++ b/scripts/UndergroundPathRoute6.asm
@@ -7,5 +7,5 @@
 	dw UndergroundPathEntranceRoute6Text1
 
 UndergroundPathEntranceRoute6Text1:
-	TX_FAR _UndergrdTunnelEntRoute6Text1
-	db "@"
+	text_far _UndergrdTunnelEntRoute6Text1
+	text_end
--- a/scripts/UndergroundPathRoute7.asm
+++ b/scripts/UndergroundPathRoute7.asm
@@ -7,5 +7,5 @@
 	dw UndergroundPathEntranceRoute7Text1
 
 UndergroundPathEntranceRoute7Text1:
-	TX_FAR _UndergroundPathEntRoute7Text1
-	db "@"
+	text_far _UndergroundPathEntRoute7Text1
+	text_end
--- a/scripts/UndergroundPathRoute7Copy.asm
+++ b/scripts/UndergroundPathRoute7Copy.asm
@@ -8,17 +8,17 @@
 	dw UGPathRoute7EntranceUnusedText_5d77d
 
 UGPathRoute7EntranceUnusedText_5d773:
-	TX_FAR _UGPathRoute7EntranceUnusedText_5d773
-	db "@"
+	text_far _UGPathRoute7EntranceUnusedText_5d773
+	text_end
 
 UGPathRoute7EntranceUnusedText_5d778:
-	TX_FAR _UGPathRoute7EntranceUnusedText_5d778
-	db "@"
+	text_far _UGPathRoute7EntranceUnusedText_5d778
+	text_end
 
 UGPathRoute7EntranceUnusedText_5d77d:
-	TX_FAR _UGPathRoute7EntranceUnusedText_5d77d
-	db "@"
+	text_far _UGPathRoute7EntranceUnusedText_5d77d
+	text_end
 
 UGPathRoute7EntranceUnusedText_5d782:
-	TX_FAR _UGPathRoute7EntranceUnusedText_5d782
-	db "@"
+	text_far _UGPathRoute7EntranceUnusedText_5d782
+	text_end
--- a/scripts/UndergroundPathRoute8.asm
+++ b/scripts/UndergroundPathRoute8.asm
@@ -7,5 +7,5 @@
 	dw UndergroundPathEntranceRoute8Text1
 
 UndergroundPathEntranceRoute8Text1:
-	TX_FAR _UndergroundPathEntRoute8Text1
-	db "@"
+	text_far _UndergroundPathEntRoute8Text1
+	text_end
--- a/scripts/UndergroundPathWestEast.asm
+++ b/scripts/UndergroundPathWestEast.asm
@@ -2,4 +2,4 @@
 	jp EnableAutoTextBoxDrawing
 
 UndergroundPathWestEast_TextPointers:
-	db "@"
+	text_end
--- a/scripts/VermilionCity.asm
+++ b/scripts/VermilionCity.asm
@@ -129,11 +129,11 @@
 	dw VermilionCityText13
 
 VermilionCityText1:
-	TX_FAR _VermilionCityText1
-	db "@"
+	text_far _VermilionCityText1
+	text_end
 
 VermilionCityText2:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_SS_ANNE_LEFT
 	jr nz, .shipHasDeparted
 	ld hl, VermilionCityTextDidYouSee
@@ -146,15 +146,15 @@
 	jp TextScriptEnd
 
 VermilionCityTextDidYouSee:
-	TX_FAR _VermilionCityTextDidYouSee
-	db "@"
+	text_far _VermilionCityTextDidYouSee
+	text_end
 
 VermilionCityTextSSAnneDeparted:
-	TX_FAR _VermilionCityTextSSAnneDeparted
-	db "@"
+	text_far _VermilionCityTextSSAnneDeparted
+	text_end
 
 VermilionCityText3:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_SS_ANNE_LEFT
 	jr nz, .shipHasDeparted
 	ld a, [wSpriteStateData1 + 9]
@@ -196,32 +196,32 @@
 	db $ff
 
 SSAnneWelcomeText4:
-	TX_FAR _SSAnneWelcomeText4
-	db "@"
+	text_far _SSAnneWelcomeText4
+	text_end
 
 SSAnneWelcomeText9:
-	TX_FAR _SSAnneWelcomeText9
-	db "@"
+	text_far _SSAnneWelcomeText9
+	text_end
 
 SSAnneFlashedTicketText:
-	TX_FAR _SSAnneFlashedTicketText
-	db "@"
+	text_far _SSAnneFlashedTicketText
+	text_end
 
 SSAnneNoTicketText:
-	TX_FAR _SSAnneNoTicketText
-	db "@"
+	text_far _SSAnneNoTicketText
+	text_end
 
 SSAnneNotHereText:
-	TX_FAR _SSAnneNotHereText
-	db "@"
+	text_far _SSAnneNotHereText
+	text_end
 
 VermilionCityText4:
-	TX_FAR _VermilionCityText4
-	db "@"
+	text_far _VermilionCityText4
+	text_end
 
 VermilionCityText5:
-	TX_FAR _VermilionCityText5
-	TX_ASM
+	text_far _VermilionCityText5
+	text_asm
 	ld a, MACHOP
 	call PlayCry
 	call WaitForSoundToFinish
@@ -229,29 +229,29 @@
 	ret
 
 VermilionCityText14:
-	TX_FAR _VermilionCityText14
-	db "@"
+	text_far _VermilionCityText14
+	text_end
 
 VermilionCityText6:
-	TX_FAR _VermilionCityText6
-	db "@"
+	text_far _VermilionCityText6
+	text_end
 
 VermilionCityText7:
-	TX_FAR _VermilionCityText7
-	db "@"
+	text_far _VermilionCityText7
+	text_end
 
 VermilionCityText8:
-	TX_FAR _VermilionCityText8
-	db "@"
+	text_far _VermilionCityText8
+	text_end
 
 VermilionCityText11:
-	TX_FAR _VermilionCityText11
-	db "@"
+	text_far _VermilionCityText11
+	text_end
 
 VermilionCityText12:
-	TX_FAR _VermilionCityText12
-	db "@"
+	text_far _VermilionCityText12
+	text_end
 
 VermilionCityText13:
-	TX_FAR _VermilionCityText13
-	db "@"
+	text_far _VermilionCityText13
+	text_end
--- a/scripts/VermilionDock.asm
+++ b/scripts/VermilionDock.asm
@@ -211,5 +211,5 @@
 	dw VermilionDockText1
 
 VermilionDockText1:
-	TX_FAR _VermilionDockText1
-	db "@"
+	text_far _VermilionDockText1
+	text_end
--- a/scripts/VermilionGym.asm
+++ b/scripts/VermilionGym.asm
@@ -129,7 +129,7 @@
 	db $ff
 
 LTSurgeText:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_LT_SURGE
 	jr z, .beforeBeat
 	CheckEventReuseA EVENT_GOT_TM24
@@ -165,87 +165,87 @@
 	jp TextScriptEnd
 
 LTSurgePreBattleText:
-	TX_FAR _LTSurgePreBattleText
-	db "@"
+	text_far _LTSurgePreBattleText
+	text_end
 
 LTSurgePostBattleAdviceText:
-	TX_FAR _LTSurgePostBattleAdviceText
-	db "@"
+	text_far _LTSurgePostBattleAdviceText
+	text_end
 
 LTSurgeThunderbadgeInfoText:
-	TX_FAR _LTSurgeThunderbadgeInfoText
-	db "@"
+	text_far _LTSurgeThunderbadgeInfoText
+	text_end
 
 ReceivedTM24Text:
-	TX_FAR _ReceivedTM24Text
-	TX_SFX_KEY_ITEM
-	TX_FAR _TM24ExplanationText
-	db "@"
+	text_far _ReceivedTM24Text
+	sound_get_key_item
+	text_far _TM24ExplanationText
+	text_end
 
 TM24NoRoomText:
-	TX_FAR _TM24NoRoomText
-	db "@"
+	text_far _TM24NoRoomText
+	text_end
 
 ReceivedThunderbadgeText:
-	TX_FAR _ReceivedThunderbadgeText
-	db "@"
+	text_far _ReceivedThunderbadgeText
+	text_end
 
 VermilionGymTrainerText1:
-	TX_ASM
+	text_asm
 	ld hl, VermilionGymTrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 VermilionGymBattleText1:
-	TX_FAR _VermilionGymBattleText1
-	db "@"
+	text_far _VermilionGymBattleText1
+	text_end
 
 VermilionGymEndBattleText1:
-	TX_FAR _VermilionGymEndBattleText1
-	db "@"
+	text_far _VermilionGymEndBattleText1
+	text_end
 
 VermilionGymAfterBattleText1:
-	TX_FAR _VermilionGymAfterBattleText1
-	db "@"
+	text_far _VermilionGymAfterBattleText1
+	text_end
 
 VermilionGymTrainerText2:
-	TX_ASM
+	text_asm
 	ld hl, VermilionGymTrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 VermilionGymBattleText2:
-	TX_FAR _VermilionGymBattleText2
-	db "@"
+	text_far _VermilionGymBattleText2
+	text_end
 
 VermilionGymEndBattleText2:
-	TX_FAR _VermilionGymEndBattleText2
-	db "@"
+	text_far _VermilionGymEndBattleText2
+	text_end
 
 VermilionGymAfterBattleText2:
-	TX_FAR _VermilionGymAfterBattleText2
-	db "@"
+	text_far _VermilionGymAfterBattleText2
+	text_end
 
 VermilionGymTrainerText3:
-	TX_ASM
+	text_asm
 	ld hl, VermilionGymTrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 VermilionGymBattleText3:
-	TX_FAR _VermilionGymBattleText3
-	db "@"
+	text_far _VermilionGymBattleText3
+	text_end
 
 VermilionGymEndBattleText3:
-	TX_FAR _VermilionGymEndBattleText3
-	db "@"
+	text_far _VermilionGymEndBattleText3
+	text_end
 
 VermilionGymAfterBattleText3:
-	TX_FAR _VermilionGymAfterBattleText3
-	db "@"
+	text_far _VermilionGymAfterBattleText3
+	text_end
 
 VermilionGymFanText:
-	TX_ASM
+	text_asm
 	ld a, [wBeatGymFlags]
 	bit 2, a
 	jr nz, .afterBeat
@@ -259,9 +259,9 @@
 	jp TextScriptEnd
 
 VermilionGymFanPreBattleText:
-	TX_FAR _VermilionGymFanPreBattleText
-	db "@"
+	text_far _VermilionGymFanPreBattleText
+	text_end
 
 VermilionGymFanPostBattleText:
-	TX_FAR _VermilionGymFanPostBattleText
-	db "@"
+	text_far _VermilionGymFanPostBattleText
+	text_end
--- a/scripts/VermilionMart.asm
+++ b/scripts/VermilionMart.asm
@@ -7,9 +7,9 @@
 	dw VermilionMartText3
 
 VermilionMartText2:
-	TX_FAR _VermilionMartText2
-	db "@"
+	text_far _VermilionMartText2
+	text_end
 
 VermilionMartText3:
-	TX_FAR _VermilionMartText3
-	db "@"
+	text_far _VermilionMartText3
+	text_end
--- a/scripts/VermilionOldRodHouse.asm
+++ b/scripts/VermilionOldRodHouse.asm
@@ -5,7 +5,7 @@
 	dw VermilionHouse2Text1
 
 VermilionHouse2Text1:
-	TX_ASM
+	text_asm
 	ld a, [wd728]
 	bit 3, a
 	jr nz, .asm_03ef5
@@ -35,23 +35,23 @@
 	jp TextScriptEnd
 
 VermilionHouse2Text_560b1:
-	TX_FAR _VermilionHouse2Text_560b1
-	db "@"
+	text_far _VermilionHouse2Text_560b1
+	text_end
 
 VermilionHouse2Text_560b6:
-	TX_FAR _VermilionHouse2Text_560b6
-	TX_SFX_ITEM_1
-	TX_FAR _VermilionHouse2Text_560bb
-	db "@"
+	text_far _VermilionHouse2Text_560b6
+	sound_get_item_1
+	text_far _VermilionHouse2Text_560bb
+	text_end
 
 VermilionHouse2Text_560c0:
-	TX_FAR _VermilionHouse2Text_560c0
-	db "@"
+	text_far _VermilionHouse2Text_560c0
+	text_end
 
 VermilionHouse2Text_560c5:
-	TX_FAR _VermilionHouse2Text_560c5
-	db "@"
+	text_far _VermilionHouse2Text_560c5
+	text_end
 
 VermilionHouse2Text_560ca:
-	TX_FAR _VermilionHouse2Text_560ca
-	db "@"
+	text_far _VermilionHouse2Text_560ca
+	text_end
--- a/scripts/VermilionPidgeyHouse.asm
+++ b/scripts/VermilionPidgeyHouse.asm
@@ -8,12 +8,12 @@
 	dw VermilionHouse1Text3
 
 VermilionHouse1Text1:
-	TX_FAR _VermilionHouse1Text1
-	db "@"
+	text_far _VermilionHouse1Text1
+	text_end
 
 VermilionHouse1Text2:
-	TX_FAR _VermilionHouse1Text2
-	TX_ASM
+	text_far _VermilionHouse1Text2
+	text_asm
 	ld a, PIDGEY
 	call PlayCry
 	call WaitForSoundToFinish
@@ -20,5 +20,5 @@
 	jp TextScriptEnd
 
 VermilionHouse1Text3:
-	TX_FAR _VermilionHouse1Text3
-	db "@"
+	text_far _VermilionHouse1Text3
+	text_end
--- a/scripts/VermilionPokecenter.asm
+++ b/scripts/VermilionPokecenter.asm
@@ -9,15 +9,15 @@
 	dw VermilionTradeNurseText
 
 VermilionHealNurseText:
-	TX_POKECENTER_NURSE
+	script_pokecenter_nurse
 
 VermilionPokecenterText2:
-	TX_FAR _VermilionPokecenterText2
-	db "@"
+	text_far _VermilionPokecenterText2
+	text_end
 
 VermilionPokecenterText3:
-	TX_FAR _VermilionPokecenterText3
-	db "@"
+	text_far _VermilionPokecenterText3
+	text_end
 
 VermilionTradeNurseText:
-	TX_CABLE_CLUB_RECEPTIONIST
+	script_cable_club_receptionist
--- a/scripts/VermilionTradeHouse.asm
+++ b/scripts/VermilionTradeHouse.asm
@@ -5,7 +5,7 @@
 	dw VermilionHouse3Text1
 
 VermilionHouse3Text1:
-	TX_ASM
+	text_asm
 	ld a, $4
 	ld [wWhichTrade], a
 	predef DoInGameTradeDialogue
--- a/scripts/VictoryRoad1F.asm
+++ b/scripts/VictoryRoad1F.asm
@@ -67,37 +67,37 @@
 	db $ff
 
 VictoryRoad1Text1:
-	TX_ASM
+	text_asm
 	ld hl, VictoryRoad1TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 VictoryRoad1Text2:
-	TX_ASM
+	text_asm
 	ld hl, VictoryRoad1TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 VictoryRoad1BattleText1:
-	TX_FAR _VictoryRoad1BattleText1
-	db "@"
+	text_far _VictoryRoad1BattleText1
+	text_end
 
 VictoryRoad1EndBattleText1:
-	TX_FAR _VictoryRoad1EndBattleText1
-	db "@"
+	text_far _VictoryRoad1EndBattleText1
+	text_end
 
 VictoryRoad1AfterBattleText1:
-	TX_FAR _VictoryRoad1AfterBattleText1
-	db "@"
+	text_far _VictoryRoad1AfterBattleText1
+	text_end
 
 VictoryRoad1BattleText2:
-	TX_FAR _VictoryRoad1BattleText2
-	db "@"
+	text_far _VictoryRoad1BattleText2
+	text_end
 
 VictoryRoad1EndBattleText2:
-	TX_FAR _VictoryRoad1EndBattleText2
-	db "@"
+	text_far _VictoryRoad1EndBattleText2
+	text_end
 
 VictoryRoad1AfterBattleText2:
-	TX_FAR _VictoryRoad1AfterBattleText2
-	db "@"
+	text_far _VictoryRoad1AfterBattleText2
+	text_end
--- a/scripts/VictoryRoad2F.asm
+++ b/scripts/VictoryRoad2F.asm
@@ -140,44 +140,44 @@
 	db $ff
 
 VictoryRoad2Text1:
-	TX_ASM
+	text_asm
 	ld hl, VictoryRoad2TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 VictoryRoad2Text2:
-	TX_ASM
+	text_asm
 	ld hl, VictoryRoad2TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 VictoryRoad2Text3:
-	TX_ASM
+	text_asm
 	ld hl, VictoryRoad2TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 VictoryRoad2Text4:
-	TX_ASM
+	text_asm
 	ld hl, VictoryRoad2TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 VictoryRoad2Text5:
-	TX_ASM
+	text_asm
 	ld hl, VictoryRoad2TrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 MoltresText:
-	TX_ASM
+	text_asm
 	ld hl, MoltresTrainerHeader
 	call TalkToTrainer
 	jp TextScriptEnd
 
 MoltresBattleText:
-	TX_FAR _MoltresBattleText
-	TX_ASM
+	text_far _MoltresBattleText
+	text_asm
 	ld a, MOLTRES
 	call PlayCry
 	call WaitForSoundToFinish
@@ -184,61 +184,61 @@
 	jp TextScriptEnd
 
 VictoryRoad2BattleText1:
-	TX_FAR _VictoryRoad2BattleText1
-	db "@"
+	text_far _VictoryRoad2BattleText1
+	text_end
 
 VictoryRoad2EndBattleText1:
-	TX_FAR _VictoryRoad2EndBattleText1
-	db "@"
+	text_far _VictoryRoad2EndBattleText1
+	text_end
 
 VictoryRoad2AfterBattleText1:
-	TX_FAR _VictoryRoad2AfterBattleText1
-	db "@"
+	text_far _VictoryRoad2AfterBattleText1
+	text_end
 
 VictoryRoad2BattleText2:
-	TX_FAR _VictoryRoad2BattleText2
-	db "@"
+	text_far _VictoryRoad2BattleText2
+	text_end
 
 VictoryRoad2EndBattleText2:
-	TX_FAR _VictoryRoad2EndBattleText2
-	db "@"
+	text_far _VictoryRoad2EndBattleText2
+	text_end
 
 VictoryRoad2AfterBattleText2:
-	TX_FAR _VictoryRoad2AfterBattleText2
-	db "@"
+	text_far _VictoryRoad2AfterBattleText2
+	text_end
 
 VictoryRoad2BattleText3:
-	TX_FAR _VictoryRoad2BattleText3
-	db "@"
+	text_far _VictoryRoad2BattleText3
+	text_end
 
 VictoryRoad2EndBattleText3:
-	TX_FAR _VictoryRoad2EndBattleText3
-	db "@"
+	text_far _VictoryRoad2EndBattleText3
+	text_end
 
 VictoryRoad2AfterBattleText3:
-	TX_FAR _VictoryRoad2AfterBattleText3
-	db "@"
+	text_far _VictoryRoad2AfterBattleText3
+	text_end
 
 VictoryRoad2BattleText4:
-	TX_FAR _VictoryRoad2BattleText4
-	db "@"
+	text_far _VictoryRoad2BattleText4
+	text_end
 
 VictoryRoad2EndBattleText4:
-	TX_FAR _VictoryRoad2EndBattleText4
-	db "@"
+	text_far _VictoryRoad2EndBattleText4
+	text_end
 
 VictoryRoad2AfterBattleText4:
-	TX_FAR _VictoryRoad2AfterBattleText4
-	db "@"
+	text_far _VictoryRoad2AfterBattleText4
+	text_end
 
 VictoryRoad2BattleText5:
-	TX_FAR _VictoryRoad2BattleText5
-	db "@"
+	text_far _VictoryRoad2BattleText5
+	text_end
 
 VictoryRoad2EndBattleText5:
-	TX_FAR _VictoryRoad2EndBattleText5
-	db "@"
+	text_far _VictoryRoad2EndBattleText5
+	text_end
 
 VictoryRoad2AfterBattleText5:
-	TX_FAR _VictoryRoad2AfterBattleText5
-	db "@"
+	text_far _VictoryRoad2AfterBattleText5
+	text_end
--- a/scripts/VictoryRoad3F.asm
+++ b/scripts/VictoryRoad3F.asm
@@ -125,73 +125,73 @@
 	db $ff
 
 VictoryRoad3Text1:
-	TX_ASM
+	text_asm
 	ld hl, VictoryRoad3TrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 VictoryRoad3Text2:
-	TX_ASM
+	text_asm
 	ld hl, VictoryRoad3TrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 VictoryRoad3Text3:
-	TX_ASM
+	text_asm
 	ld hl, VictoryRoad3TrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 VictoryRoad3Text4:
-	TX_ASM
+	text_asm
 	ld hl, VictoryRoad3TrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 VictoryRoad3BattleText2:
-	TX_FAR _VictoryRoad3BattleText2
-	db "@"
+	text_far _VictoryRoad3BattleText2
+	text_end
 
 VictoryRoad3EndBattleText2:
-	TX_FAR _VictoryRoad3EndBattleText2
-	db "@"
+	text_far _VictoryRoad3EndBattleText2
+	text_end
 
 VictoryRoad3AfterBattleText2:
-	TX_FAR _VictoryRoad3AfterBattleText2
-	db "@"
+	text_far _VictoryRoad3AfterBattleText2
+	text_end
 
 VictoryRoad3BattleText3:
-	TX_FAR _VictoryRoad3BattleText3
-	db "@"
+	text_far _VictoryRoad3BattleText3
+	text_end
 
 VictoryRoad3EndBattleText3:
-	TX_FAR _VictoryRoad3EndBattleText3
-	db "@"
+	text_far _VictoryRoad3EndBattleText3
+	text_end
 
 VictoryRoad3AfterBattleText3:
-	TX_FAR _VictoryRoad3AfterBattleText3
-	db "@"
+	text_far _VictoryRoad3AfterBattleText3
+	text_end
 
 VictoryRoad3BattleText4:
-	TX_FAR _VictoryRoad3BattleText4
-	db "@"
+	text_far _VictoryRoad3BattleText4
+	text_end
 
 VictoryRoad3EndBattleText4:
-	TX_FAR _VictoryRoad3EndBattleText4
-	db "@"
+	text_far _VictoryRoad3EndBattleText4
+	text_end
 
 VictoryRoad3AfterBattleText4:
-	TX_FAR _VictoryRoad3AfterBattleText4
-	db "@"
+	text_far _VictoryRoad3AfterBattleText4
+	text_end
 
 VictoryRoad3BattleText5:
-	TX_FAR _VictoryRoad3BattleText5
-	db "@"
+	text_far _VictoryRoad3BattleText5
+	text_end
 
 VictoryRoad3EndBattleText5:
-	TX_FAR _VictoryRoad3EndBattleText5
-	db "@"
+	text_far _VictoryRoad3EndBattleText5
+	text_end
 
 VictoryRoad3AfterBattleText5:
-	TX_FAR _VictoryRoad3AfterBattleText5
-	db "@"
+	text_far _VictoryRoad3AfterBattleText5
+	text_end
--- a/scripts/ViridianCity.asm
+++ b/scripts/ViridianCity.asm
@@ -142,11 +142,11 @@
 	dw ViridianCityText15
 
 ViridianCityText1:
-	TX_FAR _ViridianCityText1
-	db "@"
+	text_far _ViridianCityText1
+	text_end
 
 ViridianCityText2:
-	TX_ASM
+	text_asm
 	ld a, [wObtainedBadges]
 	cp %01111111
 	ld hl, ViridianCityText_19127
@@ -159,15 +159,15 @@
 	jp TextScriptEnd
 
 ViridianCityText_19122:
-	TX_FAR _ViridianCityText_19122
-	db "@"
+	text_far _ViridianCityText_19122
+	text_end
 
 ViridianCityText_19127:
-	TX_FAR _ViridianCityText_19127
-	db "@"
+	text_far _ViridianCityText_19127
+	text_end
 
 ViridianCityText3:
-	TX_ASM
+	text_asm
 	ld hl, ViridianCityText_1914d
 	call PrintText
 	call YesNoChoice
@@ -184,19 +184,19 @@
 	jp TextScriptEnd
 
 ViridianCityText_1914d:
-	TX_FAR _ViridianCityText_1914d
-	db "@"
+	text_far _ViridianCityText_1914d
+	text_end
 
 ViridianCityText_19152:
-	TX_FAR _ViridianCityText_19152
-	db "@"
+	text_far _ViridianCityText_19152
+	text_end
 
 ViridianCityText_19157:
-	TX_FAR _ViridianCityText_19157
-	db "@"
+	text_far _ViridianCityText_19157
+	text_end
 
 ViridianCityText4:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_POKEDEX
 	jr nz, .gotPokedex
 	ld hl, ViridianCityText_19175
@@ -209,15 +209,15 @@
 	jp TextScriptEnd
 
 ViridianCityText_19175:
-	TX_FAR _ViridianCityText_19175
-	db "@"
+	text_far _ViridianCityText_19175
+	text_end
 
 ViridianCityText_1917a:
-	TX_FAR _ViridianCityText_1917a
-	db "@"
+	text_far _ViridianCityText_1917a
+	text_end
 
 ViridianCityText5:
-	TX_ASM
+	text_asm
 	ld hl, ViridianCityText_19191
 	call PrintText
 	call ViridianCityScript_190cf
@@ -226,11 +226,11 @@
 	jp TextScriptEnd
 
 ViridianCityText_19191:
-	TX_FAR _ViridianCityText_19191
-	db "@"
+	text_far _ViridianCityText_19191
+	text_end
 
 ViridianCityText6:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_TM42
 	jr nz, .gotTm42
 	ld hl, ViridianCityText_191ca
@@ -253,24 +253,24 @@
 	jp TextScriptEnd
 
 ViridianCityText_191ca:
-	TX_FAR _ViridianCityText_191ca
-	db "@"
+	text_far _ViridianCityText_191ca
+	text_end
 
 ReceivedTM42Text:
-	TX_FAR _ReceivedTM42Text
-	TX_SFX_ITEM_2
-	db "@"
+	text_far _ReceivedTM42Text
+	sound_get_item_2
+	text_end
 
 TM42Explanation:
-	TX_FAR _TM42Explanation
-	db "@"
+	text_far _TM42Explanation
+	text_end
 
 TM42NoRoomText:
-	TX_FAR _TM42NoRoomText
-	db "@"
+	text_far _TM42NoRoomText
+	text_end
 
 ViridianCityText7:
-	TX_ASM
+	text_asm
 	ld hl, ViridianCityText_1920a
 	call PrintText
 	ld c, 2
@@ -291,37 +291,37 @@
 	jp TextScriptEnd
 
 ViridianCityText_1920a:
-	TX_FAR _ViridianCityText_1920a
-	db "@"
+	text_far _ViridianCityText_1920a
+	text_end
 
 ViridianCityText_1920f:
-	TX_FAR _ViridianCityText_1920f
-	db "@"
+	text_far _ViridianCityText_1920f
+	text_end
 
 ViridianCityText_19214:
-	TX_FAR _ViridianCityText_19214
-	db "@"
+	text_far _ViridianCityText_19214
+	text_end
 
 ViridianCityText15:
-	TX_FAR _ViridianCityText_19219
-	db "@"
+	text_far _ViridianCityText_19219
+	text_end
 
 ViridianCityText8:
-	TX_FAR _ViridianCityText8
-	db "@"
+	text_far _ViridianCityText8
+	text_end
 
 ViridianCityText9:
-	TX_FAR _ViridianCityText9
-	db "@"
+	text_far _ViridianCityText9
+	text_end
 
 ViridianCityText10:
-	TX_FAR _ViridianCityText10
-	db "@"
+	text_far _ViridianCityText10
+	text_end
 
 ViridianCityText13:
-	TX_FAR _ViridianCityText13
-	db "@"
+	text_far _ViridianCityText13
+	text_end
 
 ViridianCityText14:
-	TX_FAR _ViridianCityText14
-	db "@"
+	text_far _ViridianCityText14
+	text_end
--- a/scripts/ViridianForest.asm
+++ b/scripts/ViridianForest.asm
@@ -58,87 +58,87 @@
 	db $ff
 
 ViridianForestText1:
-	TX_FAR _ViridianForestText1
-	db "@"
+	text_far _ViridianForestText1
+	text_end
 
 ViridianForestText2:
-	TX_ASM
+	text_asm
 	ld hl, ViridianForestTrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 ViridianForestText3:
-	TX_ASM
+	text_asm
 	ld hl, ViridianForestTrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 ViridianForestText4:
-	TX_ASM
+	text_asm
 	ld hl, ViridianForestTrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 ViridianForestBattleText1:
-	TX_FAR _ViridianForestBattleText1
-	db "@"
+	text_far _ViridianForestBattleText1
+	text_end
 
 ViridianForestEndBattleText1:
-	TX_FAR _ViridianForestEndBattleText1
-	db "@"
+	text_far _ViridianForestEndBattleText1
+	text_end
 
 ViridianForestAfterBattleText1:
-	TX_FAR _ViridianFrstAfterBattleText1
-	db "@"
+	text_far _ViridianFrstAfterBattleText1
+	text_end
 
 ViridianForestBattleText2:
-	TX_FAR _ViridianForestBattleText2
-	db "@"
+	text_far _ViridianForestBattleText2
+	text_end
 
 ViridianForestEndBattleText2:
-	TX_FAR _ViridianForestEndBattleText2
-	db "@"
+	text_far _ViridianForestEndBattleText2
+	text_end
 
 ViridianForestAfterBattleText2:
-	TX_FAR _ViridianFrstAfterBattleText2
-	db "@"
+	text_far _ViridianFrstAfterBattleText2
+	text_end
 
 ViridianForestBattleText3:
-	TX_FAR _ViridianForestBattleText3
-	db "@"
+	text_far _ViridianForestBattleText3
+	text_end
 
 ViridianForestEndBattleText3:
-	TX_FAR _ViridianForestEndBattleText3
-	db "@"
+	text_far _ViridianForestEndBattleText3
+	text_end
 
 ViridianForestAfterBattleText3:
-	TX_FAR _ViridianFrstAfterBattleText3
-	db "@"
+	text_far _ViridianFrstAfterBattleText3
+	text_end
 
 ViridianForestText8:
-	TX_FAR _ViridianForestText8
-	db "@"
+	text_far _ViridianForestText8
+	text_end
 
 ViridianForestText9:
-	TX_FAR _ViridianForestText9
-	db "@"
+	text_far _ViridianForestText9
+	text_end
 
 ViridianForestText10:
-	TX_FAR _ViridianForestText10
-	db "@"
+	text_far _ViridianForestText10
+	text_end
 
 ViridianForestText11:
-	TX_FAR _ViridianForestText11
-	db "@"
+	text_far _ViridianForestText11
+	text_end
 
 ViridianForestText12:
-	TX_FAR _ViridianForestText12
-	db "@"
+	text_far _ViridianForestText12
+	text_end
 
 ViridianForestText13:
-	TX_FAR _ViridianForestText13
-	db "@"
+	text_far _ViridianForestText13
+	text_end
 
 ViridianForestText14:
-	TX_FAR _ViridianForestText14
-	db "@"
+	text_far _ViridianForestText14
+	text_end
--- a/scripts/ViridianForestNorthGate.asm
+++ b/scripts/ViridianForestNorthGate.asm
@@ -6,9 +6,9 @@
 	dw ViridianForestExitText2
 
 ViridianForestExitText1:
-	TX_FAR _ViridianForestExitText1
-	db "@"
+	text_far _ViridianForestExitText1
+	text_end
 
 ViridianForestExitText2:
-	TX_FAR _ViridianForestExitText2
-	db "@"
+	text_far _ViridianForestExitText2
+	text_end
--- a/scripts/ViridianForestSouthGate.asm
+++ b/scripts/ViridianForestSouthGate.asm
@@ -6,9 +6,9 @@
 	dw ViridianForestEntranceText2
 
 ViridianForestEntranceText1:
-	TX_FAR _ViridianForestEntranceText1
-	db "@"
+	text_far _ViridianForestEntranceText1
+	text_end
 
 ViridianForestEntranceText2:
-	TX_FAR _ViridianForestEntranceText2
-	db "@"
+	text_far _ViridianForestEntranceText2
+	text_end
--- a/scripts/ViridianGym.asm
+++ b/scripts/ViridianGym.asm
@@ -259,7 +259,7 @@
 	db $ff
 
 ViridianGymText1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
 	jr z, .beginBattle
 	CheckEventReuseA EVENT_GOT_TM27
@@ -301,181 +301,181 @@
 	jp TextScriptEnd
 
 ViridianGymText_74ace:
-	TX_FAR _ViridianGymText_74ace
-	db "@"
+	text_far _ViridianGymText_74ace
+	text_end
 
 ViridianGymText_74ad3:
-	TX_FAR _ViridianGymText_74ad3
-	TX_SFX_LEVEL_UP ; probably supposed to play SFX_GET_ITEM_1 but the wrong music bank is loaded
-	db "@"
+	text_far _ViridianGymText_74ad3
+	sound_level_up ; probably supposed to play SFX_GET_ITEM_1 but the wrong music bank is loaded
+	text_end
 
 ViridianGymText_74ad9:
-	TX_FAR _ViridianGymText_74ad9
-	TX_WAIT
-	db "@"
+	text_far _ViridianGymText_74ad9
+	text_linkpromptbutton
+	text_end
 
 ViridianGymText12:
-	TX_FAR _ViridianGymText12
-	db "@"
+	text_far _ViridianGymText12
+	text_end
 
 ViridianGymText13:
-	TX_FAR _ReceivedTM27Text
-	TX_SFX_ITEM_1
+	text_far _ReceivedTM27Text
+	sound_get_item_1
 
 TM27ExplanationText:
-	TX_FAR _TM27ExplanationText
-	db "@"
+	text_far _TM27ExplanationText
+	text_end
 
 ViridianGymText14:
-	TX_FAR _TM27NoRoomText
-	db "@"
+	text_far _TM27NoRoomText
+	text_end
 
 ViridianGymText2:
-	TX_ASM
+	text_asm
 	ld hl, ViridianGymTrainerHeader0
 	call TalkToTrainer
 	jp TextScriptEnd
 
 ViridianGymBattleText1:
-	TX_FAR _ViridianGymBattleText1
-	db "@"
+	text_far _ViridianGymBattleText1
+	text_end
 
 ViridianGymEndBattleText1:
-	TX_FAR _ViridianGymEndBattleText1
-	db "@"
+	text_far _ViridianGymEndBattleText1
+	text_end
 
 ViridianGymAfterBattleText1:
-	TX_FAR _ViridianGymAfterBattleText1
-	db "@"
+	text_far _ViridianGymAfterBattleText1
+	text_end
 
 ViridianGymText3:
-	TX_ASM
+	text_asm
 	ld hl, ViridianGymTrainerHeader1
 	call TalkToTrainer
 	jp TextScriptEnd
 
 ViridianGymBattleText2:
-	TX_FAR _ViridianGymBattleText2
-	db "@"
+	text_far _ViridianGymBattleText2
+	text_end
 
 ViridianGymEndBattleText2:
-	TX_FAR _ViridianGymEndBattleText2
-	db "@"
+	text_far _ViridianGymEndBattleText2
+	text_end
 
 ViridianGymAfterBattleText2:
-	TX_FAR _ViridianGymAfterBattleText2
-	db "@"
+	text_far _ViridianGymAfterBattleText2
+	text_end
 
 ViridianGymText4:
-	TX_ASM
+	text_asm
 	ld hl, ViridianGymTrainerHeader2
 	call TalkToTrainer
 	jp TextScriptEnd
 
 ViridianGymBattleText3:
-	TX_FAR _ViridianGymBattleText3
-	db "@"
+	text_far _ViridianGymBattleText3
+	text_end
 
 ViridianGymEndBattleText3:
-	TX_FAR _ViridianGymEndBattleText3
-	db "@"
+	text_far _ViridianGymEndBattleText3
+	text_end
 
 ViridianGymAfterBattleText3:
-	TX_FAR _ViridianGymAfterBattleText3
-	db "@"
+	text_far _ViridianGymAfterBattleText3
+	text_end
 
 ViridianGymText5:
-	TX_ASM
+	text_asm
 	ld hl, ViridianGymTrainerHeader3
 	call TalkToTrainer
 	jp TextScriptEnd
 
 ViridianGymBattleText4:
-	TX_FAR _ViridianGymBattleText4
-	db "@"
+	text_far _ViridianGymBattleText4
+	text_end
 
 ViridianGymEndBattleText4:
-	TX_FAR _ViridianGymEndBattleText4
-	db "@"
+	text_far _ViridianGymEndBattleText4
+	text_end
 
 ViridianGymAfterBattleText4:
-	TX_FAR _ViridianGymAfterBattleText4
-	db "@"
+	text_far _ViridianGymAfterBattleText4
+	text_end
 
 ViridianGymText6:
-	TX_ASM
+	text_asm
 	ld hl, ViridianGymTrainerHeader4
 	call TalkToTrainer
 	jp TextScriptEnd
 
 ViridianGymBattleText5:
-	TX_FAR _ViridianGymBattleText5
-	db "@"
+	text_far _ViridianGymBattleText5
+	text_end
 
 ViridianGymEndBattleText5:
-	TX_FAR _ViridianGymEndBattleText5
-	db "@"
+	text_far _ViridianGymEndBattleText5
+	text_end
 
 ViridianGymAfterBattleText5:
-	TX_FAR _ViridianGymAfterBattleText5
-	db "@"
+	text_far _ViridianGymAfterBattleText5
+	text_end
 
 ViridianGymText7:
-	TX_ASM
+	text_asm
 	ld hl, ViridianGymTrainerHeader5
 	call TalkToTrainer
 	jp TextScriptEnd
 
 ViridianGymBattleText6:
-	TX_FAR _ViridianGymBattleText6
-	db "@"
+	text_far _ViridianGymBattleText6
+	text_end
 
 ViridianGymEndBattleText6:
-	TX_FAR _ViridianGymEndBattleText6
-	db "@"
+	text_far _ViridianGymEndBattleText6
+	text_end
 
 ViridianGymAfterBattleText6:
-	TX_FAR _ViridianGymAfterBattleText6
-	db "@"
+	text_far _ViridianGymAfterBattleText6
+	text_end
 
 ViridianGymText8:
-	TX_ASM
+	text_asm
 	ld hl, ViridianGymTrainerHeader6
 	call TalkToTrainer
 	jp TextScriptEnd
 
 ViridianGymBattleText7:
-	TX_FAR _ViridianGymBattleText7
-	db "@"
+	text_far _ViridianGymBattleText7
+	text_end
 
 ViridianGymEndBattleText7:
-	TX_FAR _ViridianGymEndBattleText7
-	db "@"
+	text_far _ViridianGymEndBattleText7
+	text_end
 
 ViridianGymAfterBattleText7:
-	TX_FAR _ViridianGymAfterBattleText7
-	db "@"
+	text_far _ViridianGymAfterBattleText7
+	text_end
 
 ViridianGymText9:
-	TX_ASM
+	text_asm
 	ld hl, ViridianGymTrainerHeader7
 	call TalkToTrainer
 	jp TextScriptEnd
 
 ViridianGymBattleText8:
-	TX_FAR _ViridianGymBattleText8
-	db "@"
+	text_far _ViridianGymBattleText8
+	text_end
 
 ViridianGymEndBattleText8:
-	TX_FAR _ViridianGymEndBattleText8
-	db "@"
+	text_far _ViridianGymEndBattleText8
+	text_end
 
 ViridianGymAfterBattleText8:
-	TX_FAR _ViridianGymAfterBattleText8
-	db "@"
+	text_far _ViridianGymAfterBattleText8
+	text_end
 
 ViridianGymText10:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
 	jr nz, .asm_1abd1
 	ld hl, ViridianGymText_74bd4
@@ -488,9 +488,9 @@
 	jp TextScriptEnd
 
 ViridianGymText_74bd4:
-	TX_FAR _ViridianGymText_74bd4
-	db "@"
+	text_far _ViridianGymText_74bd4
+	text_end
 
 ViridianGymText_74bd9:
-	TX_FAR _ViridianGymText_74bd9
-	db "@"
+	text_far _ViridianGymText_74bd9
+	text_end
--- a/scripts/ViridianMart.asm
+++ b/scripts/ViridianMart.asm
@@ -73,22 +73,22 @@
 	dw ViridianMartText3
 
 ViridianMartText1:
-	TX_FAR _ViridianMartText1
-	db "@"
+	text_far _ViridianMartText1
+	text_end
 
 ViridianMartText4:
-	TX_FAR _ViridianMartText4
-	db "@"
+	text_far _ViridianMartText4
+	text_end
 
 ViridianMartText5:
-	TX_FAR ViridianMartParcelQuestText
-	TX_SFX_KEY_ITEM
-	db "@"
+	text_far ViridianMartParcelQuestText
+	sound_get_key_item
+	text_end
 
 ViridianMartText2:
-	TX_FAR _ViridianMartText2
-	db "@"
+	text_far _ViridianMartText2
+	text_end
 
 ViridianMartText3:
-	TX_FAR _ViridianMartText3
-	db "@"
+	text_far _ViridianMartText3
+	text_end
--- a/scripts/ViridianNicknameHouse.asm
+++ b/scripts/ViridianNicknameHouse.asm
@@ -8,15 +8,15 @@
 	dw ViridianHouseText4
 
 ViridianHouseText1:
-	TX_FAR _ViridianHouseText1
-	db "@"
+	text_far _ViridianHouseText1
+	text_end
 
 ViridianHouseText2:
-	TX_FAR _ViridianHouseText2
-	db "@"
+	text_far _ViridianHouseText2
+	text_end
 
 ViridianHouseText3:
-	TX_ASM
+	text_asm
 	ld hl, ViridianHouseText_1d5b1
 	call PrintText
 	ld a, SPEAROW
@@ -25,9 +25,9 @@
 	jp TextScriptEnd
 
 ViridianHouseText_1d5b1:
-	TX_FAR _ViridianHouseText_1d5b1
-	db "@"
+	text_far _ViridianHouseText_1d5b1
+	text_end
 
 ViridianHouseText4:
-	TX_FAR _ViridianHouseText4
-	db "@"
+	text_far _ViridianHouseText4
+	text_end
--- a/scripts/ViridianPokecenter.asm
+++ b/scripts/ViridianPokecenter.asm
@@ -9,15 +9,15 @@
 	dw ViridianTradeNurseText
 
 ViridianHealNurseText:
-	TX_POKECENTER_NURSE
+	script_pokecenter_nurse
 
 ViridianPokeCenterText2:
-	TX_FAR _ViridianPokeCenterText2
-	db "@"
+	text_far _ViridianPokeCenterText2
+	text_end
 
 ViridianPokeCenterText3:
-	TX_FAR _ViridianPokeCenterText3
-	db "@"
+	text_far _ViridianPokeCenterText3
+	text_end
 
 ViridianTradeNurseText:
-	TX_CABLE_CLUB_RECEPTIONIST
+	script_cable_club_receptionist
--- a/scripts/ViridianSchoolHouse.asm
+++ b/scripts/ViridianSchoolHouse.asm
@@ -6,9 +6,9 @@
 	dw SchoolText2
 
 SchoolText1:
-	TX_FAR _SchoolText1
-	db "@"
+	text_far _SchoolText1
+	text_end
 
 SchoolText2:
-	TX_FAR _SchoolText2
-	db "@"
+	text_far _SchoolText2
+	text_end
--- a/scripts/WardensHouse.asm
+++ b/scripts/WardensHouse.asm
@@ -9,7 +9,7 @@
 	dw FuchsiaHouse2Text5
 
 FuchsiaHouse2Text1:
-	TX_ASM
+	text_asm
 	CheckEvent EVENT_GOT_HM04
 	jr nz, .subtract
 	ld b, GOLD_TEETH
@@ -56,45 +56,45 @@
 	jp TextScriptEnd
 
 WardenGibberishText1:
-	TX_FAR _WardenGibberishText1
-	db "@"
+	text_far _WardenGibberishText1
+	text_end
 
 WardenGibberishText2:
-	TX_FAR _WardenGibberishText2
-	db "@"
+	text_far _WardenGibberishText2
+	text_end
 
 WardenGibberishText3:
-	TX_FAR _WardenGibberishText3
-	db "@"
+	text_far _WardenGibberishText3
+	text_end
 
 WardenTeethText1:
-	TX_FAR _WardenTeethText1
-	TX_SFX_ITEM_1
+	text_far _WardenTeethText1
+	sound_get_item_1
 
 WardenTeethText2:
-	TX_FAR _WardenTeethText2
-	db "@"
+	text_far _WardenTeethText2
+	text_end
 
 WardenThankYouText:
-	TX_FAR _WardenThankYouText
-	db "@"
+	text_far _WardenThankYouText
+	text_end
 
 ReceivedHM04Text:
-	TX_FAR _ReceivedHM04Text
-	TX_SFX_ITEM_1
-	db "@"
+	text_far _ReceivedHM04Text
+	sound_get_item_1
+	text_end
 
 HM04ExplanationText:
-	TX_FAR _HM04ExplanationText
-	db "@"
+	text_far _HM04ExplanationText
+	text_end
 
 HM04NoRoomText:
-	TX_FAR _HM04NoRoomText
-	db "@"
+	text_far _HM04NoRoomText
+	text_end
 
 FuchsiaHouse2Text5:
 FuchsiaHouse2Text4:
-	TX_ASM
+	text_asm
 	ld a, [hSpriteIndex]
 	cp $4
 	ld hl, FuchsiaHouse2Text_7517b
@@ -105,9 +105,9 @@
 	jp TextScriptEnd
 
 FuchsiaHouse2Text_75176:
-	TX_FAR _FuchsiaHouse2Text_75176
-	db "@"
+	text_far _FuchsiaHouse2Text_75176
+	text_end
 
 FuchsiaHouse2Text_7517b:
-	TX_FAR _FuchsiaHouse2Text_7517b
-	db "@"
+	text_far _FuchsiaHouse2Text_7517b
+	text_end
--- a/text/BikeShop.asm
+++ b/text/BikeShop.asm
@@ -27,7 +27,8 @@
 _BikeShopText_1d824::
 	text "<PLAYER> exchanged"
 	line "the BIKE VOUCHER"
-	cont "for a BICYCLE.@@"
+	cont "for a BICYCLE.@"
+	text_end
 
 _BikeShopComeAgainText::
 	text "Come back again"
--- a/text/BillsHouse.asm
+++ b/text/BillsHouse.asm
@@ -56,8 +56,9 @@
 _SSTicketReceivedText::
 	text "<PLAYER> received"
 	line "an @"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _SSTicketNoRoomText::
 	text "You've got too"
--- a/text/BluesHouse.asm
+++ b/text/BluesHouse.asm
@@ -14,8 +14,9 @@
 _GotMapText::
 	text "<PLAYER> got a"
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _DaisyBagFullText::
 	text "You have too much"
--- a/text/CeladonCity.asm
+++ b/text/CeladonCity.asm
@@ -42,8 +42,9 @@
 _ReceivedTM41Text::
 	text "<PLAYER> received"
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _TM41ExplanationText::
 	text "TM41 teaches"
@@ -72,7 +73,8 @@
 
 _CeladonCityText7::
 	text "POLIWRATH: Ribi"
-	line "ribit!@@"
+	line "ribit!@"
+	text_end
 
 _CeladonCityText8::
 	text "What are you"
--- a/text/CeladonDiner.asm
+++ b/text/CeladonDiner.asm
@@ -44,8 +44,9 @@
 _ReceivedCoinCaseText::
 	text "<PLAYER> received"
 	line "a @"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _CoinCaseNoRoomText::
 	text "Make room for"
--- a/text/CeladonGym.asm
+++ b/text/CeladonGym.asm
@@ -64,11 +64,12 @@
 _ReceivedTM21Text::
 	text "<PLAYER> received"
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _TM21ExplanationText::
-	text ""
+	text_start
 
 	para "TM21 contains"
 	line "MEGA DRAIN."
--- a/text/CeladonMansion1F.asm
+++ b/text/CeladonMansion1F.asm
@@ -1,5 +1,6 @@
 _CeladonMansion1Text1::
-	text "MEOWTH: Meow!@@"
+	text "MEOWTH: Meow!@"
+	text_end
 
 _CeladonMansion1Text2::
 	text "My dear #MON"
@@ -11,11 +12,13 @@
 
 _CeladonMansion1Text3::
 	text "CLEFAIRY: Pi"
-	line "pippippi!@@"
+	line "pippippi!@"
+	text_end
 
 _CeladonMansion1Text4::
 	text "NIDORAN: Kya"
-	line "kyaoo!@@"
+	line "kyaoo!@"
+	text_end
 
 _CeladonMansion1Text5::
 	text "CELADON MANSION"
--- a/text/CeladonMansion3F.asm
+++ b/text/CeladonMansion3F.asm
@@ -39,7 +39,8 @@
 	line "You completed"
 	cont "your #DEX!"
 	cont "Congratulations!"
-	cont "...@@"
+	cont "...@"
+	text_end
 
 _CeladonMansion3Text5::
 	text "It's the game"
--- a/text/CeladonMart3F.asm
+++ b/text/CeladonMart3F.asm
@@ -10,8 +10,9 @@
 _ReceivedTM18Text::
 	text "<PLAYER> received"
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _TM18ExplanationText::
 	text "TM18 is COUNTER!"
--- a/text/CeladonMartRoof.asm
+++ b/text/CeladonMartRoof.asm
@@ -11,24 +11,27 @@
 	para "Thank you!"
 
 	para "You can have this"
-	line "from me!@@"
+	line "from me!@"
+	text_end
 
 _CeladonMartRoofText_484f9::
 	text "<PLAYER> received"
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _CeladonMartRoofText_484fe::
-	text ""
+	text_start
 
 	para "@"
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text " contains"
 	line "ICE BEAM!"
 
 	para "It can freeze the"
-	line "target sometimes!@@"
+	line "target sometimes!@"
+	text_end
 
 _CeladonMartRoofText_48504::
 	text "Yay!"
@@ -38,24 +41,27 @@
 	para "Thank you!"
 
 	para "You can have this"
-	line "from me!@@"
+	line "from me!@"
+	text_end
 
 _CeladonMartRoofText_4850a::
 	text "<PLAYER> received"
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _CeladonMartRoofText_4850f::
-	text ""
+	text_start
 
 	para "@"
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text " contains"
 	line "ROCK SLIDE!"
 
 	para "It can spook the"
-	line "target sometimes!@@"
+	line "target sometimes!@"
+	text_end
 
 _CeladonMartRoofText_48515::
 	text "Yay!"
@@ -65,26 +71,31 @@
 	para "Thank you!"
 
 	para "You can have this"
-	line "from me!@@"
+	line "from me!@"
+	text_end
 
 _ReceivedTM49Text::
 	text "<PLAYER> received"
-	line "TM49!@@"
+	line "TM49!@"
+	text_end
 
 _CeladonMartRoofText_48520::
-	text ""
+	text_start
 
 	para "TM49 contains"
-	line "TRI ATTACK!@@"
+	line "TRI ATTACK!@"
+	text_end
 
 _CeladonMartRoofText_48526::
 	text "You don't have"
-	line "space for this!@@"
+	line "space for this!@"
+	text_end
 
 _CeladonMartRoofText_4852c::
 	text "No thank you!"
 	line "I'm not thirsty"
-	cont "after all!@@"
+	cont "after all!@"
+	text_end
 
 _CeladonMartRoofText1::
 	text "My sister is a"
@@ -126,8 +137,8 @@
 	done
 
 _VendingMachineText5::
-	TX_RAM wcf4b
-	text ""
+	text_ram wcf4b
+	text_start
 	line "popped out!"
 	done
 
--- a/text/CeruleanCaveB1F.asm
+++ b/text/CeruleanCaveB1F.asm
@@ -1,2 +1,3 @@
 _MewtwoBattleText::
-	text "Mew!@@"
+	text "Mew!@"
+	text_end
--- a/text/CeruleanCity.asm
+++ b/text/CeruleanCity.asm
@@ -70,13 +70,15 @@
 
 _ReceivedTM28Text::
 	text "<PLAYER> recovered"
-	line "TM28!@@"
+	line "TM28!@"
+	text_end
 
 _ReceivedTM28Text2::
-	text ""
+	text_start
 
 	para "I better get"
-	line "moving! Bye!@@"
+	line "moving! Bye!@"
+	text_end
 
 _TM28NoRoomText::
 	text "Make room for"
--- a/text/CeruleanGym.asm
+++ b/text/CeruleanGym.asm
@@ -47,7 +47,8 @@
 
 _ReceivedTM11Text::
 	text "<PLAYER> received"
-	line "TM11!@@"
+	line "TM11!@"
+	text_end
 
 _CeruleanGymText_5c7d3::
 	text "You better make"
@@ -62,7 +63,8 @@
 
 	para "You can have the"
 	line "CASCADEBADGE to"
-	cont "show you beat me!@@"
+	cont "show you beat me!@"
+	text_end
 
 _CeruleanGymBattleText1::
 	text "I'm more than good"
--- a/text/ChampionsRoom.asm
+++ b/text/ChampionsRoom.asm
@@ -96,7 +96,7 @@
 	line "much since you"
 	cont "first left with"
 	cont "@"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "!"
 
 	para "<PLAYER>, you have"
--- a/text/CinnabarGym.asm
+++ b/text/CinnabarGym.asm
@@ -18,7 +18,8 @@
 	line "burnt out!"
 
 	para "You have earned"
-	line "the VOLCANOBADGE!@@"
+	line "the VOLCANOBADGE!@"
+	text_end
 
 _BlaineFireBlastText::
 	text "FIRE BLAST is the"
@@ -44,11 +45,12 @@
 _ReceivedTM38Text::
 	text "<PLAYER> received"
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _TM38ExplanationText::
-	text ""
+	text_start
 
 	para "TM38 contains"
 	line "FIRE BLAST!"
--- a/text/CinnabarLabFossilRoom.asm
+++ b/text/CinnabarLabFossilRoom.asm
@@ -30,8 +30,8 @@
 	line "back to life!"
 
 	para "It was @"
-	TX_RAM wcf4b
-	text ""
+	text_ram wcf4b
+	text_start
 	line "like I think!"
 	prompt
 
@@ -38,12 +38,12 @@
 _Lab4Text_610ae::
 	text "Oh! That is"
 	line "@"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "!"
 
 	para "It is fossil of"
 	line "@"
-	TX_RAM wcf4b
+	text_ram wcf4b
 	text ", a"
 	cont "#MON that is"
 	cont "already extinct!"
@@ -60,7 +60,7 @@
 
 	para "<PLAYER> handed"
 	line "over @"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "!"
 	prompt
 
--- a/text/CinnabarLabMetronomeRoom.asm
+++ b/text/CinnabarLabMetronomeRoom.asm
@@ -9,8 +9,9 @@
 _ReceivedTM35Text::
 	text "<PLAYER> received "
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _TM35ExplanationText::
 	text "Tch-tch-tch!"
--- a/text/CopycatsHouse1F.asm
+++ b/text/CopycatsHouse1F.asm
@@ -17,4 +17,5 @@
 
 _CopycatsHouse1FText3::
 	text "CHANSEY: Chaan!"
-	line "Sii!@@"
+	line "Sii!@"
+	text_end
--- a/text/CopycatsHouse2F.asm
+++ b/text/CopycatsHouse2F.asm
@@ -29,17 +29,19 @@
 _ReceivedTM31Text::
 	text "<PLAYER> received"
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _TM31ExplanationText1::
-	text ""
+	text_start
 
 	para "TM31 contains my"
 	line "favorite, MIMIC!"
 
 	para "Use it on a good"
-	line "#MON!@@"
+	line "#MON!@"
+	text_end
 
 _TM31ExplanationText2::
 	text "<PLAYER>: Hi!"
@@ -57,7 +59,8 @@
 
 _TM31NoRoomText::
 	text "Don't you want"
-	line "this?@@"
+	line "this?@"
+	text_end
 
 _CopycatsHouse2FText2::
 	text "DODUO: Giiih!"
--- a/text/Daycare.asm
+++ b/text/Daycare.asm
@@ -13,8 +13,8 @@
 _DayCareWillLookAfterMonText::
 	text "Fine, I'll look"
 	line "after @"
-	TX_RAM wcd6d
-	text ""
+	text_ram wcd6d
+	text_start
 	cont "for a while."
 	prompt
 
@@ -25,13 +25,13 @@
 
 _DayCareMonHasGrownText::
 	text "Your @"
-	TX_RAM wcd6d
-	text ""
+	text_ram wcd6d
+	text_start
 	line "has grown a lot!"
 
 	para "By level, it's"
 	line "grown by @"
-	TX_NUM wDayCareNumLevelsGrown,$1,$3
+	text_decimal wDayCareNumLevelsGrown, 1, 3
 	text "!"
 
 	para "Aren't I great?"
@@ -39,8 +39,8 @@
 
 _DayCareOweMoneyText::
 	text "You owe me ¥@"
-	TX_BCD wDayCareTotalCost, $c2
-	text ""
+	text_bcd wDayCareTotalCost, 2 | LEADING_ZEROES | LEFT_ALIGN
+	text_start
 	line "for the return"
 	cont "of this #MON."
 	done
@@ -48,7 +48,7 @@
 _DayCareGotMonBackText::
 	text "<PLAYER> got"
 	line "@"
-	TX_RAM wDayCareMonName
+	text_ram wDayCareMonName
 	text " back!"
 	done
 
@@ -55,8 +55,8 @@
 _DayCareMonNeedsMoreTimeText::
 	text "Back already?"
 	line "Your @"
-	TX_RAM wcd6d
-	text ""
+	text_ram wcd6d
+	text_start
 	cont "needs some more"
 	cont "time with me."
 	prompt
--- a/text/Daycare_2.asm
+++ b/text/Daycare_2.asm
@@ -1,6 +1,7 @@
 _DayCareAllRightThenText::
 	text "All right then,"
-	line "@@"
+	line "@"
+	text_end
 
 _DayCareComeAgainText::
 	text "come again."
--- a/text/FuchsiaGoodRodHouse.asm
+++ b/text/FuchsiaGoodRodHouse.asm
@@ -19,8 +19,9 @@
 
 	para "<PLAYER> received"
 	line "a @"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _FuchsiaHouse3Text_56212::
 	text "Oh... That's so"
--- a/text/FuchsiaGym_2.asm
+++ b/text/FuchsiaGym_2.asm
@@ -27,11 +27,12 @@
 _ReceivedTM06Text::
 	text "<PLAYER> received"
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _TM06ExplanationText::
-	text ""
+	text_start
 	para "TM06 contains"
 	line "TOXIC!"
 
--- a/text/GameCorner.asm
+++ b/text/GameCorner.asm
@@ -65,7 +65,8 @@
 
 _Received10CoinsText::
 	text "<PLAYER> received"
-	line "10 coins!@@"
+	line "10 coins!@"
+	text_end
 
 _CeladonGameCornerText_48da7::
 	text "You don't need my"
@@ -122,7 +123,8 @@
 
 _Received20CoinsText::
 	text "<PLAYER> received"
-	line "20 coins!@@"
+	line "20 coins!@"
+	text_end
 
 _CeladonGameCornerText_48e31::
 	text "You have lots of"
@@ -144,7 +146,8 @@
 
 _CeladonGameCornerText_48e8d::
 	text "<PLAYER> received"
-	line "20 coins!@@"
+	line "20 coins!@"
+	text_end
 
 _CeladonGameCornerText_48e93::
 	text "You've got your"
@@ -178,7 +181,8 @@
 
 	para "A switch behind"
 	line "the poster!?"
-	cont "Let's push it!@@"
+	cont "Let's push it!@"
+	text_end
 
 _CeladonGameCornerText_48f19::
 	text "Oops! Forgot the"
--- a/text/LancesRoom.asm
+++ b/text/LancesRoom.asm
@@ -60,4 +60,5 @@
 
 	para "He is the real"
 	line "#MON LEAGUE"
-	cont "champion!@@"
+	cont "champion!@"
+	text_end
--- a/text/LavenderCuboneHouse.asm
+++ b/text/LavenderCuboneHouse.asm
@@ -1,5 +1,6 @@
 _LavenderHouse2Text1::
-	text "CUBONE: Kyarugoo!@@"
+	text "CUBONE: Kyarugoo!@"
+	text_end
 
 _LavenderHouse2Text_1d9dc::
 	text "I hate those"
--- a/text/MrFujisHouse.asm
+++ b/text/MrFujisHouse.asm
@@ -28,10 +28,12 @@
 	done
 
 _LavenderHouse1Text3::
-	text "PSYDUCK: Gwappa!@@"
+	text "PSYDUCK: Gwappa!@"
+	text_end
 
 _LavenderHouse1Text4::
-	text "NIDORINO: Gaoo!@@"
+	text "NIDORINO: Gaoo!@"
+	text_end
 
 _LavenderHouse1Text_1d94c::
 	text "MR.FUJI: <PLAYER>."
@@ -48,11 +50,12 @@
 _ReceivedFluteText::
 	text "<PLAYER> received"
 	line "a @"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _FluteExplanationText::
-	text ""
+	text_start
 
 	para "Upon hearing #"
 	line "FLUTE, sleeping"
--- a/text/MrPsychicsHouse.asm
+++ b/text/MrPsychicsHouse.asm
@@ -8,8 +8,9 @@
 _ReceivedTM29Text::
 	text "<PLAYER> received"
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _TM29ExplanationText::
 	text "TM29 is PSYCHIC!"
--- a/text/MtMoonB1F.asm
+++ b/text/MtMoonB1F.asm
@@ -1,3 +1,3 @@
 _MtMoonText1::
-	text ""
+	text_start
 	done
--- a/text/MtMoonB2F.asm
+++ b/text/MtMoonB2F.asm
@@ -11,12 +11,14 @@
 _MtMoon3Text_49f6f::
 	text "<PLAYER> got the"
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _MtMoon3Text_49f7f::
 	text "Look, you've got"
-	line "no room for this.@@"
+	line "no room for this.@"
+	text_end
 
 _MtMoon3Text_49f85::
 	text "Hey, stop!"
@@ -50,7 +52,8 @@
 
 _MtMoon3Text_49f99::
 	text "All right. Then"
-	line "this is mine!@@"
+	line "this is mine!@"
+	text_end
 
 _MtMoon3BattleText2::
 	text "TEAM ROCKET will"
--- a/text/MtMoonPokecenter.asm
+++ b/text/MtMoonPokecenter.asm
@@ -44,5 +44,5 @@
 	done
 
 _MtMoonPokecenterText5::
-	text ""
+	text_start
 	done
--- a/text/Museum1F.asm
+++ b/text/Museum1F.asm
@@ -82,7 +82,8 @@
 
 _ReceivedOldAmberText::
 	text "<PLAYER> received"
-	line "OLD AMBER!@@"
+	line "OLD AMBER!@"
+	text_end
 
 _Museum1FText_5c299::
 	text "Ssh! Get the OLD"
--- a/text/NameRatersHouse.asm
+++ b/text/NameRatersHouse.asm
@@ -14,7 +14,7 @@
 	prompt
 
 _NameRaterText_1dabd::
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text ", is it?"
 	line "That is a decent"
 	cont "nickname!"
@@ -35,7 +35,7 @@
 	text "OK! This #MON"
 	line "has been renamed"
 	cont "@"
-	TX_RAM wBuffer
+	text_ram wBuffer
 	text "!"
 
 	para "That's a better"
@@ -48,7 +48,7 @@
 	done
 
 _NameRaterText_1dad1::
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text ", is it?"
 	line "That is a truly"
 	cont "impeccable name!"
@@ -55,6 +55,6 @@
 
 	para "Take good care of"
 	line "@"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "!"
 	done
--- a/text/OaksLab.asm
+++ b/text/OaksLab.asm
@@ -51,8 +51,9 @@
 _OaksLabReceivedMonText::
 	text "<PLAYER> received"
 	line "a @"
-	TX_RAM wcd6d
-	text "!@@"
+	text_ram wcd6d
+	text "!@"
+	text_end
 
 _OaksLabLastMonText::
 	text "That's PROF.OAK's"
@@ -96,10 +97,11 @@
 	line "something for me?"
 
 	para "<PLAYER> delivered"
-	line "OAK's PARCEL.@@"
+	line "OAK's PARCEL.@"
+	text_end
 
 _OaksLabDeliverParcelText2::
-	text ""
+	text_start
 	para "Ah! This is the"
 	line "custom # BALL"
 	cont "I ordered!"
@@ -124,10 +126,11 @@
 	cont "#MON."
 
 	para "<PLAYER> got 5"
-	line "# BALLs!@@"
+	line "# BALLs!@"
+	text_end
 
 _OaksLabGivePokeballsText2::
-	text ""
+	text_start
 	para "When a wild"
 	line "#MON appears,"
 	cont "it's fair game."
@@ -240,8 +243,9 @@
 _OaksLabRivalReceivedMonText::
 	text "<RIVAL> received"
 	line "a @"
-	TX_RAM wcd6d
-	text "!@@"
+	text_ram wcd6d
+	text "!@"
+	text_end
 
 _OaksLabRivalChallengeText::
 	text "<RIVAL>: Wait"
@@ -310,7 +314,8 @@
 	cont "these with you!"
 
 	para "<PLAYER> got"
-	line "#DEX from OAK!@@"
+	line "#DEX from OAK!@"
+	text_end
 
 _OaksLabText26::
 	text "To make a complete"
@@ -363,10 +368,10 @@
 	line "letion is:"
 
 	para "@"
-	TX_NUM hDexRatingNumMonsSeen, 1, 3
+	text_decimal hDexRatingNumMonsSeen, 1, 3
 	text " #MON seen"
 	line "@"
-	TX_NUM hDexRatingNumMonsOwned, 1, 3
+	text_decimal hDexRatingNumMonsOwned, 1, 3
 	text " #MON owned"
 
 	para "PROF.OAK's"
--- a/text/PalletTown.asm
+++ b/text/PalletTown.asm
@@ -1,6 +1,7 @@
 _OakAppearsText::
 	text "OAK: Hey! Wait!"
-	line "Don't go out!@@"
+	line "Don't go out!@"
+	text_end
 
 _OakWalksUpText::
 	text "OAK: It's unsafe!"
--- a/text/PewterGym_2.asm
+++ b/text/PewterGym_2.asm
@@ -19,10 +19,11 @@
 
 _ReceivedTM34Text::
 	text "<PLAYER> received"
-	line "TM34!@@"
+	line "TM34!@"
+	text_end
 
 _TM34ExplanationText::
-	text ""
+	text_start
 
 	para "A TM contains a"
 	line "technique that"
@@ -59,10 +60,11 @@
 	cont "the BOULDERBADGE!"
 
 	para "<PLAYER> received"
-	line "the BOULDERBADGE!@@"
+	line "the BOULDERBADGE!@"
+	text_end
 
 _PewterGymText_5c4c1::
-	text ""
+	text_start
 
 	para "That's an official"
 	line "#MON LEAGUE"
--- a/text/PewterNidoranHouse.asm
+++ b/text/PewterNidoranHouse.asm
@@ -1,5 +1,6 @@
 _PewterHouse1Text1::
-	text "NIDORAN: Bowbow!@@"
+	text "NIDORAN: Bowbow!@"
+	text_end
 
 _PewterHouse1Text2::
 	text "NIDORAN sit!"
--- a/text/PokemonFanClub.asm
+++ b/text/PokemonFanClub.asm
@@ -85,11 +85,12 @@
 ReceivedBikeVoucherText::
 	text "<PLAYER> received"
 	line "a @"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 ExplainBikeVoucherText::
-	text ""
+	text_start
 	para "Exchange that for"
 	line "a BICYCLE!"
 
--- a/text/PowerPlant.asm
+++ b/text/PowerPlant.asm
@@ -3,4 +3,5 @@
 	done
 
 _ZapdosBattleText::
-	text "Gyaoo!@@"
+	text "Gyaoo!@"
+	text_end
--- a/text/RocketHideoutB1F.asm
+++ b/text/RocketHideoutB1F.asm
@@ -1,5 +1,6 @@
 _RocketHideout1EndBattleText6::
-	text "Why...?@@"
+	text "Why...?@"
+	text_end
 
 _RocketHideout1BattleText2::
 	text "Who are you? How"
--- a/text/RocketHideoutElevator.asm
+++ b/text/RocketHideoutElevator.asm
@@ -1,3 +1,4 @@
 _RocketElevatorText_4578b::
 	text "It appears to"
-	line "need a key.@@"
+	line "need a key.@"
+	text_end
--- a/text/Route1.asm
+++ b/text/Route1.asm
@@ -15,8 +15,9 @@
 _Route1Text_1cae8::
 	text "<PLAYER> got"
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _Route1Text_1caee::
 	text "We also carry"
--- a/text/Route12Gate2F.asm
+++ b/text/Route12Gate2F.asm
@@ -10,7 +10,8 @@
 
 _ReceivedTM39Text::
 	text "<PLAYER> received"
-	line "TM39!@@"
+	line "TM39!@"
+	text_end
 
 _TM39ExplanationText::
 	text "TM39 is a move"
--- a/text/Route12SuperRodHouse.asm
+++ b/text/Route12SuperRodHouse.asm
@@ -18,11 +18,12 @@
 
 	para "<PLAYER> received"
 	line "a @"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _Route12HouseText_564ca::
-	text ""
+	text_start
 
 	para "Fishing is a way"
 	line "of life!"
--- a/text/Route15.asm
+++ b/text/Route15.asm
@@ -162,7 +162,8 @@
 
 _Route15AfterBattleText10::
 	text "I'll go train with"
-	line "weaker people.@@"
+	line "weaker people.@"
+	text_end
 
 _Route15Text12::
 	text "ROUTE 15"
--- a/text/Route16FlyHouse.asm
+++ b/text/Route16FlyHouse.asm
@@ -10,7 +10,8 @@
 
 _ReceivedHM02Text::
 	text "<PLAYER> received"
-	line "HM02!@@"
+	line "HM02!@"
+	text_end
 
 _HM02ExplanationText::
 	text "HM02 is FLY."
--- a/text/Route22Gate.asm
+++ b/text/Route22Gate.asm
@@ -4,10 +4,11 @@
 	cont "allowed through."
 
 	para "You don't have the"
-	line "BOULDERBADGE yet!@@"
+	line "BOULDERBADGE yet!@"
+	text_end
 
 _Route22GateText_1e715::
-	text ""
+	text_start
 
 	para "The rules are"
 	line "rules. I can't"
@@ -17,4 +18,5 @@
 _Route22GateText_1e71a::
 	text "Oh! That is the"
 	line "BOULDERBADGE!"
-	cont "Go right ahead!@@"
+	cont "Go right ahead!@"
+	text_end
--- a/text/Route23.asm
+++ b/text/Route23.asm
@@ -2,32 +2,34 @@
 	text "You can pass here"
 	line "only if you have"
 	cont "the @"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "!"
 
 	para "You don't have the"
 	line "@"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text " yet!"
 
 	para "You have to have"
 	line "it to get to"
-	cont "#MON LEAGUE!@@"
+	cont "#MON LEAGUE!@"
+	text_end
 
 _VictoryRoadGuardText2::
 	text "You can pass here"
 	line "only if you have"
 	cont "the @"
-	TX_RAM wcd6d
+	text_ram wcd6d
 	text "!"
 
 	para "Oh! That is the"
 	line "@"
-	TX_RAM wcd6d
-	text "!@@"
+	text_ram wcd6d
+	text "!@"
+	text_end
 
 _VictoryRoadGuardText_513a3::
-	text ""
+	text_start
 
 	para "OK then! Please,"
 	line "go right ahead!"
--- a/text/Route24.asm
+++ b/text/Route24.asm
@@ -1,10 +1,11 @@
 _Route24Text_51510::
 	text "Congratulations!"
 	line "You beat our 5"
-	cont "contest trainers!@@"
+	cont "contest trainers!@"
+	text_end
 
 _Route24Text_51515::
-	text ""
+	text_start
 
 	para "You just earned a"
 	line "fabulous prize!"
@@ -13,8 +14,9 @@
 _Route24Text_5151a::
 	text "<PLAYER> received"
 	line "a @"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _Route24Text_51521::
 	text "You don't have"
--- a/text/SSAnne1FRooms.asm
+++ b/text/SSAnne1FRooms.asm
@@ -1,6 +1,7 @@
 _SSAnne8Text8::
 	text "WIGGLYTUFF: Puup"
-	line "pupuu!@@"
+	line "pupuu!@"
+	text_end
 
 _SSAnne8BattleText1::
 	text "I travel alone"
--- a/text/SSAnneB1FRooms.asm
+++ b/text/SSAnneB1FRooms.asm
@@ -1,6 +1,7 @@
 _SSAnne10Text8::
 	text "MACHOKE: Gwoh!"
-	line "Goggoh!@@"
+	line "Goggoh!@"
+	text_end
 
 _SSAnne10BattleText1::
 	text "You know what they"
@@ -52,7 +53,8 @@
 
 _SSAnne10BattleText4::
 	text "I like feisty"
-	line "kids like you!@@"
+	line "kids like you!@"
+	text_end
 
 _SSAnne10EndBattleText4::
 	text "Argh!"
--- a/text/SSAnneCaptainsRoom.asm
+++ b/text/SSAnneCaptainsRoom.asm
@@ -8,7 +8,8 @@
 	cont "back!"
 
 	para "Rub-rub..."
-	line "Rub-rub...@@"
+	line "Rub-rub...@"
+	text_end
 
 _ReceivingHM01Text::
 	text "CAPTAIN: Whew!"
@@ -33,8 +34,9 @@
 _ReceivedHM01Text::
 	text "<PLAYER> got"
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _SSAnne7Text_61932::
 	text "CAPTAIN: Whew!"
--- a/text/SafariZoneGate.asm
+++ b/text/SafariZoneGate.asm
@@ -10,7 +10,8 @@
 	cont "want in the park!"
 
 	para "Would you like to"
-	line "join the hunt?@@"
+	line "join the hunt?@"
+	text_end
 
 SafariZoneEntranceText_9e747::
 	text "That'll be ¥500"
@@ -21,10 +22,11 @@
 	cont "here."
 
 	para "<PLAYER> received"
-	line "30 SAFARI BALLs!@@"
+	line "30 SAFARI BALLs!@"
+	text_end
 
 _SafariZoneEntranceText_75360::
-	text ""
+	text_start
 
 	para "We'll call you on"
 	line "the PA when you"
@@ -43,7 +45,8 @@
 	done
 
 SafariZoneEntranceText_9e814::
-	text "Leaving early?@@"
+	text "Leaving early?@"
+	text_end
 
 _SafariZoneEntranceText_753bb::
 	text "Please return any"
--- a/text/SafariZoneSecretHouse.asm
+++ b/text/SafariZoneSecretHouse.asm
@@ -17,8 +17,9 @@
 _ReceivedHM03Text::
 	text "<PLAYER> received"
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _HM03ExplanationText::
 	text "HM03 is SURF!"
--- a/text/SaffronCity.asm
+++ b/text/SaffronCity.asm
@@ -65,7 +65,8 @@
 	done
 
 _SaffronCityText12::
-	text "PIDGEOT: Bi bibii!@@"
+	text "PIDGEOT: Bi bibii!@"
+	text_end
 
 _SaffronCityText13::
 	text "I saw ROCKET"
--- a/text/SaffronGates.asm
+++ b/text/SaffronGates.asm
@@ -13,10 +13,11 @@
 	cont "..."
 	cont "Huh? I can have"
 	cont "this drink?"
-	cont "Gee, thanks!@@"
+	cont "Gee, thanks!@"
+	text_end
 
 _SaffronGateText_1dff1::
-	text ""
+	text_start
 
 	para "..."
 	line "Glug glug..."
--- a/text/SaffronGym.asm
+++ b/text/SaffronGym.asm
@@ -27,7 +27,8 @@
 	cont "to win!"
 
 	para "You earned the"
-	line "MARSHBADGE!@@"
+	line "MARSHBADGE!@"
+	text_end
 
 _SaffronGymText_5d16e::
 	text "Everyone has"
@@ -56,10 +57,11 @@
 
 ReceivedTM46Text::
 	text "<PLAYER> received"
-	line "TM46!@@"
+	line "TM46!@"
+	text_end
 
 _TM46ExplanationText::
-	text ""
+	text_start
 
 	para "TM46 is PSYWAVE!"
 	line "It uses powerful"
--- a/text/SaffronPidgeyHouse.asm
+++ b/text/SaffronPidgeyHouse.asm
@@ -8,7 +8,8 @@
 	done
 
 _SaffronHouse1Text2::
-	text "PIDGEY: Kurukkoo!@@"
+	text "PIDGEY: Kurukkoo!@"
+	text_end
 
 _SaffronHouse1Text3::
 	text "The COPYCAT is"
--- a/text/SeafoamIslandsB4F.asm
+++ b/text/SeafoamIslandsB4F.asm
@@ -1,5 +1,6 @@
 _ArticunoBattleText::
-	text "Gyaoo!@@"
+	text "Gyaoo!@"
+	text_end
 
 _SeafoamIslands5Text4::
 	text "Boulders might"
--- a/text/SilphCo11F.asm
+++ b/text/SilphCo11F.asm
@@ -22,8 +22,9 @@
 _ReceivedSilphCoMasterBallText::
 	text "<PLAYER> got a"
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _SilphCo10Text_6231c::
 	text "PRESIDENT: You"
--- a/text/SilphCo2F.asm
+++ b/text/SilphCo2F.asm
@@ -12,8 +12,9 @@
 _ReceivedTM36Text::
 	text "<PLAYER> got"
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _TM36ExplanationText::
 	text "TM36 is"
--- a/text/VermilionCity.asm
+++ b/text/VermilionCity.asm
@@ -68,10 +68,11 @@
 
 _VermilionCityText5::
 	text "MACHOP: Guoh!"
-	line "Gogogoh!@@"
+	line "Gogogoh!@"
+	text_end
 
 _VermilionCityText14::
-	text ""
+	text_start
 	para "A MACHOP is"
 	line "stomping the land"
 	cont "flat."
--- a/text/VermilionDock.asm
+++ b/text/VermilionDock.asm
@@ -1,3 +1,3 @@
 _VermilionDockText1::
-	text ""
+	text_start
 	done
--- a/text/VermilionGym_2.asm
+++ b/text/VermilionGym_2.asm
@@ -26,11 +26,12 @@
 _ReceivedTM24Text::
 	text "<PLAYER> received "
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _TM24ExplanationText::
-	text ""
+	text_start
 
 	para "TM24 contains"
 	line "THUNDERBOLT!"
--- a/text/VermilionOldRodHouse.asm
+++ b/text/VermilionOldRodHouse.asm
@@ -18,11 +18,12 @@
 
 	para "<PLAYER> received"
 	line "an @"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _VermilionHouse2Text_560bb::
-	text ""
+	text_start
 
 	para "Fishing is a way"
 	line "of life!"
--- a/text/VermilionPidgeyHouse.asm
+++ b/text/VermilionPidgeyHouse.asm
@@ -6,7 +6,8 @@
 	done
 
 _VermilionHouse1Text2::
-	text "PIDGEY: Kurukkoo!@@"
+	text "PIDGEY: Kurukkoo!@"
+	text_end
 
 _VermilionHouse1Text3::
 	text "Dear PIPPI, I hope"
--- a/text/VictoryRoad2F.asm
+++ b/text/VictoryRoad2F.asm
@@ -1,5 +1,6 @@
 _MoltresBattleText::
-	text "Gyaoo!@@"
+	text "Gyaoo!@"
+	text_end
 
 _VictoryRoad2BattleText1::
 	text "VICTORY ROAD is"
--- a/text/ViridianCity.asm
+++ b/text/ViridianCity.asm
@@ -84,7 +84,8 @@
 
 _ReceivedTM42Text::
 	text "<PLAYER> received"
-	line "TM42!@@"
+	line "TM42!@"
+	text_end
 
 _TM42Explanation::
 	text "TM42 contains"
--- a/text/ViridianGym.asm
+++ b/text/ViridianGym.asm
@@ -24,7 +24,8 @@
 	cont "intense fight!"
 	cont "You have won!"
 	cont "As proof, here is"
-	cont "the EARTHBADGE!@@"
+	cont "the EARTHBADGE!@"
+	text_end
 
 _ViridianGymText_74ad9::
 	text "Having lost, I"
@@ -39,7 +40,8 @@
 
 	para "Let us meet again"
 	line "some day!"
-	cont "Farewell!@@"
+	cont "Farewell!@"
+	text_end
 
 _ViridianGymText12::
 	text "The EARTHBADGE"
@@ -61,10 +63,11 @@
 
 _ReceivedTM27Text::
 	text "<PLAYER> received"
-	line "TM27!@@"
+	line "TM27!@"
+	text_end
 
 _TM27ExplanationText::
-	text ""
+	text_start
 
 	para "TM27 is FISSURE!"
 	line "It will take out"
--- a/text/ViridianMart.asm
+++ b/text/ViridianMart.asm
@@ -17,7 +17,8 @@
 	cont "to him?"
 
 	para "<PLAYER> got"
-	line "OAK's PARCEL!@@"
+	line "OAK's PARCEL!@"
+	text_end
 
 _ViridianMartText2::
 	text "This shop sells"
--- a/text/WardensHouse.asm
+++ b/text/WardensHouse.asm
@@ -20,10 +20,11 @@
 _WardenTeethText1::
 	text "<PLAYER> gave the"
 	line "GOLD TEETH to the"
-	cont "WARDEN!@@"
+	cont "WARDEN!@"
+	text_end
 
 _WardenTeethText2::
-	text ""
+	text_start
 
 	para "The WARDEN popped"
 	line "in his teeth!"
@@ -45,8 +46,9 @@
 _ReceivedHM04Text::
 	text "<PLAYER> received"
 	line "@"
-	TX_RAM wcf4b
-	text "!@@"
+	text_ram wcf4b
+	text "!@"
+	text_end
 
 _HM04ExplanationText::
 	text "WARDEN: HM04"