static bool nosignal_trigger;
int display_reset;
static evt_t line_start_cycles;
+static bool initial_frame;
#define LOF_TOGGLES_NEEDED 3
//#define NLACE_CNT_NEEDED 50
if (!vsync_rendered) {
frame_time_t start, end;
start = read_processor_time();
- vsync_handle_redraw(lof_store, lof_changed, bplcon0, bplcon3, isvsync_chipset() >= 0);
+ vsync_handle_redraw(lof_store, lof_changed, bplcon0, bplcon3, isvsync_chipset() >= 0, initial_frame);
+ initial_frame = false;
vsync_rendered = true;
end = read_processor_time();
frameskiptime += end - start;
{
if (hardreset) {
board_prefs_changed(-1, -1);
+ initial_frame = true;
}
target_reset();
return changed != 0;
}
-void vsync_handle_redraw(int long_field, int lof_changed, uae_u16 bplcon0p, uae_u16 bplcon3p, bool drawlines)
+void vsync_handle_redraw(int long_field, int lof_changed, uae_u16 bplcon0p, uae_u16 bplcon3p, bool drawlines, bool initial)
{
int monid = 0;
struct amigadisplay *ad = &adisplays[monid];
if (lof_changed || interlace_seen <= 0 || (currprefs.gfx_iscanlines && interlace_seen > 0) || last_redraw_point >= 2 || long_field || doublescan < 0) {
last_redraw_point = 0;
- if (ad->framecnt == 0) {
- finish_drawing_frame(drawlines);
+ if (!initial) {
+ if (ad->framecnt == 0) {
+ finish_drawing_frame(drawlines);
#ifdef AVIOUTPUT
- if (!ad->picasso_on) {
- frame_drawn(monid);
- }
+ if (!ad->picasso_on) {
+ frame_drawn(monid);
+ }
#endif
+ }
+ count_frame(monid);
}
#if 0
if (interlace_seen > 0) {
return;
}
- count_frame(monid);
if (ad->framecnt == 0) {
init_drawing_frame();
};
extern void hsync_record_line_state (int lineno, enum nln_how, int changed);
-extern void vsync_handle_redraw (int long_field, int lof_changed, uae_u16, uae_u16, bool drawlines);
+extern void vsync_handle_redraw (int long_field, int lof_changed, uae_u16, uae_u16, bool drawlines, bool initial);
extern bool vsync_handle_check (void);
extern void draw_lines(int end, int section);
extern void init_hardware_for_drawing_frame (void);
quit_program = 0;
#ifdef SAVESTATE
- if (savestate_state == STATE_DORESTORE)
+ if (savestate_state == STATE_DORESTORE) {
savestate_state = STATE_RESTORE;
- if (savestate_state == STATE_RESTORE)
+ }
+ if (savestate_state == STATE_RESTORE) {
restore_state (savestate_fname);
- else if (savestate_state == STATE_REWIND)
+ cpu_hardreset = 1;
+ } else if (savestate_state == STATE_REWIND) {
savestate_rewind ();
+ }
#endif
- if (cpu_hardreset)
+ if (cpu_hardreset) {
m68k_reset_restore();
+ }
prefs_changed_cpu();
build_cpufunctbl();
set_x_funcs();