Ok, a couple of things. I just glanced trough really quickly, so I will only point out the big things (that I saw). I noticed that several times, you were displaying sprites with a very long section of Pt-on(**,**,Str5), with each one being 8 pixels to the side. It may be better to put those in a For loop. I am not sure about this, but I think you also had a nested if statement that checked the same value as the first
Also, the jumping engine seems to be part of the collision checking problem. You can get stuck in an infinite jump loop. If you want, I could look at the source later and try to help with that. I hope I helped