mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-11-16 11:27:33 -08:00
c8960dd2c8
Annotated the SGB functions in predef/sgb.asm, and some of the map scripts. Renamed several functions in home. Renamed six WRAM addresses corresponding to party icon animations, and renamed several others relative to these.
1155 lines
14 KiB
NASM
1155 lines
14 KiB
NASM
BORDER_WIDTH EQU 2
|
|
TEXTBOX_WIDTH EQU SCREEN_WIDTH
|
|
TEXTBOX_INNERW EQU TEXTBOX_WIDTH - BORDER_WIDTH
|
|
TEXTBOX_HEIGHT EQU 6
|
|
TEXTBOX_INNERH EQU TEXTBOX_HEIGHT - BORDER_WIDTH
|
|
TEXTBOX_X EQU 0
|
|
TEXTBOX_INNERX EQU TEXTBOX_X + 1
|
|
TEXTBOX_Y EQU SCREEN_HEIGHT - TEXTBOX_HEIGHT
|
|
TEXTBOX_INNERY EQU TEXTBOX_Y + 2
|
|
|
|
TEXTBOX_PAL EQU 7
|
|
|
|
|
|
ClearBox:: ; fb6
|
|
; Fill a c*b box at hl with blank tiles.
|
|
|
|
ld a, " "
|
|
|
|
Functionfb8::
|
|
.col
|
|
push bc
|
|
push hl
|
|
.row
|
|
ld [hli], a
|
|
dec c
|
|
jr nz, .row
|
|
pop hl
|
|
ld bc, SCREEN_WIDTH
|
|
add hl, bc
|
|
pop bc
|
|
dec b
|
|
jr nz, .col
|
|
ret
|
|
; fc8
|
|
|
|
|
|
ClearTileMap:: ; fc8
|
|
; Fill TileMap with blank tiles.
|
|
|
|
hlcoord 0, 0
|
|
ld a, " "
|
|
ld bc, TileMapEnd - TileMap
|
|
call ByteFill
|
|
|
|
; Update the BG Map.
|
|
ld a, [rLCDC]
|
|
bit 7, a
|
|
ret z
|
|
jp WaitBGMap
|
|
; fdb
|
|
|
|
|
|
ClearScreen:: ; fdb
|
|
ld a, TEXTBOX_PAL
|
|
hlcoord 0, 0, AttrMap
|
|
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
|
|
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 .PlaceChars
|
|
inc a ; "┐"
|
|
ld [hl], a
|
|
pop hl
|
|
|
|
; Middle
|
|
ld de, SCREEN_WIDTH
|
|
add hl, de
|
|
.row
|
|
push hl
|
|
ld a, "│"
|
|
ld [hli], a
|
|
ld a, " "
|
|
call .PlaceChars
|
|
ld [hl], "│"
|
|
pop hl
|
|
|
|
ld de, SCREEN_WIDTH
|
|
add hl, de
|
|
dec b
|
|
jr nz, .row
|
|
|
|
; Bottom
|
|
ld a, "└"
|
|
ld [hli], a
|
|
ld a, "─"
|
|
call .PlaceChars
|
|
ld [hl], "┘"
|
|
|
|
ret
|
|
; 101e
|
|
|
|
.PlaceChars: ; 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
|
|
rept 2
|
|
inc b
|
|
endr
|
|
rept 2
|
|
inc c
|
|
endr
|
|
ld a, TEXTBOX_PAL
|
|
.col
|
|
push bc
|
|
push hl
|
|
.row
|
|
ld [hli], a
|
|
dec c
|
|
jr nz, .row
|
|
pop hl
|
|
ld de, SCREEN_WIDTH
|
|
add hl, de
|
|
pop bc
|
|
dec b
|
|
jr nz, .col
|
|
ret
|
|
; 103e
|
|
|
|
|
|
SpeechTextBox:: ; 103e
|
|
; Standard textbox.
|
|
hlcoord TEXTBOX_X, TEXTBOX_Y
|
|
ld b, TEXTBOX_INNERH
|
|
ld c, TEXTBOX_INNERW
|
|
jp TextBox
|
|
; 1048
|
|
|
|
TestText:: ; 1048
|
|
text "ゲームフりーク!"
|
|
done
|
|
; 1052
|
|
|
|
RadioTerminator:: ; 1052
|
|
ld hl, .stop
|
|
ret
|
|
.stop db "@"
|
|
; 1057
|
|
|
|
|
|
PrintText:: ; 1057
|
|
call SetUpTextBox
|
|
Function105a:: ; 105a
|
|
push hl
|
|
hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY
|
|
lb bc, TEXTBOX_INNERH - 1, TEXTBOX_INNERW
|
|
call ClearBox
|
|
pop hl
|
|
|
|
PrintTextBoxText:: ; 1065
|
|
bccoord TEXTBOX_INNERX, TEXTBOX_INNERY
|
|
call PlaceWholeStringInBoxAtOnce
|
|
ret
|
|
; 106c
|
|
|
|
SetUpTextBox:: ; 106c
|
|
push hl
|
|
call SpeechTextBox
|
|
call UpdateSprites
|
|
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
|
|
dict: macro
|
|
if \1 == 0
|
|
and a
|
|
else
|
|
cp \1
|
|
endc
|
|
jp z, \2
|
|
endm
|
|
dict $15, Char15
|
|
dict $4f, Line
|
|
dict $4e, NextLine
|
|
dict $16, Char16
|
|
dict $00, NullChar
|
|
dict $4c, Function1337
|
|
dict $4b, Char4B
|
|
dict $51, Paragraph
|
|
dict $49, PrintMomsName
|
|
dict $52, PrintPlayerName
|
|
dict $53, PrintRivalName
|
|
dict $35, Char35
|
|
dict $36, Char36
|
|
dict $37, Char37
|
|
dict $38, PrintRedsName
|
|
dict $39, PrintGreensName
|
|
dict $54, Char54
|
|
dict $5b, Char5B
|
|
dict $5e, Char5E
|
|
dict $5c, Char5C
|
|
dict $5d, Char5D
|
|
dict $23, Char23
|
|
dict $22, Char22
|
|
dict $55, ContText
|
|
dict $56, Char56
|
|
dict $57, DoneText
|
|
dict $58, PromptText
|
|
dict $4a, Char4A
|
|
dict $24, Char24
|
|
dict $25, NextChar
|
|
cp $1f
|
|
jr nz, .ok
|
|
ld a, $7f
|
|
.ok
|
|
dict $5f, Char5F
|
|
dict $59, Char59
|
|
dict $5a, Char5A
|
|
dict $3f, Char3F
|
|
dict $14, Char14
|
|
cp $e4 ; handakuten
|
|
jr z, .place
|
|
cp $e5 ; dakuten
|
|
jr z, .place
|
|
|
|
jr .nope
|
|
ld b, a
|
|
call Diacritic
|
|
jp NextChar
|
|
.nope
|
|
|
|
cp $60
|
|
jr nc, .place
|
|
|
|
cp $40
|
|
jr nc, .handakuten
|
|
|
|
.dakuten
|
|
|
|
cp $20
|
|
jr nc, .daku1
|
|
add $80
|
|
jr .daku2
|
|
.daku1
|
|
add $90
|
|
.daku2
|
|
ld b, $e5 ; dakuten
|
|
call Diacritic
|
|
jr .place
|
|
|
|
.handakuten
|
|
cp "ぱ"
|
|
jr nc, .han1
|
|
add "ハ" - "パ"
|
|
jr .han2
|
|
.han1
|
|
add "は" - "ぱ"
|
|
.han2
|
|
ld b, $e4 ; handakuten
|
|
call Diacritic
|
|
|
|
.place
|
|
ld [hli], a
|
|
call PrintLetterDelay
|
|
jp NextChar
|
|
; 0x117b
|
|
|
|
|
|
Char15:: ; 117b
|
|
ld c, l
|
|
ld b, h
|
|
callba Function17f036
|
|
jp PlaceNextChar
|
|
; 1186
|
|
|
|
|
|
print_name: macro
|
|
push de
|
|
ld de, \1
|
|
jp Function126a
|
|
endm
|
|
|
|
PrintMomsName: print_name MomsName ; 1186
|
|
PrintPlayerName: print_name PlayerName ; 118d
|
|
PrintRivalName: print_name RivalName ; 1194
|
|
PrintRedsName: print_name RedsName ; 119b
|
|
PrintGreensName: print_name GreensName ; 11a2
|
|
|
|
Char5D: print_name Char5DText ; 11a9
|
|
Char5C: print_name Char5CText ; 11b0
|
|
Char5B: print_name Char5BText ; 11b7
|
|
Char5E: print_name Char5EText ; 11be
|
|
Char54: print_name Char54Text ; 11c5
|
|
Char23: print_name Char23Text ; 11cc
|
|
Char56: print_name Char56Text ; 11d3
|
|
Char4A: print_name Char4AText ; 11da
|
|
Char24: print_name Char24Text ; 11e1
|
|
Char35: print_name Char35Text ; 11e8
|
|
Char36: print_name Char36Text ; 11ef
|
|
Char37: print_name Char37Text ; 11f6
|
|
|
|
|
|
Char59:: ; 11fd
|
|
ld a, [hBattleTurn]
|
|
xor 1
|
|
jr Char59_5A
|
|
|
|
Char5A:: ; 1203
|
|
ld a, [hBattleTurn]
|
|
|
|
Char59_5A: ; 1205
|
|
push de
|
|
and a
|
|
jr nz, .enemy
|
|
|
|
ld de, BattleMonNick
|
|
jr Function126a
|
|
|
|
.enemy
|
|
ld de, Char5AText ; Enemy
|
|
call PlaceString
|
|
ld h, b
|
|
ld l, c
|
|
ld de, EnemyMonNick
|
|
jr Function126a
|
|
|
|
|
|
Char3F:: ; 121b
|
|
push de
|
|
|
|
ld a, [InLinkBattle]
|
|
and a
|
|
jr nz, .linkbattle
|
|
|
|
ld a, [TrainerClass]
|
|
cp RIVAL1
|
|
jr z, .rival
|
|
cp RIVAL2
|
|
jr z, .rival
|
|
|
|
ld de, OTName
|
|
call PlaceString
|
|
ld h, b
|
|
ld l, c
|
|
ld de, String12a2
|
|
call PlaceString
|
|
push bc
|
|
callab Battle_GetTrainerName
|
|
pop hl
|
|
ld de, StringBuffer1
|
|
jr Function126a
|
|
|
|
.rival
|
|
ld de, RivalName
|
|
jr Function126a
|
|
|
|
.linkbattle
|
|
ld de, OTName
|
|
jr Function126a
|
|
|
|
|
|
Char14:: ; 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
|
|
ld de, String12a6
|
|
jr Function126a
|
|
|
|
|
|
Function126a:: ; 126a
|
|
call PlaceString
|
|
ld h, b
|
|
ld l, c
|
|
pop de
|
|
jp NextChar
|
|
; 0x1273
|
|
|
|
Char5CText:: db "TM@" ; 1273
|
|
Char5DText:: db "TRAINER@" ; 1276
|
|
Char5BText:: db "PC@" ; 127e
|
|
Char5EText:: db "ROCKET@" ; 1281
|
|
Char54Text:: db "POKé@" ; 1288
|
|
Char23Text:: db "こうげき@" ; 128d
|
|
Char56Text:: db "……@" ; 1292
|
|
Char5AText:: db "Enemy @" ; 1295
|
|
Char4AText:: db $e1, $e2, "@" ; PK MN ; 129c
|
|
Char24Text:: db $70, $71, "@" ; PO KE ; 129f
|
|
String12a2:: db " @" ; 12a2
|
|
Char35Text::
|
|
Char36Text::
|
|
Char37Text:: db "@" ; 12a4
|
|
String12a5:: db "@" ; 12a5
|
|
String12a6:: db "@" ; 12a6
|
|
; 12a7
|
|
|
|
NextLine:: ; 12a7
|
|
pop hl
|
|
ld bc, SCREEN_WIDTH * 2
|
|
add hl, bc
|
|
push hl
|
|
jp NextChar
|
|
; 12b0
|
|
|
|
Char22:: ; 12b0
|
|
pop hl
|
|
ld bc, SCREEN_WIDTH
|
|
add hl, bc
|
|
push hl
|
|
jp NextChar
|
|
; 12b9
|
|
|
|
Char16:: ; 12b9
|
|
pop hl
|
|
push de
|
|
ld bc, -TileMap + $10000
|
|
add hl, bc
|
|
ld de, -SCREEN_WIDTH
|
|
ld c, 1
|
|
.asm_12c4
|
|
ld a, h
|
|
and a
|
|
jr nz, .asm_12cd
|
|
ld a, l
|
|
cp SCREEN_WIDTH
|
|
jr c, .asm_12d1
|
|
|
|
.asm_12cd
|
|
add hl, de
|
|
inc c
|
|
jr .asm_12c4
|
|
|
|
.asm_12d1
|
|
hlcoord 0, 0
|
|
ld de, SCREEN_WIDTH
|
|
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
|
|
|
|
|
|
Line:: ; 12ea
|
|
pop hl
|
|
hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY + 2
|
|
push hl
|
|
jp NextChar
|
|
; 0x12f2
|
|
|
|
Paragraph:: ; 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 KeepTextOpen
|
|
hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY
|
|
lb bc, TEXTBOX_INNERH - 1, TEXTBOX_INNERW
|
|
call ClearBox
|
|
call Function13cd
|
|
ld c, 20
|
|
call DelayFrames
|
|
hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY
|
|
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 KeepTextOpen
|
|
pop de
|
|
|
|
ld a, [InLinkBattle]
|
|
or a
|
|
call z, Function13cd
|
|
|
|
Function1337:: ; 1337
|
|
push de
|
|
call Function138c
|
|
call Function138c
|
|
hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY + 2
|
|
pop de
|
|
jp NextChar
|
|
; 1345
|
|
|
|
|
|
ContText:: ; 1345
|
|
push de
|
|
ld de, .cont
|
|
ld b, h
|
|
ld c, l
|
|
call PlaceString
|
|
ld h, b
|
|
ld l, c
|
|
pop de
|
|
jp NextChar
|
|
|
|
.cont db $4b, "@"
|
|
; 1356
|
|
|
|
|
|
Char5F:: ; 1356
|
|
; Legacy: ends a Pokédex entry (Red).
|
|
; Dex entries are now regular strings.
|
|
ld [hl], "."
|
|
pop hl
|
|
ret
|
|
; 135a
|
|
|
|
PromptText:: ; 135a
|
|
ld a, [InLinkBattle]
|
|
cp $3
|
|
jr z, .ok
|
|
cp $4
|
|
jr z, .ok
|
|
call Function13c7
|
|
.ok
|
|
|
|
call Function13b6
|
|
call KeepTextOpen
|
|
ld a, [InLinkBattle]
|
|
cp $3
|
|
jr z, DoneText
|
|
cp $4
|
|
jr z, DoneText
|
|
call Function13cd
|
|
|
|
DoneText:: ; 137c
|
|
pop hl
|
|
ld de, .stop
|
|
dec de
|
|
ret
|
|
.stop db "@"
|
|
; 1383
|
|
|
|
NullChar:: ; 1383
|
|
ld a, "?"
|
|
ld [hli], a
|
|
call PrintLetterDelay
|
|
jp NextChar
|
|
; 138c
|
|
|
|
Function138c:: ; 138c
|
|
hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY
|
|
decoord TEXTBOX_INNERX, TEXTBOX_INNERY - 1
|
|
ld a, TEXTBOX_INNERH - 1
|
|
.col
|
|
push af
|
|
ld c, TEXTBOX_INNERW
|
|
.row
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
dec c
|
|
jr nz, .row
|
|
rept 2
|
|
inc de
|
|
endr
|
|
rept 2
|
|
inc hl
|
|
endr
|
|
pop af
|
|
dec a
|
|
jr nz, .col
|
|
hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY + 2
|
|
ld a, " "
|
|
ld bc, TEXTBOX_INNERW
|
|
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
|
|
|
|
Diacritic:: ; 13c6
|
|
ret
|
|
; 13c7
|
|
|
|
Function13c7:: ; 13c7
|
|
ld a, "▼"
|
|
ld [TileMap + 18 + 17 * SCREEN_WIDTH], a
|
|
ret
|
|
; 13cd
|
|
|
|
Function13cd:: ; 13cd
|
|
ld a, [TileMap + 17 + 17 * SCREEN_WIDTH]
|
|
ld [TileMap + 18 + 17 * SCREEN_WIDTH], a
|
|
ret
|
|
; 13d4
|
|
|
|
FarString:: ; 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, .stop
|
|
ret
|
|
|
|
.stop db "@"
|
|
; 13e5
|
|
|
|
|
|
PlaceWholeStringInBoxAtOnce:: ; 13e5
|
|
ld a, [TextBoxFrame + 1]
|
|
push af
|
|
set 1, a
|
|
ld [TextBoxFrame + 1], a
|
|
|
|
call Function13f6
|
|
|
|
pop af
|
|
ld [TextBoxFrame + 1], a
|
|
ret
|
|
; 13f6
|
|
|
|
Function13f6:: ; 13f6
|
|
ld a, [hli]
|
|
cp "@"
|
|
ret z
|
|
call .TextCommand
|
|
jr Function13f6
|
|
|
|
.TextCommand:
|
|
push hl
|
|
push bc
|
|
ld c, a
|
|
ld b, 0
|
|
ld hl, TextCommands
|
|
rept 2
|
|
add hl, bc
|
|
endr
|
|
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
|
|
; text_from_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
|
|
; text_jump
|
|
; 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_BCD
|
|
; write bcd from address, typically ram
|
|
; [$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
|
|
; [$03][addr]
|
|
|
|
ld a, [hli]
|
|
ld [wd0e4 + 2], a
|
|
ld c, a
|
|
ld a, [hli]
|
|
ld [wd0e4 + 2 + 1], a
|
|
ld b, a
|
|
ret
|
|
; 148b
|
|
|
|
Text_04:: ; 148b
|
|
; TX_BOX
|
|
; draw a box
|
|
; little endian
|
|
; [$04][addr][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 TEXTBOX_INNERX, TEXTBOX_INNERY + 2
|
|
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 KeepTextOpen
|
|
pop bc
|
|
call Function13cd
|
|
pop hl
|
|
ret
|
|
; 14ba
|
|
|
|
Text_07:: ; 14ba
|
|
push hl
|
|
call Function13cd
|
|
call Function138c
|
|
call Function138c
|
|
pop hl
|
|
bccoord TEXTBOX_INNERX, TEXTBOX_INNERY + 2
|
|
ret
|
|
; 14c9
|
|
|
|
Text_08:: ; 14c9
|
|
; TX_ASM
|
|
|
|
bit 7, h
|
|
jr nz, .not_rom
|
|
jp [hl]
|
|
|
|
.not_rom
|
|
ld a, "@"
|
|
ld [hl], a
|
|
ret
|
|
; 14d2
|
|
|
|
Text_09:: ; 14d2
|
|
; TX_NUM
|
|
; [$09][addr][hi:bytes lo:digits]
|
|
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, .done
|
|
ld c, 30
|
|
call DelayFrames
|
|
.done
|
|
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
|
|
.loop
|
|
ld a, [hli]
|
|
cp -1
|
|
jr z, .done
|
|
cp b
|
|
jr z, .play
|
|
rept 2
|
|
inc hl
|
|
endr
|
|
jr .loop
|
|
|
|
.play
|
|
push de
|
|
ld e, [hl]
|
|
inc hl
|
|
ld d, [hl]
|
|
call PlaySFX
|
|
call WaitSFX
|
|
pop de
|
|
|
|
.done
|
|
pop hl
|
|
pop bc
|
|
ret
|
|
; 1522
|
|
|
|
Function1522:: ; 1522
|
|
push de
|
|
ld e, [hl]
|
|
inc hl
|
|
ld d, [hl]
|
|
call PlayCry
|
|
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 -1
|
|
; 1543
|
|
|
|
Text_0C:: ; 1543
|
|
; [$0C][num]
|
|
ld a, [hli]
|
|
ld d, a
|
|
push hl
|
|
ld h, b
|
|
ld l, c
|
|
.loop
|
|
push de
|
|
ld a, "…"
|
|
ld [hli], a
|
|
call GetJoypad
|
|
ld a, [hJoyDown]
|
|
and A_BUTTON | B_BUTTON
|
|
jr nz, .next
|
|
ld c, 10
|
|
call DelayFrames
|
|
.next
|
|
pop de
|
|
dec d
|
|
jr nz, .loop
|
|
ld b, h
|
|
ld c, l
|
|
pop hl
|
|
ret
|
|
; 1562
|
|
|
|
Text_0D:: ; 1562
|
|
; wait for key down
|
|
; display arrow
|
|
push hl
|
|
push bc
|
|
call KeepTextOpen
|
|
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
|
|
rept 2
|
|
add hl, de
|
|
endr
|
|
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
|
|
rept 2
|
|
add hl, bc
|
|
endr
|
|
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
|
|
|
|
.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
|