Ah, you're talking about diagonal walls.
That's easy: you mark which corner is clear (only four possibilities: top left, top right, bottom left, bottom right). Based on that, you know the slope of the diagonal itself (it will be either +1 or -1) and the side of the diagonal (above or below) that should be passable. Then you write a total of five collision check cases:
- No corners are clear, i.e. the block is solid - use your existing code
- Top left corner is clear
- Top right corner is clear
- Bottom left corner is clear
- Bottom right corner is clear
For the solid block case, do as you already do. For diagonals, you just do an intersection between the line that defines the diagonal, and the player's bounding box. If they hit, move the player back "out" of the wall and slide them along it. If they don't overlap, allow the player to move freely.
That's where my problem lies. The tiles have no coordinates. They are simply numbers in a 2d array of single integers.