diff --git a/source/build/include/build.h b/source/build/include/build.h index 2ed1521a4..3ef4982a6 100644 --- a/source/build/include/build.h +++ b/source/build/include/build.h @@ -206,6 +206,7 @@ enum { // ROTATESPRITE_MAX-1 is the mask of all externally available orientation bits ROTATESPRITE_MAX = 4096, + RS_CENTER = (1<<29), // proper center align. RS_CENTERORIGIN = (1<<30), }; diff --git a/source/build/src/engine.cpp b/source/build/src/engine.cpp index 70083069d..6610ed460 100644 --- a/source/build/src/engine.cpp +++ b/source/build/src/engine.cpp @@ -3106,7 +3106,7 @@ void twod_rotatesprite(int32_t sx, int32_t sy, int32_t z, int16_t a, int16_t pic if (!(dastat & RS_TOPLEFT)) { - if (!pic) + if (!pic && !(dastat & RS_CENTER)) { ofs = { int16_t(tileLeftOffset(picnum) + (siz.x >> 1)), int16_t(tileTopOffset(picnum) + (siz.y >> 1)) }; diff --git a/source/exhumed/src/d_menu.cpp b/source/exhumed/src/d_menu.cpp index 5cc49e807..9c6049c18 100644 --- a/source/exhumed/src/d_menu.cpp +++ b/source/exhumed/src/d_menu.cpp @@ -142,7 +142,7 @@ void GameInterface::DrawNativeMenuText(int fontnum, int state, double xpos, doub shade = 25; } - rotatesprite(160 << 16, int((y + tilesiz[tilenum].y) *65536), zoomsize, 0, tilenum, shade, 0, 2|RS_TOPLEFT, 0, 0, xdim, ydim); + rotatesprite(160 << 16, int((y + tilesiz[tilenum].y) *65536), zoomsize, 0, tilenum, shade, 0, RS_AUTO|RS_CENTER, 0, 0, xdim, ydim); // tilesizx is 51 // tilesizy is 33