You both do the same misstage. You want your sprite 96*96, the feets on the sprite should be 32*96. The bottom layer of the char.
So for the first 32*96 you should use: bltPlayer sub
For the above body and the head, you should use: bltPlayerTop
No bltPlayerMid is needed, since both the upper parts works the same way, they should both go above a enemy, if you stand below one. And should both get under a fringe tile etc..
So you need 2 subs, not 3. And the part to change is these:
Code:
With rec
.top = GetPlayerSprite(Index) * PIC_Y + PIC_Y
.Bottom = .top + PIC_Y + PIC_Y
.Left = (GetPlayerDir(Index) * 3 + anim) * PIC_X
.Right = .Left + PIC_X
End With
That you need to adjust so it blits 32*96 and 64*96. And also remember to change the:
Code:
Call DD_BackBuffer.BltFast(x, y, DD_SpriteSurf, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
So make sure that line blits it above the feet layer (the first 32*96). Make y to y-64. I think that should work fine.