DarcNES: Valiantly resisting the light.



Page last updated: Mon Aug 13 13:41:09 2001.

Current version (source): dn9b0401.
Older versions can be found here.
Distribution of binary versions is via the DarcNES binaries page.

Official Unofficial DOS version: http://www.emulationzone.org/projects/dnes/.
Official Unofficial Amiga version: http://www.amidog.com/emu/.
Official Unofficial NetBSD version: ftp://ftp.netbsd.org/pub/NetBSD/packages/pkgsrc/emulators/darcnes/README.html.

Note: everything around here is done on a "When I feel like it" schedule. If you want stuff to happen faster, do it yourself.

News:
2001 April 1:
More internal changes in the direction of eliminating the CAL.
Completely rebuilt the C blitters based on some code from Amidog.
Added some code to allow some of the 68k core tests to run on a NetBSD/mac68k machine (to verify that the tests are correct).
Fixed a number of bugs in the 68k core tests and the 68k core.
Changed the SMS/GG sprite renderers to draw from the tilecache (should have been done ages ago).
Fixed an overrun screw relating to battery save file names.
Changed a couple support routines (in tool.c) to take const arguments (for some reason, the compiler on my BeOS box enforces const correctness, so...).

2001 March 13:
Five months and two days later... (little trivia fact: Before this, not a calander month has gone by since December of '98 without some sort of DarcNES release).
Removed the m6502 core.
Disabled compilation of the 68k core and genesis driver (they don't work, so...).
Changed many things internally in my quest to get rid of the CAL interface.
Started abusing the C preprocessor in the 68k core.
Added a workaround for a bug in the linker (and enabled a warning to let me know when I need to do so again).
Added a workaround for the very common bad dump of Zelda 2 (the one that is "missing" some CHR pages) (I thought I did this earlier, but I guess not).
Added a preliminary MSX driver.
Added a preliminary SC3000 driver (thanks to Marc Le Douarain for the patches).
Added mode 1 support to the TMS9918 video emulation (for both MSX and SC3000 support, again, thanks to Marc Le Douarain for the initial patch).
Oh, and DarcNES/Win32 now has sound support.

2000 Oct 11:
Moved a lot of code common to the cpu6502 and cpu6280 core generators to a common file.
Added cycle timing for IRQ and NMI to the cpu6502 core.
Fixed some include guards not to be blatantly non-ANSI compliant.
Changed the NES PRG-ROM mapping interface (this may break the following mappers (untested/insufficiently tested changes): 1, 9, a (10), 17 (23), 18 (24), 42 (66), 44 (68), 4e (78)).
Fixed bug in NES mapper identification introduced in dn9a0916 (not that it could have been triggered, but still).
Converted the NES driver to use the event scheduler.
Moved sprite DMA handling from nes_ppu.c to nes.c.
Gutted and rebuilt the NES PSG emulation (now with volume envelopes and frequency sweeps).
Some general cleanup and silliness fixing.

2000 Sept 24:
Fixed bug in NES header parsing introduced in dn9a0916.
Fixed bug in PCE VDP introduced in dn9a0901.
Added code to allow freeing the memory associated with a ROM (used in DarcNES/Win32 WIP).

2000 Sept 16:
Fixed 6280 ADC overflow calculation.
Fixed 6280 SBC D mode carry flag clobber.
Fixed 6280 cycle-count bug for PL[APXY].
Converted 6280 to use lazy flag evaluation.
Fixed 6502 SBC overflow calculation.
Fixed 6502 SBC D mode carry flag clobber.
Fixed 6502 lazy flag evaluation SBC bug.
Cleaned up iNES ROM header parsing.
Fixed minor bug with PCE CD debug output for reset command.
Fixed (hopefully) compile problem with SVGAlib version.
Removed unused references to errno and errno.h from video_x.c.

2000 Sept 1:
Fixed the Apple ][ disk emulation to set up it's menus properly.
Added support for a file open box to the Apple ][ disk driver (only works on the unreleased windows port that nobody has except me).
Removed some dead (old 6280 core) code from cal.c.
Cleaned up the PCE CD code a lot.
Tracked down a bug with CD audio playback only to find out that fixing it requires more info that is available and a total rewrite of the lowlevel CD code. Then hacked the code up to not break too obviously.
Changed the coleco, sms, and sg1000 drivers to use the periodic event scheduler instead of for loops.
Removed a useless-looking line of code from the PCE VDP (I hope it wasn't important).
Started adding code to support testing the Marat6502 core.
Moved SN76489 (sms_psg) update control from the VDPs to the system drivers.

2000 Aug 4:
A new release (version dn9a0804).
Fixed a bug in the Makefile that broke cross compiles.
Changed the cpu6502 core to use lazy flag evaluation.
Changed the NES PPU to draw sprites from the tilecache.
Added a bitdepth-independant generic palette system.
Added CD audio playback to the PCD CD driver (only works on FreeBSD).

Older news...

DarcNES is an Multi-System emulator for DOS, Linux (XWindows and SVGALib), and FreeBSD (XWindows). It is currently distributed as source code only.

The author can be contacted at nyef@softhome.net