I've been adding a minimap to my Isometric game, I first did this by drawing each cell as a simple square using al_draw_filled_rectangle. I then switched to using two al_draw_filled_rectangle calls to draw a diamond shape instead..
Did you mean al_draw_triangle where I did put bold text? Seems so looking at the code but ain't sure (no native English speaker here).
Is the diamond shape a rotated square? or is it a more generalized quadrilateral?
Either way, there SHOULD be single-call drawing functions (in the 5.1 branch?) of Allegro that could do the trick to get back to the 60-70FPS (just like al_draw_rotated_rectangle maybe?)
Then again, we should find the cause of such a difference...skimming through your code I see nothing obvious but, you know, I am no expert there.
Are you in any position to properly profile the code?
Also, a more efficient solution could be caching the vertexes for each cell in a buffer and the use a single al_draw_prim call?
Sorry, just throwing around ideas for the moment....