I've got myself an isometric engine partially written. Here's the blitting routine.

Code:
Private Sub BitBltMap()
    Dim TempX As Integer
    Dim TempY As Integer
    On Error Resume Next
    TacPic.Cls
    For Y = 1 To 22
        For X = 0 To 16
            TempX = ((XOffSet + Y) + (YOffSet + (X - (MapYSize \ 2))))
            TempY = ((XOffSet + Y) - (YOffSet + (X - (MapYSize \ 2))))
            If Not TempX < 1 And Not TempY < 1 And Not TempX > MapXSize And Not TempY > MapYSize Then
                BitBlt TacPic.hDC, (X * 40) - 20, (Y * 20) - 20, 40, 19, TileSource.hDC, (Map(TempX, TempY, 1) - 1) * 40, 19, vbSrcAnd
                BitBlt TacPic.hDC, (X * 40) - 20, (Y * 20) - 20, 40, 19, TileSource.hDC, (Map(TempX, TempY, 1) - 1) * 40, 0, vbSrcPaint
            End If
        Next X
        For X = 1 To 16
            TempX = ((XOffSet + Y) + (YOffSet + (X - (MapYSize \ 2))))
            TempY = ((XOffSet + Y) - (YOffSet + (X - (MapYSize \ 2))))
            If Not TempX - 1 < 1 And Not TempY < 1 And Not TempX - 1 > MapXSize And Not TempY > MapYSize Then
                BitBlt TacPic.hDC, (X * 40) - 40, (Y * 20) - 30, 40, 19, TileSource.hDC, (Map(TempX - 1, TempY, 1) - 1) * 40, 19, vbSrcAnd
                BitBlt TacPic.hDC, (X * 40) - 40, (Y * 20) - 30, 40, 19, TileSource.hDC, (Map(TempX - 1, TempY, 1) - 1) * 40, 0, vbSrcPaint
            End If
        Next X
    Next Y
End Sub
How do I figure out the square location of the mouse ? (FYI, the 1 in the 3rd array value is a placeholder for the z-axis)

Btw I'll be converting over to Direct Draw soon enough, don't worry.

-Git