NextGL 1.12 PSEMU plugin
http://nextgl.ngemu.com/
------------------------

Index
-----
1. Introduction
2. Changes
3. General information
   A. Recommended hardware
4. Misc
   A. Special thanks!
   B. Contact information

---------------
1. Introduction
---------------
The release of v1.9 marks the second generation of this plugin. New emulation
code is being used, and almost everything has been written to be more
efficient overall. Compared to v1.8, there are some major changes that should
not only increase compatibility but performance and ease of use as well. Along
with the fact that this is the first hardware PSX plugin to support 2xSaI, I'm
hoping that this plugin will be more enjoyable than the ones that have been
released in the past.

----------
2. Changes
----------
1.12:
- Fixed a bug that caused things to disappear
- Added texture filtering modes
  Notes:
    - For 2xSaI and palettized textures, both bilinear filtering options will
      look exactly the same, and currently no image correction is applied.
    - No texture filtering gives the most accurate results.
    - Standard bilinear filtering automaticaly corrects most black borders
      commonly found on textures.
    - High quality bilinear filtering removes even more black borders than
      standard bilinear filtering but it may not be as fast.

- Added texture alignment modes
  Notes:
    - Texture alignment is only used when a texture filtering mode other than
      "none" is selected. Texture alignment is also used with 2xSaI textures.
    - No texture alignment will often result in visual artifacts depending on
      the application.
    - Fast texture alignment will try to correct some common texture alignment
      problems quickly.
    - Best texture alignment sometimes looks nicer than fast texture alignment
      but requires more math and can be a bit slower.

- MDECs and screen writing related stuff should be working much better now.
  There are still a few bugs left, but as far as I can tell, general MDECs
  work fine. More changes will be made in the future to try to correct most
  of the problems that I'm aware of at the moment.
* Bug: Semi trans doesn't appear to work properly with 32-bit textures for
       some reason.
- Updated the configuration guide to explain the two new texture filtering
  and alignment features.

1.11:
- The FPS counter, screen filtering, and scanlines should be working now!

1.10:
* MDECs don't work!
- Added a new rendering system which is being used in Next3D as well. Not only
  has speed noticeably increased, but the flickering problem should be
  eliminated as well!
- Restored the texture updating functions to the state that they were in
  NextGL v1.8. This should hopefully make certain cards, like the TNT2,
  display textures properly with the older nVidia drivers.
- Fixed an uninterlaced video mode flickering bug thanks to Zephon!
- Added a better alpha management system

1.9:
- Blending mode 1B - 1F (reverse subtraction) should be working a lot better
  on cards that don't support this blending mode in hardware. (No more white
  shadows!)
- Added support for block data writes (ePSXe) this provides a really HIGH
  increase in performance! (MDECs too!)
- Added more options in the "emulation options" menu for control over the
  data input, output, and movement operations.
- Removed all of the old stuff which was really annoying me. Added new texture
  caching configuration menu. It's really simple to use. No thinking required.
- Updated the "debug ouput" configuration menu.
- Fixed a bug in the "dump plugin info" option.
- Removed that old old primitive layer which was probably slowing things
  down.
- Ripped up the primitive rendering code. It's new and improved now.
- Got a little bit of a performance gain by reducing redundant calls to the
  OpenGL API.
- New true color texture cache, version 1.3!
- New palettized texture cache, version 1.2!
- Completely rewrote the texture caching scheme!
- Texture cache initial seek time reduced almost 100%!
- Added support for vertical display ranges.
- Added new texture region update. Everything's super fast now, including
  the dynamic updates which are truly dynamic now.
* 2D games, like Mega Man X4, now completely kick a** (in terms of speed) even
  with the non palettized texture cache!
- Added 16 and 24 bit RLE TGA screen shot formats.
- Added 16 and 24 bit BMP screen shot formats.
- Added 24 bit RLE PCX screen shot format.
- You can now select the screen shot format in the "screen settings" menu.
- Finally added proper screen shot support! :) (Limit: 256 pictures per
  format.)
- Fixed interlaced timing bug with Chrono Cross. This should also improve
  compatibility! :)
- Fixed load save state bug. The display and everything should be set
  correctly after loading. :)
- Fixed more semi transparency problems with the hardware 1B - 1F blending
  mode not setting or reseting itself properly.
- Fixed poly line drawing (it works now.) Major speed ups in the games that
  use poly lines (like GT2.) Thanks to Pete for some help! :)
- Added vertical display range emulation.
- Now using PlayStation frequency calculations for frame limiting. Should
  be a bit smoother now.
- Fixed a bug which caused NextGL to crash in games like Xenogears when an
  incorrect CLUT page mode is sent.
- VRAM data move now uses faster block transfers.
- Added mask bit emulation!
- Added mask bit emulation toggle to the "emulation options" menu.
- Added "disable update on move" to the texture cache menu.
- Fixed memory access bug thanks to Shiori!
- Adjusted the post bilinear filter, it should look nicer now!
- Everything's super smooth!
- Slow motion blur looks much nicer :)
- Added FPSE support
- Fixed all textured semi transparency problems!
- Removed "brightness" as an option. It is no longer needed.
- Added P-Lines (proportional lines)
- Creating new textures should be faster
- Added fast texture updates!
- Fixed a 2xSaI memory access bug thanks to Shiori!
- Added the Dutch translation thanks to Dante "Toshin Fighting"!
- Added the Danish translation thanks to Mads Sabroe Jensen!
- Added the Finnish translation thanks to Taisto Kuikka!
- Added the French translation thanks to Eric Khodja and seb64!
- Added the German translation thanks to Nezzar!
- Added the Italian translation thanks to Darcome and Luke, lo Steccalecca!
- Added the Polish translation thanks to -=Elendil=-!
- Added the Portuguese (Brazilian) translation thanks to Fou-lu!
- Added the Portuguese (Standard) translation thanks to chikitop!
- Added the Spanish translation thanks to Tomas "Zanzetsuken" Hearne and
  Guillermo Steren!
- Added the Swedish translation thanks to Mikaelj and D-Code!

* IMPORTANT! Minor issues with this release that will be fixed soon:
  1.) Display flicker with video cards such as the VooDoos. I know exactly how
      to fix this problem, but I ran out of time to do it.
  2.) Choppy MDECs. Sometimes the MDEC update doesn't "latch" onto each frame
      properly. Some are at the normal speed, and some skip one or more
      frames per second.
  3.) Frame skipping. This is a feature that will definitely be in the next
      release, and it should be very helpful to speed up some games!
  4.) MDEC flicker. Some MDEC frames might flash on and off during frame
      switches. This only seems to be something that really doesn't happen
      very often, but it will eventually be fixed. People with epilepsy should
      be aware that this could cause unexpected strobing effects.

1.8:
- Fixed non textured primitive and sprite semi transparency mode setting bug
  thanks to gpuDebug :)
- Added faster rectangle intersection testing code.
- Fixed drawing offset bug. This makes games like Chrono Cross actually
  playable.
- Fixed semi transparency mode 1.0 * B + 0.25 * F

1.7:
- Changed the registry configuration system, more error detection, always
  reads the registry before configuring.
- Made all primitive drawing functions macros for more speed
- Changed the quad rendering code (for all types of quads) to actually
  render everything at once and not as two seperate triangles.
- Unrolled all primitive loops for greater speed.
- Fixed palettized texture page depth adjustment crash bug when palettized
  textures are not supported by a video card. It now correctly adjusts to
  32-bit automaticaly.
- Finally fixed the problem that Win2K/XP users have been having with the
  configuration!
- Added some code to help out with the timing of interlaced and non interlaced
  display modes.
- Fixed the frame limitation code. It seems to be working really well :)
  The "Frame limitation" button in the main config window is working again!
- Added automatic frame limitation for NSTC and PAL display modes.
- Added frame skipping. It isn't the best, but it works ok for now! :)
- Added cool new logo in the "about" dialog :)
- Made the post bilinear filtering more proportional. This should fix some
  distortion.
- Fixed the "burn in," feedback, flashing, and color saturation side effects
  of the screen filtration modes. They look great now without these particular
  defects that were present in v1.6! But please note that this fix requires an
  OpenGL extension to be present in order for it to work. I'm not completely
  sure which cards support it, but I can say for sure that most nVIDIA (TNT2
  and newer) cards do support this feature.
- Updated the FAQ.

1.6:
- A flush of OpenGL's buffers occur before the true color texture cache is
  dumped. This might fix some rendering errors some people might experience.
- Fixed memory overflow problem in DMA chain. Not only does this fix crashing,
  but it also has fixed several display issues. Accurately emulates the
  real PSX's GPU DMA processing a bit more now than it did before :)
- Fixed semi transparency problems
- Added all types of free dimension rectangle primitives
- Added all types of 1x1 rectangle primitives
- Added all types of 1x1 sprites (they don't actually draw anything)
- Added all types of 8x8 rectangle primitives
- Added all types of 16x16 rectangle primitives
- Updated the palettized sprites so that they don't disappear when a 16-bit
  texture page is encountered :)
- If you haven't noticed by now, the MMX version of the plugin has been
  discontinued. Mainly because of the fact that I wasn't actually using MMX
  very often, so it didn't make sense to make the distribution package larger
  or potentially confuse someone as to which version of the plugin to use :)
- Removed performance bottleneck in the new texture creation code. Truecolor
  modes are running faster now, as are palettized modes!
- Fixed a small screen resizing bug. This also fixes some weird "double
  drawing" effects that were occuring because of bad drawing areas.
- Fixed some really weird VScreen problems that were causing some really weird
  problems.
- Command buffer overflow fixed. Some external application may attempt to
  put more data into the command buffer than the real PSX could support.
- Accounted for other types of flat lines
- Accounted for other types of G-Shaded lines
- Added some more fixes so that polylines are handled correctly
- Fixed the VScreen dimension finding code
- Added double scanlines
- Added better detection for when the display has been modified
- Changed VScreen texture dimension detection to be more efficient with
  memory.
- Added the screen filter "post bilinear filtering." You may experience
  some minor rapid color flickering or screen "melts." It looks cool though :)
- Added fast and slow motion blur! (Slow meaning leaves lots of trails, not
  slow as in poor performance.)
* Slow motion blur might be the preferred motion blur :)
* One more thing, please don't complain about screen distortion when using
  motion bluring. I'm definitely trying to fix this to the best of my
  ability! :)
- Updated the "dump plugin info" to include screen filtration modes
- Updated the "dump plugin info" to include the texture page types for
  the sprite and primitive caches.

1.5g:
- Thanks to Snake785, I've fixed some really annoying configuration problems.
  NextGL's configuration should now work with ePSXeCutor, PCSX, etc.
  A bad get window call and out of order configuration loading was at the
  root of this problem.

1.5:
- Fixed a possible rectangle transparency problem
- Improved the speed of MDECs by using a technique that I used recently
  in Next3D :) (A more advanced version of this will appear in later versions
  of my plugins.)
- Fixed mixing alpha testing and blending together. Should work now for the
  new blending modes
- Added the 1B - 1F (fake) blending mode
- Added the 0.5B + 0.5F blending mode
- Added the 1B - 1F (real) blending mode (thanks to Pete)
- Added the 1B + 0.25F blending mode
- Added 16-bit color mode as a valid primitive cache page depth
- Added 8-bit (true color) as a valid primitive cache page depth
- Added detection for paletted textures
- Added the paletted texture cache
- Both texture caches are now using version numbers. A bit more interesting
  that way I think :)
- Added paletted textures as a valid page depth
- All palletized modes now have dynamic CLUT modification.
  (Still doesn't work with some specific situations.)
- Fixed the FPS counter. It can now handle up to 4 digits and doesn't leave
  any sort of misleading numbers behind :)
- Added hardware brightness (like in Next3D) for much more accurate polygon
  and sprite brightness.
- The debug output now reports memory in sizes of KB and MB instead of just
  MB.
- Fixed a display/init bug that prevented some MDECs from displaying properly.
  FINALLY FIXED! :)
- Added the "MDEC only" scanlines option requested by Metal Murphy. It's
  looking good :)

1.4:
- The sprite coordinates are now converted properly
- Added a lookup table for faster psx -> x86 vertex data conversion.
- Discovered the mask setting command is empty! ... And it still is! ;)
- Added a new block fill primitive. This should fix some streaks that some
  games had (like GT2) in NextGL 1.3.
- Added support for poly lines. Doesn't draw them yet, but skips over them
  so that drawing errors don't occur any more when they're used!
- Added short/long DMA chain fix. Thanks to Lewpy for the info!
- The texture cache memory is laid out in a new organized fashion. This
  makes the process faster, as well as providing some fixes that were present
  in NextGL 1.3.
- Added base code for semi transparency
- Found a few memory bugs. They're completely gone now! Texture caching should
  work a lot smoother now :)
- Got the draw area correct! (Finally!)
- Added save state support
- Added a new windowing feature. This will make the display cover the entire
  area that its supposed to.
- Added the show FPS option in the screen settings.
- Now using 1B+1F semi transparency.
- Sprite caching improved. It's not perfect yet, and there appears to be some
  visual defects that occur.
- Added scanlines :)
- Updated the GPU plugin dump info

1.3:
- Improved texture region change detection
- Fixed PSX vertex coordiantes thanks to Lewpy!
- Now using the registry to store the configuration. This should fix some
  config problems!
- Fixed a small problem that was preventing proper operation of the GPU
- Added more GPU status register emulation
- The plugin now detects when the display changes, and doesn't update the
  display if it hasn't changed.
- Moved the brightness option to screen settings
- Added the #1 requested feature for this version... Frame limiting! :)
- Fixed a bug in the graphic configuration dialog
- Now using improved (and faster) brightness code. You can now choose from
  four different brightness levels.
- 16-bit texture pages are now super fast
- Added a fast sprite cache
- Finished the first version of the primitive cache, by v1.4 it'll be even
  faster when sending texture data to memory.
- Redesigned the texture caching configuration dialog. Lots of new options
  to play around with now :)
- Added a "fast MDEC" option to the screen settings configuration dialog.
- The 24-bit fast MDEC decoding is now done in ASM :)
- The set of sub pages for a certain texture page now automaticaly clears
  when going from 8/4 bit CLUT mode -> 16 bit CLUT mode, or
  16 bit CLUT mode -> 8/4 bit CLUT mode.
- The plugin configuration can be written to a text file by pressing the
  "dump plugin info" in the main configuration dialog!

1.2:
- No more repetitive floating point calculations when updating portions of
  the visibile frame buffer! :)
- Place holder primitive type sprite added.
- Drawing offsets improved from the last version.
- Added more efficent texture management for OpenGL.
- The 16-bit colors now have a fast look up table to refer to!
- Texture caching is working! And really well!
- [ASM] Added brightness code
- Fixed bad config error that corrupted the config file every time it was
  loaded. The config system should work fine now, however, you should delete
  the corrupted config file from v1.1 or lower, any version after that, the
  config should work automaticaly!
- [MMX] Added brightness code
- Texture cache/code stream lined, although you can't see that :)
- Added a lot more options to the config menu!

1.1:
- Added place holder 8x8 and 16x16 sprites
- Added the flat textured triangle (although with no texture yet! :)
- Added more standard resolution choices to the screen configuration menu
- Draw offsets enabled. Should fix some problems with polygons showing up in
  wrong places.
- All of the primitives have the correct color now. I was reading the data
  backwards before...
- Added the single flat line primitive
- Added the single GShaded line primitive
- Added restore viewport on pause and continue, which fixes the problem
  of the screen not being stretched properly.
- Added the primitive rectangle/block fill, although it's not emulated in
  VRAM yet.
- Rendering calls use a sightly more efficient way of passing data to the
  OpenGL API.
- Color operations for the primitives are A LOT faster now! :)
- Improved speed of memory copying in the quad primitives
- Frame buffer updates in direct display area are now very much improved.
  Fixes a lot of problems, and speeds up things a bit!

----------------------
3. General information
----------------------

        -----------------------
        A. Recommended hardware
        -----------------------
        * Video -
           I used a GeForce 2 MX card while developing this plugin. It is
           recommended that you use a modern video card. Just as a general
           tip, don't go too old school and use a VooDoo 1 or anything :)

        * RAM -
           It's important for any system these days to have a lot of RAM.
           I'm not suggesting overkill here... 128MB or 192MB (which is what
           I use) should be fine. It's a good idea, and since I'm assuming
           you're a PC gamer, it also might be a good investment to get some
           if you only have 64MB (or lower.)

        * VSync -
           Most video cards today will allow you to choose if OpenGL uses
           monitor VSync or not. Disabling this option will usually give you
           a performance boost, because the graphics card will no longer
           be constrained to your monitor's refresh rate. Leaving VSync
           enabled will reduce image "tearing" on really fast systems.
           (That's what happens when the display is updated too fast.)

-------
4. Misc
-------

        ------------------
        A. Special thanks!
        ------------------
        Lewpy - One of the nicest plugin coders around :) Gave me a lot of
                useful advice on some important topics!
        Pete  - Couldn't have started without the frame work!
        Adair - With every new release Adair has given me some really useful
                feedback about my progression. I've been able to fix some bugs
                thanks to his efforts!
        Cyberman - Well, what can I say? He started the FAQ, and he's a really
                   cool guy :)
        Shiori - The NextGL beta tester! Really helpful!

        I'd also like to thank everyone involved with the PSX emulation
        scene and NGEmu for hosting my web site! :)

        Greets to everyone on emuforums.com!

        ----------------------
        B. Contact information
        ----------------------
        GPU related stuff can be sent to my e-mail address: nextgl@ngemu.com
        NextGL's official web site: http://nextgl.ngemu.com/

- NickK - 6/29/2002
