pokegold/engine/pokemon/correct_nick_errors.asm
Rangi d2c9e2d74f
Some checks are pending
CI / build (push) Waiting to run
Use features of RGBDS 1.0.0 (#138)
2025-11-12 15:44:00 -05:00

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 '<NULL>', 'ガ'
db '<JP_14>', '<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