Skip to content

Nintendo - NES / Famicom (Mesen)

Background

Mesen is a high-accuracy NES and Famicom emulator and NSF player for Windows and Linux.

Features

  • High Accuracy: A lot of effort has gone into making Mesen as accurate as possible.
  • High Compatibility: Over 220 mappers supported (all licensed games supported)
  • NES, Famicom, Famicom Disk System, Dendy, VS System, NSF and NSFe emulation is supported.
  • General: Save States, Rewinding, Movie/Audio Recording, Overclocking, Cheat Codes.
  • Video: Numerous video filters, customizable palettes/overscan, support for HDNes' HD packs.
  • Audio: Stereo effects, per-channel volume and panning, equalizer, etc.
  • Misc: Netplay, 7z/zip support, IPS/BPS patch support, automatic updates, and more!

Author/License

The Mesen core has been authored by

  • M. Bibaud (aka Sour)

The Mesen core is licensed under

A summary of the licenses behind RetroArch and its cores can be found here.

Extensions

Content that can be loaded by the Mesen core have the following file extensions:

  • .nes
  • .fds
  • .unf
  • .unif

Databases

RetroArch database(s) that are associated with the Mesen core:

BIOS

Required or optional firmware files go in the frontend's system directory.

Filename Description md5sum
disksys.rom Family Computer Disk System BIOS - Required for Family Computer Disk System emulation ca30b50f880eb660a320674ed365ef7a

Features

Frontend-level settings or features that the Mesen core respects.

Feature Supported
Restart
Screenshots
Saves
States
Rewind
Netplay
Core Options
RetroAchievements
RetroArch Cheats
Native Cheats
Controls
Remapping
Multi-Mouse
Rumble
Sensors
Camera
Location
Subsystem
Softpatching
Disk Control
Username
Language
Crop Overscan
LEDs

Directories

The Mesen core's library name is 'Mesen'

The Mesen core saves/loads to/from these directories.

Frontend's Save directory

File Description
*.srm Cartridge battery save

Frontend's State directory

File Description
*.state# State

Frontend's System directory

File Description
MesenPalette.pal Custom palette
HdPacks/* HD Pack directory

Geometry and timing

  • The Mesen core's core provided FPS is NTSC 60, PAL/Dendy 50
  • The Mesen core's core provided sample rate is 48000 Hz
  • The Mesen core's base width is 256
  • The Mesen core's base height is 240
  • The Mesen core's max width is 256 (higher when using HD Packs)
  • The Mesen core's max height is 240 (higher when using HD Packs)
  • The Mesen core's core provided aspect ratio is dependent on the 'Aspect Ratio' core option.

Custom Palettes

To use custom color palettes in the Mesen core, the 'Palette' core option must be set to Custom and the custom color palette file you want to use must be in RetroArch's system directory.

Make sure the custom palette file is named 'MesenPalette.pal'

Custom color palettes for the NES can be generated with either of these tools.

HD packs

Attention

There is more HD pack documentation at the official Mesen documentation.

To use HD packs, first make sure to turn on the Enable HD Packs core option

First, create a folder named 'HdPacks' in RetroArch's System directory.

Next, create a folder inside the HdPacks directory that has the same name as the content you're going to load.

So, if the content you're loading is Mega Man (USA).nes, the folder should be named 'Mega Man (USA)'.

Finally, extract the HD pack content files to the Mega Man (USA) folder.

Here's an example of a working HD pack setup done with Mega Man 1 (NES) - 30th Anniversary 16-bit Graphic Pack.

Pay attention to the file path.

Core options

The Mesen core has the following option(s) that can be tweaked from the core options menu. The default setting is bolded.

Settings with (Restart) means that core has to be closed for the new setting to be applied on next launch.

Attention

These core option descriptions have been sourced from the official Mesen documentation. Please go there for more information.

  • NTSC filter [mesen_ntsc_filter] (Disabled/Composite (Blargg)/S-Video (Blargg)/RGB (Blargg)/Monochrome (Blargg)/Bisqwit 2x/Bisqwit 4x/Bisqwit 8x)

    Selects a filter to apply to the picture.

    Blargg filters are fast.

    Bisqwit filters are slower.

  • Palette [mesen_palette] (Default/Composite Direct (by FirebrandX)/Nes Classic/Nestopia (RGB)/Original Hardware (by FirebrandX)/PVM Style (by FirebrandX)/Sony CXA2025AS/Unsaturated v6 (by FirebrandX)/YUV v3 (by FirebrandX)/Custom)

    Mesen comes with a number of built-in palette options - you can select them from here.

  • Overclock [mesen_overclock] (None/Low/Medium/High/Very High)

    Use this to overclock or underclock the CPU.

Warning

Overclocking can cause issues in some games.

  • Overclock Type [mesen_overclock_type] (Before NMI (Recommended)/After NMI)

    Before NMI: Increases the number of scanlines in the PPU, before the NMI signal is triggered at the end of the visible frame. This effectively gives more time for games to perform calculations, which can reduce slowdowns in games. This is the preferred option for overclocking.

    After NMI: Increases the number of scanlines in the PPU, after the NMI signal is triggered at the end of the visible frame. This effectively gives more time for games to perform calculations, which can reduce slowdowns in games. This option is less compatible and should only be used if the before NMI variation does not work as expected.

  • Region [mesen_region] (Auto/NTSC/PAL/Dendy)

    When set to Auto, the emulator will try to detect the game’s region (NTSC or PAL) - however, this is not always possible. When there is nothing to suggest a game is for the PAL region (Australia & Europe), the NTSC region (North America & Japan) will be used by default. Dendy is used to mimic a number of different NES clones, in particular, the Dendy, which was a popular clone in Russia.

  • Vertical Overscan [mesen_overscan_vertical] (None/8px/16px)

    This overscan setting allow you to cut out pixels vertically on any edge of the screen. On a CRT TV, a few pixels on each side of the screen was usually invisible to the player. Because of this, games often have glitches or incorrect palette colors on the edges of the screen – this is normal and caused by the game itself. Setting a value of 8 or so on each side of the overscan configuration will usually hide most glitches.

  • Horizontal Overscan [mesen_overscan_horizontal] (None/8px/16px)

    This overscan setting allow you to cut out pixels horizontally on any edge of the screen. On a CRT TV, a few pixels on each side of the screen was usually invisible to the player. Because of this, games often have glitches or incorrect palette colors on the edges of the screen – this is normal and caused by the game itself. Setting a value of 8 or so on each side of the overscan configuration will usually hide most glitches.

  • Aspect Ratio [mesen_aspect_ratio] (Auto/No Stretching/NTSC/PAL/4:3/16:9)

    The NES’ internal aspect ratio is almost square (Default (No Stretching)), but it used to be displayed on CRT TVs that had a rectangular picture. To simulate a CRT TV, you can use the Auto option - it will switch between NTSC and PAL aspect ratios depending on the game you are playing. Using anything other than the Default (No Stretching) option may cause pixels to have irregular sizes. You can reduce this effect by using a combination of video filters and the bilinear filtering option.

  • Controller Turbo Speed [mesen_controllerturbospeed] (Fast/Very Fast/Disabled/Slow/Normal)

    Configure the controller's turbo buttons' speed.

  • Enable HD Packs [mesen_hdpacks] (Off/On)

    Enables the use of HD packs. Look at the HD packs section for more information.

  • Remove sprite limit [mesen_nospritelimit] (Off/On)

    The NES can normally only draw up to 8 sprites per line – this limitation is indirectly responsible for some of the flickering seen in games at times. When this option is enabled, the limit is disabled, allowing up to 64 sprites to be drawn on the same line.

  • Enable fake stereo effect [mesen_fake_stereo] (Off/On)

    Self-explanatory.

  • Reduce popping on Triangle channel [mesen_mute_triangle_ultrasonic] (Off/On)

    This option mutes the triangle channel under certain conditions, which prevents it from causing popping sounds.

  • Reduce popping on DMC channel [mesen_reduce_dmc_popping] (Off/On)

    Similar to the previous option, but for the DMC channel – this option prevents games from changing the output of the DMC channel too abruptly, which often causes popping sounds.

  • Swap Square channel duty cycles [mesen_swap_duty_cycle] (Off/On)

    This option is to mimic some older NES clones that had incorrect sound output for both of the square channels. It greatly alters the sound in some games, and shouldn’t be enabled unless you want this behavior.

  • Disable Noise channel mode flag [mesen_disable_noise_mode_flag] (Off/On)

    Very early Famicom models did not implement this feature, so this option is available to mimic early Famicom consoles. It changes the sound output of the noise channel in some games, and shouldn’t be enabled unless you want this behavior.

  • Screen Rotation [mesen_screenrotation] (None/90 degrees/180 degrees/270 degrees)

    Rotates the display by the specified angle. This is useful to play games (generally homebrew games) designed for a vertical display.

  • Default power-on state for RAM [mesen_ramstate] (All 0s (Default)/All 1s/Random Values)

    On a console, the RAM’s state at power on is undetermined and relatively random. This option lets you select Mesen’s behavior when initializing RAM - set all bits to 0, set all bits to 1, or randomize the value of each bit.

  • FDS: Automatically insert disks [mesen_fdsautoinsertdisk] (Off/On)

    By default, the FDS boots with no disk inserted in the drive. This option makes it so the player does not need to manually insert disk 1, side A manually.

  • FDS: Fast forward while loading [mesen_fdsfastforwardload] (Off/On)

    FDS games contain a large number of load screens due to their data being stored on floppy drives. Mesen needs to emulate this floppy drive’s speed to ensure accurate emulation. This option makes it so Mesen runs the emulation as fast as it can when a game is loading data from the disk, which greatly reduces the time spent on loading screens.

Controllers

The Mesen core supports the following device type(s) in the controls menu, bolded device types are the default for the specified user(s):

User 1 - 2 device types

  • None - Input disabled.
  • Auto - Joypad - Automatically selects an input device according to the data in the game database.
  • Standard Controller - Joypad - Manually selects a standard game controller.
  • Zapper - Pointer - Manually selects a Zapper light gun.
  • Power Pad - Joypad - Manually selects a Power Pad peripheral.
  • Arkanoid - Mouse - Manually selects an Arkanoid controller.
  • SNES Controller - Joypad - Manually selects a SNES Controller.
  • SNES Mouse - Mouse - Manually selects a SNES Mouse.

User 3 device types

  • None - Input disabled.
  • Auto - Joypad - Automatically selects an input device according to the data in the game database.
  • Standard Controller - Joypad - Manually selects a standard game controller.

User 4 device types

  • None - Input disabled.
  • Auto - Joypad - Automatically selects an input device according to the data in the game database.
  • Standard Controller - Joypad - Manually selects a standard game controller.

User 5 device types

  • None - Input disabled.
  • Auto - Joypad - Automatically selects an input device according to the data in the game database.
  • Arkanoid - Mouse - Manually selects an Arkanoid controller.
  • Ascii Turbo Fire - None - Manually selects an Ascii Turbo Fire device.
  • Bandai Hypershot - Pointer - Manually selects a Bandai Hypershot light gun.
  • Battle Box - None - Manually selects a Battle Box device.
  • Exciting Boxing - Joypad - Manually selects an Exciting Boxing punching bag.
  • Family Trainer - Joypad - Manually selects a Family Trainer peripheral.
  • Four Player Adapter - None - Manually selects a Four Player Adapter device.
  • Hori Track - Mouse - Manually selects a Hori Track trackball.
  • Konami Hypershot - Joypad - Manually selects a Konami Hypershot controller.
  • Pachinko - Joypad - Manually selects a Pachinko controller.
  • Partytap - Joypad - Manually selects Partytap controllers.

Other controllers

  • Oeka Kids Tablet - Pointer - The Mesen core will automatically select the Oeka Kids Tablet input device according to the data in the game database. It cannot be manually selected as a device type in RetroArch's controls menu.

Multitap support

Multitap support can be activated in the Mesen core by switching User 5's device type to Four Player Adapter.

Controller tables

Joypad

Attention

The (FDS) Insert Next Disk and (FDS) Switch Disk Side inputs will NOT do anything while the 'FDS: Automatically insert disks' core option is enabled.

User Remap descriptors for 'Standard Controller' device type RetroPad Inputs
A
B
Select
Start
D-Pad Up
D-Pad Down
D-Pad Left
D-Pad Right
Turbo A
Turbo B
(FDS) Insert Next Disk
(FDS) Switch Disk Side
(VS) Insert Coin 1
(VS) Insert Coin 2
(Famicom) Microphone
User Remap descriptors for 'SNES Controller' device type RetroPad Inputs
B
Y
Select
Start
D-Pad Up
D-Pad Down
D-Pad Left
D-Pad Right
A
X
L
R
User Remap descriptors for 'Power Pad' and 'Family Trainer' device types RetroPad Inputs
Powerpad B1
Powerpad B3
Powerpad B11
Powerpad B12
Powerpad B9
Powerpad B10
Powerpad B7
Powerpad B8
Powerpad B2
Powerpad B4
Powerpad B5
Powerpad B6
User Remap descriptors for 'Exciting Boxing' device type RetroPad Inputs
Left Hook
Left Jab
Move Left
Move Right
Right Hook
Right Jab
Body
Straight
User Remap descriptors for 'Pachinko' device type RetroPad Inputs
Release Trigger
Press Trigger
User Remap descriptors for 'Partytap' device type RetroPad Inputs
Partytap P1
Partytap P3
Partytap P2
Partytap P4
Partytap P5
Partytap P6
RetroPad Inputs Konami Hypershot
Jump
Run
Turbo Jump
Turbo Run

Mouse

RetroMouse Inputs Arkanoid SNES Mouse Hori Track
Mouse Cursor Arkanoid Movement SNES Mouse Cursor Hori Track Cursor
Mouse 1 Arkanoid Fire SNES Mouse Left Button Hori Track Left Button
Mouse 2 SNES Mouse Right Button Hori Track Right Button

Pointer

RetroPointer Inputs Zapper Bandai Hypershot Oeka Kids Tablet
or Pointer Position Zapper Crosshair Bandai Hypershot Crosshair Oeka Kids Tablet Stylus
Mouse 1 Zapper Fire Bandai Hypershot Fire Oeka Kids Tablet Click/Touch
Mouse 2 Zapper Offscreen Bandai Hypershot Offscreen

Compatibility

See also

Nintendo - Family Computer Disk System

Nintendo - Nintendo Entertainment System


Last update: 2024-04-25