PrimalHero
Bochs - Cross Platform x86 Emulator Project
Brief summary of changes :
Bugfixes for CPU emulation correctness (MONITOR/MWAIT, VMX/SVM, x87, AVX-VNNI, AVX-512, CET)
Critical CPU emulation bugfixes for SHA and GFNI instructions, ADOX and XRSTOR/XRSTORS instructions (prevented boot of Win10)
! SVM: Implemented SVM VM_CR_MSR and INIT redirect (required for booting SMP with SVM)
! Implemented VMX MBE (Mode Based Execution Control) emulation required for Windows 11 guest
! Implemented VMX 'Shadow Stack Prematurely Busy' control
! Implemented MSR IA32_SPEC_CTRL Virtualization VMX extension
! Implemented Posted-Interrupt Processing VMX extension emulation
! Implemented Linear Address Separation (LASS) extension
! Implemented 57-bit Linear Address and 5-Level Paging support
! Implemented User-Level Interrupt (UINTR) extension
! Implemented Intel AMX extensions (AMX, AMX_INT8, AMX_BF16, AMX_FP16, AMX_COMPLEX)
! Implemented Intel instruction sets:
MOVDIRI/MOVDIR64B, AVX512 BF16, AVX IFMA52, VNNI-INT8/VNNI-INT16, AVX-NE-CONVERT, CMPCCXADD, SM3/SM4, SHA512, WRMSRNS, MSRLIST, WAITPKG, SERIALIZE
! CPUID: Added Xeon Sapphire Rapids CPU definition
Improved 64-bit guest support in Bochs internal debugger, added new internal debugger commands
Bochs debugger enhanced with new commands (setpmem, loadmem, deref, ...)
Enhanced magic breakpoint capabilities. Refer to user documentation for more details.
Updated Bochs instrumentation examples for new disassembler introduced in Bochs 2.7 release
USB: Fixed/added USB 2.0 Compliance to all devices. Hub still needs a few additions
USB: xHCI: added the ability to have more than one model of xHCI hardware. Currently there are two.
USB: Added experimental MSD UASP emulation
USB: Added OHCI as an EHCI Companion option. Now allows UHCI or OHCI specified as a configuration parameter.
Disk images: Allows large VHD image files
Fixed and enhanced the Floppy Disk emulation, VGA emulation fixes
Expand maximum resolution for Banshee and Voodoo 3 from 1600x1280 to 1920x1440
LGPL'd VGABIOS updated to version 0.9a (several VBE fixes / additions)
Documentation updates and fixes
Initial OpenGL support in the Wayland driver.
Support for elevating process privileges.
More HID pointer improvements.
Various bug fixes.
The source is available at https://dl.winehq.org/wine/source/9.x/wine-9.4.tar.xz
Binary packages for various distributions will be available
from https://www.winehq.org/download
You will find documentation on https://www.winehq.org/documentation
Wine is available thanks to the work of many people.
See the file AUTHORS for the complete list.
Bugs fixed in 9.4 (total 25):
#11629 Add optional start menu and taskbar to explorer
#24812 Explorer++ 1.2: right-click menu (in the main listview) degrades to nothing when opened multiple times
#34319 Total Commander 8.x: Context menu does not contain 'paste' entry
#34321 Total Commander 8.x: cut/copy/paste keyboard shortcuts don't work
#34322 Total Commander 8.x: 'cut' works like 'copy'
#44797 Visio 2003 does not read the complete list of fonts present in the system.
#46773 Skype 4 MSI installer fails to create trigger for task using Task Scheduler (unimplemented type 7, TASK_TRIGGER_REGISTRATION)
#48110 Multiple .NET 4.x applications need TaskService::ConnectedUser property (Toad for MySQL Freeware 7.x, Microsoft Toolkit from MS Office 2013)
#48344 Luminance HDR / qtpfsgui 2.6.0: Empty file select dialog
#49877 Minecraft Education Edition shows error during install: Fails to create scheduled task
#52213 Thread crashes when pthread_exit is called in a SIGQUIT handler
#55487 winpcap: pcap_dispatch doesn't capture anything with count argument -1
#55619 VOCALOID AI Shared Editor v.6.1.0 crashes with System.Management.ManagementObject object construction
#55724 mfmediaengine:mfmediaengine sometimes gets a threadpool assertion in Wine
#55821 Desktop Window Manager crashes when launching a WPF app
#56147 Real time Receiving data freezes for 1-5 seconds
#56271 Free Download Manager no longer works after it updated (stuck at 100% CPU, no visible window)
#56299 imm32.dll: CtfImmIsGuidMapEnable could not be located in the dynamic link library
#56334 Page fault when querying dinput8_a_EnumDevices
#56337 battle.net: tray icon is not displayed with wine-9.2
#56345 EA app installer has no text
#56357 Zero sized writes using WriteProcessMemory succeed on Windows, but fail on Wine.
#56360 FoxVox window is rendered as a blank surface instead of expected user interface
#56388 Regression: Fullscreen apps show on wrong monitor and don't respond to mouse events properly
#56401 Some ARM unwinding testcases broken by "ntdll: Use the correct structure for non-volatile registers"
Changes since 9.3:
Aida Jonikienė (3):
qwave: Add QOSCloseHandle() stub.
qwave: Add tests for QOSCloseHandle().
msvcrt: Handle wide specifiers option in __stdio_common_vfscanf().
Alexandre Julliard (59):
ntdll: Add a wrapper macro for ARM64EC syscalls.
win32u: Add a wrapper macro for ARM64EC syscalls.
include: Add SEH information to ARM64EC syscalls.
ntdll: Add SEH information to ARM64EC breakpoints.
winebuild: Remove some no longer used support for ELF ARM platforms.
wow64: Update Wow64RaiseException behavior to match i386 hardware exceptions.
wow64: Use a .seh handler for the simulation loop.
ntdll: Always use .seh handlers on ARM.
ntdll: Use a .seh handler in DbgUiRemoteBreakin on ARM64EC.
ntdll: Use a .seh handler in RtlUserThreadStart on ARM64EC.
ntdll: Implement RtlCaptureContext on ARM64EC.
ntdll: Use the exported structures for dll redirection data.
ntdll: Move RtlHashUnicodeString constants to a public header.
ntdll: Remove no longer needed definitions from the private header.
winedump: Print the correct register names for exception info on ARM64.
ntdll: Use the official definitions for exception flags.
kernelbase: Use the official definitions for exception flags.
krnl386.exe: Use the official definitions for exception flags.
msvcp90: Use the official definitions for exception flags.
msvcrt: Use the official definitions for exception flags.
win32u: Use the official definitions for exception flags.
winecrt0: Use the official definitions for exception flags.
wow64: Use the official definitions for exception flags.
winedbg: Use the official definitions for exception flags.
widl: Use the official definitions for exception flags.
include: Remove the private definitions of the exception flags.
include: Move unwinding functions definitions to rtlsupportapi.h.
ntdll: Implement RtlVirtualUnwind2.
ntdll/tests: Use a proper handler in the RtlRaiseException test on x86-64.
ntdll: Implement RtlRaiseException on ARM64EC.
kernelbase: Implement RaiseException on ARM64EC.
qwave/tests: Remove todo from a succeeding test.
ntdll: Port the RtlRaiseException test to ARM64.
ntdll: Port the RtlRaiseException test to ARM.
ntdll: Always use SEH support on ARM.
ntdll: Use the correct structure for non-volatile registers on ARM64.
ntdll: Use the correct structure for non-volatile registers on ARM.
ntdll: Also copy non-volatile regs on collided unwind.
ntdll: Use a common wrapper to call exception handlers on ARM64.
ntdll: Use a common wrapper to call exception handlers on ARM.
ntdll: Use a common wrapper to call unwind handlers on ARM64.
ntdll: Use a common wrapper to call unwind handlers on ARM.
ntdll: Allocate the data structure and stack for the ARM64EC emulator.
ntdll: Implement exception dispatching on ARM64EC.
ntdll: Implement KiUserExceptionDispatcher on ARM64EC.
vkd3d: Import upstream release 1.11.
ntdll: Use jump buffer definitions from setjmp.h.
ntdll: Export _setjmpex.
ntdll: Export longjmp.
ntdll: Implement _setjmpex on ARM64EC.
d3d10_1/tests: Mark a failing test as todo.
d3dx9/tests: Mark failing tests as todo.
ntdll: Don't copy a missing context in get_thread_context().
ntdll: Remove a misleading WARN.
ntdll: Support the __os_arm64x_helper functions in the loader.
winedump: Dump the __os_arm64x_helper functions.
include: Always use _setjmpex on non-i386 platforms.
msvcrt: Import setjmp/setjmpex from ntdll.
msvcrt: Import longjmp from ntdll for PE builds.
Alexandros Frantzis (11):
winex11.drv: Remove unused refresh_drawables field.
winewayland.drv: Add skeleton OpenGL driver.
winewayland.drv: Initialize core GL functions.
winewayland.drv: Implement wglGetExtensionsString{ARB,EXT}.
winewayland.drv: Implement wglGetProcAddress.
winewayland.drv: Implement wglDescribePixelFormat.
winewayland.drv: Implement wglSetPixelFormat(WINE).
winewayland.drv: Implement OpenGL context creation.
winewayland.drv: Implement wglMakeCurrent and wglMakeContextCurrentARB.
winewayland.drv: Implement wglSwapBuffers.
winewayland.drv: Handle resizing of OpenGL content.
Aurimas Fišeras (1):
po: Update Lithuanian translation.
Brendan McGrath (5):
mshtml: Pass DOMEvent instead of nsIDOMEvent during handle_event.
mshtml: Use generic event dispatcher for DOMContentLoaded.
mshtml/tests: Add test for document mode after InitNew and Load.
mshtml: Always use the event target dispex.
mshtml: Don't handle special case when doc != node->doc.
Brendan Shanks (2):
ntdll: Add native thread renaming for FreeBSD.
quartz: Set the name of internal threads.
Connor McAdams (6):
webservices/tests: Fix -Warray-bounds warning on gcc 13.2.0.
d3dx9/tests: Add more tests for misaligned compressed surface loading.
d3dx9: Use base image pointer when decompressing source image.
d3dx9: Split D3DXLoadSurfaceFromMemory functionality into a separate function.
d3dx9: Split off image decompression into a helper function.
d3dx9: Preserve the contents of unaligned compressed destination surfaces.
Daniel Lehman (5):
oleaut32/tests: Add tests for IPersistStream::GetSizeMax.
oleaut32: Implement GetSizeMax for empty picture.
oleaut32: Implement GetSizeMax for BMPs.
ole32: Do not lock storage in read-only deny-write mode.
ole32/tests: Remove todo from lock tests.
David McFarland (5):
mmdevapi/tests: Add test for AudioClient3_InitializeSharedAudioStream.
mmdevapi: Implement IAudioClient3_InitializeSharedAudioStream.
mmdevapi: Implement IAudioClient3_GetSharedModeEnginePeriod.
mmdevapi/tests: Add test for IDeviceTopology.
mmdevapi: Add stub for IDeviceTopology.
Eric Pouech (20):
server: Allow 0-write length in WriteProcessMemory().
dbghelp/tests: Add tests for image files lookup.
dbghelp/tests: Add tests for SymFindFileInPath for pdb files.
dbghelp/tests: Add tests about SymLoadModule and finding pdb files.
dbghelp: Don't fail on loading 64bit modules on 32bit applications.
dbghelp: Don't search the passed path in SymFindFileInPath.
dbghelp/tests: Add more tests for SymLoadModule*.
dbghelp: Always use SymGetSrvIndexFileInfo() for files lookup.
dbghelp: Rework loading of PDB string table.
dbghelp: Get rid of struct pdb_lookup.
dbghelp: Return matched information for path_find_symbol_file.
dbghelp: Search subdirectories in element path.
dbghelp: Relax failure conditions.
dbghelp: Change order when trying to load modules.
dbghelp: Mimic native behavior for module name.
dbghelp: Fix some corner case of virtual module loading.
dbghelp/tests: Extend the tests for SymLoadModule().
dbghelp: Support SLMFLAG_NO_SYMBOLS in SymLoadModuleEx*().
dbghelp: Don't fail in SymAddSymbol for modules without debug information.
dbghelp: Fixed module information when unmatched pdb file is loaded.
Esme Povirk (7):
gdiplus: Switch to a struct for gdip_format_string callback args.
gdiplus: Pass gdip_format_string_info to font link functions.
gdiplus: Restore hdc argument to gdip_format_string.
gdiplus: Fix crash in GdipAddPathString.
gdiplus: Fix use after free in GdipAddPathString.
gdiplus: Implement font linking in GdipAddPathString.
mscoree: Implement CLRRuntimeHost_Start.
Fabian Maurer (7):
win32u: Move get_awareness_from_dpi_awareness_context.
win32u: Refactor get_thread_dpi_awareness to use get_awareness_from_dpi_awareness_context.
user32/tests: Add exhaustive tests for Get/SetThreadDpiAwarenessContext.
user32: Fix Set/GetThreadDpiAwarenessContext for DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2.
user32/tests: Add tests for AreDpiAwarenessContextsEqual.
user32: Fix AreDpiAwarenessContextsEqual behavior for DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2.
win32u: Sync dpi awareness changes from user32.
Florian Will (3):
include: Add TCP_KEEPCNT and TCP_KEEPINTVL definitions.
ws2_32/tests: Test TCP_KEEP{ALIVE,CNT,INTVL} options.
ws2_32: Implement TCP_KEEP{ALIVE,CNT,INTVL} options.
Gabriel Ivăncescu (1):
winex11: Set the correct visual even if alpha matches.
Hans Leidekker (5):
netprofm: Support NLM_ENUM_NETWORK flags.
netprofm: Set return pointer to NULL in networks_enum_Next().
wbemprox: Handle implicit property in object path.
netprofm/tests: Mark a test result as broken on Windows 11.
wbemprox: Use separate critical sections for tables and table list.
Henri Verbeet (2):
wined3d: Pass "shader->function" as source to vkd3d_shader_scan() in shader_spirv_scan_shader().
wined3d: Slightly adjust an ERR in shader_spirv_compile_shader().
Jacek Caban (9):
configure: Disable -Wmisleading-indentation warnings on GCC.
vcomp/tests: Use limits.h macros in for_static_i8_cb.
winebuild: Output load config on PE targets.
winevulkan: Update to VK spec version 1.3.278.
winevulkan: Remove no longer needed spec workarounds.
winevulkan: Rename wine_device_memory mapping to vm_map.
winevulkan: Use handle map for memory objects.
winevulkan: Refactor extra extensions handling in wine_vk_device_convert_create_info.
winevulkan: Use VK_EXT_map_memory_placed for memory mapping on wow64.
Martin Storsjö (1):
arm64: Expose information about more modern CPU extensions.
Michael Müller (1):
wine.inf: Register the New menu as a directory background context menu handler.
Nikolay Sivov (3):
d3dcompiler: Enable semantic names mapping in compatibility mode.
d3d10_1/tests: Add a basic test for returned preferred profiles.
d3d10_1/tests: Add an effect compilation test using 10.1 features.
Noah Berner (1):
comctl32/tests: Fix test that fails on Feb 29th.
Paul Gofman (34):
nsiproxy.sys: Fix ipv6 route table parsing on Linux.
iphlpapi: Partially fill Ipv4 / Ipv6 metric in GetAdaptersAddresses().
wbemprox: Force debug info in critical sections.
wmwcore: Force debug info in critical sections.
browseui: Force debug info in critical sections.
itss: Force debug info in critical sections.
mmdevapi: Force debug info in critical sections.
ntdll: Mind context compaction mask in context_from_server().
ntdll: Don't copy xstate from / to syscall frame in usr1_handler().
ntdll: Support generic xstate config in context manipulation functions.
msvcp: Force debug info in critical sections.
msvcrt: Force debug info in critical sections.
netapi32: Force debug info in critical sections.
rsaenh: Force debug info in critical sections.
wined3d: Force debug info in critical sections.
kernelbase: Use KEY_WOW64_64KEY flag when 64 bit registry access is assumed.
mciavi32: Force debug info in critical sections.
winmm: Force debug info in critical sections.
winebus.sys: Force debug info in critical sections.
windows.security.credentials.ui.userconsentverifier: Force debug info in critical sections.
amstream: Avoid leaking critical section debug info in filter_Release().
amstream: Force debug info in critical sections.
winexinput.sys: Force debug info in critical sections.
comctl32: Force debug info in critical sections.
mcicda: Force debug info in critical sections.
ole32: Force debug info in critical sections.
qcap: Force debug info in critical sections.
ntdll: Respect red zone in usr1_handler() on x64.
quartz: Force debug info in critical sections.
urlmon: Force debug info in critical sections.
winegstreamer: Force debug info in critical sections.
wmiutil: Force debug info in critical sections.
windows.gaming.input: Force debug info in critical sections.
windows.media.speech: Force debug info in critical sections.
Philip Rebohle (1):
winevulkan: Update to VK spec version 1.3.279.
Piotr Caban (1):
wininet: Fix memory leak when loading proxy information.
Rémi Bernon (49):
win32u: Introduce new NtUserSwitchDesktop syscall stub.
server: Keep track of the winstation input desktop.
server: Send hardware input to the visible input desktop.
server: Keep a list of threads connected to each desktop.
server: Keep a list of processes that can receive rawinput messages.
server: Dispatch rawinput messages using the rawinput process list.
winevulkan: Remove unnecessary WINEVULKAN_QUIRK_ADJUST_MAX_IMAGE_COUNT quirk.
winevulkan: Succeed VK_KHR_win32_surface procs queries when enabled.
winex11: Remove now unnecessary vulkan function name mapping.
winemac: Remove now unnecessary vulkan function name mapping.
winewayland: Remove now unnecessary vulkan function name mapping.
winex11: Remove unnecessary X11DRV_get_vk_* helpers.
winemac: Remove unnecessary macdrv_get_vk_* helper.
winex11: Remove unnecessary vkDestroySurfaceKHR NULL checks.
winemac: Remove unnecessary vkDestroySurfaceKHR NULL checks.
winewayland: Remove unnecessary vkDestroySurfaceKHR NULL checks.
mfreadwrite/reader: Split source_reader_create_decoder_for_stream helper.
mf/topology_loader: Only propagate some media type attributes.
mfreadwrite/reader: Call SetOutputType directly on the decoder transform.
mfreadwrite/reader: Keep the stream transforms in a list.
mfreadwrite/reader: Create and append a converter transform.
mfreadwrite/reader: Implement IMFSourceReaderEx_GetTransformForStream.
mfreadwrite/reader: Adjust min_buffer_size to be 1s of audio data.
win32u: Use NtUserCallHwndParam interface for _wine_send_input.
win32u: Use a custom struct hid_input for NtUserSendHardwareInput.
dinput/tests: Test the WM_POINTER* message parameter values.
mouhid.sys: Send WM_POINTER* messages on contact updates.
server: Add support for sending and receiving WM_POINTER* messages.
win32u: Add support for sending and receiving WM_POINTER* messages.
win32u: Use char array for the device manager context gpuid.
win32u: Simplify adapter key path creation from gpu_guid.
win32u: Remove unused wine_devpropkey_monitor_adapternameW property.
win32u: Use REG_SZ instead of REG_BINARY for some adapter keys.
win32u: Remove unnecessary class_guidW double check.
win32u: Use set_reg_ascii_value whenever possible.
win32u: Introduce and use new reg(open|create)_ascii_key helpers.
winex11: Support XInput2 events on individual windows.
winex11: Select XI_Touch* input and translate it to WM_POINTER*.
server: Stop waiting on LL-hooks for non-injected input.
server: Generate WM_POINTERENTER / WM_POINTERLEAVE messages.
server: Continuously send pointer update messages while it's down.
server: Send emulated mouse messages on primary pointer updates.
win32u: Keep a reference on the adapters gpu.
win32u: Load gpus from registry before adapters.
win32u: Lookup adapter gpus from their device paths.
win32u: Enumerate devices with a dedicated helper.
win32u: Split read / write of gpu to registry to separate helpers.
win32u: Keep the vulkan GUID on the gpu structure.
server: Remove desktop from their winstation list before looking for another input desktop.
Shaun Ren (2):
sapi: Implement ISpeechVoice::{get/put}_Volume.
sapi: Implement ISpeechVoice::{get/putref}_Voice.
Sven Baars (1):
oleaut32: Use scientific notation if it prevents a loss of accuracy.
Tim Clem (3):
winemac.drv: Exclude the emoji Touch Bar when looking for input methods.
win32u: Don't mask keyboard scan codes when processing them for IME.
winebus.sys: Only attempt to open joysticks and gamepads in the IOHID backend.
Vijay Kiran Kamuju (7):
taskschd: Implement ITaskService_get_ConnectedUser.
taskschd: Return success from Principal_put_RunLevel.
include: Add IRegistrationTrigger definition.
taskschd: Add IRegistrationTrigger stub implementation.
taskschd: Implement IRegistrationTrigger_putEnabled.
taskschd: Implement IRegistrationTrigger_getEnabled.
taskschd: Implement TaskService_get_ConnectedDomain.
Yuxuan Shui (10):
dmband: Move band.c to dmusic.
dmime: Better MIDI parsing interface.
dmime: Parse MIDI program change events and generate a bandtrack.
dmime: Add a stub chordtrack for MIDI segments.
dmime: Use linked list for tempotrack.
dmime: Implement setting TempoParam for tempotracks.
dmime: Parse MIDI Set Tempo meta events and generate a tempotrack.
dmime/tests: Call the correct QueryInterface function for DirectMusic track.
dmime: Parse note on/off events and generate a seqtrack.
dmime: Handle MIDI control events in MIDI files.
Zebediah Figura (47):
shell32: Also zero-initialize the background menu.
wined3d/atifs: Move TEXTUREFACTOR constant loading to arbfp_apply_draw_state().
wined3d/atifs: Move texture constant loading to arbfp_apply_draw_state().
wined3d/atifs: Move FFP bumpenv constant loading to atifs_apply_draw_state().
wined3d/atifs: Move fragment program compilation from set_tex_op_atifs() to atifs_apply_draw_state().
shell32: Stub CLSID_NewMenu.
shell32: Stub IContextMenu3 on the New menu.
shell32: Stub IObjectWithSite on the New menu.
shell32: Return an initial "New" menu.
wine.inf: Add ShellNew registry entries for Folder.
shell32: Enumerate the ShellNew key for Folder.
shell32: Implement InvokeCommand() for the new menu.
shell32/tests: Add a few more tests for the New menu.
msi/tests: Expand costing tests.
msi: Round costs up to 4096 bytes instead of clamping.
msi: Store component cost in 512-byte units.
msi: Multiply by 512 in dialog_vcl_add_drives().
shell32: Elevate the child process for the "runas" verb.
wine.inf: Set the EnableLUA value to 1.
msi: Create the custom action server as an elevated process.
shell32/tests: Add tests for context menu copy/paste.
shell32: Remove useless and commented out code.
shell32: Move DoPaste() up.
shell32: Add a get_data_format() helper.
shell32: Reimplement pasting from CF_DROP directly.
shell32: Respect the parent PIDL when pasting from CFSTR_SHELLIDLIST.
shell32: Implement Paste in the item menu.
wined3d/nvrc: Move TEXTUREFACTOR constant loading to nvrc_apply_draw_state().
wined3d/nvrc: Move FFP bumpenv constant loading to nvrc_apply_draw_state().
wined3d/nvrc: Move color ops from nvrc_colorop() to nvrc_apply_draw_state().
wined3d/nvrc: Remove now redundant STATE_SAMPLER handlers.
wined3d/nvrc: Move alpha op application to nvrc_apply_draw_state().
wined3d/nvrc: Remove now redundant WINED3D_TSS_RESULT_ARG handlers.
mciwave: Abort the playback thread regardless of state when stopping.
shell32/tests: Add more tests for IDataObject.
shell32: Do not interpret the direction in IDataObject::EnumFormatEtc().
shell32: Reimplement the data object to store a generic array of HGLOBALs.
shell32: Implement IDataObject::SetData().
shell32: Reimplement pasting from a CIDA without ISFHelper.
shell32: Remove the no longer used ISFHelper::CopyItems() helper.
shell32: Set the drop effect from the context menu.
shell32: Respect the drop effect in do_paste().
shell32: Fix a test failure in test_DataObject().
winetest: Elevate test processes on Wine.
ntdll: Implement NtSetInformationProcess(ProcessAccessToken).
ntdll: Elevate processes if requested in the manifest.
server: Create processes using a limited administrator token by default.
Zhiyi Zhang (7):
Revert "winex11.drv: Handle X error from vkGetRandROutputDisplayEXT()."
rtworkq: Avoid closing a thread pool object while its callbacks are running.
rtworkq: Avoid possible scenarios that an async callback could be called twice.
advapi32: Check NULL return key pointers when creating registry keys.
advapi32/tests: Test creating registry keys with a NULL return key pointer.
user32/tests: Add some ReleaseCapture() tests.
win32u: Only send mouse input in ReleaseCapture() when a window is captured.
Ziqing Hui (2):
mf/tests: Test AvgTimePerFrame for WMV decoder DMO.
winegstreamer: Set AvgTimePerFrame in GetOutputType() for WMV decoder.
Join Daniel Albu as he sits down for another conversation with emulation genius, Aaron Giles, about the latest version of his LucasArts emulator DREAMM!~~~~~...
Compilation of games that received fan translation in January 2024. Some of them got released exactly in January while the others aren't but received notable...
Accurate N64 Emulator
Changes in this release:
Fixed an issue where netplay would desync if someone had the VRU enabled
The Yuzu dev team has decided to end the project, marking the end of a great Nintendo Switch emulator.
ColecoVision emulator for macOS, Windows, Linux, BSD and RetroArch.
What's Changed
Support for Super Game Module (SGM) and AY8910 sound chip
Support for Super Action Controller (SAC), Wheel Controller and Roller Controller
Support for MegaCart
Support for Activision cart
Improved input keypad accuracy
Native file dialogs
Drag and drop rom files to open
Debugger improvements
Custom folders for saves and savestates
Scaling improvements like fit to window size or fit to window height
Hide cursor when hovering output window or when main menu is disabled
Load symbol files from command line
Support for WLA symbol files
Improve input response time
Save screenshots
Support for WSL
Automatic builds in GitHub Actions
Several bug fixes
add retrofw target by @Poligraf in #12
add Miyoo target by @salvacam in #17
libretro: Refactor the input handling method to keep track of current… by @msheehan79 in #28
libretro: Add no sprite limit core option by @msheehan79 in #30
Sega Master System / Game Gear / SG-1000 emulator for macOS, Windows, Linux, BSD and RetroArch.
Support for YM2413
Native file dialogs
Drag and drop rom files to open
Overscan options
Improved Game Gear timings
Improved PAL detection
Debugger improvements
Custom folders for saves and savestates
Scaling improvements like fit to window size or fit to window height
Hide cursor when hovering output window or when main menu is disabled
Load symbol files from command line
Support for WLA symbol files
Improve input response time
Save screenshots
Support for WSL
Automatic builds in GitHub Actions
Several bug fixes
Add support for zoomed sprites in SMS/GG modes
Pixel perfect rendering even with non integer HDPI values on Windows
Fixed bug where when resetting, the first opcode would not be disassembled. by @samizzo in #50
Added a generalised shortcut system so any gui events can have a shortcut key defined in the config.ini by @samizzo in #52
add retrofw target by @Poligraf in #55
Fix window title flicker by @clbr in #74
Define install and uninstall targets by @TomChapple in #94
Update NFDe implementation to v1.1.1 by @TomChapple in #96
Game Boy / Gameboy Color emulator for macOS, Windows, Linux, BSD and RetroArch.
Native file dialogs
Drag and drop rom files to open
Debugger improvements
Custom folders for saves and savestates
Scaling improvements like fit to window size or fit to window height
Hide cursor when hovering output window or when main menu is disabled
Load symbol files from command line
Support for WLA symbol files
Improve input response time
Save screenshots
Support for WSL
Automatic builds in GitHub Actions
Several bug fixes
add retrofw target by @Poligraf in #157
[libretro] Exit immediately if ROM is invalid or corrupt by @keithbowes in #161
[libretro] Fix cross-compiling with mingw by @keithbowes in #160
PS3/PSL1GHT Makefile update by @crystalct in #162
Fix compiler crash by @ethanaobrien in #164
Macos apple silicon by @bjoernh in #173
A Virtual Boy emulator for the 3DS
This release fixes the random crashes in T&E Soft's games (Red Alarm, 3D Tetris, Golf). Now all official games are actually playable!
Features
3D depth slider support (#10 by @djedditt)
Pick which eye is rendered in 2D mode
Fast-forward button on in-game touch screen (either hold or toggle)
GUI matches colour filter (#5 by @JeffRuLz)
Additional face button layouts
Fixes
Fixed random crashes in T&E Soft's games (Red Alarm, 3D Tetris, Golf)
Fix crash when closing through home menu while in the pause menu
DOSBox-X fork of the DOSBox project
an empty CD-ROM drive is attached to IDE emulation, return "Medium Not
Present" instead of a read error, when asked to read. (joncampbell123).
Add "empty drive" CD-ROM image type "IMGMOUNT e: empty -t iso" as a way
to emulate an empty CD-ROM drive with no disc in the drive. (joncampbell123).
Add "empty drive" floppy image type "IMGMOUNT 0 empty -t floppy -fs none"
as a way to emulate a floppy drive with no disk in the drive. (joncampbell123).
Video debug overlay: Fix mouse integration misalignment when the video
debug overlay is enabled while Windows is running (joncampbell123).
Video debug overlay: Fix segfault when enabled with 15/16bpp SVGA modes.
(joncampbell123).
Video debug overlay: Fix bug where video debug failed to appear in SVGA
15/16/24/32bpp display modes because of a design where the VGA drawing
code points directly at video RAM except when drawing the hardware cursor.
One symptom was that the video debug info on the side failed to appear at
all, unless running in Windows and only within the vertical range of the
mouse cursor. (joncampbell123).
Video debug overlay: Do not bother showing the Attribute Controller palette
in 15/16/24/32bpp SVGA modes because it doesn't matter there and is not
involved with how anything is displayed. (joncampbell123).
Video debug overlay: Fix debug info text to appear for 15/16/24/32bpp SVGA
modes. (joncampbell123).
BOOT --bios no longer triggers a system reset VM event, but instead just
jumps to the new BIOS image after DOS kernel shutdown. This is needed for
hardware and resources to stay as they were when running the BIOS i.e.
keeping any IDE devices configured within the DOS kernel intact so that the
BIOS can find and use them. Prior to this change, all hardware was fully
reset and unmapped prior to running the BIOS which made IDE emulation
unusable with BIOS images. (joncampbell123).
BOOT --bios no longer immediately loads the new BIOS into memory, but instead
loads and stores the image to a temporary buffer. The ROM image does not
actually get mapped in until the DOS kernel and everything else has had a
chance to shut down fully. (joncampbell123).
Fix BOOT --bios not to try to load PC-98 ITF firmware unless actually running
in PC-98 mode (joncampbell123).
Write PC-98 keyboard translation table (non-shifted) in ROM BIOS and set the
keyboard translation table pointer in the BIOS data area for "Nut Berry".
This Nut Berry game also assumes lookup and translation tables exist at
specific locations in the ROM BIOS, so put those tables there. The shift
state table in BIOS has also been added, though at the moment, the tables
are incomplete. (joncampbell123).
MegaZeux from the MS-DOS days had a 256-color tweakmode that worked on some
popular SVGA chipsets of it's time though on others it does nothing but halve
the display resolution of text mode. The basic idea is that it makes the VGA
card latch two 4-bit outputs of the VGA text mode into one 8-bit value, thus,
256 colors possible. Add support for this. However I am not sure whether this
tweakmode is supported by S3 chipsets, so it is OFF by default and you will
need to add "enable supermegazeux tweakmode=true" to the [video] section of
your dosbox.conf to enable it. (joncampbell123).
Undo the "no partition offset" change. DOOM II for PC-9821 requires it to work
else the page flipping fails and sprites and rendering flickers as you play.
(joncampbell123).
Allow text layer to appear in PC-98 256-color mode. Even though I was unable
to enable it on real hardware, "Shamat, The Holy Circlet" requires having
the text layer visible on top of 640x400 256-color mode for the introductory
scrolling text to appear on screen. So for now, just allow it. (joncampbell123).
The reason some PC-9821 games have been giving bad PITCH values (double the
correct value) to the GDC in 256-color mode has been determined. They read
port 9A0h to determine if the GDC is running at 5MHz or not. That port 9A0h
index was not implemented and therefore gave the game the impression it was
running at 5MHz when it was not, therefore the doubled PITCH value. This fix
corrects the squeezed 256-color mode and allows it to appear properly.
(joncampbell123).
IMGMOUNT: If the file extension is HDI, assume a hard disk image even if the
image file is small enough to qualify as a floppy disk image. There is an
HDI image of PC-98 game "D.O. Doki Doki Disk 8" that is 2.2MB, small enough
to be mistaken as a 2.88MB IBM PC floppy disk and therefore fail to mount
as an HDI image, this change fixes it. (joncampbell123, maron2000).
Emulate PEGC PC-98 linear framebuffer at both 0xF00000-0xF7FFFF (at 15MB
memory mark) but also make it appear at top of memory below BIOS (normally
at 0xFFF00000-0xFFF7FFFF). Some 32-bit PC-9821 CD-ROM MS-DOS games assume
the top of memory alias and will fail to show anything on screen without
it (unless, alternatively, the memalias setting is set to emulate 24 address
lines like a 386SX). Now to figure out why these same games are programming
a GDC PITCH value that's double what it should be... (joncampbell123).
PC-98 GDC scan offset no longer pays attention to scan offset of data
partition in 256-color mode. Required to help fix broken 256-color graphics
for some PC-98 CD-ROM games. (joncampbell123).
Refuse to enable ISA 15MB-16MB memory hole if memalias is set to 24 bits or
less. Not only is it redundant to do that but it also causes the BIOS to
immediately crash on startup. (joncampbell123).
IDE ATAPI CD-ROM emulation: In PC-98 mode when emulating a NEC CD-ROM drive,
also limit sector reads to one CD-ROM sector per DRQ because the MS-DOS driver
assumes that behavior. The driver will stall and error out if it requests a
multi-sector read and the drive does NOT limit transfers to one sector at a
time per IDE data transfer. This is in line with my experience writing the
DOSLIB IDE testing program and laptops from the 1990s with IDE ATAPI CD-ROM
drives, so it's understandable. (joncampbell123).
The reason the CD-ROM driver in PC-98 game HDI images refused to talk to our
IDE CD-ROM emulation is... (drumroll) we didn't report ourself as an NEC
CD-ROM drive when given the MMC INQUIRY command. Yes, really. The OAK CD-ROM
driver in these HDI images really does care whether or the drive is an NEC
brand drive. What a stupid reason not to talk to a CD-ROM drive. Add code to
default to "NEC" "CD-ROM DRIVE" as the INQUIRY result if running in PC-98 mode.
(joncampbell123).
Add basic rudimentary support for CloneCD (*.ccd *.img) images. It might not
work with more complex arrangements but it is enough for most CD-ROM PC-98
games so far. (joncampbell123).
libpng supports the pHYs PNG chunk which describes the pixel aspect ratio of
the PNG image. libpng 1.6 has it, use it. Programs that support the information
like FFMPEG will then display the PNG image with the correct aspect ratio.
(joncampbell123). [https://github.com//issues/4754]
PC-98 mode: There is a 302KHz timer behind I/O ports 5Ch/5Eh that some MS-DOS
drivers depend on for timing, particularly a popular IDE CD-ROM device driver
in many PC-98 game HDI images. This change allows the driver to time out after
about 5-10 seconds instead of an infinite hang. (joncampbell123)
Fix INT 10h to keep hardware CRTC I/O port synchronized with BIOS DATA area
copy so that other parts of INT 10h called by SetVideoMode do not accidentally
talk to the wrong I/O ports. This fixes corrupted INT 10 Mode F display
(640x350 monochrome graphics mode). (joncampbell123).
Add DOS Int21 0x5D 0x00 - remote server call
Inspired by FeeDOS inthndlr.c
With this change it is possible use a plain dosbox-x to install and run
Windows for Workgroups V3.11 as an IPX server on the pcap ne2000 interface
offering a host directory for read and persistent write access to an
MSDOS machine running a WfW 3.11 IPX network client.
Please don't forget mounting with -nocachedir
(Issue #4162)(Yogi-baer)
Fix missing keystroke SDLK_LESS on DE keyboard on Raspbian OS (Yogi-baer)
Fix crash when loading a language file without existing menu item "ttf_extcharset" (Yogi-baer)
Change ISA memory hole 512kb option from boolean to true/false/auto. (joncampbell123)
Add ISA memory hole 15mb option, make it true/false/auto.
Auto means off for IBM compatible mode and on for PC-9821 compatible mode.
This should allow some DOS games that depend on the linear framebuffer
to work properly even if memsize=16 or higher. (joncampbell123)
MIDI: set minimum sysex delay when enabled (mistydemeo)
International support in LABEL, COPY, DEL builtin commands (maxpat)
Fix palette setting bugs due to SETCOLOR fix in 2023.10.06 release. (maron2000)
Graphical glitches in Ultima VI(#4507), Chessmaster 3000(#4510), Wizardry VII(#4534)
Crash Sid Meyer's Civilization I (#4511)
TTF color settings regarding 'colors' option (#4579, #3318) and some more
Fix crash when mounting floppy/ISO images with no extension (maron2000)
Fix Intel macOS CI builds crashed on startup due to missing dylibs
(Issue #4438)(maron2000)
Fix TTF mode didn't switch to graphics mode on certain types of machines
such as tandy/pcjr.(Issue #4559)(maron2000)
Fix crash on switching to fullscreen when output=opengl (Intel macOS) (maron2000)
Update DXCapture shell command to support /O for OPL capture (AranVink)
Fix floppy images lock bug (maxpat78)
Fix type of return value at bool MountFat() (jg1uaa)
Fix VHD geometry bugs by performing MBR analysis (maxpat78)
Change maximum number of joystick buttons allowed by the mapper (mattcaron)
Enable Win9x support on a Pentium3 PC (crazii)
Add PC98 image extensions in file open dialogs (maron2000)
Fix input in configuration tool (SDL2) (maron2000)
Reduce warnings by replacing sOffset (use offsetof) (jg1uaa)
Fix LFN functions (nanshiki, SmileTheory)
Fixed a bug in which 2 extra bytes were copied to the buffer (ax=714eh,714fh).
Fixed wrong value of date/time etc. in file information (ax=714eh,714fh,71a6h).
Fixed date/time conversion to be correct (ax=71a7h)
Report correct file size on win32 when file is open (ax=71a6h).
Fix C++11 uncompliant codes (midi_alsa.h, gamelink.cpp) (maron2000)
Consider function key display in MORE command (PC-98) (maron2000)
Add support for J-3100 video mode 75h (nanshiki)
Reflect drawing status bit of GDC status I/O port (PC-98) (nanshiki)
Re-enable top line dimming when focus is lost in fullscreen (TTF mode) (maron2000)
Fix PC98 mouse counter value range to unsigned value (0-255) (nanshiki)
Added function for int DCh cl=10h ah=0Ah to 0Eh (nanshiki)
Added escape sequences (ESC[0J ESC[1J ESC[0K ESC[1K ESC[2K ESC[nL) (nanshiki)
Fixed behavior of Kanji character output at the right edge of screen (nanshiki)
Fixed Media ID was being written to an incorrect location in DPB (nanshiki)
Refined version info (maron2000)
Added PC-98 NEC mouse functions in INT33h (nanshiki)
Bump Nuked-OPL3 code to commit 730f8c2 (13 Nov. 2023) (maron2000)
Enabled OPL pass-through code (oplmode=hardware)(dbjh)
Fixed crash on startup due to SDLnet library linked externally (macOS) (maron2000)
Changed PC-98 floppy boot behavior when Drive 2 is mounted before Drive 1(maron2000)
Added Human68k ver.1.0&2.0 floppy disk support (maron2000)
Fixed attribute copy behavior of FreeDOS XCOPY.exe to match genuine DOS (maron2000)
Added Russian translation (Lartenik)
Fixed COPY/XCOPY command fails to recognize 2GB+ free disk space (maron2000)
Enable FONTX2 files in PC-98 mode (nanshiki)
Fix codepage switching when loading lang files (maron2000)
Add missing quotation marks in vcxproj (bredbored)
Fixed BPB detection of PC-98 floppies (maron2000)
Changed sequence to boot with drive numbers when booting from image (maron2000)
Added force JIS (JP106) keyboard layout option in PC-98 mode (maron2000)
PC-98: Enable mounting partitions with non-genuine IPL entry names (maron2000)
Added support for XDF disk format (maron2000)
Added ESFM emulation (ESFMu v1.2 core) (Kagamiin)
Added support for ESS "ESFM" sound synthesis (oplemu=esfmu, oplmode=esfm) (Kagamiin)
Added experimental/WIP support for the ESS ES1688 sblaster type (sbtype=ess1688) (Kagamiin)
Delete obsolete information regarding "INTRO SPECIAL" option (maron2000)