Win32, Win64 and Win32old versions of OpenMPT

Started by manx, August 09, 2015, 16:50:24

Previous topic - Next topic


This post has been superseded by

Win32, Win64 and Win32old versions of OpenMPT

tl;dr 1: If you are running OpenMPT on Windows 7 or later and are using a CPU that is not older than about 12 years, everything is fine for you. Otherwise, read on.

tl;dr 2: In order to provide more suitable support for modern systems and installations, there will be 3 builds of OpenMPT instead of 2 from now on. Support for OpenMPT 64 Bit on Windows XP x64 and Windows Vista is dropped (Note: only the 64 Bit version support is dropped, a 32 Bit version will continue to work). No other system configuration support will be dropped or degraded.

Long explanation

Old situation: There have been 2 standard release builds and 2 different standard test builds of OpenMPT until now:
Release Builds:

  • Win32: Windows 2000 (also Windows 98SE + KernelEx) (built with Visual Studio 2008)
  • Win64: Windows XP x64 (built with Visual Studio 2010)
Test builds:

  • Win32: Windows XP (built with Visual Studio 2010)
  • Win64: Windows XP x64 (built with Visual Studio 2010)

New situation: There will be 3 standard release and test builds of OpenMPT from now on (OpenMPT 1.25 (when released), and current 1.25 test builds):

  • Win32old: Windows 2000 (also Windows 98SE + KernelEx) (built with Visual Studio 2008)
  • Win32: Windows 7 + SSE2 (built with Visual Studio 2010)
  • Win64: Windows 7 + SSE2 (built with Visual Studio 2010)

If you are currently running OpenMPT 32 Bit or 64 Bit on Windows 7 or later with a CPU supporting the SSE2 instruction set, continue using the Win32 or Win64 builds you are used to. OpenMPT will make better use of your CPU's and Operating System's features from now on and may even be a bit faster. You will benefit from all new features that get added to OpenMPT. (Win32 / Win64)

If you are currently running OpenMPT 32 Bit on Windows up to and including Windows Vista, continue using the Win32old builds from now on. Nothing at all will change compared to the previous situation. OpenMPT will continue to support your aging system just fine. You will be missing out on newer features in OpenMPT that depend on functionality only found in newer Windows versions (obviously). (Win32old)

If you are currently running OpenMPT 32 Bit on Windows 7 with a CPU which does not support the SSE2 instruction set (highly unlikely setup), continue using the Win32old builds from now on. You will be missing out on newer features in OpenMPT that depend on functionality only found in newer Windows versions (even if available in your version of Windows). However, compared to the old Win32 build, there will be no disadvantages. (Win32old)

And now for the bad news. If you are currently running OpenMPT 64 bit on Windows XP x64 or Windows Vista, there will be no official 64 Bit build anymore. You can, however, continue using the Win32old version of OpenMPT which will continue to be fully supported on your system. (Win32old)

Recommended versions (Desktop Windows (Server Windows has similar support as Desktop versions of the same generation))

Windows 98SE + KernelEx
Windows ME + KernelEx 
Windows 2000           
Windows XP             
Windows XP x64         
Windows Vista         
Windows 7             
Win32 / Win64
Windows 8             
Win32 / Win64
Windows 8.1           
Win32 / Win64
Windows 10             
Win32 / Win64
Your setup will benefit from the change in build variants.
Your system will neither benefit nor suffer from the change in build variants.
Your system will not be as well supported as before.
Note: You can always use a build with fewer requirements, i.e., Win32old or Win32 instead of Win64, or Win32old instead of Win32. Win32old builds will suggest upgrading to Win32 if they detect that your system is capable of running those. Unfortunately, notification in the opposite direction is not possible in almost all cases, because the builds will not even start at all.


  • Q: Why are you doing this change?

    • An often requested feature is the support for loading more sample formats, in particular MP4/M4A (and other modern MPEG variants that are common today) and old compressed WAV variants. Both of these are relatively easily supportable by adding support for the Microsoft MediaFoundation framework found in Windows Vista and up (the same infrastructure that Windows Media Player uses for playback). Including support for MediaFoundation requires updating our default build configuration to Windows 7 level (the MediaFoundation framework included in Windows Vista lacks functionality that we require to implement MediaFoundatiuon sample import, thus the Windows 7 requirement).
    • Almost all users on current Windows systems will benefit from better usage of available CPU features (SSE2).
    As maintaining too many variants would cause a significant amount of work for us developers, we decided to offer as few build variants as feasable, and to keep 2 of them (the modern Win32 and Win64 builds) very similar.
    However, we will still continue to try to make each build variant of OpenMPT work on as wide a variaty of systems as possible, limited only by the tradeoff of work required versus benefit.

  • Q: What about OpenMPT on Wine?
    A: We have not yet determined or decided which build version of OpenMPT will be supported on which Wine versions. We will not drop support for any Wine version that OpenMPT already runs on. The most likely outcome will be, Win32/Win64 for Wine >=1.4, Win32old for Wine <1.4. However, we currently do not enforce or suggest the use of either Win32 or Win32old builds on Wine. If one does not appear to work correctly or at all, just try the other one and please report bugs and findings in the bug tracker.

  • Q: OpenMPT suggests upgrading from Win32old to Win32 builds on every startup. Can that be disabled?
    A: Yes. Set the advanced setting [Update]SuggestDifferentBuildVariant to 0.

  • Q: Can the check that causes OpenMPT to warn about an unsupported Windows version on startup be disabled?
    Q: Can the check that causes OpenMPT to exit on incompatible hardware be disabled?
    A: Yes. Start OpenMPT via mptrack.exe /noSysCheck.

  • Q: Is it still possible to compile OpenMPT 64 Bit for Windows Vista or Windows XP?
    A: Yes. The provided project files for Visual Studio 2008 will do just that with the x64 target. Using newer compilers, you additionally have to change the _WIN32_WINNT definition in common/BuildSettings.h to 0x0501 (Windows XP). Aditionally, with VS2012, you have to select a toolkit version with support for targeting Windows XP.

Feel free to ask any further questions in this thread.

Informal CPU support matrix (mostly High-End Desktop CPUs and some older SoCs only (Mainstream and Budget Desktop CPUs (Intel Celeron, newer Intel Pentium, AMD Duron, AMD Sempron, ...) as well as Workstation and Server CPUs (Intel Xeon, AMD Opteron, AMD Phenom, ...) have similar features as the Desktop CPUs of the same generation, Mobile CPUs in general lag 1 generation behind, embedded SoCs maybe even more))
The Win32old build of OpenMPT is compiled with Visual Studio 2008, which supports Windows down to and including Windows 2000. This means the compiler is free to assume that the CPU has all features that Windows 2000 depends on. Thus, any CPU that is not supported by Windows 2000 is also not supported by OpenMPT.
The following table lists the supported CPUs for each individual build variant. The table is for the most part based on documentation only and has not been verified on actual hardware.

AMD (Geode)
Cyrix (MediaGX)

32 Bit, no FPU
32 Bit, 486

Intel 80486SX (1989)
Intel 80486DX (1989)

AMD Am486 SX (1993)
AMD Am486 DX (1993)
NexGen Nx586 (1994)
AMD Am5x86 (1995)
NexGen Nx586-PF (1995)

Cyrix Cx486S (1993)
Cyrix Cx486DX (1993)
Cyrix 5x86 (1995)
Cyrix 6x86 (1996)

Cyrix MediaGX (1997)

- none

DM&P Vortex86SX (2008)
DM&P Vortex86DX (2008)
DM&P Vortex86MX (2008)
32 Bit, no CPUID
32 Bit, no CMOV
32 Bit, 686

Intel Pentium (1993)
Intel Pentium Pro (1995)
Intel Pentium MMX (1996)
Intel Pentium 2 (1997)
Intel Pentium 3 (1999)
Intel Quark (2013)

AMD K5 (1996)
AMD K6 (1997)
AMD K6-2 (1998)
AMD K6-III (1999)
AMD Athlon (K7) (1999)
AMD Athlon XP (2001)

Cyrix 6x86L (1996)
IDT WinChip C6 (1997)
Cyrix 6x86MX (1997)
Cyrix MII (1998)
IDT WinChip 2 (1998)
VIA Cyrix III (2000)
VIA C3 (2001)

Cyrix MediaGXm (1998)
NSC Geode GX1 (2000)
NSC Geode GX2 (2002)
AMD Geode GX (2002)
AMD Geode LX (2003)
AMD Geode NX (2004)

Transmeta Crusoe (2000)

Rise mP6 (1998)
SiS 55x (2001)
DM&P Vortex86 (2001)
32 Bit, SSE2

Intel Pentium 4 (2000)
Intel Pentium M (2003)
Intel Core (2006)
* some Intel Atom

- none

VIA C7 (2005)

- none

Transmeta Efficeon (2004)

- none
Win32 / Win64:
32 Bit, SSE2, 64 Bit

Intel Pentium D (2005)
Intel Core 2 (2006)
Intel Atom (2010)
* all Intel Core i

AMD Athlon 64 (2003)
AMD Athlon (K10) (2007)
AMD Athlon II (2009)
* all AMD APUs

VIA Nano (2008)
VIA Nano X2 (2011)

- none

- none

- none