DarcNES: Valiantly resisting the light.



Newer news...

2000 Feb 19:
A new release (version dn9a0219).
Unified cd_freebsd.c and cd_linux.c into cd_unix.c.
Added support for NetBSD CDROM (untested), and sound interfaces (thanks to Thomas Klausner for the NetBSD changes).
Changed the nes bank 4 and 6 I/O hooks.
Fixed FDS mapper to compile again.
Fixed some problems with the PCE timer.
Changed the PCE VDP interface not to use procpointers.
Added clipping sprites to the right side of the screen to the PCE VDP.
Removed the old (disabled) ROM type identification routine.
Fixed the battery file handling to not use a cheap hack to get the filename (this breaks all gg savegames until you rename the battery file).

2000 Feb 12:
A new release (version dn9a0212).
Added SET instruction to the 6280 core.
Added (at long last) PCE CD support (to use it, put a CD in your CD drive, and run a syscard as a ROM image).
I messed up correcting my own mistake below. It's fixed now, but twice in a row is two times too many. :-/

2000 Feb 7:
After all the complaints I've been making about other people messing up the DarcNES version number, I do it myself. The dn9a0204 immediately below should have been a dn9a0206. This is, as far as I can tell, the only place where I've made that mistake. "We apologize for any inconvenience this may have caused."

2000 Feb 6:
A new release (version dn9a0204).
Changed Makefile to include debug symbols in build.
Changed cpu6280.c to support multiple IRQ types.
Fixed some problems with mapper 24 (VRC6) IRQs (vertical scrolling scenes in CV3j are a lot better now).
Fixed a bug in the NES PPU that was preventing bigfoot from working.
Added preliminary PC-Engine timer interrupt emulation.
Fixed a bug with reading from the PC-Engine VCE.
Fixed a bug with the PC-Engine VDP that was causing graphics problems with several games and prevented Gradius from working.

2000 Feb 4:
A new release (version dn9a0204).
Added a new 6280 core and test program (no noticable effect on compatability).
Disabled the old 6280 core.
Changed the distribution to put all files in the .tgz in a darcnes/ directory.
Added all the test data files to the distribution.
Fixed tms9918 invisible sprites and right-clipped sprites.
Added dummy functions for the keypad interface to the SVGAlib interface.

2000 Jan 15:
A new release (version dn9a0115).
Changed ColecoVision driver to use an edge triggered NMI (it works properly now).
Changed Genesis driver to use hopefully correct number of cycles per line.
Enabled cycle counting on the emu68k core.
Fixed yet more instructions in the emu68k core.
Restructured the tms9918 sprite renderer.
Added "early clock" sprites to the tms9918.
Added clipping of sprites to the screen edges to the tms9918.
Added "fifth sprite" support to the tms9918.
Added sprite collision support to the tms9918.
Fixed tms9918 to use all 32 sprites (obi-wan error).
Fixed a bug with mode 1 pattern table location in the tms9918.
Added mode 3 emulation to the tms9918 (written by AmiDog).
I would like to thank AmiDog for doing most of the initial work on the ColecoVision related changes this release.

2000 Jan 9:
A new release.
Added a new target to the makefile to run the unit tests.
Changed Apple ][ driver to use correct number of cycles per line.
Fixed problem with memory allocation in ColecoVision driver.
Fixed directional buttons in ColecoVision driver.
Fixed a couple more instructions in the emu68k core.
Fixed mapper 2 to behave correctly in the presense of CHR-ROM (just in case).
Changed PC-Engine driver to use more cycles per scanline.
Fixed PC-Engine VDP V-scroll raster effects.
Cleaned up the PC-Engine VDP sprite renderer.
Fixed PC-Engine VDP sprite renderer to clip against the left side of the screen (Much more stable now).

2000 Jan 1:
A new release.
Added a keypad emulation interface to the XWindows UI layer.
Added keypad emulation to the CV driver.
Started adding Apple ][ emulation.
Cleaned up some stuff in snd.h.
This release breaks all targets other than XWindows (and I'm in no position to fix them).

1999 Dec 26:
A new release (finally).
Removed all of the debugger code (it's been dead for ages, time to get it out of the way).
Removed all ASM CPU cores (they weren't being used, and they were buggy).
Added a program to test the emu68k core.
Fixed the ColecoVision driver to run again (still no keypad, though).
Started debugging the emu68k core (still a ways to go).
Added preliminary support for DMA to the Genesis VDP.
Changed the Genesis VDP interface not to use procpointers.
Stripped out the code in the Genesis driver that compared CPU cores.
Added some (disabled) debugging code to the Genesis driver.
Added preliminary implementation of Z80 RAM to the Genesis driver.
Cleaned up some code in the NES driver.
Cleaned out some dead code and includes from the PCE driver.
Cleaned up the sg1000 driver.
Fixed the sg1000 driver to close down the sound system when it exits.
Cleaned up the SMS driver.
Fixed SMS VDP to initialize the VDP registers to default values.
Fixed some bugs with the sn76489 (SMS/GG, SG1000, CV) psg noise channel (still disabled).
Changed snd_unix.c to support (and default to) FreeBSD.
Fixed an obi-wan error in the tms9918 sprite renderer.
Fixed a typo in the new system detect routine ("smd", not "smb").
Moved all battery file support to tool.c (from SMS and NES drivers).
Changed the cheap hack used for the battery filename to be endian-independant.
Stripped out a lot of dead code in the XWindows UI code.
Added a new, hopefully easier to port, type system.
Removed the Zarzon driver from distribution (what? didn't I do this ages ago?).
With the number of changes in the codebase, I've probablt forgotten something, but those are the salient points. ^_^

1999 Dec 20:
No new release (I wish).
I thought about it for a bit, and the main reasons I have for not using FreeBSD all disappeared when my system died on saturday (to wit: an unsupported IDE controller card and a pre-existing Linux system with a large time investment).
My new system is mostly configured. There's some stuff left to do with the PPP config, I have yet to fix the nameserver stuff, I haven't gotten the soundcard drivers in yet, and I haven't copied all my old data over yet. I do have PPP running, and X Windows works, so it's not all bad.
Anyway, at this rate it will be at least wednesday before I start coding again.
Random fact: One year ago today was the only case of there being more than one release of DarcNES in one day.

1999 Dec 18:
No new release (I wish).
My development system died about an hour and a half ago.
It's back up and running as a Celeron 333A (not good, I was using a p133 for a reason).
Unfortunately, I have absolutely no graphics support, and will not until I upgrade to a newer version of Linux.
This cannot happen until monday at the earliest (I'll probably hit MicroCenter for Slackware 7.0).
I was planning to release a new version tomorrow, but this changes things.
I will be taking tomorrow off. No coding (no point). Not how I had planned to spend what will be the anniversary of the first release of DarcNES, but I don't really have much choice at this point.
Hopefully I will have things sorted out and a new release ready on boxing day or the day after (which I appear to have off from work).

1999 Nov 27:
A new release.
Rebuilt the system detection to guess based on filename instead of content.
Created a separate system type for Gamegear (no more detect problems. Yaay).
Changed tiledraw.c to treat null tile pointers as blank tiles.
Changed sms9918.c to take advantage of null pointers in the tile renderer.
Changed the tms9918 VDP interface not to use procpointers.
Cleaned up some logic in tms9918.c.
Fixed tms9918 graphics mode 2 to support color semi-correctly.
Added preliminary sprite implementation to tms9918.c.
Added preliminary SG1000 support (it's only as good as the tms9918 support).

1999 Nov 26:
A new release.
Moved sound quality control out to the UI layer.
Fixed some bugs that were missed when converting mz80 over to using ranged mmu for opcode fetch.
Fixed a number of nasty bugs in nes_ppu.c dating back to the addition of the NES tilecache.
Changed the sms9918 VDP interface not to use procpointers.
Tweaked the tiledraw code somewhat.
Fixed an overrun screw with SMS sprites in 8-bit display modes.
Added a nametable cache to the SMS VDP.

1999 Nov 25:
A new release.
Rebuilt cal_create() (it needed it).
Started adding ranged mmu support to m6502.
Disabled the ASM 6280 core (m6280 has fewer bugs anyway).
Moved NES palette code from nes.c to nes_ppu.c.
Moved all cached tile rendering (NES, SMS/GG, and PCE) to a separate file.
Removed the non-tilecache renderer from pce_vdp.c.
Fixed a scrolling bug with the right side of the GG screen.
Broke the left column display disable on the SMS.
Fixed the DOS version to work again.
Partially fixed the GTK version (pass the wrong command line and *boom*).

1999 Nov 20:
A new release.
Added a rule to the makefile to generate .s files from .c files.
Added preliminary support for ranged memory definitions.
Modified mz80 to use ranged memory for opcode fetches (may have introduced some bugs).
Completely rebuilt NES mapper handling (disabled mappers 15, 20, and 32).
Rebuilt CHR-ROM mapper interface to allow for adding a tilecache.
Added a tilecache to the NES PPU (not as much of a speedup as I had hoped).
Rebuilt ROM file handling (broke GTK and DOS/Allegro versions).

1999 Oct 31:
A new release.
Added preliminary support for VRC6 IRQs.
Added support for VRC6 mirroring.
Moved responsibility for handling NES bank wrapping to nes.c.
Moved all os-dependant sound code out to separate files.
Fixed a minor issue with the GG palette address control.

Older news...