X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=dosdemo;a=blobdiff_plain;f=src%2Fdos%2Fmusic.c;h=5f3b84a652b0190dd85cf71b46433ca46b0ae48c;hp=5ed6b486e29a0a0329d6e961a2142c05f798ffeb;hb=0b870b76705b3e597da3f6a11e0499deedbeee30;hpb=77db1ca18d5446dcda9e524261399b63c2cd1813 diff --git a/src/dos/music.c b/src/dos/music.c index 5ed6b48..5f3b84a 100644 --- a/src/dos/music.c +++ b/src/dos/music.c @@ -9,8 +9,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,9 +28,8 @@ 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); return -1; @@ -48,13 +57,17 @@ int music_open(const char *fname) fprintf(stderr, "failed to load music: %s: %s\n", fname, myerr); return -1; } + + MP_Init(mod); md_numchn = mod->numchn; + printf("opened module %s (%d channels)\n", fname, md_numchn); return 0; } void music_close(void) { if(mod) { + printf("shutting down music playback\n"); music_stop(); ML_Free(mod); mod = 0; @@ -78,4 +91,6 @@ void music_update(void) static void update_callback(void) { + MP_HandleTick(); + MD_SetBPM(mp_bpm); }