Mednafen Nintendo Entertainment System/Famicom Documentation

#

# Nintendo Entertainment System/Famicom Documentation

Last updated March 19, 2024
Valid as of 1.32.1

Table of Contents:

- Introduction
  - Custom Palettes
  - Input
    - Zapper
  - File Formats
    - iNES Format
    - UNIF
  - Famicom Disk System
  - Game Genie
  - VS Unisystem
- Default Key Assignments
  - VS Unisystem
  - Famicom Disk System
  - Barcode Readers
  - Game Pad
  - Power Pad
  - Family Keyboard
  - HyperShot Controller
  - Mahjong Controller
  - Party Tap Controller
- Game-specific Emulation Hacks
- Settings Reference
- Credits

## Introduction

Mednafen's NES/Famicom emulation is based off of FCE Ultra.

### Custom Palettes

Global Filename: | Description:
--- | ---
nes-pal.pal | PAL NES 64 or 512 RGB triplets
nes.pal | NTSC NES/Famicom 64 or 512 RGB triplets
rp2c04-0001.pal | Arcade RP2C04-0001 64 RGB triplets
rp2c04-0002.pal | Arcade RP2C04-0002 64 RGB triplets
rp2c04-0003.pal | Arcade RP2C04-0003 64 RGB triplets
rp2c04-0004.pal | Arcade RP2C04-0004 64 RGB triplets
rp2c0x.pal | Arcade RP2C03/RP2C05 64 RGB triplets

### Input

Mednafen emulates the standard NES gamepad, the Four-Score multiplayer adapter, the Zapper, the Power Pad, and the Arkanoid controller. The Famicom version of the Arkanoid controller, the "Space Shadow" gun, the Famicom 4-player adapter, the Family Keyboard, the HyperShot controller, the Mahjong controller, the Oeka Kids tablet, the Party Tap, the Family Trainer, and the Barcode Battler II barcode reader are also emulated.

#### Zapper

Most Zapper NES games expect the Zapper to be plugged into port 2. and most VS Unisystem games expect the Zapper to be plugged into port 1.

The left mouse button is the emulated trigger button for the Zapper. The right mouse button is also emulated as the trigger, but as long as you have the right mouse button held down, no color detection will take place, which is effectively like pulling the trigger while the Zapper is pointed away from the television screen. Note that you must hold the right button down for a short time to have the desired effect.

### File Formats

Mednafen supports the iNES, FDS(raw and with a header), UNIF, and NSF file formats. FDS ROM images in the iNES format are not supported; it would be silly to do so and storing them in that format is nonsensical.

#### iNES Format

The battery-backed RAM, vertical/horizontal mirroring, four-screen name table layout, and 8-bit mapper number capabilities of the iNES format are supported. The 512-byte trainer capability is also supported, but it is deprecated. Common header corruption conditions are cleaned(let's go on a DiskDude hunt), though not all conditions can be automatically detected and fixed. In addition, a few common header inaccuracies for games are also corrected(detected by CRC32 value). Note that these fixes are not written back to the storage medium.

Support for the recent VS System bit and "number of 8kB RAM banks" is not implemented. Too many iNES headers are corrupt where this new data is stored, causing problems for those games.

The following table lists iNES-format "mappers" supported well in Mednafen.

Number: | Description: | Game Examples:
--- | --- | ---
0 | No bankswitching | Donkey Kong, Mario Bros
1 | Nintendo MMC1 | MegaMan 2, Final Fantasy
2 | UNROM | MegaMan, Archon, 1944
3 | CNROM | Spy Hunter, Gradius
4 | Nintendo MMC3 | Super Mario Bros. 3, Recca, Final Fantasy 3
5 | Nintendo MMC5 | Castlevania 3, Just Breed, Bandit Kings of Ancient China
6 | FFE F4 Series(hacked, bootleg) |
7 | AOROM | Battle Toads, Time Lord
8 | FFE F3 Series(hacked, bootleg) |
9 | Nintendo MMC2 | Punchout!
10 | Nintendo MMC4 | Fire Emblem, Fire Emblem Gaiden
11 | Color Dreams | Crystal Mines, Bible Adventures
12 | ?? | Dragon Ball Z 5 ("bootleg" original)
13 | CPROM | Videomation
15 | Multi-cart(bootleg) | 100-in-1: Contra Function 16
16 | Bandai ??(X24C02P EEPROM) | Dragon Ball Z 3
17 | FFE F8 Series(hacked, bootleg) |
18 | Jaleco SS806 | Pizza Pop, Plasma Ball
19 | Namco 106 | Splatter House, Mappy Kids
21 | Konami VRC4 2A | WaiWai World 2, Ganbare Goemon Gaiden 2
22 | Konami VRC4 1B | Twinbee 3
23 | Konami VRC2B | WaiWai World, Crisis Force
24 | Konami VRC6 | Akumajou Densetsu
25 | Konami VRC4 | Gradius 2, Bio Miracle:Boku tte Upa
26 | Konami VRC6 A0-A1 Swap | Esper Dream 2, Madara
32 | IREM G-101 | Image Fight 2, Perman
33 | Taito TC0190/TC0350 | Don Doko Don
34 | NINA-001 and BNROM | Impossible Mission 2, Deadly Towers, Bug Honey
37 | ?? | Super Mario Bros/Tetris/Nintendo World Cup
38 | ?? | Crime Busters
40 | ?? | Super Mario Bros. 2j bootleg
41 | Caltron 6-in-1 | Caltron 6-in-1
42 | (bootleg) | Mario Baby
44 | Multi-cart(bootleg) | Super HiK 7 in 1
45 | Multi-cart(bootleg) | Super 1000000 in 1
46 | Game Station | Rumble Station
47 | NES-QJ | Nintendo World Cup/Super Spike V-Ball
48 | Taito TC190V | Flintstones
49 | Multi-cart(bootleg) | Super HiK 4 in 1
51 | Multi-cart(bootleg) | 11 in 1 Ball Games
52 | Multi-cart(bootleg) | Mario Party 7 in 1
64 | Tengen RAMBO 1 | Klax, Rolling Thunder, Skull and Crossbones
65 | IREM H-3001 | Daiku no Gensan 2
66 | GNROM | SMB/Duck Hunt
67 | Sunsoft ?? | Fantasy Zone 2
68 | Sunsoft ?? | After Burner 2, Nantetta Baseball
69 | Sunsoft FME-7 | Batman: Return of the Joker, Hebereke
70 | ?? | Kamen Rider Club
71 | Camerica | Fire Hawk, Linus Spacehead
72 | Jaleco ?? | Pinball Quest
73 | Konami VRC3 | Salamander
74 | Taiwanese MMC3 CHR ROM w/ VRAM | Super Robot Wars 2
75 | Jaleco SS8805/Konami VRC1 | Tetsuwan Atom, King Kong 2
76 | Namco 109 | Megami Tensei
77 | IREM ?? | Napoleon Senki
78 | Irem 74HC161/32 | Holy Diver
79 | NINA-06/NINA-03 | F15 City War, Krazy Kreatures, Tiles of Fate
80 | Taito X-005 | Minelvation Saga
82 | Taito ?? | Kyuukyoku Harikiri Stadium - Heisei Gannen Ban
85 | Konami VRC7 | Lagrange Point
86 | Jaleco JF-13 | More Pro Baseball
87 | ?? | Argus
88 | Namco 118 | Dragon Spirit
89 | Sunsoft ?? | Mito Koumon
90 | ?? | Super Mario World, Mortal Kombat 3, Tekken 2
92 | Jaleco ?? | MOERO Pro Soccer
93 | ?? | Fantasy Zone
94 | ?? | Senjou no Ookami
95 | Namco 118 | Dragon Buster
96 | Bandai ?? | Oeka Kids
97 | ?? | Kaiketsu Yanchamaru
99 | VS System 8KB VROM Switch | VS SMB, VS Excite Bike
101 | Jaleco JF-10 | Urusei Yatsura
105 | NES-EVENT | Nintendo World Championships
107 | ?? | Magic Dragon
112 | Asder | Sango Fighter, Hwang Di
113 | MB-91 | Deathbots
114 | ?? | The Lion King
115 | ?? | Yuu Yuu Hakusho Final, Thunderbolt 2, Shisen Mahjian 2
117 | ?? | San Guo Zhi 4
118 | MMC3-TLSROM/TKSROM Board | Ys 3, Goal! 2, NES Play Action Football
119 | MMC3-TQROM Board | High Speed, Pin*Bot
133 | Sachen SA72008 | Jovial Race
134 | Sachen 74LS374N | Olympic IQ
135 | Sachen 8259A | Super Pang
140 | Jaleco ?? | Bio Senshi Dan
144 | AGCI 50282 | Death Race
150 | Camerica BF9097 | FireHawk
151 | Konami VS System Expansion | VS The Goonies, VS Gradius
152 | ?? | Arkanoid 2, Saint Seiya Ougon Densetsu
153 | Bandai ?? | Famicom Jump 2
154 | Namco ?? | Devil Man
155 | MMC1 w/o normal WRAM disable | The Money Game, Tatakae!! Rahmen Man
156 | ?? | Buzz and Waldog
157 | Bandai Datach ?? | Datach DBZ, Datach SD Gundam Wars, **EEPROM is not emulated
158 | RAMBO 1 Derivative | Alien Syndrome
159 | Bandai ??(X24C01P EEPROM) | Magical Taruruuto-kun
160 | (same as mapper 90) | (same as mapper 90)
180 | ?? | Crazy Climber
182 | ?? | Super Donkey Kong
184 | ?? | Wing of Madoola, The
185 | CNROM w/ CHR ROM unmapping | Banana, Mighty Bomb Jack, Spy vs Spy(Japanese)
189 | ?? | Thunder Warrior, Street Fighter 2 (Yoko)
190 | ?? | Magic Kid Googoo
193 | Mega Soft | Fighting Hero
206 | DEIROM | Karnov
207 | Taito ?? | Fudou Myouou Den
208 | ?? | Street Fighter IV (by Gouder)
209 | (mapper 90 w/ name-table control mode enabled) | Shin Samurai Spirits 2, Power Rangers III
210 | Namco ?? | Famista '92, Famista '93, Wagyan Land 2
215 | Bootleg multi-cart ?? | Super 308 3-in-1
217 | Bootleg multi-cart ?? | Golden Card 6-in-1
222 | Bootleg ?? | Dragon Ninja
228 | Action 52 | Action 52, Cheetahmen 2
232 | BIC-48 | Quattro Arcade, Quattro Sports
234 | Multi-cart ?? | Maxi-15
240 | ?? | Gen Ke Le Zhuan, Shen Huo Le Zhuan
241 | ?? | Journey to the West
242 | ?? | Wai Xing Zhan Shi
244 | ?? | Decathalon
246 | ?? | Fong Shen Ban
248 | ?? | Bao Qing Tian
249 | Waixing ?? | ??
250 | ?? | Time Diver Avenger

#### UNIF

Mednafen supports the following UNIF boards. The prefixes HVC-, NES-, BTL-, and BMC- are omitted, since they are currently ignored in Mednafen's UNIF loader.

Group:
Name: | Game Examples:
--- | ---
Bootleg:
BioMiracleA | Mario Baby
MARIO1-MALEE2 | Super Mario Bros. Malee 2
NovelDiamond9999999in1 | Novel Diamond 999999 in 1
Super24in1SC03 | Super 24 in 1
Supervision16in1 | Supervision 16-in-1
Unlicensed:
UNL-603-5052 | Contra Fighter
NINA-06 | F-15 City War
Sachen-8259A | Super Cartridge Version 1
Sachen-8259B | Silver Eagle
Sachen-74LS374N | Auto Upturn
SA-016-1M | Master Chu and the Drunkard Hu
SA-72007 | Sidewinder
SA-72008 | Jovial Race
SA-0036 | Mahjong 16
SA-0037 | Mahjong Trap
TC-U01-1.5M | Challenge of the Dragon
8237 | Pocahontas Part 2
MMC1:
SAROM | Dragon Warrior
SBROM | Dance Aerobics
SCROM | Orb 3D
SEROM | Boulderdash
SGROM | Defender of the Crown
SKROM | Dungeon Magic
SLROM | Castlevania 2
SL1ROM | Sky Shark
SNROM | Shingen the Ruler
SOROM | Nobunaga's Ambition
MMC2:
PEEOROM | Mike Tyson's Punch Out
PNROM | Punch Out
MMC3:
TFROM | Legacy of the Wizard
TGROM | Megaman 4
TKROM | Kirby's Adventure
TKSROM | Ys 3
TLROM | Super Spike V'Ball
TLSROM | Goal! 2
TR1ROM | Gauntlet
TQROM | Pinbot
TSROM | Super Mario Bros. 3
TVROM | Rad Racer 2
MMC5:
EKROM | Gemfire
ELROM | Castlevania 3
ETROM | Nobunaga's Ambition 2
EWROM | Romance of the Three Kingdoms 2
MMC6:
HKROM | Star Tropics
FME7:
BTR | Batman: Return of the Joker
Nintendo Discrete Logic:
CNROM | Gotcha
CPROM | Videomation
GNROM | Super Mario Bros./Duck Hunt
MHROM |
NROM-128 | Mario Bros.
NROM-256 | Super Mario Bros.
RROM-128 |
UNROM | Megaman

### Famicom Disk System

You will need the FDS BIOS ROM image in the base Mednafen directory. It must be named "disksys.rom". Mednafen will not load FDS games without this file.

Two types of FDS disk images are supported: disk images with the FWNES-style header, and disk images with no header. The number of sides on headerless disk images is calculated by the total file size, so don't put extraneous data at the end of the file.

If a loaded disk image is written to during emulation, Mednafen will store the modified disk image in the save games directory, which is by default "sav" under the base directory.

### Game Genie

The Game Genie ROM image is loaded from the path specified by the setting "nes.ggrom", or, if that string is not set, the file "gg.rom" in the base directory when Game Genie emulation is enabled.

The ROM image may either be the 24592 byte iNES-format image, or the 4352 byte raw ROM image.

### VS Unisystem

Mednafen currently only supports VS Unisystem ROM images in the iNES format. DIP switches and coin insertion are both emulated. The following games are supported, and have palettes provided(though not necessarily 100% accurate or complete):

Battle City
Castlevania
Clu Clu Land
Dr. Mario
Duck Hunt
Excitebike
Excitebike (Japanese)
Freedom Force
Goonies, The
Gradius
Gumshoe
Hogan's Alley
Ice Climber
Ladies Golf
Mach Rider
Mach Rider (Japanese)
Mighty Bomb Jack (Japanese)
Ninja Jajamaru Kun (Japanese)
Pinball
Pinball (Japanese)
Platoon
RBI Baseball
Slalom
Soccer
Star Luster
Stroke and Match Golf
Stroke and Match Golf - Ladies
Stroke and Match Golf (Japanese)
Super Mario Bros.
Super Sky Kid
Super Xevious
Tetris
TKO Boxing
Top Gun

## Default Key Assignments

Key(s): | Action: | Configuration String:
--- | --- | ---
ALT + SHIFT + 1 | Activate in-game input configuration process for input port 1. | input_config1
ALT + SHIFT + 2 | Activate in-game input configuration process for input port 2. | input_config2
ALT + SHIFT + 3 | Activate in-game input configuration process for input port 3. | input_config3
ALT + SHIFT + 4 | Activate in-game input configuration process for input port 4. | input_config4
ALT + SHIFT + 5 | Activate in-game input configuration process for the Famicom expansion port. | input_config5

### VS Unisystem

Key: | Action: | Configuration String:
--- | --- | ---
F8 | Insert coin. | insert_coin
F6 | Show/Hide dip switches. | toggle_dipview
1-8 | Toggle dip switches(when dip switches are shown). | "1" through "8"

### Famicom Disk System

Key: | Action: | Configuration String:
--- | --- | ---
F6 | Select disk and disk side. | select_disk
F8 | Eject or Insert disk. | insert_eject_disk

### Barcode Readers

Key: | Action: | Configuration String:
--- | --- | ---
0-9 | Barcode digits(after activating barcode input). | "0" through "9"
F8 | Activate barcode input/scan barcode. | activate_barcode

### Game Pad

Key: | Button on Emulated Gamepad:
--- | ---
Keypad 2 | B
Keypad 3 | A
Enter/Return | Start
Tab | Select
S | Down
W | Up
A | Left
D | Right

### Power Pad

Side B
O | P | [ | ]
K | L | ; | '
M | , | . | /

Side A
| P | [ |
K | L | ; | '
| , | . |

### Family Keyboard

All emulated keys are mapped to the closest open key on the PC keyboard, with a few exceptions. The emulated "@" key is mapped to the "`"(grave) key, and the emulated "kana" key is mapped to the "Insert" key(in the 3x2 key block above the cursor keys).

To use the Family Keyboard emulation properly, press SHIFT + Scroll Lock, which will cause input to be grabbed from the window manager(if present) and disable Mednafen's other internal command processing.

### HyperShot Controller

| Run | Jump
Controller I | Q | W
Controller II | E | R

### Mahjong Controller

Emulated Mahjong Controller: | A | B | C | D | E | F | G | H | I | J | K | L | M | N
PC Keyboard: | Q | W | E | R | T | A | S | D | F | G | H | J | K | L

Emulated Mahjong Controller: | SEL | ST | ? | ? | ? | ? | ?
PC Keyboard: | Z | X | C | V | B | N | M

### Party Tap Controller

Emulated Buzzer: | 1 | 2 | 3 | 4 | 5 | 6
PC Keyboard: | Q | W | E | R | T | Y

## Game-specific Emulation Hacks

Title: | Description: | Source code files affected:
--- | --- | ---
KickMaster | KickMaster relies on the low-level behavior of the MMC3(PPU A12 low->high transition) to work properly in certain parts. If an IRQ begins at the "normal" time on the last visible scanline(239), the game will crash after beating the second boss and retrieving the item. The hack is simple, to clock the IRQ counter twice on scanline 238. | src/nes/boards/mmc3.cpp
Shougi Meikan '92 Shougin Meikan '93 | The hack for these games is identical to the hack for KickMaster. | src/nes/boards/mmc3.cpp
Star Wars (PAL/European Version) | This game probably has the same(or similar) problem on Mednafen as KickMaster. The hack is to clock the IRQ counter twice on the "dummy" scanline(scanline before the first visible scanline). | src/nes/boards/mmc3.c

## Settings Reference

Caution: Any settings that change emulation behavior as seen from the emulated game are shown with the setting name bolded in the table. One should be conscious of these settings if one has changed them from the default values when using network play or movies, as they can cause desychronizations if not set the same among hosts(or between the recording emulator and the playing emulator).

Setting: | Value Type: | Possible Values: | Default Value: | Description:
--- | --- | --- | --- | ---
nes.clipsides | boolean | 0 1 | 0 | Clip left+right 8 pixel columns.
nes.correct_aspect | boolean | 0 1 | 0 | Correct the aspect ratio.
nes.fnscan | boolean | 0 1 | 1 | Scan filename for (U),(J),(E),etc. strings to en/dis-able PAL emulation. Caution: Enabling this option may break NES network play if the players are using ROM images with different filenames.
nes.gg | boolean | 0 1 | 0 | Enable Game Genie emulation.
nes.ggrom | string |  | gg.rom | Path to Game Genie ROM image.
nes.input.fcexp | enum | none arkanoid shadow 4player fkb hypershot mahjong partytap ftrainera ftrainerb oekakids bworld | none | Input device for Famicom Expansion Port none - none arkanoid - Arkanoid Paddle shadow - Space Shadow Gun 4player - 4-player Adapter fkb - Family Keyboard Emulated keyboard key state is not updated unless input grabbing(by default, mapped to CTRL+SHIFT+Menu) is toggled on; refer to the main documentation for details. hypershot - Hypershot Paddles mahjong - Mahjong Controller partytap - Party Tap ftrainera - Family Trainer Side A ftrainerb - Family Trainer Side B oekakids - Oeka Kids Tablet bworld - Barcode Battler II
nes.input.port1 | enum | none gamepad zapper powerpada powerpadb arkanoid | gamepad | Input device for Port 1 none - none gamepad - Gamepad zapper - Zapper powerpada - Power Pad Side A powerpadb - Power Pad Side B arkanoid - Arkanoid Paddle
nes.input.port2 | enum | none gamepad zapper powerpada powerpadb arkanoid | gamepad | Input device for Port 2 none - none gamepad - Gamepad zapper - Zapper powerpada - Power Pad Side A powerpadb - Power Pad Side B arkanoid - Arkanoid Paddle
nes.input.port3 | enum | none gamepad | gamepad | Input device for Port 3 none - none gamepad - Gamepad
nes.input.port4 | enum | none gamepad | gamepad | Input device for Port 4 none - none gamepad - Gamepad
nes.n106bs | boolean | 0 1 | 0 | Enable less-accurate, but better sounding, Namco 106(mapper 19) sound emulation.
nes.no8lim | boolean | 0 1 | 0 | Remove 8-sprites-per-scanline hardware limit. Caution: Enabling this option will cause graphical glitches in some games, including "Solstice".
nes.nofs | boolean | 0 1 | 0 | Disable four-score emulation.
nes.ntsc.brightness | real | -1 through 1 | 0 | NTSC composite blitter brightness.
nes.ntsc.contrast | real | -1 through 1 | 0 | NTSC composite blitter contrast.
nes.ntsc.hue | real | -1 through 1 | 0 | NTSC composite blitter hue.
nes.ntsc.matrix | boolean | 0 1 | 0 | Enable NTSC custom decoder matrix.
nes.ntsc.matrix.0 | real | -2.000 through 2.000 | 1.539 | NTSC custom decoder matrix element 0(red, value * V).
nes.ntsc.matrix.1 | real | -2.000 through 2.000 | -0.622 | NTSC custom decoder matrix element 1(red, value * U).
nes.ntsc.matrix.2 | real | -2.000 through 2.000 | -0.571 | NTSC custom decoder matrix element 2(green, value * V).
nes.ntsc.matrix.3 | real | -2.000 through 2.000 | -0.185 | NTSC custom decoder matrix element 3(green, value * U).
nes.ntsc.matrix.4 | real | -2.000 through 2.000 | 0.000 | NTSC custom decoder matrix element 4(blue, value * V).
nes.ntsc.matrix.5 | real | -2.000 through 2.000 | 2.000 | NTSC custom decoder matrix element 5(blue, value * U.
nes.ntsc.mergefields | boolean | 0 1 | 0 | Merge fields to partially work around !=60.1Hz refresh rates.
nes.ntsc.preset | enum | disabled composite svideo rgb monochrome | none | Video quality/type preset. disabled - Disabled composite - Composite Video svideo - S-Video rgb - RGB monochrome - Monochrome
nes.ntsc.saturation | real | -1 through 1 | 0 | NTSC composite blitter saturation.
nes.ntsc.sharpness | real | -1 through 1 | 0 | NTSC composite blitter sharpness.
nes.ntscblitter | boolean | 0 1 | 0 | Enable NTSC color generation and blitter. NOTE: If your refresh rate isn't very close to 60.1Hz(+-0.1), you will need to set the "nes.ntsc.mergefields" setting to "1" to avoid excessive flickering.
nes.pal | boolean | 0 1 | 0 | Enable PAL(50Hz) NES emulation.
nes.slend | integer | 0 through 239 | 231 | Last displayed scanline in NTSC mode.
nes.slendp | integer | 0 through 239 | 239 | Last displayed scanline in PAL mode.
nes.slstart | integer | 0 through 239 | 8 | First displayed scanline in NTSC mode.
nes.slstartp | integer | 0 through 239 | 0 | First displayed scanline in PAL mode.
nes.sound_rate_error | real | 0.0000001 through 0.01 | 0.00004 | Output rate tolerance. Lower values correspond to better matching of the output rate of the resampler to the actual desired output rate, at the expense of increased RAM usage and poorer CPU cache utilization. DO NOT INCREASE THIS VALUE, OR SOUND WILL LIKELY BE OFF-KEY AND THE WRONG TEMPO, AMONG OTHER PROBLEMS.
nes.soundq | integer | -2 through 3 | 0 | Sound quality. Higher values correspond to better SNR and better preservation of higher frequencies("brightness"), at the cost of increased computational complexity and a negligible(<0.5ms) increase in latency.

Setting: | Value Type: | Possible Values: | Default Value: | Description:
--- | --- | --- | --- | ---
nes.debugger.disfontsize | enum | 5x7 6x9 6x12 6x13 9x18 | 5x7 | Disassembly font size. Note: Setting the font size to larger than the default may cause text overlap in the debugger. 5x7 - 5x7 6x9 - 6x9 6x12 - 6x12 6x13 - 6x13. CJK support. 9x18 - 9x18; CJK support.
nes.debugger.memcharenc | string |  | cp437 | Character encoding for the debugger's memory editor.
nes.enable | boolean | 0 1 | 1 | Enable (automatic) usage of this module.
nes.scanlines | integer | -100 through 100 | 0 | Enable scanlines with specified opacity. Opacity is specified in %; IE a value of "100" will give entirely black scanlines. Negative values are the same as positive values for non-interlaced video, but for interlaced video will cause the scanlines to be overlaid over the previous(if the "video.deinterlacer" setting is set to "weave", the default) field's lines.
nes.shader | enum | none autoip autoipsharper scale2x sabr ipsharper ipxnoty ipynotx ipxnotysharper ipynotxsharper goat | none | Enable specified OpenGL shader. Obviously, this will only work with the OpenGL "video.driver" setting, and only on cards and OpenGL implementations that support shaders, otherwise you will get a black screen, or Mednafen may display an error message when starting up. When a shader is enabled, the "nes.videoip" setting is ignored. none - None/Disabled autoip - Auto Interpolation Will automatically interpolate on each axis if the corresponding effective scaling factor is not an integer. autoipsharper - Sharper Auto Interpolation Same as "autoip", but when interpolation is done, it is done in a manner that will reduce blurriness if possible. scale2x - Scale2x sabr - SABR v3.0 GPU-intensive. ipsharper - Sharper bilinear interpolation. ipxnoty - Linear interpolation on X axis only. ipynotx - Linear interpolation on Y axis only. ipxnotysharper - Sharper version of "ipxnoty". ipynotxsharper - Sharper version of "ipynotx". goat - Simple approximation of a color TV CRT look. Intended for fullscreen modes with a vertical resolution of around 1000 to 1500 pixels. Doesn't simulate halation and electron beam energy distribution nuances.
nes.shader.goat.fprog | boolean | 0 1 | 0 | Force interlaced video to be treated as progressive. When disabled, the default, the "video.deinterlacer" setting is effectively ignored with respect to what appears on the screen, unless it's set to "blend" or "blend_rg". When enabled, it may be prudent to disable the scanlines effect controlled by the "nes.shader.goat.slen" setting, or else the scanline effect may look objectionable.
nes.shader.goat.hdiv | real | -2.00 through 2.00 | 0.50 | Constant RGB horizontal divergence.
nes.shader.goat.pat | enum | goatron borg slenderman | goatron | Mask pattern. goatron - Goatron Brightest. borg - Borg Darkest. slenderman - Slenderman Spookiest?
nes.shader.goat.slen | boolean | 0 1 | 1 | Enable scanlines effect.
nes.shader.goat.tp | real | 0.00 through 1.00 | 0.50 | Transparency of otherwise-opaque mask areas.
nes.shader.goat.vdiv | real | -2.00 through 2.00 | 0.50 | Constant RGB vertical divergence.
nes.special | enum | none hq2x hq3x hq4x scale2x scale3x scale4x 2xsai super2xsai supereagle nn2x nn3x nn4x nny2x nny3x nny4x | none | Enable specified special video scaler. The destination rectangle is NOT altered by this setting, so if you have xscale and yscale set to "2", and try to use a 3x scaling filter like hq3x, the image is not going to look that great. The nearest-neighbor scalers are intended for use with bilinear interpolation enabled, for a sharper image, though the "autoipsharper" shader may provide better results. none - None/Disabled hq2x - hq2x hq3x - hq3x hq4x - hq4x scale2x - scale2x scale3x - scale3x scale4x - scale4x 2xsai - 2xSaI super2xsai - Super 2xSaI supereagle - Super Eagle nn2x - Nearest-neighbor 2x nn3x - Nearest-neighbor 3x nn4x - Nearest-neighbor 4x nny2x - Nearest-neighbor 2x, y axis only nny3x - Nearest-neighbor 3x, y axis only nny4x - Nearest-neighbor 4x, y axis only
nes.stretch | enum | 0 full aspect aspect_int aspect_mult2 | aspect_mult2 | Stretch to fill screen. 0 - Disabled full - Full Full-screen stretch, disregarding aspect ratio. aspect - Aspect Preserve Full-screen stretch as far as the aspect ratio(in this sense, the equivalent xscalefs == yscalefs) can be maintained. aspect_int - Aspect Preserve + Integer Scale Full-screen stretch, same as "aspect" except that the equivalent xscalefs and yscalefs are rounded down to the nearest integer. aspect_mult2 - Aspect Preserve + Integer Multiple-of-2 Scale Full-screen stretch, same as "aspect_int", but rounds down to the nearest multiple of 2.
nes.tblur | boolean | 0 1 | 0 | Enable video temporal blur(50/50 previous/current frame by default).
nes.tblur.accum | boolean | 0 1 | 0 | Accumulate color data rather than discarding it.
nes.tblur.accum.amount | real | 0 through 100 | 50 | Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame.
nes.videoip | enum | 0 1 x y | 0 | Enable (bi)linear interpolation. 0 - Disabled 1 - Bilinear x - Linear (X) Interpolation only on the X axis. y - Linear (Y) Interpolation only on the Y axis.
nes.xres | integer | 0 through 65536 | 0 | Full-screen horizontal resolution. A value of "0" will cause the current desktop horizontal resolution to be used.
nes.xscale | real | 0.01 through 256 | 4.000000 | Scaling factor for the X axis in windowed mode.
nes.xscalefs | real | 0.01 through 256 | 1.000000 | Scaling factor for the X axis in fullscreen mode. For this setting to have any effect, the "nes.stretch" setting must be set to "0".
nes.yres | integer | 0 through 65536 | 0 | Full-screen vertical resolution. A value of "0" will cause the current desktop vertical resolution to be used.
nes.yscale | real | 0.01 through 256 | 4.000000 | Scaling factor for the Y axis in windowed mode.
nes.yscalefs | real | 0.01 through 256 | 1.000000 | Scaling factor for the Y axis in fullscreen mode. For this setting to have any effect, the "nes.stretch" setting must be set to "0".

## Credits

(This section is woefully outdated, being mostly copied from FCE Ultra)

Name: | Contribution(s):
--- | ---
\Firebug\ | High-level mapper information.
Bero | Original FCE source code.
Brad Taylor | NES sound information.
EFX | Testing.
Fredrik Olson | NES four-player adapter information.
goroh | Various documents.
Jeremy Chadwick | General NES information.
kevtris | Low-level NES information and sound information.
Ki | Various technical information.
Mark Knibbs | Various NES information.
Marat Fayzullin | General NES information.
Matthew Conte | Sound information.
nori | FDS sound information.
rahga | Famicom four-player adapter information.
TheRedEye | ROM images, testing.
...and everyone whose name my mind has misplaced.