For the record, here was the bug:
case dmOVERW:
case dmBSOVERW:
if(DMaps[get_currdmap()].minimap_1_tile)
{
draw_block(dest,x,y,DMaps[get_currdmap()].minimap_1_tile,DMaps[get_currdmap()].minimap_1_cset,5,3);
}
Instead of
case dmOVERW:
case dmBSOVERW:
{
int maptile=(!get_bit(quest_rules, qr_BROKEN_OVERWORLD_MINIMAP) && has_item(itype_map, get_dlevel()))?DMaps[get_currdmap()].minimap_2_tile:DMaps[get_currdmap()].minimap_1_tile;
int mapcset=(!get_bit(quest_rules, qr_BROKEN_OVERWORLD_MINIMAP) && has_item(itype_map, get_dlevel()))?DMaps[get_currdmap()].minimap_2_cset:DMaps[get_currdmap()].minimap_1_cset;
if(maptile)
{
draw_block(dest,x,y,maptile,mapcset,5,3);
}
The `get_bit()` check is just for the compat QR. Dungeon/Cave looks like:
case dmDNGN:
case dmCAVE:
{
int maptile=has_item(itype_map, get_dlevel())?DMaps[get_currdmap()].minimap_2_tile:DMaps[get_currdmap()].minimap_1_tile;
int mapcset=has_item(itype_map, get_dlevel())?DMaps[get_currdmap()].minimap_2_cset:DMaps[get_currdmap()].minimap_1_cset;
if(maptile)
{
draw_block(dest,x,y,maptile,mapcset,5,3);
}
So yeah, overworlds were just using the 'Without Map' tile and not even checking if you have the map.