Difference between pages "Nintendo 3DS emulators" and "Wrappers"

From Emulation General Wiki
(Difference between pages)
Jump to navigation Jump to search
 
(From latest Wayback Machine snapshot)
 
Line 1: Line 1:
{{Infobox console
+
A '''wrapper''' is a common name for a technology used to transparently replace calls made to one graphics API with calls made to another. This can be used to run software on systems they were not designed for, such as running old PC games made for 3Dfx Glide graphics card on modern Windows 10 systems, or running modern Windows-only DirectX 11 games on Linux. A wrapper often takes the form of a shared library that replaces the original, though it can also be a standalone interceptor. Wrappers aren't needed for OpenGL since its APIs don't require much translation. Despite this, [https://www.collabora.com/news-and-blog/blog/2018/10/31/introducing-zink-opengl-implementation-vulkan/ a wrapper was created for it anyway].
|title = Nintendo 3DS
 
|logo = 3ds.png
 
|developer = [[:Nintendo]]
 
|type = [[:Category:Consoles|Handheld game console]]
 
|generation = [[:Category:Eighth-generation video game consoles|Eighth generation]]
 
|release = 2011
 
|discontinued = 2020
 
|predecessor = [[Nintendo DSi emulators|Nintendo DSi]]
 
|emulated = {{~}}
 
}}
 
The '''[[wikipedia:Nintendo 3DS|Nintendo 3DS]]''' is an eighth-generation handheld game console by Nintendo, released on March 27, 2011 for {{inflation|USD|249|2011}}. The original model and the 2DS had a dual-core ARM11 MPCore at 268 MHz and a single-core ARM9, 128MB of RAM and 6MB of VRAM, and a DMP PICA200 GPU. The New 3DS and New 2DS XL models upgrade this to an 804 MHz quad-core ARM11 and 256MB of RAM, along with an extra pair of shoulder buttons and a right analogue stick.
 
  
The most notable feature of this console is the use of [https://en.wikipedia.org/wiki/Autostereoscopy autostereoscopic] (i.e. without glasses) 3D, which can be configured using a slider. This was omitted on the cost-reduced 2DS and New 2DS XL models, which was released due to eye health concerns with children whom Nintendo advised not to use the 3DS's stereoscopic mode (though it is speculated that said advisories were more for liability reasons in case of a health-related lawsuit).
+
==90's APIs==
 +
To understand why wrappers are needed for older games, it's important to understand that during the 90s the graphics card market for [[Intel CPUs|IBM PCs and compatibles]] was in its infancy, and Direct3D wasn't an automatic choice for developers. Some games were often designed for 3Dfx's Glide API so that it would run with their Voodoo card. With 3dfx going bankrupt however, support for Glide didn't stay around and the API was made open-source, but NVIDIA and AMD never incorporated it into their drivers. A wrapper is now needed to play these games with hardware acceleration, or if we're lucky the game gets [[Game Engine Recreations and Source Ports|a port]] to other APIs instead.
  
__TOC__
+
Even games using older versions of DirectDraw or Direct3D might benefit from wrappers. Since they can have compatibility or rendering issues on modern systems. Wrappers also enable various overrides and enhancements, such as the use of third-party tools like [https://reshade.me/ ReShade], to enhance or improve the gaming experience.
  
==Emulators==
+
{| class="wikitable sortable" style="text-align:center;"
{| class="wikitable" style="text-align:center;"
+
|-
 
! scope="col"|Name
 
! scope="col"|Name
! scope="col"|Platform(s)
+
! scope="col"|OS
 
! scope="col"|Latest Version
 
! scope="col"|Latest Version
! scope="col"|Open-Source
+
! scope="col"|Translates
! scope="col"|[[libretro|Libretro Core]]
+
! scope="col"|Into
 +
! scope="col"|<abbr title="Free and Open-Source Software">FOSS</abbr>
 
! scope="col"|Active
 
! scope="col"|Active
 
! scope="col"|[[Recommended Emulators|Recommended]]
 
! scope="col"|[[Recommended Emulators|Recommended]]
 
|-
 
|-
!colspan="7"|PC / x86
+
|[http://www.zeus-software.com/downloads/nglide nGlide]
 +
|align=left|{{Icon|Windows}}
 +
|[http://www.zeus-software.com/downloads/nglide 2.10]
 +
|Glide
 +
|Vulkan, Direct3D 9
 +
|{{✗}} ||{{✓}} ||{{✓}}
 
|-
 
|-
|[[Citra]]
+
|[http://dege.freeweb.hu/ dgVoodoo 2]
 +
|align=left|{{Icon|Windows}}
 +
|[http://dege.freeweb.hu/dgVoodoo2/dgVoodoo2.html {{DgVoodoo2Ver}}]
 +
|Glide, DirectX 1-9
 +
|Direct3D 11, Direct3D 12
 +
|{{✗}} ||{{✓}} ||{{✓}}
 +
|-
 +
|[[Wine|WineD3D]]
 
|align=left|{{Icon|Windows|Linux|macOS}}
 
|align=left|{{Icon|Windows|Linux|macOS}}
|[https://citra-emu.org/download/ Nightly]
+
|[https://wiki.winehq.org/Download {{WineVer}}] <small>(Linux, macOS)</small><br /> [https://fdossena.com/?p=wined3d/index.frag {{WineDevVer}}] <small>Windows</small>
|{{}}
+
|DirectX 1-11
|{{✓}}
+
|Vulkan, OpenGL
|{{}}
+
|{{✓}} ||{{✓}} ||{{✓}}
|{{✓}}
+
|-
 +
|[https://www.dxgl.org/ DXGL]
 +
|align=left|{{Icon|Windows}}
 +
|[https://www.dxgl.org/downloads/ {{DXGLVer}}]
 +
|DirectX 1-7
 +
|OpenGL
 +
|{{✓}} ||{{✓}} ||{{TBD}}
 +
|-
 +
|[http://www.glidos.net/ Glidos]
 +
|align=left|{{Icon|Windows}}
 +
|[http://www.glidos.net/download.html 1.53b]
 +
|Glide <small>(DOS)</small>
 +
|?
 +
|{{✗}} ||{{✗}} ||{{TBD}}
 +
|-
 +
|[http://openglide.sourceforge.net/ OpenGlide]
 +
|align=left|{{Icon|Windows}}
 +
|[https://sourceforge.net/projects/openglide/files/latest/download 0.09 Alpha]
 +
|Glide
 +
|OpenGL
 +
|{{✓}} ||{{✗}} ||{{✗}}
 +
|-
 +
|[https://sourceforge.net/projects/psvoodoo/ psVoodoo]
 +
|align=left|{{Icon|Windows}}
 +
|[https://sourceforge.net/projects/psvoodoo/files/latest/download 0.13]
 +
|Glide
 +
|Direct3D 9
 +
|{{✓}} ||{{✗}} ||{{✗}}
 +
|-
 +
|}
 +
 
 +
===Comparisons===
 +
;[http://www.zeus-software.com/downloads/nglide nGlide]
 +
Currently the best Glide wrapper, but it's closed-source. All three public API versions are supported; 2.11, 2.60 and 3.10, and it reads them using Direct3D 9. Vulkan output was added in 2.0, which allows it to work under Linux using [[Wine]] 2.10.0 and newer.<ref name="nglidevulkan">http://www.zeus-software.com/forum/viewtopic.php?f=2&t=2044</ref> nGlide also supports high resolution modes. See the [http://www.zeus-software.com/downloads/nglide/compatibility compatibility list].
 +
 
 +
;[http://dege.freeweb.hu/ dgVoodoo 2]
 +
Despite the name, dgVoodoo 2 reimplements more than Glide. It replaces multiple APIs; Glide 2.11, 2.45, 3.1, 3.1 Napalm, all versions of DirectDraw and Direct3D up to version 7, Direct3D 8.1, and Direct3D 9. This wrapper outputs Direct3D 11 with different device types as wrapping output such as hardware or software rendering.
 +
 
 +
;[[Wine]]
 +
Wine is a [[Compatibility layers|compatibility layer]] for Linux and macOS. On its own, Wine works pretty well for running older DirectX games. Some forks allow Wine's built-in reimplementations to run under Windows.
 +
 
 +
;[https://www.dxgl.org/ DXGL]
 +
A free replacement for ddraw.dll outputting OpenGL. It's designed to overcome driver bugs, mainly in Windows Vista and beyond. It adds various rendering enhancements such as display scaling and filtering options. DXGL also supports Direct3D 7, however it's currently under development and doesn't work with many programs.
 +
 
 +
==2000's and later APIs==
 +
If you want to run modern Windows games on another OS you will likely need one of these wrappers. Usually you don't have to download these separatly as they come packaged into [[compatibility layers]] like [[Proton]], [[Wine]] or [https://www.codeweavers.com/crossover CrossOver]. Some wrappers can also be used on Windows to improve compatibility or stability for games using older Direct3D or OpenGL versions.
 +
{| class="wikitable sortable" style="text-align:center;"
 +
|-
 +
! scope="col"|Name
 +
! scope="col"|OS
 +
! scope="col"|Latest Version
 +
! scope="col"|Translates
 +
! scope="col"|Into
 +
! scope="col"|<abbr title="Free and Open-Source Software">FOSS</abbr>
 +
! scope="col"|Active
 +
! scope="col"|[[Recommended Emulators|Recommended]]
 
|-
 
|-
|Vvctre
+
|[https://github.com/doitsujin/dxvk DXVK]
|align=left|{{Icon|Windows|W7|Linux}}
+
|align=left|{{Icon|Linux}}
|[https://github.com/vvanelslande/vvctre/releases {{VvctreVer}}]
+
|[https://github.com/doitsujin/dxvk/releases {{DXVKVer}}]
|{{✓}}
+
|Direct3D 9-11
|{{✗}}
+
|Vulkan
|{{✓}}
+
|{{✓}} ||{{✓}} ||{{}}
|{{~}}
 
 
|-
 
|-
|Corgi3DS
+
|[https://source.winehq.org/git/vkd3d.git/ vkd3d]
 +
|align=left|{{Icon|Linux}}
 +
|[https://source.winehq.org/git/vkd3d.git/ {{Vkd3dVer}}]
 +
|Direct3D 12
 +
|Vulkan
 +
|{{✓}} ||{{✓}} ||{{✓}}
 +
|-
 +
|[[Wine|WineD3D]]
 
|align=left|{{Icon|Windows|Linux|macOS}}
 
|align=left|{{Icon|Windows|Linux|macOS}}
|[https://github.com/PSI-Rockin/Corgi3DS/ Git]
+
|[https://wiki.winehq.org/Download {{WineVer}}] <small>(Linux, macOS)</small><br /> [https://fdossena.com/?p=wined3d/index.frag {{WineDevVer}}]  <small>Windows</small>
|{{}}
+
|Direct3D 1-11
|{{}}
+
|OpenGL
|{{}}
+
|{{}} ||{{}} ||{{}}
|{{}}
 
 
|-
 
|-
|[[3dmoo]]
+
|[https://github.com/iXit/wine-nine-standalone Gallium Nine]
|align=left|{{Icon|Windows|Linux}}
+
|align=left|{{Icon|Linux}}
|[https://github.com/plutooo/3dmoo/ Git]
+
|[https://github.com/iXit/wine-nine-standalone git]
|{{✓}}
+
|Direct3D 9
|{{}}
+
|Linux Calls
|{{✗}}
+
|{{✓}} ||{{}} ||{{~}} <small>WIP</small>
|{{}}
 
 
|-
 
|-
|[[TronDS]]
+
|[https://github.com/KhronosGroup/MoltenVK MoltenVK]
|align=left|{{Icon|Windows|Linux}}
+
|align=left|{{Icon|macOS|iOS}}
|[http://trondsemu.byethost15.com/downloads.html 1.0.0.5]
+
|[https://github.com/KhronosGroup/MoltenVK/releases {{MoltenVKVer}}]
|{{}}
+
|Vulkan
|{{}}
+
|Metal
|{{}}
+
|{{}} ||{{}} ||{{TBD}}
|{{}}
 
 
|-
 
|-
|LemonLime
+
|[https://www.collabora.com/news-and-blog/blog/2018/10/31/introducing-zink-opengl-implementation-vulkan/ Zink]
|align=left|{{Icon|Windows|Linux|macOS}}
+
|align=left|{{Icon|Linux}}
|[https://github.com/Cyuubi/LemonLime/ Git]
+
|[https://gitlab.freedesktop.org/kusma/mesa/tree/zink git]
|{{✓}}
+
|OpenGL
|{{}}
+
|Vulkan
|{{✗}}
+
|{{✓}} ||{{}} ||{{TBD}}
|{{}}
 
 
|-
 
|-
!colspan="9"|Mobile / ARM
+
|[https://github.com/crosire/d3d8to9/ d3d8to9]
 +
|align=left|{{Icon|Windows}}
 +
|[https://github.com/crosire/d3d8to9/releases git]
 +
|Direct3D 8
 +
|Direct3D 9
 +
|{{✓}} ||{{✓}} ||{{✗}}
 
|-
 
|-
|[[Citra]]
+
|[https://github.com/Joshua-Ashton/d9vk D9VK]
|align=left|{{Icon|Android}}
+
|align=left|{{Icon|Linux}}
|[https://play.google.com/store/apps/details?id=org.citra.citra_emu Google Play]<br/>[https://github.com/citra-emu/citra-android Git]
+
|[https://github.com/Joshua-Ashton/d9vk git]
|{{✓}}
+
|Direct3D 9
|{{✗}}
+
|Vulkan
|{{✓}}
+
|{{✓}} ||{{✗}} ||{{}}
|{{~}}
 
 
|-
 
|-
|Citra-MMJ <small>(Unofficial)</small>
+
|[https://github.com/Joshua-Ashton/dxup DXUP]
|align=left|{{Icon|Android}}
+
|align=left|{{Icon|Windows|Linux}}
|[https://github.com/weihuoya/citra/releases Git] <small>(WIP)</small>
+
|[https://github.com/Joshua-Ashton/dxup git]
|{{✓}}
+
|Direct3D 9-10
|{{✗}}
+
|Direct3D 11
|{{✓}}
+
|{{✓}} ||{{{✗}} ||{{}}
|{{~}}
 
 
|-
 
|-
|[[Mikage]]
+
|[https://github.com/disks86/VK9 VK9]
|align=left|{{Icon|Android}}
+
|align=left|{{Icon|Windows|Linux}}
|0.5
+
|[https://github.com/disks86/VK9/releases git]
|{{✗}}
+
|Direct3D 9
|{{}}
+
|Vulkan
|{{✗}}
+
|{{}} ||{{✗}} ||{{✗}}
|{{✗}}
 
 
|-
 
|-
 
|}
 
|}
  
 
===Comparisons===
 
===Comparisons===
;[[Citra]]:An open-source Nintendo 3DS emulator made by experienced emulator developers. The devs insist that it's still experimental, but as of mid-2019 around half of all games are fully playable with minor or no issues.  [https://citra-emu.org/entry/announcing-citra-android/ An official Android version was released in May of 2020].
+
;[https://github.com/doitsujin/dxvk DXVK]  
;Vvctre
+
A wrapper for Direct3D 9-11. DXVK was designed to speed up support for Direct3D 11 games in [[Wine]] and, later, [[Proton]] since a native implementation seemed unlikely.
:Based on Citra. made by valentin, the person who fixed luigi mansion 2 crash before citra could. Vvctre is The best way to play Luigi's Mansion 2 on PC, since it changes the CPU tickspeed to 21000, and the CPU clock speed to 85%.(make sure to set these settings before u run the game, and vvctre is the best emulator to run the nintendo 3ds os).
 
;[[3dmoo]]:Another open-source Nintendo 3DS emulator, made by experienced developers in the DS hacking scene. It was released shortly after Citra and received similar progress for a few months, but was eventually aborted by its authors after a while.
 
;[[TronDS]]:A closed-source Nintendo 3DS emulator, presumably made by the iDeaS author. Little is known about it other than that it can run simple homebrew. It cannot be used for playing games.
 
;Corgi3DS:An unique 3DS emulator designed for macOS systems. Its GitHub activity started on [https://github.com/PSI-Rockin/Corgi3DS/commit/1b81c7e00c9a7a73f2da12d07ec3a9e4bc69c6ac May 5, 2019]. Main programmer is a self-proclaimed dog lover and has previously created CorgiDS and DobieStation, though the former seemed to be abandoned. Corgi3DS is mainly indigenous but the preliminary [https://github.com/PSI-Rockin/Corgi3DS/commit/a60b06683495e4e8fd0c170ec4ca8c453ce31609 Wi-Fi code] was ported from [[melonDS]]' code.(project on a  indefinite hiatus, PSI said this about the matter "Haven't worked on it in several months, it's basically a hobby project of mine that I touch when I feel the urge").
 
;[[Mikage]]:A commercial, Android-exclusive 3DS emulator optimized for smartphones and other mobile devices. Made by a former author of Citra and other emulators.  On an indefinite hiatus.
 
 
 
==Emulation issues==
 
Citra currently can't emulate any of the 3DS's online features aside from LAN multiplayer.
 
It can't connect to nintendos servers but
 
Users can create rooms and play through the internet
 
 
 
 
 
corgi3ds currently can't run any game without heavy stuttering.
 
 
 
 
 
citra emulates the home menu although u can't launch anything on it(use vvctre for the os emulation)
 
 
 
 
 
currently there is no full screen support in linux vvctre, valentin said he can't fix it.
 
 
 
==Game images==
 
===3DS vs. CIA===
 
<!--this section is pretty inaccurate-->
 
There are two big types of 3DS game images currently:
 
;NCSD-type: Includes '''.CCI''' (CTR Cart Image), aka '''.3DS''' - data on physical carts, can be executed right off the bat, not used much since no one bothered to develop a CFW solution to load them yet (besides converting them to CIA) and only overpriced flashcarts (Gateway/Sky3DS) can load them.
 
;NCCH-type: Includes '''.CIA''' (CTR Importable Archive) and '''.CXI''' - installers that unpack game data to the SD card or the 3DS NAND memory. Some homebrew apps (FBI, DevMenu) can install CIA files on 3DS systems with CFW installed. Digital games are often distributed as CIAs.
 
 
 
*Note that CTR (Citrus) is the internal code names for the 3DS.
 
 
 
Due to one format being so far restricted to overpriced flashcarts and the very slow Citra development (meaning playing on a real 3DS is still the preferred way to go), the CIA format is preferred in many sharing websites, downloader tools and even tools to dump your own games.
 
 
 
However, converting a CIA image to 3DS format (and vice-versa) is still possible with no loss of content. Read the Encryption section below for a guide.
 
  
Some outdated dumping utilities intended for use with Citra (like braindump) produce damaged decrypted 3DS images that can't be easily converted back. No known solution exists so far to fix those dumps.
+
:;[https://github.com/Joshua-Ashton/d9vk D9VK]
 +
:A fork for Direct3D 9, originally created when DXVK was designed for Direct3D 10 and 11. Was merged back into the main project in version 1.5.  
  
===Encryption===
+
;[https://source.winehq.org/git/vkd3d.git/ vkd3d]
Most dumps online are also encrypted. This encryption poses no problem for playing game images on a real 3DS since it can deal with that encryption with internal keys included in the bootrom, but becomes a problem when trying to emulate them on PC. '''Citra cannot play encrypted games, only decrypted games will work.''' A solution to load encrypted images is for the moment on the back burner and there's not much developer interest for it. If you want to play games on Citra, you'll have to convert your game images to that format.
+
A work-in-progress Direct3D 12 to Vulkan wrapper created for Wine by Valve.
  
Formerly, decrypting those ROMs used to require real 3DS hardware (bafflingly enough, Citra devs still ask users to do this even nowadays). It required files generated by a real 3DS called '''xorpads''' unique to that game version, using the encryption engine within the 3DS. After this part, these xorpads (which are big) can be used with PC tools (or other 3DS-based homebrew) to produce the decrypted game image. After that, some 3DS homebrew (Decrypt9, GodMode9) included tools to directly convert encrypted images to decrypted images with a single button press, but those still require a real 3DS.
+
;[[Wine]]
 +
Has an internal graphics API wrapper for Direct3D 1-11 using OpenGL. It works mostly well for older games, but is slower and has more bugs than newer wrappers using Vulkan, such as DXVK. It's possible to use Wine's wrapper in Windows using different forks.
  
But now this new feature was added to citra enables the user to play encrypted games without decrypting them. Read this page
+
;[https://github.com/iXit/wine-nine-standalone Gallium Nine]
[https://citra-emu.org/wiki/aes-keys/]
+
An open-source implementation of the Direct3D 9 library. Gallium Nine is different since it uses calls native to Linux as opposed to another graphics API like Vulkan. This allows applications to run at near-native speeds. The catch is that it relies on Gallium, Linux's open source 3D renderer, and any driver that doesn't use Gallium is less likely to work (such as NVIDIA's proprietary drivers).
  
Then, go to this reddit page and copy the code from second comment (credit floppydoppy2)
+
;[https://github.com/disks86/VK9 VK9]  
[https://www.reddit.com/r/CemuPiracy/comments/gpo2ey/aes_key_nintendo_3ds_title_keys_for_citra/] copy it ,make a new .TXT file names 'aes_keys.txt'
+
A Direct3D 9 wrapper that outputs to Vulkan.
Then you might have that user folder for citra, then open it go to sysdata , assuming that you have a shared font.bin file there paste this AES keys.txt there.
 
Now user folder is what is the system archive of 3ds you need it to display video
 
Now put user folder in folder of citra or in  c: drive (see some YouTube videos , read some reddit posts you will understand it)
 
For user folder:-  [http://www.mediafire.com/file/brdbqzng4iuvvcz/Citra_60_FPS_100%2525_gurantee.exe/file]
 
Extract the archive and then take the user folder and put that to the latest build
 
  
(This is a ogl 3.3 fix using mesa driver). Then extract this archive using 7-zip (don't use this as your citra this is an old version. Compatibility is very low and speed may be terrible in your device). Copy the 'user' folder you see on that folder, download the latest citra version on to your desktop then paste this user folder there.
+
==External links==
 +
* [https://www.gamingonlinux.com/articles/dxvk-102-is-out-with-some-bug-fixes-d9vk-seems-to-be-progressing-nicely.13868/page=2#r151939 State of Direct3D 9-12 translation layers] by DXVK author YoRHa-2B (2019-04-02)
  
The game changer was the sighax exploit, allowing to dump the 3DS bootrom which includes these encryption keys. This file can be downloaded from the [[Emulator Files#Nintendo 3DS|Emulator Files]] page. You can then use a program like '''[https://gbatemp.net/threads/tutorial-extract-decrypt-games-nand-backups-and-sd-contents-with-fuse-3ds.499994/ fuse-3ds]''' to decrypt games using this file. Simply place boot9.bin in the same folder, run the program, mount the encrypted .cia or .3ds, and find the '''decrypted.cxi''' file inside (usually in the first folder). Citra should be able to load this file without issues.
+
==See also==
 +
* [[Compatibility layers]] - Allows software written for one operating system to run on a different OS.
  
{{Nintendo}}
+
==References==
 +
{{Reflist}}
  
[[Category:Consoles]]
+
[[Category:Not really emulators]]
[[Category:Nintendo consoles]]
 
[[Category:Eighth-generation video game consoles]]
 
[[Category:Nintendo 3DS emulators]]
 

Revision as of 23:22, 10 July 2021

A wrapper is a common name for a technology used to transparently replace calls made to one graphics API with calls made to another. This can be used to run software on systems they were not designed for, such as running old PC games made for 3Dfx Glide graphics card on modern Windows 10 systems, or running modern Windows-only DirectX 11 games on Linux. A wrapper often takes the form of a shared library that replaces the original, though it can also be a standalone interceptor. Wrappers aren't needed for OpenGL since its APIs don't require much translation. Despite this, a wrapper was created for it anyway.

90's APIs

To understand why wrappers are needed for older games, it's important to understand that during the 90s the graphics card market for IBM PCs and compatibles was in its infancy, and Direct3D wasn't an automatic choice for developers. Some games were often designed for 3Dfx's Glide API so that it would run with their Voodoo card. With 3dfx going bankrupt however, support for Glide didn't stay around and the API was made open-source, but NVIDIA and AMD never incorporated it into their drivers. A wrapper is now needed to play these games with hardware acceleration, or if we're lucky the game gets a port to other APIs instead.

Even games using older versions of DirectDraw or Direct3D might benefit from wrappers. Since they can have compatibility or rendering issues on modern systems. Wrappers also enable various overrides and enhancements, such as the use of third-party tools like ReShade, to enhance or improve the gaming experience.

Name OS Latest Version Translates Into FOSS Active Recommended
nGlide Windows 2.10 Glide Vulkan, Direct3D 9
dgVoodoo 2 Windows 2.8.2 Glide, DirectX 1-9 Direct3D 11, Direct3D 12
WineD3D Windows Linux macOS 9.0 (Linux, macOS)
9.5 Windows
DirectX 1-11 Vulkan, OpenGL
DXGL Windows 0.5.22 DirectX 1-7 OpenGL TBD
Glidos Windows 1.53b Glide (DOS) ? TBD
OpenGlide Windows 0.09 Alpha Glide OpenGL
psVoodoo Windows 0.13 Glide Direct3D 9

Comparisons

nGlide

Currently the best Glide wrapper, but it's closed-source. All three public API versions are supported; 2.11, 2.60 and 3.10, and it reads them using Direct3D 9. Vulkan output was added in 2.0, which allows it to work under Linux using Wine 2.10.0 and newer.[1] nGlide also supports high resolution modes. See the compatibility list.

dgVoodoo 2

Despite the name, dgVoodoo 2 reimplements more than Glide. It replaces multiple APIs; Glide 2.11, 2.45, 3.1, 3.1 Napalm, all versions of DirectDraw and Direct3D up to version 7, Direct3D 8.1, and Direct3D 9. This wrapper outputs Direct3D 11 with different device types as wrapping output such as hardware or software rendering.

Wine

Wine is a compatibility layer for Linux and macOS. On its own, Wine works pretty well for running older DirectX games. Some forks allow Wine's built-in reimplementations to run under Windows.

DXGL

A free replacement for ddraw.dll outputting OpenGL. It's designed to overcome driver bugs, mainly in Windows Vista and beyond. It adds various rendering enhancements such as display scaling and filtering options. DXGL also supports Direct3D 7, however it's currently under development and doesn't work with many programs.

2000's and later APIs

If you want to run modern Windows games on another OS you will likely need one of these wrappers. Usually you don't have to download these separatly as they come packaged into compatibility layers like Proton, Wine or CrossOver. Some wrappers can also be used on Windows to improve compatibility or stability for games using older Direct3D or OpenGL versions.

Name OS Latest Version Translates Into FOSS Active Recommended
DXVK Linux 2.3 Direct3D 9-11 Vulkan
vkd3d Linux 1.11 Direct3D 12 Vulkan
WineD3D Windows Linux macOS 9.0 (Linux, macOS)
9.5 Windows
Direct3D 1-11 OpenGL
Gallium Nine Linux git Direct3D 9 Linux Calls ~ WIP
MoltenVK macOS iOS 1.3.204.1 Vulkan Metal TBD
Zink Linux git OpenGL Vulkan TBD
d3d8to9 Windows git Direct3D 8 Direct3D 9
D9VK Linux git Direct3D 9 Vulkan
DXUP Windows Linux git Direct3D 9-10 Direct3D 11
VK9 Windows Linux git Direct3D 9 Vulkan

Comparisons

DXVK

A wrapper for Direct3D 9-11. DXVK was designed to speed up support for Direct3D 11 games in Wine and, later, Proton since a native implementation seemed unlikely.

D9VK
A fork for Direct3D 9, originally created when DXVK was designed for Direct3D 10 and 11. Was merged back into the main project in version 1.5.
vkd3d

A work-in-progress Direct3D 12 to Vulkan wrapper created for Wine by Valve.

Wine

Has an internal graphics API wrapper for Direct3D 1-11 using OpenGL. It works mostly well for older games, but is slower and has more bugs than newer wrappers using Vulkan, such as DXVK. It's possible to use Wine's wrapper in Windows using different forks.

Gallium Nine

An open-source implementation of the Direct3D 9 library. Gallium Nine is different since it uses calls native to Linux as opposed to another graphics API like Vulkan. This allows applications to run at near-native speeds. The catch is that it relies on Gallium, Linux's open source 3D renderer, and any driver that doesn't use Gallium is less likely to work (such as NVIDIA's proprietary drivers).

VK9

A Direct3D 9 wrapper that outputs to Vulkan.

External links

See also

References