mirror of https://github.com/pret/pokecrystal.git
75 lines
1.2 KiB
NASM
75 lines
1.2 KiB
NASM
CorrectNickErrors::
|
|
; error-check monster nick before use
|
|
; must be a peace offering to gamesharkers
|
|
|
|
; input: de = nick location
|
|
|
|
push bc
|
|
push de
|
|
ld b, MON_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
|
|
; table defining which characters are actually text commands
|
|
; format:
|
|
; ≥ <
|
|
db TX_START, TX_BOX + 1
|
|
db "<PLAY_G>", "<JP_18>" + 1
|
|
db "<NI>", "<NO>" + 1
|
|
db "<ROUTE>", "<GREEN>" + 1
|
|
db "<ENEMY>", "<ENEMY>" + 1
|
|
db "<MOM>", "<TM>" + 1
|
|
db "<ROCKET>", "┘" + 1
|
|
db -1 ; end
|