diff --git a/CMakeLists.txt b/CMakeLists.txt index 0216fe9..88cc10e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -144,7 +144,7 @@ if (EMSCRIPTEN) else() list(APPEND SUMMARY_CDROM "SDL_mixer (wav|mp3|ogg...)") endif() -set(CDROM_DEVICE "playlist.txt" CACHE STRING "CDROM Device Name") +set(DEFAULT_PLAYLIST_PATH "playlist.txt" CACHE STRING "Default playlist path") # MIDI diff --git a/android/app/src/main/java/io/github/kichikuou/xsystem35/GameActivity.kt b/android/app/src/main/java/io/github/kichikuou/xsystem35/GameActivity.kt index 99df1f6..57344f3 100644 --- a/android/app/src/main/java/io/github/kichikuou/xsystem35/GameActivity.kt +++ b/android/app/src/main/java/io/github/kichikuou/xsystem35/GameActivity.kt @@ -61,7 +61,7 @@ class GameActivity : SDLActivity() { override fun getArguments(): Array { return arrayOf( "-gamedir", intent.getStringExtra(EXTRA_GAME_ROOT)!!, - "-devcd", Launcher.PLAYLIST_FILE) + "-playlist", Launcher.PLAYLIST_FILE) } override fun setTitle(title: CharSequence?) { diff --git a/config.h.in b/config.h.in index 153bc7c..ff80e50 100644 --- a/config.h.in +++ b/config.h.in @@ -11,7 +11,7 @@ #cmakedefine ENABLE_MIDI_PORTMIDI @ENABLE_MIDI_PORTMIDI@ #cmakedefine ENABLE_NLS @ENABLE_NLS@ -#cmakedefine CDROM_DEVICE "@CDROM_DEVICE@" +#cmakedefine DEFAULT_PLAYLIST_PATH "@DEFAULT_PLAYLIST_PATH@" #cmakedefine JOY_DEVICE "@JOY_DEVICE@" #cmakedefine MIDI_DEVICE "@MIDI_DEVICE@" #cmakedefine SEQ_DEVICE "@SEQ_DEVICE@" diff --git a/src/cdrom.bgm.c b/src/cdrom.bgm.c index 52744f7..e2b5457 100644 --- a/src/cdrom.bgm.c +++ b/src/cdrom.bgm.c @@ -28,7 +28,7 @@ static int current_track; -static int cdrom_bgm_init(char *dev) { +static int cdrom_bgm_init(char *playlist) { prv.cd_maxtrk = ald_get_maxno(DRIFILE_BGM) + 1; return OK; } diff --git a/src/cdrom.emscripten.c b/src/cdrom.emscripten.c index e4667a2..fdc3c17 100644 --- a/src/cdrom.emscripten.c +++ b/src/cdrom.emscripten.c @@ -27,7 +27,7 @@ static int frame_of_getpos = -1; -int cdrom_init(char *name) { +int cdrom_init(char *playlist) { return OK; } diff --git a/src/cdrom.mp3.c b/src/cdrom.mp3.c index 407a7da..be5ddfd 100644 --- a/src/cdrom.mp3.c +++ b/src/cdrom.mp3.c @@ -64,6 +64,9 @@ static int start_time; static int cdrom_init(char *playlist_path) { char buf[256]; + if (!playlist_path || !playlist_path[0]) + return NG; + FILE *fp = fopen(playlist_path, "r"); if (fp) { // Skip the first line diff --git a/src/music_cdrom.c b/src/music_cdrom.c index 130023a..3a2d0b2 100644 --- a/src/music_cdrom.c +++ b/src/music_cdrom.c @@ -38,11 +38,10 @@ extern cdromdevice_t cdrom_mp3; #define NATIVE_CD_DEVICE &cdrom_mp3 #endif -static char *dev = CDROM_DEVICE; +static char *playlist = DEFAULT_PLAYLIST_PATH; -void muscd_set_devicename(const char *name) { - if (0 == strcmp("none", name)) dev = NULL; - else dev = strdup(name); +void muscd_set_playlist(const char *name) { + playlist = strdup(name); } int muscd_init(void) { @@ -52,7 +51,7 @@ int muscd_init(void) { } else { prv.cddev = NATIVE_CD_DEVICE; } - prv.cddev->init(dev); + prv.cddev->init(playlist); prv.cd_current_track = 0; return OK; } diff --git a/src/music_cdrom.h b/src/music_cdrom.h index 23ecaa9..0a2569f 100644 --- a/src/music_cdrom.h +++ b/src/music_cdrom.h @@ -27,7 +27,7 @@ #include "portab.h" #include "ald_manager.h" -void muscd_set_devicename(const char *); +void muscd_set_playlist(const char *); int muscd_init(void); int muscd_init_bgm(DRIFILETYPE type, int base_no); int muscd_exit(void); diff --git a/src/xsystem35.c b/src/xsystem35.c index 5482b07..e75af0c 100644 --- a/src/xsystem35.c +++ b/src/xsystem35.c @@ -114,7 +114,7 @@ static void sys35_usage(boolean verbose) { puts(" -game game : enable game-specific hacks"); puts(" -saveformat fmt : save file format. 'xsystem35', 'system36' or 'system39' (default)"); puts(" -renderer name : set rendering driver name to 'name'"); - puts(" -devcd device : set cdrom device name to 'device'"); + puts(" -playlist file : load CD playlist from 'file'"); puts(" -devmidi device : set midi device name to 'device'"); puts(" -M? : select output midi methos"); @@ -275,9 +275,9 @@ static void sys35_ParseOption(int *argc, char **argv) { debugger_mode = DEBUGGER_DAP; } else if (0 == strcmp(argv[i], "-renderer")) { render_driver = argv[i + 1]; - } else if (0 == strcmp(argv[i], "-devcd")) { + } else if (0 == strcmp(argv[i], "-playlist") || 0 == strcmp(argv[i], "-devcd")) { if (argv[i + 1] != NULL) { - muscd_set_devicename(argv[i + 1]); + muscd_set_playlist(argv[i + 1]); } } else if (0 == strcmp(argv[i], "-devmidi")) { if (argv[i + 1] != NULL) { @@ -374,11 +374,14 @@ static void check_profile() { render_driver = param; } - /* CD-ROM device name の設定 */ - param = get_profile("cdrom_device"); + /* CD-ROM playlist */ + param = get_profile("playlist"); + if (!param) + param = get_profile("cdrom_device"); // For backwards compatibility if (param) { - muscd_set_devicename(param); + muscd_set_playlist(param); } + /* joystick device name の設定 */ param = get_profile("joy_device"); if (param) { diff --git a/xsys35rc.sample b/xsys35rc.sample index 2c09ea2..d4979c4 100644 --- a/xsys35rc.sample +++ b/xsys35rc.sample @@ -44,9 +44,10 @@ # Audio # -# CD-ROM device name. +# Path to the CD playlist. The playlist is a text file with one filename per +# line, in the order of CD tracks. -#cdrom_device: /dev/cdrom +#playlist: playlist.txt # device name of the raw midi device or sequencer device.