					
				Zombie : An emulator shell
				--------------------------
				     Mic, 2004/2005

			    http://intarweb.hopto.org/zombie
				 stabmaster_@hotmail.com


	Updates
	-------

	2005-11-28:
		* Added an ADSP-BF533 (Blackfin) plugin.

	2005-11-26:
		* Added an M*CORE 210 plugin.
		* Added a SuperH-2 plugin.

	2004-06-02:
		* Added a MIPS R2000 plugin.
		* Moved demos into a specific folder.
		* Put file extension associations into separate file (zombie.cfg).

	2004-06-01
		* Fixed CPU performance counter.
		* Added more opcodes to the 6502 and ARM7TDMI plugins.
		* Added a C example for the ARM7TDMI.

	2004-05-30
		* Added 6502 and 6502 MMU plugins.
		* Zombie will now auto-set plugins based on ROM file extension.
		* Added a few more opcodes to the ARM7TDMI plugin.

	2004-05-26
		* Palette viewer now works.
		* Added more opcodes to the ARM7TDMI plugin.
		* Wrote another ARM test.

	2004-05-17
		* Added ARM7TDMI and ARM7MMU plugins. The ARM7TDMI can only operate
		  in ARM mode at this point, and only supports a small number of
		  opcodes.
		
	2004-05-15
		* Fixed some bugs in the Z80 core.
		* Added support for tiled mode and sprites to the XGSGPU plugin.
		* Added fps limiter to the XGSGPU plugin.

	2004-05-14
		* Initial release.


	Interface
	---------

	All plugins must implement these functions:

		bool plugin_init(void*(__stdcall *zombie_callback)(int,int,void*,void*))
		bool plugin_reset()
		void plugin_close()
		int plugin_config()
		void* plugin_get(int)
		void plugin_set(int,void*,void*)

	Where "plugin_" should be replaced by "cpu_", "mmu_", "gpu_" or "apu_" depending
	on what type of plugin it is.
 

	Messages
	--------

	Plugins can share information with other plugins through the zombie.
	The init() function of the plugin will recieve a pointer to the zombie
	communication callback. The callback is declared as:

		typedef void*(__stdcall *zombie_callback)(int,int,void*,void*);

	The first argument is the the direction of the message. This can either be
	ASK or TELL depending on if you want to ask a question or make a statement.
	The second argument is a message enumerator (explained below), and the third
	and fourth arguments are the message parameters.


	PLUGIN_NAME
		A plugin that recieves this message in its get() function should
		return a pointer to a null-terminated string containing the name
		of the plugin.
		The zombie will send this message to every plugin as it loads them.


	CPU_IRQ_CALLBACK
		A plugin can send this message as a question to the zombie. The value
		returned will be a pointer to the current CPU plugin's IRQ callback.

			typedef void(__stdcall *cpu_irq_callback)(int);

		To make an IRQ you simply invoke the callback with the target address
		(eg. 0x38 for a typical Z80 CPU).

		A CPU plugin that recieves this message in its get() function should
		return a pointer to its IRQ callback.


	CPU_IO_HANDLER

	CPU_INPB_CALLBACK

	CPU_OUTPB_CALLBACK

	CPU_CYCLE_COUNT

	CPU_CYCLE_SCALING

	CPU_SPEED
		A plugin can send this message as a question to the zombie if it needs
		to know the frequency of the CPU (in Hz).

		A CPU plugin that receives this message in its get() function should
		return its operating frequency (in Hz).


	CPU_REG_PC
		A plugin can send this message as a question to the zombie if it needs
		to know the current program counter of the CPU.

		A CPU plugin that recieves this message in its get() function should
		return its current program counter.
		A CPU plugin that receives this message in its set() function should
		set its program counter to the value of the first message parameter.
	

	CPU_REG_SP

	MMU_READ_BYTE_CALLBACK
	MMU_READ_WORD_CALLBACK
	MMU_READ_DWORD_CALLBACK
	MMU_WRITE_BYTE_CALLBACK
	MMU_WRITE_WORD_CALLBACK
	MMU_WRITE_DWORD_CALLBACK
	MMU_TRANSLATE_ADDRESS
	MMU_MAP_PORT

	GPU_CURRENT_SCANLINE

	GPU_SCREEN_WIDTH

	GPU_SCREEN_HEIGHT
		A plugin can send this message as a question to the zombie if it needs
		to know the height of the screen (number of visible scanlines).


	GPU_FRAME_COMPLETED
		A GPU plugin should send this message as a statement to the zombie when
		it has finished rendering a frame.

	GPU_VBLANK_LINES
	GPU_HBLANK_PIXELS
	GPU_MEMORY
		A plugin can send this message as a question to the zombie if it needs
		a pointer to video memory.

	ZOMBIE_WINDOW_HANDLE
		A plugin can send this message as a question to the zombie if it needs
		to know the handle of the zombie window.


	ZOMBIE_ROM_BASE



	


	 									