Tela isométrica para mapear

Estou tentando descobrir como obter o bloco "ativo" correto sob o mouse quando tiver blocos de "rampa" e +1 de altura (veja a figura abaixo).


Quando meu mundo é plano, tudo funciona sem problemas. Depois de adicionar um bloco com uma altura de dizer +1, junto com uma rampa voltada para +0, minha tela -> a rotina do mapa ainda parece como se tudo estivesse "plano".

Na figura acima, a "rampa" verde é o ladrilho real que eu quero renderizar e calcular o mapa do mouse -, no entanto, o ladrilho azul que você vê "abaixo" é a área que é calculada. Portanto, se você mover o mouse para qualquer uma das áreas verde-escuras, ele pensará que você está em outro bloco.

Aqui está o meu mapa renderizado (muito simples)

canvas.width = canvas.width; // cheap clear in firefox 3.6, does not work in other browsers
for(i=0;i<map_y;i++){
    for(j=0;j<map_x;j++){
        var xpos = (i-j)*tile_h + current_x;
        var ypos = (i+j)*tile_h/2+ current_y;

      context.beginPath();
      context.moveTo(xpos, ypos+(tile_h/2));
      context.lineTo(xpos+(tile_w/2), ypos);
      context.lineTo(xpos+(tile_w), ypos+(tile_h/2));
      context.lineTo(xpos+(tile_w/2), ypos+(tile_h));
      context.fill();

    }
}    

E aqui está a rotina do meu mouse -> map:

ymouse=( (2*(ev.pageY-canvas.offsetTop-current_y)-ev.pageX+canvas.offsetLeft+current_x)/2 );
xmouse=( ev.pageX+ymouse-current_x-(tile_w/2)-canvas.offsetLeft );
ymouse=Math.round(ymouse/tile_h);
xmouse=Math.round(xmouse/(tile_w/2));

current_tile=[xmouse,ymouse];

Tenho a sensação de que terei que recomeçar e implementar um sistema de mapas baseado no mundo, em vez de uma simples tela -> rotina de mapas.

Obrigado.