diff -NpuBr -Xexclude.txt main/mp_msg.c sherpya/mp_msg.c
--- main/mp_msg.c	2010-02-24 03:30:11.203125000 +0100
+++ sherpya/mp_msg.c	2010-02-25 01:26:55.828125000 +0100
@@ -38,6 +38,27 @@ int use_gui;
 
 #include "mp_msg.h"
 
+#ifdef _WIN32
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <io.h>
+short stdoutAttrs = 0;
+HANDLE hConOut = INVALID_HANDLE_VALUE;
+static const unsigned char ansi2win32[10]=
+{
+    0,
+    FOREGROUND_RED,
+    FOREGROUND_GREEN,
+    FOREGROUND_GREEN | FOREGROUND_RED,
+    FOREGROUND_BLUE,
+    FOREGROUND_BLUE  | FOREGROUND_RED,
+    FOREGROUND_BLUE  | FOREGROUND_GREEN,
+    FOREGROUND_BLUE  | FOREGROUND_GREEN | FOREGROUND_RED,
+    FOREGROUND_BLUE  | FOREGROUND_GREEN | FOREGROUND_RED,
+    FOREGROUND_BLUE  | FOREGROUND_GREEN | FOREGROUND_RED
+    };
+#endif
+
 /* maximum message length of mp_msg */
 #define MSGSIZE_MAX 3072
 
@@ -95,6 +116,27 @@ void mp_msg_init(void){
     if (!mp_msg_charset)
       mp_msg_charset = get_term_charset();
 #endif
+#ifdef _WIN32
+    {
+        CONSOLE_SCREEN_BUFFER_INFO cinfo;
+        long cmode = 0;
+
+        hConOut = GetStdHandle(STD_OUTPUT_HANDLE);
+        if ((hConOut == NULL) || (hConOut == INVALID_HANDLE_VALUE))
+        {
+            hConOut = NULL;
+            fprintf(stderr, "Cannot get Console handle of stdout\n");
+            return;
+        }
+
+        GetConsoleMode(hConOut, &cmode);
+        cmode |= (ENABLE_PROCESSED_OUTPUT | ENABLE_WRAP_AT_EOL_OUTPUT);
+        SetConsoleMode(hConOut, cmode);
+
+        GetConsoleScreenBufferInfo(hConOut, &cinfo);
+        stdoutAttrs = cinfo.wAttributes;
+    }
+#endif
 }
 
 int mp_msg_test(int mod, int lev)
@@ -117,8 +159,14 @@ static void set_msg_color(FILE* stream, 
         flag = 0;
     }
 #endif
+
+#ifdef _WIN32
+    if (mp_msg_color)
+        SetConsoleTextAttribute(hConOut, ansi2win32[c] | FOREGROUND_INTENSITY);
+#else
     if (mp_msg_color)
         fprintf(stream, "\033[%d;3%dm", c >> 3, c & 7);
+#endif
 }
 
 static void print_msg_module(FILE* stream, int mod)
@@ -172,14 +220,21 @@ static void print_msg_module(FILE* strea
         "STATUSLINE",
     };
     int c2 = (mod + 1) % 15 + 1;
-
     if (!mp_msg_module)
         return;
+#ifdef _WIN32
+    if (mp_msg_color)
+        SetConsoleTextAttribute(hConOut, ansi2win32[c2&7] | FOREGROUND_INTENSITY);
+    fprintf(stream, "%9s", module_text[mod]);
+    if (mp_msg_color)
+        SetConsoleTextAttribute(hConOut, stdoutAttrs);
+#else
     if (mp_msg_color)
         fprintf(stream, "\033[%d;3%dm", c2 >> 3, c2 & 7);
     fprintf(stream, "%9s", module_text[mod]);
     if (mp_msg_color)
         fprintf(stream, "\033[0;37m");
+#endif
     fprintf(stream, ": ");
 }
 
