summaryrefslogtreecommitdiff
path: root/engine/pokemon/correct_nick_errors.asm
diff options
context:
space:
mode:
authorRangi <remy.oukaour+rangi42@gmail.com>2018-04-05 00:04:53 -0400
committerRangi <remy.oukaour+rangi42@gmail.com>2018-04-05 00:04:53 -0400
commit1e1bbbbf8c82364dcfb8e64ad22c4ce3e9988c75 (patch)
treec702e3917e61be7e58ef02b98c07a6dd0e6732fb /engine/pokemon/correct_nick_errors.asm
parent81306889e33c599f8015bc4e653929bb7de00967 (diff)
check_nick_errors → correct_nick_errors; matches correct_party_errors
Diffstat (limited to 'engine/pokemon/correct_nick_errors.asm')
-rw-r--r--engine/pokemon/correct_nick_errors.asm74
1 files changed, 74 insertions, 0 deletions
diff --git a/engine/pokemon/correct_nick_errors.asm b/engine/pokemon/correct_nick_errors.asm
new file mode 100644
index 000000000..5d44846bf
--- /dev/null
+++ b/engine/pokemon/correct_nick_errors.asm
@@ -0,0 +1,74 @@
+CorrectNickErrors:: ; 669f
+; 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 ; 66cf
+; 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