There's another way to achieve isometric graphics, but it's relatively low quality compared to making graphics directly isometric, and although movement is *much* easier to code, you still have to do some arcane code.
It lies in actually making your graphics isometric, only with a vertical stretch and a 45 degree rotation. This would also make graphics easier to tile, and obstructions would work properly. When translating it back into isometric graphics during runtime, you would rotate the graphics back 45 degrees, and scale the resulting image in half vertically.
Here's an example of code that does this:
int screencopy = new Image(ImageWidth(screen)<<1, ImageHeight(screen)<<1); //Free this sometime later in the program.
void IsoScreenConvert
{
RotScale(ImageWidth(screencopy)>>1, ImageHeight(screencopy)>>1 , 45, 500, screen, screencopy); //Doubles the screen stuffs
ScaleBlit(ImageWidth(screencopy)-ImageWidth(screen)>>1, ImageHeight(screencopy)>>1-ImageHeight(screen)>>1, ImageWidth(screencopy), ImageHeight(screencopy)>>1, screencopy, screen); //Not sure if this is correct. =/
ShowPage();
}
/*blablabla.. there's code, and...*/
HookRender('IsoScreenConvert'); //Make sure that in the renderstring, 'R' is on top.