#define UAEMAJOR 4
#define UAEMINOR 9
-#define UAESUBREV 2
+#define UAESUBREV 9
#define MAX_AMIGADISPLAYS 4
allocsprite(gdi, &gdi->osd, gdi->ledwidth, gdi->ledheight);
allocsprite(gdi, &gdi->cursor, CURSORMAXWIDTH, CURSORMAXHEIGHT);
gdi->enabled = 1;
+ write_log(_T("GDI mode initialized %d*%d*%d\n"), w_w, w_h, depth);
return NULL;
}
{
struct gdistruct *gdi = &gdidata[monid];
+ if (gdi->depth < 32) {
+ return false;
+ }
+
if (width < 0 || height < 0) {
return true;
}
{
struct gdistruct* gdi = &gdidata[monid];
+ if (gdi->depth < 32) {
+ return NULL;
+ }
+
if (pitch) {
*pitch = gdi->cursor.pitch;
return (uae_u8*)gdi->cursor.bits;
if (regexists (NULL, _T("SoundDriverMask"))) {
regqueryint (NULL, _T("SoundDriverMask"), &sounddrivermask);
} else {
- sounddrivermask = 3;
+ sounddrivermask = 2;
regsetint (NULL, _T("SoundDriverMask"), sounddrivermask);
}
return 1;
}
-int os_admin, os_64bit, os_win7, os_win8, os_win10, os_vista, cpu_number, os_touch;
+int os_admin, os_64bit, os_win7, os_win8, os_win10, cpu_number, os_touch;
BOOL os_dwm_enabled;
BOOL dpi_aware_v2;
pGetNativeSystemInfo (&SystemInfo);
osVersion.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
if (GetVersionEx (&osVersion)) {
- if (osVersion.dwMajorVersion >= 6) {
- os_vista = 1;
- }
if (osVersion.dwMajorVersion >= 7 || (osVersion.dwMajorVersion == 6 && osVersion.dwMinorVersion >= 1)) {
os_win7 = 1;
}
}
}
- if (os_vista) {
- typedef HRESULT(CALLBACK* DWMISCOMPOSITIONENABLED)(BOOL*);
- HMODULE dwmapihandle;
- DWMISCOMPOSITIONENABLED pDwmIsCompositionEnabled;
- dwmapihandle = LoadLibrary(_T("dwmapi.dll"));
- if (dwmapihandle) {
- pDwmIsCompositionEnabled = (DWMISCOMPOSITIONENABLED)GetProcAddress(dwmapihandle, "DwmIsCompositionEnabled");
- if (pDwmIsCompositionEnabled) {
- pDwmIsCompositionEnabled(&os_dwm_enabled);
- }
- FreeLibrary(dwmapihandle);
+ typedef HRESULT(CALLBACK* DWMISCOMPOSITIONENABLED)(BOOL*);
+ HMODULE dwmapihandle;
+ DWMISCOMPOSITIONENABLED pDwmIsCompositionEnabled;
+ dwmapihandle = LoadLibrary(_T("dwmapi.dll"));
+ if (dwmapihandle) {
+ pDwmIsCompositionEnabled = (DWMISCOMPOSITIONENABLED)GetProcAddress(dwmapihandle, "DwmIsCompositionEnabled");
+ if (pDwmIsCompositionEnabled) {
+ pDwmIsCompositionEnabled(&os_dwm_enabled);
}
+ FreeLibrary(dwmapihandle);
}
return 1;
if (!osdetect ())
return 0;
- if (os_vista) {
- max_uae_width = 8192;
- max_uae_height = 8192;
- } else {
- max_uae_width = 3072;
- max_uae_height = 2048;
- }
+ max_uae_width = 8192;
+ max_uae_height = 8192;
hInst = hInstance;
hMutex = CreateMutex (NULL, FALSE, _T("WinUAE Instantiated")); // To tell the installer we're running
#define LANG_DLL_FULL_VERSION_MATCH 0
#if WINUAEPUBLICBETA
-#define WINUAEBETA _T("Beta 3")
+#define WINUAEBETA _T("Beta 4")
#else
#define WINUAEBETA _T("")
#endif
-#define WINUAEDATE MAKEBD(2022, 10, 23)
+#define WINUAEDATE MAKEBD(2022, 10, 30)
//#define WINUAEEXTRA _T("AmiKit Preview")
//#define WINUAEEXTRA _T("Amiga Forever Edition")
+- Remaining IPL fixes (LINK, UNLK, MOVE to SR/CCR, AND/EOR/OR SR/CCR, CPU wait state IPL fix).
+- Emulated Paula side-effect that affects IPL timing. IPLx line state changes from low to high (IPL is active low) are about 0.5 CCK later than high to low transitions. This delays CPU IPL change detection by 2 CPU clocks if any IPL line had low to high transition. CPU accepts IPL change only if has been stable for 2 CPU clocks. (for example 3 to 5 has delay, 4 to 5 does not)
+- Enable only WASAPI audio by default.
+- Debugger break point command accepts number of hits before breaking to debugger (f Nxx <address> where xx is number of hits required)
+- uaegfx overlay limit checks compared Amiga side VRAM end against physical host side bitmap end which accidentally passed if 64-bit Windows. Overlay window was usually empty if 32-bit Windows. (It might have worked in some configurations when using Z2 uaegfx)
+- GUI Help button is now always available and opens if exists: (in priority order) winuae.chm, winuae.pdf. If neither is found, help web page is opened (without asking first like previously)
+- It is still possible to run windowed WinUAE if desktop is 16-bit but it can cause graphics problems. Not sure if this needs to be supported anymore.
+
+68000 based A500 like unexpanded (Fast RAM expansion is supported) configurations should be now 100% cycle-accurate. (If there are no bugs, many edge cases need complex and very carefully timed cycle accurate tests that are not easy to do)
+
+Note that this does not mean all features are fully emulated, for example OCS and ECS Denise mid-screen resolution changes are not pixel accurate. Accurate as in if resolution change is not carefully coded, there can be few extra or missing pixels when resolution changes. AGA does not have this side-effect.
+
+
+Beta 3:
+
- 68000 IPL check position is now almost fully accurate (Still some special cases to check and test). Very big thanks to fx68k author!
- W debugger command hang fixed.
- Full drive/RDB mode is now normal checbox. Hopefully it is now less confusing than button that didn't really look like a button. If selected HDF already has RDSK identifer, checkbox is ticked and disabled. Checkbox can be only ticked/unticked if selected HDF does not have RDSK identifier.
This finally makes 68000 emulation complete. Everything observable (that Amiga uses) outside of 68000 should be 100% cycle-accurate now.
-Usual suspects (Spectreparty aka Dots demo / Phenomena and Expiration / Mayhem cube) still have problems which means there are still something else wrong.
-
-
Beta 2:
- Display resync blanking was stuck enabled (~1s blank screen when mode switches)