pokecrystal/home/text.asm

1240 lines
15 KiB
NASM

ClearBox:: ; fb6
; Fill a c*b box at hl with blank tiles.
ld a, " "
Functionfb8::
push bc
push hl
.x
ld [hli], a
dec c
jr nz, .x
pop hl
ld bc, 20 ; screen width
add hl, bc
pop bc
dec b
jr nz, Functionfb8
ret
; fc8
ClearTileMap:: ; fc8
; Fill TileMap with blank tiles.
ld hl, TileMap
ld a, " "
ld bc, 360 ; screen dimensions 20*18
call ByteFill
; We aren't done if the LCD is on.
ld a, [rLCDC]
bit 7, a
ret z
jp WaitBGMap
; fdb
Functionfdb:: ; fdb
ld a, $7
ld hl, AttrMap
ld bc, $0168
call ByteFill
jr ClearTileMap
; fe8
TextBox:: ; fe8
; Draw a text box width c height b at hl
; Dimensions do not include the border.
push bc
push hl
call TextBoxBorder
pop hl
pop bc
jr TextBoxPalette
; ff1
TextBoxBorder:: ; ff1
; Top
push hl
ld a, "┌"
ld [hli], a
inc a ; "─"
call NPlaceChar
inc a ; "┐"
ld [hl], a
; Middle
pop hl
ld de, 20 ; screen width
add hl, de
.PlaceRow
push hl
ld a, "│"
ld [hli], a
ld a, " "
call NPlaceChar
ld [hl], "│"
pop hl
ld de, 20 ; screen width
add hl, de
dec b
jr nz, .PlaceRow
; Bottom
ld a, "└"
ld [hli], a
ld a, "─"
call NPlaceChar
ld [hl], "┘"
ret
; 101e
NPlaceChar:: ; 101e
; Place char a c times
ld d,c
.loop
ld [hli],a
dec d
jr nz, .loop
ret
; 1024
TextBoxPalette:: ; 1024
; Fill text box width c height b at hl with pal 7
ld de, AttrMap - TileMap
add hl, de
inc b
inc b
inc c
inc c
ld a, 7 ; pal
.gotoy
push bc
push hl
.gotox
ld [hli], a
dec c
jr nz, .gotox
pop hl
ld de, 20 ; screen width
add hl, de
pop bc
dec b
jr nz, .gotoy
ret
; 103e
SpeechTextBox:: ; 103e
; Standard textbox.
hlcoord 0, 12
ld b, 4 ; height
ld c, 18 ; screen width - 2 (border)
jp TextBox
; 1048
UnknownText_0x1048:: ; 1048
db $0, "ゲームフりーク!", $57
; 1052
Function1052:: ; 1052
ld hl, .text_1056
ret
.text_1056
db "@"
; 1057
PrintText:: ; 1057
call Function106c
Function105a:: ; 105a
push hl
hlcoord 1, 14
ld bc, 18 + 3<<8
call ClearBox
pop hl
PrintTextBoxText:: ; 1065
bccoord 1, 14
call Function13e5
ret
; 106c
Function106c:: ; 106c
push hl
call SpeechTextBox
call Function1ad2
call Function321c
pop hl
ret
; 1078
PlaceString:: ; 1078
push hl
PlaceNextChar:: ; 1079
ld a, [de]
cp "@"
jr nz, CheckDict
ld b, h
ld c, l
pop hl
ret
pop de
NextChar:: ; 1083
inc de
jp PlaceNextChar
CheckDict:: ; 1087
cp $15
jp z, Function117b
cp $4f
jp z, Char4F
cp $4e
jp z, Function12a7
cp $16
jp z, Function12b9
and a
jp z, Function1383
cp $4c
jp z, Function1337
cp $4b
jp z, Char4B
cp $51 ; Player name
jp z, Function12f2
cp $49
jp z, Function1186
cp $52 ; Mother name
jp z, Function118d
cp $53
jp z, Function1194
cp $35
jp z, Function11e8
cp $36
jp z, Function11ef
cp $37
jp z, Function11f6
cp $38
jp z, Function119b
cp $39
jp z, Function11a2
cp $54
jp z, Function11c5
cp $5b
jp z, Function11b7
cp $5e
jp z, Function11be
cp $5c
jp z, Function11b0
cp $5d
jp z, Function11a9
cp $23
jp z, Function11cc
cp $22
jp z, Function12b0
cp $55
jp z, Char55
cp $56
jp z, Function11d3
cp $57
jp z, Function137c
cp $58
jp z, Function135a
cp $4a
jp z, Function11da
cp $24
jp z, Function11e1
cp $25
jp z, NextChar
cp $1f
jr nz, .asm_1122
ld a, $7f
.asm_1122
cp $5f
jp z, Char5F
cp $59
jp z, Function11fd
cp $5a
jp z, Char5D
cp $3f
jp z, Function121b
cp $14
jp z, Function1252
cp $e4
jr z, .asm_1174 ; 0x113d $35
cp $e5
jr z, .asm_1174 ; 0x1141 $31
jr .asm_114c ; 0x1143 $7
ld b, a
call Function13c6
jp NextChar
.asm_114c
cp $60
jr nc, .asm_1174 ; 0x114e $24
cp $40
jr nc, .asm_1165 ; 0x1152 $11
cp $20
jr nc, .asm_115c ; 0x1156 $4
add $80
jr .asm_115e ; 0x115a $2
.asm_115c
add $90
.asm_115e
ld b, $e5
call Function13c6
jr .asm_1174 ; 0x1163 $f
.asm_1165
cp $44
jr nc, .asm_116d ; 0x1167 $4
add $59
jr .asm_116f ; 0x116b $2
.asm_116d
add $86
.asm_116f
ld b, $e4
call Function13c6
.asm_1174
ld [hli], a
call PrintLetterDelay
jp NextChar
; 0x117b
Function117b:: ; 117b
ld c, l
ld b, h
callba Function17f036
jp PlaceNextChar
; 1186
Function1186:: ; 1186
push de
ld de, MomsName
jp Function126a
; 118d
Function118d:: ; 118d
push de
ld de, PlayerName
jp Function126a
; 1194
Function1194:: ; 1194
push de
ld de, RivalName
jp Function126a
; 119b
Function119b:: ; 119b
push de
ld de, RedsName
jp Function126a
; 11a2
Function11a2:: ; 11a2
push de
ld de, GreensName
jp Function126a
; 11a9
Function11a9:: ; 11a9
push de
ld de, Char5DText
jp Function126a
; 11b0
Function11b0:: ; 11b0
push de
ld de, Char5CText
jp Function126a
; 11b7
Function11b7:: ; 11b7
push de
ld de, Char5BText
jp Function126a
; 11be
Function11be:: ; 11be
push de
ld de, Char5EText
jp Function126a
; 11c5
Function11c5:: ; 11c5
push de
ld de, Char54Text
jp Function126a
; 11cc
Function11cc:: ; 11cc
push de
ld de, Char23Text
jp Function126a
; 11d3
Function11d3:: ; 11d3
push de
ld de, Char56Text
jp Function126a
; 11da
Function11da:: ; 11da
push de
ld de, Char4AText
jp Function126a
; 11e1
Function11e1:: ; 11e1
push de
ld de, Char24Text
jp Function126a
; 11e8
Function11e8:: ; 11e8
push de
ld de, Char37Text
jp Function126a
; 11ef
Function11ef:: ; 11ef
push de
ld de, Char37Text
jp Function126a
; 11f6
Function11f6:: ; 11f6
push de
ld de, Char37Text
jp Function126a
; 11fd
Function11fd:: ; 11fd
ld a, [hBattleTurn]
xor $1
jr Function1205
; 1203
Char5D:: ; 1203
ld a, [hBattleTurn]
; 1205
Function1205:: ; 1205
push de
and a
jr nz, .asm_120e ; 0x1207 $5
ld de, BattleMonNick
jr Function126a ; 0x120c $5c
.asm_120e
ld de, Char5AText ; Enemy
call PlaceString
ld h, b
ld l, c
ld de, EnemyMonNick
jr Function126a ; 0x1219 $4f
Function121b:: ; 121b
push de
ld a, [InLinkBattle]
and a
jr nz, .linkbattle
ld a, [TrainerClass]
cp RIVAL1
jr z, .asm_1248 ; 0x1227 $1f
cp RIVAL2
jr z, .asm_1248 ; 0x122b $1b
ld de, $c656
call PlaceString
ld h, b
ld l, c
ld de, String12a2
call PlaceString
push bc
callab Function39939
pop hl
ld de, StringBuffer1
jr Function126a ; 0x1246 $22
.asm_1248
ld de, RivalName
jr Function126a ; 0x124b $1d
.linkbattle
ld de, $c656
jr Function126a ; 0x1250 $18
Function1252:: ; 1252
push de
ld de, PlayerName
call PlaceString
ld h, b
ld l, c
ld a, [PlayerGender]
bit 0, a
ld de, String12a5
jr z, Function126a ; 0x1263 $5
ld de, String12a6
jr Function126a ; 0x1268 $0
Function126a:: ; 126a
call PlaceString
ld h, b
ld l, c
pop de
jp NextChar
; 0x1273
Char5CText:: ; 1273
db "TM@"
Char5DText:: ; 1276
db "TRAINER@"
Char5BText:: ; 127e
db "PC@"
Char5EText:: ; 1281
db "ROCKET@"
Char54Text:: ; 1288
db "POKé@"
Char23Text:: ; 128d
db "こうげき@"
Char56Text::; 1292
db "……@"
Char5AText:: ; 1295
db "Enemy @"
Char4AText:: ; 129c
db $e1, $e2, "@" ; PK MN
Char24Text:: ; 129f
db $70, $71, "@" ; PO KE
String12a2:: ; 12a2
db " @"
Char35Text::
Char36Text::
Char37Text:: ; 12a4
db "@"
String12a5:: ; 12a5
db "@"
String12a6:: ; 12a6
db "@"
; 12a7
Function12a7:: ; 12a7
pop hl
ld bc, $0028
add hl, bc
push hl
jp NextChar
; 12b0
Function12b0:: ; 12b0
pop hl
ld bc, $0014
add hl, bc
push hl
jp NextChar
; 12b9
Function12b9:: ; 12b9
pop hl
push de
ld bc, $3b60
add hl, bc
ld de, $ffec
ld c, $1
.asm_12c4
ld a, h
and a
jr nz, .asm_12cd
ld a, l
cp $14
jr c, .asm_12d1
.asm_12cd
add hl, de
inc c
jr .asm_12c4
.asm_12d1
ld hl, TileMap
ld de, $0014
ld a, c
.asm_12d8
and a
jr z, .asm_12df
add hl, de
dec a
jr .asm_12d8
.asm_12df
pop de
inc de
ld a, [de]
ld c, a
ld b, $0
add hl, bc
push hl
jp NextChar
; 12ea
Char4F:: ; 12ea
pop hl
hlcoord 1, 16
push hl
jp NextChar
; 0x12f2
Function12f2:: ; 12f2
push de
ld a, [InLinkBattle]
cp $3
jr z, .asm_1301
cp $4
jr z, .asm_1301
call Function13c7
.asm_1301
call Function13b6
call Functionaaf
ld hl, $c5b9
ld bc, $0312
call ClearBox
call Function13cd
ld c, $14
call DelayFrames
ld hl, $c5b9
pop de
jp NextChar
; 131f
Char4B:: ; 131f
ld a, [InLinkBattle]
or a
jr nz, .asm_1328
call Function13c7
.asm_1328
call Function13b6
push de
call Functionaaf
pop de
ld a, [InLinkBattle]
or a
call z, Function13cd
Function1337:: ; 1337
push de
call Function138c
call Function138c
hlcoord 1, 16
pop de
jp NextChar
; 1345
Char55:: ; 1345
push de
ld de, Text_1354
ld b, h
ld c, l
call PlaceString
ld h, b
ld l, c
pop de
jp NextChar
; 1354
Text_1354:: ; 1354
db $4b, "@"
; 1356
Char5F:: ; 1356
; ends a Pokédex entry
ld [hl], "."
pop hl
ret
; 135a
Function135a:: ; 135a
ld a, [InLinkBattle]
cp $3
jr z, .asm_1368
cp $4
jr z, .asm_1368
call Function13c7
.asm_1368
call Function13b6
call Functionaaf
ld a, [InLinkBattle]
cp $3
jr z, Function137c
cp $4
jr z, Function137c
call Function13cd
Function137c:: ; 137c
pop hl
ld de, .string_1382
dec de
ret
.string_1382
db "@"
; 1383
Function1383:: ; 1383
ld a, $e6
ld [hli], a
call PrintLetterDelay
jp NextChar
; 138c
Function138c:: ; 138c
ld hl, $c5b9
ld de, $c5a5
ld a, $3
.asm_1394
push af
ld c, $12
.asm_1397
ld a, [hli]
ld [de], a
inc de
dec c
jr nz, .asm_1397
inc de
inc de
inc hl
inc hl
pop af
dec a
jr nz, .asm_1394
ld hl, $c5e1
ld a, $7f
ld bc, $0012
call ByteFill
ld c, $5
call DelayFrames
ret
; 13b6
Function13b6:: ; 13b6
push bc
ld a, [hOAMUpdate]
push af
ld a, $1
ld [hOAMUpdate], a
call WaitBGMap
pop af
ld [hOAMUpdate], a
pop bc
ret
; 13c6
Function13c6:: ; 13c6
ret
; 13c7
Function13c7:: ; 13c7
ld a, $ee
ld [$c606], a
ret
; 13cd
Function13cd:: ; 13cd
ld a, [$c605]
ld [$c606], a
ret
; 13d4
Function13d4:: ; 13d4
ld b, a
ld a, [hROMBank]
push af
ld a, b
rst Bankswitch
call PlaceString
pop af
rst Bankswitch
ret
; 13e0
Function13e0:: ; 13e0
ld hl, String_13e4
ret
String_13e4: ; 13e4
db "@"
; 13e5
Function13e5:: ; 13e5
ld a, [$cfcf]
push af
set 1, a
ld [$cfcf], a
call Function13f6
pop af
ld [$cfcf], a
ret
; 13f6
Function13f6:: ; 13f6
.asm_13f6
ld a, [hli]
cp "@"
ret z
call Function13ff
jr .asm_13f6
; 13ff
Function13ff:: ; 13ff
push hl
push bc
ld c, a
ld b, 0
ld hl, TextCommands
add hl, bc
add hl, bc
ld e, [hl]
inc hl
ld d, [hl]
pop bc
pop hl
; jp de
push de
ret
; 1410
TextCommands:: ; 1410
dw Text_00
dw Text_01
dw Text_02
dw Text_03
dw Text_04
dw Text_05
dw Text_06
dw Text_07
dw Text_08
dw Text_09
dw Text_0A
dw Text_PlaySound ; $0b
dw Text_0C
dw Text_0D
dw Text_PlaySound ; $0e
dw Text_PlaySound ; $0f
dw Text_PlaySound ; $10
dw Text_PlaySound ; $11
dw Text_PlaySound ; $12
dw Text_PlaySound ; $13
dw Text_14
dw Text_15
dw Text_16
; 143e
Text_00:: ; 143e
; TX
; write text until "@"
; [$00]["...@"]
ld d, h
ld e, l
ld h, b
ld l, c
call PlaceString
ld h, d
ld l, e
inc hl
ret
; 1449
Text_01:: ; 1449
; TX_RAM
; write text from a ram address
; little endian
; [$01][addr]
ld a, [hli]
ld e, a
ld a, [hli]
ld d, a
push hl
ld h, b
ld l, c
call PlaceString
pop hl
ret
; 1455
Text_16:: ; 1455
; TX_FAR
; write text from a different bank
; little endian
; [$16][addr][bank]
ld a, [hROMBank]
push af
ld a, [hli]
ld e, a
ld a, [hli]
ld d, a
ld a, [hli]
ld [hROMBank], a
ld [MBC3RomBank], a
push hl
ld h, d
ld l, e
call Function13f6
pop hl
pop af
ld [hROMBank], a
ld [MBC3RomBank], a
ret
; 1470
Text_02:: ; 1470
; TX_NUM
; write bcdnumber from address, typically ram
; little endian
; [$02][addr][flags]
; flags: see PrintBCDNumber
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
call PrintBCDNumber
ld b, h
ld c, l
pop hl
ret
; 1480
Text_03:: ; 1480
; TX_MOVE
; move to a new tile
; little endian
; [$03][tileaddr]
ld a, [hli]
ld [$d0e6], a
ld c, a
ld a, [hli]
ld [$d0e7], a
ld b, a
ret
; 148b
Text_04:: ; 148b
; TX_BOX
; draw a box
; little endian
; [$04][tileaddr][height][width]
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
call TextBox
pop hl
ret
; 149b
Text_05:: ; 149b
; TX_LOW
; write text at (1,16)
; [$05]
bccoord 1, 16
ret
; 149f
Text_06:: ; 149f
; TX_WAITBUTTON
; wait for button press
; show arrow
; [06]
ld a, [InLinkBattle]
cp $3
jp z, Text_0D
cp $4
jp z, Text_0D
push hl
call Function13c7
push bc
call Functionaaf
pop bc
call Function13cd
pop hl
ret
; 14ba
Text_07:: ; 14ba
push hl
call Function13cd
call Function138c
call Function138c
pop hl
bccoord 1, 16
ret
; 14c9
Text_08:: ; 14c9
; TX_ASM
; rom only?
bit 7, h
jr nz, .asm_14ce
jp [hl]
.asm_14ce
ld a, "@"
ld [hl], a
ret
; 14d2
Text_09:: ; 14d2
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 $f
ld c, a
ld a, b
and $f0
swap a
set 6, a
ld b, a
call PrintNum
ld b, h
ld c, l
pop hl
ret
; 14ed
Text_0A:: ; 14ed
push hl
push bc
call GetJoypad
ld a, [hJoyDown]
and A_BUTTON | B_BUTTON
jr nz, .asm_14fd
ld c, 30
call DelayFrames
.asm_14fd
pop bc
pop hl
ret
; 1500
Text_PlaySound:: ; 1500
; chars:
; $0b, $0e, $0f, $10, $11, $12, $13
; see TextSFX
push bc
dec hl
ld a, [hli]
ld b, a
push hl
ld hl, TextSFX
.asm_1508
ld a, [hli]
cp $ff
jr z, .asm_151f
cp b
jr z, .asm_1514
inc hl
inc hl
jr .asm_1508
.asm_1514
push de
ld e, [hl]
inc hl
ld d, [hl]
call PlaySFX
call WaitSFX
pop de
.asm_151f
pop hl
pop bc
ret
; 1522
Function1522:: ; 1522
push de
ld e, [hl]
inc hl
ld d, [hl]
call Function37ce
pop de
pop hl
pop bc
ret
; 152d
TextSFX:: ; 152d
dbw $0b, SFX_DEX_FANFARE_50_79
dbw $12, SFX_FANFARE
dbw $0e, SFX_DEX_FANFARE_20_49
dbw $0f, SFX_ITEM
dbw $10, SFX_CAUGHT_MON
dbw $11, SFX_DEX_FANFARE_80_109
dbw $13, SFX_SLOT_MACHINE_START
db $ff ; end
; 1543
Text_0C:: ; 1543
ld a, [hli]
ld d, a
push hl
ld h, b
ld l, c
.asm_1548
push de
ld a, "…"
ld [hli], a
call GetJoypad
ld a, [hJoyDown]
and A_BUTTON | B_BUTTON
jr nz, .asm_155a
ld c, 10
call DelayFrames
.asm_155a
pop de
dec d
jr nz, .asm_1548
ld b, h
ld c, l
pop hl
ret
; 1562
Text_0D:: ; 1562
; wait for key down
; display arrow
push hl
push bc
call Functionaaf
pop bc
pop hl
ret
; 156a
Text_14:: ; 156a
; Print a string from one of the following:
; 0: StringBuffer3
; 1: StringBuffer4
; 2: StringBuffer5
; 3: StringBuffer2
; 4: StringBuffer1
; 5: EnemyMonNick
; 6: BattleMonNick
; [$14][id]
ld a, [hli]
push hl
ld e, a
ld d, 0
ld hl, Unknown_24000
add hl, de
add hl, de
ld a, BANK(Unknown_24000)
call GetFarHalfword
ld d, h
ld e, l
ld h, b
ld l, c
call PlaceString
pop hl
ret
; 1582
Text_15:: ; 1582
; TX_DAY
call GetWeekday
push hl
push bc
ld c, a
ld b, 0
ld hl, .Days
add hl, bc
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld d, h
ld e, l
pop hl
call PlaceString
ld h, b
ld l, c
ld de, .Day
call PlaceString
pop hl
ret
; 15a2
.Days ; 15a2
dw .Sun
dw .Mon
dw .Tues
dw .Wednes
dw .Thurs
dw .Fri
dw .Satur
.Sun db "SUN@"
.Mon db "MON@"
.Tues db "TUES@"
.Wednes db "WEDNES@"
.Thurs db "THURS@"
.Fri db "FRI@"
.Satur db "SATUR@"
.Day db "DAY@"
; 15d8