Forced loading of msacm32 when msacm is loaded.
Added msacm DLL pair in config files.
Added some dumb calls from 16 to 32.

diff --git a/dlls/msacm/msacm.spec b/dlls/msacm/msacm.spec
index 7cbd40d..1ac566b 100644
--- a/dlls/msacm/msacm.spec
+++ b/dlls/msacm/msacm.spec
@@ -41,3 +41,4 @@
 201 stub     ACMCLOSECONVERSION
 202 stub     ACMCONVERT
 203 stub     ACMCHOOSEFORMAT
+255 pascal   DllEntryPoint(long word word word long word) MSACM_DllEntryPoint
diff --git a/dlls/msacm/msacm_main.c b/dlls/msacm/msacm_main.c
index 8c860ab..ab493f5 100644
--- a/dlls/msacm/msacm_main.c
+++ b/dlls/msacm/msacm_main.c
@@ -14,14 +14,43 @@
 
 DEFAULT_DEBUG_CHANNEL(msacm);
 
+/**************************************************************************
+ * 			MSACM_LibMain			[EntryPoint]
+ *
+ * MSACM DLL entry point
+ *
+ */
+BOOL WINAPI MSACM_DllEntryPoint(DWORD fdwReason, HINSTANCE16 hinstDLL, WORD ds, 
+				WORD wHeapSize, DWORD dwReserved1, WORD wReserved2)
+{
+    static HANDLE	hndl;
+
+    TRACE("0x%x 0x%lx\n", hinstDLL, fdwReason);
+
+    switch (fdwReason) {
+    case DLL_PROCESS_ATTACH:
+        if (!hndl && !(hndl = LoadLibraryA("MSACM32.DLL"))) {
+	    ERR("Could not load sibling MsAcm32.dll\n");
+	    return FALSE;
+	}
+	break;
+    case DLL_PROCESS_DETACH:
+	FreeLibrary(hndl);
+	hndl = 0;
+	break;
+    case DLL_THREAD_ATTACH:
+    case DLL_THREAD_DETACH:
+	break;
+    }
+    return TRUE;
+}
+
 /***********************************************************************
  *		acmGetVersion (MSACM.7)
  */
-DWORD WINAPI acmGetVersion16()
+DWORD WINAPI acmGetVersion16(void)
 {
-  FIXME("(): stub\n");
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return 0; /* FIXME */
+  return acmGetVersion();
 }
 
 /***********************************************************************
@@ -31,9 +60,9 @@
 MMRESULT16 WINAPI acmMetrics16(
   HACMOBJ16 hao, UINT16 uMetric, LPVOID pMetric)
 {
-  FIXME("(0x%04x, %d, %p): stub\n", hao, uMetric, pMetric);
-  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  return MMSYSERR_ERROR;
+  FIXME("(0x%04x, %d, %p): semi-stub\n", hao, uMetric, pMetric);
+
+  return acmMetrics(hao, uMetric, pMetric);
 }
 
 /***********************************************************************
diff --git a/documentation/samples/config b/documentation/samples/config
index b939f30..d7e9c77 100644
--- a/documentation/samples/config
+++ b/documentation/samples/config
@@ -101,6 +101,8 @@
 "mciavi.drv"   = "native, builtin"
 "mcianim.drv"  = "native, builtin"
 "msacm.drv"    = "builtin, native"
+"msacm"        = "builtin, native"
+"msacm32"      = "builtin, native"
 "midimap.drv"  = "builtin, native"
 "wnaspi32"     = "builtin"
 "icmp"         = "builtin"
diff --git a/loader/loadorder.c b/loader/loadorder.c
index 9e1a1f6..5d5e0fc 100644
--- a/loader/loadorder.c
+++ b/loader/loadorder.c
@@ -60,6 +60,7 @@
 	{"mciwave.drv",			"builtin,native"},
 	{"mciavi.drv,mcianim.drv",	"native,builtin"},
 	{"msacm.drv,midimap.drv",       "builtin,native"},
+	{"msacm,msacm32",               "builtin,native"},
 	{"opengl32",                    "builtin,native"},
 	/* we have to use libglideXx.so instead of glideXx.dll ... */
 	{"glide2x,glide3x",		"so,native"},
@@ -86,6 +87,7 @@
     { "lzexpand", "lz32" },
     { "mmsystem", "winmm" },
     { "msvideo",  "msvfw32" },
+    { "msacm",    "msacm32" },
     { "winsock",  "wsock32" },
     { NULL,       NULL }
 };