Difference between pages "Xbox One emulators" and "Project Nested"

From Emulation General Wiki
(Difference between pages)
Jump to navigation Jump to search
(Formatting)
 
(Categories replaced)
 
Line 1: Line 1:
{{Infobox console
+
{{Infobox emulator
|title = Xbox One
+
|logo =
|logo = Xbox-One.png
+
|logowidth =  
|developer = [[:Microsoft]]
+
|version = 1.4.2
|type = [[:Category:Consoles|Home video game console]]
+
|active = Yes
|generation = [[:Category:Eighth-generation video game consoles|Eighth generation]]
+
|platform = [[Emulators on SNES|Super Famicom (SNES)]]
|release = 2013
+
|target = [[Nintendo Entertainment System emulators|NES]]
|predecessor = [[Xbox 360 emulators|Xbox 360]]
+
|developer = Myself086 (Laurent Courville)
|successor = [[Xbox Series X and Series S|Xbox Series X/S]]
+
|prog-lang = 65C816 assembly, C#
|emulated = {{✗}}
+
|website = [https://github.com/Myself086/Project-Nested GitHub page]
 +
|license = MIT License
 +
|source = [https://github.com/Myself086/Project-Nested GitHub]
 
}}
 
}}
  
The '''[[Wikipedia:Xbox One|Xbox One]]''' is an eighth-generation home video game console produced by Microsoft on November 22, 2013 and was retailed for {{inflation|USD|499|2013}}. It had an AMD 8-core APU at 1.75 GHz and 8GB of RAM. It has an AMD GPU on the AMD Radeon GCN architecture. Early in its life, it was heavily criticized for intrusive [[wikipedia:Digital rights management|DRM]], such as always-online and lack of used game sharing. These have since been removed. Notably, this console runs on the [[wikipedia:x86|x86]] architecture with a modified Windows OS, so it is essentially a watered-down PC.
+
'''Project Nested''' is an open-source [[Nintendo Entertainment System emulators|Famicom (NES)]] emulator for the [[Super Nintendo emulators|Super Famicom (SNES)]] written 3/4 in 65C816 assembly and 1/4 C#.
  
==Emulators==
+
==Download==
{{No_unofficial_emulators}}
+
{| cellpadding="4"
 
 
{| class="wikitable" style="text-align:center;"
 
! scope="col"|Name
 
! scope="col"|Platform(s)
 
! scope="col"|Latest Version
 
! scope="col"|<abbr title="Free/Libre and Open-Source Software">FLOSS</abbr>
 
! scope="col"|Active
 
! scope="col"|[[Recommended Emulators|Recommended]]
 
|-
 
! colspan="6"|Console
 
|-
 
|Xbox Series X
 
|align=left|{{Icon|SXS}}
 
|Patch based
 
|{{✗}}
 
|{{✓}}
 
|{{✓}}
 
 
|-
 
|-
 +
|align=center|{{Icon|SNES-big}}
 +
|'''[https://github.com/Myself086/Project-Nested/releases Official releases]'''
 
|}
 
|}
  
===Emulation issues===
+
==History==
Despite this console using the same architecture as PCs, it is not any easier to emulate than other consoles as the architecture used is complex and uses undocumented hardware. We have no way to know for sure because the console is not even hacked yet to a degree that people can look and test stuff and tell for sure, let alone for a full emulator to be written. It should be noted that the vast majority of Xbox One games are also available on PC.
+
The project began in 2015 as a NES emulator on PC. The emulator was running at full speed, and development was going "pretty well", but was not considered challenging, so it was decided to move it to the SNES. After three years of casual development and thinking about how to achieve 100% performance (otherwise it would have been considered pointless) until summer 2018, the emulator began official development.
 +
 
 +
As of v1.3, the model has been improved since, but not by much. The speed was calculated by multiplying the average amount of times each instruction executed each frame and the overhead. However, the maths were 5 percent off on first implementation. Most implementations were made after approximately one month.
 +
 
 +
==Overview==
 +
The emulator was inspired by the SNES originally being designed to be backwards-compatible with the NES and Myself086 wanting to code a JIT (Just-In-Time) compiler.
 +
 
 +
Emulation works by converting NES ROMs into SNES ROMs using a JIT (Just-In-Time) and AOT (Ahead-of-Time) compiler (with various options) for Windows, allowing them to run on SNES hardware.
 +
 
 +
Save files are created after the software title runs for a while. These can then be added to the ROM, often improving performance, vastly with some titles, and not much with others.
 +
 
 +
The following are required:
 +
* Up to 8MB of fast HiROM (slow HiROM support planned)
 +
* 8KB to 256KB of SRAM (at least 16KB is required to create feedback for the exe)
 +
* A battery if required by the software title
 +
 
 +
===Compatibility===
 +
* [https://docs.google.com/spreadsheets/d/1xKZIyNz1DSI3ZBdMfaTEaa_9b6IEABx-ZPwOb6XqcLQ/edit?usp=sharing Compatibility List]
 +
 
 +
Emulation occurs at up to 60FPS (frames per second) with audio support, but occasional minor slowdown may occur. Software titles that use mappers 0-4 and 7 are playable, with mappers 1 and 4 having minor glitches, which may reduce compatibility levels with titles that use them, mappers 5, 6, 8, 11, 12, 16, 18, 21-26, 32-34, 36-38, 40, 42 and 66 unplayable, mappers 9 and 10 unlikely to be supported due to it being declared impossible to accurately emulate CHR bank switching, and 14 and 17 due to being "copier mappers", and the rest, up to 255, being unknown. Additionally, iNES 2.0 is not supported.
 +
 
 +
Out of the 456 tested titles, 37 (7.96%) are fully playable, 92 (19.78%) are playable but need a full playthrough to test, 47 (10.11%) are mostly playable, 161 (34.62%) crash in the intro or early in-game, 127 (27.31%) are unplayable and 1 (0.22%) is unlikely to be supported. For example:
 +
* Punch-Out!!! is unlikely to be supported due to using mapper 9/MMC2, due to difficulties in implementing mid-scanline memory bank changes when drawing characters FE or FD, or sprites, the hardest to implement. This is not as problematic with the background, as the window can be used to draw and switch the characters.
 +
* The graphics in Super Mario Bros. 2 displayed incorrectly and the American version reset after hitting a Shy Guy until v1.4. Some time before the [https://www.youtube.com/watch?v=TthFh27Mx5k Sharopolis interview] on July 10, 2021, the latter issue was reverse engineered and figured out, also fixing many other games that mistakenly reset.
 +
* Elite is being used as a model to "aggressively" optimize the EXE in AOT compilation, making emulation run at the same speed, or faster if possible. The game runs slowly with flicker and does not support shooting as of v1.3.
 +
 
 +
Additionally, one fully playable title, Battle City, was mostly playable from v1.1 until v1.3, when it hung after the game over screen with visual glitches in [[Mesen]].
 +
 
 +
Others run with minor glitches or require certain options, such as NMI at vblank or stack native return, to be disabled. Overall, at least 50% of games are expected to run in the future. The official compatibility list is available [https://docs.google.com/spreadsheets/d/1xKZIyNz1DSI3ZBdMfaTEaa_9b6IEABx-ZPwOb6XqcLQ/edit#gid=253005073 here].
 +
 
 +
==See also==
 +
* [[NeMul]]
 +
* [https://www.youtube.com/watch?v=zUSTG--CkSA&t=1s Project Nested -- Play NES games on the SNES!]
  
<!--
+
{{Nes}}
==References==
 
{{Reflist}}
 
-->
 
  
[[Category:Consoles]]
+
[[Category:Emulators]]
[[Category:Eighth-generation video game consoles]]
+
[[Category:Console emulators]]
[[Category:Microsoft consoles]]
+
[[Category:Home console emulators]]
[[Category:Xbox One emulators|*]]
+
[[Category:Nintendo Entertainment System emulators]]
[[Category:Not yet emulated]]<!--
+
[[Category:Super Nintendo emulation software]]
[[Category:Very early emulation]]
 
-->
 

Revision as of 03:38, 14 October 2021

Project Nested
Developer(s) Myself086 (Laurent Courville)
Latest version 1.4.2
Active Yes
Platform(s) Super Famicom (SNES)
Emulates NES
Website GitHub page
Programmed in 65C816 assembly, C#
License MIT License
Source code GitHub

Project Nested is an open-source Famicom (NES) emulator for the Super Famicom (SNES) written 3/4 in 65C816 assembly and 1/4 C#.

Download

Super Nintendo Official releases

History

The project began in 2015 as a NES emulator on PC. The emulator was running at full speed, and development was going "pretty well", but was not considered challenging, so it was decided to move it to the SNES. After three years of casual development and thinking about how to achieve 100% performance (otherwise it would have been considered pointless) until summer 2018, the emulator began official development.

As of v1.3, the model has been improved since, but not by much. The speed was calculated by multiplying the average amount of times each instruction executed each frame and the overhead. However, the maths were 5 percent off on first implementation. Most implementations were made after approximately one month.

Overview

The emulator was inspired by the SNES originally being designed to be backwards-compatible with the NES and Myself086 wanting to code a JIT (Just-In-Time) compiler.

Emulation works by converting NES ROMs into SNES ROMs using a JIT (Just-In-Time) and AOT (Ahead-of-Time) compiler (with various options) for Windows, allowing them to run on SNES hardware.

Save files are created after the software title runs for a while. These can then be added to the ROM, often improving performance, vastly with some titles, and not much with others.

The following are required:

  • Up to 8MB of fast HiROM (slow HiROM support planned)
  • 8KB to 256KB of SRAM (at least 16KB is required to create feedback for the exe)
  • A battery if required by the software title

Compatibility

Emulation occurs at up to 60FPS (frames per second) with audio support, but occasional minor slowdown may occur. Software titles that use mappers 0-4 and 7 are playable, with mappers 1 and 4 having minor glitches, which may reduce compatibility levels with titles that use them, mappers 5, 6, 8, 11, 12, 16, 18, 21-26, 32-34, 36-38, 40, 42 and 66 unplayable, mappers 9 and 10 unlikely to be supported due to it being declared impossible to accurately emulate CHR bank switching, and 14 and 17 due to being "copier mappers", and the rest, up to 255, being unknown. Additionally, iNES 2.0 is not supported.

Out of the 456 tested titles, 37 (7.96%) are fully playable, 92 (19.78%) are playable but need a full playthrough to test, 47 (10.11%) are mostly playable, 161 (34.62%) crash in the intro or early in-game, 127 (27.31%) are unplayable and 1 (0.22%) is unlikely to be supported. For example:

  • Punch-Out!!! is unlikely to be supported due to using mapper 9/MMC2, due to difficulties in implementing mid-scanline memory bank changes when drawing characters FE or FD, or sprites, the hardest to implement. This is not as problematic with the background, as the window can be used to draw and switch the characters.
  • The graphics in Super Mario Bros. 2 displayed incorrectly and the American version reset after hitting a Shy Guy until v1.4. Some time before the Sharopolis interview on July 10, 2021, the latter issue was reverse engineered and figured out, also fixing many other games that mistakenly reset.
  • Elite is being used as a model to "aggressively" optimize the EXE in AOT compilation, making emulation run at the same speed, or faster if possible. The game runs slowly with flicker and does not support shooting as of v1.3.

Additionally, one fully playable title, Battle City, was mostly playable from v1.1 until v1.3, when it hung after the game over screen with visual glitches in Mesen.

Others run with minor glitches or require certain options, such as NMI at vblank or stack native return, to be disabled. Overall, at least 50% of games are expected to run in the future. The official compatibility list is available here.

See also