fixed music playback in dos
[dosdemo] / src / dos / music.c
index fa0a598..5aa4fac 100644 (file)
@@ -1,6 +1,7 @@
 #include <stdlib.h>
 #include "music.h"
 #include "mikmod.h"
+#include "logger.h"
 
 static void update_callback(void);
 
@@ -9,8 +10,18 @@ static int initialized;
 
 static int init(void)
 {
+       md_mixfreq = 44100;
+       md_dmabufsize = 20000;
+       md_mode = DMODE_STEREO | DMODE_16BITS;/* | DMODE_INTERP;*/
+       md_device = 0;
+
+       ML_RegisterLoader(&load_m15);
        ML_RegisterLoader(&load_mod);
+       ML_RegisterLoader(&load_mtm);
        ML_RegisterLoader(&load_s3m);
+       ML_RegisterLoader(&load_stm);
+       ML_RegisterLoader(&load_ult);
+       ML_RegisterLoader(&load_uni);
        ML_RegisterLoader(&load_xm);
 
        MD_RegisterDriver(&drv_nos);
@@ -18,15 +29,14 @@ static int init(void)
        MD_RegisterDriver(&drv_sb);
        MD_RegisterDriver(&drv_gus);
 
-       MD_RegisterPlayer(&update_callback);
+       MD_RegisterPlayer(update_callback);
 
-       /*md_mode |= DMODE_INTERP;*/
        if(!MD_Init()) {
-               fprintf(stderr, "mikmod init failed: %s\n", myerr);
+               printlog("mikmod init failed: %s\n", myerr);
                return -1;
        }
-       printf("using mikmod driver %s\n", md_driver->Name);
-       printf(" %d bits, %s, %s mixing at %d Hz\n", md_mode & DMODE_16BITS ? 16 : 8,
+       printlog("using mikmod driver %s\n", md_driver->Name);
+       printlog(" %d bits, %s, %s mixing at %d Hz\n", md_mode & DMODE_16BITS ? 16 : 8,
                        md_mode & DMODE_STEREO ? "stereo" : "mono",
                        md_mode & DMODE_INTERP ? "interpolated" : "normal",
                        md_mixfreq);
@@ -45,16 +55,20 @@ int music_open(const char *fname)
        }
 
        if(!(mod = ML_LoadFN((const signed char*)fname))) {
-               fprintf(stderr, "failed to load music: %s: %s\n", fname, myerr);
+               printlog("failed to load music: %s: %s\n", fname, myerr);
                return -1;
        }
+
+       MP_Init(mod);
        md_numchn = mod->numchn;
+       printlog("opened module %s (%d channels)\n", fname, md_numchn);
        return 0;
 }
 
 void music_close(void)
 {
        if(mod) {
+               printlog("shutting down music playback\n");
                music_stop();
                ML_Free(mod);
                mod = 0;