Difference between pages "Clock Signal" and "Xenia"

From Emulation General Wiki
(Difference between pages)
Jump to navigation Jump to search
(Added category)
 
 
Line 1: Line 1:
 
{{Infobox emulator
 
{{Infobox emulator
|title         = Clock Signal
+
|title = Xenia
|logo         = CLK_(emulator)_Icon.png
+
|logo = Xenia.png
|logowidth = 120
+
|logowidth = 160
|developer    = [[User:Tommy|Thomas Harte]]
+
|active = Yes
|version      = {{clkver}}
+
|platform = [[Emulators on PC|Windows]], [[Emulators on Linux|Linux]]
|active       = Yes
+
|target = [[Xbox 360 emulators|Xbox 360]]
|platform     = Linux<br/>[[Emulators on macOS|macOS]]<br/>BSD
+
|orig-developer = [https://github.com/benvanik Ben Vanik] <small>(Initial work. [https://github.com/xenia-project/xenia/pull/562 Retired 2016].)</small>
|accuracy      = Subcycle
+
|developer = [https://github.com/DrChat DrChat] <small>(Also worked with B. Vanik)</small>, [https://github.com/gibbed Rick Gibbed] and Xenia community
|target       = [[BBC Micro emulators|Acorn Electron]], [[Amstrad CPC emulators|Amstrad CPC]], [[Apple II emulators|Apple II]], [[Atari 2600 emulators|Atari 2600]], [[Atari ST emulators|Atari ST]], [[ColecoVision emulators|ColecoVision]], Commodore VIC-20, Enterprise 64/128, [[Macintosh line|early Macintosh]], [[MSX emulators|MSX 1]], Oric 1/Atmos/Pravetz, [[SG-1000 emulators|Sega SG-1000]], [[Master System emulators|Master System]], [[Sinclair ZX81 emulators|Sinclair ZX80/ZX81]], [[ZX Spectrum emulators|ZX Spectrum]]
+
|compatibility = [http://xenia.jp/compatibility/ 18% playable], possibly more
|prog-lang    = C++; Mac bindings in Objective-C and Swift
+
|website = [http://xenia.jp/ Xenia.jp]
|download      = [https://github.com/TomHarte/CLK/releases Official releases] (macOS); [http://snapcraft.io/clock-signal Snapcraft listing] (Linux)
+
|support = [https://www.patreon.com/xenia_project Patreon], [https://www.patreon.com/gibbed Patreon (gibbed)]
|source       = [https://github.com/TomHarte/CLK GitHub]
+
|source = [https://github.com/xenia-project/xenia GitHub]
|license       = MIT License
+
|license = BSD license
 
}}
 
}}
 
+
'''Xenia''' is an experimental, open-source [[Xbox 360 emulators|Xbox 360 emulator]] for Windows and, to a lesser extent, Linux (through [[Wine]]). Outside of Microsoft's own backward compatibility on successive consoles, Xenia is the first and only unofficial Xbox 360 emulator that exists.
'''Clock Signal''', also known as '''CLK''', is an MIT-licensed open-source emulator of a collection of 8-bit computers and consoles for Linux, macOS and BSD.
 
 
 
It is unique in its approach to screen emulation and as a result offers worst-case video latency equal to the refresh rate of the screen on which it is being displayed — 1/60th of a second on a 60Hz monitor, 1/120th of a second on a 120Hz monitor, etc — regardless of the refresh rate of the machine being emulated.
 
 
 
It is also noteworthy for the degree to which it deploys automatic analysis in an attempt automatically to launch class software: in addition to ahead-of-time static analysis, it can simply run and monitor multiple different machines or machine configurations in parallel to determine what the proper hardware configuration for a particular title should be, often offering a seamless continuous display to the user.
 
 
 
It generally emulates components internally at single-cycle or half-cycle precision but seeks to decouple execution wherever possible. E.g. even if video and processor share memory which would naively imply running each component for a single cycle in a round robin fashion, the emulator actually applies something analogous to a write-through cache: the processor writing to the shared region will cause video processing to run just-in-time as though it had been interleaving reads until then.
 
 
 
Regardless of this, Clock Signal does not currently offer a perfect emulation of every supported machine. It is an active, developing emulator.
 
  
 
==Download==
 
==Download==
 
{| cellpadding="4"
 
{| cellpadding="4"
 
|-
 
|-
|align=center|{{Icon|Mac-big}}
+
|align=center|{{Icon|Win-big}}
|'''[https://github.com/TomHarte/CLK/releases Latest releases]'''
+
|'''[https://ci.appveyor.com/project/benvanik/xenia/build/artifacts Official Dev builds]'''
 
|-
 
|-
|align=center|{{Icon|Linux-big}}
+
|align=center|{{Icon|Win-big}}
|'''[http://snapcraft.io/clock-signal Snapcraft listing]'''
+
|'''[https://ci.appveyor.com/api/projects/chris-hawley/xenia-canary/artifacts/xenia-canary.zip?branch=canary&job=Configuration:%20Release&pr=false Latest Canary Dev build]'''<br/><small>Experimental testing branch</small>
 
 
 
|}
 
|}
  
==Display emulation==
+
==Overview==
[[File:CLK ZX80.gif|right|alt=The emulated display of a ZX80, showing accurate emulation of synchronization issues.]]
+
Xenia originally began development in early 2013 as a side project by Ben Vanik.<ref>[https://github.com/xenia-project/xenia/commit/30bde439f7db22a35595689ca434756707bb8391 Ben Vanik's first commit]. Jan 10, 2013.</ref> It was the first emulator to run a commercial Xbox 360 game, Frogger 2.<ref name="Ben Vanik">{{cite web|url=https://www.youtube.com/watch?v=oAk0_jidpA0|title=Xenia Xbox 360 Emulator: Frogger 2 first run|publisher=Youtube|accessdate=2018-05-23|date=2014-03-24}}</ref> Up until 2018, progress continued steadily until the developers hit a roadblock in accurately emulating Xenos, the GPU of the Xbox 360.
Clock Signal's emulated machines produce a 1d video signal, just as real machines do. Its emulated display, therefore, has to:
 
* maintain a raster positioning;
 
* run sync-triggered phase-locked loops to place horizontal and vertical retraces; and
 
* decode composite color if that's what the machine is supplying.
 
 
 
It uses this information to paint a virtual phosphor display — in practice just an accumulation of recently-painted material with each new painting undergoing exponential decay. Output to the host screen is simply a capture of that surface as and when the host screen requests a new frame.
 
 
 
An unambiguously desirable result is that machines with variable programmatic sync, such as the Atari 2600, ZX80/81 and Amstrad CPC, should produce the proper display results, even down to rolling, bouncing and other sync issues as and when the programmer diverges, even if only transiently, from PAL or NTSC timing specifications.
 
 
 
A further positive effect is that composite video produces the proper per-platform results simply because the timing is correct: e.g. the Atari 2600 and ColecoVision produce an in-phase signal when outputting NTSC so they show obvious fixed vertical banding between strong color transitions, but the Oric, Electron and PAL Atari are not in-phase so produce undulating diagonals at color transitions.
 
 
 
The emulator goes as far as to use the Oric's original color ROM for Oric composite video generation — it replays the actual PCM-sampled output values generated by the real machine to produce realistic color.
 
  
Composite color is optional for all machines on which it was originally optional. Machines such as the Oric, Electron, and MSX originally shipped with the option of RGB output, so the emulator offers the same.
+
For the next three years, an active contributor named Triang3l completely rewrote the GPU implementation with the primary goal of addressing this. Once implemented, it more than doubled performance.<ref name="xenia">{{cite web|url=https://xenia.jp/updates/2021/04/27/leaving-no-pixel-behind-new-render-target-cache-3x3-resolution-scaling.html|title=Leaving No Pixel Behind: New Render Target Cache, 3x3 Resolution Scaling & Three Years in Xenia’s GPU Emulation|author=Triang3l}}.</ref> Triang3l also built a different, faster and more accurate memory emulation, which should lead to less broken vertices and textures being seen in-game.
  
==Sound emulation==
+
For proper handling of the GPU's capabilities, Xenia now requires a specific feature of Direct3D 12 called Rasterizer-Ordered Views which is limited only to newer cards.<ref>Margen67. [https://github.com/xenia-project/xenia/wiki/FAQ#what-is-rov FAQ]. ''§ What is ROV?'' "Using the Rasterizer-Ordered Views (ROV) feature of Direct3D 12 allows Xenia to overcome [slow performance and unfixable transparency issues] by doing blending and depth/stencil testing manually in pixel shaders, rendering directly to the 10 MB buffer. This allows for much higher performance since there's no expensive data copying, and better accuracy because of no pixel format limitations. [...] However, this is a hardware feature, and thus on older graphics cards, Xenia is limited to the RT path."</ref> Xenia is capable of 3x3 upscaling, but such a feature is resource intensive and can only be accomplished with high-end GPUs at the moment.
Sound emulation is generally performed by internal generation of original megahertz-rate audio, which is resampled to the output frequency of the host computer. Therefore just as the video can scale up to modern low-latency high-refresh-rate displays, the audio can scale up to digital output rates such as 96Khz and 192Khz.
 
  
Filling sound packets is an independent trigger of emulation — the emulated machines will run to make sure they're up to date when the display needs a new frame, and they'll also run to produce the next packet of audio when the previous has been consumed.
+
==System requirements==
 +
'''Recommended:'''
 +
* OS: Windows 10 64-bit
 +
* CPU: Any <abbr title="Haswell-era, i.e. 4xxx. Pentiums and Celerons do not support AVX2.">4th-gen</abbr> Intel processor capable of AVX2 or newer
 +
* GPU: Any capable of Direct3D 12's Rasterizer-Ordered Views<br/><small>(Nvidia GeForce GTX 950 or better, GTX 965M for laptops. Integrated is too slow to be usable. AMD supports it with Radeon Vega but has driver issues.)<ref>[https://github.com/xenia-project/xenia/wiki/Quickstart#minimum Quickstart]. ''§ Minimum''. "GPUs without ROV (rasterizer-ordered view) / fragment shader interlock support will perform worse and possibly have more graphical issues. Integrated GPUs will also generally provide too low frame rates for comfortable playing. AMD GPUs also fall under this due to Xenia triggering driver bugs causing crashes when its ROV-based rendering path is used."</ref></small>
 +
* RAM: 6 GB or more
  
That generally allows the emulator to maintain audio latency guarantees completely decoupled from the frame rate. It aims for between 5 and 10ms of audio latency.
+
'''Minimum:'''
 +
* OS: Windows 7 or higher, 64-bit
 +
* CPU: Any capable of AVX(2) <small>(Check with [https://www.cpuid.com/softwares/cpu-z.html CPU-Z].)</small>
 +
* GPU: Any capable of Vulkan or Direct3D 12 <small>(Check from [https://vulkan.gpuinfo.org/ this list].)</small>
 +
* RAM: 4 GB
  
==Host environments==
+
==Configuration==
===macOS===
+
Most configuration options usually found in GUI are instead found in the file '''xenia.config.toml'''. The file can be opened and edited with any text editor without having to change the file extension and can be found under the filepath "...\Users\User\Documents\Xenia" along with shader cache and per-game files when using windows. GPU options such as v-sync, resolution scale, and much more can be found in the xenia.config.toml file.
For macOS, Clock Signal is a fully-native document model application, which means that the user can simultaneously launch as many different machines as they want, sizing and positioning each independently across multiple displays, arranging their machines into a tabbed interface or performing any other standard Mac windowing actions. It uses Metal for graphics output and is provided as an Intel/Apple Silicon universal binary.
 
  
===Qt===
+
If you are trying to emulate Xbox Live Arcade titles then the line "license_mask = 0" should be changed to "license_mask = 1". The demo mode and full game files for XBLA titles are actually identical, and this option allows the games to exit demo mode.
Clock Signal provides a full-UI Qt 5 build for X11 users, offering arbitrarily many machines at once and custom machine selection alongside the emulator's preferred automatic machine selection; building for other Qt targets that support OpenGL 3.2 and C++17 is possible but Qt's deficiencies in keyboard handling make platform-specific adaptations a necessity for regular usage, and latency is likely to be higher than with native builds.
 
  
===SDL===
+
==References==
Clock Signal also has an SDL-based kiosk mode, which is compatible with Linux and any other target offering SDL 2.x, at least OpenGL 3.2 and C++17, and which attempts to follow ordinary UNIX conventions as to file naming and locations. It is intended to be launched however the user would normally launch something from the command-line; the target use case is to set up a file association in the user's preferred desktop environment and launch emulated applications by double-clicking on them exactly like the user would launch native applications.
+
{{reflist}}
  
[[Category:Amstrad CPC emulators]]
+
==External links==
[[Category:Atari 2600 emulators]]
+
*[https://discordapp.com/invite/Q9mxZf9 Discord channel]
[[Category:Atari ST emulators]]
+
*[https://www.reddit.com/r/xenia/ r/Xenia reddit]
[[Category:ColecoVision emulators]]
+
*[http://www.noxa.org/blog/category/projects/xenia/ Informative overview on building an emulator (Xenia blog)]
 +
*[https://www.youtube.com/watch?v=vE32Z9ytbgU A-Train HX running at 60 FPS on Xenia]
 +
 
[[Category:Emulators]]
 
[[Category:Emulators]]
 +
[[Category:Consoles' emulators]]
 +
[[Category:Home consoles' emulators]]
 +
[[Category:Xbox 360 emulators]]
 +
[[Category:Windows emulation software]]
 
[[Category:Linux emulation software]]
 
[[Category:Linux emulation software]]
[[Category:Macintosh emulators]]
 
[[Category:macOS emulation software]]
 
[[Category:Master System emulators]]
 
[[Category:Multi-emulators]]
 
[[Category:MSX emulators]]
 
[[Category:SG-1000 emulators]]
 
[[Category:ZX Spectrum emulators]]
 
[[Category:ZX81 emulators]]
 

Revision as of 04:52, 6 September 2021

Xenia
Xenia.png
Original developer(s) Ben Vanik (Initial work. Retired 2016.)
Current developer(s) DrChat (Also worked with B. Vanik), Rick Gibbed and Xenia community
Latest version N/A
Active Yes
Platform(s) Windows, Linux
Emulates Xbox 360
Compatibility 18% playable, possibly more
Website Xenia.jp
Support ($) Patreon, Patreon (gibbed)
License BSD license
Source code GitHub

Xenia is an experimental, open-source Xbox 360 emulator for Windows and, to a lesser extent, Linux (through Wine). Outside of Microsoft's own backward compatibility on successive consoles, Xenia is the first and only unofficial Xbox 360 emulator that exists.

Download

Windows Official Dev builds
Windows Latest Canary Dev build
Experimental testing branch

Overview

Xenia originally began development in early 2013 as a side project by Ben Vanik.[1] It was the first emulator to run a commercial Xbox 360 game, Frogger 2.[2] Up until 2018, progress continued steadily until the developers hit a roadblock in accurately emulating Xenos, the GPU of the Xbox 360.

For the next three years, an active contributor named Triang3l completely rewrote the GPU implementation with the primary goal of addressing this. Once implemented, it more than doubled performance.[3] Triang3l also built a different, faster and more accurate memory emulation, which should lead to less broken vertices and textures being seen in-game.

For proper handling of the GPU's capabilities, Xenia now requires a specific feature of Direct3D 12 called Rasterizer-Ordered Views which is limited only to newer cards.[4] Xenia is capable of 3x3 upscaling, but such a feature is resource intensive and can only be accomplished with high-end GPUs at the moment.

System requirements

Recommended:

  • OS: Windows 10 64-bit
  • CPU: Any 4th-gen Intel processor capable of AVX2 or newer
  • GPU: Any capable of Direct3D 12's Rasterizer-Ordered Views
    (Nvidia GeForce GTX 950 or better, GTX 965M for laptops. Integrated is too slow to be usable. AMD supports it with Radeon Vega but has driver issues.)[5]
  • RAM: 6 GB or more

Minimum:

  • OS: Windows 7 or higher, 64-bit
  • CPU: Any capable of AVX(2) (Check with CPU-Z.)
  • GPU: Any capable of Vulkan or Direct3D 12 (Check from this list.)
  • RAM: 4 GB

Configuration

Most configuration options usually found in GUI are instead found in the file xenia.config.toml. The file can be opened and edited with any text editor without having to change the file extension and can be found under the filepath "...\Users\User\Documents\Xenia" along with shader cache and per-game files when using windows. GPU options such as v-sync, resolution scale, and much more can be found in the xenia.config.toml file.

If you are trying to emulate Xbox Live Arcade titles then the line "license_mask = 0" should be changed to "license_mask = 1". The demo mode and full game files for XBLA titles are actually identical, and this option allows the games to exit demo mode.

References

  1. Ben Vanik's first commit. Jan 10, 2013.
  2. Xenia Xbox 360 Emulator: Frogger 2 first run. Youtube (2014-03-24)
  3. Triang3l. Leaving No Pixel Behind: New Render Target Cache, 3x3 Resolution Scaling & Three Years in Xenia’s GPU Emulation.
  4. Margen67. FAQ. § What is ROV? "Using the Rasterizer-Ordered Views (ROV) feature of Direct3D 12 allows Xenia to overcome [slow performance and unfixable transparency issues] by doing blending and depth/stencil testing manually in pixel shaders, rendering directly to the 10 MB buffer. This allows for much higher performance since there's no expensive data copying, and better accuracy because of no pixel format limitations. [...] However, this is a hardware feature, and thus on older graphics cards, Xenia is limited to the RT path."
  5. Quickstart. § Minimum. "GPUs without ROV (rasterizer-ordered view) / fragment shader interlock support will perform worse and possibly have more graphical issues. Integrated GPUs will also generally provide too low frame rates for comfortable playing. AMD GPUs also fall under this due to Xenia triggering driver bugs causing crashes when its ROV-based rendering path is used."

External links