summaryrefslogtreecommitdiff
path: root/home/text.asm
diff options
context:
space:
mode:
Diffstat (limited to 'home/text.asm')
-rw-r--r--home/text.asm528
1 files changed, 262 insertions, 266 deletions
diff --git a/home/text.asm b/home/text.asm
index 99dedc75..43c1631a 100644
--- a/home/text.asm
+++ b/home/text.asm
@@ -18,7 +18,7 @@ TextBoxBorder::
.next
push hl
ld a, "│"
- ld [hli],a
+ ld [hli], a
ld a, " "
call NPlaceChar
ld [hl], "│"
@@ -49,139 +49,129 @@ NPlaceChar::
PlaceString::
push hl
PlaceNextChar::
- ld a,[de]
+ ld a, [de]
cp "@"
- jr nz,.PlaceText
- ld b,h
- ld c,l
+ jr nz, Char4ETest
+ ld b, h
+ ld c, l
pop hl
ret
-.PlaceText
- cp $4E
- jr nz,.next
- ld bc,SCREEN_WIDTH * 2
- ld a,[hFlags_0xFFF6]
- bit 2,a
- jr z,.next2
- ld bc,SCREEN_WIDTH
+Char4ETest::
+ cp $4E ; next
+ jr nz, .next
+ ld bc, 2 * SCREEN_WIDTH
+ ld a, [hFlags_0xFFFA]
+ bit 2, a
+ jr z, .next2
+ ld bc, SCREEN_WIDTH
.next2
pop hl
- add hl,bc
+ add hl, bc
push hl
- jp PlaceNextChar_inc
+ jp PlaceNextChar_inc ; 17b6
.next
- cp $4F
- jr nz,.next3
+ cp $4F ; line
+ jr nz, .next3
pop hl
coord hl, 1, 16
push hl
jp PlaceNextChar_inc
.next3 ; Check against a dictionary
+dict: macro
+if \1 == 0
and a
- jp z,Char00
- cp $4C
- jp z,Char4C
- cp $4B
- jp z,Char4B
- cp $51
- jp z,Char51
- cp $49
- jp z,Char49
- cp $52
- jp z,Char52
- cp $53
- jp z,Char53
- cp $54
- jp z,Char54
- cp $5B
- jp z,Char5B
- cp $5E
- jp z,Char5E
- cp $5C
- jp z,Char5C
- cp $5D
- jp z,Char5D
- cp $55
- jp z,Char55
- cp $56
- jp z,Char56
- cp $57
- jp z,Char57
- cp $58
- jp z,Char58
- cp $4A
- jp z,Char4A
- cp $5F
- jp z,Char5F
- cp $59
- jp z,Char59
- cp $5A
- jp z,Char5A
- ld [hli],a
+else
+ cp \1
+endc
+ jp z, \2
+endm
+
+ 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
+
+ ld [hli], a
call PrintLetterDelay
PlaceNextChar_inc::
inc de
jp PlaceNextChar
Char00::
- ld b,h
- ld c,l
+ ld b, h
+ ld c, l
pop hl
- ld de,Char00Text
+ ld de, Char00Text
dec de
ret
-Char00Text:: ; 0x19f4 “%d ERROR.”
- TX_FAR _Char00Text
+Char00Text:: ; 17c2 (0:17c2) ; “%d ERROR.”
+ TX_FAR _Char00Text ; a0c66 (28:4c66)
db "@"
-Char52:: ; 0x19f9 player’s name
+Char52:: ; 17c7 (0:17c7) ; player’s name
push de
- ld de,wPlayerName
+ ld de, wPlayerName
jr FinishDTE
-Char53:: ; 19ff (0:19ff) ; rival’s name
+Char53:: ; 17cd (0:17cd) ; rival’s name
push de
- ld de,wRivalName
+ ld de, wRivalName
jr FinishDTE
-Char5D:: ; 1a05 (0:1a05) ; TRAINER
+Char5D:: ; 17d3 (0:17d3) ; TRAINER
push de
- ld de,Char5DText
+ ld de, Char5DText
jr FinishDTE
-Char5C:: ; 1a0b (0:1a0b) ; TM
+Char5C:: ; 17d9 (0:17d9) ; TM
push de
- ld de,Char5CText
+ ld de, Char5CText
jr FinishDTE
-Char5B:: ; 1a11 (0:1a11) ; PC
+Char5B:: ; 17df (0:17df) ; PC
push de
- ld de,Char5BText
+ ld de, Char5BText
jr FinishDTE
-Char5E:: ; 1a17 (0:1a17) ; ROCKET
+Char5E:: ; 17e5 (0:17e5) ; ROCKET
push de
- ld de,Char5EText
+ ld de, Char5EText
jr FinishDTE
-Char54:: ; 1a1d (0:1a1d) ; POKé
+Char54:: ; 17eb (0:17eb) ; POKé
push de
- ld de,Char54Text
+ ld de, Char54Text
jr FinishDTE
-Char56:: ; 1a23 (0:1a23) ; ……
+Char56:: ; 17f1 (0:17f1) ; ……
push de
- ld de,Char56Text
+ ld de, Char56Text
jr FinishDTE
-Char4A:: ; 1a29 (0:1a29) ; PKMN
+Char4A:: ; 17f7 (0:17f7) ; PKMN
push de
- ld de,Char4AText
+ ld de, Char4AText
jr FinishDTE
Char59::
@@ -190,7 +180,7 @@ Char59::
; or
; player active monster’s name
; (like Char5A but flipped)
- ld a,[H_WHOSETURN]
+ ld a, [H_WHOSETURN]
xor 1
jr MonsterNameCharsCommon
@@ -199,27 +189,26 @@ Char5A::
; player active monster’s name
; or
; enemy active monster’s name, prefixed with “Enemy ”
- ld a,[H_WHOSETURN]
+ ld a, [H_WHOSETURN]
MonsterNameCharsCommon::
push de
and a
- jr nz,.Enemy
- ld de,wBattleMonNick ; player active monster name
+ jr nz, .Enemy
+ ld de, wBattleMonNick ; player active monster name
jr FinishDTE
.Enemy
; print “Enemy ”
- ld de,Char5AText
+ ld de, Char5AText
call PlaceString
-
- ld h,b
- ld l,c
- ld de,wEnemyMonNick ; enemy active monster name
+ ld h, b
+ ld l, c
+ ld de, wEnemyMonNick ; enemy active monster name
FinishDTE::
call PlaceString
- ld h,b
- ld l,c
+ ld h, b
+ ld l, c
pop de
inc de
jp PlaceNextChar
@@ -239,76 +228,83 @@ Char56Text::
Char5AText::
db "Enemy @"
Char4AText::
- db $E1,$E2,"@" ; PKMN
+ db $E1, $E2, "@" ; PKMN
Char55::
push de
- ld b,h
- ld c,l
- ld hl,Char55Text
- call TextCommandProcessor
- ld h,b
- ld l,c
+ ld b, h
+ ld c, l
+ ld hl, Char55Text
+ call TextCommandProcessor ; 1919
+ ld h, b
+ ld l, c
pop de
inc de
jp PlaceNextChar
Char55Text::
; equivalent to Char4B
- TX_FAR _Char55Text
+ TX_FAR _Char55Text ; a0c73 (28:4c73)
db "@"
Char5F::
; ends a Pokédex entry
- ld [hl],"."
+ ld [hl], "."
pop hl
ret
-Char58::
- ld a,[wLinkState]
+Char58:: ; 1863 (0:1863) prompt
+ ld a, [wLinkState]
cp LINK_STATE_BATTLING
- jp z,Next1AA2
- ld a,$EE
+ jp z, .next
+ ld a, $EE
Coorda 18, 16
-Next1AA2::
- call ProtectedDelay3
- call ManualTextScroll
- ld a, " "
+.next ; 1870 (0:1870)
+ call ProtectedDelay3 ; 1913
+ call ManualTextScroll ; 388e
+ ld a, " " ; space
Coorda 18, 16
-Char57::
+Char57:: ; 1aad (0:1aad) done
pop hl
- ld de,Char58Text
+ ld de, Char58Text
dec de
ret
Char58Text::
db "@"
-Char51::
+Char51:: ; 1882 (0:1882) para
push de
- ld a,$EE
+ ld a, $EE
Coorda 18, 16
call ProtectedDelay3
call ManualTextScroll
coord hl, 1, 13
lb bc, 4, 18
call ClearScreenArea
- ld c,20
+ ld c, 20
call DelayFrames
pop de
coord hl, 1, 14
jp PlaceNextChar_inc
Char49::
+ ld a, [hFlags_0xFFFA]
+ bit 3, a
+ jr z, .Char49
+ ld a, $4e
+ jp Char4ETest
+
+.Char49
push de
- ld a,$EE
+ ld a, $EE
Coorda 18, 16
call ProtectedDelay3
call ManualTextScroll
coord hl, 1, 10
lb bc, 7, 18
call ClearScreenArea
- ld c,20
+ ld c, 20
call DelayFrames
pop de
pop hl
@@ -317,7 +313,7 @@ Char49::
jp PlaceNextChar_inc
Char4B::
- ld a,$EE
+ ld a, $EE
Coorda 18, 16
call ProtectedDelay3
push de
@@ -328,36 +324,36 @@ Char4B::
;fall through
Char4C::
push de
- call Next1B18
- call Next1B18
+ call ScrollTextUpOneLine ; 18f1
+ call ScrollTextUpOneLine
coord hl, 1, 16
pop de
jp PlaceNextChar_inc
-Next1B18::
+ScrollTextUpOneLine::
coord hl, 0, 14
coord de, 0, 13
- ld b,60
+ ld b, 60
.next
- ld a,[hli]
- ld [de],a
+ ld a, [hli]
+ ld [de], a
inc de
dec b
- jr nz,.next
+ jr nz, .next
coord hl, 1, 16
ld a, " "
- ld b,SCREEN_WIDTH - 2
+ ld b, SCREEN_WIDTH - 2
.next2
- ld [hli],a
+ ld [hli], a
dec b
- jr nz,.next2
+ jr nz, .next2
; wait five frames
- ld b,5
+ ld b, 5
.WaitFrame
call DelayFrame
dec b
- jr nz,.WaitFrame
+ jr nz, .WaitFrame
ret
@@ -368,42 +364,42 @@ ProtectedDelay3::
ret
TextCommandProcessor::
- ld a,[wLetterPrintingDelayFlags]
+ ld a, [wLetterPrintingDelayFlags]
push af
- set 1,a
- ld e,a
- ld a,[$fff4]
+ set 1, a
+ ld e, a
+ ld a, [$fff9]
xor e
- ld [wLetterPrintingDelayFlags],a
- ld a,c
- ld [wUnusedCC3A],a
- ld a,b
- ld [wUnusedCC3B],a
+ ld [wLetterPrintingDelayFlags], a
+ ld a, c
+ ld [wTextDestinationTileAddrBuffer], a
+ ld a, b
+ ld [wTextDestinationTileAddrBuffer + 1], a
NextTextCommand::
- ld a,[hli]
+ ld a, [hli]
cp a, "@" ; terminator
- jr nz,.doTextCommand
+ jr nz, .doTextCommand
pop af
- ld [wLetterPrintingDelayFlags],a
+ ld [wLetterPrintingDelayFlags], a
ret
.doTextCommand
push hl
- cp a,$17
- jp z,TextCommand17
- cp a,$0e
- jp nc,TextCommand0B ; if a != 0x17 and a >= 0xE, go to command 0xB
+ cp a, $17
+ jp z, TextCommand17
+ cp a, $0e
+ jp nc, TextCommand0B ; if a != 0x17 and a >= 0xE, go to command 0xB
; if a < 0xE, use a jump table
- ld hl,TextCommandJumpTable
+ ld hl, TextCommandJumpTable
push bc
add a
- ld b,$00
- ld c,a
- add hl,bc
+ ld b, $00
+ ld c, a
+ add hl, bc
pop bc
- ld a,[hli]
- ld h,[hl]
- ld l,a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
jp [hl]
; draw box
@@ -413,17 +409,17 @@ NextTextCommand::
; CC = width
TextCommand04::
pop hl
- ld a,[hli]
- ld e,a
- ld a,[hli]
- ld d,a
- ld a,[hli]
- ld b,a
- ld a,[hli]
- ld c,a
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld c, a
push hl
- ld h,d
- ld l,e
+ ld h, d
+ ld l, e
call TextBoxBorder
pop hl
jr NextTextCommand
@@ -432,13 +428,13 @@ TextCommand04::
; 00{string}
TextCommand00::
pop hl
- ld d,h
- ld e,l
- ld h,b
- ld l,c
+ ld d, h
+ ld e, l
+ ld h, b
+ ld l, c
call PlaceString
- ld h,d
- ld l,e
+ ld h, d
+ ld l, e
inc hl
jr NextTextCommand
@@ -447,13 +443,13 @@ TextCommand00::
; AAAA = address of string
TextCommand01::
pop hl
- ld a,[hli]
- ld e,a
- ld a,[hli]
- ld d,a
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
push hl
- ld h,b
- ld l,c
+ ld h, b
+ ld l, c
call PlaceString
pop hl
jr NextTextCommand
@@ -466,18 +462,18 @@ TextCommand01::
; bits 5-7 = unknown flags
TextCommand02::
pop hl
- ld a,[hli]
- ld e,a
- ld a,[hli]
- ld d,a
- ld a,[hli]
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
push hl
- ld h,b
- ld l,c
- ld c,a
+ ld h, b
+ ld l, c
+ ld c, a
call PrintBCDNumber
- ld b,h
- ld c,l
+ ld b, h
+ ld c, l
pop hl
jr NextTextCommand
@@ -486,12 +482,12 @@ TextCommand02::
; AAAA = new destination address
TextCommand03::
pop hl
- ld a,[hli]
- ld [wUnusedCC3A],a
- ld c,a
- ld a,[hli]
- ld [wUnusedCC3B],a
- ld b,a
+ ld a, [hli]
+ ld [wTextDestinationTileAddrBuffer], a
+ ld c, a
+ ld a, [hli]
+ ld [wTextDestinationTileAddrBuffer + 1], a
+ ld b, a
jp NextTextCommand
; repoint destination to second line of dialogue text box
@@ -506,15 +502,15 @@ TextCommand05::
; 06
; (no arguments)
TextCommand06::
- ld a,[wLinkState]
- cp a,LINK_STATE_BATTLING
- jp z,TextCommand0D
- ld a,$ee ; down arrow
+ ld a, [wLinkState]
+ cp a, LINK_STATE_BATTLING
+ jp z, TextCommand0D
+ ld a, $ee ; down arrow
Coorda 18, 16 ; place down arrow in lower right corner of dialogue text box
push bc
call ManualTextScroll ; blink arrow and wait for A or B to be pressed
pop bc
- ld a," "
+ ld a, " "
Coorda 18, 16 ; overwrite down arrow with blank space
pop hl
jp NextTextCommand
@@ -523,10 +519,10 @@ TextCommand06::
; 07
; (no arguments)
TextCommand07::
- ld a," "
+ ld a, " "
Coorda 18, 16 ; place blank space in lower right corner of dialogue text box
- call Next1B18 ; scroll up text
- call Next1B18
+ call ScrollTextUpOneLine ; scroll up text
+ call ScrollTextUpOneLine
pop hl
coord bc, 1, 16 ; address of second line of dialogue text box
jp NextTextCommand
@@ -535,7 +531,7 @@ TextCommand07::
; 08{code}
TextCommand08::
pop hl
- ld de,NextTextCommand
+ ld de, NextTextCommand
push de ; return address
jp [hl]
@@ -547,25 +543,25 @@ TextCommand08::
; bits 4-7 = how long the number is in bytes
TextCommand09::
pop hl
- ld a,[hli]
- ld e,a
- ld a,[hli]
- ld d,a
- ld a,[hli]
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
push hl
- ld h,b
- ld l,c
- ld b,a
- and a,$0f
- ld c,a
- ld a,b
- and a,$f0
+ ld h, b
+ ld l, c
+ ld b, a
+ and a, $0f
+ ld c, a
+ ld a, b
+ and a, $f0
swap a
- set BIT_LEFT_ALIGN,a
- ld b,a
+ set BIT_LEFT_ALIGN, a
+ ld b, a
call PrintNumber
- ld b,h
- ld c,l
+ ld b, h
+ ld c, l
pop hl
jp NextTextCommand
@@ -575,10 +571,10 @@ TextCommand09::
TextCommand0A::
push bc
call Joypad
- ld a,[hJoyHeld]
- and a,A_BUTTON | B_BUTTON
- jr nz,.skipDelay
- ld c,30
+ ld a, [hJoyHeld]
+ and a, A_BUTTON | B_BUTTON
+ jr nz, .skipDelay
+ ld c, 30
call DelayFrames
.skipDelay
pop bc
@@ -592,24 +588,24 @@ TextCommand0B::
pop hl
push bc
dec hl
- ld a,[hli]
- ld b,a ; b = command number that got us here
+ ld a, [hli]
+ ld b, a ; b = command number that got us here
push hl
- ld hl,TextCommandSounds
+ ld hl, TextCommandSounds
.loop
- ld a,[hli]
+ ld a, [hli]
cp b
- jr z,.matchFound
+ jr z, .matchFound
inc hl
jr .loop
.matchFound
- cp a,$14
- jr z,.pokemonCry
- cp a,$15
- jr z,.pokemonCry
- cp a,$16
- jr z,.pokemonCry
- ld a,[hl]
+ cp a, $14
+ jr z, .pokemonCry
+ cp a, $15
+ jr z, .pokemonCry
+ cp a, $16
+ jr z, .pokemonCry
+ ld a, [hl]
call PlaySound
call WaitForSoundToFinish
pop hl
@@ -617,7 +613,7 @@ TextCommand0B::
jp NextTextCommand
.pokemonCry
push de
- ld a,[hl]
+ ld a, [hl]
call PlayCry
pop de
pop hl
@@ -626,43 +622,43 @@ TextCommand0B::
; format: text command ID, sound ID or cry ID
TextCommandSounds::
- db $0B,SFX_GET_ITEM_1
- db $12,SFX_CAUGHT_MON
- db $0E,SFX_POKEDEX_RATING
- db $0F,SFX_GET_ITEM_1
- 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 $0B, SFX_GET_ITEM_1
+ db $12, SFX_TURN_OFF_PC
+ db $0E, SFX_POKEDEX_RATING
+ db $0F, SFX_GET_ITEM_1
+ db $10, SFX_GET_ITEM_2
+ db $11, SFX_GET_KEY_ITEM
+ db $13, SFX_TRADE_MACHINE
+ db $14, PIKACHU ; used in OakSpeech
+ db $15, PIDGEOT ; used in SaffronCityText12
+ db $16, DEWGONG ; unused?
; draw ellipses
; 0CAA
; AA = number of ellipses to draw
TextCommand0C::
pop hl
- ld a,[hli]
- ld d,a
+ ld a, [hli]
+ ld d, a
push hl
- ld h,b
- ld l,c
+ ld h, b
+ ld l, c
.loop
- ld a,$75 ; ellipsis
- ld [hli],a
+ ld a, $75 ; ellipsis
+ ld [hli], a
push de
call Joypad
pop de
- ld a,[hJoyHeld] ; joypad state
- and a,A_BUTTON | B_BUTTON
- jr nz,.skipDelay ; if so, skip the delay
- ld c,10
+ ld a, [hJoyHeld] ; joypad state
+ and a, A_BUTTON | B_BUTTON
+ jr nz, .skipDelay ; if so, skip the delay
+ ld c, 10
call DelayFrames
.skipDelay
dec d
- jr nz,.loop
- ld b,h
- ld c,l
+ jr nz, .loop
+ ld b, h
+ ld c, l
pop hl
jp NextTextCommand
@@ -682,23 +678,23 @@ TextCommand0D::
; BB = bank
TextCommand17::
pop hl
- ld a,[H_LOADEDROMBANK]
+ ld a, [H_LOADEDROMBANK]
push af
- ld a,[hli]
- ld e,a
- ld a,[hli]
- ld d,a
- ld a,[hli]
- ld [H_LOADEDROMBANK],a
- ld [MBC1RomBank],a
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld [H_LOADEDROMBANK], a
+ ld [MBC1RomBank], a
push hl
- ld l,e
- ld h,d
+ ld l, e
+ ld h, d
call TextCommandProcessor
pop hl
pop af
- ld [H_LOADEDROMBANK],a
- ld [MBC1RomBank],a
+ ld [H_LOADEDROMBANK], a
+ ld [MBC1RomBank], a
jp NextTextCommand
TextCommandJumpTable::