]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
4500b14
authorToni Wilen <twilen@winuae.net>
Sat, 2 Jan 2021 14:58:35 +0000 (16:58 +0200)
committerToni Wilen <twilen@winuae.net>
Sat, 2 Jan 2021 14:58:35 +0000 (16:58 +0200)
include/debug.h
inputdevice.cpp
od-win32/ioport.cpp
od-win32/resources/winuae.rc
od-win32/win32.cpp
od-win32/win32.h
od-win32/win32gui.cpp
od-win32/winuaechangelog.txt

index 0492db0aff2276d305f694b2a331136fc725dcd8..ea7b5df298a70612896d370cae629d04d1b75ae8 100644 (file)
@@ -225,7 +225,7 @@ struct dma_rec
 extern struct dma_rec *last_dma_rec;
 
 #define DMA_EVENT_BLITIRQ 1
-#define DMA_EVENT_BLITNASTY 2
+#define DMA_EVENT_BLITFINALD 2
 #define DMA_EVENT_BLITSTARTFINISH 4
 #define DMA_EVENT_BPLFETCHUPDATE 8
 #define DMA_EVENT_COPPERWAKE 16
index 9c410e259ef7a6b9ca278635d157aebfdf8a1852..7b5abcd6fd510e6fdf24569fb5673dbffe7cb9c3 100644 (file)
@@ -2278,10 +2278,12 @@ static bool get_mouse_position(int *xp, int *yp, int inx, int iny)
                x -= (int)(fdx * fmx) - 1;
                y -= (int)(fdy * fmy) - 2;
                x = coord_native_to_amiga_x(x);
-               if (y >= 0)
+               if (y >= 0) {
                        y = coord_native_to_amiga_y(y) * 2;
-               if (x < 0 || y < 0 || x >= vidinfo->outbuffer->outwidth || y >= vidinfo->outbuffer->outheight)
+               }
+               if (x < 0 || y < 0 || x >= vidinfo->outbuffer->outwidth || y >= vidinfo->outbuffer->outheight) {
                        ob = true;
+               }
        }
        *xp = x;
        *yp = y;
index 4583a808e64b33167b5b63c2c5318c61a2d2e1a6..818d3317512557add5913128465c94e8cbc51a41 100644 (file)
@@ -163,10 +163,10 @@ int parallel_direct_read_data (uae_u8 *v) { return 0; }
 
 #include <paraport/ParaPort.h>
 
-typedef BOOL (*closePort)(HANDLE);
-typedef BOOL (*executeCycle)(HANDLE, PARAPORT_CYCLE*, int);
-typedef BOOL (*getPortInfo)(HANDLE, PARAPORT_INFO*);
-typedef HANDLE* (*openPort)(const char*);
+typedef BOOL (_stdcall* closePort)(HANDLE);
+typedef BOOL (_stdcall* executeCycle)(HANDLE, PARAPORT_CYCLE*, int);
+typedef BOOL (_stdcall* getPortInfo)(HANDLE, PARAPORT_INFO*);
+typedef HANDLE* (_stdcall* openPort)(const char*);
 static closePort pp_closeport;
 static executeCycle pp_executecycle;
 static getPortInfo pp_getportinfo;
@@ -203,6 +203,7 @@ int paraport_init (void)
        if (!pp_openport || !pp_closeport || !pp_executecycle) {
                write_log (_T("PARAPORT: GetProcAddress() failed\n"));
                paraport_free ();
+               return 0;
        }
        write_log (_T("PARAPORT:"));
        for (i = 0; i < 4 ; i++) {
index 900490cee9ae3f6db85754fc8359844800609575..bbeefba0088e936841cbce04f2be83c7f11b82e8 100644 (file)
@@ -1418,7 +1418,7 @@ BEGIN
             VALUE "FileDescription", "WinUAE"
             VALUE "FileVersion", "4.5.0.0"
             VALUE "InternalName", "WinUAE"
-            VALUE "LegalCopyright", "© 1996-2020 under the GNU Public License (GPL)"
+            VALUE "LegalCopyright", "© 1996-2021 under the GNU Public License (GPL)"
             VALUE "OriginalFilename", "WinUAE.exe"
             VALUE "ProductName", "WinUAE"
             VALUE "ProductVersion", "4.5.0.0"
index ff769911d404537a9a4aceaf873322d8264721d3..4c7bdf780ab895d4347842be2fb7e0b557812b63 100644 (file)
@@ -3605,7 +3605,7 @@ void logging_init (void)
                SystemInfo.wProcessorArchitecture, SystemInfo.wProcessorLevel, SystemInfo.wProcessorRevision,
                SystemInfo.dwNumberOfProcessors, filedate, os_touch);
        write_log (_T("\n(c) 1995-2001 Bernd Schmidt   - Core UAE concept and implementation.")
-               _T("\n(c) 1998-2020 Toni Wilen      - Win32 port, core code updates.")
+               _T("\n(c) 1998-2021 Toni Wilen      - Win32 port, core code updates.")
                _T("\n(c) 1996-2001 Brian King      - Win32 port, Picasso96 RTG, and GUI.")
                _T("\n(c) 1996-1999 Mathias Ortmann - Win32 port and bsdsocket support.")
                _T("\n(c) 2000-2001 Bernd Meyer     - JIT engine.")
index ce0a195eed9d7b992fbd6d70816661f6e1fe589c..ec812a125151c1d1e0fd8fb3645ce2f51455979a 100644 (file)
 #define LANG_DLL_FULL_VERSION_MATCH 1
 
 #if WINUAEPUBLICBETA
-#define WINUAEBETA _T("Beta 13")
+#define WINUAEBETA _T("Beta 14")
 #else
 #define WINUAEBETA _T("")
 #endif
 
-#define WINUAEDATE MAKEBD(2020, 12, 21)
+#define WINUAEDATE MAKEBD(2021, 1, 2)
 
 //#define WINUAEEXTRA _T("AmiKit Preview")
 //#define WINUAEEXTRA _T("Amiga Forever Edition")
index c09f849472d55675861f7788d10a5c6ff03543c8..0c2a99a86095c1841f06e59126c54968054b84c2 100644 (file)
@@ -9410,8 +9410,7 @@ static int getmemsize(uae_u32 size, const int *msi)
                case 0x00800000: mem_size = 8; break;
                case 0x01000000: mem_size = 9; break;
                }
-       }
-       else if (msi == msi_chip) {
+       } else if (msi == msi_chip) {
                switch (size)
                {
                case 0x00040000: mem_size = 0; break;
@@ -9422,8 +9421,7 @@ static int getmemsize(uae_u32 size, const int *msi)
                case 0x00400000: mem_size = 5; break;
                case 0x00800000: mem_size = 6; break;
                }
-       }
-       else if (msi == msi_bogo) {
+       } else if (msi == msi_bogo) {
                switch (size)
                {
                case 0x00000000: mem_size = 0; break;
@@ -9432,8 +9430,21 @@ static int getmemsize(uae_u32 size, const int *msi)
                case 0x00180000: mem_size = 3; break;
                case 0x001C0000: mem_size = 4; break;
                }
-       }
-       else {
+       } else if (msi == msi_z3chip) {
+               switch (size)
+               {
+               case 0x00000000: mem_size = 0; break;
+               case 0x01000000: mem_size = 1; break;
+               case 0x02000000: mem_size = 2; break;
+               case 0x04000000: mem_size = 3; break;
+               case 0x08000000: mem_size = 4; break;
+               case 0x10000000: mem_size = 5; break;
+               case 0x18000000: mem_size = 6; break;
+               case 0x20000000: mem_size = 7; break;
+               case 0x30000000: mem_size = 8; break;
+               case 0x40000000: mem_size = 9; break;
+               }
+       } else {
                if (size < 0x00100000)
                        mem_size = 0;
                else if (size < 0x00200000)
@@ -9468,8 +9479,9 @@ static void addadvancedram(HWND hDlg, struct ramboard *rb, const TCHAR *name, co
        _tcscpy(tmp, name);
        if (rb->size) {
                int mem_size = getmemsize(rb->size, msi);
-               _tcscat(tmp, _T(" "));
+               _tcscat(tmp, _T(" ("));
                _tcscat(tmp, memsize_names[msi[mem_size]]);
+               _tcscat(tmp, _T(")"));
        }
        SendDlgItemMessage(hDlg, IDC_MEMORYSELECT, CB_ADDSTRING, 0, (LPARAM)tmp);
 }
index 99062815766df15de462532576181c245fe441fd..42e4efa6304c2b00b2a7e1e19f9a81cd1dbb0a0e 100644 (file)
@@ -1,4 +1,25 @@
 
+Beta 14:
+
+- Fixed possible out of bounds array access when virtual mouse driver is installed.
+- Added more strict coordinate/size validation to uaegfx blitter functions.
+- JIT shift instruction fix rewrite, they still didn't work fully correctly and my tester didn't catch them because JIT uses registers differently in different use cases etc.. But it did break most Cirrus Logic based chipset Picasso96 drivers. Corrupt icons and text, at least with some Picasso96 versions. (Still need more optimal fix later)
+- Improved PCem RTG mode scanline based display update timing.
+- CyberVision64 (S3Trio64) vsync interrupt fix, could have caused stuck interrupt when monitor driver was started.
+- Hardware emulated RTG boards interlace modes fixed (again).
+- Gaps between on screen leds are now smaller.
+- FAS246 SCSI chip apparently has Features Enable always set (or bit does not exist anymore). DKB RapidFire tests if transfer count high register works (write something, read it back) and assumes it is enabled without modifying Configuration 2 Register. Rapidfire worked when it first implemented because transfer count high was not originally correctly conditionally emulated. Datasheet seems to be MIA.
+- Fixed 32-bit Chip RAM size string array out of bounds access if 768M or 1G was selected. (b11)
+- Voodoo 3 byteswapped modes Mediator PCI sound card DMA hack fix.
+- Yet another 2D/3D registers-only Voodoo 3 byteswap mode emulated. Some W3D drivers use it. (Without it nothing was rendered and log was mostly filled with "triangle_setup wrong order" messages)
+- Blitter line mode was partially broken in non-cycle exact modes and CE mode wasn't fully accurate (b12). Still some edge cases to fix.
+- DMA debugger blitter slots are now marked as BLT-x (normal), BLF-x (fill) or BLL-x (line). x = channel. RFS, DSK, AUD, SPR and BPL slots include channel numbers. (Easier to remember than xxxDAT register address numbers)
+
+Shift instructions are really annoying to JIT compile because flags works very differently between x86 and 680x0:
+- Shift count 0: does not modify any flags | clears C, updates Z and N. Keep original X.
+- Shift count larger or same than data size: C undefined | C (and X) always equals last bit shifted out.
+- Shift count mask: masked by 31 (except if x64 64-bit word) | masked by 63.
+- Shift count from 1 to data size-1: practically identical behavior. Only needed extra step is simple C to X copy.
 
 Beta 13:
 
@@ -22,7 +43,6 @@ Vooodoo 3 3000 details:
 - Hardware accelerated 3D confirmed working.
 - PCI to PCI DMA supported, compatible with Voodoo 3 + SB128 or FM801 sound card Mediator DMA hack.
 
-
 Beta 12:
 
 - 68000/010 cycle-exact/prefetch: If long write access, check IPL when first word of long has been written, not after last word. Fixes Made in Croatia / Binary (again).
@@ -275,7 +295,6 @@ CPU tester FPU trigonometric and logarithmic instructions verified. Last 16 or s
 
 Most likely no real world program was affected. Host FPU mode will also return even more different results.
 
-
 Beta 2:
 
 - Custom CPU frequency selection fixed (b1)
@@ -290,7 +309,6 @@ Beta 2:
 
 - 68030 MMU with more compatible (prefetch) is not stable, at least in Amix (as usual..). Will be fixed later.
 
-
 Beta 1:
 
 Another quite useless new feature: cycle-accurate 68010! Includes full and accurate 68010 loop mode emulation.