VIDEO_STATE_REC_OFF | \
VIDEO_STATE_PAUSE_OFF | \
VIDEO_STATE_FFWD_OFF | \
+ VIDEO_STATE_WARP_OFF | \
+ VIDEO_STATE_WARP2_OFF | \
VIDEO_STATE_PBEND_OFF | \
VIDEO_STATE_1STEP_OFF)
#define VIDEO_PRESS_OFF (VIDEO_PRESS_PLAY_OFF | \
VIDEO_STATE_REC_ON | \
VIDEO_STATE_PAUSE_ON | \
VIDEO_STATE_FFWD_ON | \
+ VIDEO_STATE_WARP_ON | \
+ VIDEO_STATE_WARP2_ON | \
VIDEO_STATE_PBEND_ON | \
VIDEO_STATE_1STEP_ON)
#define VIDEO_PRESS_ON (VIDEO_PRESS_PLAY_ON | \
DrawVideoDisplay(state, VIDEO_DISPLAY_SYMBOL_ONLY);
}
+void DrawVideoDisplayPlayState()
+{
+ int state = 0;
+
+ DrawVideoDisplay(VIDEO_STATE_OFF, 0);
+
+ state |= VIDEO_STATE_PLAY_ON;
+
+ if (tape.pausing)
+ {
+ state |= VIDEO_STATE_PAUSE_ON;
+ }
+ else
+ {
+ if (tape.deactivate_display)
+ state |= VIDEO_STATE_WARP2_ON;
+ else if (tape.warp_forward)
+ state |= VIDEO_STATE_WARP_ON;
+ else if (tape.fast_forward)
+ state |= VIDEO_STATE_FFWD_ON;
+
+ if (tape.pause_before_end)
+ state |= VIDEO_STATE_PBEND_ON;
+ }
+
+ // draw labels and symbols separately to prevent labels overlapping symbols
+ DrawVideoDisplayLabel(state);
+ DrawVideoDisplaySymbol(state);
+}
+
void DrawCompleteVideoDisplay()
{
struct GraphicInfo *g_tape = &graphic_info[IMG_BACKGROUND_TAPE];
void TapeTogglePause(boolean toggle_manual)
{
- int state = 0;
-
tape.pausing = !tape.pausing;
if (tape.single_step && toggle_manual)
tape.single_step = FALSE;
- state |= VIDEO_STATE_PAUSE(tape.pausing);
-
- if (tape.pause_before_end)
- state |= VIDEO_STATE_PBEND(!tape.pausing);
- else if (tape.fast_forward)
- state |= VIDEO_STATE_FFWD(!tape.pausing);
-
- if (tape.playing)
- state |= VIDEO_STATE_PLAY_ON;
- else
- state |= VIDEO_STATE_1STEP(tape.single_step);
-
- DrawVideoDisplay(state, 0);
+ DrawVideoDisplayPlayState();
- if (tape.warp_forward)
+ if (tape.deactivate_display)
{
if (tape.pausing)
- {
TapeDeactivateDisplayOff(game_status == GAME_MODE_PLAYING);
- }
- else if (tape.deactivate_display)
- {
- TapeDeactivateDisplayOn();
-
- DrawVideoDisplaySymbol(VIDEO_STATE_WARP_ON);
- }
else
- {
- DrawVideoDisplaySymbol(VIDEO_STATE_WARP2_ON);
- }
+ TapeDeactivateDisplayOn();
+ }
- if (tape.quick_resume)
- {
- tape.quick_resume = FALSE;
+ if (tape.quick_resume)
+ {
+ tape.quick_resume = FALSE;
- TapeStopWarpForward();
- TapeAppendRecording();
+ TapeStopWarpForward();
+ TapeAppendRecording();
- if (!CheckEngineSnapshotSingle())
- SaveEngineSnapshotSingle();
+ if (!CheckEngineSnapshotSingle())
+ SaveEngineSnapshotSingle();
- // restart step/move snapshots after quick loading tape
- SaveEngineSnapshotToListInitial();
- }
+ // restart step/move snapshots after quick loading tape
+ SaveEngineSnapshotToListInitial();
}
if (setup.show_snapshot_buttons &&
}
}
+ if (tape.counter >= tape.length) /* end of tape reached */
+ {
+ if (tape.warp_forward && !tape.auto_play)
+ TapeTogglePause(TAPE_TOGGLE_MANUAL);
+ else
+ TapeStop();
+
+ return NULL;
+ }
+
if (update_video_display && !tape.deactivate_display)
{
if (tape.pause_before_end)
DrawVideoDisplaySymbol(VIDEO_STATE_WARP2_ON);
}
- if (tape.counter >= tape.length) /* end of tape reached */
- {
- if (tape.warp_forward && !tape.auto_play)
- TapeTogglePause(TAPE_TOGGLE_MANUAL);
- else
- TapeStop();
-
- return NULL;
- }
-
for (i = 0; i < MAX_PLAYERS; i++)
action[i] = tape.pos[tape.counter].action[i];