@@ -84,15 +84,13 @@ const char* dsda_PlaybackName(void) {
84
84
}
85
85
86
86
void dsda_ExecutePlaybackOptions (void ) {
87
- if (playdemo_arg )
88
- {
89
- G_DeferedPlayDemo (playback_name );
90
- userdemo = true;
91
- }
92
- else if (playlump_arg ) {
87
+ if (playlump_arg ) {
93
88
if (W_CheckNumForName (playback_name ) == LUMP_NOT_FOUND )
94
89
I_Error ("Unable to find required internal demo lump \"%s\"" , playback_name );
90
+ }
95
91
92
+ if (playdemo_arg )
93
+ {
96
94
G_DeferedPlayDemo (playback_name );
97
95
userdemo = true;
98
96
}
@@ -125,7 +123,7 @@ static void dsda_UpdatePlaybackName(const char* name, dboolean require_file) {
125
123
playback_name = Z_Strdup (name );
126
124
127
125
if (require_file )
128
- playback_filename = I_RequireFile (playback_name , ".lmp" );
126
+ playback_filename = I_FindFile (playback_name , ".lmp" );
129
127
else
130
128
playback_filename = NULL ;
131
129
}
@@ -137,13 +135,17 @@ const char* dsda_ParsePlaybackOptions(void) {
137
135
if (arg -> found ) {
138
136
playdemo_arg = arg ;
139
137
dsda_UpdatePlaybackName (arg -> value .v_string , true);
138
+ // fall back to lump if file not found
139
+ if (!playback_filename )
140
+ playlump_arg = arg ;
140
141
return playback_filename ;
141
142
}
142
143
143
144
arg = dsda_Arg (dsda_arg_playlump );
144
145
if (arg -> found ) {
145
146
playlump_arg = arg ;
146
147
dsda_UpdatePlaybackName (arg -> value .v_string , false);
148
+ playdemo_arg = arg ;
147
149
return playback_filename ;
148
150
}
149
151
@@ -152,13 +154,19 @@ const char* dsda_ParsePlaybackOptions(void) {
152
154
fastdemo_arg = arg ;
153
155
fastdemo = true;
154
156
dsda_UpdatePlaybackName (arg -> value .v_string , true);
157
+ // fall back to lump if file not found
158
+ if (!playback_filename )
159
+ playlump_arg = arg ;
155
160
return playback_filename ;
156
161
}
157
162
158
163
arg = dsda_Arg (dsda_arg_timedemo );
159
164
if (arg -> found ) {
160
165
timedemo_arg = arg ;
161
166
dsda_UpdatePlaybackName (arg -> value .v_string , true);
167
+ // fall back to lump if file not found
168
+ if (!playback_filename )
169
+ playlump_arg = arg ;
162
170
return playback_filename ;
163
171
}
164
172
@@ -167,6 +175,9 @@ const char* dsda_ParsePlaybackOptions(void) {
167
175
recordfromto_arg = arg ;
168
176
dsda_SetDemoBaseName (arg -> value .v_string_array [1 ]);
169
177
dsda_UpdatePlaybackName (arg -> value .v_string_array [0 ], true);
178
+ // require a file
179
+ if (!playback_filename )
180
+ playback_filename = I_RequireFile (arg -> value .v_string_array [0 ], ".lmp" );
170
181
return playback_filename ;
171
182
}
172
183
0 commit comments