X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=dosdemo;a=blobdiff_plain;f=src%2Fdos%2Fmusic.c;fp=src%2Fdos%2Fmusic.c;h=5aa4fac1c76e42ceab554c37448c153fdfbb3d2b;hp=fa0a598c462d73302738b40d1d7b7a9143f9fd56;hb=17fa4a9ede6e783b149702da0d9cce3048b312e5;hpb=47ba3715f326ca38793826e3330545b4517f4f5d diff --git a/src/dos/music.c b/src/dos/music.c index fa0a598..5aa4fac 100644 --- a/src/dos/music.c +++ b/src/dos/music.c @@ -1,6 +1,7 @@ #include #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;