diff options
author | qwx <devnull@localhost> | 2018-07-15 06:31:45 +0200 |
---|---|---|
committer | qwx <devnull@localhost> | 2018-07-15 06:31:45 +0200 |
commit | e7b1c1aad896c131fb30b6b0836ff65a63a6eae3 (patch) | |
tree | 38445c9897b78acc8af034f448e893373f76aec9 /sys/src/games | |
parent | 1a751a59393ad696cdd7f6db882e3d0118e0b54e (diff) |
doom: use wadfs to expose music lumps
launch wadfs after detecting main wad, exposing GENMIDI and music lumps
under /mnt/wad. /bin/dmus can then use them directly, and wadfs doesn't
need to be started manually.
Diffstat (limited to 'sys/src/games')
-rw-r--r-- | sys/src/games/doom/d_main.c | 5 | ||||
-rw-r--r-- | sys/src/games/doom/i_sound.c | 10 |
2 files changed, 6 insertions, 9 deletions
diff --git a/sys/src/games/doom/d_main.c b/sys/src/games/doom/d_main.c index 6f1e86215..706306912 100644 --- a/sys/src/games/doom/d_main.c +++ b/sys/src/games/doom/d_main.c @@ -635,6 +635,11 @@ void IdentifyVersion (void) gamemode = indetermined; return; } + if(gamemode != indetermined && rfork(RFPROC|RFFDG) == 0){ + close(2); + execl("/bin/games/wadfs", "wadfs", wadfile, nil); + sysfatal("execl: %r"); + } strncpy(basedefault, wadfile, sizeof(basedefault)-5); basedefault[sizeof(basedefault)-5] = '\0'; slash = strrchr(basedefault, '/'); diff --git a/sys/src/games/doom/i_sound.c b/sys/src/games/doom/i_sound.c index aff0a3433..e15e988ab 100644 --- a/sys/src/games/doom/i_sound.c +++ b/sys/src/games/doom/i_sound.c @@ -462,15 +462,7 @@ void I_PlaySong(musicinfo_t *m, int loop) case 0: dup(mpfd[1], 1); for(n=3; n<20; n++) close(n); - close(0); - snprint(name, sizeof(name), "/tmp/doom.%d", getpid()); - if(create(name, ORDWR|ORCLOSE, 0666) != 0) - sysfatal("create: %r"); - n = W_LumpLength(m->lumpnum); - if(write(0, m->data, n) != n) - sysfatal("write: %r"); - if(seek(0, 0, 0) != 0) - sysfatal("seek: %r"); + snprint(name, sizeof(name), "/mnt/wad/d_%s", m->name); if(bind("/fd/1", "/dev/audio", MREPL) < 0) sysfatal("bind: %r"); while(loop && fork() > 0){ |