]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
4100b7
authorToni Wilen <twilen@winuae.net>
Sat, 6 Oct 2018 15:50:16 +0000 (18:50 +0300)
committerToni Wilen <twilen@winuae.net>
Sat, 6 Oct 2018 15:50:16 +0000 (18:50 +0300)
debug.cpp
od-win32/cloanto/RetroPlatformIPC-doc.txt
od-win32/cloanto/RetroPlatformIPC.h
od-win32/rp.cpp
od-win32/win32.h
od-win32/winuaechangelog.txt
x86.cpp

index a85d31120fcb45b28a3f745994bf267ed3cda6e3..e6c5257731b773424429aae01a84a0b115360a8b 100644 (file)
--- a/debug.cpp
+++ b/debug.cpp
@@ -205,7 +205,7 @@ static const TCHAR help[] = {
        _T("  W <addr> 'string'     Write into Amiga memory.\n")
        _T("  Wf <addr> <endaddr> <bytes or string like above>, fill memory.\n")
        _T("  Wc <addr> <endaddr> <destaddr>, copy memory.\n")
-       _T("  w <num> <address> <length> <R/W/I/F/C> [<value>[.x]] (read/write/opcode/freeze/mustchange).\n")
+       _T("  w <num> <address> <length> <R/W/I> <F/C> [<value>[.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 <file> <addr> [<n>] Load a block of Amiga memory.\n")
index b6e0e027dc5aa18dcf57d3c64a3adc6225116ad8..8e8c738ef3b0f9887e1ee54e2a62a06708c0b1d7 100644 (file)
@@ -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)
  *****************************************************************************/
 
  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
index efa04874e7827f6f2a4b83498287d10584b8b578..f0bf9ddbd615f21672241877238ecf7edb74e43b 100644 (file)
@@ -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 <windows.h>
 
-#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
index bca126e51fbc20f2af4032152aae82240fc3288b..c943fe2f7a3a0f6920f636d2d71218d78245bb47 100644 (file)
@@ -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;
 }
index 2e3b1bc515cbb31c2a107fd14306f4a33ca8acfe..b593e78fdde913f82a04332fc4e9e8df005ca2f1 100644 (file)
 #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")
index a4521a00772db81cf60a670fdbefcb44da1fd878..e4e25eb3490855c577ea6a04bd7ad1da30bdbef3 100644 (file)
@@ -1,5 +1,19 @@
 \r
 \r
+\r
+Beta 7:\r
+\r
+- If disk image's track size is less than 66% of nominal 2us track, assume it is using 4us (GCR) bit rate.\r
+- 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..\r
+- Recording from hardware emulated RTG board always recorded internal resolution.\r
+- 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.\r
+- 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)\r
+- Added vertical offset option to D3D scanlines.\r
+- 68030 MMU rejected PTEST/PMOVE with EA mode 6 and generated F-line exception.\r
+- 68030 MMU PTEST levels 1-7 does not check TTRs.\r
+- If 68030/040/060 config has data cache emulation enabled but MMU emulation is not enabled: force chip ram as non-data cacheable.\r
+- Magic mouse uncapture (uncapture when moving against window edges) now only uncaptures if no buttons are pressed.\r
+\r
 Beta 6:\r
 \r
 - Video recording from hardware emulated graphics boards recorded only black screen.\r
diff --git a/x86.cpp b/x86.cpp
index 08b7cad33b79033a650907b77f80b90532a4fed6..dbe2ec58d9e852587d4e6198de5460847f74be86 100644 (file)
--- 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