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¶
External Links¶
- Official Mesen Website
- Official Mesen Documentation
- Official Mesen Downloads
- Official Mesen Changelog
- Libretro Mesen Core info file
- Official Mesen Github Repository
- Report Libretro Mesen Core Issues Here
- Gameplay Videos