mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-09-09 09:51:34 -07:00
7d4486e6a3
engine/routines/ stores isolated out-of-context routines as individual files. It might be preferable later to append them to their related engine/ files in unique little SECTIONs, relying on the linkerscript to place them appropriately; or some other organization method. In the meantime, they're now easily findable apart from main.asm's other content.
75 lines
1.2 KiB
NASM
75 lines
1.2 KiB
NASM
CheckNickErrors:: ; 669f
|
|
; error-check monster nick before use
|
|
; must be a peace offering to gamesharkers
|
|
|
|
; input: de = nick location
|
|
|
|
push bc
|
|
push de
|
|
ld b, PKMN_NAME_LENGTH
|
|
|
|
.checkchar
|
|
; end of nick?
|
|
ld a, [de]
|
|
cp "@" ; terminator
|
|
jr z, .end
|
|
|
|
; check if this char is a text command
|
|
ld hl, .textcommands
|
|
dec hl
|
|
.loop
|
|
; next entry
|
|
inc hl
|
|
; reached end of commands table?
|
|
ld a, [hl]
|
|
cp -1
|
|
jr z, .done
|
|
|
|
; is the current char between this value (inclusive)...
|
|
ld a, [de]
|
|
cp [hl]
|
|
inc hl
|
|
jr c, .loop
|
|
; ...and this one?
|
|
cp [hl]
|
|
jr nc, .loop
|
|
|
|
; replace it with a "?"
|
|
ld a, "?"
|
|
ld [de], a
|
|
jr .loop
|
|
|
|
.done
|
|
; next char
|
|
inc de
|
|
; reached end of nick without finding a terminator?
|
|
dec b
|
|
jr nz, .checkchar
|
|
|
|
; change nick to "?@"
|
|
pop de
|
|
push de
|
|
ld a, "?"
|
|
ld [de], a
|
|
inc de
|
|
ld a, "@"
|
|
ld [de], a
|
|
.end
|
|
; if the nick has any errors at this point it's out of our hands
|
|
pop de
|
|
pop bc
|
|
ret
|
|
|
|
.textcommands ; 66cf
|
|
; table defining which characters are actually text commands
|
|
; format:
|
|
; ≥ <
|
|
db "<START>", TX_BOX + 1
|
|
db "<PLAY_G>", $18 + 1
|
|
db $1d, "%" + 1
|
|
db $35, "<GREEN>" + 1
|
|
db "<ENEMY>", "<ENEMY>" + 1
|
|
db "<MOM>", "<TM>" + 1
|
|
db "<ROCKET>", "┘" + 1
|
|
db -1 ; end
|