this file contains a brief description of the various components of DarcNES and
what files are associated with each component. it will be updated as time and
inclination allows. that is to say, it may not be updated as often as it
should. anyway, this will tell you much information that you could easily
gain by looking at the comment at the top of each of the files in question.

cpu interface:

cal.c cal.h

    these are the interface to the various cpu cores. they provide a simpler
api than directly working with the cores. they also allow using a variety of
different styles of cpu core, such as Marat's and my own, which would normally
be close to impossible to use interchangably.

cpudefs.h

    this contains a few defines for which cpu cores should be supported in the
cal. it also handles some dependancy issues.


debugger:

debug.c
debug.h

    these contain the main debugger code. they need a major rewrite.

dt6280.c
dt6280.h
dt6502.c
dt6502.h
dt65c02.c
dt65c02.h

    these are instruction decode tables for the debugger.


cpu cores:

emu6280.S
emu6280.h
opc6280.S
opc6280.h

    this is the "emu6280" core. it is based on (and requires) the "emu65c02"
core. it provides the additional registers for the 6280 mmu, and some of the
additional instructions provided by the HuC6280.

emu6502.S
emu6502.h
opc6502.S
opc6502.h

    this is the "emu6502" core. it is an asm cpu core for the 6502. it serves
as the basis for the "emu6502a", "emu65c02", and "emu6280" cores.

emu6502a.S
emu6502a.h
opc6502a.S

    this is the "emu6502a" core. it is based on (and requires) the "emu6502"
core. it merely provides an implimentation for all of the undocumented "NOP"
instructions.

emu65c02.S
emu65c02.h
opc65c02.S
opc65c02.h

    this is the "emu65c02" core. it is based on (and requires) the "emu6502"
core. it provides the additional functionality of the 65c02 chip, and also
overrides the "JSR" instruction to no longer have the page-wrap bug.

emuz80.S
emuz80.h
opcz80.S
opcz80.h

    this is the "emuz80" core. it is based on (but does not require) the
"emu6502" core. it provides almost no functionality, and may not ever be
completed.

flags.c
flags.h

    these are flag translation tables and support routines required for the
"emu6502" core and it's derivatives.

mtypes.h

    this contains some of the type definitions required for the "marat6502" and
"maratz80" cores.

m6502.c
m6502.h
m6502opc.h

    this is the "marat6502" core. it is a modified version of Marat's infamous
m6502 code.

mz80.c
mz80.h
mz80opc1.h
mz80opc2.h
mz80opc3.h
mz80opc4.h
mz80opc5.h

    this is the "maratz80" core. it is a modified version of Marat's infamous
z80 core.


nes emulation:

io_nes.S
io_nes.h

    the basic nes io emulation. this file should be rewritten in C and folded
into nes.c at some point.

mappers.c
mappers.h

    emulation for the nes mappers.

nes.c
nes.h

    basic routines for the nes driver.

nes_ppu.c
nes_ppu.h

    the nes vdp.

nes_psg.c
nes_psg.h

    nes sound emulation. also contains system-specific sound drivers, which
should be moved out into separate files at some point.

nespal.c

    the nes palette. if you want to use a better one, here's where to put it.


pc-engine emulation:

pce.c

    the basic pc-engine driver. very preliminary.

pce_vdp.c
pce_vdp.h

    the pc-engine vdp. very preliminary.


master system emulation:

sms.c

    the basic master system driver.

sms9918.c
sms9918.h

    the master system vdp.


the rest:

system.h
tool.c
tool.h

    the romloader, system autodetect, and such.

machdep.h

    contains some defines that make porting to different systems slightly
easier.

blitters.S
blitters.h

    custom graphics rendering routines. designed to be fairly fast and
reasonably applicable to multiple vdp emulations.

ui.h
ui_allegro.c
ui_x.c

    user interface stuff. all of it needs rewriting.

video.h
video_allegro.c
video_svga.c
video_x.c

    video interface stuff. most of it needs rewriting.

zarzon.c

    the zarzon driver. I wouldn't bother with it much before I get the new GUI
running if I were you. may not ever work properly.
