Adapt WinBoard front-end to Mighty Lion
authorH.G. Muller <h.g.muller@hccnet.nl>
Mon, 14 Oct 2013 18:07:13 +0000 (20:07 +0200)
committerH.G. Muller <h.g.muller@hccnet.nl>
Sun, 22 Dec 2013 22:32:06 +0000 (23:32 +0100)
A Lion piece is added, and the roar sound and driver is added.
Put Mighty Lion in New Variant menu (WB)
Debug WB Mighty Lion
Fix dragging on second leg WB
Two-leg move animation WB
Add Lion .bmp files (WB)

18 files changed:
backend.c
backend.h
common.h
dialogs.c
winboard/bitmaps/ln33o.bmp [new file with mode: 0644]
winboard/bitmaps/ln33s.bmp [new file with mode: 0644]
winboard/bitmaps/ln33w.bmp [new file with mode: 0644]
winboard/bitmaps/ln49o.bmp [new file with mode: 0644]
winboard/bitmaps/ln49s.bmp [new file with mode: 0644]
winboard/bitmaps/ln49w.bmp [new file with mode: 0644]
winboard/bitmaps/ln72o.bmp [new file with mode: 0644]
winboard/bitmaps/ln72s.bmp [new file with mode: 0644]
winboard/bitmaps/ln72w.bmp [new file with mode: 0644]
winboard/defaults.h
winboard/resource.h
winboard/winboard.c
winboard/winboard.rc
winboard/woptions.c

index 6675344..4c9968f 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -5284,7 +5284,8 @@ ProcessICSInitScript (FILE *f)
 }
 
 
-static int lastX, lastY, lastLeftX, lastLeftY, selectFlag, dragging;
+static int lastX, lastY, lastLeftX, lastLeftY, selectFlag;
+int dragging;
 static ClickType lastClickType;
 
 void
@@ -7193,7 +7194,6 @@ HoverEvent (int xPix, int yPix, int x, int y)
 {
        static int oldX = -1, oldY = -1, oldFromX = -1, oldFromY = -1;
        int r, f;
-       if(dragging == 2) DragPieceMove(xPix, yPix); // [HGM] lion: drag without button for second leg
        if(!first.highlight) return;
        if(fromX != oldFromX || fromY != oldFromY)  oldX = oldY = -1; // kludge to fake entry on from-click
        if(x == oldX && y == oldY) return; // only do something if we enter new square
@@ -7464,7 +7464,6 @@ LeftClick (ClickType clickType, int xPix, int yPix)
            return;
        }
        if(dragging == 2) {  // [HGM] lion: just turn buttonless drag into normal drag, and let release to the job
-           dragging = 1;
            return;
        }
        if(x == killX && y == killY) {              // second click on this square, which was selected as first-leg target
index 69197ce..741a9e9 100644 (file)
--- a/backend.h
+++ b/backend.h
@@ -115,6 +115,7 @@ extern char lastMsg[MSG_SIZ];
 extern Boolean bookUp;
 extern int tinyLayout, smallLayout;
 extern Boolean mcMode;
+extern int dragging;
 
 void MarkMenuItem P((char *menuRef, int state));
 char *CmailMsg P((void));
index 2bd7653..ec067ad 100644 (file)
--- a/common.h
+++ b/common.h
@@ -304,7 +304,7 @@ typedef enum {
 } ColorClass;
 
 typedef enum {
-    SoundMove, SoundBell, SoundAlarm, SoundIcsWin, SoundIcsLoss,
+    SoundMove, SoundBell, SoundRoar, SoundAlarm, SoundIcsWin, SoundIcsLoss,
     SoundIcsDraw, SoundIcsUnfinished, NSoundClasses
 } SoundClass;
 
index 5bcbc0b..1a918ed 100644 (file)
--- a/dialogs.c
+++ b/dialogs.c
@@ -2178,7 +2178,7 @@ Exp (int n, int x, int y)
 
     if(n == 0) { // motion
        if(SeekGraphClick(Press, x, y, 1)) return NULL;
-       if(but1 && !PromoScroll(x, y)) DragPieceMove(x, y);
+       if((but1 || dragging == 2) && !PromoScroll(x, y)) DragPieceMove(x, y);
        if(but3) MovePV(x, y, lineGap + BOARD_HEIGHT * (squareSize + lineGap));
        if(appData.highlightDragging) {
            f = EventToSquare(x, BOARD_WIDTH);  if ( flipView && f >= 0) f = BOARD_WIDTH - 1 - f;
diff --git a/winboard/bitmaps/ln33o.bmp b/winboard/bitmaps/ln33o.bmp
new file mode 100644 (file)
index 0000000..1e369b2
Binary files /dev/null and b/winboard/bitmaps/ln33o.bmp differ
diff --git a/winboard/bitmaps/ln33s.bmp b/winboard/bitmaps/ln33s.bmp
new file mode 100644 (file)
index 0000000..4f4b4fe
Binary files /dev/null and b/winboard/bitmaps/ln33s.bmp differ
diff --git a/winboard/bitmaps/ln33w.bmp b/winboard/bitmaps/ln33w.bmp
new file mode 100644 (file)
index 0000000..8498503
Binary files /dev/null and b/winboard/bitmaps/ln33w.bmp differ
diff --git a/winboard/bitmaps/ln49o.bmp b/winboard/bitmaps/ln49o.bmp
new file mode 100644 (file)
index 0000000..70f760e
Binary files /dev/null and b/winboard/bitmaps/ln49o.bmp differ
diff --git a/winboard/bitmaps/ln49s.bmp b/winboard/bitmaps/ln49s.bmp
new file mode 100644 (file)
index 0000000..b9ecc7b
Binary files /dev/null and b/winboard/bitmaps/ln49s.bmp differ
diff --git a/winboard/bitmaps/ln49w.bmp b/winboard/bitmaps/ln49w.bmp
new file mode 100644 (file)
index 0000000..16f45eb
Binary files /dev/null and b/winboard/bitmaps/ln49w.bmp differ
diff --git a/winboard/bitmaps/ln72o.bmp b/winboard/bitmaps/ln72o.bmp
new file mode 100644 (file)
index 0000000..cb23356
Binary files /dev/null and b/winboard/bitmaps/ln72o.bmp differ
diff --git a/winboard/bitmaps/ln72s.bmp b/winboard/bitmaps/ln72s.bmp
new file mode 100644 (file)
index 0000000..f0a88ce
Binary files /dev/null and b/winboard/bitmaps/ln72s.bmp differ
diff --git a/winboard/bitmaps/ln72w.bmp b/winboard/bitmaps/ln72w.bmp
new file mode 100644 (file)
index 0000000..e55a5e8
Binary files /dev/null and b/winboard/bitmaps/ln72w.bmp differ
index d2fd9cf..fcab2db 100644 (file)
 #define BUILT_IN_SOUND_NAMES {\\r
   "Beepbeep", "Ching", "Click", "Cymbal", "Ding", "Drip", \\r
   "Gong", "Laser", "Move", "Penalty", "Phone", "Pop", "Pop2", \\r
-  "Slap", "Squeak", "Swish", "Thud", "Whipcrack", \\r
+  "Roar", "Slap", "Squeak", "Swish", "Thud", "Whipcrack", \\r
   "Alarm", "Challenge", "Channel", "Channel1", "Draw", "Kibitz", \\r
   "Lose", "Request", "Seek", "Shout", "SShout", "Tell", "Unfinished", \\r
   "Win", NULL \\r
 }\r
 \r
 #define SETTINGS_FILE         "winboard.ini"\r
-#define DEBUG_FILE            "winboard.debug"
+#define DEBUG_FILE            "winboard.debug"\r
 \r
 #define ICS_LOGON             "ics.ini"\r
 \r
index 0cebfcf..efa3068 100644 (file)
 #define OPT_VariantSpartan              1531\r
 #define OPT_VariantASEAN                1532\r
 #define OPT_VariantGrand                1534\r
+#define OPT_VariantLion                 1535\r
 #define OPT_EngineVariant               1560\r
 #define IDC_Files                       1550\r
 #define IDC_Ranks                       1551\r
index e5df6db..1539f42 100644 (file)
@@ -109,7 +109,6 @@ VOID NewVariantPopup(HWND hwnd);
 int FinishMove P((ChessMove moveType, int fromX, int fromY, int toX, int toY,\r
                   /*char*/int promoChar));\r
 void DisplayMove P((int moveNumber));\r
-Boolean ParseFEN P((Board board, int *blackPlaysFirst, char *fen));\r
 void ChatPopUp P((char *s));\r
 typedef struct {\r
   ChessSquare piece;  \r
@@ -2273,7 +2272,7 @@ InitDrawingSizes(BoardSize boardSize, int flags)
        && (boardSize < SizePetite || boardSize > SizeBulky) // Archbishop and Chancellor available in entire middle range\r
       || (v == VariantShogi && boardSize != SizeModerate)   // Japanese-style Shogi\r
       ||  v == VariantKnightmate || v == VariantSChess || v == VariantXiangqi || v == VariantSpartan\r
-      ||  v == VariantShatranj || v == VariantMakruk || v == VariantGreat || v == VariantFairy ) {\r
+      ||  v == VariantShatranj || v == VariantMakruk || v == VariantGreat || v == VariantFairy || v == VariantLion ) {\r
       if(boardSize < SizeMediocre) boardSize = SizePetite; else\r
       if(boardSize > SizeModerate) boardSize = SizeBulky;  else\r
                                    boardSize = SizeMiddling;\r
@@ -2629,6 +2628,9 @@ InitDrawingSizes(BoardSize boardSize, int flags)
     pieceBitmap[0][WhiteUnicorn] = DoLoadBitmap(hInst, "u", squareSize, "s");\r
     pieceBitmap[1][WhiteUnicorn] = DoLoadBitmap(hInst, "u", squareSize, "o");\r
     pieceBitmap[2][WhiteUnicorn] = DoLoadBitmap(hInst, "u", squareSize, "w");\r
+    pieceBitmap[0][WhiteLion] = DoLoadBitmap(hInst, "ln", squareSize, "s");\r
+    pieceBitmap[1][WhiteLion] = DoLoadBitmap(hInst, "ln", squareSize, "o");\r
+    pieceBitmap[2][WhiteLion] = DoLoadBitmap(hInst, "ln", squareSize, "w");\r
 \r
     if(gameInfo.variant == VariantShogi) { /* promoted Gold represemtations */\r
       pieceBitmap[0][WhiteCannon] = DoLoadBitmap(hInst, "wp", squareSize, "s");\r
@@ -3251,6 +3253,8 @@ BOOL HasHighlightInfo()
 \r
     return result;\r
 \r
+\r
+\r
 }\r
 \r
 BOOL IsDrawArrowEnabled()\r
@@ -4274,8 +4278,10 @@ MouseEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
       } else if (PtInRect((LPRECT) &blackRect, pt)) {\r
        ClockClick(!flipClock); break;\r
       }\r
+    if(dragging) { // [HGM] lion: don't destroy dragging info if we are already dragging\r
       dragInfo.start.x = dragInfo.start.y = -1;\r
       dragInfo.from = dragInfo.start;\r
+    }\r
     if(fromX == -1 && frozen) { // not sure where this is for\r
                fromX = fromY = -1; \r
       DrawPosition(forceFullRepaint || FALSE, NULL); /* [AS] */\r
@@ -4295,7 +4301,7 @@ MouseEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
     if(PromoScroll(pt.x - boardRect.left, pt.y - boardRect.top)) break;\r
     MovePV(pt.x - boardRect.left, pt.y - boardRect.top, boardRect.bottom - boardRect.top);\r
     if ((appData.animateDragging || appData.highlightDragging)\r
-       && (wParam & MK_LBUTTON)\r
+       && (wParam & MK_LBUTTON || dragging == 2)\r
        && dragInfo.from.x >= 0) \r
     {\r
       BOOL full_repaint = FALSE;\r
@@ -5105,6 +5111,7 @@ WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
       break;\r
 \r
     case IDM_Rematch:\r
+\r
       RematchEvent();\r
       break;\r
 \r
@@ -6262,6 +6269,7 @@ StartupDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
        SwapEngines(singleList); // temporarily swap first and second, to load a second 'first', ...\r
        ParseArgs(StringGet, &p);\r
        SwapEngines(singleList); // ... and then make it 'second'\r
+\r
        appData.noChessProgram = FALSE;\r
        appData.icsActive = FALSE;\r
       } else if (IsDlgButtonChecked(hDlg, OPT_ChessServer)) {\r
@@ -6851,6 +6859,7 @@ SaveInHistory(char *cmd)
   histIn = (histIn + 1) % HISTORY_SIZE;\r
   if (history[histIn] != NULL) {\r
     free(history[histIn]);\r
+\r
     history[histIn] = NULL;\r
   }\r
   histP = histIn;\r
@@ -8717,6 +8726,13 @@ EditCommentPopUp(int index, char *title, char *str)
 }\r
 \r
 \r
+int\r
+Roar()\r
+{\r
+  MyPlaySound(&sounds[(int)SoundRoar]);\r
+  return 1;\r
+}\r
+\r
 VOID\r
 RingBell()\r
 {\r
@@ -8874,6 +8890,7 @@ DisplayBlackClock(long timeRemaining, int highlight)
   HDC hdc;\r
   char *flag = blackFlag && gameMode == TwoMachinesPlay ? "(!)" : "";\r
 \r
+\r
   if(appData.noGUI) return;\r
   hdc = GetDC(hwndMain);\r
   if (!IsIconic(hwndMain)) {\r
@@ -9892,16 +9909,23 @@ AnimateMove(board, fromX, fromY, toX, toY)
      int toY;\r
 {\r
   ChessSquare piece;\r
+  int x = toX, y = toY;\r
   POINT start, finish, mid;\r
   POINT frames[kFactor * 2 + 1];\r
   int nFrames, n;\r
 \r
+  if(killX >= 0 && IS_LION(board[fromY][fromX])) Roar();\r
+\r
   if (!appData.animate) return;\r
   if (doingSizing) return;\r
   if (fromY < 0 || fromX < 0) return;\r
   piece = board[fromY][fromX];\r
   if (piece >= EmptySquare) return;\r
 \r
+  if(killX >= 0) toX = killX, toY = killY; // [HGM] lion: first to kill square\r
+\r
+again:\r
+\r
   ScreenSquare(fromX, fromY, &start);\r
   ScreenSquare(toX, toY, &finish);\r
 \r
@@ -9940,6 +9964,9 @@ AnimateMove(board, fromX, fromY, toX, toY)
   }\r
   animInfo.pos = finish;\r
   DrawPosition(FALSE, NULL);\r
+\r
+  if(toX != x || toY != y) { fromX = toX; fromY = toY; toX = x; toY = y; goto again; } // second leg\r
+\r
   animInfo.piece = EmptySquare;\r
   Explode(board, fromX, fromY, toX, toY);\r
 }\r
index 86428cb..69ed9da 100644 (file)
@@ -713,6 +713,8 @@ BEGIN
                     70,10\r
     CONTROL         "&atomic",OPT_VariantAtomic,"Button",BS_AUTORADIOBUTTON,\r
                     9,104,70,10\r
+    CONTROL         "&Mighty Lion",OPT_VariantLion,"Button",BS_AUTORADIOBUTTON,\r
+                    9,114,70,10\r
     CONTROL         "cra&zyhouse",OPT_VariantCrazyhouse,"Button",BS_AUTORADIOBUTTON,80,14,\r
                     70,10\r
     CONTROL         "&bughouse",OPT_VariantBughouse,"Button",BS_AUTORADIOBUTTON,80,24,70,\r
@@ -1916,6 +1918,7 @@ V72O                    BITMAP  MOVEABLE PURE   "bitmaps/v72o.bmp"
 S72O                    BITMAP  MOVEABLE PURE   "bitmaps/s72o.bmp"\r
 L72O                    BITMAP  MOVEABLE PURE   "bitmaps/l72o.bmp"\r
 DK72O                   BITMAP  MOVEABLE PURE   "bitmaps/dk72o.bmp"\r
+LN72O                   BITMAP  MOVEABLE PURE   "bitmaps/ln72o.bmp"\r
 WP72O                   BITMAP  MOVEABLE PURE   "bitmaps/wp72o.bmp"\r
 WN72O                   BITMAP  MOVEABLE PURE   "bitmaps/wn72o.bmp"\r
 WL72O                   BITMAP  MOVEABLE PURE   "bitmaps/wl72o.bmp"\r
@@ -1936,6 +1939,7 @@ V72S                    BITMAP  MOVEABLE PURE   "bitmaps/v72s.bmp"
 S72S                    BITMAP  MOVEABLE PURE   "bitmaps/s72s.bmp"\r
 L72S                    BITMAP  MOVEABLE PURE   "bitmaps/l72s.bmp"\r
 DK72S                   BITMAP  MOVEABLE PURE   "bitmaps/dk72s.bmp"\r
+LN72S                   BITMAP  MOVEABLE PURE   "bitmaps/ln72s.bmp"\r
 WP72S                   BITMAP  MOVEABLE PURE   "bitmaps/wp72s.bmp"\r
 WN72S                   BITMAP  MOVEABLE PURE   "bitmaps/wn72s.bmp"\r
 WL72S                   BITMAP  MOVEABLE PURE   "bitmaps/wl72s.bmp"\r
@@ -1956,6 +1960,7 @@ V72W                    BITMAP  MOVEABLE PURE   "bitmaps/v72w.bmp"
 S72W                    BITMAP  MOVEABLE PURE   "bitmaps/s72w.bmp"\r
 L72W                    BITMAP  MOVEABLE PURE   "bitmaps/l72w.bmp"\r
 DK72W                   BITMAP  MOVEABLE PURE   "bitmaps/dk72w.bmp"\r
+LN72W                   BITMAP  MOVEABLE PURE   "bitmaps/ln72w.bmp"\r
 E49O                    BITMAP  MOVEABLE PURE   "bitmaps/e49o.bmp"\r
 A49O                    BITMAP  MOVEABLE PURE   "bitmaps/a49o.bmp"\r
 AA49O                   BITMAP  MOVEABLE PURE   "bitmaps/as49o.bmp"\r
@@ -1972,6 +1977,7 @@ V49O                    BITMAP  MOVEABLE PURE   "bitmaps/v49o.bmp"
 S49O                    BITMAP  MOVEABLE PURE   "bitmaps/s49o.bmp"\r
 L49O                    BITMAP  MOVEABLE PURE   "bitmaps/l49o.bmp"\r
 DK49O                   BITMAP  MOVEABLE PURE   "bitmaps/dk49o.bmp"\r
+LN49O                   BITMAP  MOVEABLE PURE   "bitmaps/ln49o.bmp"\r
 WP49O                   BITMAP  MOVEABLE PURE   "bitmaps/wp49o.bmp"\r
 WN49O                   BITMAP  MOVEABLE PURE   "bitmaps/wn49o.bmp"\r
 WL49O                   BITMAP  MOVEABLE PURE   "bitmaps/wl49o.bmp"\r
@@ -1992,6 +1998,7 @@ V49S                    BITMAP  MOVEABLE PURE   "bitmaps/v49s.bmp"
 S49S                    BITMAP  MOVEABLE PURE   "bitmaps/s49s.bmp"\r
 L49S                    BITMAP  MOVEABLE PURE   "bitmaps/l49s.bmp"\r
 DK49S                   BITMAP  MOVEABLE PURE   "bitmaps/dk49s.bmp"\r
+LN49S                   BITMAP  MOVEABLE PURE   "bitmaps/ln49s.bmp"\r
 WP49S                   BITMAP  MOVEABLE PURE   "bitmaps/wp49s.bmp"\r
 WN49S                   BITMAP  MOVEABLE PURE   "bitmaps/wn49s.bmp"\r
 WL49S                   BITMAP  MOVEABLE PURE   "bitmaps/wl49s.bmp"\r
@@ -2012,6 +2019,7 @@ V49W                    BITMAP  MOVEABLE PURE   "bitmaps/v49w.bmp"
 S49W                    BITMAP  MOVEABLE PURE   "bitmaps/s49w.bmp"\r
 L49W                    BITMAP  MOVEABLE PURE   "bitmaps/l49w.bmp"\r
 DK49W                   BITMAP  MOVEABLE PURE   "bitmaps/dk49w.bmp"\r
+LN49W                   BITMAP  MOVEABLE PURE   "bitmaps/ln49w.bmp"\r
 A33O                    BITMAP  MOVEABLE PURE   "bitmaps/a33o.bmp"\r
 AA33O                   BITMAP  MOVEABLE PURE   "bitmaps/as33o.bmp"\r
 C33O                    BITMAP  MOVEABLE PURE   "bitmaps/c33o.bmp"\r
@@ -2026,6 +2034,7 @@ W33O                    BITMAP  MOVEABLE PURE   "bitmaps/w33o.bmp"
 M33O                    BITMAP  MOVEABLE PURE   "bitmaps/m33o.bmp"\r
 O33O                    BITMAP  MOVEABLE PURE   "bitmaps/o33o.bmp"\r
 DK33O                   BITMAP  MOVEABLE PURE   "bitmaps/dk33o.bmp"\r
+LN33O                   BITMAP  MOVEABLE PURE   "bitmaps/ln33o.bmp"\r
 WP33O                   BITMAP  MOVEABLE PURE   "bitmaps/wp33o.bmp"\r
 WN33O                   BITMAP  MOVEABLE PURE   "bitmaps/wn33o.bmp"\r
 WL33O                   BITMAP  MOVEABLE PURE   "bitmaps/wl33o.bmp"\r
@@ -2044,6 +2053,7 @@ W33W                    BITMAP  MOVEABLE PURE   "bitmaps/w33w.bmp"
 M33W                    BITMAP  MOVEABLE PURE   "bitmaps/m33w.bmp"\r
 O33W                    BITMAP  MOVEABLE PURE   "bitmaps/o33w.bmp"\r
 DK33W                   BITMAP  MOVEABLE PURE   "bitmaps/dk33w.bmp"\r
+LN33W                   BITMAP  MOVEABLE PURE   "bitmaps/ln33w.bmp"\r
 A33S                    BITMAP  MOVEABLE PURE   "bitmaps/a33s.bmp"\r
 AA33S                   BITMAP  MOVEABLE PURE   "bitmaps/as33s.bmp"\r
 C33S                    BITMAP  MOVEABLE PURE   "bitmaps/c33s.bmp"\r
@@ -2058,6 +2068,7 @@ W33S                    BITMAP  MOVEABLE PURE   "bitmaps/w33s.bmp"
 M33S                    BITMAP  MOVEABLE PURE   "bitmaps/m33s.bmp"\r
 O33S                    BITMAP  MOVEABLE PURE   "bitmaps/o33s.bmp"\r
 DK33S                   BITMAP  MOVEABLE PURE   "bitmaps/dk33s.bmp"\r
+LN33S                   BITMAP  MOVEABLE PURE   "bitmaps/ln33s.bmp"\r
 WP33S                   BITMAP  MOVEABLE PURE   "bitmaps/wp33s.bmp"\r
 WN33S                   BITMAP  MOVEABLE PURE   "bitmaps/wn33s.bmp"\r
 WL33S                   BITMAP  MOVEABLE PURE   "bitmaps/wl33s.bmp"\r
@@ -2224,6 +2235,7 @@ SSHOUT                  WAVE    DISCARDABLE     "sounds/sshout.wav"
 TELL                    WAVE    DISCARDABLE     "sounds/tell.wav"\r
 UNFINISHED              WAVE    DISCARDABLE     "sounds/unfinished.wav"\r
 WIN                     WAVE    DISCARDABLE     "sounds/win.wav"\r
+ROAR                    WAVE    DISCARDABLE     "sounds/roar.wav"\r
 \r
 /////////////////////////////////////////////////////////////////////////////\r
 //\r
index a736306..d3dba20 100644 (file)
@@ -843,6 +843,7 @@ int radioButton[] = {
     -1,\r
     -1,\r
     OPT_VariantShogi,\r
+    -1, // Chu\r
     OPT_VariantXiangqi,\r
     OPT_VariantCourier,\r
     OPT_VariantGothic,\r
@@ -862,6 +863,7 @@ int radioButton[] = {
     OPT_VariantSChess,\r
     OPT_VariantGrand,\r
     OPT_VariantSpartan, // Spartan\r
+    OPT_VariantLion,\r
     -2 // sentinel\r
 };\r
 \r
@@ -1418,6 +1420,8 @@ IcsOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
       break;\r
 \r
 \r
+\r
+\r
     case OPT_ChooseNormalColor:\r
       ColorizeTextPopup(hDlg, ColorNormal);\r
       UpdateSampleText(hDlg, OPT_SampleNormal, &mca[ColorNormal]);\r
@@ -1796,6 +1800,7 @@ FontsOptionsPopup(HWND hwnd)
 SoundComboData soundComboData[] = {\r
   {N_("Move"), NULL},\r
   {N_("Bell"), NULL},\r
+  {N_("Roar"), NULL},\r
   {N_("ICS Alarm"), NULL},\r
   {N_("ICS Win"), NULL},\r
   {N_("ICS Loss"), NULL},\r