#1: Add one variable for storing touch period 1 round before (e.g. PLTM) and set zero for it as initial value.
#2: Replace "IF !LTM THEN" with "IF !LTM && PLTM THEN".
#3: Write "PLTM=LTM" above WEND.
Do you point out 3 or 4 links of the longest line on your attached screenshot?
Unfortunately we cannot avoid them, however we can make them inconspicuous.
Look for "anti-aliasing" in the internet.
Range of LOCATE arguments are 0-49 (for X) and 0-29 (for Y) on top screen. LOCATE 0,0 is top left corner of top screen, and LOCATE 49,29 is bottom right corner. And I guess Z coordinate of LOCATE you've set is too low.
Try replacing line 141 and 142 of your attached program with the following.
LOCATE 13,15,-8
PRINT"YOU COME ACROSS A RIVER"
Before you combine sprite attribute with SPANIM, you should define sprite characters as follows.
SPDEF 0,0,144,16,16,8,16
SPDEF 1,16,144,16,16,8,16
SPDEF 2,0,144,16,16,8,16,1 OR #SPREVH
SPDEF 3,16,144,16,16,8,16,1 OR #SPREVH
If you animate your sprite without flip, do #1 of following, and if with flip, do #2.
#1: SPANIM 0,"I",25,0,25,1,0
#2: SPANIM 0,"I",25,2,25,3,0
Try inserting the following codes between line 42 and 43 of your attached program.
SPCHR 0 OUT U,V,W,H,A
SPCHR 0,U,V,W,H,1 OR #SPREVH
This is the example for horizontal flip. If you want to flip vertically, write #SPREVV instead of #SPREVH.