mirror of https://github.com/pret/pokecrystal.git
270 lines
3.6 KiB
NASM
270 lines
3.6 KiB
NASM
NamesPointers::
|
|
; entries correspond to GetName constants (see constants/text_constants.asm)
|
|
dba PokemonNames ; MON_NAME (not used; jumps to GetPokemonName)
|
|
dba MoveNames ; MOVE_NAME
|
|
dba NULL ; DUMMY_NAME
|
|
dba ItemNames ; ITEM_NAME
|
|
dbw 0, wPartyMonOT ; PARTY_OT_NAME
|
|
dbw 0, wOTPartyMonOT ; ENEMY_OT_NAME
|
|
dba TrainerClassNames ; TRAINER_NAME
|
|
dbw 4, MoveDescriptions ; MOVE_DESC_NAME_BROKEN (wrong bank)
|
|
|
|
GetName::
|
|
; Return name wCurSpecies from name list wNamedObjectTypeBuffer in wStringBuffer1.
|
|
|
|
ldh a, [hROMBank]
|
|
push af
|
|
push hl
|
|
push bc
|
|
push de
|
|
|
|
ld a, [wNamedObjectTypeBuffer]
|
|
cp MON_NAME
|
|
jr nz, .NotPokeName
|
|
|
|
ld a, [wCurSpecies]
|
|
ld [wNamedObjectIndexBuffer], a
|
|
call GetPokemonName
|
|
ld hl, MON_NAME_LENGTH
|
|
add hl, de
|
|
ld e, l
|
|
ld d, h
|
|
jr .done
|
|
|
|
.NotPokeName:
|
|
ld a, [wNamedObjectTypeBuffer]
|
|
dec a
|
|
ld e, a
|
|
ld d, 0
|
|
ld hl, NamesPointers
|
|
add hl, de
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hli]
|
|
rst Bankswitch
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
|
|
ld a, [wCurSpecies]
|
|
dec a
|
|
call GetNthString
|
|
|
|
ld de, wStringBuffer1
|
|
ld bc, ITEM_NAME_LENGTH
|
|
call CopyBytes
|
|
|
|
.done
|
|
ld a, e
|
|
ld [wUnusedNamesPointer], a
|
|
ld a, d
|
|
ld [wUnusedNamesPointer + 1], a
|
|
|
|
pop de
|
|
pop bc
|
|
pop hl
|
|
pop af
|
|
rst Bankswitch
|
|
ret
|
|
|
|
GetNthString::
|
|
; Return the address of the
|
|
; ath string starting from hl.
|
|
|
|
and a
|
|
ret z
|
|
|
|
push bc
|
|
ld b, a
|
|
ld c, "@"
|
|
.readChar
|
|
ld a, [hli]
|
|
cp c
|
|
jr nz, .readChar
|
|
dec b
|
|
jr nz, .readChar
|
|
pop bc
|
|
ret
|
|
|
|
GetBasePokemonName::
|
|
; Discards gender (Nidoran).
|
|
|
|
push hl
|
|
call GetPokemonName
|
|
|
|
ld hl, wStringBuffer1
|
|
.loop
|
|
ld a, [hl]
|
|
cp "@"
|
|
jr z, .quit
|
|
cp "♂"
|
|
jr z, .end
|
|
cp "♀"
|
|
jr z, .end
|
|
inc hl
|
|
jr .loop
|
|
.end
|
|
ld [hl], "@"
|
|
.quit
|
|
pop hl
|
|
ret
|
|
|
|
GetPokemonName::
|
|
; Get Pokemon name for wNamedObjectIndexBuffer.
|
|
|
|
ldh a, [hROMBank]
|
|
push af
|
|
push hl
|
|
ld a, BANK(PokemonNames)
|
|
rst Bankswitch
|
|
|
|
; Each name is ten characters
|
|
ld a, [wNamedObjectIndexBuffer]
|
|
dec a
|
|
ld d, 0
|
|
ld e, a
|
|
ld h, 0
|
|
ld l, a
|
|
add hl, hl
|
|
add hl, hl
|
|
add hl, de
|
|
add hl, hl
|
|
ld de, PokemonNames
|
|
add hl, de
|
|
|
|
; Terminator
|
|
ld de, wStringBuffer1
|
|
push de
|
|
ld bc, MON_NAME_LENGTH - 1
|
|
call CopyBytes
|
|
ld hl, wStringBuffer1 + MON_NAME_LENGTH - 1
|
|
ld [hl], "@"
|
|
pop de
|
|
|
|
pop hl
|
|
pop af
|
|
rst Bankswitch
|
|
ret
|
|
|
|
GetItemName::
|
|
; Get item name for wNamedObjectIndexBuffer.
|
|
|
|
push hl
|
|
push bc
|
|
ld a, [wNamedObjectIndexBuffer]
|
|
|
|
cp TM01
|
|
jr nc, .TM
|
|
|
|
ld [wCurSpecies], a
|
|
ld a, ITEM_NAME
|
|
ld [wNamedObjectTypeBuffer], a
|
|
call GetName
|
|
jr .Copied
|
|
.TM:
|
|
call GetTMHMName
|
|
.Copied:
|
|
ld de, wStringBuffer1
|
|
pop bc
|
|
pop hl
|
|
ret
|
|
|
|
GetTMHMName::
|
|
; Get TM/HM name for item wNamedObjectIndexBuffer.
|
|
|
|
push hl
|
|
push de
|
|
push bc
|
|
ld a, [wNamedObjectIndexBuffer]
|
|
push af
|
|
|
|
; TM/HM prefix
|
|
cp HM01
|
|
push af
|
|
jr c, .TM
|
|
|
|
ld hl, .HMText
|
|
ld bc, .HMTextEnd - .HMText
|
|
jr .copy
|
|
|
|
.TM:
|
|
ld hl, .TMText
|
|
ld bc, .TMTextEnd - .TMText
|
|
|
|
.copy
|
|
ld de, wStringBuffer1
|
|
call CopyBytes
|
|
|
|
; TM/HM number
|
|
push de
|
|
ld a, [wNamedObjectIndexBuffer]
|
|
ld c, a
|
|
callfar GetTMHMNumber
|
|
pop de
|
|
|
|
; HM numbers start from 51, not 1
|
|
pop af
|
|
ld a, c
|
|
jr c, .not_hm
|
|
sub NUM_TMS
|
|
.not_hm
|
|
|
|
; Divide and mod by 10 to get the top and bottom digits respectively
|
|
ld b, "0"
|
|
.mod10
|
|
sub 10
|
|
jr c, .done_mod
|
|
inc b
|
|
jr .mod10
|
|
|
|
.done_mod
|
|
add 10
|
|
push af
|
|
ld a, b
|
|
ld [de], a
|
|
inc de
|
|
pop af
|
|
|
|
ld b, "0"
|
|
add b
|
|
ld [de], a
|
|
|
|
; End the string
|
|
inc de
|
|
ld a, "@"
|
|
ld [de], a
|
|
|
|
pop af
|
|
ld [wNamedObjectIndexBuffer], a
|
|
pop bc
|
|
pop de
|
|
pop hl
|
|
ret
|
|
|
|
.TMText:
|
|
db "TM"
|
|
.TMTextEnd:
|
|
db "@"
|
|
|
|
.HMText:
|
|
db "HM"
|
|
.HMTextEnd:
|
|
db "@"
|
|
|
|
INCLUDE "home/hm_moves.asm"
|
|
|
|
GetMoveName::
|
|
push hl
|
|
|
|
ld a, MOVE_NAME
|
|
ld [wNamedObjectTypeBuffer], a
|
|
|
|
ld a, [wNamedObjectIndexBuffer] ; move id
|
|
ld [wCurSpecies], a
|
|
|
|
call GetName
|
|
ld de, wStringBuffer1
|
|
|
|
pop hl
|
|
ret
|