Aight I edited the software to read the sprites correctly, but the movement is still reding s if it were still in RMXP format(four animations insted of three) Here is my BltPlayer(which is almost identical to my BltNPC): ``` Public Sub BltPlayer(ByVal Index As Long) Dim Anim As Byte, i As Long, X As Long, y As Long Dim Sprite As Long, spriteleft As Long Dim rec As DxVBLib.RECT Dim attackspeed As Long ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler Sprite = GetPlayerSprite(Index) If Sprite < 1 Or Sprite > NumCharacters Then Exit Sub CharacterTimer(Sprite) = GetTickCount + SurfaceTimerMax If DDS_Character(Sprite) Is Nothing Then Call InitDDSurf("characters\" & Sprite, DDSD_Character(Sprite), DDS_Character(Sprite)) End If ' speed from weapon If GetPlayerEquipment(Index, Weapon) > 0 Then attackspeed = Item(GetPlayerEquipment(Index, Weapon)).Speed Else attackspeed = 1000 End If ' Reset frame If Player(Index).Step = 3 Then Anim = 0 ElseIf Player(Index).Step = 1 Then Anim = 2 End If ' Check for attacking animation If Player(Index).AttackTimer + (attackspeed / 2) > GetTickCount Then If Player(Index).Attacking = 1 Then Anim = 3 End If Else ' If not attacking, walk normally Select Case GetPlayerDir(Index) Case DIR_UP If (Player(Index).YOffset > 8) Then Anim = Player(Index).Step Case DIR_DOWN If (Player(Index).YOffset < -8) Then Anim = Player(Index).Step Case DIR_LEFT If (Player(Index).XOffset > 8) Then Anim = Player(Index).Step Case DIR_RIGHT If (Player(Index).XOffset < -8) Then Anim = Player(Index).Step End Select End If ' Check to see if we want to stop making him attack With Player(Index) If .AttackTimer + attackspeed < GetTickCount Then .Attacking = 0 .AttackTimer = 0 End If End With ' Set the left Select Case GetPlayerDir(Index) Case DIR_UP spriteleft = 0 Case DIR_RIGHT spriteleft = 3 Case DIR_DOWN spriteleft = 1 Case DIR_LEFT spriteleft = 2 End Select With rec .top = 0 .Bottom = DDSD_Character(Sprite).lHeight .left = (spriteleft * 3 + Anim) * (DDSD_Character(Sprite).lWidth / 12) .Right = .left + (DDSD_Character(Sprite).lWidth / 12) End With ' Calculate the X X = GetPlayerX(Index) * PIC_X + Player(Index).XOffset - ((DDSD_Character(Sprite).lWidth / 12 - 32) / 2) ' Is the player's height more than 32..? If (DDSD_Character(Sprite).lHeight) > 32 Then ' Create a 32 pixel offset for larger sprites y = GetPlayerY(Index) * PIC_Y + Player(Index).YOffset - ((DDSD_Character(Sprite).lHeight) - 32) Else ' Proceed as normal y = GetPlayerY(Index) * PIC_Y + Player(Index).YOffset End If ' render the actual sprite Call BltSprite(Sprite, X, y, rec) ' check for paperdolling For i = 1 To Equipment.Equipment_Count - 1 If GetPlayerEquipment(Index, i) > 0 Then If Item(GetPlayerEquipment(Index, i)).Paperdoll > 0 Then Call BltPaperdoll(X, y, Item(GetPlayerEquipment(Index, i)).Paperdoll, Anim, spriteleft) End If End If Next ' Error handler Exit Sub errorhandler: HandleError "BltPlayer", "modDirectDraw7", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Public Sub BltNpc(ByVal MapNpcNum As Long) Dim Anim As Byte, i As Long, X As Long, y As Long, Sprite As Long, spriteleft As Long Dim rec As DxVBLib.RECT Dim attackspeed As Long ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If MapNpc(MapNpcNum).num = 0 Then Exit Sub ' no npc set Sprite = Npc(MapNpc(MapNpcNum).num).Sprite If Sprite < 1 Or Sprite > NumCharacters Then Exit Sub CharacterTimer(Sprite) = GetTickCount + SurfaceTimerMax If DDS_Character(Sprite) Is Nothing Then Call InitDDSurf("characters\" & Sprite, DDSD_Character(Sprite), DDS_Character(Sprite)) End If attackspeed = 1000 ' Reset frame Anim = 0 ' Check for attacking animation If MapNpc(MapNpcNum).AttackTimer + (attackspeed / 2) > GetTickCount Then If MapNpc(MapNpcNum).Attacking = 1 Then Anim = 3 End If Else ' If not attacking, walk normally Select Case MapNpc(MapNpcNum).Dir Case DIR_UP If (MapNpc(MapNpcNum).YOffset > 8) Then Anim = MapNpc(MapNpcNum).Step Case DIR_DOWN If (MapNpc(MapNpcNum).YOffset < -8) Then Anim = MapNpc(MapNpcNum).Step Case DIR_LEFT If (MapNpc(MapNpcNum).XOffset > 8) Then Anim = MapNpc(MapNpcNum).Step Case DIR_RIGHT If (MapNpc(MapNpcNum).XOffset < -8) Then Anim = MapNpc(MapNpcNum).Step End Select End If ' Check to see if we want to stop making him attack With MapNpc(MapNpcNum) If .AttackTimer + attackspeed < GetTickCount Then .Attacking = 0 .AttackTimer = 0 End If End With ' Set the left Select Case MapNpc(MapNpcNum).Dir Case DIR_UP spriteleft = 0 Case DIR_RIGHT spriteleft = 3 Case DIR_DOWN spriteleft = 1 Case DIR_LEFT spriteleft = 2 End Select With rec .top = 0 .Bottom = DDSD_Character(Sprite).lHeight .left = (spriteleft * 3 + Anim) * (DDSD_Character(Sprite).lWidth / 12) .Right = .left + (DDSD_Character(Sprite).lWidth / 12) End With ' Calculate the X X = MapNpc(MapNpcNum).X * PIC_X + MapNpc(MapNpcNum).XOffset - ((DDSD_Character(Sprite).lWidth / 12 - 32) / 2) ' Is the player's height more than 32..? If (DDSD_Character(Sprite).lHeight) > 32 Then ' Create a 32 pixel offset for larger sprites y = MapNpc(MapNpcNum).y * PIC_Y + MapNpc(MapNpcNum).YOffset - ((DDSD_Character(Sprite).lHeight) - 32) Else ' Proceed as normal y = MapNpc(MapNpcNum).y * PIC_Y + MapNpc(MapNpcNum).YOffset End If Call BltSprite(Sprite, X, y, rec) ' Error handler Exit Sub errorhandler: HandleError "BltNpc", "modDirectDraw7", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub ```