From f0af3c663a94f25b5d5de4ccc0672200631ea4d8 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Tue, 15 May 2018 20:13:36 +0300 Subject: [PATCH] Fix freezer automatic rtg<>native switching. --- ar.cpp | 13 ++++--------- gfxboard.cpp | 14 ++++++++++++++ include/gfxboard.h | 1 + 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/ar.cpp b/ar.cpp index e45cbe1a..7cb6f42e 100644 --- a/ar.cpp +++ b/ar.cpp @@ -216,6 +216,7 @@ #include "crc32.h" #include "akiko.h" #include "xwin.h" +#include "gfxboard.h" #define DEBUG #ifdef DEBUG @@ -270,20 +271,13 @@ static int stored_picasso_on = -1; static void cartridge_enter(void) { - struct amigadisplay *ad = &adisplays[0]; -#ifdef PICASSO96 - stored_picasso_on = ad->picasso_requested_on; - ad->picasso_requested_on = 0; -#endif + stored_picasso_on = gfxboard_set(0, false) ? 1 : 0; } static void cartridge_exit (void) { - struct amigadisplay *ad = &adisplays[0]; -#ifdef PICASSO96 if (stored_picasso_on > 0) - ad->picasso_requested_on = 1; + gfxboard_set(0, true); stored_picasso_on = -1; -#endif } static uae_u32 REGPARAM2 hrtmem3_bget (uaecptr addr) @@ -1086,6 +1080,7 @@ void check_prefs_changed_carts (int in_memory_reset) void action_replay_reset (bool hardreset, bool keyboardreset) { + stored_picasso_on = -1; ar_mapped = -1; if (hrtmemory) { if (isrestore ()) { diff --git a/gfxboard.cpp b/gfxboard.cpp index e73e5b6c..4fa2e074 100644 --- a/gfxboard.cpp +++ b/gfxboard.cpp @@ -653,6 +653,20 @@ static bool gfxboard_setmode_qemu(struct rtggfxboard *gb) return true; } +bool gfxboard_set(int monid, bool rtg) +{ + bool r; + struct amigadisplay *ad = &adisplays[monid]; + r = ad->picasso_on; + if (rtg) { + ad->picasso_requested_on = 1; + } else { + ad->picasso_requested_on = 0; + } + set_config_changed(); + return r; +} + void gfxboard_rtg_disable(int monid, int index) { if (monid > 0) diff --git a/include/gfxboard.h b/include/gfxboard.h index 7a01f1be..e470a433 100644 --- a/include/gfxboard.h +++ b/include/gfxboard.h @@ -31,6 +31,7 @@ extern void gfxboard_free_slot(int); extern bool gfxboard_rtg_enable_initial(int monid, int); extern void gfxboard_rtg_disable(int monid, int); extern bool gfxboard_init_board(struct autoconfig_info*); +extern bool gfxboard_set(int monid, bool rtg); extern struct gfxboard_func a2410_func; extern struct gfxboard_func harlequin_func; -- 2.47.3