@@ -107,9 +107,11 @@ void dosubscr()
107107 for (int32_t y = -168 ; y <= 0 ; y += 3 *Hero.subscr_speed )
108108 {
109109 if (replay_version_check (19 ))
110+ {
110111 load_control_state ();
112+ script_drawing_commands.Clear ();
113+ }
111114 active_sub_yoff = y-playing_field_offset;
112- script_drawing_commands.Clear ();
113115 if (new_subscreen_active->script && FFCore.doscript (ScriptType::EngineSubscreen,0 ))
114116 ZScriptVersion::RunScript (ScriptType::EngineSubscreen, new_subscreen_active->script , 0 );
115117 do_dcounters ();
@@ -130,11 +132,12 @@ void dosubscr()
130132 else
131133 {
132134 // scroll the playing field (copy the copy we made)
133- blit (scrollbuf,framebuf,256 ,0 ,0 ,176 - 2 -y+ passive_subscreen_height,256 ,y);
135+ blit (scrollbuf,framebuf,256 ,0 ,0 ,y+ 168 + passive_subscreen_height,256 ,- y);
134136 }
135137
136138 draw_subscrs (framebuf,0 ,y,showtime,sspSCROLLING);
137- do_script_draws (framebuf, tmpscr, 0 , playing_field_offset);
139+ if (replay_version_check (19 ))
140+ do_script_draws (framebuf, tmpscr, 0 , playing_field_offset);
138141
139142 advanceframe (false );
140143
@@ -152,7 +155,8 @@ void dosubscr()
152155 {
153156 if (replay_version_check (0 , 11 ))
154157 load_control_state ();
155- script_drawing_commands.Clear ();
158+ if (replay_version_check (19 ))
159+ script_drawing_commands.Clear ();
156160 if (new_subscreen_active->script && FFCore.doscript (ScriptType::EngineSubscreen,0 ))
157161 ZScriptVersion::RunScript (ScriptType::EngineSubscreen, new_subscreen_active->script , 0 );
158162 auto pgnum = new_subscreen_active->curpage ;
@@ -434,7 +438,8 @@ void dosubscr()
434438
435439 // draw the passive and active subscreen
436440 draw_subscrs (framebuf,0 ,0 ,showtime,sspDOWN);
437- do_script_draws (framebuf, tmpscr, 0 , playing_field_offset);
441+ if (replay_version_check (19 ))
442+ do_script_draws (framebuf, tmpscr, 0 , playing_field_offset);
438443
439444 advanceframe (false );
440445 if (replay_version_check (11 ))
@@ -457,9 +462,11 @@ void dosubscr()
457462 for (int32_t y = 0 ; y >= -168 ; y -= 3 *Hero.subscr_speed )
458463 {
459464 if (replay_version_check (19 ))
465+ {
460466 load_control_state ();
467+ script_drawing_commands.Clear ();
468+ }
461469 active_sub_yoff = y-playing_field_offset;
462- script_drawing_commands.Clear ();
463470 if (new_subscreen_active->script && FFCore.doscript (ScriptType::EngineSubscreen,0 ))
464471 ZScriptVersion::RunScript (ScriptType::EngineSubscreen, new_subscreen_active->script , 0 );
465472 do_dcounters ();
@@ -480,11 +487,12 @@ void dosubscr()
480487 else
481488 {
482489 // scroll the playing field (copy the copy we made)
483- blit (scrollbuf,framebuf,256 ,0 ,0 ,176 - 2 -y+ passive_subscreen_height,256 ,y);
490+ blit (scrollbuf,framebuf,256 ,0 ,0 ,y+ 168 + passive_subscreen_height,256 ,- y);
484491 }
485492
486493 draw_subscrs (framebuf,0 ,y,showtime,sspSCROLLING);
487- do_script_draws (framebuf, tmpscr, 0 , playing_field_offset);
494+ if (replay_version_check (19 ))
495+ do_script_draws (framebuf, tmpscr, 0 , playing_field_offset);
488496 advanceframe (false );
489497
490498 if (Quit)
0 commit comments