;;rotletencrypt ;;Encrypts a string in rot-x (uses $41 to $5B) ;;Inputs: ;; HL: string pointer ;; A: x ;;Notes: ;; Changes string in place. rotletencrypt: push hl push bc ld c, 0 ld c, a rotletencryptLoop: ld a, (hl) cp 0 jr z, rotletencryptEnd add a, c cp 0 jr nz, rotletencryptLd inc a rotletencryptLd: ld (hl), a inc hl cp a, $5c jr c, rotletencryptLoop dec hl sub a, 'Z' + 1 - 'A' ld (hl), a inc hl jr rotletencryptLoop rotletencryptEnd: ld (hl), $00 pop bc pop hl ret ;;rotletdecrypt ;;Encrypts a string in rot-x (uses $41 to $5B) ;;Inputs: ;; HL: string pointer ;; A: x ;;Notes: ;; Changes string in place. rotletdecrypt: push hl push bc ld c, 0 ld c, a rotletdecryptLoop: ld a, (hl) cp 0 jr z, rotletdecryptEnd sub a, c rotletdecryptLd: ld (hl), a inc hl cp a, $5c jr c, rotletdecryptLoop dec hl add a, 'Z' + 1 - 'A' ld (hl), a inc hl jr rotletdecryptLoop rotletdecryptEnd: ld (hl), $00 pop bc pop hl ret ;;rotasciiencrypt ;;Encrypts a string in rot-x (uses $00 to $EF) ;;Inputs: ;; HL: string pointer ;; A: x ;;Notes: ;; Changes string in place. rotasciiencrypt: push hl push bc ld c, 0 ld c, a rotasciiencryptLoop: ld a, (hl) cp 0 jr z, rotasciiencryptEnd add a, c cp 0 jr nz, rotasciiencryptLd inc a rotasciiencryptLd: ld (hl), a inc hl cp a, $EF jr c, rotasciiencryptLoop dec hl sub a, $0F ld (hl), a inc hl jr rotasciiencryptLoop rotasciiencryptEnd: ld (hl), $00 pop bc pop hl ret ;;rotasciidecrypt ;;Encrypts a string in rot-x (uses $00 to $EF) ;;Inputs: ;; HL: string pointer ;; A: x ;;Notes: ;; Changes string in place. rotasciidecrypt: push hl push bc ld c, 0 ld c, a rotasciidecryptLoop: ld a, (hl) cp 0 jr z, rotasciidecryptEnd sub a, c cp 0 jr nz, rotasciidecryptLd dec a rotasciidecryptLd: ld (hl), a inc hl cp a, $EF jr c, rotasciidecryptLoop dec hl add a, $0F ld (hl), a inc hl jr rotasciidecryptLoop rotasciidecryptEnd: ld (hl), $00 pop bc pop hl ret