Project Titan SDK
=================

Intro
-----
This directory contains the projects for the two Win32 plugins available for Titan. I have strived to make the API simple and straightforward, although some parts need some explaining... As it stands now, the plugin sources show the framework for creating a (Win32) plugin for Project Titan. Because the demands on the VDP are different from those on the CDROM (and eventually the Sound plugin), there are some slight differences in function 
calls to facilitate this. Hopefully the API will not change (that much) when porting to
other systems like Linux.

================
Common API Calls
================

* int XXX_InitPlugin(...)
  -------------------
  This function passes pointers and other parameters to initialize the plugin.
  This should be used to determine whether or not the plugin is supported by the
  system... Unlike the PSEmu Pro Plugin system, if the plugin cannot be used on
  the system, it will not run and will return an error code.

* int XXX_StartPlugin(void)
  ---------------------
  This funtion should prepare the plugin for receiving commands. In other words,
  the screen should do it's last minute initialization so that it is ready to
  excecute commands. It is called right before program execution, so all init
  code should be done when the function returns.

* void XXX_StopPlugin(void)
  --------------------
  This function is called when emulation is suspended or halted and should therefore
  suspend services. For example, if VDP plugin was in fullscreen mode, then the screen
  should return to it's pre-rendering state. However, the program may either resume or
  restart emulation, so in either case, the plugin should be ready to do either.

* void XXX_FreePlugin(void)
  --------------------
  This function is called upon exiting Titan and should destroy any remaining structures
  or memory allocated when initializing/running.

=============
VDP API Calls
=============

* void VDP_UpdateRegs(unsigned long addr)
  ---------------------------------------

* void VDP_VBlank(void)
  ---------------------
  This function is called on every vertical blank (as determined by hardware). This may
  be ignored, but if seeking to sychronize with Titan (as opposed to the monitor), then
  this would be useful in knowing when to redraw the screen (and do some timed operations).

* void VDP_HBlank(void)
  ---------------------
  This function is called on every horizontal blank and is ment to help with functions that
  are timed using the horizontal blank (like the sprite drawing, I think).

=============
SCD API Calls
=============

** Comming Soon :)