diff options
author | orudge <orudge@openttd.org> | 2005-07-23 16:08:05 +0000 |
---|---|---|
committer | orudge <orudge@openttd.org> | 2005-07-23 16:08:05 +0000 |
commit | 1e70ba752e03199873298a13c1879b38413dacd3 (patch) | |
tree | e41fa13908e1606a249ced650db92a4909573255 /music | |
parent | 10fd03e222dfd78abd7e9c78a215d4b8bc36cf3b (diff) | |
download | openttd-1e70ba752e03199873298a13c1879b38413dacd3.tar.xz |
(svn r2689) - Split OS/2 music driver into os2_m.c, update project file
Diffstat (limited to 'music')
-rw-r--r-- | music/os2_m.c | 76 | ||||
-rw-r--r-- | music/os2_m.h | 8 |
2 files changed, 84 insertions, 0 deletions
diff --git a/music/os2_m.c b/music/os2_m.c new file mode 100644 index 000000000..d176950d8 --- /dev/null +++ b/music/os2_m.c @@ -0,0 +1,76 @@ +#include "stdafx.h" +#include "openttd.h" +#include "music/os2_m.h" + +#define INCL_DOS +#define INCL_OS2MM +#define INCL_WIN + +#include <stdarg.h> +#include <os2.h> +#include <os2me.h> + +/********************** + * OS/2 MIDI PLAYER + **********************/ + +/* Interesting how similar the MCI API in OS/2 is to the Win32 MCI API, + * eh? Anyone would think they both came from the same place originally! ;) + */ + +static long CDECL MidiSendCommand(const char *cmd, ...) +{ + va_list va; + char buf[512]; + va_start(va, cmd); + vsprintf(buf, cmd, va); + va_end(va); + return mciSendString(buf, NULL, 0, NULL, 0); +} + +static void OS2MidiPlaySong(const char *filename) +{ + MidiSendCommand("close all"); + + if (MidiSendCommand("open %s type sequencer alias song", filename) != 0) + return; + + MidiSendCommand("play song from 0"); +} + +static void OS2MidiStopSong(void) +{ + MidiSendCommand("close all"); +} + +static void OS2MidiSetVolume(byte vol) +{ + MidiSendCommand("set song audio volume %d", ((vol/127)*100)); +} + +static bool OS2MidiIsSongPlaying(void) +{ + char buf[16]; + mciSendString("status song mode", buf, sizeof(buf), NULL, 0); + return strcmp(buf, "playing") == 0 || strcmp(buf, "seeking") == 0; +} + +static const char *OS2MidiStart(const char * const *parm) +{ + return 0; +} + +static void OS2MidiStop(void) +{ + MidiSendCommand("close all"); +} + +const HalMusicDriver _os2_music_driver = { + OS2MidiStart, + OS2MidiStop, + OS2MidiPlaySong, + OS2MidiStopSong, + OS2MidiIsSongPlaying, + OS2MidiSetVolume, +}; + diff --git a/music/os2_m.h b/music/os2_m.h new file mode 100644 index 000000000..7a36a1a33 --- /dev/null +++ b/music/os2_m.h @@ -0,0 +1,8 @@ +#ifndef MUSIC_OS2_H +#define MUSIC_OS2_H + +#include "hal.h" + +extern const HalMusicDriver _os2_music_driver; + +#endif |