https://emulation.gametechwiki.com/api.php?action=feedcontributions&user=Monroe88&feedformat=atomEmulation General Wiki - User contributions [en]2024-03-29T07:44:52ZUser contributionsMediaWiki 1.32.0https://emulation.gametechwiki.com/index.php?title=Dummies_Guide:_RetroArch&diff=16292Dummies Guide: RetroArch2017-12-10T02:34:36Z<p>Monroe88: Updates</p>
<hr />
<div>If someone linked you here, they probably thought you were being a dummy. <br />
So go ahead, take your time, and start from the top.<br />
<br />
==Downloading RetroArch==<br />
The latest stable version of RetroArch can be found on the libretro site, [http://buildbot.libretro.com/stable/]. Or the latest experimental build from [http://buildbot.libretro.com/nightly/]<br />
<br />
For Linux intructions read [[Using RetroArch#Installing RetroArch on Linux|Using RetroArch]].<br />
<br />
Open the .7z file with [http://www.7-zip.org/download.html 7zip] or WinRAR, or other archiver of your choice and extract the files to where you want to install RetroArch, or if on console/phone, install it using the standard method for that system.<br />
<br />
==Controls==<br />
The menu is controlled mainly by the RetroPad, which is libretro's gamepad abstraction that uses SNES-style face buttons and PlayStation DualShock-style shoulder buttons and analog sticks. The default keybinds for the RetroPad are as follows:<br />
{| class="wikitable" style="float:{{{align|right}}}"<br />
|style="text-align:center;"|RetroPad<br />
|style="text-align:center;"|Keyboard<br />
|style="text-align:center;"|PlayStation<br />
|style="text-align:center;"|Xbox<br />
|-<br />
|style="text-align:center;"|[[File:Retro_Dpad.png|48px]]<br />
|style="text-align:center;"|[[File:Key_Arrow-Up.png|48px]]<br>[[File:Key_Arrow-Left.png|48px]][[File:Key_Arrow-Down.png|48px]][[File:Key_Arrow-Right.png|48px]]<br />
|style="text-align:center;"|[[File:PS3_Dpad.png|48px]]<br />
|style="text-align:center;"|[[File:360_D-pad.png|48px]]<br />
|-<br />
|style="text-align:center;"|[[File:Retro_A_Round.png|48px]]<br />
|style="text-align:center;"|[[File:Key_X.png|48px]]<br />
|style="text-align:center;"|[[File:PS3_Circle.png|48px]]<br />
|style="text-align:center;"|[[File:360_B.png|48px]]<br />
|-<br />
|style="text-align:center;"|[[File:Retro_B_Round.png|48px]]<br />
|style="text-align:center;"|[[File:Key_Z.png|48px]]<br />
|style="text-align:center;"|[[File:PS3_Cross.png|48px]]<br />
|style="text-align:center;"|[[File:360_A.png|48px]]<br />
|-<br />
|style="text-align:center;"|[[File:Retro_X_Round.png|48px]]<br />
|style="text-align:center;"|[[File:Key_S.png|48px]]<br />
|style="text-align:center;"|[[File:PS3_Triangle.png|48px]]<br />
|style="text-align:center;"|[[File:360_Y.png|48px]]<br />
|-<br />
|style="text-align:center;"|[[File:Retro_Y_Round.png|48px]]<br />
|style="text-align:center;"|[[File:Key_A.png|48px]]<br />
|style="text-align:center;"|[[File:PS3_Sqaure.png|48px]]<br />
|style="text-align:center;"|[[File:360_X.png|48px]]<br />
|-<br />
|style="text-align:center;"|[[File:Retro_L1.png|48px]]<br />
|style="text-align:center;"|[[File:Key_Q.png|48px]]<br />
|style="text-align:center;"|[[File:PS3_L1.png|48px]]<br />
|style="text-align:center;"|[[File:360_Left-Bumper.png|48px]]<br />
|-<br />
|style="text-align:center;"|[[File:Retro_R1.png|48px]]<br />
|style="text-align:center;"|[[File:Key_W.png|48px]]<br />
|style="text-align:center;"|[[File:PS3_R1.png|48px]]<br />
|style="text-align:center;"|[[File:360_Right-Bumper.png|48px]]<br />
|-<br />
|style="text-align:center;"|[[File:Retro_Start.png|48px]]<br />
|style="text-align:center;"|[[File:Key_Enter.png|96px]]<br />
|style="text-align:center;"|[[File:PS3_Start.png|48px]]<br />
|style="text-align:center;"|[[File:360_Start.png|48px]]<br />
|-<br />
|style="text-align:center;"|[[File:Retro_Select.png|48px]]<br />
|style="text-align:center;"|[[File:Key_Shift.png|96px]]<br />
|style="text-align:center;"|[[File:PS3_Select.png|48px]]<br />
|style="text-align:center;"|[[File:360_Back.png|48px]]<br />
|-<br />
|style="text-align:center;"|[[File:Retro_Menu.png|48px]]<br />
|style="text-align:center;"|[[File:Key_F1.png|48px]]<br />
|style="text-align:center;"|[[File:PS3_Home.png|48px]]<br />
|style="text-align:center;"|[[File:360_Guide.png|48px]]<br />
|}<br />
The R2, L2, R3, and L3 buttons, and left/right analog sticks are not mapped to the keyboard by default.<br />
Gamepads can be mapped manually in the menu under ''Settings'' → ''Input'' → ''Input User 1 Binds'' → ''User 1 Bind All'', but automatic configuration is possible with [https://github.com/libretro/retroarch-joypad-autoconfig autoconfig profiles]. On Windows, all XInput and some DirectInput gamepads will be mapped automatically when detected to the RetroPad using the included autoconfig profiles.<br />
<br />
In the menu, the following buttons are used:<br />
<br />
*A button = Confirm<br />
*B button = Cancel<br />
*X button = Search prompt<br />
*Y button = Delete input bind<br />
*D-Pad = Navigation<br />
*Start button = Reset option to default<br />
*Select button = Show tooltip for a particular option<br />
*R and L buttons = Fast scrolling through files by jumping to the next letter.<br />
<br />
By default, the keys used to navigate the menu are the following:<br />
<br />
*Enter = Confirm<br />
*Backspace = Cancel<br />
*Slash = Search prompt<br />
*Delete = Delete input bind<br />
*Arrow keys = Navigation<br />
*Spacebar = Reset option to default<br />
*Right Shift = Show tooltip for a particular option<br />
*Page Up and Page Down = Fast scrolling through files by jumping to the next letter.<br />
<br />
If "Unified Menu Controls" are enabled under ''Settings'' → ''Input'' , then the keybinds for the RetroPad are used instead for menu control; this was the original behavior before v1.4.1.<br />
<br />
There are also various hotkeys that are mapped by default. The most important ones to remember are the following:<br />
<br />
*Quit = Escape<br />
*Menu toggle = F1<br />
*Save State = F2<br />
*Load State = F4<br />
*Fullscreen toggle = F<br />
*Fast-Forward toggle = Spacebar<br />
*Screenshot = F8<br />
<br />
All hotkey binds can be viewed and changed at ''Settings'' → ''Input'' → ''Input Hotkey Binds''. Additionally, if you map Enable Hotkeys to a keyboard key, it will require that key to be held in order to trigger any hotkeys, which may be needed for cores that use the keyboard for input. Hotkeys can also be mapped to RetroPad buttons as well.<br />
<br />
Some people may not like having Escape key quit the program instantly and are used to having Escape bring up a menu instead. Since the hotkeys are configurable, you can change behavior of the Escape key in your config:<br />
<br />
<pre style="width:250px;">input_exit_emulator = "nul"<br />
input_menu_toggle = "escape" </pre><br />
<br />
The quit hotkey will be unmapped, and the menu toggle hotkey will become Escape instead of F1.<br />
<br />
==Downloading Cores==<br />
RetroArch doesn't come with emulation cores, so you have to download them yourself. However, RetroArch does have a built in updater. So to download up to date cores, scroll down to ''Online Updater'', and select ''Core Updater''. RetroArch will download a list of available cores to download, and you can individually download them. To see what core does what, see [[Libretro#Cores|this list.]]<br />
<br />
If for what ever reason RetroArch can't download cores, or wont display a list of available cores for download, you can get them from the buildbot [http://buildbot.libretro.com/nightly/ here.]<br />
<br />
==Running a Game==<br />
After downloading a core you can run a game by selecting ''Load Content'' → ''Select File And Detect Core'' and selecting your game.<br />
<br />
If you have only have 1 core that can run the selected game, then RetroArch will automatically load that core. If you have multiple cores that are capable of running the game you'll be given the choice between them.<br />
<br />
==BIOS and System files==<br />
Some emulation cores require special system files, or BIOSes. These can be downloaded [[Emulator_Files#Multi-System|here.]] Extract the ''system'' folder in that archive to where you installed RetroArch (the folder where the retroarch program is. retroarch.exe on Windows). <br />
<br />
If it doesn't find the BIOS, go to ''Settings'' → ''Directory'' → ''System/BIOS Dir'' (or find <code>system_directory</code> in the config file) and make sure it points to the ''system'' folder.<br />
<br />
==Core Options, Core Specific Settings==<br />
To edit options or settings specific to a core, you must start a game with that core. After loading a game, press F1 or the Home/Guide button on your 360/PS3 controller to get back to RetroArch's menu. From there you can change ''Core Options'', set core specific input options, cheats, and change shader settings.<br />
<br />
==Shader Settings==<br />
Shaders usually either come in single .cg files, or as a group of files controlled by a .cgp preset file. If you want to use a preset, like CRT-Royale or Super-XBR, simply select ''Load Shader Preset'' under ''Shader Options'' and select a .cgp file. If you want to select individual .cg files, increase the ''Shader Passes'' and select a .cg file through ''Shader #0'' (or #1, #2, etc.).<br />
<br />
After selecting your shader setup, hit ''Apply Shader Changes''.<br />
<br />
==Saves and Saving Settings==<br />
By default RetroArch will save settings when it closes, and will do so unless you put RetroArch in a directory that needs elevated privileges without running as administrator/root. ''Save New Config'' will save a ''new'', different, config that wont be loaded the next time RetroArch starts.<br />
<br />
It's probably a good idea to enable ''SaveRAM Autosave Interval'' (under ''Settings'' → ''Saving'') so game saves will be written to your harddrive while RetroArch is running.<br />
<br />
==Mednafen PSX==<br />
This particular core requires some specific care. You should have the correct BIOS (if not follow the [[Dummies_Guide:_RetroArch#BIOS_and_System_files|BIOS and System files]] section), you'll also need to make sure your game has a metadata file in the form of a .cue, .toc, .ccd, or .m3u file. The most common metadata people use is .cue, and if your PS1 game lacks a metafile, you can [[Cue_sheet_(.cue)|create one.]]<br>An easier way to get around metadata issues, is to get your games from a better source. [[Need_Games%3F|Redump]] PS1 games come in .bin/.cue format and work on mednafen without issue.<br />
<br />
==Ricing RetroArch==<br />
There's 3 different menu drivers for RetroArch to choose from, RGUI, GLUI and the default XMB. To switch between them go ''Settings'' → ''Driver Settings'' and switch ''Menu Driver''. You'll need to restart RetroArch for changes to take effect.<br />
<br />
You can change your wallpaper, text color settings, text size (DPI Override, GLUI only), toggle mouse support, and whether to display boxart in the ''Menu Settings''.<br />
<br />
You can change RetroArch's menu font, but it'll only work for the GLUI menu driver (only on 1.2.2, newer builds have changed GLUI significantly and it no longer uses the OSD font). To change it, under ''Onscreen Display Settings'' hit ''OSD Message Font'' and select a .ttf font file.<br>Should be noted that Onscreen Display Settings are for the yellow popup messages that RetroArch displays, and GLUI happens to use fonts from it, all of the other settings here only change the popup message.<br />
<br />
XMB loads its font from <code>$assets_directory/xmb/monochrome/font.ttf</code>, so you can replace the default font .ttf with a custom one. The same can be done with the default backgrounds and icons.<br />
<br />
==Cheats==<br />
Not all cores support cheats, you can check the [http://wiki.libretro.com/index.php?title=Main_Page#Core_Software_Library Libretro wiki] for which cores do. By default RetroArch comes with a fairly large cheat database, so to make a new cheat file, you can find files in the ''cheats'' folder of RetroArch's install directory for reference.To enable cheats, load the game, toggle RetroArch's menu, load a cheat file in the ''Core Cheat Options'' and you'll get a list of cheats available which you can toggle. After setting your cheats, hit ''Apply Cheat Changes''. Some cheats may require you to ''Restart Content'' to take effect.<br />
<br />
[[Category:FAQs]]<br />
[[Category:RetroArch]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Dummies_Guide:_RetroArch&diff=16291Dummies Guide: RetroArch2017-12-10T02:23:12Z<p>Monroe88: /* Controls */ Updates</p>
<hr />
<div>If someone linked you here, they probably thought you were being a dummy. <br />
So go ahead, take your time, and start from the top.<br />
<br />
==Downloading RetroArch==<br />
The latest stable version of RetroArch can be found on the libretro site, [http://buildbot.libretro.com/stable/]. Or the latest experimental build from [http://buildbot.libretro.com/nightly/]<br />
<br />
For Linux intructions read [[Using RetroArch#Installing RetroArch on Linux|Using RetroArch]].<br />
<br />
Open the .7z file with [http://www.7-zip.org/download.html 7zip] or WinRAR, or other archiver of your choice and extract the files to where you want to install RetroArch, or if on console/phone, install it using the standard method for that system.<br />
<br />
==Controls==<br />
The menu is controlled mainly by the RetroPad, which is libretro's gamepad abstraction that uses SNES-style face buttons and PlayStation DualShock-style shoulder buttons and analog sticks. The default keybinds for the RetroPad are as follows:<br />
{| class="wikitable" style="float:{{{align|right}}}"<br />
|style="text-align:center;"|RetroPad<br />
|style="text-align:center;"|Keyboard<br />
|style="text-align:center;"|PlayStation<br />
|style="text-align:center;"|Xbox<br />
|-<br />
|style="text-align:center;"|[[File:Retro_Dpad.png|48px]]<br />
|style="text-align:center;"|[[File:Key_Arrow-Up.png|48px]]<br>[[File:Key_Arrow-Left.png|48px]][[File:Key_Arrow-Down.png|48px]][[File:Key_Arrow-Right.png|48px]]<br />
|style="text-align:center;"|[[File:PS3_Dpad.png|48px]]<br />
|style="text-align:center;"|[[File:360_D-pad.png|48px]]<br />
|-<br />
|style="text-align:center;"|[[File:Retro_A_Round.png|48px]]<br />
|style="text-align:center;"|[[File:Key_X.png|48px]]<br />
|style="text-align:center;"|[[File:PS3_Circle.png|48px]]<br />
|style="text-align:center;"|[[File:360_B.png|48px]]<br />
|-<br />
|style="text-align:center;"|[[File:Retro_B_Round.png|48px]]<br />
|style="text-align:center;"|[[File:Key_Z.png|48px]]<br />
|style="text-align:center;"|[[File:PS3_Cross.png|48px]]<br />
|style="text-align:center;"|[[File:360_A.png|48px]]<br />
|-<br />
|style="text-align:center;"|[[File:Retro_X_Round.png|48px]]<br />
|style="text-align:center;"|[[File:Key_S.png|48px]]<br />
|style="text-align:center;"|[[File:PS3_Triangle.png|48px]]<br />
|style="text-align:center;"|[[File:360_Y.png|48px]]<br />
|-<br />
|style="text-align:center;"|[[File:Retro_Y_Round.png|48px]]<br />
|style="text-align:center;"|[[File:Key_A.png|48px]]<br />
|style="text-align:center;"|[[File:PS3_Sqaure.png|48px]]<br />
|style="text-align:center;"|[[File:360_X.png|48px]]<br />
|-<br />
|style="text-align:center;"|[[File:Retro_L1.png|48px]]<br />
|style="text-align:center;"|[[File:Key_Q.png|48px]]<br />
|style="text-align:center;"|[[File:PS3_L1.png|48px]]<br />
|style="text-align:center;"|[[File:360_Left-Bumper.png|48px]]<br />
|-<br />
|style="text-align:center;"|[[File:Retro_R1.png|48px]]<br />
|style="text-align:center;"|[[File:Key_W.png|48px]]<br />
|style="text-align:center;"|[[File:PS3_R1.png|48px]]<br />
|style="text-align:center;"|[[File:360_Right-Bumper.png|48px]]<br />
|-<br />
|style="text-align:center;"|[[File:Retro_Start.png|48px]]<br />
|style="text-align:center;"|[[File:Key_Enter.png|96px]]<br />
|style="text-align:center;"|[[File:PS3_Start.png|48px]]<br />
|style="text-align:center;"|[[File:360_Start.png|48px]]<br />
|-<br />
|style="text-align:center;"|[[File:Retro_Select.png|48px]]<br />
|style="text-align:center;"|[[File:Key_Shift.png|96px]]<br />
|style="text-align:center;"|[[File:PS3_Select.png|48px]]<br />
|style="text-align:center;"|[[File:360_Back.png|48px]]<br />
|-<br />
|style="text-align:center;"|[[File:Retro_Menu.png|48px]]<br />
|style="text-align:center;"|[[File:Key_F1.png|48px]]<br />
|style="text-align:center;"|[[File:PS3_Home.png|48px]]<br />
|style="text-align:center;"|[[File:360_Guide.png|48px]]<br />
|}<br />
The R2, L2, R3, and L3 buttons, and left/right analog sticks are not mapped to the keyboard by default.<br />
Gamepads can be mapped manually in the menu under ''Settings'' → ''Input'' → ''Input User 1 Binds'' → ''User 1 Bind All'', but automatic configuration is possible with [https://github.com/libretro/retroarch-joypad-autoconfig autoconfig profiles]. On Windows, all XInput and some DirectInput gamepads will be mapped automatically when detected to the RetroPad using the included autoconfig profiles.<br />
<br />
In the menu, the following buttons are used:<br />
<br />
*A button = Confirm<br />
*B button = Cancel<br />
*X button = Search prompt<br />
*Y button = Delete input bind<br />
*D-Pad = Navigation<br />
*Start button = Reset option to default<br />
*Select button = Show tooltip for a particular option<br />
*R and L buttons = Fast scrolling through files<br />
<br />
By default, the keys used to navigate the menu are the following:<br />
<br />
*Enter = Confirm<br />
*Backspace = Cancel<br />
*Slash = Search prompt<br />
*Delete = Delete input bind<br />
*Arrow keys = Navigation<br />
*Spacebar = Reset option to default<br />
*Right Shift = Show tooltip for a particular option<br />
<br />
If "Unified Menu Controls" are enabled under ''Settings'' → ''Input'' , then the keybinds for the RetroPad are used instead for menu control; this was the original behavior before v1.4.1.<br />
<br />
There are also various hotkeys that are mapped by default. The most important ones to remember are the following:<br />
<br />
*Quit = Escape<br />
*Menu toggle = F1<br />
*Save State = F2<br />
*Load State = F4<br />
*Fullscreen toggle = F<br />
*Fast-Forward toggle = Spacebar<br />
*Screenshot = F8<br />
<br />
All hotkey binds can be viewed and changed at ''Settings'' → ''Input'' → ''Input Hotkey Binds''. Additionally, if you map Enable Hotkeys to a keyboard key, it will require that key to be held in order to trigger any hotkeys, which may be needed for cores that use the keyboard for input. Hotkeys can also be mapped to RetroPad buttons as well.<br />
<br />
Some people may not like having Escape key quit the program instantly and are used to having Escape bring up a menu instead. Since the hotkeys are configurable, you can change behavior of the Escape key in your config:<br />
<br />
<pre style="width:250px;">input_exit_emulator = "nul"<br />
input_menu_toggle = "escape" </pre><br />
<br />
The quit hotkey will be unmapped, and the menu toggle hotkey will become Escape instead of F1.<br />
<br />
==Downloading Cores==<br />
RetroArch doesn't come with emulation cores, so you have to download them yourself. However, RetroArch does have a built in updater. So to download up to date cores, scroll down to ''Online Updater'', and select ''Core Updater''. RetroArch will download a list of available cores to download, and you can individually download them. To see what core does what, see [[Libretro#Cores|this list.]]<br />
<br />
If for what ever reason RetroArch can't download cores, or wont display a list of available cores for download, you can get them from the buildbot [http://buildbot.libretro.com/nightly/ here.]<br />
<br />
==Running a Game==<br />
After downloading a core you can run a game by selecting ''Load Content'' → ''Select File And Detect Core'' and selecting your game.<br />
<br />
If you have only have 1 core that can run the selected game, then RetroArch will automatically load that core. If you have multiple cores that are capable of running the game you'll be given the choice between them.<br />
<br />
==BIOS and System files==<br />
Some emulation cores require special system files, or BIOSes. These can be downloaded [[Emulator_Files#Multi-System|here.]] Extract the ''system'' folder in that archive to where you installed RetroArch (the folder where the retroarch program is. retroarch.exe on Windows). <br />
<br />
If it doesn't find the BIOS, go to ''Settings'' → ''Directory'' → ''System/BIOS Dir'' (or find <code>system_directory</code> in the config file) and make sure it points to the ''system'' folder.<br />
<br />
==Core Options, Core Specific Settings==<br />
To edit options or settings specific to a core, you must start a game with that core. After loading a game, press F1 or the Home/Guide button on your 360/PS3 controller to get back to RetroArch's menu. From there you can change ''Core Options'', set core specific input options, cheats, and change shader settings.<br />
<br />
==Shader Settings==<br />
Shaders usually either come in single .cg files, or as a group of files controlled by a .cgp preset file. If you want to use a preset, like CRT-Royale or Super-XBR, simply select ''Load Shader Preset'' under ''Shader Options'' and select a .cgp file. If you want to select individual .cg files, increase the ''Shader Passes'' and select a .cg file through ''Shader #0'' (or #1, #2, etc.).<br />
<br />
After selecting your shader setup, hit ''Apply Shader Changes''.<br />
<br />
==Saves and Saving Settings==<br />
By default RetroArch will save settings when it closes, and will do so unless you put RetroArch in a directory that needs elevated privileges without running as administrator/root. ''Save New Config'' will save a ''new'', different, config that wont be loaded the next time RetroArch starts.<br />
<br />
It's probably a good idea to enable ''SaveRAM Autosave Interval'' (under ''Settings'' → ''Saving'') so game saves will be written to your harddrive while RetroArch is running.<br />
<br />
==Mednafen PSX==<br />
This particular core requires some specific care. You should have the correct BIOS (if not follow the [[Dummies_Guide:_RetroArch#BIOS_and_System_files|BIOS and System files]] section), you'll also need to make sure your game has a metadata file in the form of a .cue, .toc, .ccd, or .m3u file. The most common metadata people use is .cue, and if your PS1 game lacks a metafile, you can [[Cue_sheet_(.cue)|create one.]]<br>An easier way to get around metadata issues, is to get your games from a better source. [[Need_Games%3F|Redump]] PS1 games come in .bin/.cue format and work on mednafen without issue.<br />
<br />
==Ricing RetroArch==<br />
There's 3 different menu drivers for RetroArch to choose from, RGUI, GLUI and the default XMB. To switch between them go ''Settings'' → ''Driver Settings'' and switch ''Menu Driver''. You'll need to restart RetroArch for changes to take effect.<br />
<br />
You can change your wallpaper, text color settings, text size (DPI Override, GLUI only), toggle mouse support, and whether to display boxart in the ''Menu Settings''.<br />
<br />
You can change RetroArch's menu font, but it'll only work for the GLUI menu driver (only on 1.2.2, newer builds have changed GLUI significantly and it no longer uses the OSD font). To change it, under ''Onscreen Display Settings'' hit ''OSD Message Font'' and select a .ttf font file.<br>Should be noted that Onscreen Display Settings are for the yellow popup messages that RetroArch displays, and GLUI happens to use fonts from it, all of the other settings here only change the popup message.<br />
<br />
XMB loads its font from <code>$assets_directory/xmb/monochrome/font.ttf</code>, so you can replace the default font .ttf with a custom one. The same can be done with the default backgrounds and icons.<br />
<br />
==Cheats==<br />
Not all cores support cheats, you can check the [http://wiki.libretro.com/index.php?title=Main_Page#Core_Software_Library Libretro wiki] for which cores do. By default RetroArch comes with a fairly large cheat database, so to make a new cheat file, you can find files in the ''cheats'' folder of RetroArch's install directory for reference.To enable cheats, load the game, toggle RetroArch's menu, load a cheat file in the ''Core Cheat Options'' and you'll get a list of cheats available which you can toggle. After setting your cheats, hit ''Apply Cheat Changes''. Some cheats may require you to ''Restart Content'' to take effect.<br />
<br />
[[Category:FAQs]]<br />
[[Category:RetroArch]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Template:MAMEVer&diff=15544Template:MAMEVer2017-08-30T19:20:50Z<p>Monroe88: Update</p>
<hr />
<div>0.189</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Template:CemuVer&diff=15543Template:CemuVer2017-08-30T19:16:28Z<p>Monroe88: Update</p>
<hr />
<div>1.9.1</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Template:MAMEVerLibretro&diff=15542Template:MAMEVerLibretro2017-08-30T19:05:38Z<p>Monroe88: Update</p>
<hr />
<div>0.188</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Template:RetroArchVer&diff=15541Template:RetroArchVer2017-08-30T18:58:26Z<p>Monroe88: Update</p>
<hr />
<div>1.6.7</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Game_Boy_Advance_emulators&diff=15410Game Boy Advance emulators2017-08-08T02:39:49Z<p>Monroe88: Fix reflist</p>
<hr />
<div>[[File:Gameboy-glacier.jpg|thumb|The Game Boy Advance handheld console]]The '''[https://en.wikipedia.org/wiki/Game_Boy_Advance Game Boy Advance]''' (often shortened to GBA) is a 32-bit handheld video game console developed by Nintendo. It is the successor to the Game Boy Color. It was released in Japan on March 21, 2001; in North America on June 11, 2001; in Australia and Europe on June 22, 2001.<br />
<br />
==Emulators==<br />
{| class="wikitable"<br />
|+PC<br />
! scope="col"|Name<br />
! scope="col"|Operating System(s)<br />
! scope="col"|Latest Version<br />
! scope="col"|GB/GBC<br />
! scope="col"|GBA<br />
! scope="col"|NDS<br />
! scope="col"|Game Link Support<br />
! scope="col"|[[libretro|Libretro Core]]<br />
! scope="col"|[[Recommended emulators|Recommended]]<br />
|-<br />
|style="text-align:center;"|[[mGBA]]<br />
|style="text-align:center;"|Multi-platform<br />
|style="text-align:center;"|[https://mgba.io/downloads.html {{MGBAVer}}]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓*<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|-<br />
|style="text-align:center;"|[[Visual Boy Advance -M|Visual Boy Advance-M (VBA-M)]]<br />
|style="text-align:center;"|Multi-platform<br />
|style="text-align:center;"|[https://github.com/visualboyadvance-m/visualboyadvance-m GitHub] [http://www.emucr.com/search/label/VisualBoyAdvance-M/ SVN]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|[[higan]]<br />
|style="text-align:center;"|Windows, OS X, Linux<br />
|style="text-align:center;"|[http://byuu.org/emulation/higan/ {{higanVer}}]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|iDeaS<br />
|style="text-align:center;"|Windows, Linux<br />
|style="text-align:center;"|[http://ciacin.site90.com/ideas.php 1.0.4.0]<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|[[GBE+]]<br />
|style="text-align:center;"|Multi-platform<br />
|style="text-align:center;"|[https://github.com/shonumi/gbe-plus GitHub]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|[[MAME]]<br />
|style="text-align:center;"|Multi-platform<br />
|style="text-align:center;"|[http://www.mamedev.org/release.html {{MAMEVer}}]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|?<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|Meteor<br />
|style="text-align:center;"|Linux<br />
|style="text-align:center;"|[https://github.com/blastrock/meteor 1.4]<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|[[No$GBA]]<br />
|style="text-align:center;"|Windows, MS-DOS<br />
|style="text-align:center;"|[http://problemkaputt.de/gba.htm 2.8e]<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|-<br />
!colspan="9"|Mobile<br />
|-<br />
|style="text-align:center;"|[[mGBA]]<br />
|style="text-align:center;"|Multi-platform<br />
|style="text-align:center;"|[https://mgba.io/downloads.html {{MGBAVer}}]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓*<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|-<br />
|style="text-align:center;"|[[Visual Boy Advance -M|Visual Boy Advance-M (VBA-M)]]<br />
|style="text-align:center;"|Multi-platform<br />
|style="text-align:center;"|[https://github.com/visualboyadvance-m/visualboyadvance-m GitHub] [http://www.emucr.com/search/label/VisualBoyAdvance-M/ SVN]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|VBA8<br />
|style="text-align:center;"|Windows Phone 8/8.1<br />
|style="text-align:center;"|2.27<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|?<br />
|style="text-align:center;"|✓<br />
|-<br />
|style="text-align:center;"|VBA10<br />
|style="text-align:center;"|Windows 10/Mobile<br />
|style="text-align:center;"|1.22<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|?<br />
|style="text-align:center;"|✓<br />
|-<br />
!colspan="9"|Consoles<br />
|-<br />
|style="text-align:center;"|[[mGBA]]<br />
|style="text-align:center;"|[[Wii]]<br />
|style="text-align:center;"|[https://s3.amazonaws.com/mgba/mGBA-nightly-latest-wii.7z SVN]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|-<br />
|style="text-align:center;"|[[Visual Boy Advance -M|VBA GX]]<br />
|style="text-align:center;"|[[Wii]], [[Gamecube]]<br />
|style="text-align:center;"|[https://gbatemp.net/threads/new-vba-gx-fork-2-3-0.371284/ 2.3.2]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓ (as VBA-Next)<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|TempGBA4PSP<br />
|style="text-align:center;"|[[PlayStation Portable]]<br />
|style="text-align:center;"|[http://www.mediafire.com/download/41ny5xrwxizalx4/TempGBA4PSP-26750221.zip 26750221]<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|-<br />
|style="text-align:center;"|[[gpSP]]<br />
|style="text-align:center;"|[[PlayStation Portable]]<br />
|style="text-align:center;"|0.9<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|}<br />
<small>*Experimental separate build under the name of Medusa.</small><br />
<br />
==Comparisons==<br />
* [[mGBA]] is a GBA emulator that aims to be accurate while maintaining speed. It's actively developed and has features that VBA-M lacks such as Solar/Tilt Sensor.<br />
* [[Visual Boy Advance -M|Visual Boy Advance-M (VBA-M)]] is a fork of VBA with additional improvements. It is not updated as often these days and is falling behind in terms of accuracy and performance compared to mGBA.<br />
** RetroArch's VBA-Next is based off an older revision of VBA-M with added speedhacks and tweaks, making it useful for lower-end devices. It is a bit less accurate in some respects, though it fixes a few games such as Advance Wars 2. <br />
* [[gpSP]] last official version was 0.9 by Exophase. There are, however, two superior forks: [http://dl.qj.net/psp/emulators/gpsp-mod-20090720.html gpSPmod] and [http://filetrip.net/psp-downloads/homebrew/download-gpsp-j-12-06-16-f29570.htmlgpSP-J gpSP-J]. gpSP-J has superior compatibility, while gpSPmod has more options for customization (full screen, cheats, etc). Both are superior to Kai.<br />
* [[higan]]'s GBA core is cycle-accurate, but up to v094 it was very much a WIP and not as compatible as VBA-M or mGBA. v095 made amazing strides, resulting in compatibility on par with mGBA.<br />
<br />
'''NOTE:''' There's '''a huge vulnerability''' in '''the original VBA emulator''' (and most of its forks bar VBA-M) that could be used to '''run malware''', similarly to ZSNES with malformed ROM files, but this time with '''cheat code files'''. The option under ''"Import > Gameshark code file"'' doesn't check if the cheat code file size is within 1024Kb, and this oversight can lead to parts of the file being exploited to run arbitrary code (which can be malware) if your cheat code file was tampered with to allow so, or you got it online from dubious sources. Fortunately, while VBA-M (the current actively developed fork based off VBA) still doesn't do sanity checks for those files, it just crashes immediately instead of the code running havoc. So, either:<br />
# Avoid importing cheat code files bigger than 1024Kb you got online from untrustworthy sources<br />
# Avoid using the Import GameShark code file feature<br />
# Avoid using the old VisualBoyAdvance altogether, and settle for other options like mGBA and VBA-M. SRAM save files are compatible between all of them.<br />
<br />
==Emulation issues==<br />
<br />
===Oversaturation===<br />
[[File:1406913527173-1-.png|400px|thumb|right|Left showing the default game, and right showing [[VBA-M]] in "Gameboy Colors" mode]]<br />
The original GBA screen was not backlit, so the screen would appear to be rather dark. To compensate for this, games would have very saturated and bright colors. The bright, overly saturated colors would appear rather normal on the GBA. In emulation, however, the appearance of these colors are undesirable. Some games made after 2003 may look better with the backlit colors, however, as they were designed with the GBA SP in mind. For everything else, there are several ways to deal with this:<br />
<br />
'''No$GBA'''<br />
<br />
Under "Emulation Options", select "GBA Mode. There are four modes.<br />
<br />
- GBA (no backlight) = strong desaturation<br />
<br />
- GBA SP (backlight) = strong desaturation<br />
<br />
- Nintendo DS in GBA mode = some desaturation<br />
<br />
- VGA Mode (poppy bright): no desaturation<br />
<br />
'''VBA-M'''<br />
<br />
(VBA-M for Windows only) Under "Options->Gameboy" you will find the options:<br />
<br />
- "Real Colors": no desaturation<br />
<br />
- "Gameboy Colors": strong desaturation<br />
<br />
'''higan'''<br />
<br />
Under Settings->Video Filter, you will find the "Color Emulation" checkbox.<br />
<br />
- Color Emulation off: no desaturation<br />
<br />
- Color Emulation on: gamma correction and adjusted color range.<br />
<br />
'''Shaders'''<br />
<br />
There are Cg [[shaders]] which can be used in [[OpenEmu]] or [[RetroArch]] that adjust the colors to those of a real GBA screen, as well as other screen types. These shaders are additionally available in GLSL<ref name="GLSL">https://github.com/libretro/glsl-shaders/tree/master/handheld/shaders/color</ref> and Slang<ref name="Slang">https://github.com/libretro/slang-shaders/tree/master/handheld/shaders/color</ref> formats. <br />
<br />
For GBA, there is <code>gba-color.cg</code><ref>https://github.com/libretro/common-shaders/blob/master/handheld/shaders/color/gba-color.cg</ref>, which simulates the color profile of a GBA screen under an external light source more accurately than VBA-M or No$GBA color options. If you prefer the darker color options that those emulators have, then use <code>vba-color.cg</code><ref>https://github.com/libretro/common-shaders/blob/master/handheld/shaders/color/vba-color.cg</ref> instead. <br />
<br />
There is also <code>nds-color.cg</code><ref>https://github.com/libretro/common-shaders/blob/master/handheld/shaders/color/nds-color.cg</ref> and <code>psp-color.cg</code><ref>https://github.com/libretro/common-shaders/blob/master/handheld/shaders/color/psp-color.cg</ref>, which simulates the color profiles of the original Nintendo DS frontlit screen and the PSP-1000/PSP-2000 backlit screen, respectively.<br />
<br />
===Save file issues===<br />
There are a number of different save formats for GBA games. With raw save data, it's very hard to detect what save type it is just by looking at it. Visual Boy Advance tries to autodetect save type but often is incorrect and this causes issues. A fix to this issue is to use a file called "vba-over.ini" to tell VBA what each game's proper save type is, which eliminates most issues regarding save type. Current VBA-M versions come with vba-over.ini by default, but older versions of VBA like VBA 1.7.2 and VBALink did not.<br />
<br />
The libretro versions of VBA, libretro-VBA-Next and libretro-VBA-M, come with vba-over.ini baked into the binary so it is able to load raw .sav files, but also changes the save file output to be a 136KB .srm file for every save type, with save type info contained within the file. This completely avoids any save type issues, but makes its save files incompatible with standalone VBA and most other emulators.<br />
<br />
Libretro devs created a <br />
[https://github.com/libretro/vbam-libretro/blob/master/src/libretro/gbaconv/gbaconv.c command line tool] to convert libretro-VBA .srm save files to raw .sav save data for other emulators. You can just drag and drop a .srm onto the executable and it will output raw .sav. The same can be done in reverse. A precompiled Windows 64-bit binary of this tool can be found <br />
[https://www.mediafire.com/?6bg8ag0bjs1b7ng here].<br />
<br />
==Connectivity==<br />
===GBA Link Multiplayer (1~4GBA)===<br />
* VBA-M: This doesn't work with old VBA versions. <br />
<br />
Just disable "Pause when Inactive", configure all four Joypads each with their own button layout, enable "Link, Enable GBA Link". Now open VBA-M again as much times needed for each player, and have them each use their separate Joypad configuration. Each player will have a separate SRAM save file.<br />
<br />
* VBA Link + e-Reader<br />
A combined version of VBA Link and VBA e-Reader is useful if you want to use the Pokémon Battle-e Cards. Downloads and instructions reside [http://projectpokemon.org/forums/showthread.php?42433-RELEASE-VBA-LINK-E-READER here].<br />
<br />
* mGBA<br />
While running mGBA, select "New multiplayer window" from the menu. As you load your ROMs into each window, "Player [X] of [Y]" will appear across the title bar. This can be done for up to four players. However, multiple instances of the same ROM will share a save file.<br />
<br />
* No$GBA: This method also works with DS ROMs, and that's the actual way to see the incomplete non-functional local Wi-Fi DS multiplayer implementation. (todo)<br />
<br />
===GBA Wireless Multiplayer===<br />
There is a [[Wikipedia:Game Boy Advance Wireless Adapter|wireless adaptor]] that can replace using a traditional wired link, but only if the game supports the hardware. It has the ability to have 5 connected players at once. ''Pokémon Fire Red'' and ''Leaf Green'' came bundled with the accessory but the accessory also work with ''Pokémon Emerald'' and the ''Classic NES Series'' games. If no game is inserted into the slot, it has it's own software that it can run, which behaves as a method to do a single pack download play. Unfortunately, no emulator is capable of this feature. The only emulator with plans for such a feature is [[mGBA]].<br />
<br />
===GameCube Connectivity===<br />
The GBA unit can connect to a GameCube.<br />
<br />
====Dolphin and VBA-M====<br />
<br />
Game Boy connection support can be supported via joybus emulation. Such requires VBA-M (r947 or newer) and a dump of a GBA BIOS.<br />
<br />
'''Connect 1~4 GBA Unit Without Game to GC Game'''<br />
<br />
First Part!<br />
* Open Dolphin and VBA-M. Make sure neither are blocked by your firmware.<br />
* '''Dolphin:''' Start your game and play until you get to the in-game menu where you're asked to connect a GBA. Under the GC controller options (earlier "Config, Gamecube", now it's with the GC/Wii controller options). You have 4 GC controller ports: change how much you need to "GBA". Leave the game and its music running :)<br />
* '''VBA-M:''' You'll need to uncheck "Options, Emulator, Pause When Inactive". Then, under "Options, Link, Joybus Options", Make sure to enable "Enable Joybus Connection" and set "IP/Hostname" to use default settings, that is (127.0.0.1) or (localhost) - without the brackets. <br />
* THEN, Dolphin will freeze. You'll want to not have the system sound too high if you're using headphones. <br />
<br />
Second Part!<br />
* '''VBA-M''': Open the GBA BIOS in VBA-M as if it were a regular GBA ROM. There will be that splash screen but it will stutter a bit. <br />
* Dolphin should recognize the Joybus Link by then and the GC game will detect that a GBA unit was connected.<br />
* To connect other GBA units, open another VBA-M instance and repeat what you did with VBA-M.<br />
<br />
Notable games that work:<br />
* The Legend of Zelda Four Swords Adventures: Both two modes available for the US/PAL version work. The third Japan-only Navi Trackers mode works as well, but the game crashes after the naming screen due to a bug in the GC/GBA connectivity.<br />
* Final Fantasy Crystal Chronicles<br />
* Billy Hatcher: You can download games to your GBA. Amusingly, a RAM dump from VBA-M can be opened as a functional GBA ROM.<br />
* Kururin Squash<br />
* Sonic Adventure 2 (buggy)<br />
<br />
Don't work:<br />
* The Legend of Zelda Wind Waker: Tingle Trainer connection always fails, though some messages do display on VBA-M.<br />
* Drill Land<br />
* Any Pokémon game<br />
* lots more<br />
<br />
'''Connect GBA Game to GC Game'''<br />
<br />
* '''VBA-M''': Under "Emulator, Bios Files" set the GBA BIOS file directory, and have the emulator use it. This will cause each regular GBA ROM you load in VBA-M to show the BIOS splash screen then proceed to the game. It has higher compatibility too.<br />
* You do the all the steps above in the '''first part''' of the previous section (connecting a GBA unit without Game to a GC game) until the line with Dolphin freezing when you enable Joylink in VBA-M.<br />
<br />
Then:<br />
* '''VBA-M''': Open the regular GBA ROM to be connected with the GC game in VBA-M as if it were a regular GBA ROM. <br />
* There will be that splash screen, but if you do nothing the GBA game starts as usual and the connection doesn't actually happen. What you must do is to hold '''Select+Start''' while the BIOS is loading. This will cause the BIOS animation to stop and wait for connections, and the regular GBA ROM game won't boot immediately. If it goes as intended, VBA-M will stutter a bit and the connection will be initiated.<br />
* Dolphin should recognize the Joybus Link by then and the GC game will detect that a GBA unit was connected.<br />
* To connect other GBA units, open another VBA-M instance and repeat what you did with VBA-M.<br />
<br />
Please note e-Reader functionality with GC games isn't emulated as of yet.<br />
<br />
====Dolphin and other emulators====<br />
Dolphin devs are working at rewriting the entire GBA connectivity code in a far better way from scratch with more accurate emulators. They did a video using the higan emulator. Nothing of the sort is published at the moment.<br />
<br />
===GBA/DS Connectivity===<br />
Inserting a GBA card in Slot-2 in a Nintendo DS unit (that's not a DSi) while a DS game is running could unlock various gameplay features in some DS games. DeSmuME can emulate this: while playing the DS ROM, go to "Config, Slot 2 (GBA Slot)" and select "GBA Cartridge". Now select the GBA ROM file, and make sure its sav file is in the same folder. You may need to reset the game sometimes to see the effect in-game.<br />
<br />
===e-Reader===<br />
A device that connects to the GBA, which can read content off e-Card paper stripes either as standalone content, or additional content to GBA games (or even GC ones). Also known as the GBA's DLC.<br />
<br />
''Main Page: [[GBA e-Reader emulators]]''<br />
<br />
==Special Hardware==<br />
Most of these have not been emulated as of yet. There used to be patches that could be applied to GBA ROMs with a utility like Lunar IPS (mostly from [http://bubbz.pocketheaven.com/?system=gba&section=patch No Frills]), but they're for the most part lost to time nowadays. Your best bet is to use Action Replay to emulate those.<br />
<br />
===Solar Sensor===<br />
====Emulation====<br />
This feature has been emulated in mGBA, VBA-M and no$gba 2.6 onwards:<br />
* mGBA: In the shortcuts editor, shortcuts can be configured to raise/lower the solar level incrementally or to set any particular brightness level. <br />
* VBA-M: This emulator uses the keys of the lateral motion controls to change the Solar Sensor levels. You can find those keys and modify them in Options -> Input -> Configure... -> "Special" tab.<br />
* no$GBA: Under '''Options/Emulation Setup''', you can find the Solar Sensor Level option. You are given the choice between only three brightness levels though: Darkness, 100 Watts, and Bright Sunlight.<br />
<br />
====ROM Patches====<br />
Fixes applied directly to the ROM by various scene release groups to make it compatible with any emulator/flashcard, making the in-game brightness level controllable with L+Left/Right. It's argued this makes for a better experience actually, but sadly not all releases are covered.<br />
* '''Boktai 1:''' [http://www.advanscene.com/html/Releases/dbreleases.php?id=1567 JP], [http://www.advanscene.com/html/Releases/dbreleases.php?id=1145 US], <s>EU</s>.<br />
* '''Boktai 2:''' [http://www.advanscene.com/html/Releases/dbreleases.php?id=1567 JP], <s>US</s>, [http://www.advanscene.com/html/Releases/dbreleases.php?id=1992 EU]. <br />
* '''Boktai 3:''' [http://www.advanscene.com/html/Releases/dbreleases.php?id=2048 JP Fix].<br />
* Combinations of Boktai 4 JP with earlier solar sensors to get solar sensor bonuses aren't emulated yet in any DS emulator.<br />
<br />
===Motion Control===<br />
VBA-M has an option for Motion controls "Input, Set, Motion". It currently works with all versions of the GBC title Kirby Tilt'n Tumble, which also was a special cartridge with a motion sensor built-in to control movement in-game. But VBA-M does not support motion controls for GBA games yet.<br />
====Emulation====<br />
* VBA '''doesn't''' emulate this feature, and its "Motion Control" option (with keys mapped to each tilt direction) covers the GBC title Kirby Tilt'n Tumble.<br />
* mGBA supposedly includes this feature but key remapping for tilt sensors is not present in the latest builds.<br />
====ROM Patches====<br />
Fixes applied directly to the ROM (with the Lunar IPS utility, or at runtime using mGBA or VBA-M and naming them the same as the ROM in the same directory) by various scene release groups to make it compatible with any emulator/flashcard. D-Pad controls substituting motion controls don't work as well here as they tilt it "too much" at times to be very playable.<br />
* Yoshi Topsy Turvy/Universal Gravitation: [http://www.advanscene.com/html/Releases/dbreleases.php?id=1799 JP], [http://www.advanscene.com/html/Releases/dbreleases.php?id=1947 EU], [http://www.advanscene.com/html/Releases/dbreleases.php?id=2001 US]<br />
* Warioware Twisted! (Patch: [http://www.advanscene.com/html/Releases/dbreleases.php?id=1682 JP], [http://www.advanscene.com/html/Releases/dbreleases.php?id=1979 US])<br />
<br />
===Rumble Feature===<br />
There are various rumble features found in GBA/GBC cards:<br />
* '''GBC Rumble:''' GBC games which came on special cartridges with additional hardware for the rumble feature. It was actually used by dozens of releases, and some games like Tarzan 2 GBC were programmed to have rumble support but shipped on regular cartridges. Emulated by VBA-M GX (Wii-only), which also cover the dummied-out rumble games. Not emulated anywhere else.<br />
* '''GBA Gyro Rumble:''' WarioWare Twisted was shipped on a cart with rumble support. It would rumble when you tilt to one "extreme". Emulated by VBA-M GX (Wii-only, functional), mGBA has this feature but it's not enabled in current builds.<br />
* '''GBA Variable Rumble:''' Drill Dozer has rumble support, with variable force and speed depending on the rock type you drill through ingame. Partially emulated by VBA-M GX (Wii-only, functional), mGBA has this feature but it's not enabled in current builds.<br />
* '''Game Boy Player Rumble:''' Many regular GBA games, shipped on regular cartridges, enable rumble during gameplay when played on GB Player hardware (which is essentially GBA hardware). These include Super Mario Advance 4, Summon Night Hajimari no Ishi, Mario & Luigi 1, Shikakui Atama wo Marukusuru Advance (both releases), Pokémon Pinball, as well as Drill Dozer which disables its original cartridge rumble scheme and enables this one instead. None of the emulators support this, though it's being under development for the mGBA emulator.<br />
<br />
===Figurine Readers===<br />
* '''Figurine Add-on:''' Legendz: Isle Of Trials, Legendz: Sign Of Necromu, Plaston Gate ([http://www.advanscene.com/html/Releases/dbreleases.php?id=1020 Fix]), Plaston Gate DX ([http://www.advanscene.com/html/Releases/dbreleases.php?id=2006 Fix]). The add-on is essentially Skylanders before it became popular.<br />
<br />
===Other Add-ons===<br />
Not emulated yet:<br />
<br />
* Battle Chip Gate (and variations): compatible with Japanese versions of Megaman Zero 3, Megaman Battle Network 4, 4.5, 5 and 6.<br />
<br />
==References==<br />
{{reflist|2}}<br />
<br />
[[Category:Consoles]]<br />
[[Category:Nintendo consoles]]<br />
[[Category:Game Boy Advance emulators|*]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Game_Boy_Advance_emulators&diff=15409Game Boy Advance emulators2017-08-08T02:38:24Z<p>Monroe88: /* Emulation issues */</p>
<hr />
<div>[[File:Gameboy-glacier.jpg|thumb|The Game Boy Advance handheld console]]The '''[https://en.wikipedia.org/wiki/Game_Boy_Advance Game Boy Advance]''' (often shortened to GBA) is a 32-bit handheld video game console developed by Nintendo. It is the successor to the Game Boy Color. It was released in Japan on March 21, 2001; in North America on June 11, 2001; in Australia and Europe on June 22, 2001.<br />
<br />
==Emulators==<br />
{| class="wikitable"<br />
|+PC<br />
! scope="col"|Name<br />
! scope="col"|Operating System(s)<br />
! scope="col"|Latest Version<br />
! scope="col"|GB/GBC<br />
! scope="col"|GBA<br />
! scope="col"|NDS<br />
! scope="col"|Game Link Support<br />
! scope="col"|[[libretro|Libretro Core]]<br />
! scope="col"|[[Recommended emulators|Recommended]]<br />
|-<br />
|style="text-align:center;"|[[mGBA]]<br />
|style="text-align:center;"|Multi-platform<br />
|style="text-align:center;"|[https://mgba.io/downloads.html {{MGBAVer}}]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓*<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|-<br />
|style="text-align:center;"|[[Visual Boy Advance -M|Visual Boy Advance-M (VBA-M)]]<br />
|style="text-align:center;"|Multi-platform<br />
|style="text-align:center;"|[https://github.com/visualboyadvance-m/visualboyadvance-m GitHub] [http://www.emucr.com/search/label/VisualBoyAdvance-M/ SVN]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|[[higan]]<br />
|style="text-align:center;"|Windows, OS X, Linux<br />
|style="text-align:center;"|[http://byuu.org/emulation/higan/ {{higanVer}}]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|iDeaS<br />
|style="text-align:center;"|Windows, Linux<br />
|style="text-align:center;"|[http://ciacin.site90.com/ideas.php 1.0.4.0]<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|[[GBE+]]<br />
|style="text-align:center;"|Multi-platform<br />
|style="text-align:center;"|[https://github.com/shonumi/gbe-plus GitHub]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|[[MAME]]<br />
|style="text-align:center;"|Multi-platform<br />
|style="text-align:center;"|[http://www.mamedev.org/release.html {{MAMEVer}}]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|?<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|Meteor<br />
|style="text-align:center;"|Linux<br />
|style="text-align:center;"|[https://github.com/blastrock/meteor 1.4]<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|[[No$GBA]]<br />
|style="text-align:center;"|Windows, MS-DOS<br />
|style="text-align:center;"|[http://problemkaputt.de/gba.htm 2.8e]<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|-<br />
!colspan="9"|Mobile<br />
|-<br />
|style="text-align:center;"|[[mGBA]]<br />
|style="text-align:center;"|Multi-platform<br />
|style="text-align:center;"|[https://mgba.io/downloads.html {{MGBAVer}}]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓*<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|-<br />
|style="text-align:center;"|[[Visual Boy Advance -M|Visual Boy Advance-M (VBA-M)]]<br />
|style="text-align:center;"|Multi-platform<br />
|style="text-align:center;"|[https://github.com/visualboyadvance-m/visualboyadvance-m GitHub] [http://www.emucr.com/search/label/VisualBoyAdvance-M/ SVN]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|VBA8<br />
|style="text-align:center;"|Windows Phone 8/8.1<br />
|style="text-align:center;"|2.27<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|?<br />
|style="text-align:center;"|✓<br />
|-<br />
|style="text-align:center;"|VBA10<br />
|style="text-align:center;"|Windows 10/Mobile<br />
|style="text-align:center;"|1.22<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|?<br />
|style="text-align:center;"|✓<br />
|-<br />
!colspan="9"|Consoles<br />
|-<br />
|style="text-align:center;"|[[mGBA]]<br />
|style="text-align:center;"|[[Wii]]<br />
|style="text-align:center;"|[https://s3.amazonaws.com/mgba/mGBA-nightly-latest-wii.7z SVN]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|-<br />
|style="text-align:center;"|[[Visual Boy Advance -M|VBA GX]]<br />
|style="text-align:center;"|[[Wii]], [[Gamecube]]<br />
|style="text-align:center;"|[https://gbatemp.net/threads/new-vba-gx-fork-2-3-0.371284/ 2.3.2]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓ (as VBA-Next)<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|TempGBA4PSP<br />
|style="text-align:center;"|[[PlayStation Portable]]<br />
|style="text-align:center;"|[http://www.mediafire.com/download/41ny5xrwxizalx4/TempGBA4PSP-26750221.zip 26750221]<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|-<br />
|style="text-align:center;"|[[gpSP]]<br />
|style="text-align:center;"|[[PlayStation Portable]]<br />
|style="text-align:center;"|0.9<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|}<br />
<small>*Experimental separate build under the name of Medusa.</small><br />
<br />
==Comparisons==<br />
* [[mGBA]] is a GBA emulator that aims to be accurate while maintaining speed. It's actively developed and has features that VBA-M lacks such as Solar/Tilt Sensor.<br />
* [[Visual Boy Advance -M|Visual Boy Advance-M (VBA-M)]] is a fork of VBA with additional improvements. It is not updated as often these days and is falling behind in terms of accuracy and performance compared to mGBA.<br />
** RetroArch's VBA-Next is based off an older revision of VBA-M with added speedhacks and tweaks, making it useful for lower-end devices. It is a bit less accurate in some respects, though it fixes a few games such as Advance Wars 2. <br />
* [[gpSP]] last official version was 0.9 by Exophase. There are, however, two superior forks: [http://dl.qj.net/psp/emulators/gpsp-mod-20090720.html gpSPmod] and [http://filetrip.net/psp-downloads/homebrew/download-gpsp-j-12-06-16-f29570.htmlgpSP-J gpSP-J]. gpSP-J has superior compatibility, while gpSPmod has more options for customization (full screen, cheats, etc). Both are superior to Kai.<br />
* [[higan]]'s GBA core is cycle-accurate, but up to v094 it was very much a WIP and not as compatible as VBA-M or mGBA. v095 made amazing strides, resulting in compatibility on par with mGBA.<br />
<br />
'''NOTE:''' There's '''a huge vulnerability''' in '''the original VBA emulator''' (and most of its forks bar VBA-M) that could be used to '''run malware''', similarly to ZSNES with malformed ROM files, but this time with '''cheat code files'''. The option under ''"Import > Gameshark code file"'' doesn't check if the cheat code file size is within 1024Kb, and this oversight can lead to parts of the file being exploited to run arbitrary code (which can be malware) if your cheat code file was tampered with to allow so, or you got it online from dubious sources. Fortunately, while VBA-M (the current actively developed fork based off VBA) still doesn't do sanity checks for those files, it just crashes immediately instead of the code running havoc. So, either:<br />
# Avoid importing cheat code files bigger than 1024Kb you got online from untrustworthy sources<br />
# Avoid using the Import GameShark code file feature<br />
# Avoid using the old VisualBoyAdvance altogether, and settle for other options like mGBA and VBA-M. SRAM save files are compatible between all of them.<br />
<br />
==Emulation issues==<br />
<br />
===Oversaturation===<br />
[[File:1406913527173-1-.png|400px|thumb|right|Left showing the default game, and right showing [[VBA-M]] in "Gameboy Colors" mode]]<br />
The original GBA screen was not backlit, so the screen would appear to be rather dark. To compensate for this, games would have very saturated and bright colors. The bright, overly saturated colors would appear rather normal on the GBA. In emulation, however, the appearance of these colors are undesirable. Some games made after 2003 may look better with the backlit colors, however, as they were designed with the GBA SP in mind. For everything else, there are several ways to deal with this:<br />
<br />
'''No$GBA'''<br />
<br />
Under "Emulation Options", select "GBA Mode. There are four modes.<br />
<br />
- GBA (no backlight) = strong desaturation<br />
<br />
- GBA SP (backlight) = strong desaturation<br />
<br />
- Nintendo DS in GBA mode = some desaturation<br />
<br />
- VGA Mode (poppy bright): no desaturation<br />
<br />
'''VBA-M'''<br />
<br />
(VBA-M for Windows only) Under "Options->Gameboy" you will find the options:<br />
<br />
- "Real Colors": no desaturation<br />
<br />
- "Gameboy Colors": strong desaturation<br />
<br />
'''higan'''<br />
<br />
Under Settings->Video Filter, you will find the "Color Emulation" checkbox.<br />
<br />
- Color Emulation off: no desaturation<br />
<br />
- Color Emulation on: gamma correction and adjusted color range.<br />
<br />
'''Shaders'''<br />
<br />
There are Cg [[shaders]] which can be used in [[OpenEmu]] or [[RetroArch]] that adjust the colors to those of a real GBA screen, as well as other screen types. These shaders are additionally available in GLSL<ref name="GLSL">https://github.com/libretro/glsl-shaders/tree/master/handheld/shaders/color</ref> and Slang<ref name="Slang">https://github.com/libretro/slang-shaders/tree/master/handheld/shaders/color</ref> formats. <br />
<br />
For GBA, there is <code>gba-color.cg</code><ref>https://github.com/libretro/common-shaders/blob/master/handheld/shaders/color/gba-color.cg</ref>, which simulates the color profile of a GBA screen under an external light source more accurately than VBA-M or No$GBA color options. If you prefer the darker color options that those emulators have, then use <code>vba-color.cg</code><ref>https://github.com/libretro/common-shaders/blob/master/handheld/shaders/color/vba-color.cg</ref> instead. <br />
<br />
There is also <code>nds-color.cg</code><ref>https://github.com/libretro/common-shaders/blob/master/handheld/shaders/color/nds-color.cg</ref> and <code>psp-color.cg</code><ref>https://github.com/libretro/common-shaders/blob/master/handheld/shaders/color/psp-color.cg</ref>, which simulates the color profiles of the original Nintendo DS frontlit screen and the PSP-1000/PSP-2000 backlit screen, respectively.<br />
<br />
===Save file issues===<br />
There are a number of different save formats for GBA games. With raw save data, it's very hard to detect what save type it is just by looking at it. Visual Boy Advance tries to autodetect save type but often is incorrect and this causes issues. A fix to this issue is to use a file called "vba-over.ini" to tell VBA what each game's proper save type is, which eliminates most issues regarding save type. Current VBA-M versions come with vba-over.ini by default, but older versions of VBA like VBA 1.7.2 and VBALink did not.<br />
<br />
The libretro versions of VBA, libretro-VBA-Next and libretro-VBA-M, come with vba-over.ini baked into the binary so it is able to load raw .sav files, but also changes the save file output to be a 136KB .srm file for every save type, with save type info contained within the file. This completely avoids any save type issues, but makes its save files incompatible with standalone VBA and most other emulators.<br />
<br />
Libretro devs created a <br />
[https://github.com/libretro/vbam-libretro/blob/master/src/libretro/gbaconv/gbaconv.c command line tool] to convert libretro-VBA .srm save files to raw .sav save data for other emulators. You can just drag and drop a .srm onto the executable and it will output raw .sav. The same can be done in reverse. A precompiled Windows 64-bit binary of this tool can be found <br />
[https://www.mediafire.com/?6bg8ag0bjs1b7ng here].<br />
<br />
==References==<br />
{{reflist|2}}<br />
<br />
==Connectivity==<br />
===GBA Link Multiplayer (1~4GBA)===<br />
* VBA-M: This doesn't work with old VBA versions. <br />
<br />
Just disable "Pause when Inactive", configure all four Joypads each with their own button layout, enable "Link, Enable GBA Link". Now open VBA-M again as much times needed for each player, and have them each use their separate Joypad configuration. Each player will have a separate SRAM save file.<br />
<br />
* VBA Link + e-Reader<br />
A combined version of VBA Link and VBA e-Reader is useful if you want to use the Pokémon Battle-e Cards. Downloads and instructions reside [http://projectpokemon.org/forums/showthread.php?42433-RELEASE-VBA-LINK-E-READER here].<br />
<br />
* mGBA<br />
While running mGBA, select "New multiplayer window" from the menu. As you load your ROMs into each window, "Player [X] of [Y]" will appear across the title bar. This can be done for up to four players. However, multiple instances of the same ROM will share a save file.<br />
<br />
* No$GBA: This method also works with DS ROMs, and that's the actual way to see the incomplete non-functional local Wi-Fi DS multiplayer implementation. (todo)<br />
<br />
===GBA Wireless Multiplayer===<br />
There is a [[Wikipedia:Game Boy Advance Wireless Adapter|wireless adaptor]] that can replace using a traditional wired link, but only if the game supports the hardware. It has the ability to have 5 connected players at once. ''Pokémon Fire Red'' and ''Leaf Green'' came bundled with the accessory but the accessory also work with ''Pokémon Emerald'' and the ''Classic NES Series'' games. If no game is inserted into the slot, it has it's own software that it can run, which behaves as a method to do a single pack download play. Unfortunately, no emulator is capable of this feature. The only emulator with plans for such a feature is [[mGBA]].<br />
<br />
===GameCube Connectivity===<br />
The GBA unit can connect to a GameCube.<br />
<br />
====Dolphin and VBA-M====<br />
<br />
Game Boy connection support can be supported via joybus emulation. Such requires VBA-M (r947 or newer) and a dump of a GBA BIOS.<br />
<br />
'''Connect 1~4 GBA Unit Without Game to GC Game'''<br />
<br />
First Part!<br />
* Open Dolphin and VBA-M. Make sure neither are blocked by your firmware.<br />
* '''Dolphin:''' Start your game and play until you get to the in-game menu where you're asked to connect a GBA. Under the GC controller options (earlier "Config, Gamecube", now it's with the GC/Wii controller options). You have 4 GC controller ports: change how much you need to "GBA". Leave the game and its music running :)<br />
* '''VBA-M:''' You'll need to uncheck "Options, Emulator, Pause When Inactive". Then, under "Options, Link, Joybus Options", Make sure to enable "Enable Joybus Connection" and set "IP/Hostname" to use default settings, that is (127.0.0.1) or (localhost) - without the brackets. <br />
* THEN, Dolphin will freeze. You'll want to not have the system sound too high if you're using headphones. <br />
<br />
Second Part!<br />
* '''VBA-M''': Open the GBA BIOS in VBA-M as if it were a regular GBA ROM. There will be that splash screen but it will stutter a bit. <br />
* Dolphin should recognize the Joybus Link by then and the GC game will detect that a GBA unit was connected.<br />
* To connect other GBA units, open another VBA-M instance and repeat what you did with VBA-M.<br />
<br />
Notable games that work:<br />
* The Legend of Zelda Four Swords Adventures: Both two modes available for the US/PAL version work. The third Japan-only Navi Trackers mode works as well, but the game crashes after the naming screen due to a bug in the GC/GBA connectivity.<br />
* Final Fantasy Crystal Chronicles<br />
* Billy Hatcher: You can download games to your GBA. Amusingly, a RAM dump from VBA-M can be opened as a functional GBA ROM.<br />
* Kururin Squash<br />
* Sonic Adventure 2 (buggy)<br />
<br />
Don't work:<br />
* The Legend of Zelda Wind Waker: Tingle Trainer connection always fails, though some messages do display on VBA-M.<br />
* Drill Land<br />
* Any Pokémon game<br />
* lots more<br />
<br />
'''Connect GBA Game to GC Game'''<br />
<br />
* '''VBA-M''': Under "Emulator, Bios Files" set the GBA BIOS file directory, and have the emulator use it. This will cause each regular GBA ROM you load in VBA-M to show the BIOS splash screen then proceed to the game. It has higher compatibility too.<br />
* You do the all the steps above in the '''first part''' of the previous section (connecting a GBA unit without Game to a GC game) until the line with Dolphin freezing when you enable Joylink in VBA-M.<br />
<br />
Then:<br />
* '''VBA-M''': Open the regular GBA ROM to be connected with the GC game in VBA-M as if it were a regular GBA ROM. <br />
* There will be that splash screen, but if you do nothing the GBA game starts as usual and the connection doesn't actually happen. What you must do is to hold '''Select+Start''' while the BIOS is loading. This will cause the BIOS animation to stop and wait for connections, and the regular GBA ROM game won't boot immediately. If it goes as intended, VBA-M will stutter a bit and the connection will be initiated.<br />
* Dolphin should recognize the Joybus Link by then and the GC game will detect that a GBA unit was connected.<br />
* To connect other GBA units, open another VBA-M instance and repeat what you did with VBA-M.<br />
<br />
Please note e-Reader functionality with GC games isn't emulated as of yet.<br />
<br />
====Dolphin and other emulators====<br />
Dolphin devs are working at rewriting the entire GBA connectivity code in a far better way from scratch with more accurate emulators. They did a video using the higan emulator. Nothing of the sort is published at the moment.<br />
<br />
===GBA/DS Connectivity===<br />
Inserting a GBA card in Slot-2 in a Nintendo DS unit (that's not a DSi) while a DS game is running could unlock various gameplay features in some DS games. DeSmuME can emulate this: while playing the DS ROM, go to "Config, Slot 2 (GBA Slot)" and select "GBA Cartridge". Now select the GBA ROM file, and make sure its sav file is in the same folder. You may need to reset the game sometimes to see the effect in-game.<br />
<br />
===e-Reader===<br />
A device that connects to the GBA, which can read content off e-Card paper stripes either as standalone content, or additional content to GBA games (or even GC ones). Also known as the GBA's DLC.<br />
<br />
''Main Page: [[GBA e-Reader emulators]]''<br />
<br />
==Special Hardware==<br />
Most of these have not been emulated as of yet. There used to be patches that could be applied to GBA ROMs with a utility like Lunar IPS (mostly from [http://bubbz.pocketheaven.com/?system=gba&section=patch No Frills]), but they're for the most part lost to time nowadays. Your best bet is to use Action Replay to emulate those.<br />
<br />
===Solar Sensor===<br />
====Emulation====<br />
This feature has been emulated in mGBA, VBA-M and no$gba 2.6 onwards:<br />
* mGBA: In the shortcuts editor, shortcuts can be configured to raise/lower the solar level incrementally or to set any particular brightness level. <br />
* VBA-M: This emulator uses the keys of the lateral motion controls to change the Solar Sensor levels. You can find those keys and modify them in Options -> Input -> Configure... -> "Special" tab.<br />
* no$GBA: Under '''Options/Emulation Setup''', you can find the Solar Sensor Level option. You are given the choice between only three brightness levels though: Darkness, 100 Watts, and Bright Sunlight.<br />
<br />
====ROM Patches====<br />
Fixes applied directly to the ROM by various scene release groups to make it compatible with any emulator/flashcard, making the in-game brightness level controllable with L+Left/Right. It's argued this makes for a better experience actually, but sadly not all releases are covered.<br />
* '''Boktai 1:''' [http://www.advanscene.com/html/Releases/dbreleases.php?id=1567 JP], [http://www.advanscene.com/html/Releases/dbreleases.php?id=1145 US], <s>EU</s>.<br />
* '''Boktai 2:''' [http://www.advanscene.com/html/Releases/dbreleases.php?id=1567 JP], <s>US</s>, [http://www.advanscene.com/html/Releases/dbreleases.php?id=1992 EU]. <br />
* '''Boktai 3:''' [http://www.advanscene.com/html/Releases/dbreleases.php?id=2048 JP Fix].<br />
* Combinations of Boktai 4 JP with earlier solar sensors to get solar sensor bonuses aren't emulated yet in any DS emulator.<br />
<br />
===Motion Control===<br />
VBA-M has an option for Motion controls "Input, Set, Motion". It currently works with all versions of the GBC title Kirby Tilt'n Tumble, which also was a special cartridge with a motion sensor built-in to control movement in-game. But VBA-M does not support motion controls for GBA games yet.<br />
====Emulation====<br />
* VBA '''doesn't''' emulate this feature, and its "Motion Control" option (with keys mapped to each tilt direction) covers the GBC title Kirby Tilt'n Tumble.<br />
* mGBA supposedly includes this feature but key remapping for tilt sensors is not present in the latest builds.<br />
====ROM Patches====<br />
Fixes applied directly to the ROM (with the Lunar IPS utility, or at runtime using mGBA or VBA-M and naming them the same as the ROM in the same directory) by various scene release groups to make it compatible with any emulator/flashcard. D-Pad controls substituting motion controls don't work as well here as they tilt it "too much" at times to be very playable.<br />
* Yoshi Topsy Turvy/Universal Gravitation: [http://www.advanscene.com/html/Releases/dbreleases.php?id=1799 JP], [http://www.advanscene.com/html/Releases/dbreleases.php?id=1947 EU], [http://www.advanscene.com/html/Releases/dbreleases.php?id=2001 US]<br />
* Warioware Twisted! (Patch: [http://www.advanscene.com/html/Releases/dbreleases.php?id=1682 JP], [http://www.advanscene.com/html/Releases/dbreleases.php?id=1979 US])<br />
<br />
===Rumble Feature===<br />
There are various rumble features found in GBA/GBC cards:<br />
* '''GBC Rumble:''' GBC games which came on special cartridges with additional hardware for the rumble feature. It was actually used by dozens of releases, and some games like Tarzan 2 GBC were programmed to have rumble support but shipped on regular cartridges. Emulated by VBA-M GX (Wii-only), which also cover the dummied-out rumble games. Not emulated anywhere else.<br />
* '''GBA Gyro Rumble:''' WarioWare Twisted was shipped on a cart with rumble support. It would rumble when you tilt to one "extreme". Emulated by VBA-M GX (Wii-only, functional), mGBA has this feature but it's not enabled in current builds.<br />
* '''GBA Variable Rumble:''' Drill Dozer has rumble support, with variable force and speed depending on the rock type you drill through ingame. Partially emulated by VBA-M GX (Wii-only, functional), mGBA has this feature but it's not enabled in current builds.<br />
* '''Game Boy Player Rumble:''' Many regular GBA games, shipped on regular cartridges, enable rumble during gameplay when played on GB Player hardware (which is essentially GBA hardware). These include Super Mario Advance 4, Summon Night Hajimari no Ishi, Mario & Luigi 1, Shikakui Atama wo Marukusuru Advance (both releases), Pokémon Pinball, as well as Drill Dozer which disables its original cartridge rumble scheme and enables this one instead. None of the emulators support this, though it's being under development for the mGBA emulator.<br />
<br />
===Figurine Readers===<br />
* '''Figurine Add-on:''' Legendz: Isle Of Trials, Legendz: Sign Of Necromu, Plaston Gate ([http://www.advanscene.com/html/Releases/dbreleases.php?id=1020 Fix]), Plaston Gate DX ([http://www.advanscene.com/html/Releases/dbreleases.php?id=2006 Fix]). The add-on is essentially Skylanders before it became popular.<br />
<br />
===Other Add-ons===<br />
Not emulated yet:<br />
<br />
* Battle Chip Gate (and variations): compatible with Japanese versions of Megaman Zero 3, Megaman Battle Network 4, 4.5, 5 and 6.<br />
<br />
==Notes==<br />
<references /><br />
<br />
[[Category:Consoles]]<br />
[[Category:Nintendo consoles]]<br />
[[Category:Game Boy Advance emulators|*]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Shaders_and_filters&diff=15078Shaders and filters2017-07-01T06:58:56Z<p>Monroe88: /* CRT Shaders */</p>
<hr />
<div>Shaders and filters can be applied to video games to achieve some kind of visual effect. These can be from attempting to replicate [[Recommended Displays|aperture grille]] displays, NTSC signals, or something more exotic.<br />
<br />
==Emulator support==<br />
{| class="wikitable"<br />
! scope="col" style="text-align: center;"|Name<br />
! scope="col" style="text-align: center;"|Shader file types<br />
! scope="col" style="text-align: center;"|Notes<br />
|-<br />
| style="text-align: center;"|[[RetroArch]]<br />
|.cg, .cgp, .glsl, .glslp, .slang, .slangp, .dll/.so<br />
|<br />
Old bsnes XML shaders (.shader) and old bsnes filter plugins (.filter) are no longer usable in current versions of RetroArch.<br />
SoftFilters are dynamic libraries, the extension depends on platform.<br />
<br />
.cgp stacks several .cg files on top of one another. Same thing with .glslp and .slangp.<br />
|-<br />
| style="text-align: center;"|[[DOSBox]]<br />
|.fx<br />
|Only on special builds such as [http://ykhwong.x-y.net/ SVN Daum].<br />
|-<br />
| style="text-align: center;"|[[Higan]]<br />
|.filter, .shader, folders<br />
|<br />
.shader removed in future higan releases in favor of Quark shader folders.<br />
<br />
.filter works in old [[higan|bsnes]] versions (circa v82) but not current in current versions of higan.<br />
|-<br />
| style="text-align: center;"|[[HqMAME]]<br />
|.fx<br />
|xBRZ and HQx<br />
|-<br />
| style="text-align: center;"|[[OpenEMU]]<br />
|.cg,<br />
|<br />
|-<br />
| style="text-align: center;"|[[Snes9x]]<br />
|.cg, .shader<br />
|<br />
|-<br />
| style="text-align: center;"|[[Project64]]<br />
|.fx<br />
|Only with a [http://www.lanpartyguide.com/zelda/shaders.html custom Rice Video plugin].<br />
|-<br />
| style="text-align: center;"|[[PCSX-R]]<br />
|.slv/.slf, .vp/.fp<br />
|Requires Pete's OpenGL2 or gpuBladeSoft.<br />
|-<br />
| style="text-align: center;"|[[ePSXe]]<br />
|.slv/.slf, .vp/.fp<br />
|Requires Pete's OpenGL2 or gpuBladeSoft.<br />
|-<br />
| style="text-align: center;"|[[PCSX2]]<br />
|.fx<br />
|Must be named shader.fx and be in the main directory. PageUp to activate.<br />
|-<br />
| style="text-align: center;"|[[Dolphin]]<br />
|.txt<br />
|Can only be used with OpenGL backend.<br />
|-<br />
| style="text-align: center;"|Mobile<br />
|.glsl<br />
|GLSL is the shader language used by default on mobile (Android/iOS/Blackberry).<br />
|-<br />
| style="text-align: center;"|Mobile<br />
|.glslp<br />
|GLSL equiv. of cgp - possible to stack several shaders with this.<br />
|}<br />
<br />
==Types==<br />
{{Main|List of shaders and filters}}<br />
[[File:Crt-geom.png|thumb|190px|crt-geom-flat.cg, a popular CRT shader. ]]<br />
===CRT Shaders===<br />
{{Main|CRT Shaders}}<br />
<br />
Many of these shaders replicate aperture grille CRTs, which tend to have sharp images and strong scanlines. Only a few replicate shadow mask CRTs, often requiring much higher resolutions to display the mask without aliasing.<br />
<br />
===NTSC Filters===<br />
{{Main|NTSC filters}}<br />
<br />
These software filters replicate the signals that consoles output to the TV. They vary in quality, with the lowest quality being RF, then composite, then S-Video, and then RGB (SCART) being the highest quality. Many emulators have blargg's NTSC filter libraries<ref name="blargg">http://slack.net/~ant/libs/ntsc.html</ref> built into them. They can also be separately downloaded in filter plugin format.<br />
<br />
===LCD Shaders===<br />
[[File:Lcd-grid.png|thumb|256px|cgwg's lcd-grid-v2 shader with GBA colors.]]<br />
These replicate the look of a low resolution LCD common on handhelds. These can range from a simple grid drawn around the pixels to a detailed recreation of each pixel's RGB subpixels. May also include motion blurring to simulate ghosting and washed out color gamuts.<br />
<br />
===GameBoy Shader===<br />
[[File:Gb.png|thumb|189px|GameBoy Shader with default palette. Other palettes are available.]]<br />
<br />
This .cgp shader replicates the dot matrix screen of a Game Boy, complete with the ghosting problems to reproduce certain visual effects. Made by Harlequin. Requires [[RetroArch]].<br />
<br />
===Smoothing shaders===<br />
<br />
These shaders, such as 2xSai, Super Eagle, Super 2xSai, scaleX , HQx , xBR and xBRZ attempt to reduce the pixelation by smoothing and rounding. They can cause a lot of false positives and distortions, however, scaling the image 2x or 3x using nearest neighbor, then applying the smoothing shader will reduce the intensity of the smoothing by keeping the pixel shapes intact, eliminating most distortions while keeping a fairly smooth look.<br />
<br />
===Dithering===<br />
<br />
These are shaders designed to detect and smooth [[dithering]]. [https://github.com/libretro/common-shaders/tree/master/dithering mdapt] is a popular one. There is also newer gdapt.<br />
<br />
===Pixellate===<br />
<br />
This shader is supposed to appear the same as nearest neighbor (aka "unfiltered"), except with minor corrections when using a non-integer scale that are increasingly less noticeable the higher it is scaled. This shader is useful to anyone who wants to keep things as sharp as possible without worrying about scale factors. Available in [https://github.com/hizzlekizzle/quark-shaders/tree/master/Pixellate.shader Quark] and [https://github.com/libretro/common-shaders/blob/master/retro/shaders/pixellate.cg Cg] shader formats.<br />
<br />
===Border===<br />
<br />
A [https://github.com/libretro/common-shaders/tree/master/borders shader] that applies a border overlay to the game image. Can be used to fill empty areas on widescreen monitors with artwork, display a CRT or handheld bezel, or simulate [https://github.com/libretro/common-shaders/tree/master/borders/gameboy-player Game Boy Player] and [https://github.com/libretro/common-shaders/tree/master/borders/sgb Super Game Boy] output.<br />
<br />
===Image Adjustment===<br />
<br />
Image adjustment shaders allow you to adjust the color levels of an image, including gamma, luminance, contrast, saturation, and so on, for personal preference, accuracy, or compensating your display. Often, these are used alongside other shaders. There are also [https://github.com/libretro/common-shaders/tree/master/handheld/shaders/color shaders] that simulate the color profiles of specific displays, such as the GBA or DS.<br />
<br />
===Tonemapping===<br />
<br />
A tonemapping shader allows you to use an external LUT texture to do tonemapping and other color adjustments.<ref name="tonemapping">http://filthypants.blogspot.com/2017/06/retroarch-tone-mapping-lut-shader.html</ref> The LUT texture is PNG image that can be edited in any image editing software to have a desired color adjustment. When the modified LUT is used in the shader, the color adjustment gets applied to the game's video output.<br />
<br />
==Shaders on real CRTs==<br />
<br />
On 31+kHz PC CRT monitors displaying in high resolution modes, most filters/shaders should work fine as is, as most were intended for output scaled 3x or higher. <br />
<br />
However, CRT monitors (and 15kHz CRTs) displaying in low resolution modes like 240p or 480p, you will find many of them won't work correctly due to the low output resolution. In these cases you should use shaders that are applied only on the horizontal axis, only make changes to color output without scaling, or those that add scanlines/interlacing for 480p output. <br />
<br />
You can combine those things with these two shader presets: [https://github.com/libretro/common-shaders/blob/master/cgp/tvout/tvout.cgp tvout.cgp] for 240p and [https://github.com/libretro/common-shaders/blob/master/cgp/tvout%2Binterlacing/tvout%2Binterlacing.cgp tvout+interlacing.cgp] for 480p. Both of these allow you to have adjustable signal resolution blur applied horizontally, as well as color controls like gamma, saturation, and the option to use TV color range (16-235) instead of PC color range (0-255), while the 480p version provides a scanline shader that is interlaced on 480-line content. The signal resolution blur works best if you use a large horizontal resolution (1280 or higher recommended) while keeping your vertical resolution at 240 or 480, and setting the aspect ratio of the emulator to stretch to fit. The higher horizontal resolution will make it look natural and convincing, avoiding banding issues. Can be combined with NTSC filters/shaders for maximum authenticity, check out the shader presets in [https://github.com/libretro/common-shaders/tree/master/cgp/tvout /cgp/tvout] and [https://github.com/libretro/common-shaders/tree/master/cgp/tvout%2Binterlacing /cgp/tvout+interlacing] for some examples.<br />
<br />
==Downloads==<br />
<br />
- [https://github.com/libretro/common-shaders Libretro Cg shaders repository]<br />
<br />
- [https://github.com/libretro/glsl-shaders Libretro GLSL shaders conversion repository]<br />
<br />
- [https://github.com/libretro/slang-shaders Libretro Vulkan (.slang) shaders repository]<br />
''(forked from [https://github.com/Themaister/slang-shaders Vulkan (.slang) shaders by Themaister])''<br />
<br />
- [http://www.emu-france.com/emulateurs/5-consoles/51-nintendo-super-nintendo/7270-analog-shader-pack/ Analog Shaders pack]<br />
<br />
- [http://www.emu-france.com/emulateurs/5-consoles/51-nintendo-super-nintendo/3677-cg-glsl-slang-shaders-pack/ Libretro (CG/GLSL/Slang) shaders pack (Snes9x/puNES/Retroarch and more)]<br />
<br />
- [http://www.emu-france.com/emulateurs/5-consoles-de-salon/59-multi-consoles/6993-higan-shaders-pack/ Higan shaders pack]<br />
<br />
- [http://www.emu-france.com/emulateurs/6-arcades/61-multi-games/3729-raine-shaders-pack/ Raine/bsnes shaders pack]<br />
<br />
- [http://www.emu-france.com/emulateurs/10-ordinateurs/118-ibm-pc-et-compatibles/6643-dosbox-shaders-pack/ Dosbox shaders pack ]<br />
<br />
- [http://www.emu-france.com/emulateurs/5-consoles-de-salon/53-sony-playstation-psone/3695-epsxe-shaders-pack/ ePSXe/PCSX-R shaders pack]<br />
<br />
- [http://www.emu-france.com/emulateurs/5-consoles-de-salon/57-sony-playstation-2-pstwo/3844-pcsx2-shaders-pack/ PCSX2 shaders pack]<br />
<br />
- [http://www.emu-france.com/emulateurs/5-consoles/233-nintendo-game-cube/6501-dolphinfx/ Dolphin shaders pack]<br />
<br />
==Further reading==<br />
[http://filthypants.blogspot.com/search/label/pixel%20shader All things shaders and filters]<br />
<br />
[https://github.com/libretro/common-shaders/blob/master/docs/README Cg shader spec].<br />
<br />
[https://github.com/libretro/slang-shaders/blob/master/spec/SHADER_SPEC.md Vulkan GLSL (Slang) shader spec]<br />
<br />
[https://github.com/libretro/shader-previews Shader preview thumbnail repository]<br />
<br />
==References==<br />
{{reflist|2}}<br />
<br />
[[Category:FAQs]]<br />
[[Category:Shaders/Filters]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Shaders_and_filters&diff=15077Shaders and filters2017-07-01T06:56:20Z<p>Monroe88: /* NTSC Filters */</p>
<hr />
<div>Shaders and filters can be applied to video games to achieve some kind of visual effect. These can be from attempting to replicate [[Recommended Displays|aperture grille]] displays, NTSC signals, or something more exotic.<br />
<br />
==Emulator support==<br />
{| class="wikitable"<br />
! scope="col" style="text-align: center;"|Name<br />
! scope="col" style="text-align: center;"|Shader file types<br />
! scope="col" style="text-align: center;"|Notes<br />
|-<br />
| style="text-align: center;"|[[RetroArch]]<br />
|.cg, .cgp, .glsl, .glslp, .slang, .slangp, .dll/.so<br />
|<br />
Old bsnes XML shaders (.shader) and old bsnes filter plugins (.filter) are no longer usable in current versions of RetroArch.<br />
SoftFilters are dynamic libraries, the extension depends on platform.<br />
<br />
.cgp stacks several .cg files on top of one another. Same thing with .glslp and .slangp.<br />
|-<br />
| style="text-align: center;"|[[DOSBox]]<br />
|.fx<br />
|Only on special builds such as [http://ykhwong.x-y.net/ SVN Daum].<br />
|-<br />
| style="text-align: center;"|[[Higan]]<br />
|.filter, .shader, folders<br />
|<br />
.shader removed in future higan releases in favor of Quark shader folders.<br />
<br />
.filter works in old [[higan|bsnes]] versions (circa v82) but not current in current versions of higan.<br />
|-<br />
| style="text-align: center;"|[[HqMAME]]<br />
|.fx<br />
|xBRZ and HQx<br />
|-<br />
| style="text-align: center;"|[[OpenEMU]]<br />
|.cg,<br />
|<br />
|-<br />
| style="text-align: center;"|[[Snes9x]]<br />
|.cg, .shader<br />
|<br />
|-<br />
| style="text-align: center;"|[[Project64]]<br />
|.fx<br />
|Only with a [http://www.lanpartyguide.com/zelda/shaders.html custom Rice Video plugin].<br />
|-<br />
| style="text-align: center;"|[[PCSX-R]]<br />
|.slv/.slf, .vp/.fp<br />
|Requires Pete's OpenGL2 or gpuBladeSoft.<br />
|-<br />
| style="text-align: center;"|[[ePSXe]]<br />
|.slv/.slf, .vp/.fp<br />
|Requires Pete's OpenGL2 or gpuBladeSoft.<br />
|-<br />
| style="text-align: center;"|[[PCSX2]]<br />
|.fx<br />
|Must be named shader.fx and be in the main directory. PageUp to activate.<br />
|-<br />
| style="text-align: center;"|[[Dolphin]]<br />
|.txt<br />
|Can only be used with OpenGL backend.<br />
|-<br />
| style="text-align: center;"|Mobile<br />
|.glsl<br />
|GLSL is the shader language used by default on mobile (Android/iOS/Blackberry).<br />
|-<br />
| style="text-align: center;"|Mobile<br />
|.glslp<br />
|GLSL equiv. of cgp - possible to stack several shaders with this.<br />
|}<br />
<br />
==Types==<br />
{{Main|List of shaders and filters}}<br />
[[File:Crt-geom.png|thumb|190px|crt-geom-flat.cg, a popular CRT shader. ]]<br />
===CRT Shaders===<br />
{{Main|CRT Shaders}}<br />
<br />
Most of these replicate aperture grille CRTs, which have sharp images and strong scanlines. Only a few replicate shadow mask CRTs, often requiring much higher resolutions.<br />
===NTSC Filters===<br />
{{Main|NTSC filters}}<br />
<br />
These software filters replicate the signals that consoles output to the TV. They vary in quality, with the lowest quality being RF, then composite, then S-Video, and then RGB (SCART) being the highest quality. Many emulators have blargg's NTSC filter libraries<ref name="blargg">http://slack.net/~ant/libs/ntsc.html</ref> built into them. They can also be separately downloaded in filter plugin format.<br />
<br />
===LCD Shaders===<br />
[[File:Lcd-grid.png|thumb|256px|cgwg's lcd-grid-v2 shader with GBA colors.]]<br />
These replicate the look of a low resolution LCD common on handhelds. These can range from a simple grid drawn around the pixels to a detailed recreation of each pixel's RGB subpixels. May also include motion blurring to simulate ghosting and washed out color gamuts.<br />
<br />
===GameBoy Shader===<br />
[[File:Gb.png|thumb|189px|GameBoy Shader with default palette. Other palettes are available.]]<br />
<br />
This .cgp shader replicates the dot matrix screen of a Game Boy, complete with the ghosting problems to reproduce certain visual effects. Made by Harlequin. Requires [[RetroArch]].<br />
<br />
===Smoothing shaders===<br />
<br />
These shaders, such as 2xSai, Super Eagle, Super 2xSai, scaleX , HQx , xBR and xBRZ attempt to reduce the pixelation by smoothing and rounding. They can cause a lot of false positives and distortions, however, scaling the image 2x or 3x using nearest neighbor, then applying the smoothing shader will reduce the intensity of the smoothing by keeping the pixel shapes intact, eliminating most distortions while keeping a fairly smooth look.<br />
<br />
===Dithering===<br />
<br />
These are shaders designed to detect and smooth [[dithering]]. [https://github.com/libretro/common-shaders/tree/master/dithering mdapt] is a popular one. There is also newer gdapt.<br />
<br />
===Pixellate===<br />
<br />
This shader is supposed to appear the same as nearest neighbor (aka "unfiltered"), except with minor corrections when using a non-integer scale that are increasingly less noticeable the higher it is scaled. This shader is useful to anyone who wants to keep things as sharp as possible without worrying about scale factors. Available in [https://github.com/hizzlekizzle/quark-shaders/tree/master/Pixellate.shader Quark] and [https://github.com/libretro/common-shaders/blob/master/retro/shaders/pixellate.cg Cg] shader formats.<br />
<br />
===Border===<br />
<br />
A [https://github.com/libretro/common-shaders/tree/master/borders shader] that applies a border overlay to the game image. Can be used to fill empty areas on widescreen monitors with artwork, display a CRT or handheld bezel, or simulate [https://github.com/libretro/common-shaders/tree/master/borders/gameboy-player Game Boy Player] and [https://github.com/libretro/common-shaders/tree/master/borders/sgb Super Game Boy] output.<br />
<br />
===Image Adjustment===<br />
<br />
Image adjustment shaders allow you to adjust the color levels of an image, including gamma, luminance, contrast, saturation, and so on, for personal preference, accuracy, or compensating your display. Often, these are used alongside other shaders. There are also [https://github.com/libretro/common-shaders/tree/master/handheld/shaders/color shaders] that simulate the color profiles of specific displays, such as the GBA or DS.<br />
<br />
===Tonemapping===<br />
<br />
A tonemapping shader allows you to use an external LUT texture to do tonemapping and other color adjustments.<ref name="tonemapping">http://filthypants.blogspot.com/2017/06/retroarch-tone-mapping-lut-shader.html</ref> The LUT texture is PNG image that can be edited in any image editing software to have a desired color adjustment. When the modified LUT is used in the shader, the color adjustment gets applied to the game's video output.<br />
<br />
==Shaders on real CRTs==<br />
<br />
On 31+kHz PC CRT monitors displaying in high resolution modes, most filters/shaders should work fine as is, as most were intended for output scaled 3x or higher. <br />
<br />
However, CRT monitors (and 15kHz CRTs) displaying in low resolution modes like 240p or 480p, you will find many of them won't work correctly due to the low output resolution. In these cases you should use shaders that are applied only on the horizontal axis, only make changes to color output without scaling, or those that add scanlines/interlacing for 480p output. <br />
<br />
You can combine those things with these two shader presets: [https://github.com/libretro/common-shaders/blob/master/cgp/tvout/tvout.cgp tvout.cgp] for 240p and [https://github.com/libretro/common-shaders/blob/master/cgp/tvout%2Binterlacing/tvout%2Binterlacing.cgp tvout+interlacing.cgp] for 480p. Both of these allow you to have adjustable signal resolution blur applied horizontally, as well as color controls like gamma, saturation, and the option to use TV color range (16-235) instead of PC color range (0-255), while the 480p version provides a scanline shader that is interlaced on 480-line content. The signal resolution blur works best if you use a large horizontal resolution (1280 or higher recommended) while keeping your vertical resolution at 240 or 480, and setting the aspect ratio of the emulator to stretch to fit. The higher horizontal resolution will make it look natural and convincing, avoiding banding issues. Can be combined with NTSC filters/shaders for maximum authenticity, check out the shader presets in [https://github.com/libretro/common-shaders/tree/master/cgp/tvout /cgp/tvout] and [https://github.com/libretro/common-shaders/tree/master/cgp/tvout%2Binterlacing /cgp/tvout+interlacing] for some examples.<br />
<br />
==Downloads==<br />
<br />
- [https://github.com/libretro/common-shaders Libretro Cg shaders repository]<br />
<br />
- [https://github.com/libretro/glsl-shaders Libretro GLSL shaders conversion repository]<br />
<br />
- [https://github.com/libretro/slang-shaders Libretro Vulkan (.slang) shaders repository]<br />
''(forked from [https://github.com/Themaister/slang-shaders Vulkan (.slang) shaders by Themaister])''<br />
<br />
- [http://www.emu-france.com/emulateurs/5-consoles/51-nintendo-super-nintendo/7270-analog-shader-pack/ Analog Shaders pack]<br />
<br />
- [http://www.emu-france.com/emulateurs/5-consoles/51-nintendo-super-nintendo/3677-cg-glsl-slang-shaders-pack/ Libretro (CG/GLSL/Slang) shaders pack (Snes9x/puNES/Retroarch and more)]<br />
<br />
- [http://www.emu-france.com/emulateurs/5-consoles-de-salon/59-multi-consoles/6993-higan-shaders-pack/ Higan shaders pack]<br />
<br />
- [http://www.emu-france.com/emulateurs/6-arcades/61-multi-games/3729-raine-shaders-pack/ Raine/bsnes shaders pack]<br />
<br />
- [http://www.emu-france.com/emulateurs/10-ordinateurs/118-ibm-pc-et-compatibles/6643-dosbox-shaders-pack/ Dosbox shaders pack ]<br />
<br />
- [http://www.emu-france.com/emulateurs/5-consoles-de-salon/53-sony-playstation-psone/3695-epsxe-shaders-pack/ ePSXe/PCSX-R shaders pack]<br />
<br />
- [http://www.emu-france.com/emulateurs/5-consoles-de-salon/57-sony-playstation-2-pstwo/3844-pcsx2-shaders-pack/ PCSX2 shaders pack]<br />
<br />
- [http://www.emu-france.com/emulateurs/5-consoles/233-nintendo-game-cube/6501-dolphinfx/ Dolphin shaders pack]<br />
<br />
==Further reading==<br />
[http://filthypants.blogspot.com/search/label/pixel%20shader All things shaders and filters]<br />
<br />
[https://github.com/libretro/common-shaders/blob/master/docs/README Cg shader spec].<br />
<br />
[https://github.com/libretro/slang-shaders/blob/master/spec/SHADER_SPEC.md Vulkan GLSL (Slang) shader spec]<br />
<br />
[https://github.com/libretro/shader-previews Shader preview thumbnail repository]<br />
<br />
==References==<br />
{{reflist|2}}<br />
<br />
[[Category:FAQs]]<br />
[[Category:Shaders/Filters]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Shaders_and_filters&diff=15076Shaders and filters2017-07-01T06:42:49Z<p>Monroe88: Add tonemapping section, add reflist</p>
<hr />
<div>Shaders and filters can be applied to video games to achieve some kind of visual effect. These can be from attempting to replicate [[Recommended Displays|aperture grille]] displays, NTSC signals, or something more exotic.<br />
<br />
==Emulator support==<br />
{| class="wikitable"<br />
! scope="col" style="text-align: center;"|Name<br />
! scope="col" style="text-align: center;"|Shader file types<br />
! scope="col" style="text-align: center;"|Notes<br />
|-<br />
| style="text-align: center;"|[[RetroArch]]<br />
|.cg, .cgp, .glsl, .glslp, .slang, .slangp, .dll/.so<br />
|<br />
Old bsnes XML shaders (.shader) and old bsnes filter plugins (.filter) are no longer usable in current versions of RetroArch.<br />
SoftFilters are dynamic libraries, the extension depends on platform.<br />
<br />
.cgp stacks several .cg files on top of one another. Same thing with .glslp and .slangp.<br />
|-<br />
| style="text-align: center;"|[[DOSBox]]<br />
|.fx<br />
|Only on special builds such as [http://ykhwong.x-y.net/ SVN Daum].<br />
|-<br />
| style="text-align: center;"|[[Higan]]<br />
|.filter, .shader, folders<br />
|<br />
.shader removed in future higan releases in favor of Quark shader folders.<br />
<br />
.filter works in old [[higan|bsnes]] versions (circa v82) but not current in current versions of higan.<br />
|-<br />
| style="text-align: center;"|[[HqMAME]]<br />
|.fx<br />
|xBRZ and HQx<br />
|-<br />
| style="text-align: center;"|[[OpenEMU]]<br />
|.cg,<br />
|<br />
|-<br />
| style="text-align: center;"|[[Snes9x]]<br />
|.cg, .shader<br />
|<br />
|-<br />
| style="text-align: center;"|[[Project64]]<br />
|.fx<br />
|Only with a [http://www.lanpartyguide.com/zelda/shaders.html custom Rice Video plugin].<br />
|-<br />
| style="text-align: center;"|[[PCSX-R]]<br />
|.slv/.slf, .vp/.fp<br />
|Requires Pete's OpenGL2 or gpuBladeSoft.<br />
|-<br />
| style="text-align: center;"|[[ePSXe]]<br />
|.slv/.slf, .vp/.fp<br />
|Requires Pete's OpenGL2 or gpuBladeSoft.<br />
|-<br />
| style="text-align: center;"|[[PCSX2]]<br />
|.fx<br />
|Must be named shader.fx and be in the main directory. PageUp to activate.<br />
|-<br />
| style="text-align: center;"|[[Dolphin]]<br />
|.txt<br />
|Can only be used with OpenGL backend.<br />
|-<br />
| style="text-align: center;"|Mobile<br />
|.glsl<br />
|GLSL is the shader language used by default on mobile (Android/iOS/Blackberry).<br />
|-<br />
| style="text-align: center;"|Mobile<br />
|.glslp<br />
|GLSL equiv. of cgp - possible to stack several shaders with this.<br />
|}<br />
<br />
==Types==<br />
{{Main|List of shaders and filters}}<br />
[[File:Crt-geom.png|thumb|190px|crt-geom-flat.cg, a popular CRT shader. ]]<br />
===CRT Shaders===<br />
{{Main|CRT Shaders}}<br />
<br />
Most of these replicate aperture grille CRTs, which have sharp images and strong scanlines. Only a few replicate shadow mask CRTs, often requiring much higher resolutions.<br />
===NTSC Filters===<br />
{{Main|NTSC filters}}<br />
<br />
These replicate the signals that consoles output to the TV. They vary in quality, with the lowest being RF, then composite, then s-video and RGB (scart) being the highest quality. Many emulators have NTSC filters built into them. They can also be separately downloaded in filter plugin format.<br />
<br />
===LCD Shaders===<br />
[[File:Lcd-grid.png|thumb|256px|cgwg's lcd-grid-v2 shader with GBA colors.]]<br />
These replicate the look of a low resolution LCD common on handhelds. These can range from a simple grid drawn around the pixels to a detailed recreation of each pixel's RGB subpixels. May also include motion blurring to simulate ghosting and washed out color gamuts.<br />
<br />
===GameBoy Shader===<br />
[[File:Gb.png|thumb|189px|GameBoy Shader with default palette. Other palettes are available.]]<br />
<br />
This .cgp shader replicates the dot matrix screen of a Game Boy, complete with the ghosting problems to reproduce certain visual effects. Made by Harlequin. Requires [[RetroArch]].<br />
<br />
===Smoothing shaders===<br />
<br />
These shaders, such as 2xSai, Super Eagle, Super 2xSai, scaleX , HQx , xBR and xBRZ attempt to reduce the pixelation by smoothing and rounding. They can cause a lot of false positives and distortions, however, scaling the image 2x or 3x using nearest neighbor, then applying the smoothing shader will reduce the intensity of the smoothing by keeping the pixel shapes intact, eliminating most distortions while keeping a fairly smooth look.<br />
<br />
===Dithering===<br />
<br />
These are shaders designed to detect and smooth [[dithering]]. [https://github.com/libretro/common-shaders/tree/master/dithering mdapt] is a popular one. There is also newer gdapt.<br />
<br />
===Pixellate===<br />
<br />
This shader is supposed to appear the same as nearest neighbor (aka "unfiltered"), except with minor corrections when using a non-integer scale that are increasingly less noticeable the higher it is scaled. This shader is useful to anyone who wants to keep things as sharp as possible without worrying about scale factors. Available in [https://github.com/hizzlekizzle/quark-shaders/tree/master/Pixellate.shader Quark] and [https://github.com/libretro/common-shaders/blob/master/retro/shaders/pixellate.cg Cg] shader formats.<br />
<br />
===Border===<br />
<br />
A [https://github.com/libretro/common-shaders/tree/master/borders shader] that applies a border overlay to the game image. Can be used to fill empty areas on widescreen monitors with artwork, display a CRT or handheld bezel, or simulate [https://github.com/libretro/common-shaders/tree/master/borders/gameboy-player Game Boy Player] and [https://github.com/libretro/common-shaders/tree/master/borders/sgb Super Game Boy] output.<br />
<br />
===Image Adjustment===<br />
<br />
Image adjustment shaders allow you to adjust the color levels of an image, including gamma, luminance, contrast, saturation, and so on, for personal preference, accuracy, or compensating your display. Often, these are used alongside other shaders. There are also [https://github.com/libretro/common-shaders/tree/master/handheld/shaders/color shaders] that simulate the color profiles of specific displays, such as the GBA or DS.<br />
<br />
===Tonemapping===<br />
<br />
A tonemapping shader allows you to use an external LUT texture to do tonemapping and other color adjustments.<ref name="tonemapping">http://filthypants.blogspot.com/2017/06/retroarch-tone-mapping-lut-shader.html</ref> The LUT texture is PNG image that can be edited in any image editing software to have a desired color adjustment. When the modified LUT is used in the shader, the color adjustment gets applied to the game's video output.<br />
<br />
==Shaders on real CRTs==<br />
<br />
On 31+kHz PC CRT monitors displaying in high resolution modes, most filters/shaders should work fine as is, as most were intended for output scaled 3x or higher. <br />
<br />
However, CRT monitors (and 15kHz CRTs) displaying in low resolution modes like 240p or 480p, you will find many of them won't work correctly due to the low output resolution. In these cases you should use shaders that are applied only on the horizontal axis, only make changes to color output without scaling, or those that add scanlines/interlacing for 480p output. <br />
<br />
You can combine those things with these two shader presets: [https://github.com/libretro/common-shaders/blob/master/cgp/tvout/tvout.cgp tvout.cgp] for 240p and [https://github.com/libretro/common-shaders/blob/master/cgp/tvout%2Binterlacing/tvout%2Binterlacing.cgp tvout+interlacing.cgp] for 480p. Both of these allow you to have adjustable signal resolution blur applied horizontally, as well as color controls like gamma, saturation, and the option to use TV color range (16-235) instead of PC color range (0-255), while the 480p version provides a scanline shader that is interlaced on 480-line content. The signal resolution blur works best if you use a large horizontal resolution (1280 or higher recommended) while keeping your vertical resolution at 240 or 480, and setting the aspect ratio of the emulator to stretch to fit. The higher horizontal resolution will make it look natural and convincing, avoiding banding issues. Can be combined with NTSC filters/shaders for maximum authenticity, check out the shader presets in [https://github.com/libretro/common-shaders/tree/master/cgp/tvout /cgp/tvout] and [https://github.com/libretro/common-shaders/tree/master/cgp/tvout%2Binterlacing /cgp/tvout+interlacing] for some examples.<br />
<br />
==Downloads==<br />
<br />
- [https://github.com/libretro/common-shaders Libretro Cg shaders repository]<br />
<br />
- [https://github.com/libretro/glsl-shaders Libretro GLSL shaders conversion repository]<br />
<br />
- [https://github.com/libretro/slang-shaders Libretro Vulkan (.slang) shaders repository]<br />
''(forked from [https://github.com/Themaister/slang-shaders Vulkan (.slang) shaders by Themaister])''<br />
<br />
- [http://www.emu-france.com/emulateurs/5-consoles/51-nintendo-super-nintendo/7270-analog-shader-pack/ Analog Shaders pack]<br />
<br />
- [http://www.emu-france.com/emulateurs/5-consoles/51-nintendo-super-nintendo/3677-cg-glsl-slang-shaders-pack/ Libretro (CG/GLSL/Slang) shaders pack (Snes9x/puNES/Retroarch and more)]<br />
<br />
- [http://www.emu-france.com/emulateurs/5-consoles-de-salon/59-multi-consoles/6993-higan-shaders-pack/ Higan shaders pack]<br />
<br />
- [http://www.emu-france.com/emulateurs/6-arcades/61-multi-games/3729-raine-shaders-pack/ Raine/bsnes shaders pack]<br />
<br />
- [http://www.emu-france.com/emulateurs/10-ordinateurs/118-ibm-pc-et-compatibles/6643-dosbox-shaders-pack/ Dosbox shaders pack ]<br />
<br />
- [http://www.emu-france.com/emulateurs/5-consoles-de-salon/53-sony-playstation-psone/3695-epsxe-shaders-pack/ ePSXe/PCSX-R shaders pack]<br />
<br />
- [http://www.emu-france.com/emulateurs/5-consoles-de-salon/57-sony-playstation-2-pstwo/3844-pcsx2-shaders-pack/ PCSX2 shaders pack]<br />
<br />
- [http://www.emu-france.com/emulateurs/5-consoles/233-nintendo-game-cube/6501-dolphinfx/ Dolphin shaders pack]<br />
<br />
==Further reading==<br />
[http://filthypants.blogspot.com/search/label/pixel%20shader All things shaders and filters]<br />
<br />
[https://github.com/libretro/common-shaders/blob/master/docs/README Cg shader spec].<br />
<br />
[https://github.com/libretro/slang-shaders/blob/master/spec/SHADER_SPEC.md Vulkan GLSL (Slang) shader spec]<br />
<br />
[https://github.com/libretro/shader-previews Shader preview thumbnail repository]<br />
<br />
==References==<br />
{{reflist|2}}<br />
<br />
[[Category:FAQs]]<br />
[[Category:Shaders/Filters]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Famicom_color_palette&diff=14709Famicom color palette2017-04-26T02:00:23Z<p>Monroe88: reference Nestopia palette generator</p>
<hr />
<div>Unlike consoles like the SNES, which natively generate the image in pure RGB, the Famicom normally generates and outputs an encoded NTSC video signal, which must then be decoded by the TV's built-in NTSC decoder. This means the resulting color palette often varies depending on the display's decoder. This is why NES games appear to have different colors on different TV sets.<br />
<br />
NES emulators are similarly afflicted by this issue, as they each have their own algorithms for generating the NES color palette, meaning they all have slightly to wildly varying palettes. As such, there isn't really a "true" NES color palette, and which emulator has the "best" palette often comes down to preference, or whichever looks closest to how the real console looks on a user's own particular TV. FCEU based emulators come with a load of different preset palettes based on different people's perceptions of the NES colors, while emulators such as Nestopia<ref name="nestopia_pal_gen">https://github.com/rdanbrook/nestopia/blob/master/source/core/NstVideoRenderer.cpp#L397</ref> have the ability for the user to edit the color palette to their liking, including the use of custom palettes that define the NES palette in any way the user wishes. <br />
<br />
Some arcade machines based on the NES hardware, such as the PlayChoice-10 and the Versus series of cabinets, did generate a native RGB signal, however. The colors on these cabinets tend to be very vibrant and saturated, giving games a very distinct look compared to how they would look on the real console. Nestopia gives the user the choice to use the RGB palette featured in these cabinets, though it is not usually considered to be the definitive or "real" NES palette.<br />
<br />
The [[libretro]] ports of Nestopia<ref name="nestopia_raw">https://github.com/rdanbrook/nestopia/commit/9d58851a22eb3baeee7b4fe28ae8ffaac7eaa599</ref> and FCEUmm<ref name="fceumm_raw">https://github.com/libretro/libretro-fceumm/commit/d370e2d37f9baa26e546e3542104ed04e1bf8965</ref> have the option to output the raw chroma, level, and emphasis from the PPU through the RGB color channels. This by itself produces an image with completely bizarre colors, but this can be decoded by [[shaders]] to generate actual colors, the main examples being GTU-Famicom<ref name="gtu_famicom_cg">https://github.com/libretro/common-shaders/tree/master/crt/shaders/GTU-famicom</ref><ref name="gtu_famicom_slang">https://github.com/libretro/slang-shaders/tree/master/crt/shaders/gtu-famicom</ref> and nes-color-decoder<ref name="nes_color_decoder_cg">https://github.com/libretro/common-shaders/blob/master/misc/nes-color-decoder.cg</ref><ref name="nes_color_decoder_slang">https://github.com/libretro/slang-shaders/blob/master/misc/nes-color-decoder.slang</ref>.<br />
<br />
==Download==<br />
* [http://www76.zippyshare.com/v/Im7PrXa2/file.html Palettes download]<br />
<br />
==Chart==<br />
{| class="wikitable"<br />
|+ <br />
|-<br />
! scope="col"|Palette <br />
! scope="col"|Nestopia decoder preset<br />
! scope="col"|NESRGB palette name<br />
! scope="col"|Description<br />
|-<br />
|style="text-align:center;"|YUV<br />
|style="text-align:center;"|15° Canonical<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Based on the standard method of NTSC decoding.<br />
|-<br />
|style="text-align:center;"|RGB<br />
|style="text-align:center;"|RGB<br />
|style="text-align:center;"|Garish<br />
|style="text-align:center;"|The palette used by all official Nintendo RGB PPUs, such as in the PlayChoice-10 and Famicom Titler.<br />
|-<br />
|style="text-align:center;"|YUV (Sony CXA2025AS) <br />
|style="text-align:center;"|Consumer<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Based on an NTSC decoder found in Sony TVs.<br />
|-<br />
|style="text-align:center;"|YUV with yellow boost<br />
|style="text-align:center;"|Alternative<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Based on decoders in certain NTSC-J TVs.<ref>http://forums.nesdev.com/viewtopic.php?f=3&t=4241</ref> <br />
|-<br />
|style="text-align:center;"|Raw Chroma, Level, and Emphasis<br />
|style="text-align:center;"|Raw*<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|The raw chroma, level, and emphasis output of the NES PPU represented in RGB color channels<ref>https://github.com/libretro/nestopia/blob/c2244b8eec1a4f6bbebdd09ec6c4b1552b5610c0/libretro/libretro.cpp#L526</ref> Only available as an option on the [[libretro]] ports of Nestopia and FCEUmm<ref name="fceumm_raw"/><ref name="nestopia_raw" /><br />
|-<br />
|style="text-align:center;"|Nintendulator NTSC<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Natural<br />
|style="text-align:center;"|Based on what is currently understood about NTSC decoding<ref>http://wiki.nesdev.com/w/index.php/NTSC_video</ref><br />
|-<br />
|style="text-align:center;"|NTSC Hardware (FBX)<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A (Optionally available)<br />
|style="text-align:center;"|Analog RGB was fed into a calibrated Sony PVM monitor, and then meticulously aligned on each color entry to match as closely as possible to the NTSC feed from an original NES.<ref name="firebrandx">http://www.firebrandx.com/nespalette.html</ref><br />
|-<br />
|style="text-align:center;"|PVM Style D93 (FBX)<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A (Optionally available)<br />
|style="text-align:center;"|Approximates the color and intensity of a Sony PVM CRT screen.<ref name="firebrandx">http://www.firebrandx.com/nespalette.html</ref> <br />
|-<br />
|style="text-align:center;"|Composite Direct (FBX)<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A (Optionally available)<br />
|style="text-align:center;"|Direct capture of the composite output of the front-loader NTSC NES.<ref name="firebrandx"></ref> <br />
|-<br />
|style="text-align:center;"|NESCAP<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|This palette was created using direct NES composite capture through a Blackmagic Intensity Pro 4K through its composite input.<ref name="RGBSource">https://rgbsource.blogspot.com/search/label/NES%20Color%20Palette</ref> <br />
|-<br />
|style="text-align:center;"|HYBRID<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|This is a hybrid between the above NESCAP palette and the FCEUX palette.<ref name="RGBSource">https://rgbsource.blogspot.com/search/label/NES%20Color%20Palette</ref> <br />
|-<br />
|style="text-align:center;"|NESCLASSIC<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|This palette is derived from the NES Classic Mini by taking the average of each color (since the NES Classic Mini has a noise filter).<ref name="RGBSource">https://rgbsource.blogspot.com/search/label/NES%20Color%20Palette</ref> "NES Classic (FBX-FS)" is an independent capture of the palette.<ref name="firebrandx"/><br />
|-<br />
|style="text-align:center;"|NES Remix U<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|This palette is ripped from the Wii U [[wikipedia:NES_Remix_(series)|NES Remix]] games. The 3DS game (Ultimate NES Remix) uses the 3DS VC's palette.<br />
|-<br />
|style="text-align:center;"|FCEUX<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Improved<br />
|style="text-align:center;"|Palettes used in FCEUX emulator. 12 is the default, and similar to Rock Man 9. 13 and 15 feature less saturation.<ref name="FCEUX Help">http://www.fceux.com/web/help/fceux.html?PaletteOptions.html</ref><br />
|-<br />
|style="text-align:center;"|Rock Man 9<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Palettes derived from Rock Man 9.<ref name="ririka">https://sites.google.com/site/insectduel/ririka</ref> "21 to 2C" version is differs in that it darkens a single cyan value (2C).<ref name="ririka"></ref><br />
|-<br />
|style="text-align:center;"|Virtual Console <br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Palettes used in the [[Wii emulators|Wii]] and [[3DS]] [[Virtual Console]]. Wii version, all colors, are darkened significantly. 3DS feature high saturation and brightness. "Normalized" version adjusts brightness levels significantly.<br />
|-<br />
|style="text-align:center;"|BMF final<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Palettes created by BMF based on his television. 2 features a very darkened screen, similar to Wii VC. 3 is more saturated.<ref name="FCEUX Help"/><br />
|-<br />
|style="text-align:center;"|ASQ Reality<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|AspiringSquire's attempt at improving BMF palettes.<ref name="FCEUX Help"/> <br />
|-<br />
|style="text-align:center;"|Wavebeam<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Created to look good on crts. Similar to Consumer.<ref>https://wavebeam.blogspot.ca/2017/03/wavebeam-nes-palette.html</ref><br />
|-<br />
|-<br />
|style="text-align:center;"|FCC 1953<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|First color TV system, NTSC, introduced a color standard in 1953. NTSC colors were very lush.<ref name="Nerdlypleasures">http://nerdlypleasures.blogspot.ca/2016/10/video-potpourri-ii.html?m=1</ref> <br />
|-<br />
|}<br />
<br />
==Palettes==<br />
{|width="100%"<br />
|- valign="top"<br />
|<br />
{| cellpadding="10" cellspacing="0"<br />
|+YUV<br />
|-<br />
| style="background:#666666; color:#FFFFFF" align="center" | 00<br />
| style="background:#002A88; color:#FFFFFF" align="center" | 01<br />
| style="background:#1412A7; color:#FFFFFF" align="center" | 02<br />
| style="background:#3B00A4; color:#FFFFFF" align="center" | 03<br />
| style="background:#5C007E; color:#FFFFFF" align="center" | 04<br />
| style="background:#6E0040; color:#FFFFFF" align="center" | 05<br />
| style="background:#6C0700; color:#FFFFFF" align="center" | 06<br />
| style="background:#561D00; color:#FFFFFF" align="center" | 07<br />
| style="background:#333500; color:#FFFFFF" align="center" | 08<br />
| style="background:#0C4800; color:#FFFFFF" align="center" | 09<br />
| style="background:#005200; color:#FFFFFF" align="center" | 0A<br />
| style="background:#004F08; color:#FFFFFF" align="center" | 0B<br />
| style="background:#00404D; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#ADADAD; color:#FFFFFF" align="center" | 10<br />
| style="background:#155FD9; color:#FFFFFF" align="center" | 11<br />
| style="background:#4240FF; color:#FFFFFF" align="center" | 12<br />
| style="background:#7527FE; color:#FFFFFF" align="center" | 13<br />
| style="background:#A01ACC; color:#FFFFFF" align="center" | 14<br />
| style="background:#B71E7B; color:#FFFFFF" align="center" | 15<br />
| style="background:#B53120; color:#FFFFFF" align="center" | 16<br />
| style="background:#994E00; color:#FFFFFF" align="center" | 17<br />
| style="background:#6B6D00; color:#FFFFFF" align="center" | 18<br />
| style="background:#388700; color:#FFFFFF" align="center" | 19<br />
| style="background:#0D9300; color:#FFFFFF" align="center" | 1A<br />
| style="background:#008F32; color:#FFFFFF" align="center" | 1B<br />
| style="background:#007C8D; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#64B0FF; color:#000000" align="center" | 21<br />
| style="background:#9290FF; color:#000000" align="center" | 22<br />
| style="background:#C676FF; color:#000000" align="center" | 23<br />
| style="background:#F26AFF; color:#000000" align="center" | 24<br />
| style="background:#FF6ECC; color:#000000" align="center" | 25<br />
| style="background:#FF8170; color:#000000" align="center" | 26<br />
| style="background:#EA9E22; color:#000000" align="center" | 27<br />
| style="background:#BCBE00; color:#000000" align="center" | 28<br />
| style="background:#88D800; color:#000000" align="center" | 29<br />
| style="background:#5CE430; color:#000000" align="center" | 2A<br />
| style="background:#45E082; color:#000000" align="center" | 2B<br />
| style="background:#48CDDE; color:#000000" align="center" | 2C<br />
| style="background:#4F4F4F; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#C0DFFF; color:#000000" align="center" | 31<br />
| style="background:#D3D2FF; color:#000000" align="center" | 32<br />
| style="background:#E8C8FF; color:#000000" align="center" | 33<br />
| style="background:#FAC2FF; color:#000000" align="center" | 34<br />
| style="background:#FFC4EA; color:#000000" align="center" | 35<br />
| style="background:#FFCCC5; color:#000000" align="center" | 36<br />
| style="background:#F7D8A5; color:#000000" align="center" | 37<br />
| style="background:#E4E594; color:#000000" align="center" | 38<br />
| style="background:#CFEF96; color:#000000" align="center" | 39<br />
| style="background:#BDF4AB; color:#000000" align="center" | 3A<br />
| style="background:#B3F3CC; color:#000000" align="center" | 3B<br />
| style="background:#B5EBF2; color:#000000" align="center" | 3C<br />
| style="background:#B8B8B8; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+YUV-V3<br />
|-<br />
| style="background:#666666; color:#FFFFFF" align="center" | 00<br />
| style="background:#002a88; color:#FFFFFF" align="center" | 01<br />
| style="background:#1412a7; color:#FFFFFF" align="center" | 02<br />
| style="background:#3b00a4; color:#FFFFFF" align="center" | 03<br />
| style="background:#5c007e; color:#FFFFFF" align="center" | 04<br />
| style="background:#6e0040; color:#FFFFFF" align="center" | 05<br />
| style="background:#6c0700; color:#FFFFFF" align="center" | 06<br />
| style="background:#561d00; color:#FFFFFF" align="center" | 07<br />
| style="background:#333500; color:#FFFFFF" align="center" | 08<br />
| style="background:#0c4800; color:#FFFFFF" align="center" | 09<br />
| style="background:#005200; color:#FFFFFF" align="center" | 0A<br />
| style="background:#004c18; color:#FFFFFF" align="center" | 0B<br />
| style="background:#003e5b; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#adadad; color:#FFFFFF" align="center" | 10<br />
| style="background:#155fd9; color:#FFFFFF" align="center" | 11<br />
| style="background:#4240ff; color:#FFFFFF" align="center" | 12<br />
| style="background:#7527fe; color:#FFFFFF" align="center" | 13<br />
| style="background:#a01acc; color:#FFFFFF" align="center" | 14<br />
| style="background:#b71e7b; color:#FFFFFF" align="center" | 15<br />
| style="background:#b53120; color:#FFFFFF" align="center" | 16<br />
| style="background:#994e00; color:#FFFFFF" align="center" | 17<br />
| style="background:#6b6d00; color:#FFFFFF" align="center" | 18<br />
| style="background:#388700; color:#FFFFFF" align="center" | 19<br />
| style="background:#0d9300; color:#FFFFFF" align="center" | 1A<br />
| style="background:#008c47; color:#FFFFFF" align="center" | 1B<br />
| style="background:#007aa0; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#ffffff; color:#000000" align="center" | 20<br />
| style="background:#64b0ff; color:#000000" align="center" | 21<br />
| style="background:#9290ff; color:#000000" align="center" | 22<br />
| style="background:#c676ff; color:#000000" align="center" | 23<br />
| style="background:#f26aff; color:#000000" align="center" | 24<br />
| style="background:#ff6ecc; color:#000000" align="center" | 25<br />
| style="background:#ff8170; color:#000000" align="center" | 26<br />
| style="background:#ea9e22; color:#000000" align="center" | 27<br />
| style="background:#bcbe00; color:#000000" align="center" | 28<br />
| style="background:#88d800; color:#000000" align="center" | 29<br />
| style="background:#5ce430; color:#000000" align="center" | 2A<br />
| style="background:#45e082; color:#000000" align="center" | 2B<br />
| style="background:#48cdde; color:#000000" align="center" | 2C<br />
| style="background:#4f4f4f; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#ffffff; color:#000000" align="center" | 30<br />
| style="background:#c0dfff; color:#000000" align="center" | 31<br />
| style="background:#d3d2ff; color:#000000" align="center" | 32<br />
| style="background:#e8c8ff; color:#000000" align="center" | 33<br />
| style="background:#fac2ff; color:#000000" align="center" | 34<br />
| style="background:#ffc4ea; color:#000000" align="center" | 35<br />
| style="background:#ffccc5; color:#000000" align="center" | 36<br />
| style="background:#f7d8a5; color:#000000" align="center" | 37<br />
| style="background:#e4e594; color:#000000" align="center" | 38<br />
| style="background:#cfef96; color:#000000" align="center" | 39<br />
| style="background:#bdf4ab; color:#000000" align="center" | 3A<br />
| style="background:#b3f3cc; color:#000000" align="center" | 3B<br />
| style="background:#b5ebf2; color:#000000" align="center" | 3C<br />
| style="background:#b8b8b8; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
<!--{| cellpadding="10" cellspacing="0"<br />
|+Unsaturated-V5<br />
|-<br />
| style="background:#6B6B6B; color:#FFFFFF" align="center" | 00<br />
| style="background:#001E87; color:#FFFFFF" align="center" | 01<br />
| style="background:#1F0B96; color:#FFFFFF" align="center" | 02<br />
| style="background:#3B0C87; color:#FFFFFF" align="center" | 03<br />
| style="background:#590D61; color:#FFFFFF" align="center" | 04<br />
| style="background:#5E0528; color:#FFFFFF" align="center" | 05<br />
| style="background:#551100; color:#FFFFFF" align="center" | 06<br />
| style="background:#461B00; color:#FFFFFF" align="center" | 07<br />
| style="background:#303200; color:#FFFFFF" align="center" | 08<br />
| style="background:#0A4800; color:#FFFFFF" align="center" | 09<br />
| style="background:#004E00; color:#FFFFFF" align="center" | 0A<br />
| style="background:#004619; color:#FFFFFF" align="center" | 0B<br />
| style="background:#00395A; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#B2B2B2; color:#FFFFFF" align="center" | 10<br />
| style="background:#1A53D1; color:#FFFFFF" align="center" | 11<br />
| style="background:#4835EE; color:#FFFFFF" align="center" | 12<br />
| style="background:#7123EC; color:#FFFFFF" align="center" | 13<br />
| style="background:#9A1EB7; color:#FFFFFF" align="center" | 14<br />
| style="background:#A51E62; color:#FFFFFF" align="center" | 15<br />
| style="background:#A52D19; color:#FFFFFF" align="center" | 16<br />
| style="background:#874B00; color:#FFFFFF" align="center" | 17<br />
| style="background:#676900; color:#FFFFFF" align="center" | 18<br />
| style="background:#298400; color:#FFFFFF" align="center" | 19<br />
| style="background:#038B00; color:#FFFFFF" align="center" | 1A<br />
| style="background:#008240; color:#FFFFFF" align="center" | 1B<br />
| style="background:#007096; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#63ADFD; color:#000000" align="center" | 21<br />
| style="background:#908AFE; color:#000000" align="center" | 22<br />
| style="background:#B977FC; color:#000000" align="center" | 23<br />
| style="background:#E771FE; color:#000000" align="center" | 24<br />
| style="background:#F76FC9; color:#000000" align="center" | 25<br />
| style="background:#F5836A; color:#000000" align="center" | 26<br />
| style="background:#DD9C29; color:#000000" align="center" | 27<br />
| style="background:#BDB807; color:#000000" align="center" | 28<br />
| style="background:#84D107; color:#000000" align="center" | 29<br />
| style="background:#5BDC3B; color:#000000" align="center" | 2A<br />
| style="background:#48D77D; color:#000000" align="center" | 2B<br />
| style="background:#48C6D8; color:#000000" align="center" | 2C<br />
| style="background:#555555; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#C4E3FE; color:#000000" align="center" | 31<br />
| style="background:#D7D5FE; color:#000000" align="center" | 32<br />
| style="background:#E6CDFE; color:#000000" align="center" | 33<br />
| style="background:#F9CAFE; color:#000000" align="center" | 34<br />
| style="background:#FEC9F0; color:#000000" align="center" | 35<br />
| style="background:#FED1C7; color:#000000" align="center" | 36<br />
| style="background:#F7DCAC; color:#000000" align="center" | 37<br />
| style="background:#E8E89C; color:#000000" align="center" | 38<br />
| style="background:#D1F29D; color:#000000" align="center" | 39<br />
| style="background:#BFF4B1; color:#000000" align="center" | 3A<br />
| style="background:#B7F5CD; color:#000000" align="center" | 3B<br />
| style="background:#B7EBF2; color:#000000" align="center" | 3C<br />
| style="background:#BEBEBE; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}--><br />
{| cellpadding="10" cellspacing="0"<br />
|+Unsaturated-Final<br />
|-<br />
| style="background:#676767; color:#FFFFFF" align="center" | 00<br />
| style="background:#001F8E; color:#FFFFFF" align="center" | 01<br />
| style="background:#23069E; color:#FFFFFF" align="center" | 02<br />
| style="background:#40008E; color:#FFFFFF" align="center" | 03<br />
| style="background:#600067; color:#FFFFFF" align="center" | 04<br />
| style="background:#67001C; color:#FFFFFF" align="center" | 05<br />
| style="background:#5B1000; color:#FFFFFF" align="center" | 06<br />
| style="background:#432500; color:#FFFFFF" align="center" | 07<br />
| style="background:#313400; color:#FFFFFF" align="center" | 08<br />
| style="background:#074800; color:#FFFFFF" align="center" | 09<br />
| style="background:#004F00; color:#FFFFFF" align="center" | 0A<br />
| style="background:#004622; color:#FFFFFF" align="center" | 0B<br />
| style="background:#003A61; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#B3B3B3; color:#FFFFFF" align="center" | 10<br />
| style="background:#205ADF; color:#FFFFFF" align="center" | 11<br />
| style="background:#5138FB; color:#FFFFFF" align="center" | 12<br />
| style="background:#7A27EE; color:#FFFFFF" align="center" | 13<br />
| style="background:#A520C2; color:#FFFFFF" align="center" | 14<br />
| style="background:#B0226B; color:#FFFFFF" align="center" | 15<br />
| style="background:#AD3702; color:#FFFFFF" align="center" | 16<br />
| style="background:#8D5600; color:#FFFFFF" align="center" | 17<br />
| style="background:#6E7000; color:#FFFFFF" align="center" | 18<br />
| style="background:#2E8A00; color:#FFFFFF" align="center" | 19<br />
| style="background:#069200; color:#FFFFFF" align="center" | 1A<br />
| style="background:#008A47; color:#FFFFFF" align="center" | 1B<br />
| style="background:#037B9B; color:#FFFFFF" align="center" | 1C<br />
| style="background:#101010; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#62AEFF; color:#000000" align="center" | 21<br />
| style="background:#918BFF; color:#000000" align="center" | 22<br />
| style="background:#BC78FF; color:#000000" align="center" | 23<br />
| style="background:#E96EFF; color:#000000" align="center" | 24<br />
| style="background:#FC6CCD; color:#000000" align="center" | 25<br />
| style="background:#FA8267; color:#000000" align="center" | 26<br />
| style="background:#E29B26; color:#000000" align="center" | 27<br />
| style="background:#C0B901; color:#000000" align="center" | 28<br />
| style="background:#84D200; color:#000000" align="center" | 29<br />
| style="background:#58DE38; color:#000000" align="center" | 2A<br />
| style="background:#46D97D; color:#000000" align="center" | 2B<br />
| style="background:#49CED2; color:#000000" align="center" | 2C<br />
| style="background:#494949; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#C1E3FF; color:#000000" align="center" | 31<br />
| style="background:#D5D4FF; color:#000000" align="center" | 32<br />
| style="background:#E7CCFF; color:#000000" align="center" | 33<br />
| style="background:#FBC9FF; color:#000000" align="center" | 34<br />
| style="background:#FFC7F0; color:#000000" align="center" | 35<br />
| style="background:#FFD0C5; color:#000000" align="center" | 36<br />
| style="background:#F8DAAA; color:#000000" align="center" | 37<br />
| style="background:#EBE69A; color:#000000" align="center" | 38<br />
| style="background:#D1F19A; color:#000000" align="center" | 39<br />
| style="background:#BEF7AF; color:#000000" align="center" | 3A<br />
| style="background:#B6F4CD; color:#000000" align="center" | 3B<br />
| style="background:#B7F0EF; color:#000000" align="center" | 3C<br />
| style="background:#B2B2B2; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Nintendulator NTSC<br />
|-<br />
| style="background:#656565; color:#FFFFFF" align="center" | 00<br />
| style="background:#002B9B; color:#FFFFFF" align="center" | 01<br />
| style="background:#110EC0; color:#FFFFFF" align="center" | 02<br />
| style="background:#3F00BC; color:#FFFFFF" align="center" | 03<br />
| style="background:#66008F; color:#FFFFFF" align="center" | 04<br />
| style="background:#7B0045; color:#FFFFFF" align="center" | 05<br />
| style="background:#790100; color:#FFFFFF" align="center" | 06<br />
| style="background:#601C00; color:#FFFFFF" align="center" | 07<br />
| style="background:#363800; color:#FFFFFF" align="center" | 08<br />
| style="background:#084F00; color:#FFFFFF" align="center" | 09<br />
| style="background:#005A00; color:#FFFFFF" align="center" | 0A<br />
| style="background:#005702; color:#FFFFFF" align="center" | 0B<br />
| style="background:#004555; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#AEAEAE; color:#FFFFFF" align="center" | 10<br />
| style="background:#0761F5; color:#FFFFFF" align="center" | 11<br />
| style="background:#3E3BFF; color:#FFFFFF" align="center" | 12<br />
| style="background:#7C1DFF; color:#FFFFFF" align="center" | 13<br />
| style="background:#AF0EE5; color:#FFFFFF" align="center" | 14<br />
| style="background:#CB1383; color:#FFFFFF" align="center" | 15<br />
| style="background:#C82A15; color:#FFFFFF" align="center" | 16<br />
| style="background:#A74D00; color:#FFFFFF" align="center" | 17<br />
| style="background:#6F7200; color:#FFFFFF" align="center" | 18<br />
| style="background:#329100; color:#FFFFFF" align="center" | 19<br />
| style="background:#009F00; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009B2A; color:#FFFFFF" align="center" | 1B<br />
| style="background:#008498; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#56B1FF; color:#000000" align="center" | 21<br />
| style="background:#8E8BFF; color:#000000" align="center" | 22<br />
| style="background:#CC6CFF; color:#000000" align="center" | 23<br />
| style="background:#FF5DFF; color:#000000" align="center" | 24<br />
| style="background:#FF62D4; color:#000000" align="center" | 25<br />
| style="background:#FF7964; color:#000000" align="center" | 26<br />
| style="background:#F89D06; color:#000000" align="center" | 27<br />
| style="background:#C0C300; color:#000000" align="center" | 28<br />
| style="background:#81E200; color:#000000" align="center" | 29<br />
| style="background:#4DF116; color:#000000" align="center" | 2A<br />
| style="background:#30EC7A; color:#000000" align="center" | 2B<br />
| style="background:#34D5EA; color:#000000" align="center" | 2C<br />
| style="background:#4E4E4E; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#BADFFF; color:#000000" align="center" | 31<br />
| style="background:#D1D0FF; color:#000000" align="center" | 32<br />
| style="background:#EBC3FF; color:#000000" align="center" | 33<br />
| style="background:#FFBDFF; color:#000000" align="center" | 34<br />
| style="background:#FFBFEE; color:#000000" align="center" | 35<br />
| style="background:#FFC8C0; color:#000000" align="center" | 36<br />
| style="background:#FCD799; color:#000000" align="center" | 37<br />
| style="background:#E5E784; color:#000000" align="center" | 38<br />
| style="background:#CCF387; color:#000000" align="center" | 39<br />
| style="background:#B6F9A0; color:#000000" align="center" | 3A<br />
| style="background:#AAF8C9; color:#000000" align="center" | 3B<br />
| style="background:#ACEEF7; color:#000000" align="center" | 3C<br />
| style="background:#B7B7B7; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+FCEUX<br />
|-<br />
| style="background:#747474; color:#FFFFFF" align="center" | 00<br />
| style="background:#24188C; color:#FFFFFF" align="center" | 01<br />
| style="background:#0000A8; color:#FFFFFF" align="center" | 02<br />
| style="background:#44009C; color:#FFFFFF" align="center" | 03<br />
| style="background:#8C0074; color:#FFFFFF" align="center" | 04<br />
| style="background:#A80010; color:#FFFFFF" align="center" | 05<br />
| style="background:#A40000; color:#FFFFFF" align="center" | 06<br />
| style="background:#7C0800; color:#FFFFFF" align="center" | 07<br />
| style="background:#402C00; color:#FFFFFF" align="center" | 08<br />
| style="background:#004400; color:#FFFFFF" align="center" | 09<br />
| style="background:#005000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003C14; color:#FFFFFF" align="center" | 0B<br />
| style="background:#183C5C; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#BCBCBC; color:#FFFFFF" align="center" | 10<br />
| style="background:#0070EC; color:#FFFFFF" align="center" | 11<br />
| style="background:#2038EC; color:#FFFFFF" align="center" | 12<br />
| style="background:#8000F0; color:#FFFFFF" align="center" | 13<br />
| style="background:#BC00BC; color:#FFFFFF" align="center" | 14<br />
| style="background:#E40058; color:#FFFFFF" align="center" | 15<br />
| style="background:#D82800; color:#FFFFFF" align="center" | 16<br />
| style="background:#C84C0C; color:#FFFFFF" align="center" | 17<br />
| style="background:#887000; color:#FFFFFF" align="center" | 18<br />
| style="background:#009400; color:#FFFFFF" align="center" | 19<br />
| style="background:#00A800; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009038; color:#FFFFFF" align="center" | 1B<br />
| style="background:#008088; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#FCFCFC; color:#000000" align="center" | 20<br />
| style="background:#3CBCFC; color:#000000" align="center" | 21<br />
| style="background:#5C94FC; color:#000000" align="center" | 22<br />
| style="background:#CC88FC; color:#000000" align="center" | 23<br />
| style="background:#F478FC; color:#000000" align="center" | 24<br />
| style="background:#FC74B4; color:#000000" align="center" | 25<br />
| style="background:#FC7460; color:#000000" align="center" | 26<br />
| style="background:#FC9838; color:#000000" align="center" | 27<br />
| style="background:#F0BC3C; color:#000000" align="center" | 28<br />
| style="background:#80D010; color:#000000" align="center" | 29<br />
| style="background:#4CDC48; color:#000000" align="center" | 2A<br />
| style="background:#58F898; color:#000000" align="center" | 2B<br />
| style="background:#00E8D8; color:#000000" align="center" | 2C<br />
| style="background:#787878; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#FCFCFC; color:#000000" align="center" | 30<br />
| style="background:#A8E4FC; color:#000000" align="center" | 31<br />
| style="background:#C4D4FC; color:#000000" align="center" | 32<br />
| style="background:#D4C8FC; color:#000000" align="center" | 33<br />
| style="background:#FCC4FC; color:#000000" align="center" | 34<br />
| style="background:#FCC4D8; color:#000000" align="center" | 35<br />
| style="background:#FCBCB0; color:#000000" align="center" | 36<br />
| style="background:#FCD8A8; color:#000000" align="center" | 37<br />
| style="background:#FCE4A0; color:#000000" align="center" | 38<br />
| style="background:#E0FCA0; color:#000000" align="center" | 39<br />
| style="background:#A8F0BC; color:#000000" align="center" | 3A<br />
| style="background:#B0FCCC; color:#000000" align="center" | 3B<br />
| style="background:#9CFCF0; color:#000000" align="center" | 3C<br />
| style="background:#C4C4C4; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Consumer<br />
|-<br />
| style="background:#666666; color:#FFFFFF" align="center" | 00<br />
| style="background:#001E9A; color:#FFFFFF" align="center" | 01<br />
| style="background:#0E09A8; color:#FFFFFF" align="center" | 02<br />
| style="background:#440093; color:#FFFFFF" align="center" | 03<br />
| style="background:#710060; color:#FFFFFF" align="center" | 04<br />
| style="background:#89011D; color:#FFFFFF" align="center" | 05<br />
| style="background:#861300; color:#FFFFFF" align="center" | 06<br />
| style="background:#692900; color:#FFFFFF" align="center" | 07<br />
| style="background:#393E00; color:#FFFFFF" align="center" | 08<br />
| style="background:#044C00; color:#FFFFFF" align="center" | 09<br />
| style="background:#004F00; color:#FFFFFF" align="center" | 0A<br />
| style="background:#00472B; color:#FFFFFF" align="center" | 0B<br />
| style="background:#00356C; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#ADADAD; color:#FFFFFF" align="center" | 10<br />
| style="background:#0050F1; color:#FFFFFF" align="center" | 11<br />
| style="background:#3B34FF; color:#FFFFFF" align="center" | 12<br />
| style="background:#8022E8; color:#FFFFFF" align="center" | 13<br />
| style="background:#BB1EA5; color:#FFFFFF" align="center" | 14<br />
| style="background:#DB294E; color:#FFFFFF" align="center" | 15<br />
| style="background:#D74000; color:#FFFFFF" align="center" | 16<br />
| style="background:#B15E00; color:#FFFFFF" align="center" | 17<br />
| style="background:#737900; color:#FFFFFF" align="center" | 18<br />
| style="background:#2D8B00; color:#FFFFFF" align="center" | 19<br />
| style="background:#008F08; color:#FFFFFF" align="center" | 1A<br />
| style="background:#008460; color:#FFFFFF" align="center" | 1B<br />
| style="background:#006DB5; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#4BA0FF; color:#000000" align="center" | 21<br />
| style="background:#8A84FF; color:#000000" align="center" | 22<br />
| style="background:#D172FF; color:#000000" align="center" | 23<br />
| style="background:#FF6DF7; color:#000000" align="center" | 24<br />
| style="background:#FF799E; color:#000000" align="center" | 25<br />
| style="background:#FF9047; color:#000000" align="center" | 26<br />
| style="background:#FFAE0A; color:#000000" align="center" | 27<br />
| style="background:#C4CA00; color:#000000" align="center" | 28<br />
| style="background:#7DDC13; color:#000000" align="center" | 29<br />
| style="background:#41E157; color:#000000" align="center" | 2A<br />
| style="background:#21D5B0; color:#000000" align="center" | 2B<br />
| style="background:#25BEFF; color:#000000" align="center" | 2C<br />
| style="background:#4F4F4F; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#B6D8FF; color:#000000" align="center" | 31<br />
| style="background:#D0CDFF; color:#000000" align="center" | 32<br />
| style="background:#EDC6FF; color:#000000" align="center" | 33<br />
| style="background:#FFC4FC; color:#000000" align="center" | 34<br />
| style="background:#FFC8D8; color:#000000" align="center" | 35<br />
| style="background:#FFD2B4; color:#000000" align="center" | 36<br />
| style="background:#FFDE9C; color:#000000" align="center" | 37<br />
| style="background:#E7E994; color:#000000" align="center" | 38<br />
| style="background:#CAF19F; color:#000000" align="center" | 39<br />
| style="background:#B2F3BB; color:#000000" align="center" | 3A<br />
| style="background:#A5EEDF; color:#000000" align="center" | 3B<br />
| style="background:#A6E5FF; color:#000000" align="center" | 3C<br />
| style="background:#B8B8B8; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+RGB<br />
|-<br />
| style="background:#6D6D6D; color:#FFFFFF" align="center" | 00<br />
| style="background:#002492; color:#FFFFFF" align="center" | 01<br />
| style="background:#0000DB; color:#FFFFFF" align="center" | 02<br />
| style="background:#6D49DB; color:#FFFFFF" align="center" | 03<br />
| style="background:#92006D; color:#FFFFFF" align="center" | 04<br />
| style="background:#B6006D; color:#FFFFFF" align="center" | 05<br />
| style="background:#B62400; color:#FFFFFF" align="center" | 06<br />
| style="background:#924900; color:#FFFFFF" align="center" | 07<br />
| style="background:#6D4900; color:#FFFFFF" align="center" | 08<br />
| style="background:#244900; color:#FFFFFF" align="center" | 09<br />
| style="background:#006D24; color:#FFFFFF" align="center" | 0A<br />
| style="background:#009200; color:#FFFFFF" align="center" | 0B<br />
| style="background:#004949; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#B6B6B6; color:#FFFFFF" align="center" | 10<br />
| style="background:#006DDB; color:#FFFFFF" align="center" | 11<br />
| style="background:#0049FF; color:#FFFFFF" align="center" | 12<br />
| style="background:#9200FF; color:#FFFFFF" align="center" | 13<br />
| style="background:#B600FF; color:#FFFFFF" align="center" | 14<br />
| style="background:#FF0092; color:#FFFFFF" align="center" | 15<br />
| style="background:#FF0000; color:#FFFFFF" align="center" | 16<br />
| style="background:#DB6D00; color:#FFFFFF" align="center" | 17<br />
| style="background:#926D00; color:#FFFFFF" align="center" | 18<br />
| style="background:#249200; color:#FFFFFF" align="center" | 19<br />
| style="background:#009200; color:#FFFFFF" align="center" | 1A<br />
| style="background:#00B66D; color:#FFFFFF" align="center" | 1B<br />
| style="background:#009292; color:#FFFFFF" align="center" | 1C<br />
| style="background:#242424; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#6DB6FF; color:#000000" align="center" | 21<br />
| style="background:#9292FF; color:#000000" align="center" | 22<br />
| style="background:#DB6DFF; color:#000000" align="center" | 23<br />
| style="background:#FF00FF; color:#000000" align="center" | 24<br />
| style="background:#FF6DFF; color:#000000" align="center" | 25<br />
| style="background:#FF9200; color:#000000" align="center" | 26<br />
| style="background:#FFB600; color:#000000" align="center" | 27<br />
| style="background:#DBDB00; color:#000000" align="center" | 28<br />
| style="background:#6DDB00; color:#000000" align="center" | 29<br />
| style="background:#00FF00; color:#000000" align="center" | 2A<br />
| style="background:#49FFDB; color:#000000" align="center" | 2B<br />
| style="background:#00FFFF; color:#000000" align="center" | 2C<br />
| style="background:#494949; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#B6DBFF; color:#000000" align="center" | 31<br />
| style="background:#DBB6FF; color:#000000" align="center" | 32<br />
| style="background:#FFB6FF; color:#000000" align="center" | 33<br />
| style="background:#FF92FF; color:#000000" align="center" | 34<br />
| style="background:#FFB6B6; color:#000000" align="center" | 35<br />
| style="background:#FFDB92; color:#000000" align="center" | 36<br />
| style="background:#FFFF49; color:#000000" align="center" | 37<br />
| style="background:#FFFF6D; color:#000000" align="center" | 38<br />
| style="background:#B6FF49; color:#000000" align="center" | 39<br />
| style="background:#92FF6D; color:#000000" align="center" | 3A<br />
| style="background:#49FFDB; color:#000000" align="center" | 3B<br />
| style="background:#92DBFF; color:#000000" align="center" | 3C<br />
| style="background:#929292; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+BMF Final 3<br />
|-<br />
| style="background:#686868; color:#FFFFFF" align="center" | 00<br />
| style="background:#001299; color:#FFFFFF" align="center" | 01<br />
| style="background:#1A08AA; color:#FFFFFF" align="center" | 02<br />
| style="background:#51029A; color:#FFFFFF" align="center" | 03<br />
| style="background:#7E0069; color:#FFFFFF" align="center" | 04<br />
| style="background:#8E001C; color:#FFFFFF" align="center" | 05<br />
| style="background:#7E0301; color:#FFFFFF" align="center" | 06<br />
| style="background:#511800; color:#FFFFFF" align="center" | 07<br />
| style="background:#1F3700; color:#FFFFFF" align="center" | 08<br />
| style="background:#014E00; color:#FFFFFF" align="center" | 09<br />
| style="background:#005A00; color:#FFFFFF" align="center" | 0A<br />
| style="background:#00501C; color:#FFFFFF" align="center" | 0B<br />
| style="background:#004061; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#B9B9B9; color:#FFFFFF" align="center" | 10<br />
| style="background:#0C5CD7; color:#FFFFFF" align="center" | 11<br />
| style="background:#5035F0; color:#FFFFFF" align="center" | 12<br />
| style="background:#8919E0; color:#FFFFFF" align="center" | 13<br />
| style="background:#BB0CB3; color:#FFFFFF" align="center" | 14<br />
| style="background:#CE0C61; color:#FFFFFF" align="center" | 15<br />
| style="background:#C02B0E; color:#FFFFFF" align="center" | 16<br />
| style="background:#954D01; color:#FFFFFF" align="center" | 17<br />
| style="background:#616F00; color:#FFFFFF" align="center" | 18<br />
| style="background:#1F8B00; color:#FFFFFF" align="center" | 19<br />
| style="background:#01980C; color:#FFFFFF" align="center" | 1A<br />
| style="background:#00934B; color:#FFFFFF" align="center" | 1B<br />
| style="background:#00819B; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#63B4FF; color:#000000" align="center" | 21<br />
| style="background:#9B91FF; color:#000000" align="center" | 22<br />
| style="background:#D377FF; color:#000000" align="center" | 23<br />
| style="background:#EF6AFF; color:#000000" align="center" | 24<br />
| style="background:#F968C0; color:#000000" align="center" | 25<br />
| style="background:#F97D6C; color:#000000" align="center" | 26<br />
| style="background:#ED9B2D; color:#000000" align="center" | 27<br />
| style="background:#BDBD16; color:#000000" align="center" | 28<br />
| style="background:#7CDA1C; color:#000000" align="center" | 29<br />
| style="background:#4BE847; color:#000000" align="center" | 2A<br />
| style="background:#35E591; color:#000000" align="center" | 2B<br />
| style="background:#3FD9DD; color:#000000" align="center" | 2C<br />
| style="background:#606060; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#ACE7FF; color:#000000" align="center" | 31<br />
| style="background:#D5CDFF; color:#000000" align="center" | 32<br />
| style="background:#EDBAFF; color:#000000" align="center" | 33<br />
| style="background:#F8B0FF; color:#000000" align="center" | 34<br />
| style="background:#FEB0EC; color:#000000" align="center" | 35<br />
| style="background:#FDBDB5; color:#000000" align="center" | 36<br />
| style="background:#F9D28E; color:#000000" align="center" | 37<br />
| style="background:#E8EB7C; color:#000000" align="center" | 38<br />
| style="background:#BBF382; color:#000000" align="center" | 39<br />
| style="background:#99F7A2; color:#000000" align="center" | 3A<br />
| style="background:#8AF5D0; color:#000000" align="center" | 3B<br />
| style="background:#92F4F1; color:#000000" align="center" | 3C<br />
| style="background:#BEBEBE; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
|<br />
{| cellpadding="10" cellspacing="0"<br />
|+Wii VC<br />
|-<br />
| style="background:#494949; color:#FFFFFF" align="center" | 00<br />
| style="background:#00006A; color:#FFFFFF" align="center" | 01<br />
| style="background:#090063; color:#FFFFFF" align="center" | 02<br />
| style="background:#290059; color:#FFFFFF" align="center" | 03<br />
| style="background:#42004A; color:#FFFFFF" align="center" | 04<br />
| style="background:#490000; color:#FFFFFF" align="center" | 05<br />
| style="background:#420000; color:#FFFFFF" align="center" | 06<br />
| style="background:#291100; color:#FFFFFF" align="center" | 07<br />
| style="background:#182700; color:#FFFFFF" align="center" | 08<br />
| style="background:#003010; color:#FFFFFF" align="center" | 09<br />
| style="background:#003000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#002910; color:#FFFFFF" align="center" | 0B<br />
| style="background:#012043; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#747174; color:#FFFFFF" align="center" | 10<br />
| style="background:#003084; color:#FFFFFF" align="center" | 11<br />
| style="background:#3101AC; color:#FFFFFF" align="center" | 12<br />
| style="background:#4B0194; color:#FFFFFF" align="center" | 13<br />
| style="background:#64007B; color:#FFFFFF" align="center" | 14<br />
| style="background:#6B0039; color:#FFFFFF" align="center" | 15<br />
| style="background:#6B2101; color:#FFFFFF" align="center" | 16<br />
| style="background:#5A2F00; color:#FFFFFF" align="center" | 17<br />
| style="background:#424900; color:#FFFFFF" align="center" | 18<br />
| style="background:#185901; color:#FFFFFF" align="center" | 19<br />
| style="background:#105901; color:#FFFFFF" align="center" | 1A<br />
| style="background:#015932; color:#FFFFFF" align="center" | 1B<br />
| style="background:#01495A; color:#FFFFFF" align="center" | 1C<br />
| style="background:#101010; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#ADADAD; color:#000000" align="center" | 20<br />
| style="background:#4A71B6; color:#000000" align="center" | 21<br />
| style="background:#6458D5; color:#000000" align="center" | 22<br />
| style="background:#8450E6; color:#000000" align="center" | 23<br />
| style="background:#A451AD; color:#000000" align="center" | 24<br />
| style="background:#AD4984; color:#000000" align="center" | 25<br />
| style="background:#B5624A; color:#000000" align="center" | 26<br />
| style="background:#947132; color:#000000" align="center" | 27<br />
| style="background:#7B722A; color:#000000" align="center" | 28<br />
| style="background:#5A8601; color:#000000" align="center" | 29<br />
| style="background:#388E31; color:#000000" align="center" | 2A<br />
| style="background:#318E5A; color:#000000" align="center" | 2B<br />
| style="background:#398E8D; color:#000000" align="center" | 2C<br />
| style="background:#383838; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#B6B6B6; color:#000000" align="center" | 30<br />
| style="background:#8C9DB5; color:#000000" align="center" | 31<br />
| style="background:#8D8EAE; color:#000000" align="center" | 32<br />
| style="background:#9C8EBC; color:#000000" align="center" | 33<br />
| style="background:#A687BC; color:#000000" align="center" | 34<br />
| style="background:#AD8D9D; color:#000000" align="center" | 35<br />
| style="background:#AE968C; color:#000000" align="center" | 36<br />
| style="background:#9C8F7C; color:#000000" align="center" | 37<br />
| style="background:#9C9E72; color:#000000" align="center" | 38<br />
| style="background:#94A67C; color:#000000" align="center" | 39<br />
| style="background:#84A77B; color:#000000" align="center" | 3A<br />
| style="background:#7C9D84; color:#000000" align="center" | 3B<br />
| style="background:#73968D; color:#000000" align="center" | 3C<br />
| style="background:#DEDEDE; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Wii VC Normalized<br />
|-<br />
| style="background:#636363; color:#FFFFFF" align="center" | 00<br />
| style="background:#00008F; color:#FFFFFF" align="center" | 01<br />
| style="background:#0C0086; color:#FFFFFF" align="center" | 02<br />
| style="background:#370078; color:#FFFFFF" align="center" | 03<br />
| style="background:#590064; color:#FFFFFF" align="center" | 04<br />
| style="background:#630000; color:#FFFFFF" align="center" | 05<br />
| style="background:#590000; color:#FFFFFF" align="center" | 06<br />
| style="background:#371700; color:#FFFFFF" align="center" | 07<br />
| style="background:#203400; color:#FFFFFF" align="center" | 08<br />
| style="background:#004115; color:#FFFFFF" align="center" | 09<br />
| style="background:#004100; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003715; color:#FFFFFF" align="center" | 0B<br />
| style="background:#012B5A; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#9D999D; color:#000000" align="center" | 10<br />
| style="background:#0041B3; color:#FFFFFF" align="center" | 11<br />
| style="background:#4201E9; color:#FFFFFF" align="center" | 12<br />
| style="background:#6501C8; color:#FFFFFF" align="center" | 13<br />
| style="background:#8700A6; color:#FFFFFF" align="center" | 14<br />
| style="background:#91004D; color:#FFFFFF" align="center" | 15<br />
| style="background:#912C01; color:#FFFFFF" align="center" | 16<br />
| style="background:#7A3F00; color:#FFFFFF" align="center" | 17<br />
| style="background:#596300; color:#FFFFFF" align="center" | 18<br />
| style="background:#207801; color:#FFFFFF" align="center" | 19<br />
| style="background:#157801; color:#FFFFFF" align="center" | 1A<br />
| style="background:#017843; color:#FFFFFF" align="center" | 1B<br />
| style="background:#01637A; color:#FFFFFF" align="center" | 1C<br />
| style="background:#151515; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#EAEAEA; color:#000000" align="center" | 20<br />
| style="background:#6499F6; color:#000000" align="center" | 21<br />
| style="background:#8777FF; color:#000000" align="center" | 22<br />
| style="background:#B36CFF; color:#000000" align="center" | 23<br />
| style="background:#DE6DEA; color:#000000" align="center" | 24<br />
| style="background:#EA63B3; color:#000000" align="center" | 25<br />
| style="background:#F58464; color:#000000" align="center" | 26<br />
| style="background:#C89943; color:#000000" align="center" | 27<br />
| style="background:#A69A38; color:#FFFFFF" align="center" | 28<br />
| style="background:#7AB501; color:#FFFFFF" align="center" | 29<br />
| style="background:#4BC042; color:#FFFFFF" align="center" | 2A<br />
| style="background:#42C07A; color:#FFFFFF" align="center" | 2B<br />
| style="background:#4DC0BF; color:#000000" align="center" | 2C<br />
| style="background:#4B4B4B; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#F6F6F6; color:#000000" align="center" | 30<br />
| style="background:#BDD4F5; color:#000000" align="center" | 31<br />
| style="background:#BFC0EC; color:#000000" align="center" | 32<br />
| style="background:#D3C0FF; color:#000000" align="center" | 33<br />
| style="background:#E1B7FF; color:#000000" align="center" | 34<br />
| style="background:#EABFD4; color:#000000" align="center" | 35<br />
| style="background:#ECCBBD; color:#000000" align="center" | 36<br />
| style="background:#D3C1A8; color:#000000" align="center" | 37<br />
| style="background:#D3D69A; color:#000000" align="center" | 38<br />
| style="background:#C8E1A8; color:#000000" align="center" | 39<br />
| style="background:#B3E2A6; color:#000000" align="center" | 3A<br />
| style="background:#A8D4B3; color:#000000" align="center" | 3B<br />
| style="background:#9BCBBF; color:#000000" align="center" | 3C<br />
| style="background:#FFFFFF; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+3DS VC<br />
|-<br />
| style="background:#737373; color:#FFFFFF" align="center" | 00<br />
| style="background:#21188C; color:#FFFFFF" align="center" | 01<br />
| style="background:#0000AD; color:#FFFFFF" align="center" | 02<br />
| style="background:#42009C; color:#FFFFFF" align="center" | 03<br />
| style="background:#8C0073; color:#FFFFFF" align="center" | 04<br />
| style="background:#AD0010; color:#FFFFFF" align="center" | 05<br />
| style="background:#A50000; color:#FFFFFF" align="center" | 06<br />
| style="background:#7B0800; color:#FFFFFF" align="center" | 07<br />
| style="background:#422900; color:#FFFFFF" align="center" | 08<br />
| style="background:#004200; color:#FFFFFF" align="center" | 09<br />
| style="background:#005200; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003910; color:#FFFFFF" align="center" | 0B<br />
| style="background:#18395A; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#BDBDBD; color:#FFFFFF" align="center" | 10<br />
| style="background:#0073EF; color:#FFFFFF" align="center" | 11<br />
| style="background:#2139EF; color:#FFFFFF" align="center" | 12<br />
| style="background:#8400F7; color:#FFFFFF" align="center" | 13<br />
| style="background:#BD00BD; color:#FFFFFF" align="center" | 14<br />
| style="background:#E7005A; color:#FFFFFF" align="center" | 15<br />
| style="background:#DE2900; color:#FFFFFF" align="center" | 16<br />
| style="background:#CE4A08; color:#FFFFFF" align="center" | 17<br />
| style="background:#8C7300; color:#FFFFFF" align="center" | 18<br />
| style="background:#009400; color:#FFFFFF" align="center" | 19<br />
| style="background:#00AD00; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009439; color:#FFFFFF" align="center" | 1B<br />
| style="background:#00848C; color:#FFFFFF" align="center" | 1C<br />
| style="background:#101010; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#39BDFF; color:#000000" align="center" | 21<br />
| style="background:#5A94FF; color:#000000" align="center" | 22<br />
| style="background:#A58CFF; color:#000000" align="center" | 23<br />
| style="background:#F77BFF; color:#000000" align="center" | 24<br />
| style="background:#FF73B5; color:#000000" align="center" | 25<br />
| style="background:#FF7363; color:#000000" align="center" | 26<br />
| style="background:#FF9C39; color:#000000" align="center" | 27<br />
| style="background:#F7BD39; color:#000000" align="center" | 28<br />
| style="background:#84D610; color:#000000" align="center" | 29<br />
| style="background:#4ADE4A; color:#000000" align="center" | 2A<br />
| style="background:#5AFF9C; color:#000000" align="center" | 2B<br />
| style="background:#00EFDE; color:#000000" align="center" | 2C<br />
| style="background:#393939; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#ADE7FF; color:#000000" align="center" | 31<br />
| style="background:#C6D6FF; color:#000000" align="center" | 32<br />
| style="background:#D6CEFF; color:#000000" align="center" | 33<br />
| style="background:#FFC6FF; color:#000000" align="center" | 34<br />
| style="background:#FFC6DE; color:#000000" align="center" | 35<br />
| style="background:#FFBDB5; color:#000000" align="center" | 36<br />
| style="background:#FFDEAD; color:#000000" align="center" | 37<br />
| style="background:#FFE7A5; color:#000000" align="center" | 38<br />
| style="background:#E7FFA5; color:#000000" align="center" | 39<br />
| style="background:#ADF7BD; color:#000000" align="center" | 3A<br />
| style="background:#B5FFCE; color:#000000" align="center" | 3B<br />
| style="background:#9CFFF7; color:#000000" align="center" | 3C<br />
| style="background:#8C8C8C; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+NES Classic Edition<br />
|-<br />
| style="background:#606060; color:#FFFFFF" align="center" | 00<br />
| style="background:#000088; color:#FFFFFF" align="center" | 01<br />
| style="background:#200C98; color:#FFFFFF" align="center" | 02<br />
| style="background:#381478; color:#FFFFFF" align="center" | 03<br />
| style="background:#541460; color:#FFFFFF" align="center" | 04<br />
| style="background:#5C0010; color:#FFFFFF" align="center" | 05<br />
| style="background:#541000; color:#FFFFFF" align="center" | 06<br />
| style="background:#3C2408; color:#FFFFFF" align="center" | 07<br />
| style="background:#20340C; color:#FFFFFF" align="center" | 08<br />
| style="background:#0C400C; color:#FFFFFF" align="center" | 09<br />
| style="background:#184418; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003C20; color:#FFFFFF" align="center" | 0B<br />
| style="background:#003058; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#A8A8A8; color:#FFFFFF" align="center" | 10<br />
| style="background:#0C4CC4; color:#FFFFFF" align="center" | 11<br />
| style="background:#4C24E0; color:#FFFFFF" align="center" | 12<br />
| style="background:#6814D0; color:#FFFFFF" align="center" | 13<br />
| style="background:#9014AC; color:#FFFFFF" align="center" | 14<br />
| style="background:#9C1C48; color:#FFFFFF" align="center" | 15<br />
| style="background:#903404; color:#FFFFFF" align="center" | 16<br />
| style="background:#745004; color:#FFFFFF" align="center" | 17<br />
| style="background:#5C6814; color:#FFFFFF" align="center" | 18<br />
| style="background:#187C10; color:#FFFFFF" align="center" | 19<br />
| style="background:#148008; color:#FFFFFF" align="center" | 1A<br />
| style="background:#107448; color:#FFFFFF" align="center" | 1B<br />
| style="background:#1C6490; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FCFCFC; color:#000000" align="center" | 20<br />
| style="background:#6498FC; color:#000000" align="center" | 21<br />
| style="background:#887CFC; color:#000000" align="center" | 22<br />
| style="background:#B068FC; color:#000000" align="center" | 23<br />
| style="background:#DC6CF4; color:#000000" align="center" | 24<br />
| style="background:#E870AC; color:#000000" align="center" | 25<br />
| style="background:#E48858; color:#000000" align="center" | 26<br />
| style="background:#CC9C20; color:#000000" align="center" | 27<br />
| style="background:#A8B000; color:#000000" align="center" | 28<br />
| style="background:#74C000; color:#000000" align="center" | 29<br />
| style="background:#5CCC50; color:#000000" align="center" | 2A<br />
| style="background:#34C090; color:#000000" align="center" | 2B<br />
| style="background:#50C0CC; color:#000000" align="center" | 2C<br />
| style="background:#404040; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FCFCFC; color:#000000" align="center" | 30<br />
| style="background:#BCD4FC; color:#000000" align="center" | 31<br />
| style="background:#CCCCFC; color:#000000" align="center" | 32<br />
| style="background:#D8C4FC; color:#000000" align="center" | 33<br />
| style="background:#ECC0FC; color:#000000" align="center" | 34<br />
| style="background:#F8C4E8; color:#000000" align="center" | 35<br />
| style="background:#F8CCC4; color:#000000" align="center" | 36<br />
| style="background:#E4CCA8; color:#000000" align="center" | 37<br />
| style="background:#D8DC9C; color:#000000" align="center" | 38<br />
| style="background:#C8E4A0; color:#000000" align="center" | 39<br />
| style="background:#C0E4B8; color:#000000" align="center" | 3A<br />
| style="background:#B4ECC8; color:#000000" align="center" | 3B<br />
| style="background:#B8E4EC; color:#000000" align="center" | 3C<br />
| style="background:#BABABA; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+NES Remix U<br />
|-<br />
| style="background:#6E6E6E; color:#FFFFFF" align="center" | 00<br />
| style="background:#2A159C; color:#FFFFFF" align="center" | 01<br />
| style="background:#2A0EAB; color:#FFFFFF" align="center" | 02<br />
| style="background:#5C1C95; color:#FFFFFF" align="center" | 03<br />
| style="background:#8E2372; color:#FFFFFF" align="center" | 04<br />
| style="background:#9C1C31; color:#FFFFFF" align="center" | 05<br />
| style="background:#95310E; color:#FFFFFF" align="center" | 06<br />
| style="background:#724007; color:#FFFFFF" align="center" | 07<br />
| style="background:#475507; color:#FFFFFF" align="center" | 08<br />
| style="background:#39630E; color:#FFFFFF" align="center" | 09<br />
| style="background:#3B650D; color:#FFFFFF" align="center" | 0A<br />
| style="background:#315C40; color:#FFFFFF" align="center" | 0B<br />
| style="background:#314E72; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#A2A2A2; color:#FFFFFF" align="center" | 10<br />
| style="background:#3955D5; color:#FFFFFF" align="center" | 11<br />
| style="background:#3131DC; color:#FFFFFF" align="center" | 12<br />
| style="background:#7931CE; color:#FFFFFF" align="center" | 13<br />
| style="background:#B931A3; color:#FFFFFF" align="center" | 14<br />
| style="background:#C03155; color:#FFFFFF" align="center" | 15<br />
| style="background:#C04600; color:#FFFFFF" align="center" | 16<br />
| style="background:#A35C00; color:#FFFFFF" align="center" | 17<br />
| style="background:#797900; color:#FFFFFF" align="center" | 18<br />
| style="background:#478E00; color:#FFFFFF" align="center" | 19<br />
| style="background:#40950E; color:#FFFFFF" align="center" | 1A<br />
| style="background:#408E5C; color:#FFFFFF" align="center" | 1B<br />
| style="background:#317995; color:#FFFFFF" align="center" | 1C<br />
| style="background:#6E6E6E; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#DCDCDC; color:#000000" align="center" | 20<br />
| style="background:#5C8EDC; color:#000000" align="center" | 21<br />
| style="background:#4772DC; color:#000000" align="center" | 22<br />
| style="background:#8E63DC; color:#000000" align="center" | 23<br />
| style="background:#CE55DC; color:#000000" align="center" | 24<br />
| style="background:#DC5595; color:#000000" align="center" | 25<br />
| style="background:#DC6A31; color:#000000" align="center" | 26<br />
| style="background:#DC8E07; color:#000000" align="center" | 27<br />
| style="background:#C7B21C; color:#000000" align="center" | 28<br />
| style="background:#8AC707; color:#000000" align="center" | 29<br />
| style="background:#63CE39; color:#000000" align="center" | 2A<br />
| style="background:#5CC780; color:#000000" align="center" | 2B<br />
| style="background:#55B2B9; color:#000000" align="center" | 2C<br />
| style="background:#A2A2A2; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#DCDCDC; color:#000000" align="center" | 30<br />
| style="background:#87B9DC; color:#000000" align="center" | 31<br />
| style="background:#8EA3DC; color:#000000" align="center" | 32<br />
| style="background:#AB9CDC; color:#000000" align="center" | 33<br />
| style="background:#C79CDC; color:#000000" align="center" | 34<br />
| style="background:#DC9CC7; color:#000000" align="center" | 35<br />
| style="background:#DCAB9C; color:#000000" align="center" | 36<br />
| style="background:#DCC087; color:#000000" align="center" | 37<br />
| style="background:#DCCE79; color:#000000" align="center" | 38<br />
| style="background:#B2D572; color:#000000" align="center" | 39<br />
| style="background:#8ED58E; color:#000000" align="center" | 3A<br />
| style="background:#8EDCB2; color:#000000" align="center" | 3B<br />
| style="background:#8EDCCE; color:#000000" align="center" | 3C<br />
| style="background:#DCDCDC; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Rockman 9<br />
|-<br />
| style="background:#707070; color:#FFFFFF" align="center" | 00<br />
| style="background:#0000A8; color:#FFFFFF" align="center" | 01<br />
| style="background:#201888; color:#FFFFFF" align="center" | 02<br />
| style="background:#400098; color:#FFFFFF" align="center" | 03<br />
| style="background:#880070; color:#FFFFFF" align="center" | 04<br />
| style="background:#A80010; color:#FFFFFF" align="center" | 05<br />
| style="background:#A00000; color:#FFFFFF" align="center" | 06<br />
| style="background:#780800; color:#FFFFFF" align="center" | 07<br />
| style="background:#402800; color:#FFFFFF" align="center" | 08<br />
| style="background:#004000; color:#FFFFFF" align="center" | 09<br />
| style="background:#005000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003810; color:#FFFFFF" align="center" | 0B<br />
| style="background:#183858; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#B8B8B8; color:#FFFFFF" align="center" | 10<br />
| style="background:#0070E8; color:#FFFFFF" align="center" | 11<br />
| style="background:#2038E8; color:#FFFFFF" align="center" | 12<br />
| style="background:#8000F0; color:#FFFFFF" align="center" | 13<br />
| style="background:#B800B8; color:#FFFFFF" align="center" | 14<br />
| style="background:#E00058; color:#FFFFFF" align="center" | 15<br />
| style="background:#D82800; color:#FFFFFF" align="center" | 16<br />
| style="background:#C84808; color:#FFFFFF" align="center" | 17<br />
| style="background:#887000; color:#FFFFFF" align="center" | 18<br />
| style="background:#009000; color:#FFFFFF" align="center" | 19<br />
| style="background:#00A800; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009038; color:#FFFFFF" align="center" | 1B<br />
| style="background:#008088; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#F8F8F8; color:#000000" align="center" | 20<br />
| style="background:#38B8F8; color:#000000" align="center" | 21<br />
| style="background:#5890F8; color:#000000" align="center" | 22<br />
| style="background:#A088F8; color:#000000" align="center" | 23<br />
| style="background:#F078F8; color:#000000" align="center" | 24<br />
| style="background:#F870B0; color:#000000" align="center" | 25<br />
| style="background:#F87060; color:#000000" align="center" | 26<br />
| style="background:#F89838; color:#000000" align="center" | 27<br />
| style="background:#F0B838; color:#000000" align="center" | 28<br />
| style="background:#80D010; color:#000000" align="center" | 29<br />
| style="background:#48D848; color:#000000" align="center" | 2A<br />
| style="background:#58F898; color:#000000" align="center" | 2B<br />
| style="background:#00E8D8; color:#000000" align="center" | 2C<br />
| style="background:#505050; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#F8F8F8; color:#000000" align="center" | 30<br />
| style="background:#A8E0F8; color:#000000" align="center" | 31<br />
| style="background:#C0D0F8; color:#000000" align="center" | 32<br />
| style="background:#D0C8F8; color:#000000" align="center" | 33<br />
| style="background:#F8C0F8; color:#000000" align="center" | 34<br />
| style="background:#F8C0D8; color:#000000" align="center" | 35<br />
| style="background:#F8B8B0; color:#000000" align="center" | 36<br />
| style="background:#F8D8A8; color:#000000" align="center" | 37<br />
| style="background:#F8E0A0; color:#000000" align="center" | 38<br />
| style="background:#E0F8A0; color:#000000" align="center" | 39<br />
| style="background:#A8F0B8; color:#000000" align="center" | 3A<br />
| style="background:#B0F8C8; color:#000000" align="center" | 3B<br />
| style="background:#98F8F0; color:#000000" align="center" | 3C<br />
| style="background:#989898; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Rockman 9 - 21 to 2C<br />
|-<br />
| style="background:#707070; color:#FFFFFF" align="center" | 00<br />
| style="background:#0000A8; color:#FFFFFF" align="center" | 01<br />
| style="background:#201888; color:#FFFFFF" align="center" | 02<br />
| style="background:#400098; color:#FFFFFF" align="center" | 03<br />
| style="background:#880070; color:#FFFFFF" align="center" | 04<br />
| style="background:#A80010; color:#FFFFFF" align="center" | 05<br />
| style="background:#A00000; color:#FFFFFF" align="center" | 06<br />
| style="background:#780800; color:#FFFFFF" align="center" | 07<br />
| style="background:#402800; color:#FFFFFF" align="center" | 08<br />
| style="background:#004000; color:#FFFFFF" align="center" | 09<br />
| style="background:#005000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003810; color:#FFFFFF" align="center" | 0B<br />
| style="background:#183858; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#B8B8B8; color:#FFFFFF" align="center" | 10<br />
| style="background:#0070E8; color:#FFFFFF" align="center" | 11<br />
| style="background:#2038E8; color:#FFFFFF" align="center" | 12<br />
| style="background:#8000F0; color:#FFFFFF" align="center" | 13<br />
| style="background:#B800B8; color:#FFFFFF" align="center" | 14<br />
| style="background:#E00058; color:#FFFFFF" align="center" | 15<br />
| style="background:#D82800; color:#FFFFFF" align="center" | 16<br />
| style="background:#C84808; color:#FFFFFF" align="center" | 17<br />
| style="background:#887000; color:#FFFFFF" align="center" | 18<br />
| style="background:#009000; color:#FFFFFF" align="center" | 19<br />
| style="background:#00A800; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009038; color:#FFFFFF" align="center" | 1B<br />
| style="background:#008088; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#F8F8F8; color:#000000" align="center" | 20<br />
| style="background:#38B8F8; color:#000000" align="center" | 21<br />
| style="background:#5890F8; color:#000000" align="center" | 22<br />
| style="background:#A088F8; color:#000000" align="center" | 23<br />
| style="background:#F078F8; color:#000000" align="center" | 24<br />
| style="background:#F870B0; color:#000000" align="center" | 25<br />
| style="background:#F87060; color:#000000" align="center" | 26<br />
| style="background:#F89838; color:#000000" align="center" | 27<br />
| style="background:#F0B838; color:#000000" align="center" | 28<br />
| style="background:#80D010; color:#000000" align="center" | 29<br />
| style="background:#48D848; color:#000000" align="center" | 2A<br />
| style="background:#58F898; color:#000000" align="center" | 2B<br />
| style="background:#38B8F8; color:#000000" align="center" | 2C<br />
| style="background:#505050; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#F8F8F8; color:#000000" align="center" | 30<br />
| style="background:#A8E0F8; color:#000000" align="center" | 31<br />
| style="background:#C0D0F8; color:#000000" align="center" | 32<br />
| style="background:#D0C8F8; color:#000000" align="center" | 33<br />
| style="background:#F8C0F8; color:#000000" align="center" | 34<br />
| style="background:#F8C0D8; color:#000000" align="center" | 35<br />
| style="background:#F8B8B0; color:#000000" align="center" | 36<br />
| style="background:#F8D8A8; color:#000000" align="center" | 37<br />
| style="background:#F8E0A0; color:#000000" align="center" | 38<br />
| style="background:#E0F8A0; color:#000000" align="center" | 39<br />
| style="background:#A8F0B8; color:#000000" align="center" | 3A<br />
| style="background:#B0F8C8; color:#000000" align="center" | 3B<br />
| style="background:#98F8F0; color:#000000" align="center" | 3C<br />
| style="background:#989898; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+ASQ Reality B<br />
|-<br />
| style="background:#6C6C6C; color:#FFFFFF" align="center" | 00<br />
| style="background:#002094; color:#FFFFFF" align="center" | 01<br />
| style="background:#0000A8; color:#FFFFFF" align="center" | 02<br />
| style="background:#3C0098; color:#FFFFFF" align="center" | 03<br />
| style="background:#700070; color:#FFFFFF" align="center" | 04<br />
| style="background:#7C003C; color:#FFFFFF" align="center" | 05<br />
| style="background:#700000; color:#FFFFFF" align="center" | 06<br />
| style="background:#681000; color:#FFFFFF" align="center" | 07<br />
| style="background:#461A00; color:#FFFFFF" align="center" | 08<br />
| style="background:#3C2C00; color:#FFFFFF" align="center" | 09<br />
| style="background:#005000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003C4C; color:#FFFFFF" align="center" | 0B<br />
| style="background:#003A66; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#101010; color:#FFFFFF" align="center" | 0E<br />
| style="background:#101010; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#BABABA; color:#FFFFFF" align="center" | 10<br />
| style="background:#2A58D6; color:#FFFFFF" align="center" | 11<br />
| style="background:#3C32FF; color:#FFFFFF" align="center" | 12<br />
| style="background:#8020F0; color:#FFFFFF" align="center" | 13<br />
| style="background:#C000C0; color:#FFFFFF" align="center" | 14<br />
| style="background:#D01474; color:#FFFFFF" align="center" | 15<br />
| style="background:#D21A24; color:#FFFFFF" align="center" | 16<br />
| style="background:#A63C1E; color:#FFFFFF" align="center" | 17<br />
| style="background:#7E5200; color:#FFFFFF" align="center" | 18<br />
| style="background:#586400; color:#FFFFFF" align="center" | 19<br />
| style="background:#008800; color:#FFFFFF" align="center" | 1A<br />
| style="background:#007468; color:#FFFFFF" align="center" | 1B<br />
| style="background:#00729E; color:#FFFFFF" align="center" | 1C<br />
| style="background:#101010; color:#FFFFFF" align="center" | 1D<br />
| style="background:#101010; color:#FFFFFF" align="center" | 1E<br />
| style="background:#101010; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#5EA0FF; color:#000000" align="center" | 21<br />
| style="background:#8C82FF; color:#000000" align="center" | 22<br />
| style="background:#C470FF; color:#000000" align="center" | 23<br />
| style="background:#FF5CFF; color:#000000" align="center" | 24<br />
| style="background:#FF68BC; color:#000000" align="center" | 25<br />
| style="background:#FF727C; color:#000000" align="center" | 26<br />
| style="background:#FC964A; color:#000000" align="center" | 27<br />
| style="background:#D9AD00; color:#000000" align="center" | 28<br />
| style="background:#98C62E; color:#000000" align="center" | 29<br />
| style="background:#4ED44E; color:#000000" align="center" | 2A<br />
| style="background:#3AC89A; color:#000000" align="center" | 2B<br />
| style="background:#2EBEDC; color:#000000" align="center" | 2C<br />
| style="background:#585858; color:#FFFFFF" align="center" | 2D<br />
| style="background:#101010; color:#FFFFFF" align="center" | 2E<br />
| style="background:#101010; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#C6D8FF; color:#000000" align="center" | 31<br />
| style="background:#D4CAFF; color:#000000" align="center" | 32<br />
| style="background:#F0C4FF; color:#000000" align="center" | 33<br />
| style="background:#FFBCFF; color:#000000" align="center" | 34<br />
| style="background:#FFC4F0; color:#000000" align="center" | 35<br />
| style="background:#FFCAD4; color:#000000" align="center" | 36<br />
| style="background:#FFD8BE; color:#000000" align="center" | 37<br />
| style="background:#FFE6A6; color:#000000" align="center" | 38<br />
| style="background:#EAECB2; color:#000000" align="center" | 39<br />
| style="background:#C6F4C6; color:#000000" align="center" | 3A<br />
| style="background:#BAECEA; color:#000000" align="center" | 3B<br />
| style="background:#B6E6FF; color:#000000" align="center" | 3C<br />
| style="background:#C2C2C2; color:#000000" align="center" | 3D<br />
| style="background:#101010; color:#FFFFFF" align="center" | 3E<br />
| style="background:#101010; color:#FFFFFF" align="center" | 3F<br />
|}<br />
|}<br />
<br />
==Gallery==<br />
[[File:5NUrm6U-1-.png|thumb|left|1000px|Comparison of various palettes in Stage 2 of Castelvania]]<br />
{{clr}}<br />
<br />
==External Links==<br />
*[http://bisqwit.iki.fi/utils/nespalette.php Bisqwit's NTSC NES palette generator]<br />
*[http://drag.wootest.net/misc/palgen.html Drag's NTSC NES palette generator]<br />
<br />
==References==<br />
{{reflist|2}}<br />
<br />
[[Category:FAQs]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Famicom_color_palette&diff=14672Famicom color palette2017-04-22T02:20:42Z<p>Monroe88: Add references to the new decoding shaders</p>
<hr />
<div>Unlike consoles like the SNES, which natively generate the image in pure RGB, the Famicom normally generates and outputs an encoded NTSC video signal, which must then be decoded by the TV's built-in NTSC decoder. This means the resulting color palette often varies depending on the display's decoder. This is why NES games appear to have different colors on different TV sets.<br />
<br />
NES emulators are similarly afflicted by this issue, as they each have their own algorithms for generating the NES color palette, meaning they all have slightly to wildly varying palettes. As such, there isn't really a "true" NES color palette, and which emulator has the "best" palette often comes down to preference, or whichever looks closest to how the real console looks on a user's own particular TV. FCEU based emulators come with a load of different preset palettes based on different people's perceptions of the NES colors, while emulators such as Nestopia have the ability for the user to edit the color palette to their liking, including the use of custom palettes that define the NES palette in any way the user wishes. <br />
<br />
Some arcade machines based on the NES hardware, such as the PlayChoice-10 and the Versus series of cabinets, did generate a native RGB signal, however. The colors on these cabinets tend to be very vibrant and saturated, giving games a very distinct look compared to how they would look on the real console. Nestopia gives the user the choice to use the RGB palette featured in these cabinets, though it is not usually considered to be the definitive or "real" NES palette.<br />
<br />
The [[libretro]] ports of Nestopia<ref name="nestopia_raw">https://github.com/rdanbrook/nestopia/commit/9d58851a22eb3baeee7b4fe28ae8ffaac7eaa599</ref> and FCEUmm<ref name="fceumm_raw">https://github.com/libretro/libretro-fceumm/commit/d370e2d37f9baa26e546e3542104ed04e1bf8965</ref> have the option to output the raw chroma, level, and emphasis from the PPU through the RGB color channels. This by itself produces an image with completely bizarre colors, but this can be decoded by [[shaders]] to generate actual colors, the main examples being GTU-Famicom<ref name="gtu_famicom_cg">https://github.com/libretro/common-shaders/tree/master/crt/shaders/GTU-famicom</ref><ref name="gtu_famicom_slang">https://github.com/libretro/slang-shaders/tree/master/crt/shaders/gtu-famicom</ref> and nes-color-decoder<ref name="nes_color_decoder_cg">https://github.com/libretro/common-shaders/blob/master/misc/nes-color-decoder.cg</ref><ref name="nes_color_decoder_slang">https://github.com/libretro/slang-shaders/blob/master/misc/nes-color-decoder.slang</ref>.<br />
<br />
==Download==<br />
* [http://www33.zippyshare.com/v/vUM4FD4v/file.html Palettes download]<br />
<br />
==Chart==<br />
{| class="wikitable"<br />
|+ <br />
|-<br />
! scope="col"|Palette <br />
! scope="col"|Nestopia decoder preset<br />
! scope="col"|NESRGB palette name<br />
! scope="col"|Description<br />
|-<br />
|style="text-align:center;"|YUV<br />
|style="text-align:center;"|15° Canonical<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Based on the standard method of NTSC decoding.<br />
|-<br />
|style="text-align:center;"|RGB<br />
|style="text-align:center;"|RGB<br />
|style="text-align:center;"|Garish<br />
|style="text-align:center;"|The palette used by all official Nintendo RGB PPUs, such as in the PlayChoice-10 and Famicom Titler.<br />
|-<br />
|style="text-align:center;"|YUV (Sony CXA2025AS) <br />
|style="text-align:center;"|Consumer<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Based on an NTSC decoder found in Sony TVs.<br />
|-<br />
|style="text-align:center;"|YUV with yellow boost<br />
|style="text-align:center;"|Alternative<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Based on decoders in certain NTSC-J TVs.<ref>http://forums.nesdev.com/viewtopic.php?f=3&t=4241</ref> <br />
|-<br />
|style="text-align:center;"|Raw Chroma, Level, and Emphasis<br />
|style="text-align:center;"|Raw*<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|The raw chroma, level, and emphasis output of the NES PPU represented in RGB color channels<ref>https://github.com/libretro/nestopia/blob/c2244b8eec1a4f6bbebdd09ec6c4b1552b5610c0/libretro/libretro.cpp#L526</ref> Only available as an option on the [[libretro]] ports of Nestopia and FCEUmm<ref name="fceumm_raw"/><ref name="nestopia_raw" /><br />
|-<br />
|style="text-align:center;"|Nintendulator NTSC<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Natural<br />
|style="text-align:center;"|Based on what is currently understood about NTSC decoding<ref>http://wiki.nesdev.com/w/index.php/NTSC_video</ref><br />
|-<br />
|style="text-align:center;"|NTSC Hardware (FBX)<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A (Optionally available)<br />
|style="text-align:center;"|Analog RGB was fed into a calibrated Sony PVM monitor, and then meticulously aligned on each color entry to match as closely as possible to the NTSC feed from an original NES.<ref name="firebrandx">http://www.firebrandx.com/nespalette.html</ref><br />
|-<br />
|style="text-align:center;"|PVM Style D93 (FBX)<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A (Optionally available)<br />
|style="text-align:center;"|Approximates the color and intensity of a Sony PVM CRT screen.<ref name="firebrandx">http://www.firebrandx.com/nespalette.html</ref> <br />
|-<br />
|style="text-align:center;"|Composite Direct (FBX)<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A (Optionally available)<br />
|style="text-align:center;"|Direct capture of the composite output of the front-loader NTSC NES.<ref name="firebrandx"></ref> <br />
|-<br />
|style="text-align:center;"|NESCAP<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|This palette was created using direct NES composite capture through a Blackmagic Intensity Pro 4K through its composite input.<ref name="RGBSource">https://rgbsource.blogspot.com/search/label/NES%20Color%20Palette</ref> <br />
|-<br />
|style="text-align:center;"|HYBRID<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|This is a hybrid between the above NESCAP palette and the FCEUX palette.<ref name="RGBSource">https://rgbsource.blogspot.com/search/label/NES%20Color%20Palette</ref> <br />
|-<br />
|style="text-align:center;"|NESCLASSIC<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|This palette is derived from the NES Classic Mini by taking the average of each color (since the NES Classic Mini has a noise filter).<ref name="RGBSource">https://rgbsource.blogspot.com/search/label/NES%20Color%20Palette</ref> "NES Classic (FBX-FS)" is an independent capture of the palette.<ref name="firebrandx"/><br />
|-<br />
|style="text-align:center;"|NES Remix U<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|This palette is ripped from the Wii U [[wikipedia:NES_Remix_(series)|NES Remix]] games. The 3DS game (Ultimate NES Remix) uses the 3DS VC's palette.<br />
|-<br />
|style="text-align:center;"|FCEUX<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Improved<br />
|style="text-align:center;"|Palettes used in FCEUX emulator. 12 is the default, and similar to Rock Man 9. 13 and 15 feature less saturation.<ref name="FCEUX Help">http://www.fceux.com/web/help/fceux.html?PaletteOptions.html</ref><br />
|-<br />
|style="text-align:center;"|Rock Man 9<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Palettes derived from Rock Man 9.<ref name="ririka">https://sites.google.com/site/insectduel/ririka</ref> "21 to 2C" version is differs in that it darkens a single cyan value (2C).<ref name="ririka"></ref><br />
|-<br />
|style="text-align:center;"|Virtual Console <br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Palettes used in the [[Wii emulators|Wii]] and [[3DS]] [[Virtual Console]]. Wii version, all colors, are darkened significantly. 3DS feature high saturation and brightness. "Normalized" version adjusts brightness levels significantly.<br />
|-<br />
|style="text-align:center;"|BMF final<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Palettes created by BMF based on his television. 2 features a very darkened screen, similar to Wii VC. 3 is more saturated.<ref name="FCEUX Help"/><br />
|-<br />
|style="text-align:center;"|ASQ Reality<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|AspiringSquire's attempt at improving BMF palettes.<ref name="FCEUX Help"/> <br />
|-<br />
|style="text-align:center;"|Wavebeam<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Created to look good on crts. Similar to Consumer.<ref>https://wavebeam.blogspot.ca/2017/03/wavebeam-nes-palette.html</ref><br />
|-<br />
|-<br />
|style="text-align:center;"|FCC 1953<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|First color TV system, NTSC, introduced a color standard in 1953. NTSC colors were very lush.<ref name="Nerdlypleasures">http://nerdlypleasures.blogspot.ca/2016/10/video-potpourri-ii.html?m=1</ref> <br />
|-<br />
|}<br />
<br />
==Palettes==<br />
{|width="100%"<br />
|- valign="top"<br />
|<br />
{| cellpadding="10" cellspacing="0"<br />
|+YUV<br />
|-<br />
| style="background:#666666; color:#FFFFFF" align="center" | 00<br />
| style="background:#002A88; color:#FFFFFF" align="center" | 01<br />
| style="background:#1412A7; color:#FFFFFF" align="center" | 02<br />
| style="background:#3B00A4; color:#FFFFFF" align="center" | 03<br />
| style="background:#5C007E; color:#FFFFFF" align="center" | 04<br />
| style="background:#6E0040; color:#FFFFFF" align="center" | 05<br />
| style="background:#6C0700; color:#FFFFFF" align="center" | 06<br />
| style="background:#561D00; color:#FFFFFF" align="center" | 07<br />
| style="background:#333500; color:#FFFFFF" align="center" | 08<br />
| style="background:#0C4800; color:#FFFFFF" align="center" | 09<br />
| style="background:#005200; color:#FFFFFF" align="center" | 0A<br />
| style="background:#004F08; color:#FFFFFF" align="center" | 0B<br />
| style="background:#00404D; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#ADADAD; color:#FFFFFF" align="center" | 10<br />
| style="background:#155FD9; color:#FFFFFF" align="center" | 11<br />
| style="background:#4240FF; color:#FFFFFF" align="center" | 12<br />
| style="background:#7527FE; color:#FFFFFF" align="center" | 13<br />
| style="background:#A01ACC; color:#FFFFFF" align="center" | 14<br />
| style="background:#B71E7B; color:#FFFFFF" align="center" | 15<br />
| style="background:#B53120; color:#FFFFFF" align="center" | 16<br />
| style="background:#994E00; color:#FFFFFF" align="center" | 17<br />
| style="background:#6B6D00; color:#FFFFFF" align="center" | 18<br />
| style="background:#388700; color:#FFFFFF" align="center" | 19<br />
| style="background:#0D9300; color:#FFFFFF" align="center" | 1A<br />
| style="background:#008F32; color:#FFFFFF" align="center" | 1B<br />
| style="background:#007C8D; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#64B0FF; color:#000000" align="center" | 21<br />
| style="background:#9290FF; color:#000000" align="center" | 22<br />
| style="background:#C676FF; color:#000000" align="center" | 23<br />
| style="background:#F26AFF; color:#000000" align="center" | 24<br />
| style="background:#FF6ECC; color:#000000" align="center" | 25<br />
| style="background:#FF8170; color:#000000" align="center" | 26<br />
| style="background:#EA9E22; color:#000000" align="center" | 27<br />
| style="background:#BCBE00; color:#000000" align="center" | 28<br />
| style="background:#88D800; color:#000000" align="center" | 29<br />
| style="background:#5CE430; color:#000000" align="center" | 2A<br />
| style="background:#45E082; color:#000000" align="center" | 2B<br />
| style="background:#48CDDE; color:#000000" align="center" | 2C<br />
| style="background:#4F4F4F; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#C0DFFF; color:#000000" align="center" | 31<br />
| style="background:#D3D2FF; color:#000000" align="center" | 32<br />
| style="background:#E8C8FF; color:#000000" align="center" | 33<br />
| style="background:#FAC2FF; color:#000000" align="center" | 34<br />
| style="background:#FFC4EA; color:#000000" align="center" | 35<br />
| style="background:#FFCCC5; color:#000000" align="center" | 36<br />
| style="background:#F7D8A5; color:#000000" align="center" | 37<br />
| style="background:#E4E594; color:#000000" align="center" | 38<br />
| style="background:#CFEF96; color:#000000" align="center" | 39<br />
| style="background:#BDF4AB; color:#000000" align="center" | 3A<br />
| style="background:#B3F3CC; color:#000000" align="center" | 3B<br />
| style="background:#B5EBF2; color:#000000" align="center" | 3C<br />
| style="background:#B8B8B8; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+YUV-V3<br />
|-<br />
| style="background:#666666; color:#FFFFFF" align="center" | 00<br />
| style="background:#002a88; color:#FFFFFF" align="center" | 01<br />
| style="background:#1412a7; color:#FFFFFF" align="center" | 02<br />
| style="background:#3b00a4; color:#FFFFFF" align="center" | 03<br />
| style="background:#5c007e; color:#FFFFFF" align="center" | 04<br />
| style="background:#6e0040; color:#FFFFFF" align="center" | 05<br />
| style="background:#6c0700; color:#FFFFFF" align="center" | 06<br />
| style="background:#561d00; color:#FFFFFF" align="center" | 07<br />
| style="background:#333500; color:#FFFFFF" align="center" | 08<br />
| style="background:#0c4800; color:#FFFFFF" align="center" | 09<br />
| style="background:#005200; color:#FFFFFF" align="center" | 0A<br />
| style="background:#004c18; color:#FFFFFF" align="center" | 0B<br />
| style="background:#003e5b; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#adadad; color:#FFFFFF" align="center" | 10<br />
| style="background:#155fd9; color:#FFFFFF" align="center" | 11<br />
| style="background:#4240ff; color:#FFFFFF" align="center" | 12<br />
| style="background:#7527fe; color:#FFFFFF" align="center" | 13<br />
| style="background:#a01acc; color:#FFFFFF" align="center" | 14<br />
| style="background:#b71e7b; color:#FFFFFF" align="center" | 15<br />
| style="background:#b53120; color:#FFFFFF" align="center" | 16<br />
| style="background:#994e00; color:#FFFFFF" align="center" | 17<br />
| style="background:#6b6d00; color:#FFFFFF" align="center" | 18<br />
| style="background:#388700; color:#FFFFFF" align="center" | 19<br />
| style="background:#0d9300; color:#FFFFFF" align="center" | 1A<br />
| style="background:#008c47; color:#FFFFFF" align="center" | 1B<br />
| style="background:#007aa0; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#ffffff; color:#000000" align="center" | 20<br />
| style="background:#64b0ff; color:#000000" align="center" | 21<br />
| style="background:#9290ff; color:#000000" align="center" | 22<br />
| style="background:#c676ff; color:#000000" align="center" | 23<br />
| style="background:#f26aff; color:#000000" align="center" | 24<br />
| style="background:#ff6ecc; color:#000000" align="center" | 25<br />
| style="background:#ff8170; color:#000000" align="center" | 26<br />
| style="background:#ea9e22; color:#000000" align="center" | 27<br />
| style="background:#bcbe00; color:#000000" align="center" | 28<br />
| style="background:#88d800; color:#000000" align="center" | 29<br />
| style="background:#5ce430; color:#000000" align="center" | 2A<br />
| style="background:#45e082; color:#000000" align="center" | 2B<br />
| style="background:#48cdde; color:#000000" align="center" | 2C<br />
| style="background:#4f4f4f; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#ffffff; color:#000000" align="center" | 30<br />
| style="background:#c0dfff; color:#000000" align="center" | 31<br />
| style="background:#d3d2ff; color:#000000" align="center" | 32<br />
| style="background:#e8c8ff; color:#000000" align="center" | 33<br />
| style="background:#fac2ff; color:#000000" align="center" | 34<br />
| style="background:#ffc4ea; color:#000000" align="center" | 35<br />
| style="background:#ffccc5; color:#000000" align="center" | 36<br />
| style="background:#f7d8a5; color:#000000" align="center" | 37<br />
| style="background:#e4e594; color:#000000" align="center" | 38<br />
| style="background:#cfef96; color:#000000" align="center" | 39<br />
| style="background:#bdf4ab; color:#000000" align="center" | 3A<br />
| style="background:#b3f3cc; color:#000000" align="center" | 3B<br />
| style="background:#b5ebf2; color:#000000" align="center" | 3C<br />
| style="background:#b8b8b8; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
<!--{| cellpadding="10" cellspacing="0"<br />
|+Unsaturated-V5<br />
|-<br />
| style="background:#6B6B6B; color:#FFFFFF" align="center" | 00<br />
| style="background:#001E87; color:#FFFFFF" align="center" | 01<br />
| style="background:#1F0B96; color:#FFFFFF" align="center" | 02<br />
| style="background:#3B0C87; color:#FFFFFF" align="center" | 03<br />
| style="background:#590D61; color:#FFFFFF" align="center" | 04<br />
| style="background:#5E0528; color:#FFFFFF" align="center" | 05<br />
| style="background:#551100; color:#FFFFFF" align="center" | 06<br />
| style="background:#461B00; color:#FFFFFF" align="center" | 07<br />
| style="background:#303200; color:#FFFFFF" align="center" | 08<br />
| style="background:#0A4800; color:#FFFFFF" align="center" | 09<br />
| style="background:#004E00; color:#FFFFFF" align="center" | 0A<br />
| style="background:#004619; color:#FFFFFF" align="center" | 0B<br />
| style="background:#00395A; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#B2B2B2; color:#FFFFFF" align="center" | 10<br />
| style="background:#1A53D1; color:#FFFFFF" align="center" | 11<br />
| style="background:#4835EE; color:#FFFFFF" align="center" | 12<br />
| style="background:#7123EC; color:#FFFFFF" align="center" | 13<br />
| style="background:#9A1EB7; color:#FFFFFF" align="center" | 14<br />
| style="background:#A51E62; color:#FFFFFF" align="center" | 15<br />
| style="background:#A52D19; color:#FFFFFF" align="center" | 16<br />
| style="background:#874B00; color:#FFFFFF" align="center" | 17<br />
| style="background:#676900; color:#FFFFFF" align="center" | 18<br />
| style="background:#298400; color:#FFFFFF" align="center" | 19<br />
| style="background:#038B00; color:#FFFFFF" align="center" | 1A<br />
| style="background:#008240; color:#FFFFFF" align="center" | 1B<br />
| style="background:#007096; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#63ADFD; color:#000000" align="center" | 21<br />
| style="background:#908AFE; color:#000000" align="center" | 22<br />
| style="background:#B977FC; color:#000000" align="center" | 23<br />
| style="background:#E771FE; color:#000000" align="center" | 24<br />
| style="background:#F76FC9; color:#000000" align="center" | 25<br />
| style="background:#F5836A; color:#000000" align="center" | 26<br />
| style="background:#DD9C29; color:#000000" align="center" | 27<br />
| style="background:#BDB807; color:#000000" align="center" | 28<br />
| style="background:#84D107; color:#000000" align="center" | 29<br />
| style="background:#5BDC3B; color:#000000" align="center" | 2A<br />
| style="background:#48D77D; color:#000000" align="center" | 2B<br />
| style="background:#48C6D8; color:#000000" align="center" | 2C<br />
| style="background:#555555; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#C4E3FE; color:#000000" align="center" | 31<br />
| style="background:#D7D5FE; color:#000000" align="center" | 32<br />
| style="background:#E6CDFE; color:#000000" align="center" | 33<br />
| style="background:#F9CAFE; color:#000000" align="center" | 34<br />
| style="background:#FEC9F0; color:#000000" align="center" | 35<br />
| style="background:#FED1C7; color:#000000" align="center" | 36<br />
| style="background:#F7DCAC; color:#000000" align="center" | 37<br />
| style="background:#E8E89C; color:#000000" align="center" | 38<br />
| style="background:#D1F29D; color:#000000" align="center" | 39<br />
| style="background:#BFF4B1; color:#000000" align="center" | 3A<br />
| style="background:#B7F5CD; color:#000000" align="center" | 3B<br />
| style="background:#B7EBF2; color:#000000" align="center" | 3C<br />
| style="background:#BEBEBE; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}--><br />
{| cellpadding="10" cellspacing="0"<br />
|+Unsaturated-Final<br />
|-<br />
| style="background:#676767; color:#FFFFFF" align="center" | 00<br />
| style="background:#001F8E; color:#FFFFFF" align="center" | 01<br />
| style="background:#23069E; color:#FFFFFF" align="center" | 02<br />
| style="background:#40008E; color:#FFFFFF" align="center" | 03<br />
| style="background:#600067; color:#FFFFFF" align="center" | 04<br />
| style="background:#67001C; color:#FFFFFF" align="center" | 05<br />
| style="background:#5B1000; color:#FFFFFF" align="center" | 06<br />
| style="background:#432500; color:#FFFFFF" align="center" | 07<br />
| style="background:#313400; color:#FFFFFF" align="center" | 08<br />
| style="background:#074800; color:#FFFFFF" align="center" | 09<br />
| style="background:#004F00; color:#FFFFFF" align="center" | 0A<br />
| style="background:#004622; color:#FFFFFF" align="center" | 0B<br />
| style="background:#003A61; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#B3B3B3; color:#FFFFFF" align="center" | 10<br />
| style="background:#205ADF; color:#FFFFFF" align="center" | 11<br />
| style="background:#5138FB; color:#FFFFFF" align="center" | 12<br />
| style="background:#7A27EE; color:#FFFFFF" align="center" | 13<br />
| style="background:#A520C2; color:#FFFFFF" align="center" | 14<br />
| style="background:#B0226B; color:#FFFFFF" align="center" | 15<br />
| style="background:#AD3702; color:#FFFFFF" align="center" | 16<br />
| style="background:#8D5600; color:#FFFFFF" align="center" | 17<br />
| style="background:#6E7000; color:#FFFFFF" align="center" | 18<br />
| style="background:#2E8A00; color:#FFFFFF" align="center" | 19<br />
| style="background:#069200; color:#FFFFFF" align="center" | 1A<br />
| style="background:#008A47; color:#FFFFFF" align="center" | 1B<br />
| style="background:#037B9B; color:#FFFFFF" align="center" | 1C<br />
| style="background:#101010; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#62AEFF; color:#000000" align="center" | 21<br />
| style="background:#918BFF; color:#000000" align="center" | 22<br />
| style="background:#BC78FF; color:#000000" align="center" | 23<br />
| style="background:#E96EFF; color:#000000" align="center" | 24<br />
| style="background:#FC6CCD; color:#000000" align="center" | 25<br />
| style="background:#FA8267; color:#000000" align="center" | 26<br />
| style="background:#E29B26; color:#000000" align="center" | 27<br />
| style="background:#C0B901; color:#000000" align="center" | 28<br />
| style="background:#84D200; color:#000000" align="center" | 29<br />
| style="background:#58DE38; color:#000000" align="center" | 2A<br />
| style="background:#46D97D; color:#000000" align="center" | 2B<br />
| style="background:#49CED2; color:#000000" align="center" | 2C<br />
| style="background:#494949; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#C1E3FF; color:#000000" align="center" | 31<br />
| style="background:#D5D4FF; color:#000000" align="center" | 32<br />
| style="background:#E7CCFF; color:#000000" align="center" | 33<br />
| style="background:#FBC9FF; color:#000000" align="center" | 34<br />
| style="background:#FFC7F0; color:#000000" align="center" | 35<br />
| style="background:#FFD0C5; color:#000000" align="center" | 36<br />
| style="background:#F8DAAA; color:#000000" align="center" | 37<br />
| style="background:#EBE69A; color:#000000" align="center" | 38<br />
| style="background:#D1F19A; color:#000000" align="center" | 39<br />
| style="background:#BEF7AF; color:#000000" align="center" | 3A<br />
| style="background:#B6F4CD; color:#000000" align="center" | 3B<br />
| style="background:#B7F0EF; color:#000000" align="center" | 3C<br />
| style="background:#B2B2B2; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Nintendulator NTSC<br />
|-<br />
| style="background:#656565; color:#FFFFFF" align="center" | 00<br />
| style="background:#002B9B; color:#FFFFFF" align="center" | 01<br />
| style="background:#110EC0; color:#FFFFFF" align="center" | 02<br />
| style="background:#3F00BC; color:#FFFFFF" align="center" | 03<br />
| style="background:#66008F; color:#FFFFFF" align="center" | 04<br />
| style="background:#7B0045; color:#FFFFFF" align="center" | 05<br />
| style="background:#790100; color:#FFFFFF" align="center" | 06<br />
| style="background:#601C00; color:#FFFFFF" align="center" | 07<br />
| style="background:#363800; color:#FFFFFF" align="center" | 08<br />
| style="background:#084F00; color:#FFFFFF" align="center" | 09<br />
| style="background:#005A00; color:#FFFFFF" align="center" | 0A<br />
| style="background:#005702; color:#FFFFFF" align="center" | 0B<br />
| style="background:#004555; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#AEAEAE; color:#FFFFFF" align="center" | 10<br />
| style="background:#0761F5; color:#FFFFFF" align="center" | 11<br />
| style="background:#3E3BFF; color:#FFFFFF" align="center" | 12<br />
| style="background:#7C1DFF; color:#FFFFFF" align="center" | 13<br />
| style="background:#AF0EE5; color:#FFFFFF" align="center" | 14<br />
| style="background:#CB1383; color:#FFFFFF" align="center" | 15<br />
| style="background:#C82A15; color:#FFFFFF" align="center" | 16<br />
| style="background:#A74D00; color:#FFFFFF" align="center" | 17<br />
| style="background:#6F7200; color:#FFFFFF" align="center" | 18<br />
| style="background:#329100; color:#FFFFFF" align="center" | 19<br />
| style="background:#009F00; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009B2A; color:#FFFFFF" align="center" | 1B<br />
| style="background:#008498; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#56B1FF; color:#000000" align="center" | 21<br />
| style="background:#8E8BFF; color:#000000" align="center" | 22<br />
| style="background:#CC6CFF; color:#000000" align="center" | 23<br />
| style="background:#FF5DFF; color:#000000" align="center" | 24<br />
| style="background:#FF62D4; color:#000000" align="center" | 25<br />
| style="background:#FF7964; color:#000000" align="center" | 26<br />
| style="background:#F89D06; color:#000000" align="center" | 27<br />
| style="background:#C0C300; color:#000000" align="center" | 28<br />
| style="background:#81E200; color:#000000" align="center" | 29<br />
| style="background:#4DF116; color:#000000" align="center" | 2A<br />
| style="background:#30EC7A; color:#000000" align="center" | 2B<br />
| style="background:#34D5EA; color:#000000" align="center" | 2C<br />
| style="background:#4E4E4E; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#BADFFF; color:#000000" align="center" | 31<br />
| style="background:#D1D0FF; color:#000000" align="center" | 32<br />
| style="background:#EBC3FF; color:#000000" align="center" | 33<br />
| style="background:#FFBDFF; color:#000000" align="center" | 34<br />
| style="background:#FFBFEE; color:#000000" align="center" | 35<br />
| style="background:#FFC8C0; color:#000000" align="center" | 36<br />
| style="background:#FCD799; color:#000000" align="center" | 37<br />
| style="background:#E5E784; color:#000000" align="center" | 38<br />
| style="background:#CCF387; color:#000000" align="center" | 39<br />
| style="background:#B6F9A0; color:#000000" align="center" | 3A<br />
| style="background:#AAF8C9; color:#000000" align="center" | 3B<br />
| style="background:#ACEEF7; color:#000000" align="center" | 3C<br />
| style="background:#B7B7B7; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+FCEUX<br />
|-<br />
| style="background:#747474; color:#FFFFFF" align="center" | 00<br />
| style="background:#24188C; color:#FFFFFF" align="center" | 01<br />
| style="background:#0000A8; color:#FFFFFF" align="center" | 02<br />
| style="background:#44009C; color:#FFFFFF" align="center" | 03<br />
| style="background:#8C0074; color:#FFFFFF" align="center" | 04<br />
| style="background:#A80010; color:#FFFFFF" align="center" | 05<br />
| style="background:#A40000; color:#FFFFFF" align="center" | 06<br />
| style="background:#7C0800; color:#FFFFFF" align="center" | 07<br />
| style="background:#402C00; color:#FFFFFF" align="center" | 08<br />
| style="background:#004400; color:#FFFFFF" align="center" | 09<br />
| style="background:#005000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003C14; color:#FFFFFF" align="center" | 0B<br />
| style="background:#183C5C; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#BCBCBC; color:#FFFFFF" align="center" | 10<br />
| style="background:#0070EC; color:#FFFFFF" align="center" | 11<br />
| style="background:#2038EC; color:#FFFFFF" align="center" | 12<br />
| style="background:#8000F0; color:#FFFFFF" align="center" | 13<br />
| style="background:#BC00BC; color:#FFFFFF" align="center" | 14<br />
| style="background:#E40058; color:#FFFFFF" align="center" | 15<br />
| style="background:#D82800; color:#FFFFFF" align="center" | 16<br />
| style="background:#C84C0C; color:#FFFFFF" align="center" | 17<br />
| style="background:#887000; color:#FFFFFF" align="center" | 18<br />
| style="background:#009400; color:#FFFFFF" align="center" | 19<br />
| style="background:#00A800; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009038; color:#FFFFFF" align="center" | 1B<br />
| style="background:#008088; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#FCFCFC; color:#000000" align="center" | 20<br />
| style="background:#3CBCFC; color:#000000" align="center" | 21<br />
| style="background:#5C94FC; color:#000000" align="center" | 22<br />
| style="background:#CC88FC; color:#000000" align="center" | 23<br />
| style="background:#F478FC; color:#000000" align="center" | 24<br />
| style="background:#FC74B4; color:#000000" align="center" | 25<br />
| style="background:#FC7460; color:#000000" align="center" | 26<br />
| style="background:#FC9838; color:#000000" align="center" | 27<br />
| style="background:#F0BC3C; color:#000000" align="center" | 28<br />
| style="background:#80D010; color:#000000" align="center" | 29<br />
| style="background:#4CDC48; color:#000000" align="center" | 2A<br />
| style="background:#58F898; color:#000000" align="center" | 2B<br />
| style="background:#00E8D8; color:#000000" align="center" | 2C<br />
| style="background:#787878; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#FCFCFC; color:#000000" align="center" | 30<br />
| style="background:#A8E4FC; color:#000000" align="center" | 31<br />
| style="background:#C4D4FC; color:#000000" align="center" | 32<br />
| style="background:#D4C8FC; color:#000000" align="center" | 33<br />
| style="background:#FCC4FC; color:#000000" align="center" | 34<br />
| style="background:#FCC4D8; color:#000000" align="center" | 35<br />
| style="background:#FCBCB0; color:#000000" align="center" | 36<br />
| style="background:#FCD8A8; color:#000000" align="center" | 37<br />
| style="background:#FCE4A0; color:#000000" align="center" | 38<br />
| style="background:#E0FCA0; color:#000000" align="center" | 39<br />
| style="background:#A8F0BC; color:#000000" align="center" | 3A<br />
| style="background:#B0FCCC; color:#000000" align="center" | 3B<br />
| style="background:#9CFCF0; color:#000000" align="center" | 3C<br />
| style="background:#C4C4C4; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Consumer<br />
|-<br />
| style="background:#666666; color:#FFFFFF" align="center" | 00<br />
| style="background:#001E9A; color:#FFFFFF" align="center" | 01<br />
| style="background:#0E09A8; color:#FFFFFF" align="center" | 02<br />
| style="background:#440093; color:#FFFFFF" align="center" | 03<br />
| style="background:#710060; color:#FFFFFF" align="center" | 04<br />
| style="background:#89011D; color:#FFFFFF" align="center" | 05<br />
| style="background:#861300; color:#FFFFFF" align="center" | 06<br />
| style="background:#692900; color:#FFFFFF" align="center" | 07<br />
| style="background:#393E00; color:#FFFFFF" align="center" | 08<br />
| style="background:#044C00; color:#FFFFFF" align="center" | 09<br />
| style="background:#004F00; color:#FFFFFF" align="center" | 0A<br />
| style="background:#00472B; color:#FFFFFF" align="center" | 0B<br />
| style="background:#00356C; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#ADADAD; color:#FFFFFF" align="center" | 10<br />
| style="background:#0050F1; color:#FFFFFF" align="center" | 11<br />
| style="background:#3B34FF; color:#FFFFFF" align="center" | 12<br />
| style="background:#8022E8; color:#FFFFFF" align="center" | 13<br />
| style="background:#BB1EA5; color:#FFFFFF" align="center" | 14<br />
| style="background:#DB294E; color:#FFFFFF" align="center" | 15<br />
| style="background:#D74000; color:#FFFFFF" align="center" | 16<br />
| style="background:#B15E00; color:#FFFFFF" align="center" | 17<br />
| style="background:#737900; color:#FFFFFF" align="center" | 18<br />
| style="background:#2D8B00; color:#FFFFFF" align="center" | 19<br />
| style="background:#008F08; color:#FFFFFF" align="center" | 1A<br />
| style="background:#008460; color:#FFFFFF" align="center" | 1B<br />
| style="background:#006DB5; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#4BA0FF; color:#000000" align="center" | 21<br />
| style="background:#8A84FF; color:#000000" align="center" | 22<br />
| style="background:#D172FF; color:#000000" align="center" | 23<br />
| style="background:#FF6DF7; color:#000000" align="center" | 24<br />
| style="background:#FF799E; color:#000000" align="center" | 25<br />
| style="background:#FF9047; color:#000000" align="center" | 26<br />
| style="background:#FFAE0A; color:#000000" align="center" | 27<br />
| style="background:#C4CA00; color:#000000" align="center" | 28<br />
| style="background:#7DDC13; color:#000000" align="center" | 29<br />
| style="background:#41E157; color:#000000" align="center" | 2A<br />
| style="background:#21D5B0; color:#000000" align="center" | 2B<br />
| style="background:#25BEFF; color:#000000" align="center" | 2C<br />
| style="background:#4F4F4F; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#B6D8FF; color:#000000" align="center" | 31<br />
| style="background:#D0CDFF; color:#000000" align="center" | 32<br />
| style="background:#EDC6FF; color:#000000" align="center" | 33<br />
| style="background:#FFC4FC; color:#000000" align="center" | 34<br />
| style="background:#FFC8D8; color:#000000" align="center" | 35<br />
| style="background:#FFD2B4; color:#000000" align="center" | 36<br />
| style="background:#FFDE9C; color:#000000" align="center" | 37<br />
| style="background:#E7E994; color:#000000" align="center" | 38<br />
| style="background:#CAF19F; color:#000000" align="center" | 39<br />
| style="background:#B2F3BB; color:#000000" align="center" | 3A<br />
| style="background:#A5EEDF; color:#000000" align="center" | 3B<br />
| style="background:#A6E5FF; color:#000000" align="center" | 3C<br />
| style="background:#B8B8B8; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+RGB<br />
|-<br />
| style="background:#6D6D6D; color:#FFFFFF" align="center" | 00<br />
| style="background:#002492; color:#FFFFFF" align="center" | 01<br />
| style="background:#0000DB; color:#FFFFFF" align="center" | 02<br />
| style="background:#6D49DB; color:#FFFFFF" align="center" | 03<br />
| style="background:#92006D; color:#FFFFFF" align="center" | 04<br />
| style="background:#B6006D; color:#FFFFFF" align="center" | 05<br />
| style="background:#B62400; color:#FFFFFF" align="center" | 06<br />
| style="background:#924900; color:#FFFFFF" align="center" | 07<br />
| style="background:#6D4900; color:#FFFFFF" align="center" | 08<br />
| style="background:#244900; color:#FFFFFF" align="center" | 09<br />
| style="background:#006D24; color:#FFFFFF" align="center" | 0A<br />
| style="background:#009200; color:#FFFFFF" align="center" | 0B<br />
| style="background:#004949; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#B6B6B6; color:#FFFFFF" align="center" | 10<br />
| style="background:#006DDB; color:#FFFFFF" align="center" | 11<br />
| style="background:#0049FF; color:#FFFFFF" align="center" | 12<br />
| style="background:#9200FF; color:#FFFFFF" align="center" | 13<br />
| style="background:#B600FF; color:#FFFFFF" align="center" | 14<br />
| style="background:#FF0092; color:#FFFFFF" align="center" | 15<br />
| style="background:#FF0000; color:#FFFFFF" align="center" | 16<br />
| style="background:#DB6D00; color:#FFFFFF" align="center" | 17<br />
| style="background:#926D00; color:#FFFFFF" align="center" | 18<br />
| style="background:#249200; color:#FFFFFF" align="center" | 19<br />
| style="background:#009200; color:#FFFFFF" align="center" | 1A<br />
| style="background:#00B66D; color:#FFFFFF" align="center" | 1B<br />
| style="background:#009292; color:#FFFFFF" align="center" | 1C<br />
| style="background:#242424; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#6DB6FF; color:#000000" align="center" | 21<br />
| style="background:#9292FF; color:#000000" align="center" | 22<br />
| style="background:#DB6DFF; color:#000000" align="center" | 23<br />
| style="background:#FF00FF; color:#000000" align="center" | 24<br />
| style="background:#FF6DFF; color:#000000" align="center" | 25<br />
| style="background:#FF9200; color:#000000" align="center" | 26<br />
| style="background:#FFB600; color:#000000" align="center" | 27<br />
| style="background:#DBDB00; color:#000000" align="center" | 28<br />
| style="background:#6DDB00; color:#000000" align="center" | 29<br />
| style="background:#00FF00; color:#000000" align="center" | 2A<br />
| style="background:#49FFDB; color:#000000" align="center" | 2B<br />
| style="background:#00FFFF; color:#000000" align="center" | 2C<br />
| style="background:#494949; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#B6DBFF; color:#000000" align="center" | 31<br />
| style="background:#DBB6FF; color:#000000" align="center" | 32<br />
| style="background:#FFB6FF; color:#000000" align="center" | 33<br />
| style="background:#FF92FF; color:#000000" align="center" | 34<br />
| style="background:#FFB6B6; color:#000000" align="center" | 35<br />
| style="background:#FFDB92; color:#000000" align="center" | 36<br />
| style="background:#FFFF49; color:#000000" align="center" | 37<br />
| style="background:#FFFF6D; color:#000000" align="center" | 38<br />
| style="background:#B6FF49; color:#000000" align="center" | 39<br />
| style="background:#92FF6D; color:#000000" align="center" | 3A<br />
| style="background:#49FFDB; color:#000000" align="center" | 3B<br />
| style="background:#92DBFF; color:#000000" align="center" | 3C<br />
| style="background:#929292; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+BMF Final 3<br />
|-<br />
| style="background:#686868; color:#FFFFFF" align="center" | 00<br />
| style="background:#001299; color:#FFFFFF" align="center" | 01<br />
| style="background:#1A08AA; color:#FFFFFF" align="center" | 02<br />
| style="background:#51029A; color:#FFFFFF" align="center" | 03<br />
| style="background:#7E0069; color:#FFFFFF" align="center" | 04<br />
| style="background:#8E001C; color:#FFFFFF" align="center" | 05<br />
| style="background:#7E0301; color:#FFFFFF" align="center" | 06<br />
| style="background:#511800; color:#FFFFFF" align="center" | 07<br />
| style="background:#1F3700; color:#FFFFFF" align="center" | 08<br />
| style="background:#014E00; color:#FFFFFF" align="center" | 09<br />
| style="background:#005A00; color:#FFFFFF" align="center" | 0A<br />
| style="background:#00501C; color:#FFFFFF" align="center" | 0B<br />
| style="background:#004061; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#B9B9B9; color:#FFFFFF" align="center" | 10<br />
| style="background:#0C5CD7; color:#FFFFFF" align="center" | 11<br />
| style="background:#5035F0; color:#FFFFFF" align="center" | 12<br />
| style="background:#8919E0; color:#FFFFFF" align="center" | 13<br />
| style="background:#BB0CB3; color:#FFFFFF" align="center" | 14<br />
| style="background:#CE0C61; color:#FFFFFF" align="center" | 15<br />
| style="background:#C02B0E; color:#FFFFFF" align="center" | 16<br />
| style="background:#954D01; color:#FFFFFF" align="center" | 17<br />
| style="background:#616F00; color:#FFFFFF" align="center" | 18<br />
| style="background:#1F8B00; color:#FFFFFF" align="center" | 19<br />
| style="background:#01980C; color:#FFFFFF" align="center" | 1A<br />
| style="background:#00934B; color:#FFFFFF" align="center" | 1B<br />
| style="background:#00819B; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#63B4FF; color:#000000" align="center" | 21<br />
| style="background:#9B91FF; color:#000000" align="center" | 22<br />
| style="background:#D377FF; color:#000000" align="center" | 23<br />
| style="background:#EF6AFF; color:#000000" align="center" | 24<br />
| style="background:#F968C0; color:#000000" align="center" | 25<br />
| style="background:#F97D6C; color:#000000" align="center" | 26<br />
| style="background:#ED9B2D; color:#000000" align="center" | 27<br />
| style="background:#BDBD16; color:#000000" align="center" | 28<br />
| style="background:#7CDA1C; color:#000000" align="center" | 29<br />
| style="background:#4BE847; color:#000000" align="center" | 2A<br />
| style="background:#35E591; color:#000000" align="center" | 2B<br />
| style="background:#3FD9DD; color:#000000" align="center" | 2C<br />
| style="background:#606060; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#ACE7FF; color:#000000" align="center" | 31<br />
| style="background:#D5CDFF; color:#000000" align="center" | 32<br />
| style="background:#EDBAFF; color:#000000" align="center" | 33<br />
| style="background:#F8B0FF; color:#000000" align="center" | 34<br />
| style="background:#FEB0EC; color:#000000" align="center" | 35<br />
| style="background:#FDBDB5; color:#000000" align="center" | 36<br />
| style="background:#F9D28E; color:#000000" align="center" | 37<br />
| style="background:#E8EB7C; color:#000000" align="center" | 38<br />
| style="background:#BBF382; color:#000000" align="center" | 39<br />
| style="background:#99F7A2; color:#000000" align="center" | 3A<br />
| style="background:#8AF5D0; color:#000000" align="center" | 3B<br />
| style="background:#92F4F1; color:#000000" align="center" | 3C<br />
| style="background:#BEBEBE; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
|<br />
{| cellpadding="10" cellspacing="0"<br />
|+Wii VC<br />
|-<br />
| style="background:#494949; color:#FFFFFF" align="center" | 00<br />
| style="background:#00006A; color:#FFFFFF" align="center" | 01<br />
| style="background:#090063; color:#FFFFFF" align="center" | 02<br />
| style="background:#290059; color:#FFFFFF" align="center" | 03<br />
| style="background:#42004A; color:#FFFFFF" align="center" | 04<br />
| style="background:#490000; color:#FFFFFF" align="center" | 05<br />
| style="background:#420000; color:#FFFFFF" align="center" | 06<br />
| style="background:#291100; color:#FFFFFF" align="center" | 07<br />
| style="background:#182700; color:#FFFFFF" align="center" | 08<br />
| style="background:#003010; color:#FFFFFF" align="center" | 09<br />
| style="background:#003000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#002910; color:#FFFFFF" align="center" | 0B<br />
| style="background:#012043; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#747174; color:#FFFFFF" align="center" | 10<br />
| style="background:#003084; color:#FFFFFF" align="center" | 11<br />
| style="background:#3101AC; color:#FFFFFF" align="center" | 12<br />
| style="background:#4B0194; color:#FFFFFF" align="center" | 13<br />
| style="background:#64007B; color:#FFFFFF" align="center" | 14<br />
| style="background:#6B0039; color:#FFFFFF" align="center" | 15<br />
| style="background:#6B2101; color:#FFFFFF" align="center" | 16<br />
| style="background:#5A2F00; color:#FFFFFF" align="center" | 17<br />
| style="background:#424900; color:#FFFFFF" align="center" | 18<br />
| style="background:#185901; color:#FFFFFF" align="center" | 19<br />
| style="background:#105901; color:#FFFFFF" align="center" | 1A<br />
| style="background:#015932; color:#FFFFFF" align="center" | 1B<br />
| style="background:#01495A; color:#FFFFFF" align="center" | 1C<br />
| style="background:#101010; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#ADADAD; color:#000000" align="center" | 20<br />
| style="background:#4A71B6; color:#000000" align="center" | 21<br />
| style="background:#6458D5; color:#000000" align="center" | 22<br />
| style="background:#8450E6; color:#000000" align="center" | 23<br />
| style="background:#A451AD; color:#000000" align="center" | 24<br />
| style="background:#AD4984; color:#000000" align="center" | 25<br />
| style="background:#B5624A; color:#000000" align="center" | 26<br />
| style="background:#947132; color:#000000" align="center" | 27<br />
| style="background:#7B722A; color:#000000" align="center" | 28<br />
| style="background:#5A8601; color:#000000" align="center" | 29<br />
| style="background:#388E31; color:#000000" align="center" | 2A<br />
| style="background:#318E5A; color:#000000" align="center" | 2B<br />
| style="background:#398E8D; color:#000000" align="center" | 2C<br />
| style="background:#383838; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#B6B6B6; color:#000000" align="center" | 30<br />
| style="background:#8C9DB5; color:#000000" align="center" | 31<br />
| style="background:#8D8EAE; color:#000000" align="center" | 32<br />
| style="background:#9C8EBC; color:#000000" align="center" | 33<br />
| style="background:#A687BC; color:#000000" align="center" | 34<br />
| style="background:#AD8D9D; color:#000000" align="center" | 35<br />
| style="background:#AE968C; color:#000000" align="center" | 36<br />
| style="background:#9C8F7C; color:#000000" align="center" | 37<br />
| style="background:#9C9E72; color:#000000" align="center" | 38<br />
| style="background:#94A67C; color:#000000" align="center" | 39<br />
| style="background:#84A77B; color:#000000" align="center" | 3A<br />
| style="background:#7C9D84; color:#000000" align="center" | 3B<br />
| style="background:#73968D; color:#000000" align="center" | 3C<br />
| style="background:#DEDEDE; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Wii VC Normalized<br />
|-<br />
| style="background:#636363; color:#FFFFFF" align="center" | 00<br />
| style="background:#00008F; color:#FFFFFF" align="center" | 01<br />
| style="background:#0C0086; color:#FFFFFF" align="center" | 02<br />
| style="background:#370078; color:#FFFFFF" align="center" | 03<br />
| style="background:#590064; color:#FFFFFF" align="center" | 04<br />
| style="background:#630000; color:#FFFFFF" align="center" | 05<br />
| style="background:#590000; color:#FFFFFF" align="center" | 06<br />
| style="background:#371700; color:#FFFFFF" align="center" | 07<br />
| style="background:#203400; color:#FFFFFF" align="center" | 08<br />
| style="background:#004115; color:#FFFFFF" align="center" | 09<br />
| style="background:#004100; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003715; color:#FFFFFF" align="center" | 0B<br />
| style="background:#012B5A; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#9D999D; color:#000000" align="center" | 10<br />
| style="background:#0041B3; color:#FFFFFF" align="center" | 11<br />
| style="background:#4201E9; color:#FFFFFF" align="center" | 12<br />
| style="background:#6501C8; color:#FFFFFF" align="center" | 13<br />
| style="background:#8700A6; color:#FFFFFF" align="center" | 14<br />
| style="background:#91004D; color:#FFFFFF" align="center" | 15<br />
| style="background:#912C01; color:#FFFFFF" align="center" | 16<br />
| style="background:#7A3F00; color:#FFFFFF" align="center" | 17<br />
| style="background:#596300; color:#FFFFFF" align="center" | 18<br />
| style="background:#207801; color:#FFFFFF" align="center" | 19<br />
| style="background:#157801; color:#FFFFFF" align="center" | 1A<br />
| style="background:#017843; color:#FFFFFF" align="center" | 1B<br />
| style="background:#01637A; color:#FFFFFF" align="center" | 1C<br />
| style="background:#151515; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#EAEAEA; color:#000000" align="center" | 20<br />
| style="background:#6499F6; color:#000000" align="center" | 21<br />
| style="background:#8777FF; color:#000000" align="center" | 22<br />
| style="background:#B36CFF; color:#000000" align="center" | 23<br />
| style="background:#DE6DEA; color:#000000" align="center" | 24<br />
| style="background:#EA63B3; color:#000000" align="center" | 25<br />
| style="background:#F58464; color:#000000" align="center" | 26<br />
| style="background:#C89943; color:#000000" align="center" | 27<br />
| style="background:#A69A38; color:#FFFFFF" align="center" | 28<br />
| style="background:#7AB501; color:#FFFFFF" align="center" | 29<br />
| style="background:#4BC042; color:#FFFFFF" align="center" | 2A<br />
| style="background:#42C07A; color:#FFFFFF" align="center" | 2B<br />
| style="background:#4DC0BF; color:#000000" align="center" | 2C<br />
| style="background:#4B4B4B; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#F6F6F6; color:#000000" align="center" | 30<br />
| style="background:#BDD4F5; color:#000000" align="center" | 31<br />
| style="background:#BFC0EC; color:#000000" align="center" | 32<br />
| style="background:#D3C0FF; color:#000000" align="center" | 33<br />
| style="background:#E1B7FF; color:#000000" align="center" | 34<br />
| style="background:#EABFD4; color:#000000" align="center" | 35<br />
| style="background:#ECCBBD; color:#000000" align="center" | 36<br />
| style="background:#D3C1A8; color:#000000" align="center" | 37<br />
| style="background:#D3D69A; color:#000000" align="center" | 38<br />
| style="background:#C8E1A8; color:#000000" align="center" | 39<br />
| style="background:#B3E2A6; color:#000000" align="center" | 3A<br />
| style="background:#A8D4B3; color:#000000" align="center" | 3B<br />
| style="background:#9BCBBF; color:#000000" align="center" | 3C<br />
| style="background:#FFFFFF; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+3DS VC<br />
|-<br />
| style="background:#737373; color:#FFFFFF" align="center" | 00<br />
| style="background:#21188C; color:#FFFFFF" align="center" | 01<br />
| style="background:#0000AD; color:#FFFFFF" align="center" | 02<br />
| style="background:#42009C; color:#FFFFFF" align="center" | 03<br />
| style="background:#8C0073; color:#FFFFFF" align="center" | 04<br />
| style="background:#AD0010; color:#FFFFFF" align="center" | 05<br />
| style="background:#A50000; color:#FFFFFF" align="center" | 06<br />
| style="background:#7B0800; color:#FFFFFF" align="center" | 07<br />
| style="background:#422900; color:#FFFFFF" align="center" | 08<br />
| style="background:#004200; color:#FFFFFF" align="center" | 09<br />
| style="background:#005200; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003910; color:#FFFFFF" align="center" | 0B<br />
| style="background:#18395A; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#BDBDBD; color:#FFFFFF" align="center" | 10<br />
| style="background:#0073EF; color:#FFFFFF" align="center" | 11<br />
| style="background:#2139EF; color:#FFFFFF" align="center" | 12<br />
| style="background:#8400F7; color:#FFFFFF" align="center" | 13<br />
| style="background:#BD00BD; color:#FFFFFF" align="center" | 14<br />
| style="background:#E7005A; color:#FFFFFF" align="center" | 15<br />
| style="background:#DE2900; color:#FFFFFF" align="center" | 16<br />
| style="background:#CE4A08; color:#FFFFFF" align="center" | 17<br />
| style="background:#8C7300; color:#FFFFFF" align="center" | 18<br />
| style="background:#009400; color:#FFFFFF" align="center" | 19<br />
| style="background:#00AD00; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009439; color:#FFFFFF" align="center" | 1B<br />
| style="background:#00848C; color:#FFFFFF" align="center" | 1C<br />
| style="background:#101010; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#39BDFF; color:#000000" align="center" | 21<br />
| style="background:#5A94FF; color:#000000" align="center" | 22<br />
| style="background:#A58CFF; color:#000000" align="center" | 23<br />
| style="background:#F77BFF; color:#000000" align="center" | 24<br />
| style="background:#FF73B5; color:#000000" align="center" | 25<br />
| style="background:#FF7363; color:#000000" align="center" | 26<br />
| style="background:#FF9C39; color:#000000" align="center" | 27<br />
| style="background:#F7BD39; color:#000000" align="center" | 28<br />
| style="background:#84D610; color:#000000" align="center" | 29<br />
| style="background:#4ADE4A; color:#000000" align="center" | 2A<br />
| style="background:#5AFF9C; color:#000000" align="center" | 2B<br />
| style="background:#00EFDE; color:#000000" align="center" | 2C<br />
| style="background:#393939; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#ADE7FF; color:#000000" align="center" | 31<br />
| style="background:#C6D6FF; color:#000000" align="center" | 32<br />
| style="background:#D6CEFF; color:#000000" align="center" | 33<br />
| style="background:#FFC6FF; color:#000000" align="center" | 34<br />
| style="background:#FFC6DE; color:#000000" align="center" | 35<br />
| style="background:#FFBDB5; color:#000000" align="center" | 36<br />
| style="background:#FFDEAD; color:#000000" align="center" | 37<br />
| style="background:#FFE7A5; color:#000000" align="center" | 38<br />
| style="background:#E7FFA5; color:#000000" align="center" | 39<br />
| style="background:#ADF7BD; color:#000000" align="center" | 3A<br />
| style="background:#B5FFCE; color:#000000" align="center" | 3B<br />
| style="background:#9CFFF7; color:#000000" align="center" | 3C<br />
| style="background:#8C8C8C; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+NES Classic Edition<br />
|-<br />
| style="background:#606060; color:#FFFFFF" align="center" | 00<br />
| style="background:#000088; color:#FFFFFF" align="center" | 01<br />
| style="background:#200C98; color:#FFFFFF" align="center" | 02<br />
| style="background:#381478; color:#FFFFFF" align="center" | 03<br />
| style="background:#541460; color:#FFFFFF" align="center" | 04<br />
| style="background:#5C0010; color:#FFFFFF" align="center" | 05<br />
| style="background:#541000; color:#FFFFFF" align="center" | 06<br />
| style="background:#3C2408; color:#FFFFFF" align="center" | 07<br />
| style="background:#20340C; color:#FFFFFF" align="center" | 08<br />
| style="background:#0C400C; color:#FFFFFF" align="center" | 09<br />
| style="background:#184418; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003C20; color:#FFFFFF" align="center" | 0B<br />
| style="background:#003058; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#A8A8A8; color:#FFFFFF" align="center" | 10<br />
| style="background:#0C4CC4; color:#FFFFFF" align="center" | 11<br />
| style="background:#4C24E0; color:#FFFFFF" align="center" | 12<br />
| style="background:#6814D0; color:#FFFFFF" align="center" | 13<br />
| style="background:#9014AC; color:#FFFFFF" align="center" | 14<br />
| style="background:#9C1C48; color:#FFFFFF" align="center" | 15<br />
| style="background:#903404; color:#FFFFFF" align="center" | 16<br />
| style="background:#745004; color:#FFFFFF" align="center" | 17<br />
| style="background:#5C6814; color:#FFFFFF" align="center" | 18<br />
| style="background:#187C10; color:#FFFFFF" align="center" | 19<br />
| style="background:#148008; color:#FFFFFF" align="center" | 1A<br />
| style="background:#107448; color:#FFFFFF" align="center" | 1B<br />
| style="background:#1C6490; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FCFCFC; color:#000000" align="center" | 20<br />
| style="background:#6498FC; color:#000000" align="center" | 21<br />
| style="background:#887CFC; color:#000000" align="center" | 22<br />
| style="background:#B068FC; color:#000000" align="center" | 23<br />
| style="background:#DC6CF4; color:#000000" align="center" | 24<br />
| style="background:#E870AC; color:#000000" align="center" | 25<br />
| style="background:#E48858; color:#000000" align="center" | 26<br />
| style="background:#CC9C20; color:#000000" align="center" | 27<br />
| style="background:#A8B000; color:#000000" align="center" | 28<br />
| style="background:#74C000; color:#000000" align="center" | 29<br />
| style="background:#5CCC50; color:#000000" align="center" | 2A<br />
| style="background:#34C090; color:#000000" align="center" | 2B<br />
| style="background:#50C0CC; color:#000000" align="center" | 2C<br />
| style="background:#404040; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FCFCFC; color:#000000" align="center" | 30<br />
| style="background:#BCD4FC; color:#000000" align="center" | 31<br />
| style="background:#CCCCFC; color:#000000" align="center" | 32<br />
| style="background:#D8C4FC; color:#000000" align="center" | 33<br />
| style="background:#ECC0FC; color:#000000" align="center" | 34<br />
| style="background:#F8C4E8; color:#000000" align="center" | 35<br />
| style="background:#F8CCC4; color:#000000" align="center" | 36<br />
| style="background:#E4CCA8; color:#000000" align="center" | 37<br />
| style="background:#D8DC9C; color:#000000" align="center" | 38<br />
| style="background:#C8E4A0; color:#000000" align="center" | 39<br />
| style="background:#C0E4B8; color:#000000" align="center" | 3A<br />
| style="background:#B4ECC8; color:#000000" align="center" | 3B<br />
| style="background:#B8E4EC; color:#000000" align="center" | 3C<br />
| style="background:#BABABA; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+NES Remix U<br />
|-<br />
| style="background:#6E6E6E; color:#FFFFFF" align="center" | 00<br />
| style="background:#2A159C; color:#FFFFFF" align="center" | 01<br />
| style="background:#2A0EAB; color:#FFFFFF" align="center" | 02<br />
| style="background:#5C1C95; color:#FFFFFF" align="center" | 03<br />
| style="background:#8E2372; color:#FFFFFF" align="center" | 04<br />
| style="background:#9C1C31; color:#FFFFFF" align="center" | 05<br />
| style="background:#95310E; color:#FFFFFF" align="center" | 06<br />
| style="background:#724007; color:#FFFFFF" align="center" | 07<br />
| style="background:#475507; color:#FFFFFF" align="center" | 08<br />
| style="background:#39630E; color:#FFFFFF" align="center" | 09<br />
| style="background:#3B650D; color:#FFFFFF" align="center" | 0A<br />
| style="background:#315C40; color:#FFFFFF" align="center" | 0B<br />
| style="background:#314E72; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#A2A2A2; color:#FFFFFF" align="center" | 10<br />
| style="background:#3955D5; color:#FFFFFF" align="center" | 11<br />
| style="background:#3131DC; color:#FFFFFF" align="center" | 12<br />
| style="background:#7931CE; color:#FFFFFF" align="center" | 13<br />
| style="background:#B931A3; color:#FFFFFF" align="center" | 14<br />
| style="background:#C03155; color:#FFFFFF" align="center" | 15<br />
| style="background:#C04600; color:#FFFFFF" align="center" | 16<br />
| style="background:#A35C00; color:#FFFFFF" align="center" | 17<br />
| style="background:#797900; color:#FFFFFF" align="center" | 18<br />
| style="background:#478E00; color:#FFFFFF" align="center" | 19<br />
| style="background:#40950E; color:#FFFFFF" align="center" | 1A<br />
| style="background:#408E5C; color:#FFFFFF" align="center" | 1B<br />
| style="background:#317995; color:#FFFFFF" align="center" | 1C<br />
| style="background:#6E6E6E; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#DCDCDC; color:#000000" align="center" | 20<br />
| style="background:#5C8EDC; color:#000000" align="center" | 21<br />
| style="background:#4772DC; color:#000000" align="center" | 22<br />
| style="background:#8E63DC; color:#000000" align="center" | 23<br />
| style="background:#CE55DC; color:#000000" align="center" | 24<br />
| style="background:#DC5595; color:#000000" align="center" | 25<br />
| style="background:#DC6A31; color:#000000" align="center" | 26<br />
| style="background:#DC8E07; color:#000000" align="center" | 27<br />
| style="background:#C7B21C; color:#000000" align="center" | 28<br />
| style="background:#8AC707; color:#000000" align="center" | 29<br />
| style="background:#63CE39; color:#000000" align="center" | 2A<br />
| style="background:#5CC780; color:#000000" align="center" | 2B<br />
| style="background:#55B2B9; color:#000000" align="center" | 2C<br />
| style="background:#A2A2A2; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#DCDCDC; color:#000000" align="center" | 30<br />
| style="background:#87B9DC; color:#000000" align="center" | 31<br />
| style="background:#8EA3DC; color:#000000" align="center" | 32<br />
| style="background:#AB9CDC; color:#000000" align="center" | 33<br />
| style="background:#C79CDC; color:#000000" align="center" | 34<br />
| style="background:#DC9CC7; color:#000000" align="center" | 35<br />
| style="background:#DCAB9C; color:#000000" align="center" | 36<br />
| style="background:#DCC087; color:#000000" align="center" | 37<br />
| style="background:#DCCE79; color:#000000" align="center" | 38<br />
| style="background:#B2D572; color:#000000" align="center" | 39<br />
| style="background:#8ED58E; color:#000000" align="center" | 3A<br />
| style="background:#8EDCB2; color:#000000" align="center" | 3B<br />
| style="background:#8EDCCE; color:#000000" align="center" | 3C<br />
| style="background:#DCDCDC; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Rockman 9<br />
|-<br />
| style="background:#707070; color:#FFFFFF" align="center" | 00<br />
| style="background:#0000A8; color:#FFFFFF" align="center" | 01<br />
| style="background:#201888; color:#FFFFFF" align="center" | 02<br />
| style="background:#400098; color:#FFFFFF" align="center" | 03<br />
| style="background:#880070; color:#FFFFFF" align="center" | 04<br />
| style="background:#A80010; color:#FFFFFF" align="center" | 05<br />
| style="background:#A00000; color:#FFFFFF" align="center" | 06<br />
| style="background:#780800; color:#FFFFFF" align="center" | 07<br />
| style="background:#402800; color:#FFFFFF" align="center" | 08<br />
| style="background:#004000; color:#FFFFFF" align="center" | 09<br />
| style="background:#005000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003810; color:#FFFFFF" align="center" | 0B<br />
| style="background:#183858; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#B8B8B8; color:#FFFFFF" align="center" | 10<br />
| style="background:#0070E8; color:#FFFFFF" align="center" | 11<br />
| style="background:#2038E8; color:#FFFFFF" align="center" | 12<br />
| style="background:#8000F0; color:#FFFFFF" align="center" | 13<br />
| style="background:#B800B8; color:#FFFFFF" align="center" | 14<br />
| style="background:#E00058; color:#FFFFFF" align="center" | 15<br />
| style="background:#D82800; color:#FFFFFF" align="center" | 16<br />
| style="background:#C84808; color:#FFFFFF" align="center" | 17<br />
| style="background:#887000; color:#FFFFFF" align="center" | 18<br />
| style="background:#009000; color:#FFFFFF" align="center" | 19<br />
| style="background:#00A800; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009038; color:#FFFFFF" align="center" | 1B<br />
| style="background:#008088; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#F8F8F8; color:#000000" align="center" | 20<br />
| style="background:#38B8F8; color:#000000" align="center" | 21<br />
| style="background:#5890F8; color:#000000" align="center" | 22<br />
| style="background:#A088F8; color:#000000" align="center" | 23<br />
| style="background:#F078F8; color:#000000" align="center" | 24<br />
| style="background:#F870B0; color:#000000" align="center" | 25<br />
| style="background:#F87060; color:#000000" align="center" | 26<br />
| style="background:#F89838; color:#000000" align="center" | 27<br />
| style="background:#F0B838; color:#000000" align="center" | 28<br />
| style="background:#80D010; color:#000000" align="center" | 29<br />
| style="background:#48D848; color:#000000" align="center" | 2A<br />
| style="background:#58F898; color:#000000" align="center" | 2B<br />
| style="background:#00E8D8; color:#000000" align="center" | 2C<br />
| style="background:#505050; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#F8F8F8; color:#000000" align="center" | 30<br />
| style="background:#A8E0F8; color:#000000" align="center" | 31<br />
| style="background:#C0D0F8; color:#000000" align="center" | 32<br />
| style="background:#D0C8F8; color:#000000" align="center" | 33<br />
| style="background:#F8C0F8; color:#000000" align="center" | 34<br />
| style="background:#F8C0D8; color:#000000" align="center" | 35<br />
| style="background:#F8B8B0; color:#000000" align="center" | 36<br />
| style="background:#F8D8A8; color:#000000" align="center" | 37<br />
| style="background:#F8E0A0; color:#000000" align="center" | 38<br />
| style="background:#E0F8A0; color:#000000" align="center" | 39<br />
| style="background:#A8F0B8; color:#000000" align="center" | 3A<br />
| style="background:#B0F8C8; color:#000000" align="center" | 3B<br />
| style="background:#98F8F0; color:#000000" align="center" | 3C<br />
| style="background:#989898; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Rockman 9 - 21 to 2C<br />
|-<br />
| style="background:#707070; color:#FFFFFF" align="center" | 00<br />
| style="background:#0000A8; color:#FFFFFF" align="center" | 01<br />
| style="background:#201888; color:#FFFFFF" align="center" | 02<br />
| style="background:#400098; color:#FFFFFF" align="center" | 03<br />
| style="background:#880070; color:#FFFFFF" align="center" | 04<br />
| style="background:#A80010; color:#FFFFFF" align="center" | 05<br />
| style="background:#A00000; color:#FFFFFF" align="center" | 06<br />
| style="background:#780800; color:#FFFFFF" align="center" | 07<br />
| style="background:#402800; color:#FFFFFF" align="center" | 08<br />
| style="background:#004000; color:#FFFFFF" align="center" | 09<br />
| style="background:#005000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003810; color:#FFFFFF" align="center" | 0B<br />
| style="background:#183858; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#B8B8B8; color:#FFFFFF" align="center" | 10<br />
| style="background:#0070E8; color:#FFFFFF" align="center" | 11<br />
| style="background:#2038E8; color:#FFFFFF" align="center" | 12<br />
| style="background:#8000F0; color:#FFFFFF" align="center" | 13<br />
| style="background:#B800B8; color:#FFFFFF" align="center" | 14<br />
| style="background:#E00058; color:#FFFFFF" align="center" | 15<br />
| style="background:#D82800; color:#FFFFFF" align="center" | 16<br />
| style="background:#C84808; color:#FFFFFF" align="center" | 17<br />
| style="background:#887000; color:#FFFFFF" align="center" | 18<br />
| style="background:#009000; color:#FFFFFF" align="center" | 19<br />
| style="background:#00A800; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009038; color:#FFFFFF" align="center" | 1B<br />
| style="background:#008088; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#F8F8F8; color:#000000" align="center" | 20<br />
| style="background:#38B8F8; color:#000000" align="center" | 21<br />
| style="background:#5890F8; color:#000000" align="center" | 22<br />
| style="background:#A088F8; color:#000000" align="center" | 23<br />
| style="background:#F078F8; color:#000000" align="center" | 24<br />
| style="background:#F870B0; color:#000000" align="center" | 25<br />
| style="background:#F87060; color:#000000" align="center" | 26<br />
| style="background:#F89838; color:#000000" align="center" | 27<br />
| style="background:#F0B838; color:#000000" align="center" | 28<br />
| style="background:#80D010; color:#000000" align="center" | 29<br />
| style="background:#48D848; color:#000000" align="center" | 2A<br />
| style="background:#58F898; color:#000000" align="center" | 2B<br />
| style="background:#38B8F8; color:#000000" align="center" | 2C<br />
| style="background:#505050; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#F8F8F8; color:#000000" align="center" | 30<br />
| style="background:#A8E0F8; color:#000000" align="center" | 31<br />
| style="background:#C0D0F8; color:#000000" align="center" | 32<br />
| style="background:#D0C8F8; color:#000000" align="center" | 33<br />
| style="background:#F8C0F8; color:#000000" align="center" | 34<br />
| style="background:#F8C0D8; color:#000000" align="center" | 35<br />
| style="background:#F8B8B0; color:#000000" align="center" | 36<br />
| style="background:#F8D8A8; color:#000000" align="center" | 37<br />
| style="background:#F8E0A0; color:#000000" align="center" | 38<br />
| style="background:#E0F8A0; color:#000000" align="center" | 39<br />
| style="background:#A8F0B8; color:#000000" align="center" | 3A<br />
| style="background:#B0F8C8; color:#000000" align="center" | 3B<br />
| style="background:#98F8F0; color:#000000" align="center" | 3C<br />
| style="background:#989898; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+ASQ Reality B<br />
|-<br />
| style="background:#6C6C6C; color:#FFFFFF" align="center" | 00<br />
| style="background:#002094; color:#FFFFFF" align="center" | 01<br />
| style="background:#0000A8; color:#FFFFFF" align="center" | 02<br />
| style="background:#3C0098; color:#FFFFFF" align="center" | 03<br />
| style="background:#700070; color:#FFFFFF" align="center" | 04<br />
| style="background:#7C003C; color:#FFFFFF" align="center" | 05<br />
| style="background:#700000; color:#FFFFFF" align="center" | 06<br />
| style="background:#681000; color:#FFFFFF" align="center" | 07<br />
| style="background:#461A00; color:#FFFFFF" align="center" | 08<br />
| style="background:#3C2C00; color:#FFFFFF" align="center" | 09<br />
| style="background:#005000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003C4C; color:#FFFFFF" align="center" | 0B<br />
| style="background:#003A66; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#101010; color:#FFFFFF" align="center" | 0E<br />
| style="background:#101010; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#BABABA; color:#FFFFFF" align="center" | 10<br />
| style="background:#2A58D6; color:#FFFFFF" align="center" | 11<br />
| style="background:#3C32FF; color:#FFFFFF" align="center" | 12<br />
| style="background:#8020F0; color:#FFFFFF" align="center" | 13<br />
| style="background:#C000C0; color:#FFFFFF" align="center" | 14<br />
| style="background:#D01474; color:#FFFFFF" align="center" | 15<br />
| style="background:#D21A24; color:#FFFFFF" align="center" | 16<br />
| style="background:#A63C1E; color:#FFFFFF" align="center" | 17<br />
| style="background:#7E5200; color:#FFFFFF" align="center" | 18<br />
| style="background:#586400; color:#FFFFFF" align="center" | 19<br />
| style="background:#008800; color:#FFFFFF" align="center" | 1A<br />
| style="background:#007468; color:#FFFFFF" align="center" | 1B<br />
| style="background:#00729E; color:#FFFFFF" align="center" | 1C<br />
| style="background:#101010; color:#FFFFFF" align="center" | 1D<br />
| style="background:#101010; color:#FFFFFF" align="center" | 1E<br />
| style="background:#101010; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#5EA0FF; color:#000000" align="center" | 21<br />
| style="background:#8C82FF; color:#000000" align="center" | 22<br />
| style="background:#C470FF; color:#000000" align="center" | 23<br />
| style="background:#FF5CFF; color:#000000" align="center" | 24<br />
| style="background:#FF68BC; color:#000000" align="center" | 25<br />
| style="background:#FF727C; color:#000000" align="center" | 26<br />
| style="background:#FC964A; color:#000000" align="center" | 27<br />
| style="background:#D9AD00; color:#000000" align="center" | 28<br />
| style="background:#98C62E; color:#000000" align="center" | 29<br />
| style="background:#4ED44E; color:#000000" align="center" | 2A<br />
| style="background:#3AC89A; color:#000000" align="center" | 2B<br />
| style="background:#2EBEDC; color:#000000" align="center" | 2C<br />
| style="background:#585858; color:#FFFFFF" align="center" | 2D<br />
| style="background:#101010; color:#FFFFFF" align="center" | 2E<br />
| style="background:#101010; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#C6D8FF; color:#000000" align="center" | 31<br />
| style="background:#D4CAFF; color:#000000" align="center" | 32<br />
| style="background:#F0C4FF; color:#000000" align="center" | 33<br />
| style="background:#FFBCFF; color:#000000" align="center" | 34<br />
| style="background:#FFC4F0; color:#000000" align="center" | 35<br />
| style="background:#FFCAD4; color:#000000" align="center" | 36<br />
| style="background:#FFD8BE; color:#000000" align="center" | 37<br />
| style="background:#FFE6A6; color:#000000" align="center" | 38<br />
| style="background:#EAECB2; color:#000000" align="center" | 39<br />
| style="background:#C6F4C6; color:#000000" align="center" | 3A<br />
| style="background:#BAECEA; color:#000000" align="center" | 3B<br />
| style="background:#B6E6FF; color:#000000" align="center" | 3C<br />
| style="background:#C2C2C2; color:#000000" align="center" | 3D<br />
| style="background:#101010; color:#FFFFFF" align="center" | 3E<br />
| style="background:#101010; color:#FFFFFF" align="center" | 3F<br />
|}<br />
|}<br />
<br />
==Gallery==<br />
[[File:5NUrm6U-1-.png|thumb|left|1000px|Comparison of various palettes in Stage 2 of Castelvania]]<br />
{{clr}}<br />
<br />
==External Links==<br />
*[http://bisqwit.iki.fi/utils/nespalette.php Bisqwit's NTSC NES palette generator]<br />
*[http://drag.wootest.net/misc/palgen.html Drag's NTSC NES palette generator]<br />
<br />
==References==<br />
{{reflist|2}}<br />
<br />
[[Category:FAQs]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Shaders_and_filters&diff=13971Shaders and filters2017-02-01T01:08:07Z<p>Monroe88: Add shader preview link</p>
<hr />
<div>Shaders and filters can be applied to video games to achieve some kind of visual effect. These can be from attempting to replicate [[Recommended Displays|aperture grille]] displays, NTSC signals, or something more exotic.<br />
<br />
==Emulator support==<br />
{| class="wikitable"<br />
! scope="col" style="text-align: center;"|Name<br />
! scope="col" style="text-align: center;"|Shader file types<br />
! scope="col" style="text-align: center;"|Notes<br />
|-<br />
| style="text-align: center;"|[[RetroArch]]<br />
|.cg, .cgp, .glsl, .glslp, .slang, .slangp, .dll/.so<br />
|<br />
Old bsnes XML shaders (.shader) and old bsnes filter plugins (.filter) are no longer usable in current versions of RetroArch.<br />
SoftFilters are dynamic libraries, the extension depends on platform.<br />
<br />
.cgp stacks several .cg files on top of one another. Same thing with .glslp and .slangp.<br />
|-<br />
| style="text-align: center;"|[[DOSBox]]<br />
|.fx<br />
|Only on special builds such as [http://ykhwong.x-y.net/ SVN Daum].<br />
|-<br />
| style="text-align: center;"|[[Higan]]<br />
|.filter, .shader, folders<br />
|<br />
.shader removed in future higan releases in favor of Quark shader folders.<br />
<br />
.filter works in old [[higan|bsnes]] versions (circa v82) but not current in current versions of higan.<br />
|-<br />
| style="text-align: center;"|[[HqMAME]]<br />
|.fx<br />
|xBRZ and HQx<br />
|-<br />
| style="text-align: center;"|[[OpenEMU]]<br />
|.cg,<br />
|<br />
|-<br />
| style="text-align: center;"|[[Snes9x]]<br />
|.cg, .shader<br />
|<br />
|-<br />
| style="text-align: center;"|[[Project64]]<br />
|.fx<br />
|Only with a [http://www.lanpartyguide.com/zelda/shaders.html custom Rice Video plugin].<br />
|-<br />
| style="text-align: center;"|[[PCSX-R]]<br />
|.slv/.slf, .vp/.fp<br />
|Requires Pete's OpenGL2 or gpuBladeSoft.<br />
|-<br />
| style="text-align: center;"|[[ePSXe]]<br />
|.slv/.slf, .vp/.fp<br />
|Requires Pete's OpenGL2 or gpuBladeSoft.<br />
|-<br />
| style="text-align: center;"|[[PCSX2]]<br />
|.fx<br />
|Must be named shader.fx and be in the main directory. PageUp to activate.<br />
|-<br />
| style="text-align: center;"|[[Dolphin]]<br />
|.txt<br />
|Can only be used with OpenGL backend.<br />
|-<br />
| style="text-align: center;"|Mobile<br />
|.glsl<br />
|GLSL is the shader language used by default on mobile (Android/iOS/Blackberry).<br />
|-<br />
| style="text-align: center;"|Mobile<br />
|.glslp<br />
|GLSL equiv. of cgp - possible to stack several shaders with this.<br />
|}<br />
<br />
==Types==<br />
{{Main|List of shaders and filters}}<br />
[[File:Crt-geom.png|thumb|190px|crt-geom-flat.cg, a popular CRT shader. ]]<br />
===CRT Shaders===<br />
{{Main|CRT Shaders}}<br />
<br />
Most of these replicate aperture grille CRTs, which have sharp images and strong scanlines. Only a few replicate shadow mask CRTs, often requiring much higher resolutions.<br />
===NTSC Filters===<br />
{{Main|NTSC filters}}<br />
<br />
These replicate the signals that consoles output to the TV. They vary in quality, with the lowest being RF, then composite, then s-video and RGB (scart) being the highest quality. Many emulators have NTSC filters built into them. They can also be separately downloaded in filter plugin format.<br />
<br />
===LCD Shaders===<br />
[[File:Lcd-grid.png|thumb|256px|cgwg's lcd-grid-v2 shader with GBA colors.]]<br />
These replicate the look of a low resolution LCD common on handhelds. These can range from a simple grid drawn around the pixels to a detailed recreation of each pixel's RGB subpixels. May also include motion blurring to simulate ghosting and washed out color gamuts.<br />
<br />
===GameBoy Shader===<br />
[[File:Gb.png|thumb|189px|GameBoy Shader with default palette. Other palettes are available.]]<br />
<br />
This .cgp shader replicates the dot matrix screen of a Game Boy, complete with the ghosting problems to reproduce certain visual effects. Made by Harlequin. Requires [[RetroArch]].<br />
<br />
===Smoothing shaders===<br />
<br />
These shaders, such as 2xSai, Super Eagle, Super 2xSai, scaleX , HQx , xBR and xBRZ attempt to reduce the pixelation by smoothing and rounding. They can cause a lot of false positives and distortions, however, scaling the image 2x or 3x using nearest neighbor, then applying the smoothing shader will reduce the intensity of the smoothing by keeping the pixel shapes intact, eliminating most distortions while keeping a fairly smooth look.<br />
<br />
===Dithering===<br />
<br />
These are shaders designed to detect and smooth [[dithering]]. [https://github.com/libretro/common-shaders/tree/master/dithering mdapt] is a popular one. There is also newer gdapt.<br />
<br />
===Pixellate===<br />
<br />
This shader is supposed to appear the same as nearest neighbor (aka "unfiltered"), except with minor corrections when using a non-integer scale that are increasingly less noticeable the higher it is scaled. This shader is useful to anyone who wants to keep things as sharp as possible without worrying about scale factors. Available in [https://github.com/hizzlekizzle/quark-shaders/tree/master/Pixellate.shader Quark] and [https://github.com/libretro/common-shaders/blob/master/retro/shaders/pixellate.cg Cg] shader formats.<br />
<br />
===Border===<br />
<br />
A [https://github.com/libretro/common-shaders/tree/master/borders shader] that applies a border overlay to the game image. Can be used to fill empty areas on widescreen monitors with artwork, display a CRT or handheld bezel, or simulate [https://github.com/libretro/common-shaders/tree/master/borders/gameboy-player Game Boy Player] and [https://github.com/libretro/common-shaders/tree/master/borders/sgb Super Game Boy] output.<br />
<br />
===Image Adjustment===<br />
<br />
Image adjustment shaders allow you to adjust the color levels of an image, including gamma, luminance, contrast, saturation, and so on, for personal preference, accuracy, or compensating your display. Often, these are used alongside other shaders. There are also [https://github.com/libretro/common-shaders/tree/master/handheld/shaders/color shaders] that simulate the color profiles of specific displays, such as the GBA or DS.<br />
<br />
==Shaders on real CRTs==<br />
<br />
On 31+kHz PC CRT monitors displaying in high resolution modes, most filters/shaders should work fine as is, as most were intended for output scaled 3x or higher. <br />
<br />
However, CRT monitors (and 15kHz CRTs) displaying in low resolution modes like 240p or 480p, you will find many of them won't work correctly due to the low output resolution. In these cases you should use shaders that are applied only on the horizontal axis, only make changes to color output without scaling, or those that add scanlines/interlacing for 480p output. <br />
<br />
You can combine those things with these two shader presets: [https://github.com/libretro/common-shaders/blob/master/cgp/tvout/tvout.cgp tvout.cgp] for 240p and [https://github.com/libretro/common-shaders/blob/master/cgp/tvout%2Binterlacing/tvout%2Binterlacing.cgp tvout+interlacing.cgp] for 480p. Both of these allow you to have adjustable signal resolution blur applied horizontally, as well as color controls like gamma, saturation, and the option to use TV color range (16-235) instead of PC color range (0-255), while the 480p version provides a scanline shader that is interlaced on 480-line content. The signal resolution blur works best if you use a large horizontal resolution (1280 or higher recommended) while keeping your vertical resolution at 240 or 480, and setting the aspect ratio of the emulator to stretch to fit. The higher horizontal resolution will make it look natural and convincing, avoiding banding issues. Can be combined with NTSC filters/shaders for maximum authenticity, check out the shader presets in [https://github.com/libretro/common-shaders/tree/master/cgp/tvout /cgp/tvout] and [https://github.com/libretro/common-shaders/tree/master/cgp/tvout%2Binterlacing /cgp/tvout+interlacing] for some examples.<br />
<br />
==Downloads==<br />
<br />
[https://github.com/libretro/common-shaders Libretro Cg shader repository]<br />
<br />
[https://github.com/hizzlekizzle/glsl-shaders Libretro GLSL shader conversion repository]<br />
<br />
[https://github.com/libretro/slang-shaders Libretro Vulkan (.slang) shader repository]<br />
<br />
[https://mega.nz/#!OJc0DZwT!I_ulxfrXeNuOUxpE2eSKktSxdIktOxx4uzKMyTNdJYs Border Shaders by EndUser]<br />
<br />
[http://www.emu-france.com/emulateurs/5-consoles/51-nintendo-super-nintendo/3677-snes9x-cg-shaders/ Snes9x Cg shader pack]<br />
<br />
[http://www.emucr.com/2013/04/epsxe-shaders-pack-20130427.html ePSXe/PCSX-R shaders]<br />
<br />
[http://www.mediafire.com/?icqpvoc65omra75 PCSX2 shaders]<br />
<br />
==Further reading==<br />
[http://filthypants.blogspot.com/search/label/pixel%20shader All things shaders and filters]<br />
<br />
[https://github.com/libretro/common-shaders/blob/master/docs/README Cg shader spec].<br />
<br />
[https://github.com/libretro/slang-shaders/blob/master/spec/SHADER_SPEC.md Vulkan GLSL (Slang) shader spec]<br />
<br />
[https://github.com/libretro/shader-previews Shader preview thumbnail repository]<br />
<br />
<br />
[[Category:FAQs]]<br />
[[Category:Shaders/Filters]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Shaders_and_filters&diff=13970Shaders and filters2017-02-01T01:05:54Z<p>Monroe88: Update spec</p>
<hr />
<div>Shaders and filters can be applied to video games to achieve some kind of visual effect. These can be from attempting to replicate [[Recommended Displays|aperture grille]] displays, NTSC signals, or something more exotic.<br />
<br />
==Emulator support==<br />
{| class="wikitable"<br />
! scope="col" style="text-align: center;"|Name<br />
! scope="col" style="text-align: center;"|Shader file types<br />
! scope="col" style="text-align: center;"|Notes<br />
|-<br />
| style="text-align: center;"|[[RetroArch]]<br />
|.cg, .cgp, .glsl, .glslp, .slang, .slangp, .dll/.so<br />
|<br />
Old bsnes XML shaders (.shader) and old bsnes filter plugins (.filter) are no longer usable in current versions of RetroArch.<br />
SoftFilters are dynamic libraries, the extension depends on platform.<br />
<br />
.cgp stacks several .cg files on top of one another. Same thing with .glslp and .slangp.<br />
|-<br />
| style="text-align: center;"|[[DOSBox]]<br />
|.fx<br />
|Only on special builds such as [http://ykhwong.x-y.net/ SVN Daum].<br />
|-<br />
| style="text-align: center;"|[[Higan]]<br />
|.filter, .shader, folders<br />
|<br />
.shader removed in future higan releases in favor of Quark shader folders.<br />
<br />
.filter works in old [[higan|bsnes]] versions (circa v82) but not current in current versions of higan.<br />
|-<br />
| style="text-align: center;"|[[HqMAME]]<br />
|.fx<br />
|xBRZ and HQx<br />
|-<br />
| style="text-align: center;"|[[OpenEMU]]<br />
|.cg,<br />
|<br />
|-<br />
| style="text-align: center;"|[[Snes9x]]<br />
|.cg, .shader<br />
|<br />
|-<br />
| style="text-align: center;"|[[Project64]]<br />
|.fx<br />
|Only with a [http://www.lanpartyguide.com/zelda/shaders.html custom Rice Video plugin].<br />
|-<br />
| style="text-align: center;"|[[PCSX-R]]<br />
|.slv/.slf, .vp/.fp<br />
|Requires Pete's OpenGL2 or gpuBladeSoft.<br />
|-<br />
| style="text-align: center;"|[[ePSXe]]<br />
|.slv/.slf, .vp/.fp<br />
|Requires Pete's OpenGL2 or gpuBladeSoft.<br />
|-<br />
| style="text-align: center;"|[[PCSX2]]<br />
|.fx<br />
|Must be named shader.fx and be in the main directory. PageUp to activate.<br />
|-<br />
| style="text-align: center;"|[[Dolphin]]<br />
|.txt<br />
|Can only be used with OpenGL backend.<br />
|-<br />
| style="text-align: center;"|Mobile<br />
|.glsl<br />
|GLSL is the shader language used by default on mobile (Android/iOS/Blackberry).<br />
|-<br />
| style="text-align: center;"|Mobile<br />
|.glslp<br />
|GLSL equiv. of cgp - possible to stack several shaders with this.<br />
|}<br />
<br />
==Types==<br />
{{Main|List of shaders and filters}}<br />
[[File:Crt-geom.png|thumb|190px|crt-geom-flat.cg, a popular CRT shader. ]]<br />
===CRT Shaders===<br />
{{Main|CRT Shaders}}<br />
<br />
Most of these replicate aperture grille CRTs, which have sharp images and strong scanlines. Only a few replicate shadow mask CRTs, often requiring much higher resolutions.<br />
===NTSC Filters===<br />
{{Main|NTSC filters}}<br />
<br />
These replicate the signals that consoles output to the TV. They vary in quality, with the lowest being RF, then composite, then s-video and RGB (scart) being the highest quality. Many emulators have NTSC filters built into them. They can also be separately downloaded in filter plugin format.<br />
<br />
===LCD Shaders===<br />
[[File:Lcd-grid.png|thumb|256px|cgwg's lcd-grid-v2 shader with GBA colors.]]<br />
These replicate the look of a low resolution LCD common on handhelds. These can range from a simple grid drawn around the pixels to a detailed recreation of each pixel's RGB subpixels. May also include motion blurring to simulate ghosting and washed out color gamuts.<br />
<br />
===GameBoy Shader===<br />
[[File:Gb.png|thumb|189px|GameBoy Shader with default palette. Other palettes are available.]]<br />
<br />
This .cgp shader replicates the dot matrix screen of a Game Boy, complete with the ghosting problems to reproduce certain visual effects. Made by Harlequin. Requires [[RetroArch]].<br />
<br />
===Smoothing shaders===<br />
<br />
These shaders, such as 2xSai, Super Eagle, Super 2xSai, scaleX , HQx , xBR and xBRZ attempt to reduce the pixelation by smoothing and rounding. They can cause a lot of false positives and distortions, however, scaling the image 2x or 3x using nearest neighbor, then applying the smoothing shader will reduce the intensity of the smoothing by keeping the pixel shapes intact, eliminating most distortions while keeping a fairly smooth look.<br />
<br />
===Dithering===<br />
<br />
These are shaders designed to detect and smooth [[dithering]]. [https://github.com/libretro/common-shaders/tree/master/dithering mdapt] is a popular one. There is also newer gdapt.<br />
<br />
===Pixellate===<br />
<br />
This shader is supposed to appear the same as nearest neighbor (aka "unfiltered"), except with minor corrections when using a non-integer scale that are increasingly less noticeable the higher it is scaled. This shader is useful to anyone who wants to keep things as sharp as possible without worrying about scale factors. Available in [https://github.com/hizzlekizzle/quark-shaders/tree/master/Pixellate.shader Quark] and [https://github.com/libretro/common-shaders/blob/master/retro/shaders/pixellate.cg Cg] shader formats.<br />
<br />
===Border===<br />
<br />
A [https://github.com/libretro/common-shaders/tree/master/borders shader] that applies a border overlay to the game image. Can be used to fill empty areas on widescreen monitors with artwork, display a CRT or handheld bezel, or simulate [https://github.com/libretro/common-shaders/tree/master/borders/gameboy-player Game Boy Player] and [https://github.com/libretro/common-shaders/tree/master/borders/sgb Super Game Boy] output.<br />
<br />
===Image Adjustment===<br />
<br />
Image adjustment shaders allow you to adjust the color levels of an image, including gamma, luminance, contrast, saturation, and so on, for personal preference, accuracy, or compensating your display. Often, these are used alongside other shaders. There are also [https://github.com/libretro/common-shaders/tree/master/handheld/shaders/color shaders] that simulate the color profiles of specific displays, such as the GBA or DS.<br />
<br />
==Shaders on real CRTs==<br />
<br />
On 31+kHz PC CRT monitors displaying in high resolution modes, most filters/shaders should work fine as is, as most were intended for output scaled 3x or higher. <br />
<br />
However, CRT monitors (and 15kHz CRTs) displaying in low resolution modes like 240p or 480p, you will find many of them won't work correctly due to the low output resolution. In these cases you should use shaders that are applied only on the horizontal axis, only make changes to color output without scaling, or those that add scanlines/interlacing for 480p output. <br />
<br />
You can combine those things with these two shader presets: [https://github.com/libretro/common-shaders/blob/master/cgp/tvout/tvout.cgp tvout.cgp] for 240p and [https://github.com/libretro/common-shaders/blob/master/cgp/tvout%2Binterlacing/tvout%2Binterlacing.cgp tvout+interlacing.cgp] for 480p. Both of these allow you to have adjustable signal resolution blur applied horizontally, as well as color controls like gamma, saturation, and the option to use TV color range (16-235) instead of PC color range (0-255), while the 480p version provides a scanline shader that is interlaced on 480-line content. The signal resolution blur works best if you use a large horizontal resolution (1280 or higher recommended) while keeping your vertical resolution at 240 or 480, and setting the aspect ratio of the emulator to stretch to fit. The higher horizontal resolution will make it look natural and convincing, avoiding banding issues. Can be combined with NTSC filters/shaders for maximum authenticity, check out the shader presets in [https://github.com/libretro/common-shaders/tree/master/cgp/tvout /cgp/tvout] and [https://github.com/libretro/common-shaders/tree/master/cgp/tvout%2Binterlacing /cgp/tvout+interlacing] for some examples.<br />
<br />
==Downloads==<br />
<br />
[https://github.com/libretro/common-shaders Libretro Cg shader repository]<br />
<br />
[https://github.com/hizzlekizzle/glsl-shaders Libretro GLSL shader conversion repository]<br />
<br />
[https://github.com/libretro/slang-shaders Libretro Vulkan (.slang) shader repository]<br />
<br />
[https://mega.nz/#!OJc0DZwT!I_ulxfrXeNuOUxpE2eSKktSxdIktOxx4uzKMyTNdJYs Border Shaders by EndUser]<br />
<br />
[http://www.emu-france.com/emulateurs/5-consoles/51-nintendo-super-nintendo/3677-snes9x-cg-shaders/ Snes9x Cg shader pack]<br />
<br />
[http://www.emucr.com/2013/04/epsxe-shaders-pack-20130427.html ePSXe/PCSX-R shaders]<br />
<br />
[http://www.mediafire.com/?icqpvoc65omra75 PCSX2 shaders]<br />
<br />
==Further reading==<br />
[http://filthypants.blogspot.com/search/label/pixel%20shader All things shaders and filters]<br />
<br />
[https://github.com/libretro/common-shaders/blob/master/docs/README Cg shader spec].<br />
<br />
[https://github.com/libretro/slang-shaders/blob/master/spec/SHADER_SPEC.md Vulkan GLSL (Slang) shader spec]<br />
<br />
<br />
[[Category:FAQs]]<br />
[[Category:Shaders/Filters]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Shaders_and_filters&diff=10840Shaders and filters2016-06-26T18:39:27Z<p>Monroe88: Update link</p>
<hr />
<div>Shaders and filters can be applied to video games to achieve some kind of visual effect. These can be from attempting to replicate [[Recommended Displays|aperture grille]] displays, NTSC signals, or something more exotic.<br />
<br />
==Emulator support==<br />
{| class="wikitable"<br />
! scope="col" style="text-align: center;"|Name<br />
! scope="col" style="text-align: center;"|Shader file types<br />
! scope="col" style="text-align: center;"|Notes<br />
|-<br />
| style="text-align: center;"|[[RetroArch]]<br />
|.cg, .cgp, .glsl, .glslp, .slang, .slangp, .dll/.so<br />
|<br />
Old bsnes XML shaders (.shader) and old bsnes filter plugins (.filter) are no longer usable in current versions of RetroArch.<br />
SoftFilters are dynamic libraries, the extension depends on platform.<br />
<br />
.cgp stacks several .cg files on top of one another. Same thing with .glslp and .slangp.<br />
|-<br />
| style="text-align: center;"|[[DOSBox]]<br />
|.fx<br />
|Only on special builds such as [http://ykhwong.x-y.net/ SVN Daum].<br />
|-<br />
| style="text-align: center;"|[[Higan]]<br />
|.filter, .shader, folders<br />
|<br />
.shader removed in future higan releases in favor of Quark shader folders.<br />
<br />
.filter works in old [[higan|bsnes]] versions (circa v82) but not current in current versions of higan.<br />
|-<br />
| style="text-align: center;"|[[HqMAME]]<br />
|.fx<br />
|xBRZ and HQx<br />
|-<br />
| style="text-align: center;"|[[OpenEMU]]<br />
|.cg,<br />
|<br />
|-<br />
| style="text-align: center;"|[[Snes9x]]<br />
|.cg, .shader<br />
|<br />
|-<br />
| style="text-align: center;"|[[Project64]]<br />
|.fx<br />
|Only with a [http://www.lanpartyguide.com/zelda/shaders.html custom Rice Video plugin].<br />
|-<br />
| style="text-align: center;"|[[PCSX-R]]<br />
|.slv/.slf, .vp/.fp<br />
|Requires Pete's OpenGL2 or gpuBladeSoft.<br />
|-<br />
| style="text-align: center;"|[[ePSXe]]<br />
|.slv/.slf, .vp/.fp<br />
|Requires Pete's OpenGL2 or gpuBladeSoft.<br />
|-<br />
| style="text-align: center;"|[[PCSX2]]<br />
|.fx<br />
|Must be named shader.fx and be in the main directory. PageUp to activate.<br />
|-<br />
| style="text-align: center;"|[[Dolphin]]<br />
|.txt<br />
|Can only be used with OpenGL backend.<br />
|-<br />
| style="text-align: center;"|Mobile<br />
|.glsl<br />
|GLSL is the shader language used by default on mobile (Android/iOS/Blackberry).<br />
|-<br />
| style="text-align: center;"|Mobile<br />
|.glslp<br />
|GLSL equiv. of cgp - possible to stack several shaders with this.<br />
|}<br />
<br />
==Types==<br />
{{Main|List of shaders and filters}}<br />
[[File:Crt-geom.png|thumb|190px|crt-geom-flat.cg, a popular CRT shader. ]]<br />
===CRT Shaders===<br />
{{Main|CRT Shaders}}<br />
<br />
Most of these replicate aperture grille CRTs, which have sharp images and strong scanlines. Only a few replicate shadow mask CRTs, often requiring much higher resolutions.<br />
===NTSC Filters===<br />
{{Main|NTSC filters}}<br />
<br />
These replicate the signals that consoles output to the TV. They vary in quality, with the lowest being RF, then composite, then s-video and RGB (scart) being the highest quality. Many emulators have NTSC filters built into them. They can also be separately downloaded in filter plugin format.<br />
<br />
===LCD Shaders===<br />
[[File:Lcd-grid.png|thumb|256px|cgwg's lcd-grid-v2 shader with GBA colors.]]<br />
These replicate the look of a low resolution LCD display common on handhelds. These can range from a simple grid drawn around the pixels to a detailed recreation of each pixel's RGB subpixels. May also include motion blurring to simulate ghosting and washed out color gamuts.<br />
<br />
===GameBoy Shader===<br />
[[File:Gb.png|thumb|190px|GameBoy Shader with default urine palette. Other palettes are available.]]<br />
<br />
This .cgp shader replicates the dot matrix screen of a Game Boy, complete with the ghosting problems to reproduce certain visual effects. Made by Harlequin. Requires [[RetroArch]].<br />
<br />
===Smoothing shaders===<br />
<br />
These shaders, such as 2xSai, Super Eagle, Super 2xSai, scaleX , HQx , xBR and xBRZ attempt to reduce the pixellation by smoothing and rounding. They can cause a lot of false positives and distortions, however, scaling the image 2x or 3x using nearest neighbor, then applying the smoothing shader will reduce the intensity of the smoothing by keeping the pixel shapes intact, eliminating most distortions while keeping a fairly smooth look.<br />
<br />
===Dithering===<br />
<br />
These are shaders designed to detect and smooth [[dithering]]. [https://github.com/libretro/common-shaders/tree/master/dithering mdapt] is a popular one. There is also newer gdapt.<br />
<br />
===Pixellate===<br />
<br />
This shader is supposed to appear the same as nearest neighbor (aka "unfiltered"), except with minor corrections when using a non-integer scale that are increasingly less noticeable the higher it is scaled. This shader is very useful to anyone who wants to keep things as sharp as possible without worrying about scale factors. Available in [https://github.com/hizzlekizzle/quark-shaders/tree/master/Pixellate.shader Quark] and [https://github.com/libretro/common-shaders/blob/master/retro/shaders/pixellate.cg Cg] shader formats.<br />
<br />
===Border===<br />
<br />
A [https://github.com/libretro/common-shaders/tree/master/borders shader] that applies a border overlay to the game image. Can be used to fill empty areas on widescreen monitors with artwork, display a CRT or handheld bezel, or simulate [https://github.com/libretro/common-shaders/tree/master/borders/gameboy-player Game Boy Player] and [https://github.com/libretro/common-shaders/tree/master/borders/sgb Super Game Boy] output.<br />
<br />
===Image Adjustment===<br />
<br />
Image adjustment shaders allow you to adjust the color levels of an image, including gamma, luminance, contrast, saturation, etc., for personal preference, accuracy, or compensating your display. Very often, these are used alongside other shaders. There are also [https://github.com/libretro/common-shaders/tree/master/handheld/shaders/color shaders] that simulate the color profiles of specific displays, such as the GBA or DS.<br />
<br />
==Shaders on real CRTs==<br />
<br />
On 31+kHz PC CRT monitors displaying in high resolution modes, most filters/shaders should work fine as is, as most were intended for output scaled 3x or higher. <br />
<br />
However, CRT monitors (and 15kHz CRTs) displaying in low resolution modes like 240p or 480p, you will find many of them won't work correctly due to the low output resolution. In these cases you should use shaders that are applied only on the horizontal axis, only make changes to color output without scaling, or those that add scanlines/interlacing for 480p output. <br />
<br />
You can combine those things with these two shader presets: [https://github.com/libretro/common-shaders/blob/master/cgp/tvout/tvout.cgp tvout.cgp] for 240p and [https://github.com/libretro/common-shaders/blob/master/cgp/tvout%2Binterlacing/tvout%2Binterlacing.cgp tvout+interlacing.cgp] for 480p. Both of these allow you to have adjustable signal resolution blur applied horizontally, as well as color controls like gamma, saturation, and the option to use TV color range (16-235) instead of PC color range (0-255), while the 480p version provides a scanline shader that is interlaced on 480-line content. The signal resolution blur works best if you use a large horizontal resolution (1280 or higher recommended) while keeping your vertical resolution at 240 or 480, and setting the aspect ratio of the emulator to stretch to fit. The higher horizontal resolution will make it look very natural and convincing, avoiding banding issues. Can be combined with NTSC filters/shaders for maximum authenticity, check out the shader presets in [https://github.com/libretro/common-shaders/tree/master/cgp/tvout /cgp/tvout] and [https://github.com/libretro/common-shaders/tree/master/cgp/tvout%2Binterlacing /cgp/tvout+interlacing] for some examples.<br />
<br />
==Downloads==<br />
<br />
[https://github.com/libretro/common-shaders Libretro Cg shader repository]<br />
<br />
[https://github.com/hizzlekizzle/glsl-shaders Libretro GLSL shader conversion repository]<br />
<br />
[https://mega.nz/#!OJc0DZwT!I_ulxfrXeNuOUxpE2eSKktSxdIktOxx4uzKMyTNdJYs Border Shaders by EndUser]<br />
<br />
[http://www.emu-france.com/emulateurs/5-consoles/51-nintendo-super-nintendo/3677-snes9x-cg-shaders/ Snes9x Cg shader pack]<br />
<br />
[http://www.emucr.com/2013/04/epsxe-shaders-pack-20130427.html ePSXe/PCSX-R shaders]<br />
<br />
[http://www.mediafire.com/?icqpvoc65omra75 PCSX2 shaders]<br />
<br />
==Further reading==<br />
[http://filthypants.blogspot.com/search/label/pixel%20shader All things shaders and filters]<br />
<br />
[https://github.com/Themaister/Emulator-Shader-Pack/blob/master/Cg/README Cg shader spec].<br />
[[Category:FAQs]]<br />
[[Category:Shaders/Filters]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=File:Lcd-grid.png&diff=10839File:Lcd-grid.png2016-06-26T18:31:24Z<p>Monroe88: </p>
<hr />
<div>[https://github.com/libretro/common-shaders/blob/master/handheld/lcd-grid-v2-gba-color.cgp lcd-grid-v2-gba-color.cgp]<br />
<br />
cgwg's lcd-grid-v2 shader with GBA colors.</div>Monroe88https://emulation.gametechwiki.com/index.php?title=File:Lcd-grid.png&diff=10838File:Lcd-grid.png2016-06-26T18:10:10Z<p>Monroe88: </p>
<hr />
<div>[https://github.com/libretro/common-shaders/blob/master/cgp/lowquality-lcd.cgp lowquality-lcd.cgp]<br />
<br />
cgwg's lcd-grid-v2 shader with GBA colors.</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Shaders_and_filters&diff=10837Shaders and filters2016-06-26T18:07:03Z<p>Monroe88: </p>
<hr />
<div>Shaders and filters can be applied to video games to achieve some kind of visual effect. These can be from attempting to replicate [[Recommended Displays|aperture grille]] displays, NTSC signals, or something more exotic.<br />
<br />
==Emulator support==<br />
{| class="wikitable"<br />
! scope="col" style="text-align: center;"|Name<br />
! scope="col" style="text-align: center;"|Shader file types<br />
! scope="col" style="text-align: center;"|Notes<br />
|-<br />
| style="text-align: center;"|[[RetroArch]]<br />
|.cg, .cgp, .glsl, .glslp, .slang, .slangp, .dll/.so<br />
|<br />
Old bsnes XML shaders (.shader) and old bsnes filter plugins (.filter) are no longer usable in current versions of RetroArch.<br />
SoftFilters are dynamic libraries, the extension depends on platform.<br />
<br />
.cgp stacks several .cg files on top of one another. Same thing with .glslp and .slangp.<br />
|-<br />
| style="text-align: center;"|[[DOSBox]]<br />
|.fx<br />
|Only on special builds such as [http://ykhwong.x-y.net/ SVN Daum].<br />
|-<br />
| style="text-align: center;"|[[Higan]]<br />
|.filter, .shader, folders<br />
|<br />
.shader removed in future higan releases in favor of Quark shader folders.<br />
<br />
.filter works in old [[higan|bsnes]] versions (circa v82) but not current in current versions of higan.<br />
|-<br />
| style="text-align: center;"|[[HqMAME]]<br />
|.fx<br />
|xBRZ and HQx<br />
|-<br />
| style="text-align: center;"|[[OpenEMU]]<br />
|.cg,<br />
|<br />
|-<br />
| style="text-align: center;"|[[Snes9x]]<br />
|.cg, .shader<br />
|<br />
|-<br />
| style="text-align: center;"|[[Project64]]<br />
|.fx<br />
|Only with a [http://www.lanpartyguide.com/zelda/shaders.html custom Rice Video plugin].<br />
|-<br />
| style="text-align: center;"|[[PCSX-R]]<br />
|.slv/.slf, .vp/.fp<br />
|Requires Pete's OpenGL2 or gpuBladeSoft.<br />
|-<br />
| style="text-align: center;"|[[ePSXe]]<br />
|.slv/.slf, .vp/.fp<br />
|Requires Pete's OpenGL2 or gpuBladeSoft.<br />
|-<br />
| style="text-align: center;"|[[PCSX2]]<br />
|.fx<br />
|Must be named shader.fx and be in the main directory. PageUp to activate.<br />
|-<br />
| style="text-align: center;"|[[Dolphin]]<br />
|.txt<br />
|Can only be used with OpenGL backend.<br />
|-<br />
| style="text-align: center;"|Mobile<br />
|.glsl<br />
|GLSL is the shader language used by default on mobile (Android/iOS/Blackberry).<br />
|-<br />
| style="text-align: center;"|Mobile<br />
|.glslp<br />
|GLSL equiv. of cgp - possible to stack several shaders with this.<br />
|}<br />
<br />
==Types==<br />
{{Main|List of shaders and filters}}<br />
[[File:Crt-geom.png|thumb|190px|crt-geom-flat.cg, a popular CRT shader. ]]<br />
===CRT Shaders===<br />
{{Main|CRT Shaders}}<br />
<br />
Most of these replicate aperture grille CRTs, which have sharp images and strong scanlines. Only a few replicate shadow mask CRTs, often requiring much higher resolutions.<br />
===NTSC Filters===<br />
{{Main|NTSC filters}}<br />
<br />
These replicate the signals that consoles output to the TV. They vary in quality, with the lowest being RF, then composite, then s-video and RGB (scart) being the highest quality. Many emulators have NTSC filters built into them. They can also be separately downloaded in filter plugin format.<br />
<br />
===LCD Shaders===<br />
[[File:Lcd-grid.png|thumb|256px|cgwg's lcd-grid-v2 shader with GBA colors.]]<br />
These replicate the look of a low resolution LCD display common on handhelds. These can range from a simple grid drawn around the pixels to a detailed recreation of each pixel's RGB subpixels. May also include motion blurring to simulate ghosting and washed out color gamuts.<br />
<br />
===GameBoy Shader===<br />
[[File:Gb.png|thumb|190px|GameBoy Shader with default urine palette. Other palettes are available.]]<br />
<br />
This .cgp shader replicates the dot matrix screen of a Game Boy, complete with the ghosting problems to reproduce certain visual effects. Made by Harlequin. Requires [[RetroArch]].<br />
<br />
===Smoothing shaders===<br />
<br />
These shaders, such as 2xSai, Super Eagle, Super 2xSai, scaleX , HQx , xBR and xBRZ attempt to reduce the pixellation by smoothing and rounding. They can cause a lot of false positives and distortions, however, scaling the image 2x or 3x using nearest neighbor, then applying the smoothing shader will reduce the intensity of the smoothing by keeping the pixel shapes intact, eliminating most distortions while keeping a fairly smooth look.<br />
<br />
===Dithering===<br />
<br />
These are shaders designed to detect and smooth [[dithering]]. [https://github.com/libretro/common-shaders/tree/master/dithering mdapt] is a popular one. There is also newer gdapt.<br />
<br />
===Pixellate===<br />
<br />
This shader is supposed to appear the same as nearest neighbor (aka "unfiltered"), except with minor corrections when using a non-integer scale that are increasingly less noticeable the higher it is scaled. This shader is very useful to anyone who wants to keep things as sharp as possible without worrying about scale factors. Available in [https://github.com/hizzlekizzle/quark-shaders/tree/master/Pixellate.shader Quark] and [https://github.com/libretro/common-shaders/blob/master/retro/shaders/pixellate.cg Cg] shader formats.<br />
<br />
===Border===<br />
<br />
A [https://github.com/libretro/common-shaders/tree/master/borders shader] that applies a border overlay to the game image. Can be used to fill empty areas on widescreen monitors with artwork, display a CRT or handheld bezel, or simulate [https://github.com/libretro/common-shaders/tree/master/borders/gameboy-player Game Boy Player] and [https://github.com/libretro/common-shaders/tree/master/borders/sgb Super Game Boy] output.<br />
<br />
===Image Adjustment===<br />
<br />
Image adjustment shaders allow you to adjust the color levels of an image, including gamma, luminance, contrast, saturation, etc., for personal preference, accuracy, or compensating your display. Very often, these are used alongside other shaders. There are also [https://github.com/Monroe88/common-shaders/tree/color-lcd/handheld/color-lcd shaders] that simulate the color profiles of specific displays, such as the GBA or DS.<br />
<br />
==Shaders on real CRTs==<br />
<br />
On 31+kHz PC CRT monitors displaying in high resolution modes, most filters/shaders should work fine as is, as most were intended for output scaled 3x or higher. <br />
<br />
However, CRT monitors (and 15kHz CRTs) displaying in low resolution modes like 240p or 480p, you will find many of them won't work correctly due to the low output resolution. In these cases you should use shaders that are applied only on the horizontal axis, only make changes to color output without scaling, or those that add scanlines/interlacing for 480p output. <br />
<br />
You can combine those things with these two shader presets: [https://github.com/libretro/common-shaders/blob/master/cgp/tvout/tvout.cgp tvout.cgp] for 240p and [https://github.com/libretro/common-shaders/blob/master/cgp/tvout%2Binterlacing/tvout%2Binterlacing.cgp tvout+interlacing.cgp] for 480p. Both of these allow you to have adjustable signal resolution blur applied horizontally, as well as color controls like gamma, saturation, and the option to use TV color range (16-235) instead of PC color range (0-255), while the 480p version provides a scanline shader that is interlaced on 480-line content. The signal resolution blur works best if you use a large horizontal resolution (1280 or higher recommended) while keeping your vertical resolution at 240 or 480, and setting the aspect ratio of the emulator to stretch to fit. The higher horizontal resolution will make it look very natural and convincing, avoiding banding issues. Can be combined with NTSC filters/shaders for maximum authenticity, check out the shader presets in [https://github.com/libretro/common-shaders/tree/master/cgp/tvout /cgp/tvout] and [https://github.com/libretro/common-shaders/tree/master/cgp/tvout%2Binterlacing /cgp/tvout+interlacing] for some examples.<br />
<br />
==Downloads==<br />
<br />
[https://github.com/libretro/common-shaders Libretro Cg shader repository]<br />
<br />
[https://github.com/hizzlekizzle/glsl-shaders Libretro GLSL shader conversion repository]<br />
<br />
[https://mega.nz/#!OJc0DZwT!I_ulxfrXeNuOUxpE2eSKktSxdIktOxx4uzKMyTNdJYs Border Shaders by EndUser]<br />
<br />
[http://www.emu-france.com/emulateurs/5-consoles/51-nintendo-super-nintendo/3677-snes9x-cg-shaders/ Snes9x Cg shader pack]<br />
<br />
[http://www.emucr.com/2013/04/epsxe-shaders-pack-20130427.html ePSXe/PCSX-R shaders]<br />
<br />
[http://www.mediafire.com/?icqpvoc65omra75 PCSX2 shaders]<br />
<br />
==Further reading==<br />
[http://filthypants.blogspot.com/search/label/pixel%20shader All things shaders and filters]<br />
<br />
[https://github.com/Themaister/Emulator-Shader-Pack/blob/master/Cg/README Cg shader spec].<br />
[[Category:FAQs]]<br />
[[Category:Shaders/Filters]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=File:Lcd-grid.png&diff=10836File:Lcd-grid.png2016-06-26T18:05:35Z<p>Monroe88: Monroe88 uploaded a new version of &quot;File:Lcd-grid.png&quot;</p>
<hr />
<div>[https://github.com/libretro/common-shaders/blob/master/cgp/lowquality-lcd.cgp lowquality-lcd.cgp]<br />
<br />
cgwg's lcd-grid shader with image-adjustment color settings.</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Shaders_and_filters&diff=10828Shaders and filters2016-06-25T21:32:46Z<p>Monroe88: Vulkan slang shader extensions</p>
<hr />
<div>Shaders and filters can be applied to video games to achieve some kind of visual effect. These can be from attempting to replicate [[Recommended Displays|aperture grille]] displays, NTSC signals, or something more exotic.<br />
<br />
==Emulator support==<br />
{| class="wikitable"<br />
! scope="col" style="text-align: center;"|Name<br />
! scope="col" style="text-align: center;"|Shader file types<br />
! scope="col" style="text-align: center;"|Notes<br />
|-<br />
| style="text-align: center;"|[[RetroArch]]<br />
|.cg, .cgp, .glsl, .glslp, .slang, .slangp, .dll/.so<br />
|<br />
Old bsnes XML shaders (.shader) and old bsnes filter plugins (.filter) are no longer usable in current versions of RetroArch.<br />
SoftFilters are dynamic libraries, the extension depends on platform.<br />
<br />
.cgp stacks several .cg files on top of one another. Same thing with .glslp and .slangp.<br />
|-<br />
| style="text-align: center;"|[[DOSBox]]<br />
|.fx<br />
|Only on special builds such as [http://ykhwong.x-y.net/ SVN Daum].<br />
|-<br />
| style="text-align: center;"|[[Higan]]<br />
|.filter, .shader, folders<br />
|<br />
.shader removed in future higan releases in favor of Quark shader folders.<br />
<br />
.filter works in old [[higan|bsnes]] versions (circa v82) but not current in current versions of higan.<br />
|-<br />
| style="text-align: center;"|[[HqMAME]]<br />
|.fx<br />
|xBRZ and HQx<br />
|-<br />
| style="text-align: center;"|[[OpenEMU]]<br />
|.cg,<br />
|<br />
|-<br />
| style="text-align: center;"|[[Snes9x]]<br />
|.cg, .shader<br />
|<br />
|-<br />
| style="text-align: center;"|[[Project64]]<br />
|.fx<br />
|Only with a [http://www.lanpartyguide.com/zelda/shaders.html custom Rice Video plugin].<br />
|-<br />
| style="text-align: center;"|[[PCSX-R]]<br />
|.slv/.slf, .vp/.fp<br />
|Requires Pete's OpenGL2 or gpuBladeSoft.<br />
|-<br />
| style="text-align: center;"|[[ePSXe]]<br />
|.slv/.slf, .vp/.fp<br />
|Requires Pete's OpenGL2 or gpuBladeSoft.<br />
|-<br />
| style="text-align: center;"|[[PCSX2]]<br />
|.fx<br />
|Must be named shader.fx and be in the main directory. PageUp to activate.<br />
|-<br />
| style="text-align: center;"|[[Dolphin]]<br />
|.txt<br />
|Can only be used with OpenGL backend.<br />
|-<br />
| style="text-align: center;"|Mobile<br />
|.glsl<br />
|GLSL is the shader language used by default on mobile (Android/iOS/Blackberry).<br />
|-<br />
| style="text-align: center;"|Mobile<br />
|.glslp<br />
|GLSL equiv. of cgp - possible to stack several shaders with this.<br />
|}<br />
<br />
==Types==<br />
{{Main|List of shaders and filters}}<br />
[[File:Crt-geom.png|thumb|190px|crt-geom-flat.cg, a popular CRT shader. ]]<br />
===CRT Shaders===<br />
{{Main|CRT Shaders}}<br />
<br />
Most of these replicate aperture grille CRTs, which have sharp images and strong scanlines. Only a few replicate shadow mask CRTs, often requiring much higher resolutions.<br />
===NTSC Filters===<br />
{{Main|NTSC filters}}<br />
<br />
These replicate the signals that consoles output to the TV. They vary in quality, with the lowest being RF, then composite, then s-video and RGB (scart) being the highest quality. Many emulators have NTSC filters built into them. They can also be separately downloaded in filter plugin format.<br />
<br />
===LCD Shaders===<br />
[[File:Lcd-grid.png|thumb|256px|cgwg's lcd-grid shader with image-adjustment color settings.]]<br />
These replicate the look of a low resolution LCD display common on handhelds. These can range from a simple grid drawn around the pixels to a detailed recreation of each pixel's RGB subpixels. May also include motion blurring to simulate ghosting and washed out color gamuts.<br />
<br />
===GameBoy Shader===<br />
[[File:Gb.png|thumb|190px|GameBoy Shader with default urine palette. Other palettes are available.]]<br />
<br />
This .cgp shader replicates the dot matrix screen of a Game Boy, complete with the ghosting problems to reproduce certain visual effects. Made by Harlequin. Requires [[RetroArch]].<br />
<br />
===Smoothing shaders===<br />
<br />
These shaders, such as 2xSai, Super Eagle, Super 2xSai, scaleX , HQx , xBR and xBRZ attempt to reduce the pixellation by smoothing and rounding. They can cause a lot of false positives and distortions, however, scaling the image 2x or 3x using nearest neighbor, then applying the smoothing shader will reduce the intensity of the smoothing by keeping the pixel shapes intact, eliminating most distortions while keeping a fairly smooth look.<br />
<br />
===Dithering===<br />
<br />
These are shaders designed to detect and smooth [[dithering]]. [https://github.com/libretro/common-shaders/tree/master/dithering mdapt] is a popular one. There is also newer gdapt.<br />
<br />
===Pixellate===<br />
<br />
This shader is supposed to appear the same as nearest neighbor (aka "unfiltered"), except with minor corrections when using a non-integer scale that are increasingly less noticeable the higher it is scaled. This shader is very useful to anyone who wants to keep things as sharp as possible without worrying about scale factors. Available in [https://github.com/hizzlekizzle/quark-shaders/tree/master/Pixellate.shader Quark] and [https://github.com/libretro/common-shaders/blob/master/retro/shaders/pixellate.cg Cg] shader formats.<br />
<br />
===Border===<br />
<br />
A [https://github.com/libretro/common-shaders/tree/master/borders shader] that applies a border overlay to the game image. Can be used to fill empty areas on widescreen monitors with artwork, display a CRT or handheld bezel, or simulate [https://github.com/libretro/common-shaders/tree/master/borders/gameboy-player Game Boy Player] and [https://github.com/libretro/common-shaders/tree/master/borders/sgb Super Game Boy] output.<br />
<br />
===Image Adjustment===<br />
<br />
Image adjustment shaders allow you to adjust the color levels of an image, including gamma, luminance, contrast, saturation, etc., for personal preference, accuracy, or compensating your display. Very often, these are used alongside other shaders. There are also [https://github.com/Monroe88/common-shaders/tree/color-lcd/handheld/color-lcd shaders] that simulate the color profiles of specific displays, such as the GBA or DS.<br />
<br />
==Shaders on real CRTs==<br />
<br />
On 31+kHz PC CRT monitors displaying in high resolution modes, most filters/shaders should work fine as is, as most were intended for output scaled 3x or higher. <br />
<br />
However, CRT monitors (and 15kHz CRTs) displaying in low resolution modes like 240p or 480p, you will find many of them won't work correctly due to the low output resolution. In these cases you should use shaders that are applied only on the horizontal axis, only make changes to color output without scaling, or those that add scanlines/interlacing for 480p output. <br />
<br />
You can combine those things with these two shader presets: [https://github.com/libretro/common-shaders/blob/master/cgp/tvout/tvout.cgp tvout.cgp] for 240p and [https://github.com/libretro/common-shaders/blob/master/cgp/tvout%2Binterlacing/tvout%2Binterlacing.cgp tvout+interlacing.cgp] for 480p. Both of these allow you to have adjustable signal resolution blur applied horizontally, as well as color controls like gamma, saturation, and the option to use TV color range (16-235) instead of PC color range (0-255), while the 480p version provides a scanline shader that is interlaced on 480-line content. The signal resolution blur works best if you use a large horizontal resolution (1280 or higher recommended) while keeping your vertical resolution at 240 or 480, and setting the aspect ratio of the emulator to stretch to fit. The higher horizontal resolution will make it look very natural and convincing, avoiding banding issues. Can be combined with NTSC filters/shaders for maximum authenticity, check out the shader presets in [https://github.com/libretro/common-shaders/tree/master/cgp/tvout /cgp/tvout] and [https://github.com/libretro/common-shaders/tree/master/cgp/tvout%2Binterlacing /cgp/tvout+interlacing] for some examples.<br />
<br />
==Downloads==<br />
<br />
[https://github.com/libretro/common-shaders Libretro Cg shader repository]<br />
<br />
[https://github.com/hizzlekizzle/glsl-shaders Libretro GLSL shader conversion repository]<br />
<br />
[https://mega.nz/#!OJc0DZwT!I_ulxfrXeNuOUxpE2eSKktSxdIktOxx4uzKMyTNdJYs Border Shaders by EndUser]<br />
<br />
[http://www.emu-france.com/emulateurs/5-consoles/51-nintendo-super-nintendo/3677-snes9x-cg-shaders/ Snes9x Cg shader pack]<br />
<br />
[http://www.emucr.com/2013/04/epsxe-shaders-pack-20130427.html ePSXe/PCSX-R shaders]<br />
<br />
[http://www.mediafire.com/?icqpvoc65omra75 PCSX2 shaders]<br />
<br />
==Further reading==<br />
[http://filthypants.blogspot.com/search/label/pixel%20shader All things shaders and filters]<br />
<br />
[https://github.com/Themaister/Emulator-Shader-Pack/blob/master/Cg/README Cg shader spec].<br />
[[Category:FAQs]]<br />
[[Category:Shaders/Filters]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Building_RetroArch&diff=10827Building RetroArch2016-06-25T21:16:48Z<p>Monroe88: Debug build info</p>
<hr />
<div>This page contains instructions of building [[RetroArch]] from source. Most average users should use prebuilt binaries instead.<br />
<br />
=Building on Windows=<br />
The recommended toolchain for building RetroArch on Windows is MinGW-w64 running inside the MSYS2 environment. Installers for MSYS2 can be found at [https://msys2.github.io/ msys2.github.io]. Other toolchains like TDM-GCC or Visual Studio can work, but this guide will only cover MSYS2.<br />
<br />
==Preparing the environment==<br />
<br />
Once you have installed MSYS2, you will need to update it and install the toolchain packages.<br />
<br />
===Updating MSYS2===<br />
<br />
First, start the MSYS2 Shell entry that should be present in your Start Menu.<br />
<br />
Updating your install is a multiple step operation: first you update the core, then you have to rehash the environment and finally you'll be able to properly update the rest of the system. Once you are in the MSYS2 Shell terminal, run the following commands to upgrade the core MSYS2 packages:<br />
<br />
pacman --noconfirm -Sy<br />
pacman --needed --noconfirm -S bash pacman pacman-mirrors msys2-runtime<br />
<br />
When the command is done working, close all MSYS2 shells you might have open and run these commands in the Run as dialog or in <code>cmd.exe</code>:<br />
<br />
*In a 64bit install of MSYS2:<br />
<br />
%systemdrive%\msys64\autorebase.bat<br />
<br />
*In a 32bit install of MSYS2:<br />
<br />
%systemdrive%\msys32\autorebase.bat<br />
<br />
Once the window closes, open the MSYS2 Shell again and type <code>pacman --noconfirm -Su</code> then repeat the previous operation to finish the process.<br />
Note: If you get fork errors, the second step may have failed. You should go to your msys2 install directory and run <code>autorebase.bat</code> manually. If that didn't solve the problem consider reinstalling msys2.<br />
<br />
===Installing the build time dependencies===<br />
<br />
The following commands will install everything you need to build RetroArch in your MSYS2 environment.<br />
<br />
*For 32 bit builds run:<br />
<br />
pacman -S --noconfirm --needed git make mingw-w64-i686-toolchain mingw-w64-i686-pkg-config mingw-w64-i686-SDL2 mingw-w64-i686-libxml2 mingw-w64-i686-freetype mingw-w64-i686 python3 mingw-w64-i686-ffmpeg<br />
<br />
*For 64 bit builds:<br />
<br />
pacman -S --noconfirm --needed git make mingw-w64-x86_64-toolchain mingw-w64-x86_64-pkg-config mingw-w64-x86_64-SDL2 mingw-w64-x86_64-libxml2 mingw-w64-x86_64-freetype mingw-w64-x86_64-python3 mingw-w64-x86_64-ffmpeg<br />
<br />
For the nvidia-cg-toolkit packages, you will need to download the pkg manually from Sourceforge to your home directory for [http://sourceforge.net/projects/msys2/files/REPOS/MINGW_GCC_4_9/i686/mingw-w64-i686-nvidia-cg-toolkit-3.1-2-any.pkg.tar.xz/download 32-bit] or [http://sourceforge.net/projects/msys2/files/REPOS/MINGW_GCC_4_9/x86_64/mingw-w64-x86_64-nvidia-cg-toolkit-3.1-2-any.pkg.tar.xz/download 64-bit], then use pacman to install them.<br />
<br />
*32-bit:<br />
<br />
pacman -U --noconfirm mingw-w64-i686-nvidia-cg-toolkit-3.1-2-any.pkg.tar.xz<br />
<br />
*64-bit:<br />
<br />
pacman -U --noconfirm mingw-w64-x86_64-nvidia-cg-toolkit-3.1-2-any.pkg.tar.xz<br />
<br />
After installing the packages, close the MSYS2 shell and open either MinGW-w64 Win64 Shell for 64 bit builds or MinGW-w64 Win32 Shell if you want to build for 32 bit systems. Both should be available in your Start Menu.<br />
<br />
==Cloning RetroArch and libretro repositories==<br />
<br />
Once you are running the MSY2 MinGW-w64 Shell, then you will need to clone the RetroArch and libretro Git repositories.<br />
<br />
git clone https://github.com/libretro/libretro-super.git<br />
cd libretro-super<br />
./libretro-fetch.sh<br />
<br />
This will fetch every repository in the libretro organization on Github into <code>%MSYS2%/home/%USERNAME%/</code> . Since there are a lot of repositories to download, this will take a while to complete. You can use <code>libretro-fetch.sh</code> again to update all repositories, and you can fetch repositories individually by specifying their name e.g. <code>./libretro-fetch.sh mednafen_psx</code><br />
<br />
If you change a file in one of the cloned repositories and git won't let you update, do:<br />
<br />
git reset --hard<br />
git pull<br />
<br />
It should update after that. If not, delete the whole repository and run <code>libretro-fetch.sh</code> again.<br />
<br />
To change directories/folders do:<br />
<br />
cd folder<br />
or<br />
cd folder/subfolder<br />
<br />
etc.<br />
<br />
To go up one directory:<br />
<br />
cd ..<br />
<br />
Other basic UNIX shell commands like "ls" can be useful as well.<br />
<br />
==Building RetroArch==<br />
<br />
To build RetroArch from the MSY2 MinGW-w64 Shell, execute the following:<br />
<br />
cd libretro-super<br />
cd retroarch<br />
git pull<br />
./configure<br />
make clean<br />
make -j4<br />
<br />
You should see a list of files being compiled, ending with <code>LD retroarch</code>. You can then copy the newly compiled <code>retroarch.exe</code> from <code>libretro-super\retroarch</code> to wherever you keep your RetroArch installation.<br />
<br />
If you want to do a debug build, then execute the following:<br />
<br />
make clean<br />
make DEBUG=1 GL_DEBUG=1 -j4<br />
mv retroarch.exe retroarch_debug.exe<br />
<br />
This build will have all of the debug symbols intact and will be built with compiler optimizations turned off, so it can be run through a debugger like gdb.<br />
<br />
If you are experiencing a missing DLL error, you can fetch all MSYS2 installed DLLs by executing this line:<br />
<br />
for i in $(seq 3); do for bin in $(ldd *exe *dll | grep -i mingw | cut -d\ -f 3); do cp -vu "$bin" . ; done; done<br />
<br />
Video filters and Audio DSP filters are compiled by going into gfx/filters and audio/filters, respectively, and running make on the Makefile. For example<br />
<br />
cd retroarch<br />
cd gfx/filters<br />
make clean<br />
make<br />
<br />
After they build, you can copy the filters to your RetroArch installation.<br />
<br />
==Building libretro cores==<br />
<br />
After running the fetch script, you should have a folder for each libretro core in your libretro-super folder.<br />
<br />
You can use <code>libretro-build.sh</code> to build all cores at once:<br />
<br />
cd libretro-super<br />
./libretro-build.sh<br />
<br />
This will attempt to build almost every core available. This can take quite a while to complete, so you may wish to build cores individually:<br />
<br />
cd libretro-super<br />
./libretro-build.sh mednafen_psx<br />
<br />
The exact names for fetching or building individual cores can be found in the [https://github.com/libretro/libretro-super/blob/master/rules.d/core-rules.sh /rules.d/core-rules.sh] script.<br />
<br />
Cores that build successfully are put in <code>/dist/win</code> or <code>/dist/win_x64</code> in your libretro-super folder. Be sure to run <code>libretro-fetch.sh</code> to update your local Git clones before building.<br />
<br />
==Building cores manually==<br />
<br />
If you wish, you can build cores manually if you want more control over the build process, though it's not recommended for inexperienced users. For most cores, all you need to do is do:<br />
<br />
git pull<br />
make -f Makefile.libretro clean<br />
make -f Makefile.libretro -j4<br />
<br />
If there isn't a Makefile or Makefile.libretro in the top level, try to find a "libretro" folder within the repository and there should be a Makefile in there. After the core is built, it will be in the same folder as the Makefile used to compile it. <br />
<br />
The following need only <code>make</code>:<br />
* 4do-libretro<br />
* any 'beetle' source<br />
* Dinothawr<br />
* dolphin (inside <code>/libretro</code>)<br />
* libretro-cap32<br />
* libretro-lutro<br />
* libretro-o2em<br />
* libretro-ppsspp (inside <code>/libretro</code>)<br />
* libretro-uae<br />
* mednfen-psx-libretro<br />
* nestopia (inside <code>/libretro</code>)<br />
* prosystem-libretro<br />
* stella<br />
* yabause (inside <code>/libretro</code>)<br />
<br />
The following need <code>make -f Makefile.libretro</code>:<br />
* blueMSX-libretro<br />
* desmume (inside <code>/desmume</code>)<br />
* fuse-libretro<br />
* gambatte-libretro (inside <code>/libgambatte</code>)<br />
* Genesis-Plus-GX<br />
* gw-libretro<br />
* Hatari (You may need to run <code>./configure</code>)<br />
* mgba<br />
* picodrive<br />
* snes9x-next<br />
* vba-next<br />
<br />
The following cores also require the running of <code>git submodule update --init</code>:<br />
<br />
* dolphin<br />
* libretro-ppsspp<br />
* picodrive<br />
<br />
Some cores need special commands for building:<br />
<br />
===bsnes===<br />
<br />
cd libretro-bsnes_%PROFILE%<br />
make profile='%PROFILE%' clean<br />
make profile='%PROFILE%' -j4<br />
<br />
Replace %PROFILE% with accuracy, balanced, or performance.<br />
<br />
===MAME===<br />
If doing a 64-bit build.<br />
<br />
cd libretro-mame<br />
make -f Makefile.libretro PTR64=1 clean<br />
make -f Makefile.libretro PTR64=1 -j4<br />
<br />
This core will take a while to build, depending on how fast your CPU is, how many jobs you specify, and how many cores your CPU has. You can save some time updating the core by adding PARTIAL=1 when doing a clean. You can specify a subtarget by adding e.g. <code>SUBTARGET=arcade</code> or <code>SUBTARGET=tiny</code> in the current version of MAME.<br />
<br />
=Building on Linux=<br />
Building on Linux is similar to building on Windows.<br />
<br />
After entering the RetroArch folder, do:<br />
<br />
./configure<br />
<br />
...and install any necessary dependencies before running ./configure again. Then, do:<br />
<br />
make<br />
<br />
<br />
NOTE: Compilation may fail if you do not have the following installed:<br />
<br />
* g++<br />
* libgl1-mesa-dev<br />
* libsdl2-dev<br />
* mesa-common-dev<br />
* pkg-config<br />
<br />
Also, you may need one of the following if RetroArch is to run audio:<br />
<br />
* alsa (libsdl2-dev)<br />
* libpulse (libpulse-dev)<br />
* lossaudo<br />
* lopenal (libopenal-dev)<br />
* jack<br />
* libroar (libroar-dev) WARNING: This might break your compilation.<br />
* rsound<br />
<br />
==Raspberry Pi==<br />
There is a tutorial on how to bypass X11 and use KMS, thus reducing overhead.<br />
<br />
https://www.raspberrypi.org/forums/viewtopic.php?f=78&t=56070<br />
<br />
The above might work on regular desktop Linux, too.<br />
<br />
Even so, if you plan on turning your Raspberry Pi into a "RetroArch machine", the easiest way is installing the [http://blog.petrockblock.com/retropie/retropie-downloads/ RetroPie image]. (You can also run [http://blog.petrockblock.com/2012/07/22/retropie-setup-an-initialization-script-for-retroarch-on-the-raspberry-pi/ its script].)<br />
<br />
[[Category:FAQs]]<br />
[[Category:RetroArch]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Famicom_color_palette&diff=10729Famicom color palette2016-05-22T19:51:32Z<p>Monroe88: Add links to two web-based NTSC NES palette generators</p>
<hr />
<div>Unlike consoles like the SNES, which natively generate the image in pure RGB, the Famicom normally generates and outputs an encoded NTSC video signal, which must then be decoded by the TV's built-in NTSC decoder. This means the resulting color palette often varies depending on the display's decoder. This is why NES games appear to have different colors on different TV sets.<br />
<br />
NES emulators are similarly afflicted by this issue, as they each have their own algorithms for generating the NES color palette, meaning they all have slightly to wildly varying palettes. As such, there isn't really a "true" NES color palette, and which emulator has the "best" palette often comes down to preference, or whichever looks closest to how the real console looks on a user's own particular TV. FCEU based emulators come with a load of different preset palettes based on different people's perceptions of the NES colors, while emulators such as Nestopia have the ability for the user to edit the color palette to their liking, including the use of custom palettes that define the NES palette in any way the user wishes. <br />
<br />
Some arcade machines based on the NES hardware, such as the PlayChoice-10 and the Versus series of cabinets, did generate a native RGB signal, however. The colors on these cabinets tend to be very vibrant and saturated, giving games a very distinct look compared to how they would look on the real console. Nestopia gives the user the choice to use the RGB palette featured in these cabinets, though it is not usually considered to be the definitive or "real" NES palette.<br />
<br />
The [[libretro]] ports of Nestopia<ref name="nestopia_raw">https://github.com/rdanbrook/nestopia/commit/9d58851a22eb3baeee7b4fe28ae8ffaac7eaa599</ref> and FCEUmm<ref name="fceumm_raw">https://github.com/libretro/libretro-fceumm/commit/d370e2d37f9baa26e546e3542104ed04e1bf8965</ref> have the option to output the raw chroma, level, and emphasis from the PPU through the RGB color channels. This by itself produces an image with completely bizarre colors, but this can be decoded by [[shaders]] to generate actual colors, the main example being [https://github.com/libretro/common-shaders/tree/master/crt/shaders/GTU-famicom GTU-Famicom].<br />
<br />
==Download==<br />
* [http://www56.zippyshare.com/v/XEhrvxk8/file.html Palettes download]<br />
<br />
==Chart==<br />
{| class="wikitable"<br />
|+ <br />
|-<br />
! scope="col"|Palette <br />
! scope="col"|Nestopia decoder preset<br />
! scope="col"|NESRGB palette name<br />
! scope="col"|Description<br />
|-<br />
|style="text-align:center;"|YUV<br />
|style="text-align:center;"|15° Canonical<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Based of the standard method of NTSC decoding.<br />
|-<br />
|style="text-align:center;"|RGB<br />
|style="text-align:center;"|RGB<br />
|style="text-align:center;"|Garish<br />
|style="text-align:center;"|The palette used by all official Nintendo RGB PPUs, such as in the PlayChoice-10 and Famicom Titler.<br />
|-<br />
|style="text-align:center;"|YUV (Sony CXA2025AS) <br />
|style="text-align:center;"|Consumer<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Based on an NTSC decoder found in Sony TVs.<br />
|-<br />
|style="text-align:center;"|YUV with yellow boost<br />
|style="text-align:center;"|Alternative<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Based on decoders in certain NTSC-J TVs.<ref>http://forums.nesdev.com/viewtopic.php?f=3&t=4241</ref> <br />
|-<br />
|style="text-align:center;"|Raw Chroma, Level, and Emphasis<br />
|style="text-align:center;"|Raw*<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|The raw chroma, level, and emphasis output of the NES PPU represented in RGB color channels<ref>https://github.com/libretro/nestopia/blob/c2244b8eec1a4f6bbebdd09ec6c4b1552b5610c0/libretro/libretro.cpp#L526</ref><br />
|-<br />
|style="text-align:center;"|Nintendulator NTSC<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Natural<br />
|style="text-align:center;"|Based on what is currently understood about NTSC decoding<ref>http://wiki.nesdev.com/w/index.php/NTSC_video</ref><br />
|-<br />
|style="text-align:center;"|Unsaturated-V5<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A (Optionally available)<br />
|style="text-align:center;"|This palette was created using direct NES composite capture through an XRGB Mini.<ref name="firebrandx">http://www.firebrandx.com/nespalette.html</ref> <br />
|-<br />
|style="text-align:center;"|YUV-V3<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A (Optionally available)<br />
|style="text-align:center;"|This saturated palette is a modified version of the YUV (15° Canonical) palette that fixes some shades of green and cyan.<ref name="firebrandx"></ref> <br />
|-<br />
|style="text-align:center;"|FCEUX<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Improved<br />
|style="text-align:center;"|The default palette for FCEUX is not meant to be accurate, but instead, pleasing to the eye. Some people may prefer this to the other palettes.<br />
|-<br />
|style="text-align:center;"|Rockman 9<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Palettes derived from Mega Man 9.<ref name="ririka">https://sites.google.com/site/insectduel/ririka</ref> "21 to 2C" version is differs in that it darkens a single cyan value (2C).<ref name="ririka"></ref><br />
|-<br />
|style="text-align:center;"|Wii VC<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Palette used in the [[Wii emulators|Wii]] [[Virtual Console]]. <br />
|-<br />
|style="text-align:center;"|3DS VC<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Palette used in the [[Nintendo 3DS emulators|3DS]] [[Virtual Console]]. <br />
|-<br />
|}<br />
<br />
<nowiki>*</nowiki>Only available as an option on the [[libretro]] ports of Nestopia<ref name="nestopia_raw" /> and FCEUmm<ref name="fceumm_raw" />.<br />
<br />
==Palettes==<br />
{|width="100%"<br />
|- valign="top"<br />
|<br />
{| cellpadding="10" cellspacing="0"<br />
|+YUV<br />
|-<br />
| style="background:#666666; color:#FFFFFF" align="center" | 00<br />
| style="background:#002A88; color:#FFFFFF" align="center" | 01<br />
| style="background:#1412A7; color:#FFFFFF" align="center" | 02<br />
| style="background:#3B00A4; color:#FFFFFF" align="center" | 03<br />
| style="background:#5C007E; color:#FFFFFF" align="center" | 04<br />
| style="background:#6E0040; color:#FFFFFF" align="center" | 05<br />
| style="background:#6C0700; color:#FFFFFF" align="center" | 06<br />
| style="background:#561D00; color:#FFFFFF" align="center" | 07<br />
| style="background:#333500; color:#FFFFFF" align="center" | 08<br />
| style="background:#0C4800; color:#FFFFFF" align="center" | 09<br />
| style="background:#005200; color:#FFFFFF" align="center" | 0A<br />
| style="background:#004F08; color:#FFFFFF" align="center" | 0B<br />
| style="background:#00404D; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#ADADAD; color:#FFFFFF" align="center" | 10<br />
| style="background:#155FD9; color:#FFFFFF" align="center" | 11<br />
| style="background:#4240FF; color:#FFFFFF" align="center" | 12<br />
| style="background:#7527FE; color:#FFFFFF" align="center" | 13<br />
| style="background:#A01ACC; color:#FFFFFF" align="center" | 14<br />
| style="background:#B71E7B; color:#FFFFFF" align="center" | 15<br />
| style="background:#B53120; color:#FFFFFF" align="center" | 16<br />
| style="background:#994E00; color:#FFFFFF" align="center" | 17<br />
| style="background:#6B6D00; color:#FFFFFF" align="center" | 18<br />
| style="background:#388700; color:#FFFFFF" align="center" | 19<br />
| style="background:#0D9300; color:#FFFFFF" align="center" | 1A<br />
| style="background:#008F32; color:#FFFFFF" align="center" | 1B<br />
| style="background:#007C8D; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#64B0FF; color:#000000" align="center" | 21<br />
| style="background:#9290FF; color:#000000" align="center" | 22<br />
| style="background:#C676FF; color:#000000" align="center" | 23<br />
| style="background:#F26AFF; color:#000000" align="center" | 24<br />
| style="background:#FF6ECC; color:#000000" align="center" | 25<br />
| style="background:#FF8170; color:#000000" align="center" | 26<br />
| style="background:#EA9E22; color:#000000" align="center" | 27<br />
| style="background:#BCBE00; color:#000000" align="center" | 28<br />
| style="background:#88D800; color:#000000" align="center" | 29<br />
| style="background:#5CE430; color:#000000" align="center" | 2A<br />
| style="background:#45E082; color:#000000" align="center" | 2B<br />
| style="background:#48CDDE; color:#000000" align="center" | 2C<br />
| style="background:#4F4F4F; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#C0DFFF; color:#000000" align="center" | 31<br />
| style="background:#D3D2FF; color:#000000" align="center" | 32<br />
| style="background:#E8C8FF; color:#000000" align="center" | 33<br />
| style="background:#FAC2FF; color:#000000" align="center" | 34<br />
| style="background:#FFC4EA; color:#000000" align="center" | 35<br />
| style="background:#FFCCC5; color:#000000" align="center" | 36<br />
| style="background:#F7D8A5; color:#000000" align="center" | 37<br />
| style="background:#E4E594; color:#000000" align="center" | 38<br />
| style="background:#CFEF96; color:#000000" align="center" | 39<br />
| style="background:#BDF4AB; color:#000000" align="center" | 3A<br />
| style="background:#B3F3CC; color:#000000" align="center" | 3B<br />
| style="background:#B5EBF2; color:#000000" align="center" | 3C<br />
| style="background:#B8B8B8; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+YUV-V3<br />
|-<br />
| style="background:#666666; color:#FFFFFF" align="center" | 00<br />
| style="background:#002a88; color:#FFFFFF" align="center" | 01<br />
| style="background:#1412a7; color:#FFFFFF" align="center" | 02<br />
| style="background:#3b00a4; color:#FFFFFF" align="center" | 03<br />
| style="background:#5c007e; color:#FFFFFF" align="center" | 04<br />
| style="background:#6e0040; color:#FFFFFF" align="center" | 05<br />
| style="background:#6c0700; color:#FFFFFF" align="center" | 06<br />
| style="background:#561d00; color:#FFFFFF" align="center" | 07<br />
| style="background:#333500; color:#FFFFFF" align="center" | 08<br />
| style="background:#0c4800; color:#FFFFFF" align="center" | 09<br />
| style="background:#005200; color:#FFFFFF" align="center" | 0A<br />
| style="background:#004c18; color:#FFFFFF" align="center" | 0B<br />
| style="background:#003e5b; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#adadad; color:#FFFFFF" align="center" | 10<br />
| style="background:#155fd9; color:#FFFFFF" align="center" | 11<br />
| style="background:#4240ff; color:#FFFFFF" align="center" | 12<br />
| style="background:#7527fe; color:#FFFFFF" align="center" | 13<br />
| style="background:#a01acc; color:#FFFFFF" align="center" | 14<br />
| style="background:#b71e7b; color:#FFFFFF" align="center" | 15<br />
| style="background:#b53120; color:#FFFFFF" align="center" | 16<br />
| style="background:#994e00; color:#FFFFFF" align="center" | 17<br />
| style="background:#6b6d00; color:#FFFFFF" align="center" | 18<br />
| style="background:#388700; color:#FFFFFF" align="center" | 19<br />
| style="background:#0d9300; color:#FFFFFF" align="center" | 1A<br />
| style="background:#008c47; color:#FFFFFF" align="center" | 1B<br />
| style="background:#007aa0; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#ffffff; color:#000000" align="center" | 20<br />
| style="background:#64b0ff; color:#000000" align="center" | 21<br />
| style="background:#9290ff; color:#000000" align="center" | 22<br />
| style="background:#c676ff; color:#000000" align="center" | 23<br />
| style="background:#f26aff; color:#000000" align="center" | 24<br />
| style="background:#ff6ecc; color:#000000" align="center" | 25<br />
| style="background:#ff8170; color:#000000" align="center" | 26<br />
| style="background:#ea9e22; color:#000000" align="center" | 27<br />
| style="background:#bcbe00; color:#000000" align="center" | 28<br />
| style="background:#88d800; color:#000000" align="center" | 29<br />
| style="background:#5ce430; color:#000000" align="center" | 2A<br />
| style="background:#45e082; color:#000000" align="center" | 2B<br />
| style="background:#48cdde; color:#000000" align="center" | 2C<br />
| style="background:#4f4f4f; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#ffffff; color:#000000" align="center" | 30<br />
| style="background:#c0dfff; color:#000000" align="center" | 31<br />
| style="background:#d3d2ff; color:#000000" align="center" | 32<br />
| style="background:#e8c8ff; color:#000000" align="center" | 33<br />
| style="background:#fac2ff; color:#000000" align="center" | 34<br />
| style="background:#ffc4ea; color:#000000" align="center" | 35<br />
| style="background:#ffccc5; color:#000000" align="center" | 36<br />
| style="background:#f7d8a5; color:#000000" align="center" | 37<br />
| style="background:#e4e594; color:#000000" align="center" | 38<br />
| style="background:#cfef96; color:#000000" align="center" | 39<br />
| style="background:#bdf4ab; color:#000000" align="center" | 3A<br />
| style="background:#b3f3cc; color:#000000" align="center" | 3B<br />
| style="background:#b5ebf2; color:#000000" align="center" | 3C<br />
| style="background:#b8b8b8; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Unsaturated-V5<br />
|-<br />
| style="background:#6B6B6B; color:#FFFFFF" align="center" | 00<br />
| style="background:#001E87; color:#FFFFFF" align="center" | 01<br />
| style="background:#1F0B96; color:#FFFFFF" align="center" | 02<br />
| style="background:#3B0C87; color:#FFFFFF" align="center" | 03<br />
| style="background:#590D61; color:#FFFFFF" align="center" | 04<br />
| style="background:#5E0528; color:#FFFFFF" align="center" | 05<br />
| style="background:#551100; color:#FFFFFF" align="center" | 06<br />
| style="background:#461B00; color:#FFFFFF" align="center" | 07<br />
| style="background:#303200; color:#FFFFFF" align="center" | 08<br />
| style="background:#0A4800; color:#FFFFFF" align="center" | 09<br />
| style="background:#004E00; color:#FFFFFF" align="center" | 0A<br />
| style="background:#004619; color:#FFFFFF" align="center" | 0B<br />
| style="background:#00395A; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#B2B2B2; color:#FFFFFF" align="center" | 10<br />
| style="background:#1A53D1; color:#FFFFFF" align="center" | 11<br />
| style="background:#4835EE; color:#FFFFFF" align="center" | 12<br />
| style="background:#7123EC; color:#FFFFFF" align="center" | 13<br />
| style="background:#9A1EB7; color:#FFFFFF" align="center" | 14<br />
| style="background:#A51E62; color:#FFFFFF" align="center" | 15<br />
| style="background:#A52D19; color:#FFFFFF" align="center" | 16<br />
| style="background:#874B00; color:#FFFFFF" align="center" | 17<br />
| style="background:#676900; color:#FFFFFF" align="center" | 18<br />
| style="background:#298400; color:#FFFFFF" align="center" | 19<br />
| style="background:#038B00; color:#FFFFFF" align="center" | 1A<br />
| style="background:#008240; color:#FFFFFF" align="center" | 1B<br />
| style="background:#007096; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#63ADFD; color:#000000" align="center" | 21<br />
| style="background:#908AFE; color:#000000" align="center" | 22<br />
| style="background:#B977FC; color:#000000" align="center" | 23<br />
| style="background:#E771FE; color:#000000" align="center" | 24<br />
| style="background:#F76FC9; color:#000000" align="center" | 25<br />
| style="background:#F5836A; color:#000000" align="center" | 26<br />
| style="background:#DD9C29; color:#000000" align="center" | 27<br />
| style="background:#BDB807; color:#000000" align="center" | 28<br />
| style="background:#84D107; color:#000000" align="center" | 29<br />
| style="background:#5BDC3B; color:#000000" align="center" | 2A<br />
| style="background:#48D77D; color:#000000" align="center" | 2B<br />
| style="background:#48C6D8; color:#000000" align="center" | 2C<br />
| style="background:#555555; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#C4E3FE; color:#000000" align="center" | 31<br />
| style="background:#D7D5FE; color:#000000" align="center" | 32<br />
| style="background:#E6CDFE; color:#000000" align="center" | 33<br />
| style="background:#F9CAFE; color:#000000" align="center" | 34<br />
| style="background:#FEC9F0; color:#000000" align="center" | 35<br />
| style="background:#FED1C7; color:#000000" align="center" | 36<br />
| style="background:#F7DCAC; color:#000000" align="center" | 37<br />
| style="background:#E8E89C; color:#000000" align="center" | 38<br />
| style="background:#D1F29D; color:#000000" align="center" | 39<br />
| style="background:#BFF4B1; color:#000000" align="center" | 3A<br />
| style="background:#B7F5CD; color:#000000" align="center" | 3B<br />
| style="background:#B7EBF2; color:#000000" align="center" | 3C<br />
| style="background:#BEBEBE; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Nintendulator NTSC<br />
|-<br />
| style="background:#656565; color:#FFFFFF" align="center" | 00<br />
| style="background:#002B9B; color:#FFFFFF" align="center" | 01<br />
| style="background:#110EC0; color:#FFFFFF" align="center" | 02<br />
| style="background:#3F00BC; color:#FFFFFF" align="center" | 03<br />
| style="background:#66008F; color:#FFFFFF" align="center" | 04<br />
| style="background:#7B0045; color:#FFFFFF" align="center" | 05<br />
| style="background:#790100; color:#FFFFFF" align="center" | 06<br />
| style="background:#601C00; color:#FFFFFF" align="center" | 07<br />
| style="background:#363800; color:#FFFFFF" align="center" | 08<br />
| style="background:#084F00; color:#FFFFFF" align="center" | 09<br />
| style="background:#005A00; color:#FFFFFF" align="center" | 0A<br />
| style="background:#005702; color:#FFFFFF" align="center" | 0B<br />
| style="background:#004555; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#AEAEAE; color:#FFFFFF" align="center" | 10<br />
| style="background:#0761F5; color:#FFFFFF" align="center" | 11<br />
| style="background:#3E3BFF; color:#FFFFFF" align="center" | 12<br />
| style="background:#7C1DFF; color:#FFFFFF" align="center" | 13<br />
| style="background:#AF0EE5; color:#FFFFFF" align="center" | 14<br />
| style="background:#CB1383; color:#FFFFFF" align="center" | 15<br />
| style="background:#C82A15; color:#FFFFFF" align="center" | 16<br />
| style="background:#A74D00; color:#FFFFFF" align="center" | 17<br />
| style="background:#6F7200; color:#FFFFFF" align="center" | 18<br />
| style="background:#329100; color:#FFFFFF" align="center" | 19<br />
| style="background:#009F00; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009B2A; color:#FFFFFF" align="center" | 1B<br />
| style="background:#008498; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#56B1FF; color:#000000" align="center" | 21<br />
| style="background:#8E8BFF; color:#000000" align="center" | 22<br />
| style="background:#CC6CFF; color:#000000" align="center" | 23<br />
| style="background:#FF5DFF; color:#000000" align="center" | 24<br />
| style="background:#FF62D4; color:#000000" align="center" | 25<br />
| style="background:#FF7964; color:#000000" align="center" | 26<br />
| style="background:#F89D06; color:#000000" align="center" | 27<br />
| style="background:#C0C300; color:#000000" align="center" | 28<br />
| style="background:#81E200; color:#000000" align="center" | 29<br />
| style="background:#4DF116; color:#000000" align="center" | 2A<br />
| style="background:#30EC7A; color:#000000" align="center" | 2B<br />
| style="background:#34D5EA; color:#000000" align="center" | 2C<br />
| style="background:#4E4E4E; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#BADFFF; color:#000000" align="center" | 31<br />
| style="background:#D1D0FF; color:#000000" align="center" | 32<br />
| style="background:#EBC3FF; color:#000000" align="center" | 33<br />
| style="background:#FFBDFF; color:#000000" align="center" | 34<br />
| style="background:#FFBFEE; color:#000000" align="center" | 35<br />
| style="background:#FFC8C0; color:#000000" align="center" | 36<br />
| style="background:#FCD799; color:#000000" align="center" | 37<br />
| style="background:#E5E784; color:#000000" align="center" | 38<br />
| style="background:#CCF387; color:#000000" align="center" | 39<br />
| style="background:#B6F9A0; color:#000000" align="center" | 3A<br />
| style="background:#AAF8C9; color:#000000" align="center" | 3B<br />
| style="background:#ACEEF7; color:#000000" align="center" | 3C<br />
| style="background:#B7B7B7; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+FCEUX<br />
|-<br />
| style="background:#747474; color:#FFFFFF" align="center" | 00<br />
| style="background:#24188C; color:#FFFFFF" align="center" | 01<br />
| style="background:#0000A8; color:#FFFFFF" align="center" | 02<br />
| style="background:#44009C; color:#FFFFFF" align="center" | 03<br />
| style="background:#8C0074; color:#FFFFFF" align="center" | 04<br />
| style="background:#A80010; color:#FFFFFF" align="center" | 05<br />
| style="background:#A40000; color:#FFFFFF" align="center" | 06<br />
| style="background:#7C0800; color:#FFFFFF" align="center" | 07<br />
| style="background:#402C00; color:#FFFFFF" align="center" | 08<br />
| style="background:#004400; color:#FFFFFF" align="center" | 09<br />
| style="background:#005000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003C14; color:#FFFFFF" align="center" | 0B<br />
| style="background:#183C5C; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#BCBCBC; color:#FFFFFF" align="center" | 10<br />
| style="background:#0070EC; color:#FFFFFF" align="center" | 11<br />
| style="background:#2038EC; color:#FFFFFF" align="center" | 12<br />
| style="background:#8000F0; color:#FFFFFF" align="center" | 13<br />
| style="background:#BC00BC; color:#FFFFFF" align="center" | 14<br />
| style="background:#E40058; color:#FFFFFF" align="center" | 15<br />
| style="background:#D82800; color:#FFFFFF" align="center" | 16<br />
| style="background:#C84C0C; color:#FFFFFF" align="center" | 17<br />
| style="background:#887000; color:#FFFFFF" align="center" | 18<br />
| style="background:#009400; color:#FFFFFF" align="center" | 19<br />
| style="background:#00A800; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009038; color:#FFFFFF" align="center" | 1B<br />
| style="background:#008088; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#FCFCFC; color:#000000" align="center" | 20<br />
| style="background:#3CBCFC; color:#000000" align="center" | 21<br />
| style="background:#5C94FC; color:#000000" align="center" | 22<br />
| style="background:#CC88FC; color:#000000" align="center" | 23<br />
| style="background:#F478FC; color:#000000" align="center" | 24<br />
| style="background:#FC74B4; color:#000000" align="center" | 25<br />
| style="background:#FC7460; color:#000000" align="center" | 26<br />
| style="background:#FC9838; color:#000000" align="center" | 27<br />
| style="background:#F0BC3C; color:#000000" align="center" | 28<br />
| style="background:#80D010; color:#000000" align="center" | 29<br />
| style="background:#4CDC48; color:#000000" align="center" | 2A<br />
| style="background:#58F898; color:#000000" align="center" | 2B<br />
| style="background:#00E8D8; color:#000000" align="center" | 2C<br />
| style="background:#787878; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#FCFCFC; color:#000000" align="center" | 30<br />
| style="background:#A8E4FC; color:#000000" align="center" | 31<br />
| style="background:#C4D4FC; color:#000000" align="center" | 32<br />
| style="background:#D4C8FC; color:#000000" align="center" | 33<br />
| style="background:#FCC4FC; color:#000000" align="center" | 34<br />
| style="background:#FCC4D8; color:#000000" align="center" | 35<br />
| style="background:#FCBCB0; color:#000000" align="center" | 36<br />
| style="background:#FCD8A8; color:#000000" align="center" | 37<br />
| style="background:#FCE4A0; color:#000000" align="center" | 38<br />
| style="background:#E0FCA0; color:#000000" align="center" | 39<br />
| style="background:#A8F0BC; color:#000000" align="center" | 3A<br />
| style="background:#B0FCCC; color:#000000" align="center" | 3B<br />
| style="background:#9CFCF0; color:#000000" align="center" | 3C<br />
| style="background:#C4C4C4; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
|<br />
{| cellpadding="10" cellspacing="0"<br />
|+RGB<br />
|-<br />
| style="background:#6D6D6D; color:#FFFFFF" align="center" | 00<br />
| style="background:#002492; color:#FFFFFF" align="center" | 01<br />
| style="background:#0000DB; color:#FFFFFF" align="center" | 02<br />
| style="background:#6D49DB; color:#FFFFFF" align="center" | 03<br />
| style="background:#92006D; color:#FFFFFF" align="center" | 04<br />
| style="background:#B6006D; color:#FFFFFF" align="center" | 05<br />
| style="background:#B62400; color:#FFFFFF" align="center" | 06<br />
| style="background:#924900; color:#FFFFFF" align="center" | 07<br />
| style="background:#6D4900; color:#FFFFFF" align="center" | 08<br />
| style="background:#244900; color:#FFFFFF" align="center" | 09<br />
| style="background:#006D24; color:#FFFFFF" align="center" | 0A<br />
| style="background:#009200; color:#FFFFFF" align="center" | 0B<br />
| style="background:#004949; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#B6B6B6; color:#FFFFFF" align="center" | 10<br />
| style="background:#006DDB; color:#FFFFFF" align="center" | 11<br />
| style="background:#0049FF; color:#FFFFFF" align="center" | 12<br />
| style="background:#9200FF; color:#FFFFFF" align="center" | 13<br />
| style="background:#B600FF; color:#FFFFFF" align="center" | 14<br />
| style="background:#FF0092; color:#FFFFFF" align="center" | 15<br />
| style="background:#FF0000; color:#FFFFFF" align="center" | 16<br />
| style="background:#DB6D00; color:#FFFFFF" align="center" | 17<br />
| style="background:#926D00; color:#FFFFFF" align="center" | 18<br />
| style="background:#249200; color:#FFFFFF" align="center" | 19<br />
| style="background:#009200; color:#FFFFFF" align="center" | 1A<br />
| style="background:#00B66D; color:#FFFFFF" align="center" | 1B<br />
| style="background:#009292; color:#FFFFFF" align="center" | 1C<br />
| style="background:#242424; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#6DB6FF; color:#000000" align="center" | 21<br />
| style="background:#9292FF; color:#000000" align="center" | 22<br />
| style="background:#DB6DFF; color:#000000" align="center" | 23<br />
| style="background:#FF00FF; color:#000000" align="center" | 24<br />
| style="background:#FF6DFF; color:#000000" align="center" | 25<br />
| style="background:#FF9200; color:#000000" align="center" | 26<br />
| style="background:#FFB600; color:#000000" align="center" | 27<br />
| style="background:#DBDB00; color:#000000" align="center" | 28<br />
| style="background:#6DDB00; color:#000000" align="center" | 29<br />
| style="background:#00FF00; color:#000000" align="center" | 2A<br />
| style="background:#49FFDB; color:#000000" align="center" | 2B<br />
| style="background:#00FFFF; color:#000000" align="center" | 2C<br />
| style="background:#494949; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#B6DBFF; color:#000000" align="center" | 31<br />
| style="background:#DBB6FF; color:#000000" align="center" | 32<br />
| style="background:#FFB6FF; color:#000000" align="center" | 33<br />
| style="background:#FF92FF; color:#000000" align="center" | 34<br />
| style="background:#FFB6B6; color:#000000" align="center" | 35<br />
| style="background:#FFDB92; color:#000000" align="center" | 36<br />
| style="background:#FFFF49; color:#000000" align="center" | 37<br />
| style="background:#FFFF6D; color:#000000" align="center" | 38<br />
| style="background:#B6FF49; color:#000000" align="center" | 39<br />
| style="background:#92FF6D; color:#000000" align="center" | 3A<br />
| style="background:#49FFDB; color:#000000" align="center" | 3B<br />
| style="background:#92DBFF; color:#000000" align="center" | 3C<br />
| style="background:#929292; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Rockman 9<br />
|-<br />
| style="background:#707070; color:#FFFFFF" align="center" | 00<br />
| style="background:#0000A8; color:#FFFFFF" align="center" | 01<br />
| style="background:#201888; color:#FFFFFF" align="center" | 02<br />
| style="background:#400098; color:#FFFFFF" align="center" | 03<br />
| style="background:#880070; color:#FFFFFF" align="center" | 04<br />
| style="background:#A80010; color:#FFFFFF" align="center" | 05<br />
| style="background:#A00000; color:#FFFFFF" align="center" | 06<br />
| style="background:#780800; color:#FFFFFF" align="center" | 07<br />
| style="background:#402800; color:#FFFFFF" align="center" | 08<br />
| style="background:#004000; color:#FFFFFF" align="center" | 09<br />
| style="background:#005000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003810; color:#FFFFFF" align="center" | 0B<br />
| style="background:#183858; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#B8B8B8; color:#FFFFFF" align="center" | 10<br />
| style="background:#0070E8; color:#FFFFFF" align="center" | 11<br />
| style="background:#2038E8; color:#FFFFFF" align="center" | 12<br />
| style="background:#8000F0; color:#FFFFFF" align="center" | 13<br />
| style="background:#B800B8; color:#FFFFFF" align="center" | 14<br />
| style="background:#E00058; color:#FFFFFF" align="center" | 15<br />
| style="background:#D82800; color:#FFFFFF" align="center" | 16<br />
| style="background:#C84808; color:#FFFFFF" align="center" | 17<br />
| style="background:#887000; color:#FFFFFF" align="center" | 18<br />
| style="background:#009000; color:#FFFFFF" align="center" | 19<br />
| style="background:#00A800; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009038; color:#FFFFFF" align="center" | 1B<br />
| style="background:#008088; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#F8F8F8; color:#000000" align="center" | 20<br />
| style="background:#38B8F8; color:#000000" align="center" | 21<br />
| style="background:#5890F8; color:#000000" align="center" | 22<br />
| style="background:#A088F8; color:#000000" align="center" | 23<br />
| style="background:#F078F8; color:#000000" align="center" | 24<br />
| style="background:#F870B0; color:#000000" align="center" | 25<br />
| style="background:#F87060; color:#000000" align="center" | 26<br />
| style="background:#F89838; color:#000000" align="center" | 27<br />
| style="background:#F0B838; color:#000000" align="center" | 28<br />
| style="background:#80D010; color:#000000" align="center" | 29<br />
| style="background:#48D848; color:#000000" align="center" | 2A<br />
| style="background:#58F898; color:#000000" align="center" | 2B<br />
| style="background:#00E8D8; color:#000000" align="center" | 2C<br />
| style="background:#505050; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#F8F8F8; color:#000000" align="center" | 30<br />
| style="background:#A8E0F8; color:#000000" align="center" | 31<br />
| style="background:#C0D0F8; color:#000000" align="center" | 32<br />
| style="background:#D0C8F8; color:#000000" align="center" | 33<br />
| style="background:#F8C0F8; color:#000000" align="center" | 34<br />
| style="background:#F8C0D8; color:#000000" align="center" | 35<br />
| style="background:#F8B8B0; color:#000000" align="center" | 36<br />
| style="background:#F8D8A8; color:#000000" align="center" | 37<br />
| style="background:#F8E0A0; color:#000000" align="center" | 38<br />
| style="background:#E0F8A0; color:#000000" align="center" | 39<br />
| style="background:#A8F0B8; color:#000000" align="center" | 3A<br />
| style="background:#B0F8C8; color:#000000" align="center" | 3B<br />
| style="background:#98F8F0; color:#000000" align="center" | 3C<br />
| style="background:#989898; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Rockman 9 - 21 to 2C<br />
|-<br />
| style="background:#707070; color:#FFFFFF" align="center" | 00<br />
| style="background:#0000A8; color:#FFFFFF" align="center" | 01<br />
| style="background:#201888; color:#FFFFFF" align="center" | 02<br />
| style="background:#400098; color:#FFFFFF" align="center" | 03<br />
| style="background:#880070; color:#FFFFFF" align="center" | 04<br />
| style="background:#A80010; color:#FFFFFF" align="center" | 05<br />
| style="background:#A00000; color:#FFFFFF" align="center" | 06<br />
| style="background:#780800; color:#FFFFFF" align="center" | 07<br />
| style="background:#402800; color:#FFFFFF" align="center" | 08<br />
| style="background:#004000; color:#FFFFFF" align="center" | 09<br />
| style="background:#005000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003810; color:#FFFFFF" align="center" | 0B<br />
| style="background:#183858; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#B8B8B8; color:#FFFFFF" align="center" | 10<br />
| style="background:#0070E8; color:#FFFFFF" align="center" | 11<br />
| style="background:#2038E8; color:#FFFFFF" align="center" | 12<br />
| style="background:#8000F0; color:#FFFFFF" align="center" | 13<br />
| style="background:#B800B8; color:#FFFFFF" align="center" | 14<br />
| style="background:#E00058; color:#FFFFFF" align="center" | 15<br />
| style="background:#D82800; color:#FFFFFF" align="center" | 16<br />
| style="background:#C84808; color:#FFFFFF" align="center" | 17<br />
| style="background:#887000; color:#FFFFFF" align="center" | 18<br />
| style="background:#009000; color:#FFFFFF" align="center" | 19<br />
| style="background:#00A800; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009038; color:#FFFFFF" align="center" | 1B<br />
| style="background:#008088; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#F8F8F8; color:#000000" align="center" | 20<br />
| style="background:#38B8F8; color:#000000" align="center" | 21<br />
| style="background:#5890F8; color:#000000" align="center" | 22<br />
| style="background:#A088F8; color:#000000" align="center" | 23<br />
| style="background:#F078F8; color:#000000" align="center" | 24<br />
| style="background:#F870B0; color:#000000" align="center" | 25<br />
| style="background:#F87060; color:#000000" align="center" | 26<br />
| style="background:#F89838; color:#000000" align="center" | 27<br />
| style="background:#F0B838; color:#000000" align="center" | 28<br />
| style="background:#80D010; color:#000000" align="center" | 29<br />
| style="background:#48D848; color:#000000" align="center" | 2A<br />
| style="background:#58F898; color:#000000" align="center" | 2B<br />
| style="background:#38B8F8; color:#000000" align="center" | 2C<br />
| style="background:#505050; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#F8F8F8; color:#000000" align="center" | 30<br />
| style="background:#A8E0F8; color:#000000" align="center" | 31<br />
| style="background:#C0D0F8; color:#000000" align="center" | 32<br />
| style="background:#D0C8F8; color:#000000" align="center" | 33<br />
| style="background:#F8C0F8; color:#000000" align="center" | 34<br />
| style="background:#F8C0D8; color:#000000" align="center" | 35<br />
| style="background:#F8B8B0; color:#000000" align="center" | 36<br />
| style="background:#F8D8A8; color:#000000" align="center" | 37<br />
| style="background:#F8E0A0; color:#000000" align="center" | 38<br />
| style="background:#E0F8A0; color:#000000" align="center" | 39<br />
| style="background:#A8F0B8; color:#000000" align="center" | 3A<br />
| style="background:#B0F8C8; color:#000000" align="center" | 3B<br />
| style="background:#98F8F0; color:#000000" align="center" | 3C<br />
| style="background:#989898; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Wii VC<br />
|-<br />
| style="background:#494949; color:#FFFFFF" align="center" | 00<br />
| style="background:#00006A; color:#FFFFFF" align="center" | 01<br />
| style="background:#090063; color:#FFFFFF" align="center" | 02<br />
| style="background:#290059; color:#FFFFFF" align="center" | 03<br />
| style="background:#42004A; color:#FFFFFF" align="center" | 04<br />
| style="background:#490000; color:#FFFFFF" align="center" | 05<br />
| style="background:#420000; color:#FFFFFF" align="center" | 06<br />
| style="background:#291100; color:#FFFFFF" align="center" | 07<br />
| style="background:#182700; color:#FFFFFF" align="center" | 08<br />
| style="background:#003010; color:#FFFFFF" align="center" | 09<br />
| style="background:#003000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#002910; color:#FFFFFF" align="center" | 0B<br />
| style="background:#012043; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#747174; color:#FFFFFF" align="center" | 10<br />
| style="background:#003084; color:#FFFFFF" align="center" | 11<br />
| style="background:#3101AC; color:#FFFFFF" align="center" | 12<br />
| style="background:#4B0194; color:#FFFFFF" align="center" | 13<br />
| style="background:#64007B; color:#FFFFFF" align="center" | 14<br />
| style="background:#6B0039; color:#FFFFFF" align="center" | 15<br />
| style="background:#6B2101; color:#FFFFFF" align="center" | 16<br />
| style="background:#5A2F00; color:#FFFFFF" align="center" | 17<br />
| style="background:#424900; color:#FFFFFF" align="center" | 18<br />
| style="background:#185901; color:#FFFFFF" align="center" | 19<br />
| style="background:#105901; color:#FFFFFF" align="center" | 1A<br />
| style="background:#015932; color:#FFFFFF" align="center" | 1B<br />
| style="background:#01495A; color:#FFFFFF" align="center" | 1C<br />
| style="background:#101010; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#ADADAD; color:#000000" align="center" | 20<br />
| style="background:#4A71B6; color:#000000" align="center" | 21<br />
| style="background:#6458D5; color:#000000" align="center" | 22<br />
| style="background:#8450E6; color:#000000" align="center" | 23<br />
| style="background:#A451AD; color:#000000" align="center" | 24<br />
| style="background:#AD4984; color:#000000" align="center" | 25<br />
| style="background:#B5624A; color:#000000" align="center" | 26<br />
| style="background:#947132; color:#000000" align="center" | 27<br />
| style="background:#7B722A; color:#000000" align="center" | 28<br />
| style="background:#5A8601; color:#000000" align="center" | 29<br />
| style="background:#388E31; color:#000000" align="center" | 2A<br />
| style="background:#318E5A; color:#000000" align="center" | 2B<br />
| style="background:#398E8D; color:#000000" align="center" | 2C<br />
| style="background:#383838; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#B6B6B6; color:#000000" align="center" | 30<br />
| style="background:#8C9DB5; color:#000000" align="center" | 31<br />
| style="background:#8D8EAE; color:#000000" align="center" | 32<br />
| style="background:#9C8EBC; color:#000000" align="center" | 33<br />
| style="background:#A687BC; color:#000000" align="center" | 34<br />
| style="background:#AD8D9D; color:#000000" align="center" | 35<br />
| style="background:#AE968C; color:#000000" align="center" | 36<br />
| style="background:#9C8F7C; color:#000000" align="center" | 37<br />
| style="background:#9C9E72; color:#000000" align="center" | 38<br />
| style="background:#94A67C; color:#000000" align="center" | 39<br />
| style="background:#84A77B; color:#000000" align="center" | 3A<br />
| style="background:#7C9D84; color:#000000" align="center" | 3B<br />
| style="background:#73968D; color:#000000" align="center" | 3C<br />
| style="background:#DEDEDE; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+3DS VC<br />
|-<br />
| style="background:#737373; color:#FFFFFF" align="center" | 00<br />
| style="background:#21188C; color:#FFFFFF" align="center" | 01<br />
| style="background:#0000AD; color:#FFFFFF" align="center" | 02<br />
| style="background:#42009C; color:#FFFFFF" align="center" | 03<br />
| style="background:#8C0073; color:#FFFFFF" align="center" | 04<br />
| style="background:#AD0010; color:#FFFFFF" align="center" | 05<br />
| style="background:#A50000; color:#FFFFFF" align="center" | 06<br />
| style="background:#7B0800; color:#FFFFFF" align="center" | 07<br />
| style="background:#422900; color:#FFFFFF" align="center" | 08<br />
| style="background:#004200; color:#FFFFFF" align="center" | 09<br />
| style="background:#005200; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003910; color:#FFFFFF" align="center" | 0B<br />
| style="background:#18395A; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#BDBDBD; color:#FFFFFF" align="center" | 10<br />
| style="background:#0073EF; color:#FFFFFF" align="center" | 11<br />
| style="background:#2139EF; color:#FFFFFF" align="center" | 12<br />
| style="background:#8400F7; color:#FFFFFF" align="center" | 13<br />
| style="background:#BD00BD; color:#FFFFFF" align="center" | 14<br />
| style="background:#E7005A; color:#FFFFFF" align="center" | 15<br />
| style="background:#DE2900; color:#FFFFFF" align="center" | 16<br />
| style="background:#CE4A08; color:#FFFFFF" align="center" | 17<br />
| style="background:#8C7300; color:#FFFFFF" align="center" | 18<br />
| style="background:#009400; color:#FFFFFF" align="center" | 19<br />
| style="background:#00AD00; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009439; color:#FFFFFF" align="center" | 1B<br />
| style="background:#00848C; color:#FFFFFF" align="center" | 1C<br />
| style="background:#101010; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#39BDFF; color:#000000" align="center" | 21<br />
| style="background:#5A94FF; color:#000000" align="center" | 22<br />
| style="background:#A58CFF; color:#000000" align="center" | 23<br />
| style="background:#F77BFF; color:#000000" align="center" | 24<br />
| style="background:#FF73B5; color:#000000" align="center" | 25<br />
| style="background:#FF7363; color:#000000" align="center" | 26<br />
| style="background:#FF9C39; color:#000000" align="center" | 27<br />
| style="background:#F7BD39; color:#000000" align="center" | 28<br />
| style="background:#84D610; color:#000000" align="center" | 29<br />
| style="background:#4ADE4A; color:#000000" align="center" | 2A<br />
| style="background:#5AFF9C; color:#000000" align="center" | 2B<br />
| style="background:#00EFDE; color:#000000" align="center" | 2C<br />
| style="background:#393939; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#ADE7FF; color:#000000" align="center" | 31<br />
| style="background:#C6D6FF; color:#000000" align="center" | 32<br />
| style="background:#D6CEFF; color:#000000" align="center" | 33<br />
| style="background:#FFC6FF; color:#000000" align="center" | 34<br />
| style="background:#FFC6DE; color:#000000" align="center" | 35<br />
| style="background:#FFBDB5; color:#000000" align="center" | 36<br />
| style="background:#FFDEAD; color:#000000" align="center" | 37<br />
| style="background:#FFE7A5; color:#000000" align="center" | 38<br />
| style="background:#E7FFA5; color:#000000" align="center" | 39<br />
| style="background:#ADF7BD; color:#000000" align="center" | 3A<br />
| style="background:#B5FFCE; color:#000000" align="center" | 3B<br />
| style="background:#9CFFF7; color:#000000" align="center" | 3C<br />
| style="background:#8C8C8C; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
|}<br />
==Gallery==<br />
<br />
==External Links==<br />
*[http://bisqwit.iki.fi/utils/nespalette.php Bisqwit's NTSC NES palette generator]<br />
*[http://drag.wootest.net/misc/palgen.html Drag's NTSC NES palette generator]<br />
<br />
==References==<br />
{{reflist|2}}<br />
<br />
[[Category:FAQs]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Famicom_color_palette&diff=10728Famicom color palette2016-05-22T19:46:24Z<p>Monroe88: Change raw palette description to be more accurate</p>
<hr />
<div>Unlike consoles like the SNES, which natively generate the image in pure RGB, the Famicom normally generates and outputs an encoded NTSC video signal, which must then be decoded by the TV's built-in NTSC decoder. This means the resulting color palette often varies depending on the display's decoder. This is why NES games appear to have different colors on different TV sets.<br />
<br />
NES emulators are similarly afflicted by this issue, as they each have their own algorithms for generating the NES color palette, meaning they all have slightly to wildly varying palettes. As such, there isn't really a "true" NES color palette, and which emulator has the "best" palette often comes down to preference, or whichever looks closest to how the real console looks on a user's own particular TV. FCEU based emulators come with a load of different preset palettes based on different people's perceptions of the NES colors, while emulators such as Nestopia have the ability for the user to edit the color palette to their liking, including the use of custom palettes that define the NES palette in any way the user wishes. <br />
<br />
Some arcade machines based on the NES hardware, such as the PlayChoice-10 and the Versus series of cabinets, did generate a native RGB signal, however. The colors on these cabinets tend to be very vibrant and saturated, giving games a very distinct look compared to how they would look on the real console. Nestopia gives the user the choice to use the RGB palette featured in these cabinets, though it is not usually considered to be the definitive or "real" NES palette.<br />
<br />
The [[libretro]] ports of Nestopia<ref name="nestopia_raw">https://github.com/rdanbrook/nestopia/commit/9d58851a22eb3baeee7b4fe28ae8ffaac7eaa599</ref> and FCEUmm<ref name="fceumm_raw">https://github.com/libretro/libretro-fceumm/commit/d370e2d37f9baa26e546e3542104ed04e1bf8965</ref> have the option to output the raw chroma, level, and emphasis from the PPU through the RGB color channels. This by itself produces an image with completely bizarre colors, but this can be decoded by [[shaders]] to generate actual colors, the main example being [https://github.com/libretro/common-shaders/tree/master/crt/shaders/GTU-famicom GTU-Famicom].<br />
<br />
==Download==<br />
* [http://www56.zippyshare.com/v/XEhrvxk8/file.html Palettes download]<br />
<br />
==Chart==<br />
{| class="wikitable"<br />
|+ <br />
|-<br />
! scope="col"|Palette <br />
! scope="col"|Nestopia decoder preset<br />
! scope="col"|NESRGB palette name<br />
! scope="col"|Description<br />
|-<br />
|style="text-align:center;"|YUV<br />
|style="text-align:center;"|15° Canonical<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Based of the standard method of NTSC decoding.<br />
|-<br />
|style="text-align:center;"|RGB<br />
|style="text-align:center;"|RGB<br />
|style="text-align:center;"|Garish<br />
|style="text-align:center;"|The palette used by all official Nintendo RGB PPUs, such as in the PlayChoice-10 and Famicom Titler.<br />
|-<br />
|style="text-align:center;"|YUV (Sony CXA2025AS) <br />
|style="text-align:center;"|Consumer<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Based on an NTSC decoder found in Sony TVs.<br />
|-<br />
|style="text-align:center;"|YUV with yellow boost<br />
|style="text-align:center;"|Alternative<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Based on decoders in certain NTSC-J TVs.<ref>http://forums.nesdev.com/viewtopic.php?f=3&t=4241</ref> <br />
|-<br />
|style="text-align:center;"|Raw Chroma, Level, and Emphasis<br />
|style="text-align:center;"|Raw*<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|The raw chroma, level, and emphasis output of the NES PPU represented in RGB color channels<ref>https://github.com/libretro/nestopia/blob/c2244b8eec1a4f6bbebdd09ec6c4b1552b5610c0/libretro/libretro.cpp#L526</ref><br />
|-<br />
|style="text-align:center;"|Nintendulator NTSC<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Natural<br />
|style="text-align:center;"|Based on what is currently understood about NTSC decoding<ref>http://wiki.nesdev.com/w/index.php/NTSC_video</ref><br />
|-<br />
|style="text-align:center;"|Unsaturated-V5<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A (Optionally available)<br />
|style="text-align:center;"|This palette was created using direct NES composite capture through an XRGB Mini.<ref name="firebrandx">http://www.firebrandx.com/nespalette.html</ref> <br />
|-<br />
|style="text-align:center;"|YUV-V3<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A (Optionally available)<br />
|style="text-align:center;"|This saturated palette is a modified version of the YUV (15° Canonical) palette that fixes some shades of green and cyan.<ref name="firebrandx"></ref> <br />
|-<br />
|style="text-align:center;"|FCEUX<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Improved<br />
|style="text-align:center;"|The default palette for FCEUX is not meant to be accurate, but instead, pleasing to the eye. Some people may prefer this to the other palettes.<br />
|-<br />
|style="text-align:center;"|Rockman 9<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Palettes derived from Mega Man 9.<ref name="ririka">https://sites.google.com/site/insectduel/ririka</ref> "21 to 2C" version is differs in that it darkens a single cyan value (2C).<ref name="ririka"></ref><br />
|-<br />
|style="text-align:center;"|Wii VC<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Palette used in the [[Wii emulators|Wii]] [[Virtual Console]]. <br />
|-<br />
|style="text-align:center;"|3DS VC<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Palette used in the [[Nintendo 3DS emulators|3DS]] [[Virtual Console]]. <br />
|-<br />
|}<br />
<br />
<nowiki>*</nowiki>Only available as an option on the [[libretro]] ports of Nestopia<ref name="nestopia_raw" /> and FCEUmm<ref name="fceumm_raw" />.<br />
<br />
==Palettes==<br />
{|width="100%"<br />
|- valign="top"<br />
|<br />
{| cellpadding="10" cellspacing="0"<br />
|+YUV<br />
|-<br />
| style="background:#666666; color:#FFFFFF" align="center" | 00<br />
| style="background:#002A88; color:#FFFFFF" align="center" | 01<br />
| style="background:#1412A7; color:#FFFFFF" align="center" | 02<br />
| style="background:#3B00A4; color:#FFFFFF" align="center" | 03<br />
| style="background:#5C007E; color:#FFFFFF" align="center" | 04<br />
| style="background:#6E0040; color:#FFFFFF" align="center" | 05<br />
| style="background:#6C0700; color:#FFFFFF" align="center" | 06<br />
| style="background:#561D00; color:#FFFFFF" align="center" | 07<br />
| style="background:#333500; color:#FFFFFF" align="center" | 08<br />
| style="background:#0C4800; color:#FFFFFF" align="center" | 09<br />
| style="background:#005200; color:#FFFFFF" align="center" | 0A<br />
| style="background:#004F08; color:#FFFFFF" align="center" | 0B<br />
| style="background:#00404D; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#ADADAD; color:#FFFFFF" align="center" | 10<br />
| style="background:#155FD9; color:#FFFFFF" align="center" | 11<br />
| style="background:#4240FF; color:#FFFFFF" align="center" | 12<br />
| style="background:#7527FE; color:#FFFFFF" align="center" | 13<br />
| style="background:#A01ACC; color:#FFFFFF" align="center" | 14<br />
| style="background:#B71E7B; color:#FFFFFF" align="center" | 15<br />
| style="background:#B53120; color:#FFFFFF" align="center" | 16<br />
| style="background:#994E00; color:#FFFFFF" align="center" | 17<br />
| style="background:#6B6D00; color:#FFFFFF" align="center" | 18<br />
| style="background:#388700; color:#FFFFFF" align="center" | 19<br />
| style="background:#0D9300; color:#FFFFFF" align="center" | 1A<br />
| style="background:#008F32; color:#FFFFFF" align="center" | 1B<br />
| style="background:#007C8D; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#64B0FF; color:#000000" align="center" | 21<br />
| style="background:#9290FF; color:#000000" align="center" | 22<br />
| style="background:#C676FF; color:#000000" align="center" | 23<br />
| style="background:#F26AFF; color:#000000" align="center" | 24<br />
| style="background:#FF6ECC; color:#000000" align="center" | 25<br />
| style="background:#FF8170; color:#000000" align="center" | 26<br />
| style="background:#EA9E22; color:#000000" align="center" | 27<br />
| style="background:#BCBE00; color:#000000" align="center" | 28<br />
| style="background:#88D800; color:#000000" align="center" | 29<br />
| style="background:#5CE430; color:#000000" align="center" | 2A<br />
| style="background:#45E082; color:#000000" align="center" | 2B<br />
| style="background:#48CDDE; color:#000000" align="center" | 2C<br />
| style="background:#4F4F4F; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#C0DFFF; color:#000000" align="center" | 31<br />
| style="background:#D3D2FF; color:#000000" align="center" | 32<br />
| style="background:#E8C8FF; color:#000000" align="center" | 33<br />
| style="background:#FAC2FF; color:#000000" align="center" | 34<br />
| style="background:#FFC4EA; color:#000000" align="center" | 35<br />
| style="background:#FFCCC5; color:#000000" align="center" | 36<br />
| style="background:#F7D8A5; color:#000000" align="center" | 37<br />
| style="background:#E4E594; color:#000000" align="center" | 38<br />
| style="background:#CFEF96; color:#000000" align="center" | 39<br />
| style="background:#BDF4AB; color:#000000" align="center" | 3A<br />
| style="background:#B3F3CC; color:#000000" align="center" | 3B<br />
| style="background:#B5EBF2; color:#000000" align="center" | 3C<br />
| style="background:#B8B8B8; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+YUV-V3<br />
|-<br />
| style="background:#666666; color:#FFFFFF" align="center" | 00<br />
| style="background:#002a88; color:#FFFFFF" align="center" | 01<br />
| style="background:#1412a7; color:#FFFFFF" align="center" | 02<br />
| style="background:#3b00a4; color:#FFFFFF" align="center" | 03<br />
| style="background:#5c007e; color:#FFFFFF" align="center" | 04<br />
| style="background:#6e0040; color:#FFFFFF" align="center" | 05<br />
| style="background:#6c0700; color:#FFFFFF" align="center" | 06<br />
| style="background:#561d00; color:#FFFFFF" align="center" | 07<br />
| style="background:#333500; color:#FFFFFF" align="center" | 08<br />
| style="background:#0c4800; color:#FFFFFF" align="center" | 09<br />
| style="background:#005200; color:#FFFFFF" align="center" | 0A<br />
| style="background:#004c18; color:#FFFFFF" align="center" | 0B<br />
| style="background:#003e5b; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#adadad; color:#FFFFFF" align="center" | 10<br />
| style="background:#155fd9; color:#FFFFFF" align="center" | 11<br />
| style="background:#4240ff; color:#FFFFFF" align="center" | 12<br />
| style="background:#7527fe; color:#FFFFFF" align="center" | 13<br />
| style="background:#a01acc; color:#FFFFFF" align="center" | 14<br />
| style="background:#b71e7b; color:#FFFFFF" align="center" | 15<br />
| style="background:#b53120; color:#FFFFFF" align="center" | 16<br />
| style="background:#994e00; color:#FFFFFF" align="center" | 17<br />
| style="background:#6b6d00; color:#FFFFFF" align="center" | 18<br />
| style="background:#388700; color:#FFFFFF" align="center" | 19<br />
| style="background:#0d9300; color:#FFFFFF" align="center" | 1A<br />
| style="background:#008c47; color:#FFFFFF" align="center" | 1B<br />
| style="background:#007aa0; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#ffffff; color:#000000" align="center" | 20<br />
| style="background:#64b0ff; color:#000000" align="center" | 21<br />
| style="background:#9290ff; color:#000000" align="center" | 22<br />
| style="background:#c676ff; color:#000000" align="center" | 23<br />
| style="background:#f26aff; color:#000000" align="center" | 24<br />
| style="background:#ff6ecc; color:#000000" align="center" | 25<br />
| style="background:#ff8170; color:#000000" align="center" | 26<br />
| style="background:#ea9e22; color:#000000" align="center" | 27<br />
| style="background:#bcbe00; color:#000000" align="center" | 28<br />
| style="background:#88d800; color:#000000" align="center" | 29<br />
| style="background:#5ce430; color:#000000" align="center" | 2A<br />
| style="background:#45e082; color:#000000" align="center" | 2B<br />
| style="background:#48cdde; color:#000000" align="center" | 2C<br />
| style="background:#4f4f4f; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#ffffff; color:#000000" align="center" | 30<br />
| style="background:#c0dfff; color:#000000" align="center" | 31<br />
| style="background:#d3d2ff; color:#000000" align="center" | 32<br />
| style="background:#e8c8ff; color:#000000" align="center" | 33<br />
| style="background:#fac2ff; color:#000000" align="center" | 34<br />
| style="background:#ffc4ea; color:#000000" align="center" | 35<br />
| style="background:#ffccc5; color:#000000" align="center" | 36<br />
| style="background:#f7d8a5; color:#000000" align="center" | 37<br />
| style="background:#e4e594; color:#000000" align="center" | 38<br />
| style="background:#cfef96; color:#000000" align="center" | 39<br />
| style="background:#bdf4ab; color:#000000" align="center" | 3A<br />
| style="background:#b3f3cc; color:#000000" align="center" | 3B<br />
| style="background:#b5ebf2; color:#000000" align="center" | 3C<br />
| style="background:#b8b8b8; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Unsaturated-V5<br />
|-<br />
| style="background:#6B6B6B; color:#FFFFFF" align="center" | 00<br />
| style="background:#001E87; color:#FFFFFF" align="center" | 01<br />
| style="background:#1F0B96; color:#FFFFFF" align="center" | 02<br />
| style="background:#3B0C87; color:#FFFFFF" align="center" | 03<br />
| style="background:#590D61; color:#FFFFFF" align="center" | 04<br />
| style="background:#5E0528; color:#FFFFFF" align="center" | 05<br />
| style="background:#551100; color:#FFFFFF" align="center" | 06<br />
| style="background:#461B00; color:#FFFFFF" align="center" | 07<br />
| style="background:#303200; color:#FFFFFF" align="center" | 08<br />
| style="background:#0A4800; color:#FFFFFF" align="center" | 09<br />
| style="background:#004E00; color:#FFFFFF" align="center" | 0A<br />
| style="background:#004619; color:#FFFFFF" align="center" | 0B<br />
| style="background:#00395A; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#B2B2B2; color:#FFFFFF" align="center" | 10<br />
| style="background:#1A53D1; color:#FFFFFF" align="center" | 11<br />
| style="background:#4835EE; color:#FFFFFF" align="center" | 12<br />
| style="background:#7123EC; color:#FFFFFF" align="center" | 13<br />
| style="background:#9A1EB7; color:#FFFFFF" align="center" | 14<br />
| style="background:#A51E62; color:#FFFFFF" align="center" | 15<br />
| style="background:#A52D19; color:#FFFFFF" align="center" | 16<br />
| style="background:#874B00; color:#FFFFFF" align="center" | 17<br />
| style="background:#676900; color:#FFFFFF" align="center" | 18<br />
| style="background:#298400; color:#FFFFFF" align="center" | 19<br />
| style="background:#038B00; color:#FFFFFF" align="center" | 1A<br />
| style="background:#008240; color:#FFFFFF" align="center" | 1B<br />
| style="background:#007096; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#63ADFD; color:#000000" align="center" | 21<br />
| style="background:#908AFE; color:#000000" align="center" | 22<br />
| style="background:#B977FC; color:#000000" align="center" | 23<br />
| style="background:#E771FE; color:#000000" align="center" | 24<br />
| style="background:#F76FC9; color:#000000" align="center" | 25<br />
| style="background:#F5836A; color:#000000" align="center" | 26<br />
| style="background:#DD9C29; color:#000000" align="center" | 27<br />
| style="background:#BDB807; color:#000000" align="center" | 28<br />
| style="background:#84D107; color:#000000" align="center" | 29<br />
| style="background:#5BDC3B; color:#000000" align="center" | 2A<br />
| style="background:#48D77D; color:#000000" align="center" | 2B<br />
| style="background:#48C6D8; color:#000000" align="center" | 2C<br />
| style="background:#555555; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#C4E3FE; color:#000000" align="center" | 31<br />
| style="background:#D7D5FE; color:#000000" align="center" | 32<br />
| style="background:#E6CDFE; color:#000000" align="center" | 33<br />
| style="background:#F9CAFE; color:#000000" align="center" | 34<br />
| style="background:#FEC9F0; color:#000000" align="center" | 35<br />
| style="background:#FED1C7; color:#000000" align="center" | 36<br />
| style="background:#F7DCAC; color:#000000" align="center" | 37<br />
| style="background:#E8E89C; color:#000000" align="center" | 38<br />
| style="background:#D1F29D; color:#000000" align="center" | 39<br />
| style="background:#BFF4B1; color:#000000" align="center" | 3A<br />
| style="background:#B7F5CD; color:#000000" align="center" | 3B<br />
| style="background:#B7EBF2; color:#000000" align="center" | 3C<br />
| style="background:#BEBEBE; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Nintendulator NTSC<br />
|-<br />
| style="background:#656565; color:#FFFFFF" align="center" | 00<br />
| style="background:#002B9B; color:#FFFFFF" align="center" | 01<br />
| style="background:#110EC0; color:#FFFFFF" align="center" | 02<br />
| style="background:#3F00BC; color:#FFFFFF" align="center" | 03<br />
| style="background:#66008F; color:#FFFFFF" align="center" | 04<br />
| style="background:#7B0045; color:#FFFFFF" align="center" | 05<br />
| style="background:#790100; color:#FFFFFF" align="center" | 06<br />
| style="background:#601C00; color:#FFFFFF" align="center" | 07<br />
| style="background:#363800; color:#FFFFFF" align="center" | 08<br />
| style="background:#084F00; color:#FFFFFF" align="center" | 09<br />
| style="background:#005A00; color:#FFFFFF" align="center" | 0A<br />
| style="background:#005702; color:#FFFFFF" align="center" | 0B<br />
| style="background:#004555; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#AEAEAE; color:#FFFFFF" align="center" | 10<br />
| style="background:#0761F5; color:#FFFFFF" align="center" | 11<br />
| style="background:#3E3BFF; color:#FFFFFF" align="center" | 12<br />
| style="background:#7C1DFF; color:#FFFFFF" align="center" | 13<br />
| style="background:#AF0EE5; color:#FFFFFF" align="center" | 14<br />
| style="background:#CB1383; color:#FFFFFF" align="center" | 15<br />
| style="background:#C82A15; color:#FFFFFF" align="center" | 16<br />
| style="background:#A74D00; color:#FFFFFF" align="center" | 17<br />
| style="background:#6F7200; color:#FFFFFF" align="center" | 18<br />
| style="background:#329100; color:#FFFFFF" align="center" | 19<br />
| style="background:#009F00; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009B2A; color:#FFFFFF" align="center" | 1B<br />
| style="background:#008498; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#56B1FF; color:#000000" align="center" | 21<br />
| style="background:#8E8BFF; color:#000000" align="center" | 22<br />
| style="background:#CC6CFF; color:#000000" align="center" | 23<br />
| style="background:#FF5DFF; color:#000000" align="center" | 24<br />
| style="background:#FF62D4; color:#000000" align="center" | 25<br />
| style="background:#FF7964; color:#000000" align="center" | 26<br />
| style="background:#F89D06; color:#000000" align="center" | 27<br />
| style="background:#C0C300; color:#000000" align="center" | 28<br />
| style="background:#81E200; color:#000000" align="center" | 29<br />
| style="background:#4DF116; color:#000000" align="center" | 2A<br />
| style="background:#30EC7A; color:#000000" align="center" | 2B<br />
| style="background:#34D5EA; color:#000000" align="center" | 2C<br />
| style="background:#4E4E4E; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#BADFFF; color:#000000" align="center" | 31<br />
| style="background:#D1D0FF; color:#000000" align="center" | 32<br />
| style="background:#EBC3FF; color:#000000" align="center" | 33<br />
| style="background:#FFBDFF; color:#000000" align="center" | 34<br />
| style="background:#FFBFEE; color:#000000" align="center" | 35<br />
| style="background:#FFC8C0; color:#000000" align="center" | 36<br />
| style="background:#FCD799; color:#000000" align="center" | 37<br />
| style="background:#E5E784; color:#000000" align="center" | 38<br />
| style="background:#CCF387; color:#000000" align="center" | 39<br />
| style="background:#B6F9A0; color:#000000" align="center" | 3A<br />
| style="background:#AAF8C9; color:#000000" align="center" | 3B<br />
| style="background:#ACEEF7; color:#000000" align="center" | 3C<br />
| style="background:#B7B7B7; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+FCEUX<br />
|-<br />
| style="background:#747474; color:#FFFFFF" align="center" | 00<br />
| style="background:#24188C; color:#FFFFFF" align="center" | 01<br />
| style="background:#0000A8; color:#FFFFFF" align="center" | 02<br />
| style="background:#44009C; color:#FFFFFF" align="center" | 03<br />
| style="background:#8C0074; color:#FFFFFF" align="center" | 04<br />
| style="background:#A80010; color:#FFFFFF" align="center" | 05<br />
| style="background:#A40000; color:#FFFFFF" align="center" | 06<br />
| style="background:#7C0800; color:#FFFFFF" align="center" | 07<br />
| style="background:#402C00; color:#FFFFFF" align="center" | 08<br />
| style="background:#004400; color:#FFFFFF" align="center" | 09<br />
| style="background:#005000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003C14; color:#FFFFFF" align="center" | 0B<br />
| style="background:#183C5C; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#BCBCBC; color:#FFFFFF" align="center" | 10<br />
| style="background:#0070EC; color:#FFFFFF" align="center" | 11<br />
| style="background:#2038EC; color:#FFFFFF" align="center" | 12<br />
| style="background:#8000F0; color:#FFFFFF" align="center" | 13<br />
| style="background:#BC00BC; color:#FFFFFF" align="center" | 14<br />
| style="background:#E40058; color:#FFFFFF" align="center" | 15<br />
| style="background:#D82800; color:#FFFFFF" align="center" | 16<br />
| style="background:#C84C0C; color:#FFFFFF" align="center" | 17<br />
| style="background:#887000; color:#FFFFFF" align="center" | 18<br />
| style="background:#009400; color:#FFFFFF" align="center" | 19<br />
| style="background:#00A800; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009038; color:#FFFFFF" align="center" | 1B<br />
| style="background:#008088; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#FCFCFC; color:#000000" align="center" | 20<br />
| style="background:#3CBCFC; color:#000000" align="center" | 21<br />
| style="background:#5C94FC; color:#000000" align="center" | 22<br />
| style="background:#CC88FC; color:#000000" align="center" | 23<br />
| style="background:#F478FC; color:#000000" align="center" | 24<br />
| style="background:#FC74B4; color:#000000" align="center" | 25<br />
| style="background:#FC7460; color:#000000" align="center" | 26<br />
| style="background:#FC9838; color:#000000" align="center" | 27<br />
| style="background:#F0BC3C; color:#000000" align="center" | 28<br />
| style="background:#80D010; color:#000000" align="center" | 29<br />
| style="background:#4CDC48; color:#000000" align="center" | 2A<br />
| style="background:#58F898; color:#000000" align="center" | 2B<br />
| style="background:#00E8D8; color:#000000" align="center" | 2C<br />
| style="background:#787878; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#FCFCFC; color:#000000" align="center" | 30<br />
| style="background:#A8E4FC; color:#000000" align="center" | 31<br />
| style="background:#C4D4FC; color:#000000" align="center" | 32<br />
| style="background:#D4C8FC; color:#000000" align="center" | 33<br />
| style="background:#FCC4FC; color:#000000" align="center" | 34<br />
| style="background:#FCC4D8; color:#000000" align="center" | 35<br />
| style="background:#FCBCB0; color:#000000" align="center" | 36<br />
| style="background:#FCD8A8; color:#000000" align="center" | 37<br />
| style="background:#FCE4A0; color:#000000" align="center" | 38<br />
| style="background:#E0FCA0; color:#000000" align="center" | 39<br />
| style="background:#A8F0BC; color:#000000" align="center" | 3A<br />
| style="background:#B0FCCC; color:#000000" align="center" | 3B<br />
| style="background:#9CFCF0; color:#000000" align="center" | 3C<br />
| style="background:#C4C4C4; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
|<br />
{| cellpadding="10" cellspacing="0"<br />
|+RGB<br />
|-<br />
| style="background:#6D6D6D; color:#FFFFFF" align="center" | 00<br />
| style="background:#002492; color:#FFFFFF" align="center" | 01<br />
| style="background:#0000DB; color:#FFFFFF" align="center" | 02<br />
| style="background:#6D49DB; color:#FFFFFF" align="center" | 03<br />
| style="background:#92006D; color:#FFFFFF" align="center" | 04<br />
| style="background:#B6006D; color:#FFFFFF" align="center" | 05<br />
| style="background:#B62400; color:#FFFFFF" align="center" | 06<br />
| style="background:#924900; color:#FFFFFF" align="center" | 07<br />
| style="background:#6D4900; color:#FFFFFF" align="center" | 08<br />
| style="background:#244900; color:#FFFFFF" align="center" | 09<br />
| style="background:#006D24; color:#FFFFFF" align="center" | 0A<br />
| style="background:#009200; color:#FFFFFF" align="center" | 0B<br />
| style="background:#004949; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#B6B6B6; color:#FFFFFF" align="center" | 10<br />
| style="background:#006DDB; color:#FFFFFF" align="center" | 11<br />
| style="background:#0049FF; color:#FFFFFF" align="center" | 12<br />
| style="background:#9200FF; color:#FFFFFF" align="center" | 13<br />
| style="background:#B600FF; color:#FFFFFF" align="center" | 14<br />
| style="background:#FF0092; color:#FFFFFF" align="center" | 15<br />
| style="background:#FF0000; color:#FFFFFF" align="center" | 16<br />
| style="background:#DB6D00; color:#FFFFFF" align="center" | 17<br />
| style="background:#926D00; color:#FFFFFF" align="center" | 18<br />
| style="background:#249200; color:#FFFFFF" align="center" | 19<br />
| style="background:#009200; color:#FFFFFF" align="center" | 1A<br />
| style="background:#00B66D; color:#FFFFFF" align="center" | 1B<br />
| style="background:#009292; color:#FFFFFF" align="center" | 1C<br />
| style="background:#242424; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#6DB6FF; color:#000000" align="center" | 21<br />
| style="background:#9292FF; color:#000000" align="center" | 22<br />
| style="background:#DB6DFF; color:#000000" align="center" | 23<br />
| style="background:#FF00FF; color:#000000" align="center" | 24<br />
| style="background:#FF6DFF; color:#000000" align="center" | 25<br />
| style="background:#FF9200; color:#000000" align="center" | 26<br />
| style="background:#FFB600; color:#000000" align="center" | 27<br />
| style="background:#DBDB00; color:#000000" align="center" | 28<br />
| style="background:#6DDB00; color:#000000" align="center" | 29<br />
| style="background:#00FF00; color:#000000" align="center" | 2A<br />
| style="background:#49FFDB; color:#000000" align="center" | 2B<br />
| style="background:#00FFFF; color:#000000" align="center" | 2C<br />
| style="background:#494949; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#B6DBFF; color:#000000" align="center" | 31<br />
| style="background:#DBB6FF; color:#000000" align="center" | 32<br />
| style="background:#FFB6FF; color:#000000" align="center" | 33<br />
| style="background:#FF92FF; color:#000000" align="center" | 34<br />
| style="background:#FFB6B6; color:#000000" align="center" | 35<br />
| style="background:#FFDB92; color:#000000" align="center" | 36<br />
| style="background:#FFFF49; color:#000000" align="center" | 37<br />
| style="background:#FFFF6D; color:#000000" align="center" | 38<br />
| style="background:#B6FF49; color:#000000" align="center" | 39<br />
| style="background:#92FF6D; color:#000000" align="center" | 3A<br />
| style="background:#49FFDB; color:#000000" align="center" | 3B<br />
| style="background:#92DBFF; color:#000000" align="center" | 3C<br />
| style="background:#929292; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Rockman 9<br />
|-<br />
| style="background:#707070; color:#FFFFFF" align="center" | 00<br />
| style="background:#0000A8; color:#FFFFFF" align="center" | 01<br />
| style="background:#201888; color:#FFFFFF" align="center" | 02<br />
| style="background:#400098; color:#FFFFFF" align="center" | 03<br />
| style="background:#880070; color:#FFFFFF" align="center" | 04<br />
| style="background:#A80010; color:#FFFFFF" align="center" | 05<br />
| style="background:#A00000; color:#FFFFFF" align="center" | 06<br />
| style="background:#780800; color:#FFFFFF" align="center" | 07<br />
| style="background:#402800; color:#FFFFFF" align="center" | 08<br />
| style="background:#004000; color:#FFFFFF" align="center" | 09<br />
| style="background:#005000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003810; color:#FFFFFF" align="center" | 0B<br />
| style="background:#183858; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#B8B8B8; color:#FFFFFF" align="center" | 10<br />
| style="background:#0070E8; color:#FFFFFF" align="center" | 11<br />
| style="background:#2038E8; color:#FFFFFF" align="center" | 12<br />
| style="background:#8000F0; color:#FFFFFF" align="center" | 13<br />
| style="background:#B800B8; color:#FFFFFF" align="center" | 14<br />
| style="background:#E00058; color:#FFFFFF" align="center" | 15<br />
| style="background:#D82800; color:#FFFFFF" align="center" | 16<br />
| style="background:#C84808; color:#FFFFFF" align="center" | 17<br />
| style="background:#887000; color:#FFFFFF" align="center" | 18<br />
| style="background:#009000; color:#FFFFFF" align="center" | 19<br />
| style="background:#00A800; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009038; color:#FFFFFF" align="center" | 1B<br />
| style="background:#008088; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#F8F8F8; color:#000000" align="center" | 20<br />
| style="background:#38B8F8; color:#000000" align="center" | 21<br />
| style="background:#5890F8; color:#000000" align="center" | 22<br />
| style="background:#A088F8; color:#000000" align="center" | 23<br />
| style="background:#F078F8; color:#000000" align="center" | 24<br />
| style="background:#F870B0; color:#000000" align="center" | 25<br />
| style="background:#F87060; color:#000000" align="center" | 26<br />
| style="background:#F89838; color:#000000" align="center" | 27<br />
| style="background:#F0B838; color:#000000" align="center" | 28<br />
| style="background:#80D010; color:#000000" align="center" | 29<br />
| style="background:#48D848; color:#000000" align="center" | 2A<br />
| style="background:#58F898; color:#000000" align="center" | 2B<br />
| style="background:#00E8D8; color:#000000" align="center" | 2C<br />
| style="background:#505050; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#F8F8F8; color:#000000" align="center" | 30<br />
| style="background:#A8E0F8; color:#000000" align="center" | 31<br />
| style="background:#C0D0F8; color:#000000" align="center" | 32<br />
| style="background:#D0C8F8; color:#000000" align="center" | 33<br />
| style="background:#F8C0F8; color:#000000" align="center" | 34<br />
| style="background:#F8C0D8; color:#000000" align="center" | 35<br />
| style="background:#F8B8B0; color:#000000" align="center" | 36<br />
| style="background:#F8D8A8; color:#000000" align="center" | 37<br />
| style="background:#F8E0A0; color:#000000" align="center" | 38<br />
| style="background:#E0F8A0; color:#000000" align="center" | 39<br />
| style="background:#A8F0B8; color:#000000" align="center" | 3A<br />
| style="background:#B0F8C8; color:#000000" align="center" | 3B<br />
| style="background:#98F8F0; color:#000000" align="center" | 3C<br />
| style="background:#989898; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Rockman 9 - 21 to 2C<br />
|-<br />
| style="background:#707070; color:#FFFFFF" align="center" | 00<br />
| style="background:#0000A8; color:#FFFFFF" align="center" | 01<br />
| style="background:#201888; color:#FFFFFF" align="center" | 02<br />
| style="background:#400098; color:#FFFFFF" align="center" | 03<br />
| style="background:#880070; color:#FFFFFF" align="center" | 04<br />
| style="background:#A80010; color:#FFFFFF" align="center" | 05<br />
| style="background:#A00000; color:#FFFFFF" align="center" | 06<br />
| style="background:#780800; color:#FFFFFF" align="center" | 07<br />
| style="background:#402800; color:#FFFFFF" align="center" | 08<br />
| style="background:#004000; color:#FFFFFF" align="center" | 09<br />
| style="background:#005000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003810; color:#FFFFFF" align="center" | 0B<br />
| style="background:#183858; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#B8B8B8; color:#FFFFFF" align="center" | 10<br />
| style="background:#0070E8; color:#FFFFFF" align="center" | 11<br />
| style="background:#2038E8; color:#FFFFFF" align="center" | 12<br />
| style="background:#8000F0; color:#FFFFFF" align="center" | 13<br />
| style="background:#B800B8; color:#FFFFFF" align="center" | 14<br />
| style="background:#E00058; color:#FFFFFF" align="center" | 15<br />
| style="background:#D82800; color:#FFFFFF" align="center" | 16<br />
| style="background:#C84808; color:#FFFFFF" align="center" | 17<br />
| style="background:#887000; color:#FFFFFF" align="center" | 18<br />
| style="background:#009000; color:#FFFFFF" align="center" | 19<br />
| style="background:#00A800; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009038; color:#FFFFFF" align="center" | 1B<br />
| style="background:#008088; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#F8F8F8; color:#000000" align="center" | 20<br />
| style="background:#38B8F8; color:#000000" align="center" | 21<br />
| style="background:#5890F8; color:#000000" align="center" | 22<br />
| style="background:#A088F8; color:#000000" align="center" | 23<br />
| style="background:#F078F8; color:#000000" align="center" | 24<br />
| style="background:#F870B0; color:#000000" align="center" | 25<br />
| style="background:#F87060; color:#000000" align="center" | 26<br />
| style="background:#F89838; color:#000000" align="center" | 27<br />
| style="background:#F0B838; color:#000000" align="center" | 28<br />
| style="background:#80D010; color:#000000" align="center" | 29<br />
| style="background:#48D848; color:#000000" align="center" | 2A<br />
| style="background:#58F898; color:#000000" align="center" | 2B<br />
| style="background:#38B8F8; color:#000000" align="center" | 2C<br />
| style="background:#505050; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#F8F8F8; color:#000000" align="center" | 30<br />
| style="background:#A8E0F8; color:#000000" align="center" | 31<br />
| style="background:#C0D0F8; color:#000000" align="center" | 32<br />
| style="background:#D0C8F8; color:#000000" align="center" | 33<br />
| style="background:#F8C0F8; color:#000000" align="center" | 34<br />
| style="background:#F8C0D8; color:#000000" align="center" | 35<br />
| style="background:#F8B8B0; color:#000000" align="center" | 36<br />
| style="background:#F8D8A8; color:#000000" align="center" | 37<br />
| style="background:#F8E0A0; color:#000000" align="center" | 38<br />
| style="background:#E0F8A0; color:#000000" align="center" | 39<br />
| style="background:#A8F0B8; color:#000000" align="center" | 3A<br />
| style="background:#B0F8C8; color:#000000" align="center" | 3B<br />
| style="background:#98F8F0; color:#000000" align="center" | 3C<br />
| style="background:#989898; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Wii VC<br />
|-<br />
| style="background:#494949; color:#FFFFFF" align="center" | 00<br />
| style="background:#00006A; color:#FFFFFF" align="center" | 01<br />
| style="background:#090063; color:#FFFFFF" align="center" | 02<br />
| style="background:#290059; color:#FFFFFF" align="center" | 03<br />
| style="background:#42004A; color:#FFFFFF" align="center" | 04<br />
| style="background:#490000; color:#FFFFFF" align="center" | 05<br />
| style="background:#420000; color:#FFFFFF" align="center" | 06<br />
| style="background:#291100; color:#FFFFFF" align="center" | 07<br />
| style="background:#182700; color:#FFFFFF" align="center" | 08<br />
| style="background:#003010; color:#FFFFFF" align="center" | 09<br />
| style="background:#003000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#002910; color:#FFFFFF" align="center" | 0B<br />
| style="background:#012043; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#747174; color:#FFFFFF" align="center" | 10<br />
| style="background:#003084; color:#FFFFFF" align="center" | 11<br />
| style="background:#3101AC; color:#FFFFFF" align="center" | 12<br />
| style="background:#4B0194; color:#FFFFFF" align="center" | 13<br />
| style="background:#64007B; color:#FFFFFF" align="center" | 14<br />
| style="background:#6B0039; color:#FFFFFF" align="center" | 15<br />
| style="background:#6B2101; color:#FFFFFF" align="center" | 16<br />
| style="background:#5A2F00; color:#FFFFFF" align="center" | 17<br />
| style="background:#424900; color:#FFFFFF" align="center" | 18<br />
| style="background:#185901; color:#FFFFFF" align="center" | 19<br />
| style="background:#105901; color:#FFFFFF" align="center" | 1A<br />
| style="background:#015932; color:#FFFFFF" align="center" | 1B<br />
| style="background:#01495A; color:#FFFFFF" align="center" | 1C<br />
| style="background:#101010; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#ADADAD; color:#000000" align="center" | 20<br />
| style="background:#4A71B6; color:#000000" align="center" | 21<br />
| style="background:#6458D5; color:#000000" align="center" | 22<br />
| style="background:#8450E6; color:#000000" align="center" | 23<br />
| style="background:#A451AD; color:#000000" align="center" | 24<br />
| style="background:#AD4984; color:#000000" align="center" | 25<br />
| style="background:#B5624A; color:#000000" align="center" | 26<br />
| style="background:#947132; color:#000000" align="center" | 27<br />
| style="background:#7B722A; color:#000000" align="center" | 28<br />
| style="background:#5A8601; color:#000000" align="center" | 29<br />
| style="background:#388E31; color:#000000" align="center" | 2A<br />
| style="background:#318E5A; color:#000000" align="center" | 2B<br />
| style="background:#398E8D; color:#000000" align="center" | 2C<br />
| style="background:#383838; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#B6B6B6; color:#000000" align="center" | 30<br />
| style="background:#8C9DB5; color:#000000" align="center" | 31<br />
| style="background:#8D8EAE; color:#000000" align="center" | 32<br />
| style="background:#9C8EBC; color:#000000" align="center" | 33<br />
| style="background:#A687BC; color:#000000" align="center" | 34<br />
| style="background:#AD8D9D; color:#000000" align="center" | 35<br />
| style="background:#AE968C; color:#000000" align="center" | 36<br />
| style="background:#9C8F7C; color:#000000" align="center" | 37<br />
| style="background:#9C9E72; color:#000000" align="center" | 38<br />
| style="background:#94A67C; color:#000000" align="center" | 39<br />
| style="background:#84A77B; color:#000000" align="center" | 3A<br />
| style="background:#7C9D84; color:#000000" align="center" | 3B<br />
| style="background:#73968D; color:#000000" align="center" | 3C<br />
| style="background:#DEDEDE; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+3DS VC<br />
|-<br />
| style="background:#737373; color:#FFFFFF" align="center" | 00<br />
| style="background:#21188C; color:#FFFFFF" align="center" | 01<br />
| style="background:#0000AD; color:#FFFFFF" align="center" | 02<br />
| style="background:#42009C; color:#FFFFFF" align="center" | 03<br />
| style="background:#8C0073; color:#FFFFFF" align="center" | 04<br />
| style="background:#AD0010; color:#FFFFFF" align="center" | 05<br />
| style="background:#A50000; color:#FFFFFF" align="center" | 06<br />
| style="background:#7B0800; color:#FFFFFF" align="center" | 07<br />
| style="background:#422900; color:#FFFFFF" align="center" | 08<br />
| style="background:#004200; color:#FFFFFF" align="center" | 09<br />
| style="background:#005200; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003910; color:#FFFFFF" align="center" | 0B<br />
| style="background:#18395A; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#BDBDBD; color:#FFFFFF" align="center" | 10<br />
| style="background:#0073EF; color:#FFFFFF" align="center" | 11<br />
| style="background:#2139EF; color:#FFFFFF" align="center" | 12<br />
| style="background:#8400F7; color:#FFFFFF" align="center" | 13<br />
| style="background:#BD00BD; color:#FFFFFF" align="center" | 14<br />
| style="background:#E7005A; color:#FFFFFF" align="center" | 15<br />
| style="background:#DE2900; color:#FFFFFF" align="center" | 16<br />
| style="background:#CE4A08; color:#FFFFFF" align="center" | 17<br />
| style="background:#8C7300; color:#FFFFFF" align="center" | 18<br />
| style="background:#009400; color:#FFFFFF" align="center" | 19<br />
| style="background:#00AD00; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009439; color:#FFFFFF" align="center" | 1B<br />
| style="background:#00848C; color:#FFFFFF" align="center" | 1C<br />
| style="background:#101010; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#39BDFF; color:#000000" align="center" | 21<br />
| style="background:#5A94FF; color:#000000" align="center" | 22<br />
| style="background:#A58CFF; color:#000000" align="center" | 23<br />
| style="background:#F77BFF; color:#000000" align="center" | 24<br />
| style="background:#FF73B5; color:#000000" align="center" | 25<br />
| style="background:#FF7363; color:#000000" align="center" | 26<br />
| style="background:#FF9C39; color:#000000" align="center" | 27<br />
| style="background:#F7BD39; color:#000000" align="center" | 28<br />
| style="background:#84D610; color:#000000" align="center" | 29<br />
| style="background:#4ADE4A; color:#000000" align="center" | 2A<br />
| style="background:#5AFF9C; color:#000000" align="center" | 2B<br />
| style="background:#00EFDE; color:#000000" align="center" | 2C<br />
| style="background:#393939; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#ADE7FF; color:#000000" align="center" | 31<br />
| style="background:#C6D6FF; color:#000000" align="center" | 32<br />
| style="background:#D6CEFF; color:#000000" align="center" | 33<br />
| style="background:#FFC6FF; color:#000000" align="center" | 34<br />
| style="background:#FFC6DE; color:#000000" align="center" | 35<br />
| style="background:#FFBDB5; color:#000000" align="center" | 36<br />
| style="background:#FFDEAD; color:#000000" align="center" | 37<br />
| style="background:#FFE7A5; color:#000000" align="center" | 38<br />
| style="background:#E7FFA5; color:#000000" align="center" | 39<br />
| style="background:#ADF7BD; color:#000000" align="center" | 3A<br />
| style="background:#B5FFCE; color:#000000" align="center" | 3B<br />
| style="background:#9CFFF7; color:#000000" align="center" | 3C<br />
| style="background:#8C8C8C; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
|}<br />
==Gallery==<br />
<br />
==References==<br />
{{reflist|2}}<br />
<br />
[[Category:FAQs]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=PPSSPP&diff=10707PPSSPP2016-05-15T20:58:58Z<p>Monroe88: No need for exaggeration.</p>
<hr />
<div>{{Infobox<br />
|image = Ppsspp.png<br />
|imagewidth = 240<br />
|first = 1.2.2<br />
|second = Yes<br />
|third = Windows, Linux, OS X,<br>Android, BlackBerry<br />
|fourth = Henrik "hrydgard" Rydgård, uknownbrackets, raven02, xsacha, thedax<br />
|fifth = [http://www.ppsspp.org/ PPSSPP.org]<br />
|sixth = [https://github.com/hrydgard/ppsspp/ GitHub]}}<br />
<br />
'''PPSSPP''' is a [[PlayStation Portable]] emulator written in C++ with the aim of speed and portability. Its development is ongoing and is still in an beta state, but progress is fast and most games are already playable.<br />
<br />
PPSSPP is an acronym for "''Playstation Portable Simulator Suitable for Playing Portably''".<br />
<br />
==Downloads==<br />
*[http://buildbot.orphis.net/ppsspp/ PPSSPP Dev Builds for Windows and Android]<br />
*[http://ppsspp.angelxwind.net/?page/downloads#linux PPSSPP Dev Builds for Linux]<br />
*[http://ppsspp.angelxwind.net/?page/downloads#osx PPSSPP Dev Builds for OS X]<br />
*[http://qtness.com/ppsspp.html PPSSPP Dev Builds for BlackBerry, Symbian, and MeeGo]<br />
<br />
==Review==<br />
A new emulator, but it has been making tremendous progress. Compatibility has surpassed [[JPCSP]] for a while now. It's also significantly faster than JPCSP due to it being coded in C++ instead of Java. It is only recommended to use JPCSP if the game does not work in PPSSPP.<br />
<br />
==Recommended Specs==<br />
===Desktop===<br />
Any reasonably modern CPU will be just fine, and any GPU that can handle OpenGL 2.0 should have no issues. You should make sure to install the latest graphics drivers available though. Windows XP or later is required, Windows 7 or 8 is recommended.<br />
<br />
===Android===<br />
At least 1 GHz single-core with OpenGL 2.0 would be the minimum requirement to have any decent performance. A dual or quad-core processor is even more recommended.<br />
It will run with a 600 MHz core too but probably not the more complex 3D games.<br />
<br />
===BlackBerry 10===<br />
All BlackBerry 10 devices will have adequate speed in all games. Only very high end games like Tekken 6 will not be playable.<br />
<br />
===Symbian===<br />
Second generation devices (Nokia 603, 700, 701, 808) are the minimum requirement for decent performance in 3D games. However, first generation devices (Nokia N8, C7, E7, E7, X7, ..) will be able to play all the 2D and Mini games.<br />
<br />
==Common problems and fixes:==<br />
#Weird text? Download [[Emulator_Files#PSP|the original fonts]] and place them into the /flash0/ folder. Disabling buffered rendering fixed the no text issue with FF4 for some. The forums say this will only fix it on Nvidia cards.<br />
#DLC seems to work without any plugins, just place them in memstick\PSP\GAME.<br />
#X doesn't work? Turn on/off Buffered Rendering or MipMapping and try again.<br />
#Too slow? Turn on/off Hardware Transform and try again.<br />
#'''Dangan Ronpa. '''Make sure you're using the latest dev build of [[PPSSPP]] and that Buffered Rendering, Read Framebuffers to Memory and FramebufferCPUConvert are enabled (FramebufferCPUConvert is only necessary on AMD I think, I don't need it on Intel/Nvidia and other Intel/Nvidia users seem to be the same).<br />
#'''Dissidia 012.''' Recent revisions to PPSSPP have changes (supposedly for better "PSP Mini" game support), which cause issues with Dissidia 012, such as red tinted cutscenes. v0.9.6-483-gf80adef is the latest build before they added Bigpet's commit that broke Dissidia 012. So use that one. OR use [https://www.mediafire.com/?wdzg6cj174m93b6 this custom build], it's the most up to date build (as of this writing) currently v0.9.7.2-41 with only the Bigpet's commit that broke Dissidia removed, so no red tint. Go get your Dissidia on.<br />
#Having problems on [[libretro]] port? Try the standalone versions because the libretro port has not been updated in the last few months.<br />
<br />
[http://forums.ppsspp.org/showthread.php?tid=1473 Compatibility List]<br />
<br />
[http://pastebin.com/WHFPSxHd /v/'s compatibility list as of June 30th, 2013] (Disclaimer: Some findings may be outdated)<br />
<br />
==External links==<br />
*[http://forums.ppsspp.org/index.php Forums]<br />
*[http://forums.ppsspp.org/showthread.php?tid=7549 PPSSPP Adhoc Support]<br />
<br />
[[Category:Emulators]]<br />
[[Category:Windows emulation software]]<br />
[[Category:Linux emulation software]]<br />
[[Category:OS X emulation software]]<br />
[[Category:PlayStation Portable emulators]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Game_Boy_Advance_emulators&diff=10699Game Boy Advance emulators2016-05-14T19:10:00Z<p>Monroe88: Rewrite the section on color shaders, remove outdated info.</p>
<hr />
<div>[[File:Gameboy-glacier.jpg|thumb|The Gameboy Advance handheld console]]The '''[[gametech:Game Boy Advance|Game Boy Advance]]''' (often shortened to GBA) is a 32-bit handheld video game console developed by Nintendo. It is the successor to the Game Boy Color. It was released in Japan on March 21, 2001; in North America on June 11, 2001; in Australia and Europe on June 22, 2001.<br />
<br />
==Emulators==<br />
{| class="wikitable"<br />
|+PC<br />
! scope="col"|Name<br />
! scope="col"|Operating System(s)<br />
! scope="col"|Latest Version<br />
! scope="col"|GB/GBC<br />
! scope="col"|GBA<br />
! scope="col"|NDS<br />
! scope="col"|Game Link Support<br />
! scope="col"|[[libretro|Libretro Core]]<br />
! scope="col"|[[Recommended emulators|Recommended]]<br />
|-<br />
|style="text-align:center;"|[[mGBA]]<br />
|style="text-align:center;"|Multi-platform<br />
|style="text-align:center;"|[https://endrift.com/mgba/downloads.html 0.4.0]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|-<br />
|style="text-align:center;"|[[Visual Boy Advance -M|Visual Boy Advance-M (VBA-M)]]<br />
|style="text-align:center;"|Multi-platform<br />
|style="text-align:center;"|[https://github.com/visualboyadvance-m/visualboyadvance-m GitHub] [http://www.emucr.com/search/label/VisualBoyAdvance-M/ SVN]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|[[higan]]<br />
|style="text-align:center;"|Windows, OS X, Linux<br />
|style="text-align:center;"|[http://byuu.org/emulation/higan/ v098]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|iDeaS<br />
|style="text-align:center;"|Windows, Linux<br />
|style="text-align:center;"|[http://ciacin.site90.com/ideas.php 1.0.4.0]<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|[[GBE+]]<br />
|style="text-align:center;"|Multi-platform<br />
|style="text-align:center;"|[https://github.com/shonumi/gbe-plus GitHub]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|[[MAME]]<br />
|style="text-align:center;"|Multi-platform<br />
|style="text-align:center;"|[http://www.mamedev.org/release.html {{MAMEVer}}]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|?<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|Meteor<br />
|style="text-align:center;"|Linux<br />
|style="text-align:center;"|[https://github.com/blastrock/meteor 1.4]<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|[[No$GBA]]<br />
|style="text-align:center;"|Windows, MS-DOS<br />
|style="text-align:center;"|[http://problemkaputt.de/gba.htm 2.8c]<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|}<br />
<br />
{| class="wikitable"<br />
|+Mobile<br />
! scope="col"|Name<br />
! scope="col"|Operating System(s)<br />
! scope="col"|Latest Version<br />
! scope="col"|GB/GBC<br />
! scope="col"|GBA<br />
! scope="col"|NDS<br />
! scope="col"|Game Link Support<br />
! scope="col"|[[libretro|Libretro Core]]<br />
! scope="col"|[[Recommended emulators|Recommended]]<br />
|-<br />
|style="text-align:center;"|[https://www.microsoft.com/en-us/store/apps/vba8/9wzdncrfjc69/ VBA8]<br />
|style="text-align:center;"|Windows Phone<br />
|style="text-align:center;"|2.27<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|?<br />
|style="text-align:center;"|✓<br />
|}<br />
<br />
{| class="wikitable"<br />
|+Consoles<br />
! scope="col"|Name<br />
! scope="col"|Operating System(s)<br />
! scope="col"|Latest Version<br />
! scope="col"|GB/GBC<br />
! scope="col"|GBA<br />
! scope="col"|NDS<br />
! scope="col"|Game Link Support<br />
! scope="col"|[[libretro|Libretro Core]]<br />
! scope="col"|[[Recommended emulators|Recommended]]<br />
|-<br />
|style="text-align:center;"|[[mGBA]]<br />
|style="text-align:center;"|[[Wii]]<br />
|style="text-align:center;"|[https://s3.amazonaws.com/mgba/mGBA-nightly-latest-wii.7z SVN]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|-<br />
|style="text-align:center;"|[[Visual Boy Advance -M|VBA GX]]<br />
|style="text-align:center;"|[[Wii]], [[Gamecube]]<br />
|style="text-align:center;"|[https://gbatemp.net/threads/new-vba-gx-fork-2-3-0.371284/ 2.3.2]<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓ (as VBA-Next)<br />
|style="text-align:center;"|✗<br />
|-<br />
|style="text-align:center;"|TempGBA4PSP<br />
|style="text-align:center;"|[[PlayStation Portable]]<br />
|style="text-align:center;"|[http://www.mediafire.com/download/41ny5xrwxizalx4/TempGBA4PSP-26750221.zip 26750221]<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✓<br />
|-<br />
|style="text-align:center;"|[[gpSP]]<br />
|style="text-align:center;"|[[PlayStation Portable]]<br />
|style="text-align:center;"|0.9<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✗<br />
|style="text-align:center;"|✓<br />
|style="text-align:center;"|✗<br />
|}<br />
<br />
==Comparisons==<br />
* [[mGBA]] is a GBA emulator that aims to be accurate while maintaining speed. It's actively developed and has features that VBA-M lacks such as Solar/Tilt Sensor.<br />
* [[Visual Boy Advance -M|Visual Boy Advance-M (VBA-M)]] is a fork of VBA with additional improvements. It is not updated as often these days and is falling behind in terms of accuracy and performance compared to mGBA.<br />
** RetroArch's VBA-Next is based off an older revision of VBA-M with added speedhacks and tweaks, making it useful for lower-end devices. It is a bit less accurate in some respects, though it fixes a few games such as Advance Wars 2. <br />
* [[gpSP]] last official version was 0.9 by Exophase. There are, however, two superior forks: [http://dl.qj.net/psp/emulators/gpsp-mod-20090720.html gpSPmod] and [http://filetrip.net/psp-downloads/homebrew/download-gpsp-j-12-06-16-f29570.htmlgpSP-J gpSP-J]. gpSP-J has superior compatibility, while gpSPmod has more options for customization (full screen, cheats, etc). Both are superior to Kai.<br />
* [[higan]]'s GBA core is cycle-accurate, but up to v094 it was very much a WIP and not as compatible as VBA-M or mGBA. v095 made amazing strides, resulting in compatibility on par with mGBA.<br />
<br />
==Emulation issues==<br />
<br />
===Oversaturation===<br />
[[File:1406913527173-1-.png|400px|thumb|right|Left showing the default game, and right showing [[VBA-M]] in "Gameboy Colors" mode]]<br />
The original GBA screen was not backlit, so the screen would appear to be rather dark. To compensate for this, games would have very saturated and bright colors. The bright, overly saturated colors would appear rather normal on the GBA. In emulation, however, the appearance of these colors are undesirable. Some games made after 2003 may look better with the backlit colors, however, as they were designed with the GBA SP in mind. For everything else, there are several ways to deal with this:<br />
<br />
'''No$GBA'''<br />
<br />
Under "Emulation Options", select "GBA Mode. There are four modes.<br />
<br />
- GBA (no backlight) = strong desaturation<br />
<br />
- GBA SP (backlight) = strong desaturation<br />
<br />
- Nintendo DS in GBA mode = some desaturation<br />
<br />
- VGA Mode (poppy bright): no desaturation<br />
<br />
'''VBA-M'''<br />
<br />
(VBA-M for Windows only) Under "Options->Gameboy" you will find the options:<br />
<br />
- "Real Colors": no desaturation<br />
<br />
- "Gameboy Colors": strong desaturation<br />
<br />
'''higan'''<br />
<br />
Under Settings->Video Filter, you will find the "Color Emulation" checkbox.<br />
<br />
- Color Emulation off: no desaturation<br />
<br />
- Color Emulation on: gamma correction and adjusted color range.<br />
<br />
'''Shaders'''<br />
<br />
There are Cg [[shaders]] which can be used in [[OpenEMU]] or [[RetroArch]] that adjust the colors to those of a real GBA screen, as well as other screen types. <br />
<br />
For GBA, there is <code>gba-color.cg</code><ref>https://github.com/libretro/common-shaders/blob/master/handheld/shaders/color/gba-color.cg</ref>, which simulates the color profile of a GBA screen under an external light source more accurately than VBA-M or No$GBA color options. If you prefer the darker color options that those emulators have, then use <code>vba-color.cg</code><ref>https://github.com/libretro/common-shaders/blob/master/handheld/shaders/color/vba-color.cg</ref> instead. <br />
<br />
There is also <code>nds-color.cg</code><ref>https://github.com/libretro/common-shaders/blob/master/handheld/shaders/color/nds-color.cg</ref> and <code>psp-color.cg</code><ref>https://github.com/libretro/common-shaders/blob/master/handheld/shaders/color/psp-color.cg</ref>, which simulates the color profiles of the original Nintendo DS frontlit screen and the PSP-1000/PSP-2000 backlit screen, respectively.<br />
<br />
===Save file issues===<br />
There are a number of different save formats for GBA games. With raw save data, it's very hard to detect what save type it is just by looking at it. Visual Boy Advance tries to autodetect save type but often is incorrect and this causes issues. A fix to this issue is to use a file called "vba-over.ini" to tell VBA what each game's proper save type is, which eliminates most issues regarding save type. Current VBA-M versions come with vba-over.ini by default, but older versions of VBA like VBA 1.7.2 and VBALink did not.<br />
<br />
The libretro versions of VBA, libretro-VBA-Next and libretro-VBA-M, come with vba-over.ini baked into the binary so it is able to load raw .sav files, but also changes the save file output to be a 136KB .srm file for every save type, with save type info contained within the file. This completely avoids any save type issues, but makes its save files incompatible with standalone VBA and most other emulators.<br />
<br />
Libretro devs created a <br />
[https://github.com/libretro/vbam-libretro/blob/master/src/libretro/gbaconv/gbaconv.c command line tool] to convert libretro-VBA .srm save files to raw .sav save data for other emulators. You can just drag and drop a .srm onto the executable and it will output raw .sav. The same can be done in reverse. A precompiled Windows 64-bit binary of this tool can be found <br />
[https://www.mediafire.com/?6bg8ag0bjs1b7ng here].<br />
<br />
==Connectivity==<br />
===GBA Link Multiplayer (1~4GBA)===<br />
* VBA-M: This doesn't work with old VBA versions. <br />
<br />
Just disable "Pause when Inactive", configure all four Joypads each with their own button layout, enable "Link, Enable GBA Link". Now open VBA-M again as much times needed for each player, and have them each use their separate Joypad configuration. Each player will have a separate SRAM save file.<br />
<br />
* VBA Link + e-Reader<br />
A combined version of VBA Link and VBA e-Reader is useful if you want to use the Pokémon Battle-e Cards. Downloads and instructions reside [http://projectpokemon.org/forums/showthread.php?42433-RELEASE-VBA-LINK-E-READER here].<br />
<br />
* mGBA<br />
While running mGBA, select "New multiplayer window" from the menu. As you load your ROMs into each window, "Player [X] of [Y]" will appear across the title bar. This can be done for up to four players. However, multiple instances of the same ROM will share a save file.<br />
<br />
* No$GBA: This method also works with DS roms, and that's the actual way to see the incomplete non-functional local Wi-Fi DS multiplayer implementation. (todo)<br />
<br />
===GameCube Connectivity===<br />
The GBA unit can connect to a GameCube.<br />
<br />
====Dolphin and VBA-M====<br />
<br />
Game Boy connection support can be supported via joybus emulation. Such requires VBA-M (r947 or newer) and a dump of a GBA BIOS.<br />
<br />
'''Connect 1~4 GBA Unit Without Game to GC Game'''<br />
<br />
First Part!<br />
* Open Dolphin and VBA-M. Make sure neither are blocked by your firmware.<br />
* '''Dolphin:''' Start your game and play until you get to the in-game menu where you're asked to connect a GBA. Under the GC controller options (earlier "Config, Gamecube", now it's with the GC/Wii controller options). You have 4 GC controller ports: change how much you need to "GBA". Leave the game and its music running :)<br />
* '''VBA-M:''' You'll need to uncheck "Options, Emulator, Pause When Inactive". Then, under "Options, Link, Joybus Options", Make sure to enable "Enable Joybus Connection" and set "IP/Hostname" to use default settings, that is (127.0.0.1) or (localhost) - without the brackets. <br />
* THEN, Dolphin will freeze. You'll want to not have the system sound too high if you're using headphones. <br />
<br />
Second Part!<br />
* '''VBA-M''': Open the GBA BIOS in VBA-M as if it were a regular GBA ROM. There will be that splash screen but it will stutter a bit. <br />
* Dolphin should recognize the Joybus Link by then and the GC game will detect that a GBA unit was connected.<br />
* To connect other GBA units, open another VBA-M instance and repeat what you did with VBA-M.<br />
<br />
Notable games that work:<br />
* The Legend of Zelda Four Swords Adventures: Both two modes available for the US/PAL version work. The third Japan-only Navi Trackers mode works as well, but the game crashes after the naming screen due to a bug in the GC/GBA connectivity.<br />
* Final Fantasy Crystal Chronicles<br />
* Billy Hatcher: You can download games to your GBA. Amusingly, a RAM dump from VBA-M can be opened as a functional GBA ROM.<br />
* Kururin Squash<br />
* Sonic Adventure 2 (buggy)<br />
<br />
Don't work:<br />
* The Legend of Zelda Wind Waker: Tingle Trainer connection always fails, though some messages do display on VBA-M.<br />
* Drill Land<br />
* Any Pokémon game<br />
* lots more<br />
<br />
'''Connect GBA Game to GC Game'''<br />
<br />
* '''VBA-M''': Under "Emulator, Bios Files" set the GBA BIOS file directory, and have the emulator use it. This will cause each regular GBA rom you load in VBA-M to show the BIOS splash screen then proceed to the game. It has higher compatibility too.<br />
* You do the all the steps above in the '''first part''' of the previous section (connecting a GBA unit without Game to a GC game) until the line with Dolphin freezing when you enable Joylink in VBA-M.<br />
<br />
Then:<br />
* '''VBA-M''': Open the regular GBA ROM to be connected with the GC game in VBA-M as if it were a regular GBA ROM. <br />
* There will be that splash screen, but if you do nothing the GBA game starts as usual and the connection doesn't actually happen. What you must do is to hold '''Select+Start''' while the BIOS is loading. This will cause the BIOS animation to stop and wait for connections, and the regular GBA ROM game won't boot immediately. If it goes as intended, VBA-M will stutter a bit and the connection will be initiated.<br />
* Dolphin should recognize the Joybus Link by then and the GC game will detect that a GBA unit was connected.<br />
* To connect other GBA units, open another VBA-M instance and repeat what you did with VBA-M.<br />
<br />
Please note e-Reader functionality with GC games isn't emulated as of yet.<br />
<br />
====Dolphin and other emulators====<br />
Dolphin devs are working at rewriting the entire GBA connectivity code in a far better way from scratch with more accurate emulators. They did a video using the higan emulator. Nothing of the sort is published at the moment.<br />
<br />
===GBA/DS Connectivity===<br />
Inserting a GBA card in Slot-2 in a Nintendo DS unit (that's not a DSi) while a DS game is running could unlock various gameplay features in some DS games. DesMume can emulate this: while playing the DS ROM, go to "Config, Slot 2 (GBA Slot)" and select "GBA Cartridge". Now select the GBA ROM file, and make sure its sav file is in the same folder. You may need to reset the game sometimes to see the effect in-game.<br />
<br />
===e-Reader===<br />
A device that connects to the GBA, which can read content off e-Card paper stripes either as standalone content, or additional content to GBA games (or even GC ones). Also known as the GBA's DLC.<br />
<br />
''Main Page: [[GBA e-Reader emulators]]''<br />
<br />
==Special Hardware==<br />
Most of these have not been emulated as of yet. There used to be patches that could be applied to GBA ROMs with a utility like LunarIPS (mostly from [http://bubbz.pocketheaven.com/?system=gba&section=patch No Frills]), but they're for the most part lost to time nowadays. Your best bet is to use Action Replay to emulate those.<br />
<br />
===Solar Sensor===<br />
====Emulation====<br />
This feature has been emulated in mGBA, VBA-M and no$gba 2.6 onwards:<br />
* mGBA: In the shortcuts editor, shortcuts can be configured to raise/lower the solar level incrementally or to set any particular brightness level. <br />
* VBA-M: This emulator uses the keys of the lateral motion controls to change the Solar Sensor levels. You can find those keys and modify them in Options -> Input -> Configure... -> "Special" tab.<br />
* no$GBA: Under '''Options/Emulation Setup''', you can find the Solar Sensor Level option. You are given the choice between only three brightness levels though: Darkness, 100 Watts, and Bright Sunlight.<br />
<br />
====ROM Patches====<br />
Fixes applied directly to the ROM by various scene release groups to make it compatible with any emulator/flashcard, making the in-game brightness level controllable with L+Left/Right. It's argued this makes for a better experience actually, but sadly not all releases are covered.<br />
* '''Boktai 1:''' [http://www.advanscene.com/html/Releases/dbreleases.php?id=1567 JP], [http://www.advanscene.com/html/Releases/dbreleases.php?id=1145 US], <s>EU</s>.<br />
* '''Boktai 2:''' [http://www.advanscene.com/html/Releases/dbreleases.php?id=1567 JP], <s>US</s>, [http://www.advanscene.com/html/Releases/dbreleases.php?id=1992 EU]. <br />
* '''Boktai 3:''' [http://www.advanscene.com/html/Releases/dbreleases.php?id=2048 JP Fix].<br />
* Combinations of Boktai 4 JP with earlier solar sensors to get solar sensor bonuses aren't emulated yet in any DS emulator.<br />
<br />
===Motion Control===<br />
VBA-M has an option for Motion controls "Input, Set, Motion". It currently works with all versions of the GBC title Kirby Tilt'n Tumble, which also was a special cartridge with a motion sensor built-in to control movement in-game. But VBA-M does not support motion controls for GBA games yet.<br />
====Emulation====<br />
* VBA '''doesn't''' emulate this feature, and its "Motion Control" option (with keys mapped to each tilt direction) covers the GBC title Kirby Tilt'n Tumble.<br />
* mGBA supposedly includes this feature but key remapping for tilt sensors is not present in the latest builds.<br />
====ROM Patches====<br />
Fixes applied directly to the ROM (with the LunarIPS utility, or at runtime using mGBA or VBA-M and naming them the same as the ROM in the same directory) by various scene release groups to make it compatible with any emulator/flashcard. D-Pad controls substituting motion controls don't work as well here as they tilt it "too much" at times to be very playable.<br />
* Yoshi Topsy Turvy/Universal Gravitation: [http://www.advanscene.com/html/Releases/dbreleases.php?id=1799 JP], [http://www.advanscene.com/html/Releases/dbreleases.php?id=1947 EU], [http://www.advanscene.com/html/Releases/dbreleases.php?id=2001 US]<br />
* Warioware Twisted! (Patch: [http://www.advanscene.com/html/Releases/dbreleases.php?id=1682 JP], [http://www.advanscene.com/html/Releases/dbreleases.php?id=1979 US])<br />
<br />
===Rumble Feature===<br />
There are various rumble features found in GBA/GBC cards:<br />
* '''GBC Rumble:''' GBC games which came on special cartridges with additional hardware for the rumble feature. It was actually used by dozens of releases, and some games like Tarzan 2 GBC were programmed to have rumble support but shipped on regular cartridges. Emulated by VBA-M GX (Wii-only), which also cover the dummied-out rumble games. Not emulated anywhere else.<br />
* '''GBA Gyro Rumble:''' WarioWare Twisted was shipped on a cart with rumble support. It would rumble when you tilt to one "extreme". Emulated by VBA-M GX (Wii-only, functional), mGBA has this feature but it's not enabled in current builds.<br />
* '''GBA Variable Rumble:''' Drill Dozer has rumble support, with variable force and speed depending on the rock type you drill through ingame. Partially emulated by VBA-M GX (Wii-only, functional), mGBA has this feature but it's not enabled in current builds.<br />
* '''Game Boy Player Rumble:''' Many regular GBA games, shipped on regular cartridges, enable rumble during gameplay when played on GB Player hardware (which is essentially GBA hardware). These include Super Mario Advance 4, Summon Night Hajimari no Ishi, Mario & Luigi 1, Shikakui Atama wo Marukusuru Advance (both releases), Pokémon Pinball, as well as Drill Dozer which disables its original cartridge rumble scheme and enables this one instead. None of the emulators support this, though it's being under development for the mGBA emulator.<br />
<br />
===Figurine Readers===<br />
* '''Figurine Add-on:''' Legendz: Isle Of Trials, Legendz: Sign Of Necromu, Plaston Gate ([http://www.advanscene.com/html/Releases/dbreleases.php?id=1020 Fix]), Plaston Gate DX ([http://www.advanscene.com/html/Releases/dbreleases.php?id=2006 Fix]). The add-on is essentially Skylanders before it became popular.<br />
<br />
===Other Add-ons===<br />
Not emulated yet:<br />
<br />
* Battle Chip Gate (and variations): compatible with Japanese versions of Megaman Zero 3, Megaman Battle Network 4, 4.5, 5 and 6.<br />
<br />
==Notes==<br />
<references /><br />
<br />
[[Category:Consoles]]<br />
[[Category:Nintendo consoles]]<br />
[[Category:Game Boy Advance emulators|*]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Using_RetroArch&diff=10577Using RetroArch2016-04-07T00:44:14Z<p>Monroe88: /* Problems and Solutions */</p>
<hr />
<div>==Basic Usage==<br />
{{Main|Dummies Guide: RetroArch}}<br />
After downloading [[RetroArch]],[[File:Rgui.png|thumb|205px|RGUI, RetroArch's original interface. XMB and GLUI follow the same basic structure.]] start up retroarch.exe.<br />
<br />
To launch a game, select the libretro core you'd like to use under '''Load Core''', and select a ROM under '''Load Content>Select File'''. Alternatively, you can use '''Load Content>Select File And Detect Core''' to be presented with a list of cores detected based on the file extension of the content.<br />
<br />
For more convenient ROM selection, setup your browser directory under '''Settings>Directory'''.<br />
<br />
==Installing RetroArch on Linux==<br />
===Ubuntu based===<br />
First, add the PPA for <code>ppa:libretro/stable</code> or <code>ppa:libretro/testing</code> for stable builds and dev builds respectively (instructions [[Emulation on Ubuntu|here]]), then type the following into a terminal:<br />
sudo apt-get update<br />
<br />
sudo apt-get install retroarch retroarch-assets retroarch-joypad-autoconfig<br />
<br />
sudo apt-get install <corename><br />
<br />
Replace <corename> with the name of the package the core is available in. You can see all of the cores available to you either in your package manager (e.g. Synaptic, Software Center) or by visiting [https://launchpad.net/~libretro/+archive/ubuntu/stable Launchpad]. To install all (or at least most) of the cores in one go, run<br />
sudo apt-get install libretro*<br />
<br />
====Initial setup (Ubuntu)====<br />
This section applies to most distros of Linux, but the paths referenced may be Ubuntu-specific.<br />
<br />
Before you can use the cores you've downloaded in Retroarch, you need to set the path to the libraries in '''retroarch.cfg''', the configuration file for Retroarch. Run Retroarch at least once to create a skeleton retroarch.cfg. By default, retroarch.cfg will be created in the directory '''$HOME/.config/retroarch''', where $HOME is your home directory. If retroarch.cfg is not found at that location, run Retroarch and choose the '''Save Config''' option - Retroarch will save a new configuration file and display its path on screen. Alternatively, you can use the '''find''' command:<br />
find ~ -name "retroarch.cfg"<br />
<br />
Next you need to locate the directory in which the libretro cores are stored. They should have been saved in the directory '''/usr/lib/libretro'''. You can check this by entering the command<br />
ls /usr/lib/libretro<br />
You should see a list of all the cores you downloaded. If the directory does not exist, you can find where the cores were saved with the find command:<br />
sudo find / -name "libretro"<br />
find may return several directories. Use '''ls''' to check each one until you find the downloaded cores.<br />
<br />
Once you've located the libretro cores, it's time to open retroarch.cfg using your editor of choice. Look for the option '''libretro_directory''', which may be located near the bottom of the file. Insert the path to the libretro cores between the quotation marks on the right hand side. Assuming the cores are located in <code>/usr/lib/libretro</code>, the line in the configuration file should look like<br />
libretro_directory = "/usr/lib/libretro"<br />
<br />
You can also set the libretro path using the menu. In Retroarch, go to Settings -> Path Options -> Core Directory and navigate to the appropriate folder. If you set everything up correctly, you should see the cores when you select the ''Core'' option in the menu.<br />
<br />
===Installation on Gentoo===<br />
<br />
First, install an overlay manager with git support: <br />
<br />
# USE="git" emerge layman<br />
<br />
Add the abendbrot repository for straightforward installation through RetroArch's git repository:<br />
<br />
# layman -a abendbrot<br />
# echo "source /var/lib/layman/make.conf" >> /etc/portage/make.conf<br />
<br />
Now, change portage to pull from the RetroArch git repository:<br />
<br />
# echo "games-emulation/retroarch-9999 **" >> /etc/portage/package.accept_keywords<br />
<br />
Set USE flags that you want, it is not required to enable every single one (you only need at least one audio and video output device; defaults are suitable enough). It is recommended to add udev for joystick support and netplay for netplay support.<br />
<br />
<br />
Build and install RetroArch from the git repository<br />
<br />
# emerge retroarch<br />
<br />
No cores are added by default, you will need to emerge them.<br />
<br />
# emerge <corename>-libretro<br />
<br />
Alternatively, you can set USE flags through <code>/etc/portage/package.use</code> libretro-meta package to choose what cores you wish; small all USE flags are on.<br />
<br />
Syntax:<br />
games-emulation/libretro-meta <USEFLAG> <USEFLAG> ...<br />
<br />
bsnes has USE flags for its balanced, performance and accuracy profiles:<br />
games-emulation/bsnes-libretro profile_accuracy ...<br />
<br />
The cores will be installed under /usr/lib/libretro/<br />
<br />
<br />
===Other Distros===<br />
You will have to compile from source. For Arch Linux, there are AUR packages that simplify this process, although it is not incredibly difficult otherwise. The most important part is making sure you have all the dependencies.<br />
<br />
Dependencies: (refer to your distro's wiki or package manager for exact package names)<br />
<br />
*pkgconfig<br />
<br />
*OpenGL headers (should be on most distros by default, if not try installing libgl/mesa development package<br />
====Optional====<br />
*libxml2 - For XML shaders and cheat support<br />
*freetype - TTF font rendering<br />
*ffmpeg/libavcodec - FFmpeg recording<br />
*nvidia-cg-toolkit - Cg shaders<br />
===Using RetroArch===<br />
RetroArch has a robust CLI for those who prefer the command line, there are also many pages which should have been installed by default for <code>retroarch</code>, <code>retroarch-joyconfig</code> and others. If you use the CLI be sure to configure your <code>retroarch.cfg</code> file before first use. This config is well commented so each option can be fully understood. Use <code>retroarch-joyconfig</code> command for simplified input setup. RetroArch can auto-detect inputs, which is a great feature to simplify playing with multiple/different controllers (refer to <code>man retroarch-joyconfig</code> for details). The <code>retroarch.cfg</code> file should be located in <code>/etc/retroarch.cfg</code>, your home folder or the directory where RetroArch was installed depending on your distro and compilation setup.<br />
<br />
==General Setup/Usage==<br />
===Menu Controls===<br />
<br />
Default keys for the keyboard are: x (confirm), z (back) and the arrow keys. If you're using an XInput (xbox 360) controller, your controller should already be set-up.<br />
===BIOS===<br />
<br />
If you are going to play in a system that needs a BIOS (e.g. PS1), place the [[Emulator_Files#Multi-System|BIOS files]] in RetroArch's 'system' directory.<br />
<br />
Mednafen is very picky about which BIOS to use. The ones that you might need are:<br />
<br />
<ul><br />
<li class="de2"><code>scph5500.bin</code></li><br />
<li class="de2"><code>scph5501.bin</code></li><br />
<li class="de2"><code>scph5502.bin</code></li><br />
</ul><br />
<br />
===Disc images===<br />
<br />
[[Mednafen]] requires you to load games through CUE sheets. Ensure that the CUE sheet is properly set up in order for the game to run. See the [[Cue sheet (.cue)]] for more.<br />
<br />
===Mupen64Plus===<br />
This core has the option to choose between four graphics plugins and two RSP plugins:<br />
<br />
*Glide64 is the most recommended general use graphics plugin, as it is very compatible and reasonably accurate while still being decently fast.<br />
<br />
*Rice is much faster than Glide64, but it also suffers from a lot more issues. Only use if your device is too slow to handle Glide64.<br />
<br />
*gln64 has even more problems than Rice, while not being much faster. Not recommended. Will likely be replaced with GLideN64 in the near future.<br />
<br />
*Angrylion is ultra accurate, but is too slow for most people to use. Requires the CXD4 RSP to work. Resolution must be set to 640x480 or higher.<br />
<br />
*The HLE RSP plugin is very fast and will work fine for most games.<br />
<br />
*The CXD4 RSP is more accurate, and is needed for a few games to work correctly.<br />
<br />
A good general purpose setup is Glide64 with the CXD4 RSP. If it's a tad slow for your setup, switch to the HLE RSP.<br />
<br />
There is currently a bug in Glide64 that makes it so texture filtering is applied to everything, even when the Texture Filtering setting is set to Automatic. To make it display textures correctly, go to Core Options, toggle the setting to something other than Automatic, then set it back to Automatic. Glide64 will display textures correctly now, using the 3-point Bilinear method.<br />
<br />
If you get strange texture issues while using Glide64, such as textures partially disappearing or popping over polygons, mess around with the Polygon Offset Factor setting in Core Options until the issue goes away. Keep in mind some games may require a more aggressive setting than others, so experiment until you get a good balance that works for most games. The optimal setting tends to be GPU-specific.<br />
<br />
A few games, such as Star Fox 64, suffer from looking too dark due to a lack of gamma correction, which was done on real hardware. Short of implementing this in a plugin, a decent workaround is to use the image-adjustment.cg shader, and set the Target Gamma setting to 1.0. This will make such games look as they ought to.<br />
<br />
===Super Game Boy===<br />
<br />
Using recent builds of the bsnes libretro cores, you can load Game Boy games in a fully emulated Super Game Boy. As this feature is not currently usable from the menu, you must do so using a command line. <br />
Start RetroArch with the following command to load GB games in SGB mode using bsnes:<br />
<br />
retroarch "path to Super Game Boy SNES cartridge ROM" --libretro "path to bsnes libretro" --subsystem sgb "path to Game Boy cartridge ROM"<br />
<br />
Put the actual paths to the ROMs in double quotes if there are spaces in the paths. For example:<br />
<br />
retroarch "C:\Games\SNES\Super Game Boy 2 (Japan).sfc" --libretro ".\cores\bsnes_balanced_libretro.dll" --subsystem sgb "C:\Games\Game Boy\Kirby's Dream Land (USA, Europe).gb"<br />
<br />
You will need <code>sgb.boot.rom</code> (CRC: ec8a83b9) in your System folder, this can be found on the [[Emulator Files]] page in the SNES file pack if you do not have it. If it is named "sgb_bios.bin" then rename it to "sgb.boot.rom".<br />
<br />
CRC of Super Game Boy SNES cartridge roms:[http://wiki.libretro.com/index.php?title=Bsnes#Super_Gameboy_Support]<br />
*Super Game Boy (Japan, USA) (Rev 1).sfc (CRC: 27a03c98)<br />
*Super Game Boy (World) (Rev 2).sfc (CRC: 8a4a174f)<br />
*Super Game Boy 2 (Japan).sfc (CRC: cb176e45)<br />
<br />
You can also use the RetroArch-Phoenix launcher to load them, but YMMV since it is not being updated anymore. Also, you can create a batch file like [http://pastebin.com/raw.php?i=yLm3HuDT this] to be able to drag and drop Game Boy ROMs onto it and launch them in SGB mode.<br />
<br />
Also, if you are using nightly build or Linux build it might just hang at black screen, even if you have all correct requirements.<br />
<br />
===Dual Analog Controllers===<br />
PS1 games often used a set of default remappings if they didn't support it directly. Some games used both analogs as the D-pad, RetroArch doesn't support that though. Dual analogs only work in games that fully supported them, such as Ape Escape. To use dual analog for such games, start a game with mednafen/beetle_psx then go to Input Options, and change Device Type to '''DualShock'''. Also make sure you're using a [[RetroArch#PC_Versions|recent version]] of RetroArch and the mednafen/beetle_psx core.<br />
<br />
===Transfer PS1 Memory Card Files===<br />
Mednafen creates memory card files for each individual game, in contrast to PCSX-R/ePSXe where all game saves are stored into 2 memory card files. To transfer memory card files from PCSX-R/ePSXe to RetroArch:<br />
<br />
*Start game in RetroArch.<br />
<br />
*Go to system folder. Copy the names of the .mcr files created for the game.<br />
<br />
*Delete them.<br />
<br />
*Rename the files you want to transfer with the names of the RetroArch memcard files.<br />
<br />
*Place the new ones in the system folder.<br />
<br />
===Disk Changing===<br />
To changes disks in-game, go to Core Disk Options > Disk Image Append.<br />
<br />
Some games like Metal Gear Solid require the disk tray to be opened before changing disks. To do this, change 'Disk Index' to 'No Disk' first.<br />
<br />
=== FDS Disk Side Changing ===<br />
Just press the configured "Y" button. RetroArch won't display any OSD message to confirm the change.<br />
<br />
=== Gambatte GB custom palettes ===<br />
It is possible to use the custom palettes created with the standalone Qt GUI version of [[Gambatte]].<br />
<br />
First set the "gb_colorization" core option as "custom". Then create a "palettes" subdirectory in the system directory and copy the custom palettes there.<br />
<br />
The custom palettes will be searched in this order:<br />
* Your Rom Filename.pal<br />
* YOUR_ROM_INTERNAL_NAME.pal<br />
* default.pal<br />
You can download the set of standard SGB and GBC palettes [http://eadmaster.tk here] (look for "goomba2gambatte palette converter in python").<br />
<br />
===Audio DSP Plugins===<br />
RetroArch supports loading audio DSP plugins to add effects such as reverb to the audio output. This has been in RetroArch for a long time, but was recently reworked to be easier to use and more accessible from the menu, and are available in the main RetroArch repository now. Now you can load DSP filters in the menu under Settings>Audio>Audio DSP Plugin, where you can load a DSP preset with .dsp extension, which is a text file similar to a shader preset that lets you chain DSP filters and specify their options. The DSP filters themselves are dynamic libraries that are loaded according to the .dsp file. Each DSP filter has a standalone preset that documents the default options, and there are some example presets that combine more than one filter.<br />
<br />
Note that some of these filters may reduce volume a bit, so you may want to boost RA's volume level to compensate. If you want to remove the filter, press Start when the DSP Filter option is highlighted.<br />
<br />
The filters and their presets can be found [https://github.com/libretro/RetroArch/tree/master/audio/audio_filters here], which the DSP filters can be built for your platform with the makefile. These files should be included in nightly builds from the buildbot.<br />
<br />
===SoftFilters===<br />
Classic emulator filters like SuperEagle or Blargg's NTSC have been available as bSNES filter plugins in the past, which is no longer supported in bSNES/higan but was still available in RetroArch. However, this filter format was recently replaced with the SoftFilter spec, which has been upgraded to support more platforms, multi-threading and SIMD usage. The filters are dynamic libraries which are loaded in the menu under Settings>Video>Video Filter, which will apply the filter before any shaders are applied. <br />
<br />
The filters are found [https://github.com/libretro/RetroArch/tree/master/gfx/video_filters here], which can be built for your platform with the makefile. These files should be included in nightly builds from the buildbot.<br />
<br />
Note that these filters are WIP and may not work with all cores as they need to have codepaths for the pixel format the core uses (either 32bpp XRGB8888 or 16bpp RGB565). Blargg's NTSC is currently limited to 16bpp cores for example (bSNES is 32bpp so it won't work, but SNES9x is 16bpp so it works there). Cores that use Libretro GL for 3D like Mupen64plus can not use these filters.<br />
<br />
===Outputting log to a file===<br />
An easy way to get RetroArch to output logs to file for easy copy/pasting:<br />
<br />
retroarch --menu --verbose >> log.txt 2>&1<br />
<br />
It will load up to the menu as if you just double clicked the executable, but it will redirect standard output and standard error to a text file called <code>log.txt</code> in your RetroArch folder. The command above will append to the log and not overwrite existing information, if you want it to overwrite, change ">>" into ">". This can be put into a .bat file to easily run it when desired.<br />
<br />
==Building from source==<br />
{{Main|Building RetroArch}}<br />
Libretro-super is a series of scripts used to ease the compilation and installation of each and every libretro emulation core and RetroArch itself. Thus this is the simplest route to a fully functional installation. If you need or want to build each core individually then you can refer to the [https://github.com/libretro/libretro-super/blob/master/libretro-build-common.sh build-common.sh] script for direction.<br />
git clone git://github.com/libretro/libretro-super.git<br />
cd libretro-super<br />
sh libretro-fetch.sh<br />
sh libretro-build.sh<br />
sh libretro-install.sh <path where you'd like RetroArch installed><br />
<br />
If you want to build cores individually with the script instead of all of them at once, you can do this<br />
<br />
sh libretro-build.sh build_libretro_<corename><br />
<br />
to call one core's build function directly instead of calling them all.<br />
<br />
==Hotkeys==<br />
<br />
*F1 - Open menu<br />
*F2 - Save state<br />
*F4 - Load state<br />
*F6 - Input save state slot decrease<br />
*F7 - Input save state slot increase <br />
*F8 - Take Screenshot<br />
*F9 - Mute Audio<br />
*F11 - Hide Cursor<br />
*Space - Turn off Frame Limiter<br />
*Esc - Exit game<br />
*f - Fullscreen<br />
<br />
==Problems and Solutions==<br />
<br />
===Menu runs too fast===<br />
<br />
If Vsync is disabled for any reason, the menu may run unthrottled and scroll too fast to be usable. To fix this, enable ''Limit Maximum Run Speed'', and set ''Maximum Run Speed'' to 1.0x in ''Settings''→''Frame Throttle''. In the config file, these options are called <code>fastforward_ratio_throttle_enable</code> and <code>fastforward_ratio</code>. However, this will make fast forward not work, you will need to increase the ''Maximum Run Speed'' higher than 1.0x for that to work.<br />
<br />
This tends to happen when you first start up RetroArch and not after loading a game. This is because without a core loaded, the menu is only throttled by Vsync when ''Limit Maximum Run Speed'' is disabled, while cores are able to throttle on audio as well. Fastforward disables both Vsync and audio sync, which allows the core to run unthrottled unless it is specifically limited by the ''Limit Maximum Run Speed'' setting.<br />
<br />
In newer RetroArch versions, you can just enable ''Throttle Menu Framerate'' under ''Settings''→''Frame Throttle'' to specifically limit the menu to 60fps without impacting fastforward speed.<br />
<br />
===Command prompt running and closing itself upon running retroarch.exe===<br />
<br />
If this only happens on certain cores, then you should check to see if you have all the required BIOS and other files available in the "system" folder or in the folder where the game is located.<br />
<br />
If it happens on all cores with a clean config file, then try changing <code>video_driver</code> setting from <code>gl</code> to <code>d3d</code> or <code>sdl2</code>, if you have a particularly ancient GPU.<br />
<br />
===Performance issues while using the GL driver===<br />
<br />
Nvidia users may find that even while idle, RetroArch CPU usage is upwards of 12% or above while using the GL video driver. If this is the case, go into the Nvidia Control Panel, and under Manage 3D Settings, check to see if the Threaded Optimizations option is set to Auto or On. If so, add retroarch.exe to the list of programs, and then toggle it to Off. This should lower CPU usage drastically.<br />
<br />
===Stuttering due to inaccurate refresh rate estimation===<br />
<br />
RetroArch uses [[Vsync#Dynamic_Rate_Control|Dynamic Rate Control]] to synchronize both audio and video rates of the emulated game to those of your system. It relies on the refresh rate setting being accurate to your display. By default, it is set to sync to 59.95Hz, which is the standard rate for NTSC video. However, if your display runs at a different rate than what , it can cause problems with synchronization, so you should make sure that setting accurately reflects your display's actual refresh rate. If you don't know your display's exact refresh rate, RetroArch provides a couple of ways of accurately estimating it.<br />
<br />
The first method is to go into ''Settings''→''Video'' in the menu, and go to ''Estimated Monitor Framerate''. You'll probably see it already counting up frames as soon as you enter that menu. In order to get an accurate reading, press '''Start''' button or '''Spacebar''' key to reset the counter, then let it run for 2048 frames (about 34 seconds at 60fps), then press '''A''' button or '''Enter''' key to have the estimation set as the refresh rate for synchronization. A lower deviation is better for accurate estimation, using exclusive fullscreen can help with that.<br />
<br />
The second method is to simply launch RetroArch from the command line in verbose logging mode, by doing <code>retroarch --menu --verbose</code>, and let it run for at least 4096 frames (about 1 minute at 60fps). When you close RetroArch, it will report the estimation results in the log. Again, running in exclusive fullscreen gives more accurate results. Example estimation output:<br />
<br />
RetroArch [INFO] :: Average audio buffer saturation: 49.84 %, standard deviation (percentage points): 11.99 %.<br />
RetroArch [INFO] :: Amount of time spent close to underrun: 0.70 %. Close to blocking: 1.04 %.<br />
RetroArch [INFO] :: Average monitor Hz: 60.006001 Hz. (27.568 % frame time deviation, based on 2048 last samples).<br />
<br />
The refresh rate given there should be very accurate, and you can copy it into <code>video_refresh_rate</code> in your config file.<br />
<br />
==External links==<br />
*[http://wiki.libretro.com/index.php?title=Main_Page Libretro Wiki]<br />
*[http://forum.themaister.net/viewtopic.php?id=467 Windows Compilation Guide]<br />
*[http://www.libretro.com/index.php/wiki/compilation/linux/ Linux Compilation Guide]<br />
*[https://github.com/libretro/RetroArch/wiki/RGUI RGUI Documentation]<br />
*[http://www.libretro.com/index.php/wiki/configuration/general-configuration/ General Configuration]<br />
<br />
[[Category:FAQs]]<br />
[[Category:RetroArch]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Using_RetroArch&diff=10576Using RetroArch2016-04-06T23:43:22Z<p>Monroe88: /* Menu runs too fast */</p>
<hr />
<div>==Basic Usage==<br />
{{Main|Dummies Guide: RetroArch}}<br />
After downloading [[RetroArch]],[[File:Rgui.png|thumb|205px|RGUI, RetroArch's original interface. XMB and GLUI follow the same basic structure.]] start up retroarch.exe.<br />
<br />
To launch a game, select the libretro core you'd like to use under '''Load Core''', and select a ROM under '''Load Content>Select File'''. Alternatively, you can use '''Load Content>Select File And Detect Core''' to be presented with a list of cores detected based on the file extension of the content.<br />
<br />
For more convenient ROM selection, setup your browser directory under '''Settings>Directory'''.<br />
<br />
==Installing RetroArch on Linux==<br />
===Ubuntu based===<br />
First, add the PPA for <code>ppa:libretro/stable</code> or <code>ppa:libretro/testing</code> for stable builds and dev builds respectively (instructions [[Emulation on Ubuntu|here]]), then type the following into a terminal:<br />
sudo apt-get update<br />
<br />
sudo apt-get install retroarch retroarch-assets retroarch-joypad-autoconfig<br />
<br />
sudo apt-get install <corename><br />
<br />
Replace <corename> with the name of the package the core is available in. You can see all of the cores available to you either in your package manager (e.g. Synaptic, Software Center) or by visiting [https://launchpad.net/~libretro/+archive/ubuntu/stable Launchpad]. To install all (or at least most) of the cores in one go, run<br />
sudo apt-get install libretro*<br />
<br />
====Initial setup (Ubuntu)====<br />
This section applies to most distros of Linux, but the paths referenced may be Ubuntu-specific.<br />
<br />
Before you can use the cores you've downloaded in Retroarch, you need to set the path to the libraries in '''retroarch.cfg''', the configuration file for Retroarch. Run Retroarch at least once to create a skeleton retroarch.cfg. By default, retroarch.cfg will be created in the directory '''$HOME/.config/retroarch''', where $HOME is your home directory. If retroarch.cfg is not found at that location, run Retroarch and choose the '''Save Config''' option - Retroarch will save a new configuration file and display its path on screen. Alternatively, you can use the '''find''' command:<br />
find ~ -name "retroarch.cfg"<br />
<br />
Next you need to locate the directory in which the libretro cores are stored. They should have been saved in the directory '''/usr/lib/libretro'''. You can check this by entering the command<br />
ls /usr/lib/libretro<br />
You should see a list of all the cores you downloaded. If the directory does not exist, you can find where the cores were saved with the find command:<br />
sudo find / -name "libretro"<br />
find may return several directories. Use '''ls''' to check each one until you find the downloaded cores.<br />
<br />
Once you've located the libretro cores, it's time to open retroarch.cfg using your editor of choice. Look for the option '''libretro_directory''', which may be located near the bottom of the file. Insert the path to the libretro cores between the quotation marks on the right hand side. Assuming the cores are located in <code>/usr/lib/libretro</code>, the line in the configuration file should look like<br />
libretro_directory = "/usr/lib/libretro"<br />
<br />
You can also set the libretro path using the menu. In Retroarch, go to Settings -> Path Options -> Core Directory and navigate to the appropriate folder. If you set everything up correctly, you should see the cores when you select the ''Core'' option in the menu.<br />
<br />
===Installation on Gentoo===<br />
<br />
First, install an overlay manager with git support: <br />
<br />
# USE="git" emerge layman<br />
<br />
Add the abendbrot repository for straightforward installation through RetroArch's git repository:<br />
<br />
# layman -a abendbrot<br />
# echo "source /var/lib/layman/make.conf" >> /etc/portage/make.conf<br />
<br />
Now, change portage to pull from the RetroArch git repository:<br />
<br />
# echo "games-emulation/retroarch-9999 **" >> /etc/portage/package.accept_keywords<br />
<br />
Set USE flags that you want, it is not required to enable every single one (you only need at least one audio and video output device; defaults are suitable enough). It is recommended to add udev for joystick support and netplay for netplay support.<br />
<br />
<br />
Build and install RetroArch from the git repository<br />
<br />
# emerge retroarch<br />
<br />
No cores are added by default, you will need to emerge them.<br />
<br />
# emerge <corename>-libretro<br />
<br />
Alternatively, you can set USE flags through <code>/etc/portage/package.use</code> libretro-meta package to choose what cores you wish; small all USE flags are on.<br />
<br />
Syntax:<br />
games-emulation/libretro-meta <USEFLAG> <USEFLAG> ...<br />
<br />
bsnes has USE flags for its balanced, performance and accuracy profiles:<br />
games-emulation/bsnes-libretro profile_accuracy ...<br />
<br />
The cores will be installed under /usr/lib/libretro/<br />
<br />
<br />
===Other Distros===<br />
You will have to compile from source. For Arch Linux, there are AUR packages that simplify this process, although it is not incredibly difficult otherwise. The most important part is making sure you have all the dependencies.<br />
<br />
Dependencies: (refer to your distro's wiki or package manager for exact package names)<br />
<br />
*pkgconfig<br />
<br />
*OpenGL headers (should be on most distros by default, if not try installing libgl/mesa development package<br />
====Optional====<br />
*libxml2 - For XML shaders and cheat support<br />
*freetype - TTF font rendering<br />
*ffmpeg/libavcodec - FFmpeg recording<br />
*nvidia-cg-toolkit - Cg shaders<br />
===Using RetroArch===<br />
RetroArch has a robust CLI for those who prefer the command line, there are also many pages which should have been installed by default for <code>retroarch</code>, <code>retroarch-joyconfig</code> and others. If you use the CLI be sure to configure your <code>retroarch.cfg</code> file before first use. This config is well commented so each option can be fully understood. Use <code>retroarch-joyconfig</code> command for simplified input setup. RetroArch can auto-detect inputs, which is a great feature to simplify playing with multiple/different controllers (refer to <code>man retroarch-joyconfig</code> for details). The <code>retroarch.cfg</code> file should be located in <code>/etc/retroarch.cfg</code>, your home folder or the directory where RetroArch was installed depending on your distro and compilation setup.<br />
<br />
==General Setup/Usage==<br />
===Menu Controls===<br />
<br />
Default keys for the keyboard are: x (confirm), z (back) and the arrow keys. If you're using an XInput (xbox 360) controller, your controller should already be set-up.<br />
===BIOS===<br />
<br />
If you are going to play in a system that needs a BIOS (e.g. PS1), place the [[Emulator_Files#Multi-System|BIOS files]] in RetroArch's 'system' directory.<br />
<br />
Mednafen is very picky about which BIOS to use. The ones that you might need are:<br />
<br />
<ul><br />
<li class="de2"><code>scph5500.bin</code></li><br />
<li class="de2"><code>scph5501.bin</code></li><br />
<li class="de2"><code>scph5502.bin</code></li><br />
</ul><br />
<br />
===Disc images===<br />
<br />
[[Mednafen]] requires you to load games through CUE sheets. Ensure that the CUE sheet is properly set up in order for the game to run. See the [[Cue sheet (.cue)]] for more.<br />
<br />
===Mupen64Plus===<br />
This core has the option to choose between four graphics plugins and two RSP plugins:<br />
<br />
*Glide64 is the most recommended general use graphics plugin, as it is very compatible and reasonably accurate while still being decently fast.<br />
<br />
*Rice is much faster than Glide64, but it also suffers from a lot more issues. Only use if your device is too slow to handle Glide64.<br />
<br />
*gln64 has even more problems than Rice, while not being much faster. Not recommended. Will likely be replaced with GLideN64 in the near future.<br />
<br />
*Angrylion is ultra accurate, but is too slow for most people to use. Requires the CXD4 RSP to work. Resolution must be set to 640x480 or higher.<br />
<br />
*The HLE RSP plugin is very fast and will work fine for most games.<br />
<br />
*The CXD4 RSP is more accurate, and is needed for a few games to work correctly.<br />
<br />
A good general purpose setup is Glide64 with the CXD4 RSP. If it's a tad slow for your setup, switch to the HLE RSP.<br />
<br />
There is currently a bug in Glide64 that makes it so texture filtering is applied to everything, even when the Texture Filtering setting is set to Automatic. To make it display textures correctly, go to Core Options, toggle the setting to something other than Automatic, then set it back to Automatic. Glide64 will display textures correctly now, using the 3-point Bilinear method.<br />
<br />
If you get strange texture issues while using Glide64, such as textures partially disappearing or popping over polygons, mess around with the Polygon Offset Factor setting in Core Options until the issue goes away. Keep in mind some games may require a more aggressive setting than others, so experiment until you get a good balance that works for most games. The optimal setting tends to be GPU-specific.<br />
<br />
A few games, such as Star Fox 64, suffer from looking too dark due to a lack of gamma correction, which was done on real hardware. Short of implementing this in a plugin, a decent workaround is to use the image-adjustment.cg shader, and set the Target Gamma setting to 1.0. This will make such games look as they ought to.<br />
<br />
===Super Game Boy===<br />
<br />
Using recent builds of the bsnes libretro cores, you can load Game Boy games in a fully emulated Super Game Boy. As this feature is not currently usable from the menu, you must do so using a command line. <br />
Start RetroArch with the following command to load GB games in SGB mode using bsnes:<br />
<br />
retroarch "path to Super Game Boy SNES cartridge ROM" --libretro "path to bsnes libretro" --subsystem sgb "path to Game Boy cartridge ROM"<br />
<br />
Put the actual paths to the ROMs in double quotes if there are spaces in the paths. For example:<br />
<br />
retroarch "C:\Games\SNES\Super Game Boy 2 (Japan).sfc" --libretro ".\cores\bsnes_balanced_libretro.dll" --subsystem sgb "C:\Games\Game Boy\Kirby's Dream Land (USA, Europe).gb"<br />
<br />
You will need <code>sgb.boot.rom</code> (CRC: ec8a83b9) in your System folder, this can be found on the [[Emulator Files]] page in the SNES file pack if you do not have it. If it is named "sgb_bios.bin" then rename it to "sgb.boot.rom".<br />
<br />
CRC of Super Game Boy SNES cartridge roms:[http://wiki.libretro.com/index.php?title=Bsnes#Super_Gameboy_Support]<br />
*Super Game Boy (Japan, USA) (Rev 1).sfc (CRC: 27a03c98)<br />
*Super Game Boy (World) (Rev 2).sfc (CRC: 8a4a174f)<br />
*Super Game Boy 2 (Japan).sfc (CRC: cb176e45)<br />
<br />
You can also use the RetroArch-Phoenix launcher to load them, but YMMV since it is not being updated anymore. Also, you can create a batch file like [http://pastebin.com/raw.php?i=yLm3HuDT this] to be able to drag and drop Game Boy ROMs onto it and launch them in SGB mode.<br />
<br />
Also, if you are using nightly build or Linux build it might just hang at black screen, even if you have all correct requirements.<br />
<br />
===Dual Analog Controllers===<br />
PS1 games often used a set of default remappings if they didn't support it directly. Some games used both analogs as the D-pad, RetroArch doesn't support that though. Dual analogs only work in games that fully supported them, such as Ape Escape. To use dual analog for such games, start a game with mednafen/beetle_psx then go to Input Options, and change Device Type to '''DualShock'''. Also make sure you're using a [[RetroArch#PC_Versions|recent version]] of RetroArch and the mednafen/beetle_psx core.<br />
<br />
===Transfer PS1 Memory Card Files===<br />
Mednafen creates memory card files for each individual game, in contrast to PCSX-R/ePSXe where all game saves are stored into 2 memory card files. To transfer memory card files from PCSX-R/ePSXe to RetroArch:<br />
<br />
*Start game in RetroArch.<br />
<br />
*Go to system folder. Copy the names of the .mcr files created for the game.<br />
<br />
*Delete them.<br />
<br />
*Rename the files you want to transfer with the names of the RetroArch memcard files.<br />
<br />
*Place the new ones in the system folder.<br />
<br />
===Disk Changing===<br />
To changes disks in-game, go to Core Disk Options > Disk Image Append.<br />
<br />
Some games like Metal Gear Solid require the disk tray to be opened before changing disks. To do this, change 'Disk Index' to 'No Disk' first.<br />
<br />
=== FDS Disk Side Changing ===<br />
Just press the configured "Y" button. RetroArch won't display any OSD message to confirm the change.<br />
<br />
=== Gambatte GB custom palettes ===<br />
It is possible to use the custom palettes created with the standalone Qt GUI version of [[Gambatte]].<br />
<br />
First set the "gb_colorization" core option as "custom". Then create a "palettes" subdirectory in the system directory and copy the custom palettes there.<br />
<br />
The custom palettes will be searched in this order:<br />
* Your Rom Filename.pal<br />
* YOUR_ROM_INTERNAL_NAME.pal<br />
* default.pal<br />
You can download the set of standard SGB and GBC palettes [http://eadmaster.tk here] (look for "goomba2gambatte palette converter in python").<br />
<br />
===Audio DSP Plugins===<br />
RetroArch supports loading audio DSP plugins to add effects such as reverb to the audio output. This has been in RetroArch for a long time, but was recently reworked to be easier to use and more accessible from the menu, and are available in the main RetroArch repository now. Now you can load DSP filters in the menu under Settings>Audio>Audio DSP Plugin, where you can load a DSP preset with .dsp extension, which is a text file similar to a shader preset that lets you chain DSP filters and specify their options. The DSP filters themselves are dynamic libraries that are loaded according to the .dsp file. Each DSP filter has a standalone preset that documents the default options, and there are some example presets that combine more than one filter.<br />
<br />
Note that some of these filters may reduce volume a bit, so you may want to boost RA's volume level to compensate. If you want to remove the filter, press Start when the DSP Filter option is highlighted.<br />
<br />
The filters and their presets can be found [https://github.com/libretro/RetroArch/tree/master/audio/audio_filters here], which the DSP filters can be built for your platform with the makefile. These files should be included in nightly builds from the buildbot.<br />
<br />
===SoftFilters===<br />
Classic emulator filters like SuperEagle or Blargg's NTSC have been available as bSNES filter plugins in the past, which is no longer supported in bSNES/higan but was still available in RetroArch. However, this filter format was recently replaced with the SoftFilter spec, which has been upgraded to support more platforms, multi-threading and SIMD usage. The filters are dynamic libraries which are loaded in the menu under Settings>Video>Video Filter, which will apply the filter before any shaders are applied. <br />
<br />
The filters are found [https://github.com/libretro/RetroArch/tree/master/gfx/video_filters here], which can be built for your platform with the makefile. These files should be included in nightly builds from the buildbot.<br />
<br />
Note that these filters are WIP and may not work with all cores as they need to have codepaths for the pixel format the core uses (either 32bpp XRGB8888 or 16bpp RGB565). Blargg's NTSC is currently limited to 16bpp cores for example (bSNES is 32bpp so it won't work, but SNES9x is 16bpp so it works there). Cores that use Libretro GL for 3D like Mupen64plus can not use these filters.<br />
<br />
===Outputting log to a file===<br />
An easy way to get RetroArch to output logs to file for easy copy/pasting:<br />
<br />
retroarch --menu --verbose >> log.txt 2>&1<br />
<br />
It will load up to the menu as if you just double clicked the executable, but it will redirect standard output and standard error to a text file called <code>log.txt</code> in your RetroArch folder. The command above will append to the log and not overwrite existing information, if you want it to overwrite, change ">>" into ">". This can be put into a .bat file to easily run it when desired.<br />
<br />
==Building from source==<br />
{{Main|Building RetroArch}}<br />
Libretro-super is a series of scripts used to ease the compilation and installation of each and every libretro emulation core and RetroArch itself. Thus this is the simplest route to a fully functional installation. If you need or want to build each core individually then you can refer to the [https://github.com/libretro/libretro-super/blob/master/libretro-build-common.sh build-common.sh] script for direction.<br />
git clone git://github.com/libretro/libretro-super.git<br />
cd libretro-super<br />
sh libretro-fetch.sh<br />
sh libretro-build.sh<br />
sh libretro-install.sh <path where you'd like RetroArch installed><br />
<br />
If you want to build cores individually with the script instead of all of them at once, you can do this<br />
<br />
sh libretro-build.sh build_libretro_<corename><br />
<br />
to call one core's build function directly instead of calling them all.<br />
<br />
==Hotkeys==<br />
<br />
*F1 - Open menu<br />
*F2 - Save state<br />
*F4 - Load state<br />
*F6 - Input save state slot decrease<br />
*F7 - Input save state slot increase <br />
*F8 - Take Screenshot<br />
*F9 - Mute Audio<br />
*F11 - Hide Cursor<br />
*Space - Turn off Frame Limiter<br />
*Esc - Exit game<br />
*f - Fullscreen<br />
<br />
==Problems and Solutions==<br />
<br />
===Menu runs too fast===<br />
<br />
If Vsync is disabled for any reason, the menu may run unthrottled and scroll too fast to be usable. To fix this, enable Limit Maximum Run Speed, and set Maximum Run Speed to 1.0x in Settings under Frame Throttle. In the config file, these options are called <code>fastforward_ratio_throttle_enable</code> and <code>fastforward_ratio</code>. However, this will make fast forward not work, you will need to increase the Maximum Run Speed higher than 1.0x for that to work.<br />
<br />
This tends to happen when you first start up RetroArch and not after loading a game. This is because without a core loaded, the menu is only throttled by Vsync when Limit Maximum Run Speed is disabled, while cores are able to throttle on audio as well. Fastforward disables both Vsync and audio sync, which allows the core to run unthrottled unless it is specifically limited by the Maximum Run Speed setting.<br />
<br />
In newer RetroArch versions, you can just enable Throttle Menu Framerate in setting under Frame Throttle to specifically limit the menu to 60fps without impacting fastforward speed.<br />
<br />
===Command prompt running and closing itself upon running retroarch.exe===<br />
<br />
If this only happens on certain cores, then you should check to see if you have all the required BIOS and other files available in the "system" folder or in the folder where the game is located.<br />
<br />
If it happens on all cores with a clean config file, then try changing <code>video_driver</code> setting from <code>gl</code> to <code>d3d</code> or <code>sdl2</code>, if you have a particularly ancient GPU.<br />
<br />
===Performance issues while using the GL driver===<br />
<br />
Nvidia users may find that even while idle, RetroArch CPU usage is upwards of 12% or above while using the GL video driver. If this is the case, go into the Nvidia Control Panel, and under Manage 3D Settings, check to see if the Threaded Optimizations option is set to Auto or On. If so, add retroarch.exe to the list of programs, and then toggle it to Off. This should lower CPU usage drastically.<br />
<br />
==External links==<br />
*[http://wiki.libretro.com/index.php?title=Main_Page Libretro Wiki]<br />
*[http://forum.themaister.net/viewtopic.php?id=467 Windows Compilation Guide]<br />
*[http://www.libretro.com/index.php/wiki/compilation/linux/ Linux Compilation Guide]<br />
*[https://github.com/libretro/RetroArch/wiki/RGUI RGUI Documentation]<br />
*[http://www.libretro.com/index.php/wiki/configuration/general-configuration/ General Configuration]<br />
<br />
[[Category:FAQs]]<br />
[[Category:RetroArch]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=NTSC_filters&diff=10563NTSC filters2016-03-31T02:39:24Z<p>Monroe88: Works on my mobile connection, but not my home connection. What the hell?</p>
<hr />
<div>'''NTSC filters''' replicate the analog signals that the consoles output to the TV. They vary in quality, with the lowest quality being RF, then composite, then s-video and RGB (SCART)/YPbPr (Component) being the highest quality. Many emulators have NTSC filters built into them. They can also be separately downloaded as filter plugins. These filters were developed by blargg<ref>http://slack.net/~ant/libs/ntsc.html</ref> for specific consoles. Other NTSC shaders have been created which are different from blargg's implementation.<br />
<br />
Encoding ''luminance'' (or ''luma'', the brightness component of the signal) and ''chrominance'' (or ''chroma'', the color component of the signal) into a single signal is what causes blur and artifacting because it's a lossy way of encoding an image. RF has worse artifacting because it also encodes audio into the signal and is more prone to interference since the signal is the same as what was used TV broadcasts.<br />
<br />
Many games were developed with the color distortion from these signals in mind, such as Chrono Trigger, with shifted values that make blacks look brown and borders look purple (this is due to TV color range being 16-235, as opposed to standard PC color range of 0-255), which would be output properly with NTSC colors, and Kirby's Dream Land 3, with vertical line patterns combined with high horizontal resolutions producing translucency effects when blended by the analog signal. Other games like Sonic used [[dithering]] patterns that would be blended on the Genesis/Mega Drive composite output, which is notably blurrier than NES or SNES composite video.<br />
<br />
==Description==<br />
[[File:NTSC settings.png|thumb|450px|Chart showing the relative difference values between Composite, S-video and RGB. Values taken from [[Nestopia]]]]<br />
<br />
===RF===<br />
<br />
The lowest quality. Very blurry due to crosstalk between video and audio signals, and subject to static due to interference.<br />
<br />
===Composite===<br />
<br />
Higher quality than RF, but still blurry and with lots of color artifact and dot crawl due to crosstalk between luma and chroma. This is what most systems used as default.<br />
<br />
===S-video===<br />
<br />
Much cleaner image due to luma and chroma being separate signals, though color blur still present and chroma resolution is about the same as composite.<br />
<br />
===RGB===<br />
<br />
The highest quality possible, since it uses separate channels for each color, along with a sync signal. Component YPbPr is similar, where it uses luma+sync, blue minus luma, and red minus luma for signals to give high quality, high bandwidth output capable of displaying higher resolutions, though this is only utilized by newer consoles.<br />
<br />
==Filters and Shaders==<br />
<br />
===blargg's NTSC===<br />
<br />
'''blargg's NTSC''' filters are powerful and optimized, but they are very system specific. There is a version for NES, SNES, SMS, and Genesis/Mega Drive, and each is intended for that system only, expecting a certain size input resolution. Certain games on other systems than the intended one can still make use of them, but not without glitches. For instance, on certain [[PS1]] games that have multiple resolutions, some of the resolution modes will work properly with these filters, and some won't. This may mean the aspect ratio is horribly messed up for menus, but the main gameplay will look normal. These filters upscale the image wide horizontally, but don't touch the vertical scale, so 1:1 PAR may result in weird aspect ratios.<br />
<br />
The level of blur in RF and composite signals are needed for [[dithering]] to blend on Genesis/Mega Drive. S-video, and RGB are too clean to blend dithering. <br />
<br />
In some emulators, it will have sliders for settings such as Resolution (level of signal blur), Sharpness (sharpness/comb filter that some TVs used), Color Bleed, Artifacts, and Fringing. Others simply use the preset settings. Note: RF preset is just composite with field merging disabled, so it emulates the oscillating artifacts composite output has (Go [http://www.chrismcovell.com/gotRGB/screenshots.html here] and see the 3rd image on the right for an example of this).<br />
<br />
===Maister NTSC===<br />
<br />
'''Maister NTSC''' is a set of NTSC shaders<ref>https://github.com/libretro/common-shaders/tree/master/ntsc</ref> created by Themaister for use with various emulator cores in [[RetroArch]]. These try to be more "generic" than Blargg's filters, so they will work with any resolution without major glitching. There are several presets that cover different methods of generating composite and s-video signals.<br />
<br />
The 256px presets use 3-phase NTSC output, which is what the NES, SNES, and N64 output, while the 320px presets reflect the more common NTSC output from the Mega Drive, PC-Engine, PlayStation, and most consumer video electronics. Both of these assume 256px and 320px horizontal resolution input, respectively, and scale that to 1024px and 1280px to display the NTSC effects. This may result in scaling artifacts if the game's input horizontal resolution is not the same, but the effects will be consistent if the horizontal resolution of the game gets larger or smaller, allowing SNES hires translucency to work since it changes between 256 and 512, for example. <br />
<br />
The plain presets use 3-phase NTSC filtering and don't assume a specific input resolution, and just simply scale to 4x the game's width. These will work with any resolution without scaling errors, but games that change horizontal widths may have inconsistent blurring. SNES hires translucency won't work correctly on these because of this.<br />
<br />
Among the presets, there are Composite and S-video versions. Composite has all the fringing artifacts that oscillate every other frame, resulting in a slightly flickery image, while S-video simply has color bleed and blur. This shader lacks the sharpness filter that Blargg's NTSC filter has, so some may perceive it as blurrier, but it also lacks the ringing artifacts caused by a sharpening filter.<br />
<br />
There isn't much tweaking you can do besides changing gamma, since the effect is quite complex and difficult to understand. Increasing the horizontal scale of the output of the shader from 4x to 6x will decrease the intensity of the effects (which also increases sharpness). It does not have an RGB preset, though that's covered by another shader that emulates signal bandwidth.<br />
<br />
===GTU===<br />
<br />
'''GTU''' is a CRT shader<ref>https://github.com/libretro/common-shaders/tree/master/crt/shaders/gtu-v050</ref> by aliaspider that has options for emulating signal bandwidth in addition to the CRT scanlines effects. In addition to luminance (Y) signal resolution settings, enabling the "composite connection" option will allow tweaking the chrominance (I and Q) signal resolutions as well while emulating color bleed from low chroma resolutions. <br />
<br />
Since the shader is multipass, the signal bandwidth emulation passes can be decoupled from the CRT scanline emulation pass and be used with other CRT shaders or by itself.<br />
<br />
===tvout-tweaks===<br />
<br />
'''tvout-tweaks''' is a shader<ref>https://github.com/libretro/common-shaders/blob/master/crt/shaders/tvout-tweaks.cg</ref> made by aliaspider, based off GTU, intended for processing emulator images for output to a CRT TV connected to PC via VGA-to-RGB adapter. This shader uses code from the GTU CRT shader to provide emulated signal bandwidth blur, as well as TV color level conversion. This shader is equivalent to the Blargg's NTSC filter RGB preset when the signal resolution is set to a high level and TV color levels are enabled. Works with any resolution without issues, lower signal resolutions result in blur that blends higher input resolutions, allowing dithering to be blended and SNES hi res translucency to work.<br />
<br />
===GTU-Famicom===<br />
<br />
'''GTU-Famicom''' is a variant<ref>https://github.com/libretro/common-shaders/tree/master/crt/shaders/GTU-famicom</ref> of the GTU CRT shader that emulates the NTSC NES/Famicom PPU. It requires the "raw" palette option in Nestopia and FCEUmm [[libretro]] cores, which outputs<ref name="nestopia_raw">https://github.com/rdanbrook/nestopia/commit/9d58851a22eb3baeee7b4fe28ae8ffaac7eaa599</ref> chroma, level, and emphasis as red, blue, and green color channels. GTU-Famicom takes that output and processes it as an NTSC signal, which the shader decodes into RGB colors for display. The shader also emulates the full effects of RF/composite NTSC video signals, complete with artifacts, fringing, and color bleed, and optionally RF signal noise. Like with the GTU shader, the various signal resolution paramaters can be tweaked so it can be made sharper, or made to have less color bleed by boosting chroma resolution.<br />
<br />
As with GTU, the GTU-Famicom shader is multipass so the Famicom NTSC emulation passes can be decoupled from the CRT scanline emulation pass and be used with other CRT shaders or by itself.<br />
<br />
==Gallery==<br />
<br />
===blargg's NTSC===<br />
<br />
<gallery position="center" captionalign="center"><br />
Composite.png|Composite<br />
S-video.png|S-Video<br />
Rgb.png|RGB<br />
</gallery><br />
<br />
==Emulators==<br />
<br />
The following emulators have blargg's NTSC filter built-in<br />
<br />
{| class="wikitable"<br />
! scope="col" style="text-align: center;"|Emulator<br />
! scope="col" style="text-align: center;"|System<br />
! scope="col" style="text-align: center;"|Notes<br />
|-<br />
| style="text-align: center;"|[[Nestopia]]<br />
| style="text-align: center;"|[[Nintendo Entertainment System|NES]]<br />
| style="text-align: center;"|Win32 version has sliders.<br />
|-<br />
| style="text-align: center;"|[[puNES]]<br />
| style="text-align: center;"|[[Nintendo Entertainment System|NES]]<br />
| style="text-align: center;"|<br />
|-<br />
| style="text-align: center;"|[[ZSNES]]<br />
| style="text-align: center;"|[[Super Nintendo Entertainment System|SNES]]<br />
| style="text-align: center;"|<br />
|-<br />
| style="text-align: center;"|[[Snes9x]]<br />
| style="text-align: center;"|[[Super Nintendo Entertainment System|SNES]]<br />
| style="text-align: center;"|<br />
|-<br />
| style="text-align: center;"|[[Genesis Plus GX]]<br />
| style="text-align: center;"|Sega consoles<br />
| style="text-align: center;"|Presets only.<br />
|-<br />
| style="text-align: center;"|[[Kega Fusion]]<br />
| style="text-align: center;"|Sega consoles<br />
| style="text-align: center;"|<br />
|}<br />
<br />
==References==<br />
{{reflist|2}}<br />
[[Category: Shaders/Filters]]<br />
[[Category:FAQs]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Dithering&diff=10533Dithering2016-03-27T21:53:31Z<p>Monroe88: Cleanups and some added content</p>
<hr />
<div>[[File:Cheryl_compared.png|thumb|350px|Left showing native resolution and unblended dithering. Right showing HD and no dithering. ]]<br />
<br />
'''Dithering''' is a technique to increase the amount of color and shading that can be done on a system. The effect is achieved by using lines or dots which are then blurred by the low quality [[NTSC Filters|NTSC]] signals (composite or RF) that the system uses. Modern computers use higher quality analog VGA (RGBHV) or digital HDMI, DVI, or DisplayPort signals, which means that the dithering ends up being sharp and unblurred.<br />
<br />
==Use in games==<br />
[[File:Org-1-.png|250px|right|thumb|Sega Genesis Game Lion King showing unblended dithering]]<br />
[[File:Policenauts_PC98.png|250px|right|thumb|Unblended dithering in Policenauts for the PC98]]<br />
<br />
[[Genesis]] relies heavily on dithering. The waterfalls in Sonic the Hedgehog are a classic example. A few [[SNES]] games use it as well (eg. Metal Warriors). Certain PS1 games, such as Silent Hill make heavy use of dithering. In that game it is used for shading. Many other PS1 games have a checkerboard.<br />
<br />
Dithering is frequently used for transparency effects in systems that cannot properly do them. [[Sega Saturn]] for one. The Saturn port of Castlevania: Symphony of the Night uses dithering for dialogue boxes, whereas the original PlayStation version has proper transparent boxes.<br />
<br />
Many older computer games used dithering, though unlike with console games, it was not expected for the dithering to be blended into solid colors or proper transparency due to the sharper output of PC monitors. Of particular note are games for Japanese computers such as the PC-88/98, which often featured heavy use of dithering.<br />
<br />
==Emulation==<br />
The intended effects of dithering is often lost in emulation due to PCs typically using VGA or HDMI signals. The dots or lines appear as they actually are with no blurring. Options:<br />
*Accept the unblended dithering<br />
*Remove the dithering entirely.<br />
**Requires assets to actually be of a higher color palette. Enabling 32-bit colors in ps1 emulators achieves this, as dithering is done by hardware during 16-bit conversion to output.<br />
*Use a blurring or [[NTSC Filters|NTSC]] composite shader which reproduces the same amount of blur as the original composite signal that was output by original hardware.<br />
*Use a dithering shader designed to just selectively blend the dithering but does not blend the rest of the image.<br />
<br />
===Shaders===<br />
There are several different shaders that selectively blend dithering patterns, to varying degrees of success. Certain patterns can be difficult to selectively blend without false positives.<br />
<br />
*'''mdapt'''<ref>https://github.com/libretro/common-shaders/tree/master/dithering/shaders/mdapt</ref> selectively blends checkerboard and vertical line patterns, and has settings for tweaking the algorithm.<br />
*'''gdapt'''<ref>https://github.com/libretro/common-shaders/tree/master/dithering/shaders/gdapt</ref> is a simpler, more aggressive variant of mdapt intended to handle dithering encountered in Genesis/Mega Drive games<br />
*'''cbod'''<ref>https://github.com/libretro/common-shaders/tree/master/dithering/shaders/cbod-v1</ref> or '''Conditional Blending of Dither''' is another implementation of selective dither blending. It appears to have a bit more blur than other algorithms.<br />
*'''snes-hires-blend'''<ref>https://github.com/libretro/common-shaders/blob/master/crt/shaders/snes-hires-blend.cg</ref> blends the vertical line patterns that appear at 512px width only, while doing nothing for 256px graphics. It is intended to be used in a few SNES games like Kirby's Dream Land 3 where it used vertical line patterns in psuedo-hires mode to achieve translucency on CRTs. This shader has zero false positives when used as intended.<br />
<br />
==Further reading==<br />
[http://libretro.com/forums/showthread.php?t=340 Official mdapt thread]<br />
<br />
==References==<br />
{{reflist|2}}<br />
<br />
[[Category:FAQs]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=NTSC_filters&diff=10532NTSC filters2016-03-27T20:49:40Z<p>Monroe88: Cleanups and some added content</p>
<hr />
<div>'''NTSC filters''' replicate the analog signals that the consoles output to the TV. They vary in quality, with the lowest quality being RF, then composite, then s-video and RGB (SCART)/YPbPr (Component) being the highest quality. Many emulators have NTSC filters built into them. They can also be separately downloaded as filter plugins. These filters were developed by blargg<ref>http://slack.net/~ant/libs/ntsc.html (Dead?)</ref> for specific consoles. Other NTSC shaders have been created which are different from blargg's implementation.<br />
<br />
Encoding ''luminance'' (or ''luma'', the brightness component of the signal) and ''chrominance'' (or ''chroma'', the color component of the signal) into a single signal is what causes blur and artifacting because it's a lossy way of encoding an image. RF has worse artifacting because it also encodes audio into the signal and is more prone to interference since the signal is the same as what was used TV broadcasts.<br />
<br />
Many games were developed with the color distortion from these signals in mind, such as Chrono Trigger, with shifted values that make blacks look brown and borders look purple (this is due to TV color range being 16-235, as opposed to standard PC color range of 0-255), which would be output properly with NTSC colors, and Kirby's Dream Land 3, with vertical line patterns combined with high horizontal resolutions producing translucency effects when blended by the analog signal. Other games like Sonic used [[dithering]] patterns that would be blended on the Genesis/Mega Drive composite output, which is notably blurrier than NES or SNES composite video.<br />
<br />
==Description==<br />
[[File:NTSC settings.png|thumb|450px|Chart showing the relative difference values between Composite, S-video and RGB. Values taken from [[Nestopia]]]]<br />
<br />
===RF===<br />
<br />
The lowest quality. Very blurry due to crosstalk between video and audio signals, and subject to static due to interference.<br />
<br />
===Composite===<br />
<br />
Higher quality than RF, but still blurry and with lots of color artifact and dot crawl due to crosstalk between luma and chroma. This is what most systems used as default.<br />
<br />
===S-video===<br />
<br />
Much cleaner image due to luma and chroma being separate signals, though color blur still present and chroma resolution is about the same as composite.<br />
<br />
===RGB===<br />
<br />
The highest quality possible, since it uses separate channels for each color, along with a sync signal. Component YPbPr is similar, where it uses luma+sync, blue minus luma, and red minus luma for signals to give high quality, high bandwidth output capable of displaying higher resolutions, though this is only utilized by newer consoles.<br />
<br />
==Filters and Shaders==<br />
<br />
===blargg's NTSC===<br />
<br />
'''blargg's NTSC''' filters are powerful and optimized, but they are very system specific. There is a version for NES, SNES, SMS, and Genesis/Mega Drive, and each is intended for that system only, expecting a certain size input resolution. Certain games on other systems than the intended one can still make use of them, but not without glitches. For instance, on certain [[PS1]] games that have multiple resolutions, some of the resolution modes will work properly with these filters, and some won't. This may mean the aspect ratio is horribly messed up for menus, but the main gameplay will look normal. These filters upscale the image wide horizontally, but don't touch the vertical scale, so 1:1 PAR may result in weird aspect ratios.<br />
<br />
The level of blur in RF and composite signals are needed for [[dithering]] to blend on Genesis/Mega Drive. S-video, and RGB are too clean to blend dithering. <br />
<br />
In some emulators, it will have sliders for settings such as Resolution (level of signal blur), Sharpness (sharpness/comb filter that some TVs used), Color Bleed, Artifacts, and Fringing. Others simply use the preset settings. Note: RF preset is just composite with field merging disabled, so it emulates the oscillating artifacts composite output has (Go [http://www.chrismcovell.com/gotRGB/screenshots.html here] and see the 3rd image on the right for an example of this).<br />
<br />
===Maister NTSC===<br />
<br />
'''Maister NTSC''' is a set of NTSC shaders<ref>https://github.com/libretro/common-shaders/tree/master/ntsc</ref> created by Themaister for use with various emulator cores in [[RetroArch]]. These try to be more "generic" than Blargg's filters, so they will work with any resolution without major glitching. There are several presets that cover different methods of generating composite and s-video signals.<br />
<br />
The 256px presets use 3-phase NTSC output, which is what the NES, SNES, and N64 output, while the 320px presets reflect the more common NTSC output from the Mega Drive, PC-Engine, PlayStation, and most consumer video electronics. Both of these assume 256px and 320px horizontal resolution input, respectively, and scale that to 1024px and 1280px to display the NTSC effects. This may result in scaling artifacts if the game's input horizontal resolution is not the same, but the effects will be consistent if the horizontal resolution of the game gets larger or smaller, allowing SNES hires translucency to work since it changes between 256 and 512, for example. <br />
<br />
The plain presets use 3-phase NTSC filtering and don't assume a specific input resolution, and just simply scale to 4x the game's width. These will work with any resolution without scaling errors, but games that change horizontal widths may have inconsistent blurring. SNES hires translucency won't work correctly on these because of this.<br />
<br />
Among the presets, there are Composite and S-video versions. Composite has all the fringing artifacts that oscillate every other frame, resulting in a slightly flickery image, while S-video simply has color bleed and blur. This shader lacks the sharpness filter that Blargg's NTSC filter has, so some may perceive it as blurrier, but it also lacks the ringing artifacts caused by a sharpening filter.<br />
<br />
There isn't much tweaking you can do besides changing gamma, since the effect is quite complex and difficult to understand. Increasing the horizontal scale of the output of the shader from 4x to 6x will decrease the intensity of the effects (which also increases sharpness). It does not have an RGB preset, though that's covered by another shader that emulates signal bandwidth.<br />
<br />
===GTU===<br />
<br />
'''GTU''' is a CRT shader<ref>https://github.com/libretro/common-shaders/tree/master/crt/shaders/gtu-v050</ref> by aliaspider that has options for emulating signal bandwidth in addition to the CRT scanlines effects. In addition to luminance (Y) signal resolution settings, enabling the "composite connection" option will allow tweaking the chrominance (I and Q) signal resolutions as well while emulating color bleed from low chroma resolutions. <br />
<br />
Since the shader is multipass, the signal bandwidth emulation passes can be decoupled from the CRT scanline emulation pass and be used with other CRT shaders or by itself.<br />
<br />
===tvout-tweaks===<br />
<br />
'''tvout-tweaks''' is a shader<ref>https://github.com/libretro/common-shaders/blob/master/crt/shaders/tvout-tweaks.cg</ref> made by aliaspider, based off GTU, intended for processing emulator images for output to a CRT TV connected to PC via VGA-to-RGB adapter. This shader uses code from the GTU CRT shader to provide emulated signal bandwidth blur, as well as TV color level conversion. This shader is equivalent to the Blargg's NTSC filter RGB preset when the signal resolution is set to a high level and TV color levels are enabled. Works with any resolution without issues, lower signal resolutions result in blur that blends higher input resolutions, allowing dithering to be blended and SNES hi res translucency to work.<br />
<br />
===GTU-Famicom===<br />
<br />
'''GTU-Famicom''' is a variant<ref>https://github.com/libretro/common-shaders/tree/master/crt/shaders/GTU-famicom</ref> of the GTU CRT shader that emulates the NTSC NES/Famicom PPU. It requires the "raw" palette option in Nestopia and FCEUmm [[libretro]] cores, which outputs<ref name="nestopia_raw">https://github.com/rdanbrook/nestopia/commit/9d58851a22eb3baeee7b4fe28ae8ffaac7eaa599</ref> chroma, level, and emphasis as red, blue, and green color channels. GTU-Famicom takes that output and processes it as an NTSC signal, which the shader decodes into RGB colors for display. The shader also emulates the full effects of RF/composite NTSC video signals, complete with artifacts, fringing, and color bleed, and optionally RF signal noise. Like with the GTU shader, the various signal resolution paramaters can be tweaked so it can be made sharper, or made to have less color bleed by boosting chroma resolution.<br />
<br />
As with GTU, the GTU-Famicom shader is multipass so the Famicom NTSC emulation passes can be decoupled from the CRT scanline emulation pass and be used with other CRT shaders or by itself.<br />
<br />
==Gallery==<br />
<br />
===blargg's NTSC===<br />
<br />
<gallery position="center" captionalign="center"><br />
Composite.png|Composite<br />
S-video.png|S-Video<br />
Rgb.png|RGB<br />
</gallery><br />
<br />
==Emulators==<br />
<br />
The following emulators have blargg's NTSC filter built-in<br />
<br />
{| class="wikitable"<br />
! scope="col" style="text-align: center;"|Emulator<br />
! scope="col" style="text-align: center;"|System<br />
! scope="col" style="text-align: center;"|Notes<br />
|-<br />
| style="text-align: center;"|[[Nestopia]]<br />
| style="text-align: center;"|[[Nintendo Entertainment System|NES]]<br />
| style="text-align: center;"|Win32 version has sliders.<br />
|-<br />
| style="text-align: center;"|[[puNES]]<br />
| style="text-align: center;"|[[Nintendo Entertainment System|NES]]<br />
| style="text-align: center;"|<br />
|-<br />
| style="text-align: center;"|[[ZSNES]]<br />
| style="text-align: center;"|[[Super Nintendo Entertainment System|SNES]]<br />
| style="text-align: center;"|<br />
|-<br />
| style="text-align: center;"|[[Snes9x]]<br />
| style="text-align: center;"|[[Super Nintendo Entertainment System|SNES]]<br />
| style="text-align: center;"|<br />
|-<br />
| style="text-align: center;"|[[Genesis Plus GX]]<br />
| style="text-align: center;"|Sega consoles<br />
| style="text-align: center;"|Presets only.<br />
|-<br />
| style="text-align: center;"|[[Kega Fusion]]<br />
| style="text-align: center;"|Sega consoles<br />
| style="text-align: center;"|<br />
|}<br />
<br />
==References==<br />
{{reflist|2}}<br />
[[Category: Shaders/Filters]]<br />
[[Category:FAQs]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=CRT-Royale&diff=10414CRT-Royale2016-03-13T07:11:57Z<p>Monroe88: </p>
<hr />
<div>[[File:CRT-Royale.png|thumb|298px|CRT-Royale, with default settings at 1080p (view original for full details)]]<br />
<br />
'''CRT-Royale''' is a highly advanced multi-pass CRT shader that simulates almost every aspect of the CRT screen. There are tons of parameters to configure, such as phosphor type (aperture grille, slot mask, and EDP shadow mask) and size (i.e. dot pitch), convergence offsets, scanline blooming and many others. Higher resolution is better for this shader, especially with EDP shadow mask phosphor layout and with smaller phosphor dot pitch values. This shader is really complicated compared to most other CRT shaders, reading the README<ref>[https://raw.githubusercontent.com/libretro/common-shaders/master/crt/shaders/crt-royale/README.TXT CRT-Royale README.TXT]</ref> and the documentation in the <code>user-settings.h</code><ref>[https://github.com/libretro/common-shaders/blob/master/crt/shaders/crt-royale/user-settings.h CRT-Royale user-settings.h]</ref> is a must.<br />
<br />
==System Requirements==<br />
<br />
CRT-Royale is a large and complex shader, so it will need modern hardware to run correctly. Discrete Nvidia or AMD video cards made in the last few years are recommended. In particular, Intel iGPUs will struggle to run the shader and some may not even run in some cases. The author provided a preset for Intel users that compromises some functionality for compatibility. There's also various <code>user-settings.h</code> files in <code>crt-royale-settings-files</code><ref>[https://github.com/libretro/common-shaders/tree/master/crt/shaders/crt-royale/crt-royale-settings-files crt-royale-settings-files]</ref> that enable/disable options for different GPU profiles.<br />
<br />
The display you use for CRT-Royale should have at least 1440p of resolution to give a decent level of detail for slot mask emulation, though 4K (2160p) or higher resolutions is recommended. 1080p displays can work for aperture grille emulation, since less resolution is needed to render vertically aligned phosphors.<br />
<br />
This shader uses some features in RetroArch's Cg shader format that have only been somewhat recently added since version 1.0.0.2, such as sRGB framebuffers and mipmapping, so you should at least be using RetroArch 1.2 for this shader.<br />
<br />
==Customization==<br />
<br />
Since CRT-Royale has a large number of different settings for customization, this article will only cover those that have the most noticeable effect on the overall image.<br />
<br />
CRT-Royale can be customized one of two ways: using the runtime shader parameters from inside [[RetroArch]] or editing the <code>user-settings.h</code> file. In order for the settings in <code>user-settings.h</code> that are marked with <code>_static</code> to take effect, runtime parameters must be disabled by commenting out <code>#define RUNTIME_SHADER_PARAMS_ENABLE</code> in <code>user-settings.h</code>. Doing this will make the runtime parameters non-functional so you will need to reload the shader to apply changes made in <code>user-settings.h</code>, but it will result in a performance boost since there is less need for expensive branching in the shader code when the settings are static. <br />
<br />
There are some settings in <code>user-settings.h</code> that are static only and do not have a runtime parameter, and therefore do not require runtime parameters to be disabled to have an effect.<br />
<br />
The settings listed below are taken from the runtime parameters with their default values.<br />
<br />
===Gamma and Contrast===<br />
crt_gamma = 2.500000<br />
lcd_gamma = 2.200000<br />
levels_contrast = 1.000000<br />
<br />
Gamma and contrast controls. CRT gamma is the output gamma of the shader, while LCD gamma is the input gamma, which should be 2.4 and 2.2 in most cases, respectively. <br />
<br />
===Halation and Diffusion===<br />
halation_weight = 0.000000<br />
diffusion_weight = 0.075000<br />
<br />
Weights for halation and diffusion of the simulated CRT. Halation is the light being reflected on the phosphors, while diffusion is the light causing a glow when passing through the glass. Some may find these effects to be annoying, so they can be turned off by setting them to 0.0.<br />
<br />
===Bloom===<br />
bloom_underestimate_levels = 0.800000<br />
bloom_excess = 0.000000<br />
<br />
These settings control the level of blooming in the shader. Higher <code>bloom_underestimate</code> will cause the bloom to be more intense on phosphors that are fully lit, which raises the overall brightness of the image and counteracts the loss of brightness caused drawing a phosphor grid over the image. <code>bloom_excess</code> causes extra blurring of all colors to soften the bloom effect, which is disabled by default.<br />
<br />
===Beam===<br />
<br />
beam_min_sigma = 0.020000<br />
beam_max_sigma = 0.300000<br />
beam_spot_power = 0.330000<br />
beam_min_shape = 2.000000<br />
beam_max_shape = 4.000000<br />
beam_shape_power = 0.250000<br />
beam_horiz_filter = 0.000000<br />
beam_horiz_sigma = 0.350000<br />
beam_horiz_linear_rgb_weight = 1.000000<br />
<br />
These settings determine the shape and size of the lit scanlines of the simulated CRT. <br />
<br />
Min and max sigma settings affect the size of each scanline relative to the brightness of the image. A large range of beam sigmas causes the scanlines to vary in width depending on brightness, while small ranges result in less variable width of scanlines. Higher sigmas increase the size of the scanlines, resulting in smaller gaps and more vertical blurring.<br />
<br />
Min and max shape settings affect the Gaussian profile of the scanlines. Higher values for these make the scanline plateaus flatter and have steeper drop offs. These effects are really only noticeable at higher screen resolutions.<br />
<br />
<code>beam_horiz_filter</code> specifies how the beam is filtered horizontally. The options are 0.0 (Quilez, sharp and fast), 1.0 (Gaussian, configurable sharpness), and 2.0 (Lanczos2, sharp and higher quality). <code>beam_horiz_sigma</code> is used to set the level of blur when using Gaussian horizontal filtering.<br />
<br />
===Convergence===<br />
convergence_offset_x_r = 0.000000<br />
convergence_offset_x_g = 0.000000<br />
convergence_offset_x_b = 0.000000<br />
convergence_offset_y_r = 0.000000<br />
convergence_offset_y_g = 0.000000<br />
convergence_offset_y_b = 0.000000<br />
<br />
The convergence offsets settings specify how well the simulated CRT electron beams are aligned. The default values indicate perfect convergance with no colors that are misaligned. However, real CRTs, particularly cheaper consumer models, very often did not have perfect convergance, so you can change the offsets to simulate that flaw if you want.<br />
<br />
===Mask===<br />
mask_type = 1.000000<br />
mask_sample_mode_desired = 0.000000<br />
mask_specify_num_triads = 0.000000<br />
mask_triad_size_desired = 3.000000<br />
mask_num_triads_desired = 480.000000<br />
<br />
The mask settings control how the phosphor mask is rendered on the screen.<br />
<br />
<code>mask_type</code> specifies which layout of phosphors the screen has. The options for this are 0.0 (Aperture Grille), 1.0 (Slot Mask), and 2.0 (Dot Mask). Aperture Grille phosphor layout is easier to render at lower resolutions, the other options require higher resolutions to render at an acceptable level of detail.<br />
<br />
<code>mask_sample_mode_desired</code> specifies the sampling mode of the phosphor mask. The default of 0.0 is the highest quality and slowest method, while 1.0 is lower quality but faster. The 2.0 setting makes the mask tile without resizing, which results in a huge phosphor mask with the default mask textures, so it's intended more for mask textures for a screen of a fixed size.<br />
<br />
<code>mask_triad_size_desired</code> specifies the size of each phosphor triad relative to the screen. Smaller triad size will make the simulated CRT like a high resolution PC CRT or a Sony BVM with increased sharpness and less visible phosphors, while a larger triad size makes the simulated CRT into a low resolution CRT like many consumer TVs with more blurring and less visible scanline gaps. It's recommended to keep this setting as a whole number, since fractional sizes seem to cause scaling artifacts sometimes.<br />
<br />
If <code>mask_specify_num_triads</code> is set to 1.0, then the phosphor mask will be scaled to use the number of triads specified in <code>mask_num_triads_desired</code>. This is disabled by default.<br />
<br />
Examples of each kind of phosphor style. :<br />
<gallery widths=320 heights=240><br />
<br />
<br />
File:Aptureture girl.png|Aperture Grille<br />
File:Slut mask.png|Slot Mask<br />
File:Dope mask.png|Dot mask<br />
<br />
</gallery><br />
<br />
===Anti-Aliasing===<br />
aa_subpixel_r_offset_x_runtime = -0.333333<br />
aa_subpixel_r_offset_y_runtime = 0.000000<br />
aa_cubic_c = 0.500000<br />
aa_gauss_sigma = 0.500000<br />
<br />
These settings affect the anti-aliasing for curvature, overscan, and subpixels that is done to the shader in the last pass. These settings are quite technical and may not have immediately apparent effects. Refer to the documentation in <code>user-settings.h</code> for detailed explanations.<br />
<br />
===Geometry===<br />
geom_mode_runtime = 0.000000<br />
geom_radius = 2.000000<br />
geom_view_dist = 2.000000<br />
geom_tilt_angle_x = 0.000000<br />
geom_tilt_angle_y = 0.000000<br />
geom_aspect_ratio_x = 432.000000<br />
geom_aspect_ratio_y = 329.000000<br />
geom_overscan_x = 1.000000<br />
geom_overscan_y = 1.000000<br />
<br />
These are the settings that control the geometry of the simulated CRT.<br />
<br />
The geometry modes available are 0.0 (Flat), 1.0 ([[CRT-Geom]] style curvature), 2.0 (bulbous curvature), and 3.0 (cylindrical Trinitron curvature). View distance specifies how far the CRT is in the user's field of view. The tilt angle settings control which direction the screen is tilted. The aspect ratio of the simulated screen can also be configured. Overscan affects how much of the image is visible on the simulated CRT, since many consumer TVs did not display the full scan area.<br />
<br />
Some people may find curvature to be distracting so leaving these settings at default will leave the CRT image perfectly flat.<br />
<br />
===Border===<br />
border_size = 0.015000<br />
border_darkness = 2.000000<br />
border_compress = 2.500000<br />
<br />
These settings affect the size and shape of the black border around the CRT. The default settings create a bit of vignetting around the corners; if you dislike this effect, you can set the size and darkness of the border to 0.0.<br />
<br />
===Interlacing===<br />
interlace_bff = 0.000000<br />
interlace_1080i = 0.000000<br />
<br />
These settings control how interlacing is handled by the shader. The "bff" setting refers to the order in which each scanline field is displayed, where setting that to 1.0 would make it "bottom field first" as opposed to "top field first" like default. The 1080i setting specifies whether interlacing is enabled if the input image is 1080 pixels tall, setting it to 1.0 makes it display 1080i instead of 1080p.<br />
<br />
Interlacing detection can be turned off entirely by editing <code>interlace_detect</code> in <code>user-settings.h</code> to be <code>false</code>. This will make it display 480 pixel tall content as 480p instead of 480i, which will eliminate any flickering, but may result in combing artifacts if the game is interlaced natively. This setting is static only and is not a runtime parameter.<br />
<br />
==Variants==<br />
<br />
There are some different variants of the shader provided as different presets. Besides the default <code>crt-royale.cgp</code>, there is a "fake bloom" preset that uses a much faster bloom method that is lower quality. There are also Intel variants of both the full and fake bloom versions of the shader that omit some features to allow the shader to run on Intel iGPUs. There are also presets with passes of Themaister's [[NTSC Filters|NTSC shader]] applied before the CRT-Royale passes, though this increases the requirements quite a bit.<br />
<br />
==4K ==<br />
<br />
CRT Royale works best at 2,880 × 2,160 (4K) resolution. That resolution is exactly 9 times 320x240, which was a common resolution for these consoles. <br />
<br />
<gallery widths=320 heights=240><br />
<br />
File:Ff7 4k crt shader.png|Final Fantasy 7 (PlayStation)<br />
File:1446491029205-1-.png|Castlevania: Symphony of the Night (PlayStation)<br />
File:Retroarch-1102-0058354ertd.png|Castlevania: Symphony of the Night (PlayStation)<br />
File:Ff5 4k.png|Final Fantasy 5 (Super Famicom)<br />
File:Rtype 4k.png|R-Type Delta (PlayStation)<br />
File:Mr bones 4k.png|MediEvil (PlayStation)<br />
</gallery><br />
<br />
==Notes==<br />
<br />
<references /><br />
<br />
==External Links==<br />
*[https://github.com/libretro/common-shaders/tree/master/crt/shaders/crt-royale CRT-Royale on GitHub]<br />
*[http://filthypants.blogspot.com/2014/07/crt-royale-and-3dfx-shaders.html CRT-Royale and 3dfx Shaders] - hunterk's blog post about CRT-Royale's different phosphor mask layouts.<br />
[[Category:Shaders/Filters]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=CRT-Royale&diff=10413CRT-Royale2016-03-13T07:02:09Z<p>Monroe88: /* Bloom */</p>
<hr />
<div>[[File:CRT-Royale.png|thumb|298px|CRT-Royale, with default settings at 1080p (view original for full details)]]<br />
<br />
'''CRT-Royale''' is a highly advanced multi-pass CRT shader that simulates almost every aspect of the CRT screen. There are tons of parameters to configure, such as phosphor type (aperture grille, slot mask, and EDP shadow mask) and size (i.e. dot pitch), convergence offsets, scanline blooming and many others. Higher resolution is better for this shader, especially with EDP shadow mask phosphor layout and with smaller phosphor dot pitch values. This shader is really complicated compared to most other CRT shaders, reading the README<ref>[https://raw.githubusercontent.com/libretro/common-shaders/master/crt/shaders/crt-royale/README.TXT CRT-Royale README.TXT]</ref> and the documentation in the <code>user-settings.h</code><ref>[https://github.com/libretro/common-shaders/blob/master/crt/shaders/crt-royale/user-settings.h CRT-Royale user-settings.h]</ref> is a must.<br />
<br />
==System Requirements==<br />
<br />
CRT-Royale is a large and complex shader, so it will need modern hardware to run correctly. Discrete Nvidia or AMD video cards made in the last few years are recommended. In particular, Intel iGPUs will struggle to run the shader and some may not even run in some cases. The author provided a preset for Intel users that compromises some functionality for compatibility. There's also various <code>user-settings.h</code> files in <code>crt-royale-settings-files</code><ref>[https://github.com/libretro/common-shaders/tree/master/crt/shaders/crt-royale/crt-royale-settings-files crt-royale-settings-files]</ref> that enable/disable options for different GPU profiles.<br />
<br />
The display you use for CRT-Royale should have at least 1440p of resolution to give a decent level of detail for slot mask emulation, though 4K (2160p) or higher resolutions is recommended. 1080p displays can work for aperture grille emulation, since less resolution is needed to render vertically aligned phosphors.<br />
<br />
This shader uses some features in RetroArch's Cg shader format that have only been somewhat recently added since version 1.0.0.2, such as sRGB framebuffers and mipmapping, so you should at least be using RetroArch 1.2 for this shader.<br />
<br />
==Customization==<br />
<br />
Since CRT-Royale has a large number of different settings for customization, this article will only cover those that have the most noticeable effect on the overall image.<br />
<br />
CRT-Royale can be customized one of two ways: using the runtime shader parameters from inside [[RetroArch]] or editing the <code>user-settings.h</code> file. In order for the settings in <code>user-settings.h</code> that are marked with <code>_static</code> to take effect, runtime parameters must be disabled by commenting out <code>#define RUNTIME_SHADER_PARAMS_ENABLE</code> in <code>user-settings.h</code>. Doing this will make the runtime parameters non-functional so you will need to reload the shader to apply changes made in <code>user-settings.h</code>, but it will result in a performance boost since there is less need for expensive branching in the shader code when the settings are static. <br />
<br />
There are some settings in <code>user-settings.h</code> that are static only and do not have a runtime parameter, and therefore do not require runtime parameters to be disabled to have an effect.<br />
<br />
The settings listed below are taken from the runtime parameters with their default values.<br />
<br />
===Gamma and Contrast===<br />
crt_gamma = 2.500000<br />
lcd_gamma = 2.200000<br />
levels_contrast = 1.000000<br />
<br />
Gamma and contrast controls. CRT gamma is the output gamma of the shader, while LCD gamma is the input gamma, which should be 2.4 and 2.2 in most cases, respectively. <br />
<br />
===Halation and Diffusion===<br />
halation_weight = 0.000000<br />
diffusion_weight = 0.075000<br />
<br />
Weights for halation and diffusion of the simulated CRT. Halation is the light being reflected on the phosphors, while diffusion is the light causing a glow when passing through the glass. Some may find these effects to be annoying, so they can be turned off by setting them to 0.0.<br />
<br />
===Bloom===<br />
bloom_underestimate_levels = 0.800000<br />
bloom_excess = 0.000000<br />
<br />
These settings control the level of blooming in the shader. Higher <code>bloom_underestimate</code> will cause the bloom to be more intense on phosphors that are fully lit, which raises the overall brightness of the image and counteracts the loss of brightness caused drawing a phosphor grid over the image. <code>bloom_excess</code> causes extra blurring of all colors to soften the bloom effect, which is disabled by default.<br />
<br />
===Beam===<br />
<br />
beam_min_sigma = 0.020000<br />
beam_max_sigma = 0.300000<br />
beam_spot_power = 0.330000<br />
beam_min_shape = 2.000000<br />
beam_max_shape = 4.000000<br />
beam_shape_power = 0.250000<br />
beam_horiz_filter = 0.000000<br />
beam_horiz_sigma = 0.350000<br />
beam_horiz_linear_rgb_weight = 1.000000<br />
<br />
These settings determine the shape and size of the lit scanlines of the simulated CRT. <br />
<br />
Min and max sigma settings affect the size of each scanline relative to the brightness of the image. A large range of beam sigmas causes the scanlines to vary in width depending on brightness, while small ranges result in less variable width of scanlines. Higher sigmas increase the size of the scanlines, resulting in smaller gaps and more vertical blurring.<br />
<br />
Min and max shape settings affect the Gaussian profile of the scanlines. Higher values for these make the scanline plateaus flatter and have steeper drop offs. These effects are really only noticeable at higher screen resolutions.<br />
<br />
<code>beam_horiz_filter</code> specifies how the beam is filtered horizontally. The options are 0.0 (Quilez, sharp and fast), 1.0 (Gaussian, configurable sharpness), and 2.0 (Lanczos2, sharp and higher quality). <code>beam_horiz_sigma</code> is used to set the level of blur when using Gaussian horizontal filtering.<br />
<br />
===Convergence===<br />
convergence_offset_x_r = 0.000000<br />
convergence_offset_x_g = 0.000000<br />
convergence_offset_x_b = 0.000000<br />
convergence_offset_y_r = 0.000000<br />
convergence_offset_y_g = 0.000000<br />
convergence_offset_y_b = 0.000000<br />
<br />
The convergence offsets settings specify how well the simulated CRT electron beams are aligned. The default values indicate perfect convergance with no colors that are misaligned. However, real CRTs, particularly cheaper consumer models, very often did not have perfect convergance, so you can change the offsets to simulate that flaw if you want.<br />
<br />
===Mask===<br />
mask_type = 1.000000<br />
mask_sample_mode_desired = 0.000000<br />
mask_specify_num_triads = 0.000000<br />
mask_triad_size_desired = 3.000000<br />
mask_num_triads_desired = 480.000000<br />
<br />
The mask settings control how the phosphor mask is rendered on the screen.<br />
<br />
<code>mask_type</code> specifies which layout of phosphors the screen has. The options for this are 0.0 (Aperture Grille), 1.0 (Slot Mask), and 2.0 (Dot Mask). Aperture Grille phosphor layout is easier to render at lower resolutions, the other options require higher resolutions to render at an acceptable level of detail.<br />
<br />
<code>mask_sample_mode_desired</code> specifies the sampling mode of the phosphor mask. The default of 0.0 is the highest quality and slowest method, while 1.0 is lower quality but faster. The 2.0 setting makes the mask tile without resizing, which results in a huge phosphor mask with the default mask textures, so it's intended more for mask textures for a screen of a fixed size.<br />
<br />
<code>mask_triad_size_desired</code> specifies the size of each phosphor triad relative to the screen. Smaller triad size will make the simulated CRT like a high resolution PC CRT or a Sony BVM with increased sharpness and less visible phosphors, while a larger triad size makes the simulated CRT into a low resolution CRT like many consumer TVs with more blurring and less visible scanline gaps. It's recommended to keep this setting as a whole number, since fractional sizes seem to cause scaling artifacts sometimes.<br />
<br />
If <code>mask_specify_num_triads</code> is set to 1.0, then the phosphor mask will be scaled to use the number of triads specified in <code>mask_num_triads_desired</code>. This is disabled by default.<br />
<br />
Examples of each kind of phosphor style. :<br />
<gallery widths=320 heights=240><br />
<br />
<br />
File:Aptureture girl.png|Aperture Grill<br />
File:Slut mask.png|Slot Mask<br />
File:Dope mask.png|Dot mask<br />
<br />
</gallery><br />
<br />
===Anti-Aliasing===<br />
aa_subpixel_r_offset_x_runtime = -0.333333<br />
aa_subpixel_r_offset_y_runtime = 0.000000<br />
aa_cubic_c = 0.500000<br />
aa_gauss_sigma = 0.500000<br />
<br />
These settings affect the anti-aliasing for curvature, overscan, and subpixels that is done to the shader in the last pass. These settings are quite technical and may not have immediately apparent effects. Refer to the documentation in <code>user-settings.h</code> for detailed explanations.<br />
<br />
===Geometry===<br />
geom_mode_runtime = 0.000000<br />
geom_radius = 2.000000<br />
geom_view_dist = 2.000000<br />
geom_tilt_angle_x = 0.000000<br />
geom_tilt_angle_y = 0.000000<br />
geom_aspect_ratio_x = 432.000000<br />
geom_aspect_ratio_y = 329.000000<br />
geom_overscan_x = 1.000000<br />
geom_overscan_y = 1.000000<br />
<br />
These are the settings that control the geometry of the simulated CRT.<br />
<br />
The geometry modes available are 0.0 (Flat), 1.0 ([[CRT-Geom]] style curvature), 2.0 (bulbous curvature), and 3.0 (cylindrical Trinitron curvature). View distance specifies how far the CRT is in the user's field of view. The tilt angle settings control which direction the screen is tilted. The aspect ratio of the simulated screen can also be configured. Overscan affects how much of the image is visible on the simulated CRT, since many consumer TVs did not display the full scan area.<br />
<br />
Some people may find curvature to be distracting so leaving these settings at default will leave the CRT image perfectly flat.<br />
<br />
===Border===<br />
border_size = 0.015000<br />
border_darkness = 2.000000<br />
border_compress = 2.500000<br />
<br />
These settings affect the size and shape of the black border around the CRT. The default settings create a bit of vignetting around the corners; if you dislike this effect, you can set the size and darkness of the border to 0.0.<br />
<br />
===Interlacing===<br />
interlace_bff = 0.000000<br />
interlace_1080i = 0.000000<br />
<br />
These settings control how interlacing is handled by the shader. The "bff" setting refers to the order in which each scanline field is displayed, where setting that to 1.0 would make it "bottom field first" as opposed to "top field first" like default. The 1080i setting specifies whether interlacing is enabled if the input image is 1080 pixels tall, setting it to 1.0 makes it display 1080i instead of 1080p.<br />
<br />
Interlacing detection can be turned off entirely by editing <code>interlace_detect</code> in <code>user-settings.h</code> to be <code>false</code>. This will make it display 480 pixel tall content as 480p instead of 480i, which will eliminate any flickering, but may result in combing artifacts if the game is interlaced natively. This setting is static only and is not a runtime parameter.<br />
<br />
==Variants==<br />
<br />
There are some different variants of the shader provided as different presets. Besides the default <code>crt-royale.cgp</code>, there is a "fake bloom" preset that uses a much faster bloom method that is lower quality. There are also Intel variants of both the full and fake bloom versions of the shader that omit some features to allow the shader to run on Intel iGPUs. There are also presets with passes of Themaister's [[NTSC Filters|NTSC shader]] applied before the CRT-Royale passes, though this increases the requirements quite a bit.<br />
<br />
==4K ==<br />
<br />
CRT Royale works best at 2,880 × 2,160 (4K) resolution. That resolution is exactly 9 times 320x240, which was a common resolution for these consoles. <br />
<br />
<gallery widths=320 heights=240><br />
<br />
File:Ff7 4k crt shader.png|Final Fantasy 7 (PlayStation)<br />
File:1446491029205-1-.png|Castlevania: Symphony of the Night (PlayStation)<br />
File:Retroarch-1102-0058354ertd.png|Castlevania: Symphony of the Night (PlayStation)<br />
File:Ff5 4k.png|Final Fantasy 5 (Super Famicom)<br />
File:Rtype 4k.png|R-Type Delta (PlayStation)<br />
File:Mr bones 4k.png|MediEvil (PlayStation)<br />
</gallery><br />
<br />
==Notes==<br />
<br />
<references /><br />
<br />
==External Links==<br />
*[https://github.com/libretro/common-shaders/tree/master/crt/shaders/crt-royale CRT-Royale on GitHub]<br />
*[http://filthypants.blogspot.com/2014/07/crt-royale-and-3dfx-shaders.html CRT-Royale and 3dfx Shaders] - hunterk's blog post about CRT-Royale's different phosphor mask layouts.<br />
[[Category:Shaders/Filters]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Dummies_Guide:_RetroArch&diff=10412Dummies Guide: RetroArch2016-03-13T06:56:27Z<p>Monroe88: /* Saves and Saving Settings */</p>
<hr />
<div>If someone linked you here, they probably thought you were being a dummy. <br />
So go ahead, take your time, and start from the top.<br />
<br />
==Downloading RetroArch==<br />
Download the latest stable version of RetroArch here: [http://buildbot.libretro.com/stable/1.3.0/windows/x86_64/RetroArch-v1.3.0-x86_64-Windows.zip 1.3.0 Stable (Windows x64)] (if you're reading this in 2016, download the latest build from [http://buildbot.libretro.com/nightly/ here (pick your OS/system from the list)])<br />
<br />
Open the .7z file with [http://www.7-zip.org/download.html 7zip] or WinRAR, or other archiver of your choice and extract the files to where you want to install RetroArch, or if on console/phone, install it using the standard method for that system.<br />
<br />
==Controls==<br />
The menu is controlled mainly by the RetroPad, which is libretro's gamepad abstraction that uses SNES-style face buttons and PlayStation DualShock-style shoulder buttons and analog sticks. The default keybinds for the RetroPad are as follows:<br />
<br />
*A button = X<br />
*B button = Z<br />
*X button = S<br />
*Y button = A<br />
*D-Pad = Arrow keys<br />
*Start button = Enter<br />
*Select button = Right Shift key<br />
*R button = W<br />
*L button = Q<br />
<br />
The R2, L2, R3, and L3 buttons, and left/right analog sticks are not mapped to the keyboard by default.<br />
Gamepads can be mapped manually in the menu under ''Settings'' → ''Input'' → ''Input User 1 Binds'' → ''User 1 Bind All'', but automatic configuration is possible with [https://github.com/libretro/retroarch-joypad-autoconfig autoconfig profiles]. On Windows, all XInput and some DirectInput gamepads will be mapped automatically when detected to the RetroPad using the included autoconfig profiles.<br />
<br />
In the menu, the following buttons are used:<br />
<br />
*A button = Confirm<br />
*B button = Cancel<br />
*Y button = Search prompt<br />
*D-Pad = Navigation<br />
*Start button = Reset option to default<br />
*Select button = Show tooltip for a particular option<br />
*R and L buttons = Fast scrolling through files<br />
<br />
Additionally, in current nightly builds, the Enter, Backspace, and Spacebar keys are used for Confirm, Cancel, and Reset to Default respectively alongside the RetroPad binds.<br />
<br />
There are also various hotkeys that are mapped by default. The most important ones to remember are the following:<br />
<br />
*Quit = Escape<br />
*Menu toggle = F1<br />
*Save State = F2<br />
*Load State = F4<br />
*Fullscreen toggle = F<br />
*Fast-Forward toggle = Spacebar<br />
*Screenshot = F8<br />
<br />
All hotkey binds can be viewed and changed at ''Settings'' → ''Input'' → ''Input Hotkey Binds''. Additionally, if you map Enable Hotkeys to a keyboard key, it will require that key to be held in order to trigger any hotkeys, which may be needed for cores that use the keyboard for input. Hotkeys can also be mapped to RetroPad buttons as well.<br />
<br />
Some people may not like having Escape key quit the program instantly and are used to having Escape bring up a menu instead. Since the hotkeys are configurable, you can change behavior of the Escape key in your config:<br />
<br />
input_exit_emulator = "nul"<br />
input_menu_toggle = "escape"<br />
<br />
The quit hotkey will be unmapped, and the menu toggle hotkey will become Escape instead of F1.<br />
<br />
==Downloading Cores==<br />
RetroArch doesn't come with emulation cores, so you have to download them yourself. However, RetroArch does have a built in updater. So to download up to date cores, scroll down to ''Online Updater'', and select ''Core Updater''. RetroArch will download a list of available cores to download, and you can individually download them. To see what core does what, see [[Libretro#Cores|this list.]]<br />
<br />
If for what ever reason RetroArch can't download cores, or wont display a list of available cores for download, you can get them from the buildbot [http://buildbot.libretro.com/nightly/ here.]<br />
<br />
==Running a Game==<br />
After downloading a core you can run a game by selecting ''Load Content'' → ''Select File And Detect Core'' and selecting your game.<br />
<br />
If you have only have 1 core that can run the selected game, then RetroArch will automatically load that core. If you have multiple cores that are capable of running the game you'll be given the choice between them.<br />
<br />
==BIOS and System files==<br />
Some emulation cores require special system files, or BIOSes. These can be downloaded [[Emulator_Files#Multi-System|here.]] Extract the ''system'' folder in that archive to where you installed RetroArch (the folder where the retroarch program is. retroarch.exe on Windows). <br />
<br />
If it doesn't find the BIOS, go to ''Settings'' → ''Directory'' → ''System/BIOS Dir'' (or find <code>system_directory</code> in the config file) and make sure it points to the ''system'' folder.<br />
<br />
==Core Options, Core Specific Settings==<br />
To edit options or settings specific to a core, you must start a game with that core. After loading a game, press F1 or the Home/Guide button on your 360/PS3 controller to get back to RetroArch's menu. From there you can change ''Core Options'', set core specific input options, cheats, and change shader settings.<br />
<br />
==Shader Settings==<br />
Shaders usually either come in single .cg files, or as a group of files controlled by a .cgp preset file. If you want to use a preset, like CRT-Royale or Super-XBR, simply select ''Load Shader Preset'' under ''Shader Options'' and select a .cgp file. If you want to select individual .cg files, increase the ''Shader Passes'' and select a .cg file through ''Shader #0'' (or #1, #2, etc.).<br />
<br />
After selecting your shader setup, hit ''Apply Shader Changes''.<br />
<br />
==Saves and Saving Settings==<br />
By default RetroArch will save settings when it closes, and will do so unless you put RetroArch in a directory that needs elevated privileges without running as administrator/root. ''Save New Config'' will save a ''new'', different, config that wont be loaded the next time RetroArch starts.<br />
<br />
It's probably a good idea to enable ''SaveRAM Autosave Interval'' (under ''Settings'' → ''Saving'') so game saves will be written to your harddrive while RetroArch is running.<br />
<br />
==Mednafen PSX==<br />
This particular core requires some specific care. You should have the correct BIOS (if not follow the [[Dummies_Guide:_RetroArch#BIOS_and_System_files|BIOS and System files]] section), you'll also need to make sure your game has a metadata file in the form of a .cue, .toc, .ccd, or .m3u file. The most common metadata people use is .cue, and if your PS1 game lacks a metafile, you can [[Cue_sheet_(.cue)|create one.]]<br>An easier way to get around metadata issues, is to get your games from a better source. [[Need_Games%3F|Redump]] PS1 games come in .bin/.cue format and work on mednafen without issue.<br />
<br />
==Ricing RetroArch==<br />
There's 3 different menu drivers for RetroArch to choose from, RGUI, GLUI and the default XMB. To switch between them go ''Settings'' → ''Driver Settings'' and switch ''Menu Driver''. You'll need to restart RetroArch for changes to take effect.<br />
<br />
You can change your wallpaper, text color settings, text size (DPI Override, GLUI only), toggle mouse support, and whether to display boxart in the ''Menu Settings''.<br />
<br />
You can change RetroArch's menu font, but it'll only work for the GLUI menu driver (only on 1.2.2, newer builds have changed GLUI significantly and it no longer uses the OSD font). To change it, under ''Onscreen Display Settings'' hit ''OSD Message Font'' and select a .ttf font file.<br>Should be noted that Onscreen Display Settings are for the yellow popup messages that RetroArch displays, and GLUI happens to use fonts from it, all of the other settings here only change the popup message.<br />
<br />
XMB loads its font from <code>$assets_directory/xmb/monochrome/font.ttf</code>, so you can replace the default font .ttf with a custom one. The same can be done with the default backgrounds and icons.<br />
<br />
==Cheats==<br />
Not all cores support cheats, you can check the [http://wiki.libretro.com/index.php?title=Main_Page#Core_Software_Library Libretro wiki] for which cores do. By default RetroArch comes with a fairly large cheat database, so to make a new cheat file, you can find files in the ''cheats'' folder of RetroArch's install directory for reference.To enable cheats, load the game, toggle RetroArch's menu, load a cheat file in the ''Core Cheat Options'' and you'll get a list of cheats available which you can toggle. After setting your cheats, hit ''Apply Cheat Changes''. Some cheats may require you to ''Restart Content'' to take effect.<br />
<br />
[[Category:FAQs]]<br />
[[Category:RetroArch]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Dummies_Guide:_RetroArch&diff=10411Dummies Guide: RetroArch2016-03-13T06:13:23Z<p>Monroe88: /* Controls */</p>
<hr />
<div>If someone linked you here, they probably thought you were being a dummy. <br />
So go ahead, take your time, and start from the top.<br />
<br />
==Downloading RetroArch==<br />
Download the latest stable version of RetroArch here: [http://buildbot.libretro.com/stable/1.3.0/windows/x86_64/RetroArch-v1.3.0-x86_64-Windows.zip 1.3.0 Stable (Windows x64)] (if you're reading this in 2016, download the latest build from [http://buildbot.libretro.com/nightly/ here (pick your OS/system from the list)])<br />
<br />
Open the .7z file with [http://www.7-zip.org/download.html 7zip] or WinRAR, or other archiver of your choice and extract the files to where you want to install RetroArch, or if on console/phone, install it using the standard method for that system.<br />
<br />
==Controls==<br />
The menu is controlled mainly by the RetroPad, which is libretro's gamepad abstraction that uses SNES-style face buttons and PlayStation DualShock-style shoulder buttons and analog sticks. The default keybinds for the RetroPad are as follows:<br />
<br />
*A button = X<br />
*B button = Z<br />
*X button = S<br />
*Y button = A<br />
*D-Pad = Arrow keys<br />
*Start button = Enter<br />
*Select button = Right Shift key<br />
*R button = W<br />
*L button = Q<br />
<br />
The R2, L2, R3, and L3 buttons, and left/right analog sticks are not mapped to the keyboard by default.<br />
Gamepads can be mapped manually in the menu under ''Settings'' → ''Input'' → ''Input User 1 Binds'' → ''User 1 Bind All'', but automatic configuration is possible with [https://github.com/libretro/retroarch-joypad-autoconfig autoconfig profiles]. On Windows, all XInput and some DirectInput gamepads will be mapped automatically when detected to the RetroPad using the included autoconfig profiles.<br />
<br />
In the menu, the following buttons are used:<br />
<br />
*A button = Confirm<br />
*B button = Cancel<br />
*Y button = Search prompt<br />
*D-Pad = Navigation<br />
*Start button = Reset option to default<br />
*Select button = Show tooltip for a particular option<br />
*R and L buttons = Fast scrolling through files<br />
<br />
Additionally, in current nightly builds, the Enter, Backspace, and Spacebar keys are used for Confirm, Cancel, and Reset to Default respectively alongside the RetroPad binds.<br />
<br />
There are also various hotkeys that are mapped by default. The most important ones to remember are the following:<br />
<br />
*Quit = Escape<br />
*Menu toggle = F1<br />
*Save State = F2<br />
*Load State = F4<br />
*Fullscreen toggle = F<br />
*Fast-Forward toggle = Spacebar<br />
*Screenshot = F8<br />
<br />
All hotkey binds can be viewed and changed at ''Settings'' → ''Input'' → ''Input Hotkey Binds''. Additionally, if you map Enable Hotkeys to a keyboard key, it will require that key to be held in order to trigger any hotkeys, which may be needed for cores that use the keyboard for input. Hotkeys can also be mapped to RetroPad buttons as well.<br />
<br />
Some people may not like having Escape key quit the program instantly and are used to having Escape bring up a menu instead. Since the hotkeys are configurable, you can change behavior of the Escape key in your config:<br />
<br />
input_exit_emulator = "nul"<br />
input_menu_toggle = "escape"<br />
<br />
The quit hotkey will be unmapped, and the menu toggle hotkey will become Escape instead of F1.<br />
<br />
==Downloading Cores==<br />
RetroArch doesn't come with emulation cores, so you have to download them yourself. However, RetroArch does have a built in updater. So to download up to date cores, scroll down to ''Online Updater'', and select ''Core Updater''. RetroArch will download a list of available cores to download, and you can individually download them. To see what core does what, see [[Libretro#Cores|this list.]]<br />
<br />
If for what ever reason RetroArch can't download cores, or wont display a list of available cores for download, you can get them from the buildbot [http://buildbot.libretro.com/nightly/ here.]<br />
<br />
==Running a Game==<br />
After downloading a core you can run a game by selecting ''Load Content'' → ''Select File And Detect Core'' and selecting your game.<br />
<br />
If you have only have 1 core that can run the selected game, then RetroArch will automatically load that core. If you have multiple cores that are capable of running the game you'll be given the choice between them.<br />
<br />
==BIOS and System files==<br />
Some emulation cores require special system files, or BIOSes. These can be downloaded [[Emulator_Files#Multi-System|here.]] Extract the ''system'' folder in that archive to where you installed RetroArch (the folder where the retroarch program is. retroarch.exe on Windows). <br />
<br />
If it doesn't find the BIOS, go to ''Settings'' → ''Directory'' → ''System/BIOS Dir'' (or find <code>system_directory</code> in the config file) and make sure it points to the ''system'' folder.<br />
<br />
==Core Options, Core Specific Settings==<br />
To edit options or settings specific to a core, you must start a game with that core. After loading a game, press F1 or the Home/Guide button on your 360/PS3 controller to get back to RetroArch's menu. From there you can change ''Core Options'', set core specific input options, cheats, and change shader settings.<br />
<br />
==Shader Settings==<br />
Shaders usually either come in single .cg files, or as a group of files controlled by a .cgp preset file. If you want to use a preset, like CRT-Royale or Super-XBR, simply select ''Load Shader Preset'' under ''Shader Options'' and select a .cgp file. If you want to select individual .cg files, increase the ''Shader Passes'' and select a .cg file through ''Shader #0'' (or #1, #2, etc.).<br />
<br />
After selecting your shader setup, hit ''Apply Shader Changes''.<br />
<br />
==Saves and Saving Settings==<br />
By default RetroArch will save settings when it closes, and will do so unless you put RetroArch in a directory that needs elevated privileges without running as administrator/root. ''Save New Config'' will save a ''new'', different, config that wont be loaded the next time RetroArch starts.<br />
<br />
It's probably a good idea to enable ''SaveRAM Autosave Internal'' (under ''Save Settings'') so game saves will be written to your harddrive while RetroArch is running.<br />
<br />
==Mednafen PSX==<br />
This particular core requires some specific care. You should have the correct BIOS (if not follow the [[Dummies_Guide:_RetroArch#BIOS_and_System_files|BIOS and System files]] section), you'll also need to make sure your game has a metadata file in the form of a .cue, .toc, .ccd, or .m3u file. The most common metadata people use is .cue, and if your PS1 game lacks a metafile, you can [[Cue_sheet_(.cue)|create one.]]<br>An easier way to get around metadata issues, is to get your games from a better source. [[Need_Games%3F|Redump]] PS1 games come in .bin/.cue format and work on mednafen without issue.<br />
<br />
==Ricing RetroArch==<br />
There's 3 different menu drivers for RetroArch to choose from, RGUI, GLUI and the default XMB. To switch between them go ''Settings'' → ''Driver Settings'' and switch ''Menu Driver''. You'll need to restart RetroArch for changes to take effect.<br />
<br />
You can change your wallpaper, text color settings, text size (DPI Override, GLUI only), toggle mouse support, and whether to display boxart in the ''Menu Settings''.<br />
<br />
You can change RetroArch's menu font, but it'll only work for the GLUI menu driver (only on 1.2.2, newer builds have changed GLUI significantly and it no longer uses the OSD font). To change it, under ''Onscreen Display Settings'' hit ''OSD Message Font'' and select a .ttf font file.<br>Should be noted that Onscreen Display Settings are for the yellow popup messages that RetroArch displays, and GLUI happens to use fonts from it, all of the other settings here only change the popup message.<br />
<br />
XMB loads its font from <code>$assets_directory/xmb/monochrome/font.ttf</code>, so you can replace the default font .ttf with a custom one. The same can be done with the default backgrounds and icons.<br />
<br />
==Cheats==<br />
Not all cores support cheats, you can check the [http://wiki.libretro.com/index.php?title=Main_Page#Core_Software_Library Libretro wiki] for which cores do. By default RetroArch comes with a fairly large cheat database, so to make a new cheat file, you can find files in the ''cheats'' folder of RetroArch's install directory for reference.To enable cheats, load the game, toggle RetroArch's menu, load a cheat file in the ''Core Cheat Options'' and you'll get a list of cheats available which you can toggle. After setting your cheats, hit ''Apply Cheat Changes''. Some cheats may require you to ''Restart Content'' to take effect.<br />
<br />
[[Category:FAQs]]<br />
[[Category:RetroArch]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Dummies_Guide:_RetroArch&diff=10410Dummies Guide: RetroArch2016-03-13T06:12:00Z<p>Monroe88: Add section on controls</p>
<hr />
<div>If someone linked you here, they probably thought you were being a dummy. <br />
So go ahead, take your time, and start from the top.<br />
<br />
==Downloading RetroArch==<br />
Download the latest stable version of RetroArch here: [http://buildbot.libretro.com/stable/1.3.0/windows/x86_64/RetroArch-v1.3.0-x86_64-Windows.zip 1.3.0 Stable (Windows x64)] (if you're reading this in 2016, download the latest build from [http://buildbot.libretro.com/nightly/ here (pick your OS/system from the list)])<br />
<br />
Open the .7z file with [http://www.7-zip.org/download.html 7zip] or WinRAR, or other archiver of your choice and extract the files to where you want to install RetroArch, or if on console/phone, install it using the standard method for that system.<br />
<br />
==Controls==<br />
The menu is controlled mainly by the RetroPad, which is libretro's gamepad abstraction that uses SNES-style face buttons and PlayStation DualShock-style shoulder buttons and analog sticks. The default keybinds for the RetroPad are as follows:<br />
<br />
*A button = X<br />
*B button = Z<br />
*X button = S<br />
*Y button = A<br />
*D-Pad = Arrow keys<br />
*Start button = Enter<br />
*Select button = Right Shift key<br />
*R button = W<br />
*L button = Q<br />
<br />
The R2, L2, R3, and L3 buttons, and left/right analog sticks are not mapped to the keyboard by default.<br />
Gamepads can be mapped manually in the menu under ''Settings''→''Input''→''Input User 1 Binds''→''User 1 Bind All'', but automatic configuration is possible with [https://github.com/libretro/retroarch-joypad-autoconfig autoconfig profiles]. On Windows, all XInput and some DirectInput gamepads will be mapped automatically when detected to the RetroPad using the included autoconfig profiles.<br />
<br />
In the menu, the following buttons are used:<br />
<br />
*A button = Confirm<br />
*B button = Cancel<br />
*Y button = Search prompt<br />
*D-Pad = Navigation<br />
*Start button = Reset option to default<br />
*Select button = Show tooltip for a particular option<br />
*R and L buttons = Fast scrolling through files<br />
<br />
Additionally, in current nightly builds, the Enter, Backspace, and Spacebar keys are used for Confirm, Cancel, and Reset to Default respectively alongside the RetroPad binds.<br />
<br />
There are also various hotkeys that are mapped by default. The most important ones to remember are the following:<br />
<br />
*Quit = Escape<br />
*Menu toggle = F1<br />
*Save State = F2<br />
*Load State = F4<br />
*Fullscreen toggle = F<br />
*Fast-Forward toggle = Spacebar<br />
*Screenshot = F8<br />
<br />
All hotkey binds can be viewed and changed at ''Settings''→''Input''→''Input Hotkey Binds''. Additionally, if you map Enable Hotkeys to a keyboard key, it will require that key to be held in order to trigger any hotkeys, which may be needed for cores that use the keyboard for input. Hotkeys can also be mapped to RetroPad buttons as well.<br />
<br />
Some people may not like having Escape key quit the program instantly and are used to having Escape bring up a menu instead. Since the hotkeys are configurable, you can change behavior of the Escape key in your config:<br />
<br />
input_exit_emulator = "nul"<br />
input_menu_toggle = "escape"<br />
<br />
The quit hotkey will be unmapped, and the menu toggle hotkey will become Escape instead of F1.<br />
<br />
==Downloading Cores==<br />
RetroArch doesn't come with emulation cores, so you have to download them yourself. However, RetroArch does have a built in updater. So to download up to date cores, scroll down to ''Online Updater'', and select ''Core Updater''. RetroArch will download a list of available cores to download, and you can individually download them. To see what core does what, see [[Libretro#Cores|this list.]]<br />
<br />
If for what ever reason RetroArch can't download cores, or wont display a list of available cores for download, you can get them from the buildbot [http://buildbot.libretro.com/nightly/ here.]<br />
<br />
==Running a Game==<br />
After downloading a core you can run a game by selecting ''Load Content'' → ''Select File And Detect Core'' and selecting your game.<br />
<br />
If you have only have 1 core that can run the selected game, then RetroArch will automatically load that core. If you have multiple cores that are capable of running the game you'll be given the choice between them.<br />
<br />
==BIOS and System files==<br />
Some emulation cores require special system files, or BIOSes. These can be downloaded [[Emulator_Files#Multi-System|here.]] Extract the ''system'' folder in that archive to where you installed RetroArch (the folder where the retroarch program is. retroarch.exe on Windows). <br />
<br />
If it doesn't find the BIOS, go to ''Settings'' → ''Directory'' → ''System/BIOS Dir'' (or find <code>system_directory</code> in the config file) and make sure it points to the ''system'' folder.<br />
<br />
==Core Options, Core Specific Settings==<br />
To edit options or settings specific to a core, you must start a game with that core. After loading a game, press F1 or the Home/Guide button on your 360/PS3 controller to get back to RetroArch's menu. From there you can change ''Core Options'', set core specific input options, cheats, and change shader settings.<br />
<br />
==Shader Settings==<br />
Shaders usually either come in single .cg files, or as a group of files controlled by a .cgp preset file. If you want to use a preset, like CRT-Royale or Super-XBR, simply select ''Load Shader Preset'' under ''Shader Options'' and select a .cgp file. If you want to select individual .cg files, increase the ''Shader Passes'' and select a .cg file through ''Shader #0'' (or #1, #2, etc.).<br />
<br />
After selecting your shader setup, hit ''Apply Shader Changes''.<br />
<br />
==Saves and Saving Settings==<br />
By default RetroArch will save settings when it closes, and will do so unless you put RetroArch in a directory that needs elevated privileges without running as administrator/root. ''Save New Config'' will save a ''new'', different, config that wont be loaded the next time RetroArch starts.<br />
<br />
It's probably a good idea to enable ''SaveRAM Autosave Internal'' (under ''Save Settings'') so game saves will be written to your harddrive while RetroArch is running.<br />
<br />
==Mednafen PSX==<br />
This particular core requires some specific care. You should have the correct BIOS (if not follow the [[Dummies_Guide:_RetroArch#BIOS_and_System_files|BIOS and System files]] section), you'll also need to make sure your game has a metadata file in the form of a .cue, .toc, .ccd, or .m3u file. The most common metadata people use is .cue, and if your PS1 game lacks a metafile, you can [[Cue_sheet_(.cue)|create one.]]<br>An easier way to get around metadata issues, is to get your games from a better source. [[Need_Games%3F|Redump]] PS1 games come in .bin/.cue format and work on mednafen without issue.<br />
<br />
==Ricing RetroArch==<br />
There's 3 different menu drivers for RetroArch to choose from, RGUI, GLUI and the default XMB. To switch between them go ''Settings'' → ''Driver Settings'' and switch ''Menu Driver''. You'll need to restart RetroArch for changes to take effect.<br />
<br />
You can change your wallpaper, text color settings, text size (DPI Override, GLUI only), toggle mouse support, and whether to display boxart in the ''Menu Settings''.<br />
<br />
You can change RetroArch's menu font, but it'll only work for the GLUI menu driver (only on 1.2.2, newer builds have changed GLUI significantly and it no longer uses the OSD font). To change it, under ''Onscreen Display Settings'' hit ''OSD Message Font'' and select a .ttf font file.<br>Should be noted that Onscreen Display Settings are for the yellow popup messages that RetroArch displays, and GLUI happens to use fonts from it, all of the other settings here only change the popup message.<br />
<br />
XMB loads its font from <code>$assets_directory/xmb/monochrome/font.ttf</code>, so you can replace the default font .ttf with a custom one. The same can be done with the default backgrounds and icons.<br />
<br />
==Cheats==<br />
Not all cores support cheats, you can check the [http://wiki.libretro.com/index.php?title=Main_Page#Core_Software_Library Libretro wiki] for which cores do. By default RetroArch comes with a fairly large cheat database, so to make a new cheat file, you can find files in the ''cheats'' folder of RetroArch's install directory for reference.To enable cheats, load the game, toggle RetroArch's menu, load a cheat file in the ''Core Cheat Options'' and you'll get a list of cheats available which you can toggle. After setting your cheats, hit ''Apply Cheat Changes''. Some cheats may require you to ''Restart Content'' to take effect.<br />
<br />
[[Category:FAQs]]<br />
[[Category:RetroArch]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Famicom_color_palette&diff=10301Famicom color palette2016-02-24T00:47:16Z<p>Monroe88: </p>
<hr />
<div>Unlike consoles like the SNES, which natively generate the image in pure RGB, the Famicom normally generates and outputs an encoded NTSC video signal, which must then be decoded by the TV's built-in NTSC decoder. This means the resulting color palette often varies depending on the display's decoder. This is why NES games appear to have different colors on different TV sets.<br />
<br />
NES emulators are similarly afflicted by this issue, as they each have their own algorithms for generating the NES color palette, meaning they all have slightly to wildly varying palettes. As such, there isn't really a "true" NES color palette, and which emulator has the "best" palette often comes down to preference, or whichever looks closest to how the real console looks on a user's own particular TV. FCEU based emulators come with a load of different preset palettes based on different people's perceptions of the NES colors, while emulators such as Nestopia have the ability for the user to edit the color palette to their liking, including the use of custom palettes that define the NES palette in any way the user wishes. <br />
<br />
Some arcade machines based on the NES hardware, such as the PlayChoice-10 and the Versus series of cabinets, did generate a native RGB signal, however. The colors on these cabinets tend to be very vibrant and saturated, giving games a very distinct look compared to how they would look on the real console. Nestopia gives the user the choice to use the RGB palette featured in these cabinets, though it is not usually considered to be the definitive or "real" NES palette.<br />
<br />
The [[libretro]] ports of Nestopia<ref name="nestopia_raw">https://github.com/rdanbrook/nestopia/commit/9d58851a22eb3baeee7b4fe28ae8ffaac7eaa599</ref> and FCEUmm<ref name="fceumm_raw">https://github.com/libretro/libretro-fceumm/commit/d370e2d37f9baa26e546e3542104ed04e1bf8965</ref> have the option to output the raw chroma, level, and emphasis from the PPU through the RGB color channels. This by itself produces an image with completely bizarre colors, but this can be decoded by [[shaders]] to generate actual colors, the main example being [https://github.com/libretro/common-shaders/tree/master/crt/shaders/GTU-famicom GTU-Famicom].<br />
<br />
==Download==<br />
* [http://www99.zippyshare.com/v/tLI0ibjA/file.html Palettes download]<br />
<br />
==Chart==<br />
{| class="wikitable"<br />
|+ <br />
|-<br />
! scope="col"|Palette <br />
! scope="col"|Nestopia decoder preset<br />
! scope="col"|Description<br />
|-<br />
|style="text-align:center;"|YUV<br />
|style="text-align:center;"|15° Canonical<br />
|style="text-align:center;"|Based of the standard method of NTSC decoding.<br />
|-<br />
|style="text-align:center;"|RGB<br />
|style="text-align:center;"|RGB<br />
|style="text-align:center;"|PlayChoice-10 PPU palette. <br />
|-<br />
|style="text-align:center;"|YUV (Sony CXA2025AS) <br />
|style="text-align:center;"|Consumer<br />
|style="text-align:center;"|Based on an NTSC decoder found in Sony TVs.<br />
|-<br />
|style="text-align:center;"|YUV with yellow boost<br />
|style="text-align:center;"|Alternative<br />
|style="text-align:center;"|Based on decoders in certain NTSC-J TVs.<ref>http://forums.nesdev.com/viewtopic.php?f=3&t=4241</ref> <br />
|-<br />
|-<br />
|style="text-align:center;"|Raw Luma and Chroma<br />
|style="text-align:center;"|Raw*<br />
|style="text-align:center;"|The raw chroma, level, and emphasis output of the NES PPU represented in RGB color channels<ref>https://github.com/libretro/nestopia/blob/c2244b8eec1a4f6bbebdd09ec6c4b1552b5610c0/libretro/libretro.cpp#L526</ref><br />
|-<br />
|-<br />
|style="text-align:center;"|Unsaturated-V5<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|This palette was created using direct NES composite capture through an XRGB Mini.<ref name="firebrandx">http://www.firebrandx.com/nespalette.html</ref> <br />
|-<br />
|style="text-align:center;"|YUV-V3<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|This saturated palette is a modified version of the YUV (15° Canonical) palette that fixes some shades of green and cyan.<ref name="firebrandx"></ref> <br />
|-<br />
|style="text-align:center;"|Rockman 9<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Palettes derived from Mega Man 9.<ref name="ririka">https://sites.google.com/site/insectduel/ririka</ref> <br />
|-<br />
|style="text-align:center;"|Rockman 9 - 21 to 2C<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Modified version of the above palette that darkens a single cyan value (2C).<ref name="ririka"></ref> <br />
|-<br />
|style="text-align:center;"|Wii VC<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Palette used in the [[Wii emulators|Wii]] [[Virtual Console]]. <br />
|-<br />
|style="text-align:center;"|3DS VC<br />
|style="text-align:center;"|N/A<br />
|style="text-align:center;"|Palette used in the [[Nintendo 3DS emulators|3DS]] [[Virtual Console]]. <br />
|-<br />
|}<br />
<br />
<nowiki>*</nowiki>Only available as an option on the [[libretro]] ports of Nestopia<ref name="nestopia_raw" /> and FCEUmm<ref name="fceumm_raw" />.<br />
<br />
==Palettes==<br />
{| cellpadding="10" cellspacing="0"<br />
|+YUV<br />
|-<br />
| style="background:#666666; color:#FFFFFF" align="center" | 00<br />
| style="background:#002A88; color:#FFFFFF" align="center" | 01<br />
| style="background:#1412A7; color:#FFFFFF" align="center" | 02<br />
| style="background:#3B00A4; color:#FFFFFF" align="center" | 03<br />
| style="background:#5C007E; color:#FFFFFF" align="center" | 04<br />
| style="background:#6E0040; color:#FFFFFF" align="center" | 05<br />
| style="background:#6C0700; color:#FFFFFF" align="center" | 06<br />
| style="background:#561D00; color:#FFFFFF" align="center" | 07<br />
| style="background:#333500; color:#FFFFFF" align="center" | 08<br />
| style="background:#0C4800; color:#FFFFFF" align="center" | 09<br />
| style="background:#005200; color:#FFFFFF" align="center" | 0A<br />
| style="background:#004F08; color:#FFFFFF" align="center" | 0B<br />
| style="background:#00404D; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#ADADAD; color:#FFFFFF" align="center" | 10<br />
| style="background:#155FD9; color:#FFFFFF" align="center" | 11<br />
| style="background:#4240FF; color:#FFFFFF" align="center" | 12<br />
| style="background:#7527FE; color:#FFFFFF" align="center" | 13<br />
| style="background:#A01ACC; color:#FFFFFF" align="center" | 14<br />
| style="background:#B71E7B; color:#FFFFFF" align="center" | 15<br />
| style="background:#B53120; color:#FFFFFF" align="center" | 16<br />
| style="background:#994E00; color:#FFFFFF" align="center" | 17<br />
| style="background:#6B6D00; color:#FFFFFF" align="center" | 18<br />
| style="background:#388700; color:#FFFFFF" align="center" | 19<br />
| style="background:#0D9300; color:#FFFFFF" align="center" | 1A<br />
| style="background:#008F32; color:#FFFFFF" align="center" | 1B<br />
| style="background:#007C8D; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#64B0FF; color:#000000" align="center" | 21<br />
| style="background:#9290FF; color:#000000" align="center" | 22<br />
| style="background:#C676FF; color:#000000" align="center" | 23<br />
| style="background:#F26AFF; color:#000000" align="center" | 24<br />
| style="background:#FF6ECC; color:#000000" align="center" | 25<br />
| style="background:#FF8170; color:#000000" align="center" | 26<br />
| style="background:#EA9E22; color:#000000" align="center" | 27<br />
| style="background:#BCBE00; color:#000000" align="center" | 28<br />
| style="background:#88D800; color:#000000" align="center" | 29<br />
| style="background:#5CE430; color:#000000" align="center" | 2A<br />
| style="background:#45E082; color:#000000" align="center" | 2B<br />
| style="background:#48CDDE; color:#000000" align="center" | 2C<br />
| style="background:#4F4F4F; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#C0DFFF; color:#000000" align="center" | 31<br />
| style="background:#D3D2FF; color:#000000" align="center" | 32<br />
| style="background:#E8C8FF; color:#000000" align="center" | 33<br />
| style="background:#FAC2FF; color:#000000" align="center" | 34<br />
| style="background:#FFC4EA; color:#000000" align="center" | 35<br />
| style="background:#FFCCC5; color:#000000" align="center" | 36<br />
| style="background:#F7D8A5; color:#000000" align="center" | 37<br />
| style="background:#E4E594; color:#000000" align="center" | 38<br />
| style="background:#CFEF96; color:#000000" align="center" | 39<br />
| style="background:#BDF4AB; color:#000000" align="center" | 3A<br />
| style="background:#B3F3CC; color:#000000" align="center" | 3B<br />
| style="background:#B5EBF2; color:#000000" align="center" | 3C<br />
| style="background:#B8B8B8; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+RGB<br />
|-<br />
| style="background:#6D6D6D; color:#FFFFFF" align="center" | 00<br />
| style="background:#002492; color:#FFFFFF" align="center" | 01<br />
| style="background:#0000DB; color:#FFFFFF" align="center" | 02<br />
| style="background:#6D49DB; color:#FFFFFF" align="center" | 03<br />
| style="background:#92006D; color:#FFFFFF" align="center" | 04<br />
| style="background:#B6006D; color:#FFFFFF" align="center" | 05<br />
| style="background:#B62400; color:#FFFFFF" align="center" | 06<br />
| style="background:#924900; color:#FFFFFF" align="center" | 07<br />
| style="background:#6D4900; color:#FFFFFF" align="center" | 08<br />
| style="background:#244900; color:#FFFFFF" align="center" | 09<br />
| style="background:#006D24; color:#FFFFFF" align="center" | 0A<br />
| style="background:#009200; color:#FFFFFF" align="center" | 0B<br />
| style="background:#004949; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#B6B6B6; color:#FFFFFF" align="center" | 10<br />
| style="background:#006DDB; color:#FFFFFF" align="center" | 11<br />
| style="background:#0049FF; color:#FFFFFF" align="center" | 12<br />
| style="background:#9200FF; color:#FFFFFF" align="center" | 13<br />
| style="background:#B600FF; color:#FFFFFF" align="center" | 14<br />
| style="background:#FF0092; color:#FFFFFF" align="center" | 15<br />
| style="background:#FF0000; color:#FFFFFF" align="center" | 16<br />
| style="background:#DB6D00; color:#FFFFFF" align="center" | 17<br />
| style="background:#926D00; color:#FFFFFF" align="center" | 18<br />
| style="background:#249200; color:#FFFFFF" align="center" | 19<br />
| style="background:#009200; color:#FFFFFF" align="center" | 1A<br />
| style="background:#00B66D; color:#FFFFFF" align="center" | 1B<br />
| style="background:#009292; color:#FFFFFF" align="center" | 1C<br />
| style="background:#242424; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#6DB6FF; color:#000000" align="center" | 21<br />
| style="background:#9292FF; color:#000000" align="center" | 22<br />
| style="background:#DB6DFF; color:#000000" align="center" | 23<br />
| style="background:#FF00FF; color:#000000" align="center" | 24<br />
| style="background:#FF6DFF; color:#000000" align="center" | 25<br />
| style="background:#FF9200; color:#000000" align="center" | 26<br />
| style="background:#FFB600; color:#000000" align="center" | 27<br />
| style="background:#DBDB00; color:#000000" align="center" | 28<br />
| style="background:#6DDB00; color:#000000" align="center" | 29<br />
| style="background:#00FF00; color:#000000" align="center" | 2A<br />
| style="background:#49FFDB; color:#000000" align="center" | 2B<br />
| style="background:#00FFFF; color:#000000" align="center" | 2C<br />
| style="background:#494949; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#B6DBFF; color:#000000" align="center" | 31<br />
| style="background:#DBB6FF; color:#000000" align="center" | 32<br />
| style="background:#FFB6FF; color:#000000" align="center" | 33<br />
| style="background:#FF92FF; color:#000000" align="center" | 34<br />
| style="background:#FFB6B6; color:#000000" align="center" | 35<br />
| style="background:#FFDB92; color:#000000" align="center" | 36<br />
| style="background:#FFFF49; color:#000000" align="center" | 37<br />
| style="background:#FFFF6D; color:#000000" align="center" | 38<br />
| style="background:#B6FF49; color:#000000" align="center" | 39<br />
| style="background:#92FF6D; color:#000000" align="center" | 3A<br />
| style="background:#49FFDB; color:#000000" align="center" | 3B<br />
| style="background:#92DBFF; color:#000000" align="center" | 3C<br />
| style="background:#929292; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Unsaturated-V5<br />
|-<br />
| style="background:#6B6B6B; color:#FFFFFF" align="center" | 00<br />
| style="background:#001E87; color:#FFFFFF" align="center" | 01<br />
| style="background:#1F0B96; color:#FFFFFF" align="center" | 02<br />
| style="background:#3B0C87; color:#FFFFFF" align="center" | 03<br />
| style="background:#590D61; color:#FFFFFF" align="center" | 04<br />
| style="background:#5E0528; color:#FFFFFF" align="center" | 05<br />
| style="background:#551100; color:#FFFFFF" align="center" | 06<br />
| style="background:#461B00; color:#FFFFFF" align="center" | 07<br />
| style="background:#303200; color:#FFFFFF" align="center" | 08<br />
| style="background:#0A4800; color:#FFFFFF" align="center" | 09<br />
| style="background:#004E00; color:#FFFFFF" align="center" | 0A<br />
| style="background:#004619; color:#FFFFFF" align="center" | 0B<br />
| style="background:#00395A; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#B2B2B2; color:#FFFFFF" align="center" | 10<br />
| style="background:#1A53D1; color:#FFFFFF" align="center" | 11<br />
| style="background:#4835EE; color:#FFFFFF" align="center" | 12<br />
| style="background:#7123EC; color:#FFFFFF" align="center" | 13<br />
| style="background:#9A1EB7; color:#FFFFFF" align="center" | 14<br />
| style="background:#A51E62; color:#FFFFFF" align="center" | 15<br />
| style="background:#A52D19; color:#FFFFFF" align="center" | 16<br />
| style="background:#874B00; color:#FFFFFF" align="center" | 17<br />
| style="background:#676900; color:#FFFFFF" align="center" | 18<br />
| style="background:#298400; color:#FFFFFF" align="center" | 19<br />
| style="background:#038B00; color:#FFFFFF" align="center" | 1A<br />
| style="background:#008240; color:#FFFFFF" align="center" | 1B<br />
| style="background:#007096; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#63ADFD; color:#000000" align="center" | 21<br />
| style="background:#908AFE; color:#000000" align="center" | 22<br />
| style="background:#B977FC; color:#000000" align="center" | 23<br />
| style="background:#E771FE; color:#000000" align="center" | 24<br />
| style="background:#F76FC9; color:#000000" align="center" | 25<br />
| style="background:#F5836A; color:#000000" align="center" | 26<br />
| style="background:#DD9C29; color:#000000" align="center" | 27<br />
| style="background:#BDB807; color:#000000" align="center" | 28<br />
| style="background:#84D107; color:#000000" align="center" | 29<br />
| style="background:#5BDC3B; color:#000000" align="center" | 2A<br />
| style="background:#48D77D; color:#000000" align="center" | 2B<br />
| style="background:#48C6D8; color:#000000" align="center" | 2C<br />
| style="background:#555555; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#C4E3FE; color:#000000" align="center" | 31<br />
| style="background:#D7D5FE; color:#000000" align="center" | 32<br />
| style="background:#E6CDFE; color:#000000" align="center" | 33<br />
| style="background:#F9CAFE; color:#000000" align="center" | 34<br />
| style="background:#FEC9F0; color:#000000" align="center" | 35<br />
| style="background:#FED1C7; color:#000000" align="center" | 36<br />
| style="background:#F7DCAC; color:#000000" align="center" | 37<br />
| style="background:#E8E89C; color:#000000" align="center" | 38<br />
| style="background:#D1F29D; color:#000000" align="center" | 39<br />
| style="background:#BFF4B1; color:#000000" align="center" | 3A<br />
| style="background:#B7F5CD; color:#000000" align="center" | 3B<br />
| style="background:#B7EBF2; color:#000000" align="center" | 3C<br />
| style="background:#BEBEBE; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+YUV-V3<br />
|-<br />
| style="background:#666666; color:#FFFFFF" align="center" | 00<br />
| style="background:#002a88; color:#FFFFFF" align="center" | 01<br />
| style="background:#1412a7; color:#FFFFFF" align="center" | 02<br />
| style="background:#3b00a4; color:#FFFFFF" align="center" | 03<br />
| style="background:#5c007e; color:#FFFFFF" align="center" | 04<br />
| style="background:#6e0040; color:#FFFFFF" align="center" | 05<br />
| style="background:#6c0700; color:#FFFFFF" align="center" | 06<br />
| style="background:#561d00; color:#FFFFFF" align="center" | 07<br />
| style="background:#333500; color:#FFFFFF" align="center" | 08<br />
| style="background:#0c4800; color:#FFFFFF" align="center" | 09<br />
| style="background:#005200; color:#FFFFFF" align="center" | 0A<br />
| style="background:#004c18; color:#FFFFFF" align="center" | 0B<br />
| style="background:#003e5b; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#adadad; color:#FFFFFF" align="center" | 10<br />
| style="background:#155fd9; color:#FFFFFF" align="center" | 11<br />
| style="background:#4240ff; color:#FFFFFF" align="center" | 12<br />
| style="background:#7527fe; color:#FFFFFF" align="center" | 13<br />
| style="background:#a01acc; color:#FFFFFF" align="center" | 14<br />
| style="background:#b71e7b; color:#FFFFFF" align="center" | 15<br />
| style="background:#b53120; color:#FFFFFF" align="center" | 16<br />
| style="background:#994e00; color:#FFFFFF" align="center" | 17<br />
| style="background:#6b6d00; color:#FFFFFF" align="center" | 18<br />
| style="background:#388700; color:#FFFFFF" align="center" | 19<br />
| style="background:#0d9300; color:#FFFFFF" align="center" | 1A<br />
| style="background:#008c47; color:#FFFFFF" align="center" | 1B<br />
| style="background:#007aa0; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#ffffff; color:#000000" align="center" | 20<br />
| style="background:#64b0ff; color:#000000" align="center" | 21<br />
| style="background:#9290ff; color:#000000" align="center" | 22<br />
| style="background:#c676ff; color:#000000" align="center" | 23<br />
| style="background:#f26aff; color:#000000" align="center" | 24<br />
| style="background:#ff6ecc; color:#000000" align="center" | 25<br />
| style="background:#ff8170; color:#000000" align="center" | 26<br />
| style="background:#ea9e22; color:#000000" align="center" | 27<br />
| style="background:#bcbe00; color:#000000" align="center" | 28<br />
| style="background:#88d800; color:#000000" align="center" | 29<br />
| style="background:#5ce430; color:#000000" align="center" | 2A<br />
| style="background:#45e082; color:#000000" align="center" | 2B<br />
| style="background:#48cdde; color:#000000" align="center" | 2C<br />
| style="background:#4f4f4f; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#ffffff; color:#000000" align="center" | 30<br />
| style="background:#c0dfff; color:#000000" align="center" | 31<br />
| style="background:#d3d2ff; color:#000000" align="center" | 32<br />
| style="background:#e8c8ff; color:#000000" align="center" | 33<br />
| style="background:#fac2ff; color:#000000" align="center" | 34<br />
| style="background:#ffc4ea; color:#000000" align="center" | 35<br />
| style="background:#ffccc5; color:#000000" align="center" | 36<br />
| style="background:#f7d8a5; color:#000000" align="center" | 37<br />
| style="background:#e4e594; color:#000000" align="center" | 38<br />
| style="background:#cfef96; color:#000000" align="center" | 39<br />
| style="background:#bdf4ab; color:#000000" align="center" | 3A<br />
| style="background:#b3f3cc; color:#000000" align="center" | 3B<br />
| style="background:#b5ebf2; color:#000000" align="center" | 3C<br />
| style="background:#b8b8b8; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Rockman 9<br />
|-<br />
| style="background:#707070; color:#FFFFFF" align="center" | 00<br />
| style="background:#0000A8; color:#FFFFFF" align="center" | 01<br />
| style="background:#201888; color:#FFFFFF" align="center" | 02<br />
| style="background:#400098; color:#FFFFFF" align="center" | 03<br />
| style="background:#880070; color:#FFFFFF" align="center" | 04<br />
| style="background:#A80010; color:#FFFFFF" align="center" | 05<br />
| style="background:#A00000; color:#FFFFFF" align="center" | 06<br />
| style="background:#780800; color:#FFFFFF" align="center" | 07<br />
| style="background:#402800; color:#FFFFFF" align="center" | 08<br />
| style="background:#004000; color:#FFFFFF" align="center" | 09<br />
| style="background:#005000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003810; color:#FFFFFF" align="center" | 0B<br />
| style="background:#183858; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#B8B8B8; color:#FFFFFF" align="center" | 10<br />
| style="background:#0070E8; color:#FFFFFF" align="center" | 11<br />
| style="background:#2038E8; color:#FFFFFF" align="center" | 12<br />
| style="background:#8000F0; color:#FFFFFF" align="center" | 13<br />
| style="background:#B800B8; color:#FFFFFF" align="center" | 14<br />
| style="background:#E00058; color:#FFFFFF" align="center" | 15<br />
| style="background:#D82800; color:#FFFFFF" align="center" | 16<br />
| style="background:#C84808; color:#FFFFFF" align="center" | 17<br />
| style="background:#887000; color:#FFFFFF" align="center" | 18<br />
| style="background:#009000; color:#FFFFFF" align="center" | 19<br />
| style="background:#00A800; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009038; color:#FFFFFF" align="center" | 1B<br />
| style="background:#008088; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#F8F8F8; color:#000000" align="center" | 20<br />
| style="background:#38B8F8; color:#000000" align="center" | 21<br />
| style="background:#5890F8; color:#000000" align="center" | 22<br />
| style="background:#A088F8; color:#000000" align="center" | 23<br />
| style="background:#F078F8; color:#000000" align="center" | 24<br />
| style="background:#F870B0; color:#000000" align="center" | 25<br />
| style="background:#F87060; color:#000000" align="center" | 26<br />
| style="background:#F89838; color:#000000" align="center" | 27<br />
| style="background:#F0B838; color:#000000" align="center" | 28<br />
| style="background:#80D010; color:#000000" align="center" | 29<br />
| style="background:#48D848; color:#000000" align="center" | 2A<br />
| style="background:#58F898; color:#000000" align="center" | 2B<br />
| style="background:#00E8D8; color:#000000" align="center" | 2C<br />
| style="background:#505050; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#F8F8F8; color:#000000" align="center" | 30<br />
| style="background:#A8E0F8; color:#000000" align="center" | 31<br />
| style="background:#C0D0F8; color:#000000" align="center" | 32<br />
| style="background:#D0C8F8; color:#000000" align="center" | 33<br />
| style="background:#F8C0F8; color:#000000" align="center" | 34<br />
| style="background:#F8C0D8; color:#000000" align="center" | 35<br />
| style="background:#F8B8B0; color:#000000" align="center" | 36<br />
| style="background:#F8D8A8; color:#000000" align="center" | 37<br />
| style="background:#F8E0A0; color:#000000" align="center" | 38<br />
| style="background:#E0F8A0; color:#000000" align="center" | 39<br />
| style="background:#A8F0B8; color:#000000" align="center" | 3A<br />
| style="background:#B0F8C8; color:#000000" align="center" | 3B<br />
| style="background:#98F8F0; color:#000000" align="center" | 3C<br />
| style="background:#989898; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Rockman 9 - 21 to 2C<br />
|-<br />
| style="background:#707070; color:#FFFFFF" align="center" | 00<br />
| style="background:#0000A8; color:#FFFFFF" align="center" | 01<br />
| style="background:#201888; color:#FFFFFF" align="center" | 02<br />
| style="background:#400098; color:#FFFFFF" align="center" | 03<br />
| style="background:#880070; color:#FFFFFF" align="center" | 04<br />
| style="background:#A80010; color:#FFFFFF" align="center" | 05<br />
| style="background:#A00000; color:#FFFFFF" align="center" | 06<br />
| style="background:#780800; color:#FFFFFF" align="center" | 07<br />
| style="background:#402800; color:#FFFFFF" align="center" | 08<br />
| style="background:#004000; color:#FFFFFF" align="center" | 09<br />
| style="background:#005000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003810; color:#FFFFFF" align="center" | 0B<br />
| style="background:#183858; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#B8B8B8; color:#FFFFFF" align="center" | 10<br />
| style="background:#0070E8; color:#FFFFFF" align="center" | 11<br />
| style="background:#2038E8; color:#FFFFFF" align="center" | 12<br />
| style="background:#8000F0; color:#FFFFFF" align="center" | 13<br />
| style="background:#B800B8; color:#FFFFFF" align="center" | 14<br />
| style="background:#E00058; color:#FFFFFF" align="center" | 15<br />
| style="background:#D82800; color:#FFFFFF" align="center" | 16<br />
| style="background:#C84808; color:#FFFFFF" align="center" | 17<br />
| style="background:#887000; color:#FFFFFF" align="center" | 18<br />
| style="background:#009000; color:#FFFFFF" align="center" | 19<br />
| style="background:#00A800; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009038; color:#FFFFFF" align="center" | 1B<br />
| style="background:#008088; color:#FFFFFF" align="center" | 1C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#F8F8F8; color:#000000" align="center" | 20<br />
| style="background:#38B8F8; color:#000000" align="center" | 21<br />
| style="background:#5890F8; color:#000000" align="center" | 22<br />
| style="background:#A088F8; color:#000000" align="center" | 23<br />
| style="background:#F078F8; color:#000000" align="center" | 24<br />
| style="background:#F870B0; color:#000000" align="center" | 25<br />
| style="background:#F87060; color:#000000" align="center" | 26<br />
| style="background:#F89838; color:#000000" align="center" | 27<br />
| style="background:#F0B838; color:#000000" align="center" | 28<br />
| style="background:#80D010; color:#000000" align="center" | 29<br />
| style="background:#48D848; color:#000000" align="center" | 2A<br />
| style="background:#58F898; color:#000000" align="center" | 2B<br />
| style="background:#38B8F8; color:#000000" align="center" | 2C<br />
| style="background:#505050; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#F8F8F8; color:#000000" align="center" | 30<br />
| style="background:#A8E0F8; color:#000000" align="center" | 31<br />
| style="background:#C0D0F8; color:#000000" align="center" | 32<br />
| style="background:#D0C8F8; color:#000000" align="center" | 33<br />
| style="background:#F8C0F8; color:#000000" align="center" | 34<br />
| style="background:#F8C0D8; color:#000000" align="center" | 35<br />
| style="background:#F8B8B0; color:#000000" align="center" | 36<br />
| style="background:#F8D8A8; color:#000000" align="center" | 37<br />
| style="background:#F8E0A0; color:#000000" align="center" | 38<br />
| style="background:#E0F8A0; color:#000000" align="center" | 39<br />
| style="background:#A8F0B8; color:#000000" align="center" | 3A<br />
| style="background:#B0F8C8; color:#000000" align="center" | 3B<br />
| style="background:#98F8F0; color:#000000" align="center" | 3C<br />
| style="background:#989898; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+Wii VC<br />
|-<br />
| style="background:#494949; color:#FFFFFF" align="center" | 00<br />
| style="background:#00006A; color:#FFFFFF" align="center" | 01<br />
| style="background:#090063; color:#FFFFFF" align="center" | 02<br />
| style="background:#290059; color:#FFFFFF" align="center" | 03<br />
| style="background:#42004A; color:#FFFFFF" align="center" | 04<br />
| style="background:#490000; color:#FFFFFF" align="center" | 05<br />
| style="background:#420000; color:#FFFFFF" align="center" | 06<br />
| style="background:#291100; color:#FFFFFF" align="center" | 07<br />
| style="background:#182700; color:#FFFFFF" align="center" | 08<br />
| style="background:#003010; color:#FFFFFF" align="center" | 09<br />
| style="background:#003000; color:#FFFFFF" align="center" | 0A<br />
| style="background:#002910; color:#FFFFFF" align="center" | 0B<br />
| style="background:#012043; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|-<br />
| style="background:#747174; color:#FFFFFF" align="center" | 10<br />
| style="background:#003084; color:#FFFFFF" align="center" | 11<br />
| style="background:#3101AC; color:#FFFFFF" align="center" | 12<br />
| style="background:#4B0194; color:#FFFFFF" align="center" | 13<br />
| style="background:#64007B; color:#FFFFFF" align="center" | 14<br />
| style="background:#6B0039; color:#FFFFFF" align="center" | 15<br />
| style="background:#6B2101; color:#FFFFFF" align="center" | 16<br />
| style="background:#5A2F00; color:#FFFFFF" align="center" | 17<br />
| style="background:#424900; color:#FFFFFF" align="center" | 18<br />
| style="background:#185901; color:#FFFFFF" align="center" | 19<br />
| style="background:#105901; color:#FFFFFF" align="center" | 1A<br />
| style="background:#015932; color:#FFFFFF" align="center" | 1B<br />
| style="background:#01495A; color:#FFFFFF" align="center" | 1C<br />
| style="background:#101010; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|-<br />
| style="background:#ADADAD; color:#000000" align="center" | 20<br />
| style="background:#4A71B6; color:#000000" align="center" | 21<br />
| style="background:#6458D5; color:#000000" align="center" | 22<br />
| style="background:#8450E6; color:#000000" align="center" | 23<br />
| style="background:#A451AD; color:#000000" align="center" | 24<br />
| style="background:#AD4984; color:#000000" align="center" | 25<br />
| style="background:#B5624A; color:#000000" align="center" | 26<br />
| style="background:#947132; color:#000000" align="center" | 27<br />
| style="background:#7B722A; color:#000000" align="center" | 28<br />
| style="background:#5A8601; color:#000000" align="center" | 29<br />
| style="background:#388E31; color:#000000" align="center" | 2A<br />
| style="background:#318E5A; color:#000000" align="center" | 2B<br />
| style="background:#398E8D; color:#000000" align="center" | 2C<br />
| style="background:#383838; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|-<br />
| style="background:#B6B6B6; color:#000000" align="center" | 30<br />
| style="background:#8C9DB5; color:#000000" align="center" | 31<br />
| style="background:#8D8EAE; color:#000000" align="center" | 32<br />
| style="background:#9C8EBC; color:#000000" align="center" | 33<br />
| style="background:#A687BC; color:#000000" align="center" | 34<br />
| style="background:#AD8D9D; color:#000000" align="center" | 35<br />
| style="background:#AE968C; color:#000000" align="center" | 36<br />
| style="background:#9C8F7C; color:#000000" align="center" | 37<br />
| style="background:#9C9E72; color:#000000" align="center" | 38<br />
| style="background:#94A67C; color:#000000" align="center" | 39<br />
| style="background:#84A77B; color:#000000" align="center" | 3A<br />
| style="background:#7C9D84; color:#000000" align="center" | 3B<br />
| style="background:#73968D; color:#000000" align="center" | 3C<br />
| style="background:#DEDEDE; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
{| cellpadding="10" cellspacing="0"<br />
|+3DS VC<br />
|-<br />
| style="background:#737373; color:#FFFFFF" align="center" | 00<br />
| style="background:#21188C; color:#FFFFFF" align="center" | 01<br />
| style="background:#0000AD; color:#FFFFFF" align="center" | 02<br />
| style="background:#42009C; color:#FFFFFF" align="center" | 03<br />
| style="background:#8C0073; color:#FFFFFF" align="center" | 04<br />
| style="background:#AD0010; color:#FFFFFF" align="center" | 05<br />
| style="background:#A50000; color:#FFFFFF" align="center" | 06<br />
| style="background:#7B0800; color:#FFFFFF" align="center" | 07<br />
| style="background:#422900; color:#FFFFFF" align="center" | 08<br />
| style="background:#004200; color:#FFFFFF" align="center" | 09<br />
| style="background:#005200; color:#FFFFFF" align="center" | 0A<br />
| style="background:#003910; color:#FFFFFF" align="center" | 0B<br />
| style="background:#18395A; color:#FFFFFF" align="center" | 0C<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 0F<br />
|- <br />
| style="background:#BDBDBD; color:#FFFFFF" align="center" | 10<br />
| style="background:#0073EF; color:#FFFFFF" align="center" | 11<br />
| style="background:#2139EF; color:#FFFFFF" align="center" | 12<br />
| style="background:#8400F7; color:#FFFFFF" align="center" | 13<br />
| style="background:#BD00BD; color:#FFFFFF" align="center" | 14<br />
| style="background:#E7005A; color:#FFFFFF" align="center" | 15<br />
| style="background:#DE2900; color:#FFFFFF" align="center" | 16<br />
| style="background:#CE4A08; color:#FFFFFF" align="center" | 17<br />
| style="background:#8C7300; color:#FFFFFF" align="center" | 18<br />
| style="background:#009400; color:#FFFFFF" align="center" | 19<br />
| style="background:#00AD00; color:#FFFFFF" align="center" | 1A<br />
| style="background:#009439; color:#FFFFFF" align="center" | 1B<br />
| style="background:#00848C; color:#FFFFFF" align="center" | 1C<br />
| style="background:#101010; color:#FFFFFF" align="center" | 1D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 1F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 20<br />
| style="background:#39BDFF; color:#000000" align="center" | 21<br />
| style="background:#5A94FF; color:#000000" align="center" | 22<br />
| style="background:#A58CFF; color:#000000" align="center" | 23<br />
| style="background:#F77BFF; color:#000000" align="center" | 24<br />
| style="background:#FF73B5; color:#000000" align="center" | 25<br />
| style="background:#FF7363; color:#000000" align="center" | 26<br />
| style="background:#FF9C39; color:#000000" align="center" | 27<br />
| style="background:#F7BD39; color:#000000" align="center" | 28<br />
| style="background:#84D610; color:#000000" align="center" | 29<br />
| style="background:#4ADE4A; color:#000000" align="center" | 2A<br />
| style="background:#5AFF9C; color:#000000" align="center" | 2B<br />
| style="background:#00EFDE; color:#000000" align="center" | 2C<br />
| style="background:#393939; color:#FFFFFF" align="center" | 2D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 2F<br />
|- <br />
| style="background:#FFFFFF; color:#000000" align="center" | 30<br />
| style="background:#ADE7FF; color:#000000" align="center" | 31<br />
| style="background:#C6D6FF; color:#000000" align="center" | 32<br />
| style="background:#D6CEFF; color:#000000" align="center" | 33<br />
| style="background:#FFC6FF; color:#000000" align="center" | 34<br />
| style="background:#FFC6DE; color:#000000" align="center" | 35<br />
| style="background:#FFBDB5; color:#000000" align="center" | 36<br />
| style="background:#FFDEAD; color:#000000" align="center" | 37<br />
| style="background:#FFE7A5; color:#000000" align="center" | 38<br />
| style="background:#E7FFA5; color:#000000" align="center" | 39<br />
| style="background:#ADF7BD; color:#000000" align="center" | 3A<br />
| style="background:#B5FFCE; color:#000000" align="center" | 3B<br />
| style="background:#9CFFF7; color:#000000" align="center" | 3C<br />
| style="background:#8C8C8C; color:#000000" align="center" | 3D<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3E<br />
| style="background:#000000; color:#FFFFFF" align="center" | 3F<br />
|}<br />
<br />
==Gallery==<br />
<br />
==References==<br />
{{reflist|2}}<br />
<br />
[[Category:FAQs]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Dummies_Guide:_RetroArch&diff=10176Dummies Guide: RetroArch2016-02-10T00:58:54Z<p>Monroe88: Update</p>
<hr />
<div>If someone linked you here, they probably thought you were being a dummy. <br />
So go ahead, take your time, and start from the top.<br />
<br />
==Downloading RetroArch==<br />
Download the latest stable version of RetroArch here: [http://buildbot.libretro.com/stable/1.3.0/windows/x86_64/RetroArch-v1.3.0-x86_64-Windows.zip 1.3.0 Stable (Windows x64)] (if you're reading this in 2016, download the latest build from [http://buildbot.libretro.com/nightly/ here (pick your OS/system from the list)])<br />
<br />
Open the .7z file with [http://www.7-zip.org/download.html 7zip] or WinRAR, or other archiver of your choice and extract the files to where you want to install RetroArch, or if on console/phone, install it using the standard method for that system.<br />
<br />
==Downloading Cores==<br />
RetroArch doesn't come with emulation cores, so you have to download them yourself. However, RetroArch does have a built in updater. So to download up to date cores, scroll down to ''Online Updater'', and select ''Core Updater''. RetroArch will download a list of available cores to download, and you can individually download them. To see what core does what, see [[Libretro#Cores|this list.]]<br />
<br />
If for what ever reason RetroArch can't download cores, or wont display a list of available cores for download, you can get them from the buildbot [http://buildbot.libretro.com/nightly/ here.]<br />
<br />
==Running a Game==<br />
After downloading a core you can run a game by selecting ''Load Content'' → ''Select File And Detect Core'' and selecting your game.<br />
<br />
If you have only have 1 core that can run the selected game, then RetroArch will automatically load that core. If you have multiple cores that are capable of running the game you'll be given the choice between them.<br />
<br />
==BIOS and System files==<br />
Some emulation cores require special system files, or BIOSes. These can be downloaded [[Emulator_Files#Multi-System|here.]] Extract the ''system'' folder in that archive to where you installed RetroArch (the folder where the retroarch program is. retroarch.exe on Windows). <br />
<br />
If it doesn't find the BIOS, go to ''Settings'' → ''Directory'' → ''System/BIOS Dir'' (or find <code>system_directory</code> in the config file) and make sure it points to the ''system'' folder.<br />
<br />
==Core Options, Core Specific Settings==<br />
To edit options or settings specific to a core, you must start a game with that core. After loading a game, press F1 or the Home/Guide button on your 360/PS3 controller to get back to RetroArch's menu. From there you can change ''Core Options'', set core specific input options, cheats, and change shader settings.<br />
<br />
==Shader Settings==<br />
Shaders usually either come in single .cg files, or as a group of files controlled by a .cgp preset file. If you want to use a preset, like CRT-Royale or Super-XBR, simply select ''Load Shader Preset'' under ''Shader Options'' and select a .cgp file. If you want to select individual .cg files, increase the ''Shader Passes'' and select a .cg file through ''Shader #0'' (or #1, #2, etc.).<br />
<br />
After selecting your shader setup, hit ''Apply Shader Changes''.<br />
<br />
==Saves and Saving Settings==<br />
By default RetroArch will save settings when it closes, and will do so unless you put RetroArch in a directory that needs elevated privileges without running as administrator/root. ''Save New Config'' will save a ''new'', different, config that wont be loaded the next time RetroArch starts.<br />
<br />
It's probably a good idea to enable ''SaveRAM Autosave Internal'' (under ''Save Settings'') so game saves will be written to your harddrive while RetroArch is running.<br />
<br />
==Mednafen PSX==<br />
This particular core requires some specific care. You should have the correct BIOS (if not follow the [[Dummies_Guide:_RetroArch#BIOS_and_System_files|BIOS and System files]] section), you'll also need to make sure your game has a metadata file in the form of a .cue, .toc, .ccd, or .m3u file. The most common metadata people use is .cue, and if your PS1 game lacks a metafile, you can [[Cue_sheet_(.cue)|create one.]]<br>An easier way to get around metadata issues, is to get your games from a better source. [[Need_Games%3F|Redump]] PS1 games come in .bin/.cue format and work on mednafen without issue.<br />
<br />
==Ricing RetroArch==<br />
There's 3 different menu drivers for RetroArch to choose from, RGUI, GLUI and the default XMB. To switch between them go ''Settings'' → ''Driver Settings'' and switch ''Menu Driver''. You'll need to restart RetroArch for changes to take effect.<br />
<br />
You can change your wallpaper, text color settings, text size (DPI Override, GLUI only), toggle mouse support, and whether to display boxart in the ''Menu Settings''.<br />
<br />
You can change RetroArch's menu font, but it'll only work for the GLUI menu driver (only on 1.2.2, newer builds have changed GLUI significantly and it no longer uses the OSD font). To change it, under ''Onscreen Display Settings'' hit ''OSD Message Font'' and select a .ttf font file.<br>Should be noted that Onscreen Display Settings are for the yellow popup messages that RetroArch displays, and GLUI happens to use fonts from it, all of the other settings here only change the popup message.<br />
<br />
XMB loads its font from <code>$assets_directory/xmb/monochrome/font.ttf</code>, so you can replace the default font .ttf with a custom one. The same can be done with the default backgrounds and icons.<br />
<br />
==Cheats==<br />
Not all cores support cheats, you can check the [http://wiki.libretro.com/index.php?title=Main_Page#Core_Software_Library Libretro wiki] for which cores do. By default RetroArch comes with a fairly large cheat database, so to make a new cheat file, you can find files in the ''cheats'' folder of RetroArch's install directory for reference.To enable cheats, load the game, toggle RetroArch's menu, load a cheat file in the ''Core Cheat Options'' and you'll get a list of cheats available which you can toggle. After setting your cheats, hit ''Apply Cheat Changes''. Some cheats may require you to ''Restart Content'' to take effect.<br />
<br />
[[Category:FAQs]]<br />
[[Category:RetroArch]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Building_RetroArch&diff=10129Building RetroArch2016-02-02T03:47:33Z<p>Monroe88: update</p>
<hr />
<div>This page contains instructions of building [[RetroArch]] from source. Most average users should use prebuilt binaries instead.<br />
<br />
=Building on Windows=<br />
The recommended toolchain for building RetroArch on Windows is MinGW-w64 running inside the MSYS2 environment. Installers for MSYS2 can be found at [https://msys2.github.io/ msys2.github.io]. Other toolchains like TDM-GCC or Visual Studio can work, but this guide will only cover MSYS2.<br />
<br />
==Preparing the environment==<br />
<br />
Once you have installed MSYS2, you will need to update it and install the toolchain packages.<br />
<br />
===Updating MSYS2===<br />
<br />
First, start the MSYS2 Shell entry that should be present in your Start Menu.<br />
<br />
Updating your install is a multiple step operation: first you update the core, then you have to rehash the environment and finally you'll be able to properly update the rest of the system. Once you are in the MSYS2 Shell terminal, run the following commands to upgrade the core MSYS2 packages:<br />
<br />
pacman --noconfirm -Sy<br />
pacman --needed --noconfirm -S bash pacman pacman-mirrors msys2-runtime<br />
<br />
When the command is done working, close all MSYS2 shells you might have open and run these commands in the Run as dialog or in <code>cmd.exe</code>:<br />
<br />
*In a 64bit install of MSYS2:<br />
<br />
%systemdrive%\msys64\autorebase.bat<br />
<br />
*In a 32bit install of MSYS2:<br />
<br />
%systemdrive%\msys32\autorebase.bat<br />
<br />
Once the window closes, open the MSYS2 Shell again and type <code>pacman --noconfirm -Su</code> then repeat the previous operation to finish the process.<br />
Note: If you get fork errors, the second step may have failed. You should go to your msys2 install directory and run <code>autorebase.bat</code> manually. If that didn't solve the problem consider reinstalling msys2.<br />
<br />
===Installing the build time dependencies===<br />
<br />
The following commands will install everything you need to build RetroArch in your MSYS2 environment.<br />
<br />
*For 32 bit builds run:<br />
<br />
pacman -S --noconfirm --needed git make mingw-w64-i686-toolchain mingw-w64-i686-pkg-config mingw-w64-i686-SDL2 mingw-w64-i686-libxml2 mingw-w64-i686-freetype mingw-w64-i686 python3 mingw-w64-i686-ffmpeg<br />
<br />
*For 64 bit builds:<br />
<br />
pacman -S --noconfirm --needed git make mingw-w64-x86_64-toolchain mingw-w64-x86_64-pkg-config mingw-w64-x86_64-SDL2 mingw-w64-x86_64-libxml2 mingw-w64-x86_64-freetype mingw-w64-x86_64-python3 mingw-w64-x86_64-ffmpeg<br />
<br />
For the nvidia-cg-toolkit packages, you will need to download the pkg manually from Sourceforge to your home directory for [http://sourceforge.net/projects/msys2/files/REPOS/MINGW_GCC_4_9/i686/mingw-w64-i686-nvidia-cg-toolkit-3.1-2-any.pkg.tar.xz/download 32-bit] or [http://sourceforge.net/projects/msys2/files/REPOS/MINGW_GCC_4_9/x86_64/mingw-w64-x86_64-nvidia-cg-toolkit-3.1-2-any.pkg.tar.xz/download 64-bit], then use pacman to install them.<br />
<br />
*32-bit:<br />
<br />
pacman -U --noconfirm mingw-w64-i686-nvidia-cg-toolkit-3.1-2-any.pkg.tar.xz<br />
<br />
*64-bit:<br />
<br />
pacman -U --noconfirm mingw-w64-x86_64-nvidia-cg-toolkit-3.1-2-any.pkg.tar.xz<br />
<br />
After installing the packages, close the MSYS2 shell and open either MinGW-w64 Win64 Shell for 64 bit builds or MinGW-w64 Win32 Shell if you want to build for 32 bit systems. Both should be available in your Start Menu.<br />
<br />
==Cloning RetroArch and libretro repositories==<br />
<br />
Once you are running the MSY2 MinGW-w64 Shell, then you will need to clone the RetroArch and libretro Git repositories.<br />
<br />
git clone https://github.com/libretro/libretro-super.git<br />
cd libretro-super<br />
./libretro-fetch.sh<br />
<br />
This will fetch every repository in the libretro organization on Github into <code>%MSYS2%/home/%USERNAME%/</code> . Since there are a lot of repositories to download, this will take a while to complete. You can use <code>libretro-fetch.sh</code> again to update all repositories, and you can fetch repositories individually by specifying their name e.g. <code>./libretro-fetch.sh mednafen_psx</code><br />
<br />
If you change a file in one of the cloned repositories and git won't let you update, do:<br />
<br />
git reset --hard<br />
git pull<br />
<br />
It should update after that. If not, delete the whole repository and run <code>libretro-fetch.sh</code> again.<br />
<br />
To change directories/folders do:<br />
<br />
cd folder<br />
or<br />
cd folder/subfolder<br />
<br />
etc.<br />
<br />
To go up one directory:<br />
<br />
cd ..<br />
<br />
Other basic UNIX shell commands like "ls" can be useful as well.<br />
<br />
==Building RetroArch==<br />
<br />
To build RetroArch from the MSY2 MinGW-w64 Shell, execute the following:<br />
<br />
cd libretro-super<br />
cd retroarch<br />
git pull<br />
./configure<br />
make clean<br />
make -j4<br />
<br />
You should see a list of files being compiled, ending with <code>LD retroarch</code>. You can then copy the newly compiled <code>retroarch.exe</code> from <code>libretro-super\retroarch</code> to wherever you keep your RetroArch installation.<br />
<br />
If you are experiencing a missing DLL error, you can fetch all MSYS2 installed DLLs by executing this line:<br />
<br />
for i in $(seq 3); do for bin in $(ldd *exe *dll | grep -i mingw | cut -d\ -f 3); do cp -vu "$bin" . ; done; done<br />
<br />
Video filters and Audio DSP filters are compiled by going into gfx/filters and audio/filters, respectively, and running make on the Makefile. For example<br />
<br />
cd retroarch<br />
cd gfx/filters<br />
make clean<br />
make<br />
<br />
After they build, you can copy the filters to your RetroArch installation.<br />
<br />
<br />
==Building libretro cores==<br />
<br />
After running the fetch script, you should have a folder for each libretro core in your libretro-super folder.<br />
<br />
You can use <code>libretro-build.sh</code> to build all cores at once:<br />
<br />
cd libretro-super<br />
./libretro-build.sh<br />
<br />
This will attempt to build almost every core available. This can take quite a while to complete, so you may wish to build cores individually:<br />
<br />
cd libretro-super<br />
./libretro-build.sh mednafen_psx<br />
<br />
The exact names for fetching or building individual cores can be found in the [https://github.com/libretro/libretro-super/blob/master/rules.d/core-rules.sh /rules.d/core-rules.sh] script.<br />
<br />
Cores that build successfully are put in <code>/dist/win</code> or <code>/dist/win_x64</code> in your libretro-super folder. Be sure to run <code>libretro-fetch.sh</code> to update your local Git clones before building.<br />
<br />
==Building cores manually==<br />
<br />
If you wish, you can build cores manually if you want more control over the build process, though it's not recommended for inexperienced users. For most cores, all you need to do is do:<br />
<br />
git pull<br />
make -f Makefile.libretro clean<br />
make -f Makefile.libretro -j4<br />
<br />
If there isn't a Makefile or Makefile.libretro in the top level, try to find a "libretro" folder within the repository and there should be a Makefile in there. After the core is built, it will be in the same folder as the Makefile used to compile it. <br />
<br />
The following need only <code>make</code>:<br />
* 4do-libretro<br />
* any 'beetle' source<br />
* Dinothawr<br />
* dolphin (inside <code>/libretro</code>)<br />
* libretro-cap32<br />
* libretro-lutro<br />
* libretro-o2em<br />
* libretro-ppsspp (inside <code>/libretro</code>)<br />
* libretro-uae<br />
* mednfen-psx-libretro<br />
* nestopia (inside <code>/libretro</code>)<br />
* prosystem-libretro<br />
* stella<br />
* yabause (inside <code>/libretro</code>)<br />
<br />
The following need <code>make -f Makefile.libretro</code>:<br />
* blueMSX-libretro<br />
* desmume (inside <code>/desmume</code>)<br />
* fuse-libretro<br />
* gambatte-libretro (inside <code>/libgambatte</code>)<br />
* Genesis-Plus-GX<br />
* gw-libretro<br />
* Hatari (You may need to run <code>./configure</code>)<br />
* mgba<br />
* picodrive<br />
* snes9x-next<br />
* vba-next<br />
<br />
The following cores also require the running of <code>git submodule update --init</code>:<br />
<br />
* dolphin<br />
* libretro-ppsspp<br />
* picodrive<br />
<br />
Some cores need special commands for building:<br />
<br />
===bsnes===<br />
<br />
cd libretro-bsnes_%PROFILE%<br />
make profile='%PROFILE%' clean<br />
make profile='%PROFILE%' -j4<br />
<br />
Replace %PROFILE% with accuracy, balanced, or performance.<br />
<br />
===MAME===<br />
If doing a 64-bit build.<br />
<br />
cd libretro-mame<br />
make -f Makefile.libretro PTR64=1 clean<br />
make -f Makefile.libretro PTR64=1 -j4<br />
<br />
This core will take a while to build, depending on how fast your CPU is, how many jobs you specify, and how many cores your CPU has. You can save some time updating the core by adding PARTIAL=1 when doing a clean. You can specify a subtarget by adding e.g. <code>SUBTARGET=arcade</code> or <code>SUBTARGET=tiny</code> in the current version of MAME.<br />
<br />
=Building on Linux=<br />
Building on Linux is similar to building on Windows.<br />
<br />
After entering the RetroArch folder, do:<br />
<br />
./configure<br />
<br />
...and install any necessary dependencies before running ./configure again. Then, do:<br />
<br />
make<br />
<br />
<br />
NOTE: Compilation may fail if you do not have the following installed:<br />
<br />
* g++<br />
* libgl1-mesa-dev<br />
* libsdl2-dev<br />
* mesa-common-dev<br />
* pkg-config<br />
<br />
Also, you may need one of the following if RetroArch is to run audio:<br />
<br />
* alsa (libsdl2-dev)<br />
* libpulse (libpulse-dev)<br />
* lossaudo<br />
* lopenal (libopenal-dev)<br />
* jack<br />
* libroar (libroar-dev) WARNING: This might break your compilation.<br />
* rsound<br />
<br />
==Raspberry Pi==<br />
There is a tutorial on how to bypass X11 and use KMS, thus reducing overhead.<br />
<br />
https://www.raspberrypi.org/forums/viewtopic.php?f=78&t=56070<br />
<br />
The above might work on regular desktop Linux, too.<br />
<br />
Even so, if you plan on turning your Raspberry Pi into a "RetroArch machine", the easiest way is installing the [http://blog.petrockblock.com/retropie/retropie-downloads/ RetroPie image]. (You can also run [http://blog.petrockblock.com/2012/07/22/retropie-setup-an-initialization-script-for-retroarch-on-the-raspberry-pi/ its script].)<br />
<br />
[[Category:FAQs]]<br />
[[Category:RetroArch]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Building_RetroArch&diff=10128Building RetroArch2016-02-02T03:34:29Z<p>Monroe88: </p>
<hr />
<div>This page contains instructions of building [[RetroArch]] from source. Most average users should use prebuilt binaries instead.<br />
<br />
=Building on Windows=<br />
The recommended toolchain for building RetroArch on Windows is MinGW-w64 running inside the MSYS2 environment. Installers for MSYS2 can be found at [https://msys2.github.io/ msys2.github.io]. Other toolchains like TDM-GCC or Visual Studio can work, but this guide will only cover MSYS2.<br />
<br />
==Preparing the environment==<br />
<br />
Once you have installed MSYS2, you will need to update it and install the toolchain packages.<br />
<br />
===Updating MSYS2===<br />
<br />
First, start the MSYS2 Shell entry that should be present in your Start Menu.<br />
<br />
Updating your install is a multiple step operation: first you update the core, then you have to rehash the environment and finally you'll be able to properly update the rest of the system. Once you are in the MSYS2 Shell terminal, run the following commands to upgrade the core MSYS2 packages:<br />
<br />
pacman --noconfirm -Sy<br />
pacman --needed --noconfirm -S bash pacman pacman-mirrors msys2-runtime<br />
<br />
When the command is done working, close all MSYS2 shells you might have open and run these commands in the Run as dialog or in <code>cmd.exe</code>:<br />
<br />
*In a 64bit install of MSYS2:<br />
<br />
%systemdrive%\msys64\autorebase.bat<br />
<br />
*In a 32bit install of MSYS2:<br />
<br />
%systemdrive%\msys32\autorebase.bat<br />
<br />
Once the window closes, open the MSYS2 Shell again and type <code>pacman --noconfirm -Su</code> then repeat the previous operation to finish the process.<br />
Note: If you get fork errors, the second step may have failed. You should go to your msys2 install directory and run <code>autorebase.bat</code> manually. If that didn't solve the problem consider reinstalling msys2.<br />
<br />
===Installing the build time dependencies===<br />
<br />
The following commands will install everything you need to build RetroArch in your MSYS2 environment.<br />
<br />
*For 32 bit builds run:<br />
<br />
pacman -S --noconfirm --needed git make mingw-w64-i686-toolchain mingw-w64-i686-pkgconf mingw-w64-i686-SDL2 mingw-w64-i686-libxml2 mingw-w64-i686-freetype mingw-w64-i686 python3 mingw-w64-i686-ffmpeg<br />
<br />
*For 64 bit builds:<br />
<br />
pacman -S --noconfirm --needed git make mingw-w64-x86_64-toolchain mingw-w64-x86_64-pkgconf mingw-w64-x86_64-SDL2 mingw-w64-x86_64-libxml2 mingw-w64-x86_64-freetype mingw-w64-x86_64-python3 mingw-w64-x86_64-ffmpeg<br />
<br />
For the nvidia-cg-toolkit packages, you will need to download the pkg manually from Sourceforge to your home directory for [http://sourceforge.net/projects/msys2/files/REPOS/MINGW_GCC_4_9/i686/mingw-w64-i686-nvidia-cg-toolkit-3.1-2-any.pkg.tar.xz/download 32-bit] or [http://sourceforge.net/projects/msys2/files/REPOS/MINGW_GCC_4_9/x86_64/mingw-w64-x86_64-nvidia-cg-toolkit-3.1-2-any.pkg.tar.xz/download 64-bit], then use pacman to install them.<br />
<br />
*32-bit:<br />
<br />
pacman -U --noconfirm mingw-w64-i686-nvidia-cg-toolkit-3.1-2-any.pkg.tar.xz<br />
<br />
*64-bit:<br />
<br />
pacman -U --noconfirm mingw-w64-x86_64-nvidia-cg-toolkit-3.1-2-any.pkg.tar.xz<br />
<br />
After installing the packages, close the MSYS2 shell and open either MinGW-w64 Win64 Shell for 64 bit builds or MinGW-w64 Win32 Shell if you want to build for 32 bit systems. Both should be available in your Start Menu.<br />
<br />
==Cloning RetroArch and libretro repositories==<br />
<br />
Once you are running the MSY2 MinGW-w64 Shell, then you will need to clone the RetroArch and libretro Git repositories.<br />
<br />
git clone https://github.com/libretro/libretro-super.git<br />
cd libretro-super<br />
./libretro-fetch.sh<br />
<br />
This will fetch every repository in the libretro organization on Github into <code>%MSYS2%/home/%USERNAME%/</code> . Since there are a lot of repositories to download, this will take a while to complete. You can use <code>libretro-fetch.sh</code> again to update all repositories, and you can fetch repositories individually by specifying their name e.g. <code>./libretro-fetch.sh mednafen_psx</code><br />
<br />
If you change a file in one of the cloned repositories and git won't let you update, do:<br />
<br />
git reset --hard<br />
git pull<br />
<br />
It should update after that. If not, delete the whole repository and run <code>libretro-fetch.sh</code> again.<br />
<br />
To change directories/folders do:<br />
<br />
cd folder<br />
or<br />
cd folder/subfolder<br />
<br />
etc.<br />
<br />
To go up one directory:<br />
<br />
cd ..<br />
<br />
Other basic UNIX shell commands like "ls" can be useful as well.<br />
<br />
==Building RetroArch==<br />
<br />
To build RetroArch from the MSY2 MinGW-w64 Shell, execute the following:<br />
<br />
cd libretro-super<br />
cd retroarch<br />
git pull<br />
./configure<br />
make clean<br />
make -j4<br />
<br />
You should see a list of files being compiled, ending with <code>LD retroarch</code>. You can then copy the newly compiled <code>retroarch.exe</code> from <code>libretro-super\retroarch</code> to wherever you keep your RetroArch installation.<br />
<br />
If you are experiencing a missing DLL error, you can fetch all MSYS2 installed DLLs by executing this line:<br />
<br />
for i in $(seq 3); do for bin in $(ldd *exe *dll | grep -i mingw | cut -d\ -f 3); do cp -vu "$bin" . ; done; done<br />
<br />
Video filters and Audio DSP filters are compiled by going into gfx/filters and audio/filters, respectively, and running make on the Makefile. For example<br />
<br />
cd retroarch<br />
cd gfx/filters<br />
make clean<br />
make<br />
<br />
After they build, you can copy the filters to your RetroArch installation.<br />
<br />
<br />
==Building libretro cores==<br />
<br />
After running the fetch script, you should have a folder for each libretro core in your libretro-super folder.<br />
<br />
You can use <code>libretro-build.sh</code> to build all cores at once:<br />
<br />
cd libretro-super<br />
./libretro-build.sh<br />
<br />
This will attempt to build almost every core available. This can take quite a while to complete, so you may wish to build cores individually:<br />
<br />
cd libretro-super<br />
./libretro-build.sh mednafen_psx<br />
<br />
The exact names for fetching or building individual cores can be found in the [https://github.com/libretro/libretro-super/blob/master/rules.d/core-rules.sh /rules.d/core-rules.sh] script.<br />
<br />
Cores that build successfully are put in <code>/dist/win</code> or <code>/dist/win_x64</code> in your libretro-super folder. Be sure to run <code>libretro-fetch.sh</code> to update your local Git clones before building.<br />
<br />
==Building cores manually==<br />
<br />
If you wish, you can build cores manually if you want more control over the build process, though it's not recommended for inexperienced users. For most cores, all you need to do is do:<br />
<br />
git pull<br />
make -f Makefile.libretro clean<br />
make -f Makefile.libretro -j4<br />
<br />
If there isn't a Makefile or Makefile.libretro in the top level, try to find a "libretro" folder within the repository and there should be a Makefile in there. After the core is built, it will be in the same folder as the Makefile used to compile it. <br />
<br />
The following need only <code>make</code>:<br />
* 4do-libretro<br />
* any 'beetle' source<br />
* Dinothawr<br />
* dolphin (inside <code>/libretro</code>)<br />
* libretro-cap32<br />
* libretro-lutro<br />
* libretro-o2em<br />
* libretro-ppsspp (inside <code>/libretro</code>)<br />
* libretro-uae<br />
* mednfen-psx-libretro<br />
* nestopia (inside <code>/libretro</code>)<br />
* prosystem-libretro<br />
* stella<br />
* yabause (inside <code>/libretro</code>)<br />
<br />
The following need <code>make -f Makefile.libretro</code>:<br />
* blueMSX-libretro<br />
* desmume (inside <code>/desmume</code>)<br />
* fuse-libretro<br />
* gambatte-libretro (inside <code>/libgambatte</code>)<br />
* Genesis-Plus-GX<br />
* gw-libretro<br />
* Hatari (You may need to run <code>./configure</code>)<br />
* mgba<br />
* picodrive<br />
* snes9x-next<br />
* vba-next<br />
<br />
The following cores also require the running of <code>git submodule update --init</code>:<br />
<br />
* dolphin<br />
* libretro-ppsspp<br />
* picodrive<br />
<br />
Some cores need special commands for building:<br />
<br />
===bsnes===<br />
<br />
cd libretro-bsnes_%PROFILE%<br />
make profile='%PROFILE%' clean<br />
make profile='%PROFILE%' -j4<br />
<br />
Replace %PROFILE% with accuracy, balanced, or performance.<br />
<br />
===MAME===<br />
If doing a 64-bit build.<br />
<br />
cd libretro-mame<br />
make -f Makefile.libretro PTR64=1 clean<br />
make -f Makefile.libretro PTR64=1 -j4<br />
<br />
This core will take a while to build, depending on how fast your CPU is, how many jobs you specify, and how many cores your CPU has. You can save some time updating the core by adding PARTIAL=1 when doing a clean. You can specify a subtarget by adding e.g. <code>SUBTARGET=arcade</code> or <code>SUBTARGET=tiny</code> in the current version of MAME.<br />
<br />
=Building on Linux=<br />
Building on Linux is similar to building on Windows.<br />
<br />
After entering the RetroArch folder, do:<br />
<br />
./configure<br />
<br />
...and install any necessary dependencies before running ./configure again. Then, do:<br />
<br />
make<br />
<br />
<br />
NOTE: Compilation may fail if you do not have the following installed:<br />
<br />
* g++<br />
* libgl1-mesa-dev<br />
* libsdl2-dev<br />
* mesa-common-dev<br />
* pkg-config<br />
<br />
Also, you may need one of the following if RetroArch is to run audio:<br />
<br />
* alsa (libsdl2-dev)<br />
* libpulse (libpulse-dev)<br />
* lossaudo<br />
* lopenal (libopenal-dev)<br />
* jack<br />
* libroar (libroar-dev) WARNING: This might break your compilation.<br />
* rsound<br />
<br />
==Raspberry Pi==<br />
There is a tutorial on how to bypass X11 and use KMS, thus reducing overhead.<br />
<br />
https://www.raspberrypi.org/forums/viewtopic.php?f=78&t=56070<br />
<br />
The above might work on regular desktop Linux, too.<br />
<br />
Even so, if you plan on turning your Raspberry Pi into a "RetroArch machine", the easiest way is installing the [http://blog.petrockblock.com/retropie/retropie-downloads/ RetroPie image]. (You can also run [http://blog.petrockblock.com/2012/07/22/retropie-setup-an-initialization-script-for-retroarch-on-the-raspberry-pi/ its script].)<br />
<br />
[[Category:FAQs]]<br />
[[Category:RetroArch]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Building_RetroArch&diff=10127Building RetroArch2016-02-02T03:32:08Z<p>Monroe88: Add info on installing nvidia-cg-toolkit manually</p>
<hr />
<div>This page contains instructions of building [[RetroArch]] from source. Most average users should use prebuilt binaries instead.<br />
<br />
=Building on Windows=<br />
The recommended toolchain for building RetroArch on Windows is MinGW-w64 running inside the MSYS2 environment. Installers for MSYS2 can be found at [https://msys2.github.io/ msys2.github.io]. Other toolchains like TDM-GCC or Visual Studio can work, but this guide will only cover MSYS2.<br />
<br />
==Preparing the environment==<br />
<br />
Once you have installed MSYS2, you will need to update it and install the toolchain packages.<br />
<br />
===Updating MSYS2===<br />
<br />
First, start the MSYS2 Shell entry that should be present in your Start Menu.<br />
<br />
Updating your install is a multiple step operation: first you update the core, then you have to rehash the environment and finally you'll be able to properly update the rest of the system. Once you are in the MSYS2 Shell terminal, run the following commands to upgrade the core MSYS2 packages:<br />
<br />
pacman --noconfirm -Sy<br />
pacman --needed --noconfirm -S bash pacman pacman-mirrors msys2-runtime<br />
<br />
When the command is done working, close all MSYS2 shells you might have open and run these commands in the Run as dialog or in <code>cmd.exe</code>:<br />
<br />
*In a 64bit install of MSYS2:<br />
<br />
%systemdrive%\msys64\autorebase.bat<br />
<br />
*In a 32bit install of MSYS2:<br />
<br />
%systemdrive%\msys32\autorebase.bat<br />
<br />
Once the window closes, open the MSYS2 Shell again and type <code>pacman --noconfirm -Su</code> then repeat the previous operation to finish the process.<br />
Note: If you get fork errors, the second step may have failed. You should go to your msys2 install directory and run <code>autorebase.bat</code> manually. If that didn't solve the problem consider reinstalling msys2.<br />
<br />
===Installing the build time dependencies===<br />
<br />
The following commands will install everything you need to build RetroArch in your MSYS2 environment.<br />
<br />
*For 32 bit builds run:<br />
<br />
pacman -S --noconfirm --needed git make mingw-w64-i686-toolchain mingw-w64-i686-pkgconf mingw-w64-i686-SDL2 mingw-w64-i686-libxml2 mingw-w64-i686-freetype mingw-w64-i686 python3 mingw-w64-i686-ffmpeg<br />
<br />
*For 64 bit builds:<br />
<br />
pacman -S --noconfirm --needed git make mingw-w64-x86_64-toolchain mingw-w64-x86_64-pkgconf mingw-w64-x86_64-SDL2 mingw-w64-x86_64-libxml2 mingw-w64-x86_64-freetype mingw-w64-x86_64-python3 mingw-w64-x86_64-ffmpeg<br />
<br />
For the nvidia-cg-toolkit packages, you will need to download the pkg manually from Sourceforge to your home directory for [http://sourceforge.net/projects/msys2/files/REPOS/MINGW_GCC_4_9/i686/mingw-w64-i686-nvidia-cg-toolkit-3.1-2-any.pkg.tar.xz/download 32-bit] or [http://sourceforge.net/projects/msys2/files/REPOS/MINGW_GCC_4_9/x86_64/mingw-w64-x86_64-nvidia-cg-toolkit-3.1-2-any.pkg.tar.xz/download 64-bit], then use pacman to install them.<br />
<br />
*32-bit:<br />
<br />
pacman -U --noconfirm mingw-w64-i686-nvidia-cg-toolkit-3.1-2-any.pkg.tar.xz<br />
<br />
*64-bit:<br />
<br />
pacman -U --noconfirm mingw-w64-x86_64-nvidia-cg-toolkit-3.1-2-any.pkg.tar.xz<br />
<br />
After installing the packages, close the MSYS2 shell and open either MinGW-w64 Win64 Shell for 64 bit builds or MinGW-w64 Win32 Shell if you want to build for 32 bit systems. Both should be available in your Start Menu.<br />
<br />
==Cloning RetroArch and libretro repositories==<br />
<br />
Once you are running the MSY2 MinGW-w64 Shell, then you will need to clone the RetroArch and libretro Git repositories.<br />
<br />
git clone https://github.com/libretro/libretro-super.git<br />
cd libretro-super<br />
./libretro-fetch.sh<br />
<br />
This will fetch every repository in the libretro organization on Github into <code>%MSYS2%/home/%USERNAME%/</code> . Since there are a lot of repositories to download, this will take a while to complete. You can use <code>libretro-fetch.sh</code> again to update all repositories, and you can fetch repositories individually by specifying their name e.g. <code>./libretro-fetch.sh mednafen_psx</code><br />
<br />
If you change a file in one of the cloned repositories and git won't let you update, do:<br />
<br />
git reset --hard<br />
git pull<br />
<br />
It should update after that. If not, delete the whole repository and run <code>libretro-fetch.sh</code> again.<br />
<br />
To change directories/folders do:<br />
<br />
cd folder<br />
or<br />
cd folder/subfolder<br />
<br />
etc.<br />
<br />
To go up one directory:<br />
<br />
cd ..<br />
<br />
Other basic UNIX shell commands like "ls" can be useful as well.<br />
<br />
==Building RetroArch==<br />
<br />
Then execute these commands from the Git Bash shell:<br />
<br />
cd libretro-super<br />
cd retroarch<br />
git pull<br />
./configure<br />
make clean<br />
make -j4<br />
<br />
You should see a list of files being compiled, ending with <code>LD retroarch</code>. You can then copy the newly compiled <code>retroarch.exe</code> from <code>libretro-super\retroarch</code> to wherever you keep your RetroArch installation.<br />
<br />
If you are experiencing a missing DLL error, you can fetch all MSYS2 installed DLLs by executing this line:<br />
<br />
for i in $(seq 3); do for bin in $(ldd *exe *dll | grep -i mingw | cut -d\ -f 3); do cp -vu "$bin" . ; done; done<br />
<br />
Video filters and Audio DSP filters are compiled by going into gfx/filters and audio/filters, respectively, and running make on the Makefile. For example<br />
<br />
cd retroarch<br />
cd gfx/filters<br />
make clean<br />
make<br />
<br />
After they build, you can copy the filters to your RetroArch installation.<br />
<br />
<br />
==Building libretro cores==<br />
<br />
After running the fetch script, you should have a folder for each libretro core in your libretro-super folder.<br />
<br />
You can use <code>libretro-build.sh</code> to build all cores at once:<br />
<br />
cd libretro-super<br />
./libretro-build.sh<br />
<br />
This will attempt to build almost every core available. This can take quite a while to complete, so you may wish to build cores individually:<br />
<br />
cd libretro-super<br />
./libretro-build.sh mednafen_psx<br />
<br />
The exact names for fetching or building individual cores can be found in the [https://github.com/libretro/libretro-super/blob/master/rules.d/core-rules.sh /rules.d/core-rules.sh] script.<br />
<br />
Cores that build successfully are put in <code>/dist/win</code> or <code>/dist/win_x64</code> in your libretro-super folder. Be sure to run <code>libretro-fetch.sh</code> to update your local Git clones before building.<br />
<br />
==Building cores manually==<br />
<br />
If you wish, you can build cores manually if you want more control over the build process, though it's not recommended for inexperienced users. For most cores, all you need to do is do:<br />
<br />
git pull<br />
make -f Makefile.libretro clean<br />
make -f Makefile.libretro -j4<br />
<br />
If there isn't a Makefile or Makefile.libretro in the top level, try to find a "libretro" folder within the repository and there should be a Makefile in there. After the core is built, it will be in the same folder as the Makefile used to compile it. <br />
<br />
The following need only <code>make</code>:<br />
* 4do-libretro<br />
* any 'beetle' source<br />
* Dinothawr<br />
* dolphin (inside <code>/libretro</code>)<br />
* libretro-cap32<br />
* libretro-lutro<br />
* libretro-o2em<br />
* libretro-ppsspp (inside <code>/libretro</code>)<br />
* libretro-uae<br />
* mednfen-psx-libretro<br />
* nestopia (inside <code>/libretro</code>)<br />
* prosystem-libretro<br />
* stella<br />
* yabause (inside <code>/libretro</code>)<br />
<br />
The following need <code>make -f Makefile.libretro</code>:<br />
* blueMSX-libretro<br />
* desmume (inside <code>/desmume</code>)<br />
* fuse-libretro<br />
* gambatte-libretro (inside <code>/libgambatte</code>)<br />
* Genesis-Plus-GX<br />
* gw-libretro<br />
* Hatari (You may need to run <code>./configure</code>)<br />
* mgba<br />
* picodrive<br />
* snes9x-next<br />
* vba-next<br />
<br />
The following cores also require the running of <code>git submodule update --init</code>:<br />
<br />
* dolphin<br />
* libretro-ppsspp<br />
* picodrive<br />
<br />
Some cores need special commands for building:<br />
<br />
===bsnes===<br />
<br />
cd libretro-bsnes_%PROFILE%<br />
make profile='%PROFILE%' clean<br />
make profile='%PROFILE%' -j4<br />
<br />
Replace %PROFILE% with accuracy, balanced, or performance.<br />
<br />
===MAME===<br />
If doing a 64-bit build.<br />
<br />
cd libretro-mame<br />
make -f Makefile.libretro PTR64=1 clean<br />
make -f Makefile.libretro PTR64=1 -j4<br />
<br />
This core will take a while to build, depending on how fast your CPU is, how many jobs you specify, and how many cores your CPU has. You can save some time updating the core by adding PARTIAL=1 when doing a clean. You can specify a subtarget by adding e.g. <code>SUBTARGET=arcade</code> or <code>SUBTARGET=tiny</code> in the current version of MAME.<br />
<br />
=Building on Linux=<br />
Building on Linux is similar to building on Windows.<br />
<br />
After entering the RetroArch folder, do:<br />
<br />
./configure<br />
<br />
...and install any necessary dependencies before running ./configure again. Then, do:<br />
<br />
make<br />
<br />
<br />
NOTE: Compilation may fail if you do not have the following installed:<br />
<br />
* g++<br />
* libgl1-mesa-dev<br />
* libsdl2-dev<br />
* mesa-common-dev<br />
* pkg-config<br />
<br />
Also, you may need one of the following if RetroArch is to run audio:<br />
<br />
* alsa (libsdl2-dev)<br />
* libpulse (libpulse-dev)<br />
* lossaudo<br />
* lopenal (libopenal-dev)<br />
* jack<br />
* libroar (libroar-dev) WARNING: This might break your compilation.<br />
* rsound<br />
<br />
==Raspberry Pi==<br />
There is a tutorial on how to bypass X11 and use KMS, thus reducing overhead.<br />
<br />
https://www.raspberrypi.org/forums/viewtopic.php?f=78&t=56070<br />
<br />
The above might work on regular desktop Linux, too.<br />
<br />
Even so, if you plan on turning your Raspberry Pi into a "RetroArch machine", the easiest way is installing the [http://blog.petrockblock.com/retropie/retropie-downloads/ RetroPie image]. (You can also run [http://blog.petrockblock.com/2012/07/22/retropie-setup-an-initialization-script-for-retroarch-on-the-raspberry-pi/ its script].)<br />
<br />
[[Category:FAQs]]<br />
[[Category:RetroArch]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Building_RetroArch&diff=10126Building RetroArch2016-02-02T03:01:41Z<p>Monroe88: </p>
<hr />
<div>This page contains instructions of building [[RetroArch]] from source. Most average users should use prebuilt binaries instead.<br />
<br />
=Building on Windows=<br />
The recommended toolchain for building RetroArch on Windows is MinGW-w64 running inside the MSYS2 environment. Installers for MSYS2 can be found at [https://msys2.github.io/ msys2.github.io]. Other toolchains like TDM-GCC or Visual Studio can work, but this guide will only cover MSYS2.<br />
<br />
==Preparing the environment==<br />
<br />
Once you have installed MSYS2, you will need to update it and install the toolchain packages.<br />
<br />
===Updating MSYS2===<br />
<br />
First, start the MSYS2 Shell entry that should be present in your Start Menu.<br />
<br />
Updating your install is a multiple step operation: first you update the core, then you have to rehash the environment and finally you'll be able to properly update the rest of the system. Once you are in the MSYS2 Shell terminal, run the following commands to upgrade the core MSYS2 packages:<br />
<br />
pacman --noconfirm -Sy<br />
pacman --needed --noconfirm -S bash pacman pacman-mirrors msys2-runtime<br />
<br />
When the command is done working, close all MSYS2 shells you might have open and run these commands in the Run as dialog or in <code>cmd.exe</code>:<br />
<br />
*In a 64bit install of MSYS2:<br />
<br />
%systemdrive%\msys64\autorebase.bat<br />
<br />
*In a 32bit install of MSYS2:<br />
<br />
%systemdrive%\msys32\autorebase.bat<br />
<br />
Once the window closes, open the MSYS2 Shell again and type <code>pacman --noconfirm -Su</code> then repeat the previous operation to finish the process.<br />
Note: If you get fork errors, the second step may have failed. You should go to your msys2 install directory and run <code>autorebase.bat</code> manually. If that didn't solve the problem consider reinstalling msys2.<br />
<br />
===Installing the build time dependencies===<br />
<br />
TODO: find another way to install nvidia-cg-toolkit packages.<br />
<br />
The following commands will install everything you need to build RetroArch in your MSYS2 environment.<br />
<br />
*For 32 bit builds run:<br />
<br />
pacman -S --noconfirm --needed git make mingw-w64-i686-toolchain mingw-w64-i686-pkgconf mingw-w64-i686-nvidia-cg-toolkit mingw-w64-i686-SDL2 mingw-w64-i686-libxml2 mingw-w64-i686-freetype mingw-w64-i686<br />
python3 mingw-w64-i686-ffmpeg<br />
<br />
*For 64 bit builds:<br />
<br />
pacman -S --noconfirm --needed git make mingw-w64-x86_64-toolchain mingw-w64-x86_64-pkgconf mingw-w64-x86_64-nvidia-cg-toolkit mingw-w64-x86_64-SDL2 mingw-w64-x86_64-libxml2 mingw-w64-x86_64-freetype <br />
mingw-w64-x86_64-python3 mingw-w64-x86_64-ffmpeg<br />
<br />
After installing the packages, close the MSYS2 shell and open either MinGW-w64 Win64 Shell for 64 bit builds or MinGW-w64 Win32 Shell if you want to build for 32 bit systems. Both should be available in your Start Menu.<br />
<br />
==Cloning RetroArch and libretro repositories==<br />
<br />
Once you are running the MSY2 MinGW-w64 Shell, then you will need to clone the RetroArch and libretro Git repositories.<br />
<br />
git clone https://github.com/libretro/libretro-super.git<br />
cd libretro-super<br />
./libretro-fetch.sh<br />
<br />
This will fetch every repository in the libretro organization on Github into <code>%MSYS2%/home/%USERNAME%/</code> . Since there are a lot of repositories to download, this will take a while to complete. You can use <code>libretro-fetch.sh</code> again to update all repositories, and you can fetch repositories individually by specifying their name e.g. <code>./libretro-fetch.sh mednafen_psx</code><br />
<br />
If you change a file in one of the cloned repositories and git won't let you update, do:<br />
<br />
git reset --hard<br />
git pull<br />
<br />
It should update after that. If not, delete the whole repository and run <code>libretro-fetch.sh</code> again.<br />
<br />
To change directories/folders do:<br />
<br />
cd folder<br />
or<br />
cd folder/subfolder<br />
<br />
etc.<br />
<br />
To go up one directory:<br />
<br />
cd ..<br />
<br />
Other basic UNIX shell commands like "ls" can be useful as well.<br />
<br />
==Building RetroArch==<br />
<br />
Then execute these commands from the Git Bash shell:<br />
<br />
cd libretro-super<br />
cd retroarch<br />
git pull<br />
./configure<br />
make clean<br />
make -j4<br />
<br />
You should see a list of files being compiled, ending with <code>LD retroarch</code>. You can then copy the newly compiled <code>retroarch.exe</code> from <code>libretro-super\retroarch</code> to wherever you keep your RetroArch installation.<br />
<br />
If you are experiencing a missing DLL error, you can fetch all MSYS2 installed DLLs by executing this line:<br />
<br />
for i in $(seq 3); do for bin in $(ldd *exe *dll | grep -i mingw | cut -d\ -f 3); do cp -vu "$bin" . ; done; done<br />
<br />
Video filters and Audio DSP filters are compiled by going into gfx/filters and audio/filters, respectively, and running make on the Makefile. For example<br />
<br />
cd retroarch<br />
cd gfx/filters<br />
make clean<br />
make<br />
<br />
After they build, you can copy the filters to your RetroArch installation.<br />
<br />
<br />
==Building libretro cores==<br />
<br />
After running the fetch script, you should have a folder for each libretro core in your libretro-super folder.<br />
<br />
You can use <code>libretro-build.sh</code> to build all cores at once:<br />
<br />
cd libretro-super<br />
./libretro-build.sh<br />
<br />
This will attempt to build almost every core available. This can take quite a while to complete, so you may wish to build cores individually:<br />
<br />
cd libretro-super<br />
./libretro-build.sh mednafen_psx<br />
<br />
The exact names for fetching or building individual cores can be found in the [https://github.com/libretro/libretro-super/blob/master/rules.d/core-rules.sh /rules.d/core-rules.sh] script.<br />
<br />
Cores that build successfully are put in <code>/dist/win</code> or <code>/dist/win_x64</code> in your libretro-super folder. Be sure to run <code>libretro-fetch.sh</code> to update your local Git clones before building.<br />
<br />
==Building cores manually==<br />
<br />
If you wish, you can build cores manually if you want more control over the build process, though it's not recommended for inexperienced users. For most cores, all you need to do is do:<br />
<br />
git pull<br />
make -f Makefile.libretro clean<br />
make -f Makefile.libretro -j4<br />
<br />
If there isn't a Makefile or Makefile.libretro in the top level, try to find a "libretro" folder within the repository and there should be a Makefile in there. After the core is built, it will be in the same folder as the Makefile used to compile it. <br />
<br />
The following need only <code>make</code>:<br />
* 4do-libretro<br />
* any 'beetle' source<br />
* Dinothawr<br />
* dolphin (inside <code>/libretro</code>)<br />
* libretro-cap32<br />
* libretro-lutro<br />
* libretro-o2em<br />
* libretro-ppsspp (inside <code>/libretro</code>)<br />
* libretro-uae<br />
* mednfen-psx-libretro<br />
* nestopia (inside <code>/libretro</code>)<br />
* prosystem-libretro<br />
* stella<br />
* yabause (inside <code>/libretro</code>)<br />
<br />
The following need <code>make -f Makefile.libretro</code>:<br />
* blueMSX-libretro<br />
* desmume (inside <code>/desmume</code>)<br />
* fuse-libretro<br />
* gambatte-libretro (inside <code>/libgambatte</code>)<br />
* Genesis-Plus-GX<br />
* gw-libretro<br />
* Hatari (You may need to run <code>./configure</code>)<br />
* mgba<br />
* picodrive<br />
* snes9x-next<br />
* vba-next<br />
<br />
The following cores also require the running of <code>git submodule update --init</code>:<br />
<br />
* dolphin<br />
* libretro-ppsspp<br />
* picodrive<br />
<br />
Some cores need special commands for building:<br />
<br />
===bsnes===<br />
<br />
cd libretro-bsnes_%PROFILE%<br />
make profile='%PROFILE%' clean<br />
make profile='%PROFILE%' -j4<br />
<br />
Replace %PROFILE% with accuracy, balanced, or performance.<br />
<br />
===MAME===<br />
If doing a 64-bit build.<br />
<br />
cd libretro-mame<br />
make -f Makefile.libretro PTR64=1 clean<br />
make -f Makefile.libretro PTR64=1 -j4<br />
<br />
This core will take a while to build, depending on how fast your CPU is, how many jobs you specify, and how many cores your CPU has. You can save some time updating the core by adding PARTIAL=1 when doing a clean. You can specify a subtarget by adding e.g. <code>SUBTARGET=arcade</code> or <code>SUBTARGET=tiny</code> in the current version of MAME.<br />
<br />
=Building on Linux=<br />
Building on Linux is similar to building on Windows.<br />
<br />
After entering the RetroArch folder, do:<br />
<br />
./configure<br />
<br />
...and install any necessary dependencies before running ./configure again. Then, do:<br />
<br />
make<br />
<br />
<br />
NOTE: Compilation may fail if you do not have the following installed:<br />
<br />
* g++<br />
* libgl1-mesa-dev<br />
* libsdl2-dev<br />
* mesa-common-dev<br />
* pkg-config<br />
<br />
Also, you may need one of the following if RetroArch is to run audio:<br />
<br />
* alsa (libsdl2-dev)<br />
* libpulse (libpulse-dev)<br />
* lossaudo<br />
* lopenal (libopenal-dev)<br />
* jack<br />
* libroar (libroar-dev) WARNING: This might break your compilation.<br />
* rsound<br />
<br />
==Raspberry Pi==<br />
There is a tutorial on how to bypass X11 and use KMS, thus reducing overhead.<br />
<br />
https://www.raspberrypi.org/forums/viewtopic.php?f=78&t=56070<br />
<br />
The above might work on regular desktop Linux, too.<br />
<br />
Even so, if you plan on turning your Raspberry Pi into a "RetroArch machine", the easiest way is installing the [http://blog.petrockblock.com/retropie/retropie-downloads/ RetroPie image]. (You can also run [http://blog.petrockblock.com/2012/07/22/retropie-setup-an-initialization-script-for-retroarch-on-the-raspberry-pi/ its script].)<br />
<br />
[[Category:FAQs]]<br />
[[Category:RetroArch]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Building_RetroArch&diff=10125Building RetroArch2016-02-02T02:57:28Z<p>Monroe88: Rewrite this page</p>
<hr />
<div>This page contains instructions of building [[RetroArch]] from source. Most average users should use prebuilt binaries instead.<br />
<br />
=Building on Windows=<br />
The recommended toolchain for building RetroArch on Windows is MinGW-w64 running inside the MSYS2 environment. Installers for MSYS2 can be found at [https://msys2.github.io/ msys2.github.io]. Other toolchains like TDM-GCC or Visual Studio can work, but this guide will only cover MSYS2.<br />
<br />
==Preparing the environment==<br />
<br />
Once you have installed MSYS2, you will need to update it and install the toolchain packages.<br />
<br />
===Updating MSYS2===<br />
<br />
First, start the MSYS2 Shell entry that should be present in your Start Menu.<br />
<br />
Updating your install is a multiple step operation: first you update the core, then you have to rehash the environment and finally you'll be able to properly update the rest of the system. Once you are in the MSYS2 Shell terminal, run the following commands to upgrade the core MSYS2 packages:<br />
<br />
pacman --noconfirm -Sy<br />
pacman --needed --noconfirm -S bash pacman pacman-mirrors msys2-runtime<br />
<br />
When the command is done working, close all MSYS2 shells you might have open and run these commands in the Run as dialog or in <code>cmd.exe</code>:<br />
<br />
*In a 64bit install of MSYS2:<br />
<br />
%systemdrive%\msys64\autorebase.bat<br />
<br />
*In a 32bit install of MSYS2:<br />
<br />
%systemdrive%\msys32\autorebase.bat<br />
<br />
Once the window closes, open the MSYS2 Shell again and type pacman --noconfirm -Su then repeat the previous operation to finish the process.<br />
Note: If you get fork errors, the second step may have failed. You should go to your msys2 install directory and run autorebase.bat manually. If that didn't solve the problem consider reinstalling msys2.<br />
<br />
===Installing the build time dependencies===<br />
<br />
TODO: find another way to install nvidia-cg-toolkit packages.<br />
<br />
The following commands will install everything you need to build RetroArch in your MSYS2 environment.<br />
<br />
*For 32 bit builds run:<br />
<br />
pacman -S --noconfirm --needed git make mingw-w64-i686-toolchain mingw-w64-i686-pkgconf mingw-w64-i686-nvidia-cg-toolkit mingw-w64-i686-SDL2 mingw-w64-i686-libxml2 mingw-w64-i686-freetype mingw-w64-i686<br />
python3 mingw-w64-i686-ffmpeg<br />
<br />
*For 64 bit builds:<br />
<br />
pacman -S --noconfirm --needed git make mingw-w64-x86_64-toolchain mingw-w64-x86_64-pkgconf mingw-w64-x86_64-nvidia-cg-toolkit mingw-w64-x86_64-SDL2 mingw-w64-x86_64-libxml2 mingw-w64-x86_64-freetype <br />
mingw-w64-x86_64-python3 mingw-w64-x86_64-ffmpeg<br />
<br />
After installing the packages, close the MSYS2 shell and open either MinGW-w64 Win64 Shell for 64 bit builds or MinGW-w64 Win32 Shell if you want to build for 32 bit systems. Both should be available in your Start Menu.<br />
<br />
==Cloning RetroArch and libretro repositories==<br />
<br />
Once you are running the MSY2 MinGW-w64 Shell, then you will need to clone the RetroArch and libretro Git repositories.<br />
<br />
git clone https://github.com/libretro/libretro-super.git<br />
cd libretro-super<br />
./libretro-fetch.sh<br />
<br />
This will fetch every repository in the libretro organization on Github into <code>%MSYS2%/home/%USERNAME%/</code> . Since there are a lot of repositories to download, this will take a while to complete. You can use <code>libretro-fetch.sh</code> again to update all repositories, and you can fetch repositories individually by specifying their name e.g. <code>./libretro-fetch.sh mednafen_psx</code><br />
<br />
If you change a file in one of the cloned repositories and git won't let you update, do:<br />
<br />
git reset --hard<br />
git pull<br />
<br />
It should update after that. If not, delete the whole repository and run <code>libretro-fetch.sh</code> again.<br />
<br />
To change directories/folders do:<br />
<br />
cd folder<br />
or<br />
cd folder/subfolder<br />
<br />
etc.<br />
<br />
To go up one directory:<br />
<br />
cd ..<br />
<br />
Other basic UNIX shell commands like "ls" can be useful as well.<br />
<br />
==Building RetroArch==<br />
<br />
Then execute these commands from the Git Bash shell:<br />
<br />
cd libretro-super<br />
cd retroarch<br />
git pull<br />
./configure<br />
make clean<br />
make -j4<br />
<br />
You should see a list of files being compiled, ending with <code>LD retroarch</code>. You can then copy the newly compiled <code>retroarch.exe</code> from <code>libretro-super\retroarch</code> to wherever you keep your RetroArch installation.<br />
<br />
If needed, you can fetch all MSYS2 installed DLLs, if you are experiencing a missing DLL error, by executing this line:<br />
<br />
for i in $(seq 3); do for bin in $(ldd *exe *dll | grep -i mingw | cut -d\ -f 3); do cp -vu "$bin" . ; done; done<br />
<br />
Video filters and Audio DSP filters are compiled by going into gfx/filters and audio/filters, respectively, and running make on the Makefile. For example<br />
<br />
cd retroarch<br />
cd gfx/filters<br />
make clean<br />
make<br />
<br />
After they build, you can copy the filters to your RetroArch installation.<br />
<br />
<br />
==Building libretro cores==<br />
<br />
After running the fetch script, you should have a folder for each libretro core in your libretro-super folder.<br />
<br />
You can use <code>libretro-build.sh</code> to build all cores at once:<br />
<br />
cd libretro-super<br />
./libretro-build.sh<br />
<br />
This will attempt to build almost every core available. This can take quite a while to complete, so you may wish to build cores individually:<br />
<br />
cd libretro-super<br />
./libretro-build.sh mednafen_psx<br />
<br />
The exact names for fetching or building individual cores can be found in the [https://github.com/libretro/libretro-super/blob/master/rules.d/core-rules.sh /rules.d/core-rules.sh] script.<br />
<br />
Cores that build successfully are put in <code>/dist/win</code> or <code>/dist/win_x64</code> in your libretro-super folder. Be sure to run <code>libretro-fetch.sh</code> to update your local Git clones before building.<br />
<br />
==Building cores manually==<br />
<br />
If you wish, you can build cores manually if you want more control over the build process, though it's not recommended for inexperienced users. For most cores, all you need to do is do:<br />
<br />
git pull<br />
make -f Makefile.libretro clean<br />
make -f Makefile.libretro -j4<br />
<br />
If there isn't a Makefile or Makefile.libretro in the top level, try to find a "libretro" folder within the repository and there should be a Makefile in there. After the core is built, it will be in the same folder as the Makefile used to compile it. <br />
<br />
The following need only <code>make</code>:<br />
* 4do-libretro<br />
* any 'beetle' source<br />
* Dinothawr<br />
* dolphin (inside <code>/libretro</code>)<br />
* libretro-cap32<br />
* libretro-lutro<br />
* libretro-o2em<br />
* libretro-ppsspp (inside <code>/libretro</code>)<br />
* libretro-uae<br />
* mednfen-psx-libretro<br />
* nestopia (inside <code>/libretro</code>)<br />
* prosystem-libretro<br />
* stella<br />
* yabause (inside <code>/libretro</code>)<br />
<br />
The following need <code>make -f Makefile.libretro</code>:<br />
* blueMSX-libretro<br />
* desmume (inside <code>/desmume</code>)<br />
* fuse-libretro<br />
* gambatte-libretro (inside <code>/libgambatte</code>)<br />
* Genesis-Plus-GX<br />
* gw-libretro<br />
* Hatari (You may need to run <code>./configure</code>)<br />
* mgba<br />
* picodrive<br />
* snes9x-next<br />
* vba-next<br />
<br />
The following cores also require the running of <code>git submodule update --init</code>:<br />
<br />
* dolphin<br />
* libretro-ppsspp<br />
* picodrive<br />
<br />
Some cores need special commands for building:<br />
<br />
===bsnes===<br />
<br />
cd libretro-bsnes_%PROFILE%<br />
make profile='%PROFILE%' clean<br />
make profile='%PROFILE%' -j4<br />
<br />
Replace %PROFILE% with accuracy, balanced, or performance.<br />
<br />
===MAME===<br />
If doing a 64-bit build.<br />
<br />
cd libretro-mame<br />
make -f Makefile.libretro PTR64=1 clean<br />
make -f Makefile.libretro PTR64=1 -j4<br />
<br />
This core will take a while to build, depending on how fast your CPU is, how many jobs you specify, and how many cores your CPU has. You can save some time updating the core by adding PARTIAL=1 when doing a clean. You can specify a subtarget by adding e.g. <code>SUBTARGET=arcade</code> or <code>SUBTARGET=tiny</code> in the current version of MAME.<br />
<br />
=Building on Linux=<br />
Building on Linux is similar to building on Windows.<br />
<br />
After entering the RetroArch folder, do:<br />
<br />
./configure<br />
<br />
...and install any necessary dependencies before running ./configure again. Then, do:<br />
<br />
make<br />
<br />
<br />
NOTE: Compilation may fail if you do not have the following installed:<br />
<br />
* g++<br />
* libgl1-mesa-dev<br />
* libsdl2-dev<br />
* mesa-common-dev<br />
* pkg-config<br />
<br />
Also, you may need one of the following if RetroArch is to run audio:<br />
<br />
* alsa (libsdl2-dev)<br />
* libpulse (libpulse-dev)<br />
* lossaudo<br />
* lopenal (libopenal-dev)<br />
* jack<br />
* libroar (libroar-dev) WARNING: This might break your compilation.<br />
* rsound<br />
<br />
==Raspberry Pi==<br />
There is a tutorial on how to bypass X11 and use KMS, thus reducing overhead.<br />
<br />
https://www.raspberrypi.org/forums/viewtopic.php?f=78&t=56070<br />
<br />
The above might work on regular desktop Linux, too.<br />
<br />
Even so, if you plan on turning your Raspberry Pi into a "RetroArch machine", the easiest way is installing the [http://blog.petrockblock.com/retropie/retropie-downloads/ RetroPie image]. (You can also run [http://blog.petrockblock.com/2012/07/22/retropie-setup-an-initialization-script-for-retroarch-on-the-raspberry-pi/ its script].)<br />
<br />
[[Category:FAQs]]<br />
[[Category:RetroArch]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Template:RetroArchVer&diff=10050Template:RetroArchVer2016-01-18T19:08:39Z<p>Monroe88: http://www.libretro.com/index.php/retroarch-1-3-released/</p>
<hr />
<div>1.3.0</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Displays&diff=10049Displays2016-01-17T23:27:07Z<p>Monroe88: </p>
<hr />
<div>There are several displays you can use for emulation. Some are better than others at displaying older standard definition games.<br />
<br />
==CRT TVs==<br />
'''CRT''' (or '''cathode ray tube''') TVs are the old kinds of TVs that older consoles were designed to output to. They typically accepted signals with a 15.7kHz scan rate under NTSC or PAL standards. They are usually preferred for gaming because of its better motion, response times, and lower input lag compared to LCD TVs. CRT TVs have scanlines which help reduce the pixelation of older games.<br />
<br />
[[File:Slot mask vs aperture grille.jpeg|thumb|350px|right|Shadow (slot) mask vs aperture grille]]<br />
<br />
They come in several forms:<br />
*Shadow Mask - Most common variety of CRT TV, many variations in size and picture quality. Comes in two forms: Slot mask (shown here), and dot mask. Slot mask is more common for TVs, and dot mask for monitors.<br />
*Aperture Grille - Sony's patented CRT design used in their Trinitron displays, some sets were of higher quality than most standard shadow mask TVs.<br />
*HD CRTs - 1080i/720p displays, usually upscaled SDTV content to 480p internally, some displayed at 100Hz to reduce flicker<br />
<br />
====Features====<br />
<br />
*Can display a wide range of resolutions up to 480i on SDTVs and 1080i on HDTVs<br />
**May actually force and scale to a resolution non-native to the input. HDTVs that scale EVERYTHING to 1080i aren't rare. That defeats the purpose of avoiding scaling (no input lag, native resolution, etc.), but you still get the other benefits (minus the "no input delay").<br />
<br />
*No [https://en.wikipedia.org/wiki/Input_lag input delay]<br />
<br />
*Very fast [https://en.wikipedia.org/wiki/Response_time_%28technology%29 response times]. Often referred to as phosphor delay.<br />
<br />
*True black levels<br />
<br />
*Wide viewing angles<br />
<br />
*4:3 Aspect ratio (with a few exceptions)<br />
<br />
====How to connect to a CRT TV====<br />
<br />
*Wii would be the easiest method. Can output to 240p.<br />
<br />
*VGA to Composite/S-Video converter box. These are cheap but only output 480i and may introduce latency, and may have poor picture quality compared to the actual console's Composite/S-Video output.<br />
<br />
*Driver modifications like [http://wiki.arcadecontrols.com/wiki/Soft-15khz Soft15khz] and [[GroovyMAME|CRT_Emudriver]] can allow your video card to output real 15kHz RGB through the VGA/DVI port. May need to buy or create your own specialized cables depending on the CRT you use. For CRT's that don't have RGB inputs, you can use a VGA/RGB to YPbPr transcoder (such as the [http://www.curtpalme.com/TC1500.shtm Crescendo TC1500]) to change the signal type to YPbPr component video without any scaling or latency, but they are very hard to find, especially on the cheap.<br />
<br />
*An alternative to the above is to get a SCART to Component transcoder such as a CSY-2100 clone like [http://www.ebay.com/itm/NEW-SCART-RGB-to-YUV-Component-Video-Converter-Scaler-/221156873851?hash=item337dfa167b this one] and make a VGA to SCART adapter using [http://www.nexusuk.org/projects/vga2scart/circuit this schematic,] making sure to bridge pins 5 and 11 on the VGA side. The clones usually need color adjustment, so pull up two NTSC test images (one on a color-calibrated display, and one on the TV), open up the transcoder, and twist the knobs with a screwdriver until you get the picture you desire. You will be able to output a 240p image with this method. Use [http://geocities.ws/podernixie/htpc/modes-en.html these modelines] for the console that you are going to emulate, or use lrmc to generate new ones. These modelines are RandR modelines, so if you are using Windows, use WinModelines to apply them. If using GNU/Linux or *BSD, use xrandr. If you are using GNU/Linux, make sure you use the open source graphics drivers, and not the proprietary ones, Intel iGPUs will not work below 31KHz. There is no need for any driver modifications like there is on Windows.<br />
<br />
*If using a PAL TV with RGB SCART (make sure it supports RGB and not just composite through SCART), use [http://www.nexusuk.org/projects/vga2scart/circuit this schematic] to build a VGA to SCART converter, and that is all you need to do. Keep in mind that this schematic does not apply to Japanese RGB JP-21. Use the appropriate pinout for JP-21 instead in that case, available [http://www.gamesx.com/wiki/doku.php?id=av:scart2rgb here]. It will work just the same.<br />
<br />
*Most CRT HDTVs have either DVI or HDMI ports which can accept as low as 31kHz (480p at 60Hz) from a PC. They do not support 120Hz to force 240p resolutions while doing this.<br />
<br />
====Recommended CRT TV Models====<br />
Sony's PVM/BVM series and NEC's XM/XP series are considered god-tier. If you cannot find those specific models, look for presentation monitors, professional monitors, or broadcast monitors from any brand. If you search for "video monitor" on craigslist, you may have luck finding one. Sony [https://en.wikipedia.org/wiki/Trinitron Trinitrons] are pretty easy to find, and they're on the high-end of consumer grade CRTs. Sharp, Toshiba, and Phillips higher-end CRTs are pretty close in quality, so don't be afraid to pick one of those up. Test before you buy. Also, check the back and see what ports it has. If you're in North America, coax and composite (red white yellow) are the most common, but you'll get the best picture quality running your system through component (green blue red red white) ports. If component is not available, look for [https://en.wikipedia.org/wiki/S-video S-video] instead. It will look slightly worse than component, but since it is on a CRT, the picture still looks good.<br />
<br />
If you are in a PAL region or Japan, look for a TV with RGB SCART or RGB JP-21 (same connector, but different signals). Note that just because a CRT has a SCART/JP-21 port, it doesn't mean that it supports RGB. It could just be composite through a different connector. If you are in Japan, you can also look for D-Terminal on the back, which uses YPbPr instead of RGB (similar to component in other NTSC regions). Just make sure to avoid "100Hz," wide screen, "high dot pitch," or "HD CRTs," as they tend to scale or distort the image in some way like modern HDTVs, with a few exceptions. This also applies to NTSC regions (minus "100Hz"). This does not apply to video monitors, as mentioned in the paragraph above.<br />
<br />
You could also look for a 15KHz-compatible PC monitor (see below) or an arcade monitor, although you may have to adapt the input to work with it.<br />
<br />
====External Links====<br />
*[http://pastebin.com/1Ri5TS3x /vr/ CRT pastebin (WIP)]<br />
<br />
==CRT Monitors==<br />
'''CRT monitors''' are CRT displays that are intended to be used from a PC, typically being driven by a RGBHV signal with a 31kHz or higher scan rate through a 15-pin VGA cable.<br />
<br />
[[File:Slot_mask_vs_Dot_mask.jpeg|thumb|350px|right|21" Slot mask CRT TV vs 17" Dot mask CRT monitor]]<br />
[[File:CRT_resolutions.jpg|thumb|250px|right|Comparison of resolutions on a common CRT monitor. From left to right: 240p - 480p - 960p]]<br />
<br />
====Features====<br />
<br />
*All the benefits of a CRT TV besides native inputs for actual hardware and native resolutions in most cases.<br />
<br />
*Generally 31kHz (480p at 60Hz) horizontal frequency at minimum, unless the monitor is tri-sync (15kHz, 25kHz, 31kHz).<br />
**You can force 240p resolutions with 120Hz refresh rates. You can then use black frame insertion to get the effective refresh rate back down to 60hz.<br />
**There are also hacks, both software and hardware, to allow 15kHz output. But the monitor must also support it, and most of them aren't written for modern OSs. Careful there.<br />
<br />
*Larger resolutions available, often massive<br />
**Horizontal resolution is only limited by video bandwidth, so you can set it really high and scale output to fit, and the CRT will display it 4:3. This is useful for 240p modes where you can avoid having to have different custom resolutions for each game and not have any visible scaling issues due to individual horizontal pixels being smaller than your monitor's dot pitch.<br />
<br />
*Large range of vertical refresh rates supported, often 50Hz to 160Hz. It's possible to display arcade games like R-Type and others with unusual refresh rates almost exactly the same as the real cabinet did, with perfect smooth scrolling. V-sync is still needed due to dot clock granularity and the fact the emulator frames needs to be synchronized to the CRT's vertical retrace, otherwise you will get some minor static tearing. <br />
**Keep in mind your vertical refresh rate and vertical resolution must stay within your monitor's horizontal frequency limits, e.g. if your monitor's limits are 31kHz to 70kHz and you are trying to set a display mode for PAL games, you will find that 480p at 50Hz is not possible as that is 25kHz, you will need to increase the vertical resolution to around 576p to make it 31kHz.<br />
<br />
*Easy to connect to a computer<br />
<br />
*Rarely larger than 19" or 21"<br />
<br />
*4:3 Aspect ratio (with a few exceptions, notably the FW900)<br />
<br />
[[File:Integer_scaling.png|thumb|250px|right]]<br />
<br />
====240p/480i====<br />
<br />
[[File:CRU.png|thumb|250px|right|Custom Resolution Utility timings]]<br />
<br />
Given the many advantages that CRT monitors possess, they make ideal displays for emulation, particularly for 5th-gen games and below. However, to get the most out of them, some extra steps may be necessary. For instance, some games used interlaced modes, which without a shader results in ugly deinterlacing artifacts. Also, even at 480p, games that ran at 240p and below look blocky and pixellated, not to mention correcting the aspect ratio for games using non-square pixels results in scaling artifacts, just as on an LCD. The scaling issues can be dealt with using a superwide 240p resolution, but that requires using 120hz with black frame insertion, and games that use 480i get downsampled to 240p, making it a less than ideal solution in those cases, although it does have lower latency due lower frame times between vsync.<br />
<br />
To correctly display games that need both 240p and 480i resolutions, the solution lies in creating a custom superwide 3840x480 modeline, combining it with a shader that scanlines 240p content and interlaces 480i content, and using both through [[RetroArch]], essentially turning your monitor into an extremely sharp CRT TV. On Nvidia cards, the custom modeline can easily be set within your graphics card's drivers. On AMD, it requires the use of third-party software, such as [http://www.monitortests.com/cru-1.1.2.zip Custom Resolution Utility]. Simply add a detailed resolution with the exact settings shown on the picture, restart your computer, and the monitor should now be able to make use of the new modeline. As for the shader, hunterk's [https://github.com/libretro/common-shaders/blob/master/misc/interlacing.cg interlacing.cg] gives you black lines that will oscillate when given an image with 400 or higher vertical resolution, emulating the behavior of 15kHz displays. There are also some [https://github.com/libretro/common-shaders/tree/master/cgp/tvout%2Binterlacing shader presets] that combine the interlacing shader with tvout-tweaks and image-adjustment for accurate RGB signal emulation and color controls, and also some that utilize Themaister's NTSC shader for composite/s-video emulation.<br />
<br />
Once you have the new modeline set and have the shader in hand, open your RetroArch configuration file of choice, set the fullscreen resolution to 3840x480, aspect ratio to 8, and windowed fullscreen to false. Adjust your monitor's image as necessary. It may be necessary to raise your monitor's brightness somewhat, or increase color intensity to deal with the loss of brightness from having pure black scanlines. Some monitors, such as the NEC/Mitsubishi SuperBright series, have settings that increase the monitor's brightness without compromising black level or color temperature significantly.<br />
<br />
A template for creating a resolution config file in RetroArch can be found [https://gist.github.com/Monroe88/dbd3e01252afa5c50690 here] (for creating per-game/per-core overrides, use [https://gist.github.com/Monroe88/87f86d427d6319a3eb15 this]) . Setting up separate configs per display mode in the <code>/config</code> directory allows you to use RetroArch's config loader to change display modes from within the menu or you can launch with shortcut by setting the target to <code>retroarch.exe --config .\config\480p.cfg --menu</code><br />
<br />
In GNU/Linux or *BSD, you would use gtf and xrandr to use custom resolutions. [https://wiki.archlinux.org/index.php/Xrandr#Adding_undetected_resolutions See here].<br />
<br />
====Recommended CRT Monitors====<br />
Please add to this list if you have a specific model CRT monitor that you recommend for using with emulation.<br />
<br />
*'''[http://www.cnet.com/products/monitor-dell-e771p-17-16-vis-grey-crt-monitor/specs/ Dell E771p]''' - Very common CRT monitor. Able to boost color level intensity, allowing 240p with black frame insertion or 480p with inserted scanlines to have vibrant colors despite 50% brightness. Capable of up to 1400x1050 @60Hz with custom resolutions, but disallows 1440x1080 for some reason despite being able to display other 1080p resolutions at 60Hz.<br />
<br />
==LCD Monitors==<br />
All LCD monitors have a native resolution which all output must scale to, unlike CRTs.<br />
<br />
120hz displays with hacks can display motion at the same level as a CRT through backlight strobing. See: [http://www.blurbusters.com/ Blurbusters] and [http://www.techngaming.com/home/guide/tips/updated-eliminate-motion-blur-while-gaming-with-nvidia-lightboost-r485 Dead link, please replace]<br />
<br />
There is extreme variance between panels in each section. The best of one is most likely going to be better than the worst of another.<br />
<br />
Always value input lag on a per panel basis. Do research. [http://www.tftcentral.co.uk TFTcentral] has done tests on many monitors and is a good source of general information.<br />
<br />
====TN panels====<br />
*Fast [https://en.wikipedia.org/wiki/Response_time_%28technology%29 response times]<br />
<br />
*Cheap prices<br />
<br />
*Most common for high refresh rate displays, such as 120Hz and 144Hz.<br />
<br />
*Viewing angles WILL distort colors. Washing them out, inverting them, etc.<br />
<br />
====IPS panels====<br />
*Vivid colors<br />
<br />
*Good viewing angles<br />
**Though IPS glow will be far more visible and troublesome the farther you get from straight on<br />
<br />
*Fairly long [https://en.wikipedia.org/wiki/Response_time_%28technology%29 response times] (will differ between panels)<br />
**This causes motion blur, ghosting, and delay.<br />
<br />
*Some monitors can be 'overclocked' to run at higher refresh rates. Such as the [http://www.tftcentral.co.uk/reviews/qnix_qx2710.htm Qnix QX2710], which can run at 120Hz<br />
**But most cannot resolve every frame of such refresh rates due to [https://en.wikipedia.org/wiki/Response_time_%28technology%29 response times]<br />
<br />
*IPS glow. A form of backlight bleed that varies with viewing angle. Affects dark areas. Generally makes IPS panels have terrible black levels.<br />
<br />
====VA panels====<br />
*Good black levels. Some rivalling CRTs, once properly configured.<br />
<br />
*High contrast levels<br />
<br />
*Vivid colors<br />
<br />
*Mostly good viewing angles. Color shift varies by panel. But nothing as severe as TN.<br />
**Some panels may have an issue called 'black crush' which darkens the panel when viewed straightforward.<br />
<br />
*Generally mid range [https://en.wikipedia.org/wiki/Response_time_%28technology%29 response times] (will differ between panels).<br />
<br />
*At least one officially supported, out of the box, 120Hz panel, the [http://www.tftcentral.co.uk/reviews/eizo_fg2421.htm Eizo Foris FG2412]. No 'overclocking' necessary.<br />
<br />
==Upscalers==<br />
http://scanlines.hazard-city.de/<br />
<br />
==External Links==<br />
*[http://retrorgb.com RetroRGB] - Provides lots of info on displays<br><br />
*[http://junkerhq.net/xrgb/index.php/240p_test_suite 240p test suite] - Test suite for properly configuring 240p. Designed mostly for CRTs, but will work with any monitor that supports 240p. Available as a homebrew program for several consoles.<br />
<br />
[[Category:FAQs]]<br />
[[Category:Recommendations]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=Displays&diff=10048Displays2016-01-17T23:26:36Z<p>Monroe88: Remove "work in progress" line, that is a given on all wiki pages</p>
<hr />
<div>There are several displays you can use for emulation. Some are better than others at displaying older standard definition games.<br />
<br />
==CRT TVs==<br />
'''CRT''' (or '''cathode ray tube''') TVs are the old kinds of TVs that older consoles were designed to output to. They typically accepted signals with a 15.7kHz scan rate under NTSC or PAL standards. They are usually preferred for gaming because of its better motion, response times, and lower input lag compared to LCD TVs. CRT TVs have scanlines which help reduce the pixelation of older games.<br />
<br />
[[File:Slot mask vs aperture grille.jpeg|thumb|350px|right|Shadow (slot) mask vs aperture grille]]<br />
<br />
They come in several forms:<br />
*Shadow Mask - Most common variety of CRT TV, many variations in size and picture quality. Comes in two forms: Slot mask (shown here), and dot mask. Slot mask is more common for TVs, and dot mask for monitors.<br />
*Aperture Grille - Sony's patented CRT design used in their Trinitron displays, some sets were of higher quality than most standard shadow mask TVs.<br />
*HD CRTs - 1080i/720p displays, usually upscaled SDTV content to 480p internally, some displayed at 100Hz to reduce flicker<br />
<br />
====Features====<br />
<br />
*Can display a wide range of resolutions up to 480i on SDTVs and 1080i on HDTVs<br />
**May actually force and scale to a resolution non-native to the input. HDTVs that scale EVERYTHING to 1080i aren't rare. That defeats the purpose of avoiding scaling (no input lag, native resolution, etc.), but you still get the other benefits (minus the "no input delay").<br />
<br />
*No [https://en.wikipedia.org/wiki/Input_lag input delay]<br />
<br />
*Very fast [https://en.wikipedia.org/wiki/Response_time_%28technology%29 response times]. Often referred to as phosphor delay.<br />
<br />
*True black levels<br />
<br />
*Wide viewing angles<br />
<br />
*4:3 Aspect ratio (with a few exceptions)<br />
<br />
====How to connect to a CRT TV====<br />
<br />
*Wii would be the easiest method. Can output to 240p.<br />
<br />
*VGA to Composite/S-Video converter box. These are cheap but only output 480i and may introduce latency, and may have poor picture quality compared to the actual console's Composite/S-Video output.<br />
<br />
*Driver modifications like [http://wiki.arcadecontrols.com/wiki/Soft-15khz Soft15khz] and [[GroovyMAME|CRT_Emudriver]] can allow your video card to output real 15kHz RGB through the VGA/DVI port. May need to buy or create your own specialized cables depending on the CRT you use. For CRT's that don't have RGB inputs, you can use a VGA/RGB to YPbPr transcoder (such as the [http://www.curtpalme.com/TC1500.shtm Crescendo TC1500]) to change the signal type to YPbPr component video without any scaling or latency, but they are very hard to find, especially on the cheap.<br />
<br />
*An alternative to the above is to get a SCART to Component transcoder such as a CSY-2100 clone like [http://www.ebay.com/itm/NEW-SCART-RGB-to-YUV-Component-Video-Converter-Scaler-/221156873851?hash=item337dfa167b this one] and make a VGA to SCART adapter using [http://www.nexusuk.org/projects/vga2scart/circuit this schematic,] making sure to bridge pins 5 and 11 on the VGA side. The clones usually need color adjustment, so pull up two NTSC test images (one on a color-calibrated display, and one on the TV), open up the transcoder, and twist the knobs with a screwdriver until you get the picture you desire. You will be able to output a 240p image with this method. Use [http://geocities.ws/podernixie/htpc/modes-en.html these modelines] for the console that you are going to emulate, or use lrmc to generate new ones. These modelines are RandR modelines, so if you are using Windows, use WinModelines to apply them. If using GNU/Linux or *BSD, use xrandr. If you are using GNU/Linux, make sure you use the open source graphics drivers, and not the proprietary ones, Intel iGPUs will not work below 31KHz. There is no need for any driver modifications like there is on Windows.<br />
<br />
*If using a PAL TV with RGB SCART (make sure it supports RGB and not just composite through SCART), use [http://www.nexusuk.org/projects/vga2scart/circuit this schematic] to build a VGA to SCART converter, and that is all you need to do. Keep in mind that this schematic does not apply to Japanese RGB JP-21. Use the appropriate pinout for JP-21 instead in that case, available [http://www.gamesx.com/wiki/doku.php?id=av:scart2rgb here]. It will work just the same.<br />
<br />
*Most CRT HDTVs have either DVI or HDMI ports which can accept as low as 31kHz (480p at 60Hz) from a PC. They do not support 120Hz to force 240p resolutions while doing this.<br />
<br />
====Recommended CRT TV Models====<br />
Sony's PVM/BVM series and NEC's XM/XP series are considered god-tier. If you cannot find those specific models, look for presentation monitors, professional monitors, or broadcast monitors from any brand. If you search for "video monitor" on craigslist, you may have luck finding one. Sony [https://en.wikipedia.org/wiki/Trinitron Trinitrons] are pretty easy to find, and they're on the high-end of consumer grade CRTs. Sharp, Toshiba, and Phillips higher-end CRTs are pretty close in quality, so don't be afraid to pick one of those up. Test before you buy. Also, check the back and see what ports it has. If you're in North America, coax and composite (red white yellow) are the most common, but you'll get the best picture quality running your system through component (green blue red red white) ports. If component is not available, look for [https://en.wikipedia.org/wiki/S-video S-video] instead. It will look slightly worse than component, but since it is on a CRT, the picture still looks good.<br />
<br />
If you are in a PAL region or Japan, look for a TV with RGB SCART or RGB JP-21 (same connector, but different signals). Note that just because a CRT has a SCART/JP-21 port, it doesn't mean that it supports RGB. It could just be composite through a different connector. If you are in Japan, you can also look for D-Terminal on the back, which uses YPbPr instead of RGB (similar to component in other NTSC regions). Just make sure to avoid "100Hz," wide screen, "high dot pitch," or "HD CRTs," as they tend to scale or distort the image in some way like modern HDTVs, with a few exceptions. This also applies to NTSC regions (minus "100Hz"). This does not apply to video monitors, as mentioned in the paragraph above.<br />
<br />
You could also look for a 15KHz-compatible PC monitor (see below) or an arcade monitor, although you may have to adapt the input to work with it.<br />
<br />
====External Links====<br />
*[http://pastebin.com/1Ri5TS3x /vr/ CRT pastebin (WIP)]<br />
<br />
==CRT Monitors==<br />
'''CRT monitors''' are CRT displays that are intended to be used from a PC, typically being driven by a RGBHV signal with a 31kHz or higher scan rate through a 15-pin VGA cable.<br />
<br />
[[File:Slot_mask_vs_Dot_mask.jpeg|thumb|350px|right|21" Slot mask CRT TV vs 17" Dot mask CRT monitor]]<br />
[[File:CRT_resolutions.jpg|thumb|250px|right|Comparison of resolutions on a common CRT monitor. From left to right: 240p - 480p - 960p]]<br />
<br />
====Features====<br />
<br />
*All the benefits of a CRT TV besides native inputs for actual hardware and native resolutions in most cases.<br />
<br />
*Generally 31kHz (480p at 60Hz) horizontal frequency at minimum, unless the monitor is tri-sync (15kHz, 25kHz, 31kHz).<br />
**You can force 240p resolutions with 120Hz refresh rates. You can then use black frame insertion to get the effective refresh rate back down to 60hz.<br />
**There are also hacks, both software and hardware, to allow 15kHz output. But the monitor must also support it, and most of them aren't written for modern OSs. Careful there.<br />
<br />
*Larger resolutions available, often massive<br />
**Horizontal resolution is only limited by video bandwidth, so you can set it really high and scale output to fit, and the CRT will display it 4:3. This is useful for 240p modes where you can avoid having to have different custom resolutions for each game and not have any visible scaling issues due to individual horizontal pixels being smaller than your monitor's dot pitch.<br />
<br />
*Large range of vertical refresh rates supported, often 50Hz to 160Hz. It's possible to display arcade games like R-Type and others with unusual refresh rates almost exactly the same as the real cabinet did, with perfect smooth scrolling. V-sync is still needed due to dot clock granularity and the fact the emulator frames needs to be synchronized to the CRT's vertical retrace, otherwise you will get some minor static tearing. <br />
**Keep in mind your vertical refresh rate and vertical resolution must stay within your monitor's horizontal frequency limits, e.g. if your monitor's limits are 31kHz to 70kHz and you are trying to set a display mode for PAL games, you will find that 480p at 50Hz is not possible as that is 25kHz, you will need to increase the vertical resolution to around 576p to make it 31kHz.<br />
<br />
*Easy to connect to a computer<br />
<br />
*Rarely larger than 19" or 21"<br />
<br />
*4:3 Aspect ratio (with a few exceptions, notably the FW900)<br />
<br />
[[File:Integer_scaling.png|thumb|250px|right]]<br />
<br />
====240p/480i====<br />
<br />
[[File:CRU.png|thumb|250px|right|Custom Resolution Utility timings]]<br />
<br />
Given the many advantages that CRT monitors possess, they make ideal displays for emulation, particularly for 5th-gen games and below. However, to get the most out of them, some extra steps may be necessary. For instance, some games used interlaced modes, which without a shader results in ugly deinterlacing artifacts. Also, even at 480p, games that ran at 240p and below look blocky and pixellated, not to mention correcting the aspect ratio for games using non-square pixels results in scaling artifacts, just as on an LCD. The scaling issues can be dealt with using a superwide 240p resolution, but that requires using 120hz with black frame insertion, and games that use 480i get downsampled to 240p, making it a less than ideal solution in those cases, although it does have lower latency due lower frame times between vsync.<br />
<br />
To correctly display games that need both 240p and 480i resolutions, the solution lies in creating a custom superwide 3840x480 modeline, combining it with a shader that scanlines 240p content and interlaces 480i content, and using both through [[RetroArch]], essentially turning your monitor into an extremely sharp CRT TV. On Nvidia cards, the custom modeline can easily be set within your graphics card's drivers. On AMD, it requires the use of third-party software, such as [http://www.monitortests.com/cru-1.1.2.zip Custom Resolution Utility]. Simply add a detailed resolution with the exact settings shown on the picture, restart your computer, and the monitor should now be able to make use of the new modeline. As for the shader, hunterk's [https://github.com/libretro/common-shaders/blob/master/misc/interlacing.cg interlacing.cg] gives you black lines that will oscillate when given an image with 400 or higher vertical resolution, emulating the behavior of 15kHz displays. There are also some [https://github.com/libretro/common-shaders/tree/master/cgp/tvout%2Binterlacing shader presets] that combine the interlacing shader with tvout-tweaks and image-adjustment for accurate RGB signal emulation and color controls, and also some that utilize Themaister's NTSC shader for composite/s-video emulation.<br />
<br />
Once you have the new modeline set and have the shader in hand, open your RetroArch configuration file of choice, set the fullscreen resolution to 3840x480, aspect ratio to 8, and windowed fullscreen to false. Adjust your monitor's image as necessary. It may be necessary to raise your monitor's brightness somewhat, or increase color intensity to deal with the loss of brightness from having pure black scanlines. Some monitors, such as the NEC/Mitsubishi SuperBright series, have settings that increase the monitor's brightness without compromising black level or color temperature significantly.<br />
<br />
A template for creating a resolution config file in RetroArch can be found [https://gist.github.com/Monroe88/dbd3e01252afa5c50690 here] (for creating per-game/per-core overrides, use [https://gist.github.com/Monroe88/87f86d427d6319a3eb15 this]) . Setting up separate configs per display mode in the <code>/config</code> directory allows you to use RetroArch's config loader to change display modes from within the menu or you can launch with shortcut by setting the target to <code>retroarch.exe --config .\config\480p.cfg --menu</code><br />
<br />
In GNU/Linux or *BSD, you would use gtf and xrandr to use custom resolutions. [https://wiki.archlinux.org/index.php/Xrandr#Adding_undetected_resolutions See here].<br />
<br />
====Recommended CRT Monitors====<br />
Please add to this list if you have a specific model CRT monitor that you recommend for using with emulation.<br />
<br />
*'''[http://www.cnet.com/products/monitor-dell-e771p-17-16-vis-grey-crt-monitor/specs/ Dell E771p]''' - Very common CRT monitor. Able to boost color level intensity, allowing 240p with black frame insertion or 480p with inserted scanlines to have vibrant colors despite 50% brightness. Capable of up to 1400x1050 @60Hz with custom resolutions, but disallows 1440x1080 for some reason despite being able to display other 1080p resolutions at 60Hz.<br />
<br />
==LCD Monitors==<br />
All LCD monitors have a native resolution which all output must scale to, unlike CRTs.<br />
<br />
120hz displays with hacks can display motion at the same level as a CRT through backlight strobing. See: [http://www.blurbusters.com/ Blurbusters] and [http://www.techngaming.com/home/guide/tips/updated-eliminate-motion-blur-while-gaming-with-nvidia-lightboost-r485 Dead link, please replace]<br />
<br />
There is extreme variance between panels in each section. The best of one is most likely going to be better than the worst of another.<br />
<br />
Always value input lag on a per panel basis. Do research. [http://www.tftcentral.co.uk TFTcentral] has done tests on many monitors and is a good source of general information.<br />
<br />
====TN panels====<br />
*Fast [https://en.wikipedia.org/wiki/Response_time_%28technology%29 response times]<br />
<br />
*Cheap prices<br />
<br />
*Most common for high refresh rate displays, such as 120Hz and 144Hz.<br />
<br />
*Viewing angles WILL distort colors. Washing them out, inverting them, etc.<br />
<br />
====IPS panels====<br />
*Vivid colors<br />
<br />
*Good viewing angles<br />
**Though IPS glow will be far more visible and troublesome the farther you get from straight on<br />
<br />
*Fairly long [https://en.wikipedia.org/wiki/Response_time_%28technology%29 response times] (will differ between panels)<br />
**This causes motion blur, ghosting, and delay.<br />
<br />
*Some monitors can be 'overclocked' to run at higher refresh rates. Such as the [http://www.tftcentral.co.uk/reviews/qnix_qx2710.htm Qnix QX2710], which can run at 120Hz<br />
**But most cannot resolve every frame of such refresh rates due to [https://en.wikipedia.org/wiki/Response_time_%28technology%29 response times]<br />
<br />
*IPS glow. A form of backlight bleed that varies with viewing angle. Affects dark areas. Generally makes IPS panels have terrible black levels.<br />
<br />
====VA panels====<br />
*Good black levels. Some rivalling CRTs, once properly configured.<br />
<br />
*High contrast levels<br />
<br />
*Vivid colors<br />
<br />
*Mostly good viewing angles. Color shift varies by panel. But nothing as severe as TN.<br />
**Some panels may have an issue called 'black crush' which darkens the panel when viewed straightforward.<br />
<br />
*Generally mid range [https://en.wikipedia.org/wiki/Response_time_%28technology%29 response times] (will differ between panels).<br />
<br />
*At least one officially supported, out of the box, 120Hz panel, the [http://www.tftcentral.co.uk/reviews/eizo_fg2421.htm Eizo Foris FG2412]. No 'overclocking' necessary.<br />
<br />
==Upscalers==<br />
http://scanlines.hazard-city.de/<br />
<br />
<br />
==External Links==<br />
*[http://retrorgb.com RetroRGB] - Provides lots of info on displays<br><br />
*[http://junkerhq.net/xrgb/index.php/240p_test_suite 240p test suite] - Test suite for properly configuring 240p. Designed mostly for CRTs, but will work with any monitor that supports 240p. Available as a homebrew program for several consoles.<br />
<br />
[[Category:FAQs]]<br />
[[Category:Recommendations]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=CRT-Royale&diff=10047CRT-Royale2016-01-17T21:19:27Z<p>Monroe88: Display requirements</p>
<hr />
<div>[[File:CRT-Royale.png|thumb|298px|CRT-Royale, with default settings at 1080p (view original for full details)]]<br />
<br />
'''CRT-Royale''' is a highly advanced multi-pass CRT shader that simulates almost every aspect of the CRT screen. There are tons of parameters to configure, such as phosphor type (aperture grille, slot mask, and EDP shadow mask) and size (i.e. dot pitch), convergence offsets, scanline blooming and many others. Higher resolution is better for this shader, especially with EDP shadow mask phosphor layout and with smaller phosphor dot pitch values. This shader is really complicated compared to most other CRT shaders, reading the README<ref>[https://raw.githubusercontent.com/libretro/common-shaders/master/crt/shaders/crt-royale/README.TXT CRT-Royale README.TXT]</ref> and the documentation in the <code>user-settings.h</code><ref>[https://github.com/libretro/common-shaders/blob/master/crt/shaders/crt-royale/user-settings.h CRT-Royale user-settings.h]</ref> is a must.<br />
<br />
==System Requirements==<br />
<br />
CRT-Royale is a large and complex shader, so it will need modern hardware to run correctly. Discrete Nvidia or AMD video cards made in the last few years are recommended. In particular, Intel iGPUs will struggle to run the shader and some may not even run in some cases. The author provided a preset for Intel users that compromises some functionality for compatibility. There's also various <code>user-settings.h</code> files in <code>crt-royale-settings-files</code><ref>[https://github.com/libretro/common-shaders/tree/master/crt/shaders/crt-royale/crt-royale-settings-files crt-royale-settings-files]</ref> that enable/disable options for different GPU profiles.<br />
<br />
The display you use for CRT-Royale should have at least 1440p of resolution to give a decent level of detail for slot mask emulation, though 4K (2160p) or higher resolutions is recommended. 1080p displays can work for aperture grille emulation, since less resolution is needed to render vertically aligned phosphors.<br />
<br />
This shader uses some features in RetroArch's Cg shader format that have only been somewhat recently added since version 1.0.0.2, such as sRGB framebuffers and mipmapping, so you should at least be using RetroArch 1.2 for this shader.<br />
<br />
==Customization==<br />
<br />
Since CRT-Royale has a large number of different settings for customization, this article will only cover those that have the most noticeable effect on the overall image.<br />
<br />
CRT-Royale can be customized one of two ways: using the runtime shader parameters from inside [[RetroArch]] or editing the <code>user-settings.h</code> file. In order for the settings in <code>user-settings.h</code> that are marked with <code>_static</code> to take effect, runtime parameters must be disabled by commenting out <code>#define RUNTIME_SHADER_PARAMS_ENABLE</code> in <code>user-settings.h</code>. Doing this will make the runtime parameters non-functional so you will need to reload the shader to apply changes made in <code>user-settings.h</code>, but it will result in a performance boost since there is less need for expensive branching in the shader code when the settings are static. <br />
<br />
There are some settings in <code>user-settings.h</code> that are static only and do not have a runtime parameter, and therefore do not require runtime parameters to be disabled to have an effect.<br />
<br />
The settings listed below are taken from the runtime parameters with their default values.<br />
<br />
===Gamma and Contrast===<br />
crt_gamma = 2.500000<br />
lcd_gamma = 2.200000<br />
levels_contrast = 1.000000<br />
<br />
Gamma and contrast controls. CRT gamma is the output gamma of the shader, while LCD gamma is the input gamma, which should be 2.4 and 2.2 in most cases, respectively. <br />
<br />
===Halation and Diffusion===<br />
halation_weight = 0.000000<br />
diffusion_weight = 0.075000<br />
<br />
Weights for halation and diffusion of the simulated CRT. Halation is the light being reflected on the phosphors, while diffusion is the light causing a glow when passing through the glass. Some may find these effects to be annoying, so they can be turned off by setting them to 0.0.<br />
<br />
===Bloom===<br />
bloom_underestimate_levels = 0.800000<br />
bloom_excess = 0.000000<br />
<br />
These settings control the level of blooming in the shader. Higher <code>bloom_underestimate</code> will cause the bloom to be more intense. <code>bloom_excess</code> causes extra blurring of all colors to soften the bloom effect, which is disabled by default.<br />
<br />
===Beam===<br />
<br />
beam_min_sigma = 0.020000<br />
beam_max_sigma = 0.300000<br />
beam_spot_power = 0.330000<br />
beam_min_shape = 2.000000<br />
beam_max_shape = 4.000000<br />
beam_shape_power = 0.250000<br />
beam_horiz_filter = 0.000000<br />
beam_horiz_sigma = 0.350000<br />
beam_horiz_linear_rgb_weight = 1.000000<br />
<br />
These settings determine the shape and size of the lit scanlines of the simulated CRT. <br />
<br />
Min and max sigma settings affect the size of each scanline relative to the brightness of the image. A large range of beam sigmas causes the scanlines to vary in width depending on brightness, while small ranges result in less variable width of scanlines. Higher sigmas increase the size of the scanlines, resulting in smaller gaps and more vertical blurring.<br />
<br />
Min and max shape settings affect the Gaussian profile of the scanlines. Higher values for these make the scanline plateaus flatter and have steeper drop offs. These effects are really only noticeable at higher screen resolutions.<br />
<br />
<code>beam_horiz_filter</code> specifies how the beam is filtered horizontally. The options are 0.0 (Quilez, sharp and fast), 1.0 (Gaussian, configurable sharpness), and 2.0 (Lanczos2, sharp and higher quality). <code>beam_horiz_sigma</code> is used to set the level of blur when using Gaussian horizontal filtering.<br />
<br />
===Convergence===<br />
convergence_offset_x_r = 0.000000<br />
convergence_offset_x_g = 0.000000<br />
convergence_offset_x_b = 0.000000<br />
convergence_offset_y_r = 0.000000<br />
convergence_offset_y_g = 0.000000<br />
convergence_offset_y_b = 0.000000<br />
<br />
The convergence offsets settings specify how well the simulated CRT electron beams are aligned. The default values indicate perfect convergance with no colors that are misaligned. However, real CRTs, particularly cheaper consumer models, very often did not have perfect convergance, so you can change the offsets to simulate that flaw if you want.<br />
<br />
===Mask===<br />
mask_type = 1.000000<br />
mask_sample_mode_desired = 0.000000<br />
mask_specify_num_triads = 0.000000<br />
mask_triad_size_desired = 3.000000<br />
mask_num_triads_desired = 480.000000<br />
<br />
The mask settings control how the phosphor mask is rendered on the screen.<br />
<br />
<code>mask_type</code> specifies which layout of phosphors the screen has. The options for this are 0.0 (Aperture Grille), 1.0 (Slot Mask), and 2.0 (Dot Mask). Aperture Grille phosphor layout is easier to render at lower resolutions, the other options require higher resolutions to render at an acceptable level of detail.<br />
<br />
<code>mask_sample_mode_desired</code> specifies the sampling mode of the phosphor mask. The default of 0.0 is the highest quality and slowest method, while 1.0 is lower quality but faster. The 2.0 setting makes the mask tile without resizing, which results in a huge phosphor mask with the default mask textures, so it's intended more for mask textures for a screen of a fixed size.<br />
<br />
<code>mask_triad_size_desired</code> specifies the size of each phosphor triad relative to the screen. Smaller triad size will make the simulated CRT like a high resolution PC CRT or a Sony BVM with increased sharpness and less visible phosphors, while a larger triad size makes the simulated CRT into a low resolution CRT like many consumer TVs with more blurring and less visible scanline gaps. It's recommended to keep this setting as a whole number, since fractional sizes seem to cause scaling artifacts sometimes.<br />
<br />
If <code>mask_specify_num_triads</code> is set to 1.0, then the phosphor mask will be scaled to use the number of triads specified in <code>mask_num_triads_desired</code>. This is disabled by default.<br />
<br />
===Anti-Aliasing===<br />
aa_subpixel_r_offset_x_runtime = -0.333333<br />
aa_subpixel_r_offset_y_runtime = 0.000000<br />
aa_cubic_c = 0.500000<br />
aa_gauss_sigma = 0.500000<br />
<br />
These settings affect the anti-aliasing for curvature, overscan, and subpixels that is done to the shader in the last pass. These settings are quite technical and may not have immediately apparent effects. Refer to the documentation in <code>user-settings.h</code> for detailed explanations.<br />
<br />
===Geometry===<br />
geom_mode_runtime = 0.000000<br />
geom_radius = 2.000000<br />
geom_view_dist = 2.000000<br />
geom_tilt_angle_x = 0.000000<br />
geom_tilt_angle_y = 0.000000<br />
geom_aspect_ratio_x = 432.000000<br />
geom_aspect_ratio_y = 329.000000<br />
geom_overscan_x = 1.000000<br />
geom_overscan_y = 1.000000<br />
<br />
These are the settings that control the geometry of the simulated CRT.<br />
<br />
The geometry modes available are 0.0 (Flat), 1.0 ([[CRT-Geom]] style curvature), 2.0 (bulbous curvature), and 3.0 (cylindrical Trinitron curvature). View distance specifies how far the CRT is in the user's field of view. The tilt angle settings control which direction the screen is tilted. The aspect ratio of the simulated screen can also be configured. Overscan affects how much of the image is visible on the simulated CRT, since many consumer TVs did not display the full scan area.<br />
<br />
Some people may find curvature to be distracting so leaving these settings at default will leave the CRT image perfectly flat.<br />
<br />
===Border===<br />
border_size = 0.015000<br />
border_darkness = 2.000000<br />
border_compress = 2.500000<br />
<br />
These settings affect the size and shape of the black border around the CRT. The default settings create a bit of vignetting around the corners; if you dislike this effect, you can set the size and darkness of the border to 0.0.<br />
<br />
===Interlacing===<br />
interlace_bff = 0.000000<br />
interlace_1080i = 0.000000<br />
<br />
These settings control how interlacing is handled by the shader. The "bff" setting refers to the order in which each scanline field is displayed, where setting that to 1.0 would make it "bottom field first" as opposed to "top field first" like default. The 1080i setting specifies whether interlacing is enabled if the input image is 1080 pixels tall, setting it to 1.0 makes it display 1080i instead of 1080p.<br />
<br />
Interlacing detection can be turned off entirely by editing <code>interlace_detect</code> in <code>user-settings.h</code> to be <code>false</code>. This will make it display 480 pixel tall content as 480p instead of 480i, which will eliminate any flickering, but may result in combing artifacts if the game is interlaced natively. This setting is static only and is not a runtime parameter.<br />
<br />
==Variants==<br />
<br />
There are some different variants of the shader provided as different presets. Besides the default <code>crt-royale.cgp</code>, there is a "fake bloom" preset that uses a much faster bloom method that is lower quality. There are also Intel variants of both the full and fake bloom versions of the shader that omit some features to allow the shader to run on Intel iGPUs. There are also presets with passes of Themaister's [[NTSC Filters|NTSC shader]] applied before the CRT-Royale passes, though this increases the requirements quite a bit.<br />
<br />
==4K Gallery==<br />
<br />
CRT Royale works best at 2,880 × 2,160 (4K) resolution. That resolution is exactly 9 times 320x240, which was a common resolution for these consoles. <br />
<br />
<gallery widths=320 heights=240><br />
<br />
File:Ff7 4k crt shader.png|Final Fantasy 7 (PlayStation)<br />
File:1446491029205-1-.png|Castlevania: Symphony of the Night (PlayStation)<br />
File:Retroarch-1102-0058354ertd.png|Castlevania: Symphony of the Night (PlayStation)<br />
File:Ff5 4k.png|Final Fantasy 5 (Super Famicom)<br />
File:Rtype 4k.png|R-Type Delta (PlayStation)<br />
File:Mr bones 4k.png|MediEvil (PlayStation)<br />
</gallery><br />
<br />
==Notes==<br />
<br />
<references /><br />
<br />
==External Links==<br />
*[https://github.com/libretro/common-shaders/tree/master/crt/shaders/crt-royale CRT-Royale on GitHub]<br />
*[http://filthypants.blogspot.com/2014/07/crt-royale-and-3dfx-shaders.html CRT-Royale and 3dfx Shaders] - hunterk's blog post about CRT-Royale's different phosphor mask layouts.<br />
[[Category:Shaders/Filters]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=CRT-Royale&diff=10046CRT-Royale2016-01-17T19:32:19Z<p>Monroe88: </p>
<hr />
<div>[[File:CRT-Royale.png|thumb|298px|CRT-Royale, with default settings at 1080p (view original for full details)]]<br />
<br />
'''CRT-Royale''' is a highly advanced multi-pass CRT shader that simulates almost every aspect of the CRT screen. There are tons of parameters to configure, such as phosphor type (aperture grille, slot mask, and EDP shadow mask) and size (i.e. dot pitch), convergence offsets, scanline blooming and many others. Higher resolution is better for this shader, especially with EDP shadow mask phosphor layout and with smaller phosphor dot pitch values. This shader is really complicated compared to most other CRT shaders, reading the README<ref>[https://raw.githubusercontent.com/libretro/common-shaders/master/crt/shaders/crt-royale/README.TXT CRT-Royale README.TXT]</ref> and the documentation in the <code>user-settings.h</code><ref>[https://github.com/libretro/common-shaders/blob/master/crt/shaders/crt-royale/user-settings.h CRT-Royale user-settings.h]</ref> is a must.<br />
<br />
==System Requirements==<br />
<br />
CRT-Royale is a large and complex shader, so it will need modern hardware to run correctly. Discreet Nvidia or AMD video cards made in the last few years are recommended. In particular, Intel iGPUs will struggle to run the shader and some may not even run in some cases. The author provided a preset for Intel users that compromises some functionality for compatibility. There's also various <code>user-settings.h</code> files in <code>crt-royale-settings-files</code><ref>[https://github.com/libretro/common-shaders/tree/master/crt/shaders/crt-royale/crt-royale-settings-files crt-royale-settings-files]</ref> that enable/disable options for different GPU profiles.<br />
<br />
This shader uses some features in RetroArch's Cg shader format that have only been somewhat recently added since version 1.0.0.2, such as sRGB framebuffers and mipmapping, so you should at least be using RetroArch 1.2 for this shader.<br />
<br />
==Customization==<br />
<br />
Since CRT-Royale has a large number of different settings for customization, this article will only cover those that have the most noticeable effect on the overall image.<br />
<br />
CRT-Royale can be customized one of two ways: using the runtime shader parameters from inside [[RetroArch]] or editing the <code>user-settings.h</code> file. In order for the settings in <code>user-settings.h</code> that are marked with <code>_static</code> to take effect, runtime parameters must be disabled by commenting out <code>#define RUNTIME_SHADER_PARAMS_ENABLE</code> in <code>user-settings.h</code>. Doing this will make the runtime parameters non-functional so you will need to reload the shader to apply changes made in <code>user-settings.h</code>, but it will result in a performance boost since there is less need for expensive branching in the shader code when the settings are static. <br />
<br />
There are some settings in <code>user-settings.h</code> that are static only and do not have a runtime parameter, and therefore do not require runtime parameters to be disabled to have an effect.<br />
<br />
The settings listed below are taken from the runtime parameters with their default values.<br />
<br />
===Gamma and Contrast===<br />
crt_gamma = 2.500000<br />
lcd_gamma = 2.200000<br />
levels_contrast = 1.000000<br />
<br />
Gamma and contrast controls. CRT gamma is the output gamma of the shader, while LCD gamma is the input gamma, which should be 2.4 and 2.2 in most cases, respectively. <br />
<br />
===Halation and Diffusion===<br />
halation_weight = 0.000000<br />
diffusion_weight = 0.075000<br />
<br />
Weights for halation and diffusion of the simulated CRT. Halation is the light being reflected on the phosphors, while diffusion is the light causing a glow when passing through the glass. Some may find these effects to be annoying, so they can be turned off by setting them to 0.0.<br />
<br />
===Bloom===<br />
bloom_underestimate_levels = 0.800000<br />
bloom_excess = 0.000000<br />
<br />
These settings control the level of blooming in the shader. Higher <code>bloom_underestimate</code> will cause the bloom to be more intense. <code>bloom_excess</code> causes extra blurring of all colors to soften the bloom effect, which is disabled by default.<br />
<br />
===Beam===<br />
<br />
beam_min_sigma = 0.020000<br />
beam_max_sigma = 0.300000<br />
beam_spot_power = 0.330000<br />
beam_min_shape = 2.000000<br />
beam_max_shape = 4.000000<br />
beam_shape_power = 0.250000<br />
beam_horiz_filter = 0.000000<br />
beam_horiz_sigma = 0.350000<br />
beam_horiz_linear_rgb_weight = 1.000000<br />
<br />
These settings determine the shape and size of the lit scanlines of the simulated CRT. <br />
<br />
Min and max sigma settings affect the size of each scanline relative to the brightness of the image. A large range of beam sigmas causes the scanlines to vary in width depending on brightness, while small ranges result in less variable width of scanlines. Higher sigmas increase the size of the scanlines, resulting in smaller gaps and more vertical blurring.<br />
<br />
Min and max shape settings affect the Gaussian profile of the scanlines. Higher values for these make the scanline plateaus flatter and have steeper drop offs. These effects are really only noticeable at higher screen resolutions.<br />
<br />
<code>beam_horiz_filter</code> specifies how the beam is filtered horizontally. The options are 0.0 (Quilez, sharp and fast), 1.0 (Gaussian, configurable sharpness), and 2.0 (Lanczos2, sharp and higher quality). <code>beam_horiz_sigma</code> is used to set the level of blur when using Gaussian horizontal filtering.<br />
<br />
===Convergence===<br />
convergence_offset_x_r = 0.000000<br />
convergence_offset_x_g = 0.000000<br />
convergence_offset_x_b = 0.000000<br />
convergence_offset_y_r = 0.000000<br />
convergence_offset_y_g = 0.000000<br />
convergence_offset_y_b = 0.000000<br />
<br />
The convergence offsets settings specify how well the simulated CRT electron beams are aligned. The default values indicate perfect convergance with no colors that are misaligned. However, real CRTs, particularly cheaper consumer models, very often did not have perfect convergance, so you can change the offsets to simulate that flaw if you want.<br />
<br />
===Mask===<br />
mask_type = 1.000000<br />
mask_sample_mode_desired = 0.000000<br />
mask_specify_num_triads = 0.000000<br />
mask_triad_size_desired = 3.000000<br />
mask_num_triads_desired = 480.000000<br />
<br />
The mask settings control how the phosphor mask is rendered on the screen.<br />
<br />
<code>mask_type</code> specifies which layout of phosphors the screen has. The options for this are 0.0 (Aperture Grille), 1.0 (Slot Mask), and 2.0 (Dot Mask). Aperture Grille phosphor layout is easier to render at lower resolutions, the other options require higher resolutions to render at an acceptable level of detail.<br />
<br />
<code>mask_sample_mode_desired</code> specifies the sampling mode of the phosphor mask. The default of 0.0 is the highest quality and slowest method, while 1.0 is lower quality but faster. The 2.0 setting makes the mask tile without resizing, which results in a huge phosphor mask with the default mask textures, so it's intended more for mask textures for a screen of a fixed size.<br />
<br />
<code>mask_triad_size_desired</code> specifies the size of each phosphor triad relative to the screen. Smaller triad size will make the simulated CRT like a high resolution PC CRT or a Sony BVM with increased sharpness and less visible phosphors, while a larger triad size makes the simulated CRT into a low resolution CRT like many consumer TVs with more blurring and less visible scanline gaps. It's recommended to keep this setting as a whole number, since fractional sizes seem to cause scaling artifacts sometimes.<br />
<br />
If <code>mask_specify_num_triads</code> is set to 1.0, then the phosphor mask will be scaled to use the number of triads specified in <code>mask_num_triads_desired</code>. This is disabled by default.<br />
<br />
===Anti-Aliasing===<br />
aa_subpixel_r_offset_x_runtime = -0.333333<br />
aa_subpixel_r_offset_y_runtime = 0.000000<br />
aa_cubic_c = 0.500000<br />
aa_gauss_sigma = 0.500000<br />
<br />
These settings affect the anti-aliasing for curvature, overscan, and subpixels that is done to the shader in the last pass. These settings are quite technical and may not have immediately apparent effects. Refer to the documentation in <code>user-settings.h</code> for detailed explanations.<br />
<br />
===Geometry===<br />
geom_mode_runtime = 0.000000<br />
geom_radius = 2.000000<br />
geom_view_dist = 2.000000<br />
geom_tilt_angle_x = 0.000000<br />
geom_tilt_angle_y = 0.000000<br />
geom_aspect_ratio_x = 432.000000<br />
geom_aspect_ratio_y = 329.000000<br />
geom_overscan_x = 1.000000<br />
geom_overscan_y = 1.000000<br />
<br />
These are the settings that control the geometry of the simulated CRT.<br />
<br />
The geometry modes available are 0.0 (Flat), 1.0 ([[CRT-Geom]] style curvature), 2.0 (bulbous curvature), and 3.0 (cylindrical Trinitron curvature). View distance specifies how far the CRT is in the user's field of view. The tilt angle settings control which direction the screen is tilted. The aspect ratio of the simulated screen can also be configured. Overscan affects how much of the image is visible on the simulated CRT, since many consumer TVs did not display the full scan area.<br />
<br />
Some people may find curvature to be distracting so leaving these settings at default will leave the CRT image perfectly flat.<br />
<br />
===Border===<br />
border_size = 0.015000<br />
border_darkness = 2.000000<br />
border_compress = 2.500000<br />
<br />
These settings affect the size and shape of the black border around the CRT. The default settings create a bit of vignetting around the corners; if you dislike this effect, you can set the size and darkness of the border to 0.0.<br />
<br />
===Interlacing===<br />
interlace_bff = 0.000000<br />
interlace_1080i = 0.000000<br />
<br />
These settings control how interlacing is handled by the shader. The "bff" setting refers to the order in which each scanline field is displayed, where setting that to 1.0 would make it "bottom field first" as opposed to "top field first" like default. The 1080i setting specifies whether interlacing is enabled if the input image is 1080 pixels tall, setting it to 1.0 makes it display 1080i instead of 1080p.<br />
<br />
Interlacing detection can be turned off entirely by editing <code>interlace_detect</code> in <code>user-settings.h</code> to be <code>false</code>. This will make it display 480 pixel tall content as 480p instead of 480i, which will eliminate any flickering, but may result in combing artifacts if the game is interlaced natively. This setting is static only and is not a runtime parameter.<br />
<br />
==Variants==<br />
<br />
There are some different variants of the shader provided as different presets. Besides the default <code>crt-royale.cgp</code>, there is a "fake bloom" preset that uses a much faster bloom method that is lower quality. There are also Intel variants of both the full and fake bloom versions of the shader that omit some features to allow the shader to run on Intel iGPUs. There are also presets with passes of Themaister's [[NTSC Filters|NTSC shader]] applied before the CRT-Royale passes, though this increases the requirements quite a bit.<br />
<br />
==4K Gallery==<br />
<br />
CRT Royale works best at 2,880 × 2,160 (4K) resolution. That resolution is exactly 9 times 320x240, which was a common resolution for these consoles. <br />
<br />
<gallery widths=320 heights=240><br />
<br />
File:Ff7 4k crt shader.png|Final Fantasy 7 (PlayStation)<br />
File:1446491029205-1-.png|Castlevania: Symphony of the Night (PlayStation)<br />
File:Retroarch-1102-0058354ertd.png|Castlevania: Symphony of the Night (PlayStation)<br />
File:Ff5 4k.png|Final Fantasy 5 (Super Famicom)<br />
File:Rtype 4k.png|R-Type Delta (PlayStation)<br />
File:Mr bones 4k.png|MediEvil (PlayStation)<br />
</gallery><br />
<br />
==Notes==<br />
<br />
<references /><br />
<br />
==External Links==<br />
*[https://github.com/libretro/common-shaders/tree/master/crt/shaders/crt-royale CRT-Royale on GitHub]<br />
*[http://filthypants.blogspot.com/2014/07/crt-royale-and-3dfx-shaders.html CRT-Royale and 3dfx Shaders] - hunterk's blog post about CRT-Royale's different phosphor mask layouts.<br />
[[Category:Shaders/Filters]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=CRT-Royale&diff=10024CRT-Royale2016-01-17T03:27:48Z<p>Monroe88: </p>
<hr />
<div>[[File:CRT-Royale.png|thumb|298px|CRT-Royale, with default settings at 1080p (view original for full details)]]<br />
<br />
'''CRT-Royale''' is a highly advanced multi-pass CRT shader that simulates almost every aspect of the CRT screen. There are tons of parameters to configure, such as phosphor type (aperture grille, slot mask, and EDP shadow mask) and size (i.e. dot pitch), convergence offsets, scanline blooming and many others. Higher resolution is better for this shader, especially with EDP shadow mask phosphor layout and with smaller phosphor dot pitch values. This shader is really complicated compared to most other CRT shaders, reading the README<ref>[https://raw.githubusercontent.com/libretro/common-shaders/master/crt/shaders/crt-royale/README.TXT CRT-Royale README.TXT]</ref> and the documentation in the <code>user-settings.h</code><ref>[https://github.com/libretro/common-shaders/blob/master/crt/shaders/crt-royale/user-settings.h CRT-Royale user-settings.h]</ref> is a must.<br />
<br />
==System Requirements==<br />
<br />
CRT-Royale is a large and complex shader, so it will need modern hardware to run correctly. Discreet Nvidia or AMD video cards made in the last few years are recommended. In particular, Intel iGPUs will struggle to run the shader and some may not even run in some cases. The author provided a preset for Intel users that compromises some functionality for compatibility. There's also various <code>user-settings.h</code> files in <code>crt-royale-settings-files</code><ref>[https://github.com/libretro/common-shaders/tree/master/crt/shaders/crt-royale/crt-royale-settings-files crt-royale-settings-files]</ref> that enable/disable options for different GPU profiles.<br />
<br />
This shader uses some features in RetroArch's Cg shader format that have only been somewhat recently added since version 1.0.0.2, such as sRGB framebuffers and mipmapping, so you should at least be using RetroArch 1.2 for this shader.<br />
<br />
==Customization==<br />
<br />
Since CRT-Royale has a large number of different settings for customization, this article will only cover those that have the most noticeable effect on the overall image.<br />
<br />
CRT-Royale can be customized one of two ways: using the runtime shader parameters from inside [[RetroArch]] or editing the <code>user-settings.h</code> file. In order for the settings in <code>user-settings.h</code> that are marked with <code>_static</code> to take effect, runtime parameters must be disabled by commenting out <code>#define RUNTIME_SHADER_PARAMS_ENABLE</code> in <code>user-settings.h</code>. Doing this will make the runtime parameters non-functional so you will need to reload the shader to apply changes made in <code>user-settings.h</code>, but it will result in a performance boost since there is less need for expensive branching in the shader code when the settings are static. <br />
<br />
There are some settings in user-settings.h that are static only and do not have a runtime parameter, and therefore do not require runtime parameters to be disabled to have an effect.<br />
<br />
The settings listed below are taken from the runtime parameters with their default values.<br />
<br />
===Gamma and Contrast===<br />
crt_gamma = 2.500000<br />
lcd_gamma = 2.200000<br />
levels_contrast = 1.000000<br />
<br />
Gamma and contrast controls. CRT gamma is the output gamma of the shader, while LCD gamma is the input gamma, which should be 2.2 in most cases. <br />
<br />
===Halation and Diffusion===<br />
halation_weight = 0.000000<br />
diffusion_weight = 0.075000<br />
<br />
Weights for halation and diffusion of the simulated CRT. Halation is the light being reflected on the phosphors, while diffusion is the light causing a glow when passing through the glass. Some may find these effects to be annoying, so they can be turned off by setting them to 0.0.<br />
<br />
===Bloom===<br />
bloom_underestimate_levels = 0.800000<br />
bloom_excess = 0.000000<br />
<br />
These settings control the level of blooming in the shader. Higher <code>bloom_underestimate</code> will cause the bloom to be more intense. <code>bloom_excess</code> causes extra blurring of all colors to soften the bloom effect, which is disabled by default.<br />
<br />
===Beam===<br />
<br />
beam_min_sigma = 0.020000<br />
beam_max_sigma = 0.300000<br />
beam_spot_power = 0.330000<br />
beam_min_shape = 2.000000<br />
beam_max_shape = 4.000000<br />
beam_shape_power = 0.250000<br />
beam_horiz_filter = 0.000000<br />
beam_horiz_sigma = 0.350000<br />
beam_horiz_linear_rgb_weight = 1.000000<br />
<br />
These settings determine the shape and size of the lit scanlines of the simulated CRT. <br />
<br />
Min and max sigma settings affect the size of each scanline relative to the brightness of the image. A large range of beam sigmas causes the scanlines to vary in width depending on brightness, while small ranges result in less variable width of scanlines. Higher sigmas increase the size of the scanlines, resulting in smaller gaps and more vertical blurring.<br />
<br />
Min and max shape settings affect the Gaussian profile of the scanlines. Higher values for these make the scanline plateaus flatter and have steeper drop offs. These effects are really only noticeable at higher screen resolutions.<br />
<br />
<code>beam_horiz_filter</code> specifies how the beam is filtered horizontally. The options are 0.0 (Quilez, sharp and fast), 1.0 (Gaussian, configurable sharpness), and 2.0 (Lanczos2, sharp and higher quality). <code>beam_horiz_sigma</code> is used to set the level of blur when using Gaussian horizontal filtering.<br />
<br />
===Convergence===<br />
convergence_offset_x_r = 0.000000<br />
convergence_offset_x_g = 0.000000<br />
convergence_offset_x_b = 0.000000<br />
convergence_offset_y_r = 0.000000<br />
convergence_offset_y_g = 0.000000<br />
convergence_offset_y_b = 0.000000<br />
<br />
The convergence offsets settings specify how well the simulated CRT electron beams are aligned. The default values indicate perfect convergance with no colors that are misaligned. However, real CRTs, particularly cheaper consumer models, very often did not have perfect convergance, so you can change the offsets to simulate that flaw if you want.<br />
<br />
===Mask===<br />
mask_type = 1.000000<br />
mask_sample_mode_desired = 0.000000<br />
mask_specify_num_triads = 0.000000<br />
mask_triad_size_desired = 3.000000<br />
mask_num_triads_desired = 480.000000<br />
<br />
The mask settings control how the phosphor mask is rendered on the screen.<br />
<br />
<code>mask_type</code> specifies which layout of phosphors the screen has. The options for this are 0.0 (Aperture Grille), 1.0 (Slot Mask), and 2.0 (Dot Mask). Aperture Grille phosphor layout is easier to render at lower resolutions, the other options require higher resolutions to render at an acceptable level of detail.<br />
<br />
<code>mask_sample_mode_desired</code> specifies the sampling mode of the phosphor mask. The default of 0.0 is the highest quality and slowest method, while 1.0 is lower quality but faster. The 2.0 setting makes the mask tile without resizing, which results in a huge phosphor mask with the default mask textures, so it's intended more for mask textures for a screen of a fixed size.<br />
<br />
<code>mask_triad_size_desired</code> specifies the size of each phosphor triad relative to the screen. Smaller triad size will make the simulated CRT like a high resolution PC CRT or a Sony BVM with increased sharpness and less visible phosphors, while a larger triad size makes the simulated CRT into a low resolution CRT like many consumer TVs with more blurring and less visible scanline gaps. It's recommended to keep this setting as a whole number, since fractional sizes seem to cause scaling artifacts sometimes.<br />
<br />
If <code>mask_specify_num_triads</code> is set to 1.0, then the phosphor mask will be scaled to use the number of triads specified in <code>mask_num_triads_desired</code>. This is disabled by default.<br />
<br />
===Anti-Aliasing===<br />
aa_subpixel_r_offset_x_runtime = -0.333333<br />
aa_subpixel_r_offset_y_runtime = 0.000000<br />
aa_cubic_c = 0.500000<br />
aa_gauss_sigma = 0.500000<br />
<br />
These settings affect the anti-aliasing for curvature, overscan, and subpixels that is done to the shader in the last pass. These settings are quite technical and may not have immediately apparent effects. Refer to the documentation in <code>user-settings.h</code> for detailed explanations.<br />
<br />
===Geometry===<br />
geom_mode_runtime = 0.000000<br />
geom_radius = 2.000000<br />
geom_view_dist = 2.000000<br />
geom_tilt_angle_x = 0.000000<br />
geom_tilt_angle_y = 0.000000<br />
geom_aspect_ratio_x = 432.000000<br />
geom_aspect_ratio_y = 329.000000<br />
geom_overscan_x = 1.000000<br />
geom_overscan_y = 1.000000<br />
<br />
These are the settings that control the geometry of the simulated CRT.<br />
<br />
The geometry modes available are 0.0 (Flat), 1.0 ([[CRT-Geom]] style curvature), 2.0 (bulbous curvature), and 3.0 (cylindrical Trinitron curvature). View distance specifies how far the CRT is in the user's field of view. The tilt angle settings control which direction the screen is tilted. The aspect ratio of the simulated screen can also be configured. Overscan affects how much of the image is visible on the simulated CRT, since many consumer TVs did not display the full scan area.<br />
<br />
Some people may find curvature to be distracting so leaving these settings at default will leave the CRT image perfectly flat.<br />
<br />
===Border===<br />
border_size = 0.015000<br />
border_darkness = 2.000000<br />
border_compress = 2.500000<br />
<br />
These settings affect the size and shape of the black border around the CRT. The default settings create a bit of vignetting around the corners; if you dislike this effect, you can set the size and darkness of the border to 0.0.<br />
<br />
===Interlacing===<br />
interlace_bff = 0.000000<br />
interlace_1080i = 0.000000<br />
<br />
These settings control how interlacing is handled by the shader. The "bff" setting refers to the order in which each scanline field is displayed, where setting that to 1.0 would make it "bottom frame first" as opposed to "top field first" like default. The 1080i setting specifies whether interlacing is enabled if the input image is 1080 pixels tall, setting it to 1.0 makes it display 1080i instead of 1080p.<br />
<br />
Interlacing detection can be turned off entirely by editing <code>interlace_detect</code> in <code>user-settings.h</code> to be <code>false</code>. This will make it display 480 pixel tall content as 480p instead of 480i, which will eliminate any flickering, but may result in combing artifacts if the game is interlaced natively. This setting is static only and is not a runtime parameter.<br />
<br />
==Variants==<br />
<br />
There are some different variants of the shader provided as different presets. Besides the default <code>crt-royale.cgp</code>, there is a "fake bloom" preset that uses a much faster bloom method that is lower quality. There are also Intel variants of both the full and fake bloom versions of the shader that omit some features to allow the shader to run on Intel iGPUs. There are also presets with passes of Themaister's [[NTSC Filters|NTSC shader]] applied before the CRT-Royale passes, though this increases the requirements quite a bit.<br />
<br />
==Notes==<br />
<br />
<references /><br />
<br />
==External Links==<br />
*[https://github.com/libretro/common-shaders/tree/master/crt/shaders/crt-royale CRT-Royale on GitHub]<br />
*[http://filthypants.blogspot.com/2014/07/crt-royale-and-3dfx-shaders.html CRT-Royale and 3dfx Shaders] - hunterk's blog post about CRT-Royale's different phosphor mask layouts.<br />
[[Category:Shaders/Filters]]</div>Monroe88https://emulation.gametechwiki.com/index.php?title=CRT-Royale&diff=10023CRT-Royale2016-01-17T03:26:54Z<p>Monroe88: Variants</p>
<hr />
<div>[[File:CRT-Royale.png|thumb|298px|CRT-Royale, with default settings at 1080p (view original for full details)]]<br />
<br />
'''CRT-Royale''' is a highly advanced multi-pass CRT shader that simulates almost every aspect of the CRT screen. There are tons of parameters to configure, such as phosphor type (aperture grille, slot mask, and EDP shadow mask) and size (i.e. dot pitch), convergence offsets, scanline blooming and many others. Higher resolution is better for this shader, especially with EDP shadow mask phosphor layout and with smaller phosphor dot pitch values. This shader is really complicated compared to most other CRT shaders, reading the README<ref>[https://raw.githubusercontent.com/libretro/common-shaders/master/crt/shaders/crt-royale/README.TXT CRT-Royale README.TXT]</ref> and the documentation in the <code>user-settings.h</code><ref>[https://github.com/libretro/common-shaders/blob/master/crt/shaders/crt-royale/user-settings.h CRT-Royale user-settings.h]</ref> is a must.<br />
<br />
==System Requirements==<br />
<br />
CRT-Royale is a large and complex shader, so it will need modern hardware to run correctly. Discreet Nvidia or AMD video cards made in the last few years are recommended. In particular, Intel iGPUs will struggle to run the shader and some may not even run in some cases. The author provided a preset for Intel users that compromises some functionality for compatibility. There's also various <code>user-settings.h</code> files in <code>crt-royale-settings-files</code><ref>[https://github.com/libretro/common-shaders/tree/master/crt/shaders/crt-royale/crt-royale-settings-files crt-royale-settings-files]</ref> that enable/disable options for different GPU profiles.<br />
<br />
This shader uses some features in RetroArch's Cg shader format that have only been somewhat recently added since version 1.0.0.2, such as sRGB framebuffers and mipmapping, so you should at least be using RetroArch 1.2 for this shader.<br />
<br />
==Customization==<br />
<br />
Since CRT-Royale has a large number of different settings for customization, this article will only cover those that have the most noticeable effect on the overall image.<br />
<br />
CRT-Royale can be customized one of two ways: using the runtime shader parameters from inside [[RetroArch]] or editing the <code>user-settings.h</code> file. In order for the settings in <code>user-settings.h</code> that are marked with <code>_static</code> to take effect, runtime parameters must be disabled by commenting out <code>#define RUNTIME_SHADER_PARAMS_ENABLE</code> in <code>user-settings.h</code>. Doing this will make the runtime parameters non-functional so you will need to reload the shader to apply changes made in <code>user-settings.h</code>, but it will result in a performance boost since there is less need for expensive branching in the shader code when the settings are static. <br />
<br />
There are some settings in user-settings.h that are static only and do not have a runtime parameter, and therefore do not require runtime parameters to be disabled to have an effect.<br />
<br />
The settings listed below are taken from the runtime parameters with their default values.<br />
<br />
===Gamma and Contrast===<br />
crt_gamma = 2.500000<br />
lcd_gamma = 2.200000<br />
levels_contrast = 1.000000<br />
<br />
Gamma and contrast controls. CRT gamma is the output gamma of the shader, while LCD gamma is the input gamma, which should be 2.2 in most cases. <br />
<br />
===Halation and Diffusion===<br />
halation_weight = 0.000000<br />
diffusion_weight = 0.075000<br />
<br />
Weights for halation and diffusion of the simulated CRT. Halation is the light being reflected on the phosphors, while diffusion is the light causing a glow when passing through the glass. Some may find these effects to be annoying, so they can be turned off by setting them to 0.0.<br />
<br />
===Bloom===<br />
bloom_underestimate_levels = 0.800000<br />
bloom_excess = 0.000000<br />
<br />
These settings control the level of blooming in the shader. Higher <code>bloom_underestimate</code> will cause the bloom to be more intense. <code>bloom_excess</code> causes extra blurring of all colors to soften the bloom effect, which is disabled by default.<br />
<br />
===Beam===<br />
<br />
beam_min_sigma = 0.020000<br />
beam_max_sigma = 0.300000<br />
beam_spot_power = 0.330000<br />
beam_min_shape = 2.000000<br />
beam_max_shape = 4.000000<br />
beam_shape_power = 0.250000<br />
beam_horiz_filter = 0.000000<br />
beam_horiz_sigma = 0.350000<br />
beam_horiz_linear_rgb_weight = 1.000000<br />
<br />
These settings determine the shape and size of the lit scanlines of the simulated CRT. <br />
<br />
Min and max sigma settings affect the size of each scanline relative to the brightness of the image. A large range of beam sigmas causes the scanlines to vary in width depending on brightness, while small ranges result in less variable width of scanlines. Higher sigmas increase the size of the scanlines, resulting in smaller gaps and more vertical blurring.<br />
<br />
Min and max shape settings affect the Gaussian profile of the scanlines. Higher values for these make the scanline plateaus flatter and have steeper drop offs. These effects are really only noticeable at higher screen resolutions.<br />
<br />
<code>beam_horiz_filter</code> specifies how the beam is filtered horizontally. The options are 0.0 (Quilez, sharp and fast), 1.0 (Gaussian, configurable sharpness), and 2.0 (Lanczos2, sharp and higher quality). <code>beam_horiz_sigma</code> is used to set the level of blur when using Gaussian horizontal filtering.<br />
<br />
===Convergence===<br />
convergence_offset_x_r = 0.000000<br />
convergence_offset_x_g = 0.000000<br />
convergence_offset_x_b = 0.000000<br />
convergence_offset_y_r = 0.000000<br />
convergence_offset_y_g = 0.000000<br />
convergence_offset_y_b = 0.000000<br />
<br />
The convergence offsets settings specify how well the simulated CRT electron beams are aligned. The default values indicate perfect convergance with no colors that are misaligned. However, real CRTs, particularly cheaper consumer models, very often did not have perfect convergance, so you can change the offsets to simulate that flaw if you want.<br />
<br />
===Mask===<br />
mask_type = 1.000000<br />
mask_sample_mode_desired = 0.000000<br />
mask_specify_num_triads = 0.000000<br />
mask_triad_size_desired = 3.000000<br />
mask_num_triads_desired = 480.000000<br />
<br />
The mask settings control how the phosphor mask is rendered on the screen.<br />
<br />
<code>mask_type</code> specifies which layout of phosphors the screen has. The options for this are 0.0 (Aperture Grille), 1.0 (Slot Mask), and 2.0 (Dot Mask). Aperture Grille phosphor layout is easier to render at lower resolutions, the other options require higher resolutions to render at an acceptable level of detail.<br />
<br />
<code>mask_sample_mode_desired</code> specifies the sampling mode of the phosphor mask. The default of 0.0 is the highest quality and slowest method, while 1.0 is lower quality but faster. The 2.0 setting makes the mask tile without resizing, which results in a huge phosphor mask with the default mask textures, so it's intended more for mask textures for a screen of a fixed size.<br />
<br />
<code>mask_triad_size_desired</code> specifies the size of each phosphor triad relative to the screen. Smaller triad size will make the simulated CRT like a high resolution PC CRT or a Sony BVM with increased sharpness and less visible phosphors, while a larger triad size makes the simulated CRT into a low resolution CRT like many consumer TVs with more blurring and less visible scanline gaps. It's recommended to keep this setting as a whole number, since fractional sizes seem to cause scaling artifacts sometimes.<br />
<br />
If <code>mask_specify_num_triads</code> is set to 1.0, then the phosphor mask will be scaled to use the number of triads specified in <code>mask_num_triads_desired</code>. This is disabled by default.<br />
<br />
===Anti-Aliasing===<br />
aa_subpixel_r_offset_x_runtime = -0.333333<br />
aa_subpixel_r_offset_y_runtime = 0.000000<br />
aa_cubic_c = 0.500000<br />
aa_gauss_sigma = 0.500000<br />
<br />
These settings affect the anti-aliasing for curvature, overscan, and subpixels that is done to the shader in the last pass. These settings are quite technical and may not have immediately apparent effects. Refer to the documentation in <code>user-settings.h</code> for detailed explanations.<br />
<br />
===Geometry===<br />
geom_mode_runtime = 0.000000<br />
geom_radius = 2.000000<br />
geom_view_dist = 2.000000<br />
geom_tilt_angle_x = 0.000000<br />
geom_tilt_angle_y = 0.000000<br />
geom_aspect_ratio_x = 432.000000<br />
geom_aspect_ratio_y = 329.000000<br />
geom_overscan_x = 1.000000<br />
geom_overscan_y = 1.000000<br />
<br />
These are the settings that control the geometry of the simulated CRT.<br />
<br />
The geometry modes available are 0.0 (Flat), 1.0 ([[CRT-Geom]] style curvature), 2.0 (bulbous curvature), and 3.0 (cylindrical Trinitron curvature). View distance specifies how far the CRT is in the user's field of view. The tilt angle settings control which direction the screen is tilted. The aspect ratio of the simulated screen can also be configured. Overscan affects how much of the image is visible on the simulated CRT, since many consumer TVs did not display the full scan area.<br />
<br />
Some people may find curvature to be distracting so leaving these settings at default will leave the CRT image perfectly flat.<br />
<br />
===Border===<br />
border_size = 0.015000<br />
border_darkness = 2.000000<br />
border_compress = 2.500000<br />
<br />
These settings affect the size and shape of the black border around the CRT. The default settings create a bit of vignetting around the corners; if you dislike this effect, you can set the size and darkness of the border to 0.0.<br />
<br />
===Interlacing===<br />
interlace_bff = 0.000000<br />
interlace_1080i = 0.000000<br />
<br />
These settings control how interlacing is handled by the shader. The "bff" setting refers to the order in which each scanline field is displayed, where setting that to 1.0 would make it "bottom frame first" as opposed to "top field first" like default. The 1080i setting specifies whether interlacing is enabled if the input image is 1080 pixels tall, setting it to 1.0 makes it display 1080i instead of 1080p.<br />
<br />
Interlacing detection can be turned off entirely by editing <code>interlace_detect</code> in <code>user-settings.h</code> to be <code>false</code>. This will make it display 480 pixel tall content as 480p instead of 480i, which will eliminate any flickering, but may result in combing artifacts if the game is interlaced natively. This setting is static only and is not a runtime parameter.<br />
<br />
==Variants==<br />
<br />
There are some different variants of the shader provided as different presets. Besides the default <code>crt-royale.cgp</code><ref>, there is a "fake bloom" preset that uses a much faster bloom method that is lower quality. There are also Intel variants of both the full and fake bloom versions of the shader that omit some features to allow the shader to run on Intel iGPUs. There are also presets with passes of Themaister's [[NTSC Filters|NTSC shader]] applied before the CRT-Royale passes, though this increases the requirements quite a bit.<br />
<br />
==Notes==<br />
<br />
<references /><br />
<br />
==External Links==<br />
*[https://github.com/libretro/common-shaders/tree/master/crt/shaders/crt-royale CRT-Royale on GitHub]<br />
*[http://filthypants.blogspot.com/2014/07/crt-royale-and-3dfx-shaders.html CRT-Royale and 3dfx Shaders] - hunterk's blog post about CRT-Royale's different phosphor mask layouts.<br />
[[Category:Shaders/Filters]]</div>Monroe88