diff --git a/src/tree_cmd.cpp b/src/tree_cmd.cpp --- a/src/tree_cmd.cpp +++ b/src/tree_cmd.cpp @@ -457,16 +457,8 @@ static void DrawTile_Trees(TileInfo *ti) /* Do not draw trees when the invisible trees setting is set */ if (IsInvisibilitySet(TO_TREES)) return; - uint16 tmp = ti->x; - - tmp = ROR(tmp, 2); - tmp -= ti->y; - tmp = ROR(tmp, 3); - tmp -= ti->x; - tmp = ROR(tmp, 1); - tmp += ti->y; - - uint index = GB(tmp, 6, 2) + (GetTreeType(ti->tile) << 2); + uint tmp = CountBits(ti->tile + ti->x + ti->y); + uint index = GB(tmp, 0, 2) + (GetTreeType(ti->tile) << 2); /* different tree styles above one of the grounds */ if (GetTreeGround(ti->tile) == TREE_GROUND_SNOW_DESERT && @@ -478,7 +470,7 @@ static void DrawTile_Trees(TileInfo *ti) assert(index < lengthof(_tree_layout_sprite)); const PalSpriteID *s = _tree_layout_sprite[index]; - const TreePos *d = _tree_layout_xy[GB(tmp, 4, 2)]; + const TreePos *d = _tree_layout_xy[GB(tmp, 2, 2)]; /* combine trees into one sprite object */ StartSpriteCombine();