Skip to content

Commit e82b085

Browse files
committed
fix(zc): fix a couple subscreen drawing issues
1 parent cb2d6b5 commit e82b085

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

src/zc/zc_subscr.cpp

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)