diff --git a/chess/__init__.py b/chess/__init__.py
index <HASH>..<HASH> 100644
--- a/chess/__init__.py
+++ b/chess/__init__.py
@@ -1014,21 +1014,12 @@ class BaseBoard:
         """
         self._set_board_fen(fen)
 
-    def piece_map(self) -> Dict[Square, Piece]:
+    def piece_map(self, *, mask: Bitboard = BB_ALL) -> Dict[Square, Piece]:
         """
         Gets a dictionary of :class:`pieces <chess.Piece>` by square index.
         """
         result = {}
-        for square in scan_reversed(self.occupied):
-            result[square] = typing.cast(Piece, self.piece_at(square))
-        return result
-
-    def piece_map_by_color(self, color: Color) -> Dict[Square, Piece]:
-        """
-        Gets a dictionary of :class:`pieces <chess.Piece>` by square index.
-        """
-        result = {}
-        for square in scan_reversed(self.occupied_co[color]):
+        for square in scan_reversed(self.occupied & mask):
             result[square] = typing.cast(Piece, self.piece_at(square))
         return result
Combine piece_map methods (#<I>)