Horizontal or Vertical Mirroring in Retina 0.8.2
If the amount of mirroring is a constant, then it's easy enough: duplicate the string, then reverse the appropriate half. For instance, suppose the buffer is known to contain 10 characters, and you want to mirror them about the last character:
saippuakiv
The following program would then achieve that:
.$ $&$` 10>O$^`.
Try it online! Explanation: The first stage copies the first 9 characters to the end of the line, then the second stage reverses the characters after the first 10. Note that the second stage consists of two lines but the second (empty) line may be omitted if it's the last stage.
If you want to mirror to the left, then you can prepend the suffix and sort the first 9 characters instead.
^. $'$& 9O$^`.
Try it online! (Mirrors vikauppias to the left.)
Similarly, you can mirror a fixed number of lines. Suppose for instance you wanted a mirror copy of all three lines:
| | | | | =~=~=~=~= #########
The following program would then achieve that:
$ ¶$` 3>O$^`
Try it online! Explanation: The first stage duplicates the entire buffer, while the second stage reverses the lines after the first three.
If you want to mirror up, then remove the >, so the first 3 lines are reversed instead.
If the amount of mirroring is a variable, then it might still be possible, but you would need to use .NET balancing groups to ensure that only the characters or lines that need to be reversed are processed by the O command.
Horizontal Mirroring in Retina 1
Horizontal mirroring is straightforward in Retina 1: simply use the $^ function to reverse a substitution. For instance, to horizontally mirror saippuakiv as above:
.$ $^$=
Try it online! Explanation: The reversed input is appended to its prefix, thus mirroring the input. (The code would be even simpler if the last character could be duplicated as well.)
Vertical Mirroring of Horizontally Mirrored Text in Retina 1
If you are mirroring horizontally mirrored text, then a very similar approach will allow you to vertically mirror the whole text.
$ ¶$^$`
Try it online! Explanation: The whole buffer is duplicated, but the second copy is reversed. This only works because the horizontal mirroring turns the string reversal into a line reversal.
Both of these examples are readily adapted to mirror to the left or up.
If the text is not already horizontally mirrored then you will need to adapt the Retina 0.8.2 examples (note that the limits syntax changes so that 3> is now 3, and 3 is now ,2). You can use the V command instead to avoid the second line of the stage: 3,V0^ instead of 3,O$^ (the 0 is needed to avoid reversing the characters of the lines).