Skip to content
Yet Another NES Emulator
Branch: master
Clone or download
FIX94 -added support for mappers 80, 82 and 207
-clearing prg ram on first creation so theres no random garbage in new saves
Latest commit 137b5fc Feb 17, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
libretro
mapper
mapper_h
unzip -ZIP support, the first found supported file will be used Aug 24, 2017
LICENSE
README.md
alhelpers.c
alhelpers.h
apu.c -slightly reduced default volume to reduce potential clipping Jan 16, 2019
apu.h
audio.c -added nsf track display instead of it being console only Jun 27, 2017
audio.h -general bug fixing and performance improvements (especially when pla… Feb 15, 2017
audio_fds.c
audio_fds.h
audio_mmc5.c
audio_mmc5.h
audio_n163.c
audio_n163.h -reworked most of the code related to how memory is read and written … Jul 15, 2018
audio_s5b.c
audio_s5b.h -reworked most of the code related to how memory is read and written … Jul 15, 2018
audio_vrc6.c
audio_vrc6.h
audio_vrc7.c
audio_vrc7.h
build_linux.sh -various small changes to further increase overall performance Jul 21, 2018
build_msys32.sh
common.h
cpu.c
cpu.h
fm2play.c
fm2play.h
input.c
input.h -reworked most of the code related to how memory is read and written … Jul 15, 2018
main.c
mapper.c -reworked most of the code related to how memory is read and written … Jul 15, 2018
mapper.h -reworked most of the code related to how memory is read and written … Jul 15, 2018
mapperList.c
mapperList.h -reworked most of the code related to how memory is read and written … Jul 15, 2018
mem.c
mem.h
ppu.c -various small changes to further increase overall performance Jul 21, 2018
ppu.h
vrc_irq.c
vrc_irq.h -reworked most of the code related to how memory is read and written … Jul 15, 2018

README.md

fixNES

This is yet another NES Emulator which was written so I can learn about the NES, right now it is not in the most "complete" or cleanest state.
If you want to check it out for some reason I do include a windows binary in the "Releases" tab, if you want to compile it see the compiling infos below.

Loading Files:
NTSC and PAL .nes ROMs are supported, it also creates .sav files if the chosen game supports saving. If you are starting a PAL NES title then make sure it has (E),(Europe),(PAL),(Australia),(France),(Germany),(Italy),(Spain) or (Sweden) in the filename to be started in PAL mode.
You can also play FDS titles if you have the FDS BIOS named disksys.rom in the same folder as your .fds/.qd files.
You can also listen to .nsf music files, changing tracks works by pressing left/right.
To start a file, simply drag and drop it into the fixNES Application or call it via command line with the file as argument.
You can also load from a .zip file, the first found supported file from that .zip will be used.

Supported .nes Mappers:
0,1,2,3,4,5,7,9,10,11,12,13,15,19,21,22,23,24,25,26,28,30,31,32,33,34,36,37,38,41,44,45,46,47,48,49,52,57,58,60,61,62,64,65,66,67,68,69,70,71,73,75,76,77,78,79,80,82,85,87,88,89,93,94,95,97,101,107,112,113,118,119,132,133,136,137,138,139,140,141,144,145,146,147,148,149,152,154,155,156,158,172,173,174,180,184,185,193,200,201,202,203,205,206,207,210,212,221,225,226,228,229,230,231,232,235,237,240 and 242.
Supported Audio Expansions (for both ROMs and NSF Files):
VRC6, VRC7, FDS, MMC5, N163, Sunsoft 5B

Controls right now are keyboard only and do the following:
Y/Z is A
X is B
A is Start
S is select
Arrow Keys is DPad
Keys 1-9 integer-scale the window to number
P is Pause
Ctrl+R is Soft Reset
B is Disk Switching (for FDS)
O is Enable/Disable vertical Overscan
If you really want controller support and you are on windows, go grab joy2key, it works just fine with fixNES (and fixGB).

Infos on compiling:
The easiest you can do is use the build .bat/.sh files to just call up gcc with the full command line to compile the standalone version.
For the standalone you will at least need freeglut as well as openal-soft, it should run on most systems since it is fairly generic C code.
Also you can use this as a core for retroarch by using the Makefile in the libretro folder.

There are several defines you can add/remove for different options for both the standalone version and the retroarch core: AUDIO_LOWERFREQ
Reduces the output frequency of the emulator for more performance
COL_32BIT
Changes the output texture to be 32bit per pixel (RGBA8) instead of 16bit (RGB565)
COL_BGRA
Used in combination with COL_32BIT, this will change the output texture to BGRA8 instead of RGBA8
COL_TEX_BSWAP
In 32bit per pixel mode, this will change the byte order of the output texture, in 16bit mode this will output in BGR565
DO_INLINE_ATTRIBS
Will use optimized function inline attributes for more overall performance

These defines are specific to the standalone version:
AUDIO_FLOAT
Will output the audio as 32bit float instead of 16bit short
COL_GL_BSWAP
Switches the byte order used for the drawn opengl texture, does not need to be touched if you dont have performance issues on your system
WINDOWS_BUILD
Changes some calls to make it easily compilable on windows with something like mingw gcc
ZIPSUPPORT
Allows you to load roms directly from .zip files if you have a usable zlib installation

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.