From ab8f19856655e3087b258009ad65ba4e2f3c1f21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krystian=20Bac=C5=82awski?= Date: Thu, 2 Jan 2025 21:32:13 +0100 Subject: [PATCH 1/3] Make warp mode controllable by Amiga code. --- patches/fs-uae/uaelib-warpmode.diff | 32 +++++++++++++++++++++++++++++ patches/series | 3 ++- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 patches/fs-uae/uaelib-warpmode.diff diff --git a/patches/fs-uae/uaelib-warpmode.diff b/patches/fs-uae/uaelib-warpmode.diff new file mode 100644 index 0000000..262cd1b --- /dev/null +++ b/patches/fs-uae/uaelib-warpmode.diff @@ -0,0 +1,32 @@ +Index: demoscene-toolchain/submodules/fs-uae/src/uaelib.cpp +=================================================================== +--- demoscene-toolchain.orig/submodules/fs-uae/src/uaelib.cpp ++++ demoscene-toolchain/submodules/fs-uae/src/uaelib.cpp +@@ -27,6 +27,7 @@ + #include "gensound.h" + #include "picasso96.h" + #include "filesys.h" ++#include "inputdevice.h" + + /* + * Returns UAE Version +@@ -329,6 +330,11 @@ static uae_u32 emulib_Minimize (void) + return 0; // OSDEP_minimize_uae(); + } + ++static uae_u32 emulib_WarpMode(uae_u32 mode) { ++ warpmode(mode ? 1 : 0); ++ return 1; ++} ++ + static int native_dos_op(TrapContext *ctx, uae_u32 mode, uae_u32 p1, uae_u32 p2, uae_u32 p3) + { + TCHAR tmp[MAX_DPATH]; +@@ -373,6 +379,7 @@ static uae_u32 uaelib_demux_common(TrapC + case 15: return emulib_Debug(); + + case 40: return emulib_Log(ARG1); ++ case 41: return emulib_WarpMode(ARG1); + + case 68: return emulib_Minimize(); + case 69: return emulib_ExecuteNativeCode(); diff --git a/patches/series b/patches/series index ea3632f..b01644e 100644 --- a/patches/series +++ b/patches/series @@ -1,6 +1,7 @@ ld-extra-chip-sections.patch gcc-2.95.3-amigahunk-fix.patch gcc-2.95.3-bss-section.patch +gdb-line-addr-fix.patch fs-uae/break-on-illegal.diff fs-uae/break-on-sigint.diff fs-uae/break-at-start.diff @@ -12,4 +13,4 @@ fs-uae/uaelib-log.diff fs-uae/data-path-macos.diff fs-uae/silence-logs.diff fs-uae/debug-msg-fix.diff -gdb-line-addr-fix.patch +fs-uae/uaelib-warpmode.diff From 5eb346bdcc6009508034ac074a0247df8e21e158 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krystian=20Bac=C5=82awski?= Date: Fri, 3 Jan 2025 07:55:22 +0100 Subject: [PATCH 2/3] Correctly set warp mode via FS-UAE function. --- patches/fs-uae/uaelib-warpmode.diff | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/fs-uae/uaelib-warpmode.diff b/patches/fs-uae/uaelib-warpmode.diff index 262cd1b..147b5a7 100644 --- a/patches/fs-uae/uaelib-warpmode.diff +++ b/patches/fs-uae/uaelib-warpmode.diff @@ -6,7 +6,7 @@ Index: demoscene-toolchain/submodules/fs-uae/src/uaelib.cpp #include "gensound.h" #include "picasso96.h" #include "filesys.h" -+#include "inputdevice.h" ++#include "fsemu-control.h" /* * Returns UAE Version @@ -15,7 +15,7 @@ Index: demoscene-toolchain/submodules/fs-uae/src/uaelib.cpp } +static uae_u32 emulib_WarpMode(uae_u32 mode) { -+ warpmode(mode ? 1 : 0); ++ fsemu_control_set_warp(mode ? 1 : 0); + return 1; +} + From 0b1b0da70bd72f76f261f8c8d26489cf9d778d7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krystian=20Bac=C5=82awski?= Date: Fri, 3 Jan 2025 08:56:49 +0100 Subject: [PATCH 3/3] Remove noisy output on warp enable / disable. --- patches/fs-uae/uaelib-warpmode.diff | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/patches/fs-uae/uaelib-warpmode.diff b/patches/fs-uae/uaelib-warpmode.diff index 147b5a7..ee3dc8a 100644 --- a/patches/fs-uae/uaelib-warpmode.diff +++ b/patches/fs-uae/uaelib-warpmode.diff @@ -30,3 +30,15 @@ Index: demoscene-toolchain/submodules/fs-uae/src/uaelib.cpp case 68: return emulib_Minimize(); case 69: return emulib_ExecuteNativeCode(); +Index: demoscene-toolchain/submodules/fs-uae/fsemu/src/fsemu-frame.c +=================================================================== +--- demoscene-toolchain.orig/submodules/fs-uae/fsemu/src/fsemu-frame.c ++++ demoscene-toolchain/submodules/fs-uae/fsemu/src/fsemu-frame.c +@@ -1014,7 +1014,6 @@ static void fsemu_frame_start_handle_com + fsemu_action_t action; + fsemu_action_state_t state; + while (fsemu_input_next_command(&action, &state)) { +- printf(" ----- fsemu frame command %04x %04x\n", action, state); + fsemu_frame_start_handle_command(action, state); + } + }