In the future I will use this post to announce new releases and changes.
puNES is an emulator under development that works on Linux32/64 and Windows32. It needs of SDL library to run. Uncompress the zip/tar file in a subdirectory and use.
P.s. doesn't support zipped rom yet
Current version : 0.68
0.68 (bugfix release)
Correct a bug introduced in version 0.66 that in some circumstances, did not allow the filling of the audio buffer in time, producing a sound skipping.
Correct the support for the D-pad in the Windows version (reported by Alterac).
In the "Standard Pad" setup added a button (1 for Keyboard and 1 for Joystick) to unbind all buttons (suggested by Alterac).
Implemented the support of Drag & Drop of roms directly in the emulator window to load them (suggested by thefox).
Other small bugfixes.
Fixed some little bugs in the apu engine (sweep and triangle) and implemented the non-linearity and interaction between audio channels. Now (finally) the apu_mixer (http://wiki.nesdev.com/w/index.php/Emulator_tests
) test roms works well in puNES (I hope).
0.65 (bugfix relase)
Fixed a small bug introduced in version 0.64.
Adjusted slightly to stereo mode
Rewrite from scratch the audio subsytem and now there are two new options in the "Audio" menu, "Low" and "High" quality.
"Low" is the old engine, "High" is the new engine. Just try to hear the difference.
Fixed many bugs in APU emulation which is now much more accurate.
Added the ability to have a portable version of the emulator. Just rename the executable:
punes32 -> punes32_p
punes64 -> punes64_p
punes32.exe -> punes32_p.exe
punes64.exe -> punes64_p.exe
When the executable becomes a portable version, it create and use the folder where is the exe as the root folder.
0.63 (bugfix relase)
Correct a pitch and envelope problem reported from Dwedit (thanks for your help and for your patience).
Fixed a bug that could create sound skip and noise in the audio buffer.
Correct a bug introduced in version 0.62 of win64 that did not allow the emulator to start correctly.
Other small bugfixes.
Rewritten from scratch the OpenGL stack. Added new rendering mode "OpenGL GLSL" that use shaders for all filters (except for NTSC and HQ3x), of course if video card and its driver support it. In GLSL mode, add more filters. Many other bugfixes.
Added mappers 44, 45, 46, 47, 49, 50, 51, 52, 53, 57, 58, 60, 61, 62, 74, 116, 165, 191, 192, 194, 195, 199, 242, 245, 246.
Added Game Genie emulation. You need that the Game Genie rom (that should have the name "gamegenie.rom") is located in "$HOME/.puNES/bios" on linux or "$Documents$/puNES/bios" on Windows.
Correct a bug in the frameskip code.
Added FDS audio channel emulation.
0.58 (bugfix relase)
Correct a crash with some fds roms (thx Gokun for reporting).
Any volunteers who wants draw a new icon? You will be rewarded with a nice cold beer
If anyone is interested can contact me at this address <punes dot emulator at gmail dot com>
Added FDS emulation (read and write, not sound yet).You need of the FDS bios rom located in one of these folders:
1) the working directory,
2) the folder where is the fds file,
3) "$HOME/.puNES/bios" on linux or "$Documents$/puNES/bios" on Windows.
The bios file must be called "disksys.rom" and must have a size of 8192 bytes.
Added mapper 37.
Corrected some bugs in the cpu emulation discovered thanks to test roms made by Bisqwit
Fixed a bug that in some circumstances, when attempting to load a save state, it crashed the emulator.
Added mappers 200, 201, 202, 203, 204, 205, 207, 212, 213, 214, 215, 216, 217, 222, 240, 241, 244.
Correct a bug in the Windows version that did not allow proper configuration of some gamepads / joysticks.
0.55 (bugfix release)
Fixed another bug in the square emulation.
Thanks to Eugene.s for the reporting.
0.54 (bugfix release)
I've forgotten to uncomment same code in new squares emulation that results in distorted sound. Correct.
0.53 (massive bugfix release)
Correct frequency pitch emulation in Dandy mode.
Fixed all the bugs that were going to crash the emulator in the Windows version, now are really stable.
Correct a lots of bugs in the apu emulation and now the sound is much more cleaner and precise.
Rewrite from scratch the popping sound reducer.
Thx Eugene.S for suggestions, feedback and patience.
Added Dendy Emulation.
Implemented mappers 221, 225, 226, 227, 228, 229, 230, 231, 233, 234, 235.
Implemented a sort of "FCEUX Compatibility mode" and now many other FM2 works well (at least several of the most recent).
Added initial support for FM2 files (tas movies). I tested the fm2 files found at http://tasvideos.org/Movies-Verified.html
and they all work perfectly. The file must be in the same directory of rom to work properly.
Added a system to display messages on screen.
Implemented mappers VRC6 (24 and 26) and VRC7 (85) including their extra audio channels.
Added extra audio on the mapper Sunsoft 5B (69).
Added emulation of Turbo A and Turbo B on Standard Controller.
The Zapper coordinates, in some circumstances, could be read wrong, fixed.
More accurate Zapper emulation (thx tepples). Right button of mouse emulates the pointing of the Zapper outside the TV screen. So, to make a shoot offscreen, you must press the left mouse button while holding down the right.
Added Bilinear filter.
Rearranged the menu filter (Hint: reselect the desired filter and then save the configuration).
Fixed many bugs in opengl codes (now, on fullscreen, aspect ratio is maintained properly).
Added Zapper emulation.
Lots of bug fixes.
Added option to enable or disable the Vsync.
Added Hqx (2x, 3x, 4x) video filter.
Added a native version for windows 64bit.
Added the option to choose between mono or stereo (default from now) sound.
OK, I admit, this release is an excuse to wish a happy new year to all you guys!!
0.44 (bugfix release)
I discovered that the fullscreen does not work properly in a multi-heads scenario. Fixed for both Windows and Linux (xinerama and multi-desktop).
Rewritten from scratch sdl sound and optimized most of the code. All this has led an increase in performance between 20 and 30 percent. Now everything is more responsive and fast even on slower computers.
Added in video settings a "FPS" limiter and a "frame skip" menu to play with in order to find the best configuration for your PC.
Added "Audio menu".
Added fastforward key, when you press Shift on the keyboard, the emu runs at double speed.
Added a popping sound reducer for games (like Castelvania II, Batman, Ninja Gaiden 3) that have a drum imitation that causing a large jump in the output level for a short period of time through the register $4011 (thx to Eugene.s for the report and Tepples for the help).
Added "Overscan" option in the video menu that reduce the visible scanline from 240 to 224 by cutting the first and the last 8 scanlines. This setting is specific for the rom in use. If you change it, will be remembered when you open them again. If you set to "Default", puNES will always use the setting checked in "Default value" menu.
0.41 (bugfix release)
In the previous release I have fixed many bugs but it is also true that others have been added, such as an annoying disturbance of sound that, under certain circumstances, could afflict the windows version. Fixed.
I'have rewritten from scratch the input system and now are supported 2 players, joysticks, it's possible redefine the button of the control pad and also I can implement the emulation of other input devices much more easily.
Fixed various bugs .
Implemented mappers 114, 150, 176, 177, 178, 180, 182, 183, 186, 243.
Implemented mappers 56, 121, 132, 133, 136, 137, 138, 139, 141, 142, 143, 145, 146, 147, 149, 156, 171, 172, 173, 175, 184, 185, 189, 208.
Implemented mappers 16, 108, 112, 113, 115, 117, 118, 119, 120, 148, 158, 159, 193.
Fixed a bug in delta modulation channel (DMC) codes that now works well.
Implemented mappers 69, 70, 76, 77, 79, 80, 82, 86, 88, 89, 93, 94, 95, 96, 97, 99, 107, 152, 154, 206.
Fixed a bug in the APU codes that produced a distorted sound in some games.
Implemented mappers 12, 15, 38, 41, Namcot (19), Irem (32, 65), Tengen (64), Sunsoft (67, 68 ).
Implemented Jaleco mappers (18, 72, 78, 87, 92, 140), VRC1 (75), VRC2 (22 and 23), VRC3 (73) and VRC4 (21, 23, 25).
Implemented MMC5 mapper (5).
0.32 (bugfix release)
correct another bug in the save system. I have tested many roms and now everything (hopefully) works perfectly. Delete (for the last time [hopefully]) the directory "save" located in the folder "$HOME/.puNES" on linux or "$Documents$/puNES" on Windows.
for a bug in the save system, the file created on a 32bit machine was different from the one created on a 64bit and one created on a Linux system they could not be used on a Windows system. The error has been corrected but the saves already made are no longer usable. Delete the directory "save" located in the folder "$HOME/.puNES" on linux or "$Documents$/puNES" on Windows. To make better use of the combobox, the used slots will have a black text while the empty ones will have gray text, also passing the mouse over the used slots, will be automatically displayed a screenshot captured at the time of the save. For every laoded rom will always be remembered the last used slot.
In the Windows version I'have redesigned the toolbar.
added a save/load state system with 6 slots.
F1 = save state
F2 = dec slot
F3 = inc slot
F4 = load state
0.29 (bugfix release)
correct some bugs and redesigned the timeline in the windows version.
In the linux version i dropped the dependency with some libraries (such as the libpng 1.4) and this should make the emulator also run correctly on distributions like Ubuntu.
in this release I have implemented a "Timeline" bar. In the lower left corner there is now a bar with which you can go "back in time" up to a maximum of 60 seconds. Each tick corresponds to 5 seconds. If you don't want to use the mouse you can also use the keyboard. Pressing CTRL will pause the emulator and, while keeping CTRL pressed, you can move the bar with the left and right buttons.
I had forgotten to enable the save of configuration, fixed.
I built an internal database to automatically recognize the rom type (PAL or NTSC). If the Mode is setting to "Auto", the emulator will try to recognize the rom otherwise it will use the preferred mode.
Added native GUI for Linux (GTK+2) and for Windows.
Implemented Taito mapper (33).
Implemented Hard Reset (F11 key) and Soft Reset (F12 key).
Implemented switch from PAL system and NTSC with F8 Key.
Implemented PPU Open Bus and correct some bugs in DMC emulation.
Implemented AxROM, BxROM, GxROM and CPROM mappers.
I finally manage to pass all the Blargg's tests that I've found on the internet (including sprdma_and_dmc_dma.nes and sprdma_and_dmc_dma_512.nes).
Implemented emulation of mappers MMC2, MMC4, ColorDreams and Camerica.
Correct a little bug and now "Time Lord (U) [!].nes" work without glitches.
Implemented the save on file for the PRG Ram battery packed.
Rewrite MMC1 emulation and tested with all GoodNES MMC1 roms.
Now work without glitches the MMC3 chinese roms that in the previous version had problems (Aladdin 2 (Unl), Bing Kuang Ji Dan Zi - Flighty Chicken (Ch), Chu Han Zheng Ba - The War Between Chu & Han (Ch) an many others).
Implemented all illegal opcode.
Rewrite from scratch MMC3 emulation and now really work with every rom that I've tested (for two weeks I've tryed all 5118 MMC3 GoodNES roms including Blargg mmc3 test) except for few bootleg and some chinese roms (why??).
Implemented fix for young indiana jones chronicles (thx James).
Correct some bugs in the MMC3 (NTSC and PAL) and now
all the roms that I'have tried works well.
Implemented illegal opcode 0x80 for the "Beauty and the Beast (E) [!].nes" rom
complete APU emulation.
This is my first attempt with sdl sound and perhaps there may be some bugs. For now, without the implementation of frameskip, the emulator has to work 100% for not having problems with sound skip and crackle.
Changed the structure of the code and now the emu takes less than 100Kb.
Correct many many many bugs.
added AxROM (mapper 7) emulation.
fixed another bug and now Incredible Crash Dummies run without problems.
correct a couple of bugs in the mmc3 emulation.
added MMC3 emulation.
Correct a a bug in the controller routine (thanks Dwedit).
Correct a little bug and now all cpu_interrupts_v2 test roms passed.
Implemented reading of $2004 during the rendering.
(thx to Quietust for the info and for the read2004.nes test rom).
I worked hard on the CPU and PPU emulation and now many
of test roms worked perfectly (thanks blargg).
Added OpenGL support.
Implemented APU Frame Interrupt (only this for now).
Many bugs are gone.
Mappers supported : 0, 1, 2, 3, 4, 5, 7, 9, 10, 11, 12, 13, 15, 16, 18, 19, 21, 22, 23, 24, 25, 26, 32, 33, 34, 37, 38, 41, 44, 45, 46, 47, 49, 50, 51, 52, 53, 56, 57, 58, 60, 61, 62, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 82, 85, 86, 87, 88, 89, 92, 93, 94, 95, 96, 97, 99, 107, 108, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 132, 133, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 147, 148, 149, 150, 152, 154, 156, 158, 159, 165, 171, 172, 173, 175, 176, 177, 178, 180, 182, 183, 184, 185, 186, 189, 191, 192, 193, 194, 195, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 212, 213, 214, 215, 216, 217, 221, 222, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 240, 241, 242, 243, 244, 245, 246.
Sound : Implemented.
FDS : Implemented.
Game Genie : Implemented.
ALt + Enter = toggle fullscreen
Shift = Fastforward 2x
P = toggle stretch in fullscreen
F6 = PAL
F7 = NTSC
F8 = Dendy
F9 = Auto Mode
F11 = Hard Reset
F12 = Soft Reset
F1 = save state
F2 = dec slot
F3 = inc slot
F4 = load state
Links always updated:http://dl.dropbox.com/u/21595068/punes.32bit.tar.gzhttp://dl.dropbox.com/u/21595068/punes.64bit.tar.gzhttp://dl.dropbox.com/u/21595068/punes.win32.ziphttp://dl.dropbox.com/u/21595068/punes.win64.zip
comments and suggestions are welcome