startdemos issues
Posted: Tue Jan 19, 2021 10:53 pm
More questions and maybe bug reporting. FYI the reason I'm running across some of these things is that I'm investigating what it would take to make super8 work properly as a Quake engine launched by Quakestarter.
So, I've noticed a few things related to startdemo playback:
1. The "demos" command doesn't play any startdemos, and if any are currently running it terminates them. This is problematic for releases like DOPA or the DM4 Jam, which include an explicit "demos" command in quake.rc to get past the fact that Quakespasm normally won't run the startdemos.
2. The startdemos for Descent crash Super8 with nothing added to S8report.txt.
3. If a mod has startdemos, sometimes they don't loop. The condition to trigger this might be: "less than 3 startdemos" (edit: or not... see below). This seems to be because CL_NextDemo doesn't detect that it needs to reset demonum to 0, which in turn may be because the "clear demo list" loop in Host_Startdemos_f only clears out slots for the number of specified demos, rather than clearing out one more slot as a sort of terminator for the CL_NextDemo check to detect. I'm not sure why explicitly clearing out the slots is necessary here, since this code has changed from the original, but it looks suspicious.
Let me know if I should be dropping this sort of thing into GitHub issues. Or conversely if Super8 is all tied up and I should leave it alone.
So, I've noticed a few things related to startdemo playback:
1. The "demos" command doesn't play any startdemos, and if any are currently running it terminates them. This is problematic for releases like DOPA or the DM4 Jam, which include an explicit "demos" command in quake.rc to get past the fact that Quakespasm normally won't run the startdemos.
2. The startdemos for Descent crash Super8 with nothing added to S8report.txt.
3. If a mod has startdemos, sometimes they don't loop. The condition to trigger this might be: "less than 3 startdemos" (edit: or not... see below). This seems to be because CL_NextDemo doesn't detect that it needs to reset demonum to 0, which in turn may be because the "clear demo list" loop in Host_Startdemos_f only clears out slots for the number of specified demos, rather than clearing out one more slot as a sort of terminator for the CL_NextDemo check to detect. I'm not sure why explicitly clearing out the slots is necessary here, since this code has changed from the original, but it looks suspicious.
Let me know if I should be dropping this sort of thing into GitHub issues. Or conversely if Super8 is all tied up and I should leave it alone.
