--------------------------------------------------------------------------

16. August, 2003    Version 2.01

- First, thanks for all the mails I've got about the new OGL2 plugin. Most mails
  were really kind and positive, but of course the new plugin also raised some
  questions and showed problems on certain systems. Here is a small list:

  * ATI R7500 cards seem to produce all kind of glitches. Well, that was no big 
     surprise to me (I was more surprised that it worked at all), no way around 
     that, as far as I can see.
  * GeForce 2 cards are not fast enough to run that plugin at full speed. Also no
     big surprise.
  * GeForce 3 and GeForce 4 (non-MX) cards are usually fast enough to run the 
     plugin at full speed.
     To be more exact: they would be fast enough. Sadly the plugin crashes after a few
     frames with such cards.... but only on Win2K/WinXP systems with 4X.XX 
     detonator drivers. W9X systems are working fine. 3X.XX drivers also work
     fine. There is a workaround for the WinXP 4X.XX drivers, though: enabling
     "NV1X compatibility mode" with RivaTuner... but it seems that this will also
     make the plugin slower, so it's not a perfect solution as well.
     Well, the nature of this bug (running for a few seconds, then a crash somewhere
     outside of the plugin) makes it impossible to track down the real reason.
     Currently it really seems to be a WinXP GF3/4 detonator driver bug, since older 
     drivers are working, and no other cards are showing the same issue.
     Suggestion: report the crash to nVidia. Dunno if they will look at it, but that's
     the only way to get a clean solution in one of the next driver updates, imho.
     Funny enough, a few WinXP GF3/4 users had no crashing problems, even 
     with 4X.XX drivers...
  * GeForce FX5200 ... oh my... yes, the plugin works without crashes. And yes,
     it's slow. Honestly: if you are thinking that you  have a fast card, just 
     because it has a "FX" brand, you are pretty mis-informed (to put it mildly). 
     FX 5200 cards are even slow compared to a GF4 (non-MX). Sad, but true 
     (I really hated it to point that out to a few FX5200 users... one of them even 
     thought he was cheated by Dell for selling him such a weak card...).
     But of course: most times you get exactly the performance you have paid for...
     and FX 5200 cards are relatively cheap, you know? Personally I wouldn't touch 
     a FX5200 (or any nV card with a "MX" brand) with a stick... same is true for Ati 
     Radeon 9200 cards, btw. 
  * So who liked the new plugin? Well, ATI Radeon 9500+ and GeForce FX 5600+
     users were pleased (and the GF4 users who got the plugin to work without
     crashes). But beside the increased compatibility and the new full screen filtering,
     there was also one flaw detected: FSAA will not work with the plugin (it will only
     make it slower, ehehe). But that's not really in my hands... I cannot force a gfx 
     card driver to do FSAA with offscreen buffers, sorry.
     
- Another issue with the previous release was that movies were kinda slow (well, 
  I got over 120 FPS with movies on my Radeon 9700 Pro, so I didn't notice it, 
  sorry). This version will have a nearly doubled speed with most mdecs, so relax :)

- Skullmonkeys... ah, yeah... sorry to say: the game didn't work perfectly with
  the last release (I was only able to check out one level... and of course other
  levels were still screwed). Well, Parotaku gave me another save state, and I
  think now everything is right... at least Parotaku was not able to find more 
  issues, so blame him if still something is going wrong ;)
 
- FrancoisC noticed a bad shading in the Breath Of Fire 4 camp fire on his R8500 
  with my OGL plugins.  First I didn't believe that (I played BOF4 alot in the past),
  but then I took a closer look... and he was right. After a few investigations I've 
  found out that nVidia cards and ATI cards are doing a different rendering of
  connected quad polygons. Seems like ATI cards are handling a single "quad_strip" 
  polygon like a "standard quad" one, while nVidia cards are handling it like 
  two connected triangles. Don't ask me what's the correct behaviour, and who is
  to blame, ehehe.
  Anyway, I've fixed that... now ATI and nVidia cards will work fine.

- Ah, and related to the bad BOF4 shading: the car tires in "Driver" were also missing
  on ATI cards, tsts. Of course that's also fixed.

- Various small cleanups. Dunno if the speed will increase significantly (I doubt so),
  but it will not hurt either.

- I've started again to add good old 'special game fixes' ;) Well, as stated in the 2.0 readme,
  the 'Legend of Dragoons' battle transitions were not perfect without the "Full" framebuffer 
  effect setting. Since the "full" mode is not really needed in that game (beside that battle 
  transition), I came up with a way to show the effects corretly even if a lower framebuffer 
  effect setting  ("standard" or "minimum") is active. The same 'special fix' works also with 
  the "RPG Maker" screen fading effects, btw.

- This plugin was designed to use nowadays gfx card's capabilities to improve the 
  pixelated psx graphics... and of course a modern buzz word here is "shaders" (or 
  in OpenGLish: vertex and fragment programs).
  My first steps with shaders were done on my old GF3, using some nV OGL extensions, 
  but I didn't see much benefits for my standard OGL psx plugin.
  Well, the OGL2 plugin architecture makes it much easier to add all  kind of fullscreen 
  effects using shaders, and in OGL1.5 a C-alike shader language (GLslang) will be 
  introduced. So I planned to use GLslang as soon as possible to create some nice 
  realtime fullscreen filters.
  But then I played with the current ARB shader extensions a bit, and they were working 
  great on my current R9700Pro, so I thought to myself: why waiting? Let's use them 
  now, and maybe replace them later with GLslang.
  A single thought... and it's done, ehehe. This version has some new options to select 
  "shader effects", available are:

  * fullscreen smoothing - similar to the "screen filtering" option 
  * fullscreen smoothing (black/white) - emulates a B&W tv set
  * custom... more about that later :)

  The level of each effect can be controlled as well (minimum, more, medium, 
  maximum), and each effect can be combined with the "fullscreen filtering" option.
  The effect level can also be adjusted in the gpu in-game menu, btw.
 
  Oh, and please note: the first two shader effects were created with my R9700Pro in
  mind... they are using up to 8 texture units! That means that all cards with less units
  will most likely show an error message.
  
  But what's that 'custom' mode? Well, I thought it would be nice if interested users
  could create their own shaders. Therefore the 'custom' mode will load and use two 
  external shader files (one for vertex and one for fragment programs). Simply 
  create a main emu sub-directoy called 'shaders', and place a file named "gpuPeteOGL2.vp"
  (vertex program) and a file named "gpuPeteOGL2.fp" (fragment program) in it.
  For all users who don't have a clue how to code such ARB programs, I've included
  already two sets of shader files in this archive... one for doing a "black & white" effect,
  and one which is doing a very simple smoothing (using only 4 texture coord units, so
  it will work with less powerful cards as well). 
  Experienced gfx coders can of course change the files and try to create even more 
  interesting effects (mmm... maybe I should do some shader contest? ehehe). 
 
 
"Somebody bring me some water, can't you see it's out of control
 Baby's got my heart, and my baby's got my mind
 But tonight the sweet Devil's got my soul"
- "Bring Me Some Water" by Melissa Etheridge

--------------------------------------------------------------------------

30. July, 2003    Version 2.00

I often get mails like: "Game XYZ is having missing screens in your hw/accel 
plugins", or "This swirl doesn't look right in D3D", or "Why is the OGL 
compatibility lower than with the soft plugin?", etc.

Well, the basic problem: it's kinda difficult for an hw/accel plugin to detect 
which part of the psx gpu vram is used to display the current screen, and to 
map this part to the PC's gfx card's backbuffer. 

My OpenGL/D3D plugins are full of rules, guesses and tricks to handle this task. 
And, of course, they still fail. Sometimes it's not very important (like missing 
menu background gfx in Xenogears), but often annoying (like the screwed
battle screens in Vandal Hearts 2).

Of course I can try to tweak such detection rules, to improve one game, but to 
be honest, it's like: "repair one, break two others".

So, in 2000 I planned to change my complete inner plugin core, to get an higher 
compatibility. And I've made an experimental gpu plugin, called "PeteSoftD3D".

As the name is hinting, it used D3D, but the compatibility should be more like a 
soft gpu plugin. At least in theorie :) Yeah, the plugin kinda worked ok (meaning:
zillion of glitches in this stage, and speed not to bad) on my development system, 
and a few lucky beta testers were also able to run it, but it seemed like it wasn't 
the right time for this new approach, since I reached some gfx card/API limits 
which made the further development pointless.

So it was back to the 'traditional' hw/accel plugins, adding more and more tweaks 
and stuff, but always knowing that there will be problems with certain games, 
doesn't matter what I am trying to do.

And time went by... gfx cards got better and better, with more and more vram (important
for the things I wanted to do), and also the 3D APIs (OpenGL and D3D) improved. 
I watched especially the upcoming OpenGL2 specifications, I liked their color 
convertion and memory control features (and I was kinda sad about the still not 
programmable blending stage), and I thought by myself that by the time when the 
final OpenGL2 is out, I can try my approach from 2000 again.

Well, but in spring 2003 I started another emu project, and soon I could see that I 
would end up in the same compatibility mess as with my hw/accel psx gpu plugins. So
I begun to do much tests with the currently available OpenGL extensions, to see if I 
can use them for the basic things I had in mind with OGL2, and luckily it showed that
the most important things were working as I hoped they would. 

And therefore I've decided the time is right to do an hw/accel psx gpu plugin with 
high compatibility... I call it "Pete's OpenGL2 plugin, version 2.0", since I will 
port it to 'real' OpenGL2 as soon as it's possible. Right now it only uses 'standard' 
OpenGL with all kind of extensions.

Be warned: it's an hungry beast. I recommend a modern gfx card with 128 MB vram
for best quality.  Most 64 MB cards will also work, but with 32 MB it will be hard (and/or
ugly), and with 16 MB nearly impossible. I've coded some capability checks, but still 
the plugin could crash on startup if your system doesn't meet the requirements.
Also the cpu should run at 2 Ghz to get no big slowdowns in the best compatibility 
mode, and 256 MB system ram would be nice as well :)

Ok, let's take a general look at the plugin:

* What's better compared to my 'standard' hw/accel plugins?

- An higher compatibility: you may notice that all kind of "special game fixes"
  are gone... because they are not needed anymore :) 
  Bye bye, annoying Legend of Dragoons sprite border colors
  Rest well, FF7 fix
  And, and, and...
  
- Correct swirls, correct splash screens, correct special stuff like the "Vandal
  Hearts 2" battles, or Tifa's Limit Break wheel (FF7) 
  
- A nice full screen filter. That one improves 2D games (and games with a 2D
  background gfx) alot. And best of it: no speed hit at all, and you can toggle
  it directly in the gpu menu :)


* What's worse compared to my 'standard' hw/accel plugins?

- Generally a little bit slower (well, no speed problems on my AMD 2000+ and 
  Radeon 9700 Pro... anyway, I was able to reach the required 50/60 psx fps easily on 
  nearly every game I've tried).

- You will need much vram to get nice hi-res displays. Yeah, you can choose a
  'low resolution' display (will be as low as the soft gpu plugins), but of course
  the main reason for an hw/accel psx gpu plugin is to enhance the graphics...
  and that will need a powerful card with this plugin.
  And unfortunately the very best quality (options: "very high Y" and "very high X"
  resolution) is not possible with nowadays gfx cards/drivers (no luck with the R9700 Pro 
  and GF4200 I have tried). Therefore the best workable settings are "very high Y" and
  "high X", but a 128 MB card is recommended for that modes. But hey, the standard
  "high Y" and "high X" mode will be good as well... especially in combination with
  the new fullscreen filtering.
  
- Some options like 'advanced blending', 'mask bit' and 'alpha multipass' have 
  been removed (mmm... less options? Thinking about it, I should have put that point in 
  the "better" list, since it causes less user confusion, ehe).
  Some of them are gone because they wouldn't make any sense with the new 
  plugin core, and some of them because I don't think that they are needed in a 
  plugin which requires a modern card anyway.
 
- No Linux port yet (but it's on my to-do list... dunno if the current ATI 
  Linux drivers can handle all the needed extensions, though... we will see).


* And what's the same?

- I still offer some options to tweak the plugin for better speed and/or quality 
  and/or compatibility. Since the new plugin works different than my standard 
  plugins, you will need to experiment with the new options until you get a 
  feeling for them, I think :)

- Texture filtering/hires textures WILL STILL CAUSE glitches in some games. 
  Complains about it are going directly into my personal NULL device. Use that 
  texture options if you like them, disable them otherwise. It's that easy.

- Even in the highest compatibility mode, there will be still a few display 
  issues in certain games. Like the screwed main game menu of Star Ocean 2.
  That's life :)


But what about the old hw/accel plugins? Will they die? 

No, not at all. 

They have still enough reasons to exist... they are faster, and less demanding,
so many people will still use them. Dunno how often updates will happen in the
future, but if I find something to fix or improve, I will do it.

Ok, last suggestion: Check out the included readme file. It will explain the
OGL2 plugin's config options, and it offers some configuration and tweaking tips.

And, as always, have fun :)



"Ich lache, tanze, springe, sag neue Lieder auf.
 Ich schlag die Welt zu Truemmern und bau sie wieder auf.
 Du hast mit Blut geschrieben, du kennst die Regeln auch.
 Ich hol mir deine Seele, das ist bei mir so Brauch."
- "Mephisto" by Subway to Sally

-------------------------------------------------------------------------- 