From: Toni Wilen Date: Sat, 6 Oct 2018 15:50:16 +0000 (+0300) Subject: 4100b7 X-Git-Tag: 4100~58 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=99dc9edfaa4cf7fc86dfb7218b63e1f46c0fd7df;p=francis%2Fwinuae.git 4100b7 --- diff --git a/debug.cpp b/debug.cpp index a85d3112..e6c52577 100644 --- a/debug.cpp +++ b/debug.cpp @@ -205,7 +205,7 @@ static const TCHAR help[] = { _T(" W 'string' Write into Amiga memory.\n") _T(" Wf , fill memory.\n") _T(" Wc , copy memory.\n") - _T(" w
[[.x]] (read/write/opcode/freeze/mustchange).\n") + _T(" w
[[.x]] (read/write/opcode) (freeze/mustchange).\n") _T(" Add/remove memory watchpoints.\n") _T(" wd [<0-1>] Enable illegal access logger. 1 = enable break.\n") _T(" L [] Load a block of Amiga memory.\n") diff --git a/od-win32/cloanto/RetroPlatformIPC-doc.txt b/od-win32/cloanto/RetroPlatformIPC-doc.txt index b6e0e027..8e8c738e 100644 --- a/od-win32/cloanto/RetroPlatformIPC-doc.txt +++ b/od-win32/cloanto/RetroPlatformIPC-doc.txt @@ -4,12 +4,12 @@ Client : Cloanto Corporation Support : http://www.retroplatform.com Legal : CONFIDENTIAL TRADE SECRET PROPERTY OF CLOANTO CORPORATION - : Copyright © Cloanto Corporation 2007-2017. + : Copyright © Cloanto Corporation 2007-2018. : All rights reserved, except where licensed, : assigned or transferred by contract. Authors : os, m Created : 2007-08-23 10:08:25 - Updated : 2017-09-10 12:13:00 + Updated : 2018-10-04 16:40:44 Comment : Reference for RetroPlatformIPC.h (RP Player interprocess communication include file) *****************************************************************************/ @@ -20,14 +20,6 @@ Guest-to-Host Messages **************************************************************************** -Message: - RP_IPC_TO_HOST_REGISTER -Description: - this is a private message and is automatically sent - by the RPInitializeGuest() function - to register the caller as a RetroPlatform guest - - Notes about startup: >>> At startup time, the guest sends initialization messages @@ -219,7 +211,10 @@ Description: or to notify the host about the status of a joystick (multiple buttons); device LED indicators (e.g. the disk activity ones, not the joystick ones) can also be "blinked", i.e. the host will turn the - LED on and then off again after the specified amount of time + LED on and then off again after the specified amount of time; + being a low-priority notification with no response from the host, + it is advised that guests send RP_IPC_TO_HOST_DEVICEACTIVITY + using the RPPostMessage() function, instead of the RPSendMessage() function Data sent: WPARAM = device category (RP_DEVICE_* value) and device number combined with the MAKEWORD macro; @@ -464,28 +459,6 @@ Response: none -Message: - RP_IPC_TO_HOST_PREPROCESSKEY -Description: - message sent by the keyboard handling functions; - guests are not supposed to send it directly -Data sent: - - -Response: - - - - -Message: - RP_IPC_TO_HOST_PROCESSKEY -Description: - message sent by the keyboard handling functions; - guests are not supposed to send it directly -Data sent: - - -Response: - - - - Message: RP_IPC_TO_HOST_KEYBOARDLAYOUT Description: @@ -498,11 +471,38 @@ Response: none +Message: + RP_IPC_TO_HOST_RAWINPUT_EVENT +Description: + this message is sent to forward to the host + the RawInput mouse buttons events received by the guest + (forwarding should be done only when the guest window is focused + and even when the emulation is paused); + events are forwarded when the header.dwType field + of the RAWINPUT structure is RIM_TYPEMOUSE, + and when data.mouse.usButtonFlags is different from 0; + the value returned as response must be used + instead of the original data.mouse.usButtonFlags value + (i.e. the guest should ignore the event when 0 is returned, + or consider a different button pressed/released, + when the returned value differs from data.mouse.usButtonFlags); + NOTE: guests that forward events via RP_IPC_TO_HOST_RAWINPUT_EVENT + must set the RP_FEATURE_RAWINPUT_EVENT flag + in the startup RP_IPC_TO_HOST_FEATURES message +Data sent: + LPARAM = the LPARAM received with the WM_INPUT message +Response: + RawInput RI_MOUSE_BUTTON_* flags or 0 + + Messages: + RP_IPC_TO_HOST_PRIVATE_REGISTER RP_IPC_TO_HOST_PRIVATE_SHAREDEVENT RP_IPC_TO_HOST_PRIVATE_TYPECLIPDONE RP_IPC_TO_HOST_PRIVATE_KEYEVENT RP_IPC_TO_HOST_PRIVATE_GUESTEVENT + RP_IPC_TO_HOST_PRIVATE_KEYPROMPT + RP_IPC_TO_HOST_PRIVATE_CLOSEKBDWIN Description: these are private messages, sent by code in RPGuest.dll @@ -810,6 +810,23 @@ Response: LRESULT = 1 if the guest acknowledged the command or 0 otherwise +Message: + RP_IPC_TO_GUEST_SCREENOVERLAY +Description: + This message sets or clears a screen overlay (an image that the guest + renders on top of the emulated system screen). + Multiple screen overlays can be set and simultaneously displayed + on the screen (see the dwIndex field of the RPSCREENOVERLAY structure). + When the lWidth and lHeight fields of the RPSCREENOVERLAY structure + are set to a non-zero value, an overlay is defined or updated; + if the two fields are set to 0, the overlay specified + by the dwIndex field is removed from screen +Data sent: + pData = a RPSCREENOVERLAY structure containing overlay information and image data +Response: + LRESULT = 1, if the guest successfully executed the command, or 0 otherwise + + Messages: RP_IPC_TO_GUEST_PRIVATE_STARTUP RP_IPC_TO_GUEST_PRIVATE_TYPECLIP @@ -817,6 +834,8 @@ Messages: RP_IPC_TO_GUEST_PRIVATE_CANESCAPE RP_IPC_TO_GUEST_PRIVATE_LOGGING RP_IPC_TO_GUEST_PRIVATE_INPUTDEVICES + RP_IPC_TO_GUEST_PRIVATE_NOKEYPROMPT + RP_IPC_TO_GUEST_PRIVATE_KEYBOARDWINDOW Description: these are private messages, received by code in RPGuest.dll; they never reach the message function in guest code diff --git a/od-win32/cloanto/RetroPlatformIPC.h b/od-win32/cloanto/RetroPlatformIPC.h index efa04874..f0bf9ddb 100644 --- a/od-win32/cloanto/RetroPlatformIPC.h +++ b/od-win32/cloanto/RetroPlatformIPC.h @@ -2,14 +2,14 @@ Name : RetroPlatformIPC.h Project : RetroPlatform Player Support : http://www.retroplatform.com - Legal : Copyright 2007-2017 Cloanto Corporation - All rights reserved. This + Legal : Copyright 2007-2018 Cloanto Corporation - All rights reserved. This : file is multi-licensed under the terms of the Mozilla Public License : version 2.0 as published by Mozilla Corporation and the GNU General : Public License, version 2 or later, as published by the Free : Software Foundation. Authors : os, m Created : 2007-08-27 13:55:49 - Updated : 2018-07-08 10:54:00 + Updated : 2018-10-04 16:26:12 Comment : RetroPlatform Player interprocess communication include file *****************************************************************************/ @@ -18,9 +18,9 @@ #include -#define RETROPLATFORM_API_VER "7.3" +#define RETROPLATFORM_API_VER "7.5" #define RETROPLATFORM_API_VER_MAJOR 7 -#define RETROPLATFORM_API_VER_MINOR 3 +#define RETROPLATFORM_API_VER_MINOR 5 #define RPIPC_HostWndClass "RetroPlatformHost%s" #define RPIPC_GuestWndClass "RetroPlatformGuest%d" @@ -64,6 +64,7 @@ #define RP_IPC_TO_HOST_PRIVATE_GUESTEVENT (WM_APP + 34) // introduced in RetroPlatform API 7.2 #define RP_IPC_TO_HOST_PRIVATE_KEYREMINDER (WM_APP + 35) // introduced in RetroPlatform API 7.2 #define RP_IPC_TO_HOST_RAWINPUT_EVENT (WM_APP + 36) // introduced in RetroPlatform API 7.3 +#define RP_IPC_TO_HOST_PRIVATE_CLOSEKBDWIN (WM_APP + 37) // introduced in RetroPlatform API 7.4 // **************************************************************************** // Host-to-Guest Messages @@ -95,6 +96,8 @@ #define RP_IPC_TO_GUEST_PRIVATE_LOGGING (WM_APP + 227) // introduced in RetroPlatform API 7.2 #define RP_IPC_TO_GUEST_PRIVATE_INPUTDEVICES (WM_APP + 228) // introduced in RetroPlatform API 7.2 #define RP_IPC_TO_GUEST_PRIVATE_KEYREMINDER (WM_APP + 229) // introduced in RetroPlatform API 7.2 +#define RP_IPC_TO_GUEST_PRIVATE_KEYBOARDWINDOW (WM_APP + 230) // introduced in RetroPlatform API 7.4 +#define RP_IPC_TO_GUEST_SCREENOVERLAY (WM_APP + 231) // introduced in RetroPlatform API 7.5 // **************************************************************************** // Message Data Structures and Defines @@ -494,6 +497,23 @@ typedef struct RPScreenCapture #define PRIVATETYPECLIP_SUCCEDED 2 #define PRIVATETYPECLIP_INPROGRESS 3 // a RP_IPC_TO_HOST_PRIVATE_TYPECLIPDONE will be sent when done + +// RPScreenOverlay (used by RP_IPC_TO_GUEST_SCREENOVERLAY) + +typedef struct RPScreenOverlay +{ + DWORD dwIndex; // overlay index + LONG lLeft; // horizontal offset from screen left edge + LONG lTop; // vertical offset from screen top edge + LONG lWidth; // image width (if set to 0, clears a previously set overlay) + LONG lHeight; // image height (if set to 0, clears a previously set overlay) + DWORD dwFormat; // pixel format (see RPSOPF_* defines below) + BYTE btData[1]; // image data +} RPSCREENOVERLAY; + +// RPSCREENOVERLAY dwFormat +#define RPSOPF_32BIT_BGRA 0 // 4 bytes per pixel (blue, green, red, alpha) + // Legacy Compatibility #ifndef RP_NO_LEGACY // Changed in 7.0 diff --git a/od-win32/rp.cpp b/od-win32/rp.cpp index bca126e5..c943fe2f 100644 --- a/od-win32/rp.cpp +++ b/od-win32/rp.cpp @@ -34,6 +34,7 @@ #include "gui.h" #include "keyboard.h" #include "rp.h" +#include "direct3d.h" static int initialized; static RPGUESTINFO guestinfo; @@ -134,6 +135,7 @@ static const TCHAR *getmsg (int msg) case RP_IPC_TO_GUEST_GUESTAPIVERSION : return _T("RP_IPC_TO_GUEST_GUESTAPIVERSION"); case RP_IPC_TO_GUEST_SHOWOPTIONS: return _T("RP_IPC_TO_GUEST_SHOWOPTIONS"); case RP_IPC_TO_GUEST_DEVICEACTIVITY: return _T("RP_IPC_TO_GUEST_DEVICEACTIVITY"); + case RP_IPC_TO_GUEST_SCREENOVERLAY: return _T("RP_IPC_TO_GUEST_SCREENOVERLAY"); default: return _T("UNKNOWN"); } } @@ -1166,12 +1168,29 @@ void parse_guest_event(const TCHAR *ss) xfree(s); } +static int screenoverlay(LPCVOID pData) +{ + struct RPScreenOverlay *rpo = (struct RPScreenOverlay*)pData; + struct extoverlay eo = { 0 }; + if (!D3D_extoverlay) + return 0; + if (rpo->dwFormat != RPSOPF_32BIT_BGRA) + return 0; + eo.idx = rpo->dwIndex; + eo.xpos = rpo->lLeft; + eo.ypos = rpo->lTop; + eo.width = rpo->lWidth; + eo.height = rpo->lHeight; + eo.data = rpo->btData; + return D3D_extoverlay(&eo) ? 1 : 0; +} + static LRESULT CALLBACK RPHostMsgFunction2 (UINT uMessage, WPARAM wParam, LPARAM lParam, LPCVOID pData, DWORD dwDataSize, LPARAM lMsgFunctionParam) { struct AmigaMonitor *mon = &AMonitors[0]; if (log_rp & 1) { - write_log (_T("RPFUNC(%s [%d], %08x, %08x, %08x, %d, %08x)\n"), + write_log (_T("RPFUNC(%s [%d], %08x, %08x, %p, %d, %08x)\n"), getmsg (uMessage), uMessage - WM_APP, wParam, lParam, pData, dwDataSize, lMsgFunctionParam); if (uMessage == RP_IPC_TO_GUEST_DEVICECONTENT) { struct RPDeviceContent *dc = (struct RPDeviceContent*)pData; @@ -1386,6 +1405,8 @@ static LRESULT CALLBACK RPHostMsgFunction2 (UINT uMessage, WPARAM wParam, LPARAM return 1; case RP_IPC_TO_GUEST_DEVICEACTIVITY: return deviceactivity(wParam, lParam); + case RP_IPC_TO_GUEST_SCREENOVERLAY: + return screenoverlay(pData); } return FALSE; } diff --git a/od-win32/win32.h b/od-win32/win32.h index 2e3b1bc5..b593e78f 100644 --- a/od-win32/win32.h +++ b/od-win32/win32.h @@ -20,12 +20,12 @@ #define LANG_DLL_FULL_VERSION_MATCH 1 #if WINUAEPUBLICBETA -#define WINUAEBETA _T("6") +#define WINUAEBETA _T("7") #else #define WINUAEBETA _T("") #endif -#define WINUAEDATE MAKEBD(2018, 9, 22) +#define WINUAEDATE MAKEBD(2018, 10, 6) //#define WINUAEEXTRA _T("AmiKit Preview") //#define WINUAEEXTRA _T("Amiga Forever Edition") diff --git a/od-win32/winuaechangelog.txt b/od-win32/winuaechangelog.txt index a4521a00..e4e25eb3 100644 --- a/od-win32/winuaechangelog.txt +++ b/od-win32/winuaechangelog.txt @@ -1,5 +1,19 @@ + +Beta 7: + +- If disk image's track size is less than 66% of nominal 2us track, assume it is using 4us (GCR) bit rate. +- Added option that catches JIT crashes that happen when already translated code jumps to non-existing memory causing interpretetive emulation to access non-existing RAM (for example JSR (An) was already translated but due to program bug, later call contains garbage in An) Logs a message and then generates fake exception 2 (if PC was even) or 3 (if PC was odd). This is not fully safe option because it is practically impossible (without slowing down JIT which would be against the point of JIT) to detect if crash is due to bad CPU PC or address registers or due to real bug causing access fault that now gets catched and not causing crash.. +- Recording from hardware emulated RTG board always recorded internal resolution. +- Emulated undocumented AGA 64 pixel wide sprite feature: if sprite FMODE is lowered when sprite's first 32 pixels are being drawn, matching part in last 32 pixels will get zeroed. +- AGA sprite's width is decided and stored when SPRxDATx is written to, if sprite FMODE is changed after SPRxDATx write, sprite width won't change on screen except in above 64 pixel wide special case. (Previously used current FMODE value) +- Added vertical offset option to D3D scanlines. +- 68030 MMU rejected PTEST/PMOVE with EA mode 6 and generated F-line exception. +- 68030 MMU PTEST levels 1-7 does not check TTRs. +- If 68030/040/060 config has data cache emulation enabled but MMU emulation is not enabled: force chip ram as non-data cacheable. +- Magic mouse uncapture (uncapture when moving against window edges) now only uncaptures if no buttons are pressed. + Beta 6: - Video recording from hardware emulated graphics boards recorded only black screen. diff --git a/x86.cpp b/x86.cpp index 08b7cad3..dbe2ec58 100644 --- a/x86.cpp +++ b/x86.cpp @@ -19,7 +19,7 @@ #define X86_IO_PORT_DEBUG 0 #define X86_DEBUG_SPECIAL_IO 0 #define FLOPPY_DEBUG 0 -#define EMS_DEBUG 1 +#define EMS_DEBUG 0 #define DEBUG_DMA 0 #define DEBUG_PIT 0