* Added more stubs for bochs 1.3 once again still mostly wrong
* but bochs gets further now. 12-14-02
*
+ * [8-18-03] AG: I've added PlaySound/A/W and implemented sndPlaySoundA/W to
+ * call these. I've also tried to match the parameter names and types with the
+ * correct ones.
+ *
*/
#include <windows.h>
+typedef UINT *LPUINT;
+#include <mmsystem.h>
+#define NDEBUG
+#include <debug.h>
+
+#define NEAR
+#define FAR
+
+/* general constants */
+#define MAXPNAMELEN 32 /* max product name length (including NULL) */
+#define MAXERRORLENGTH 256 /* max error text length (including NULL) */
+#define MAX_JOYSTICKOEMVXDNAME 260 /* max oem vxd name length (including NULL) */
-DECLARE_HANDLE(HWAVEOUT); // mmsystem.h
-UINT
+// mmsystem.h ends here
+
+MMRESULT
WINAPI
-waveOutReset(HWAVEOUT hWaveOut)
+waveOutReset(HWAVEOUT hwo)
{
+ // Possible return values:
+ // MMSYSERR_INVALHANDLE, MMSYSERR_NODRIVER, MMSYSERR_NOMEM, MMSYSERR_NOTSUPPORTED
+
DbgPrint("waveOutReset stub\n");
+ UNIMPLEMENTED;
return 1;
}
-UINT WINAPI waveOutWrite(HWAVEOUT hWaveOut, LPCSTR pszSoundA,
- UINT uSize)
+MMRESULT WINAPI waveOutWrite(HWAVEOUT hwo, LPWAVEHDR pwh,
+ UINT cbwh)
{
+ // Posible return values:
+ // MMSYSERR_INVALHANDLE, MMSYSERR_NODRIVER, MMSYSERR_NOMEM, WAVERR_UNPREPARED
+
DbgPrint("waveOutWrite stub\n");
+ UNIMPLEMENTED;
return 1;
}
+// PlaySound() needs exporting
+#undef PlaySound
+
-WINBOOL
-STDCALL
-sndPlaySoundA(LPCSTR pszSoundA, UINT uFlags)
+BOOL WINAPI
+PlaySoundA(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound)
{
- DbgPrint("sndPlaySoundA stub\n");
- return 1;
+ DbgPrint("PlaySoundA stub\n");
+ UNIMPLEMENTED;
+ return TRUE;
}
-WINBOOL
-STDCALL
-sndPlaySoundW(LPCSTR pszSoundA, UINT uFlags)
+
+BOOL WINAPI
+PlaySoundW(LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound)
{
- DbgPrint("sndPlaySoundW stub\n");
- return 1;
+ DbgPrint("PlaySoundW stub\n");
+ UNIMPLEMENTED;
+ return TRUE;
+}
+
+
+BOOL WINAPI
+PlaySound(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound)
+{
+ // ANSI?
+ return PlaySoundA(pszSound, hmod, fdwSound);
+}
+
+
+BOOL
+WINAPI
+sndPlaySoundA(LPCSTR lpszSound, UINT fuSound)
+{
+ fuSound &= SND_ASYNC | SND_LOOP | SND_MEMORY | SND_NODEFAULT | SND_NOSTOP | SND_SYNC;
+ return PlaySoundA(lpszSound, NULL, fuSound);
}
-WINBOOL
-STDCALL
-midiOutReset(HWAVEOUT hWaveOut)
+BOOL
+WINAPI
+sndPlaySoundW(LPCWSTR lpszSound, UINT fuSound)
+{
+ fuSound &= SND_ASYNC | SND_LOOP | SND_MEMORY | SND_NODEFAULT | SND_NOSTOP | SND_SYNC;
+ return PlaySoundW(lpszSound, NULL, fuSound);
+}
+
+MMRESULT
+WINAPI
+midiOutReset(HMIDIOUT hmo)
{
DbgPrint("midiOutReset stub\n");
+ UNIMPLEMENTED;
return 1;
}
-WINBOOL
-STDCALL
-waveOutPrepareHeader(HWAVEOUT hWaveOut, LPCSTR pszSoundA,
- UINT uSize)
+MMRESULT
+WINAPI
+waveOutPrepareHeader(HWAVEOUT hwo, LPWAVEHDR pwh,
+ UINT cbwh)
{
DbgPrint("waveOutPrepareHeader stub\n");
+ UNIMPLEMENTED;
+ pwh->dwFlags |= WHDR_PREPARED;
return 1;
}
-WINBOOL
-STDCALL
-waveOutGetErrorTextA(HWAVEOUT hWaveOut, LPCSTR pszSoundA,
- UINT uSize)
+MMRESULT
+WINAPI
+waveOutGetErrorTextA(MMRESULT mmrError, LPSTR pszText,
+ UINT cchText)
{
DbgPrint("waveOutGetErrorTextA stub\n");
+ UNIMPLEMENTED;
return 1;
}
-WINBOOL
-STDCALL
-waveOutOpen(HWAVEOUT* lphWaveOut, UINT uDeviceID,
- const lpFormat, DWORD dwCallback,
- DWORD dwInstance, DWORD dwFlags)
+MMRESULT
+WINAPI
+waveOutOpen(LPHWAVEOUT pwho, UINT uDeviceID,
+ LPCWAVEFORMATEX pwfx, DWORD dwCallback,
+ DWORD dwCallbackInstance, DWORD fdwOpen)
{
DbgPrint("waveOutOpen stub\n");
+ UNIMPLEMENTED;
return 1;
}
-UINT
+MMRESULT
WINAPI
-waveOutClose(HWAVEOUT hWaveOut)
+waveOutClose(HWAVEOUT hwo)
{
DbgPrint("waveOutClose stub\n");
return 1;
}
-WINBOOL
-STDCALL
-midiOutClose(HWAVEOUT hWaveOut)
+MMRESULT
+WINAPI
+midiOutClose(HMIDIOUT hmo)
{
DbgPrint("midiOutClose stub\n");
return 1;
}
-WINBOOL
-STDCALL
-midiOutUnprepareHeader(HWAVEOUT hWaveOut, LPCSTR pszSoundA,
- UINT uSize)
+MMRESULT
+WINAPI
+midiOutUnprepareHeader(HWAVEOUT hwo, LPMIDIHDR pwh,
+ UINT cbwh)
{
DbgPrint("midiOutUnprepareHeader stub\n");
return 1;
}
-WINBOOL
-STDCALL
-waveOutUnprepareHeader(HWAVEOUT hWaveOut, LPCSTR pszSoundA,
- UINT uSize)
+MMRESULT
+WINAPI
+waveOutUnprepareHeader(HWAVEOUT hwo, LPWAVEHDR pwh,
+ UINT cbwh)
{
DbgPrint("waveOutUnprepareHeader stub\n");
+ pwh->dwFlags &= ! WHDR_PREPARED;
return 1;
}
-WINBOOL
-STDCALL
-midiOutPrepareHeader(HWAVEOUT hWaveOut, LPCSTR pszSoundA,
- UINT uSize)
+MMRESULT
+WINAPI
+midiOutPrepareHeader(HMIDIOUT hmo, LPMIDIHDR lpMidiOutHdr,
+ UINT cbMidiOutHdr)
{
DbgPrint("midiOutPrepareHeader stub\n");
return 1;
}
-WINBOOL
-STDCALL
-midiOutLongMsg(HWAVEOUT hWaveOut, LPCSTR pszSoundA,
- UINT uSize)
+MMRESULT
+WINAPI
+midiOutLongMsg(HMIDIOUT hmo, LPMIDIHDR lpMidiOutHdr,
+ UINT cbMidiOutHdr)
{
DbgPrint("midiOutLongMsg stub\n");
return 1;
}
-UINT/*MMRESULT*/
-STDCALL
-timeBeginPeriod(UINT uPeriod)
-{
- DbgPrint("timeBeginPeriod stub\n");
- return 97/*TIMERR_NOCANDO*/;
-}
-
DWORD
-STDCALL
+WINAPI
timeGetTime(VOID)
{
DbgPrint("timeGetTime stub\n");
return 0;
}
-UINT/*MMRESULT*/
-STDCALL
-timeEndPeriod(UINT uPeriod)
+MMRESULT WINAPI joyGetDevCapsA(UINT uJoyID, LPJOYCAPSA pjc, UINT cbjc)
+{
+ DbgPrint("joyGetDevCapsA stub\n");
+ return MMSYSERR_ERROR;
+}
+
+UINT WINAPI joyGetNumDevs(void)
+{
+ DbgPrint("joyGetNumDevs stub\n");
+ return 0;
+}
+
+MMRESULT WINAPI joyGetPosEx(UINT uJoyID, LPJOYINFOEX pji)
+{
+ DbgPrint("joyGetPosEx stub\n");
+ return MMSYSERR_ERROR;
+}
+
+MCIERROR WINAPI mciSendCommandA(MCIDEVICEID mciId, UINT uMsg, DWORD dwParam1, DWORD dwParam2)
{
- DbgPrint("timeEndPeriod stub\n");
- return 97/*TIMERR_NOCANDO*/;
+ DbgPrint("mciSendCommandA stub\n");
+ return MMSYSERR_ERROR;
}