=================================================================================
|   E}I{'s GPU plugin V0.981                                       11.08.2002   |
=================================================================================


---------------------------------------------------------------------------------
1. What it is

   This is software PSX GPU emulator using 32 bit color and MMX/CMOV command sets.
   Most of it (95%) is done with Pentium 2 optimized assembly language.
   It is considerably faster than others. It is compatible(at least going to be:))
   It is always 32 bit, so shading looks better than on real PSX and video
   always played in full-color without screen mode switching.

What it CAN do:
   All texture formats. all polygon filling modes, all flavours of sprites and
   rectangles.
   All transparency modes. Lines/polylines. All misc commands.
   Texture windows(better and faster than in others).
   Most primitives can set mask bit if needed(but cannot check for mask).
   Two modes of using hardware for image stretching.
   (One is checked on nvidia cards, other is working with my S3 Savage4Pro )


What it CANN'T do:
   Mask set is supported only partially.
   Mask check is not supported .
   Interlace mode support is incomplete.
   Very weird image transfer will crash with exception 3. Send "details" text to me
   immediately when this happens.

-----------------------------------------------------------------------------------
2. Help
-----------------------------------------------------------------------------------
2.1  Config dialog help


--- Blit options ---

Software blit  - this mode will not employ any of image-stretching capabilities of your
             videocards. Image will be either not stretched either stretched using
             some CPU power. Only this mode enables usage of 320x240 option. On 1/2MB
             cards only this mode can be used in 16/32 bit modes respectively.

Overlay surface- in this mode videocard will place so-called "overlay surface" over any
             other graphics on screen. This will not put any load on your videocard or
             CPU. Only problem is that overlays are desighned for playing video and in
             most cases videocard drivers will not support 32bit RGB overlays of
             size required by plugin. Works well on S3 and Cirrus Logic cards.

Direct draw stretch - Direct Draw acceleration capabilities of your card will be used.
             Most decent videocards can do the job in no time. Yet some will do it slowly
             or not do at all. In this case DirectX will stretch image by software means,
             and this will be much slower than plugin in software blit mode.

--- Software blit setup ---
options you set here will make sense only in software blit mode

Use 320x240 mode - maximum image resolution on PSX is 640x480. plugin uses this graphics
             mode for emulating it. Yet most games render their graphics/show video in
             resolutions 320x240,256x240(many arcade games),320x224(FF series) etc.
             Even in these modes PSX sometimes works slowly. When PSX videomode is
             320x240 or less and your videocard supports this mode, it will be used.

Allow X software stretch - image will be stretched to screen width.

Allow Y software stretch - image will be 2X stretched if PSX uses (>=368)X240 video mode.
             videomodes like 256x240 will be Y stretched only if "X stretch" is "on" too.


--- Video mode ---

Auto         - plugin will use 32 bit color mode if available,16 otherwise.
32 bit       - does the same.

16/15 bit    - if both 32 and 16 bit modes are available, 16 bits will be used.
             generally plugin is slower in 16 bits. But X/Y stretch will
             work faster.

Fullscreen   - On some systems plugin will work only in fullscreen or
              only in windowed mode.

Refresh rate - set display refresh rate manually. By setting higher values you can
             reduce screen flickering and save your eyes(or burn your monitor).
              0 means "don't care".
  "?" button will retrieve refresh rates that DirectX can set.
             I testing this option now. Please report if it will actually allow to
             set something other than zero.

--- Framerate control ---

FPS limit    - speed will be limited by speed of real PSX.
               Sorry, but there is no "manual" mode.

smoothness   - higher is faster. Too high or too low means bad sound.

Frameskip    - plugin will try to skip every other frame to obtain higher speed.
               Many games will show glitches. "Reduce lag" option must be also
               set to "on" in order to use frameskip.

Max. speed while screen is disabled.
             - FPS limit will be turned off while screen is dark to speed up loading.

Max. speed while screen is still.
             - FPS limit will be turned off while screen is not updated for some time.
             This option is incompatible with many games making them run too fast.

Reduce screen update lag
             - screen will be updated immediately after display area change. This
             will give you 20-30msec bonus in arcade games :) , but will make Final
             Fantasy games show wrong menu in battle. Other games are OK as it seems.
Show FPS at startup
             - FPS value will be displayed in top-left corner of the screen.

---Engine setup---
Synchronize framebuffers
   -  By turning to "on" you will make Crash Bandicoot shadow appear :) Generally this
  option fixes some rare and weird framebuffer effects and textboxes in japanese RPGs.
  There is speed cost, small in most games but huge in several others(even if it does
  nothing). If you care about speed, use this option with games that really require it.

---Game specific options---
Short DMAchain check  - will save you several seconds after fight in Tekken 3. Better not
     use this option at all.

flip odd/even flag    - will fix Chrono Cross hangup in character menu. Some other
     interlace mode games will _not_ hang up in my plugin even without this fix,
     but it will not hurt them either.

-----------------------------------------------------------------------------------
2.2  Hotkey help

  F8, PrtScr  - save screenshot
  Ins         - show/hide savestate picture
  Del         - show/hide FPS

---------------------------------------------------------------------------------
3. Known bugs:

   Overlay support is incomplete. Maybe it could support more gfx cards.
   No good interlace mode+dtod flag support(no one have it properly implemented :( )
   In come cases polygons are not shown correctly.
   x/y software interpolation is not supported now, I'll enable it in next versions
   (after 1.0).
   Garbage on screen in 24bit (MDEC) mode. Will be fixed soon.


---------------------------------------------------------------------------------
4. Small FAQ.

Q. System requirements for your plugin?
A. Many games will run at full speed on P2/P3 400-500 or Celeron 500-633.
   AGP videocard recommended. Minimum amount of videomemory - 1Mb. System memory - 6Mb.

Q. Which blit mode is best for me?
A. Software blit will work anywhere, but it is does slow software stretching(if enabled).
Overlay surface blit does zero-cost hardware stretch, if supported, or don't work at all. On some videocards it can work only in 16 bit mode. VMEM->
VMEM blit is another way of using hardware for image stretching. It is fast (but not zero-
cost) if supported by hardware and very slow if not(DirectX soft stretch is much slower than mine :
) ).

Q. I selected 16 bit mode and speed went down, why?
A. My plugin always working with 32bit internal colordepth. In 16 bit modes graphics is
converted while sent to screen. This process take some time, so you should always use
"Auto" mode which will use 16/15 bit mode only if 32 is not available.


Q. When game XXXXXX will work?
A. When i'll be able to test my plugin with it. Depends on you :)

Q. When you'll add support for higher resolutions, antialiasing, 2xSAI, etc..?
A. Not now!!!!! Maybe i'll do 2xSAI with hi-res later, but it will require powerful CPU/fast
   memory and lots of code optimization as well.

Q. Will you implement a 3D hardware support?
A. See previous answer.

Q. Can you (or someone else) do support for geometry enchancment features of new 3D
   accelerator cards?
A. No.  First, most things you've heard in ads are lies. Second, 3D models can not be
   recreated from data sent to PSX GPU, therefore can not be enchanced. No Z data.

Q. Why frameskip is limited by one?
A. IMO higher values have no sense. Try another sound plugin or emu is you want more speed.

Q. Why it is so slow on my K6 / P1MMX?
A. Like I said already, code is optimized for P2 or higher. I have nothing against AMD,
but i don't own K6 myself. I found that my plugin don't use CPU L1 cache efficiently but
I'm not going to rewrite all primitives to fix this problem. Basically architecture
differences between K6 and PII can make code optimized for PII perform run slowly on K6 and
vice versa. Also, from 0.98 I changed style of optimization in favour of faster CPUs with
slower bus (read Celeron :) ).

Q. Where are FF9 battle menus?
A. Use old screen update mode (uncheck "reduce lag")

Q. Why FF9 effects are looking wrong? Where is Crash Bandicoot shadow?... etc.
A. Enable "FB sync" option. This will enable some weird framebuffer effects at cost of
   very small speed loss.

Q. I have HUGE slowdown with no reason while "FB sync" is on!!!
A. Just save state and load it again. And report to me.

-----------------------------------------------------------------------------------------
8. How to contact me:

   Here is my mail address:  ej@tut.by
   please use word " GPU " in message subject. If you report crash, include debug info from
   crash dialog. If you report gfx glitches, include screenshots from my plugin and from
   other which shows gfx right(if you're sure about it).
   WWW:       http://ej.psxfanatics.com
   old page:  http://ej.at.tut.by

====================================================================================
0.9 - First public release

0.91
 - screen height calculation is correct again
 (turned it off last time because of bug in GpuTest (i got x960 instead of x480))
 - fixed bug with incomplete image transfer
 - added "max speed when still/disabled" options
0.95
 - many bugs corrected, DMA chain end check improved (Tekken3 and Persona2 at least can be
   started correctly). Some additional optimizations. Lines and polylines has been
   added.  All primitives are now working.
0.955
 - nasty polyline bug fixed(i hope so).
 - texture windows in sprites are clipped properly now
 - some minor optimizations

0.956
 - another bugfix/optimization release
 - some bugs fixed in polygon clipping, image transfer, DirectX routines.
   no more crashes after battle in SO2. Video mode is set properly.

0.958
 - EPSXE savestates are supported now.
 - Textured+Gouraud triangles can be transparent again(sorry)
 - New screen update mode(can be switched on/off)
 - Better polygon rasterizer(still not ideal)
 - Fixed bug in line routine. Einhander is playable.

0.96
 - Texture windows are supported. ToD2/BoF4 are working.
 - Minor bugfixes.
 - K6-2/P1MMX version is available. Don't know if it will work...
 - DMAchain length limit

0.965
 - savestate bug fixed
 - fixed bug in line routines(another one), no more random crashes in Einhander
 - interlaced mode improved ("The Next Tetris" is working,maybe Chrono Cross too)
 - moveimage/rectangledraw routines are better now.
 - fixed bug with display mode switching.
 - fixed bug in texture windows code, DOOMlike games must work now.

0.97
 - windowed mode(bad, but working...sometimes)
 - support for two 16 bit color formats
 - fixed bug with draw offset (thanx Calb)
 - new coord checking (thanx Pete)
 - many misc operations use MMX now(speed +5%)
 - better FPS limitation.
 - quick-and-dirty frameskip
 - less frequent screen updates
 - Chrono Cross fix(can be turned on/off)
 - Tekken3 DMAchain fix is working again now
 - added some EMMS commands here and there(fixed bug with GpuTest)
 - fixed bug with config saving/loading
 - new K6/P1MMX version, working one at last :)
 - tons of other small bugfixes and tweaks

0.975
 - updated coord sorting code, will now tolerate some weird triangles
 - DEL key can be used for turning FPS display on/off
 - new MMX optimizations in sprite code, 2D games are much faster now.
 - MMX triangle edge conversion, triangles are 3-10% faster
 - fixed issue with MDECs played in 555 color mode.
 - enabled 15/16 bit RGB overlay surface.
 - cleaned up some color conversion routines. Image upload speedup.
 - showScreenPic/getScreenPic are implemented
 - INS key will show/hide last savestate picture
0.980
 - options are properly saved on Win95   - thanks to Hanif
 - fixed issue with MDECs played in 555 color mode again :) - thanks to
 - fixed wrong texturemapping/shading for very thin triangles
 - fixed bad gouraud shading for big triangles
 - better texture alignment
 - improved DMAchain code. Will make Wild Arms and some other games playable
 - new, simpler and somewhat faster framebuffer layout
 - fixed FF7 textbox bug which appeared suddently
 - fixed flashing textures in FF7  - big thanks to Calb!!!
 - many small asm optimizations here and there
 - faster rectangle primitives
 - added "synchronize framebuffers" mode. Still incomplete.
 - both "max speed" options working again
 - bug with incorrect video mode switching fixed
 - F8 or PrintScreen key will save screenshot
 - savestate pictures are antialiased and have red borders now
 - savestate pictures of MDECs can be saved
 - changed texture page procs, fixes SO2,FF9 worldmaps, ToD2 start menu...
 - added "FPS limit smoothness" option to config menu
 - plugin is now able to set refresh rate.I hope it will not
   break compatibility with NT4

0.981
 - fixed saving of screenshots in 16 bit colordepth, thanx to Hanif
 - changed screenpics code slightly
 - added preliminary 24-bit mode support
 - added Y-interpolation capability to all modes
 - did x-stretching for 24-bit mode(slow though). Now it's fully supported.
 - added TW log option
 - updated CPU benchmarking routine, it will now be able to select different
   pieces of code for cached and uncached data copying
 - removed prolog/epilog code from most color conversion routines
   turning them into pure assembly code :)
 - did same thing with sprite routines and several other.
 - snapshots are now done through GPUmakeSnapshot() called by emu,
   PrtScr key can be used in emulators not supporting GPUmakeSnapshot()
 - new odd/even field flag handling. I hope CC fix not needed anymore.
 - fixed bug with loading savestates of interlaced games
 - fixed bug with wrong centering of software-stretched screen
 - auto-frameskip for interlaced mode(experimental)
