Started the implementation of MSACM.DLL and MSACM32.DLL.

diff --git a/dlls/msacm/msacm_main.c b/dlls/msacm/msacm_main.c
new file mode 100644
index 0000000..206c4ce
--- /dev/null
+++ b/dlls/msacm/msacm_main.c
@@ -0,0 +1,411 @@
+/*
+ *      MSACM library
+ *
+ *      Copyright 1998  Patrik Stridvall
+ */
+
+#include "windows.h"
+#include "winerror.h"
+#include "wintypes.h"
+#include "debug.h"
+#include "mmsystem.h"
+#include "msacm.h"
+
+/***********************************************************************
+ *           ACMGETVERSION (MSACM.7)
+ */
+DWORD WINAPI acmGetVersion16()
+{
+  FIXME(msacm, "(): stub\n");
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return 0; /* FIXME */
+}
+
+/***********************************************************************
+ *           ACMMETRICS (MSACM.8)
+ */
+
+MMRESULT16 WINAPI acmMetrics16(
+  HACMOBJ16 hao, UINT16 uMetric, LPVOID pMetric)
+{
+  FIXME(msacm, "(0x%04x, %d, %p): stub\n", hao, uMetric, pMetric);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMDRIVERENUM (MSACM.10)
+ */
+MMRESULT16 WINAPI acmDriverEnum16(
+  ACMDRIVERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum)
+{
+  FIXME(msacm, "(%p, %ld, %ld): stub\n",
+    fnCallback, dwInstance, fdwEnum
+  );
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMDRIVERDETAILS (MSACM.11)
+ */
+
+MMRESULT16 WINAPI acmDriverDetails16(
+  HACMDRIVERID16 hadid, LPACMDRIVERDETAILS16 padd, DWORD fdwDetails)
+{
+  FIXME(msacm, "(0x%04x, %p, %ld): stub\n", hadid, padd, fdwDetails);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMDRIVERADD (MSACM.12)
+ */
+MMRESULT16 WINAPI acmDriverAdd16(
+  LPHACMDRIVERID16 phadid, HINSTANCE16 hinstModule,
+  LPARAM lParam, DWORD dwPriority, DWORD fdwAdd)
+{
+  FIXME(msacm, "(%p, 0x%04x, %ld, %ld, %ld): stub\n",
+    phadid, hinstModule, lParam, dwPriority, fdwAdd
+  );
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMDRIVERREMOVE (MSACM.13)
+ */
+MMRESULT16 WINAPI acmDriverRemove16(
+  HACMDRIVERID16 hadid, DWORD fdwRemove)
+{
+  FIXME(msacm, "(0x%04x, %ld): stub\n", hadid, fdwRemove);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMDRIVEROPEN (MSACM.14)
+ */
+MMRESULT16 WINAPI acmDriverOpen16(
+  LPHACMDRIVER16 phad, HACMDRIVERID16 hadid, DWORD fdwOpen)
+{
+  FIXME(msacm, "(%p, 0x%04x, %ld): stub\n", phad, hadid, fdwOpen);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMDRIVERCLOSE (MSACM.15)
+ */
+MMRESULT16 WINAPI acmDriverClose16(
+  HACMDRIVER16 had, DWORD fdwClose)
+{
+  FIXME(msacm, "(0x%04x, %ld): stub\n", had, fdwClose);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMDRIVERMESSAGE (MSACM.16)
+ */
+LRESULT WINAPI acmDriverMessage16(
+  HACMDRIVER16 had, UINT16 uMsg, LPARAM lParam1, LPARAM lParam2)
+{
+  FIXME(msacm, "(0x%04x, %d, %ld, %ld): stub\n",
+    had, uMsg, lParam1, lParam2
+  );
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return 0;
+}
+
+/***********************************************************************
+ *           ACMDRIVERID (MSACM.17)
+ */
+MMRESULT16 WINAPI acmDriverID16(
+  HACMOBJ16 hao, LPHACMDRIVERID16 phadid, DWORD fdwDriverID)
+{
+  FIXME(msacm, "(0x%04x, %p, %ld): stub\n", hao, phadid, fdwDriverID);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMDRIVERPRIORITY (MSACM.18)
+ */
+MMRESULT16 WINAPI acmDriverPriority16(
+ HACMDRIVERID16 hadid, DWORD dwPriority, DWORD fdwPriority)
+{
+  FIXME(msacm, "(0x%04x, %ld, %ld): stub\n",
+    hadid, dwPriority, fdwPriority
+  );
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMFORMATTAGDETAILS (MSACM.30)
+ */
+MMRESULT16 WINAPI acmFormatTagDetails16(
+  HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd, DWORD fdwDetails)
+{
+  FIXME(msacm, "(0x%04x, %p, %ld): stub\n", had, paftd, fdwDetails);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMFORMATTAGENUM (MSACM.31)
+ */
+MMRESULT16 WINAPI acmFormatTagEnum16(
+  HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd,
+  ACMFORMATTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum)
+{
+  FIXME(msacm, "(0x%04x, %p, %p, %ld, %ld): stub\n",
+    had, paftd, fnCallback, dwInstance, fdwEnum
+  ); 
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMFORMATCHOOSE (MSACM.40)
+ */
+MMRESULT16 WINAPI acmFormatChoose16(
+  LPACMFORMATCHOOSE16 pafmtc)
+{
+  FIXME(msacm, "(%p): stub\n", pafmtc);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMFORMATDETAILS (MSACM.41)
+ */
+MMRESULT16 WINAPI acmFormatDetails16(
+  HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd, DWORD fdwDetails)
+{
+  FIXME(msacm, "(0x%04x, %p, %ld): stub\n", had, pafd, fdwDetails);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMFORMATENUM (MSACM.42)
+ */
+MMRESULT16 WINAPI acmFormatEnum16(
+  HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd,
+  ACMFORMATENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum)
+{
+  FIXME(msacm, "(0x%04x, %p, %p, %ld, %ld): stub\n",
+    had, pafd, fnCallback, dwInstance, fdwEnum
+  );
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMFORMATSUGGEST (MSACM.45)
+ */
+MMRESULT16 WINAPI acmFormatSuggest16(
+  HACMDRIVER16 had, LPWAVEFORMATEX16 pwfxSrc, 
+  LPWAVEFORMATEX16 pwfxDst, DWORD cbwfxDst, DWORD fdwSuggest)
+{
+  FIXME(msacm, "(0x%04x, %p, %p, %ld, %ld): stub\n",
+    had, pwfxSrc, pwfxDst, cbwfxDst, fdwSuggest
+  );
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMFILTERTAGDETAILS (MSACM.50)
+ */
+MMRESULT16 WINAPI acmFilterTagDetails16(
+  HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd, DWORD fdwDetails)
+{
+  FIXME(msacm, "(0x%04x, %p, %ld): stub\n", had, paftd, fdwDetails);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMFILTERTAGENUM (MSACM.51)
+ */
+MMRESULT16 WINAPI acmFilterTagEnum16(
+  HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd,
+  ACMFILTERTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum)
+{
+  FIXME(msacm, "(0x%04x, %p, %p, %ld, %ld): stub\n",
+    had, paftd, fnCallback, dwInstance, fdwEnum
+  );
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMFILTERCHOOSE (MSACM.60)
+ */
+MMRESULT16 WINAPI acmFilterChoose16(
+  LPACMFILTERCHOOSE16 pafltrc)
+{
+  FIXME(msacm, "(%p): stub\n", pafltrc);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMFILTERDETAILS (MSACM.61)
+ */
+MMRESULT16 WINAPI acmFilterDetails16(
+  HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd, DWORD fdwDetails)
+{
+  FIXME(msacm, "(0x%04x, %p, %ld): stub\n", had, pafd, fdwDetails);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMFILTERENUM (MSACM.62)
+ */
+MMRESULT16 WINAPI acmFilterEnum16(
+  HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd,
+  ACMFILTERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum)
+{
+  FIXME(msacm, "(0x%04x, %p, %p, %ld, %ld): stub\n",
+    had, pafd, fnCallback, dwInstance, fdwEnum
+  );
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMSTREAMOPEN (MSACM.70)
+ */
+MMRESULT16 WINAPI acmStreamOpen16(
+  LPHACMSTREAM16 phas, HACMDRIVER16 had,
+  LPWAVEFORMATEX16 pwfxSrc, LPWAVEFORMATEX16 pwfxDst,
+  LPWAVEFILTER16 pwfltr, DWORD dwCallback,
+  DWORD dwInstance, DWORD fdwOpen)
+{
+  FIXME(msacm, "(%p, 0x%04x, %p, %p, %p, %ld, %ld, %ld): stub\n",
+    phas, had, pwfxSrc, pwfxDst, pwfltr,
+    dwCallback, dwInstance, fdwOpen
+  );
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMSTREAMCLOSE (MSACM.71)
+ */
+MMRESULT16 WINAPI acmStreamClose16(
+  HACMSTREAM16 has, DWORD fdwClose)
+{
+  FIXME(msacm, "(0x%04x, %ld): stub\n", has, fdwClose);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMSTREAMSIZE (MSACM.72)
+ */
+MMRESULT16 WINAPI acmStreamSize16(
+  HACMSTREAM16 has, DWORD cbInput, 
+  LPDWORD pdwOutputBytes, DWORD fdwSize)
+{
+  FIXME(msacm, "(0x%04x, %ld, %p, %ld): stub\n",
+    has, cbInput, pdwOutputBytes, fdwSize
+  );
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMSTREAMCONVERT (MSACM.75)
+ */
+MMRESULT16 WINAPI acmStreamConvert16(
+  HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwConvert)
+{
+  FIXME(msacm, "(0x%04x, %p, %ld): stub\n", has, pash, fdwConvert);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMSTREAMRESET (MSACM.76)
+ */
+MMRESULT16 WINAPI acmStreamReset16(
+  HACMSTREAM16 has, DWORD fdwReset)
+{
+  FIXME(msacm, "(0x%04x, %ld): stub\n", has, fdwReset);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMSTREAMPREPAREHEADER (MSACM.77)
+ */
+MMRESULT16 WINAPI acmStreamPrepareHeader16(
+  HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwPrepare)
+{
+  FIXME(msacm, "(0x%04x, %p, %ld): stub\n", has, pash, fdwPrepare);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMSTREAMUNPREPAREHEADER (MSACM.78)
+ */
+MMRESULT16 WINAPI acmStreamUnprepareHeader16(
+  HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwUnprepare)
+{
+  FIXME(msacm, "(0x%04x, %p, %ld): stub\n",
+    has, pash, fdwUnprepare
+  );
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
+}
+
+/***********************************************************************
+ *           ACMAPPLICATIONEXIT (MSACM.150)
+ * FIXME
+ *   No documentation found.
+ */
+
+/***********************************************************************
+ *           ACMHUGEPAGELOCK (MSACM.175)
+ * FIXME
+ *   No documentation found.
+ */
+
+/***********************************************************************
+ *           ACMHUGEPAGEUNLOCK (MSACM.176)
+ * FIXME
+ *   No documentation found.
+ */
+
+/***********************************************************************
+ *           ACMOPENCONVERSION (MSACM.200)
+ * FIXME
+ *   No documentation found.
+ */
+
+/***********************************************************************
+ *           ACMCLOSECONVERSION (MSACM.201)
+ * FIXME
+ *   No documentation found.
+ */
+
+/***********************************************************************
+ *           ACMCONVERT (MSACM.202)
+ * FIXME
+ *   No documentation found.
+ */
+
+/***********************************************************************
+ *           ACMCHOOSEFORMAT (MSACM.203)
+ * FIXME
+ *   No documentation found.
+ */
+
+