
2/09/02 Version 0.04 Released

Sunday, 2/10/02, 4:35 PM
* Completely redid combine modes to allow for multiple equation types
* The new combining method seems to have made enemies in Star Fox flash when you hit them
  like they are supposed to.
* Also in the new combine mode system, unimplemented combiners should now show as bright red.

Monday, 2/11/02, -:-- PM
* Added many new combine modes

Tuesday, 2/12/02, 5:29 PM
* Fixed it so that it will now use the tile descriptor given in uc0:texture instead of
  assuming 0.

Wednesday, 2/13/02, 6:53 PM
* Added 1964 support.  The problem was that 1964 reloads the plugin when it switches
  to fullscreen.  Also, I wasn't logging DllMain, which was why I didn't notice the error.
  Now it switches to fullscreen at the next dlist, meaning no reloading the dll since we
  last called grGlideInit.

Monday, 2/18/02, 1:26 PM
* Added triangle caching, now things should run a lot faster since it only has to do matrix
  transformations once per vertex instead of every time the vertex is used.
* Also, vertex transformations are now done during the vertex instruction, which fixed the
  problem with Banjo's seperated body parts.  The vertices were using two different matrices
  and doing the transformations at draw time was only using the last matrix that was set.

2:45 PM
* Now it should only calculate lighting once per vertex also, but I didn't see any speed
  increase... maybe something went wrong?

Tuesday, 2/19/02, 8:59 PM
* Started on uCode 2 (5 in the compat. list), F3DEX 2.XX.  This is the uCode that Zelda64
  uses.  So far I have written the instruction table, and implemented uc2:moveword for
  segment offset.  I'm really amazed that it now runs without ANY undefined instructions.

11:13 PM
* Gugaman has fixed the lighting speed problem!  Now it goes a lot faster.  The vertex
  normals were being normalized in a loop with all the lights, and also a lot of the
  variables are now declared as 'register'.  We also took out an unused vector.

11:56 PM
* We optimized it again!  This time I moved the normalizing code totally out of the light
  calculation.  I am also now calculating lighting before copying, which now allows it to
  only calculate once per frame.

Thursday, 2/21/02, 8:51 PM
* Yesterday I got my Zelda wireframes working.  Today I added textures, and am currently
  researching how T1 works.
* Sometimes triangles were empty (all three points were the same), which would mess up
  the click detection code.  Now it's a lot easier to navigate the triangles, and
  it should speed up a little more too (barely).

Saturday, 2/23/02, 5:14 PM
* Added texture swapping support, things look better now in Super Smash Brothers and
  Pilotwings.

8:51 PM
* I found out what's going on with most of my texture problems.  I've severely underestimated
  the use of mask.  Not only can it be used for mirroring, but it can be used to determine
  size as well.  It's time to do the major change I've been avoiding all this time...
  triangle and texture splitting.
* Also, by using mask, it fixes all those very odd settilesize problems, like the Quest64
  fireball spell.

11:52 PM
* I've partially implemented texture splitting, it seems to load the two textures correctly.

Sunday, 2/24/02, 1:49 AM
* Fixed the missing triangles problem with Zelda and Super Smash Brothers, the uc2:tri1
  command uses cmd0 for it's vertices instead of cmd1.

8:35 AM
* Ok, when I turned on my computer this morning, it deleted my Util.cpp and I lost my
  texture splitting.  It was already messed up, so I would just have to redo it anyway.
  I'm going to do triangle splitting first now, texture splitting isn't as important.

9:15 AM
* Gonetz (Gonetz@ngs.ru) submitted a speedup idea, to pre-multiply matrices so that they
  do not have to be calculated with each vertex.  I had a little trouble implementing it
  because I was trying to do model*proj instead of proj*model or vice versa for both.

Monday, 2/25/02, 6:46 PM
* I've totally redone the combiner
* Texture wraps and mirrors with clamp are now used in texture loading, super smash brothers
  almost works correctly now
* Texture CRC checks now should be correct

Saturday, 3/02/02, 2:58 PM
* Wheeee!!! I've speeded up compiling time by A LOT by using a precompiled header.
* I've figured out how to fake the LOD into letting me do texture interpolation.
* I've implemented many zelda combine modes.

Tuesday, 3/05/02, 5:35 PM
* YAY!!! Icepir8 has shown me how to do lighting correctly.  I was using an unsigned byte when
  the light direction requires it to be signed.

Someday in-between Tuesday and Friday, 3/??/02, whatever PM
* I've implemented the Zelda fire combine mode

Friday, 3/08/02, 12:04 AM
* Gonetz sent me the file to implement Waverace's ucode.  I tested it and it works.  He also
  gave several suggestions for improving the combiner, which I will do in the next few days.

Saturday, 3/09/02 9:00 PM
* I've done yet another combiner, this time it doesn't have a gigantic switch statement.  This
  combiner is based on ideas by Gonetz, and combined with some of my own.
* Icepir8 just told me that if I transformed my normals on vertex load instead of transforming
  light vectors, I could save a lot of calculations.

10:58 PM
* Okay, I'm done with the new lighting system.  I don't see any speedup because something else
  is seriously slowing my plugin down.

Sunday, 3/10/02 3:18 PM
* Gonetz has told me how to fix a matrix problem in Waverace.  Now there is no large dolphin.
  The problem is that I need to clear the matrix stack count every frame.  I had this code
  before, but took it out for some reason.

Monday, 3/11/02 8:33 PM
* Implemented a "GFX plugin has caused an exception" dialog, that makes it go back from
  fullscreen and prevents it from crashing on exceptions. (try/catch in ProcessDList)
* Figured out how force blending and other such works, not implemented yet though.

10:12 PM
* Implemented some force blending, for things like mario kart player select.

Tuesday, 3/12/02 9:48 PM
* Fixed kokiri faces bug, I had read somewhere that palettes had to be aligned to 8-bytes,
  but this was obviously not true.  The palette in zelda was using an ending value of 'C'.

Wednesday, 3/13/02 6:17 PM
* Defined the real values for combine modes rather than a shortened, one-for-all-slots
  version.  Now I don't get odd things like "use prim_lodfrac for starfox menu item alpha",
  instead it is "1".  All of the combine descriptions need to be converted though :(

8:21 PM
* I redid lighting again, this time a mixture of both methods.  I first translate the light
  vector by the inverse model matrix, and then use that in ucx:vertex to calculate lighting.
  This way I do not have to transform every single normal, rather, one light vector per group.

Thursday, 3/14/02 6:55 PM
* Got waverace texrects to show by setting the default alpha for shade in fillrects to 0.

Saturday, 3/16/02 2:54 PM
* Fixed clamping problem, was using tiles 0 and 1 always, when it should've been rdp.cur_tile
  and rdp.cur_tile+1.  Now Banjo-Kazooie wraps everything correctly.
* Added many many more combine modes for the new combiner over the past few days.

5:29 PM
* Revised the debugger, now it can run in any resolution.  Also redid the texture viewer
  so that it's simpler, and supports TMU1.

9:12 PM
* Added the two .3df files to the program as resources, they had to be as "RCDATA", even
  though nothing specified that.  No more extra .3df files are required.  The font texture
  is now loaded from a 1-bit alpha texture, using some assembly code, and the cursor texture
  is the same.  I also added a colored text option, so that the combiners and headers of the
  debugger are color-coded.

Sunday, 3/17/02 10:45 PM
* Fixed translucency problems finally.  Now Link shows up fully opaque and nothing else
  messes up.  ALPHA_CVG_SEL does in fact mean full alpha, but I wasn't handling
  rdp:setothermode so I was getting it where I shouldn't have been.
* Fixed flickering problems in games such as Snowboard Kids and Paper Mario.  The problem was
  that some games use more than one DList per frame, and I was flipping on every DList.  Now
  it flips on UpdateScreen instead of on the DList.

Tuesday, 3/19/02 4:50 PM
* Made it so that outputting text without scaling is possible, FPS counter doesn't scale in
  case of resolution too low to see.
* Added check box for FPS counter

9:45 PM
* Added a bunch of new options to the dialog but all they do now is save to the INI, nothing
  is implemented yet for when they are set.

Friday, 3/22/02 3:48 PM
* Bleh, I'm sick today, 102.8 temperature, however, the computer isn't causing a headache,
  so I will continue working.
* Implemented a bunch of the options yesterday, such as logging, etc. (no more #defines
  needed)
* Upgraded computer to Win2k SP2.  Mario's face screen goes a little faster now, but not much
  else changed.
* Took out the now useless VERTEX_N structure since lighting is now calculated in UC:VERTEX.
* Gonetz sent the software culling I asked for.  I'm going to try and improve this by doing
  everything I can in UC:VERTEX, and also a flag in vertex for clip_z, to determine whether
  we can use a precalculated x/z and y/z value.

6:21 PM
* Pre-calculated x/z, y/z in UC:VERTEX, use if not z-clipping.  The real reason I did this is
  for software culling, so they don't have to be re-calculated.
* Made it so that vertices will only calculate u/v coordinates once, or not again until the
  texture attributes are updated.  z-clipping doesn't matter for this, u/v were calculated
  before the clipping in the first place.
* Changed the type passed into DrawTri to VERTEX** to make it work with clip_tri. (modified
  from Gonetz's original to allow for u/v calculate once (previous comment)).

8:12 PM
* Now screen coordinates, 1/z, u/z, and v/z are precalculated also. (unless z-clipping)
* Actually added software culling, I think it sped the plugin up by a lot.

Saturday, 3/23/02 8:54 PM
* Found that the reason for the Zelda magic bar and Aerogauge fire messing up is that yes,
  textures can only be wrapped on powers of two, but they can be clamped anywhere, whatever
  is specified by lr-ul.  I'm going to redo a lot of my texture code soon, and I will
  incorporate this fix (manually clamp to the full power of two texture)

Monday, 3/25/02 12:53 PM
* STILL sick, 100.9 temperature today.
* Fixed a bug with resolution switches, it wasn't setting the resolution width and height,
  only video mode.  Also, when you switch resolutions it will turn off the debugger.

Tuesday, 3/26/02 5:21 PM
* After trying to implement frustrum clipping, I have finally decided that my method of 2d
  clipping is better.  I am however using the inequalities x<-z, x>z, y<-z, and y>z in several
  places though.
* I've implemented culldl for Zelda, not sure of any speedup since I didn't really look at
  the speed before I changed it.

Wednesday, 3/27/02 10:30 AM
* Fixed uc2:geom_mode so that now both clr and set are shifted before they are used, instead
  of shifting the final result.  Now the culling in zelda works properly.

3:07 PM
* Fixed culldl in ucode2, was using ||s instead of &&s, &&s didn't work b/c it needs to check
  the volume between the vertices instead of the vertices themselves.  Now it checks that
  each condition is met at least once to decide whether to draw or not.
* Fixed a bug where it would log the alpha combiner also if the color combiner was
  unimplemented.

Thursday, 3/28/02 7:16 PM
* Unimplemented combiner text descriptions now show up as red, the alpha as a brighter red
  so you can easily tell them apart.

Friday, 3/29/02 4:29 PM
* Implemented many many many more combiners.
* Implemented branch_z for ucode 2 so that Death Mountain Trail and the well work.
* Implemented prim depth source and alpha compare for texrects, made lens of truth work
  backwards.

Saturday, 3/30/02 4:27 PM
* Added more descriptive update() function, now outputs everything it's trying to do,
  also TexCache outputs things to debug texture loading crashes.
* Converted some things such as texture loads to BMASK/WMASK/DMASK format (different masking
  method, fixed one illegal operation in zelda subscreen).
* Manually clamped all textures, which fixed the zelda magic bar, and several other texture
  border issues, like the subscreen.

Tuesday, 4/02/02 8:54 PM
* Gonetz sent many new combiners
* Implemented a lookup for the first byte of combiners

Wednesday, 4/03/02 5:06 PM
* Gonetz sent new combiners again
* Oops, realized that I didn't do as I had planned with the alpha combine lookup, I meant
  to use 0x0FF00000 instead of 0xFF000000 since the first 4 bits are not used.  It is fixed
  now.
* Now it always uses Glide64.ini no matter what the name of the plugin (dll file) is, so
  you can have multiple versions of the plugin using the same ini.

Thursday, 4/04/02 11:25 PM
* Made shade values full for texrects (for dual heroes)
* !!! Added CMB_MULT and CMB_SET stuff to texrects!  A long time ago I thought texrects would
  only have textures, and then later forgot to put these in.  Now combiners should work MUCH
  more often on texrects.
* Changed from full alpha and full color for texrects to just full alpha, and black color
  (for the zelda menu).

12:35 AM
* Changed my mind again about the texrect color thing, now all four values are full (dual
  heroes needed this)

Friday, 4/05/02 6:15 PM
* Made the plugin faster by not drawing fillrects that had an alpha value lower than 5
  (usually one fullscreen rect per frame)
* Made it faster again by not setting the uv_calculated for every possible vertex on texture
  load, now it acts more like a CRC
* Lemmy has led me to the zelda fixed view problem.  There was an unimplemented instruction,
  background as he calls it (0x0A), which draws a fullscreen 320x240x16 rectangle.  It is
  not yet implemented yet though.

10:55 PM
* FINALLY, after a million hours of working on the temple of time problem, GokuSS4 tells me
  that Lemmy can help fix my problem.  Lemmy said that there is a command that draws a
  320x240x16 texture on the screen.  Knowing the command was not enough though, using the
  address it gave, I got static.  Icepir8 and I eventually figured out that the address
  actually pointed to a structure whose fourth element was a pointer to the actual texture.
  The temple of time, and all other fixed view problems, now work.

Sunday, 4/07/02 10:21 PM
* Implemented a bazillion new combiners from Ogy's list.
* Fixed mario texrects, on cycle_mode=copy, it doesn't use combine, but rather texture.

12:22 AM
* Clipped texrects properly so that they do not stretch as they go off the screen.  They
  are also clipped to scissor instead of screen now also.

Monday, 4/08/02 11:40 PM
* Fixed a problem with the scissor rect being too big for the screen.

Tuesday, 4/09/02 6:17 PM (.04944)
* Fixed the zelda orange texrect problem, Gonetz implemented a combiner for Kirby 64 that
  was actually already implemented.  I commented his duplicate, and it worked again.

12:03 AM
* Switched the order of alpha compare/CVG_X_ALPHA
* Made it so that XLU surfaces do not update the z-buffer

Thursday, 4/11/02 6:34 PM
(0.1 Beta #1 -> Ogy, Jeremy, Quvack, Slougi)
(0.1 Beta #2 -> Ogy, Jeremy, Gugaman)
(0.1 Beta #2+ -> Jeremy, Gonetz)
(0.1 Beta #3 -> Gonetz, Ogy, Scorpiove)
* Gonetz sent new combiners.
* Gonetz has finally agreed that it is time to release.  I'll send to Ogy after just a few
  more fixes.
* Disabled most recent thing added, xlu surfaces, just in case because of release.
* Changed unimplemented combiners to show T0 instead of the last combiner used, since most
  objects use T0 at least somewhere.
* Found bug in texrect clipping, the fast on/off cut return was wrong.

10:24 PM
* Fixed texture swapping in certain games like Super Smash Bros by swapping the x value
  instead of the address.
* Made it so that unimp.txt is not created unless unimp logging is enabled.

11:44 PM
* Spherical mapping fixed, works now in every instance I've seen.
* Option added for 'Buffer clear on every frame'

Friday, 4/12/02 4:44 PM
* Bug fixed when Glide64 was not as Glide64.dll, I had typed in "Glide64.dll" instead
  of getting the full path.

(0.1 Beta #4 -> Ogy, Falcon4Ever, Jeremy, Gugaman, McLeod, Scorpiove)

Sunday, 4/14/02 2:03 PM
* Switched from ac_one on unimplemented to ac_t0, b/c it causes less problems with translucent
  things.

4:00 PM
* Fixed a Ridge Racer crash that had to do with texrects being off the screen.  The reason my
  previous offscreen clipping code didn't work for the y-axis was because I needed to flip
  the coordinates, not the borders, to make ul_y < lr_y.
* Fixed a problem in fillrect.  If fillrect used fill color, it would check if it had less
  than 5 alpha to determine whether to draw or not.  The problem is... fillrect only has
  1 bit of alpha and I didn't think about that when I wrote the compare.  Now some black
  rectangles that didn't show up before now will.  The only problem is that this may slow
  the plugin b/c of a fullscreen clear that now must occur.

9:37 PM
(0.1 Beta #5 -> Gugaman, Ogy, Scorpiove, Quvack)

2:11 PM
(0.1 Beta #6 -> Gonetz, Ogy, Scorpiove, Quvack, IceLord)
* Added ToolTips for all configuration options.

Monday, 4/15/02 7:31 PM
* Finished up ToolTip text
* Disabled FPS counter because of bugs it has

8:11 PM
* Finished wireframes for texrects and fillrects.
* Added an option to select the colors to use for wireframes.

Wednesday, 4/17/02 7:49 PM
* Changed address mask in uc0:displaylist to 0xFFFFFF instead of 0x3FFFFF.
* & also in ProcessDList (Zelda: MM runs now, complete gfx errors).
* Put an &BMASK at the end of segoffset.
* Glanced through ucode02.h replacing incorrect masks.
* Changed a 0x3FFFFF in TexCache

Thursday, 4/18/02 9:49 PM
* Scissor added to update
* THE INFAMOUS RESOLUTION PROBLEM IS FIXED!!!  After a while of looking at things, the
  resolution problem that was present in many games is now fixed.  I noticed two variables
  of name VI_X_SCALE and VI_Y_SCALE.  These contained values typically 0x200 and 0x400
  normally, but when something was stretched in the y-axis, VI_Y_SCALE = 0x800, double
  the original.  By using division between the current and original, you get the correct
  scaling.

Friday, 4/19/02 5:32 PM
* Made it so that tooltips can be easily disabled (for those without the platform sdk)
  by commenting the line in Gfx #1.3.h that says "#define USE_TOOLTIPS"

11:20 PM
* CMB_MULT and CMB_ADD/SUB are now completely unrelated in values, and it performs the
  add/sub operation first.

** 0.1 released **

Tuesday, 4/23/02 10:43 PM
* Made it so that the uc2:BG command doesn't use the z-buffer.
* Added uc2:BG to the log.
* Made uc2:BG use alpha (for alpha compare)
* Going to start on a HUGE texture loading change... allowing modification of textures
  while loading and also faster loads, possibly using some assembly.

Sunday, 5/05/02 6:01 PM
* Figuring out many things about texture sizes, assembly going well so far
* Improved the debugger, allowing a NULL triangle selection.  Also, as when you press space
  bar to go to the texture of the selected triangle, you can now press the left control key
  to go to the last on-screen triangle that used the selected texture.  This is useful to
  find what a messed-up texture is supposed to be of, since you can see where it was on the
  screen.  Also, if the texture was not used this frame, it selects NULL, which doesn't display
  any triangle information.

6:27 PM
* Made it so that interpolation of 0.0 or 1.0 ONLY uses the needed texture, because the other
  one may not have had its tile descriptor even set, loading a useless noise texture. (INTER
  macros in Combine.cpp)

9:25 PM
* 16-bit RGBA seems to be as far as it can go... starting LoadTile emulation now.

Saturday, 5/18/02 1:22 PM
* Lots of school recently, no time to work
* Fully re-implemented both LoadBlock and LoadTile in order to account for non-aligned textures
* Implemented a new texture format: 4-bit CI.  This should be the hardest of all.
* Made it so that tri_n numbers should be correct even if not in fullscreen mode

4:22 PM
* Implemented 8-bit CI by slightly modifying the 4-bit CI code.
* Seperated the load functions into different files based on size since they are quite large.

6:18 PM
* Oops, fixed a problem with building on normal 'debug' and 'release' modes, where it wasn't
  including the .obj file.

6:55 PM
* Finished 4-bit I textures.

11:27 PM
* *Gugaman* (accidentally typed Gonetz the first time) has helped me implement both 4-bit CI
  and 16-bit IA textures.

Sunday, 5/19/02 8:46 AM
* Oops, from the simplified version of Gugaman's 16-bit IA, I forgot to take out a ror 16.

5:50 PM
* Remade the whole texture loading routine... The whole thing is completely different.
  Combine and TexCache are now somewhat merged to allow for use of the maximum amount of
  memory.  All vertex coordinates may need swapping to the right tmus since t0 no longer
  represents tmu0.  Texture loading is now located in TexCache.cpp instead of Util.cpp.
  I have tested with multitexturing also, and it works.
* Gugaman sent me 8-bit AI and I this morning.  I just changed I to use alpha instead of
  intensity. (first time i've seen it)

6:08 PM
* Changed the debugger: space bar doesn't work the same.  You must now select either
  page t0 (keyboard 2) or page t1 (keyboard 3) and then press space bar.  Then it will
  select the CORRECT TMU AUTOMATICALLY and the corresponding texture in it.

6:29 PM
* Made it so that pressing 'G' will switch on and off a grid for the cache viewer (large view
  on page 0).

7:19 PM
* Fixed Gugaman's routines again... he didn't understand what the << 1 on ext was for in my
  routines; it was to multiply by the number of bytes per destination pixel.  I had to take
  this out on the 8-bit ones.

Tuesday, 5/28/02 2:22 PM
* School is now out and I have more time to work on the plugin
* Spherical mapping finally fixed for good.  The size to use is the scale value >> 6.  I found
  this information in a really strange place.
* 32-bit textures implemented

Wednesday, 5/29/02 12:33 PM
* Fixed the fillrect problem.  Recently i changed it so that TexCache() is REQUIRED to set the
  combine mode from Combine(), even if no texture is used.  I had not yet updated fillrect to
  reflect this.

Friday, 5/31/02 8:09 PM
* Wrote all Wrap/Mirror/Clamp functions, for both 16-bit and 8-bit.

12:27 AM
* Rewrote the tmu selection functions to remove support for 3 tmus and add support for 1 tmu.
* Improved single-tmu support by a lot by forcing it to select a texture.

Saturday, 6/01/02 9:46 PM
* Added a log flush option to make it so that the log will be completely written before a crash
  or exception.
* Made it so that a maximum count of 256 entries can be loaded by loadtlut by masking by 0xFF
  instead of 0x3FF.  No more goldeneye exception.

1:58 AM
* Finally cracked the goldeneye triangle instruction.  Now triangles in goldeneye show correctly,
  but the textures are still messed up.  (something about palettes)

Sunday, 6/02/02 1:54 PM
* Found why goldeneye palettes weren't working correctly.  I noticed in the log that the
  settextureimage address was not being changed from the texture and the palette.  So,
  I made loadblock and loadtile increment the settextureimage address as they load.

3:30 PM
* Slightly optimized the 16-bit RGBA loading by using better RORs and SHLs instead of
  masking and shifting to swap the alpha bit.
* Implemented IA-16 format for palettized textures.  Now goldeneye works almost perfectly,
  but kinda slow.

4:44 PM
* Found out that you do NOT increment the settextureimage address with loadtile. (HAL logo,
  SSB)

Monday, 6/03/02 3:22 PM
* Figured out why 32-bit texture's pixel swapping was not working correctly.  Since I am not
  loading 32-bit textures exactly how the N64 would, they need to swap 64-bit words instead
  of 32-bit ones.

4:46 PM
* Ack!!! If you switched to fullscreen before the ROM started running, it would set to single-tmu
  mode.  I had to move the "rdp.num_tmu = 1" out of rdp_reset and into InitiateGfx so that it
  would only occur when the plugin is first loaded.
* Fixed texrects in Mario Kart and probably some other things.  Texrects use a different texture
  tile # than the one specified in uc0:texture, so it needed updating.

5:05 PM
* Made it so that both tmu texture caches refresh at once.  This may seem like a bad thing,
  because then it has more textures to load at once, but it's not.  Before, after one tmu
  would refresh, it would have the most open memory and therefore get all the textures.  If
  the other TMU was really close to being filled, it would never be refreshed.

6:53 PM
* Added Voodoo 1 support.  It was 5 lines of code.  All I had to do was make it so that
  if mirroring was not supported, and was used, it would multiply the size by two.
  Then it would automatically mirror the smaller texture to the full size.
* Added a check for clamping/mirroring/wrapping/mask for the cache, so that if anything
  changes, the texture can load differently.

Tuesday, 6/04/02 7:52 PM
* Fixed a bunch of things with alpha compare.  Also made it so that it looks more like UltraHLE.
  I haven't found a single problem with it that wasn't there before, and the hands in Hexen show,
  and SSB is fixed.
* 0.1762

3:17 AM
* Made palette CRCs multiply the content by the location so that even if the contents are the same
  but in different locations, the CRC will be different.
* Going to make sure to write version numbers here so I know what has changed.
* 0.177

VC++ 6.0 SP 5 installed
VC++ 6.0 Processor Pack installed

Wednesday, 6/05/02 11:05 AM
* Finished adding the negative count checks for mirror/wrap.  For some reason, i had only
  implemented 2 of the 4.
* Fixed a combiner that caused tony hawk to be bad.
* 0.1771

7:25 PM
* Changed alpha compare some more, making it so that force-blend overrides CVG_X_ALPHA.  No
  problems observed so far, and it fixed Bomberman Hero.
* Made z-buffer clearing fillrects faster by checking if cimg=zimg.
* 0.178

10:25 PM
* Implemented basic modifyvtx for texture coordinates, something is still not right.
* Changed it so that coordinates are scaled in vertex instead of when they are drawn (this
  is correct).

11:29 PM
* Improved the debugger again, allowing you to push left/right to cycle throught the triangles
  (by ID numbers).
* Added vertex numbers to the debugger so you can tell which vertex is which (remember, 1
  is the first vertex because of the way it clips.  2 is the 2nd vertex, and 0 is the third).
* Fixed uc2:modifyvtx.  I knew the solution the whole time, and I remember thinking about it,
  but when I looked at the macro I didn't see what I wanted so I let it go.  Then later I come
  back and there it is!  I needed to divide the vertex number by two.
* 0.179

12:52 AM
* Fixed the road in F-Zero by making it so that alpha_cvg_sel can occur with force_blend.
  Luckily, i had made a mistake before and thought something was set that really wasn't.
  As far as I can tell, nothing new broke.
* Paper Mario wasn't working well because of an odd palette copy, so me & Gonetz decided
  just to change the combiner to T1 instead of T0*T1. (0xe2f10054)
* 0.1791

Saturday, 6/15/02 4:10 PM
* Large textures now load correctly, so now I need to do the math part.

9:21 PM
* Improved upon the CRC code, removing the need for address checks.  Now it multiplies the CRC
  by the position so that the O and U in mario are not the same.
* 0.1792

Monday, 6/24/02 7:41 PM
* Gonetz sent combiners again
* Wrote the texture splitting code for texrects, still not working yet though.
* Triangles in both texrects and triangles are drawn with grDrawVertexArrayContiguous which
  allows vertices to be in a linear array, rendering the pointer table i had made useless.  I
  don't believe I hadn't discovered this function before.
* YAYYYY!!!!!!!! I've finally finished large texture support.  Actually half-finished.  It works
  PERFECTLY for texrects, but not yet for triangles.  No seams, nothing.  EVERY SINGLE GAME I've
  tried so far (using texrects) works.  About 80% of games with the problem used texrects.
* 0.18

10:17 PM
* Made it so that textures with masks that are greater than 8 just use the tile size.  I haven't
  seen anything broken by this yet, and it speeds up some odd games.
* 0.181

12:23 AM
* Moved a -1 earlier in texrect, helped fix some coordinate problems.  As far as I can tell,
  texrects are now good in terms of coordinates.  There are still some lines, but that cannot
  be helped.  It's caused by the fact that there are so many of them.  The only way to solve is
  to blend between them.

2:29 AM
* Made split texrects clamp so that if they need to wrap, they can do it without getting black
  lines across them.

5:01 AM
* Added "Automatic" filtering mode.
* Finally found what was causing versions since 0.1792 to go slow.  I had called grFinish after
  grBufferSwap to see if it helped the FPS counter.  It didn't and it made the plugin go REALLY
  REALLY SLOW.
* Implemented the rest of rdp:setothermode for uc2.  Health meter in Zelda now correct & you
  can't see him in the menu.
* 0.182

Tuesday, 6/25/02 2:21 PM
* Rewrote the texture cache searching algorithm so that it only has to search a few textures
  instead of all the textures.  It takes the highest byte of the crc and only searches the
  textures that had that same value.
* 0.183

4:26 PM
* Got into really big conversations and all of the sudden, the whole FPS thing hit me at once!
  UpdateScreen() is actually a VERTICAL INTERRUPT!!!  This is why it is called twice per every
  ProcessDList().  The TV is updating at 60hz but mario only at 30.  This also explains why
  when I used UpdateScreen() instead of the buffer swap, I got the % of speed * 60.

5:41 PM
* Added 4 types of speed counters.  There is the FPS counter (frames per second), VI/s counter
  (vertical interrupts per second), NTSC % (percent speed on a (U) game), and PAL % (percent
  speed on a (E) game).
* Added an option to clear top/bottom of screen like a NTSC TV.
* 0.184

1:45 AM
* Re-implemented the uc2:background command.  Note to self: whenever textures don't show,
  check what's ABOUT to be put into grTexCombine()

Wednesday, 6/26/02 2:10 AM
* The trees in Majora's Mask were screwed up since I changed the texture code to actually emulate
  the tmem.  I believe this is because it would wrap to the other side of tmem.  I've implemented
  a somewhat fix for this.  It will work with power of two wraps.

Thursday, 6/27/02 2:05 PM
* Rearranged clipping code to allow for large texture support.  Also it now only performs
  z-clipping if NEEDED, and not always.  This also allows for vertices to be copied only once,
  and not twice.
* OMG.  Sooo glad i found this...  uCode 1 games were not setting the scr_off flags when they
  were off the screen.  This is why i noticed problems when rearranging the clipping code.

6:34 PM
* YAAAAAAY!!!! Large texture code for triangles is now complete!!! I can't find a single game
  that has the problem anymore!!!

12:10 AM
* Added a tmem boundary check for LoadTile.  It should fix many exceptions.  So far I have seen
  it fix the exception in Extreme-G 2 and 1080 Snowboarding.

Friday, 6/28/02 8:55 PM
* I've been researching this alternate way of getting texture sizes that makes 1080 and several
  other games run much better.  The only way there appears to be to do this is to make a game
  specific INI.  I have already done this.  It makes it so i can have a [DEFAULT] section and
  then override it with other values from each game.
* Bad config error... for some reason, you cannot attach a tooltip hook and then set a lot of
  checks or your config dialog goes blank.  If you create the hook afterwards though, it works.
* Changed the order of clamping/wrapping so that it can clamp before it wraps if it needs to.

10:35 PM
* Fixed bug in clamp/wrap, it needs to do ALL of s clamp/wrap before it moves on to t.
* 0.192

11:18 PM
* Made it so that fill mode (3) doesn't add 1 to the lower right coordinate like copy mode (2)
  does.  Those things that were fill before are now copy because of when i implemented the rest
  of rdp:setothermode.

12:33 AM
* Added text that says when in windowed mode: "Glide64" "Gfx cannot be drawn in windowed mode"
  "Press Alt+Enter to switch to fullscreen".
*0.193

Sunday, 6/30/02 6:46 PM
* Now allows Alt+Tab and other key combinations to be pressed.
* Gugaman and I have been working with the IRP and I think we've finally found a solution.  All
  of the games work so far, so we'll keep testing & find out.

10:46 PM
* No problems observed with the IRP.
* Added clock feature suggested on message board.

Monday, 7/01/02 3:44 PM
* Put in a "break;" after fog, so it doesn't move right on to lightcol.
* Implemented lots of new combiners for Pokemon Stadium 2 and Megaman.
* Changed alpha compare a little, adding a check for the combination of CVG_ALPHA_SEL and alpha
  compare.
*0.197

8:15 PM
* Fixed alignment for triangles.  Now it is how it should be.  It has eliminated the line errors
  in the Zelda select screens & many other things.

* 0.2 in final form

Tuesday, 7/02/02 11:38 PM
* Fixed prim_z for extreme-g 2 by ignoring the matrix it uses.
* TEMPORARILY CHANGED if ((rdp.render_mode & 0x00000C00) == 0x00000C00) to
  if (rdp.render_mode & 0x00000800) IN DECAL CHECK - fixes castlevania text, but not sure of
  other things.
* Nothing seems to have broken, keeping for now...

3:47 AM
* Changed enviornment mapping to 0x00080000 instead of 0x00040000 to fix F-Zero car textures.
* Changed combiner for F-Zero cars to look right.
* 0.202

Wednesday, 7/03/02 8:26 PM
* Realized that non z-clipped vertices did not use the precalculated values like they were
  supposed to.  [added to beta also]

9:55 PM
* Changed alpha test value to 0x80, since that will be optimum b/c it is right in the middle
  of the texel.  Also, it was required for Blues Brothers.
* Fixed 4-bit CI for 16-bit IA textures.
* Took out the C2, C3 init that Gonetz requested.

1:32 AM
* Added self-jump checking to fix Gauntlet Legends & another check.
* 0.21

Thursday, 7/04/02 9:02 PM
* Put in some framebuffer support.  The copy works ok, but when to use is VERY VERY BUGGY.
* Completely redesigned the othermode functions so that multiple things could be set at once.
  Also, there is no such thing as "rdp.rendermode" now, it's a part of rdp.othermode_l,
  as rdp.mode_h changed to rdp.othermode_h.

10:22 PM
* Enhanced the debugger, listing all of the othermode settings, with the current ones
  highlighted in green on page 6 and 7 of the debugger.

10:42 PM
* Now that you can set any combination of othermodes at once, i modified my rdp:setothermode
  command to set ALL at once instead of one at a time.
* Fixed alpha compare so that, like there is no compare when ALPHA_CVG_SEL (full alpha),
  there is no compare when force-blending to full alpha either.

1:27 AM
* Worked past 2-3 hours decoding new ucode for Star Wars: Shadow of the Empire.  Works near
  perfect as far as I can tell now.

* 0.220

Saturday, 7/06/02 7:14 PM
* Implemented basic ucode #5, Diddy Kong Racing.  Icepir8 and I still need to figure out how
  it selects which matrix to use though.
* Fixed a bug where the rdp_setothermode was using an unknown command instead of the othermode
  commands in ucodes other than 2.

Sunday, 7/07/02 1:37 AM
* Did LOTS with Diddy Kong Racing today, the only thing that seems left is the billboarding.
* Billboarding done, uses vtx 0 as offset, then adds the current to it.

Monday, 7/08/02 3:00 PM
* Gonetz sent some more combines for diddy

12:47 AM
* Fixed some more stuff in Diddy, like the transparent walls.
* Added texture-modification code.  Now it is possible to do things for combiners that would
  be impossible otherwise.  Now you can see the selection in DKR, and also the LOT of Zelda OOT
  works.  Don't have save of MM, so can't implement that one yet.
* 0.230

Tuesday, 7/09/02 6:08 PM
* Fixed cache bug where it wasn't always setting the mod flags, therefore refreshing faster
  and faster each time.
* Added culling to DKR ucode, works much better now.
* partially fixed LOT in MM, but the outside is still solid.
* 0.231

Thursday, 7/12/02
* 0.2 released

Sunday, 7/14/02 5:51 PM
* Fixed the Great Fairy's hair color using texture modification.
* Fixed the RUSH games, for some reason they have size set to 0, so I used *gfx.VI_WIDTH_REG
  instead to determine the size.
* 0.232
* Used texture mod again to fix the SF rush 2049 wings.

11:44 PM
* Added a whole bunch of impossible combines by using the texture modification.
* Fixed Snowboard Kids by implementing the modifyvtx for ucode 0. (same as 2)

Monday, 7/15/02 9:07 AM
* Fixed items in Super Smash Brothers by implementing the moveword matrix command.  It took
  me a while to figure out that it was incrementing in the x direction and not the y, and also
  that you actually add the positive decimal part, EVEN WHEN WHOLE NUMBER IS NEGATIVE.
* 0.235

1:02 PM
* Added new INI code, should be no more corrupting.

3:21 PM
* Added culling for Diddy Kong Racing & fixed a non-working combine for the background color.
* Added huuuuge semi-combiner for flashing characters in SSB.
* Added support for clearing z-buffer using a texrect (SSB black rectangle).
* 0.237

1:18 AM
* Added a framebuffer workaround for Zelda: MM LOT.  Now it works without needing to use
  framebuffer copies.
* 0.240

Tuesday, 7/16/02 11:30 PM
* Found out that the LOT and telescope problems are with prim_depth.  It enables but doesn't set
  a depth value.
* Rice gave me plenty more new things to do :)
* The dlist with count command now implemented in f3dex 2.xx ucode.  Cruisin' Exotica works.
  (Rice's help)
* 0.241

12:27 AM
* Added the movemem matrix command, WWF No Mercy works now.
* 0.242

Wednesday, 7/17/02 5:53 PM
* Fixed SERIOUS bug in CI textures, it would not use the correct format.
* Fixed combine for link's sword swirl.
* Added new buffer swapping method that fixes flashing.
* 0.247

Friday, 7/19/02 4:20 PM
* Made LoadTile boundary checking MUCH better; now checks if >= and also for last write so
  even if it's not aligned properly it will cut anything that goes above.  Paper Mario
  level up fixed.
* Added several combines for xg2.
* V-Sync option added.  This only takes effect if it's set to "Software Controlled" in the 3dfx
  Hub.

7:37 PM
* Made it possible to continue after a gfx exception.

8:29 PM
* Got fillrects to align perfectly now by forcing the coordinates to DWORD instead of float.
* Got rid of the floating point error in fillrects and scissor by adding 0.01f.

Saturday, 7/20/02 3:54 PM
* Made it so that texrects on copy mode will use full alpha but also have alpha compare.
* 0.250 released

11:51 PM
* Made it so that fillrects use the z-buffer as specified and not always update, no compare.
  Banjo-Tooie fixed.

Sunday, 7/21/02 8:01 PM
* Fixed 12 PM clock bug, and added 24-hour clock option.
* Made a REAL error log.
* Fixed stats not showing up by redoing alpha compare for texrects.
* 0.253 released

* Took out if(!force_full_alpha) from alpha compare.

2:46 AM
* Added first part of S2DEX ucode; the obj_loadtxtr and bg_copy.
* Found out that uc2_bg and uc6_bgcopy were the exact same thing... I think F3DEX sorta
  "borrowed" it.  Set the F3DEX one to the S2DEX one.

Tuesday, 7/23/02 11:10 PM
* Added lots more to the S2DEX ucode, yoshi's story is now about as good as it can get.  The
  background uses framebuffer, so...
* Microcode switching should be ok now for the most part.

11:31
* Added combiner for WWF No Mercy rules.
* Allowed things to have negative viewport; MK mythologies fixed.


/*Gonetz*/
Friday, 10/18/02 12.40
I'm going to fix depth problem
* step 1. Added new coordinate to VERTEX - w. Replaced all .z and ->z by .w and ->w b/c old z is 
  actually w. Affected files:
  rdp.h
  Ucode00.h
  ucode01.h
  ucode02.h
  ucode03.h
  ucode04.h
  ucode05.h
  Debugger.cpp
  Util.cpp
  Tested. Nothing seems to be broken :)
* step 2. z coordinate is now calculated in all ucodes.
* step 3. using z for w buffer. z/w actually. Corrected all clipping functions.
  Ops, does not work :(  I forgot, z/w is in range (-1,1). 
  (z/w + 1)/2 does not work well either. 

* Idea: use "screenZ=(z/w)*0x3fe0 + 0x3fe0" formula for z and Z buffer instead of W buffer.
  Wow, it's work! Taz and Gex appears at last :) But some problem remains.
  Some triangles are missing. I think it's b/c of z clipping

Saturday, 10/19/02 13.00
* Found stupid bug in clipping functions which is result of cut'n'paste editing.
  Now picture is close to perfect. But some triangles are still missing, 
  for example water near castle in Mario64.
* Replaced all _z slot names by _w. 
* Fixed z for texrect and fillrect. Strange, but primdepth does not work well for z - 
  DukeNukem64 has errors with it.
  I use primdepth + 8, all works quite well now. Need to test it more.

  23:15
* According to manual, correct formula for z is:
  screenZ = 32*((z/w)*view_scale[2] + view_trans[2])
  I use it now, nothing is changed, but may be some games use other value for 
  view_scale[2] and view_trans[2] then default 0x1ff

Sunday, 10/20/02 17.20
* Z clipping is finally fixed. I thought that z should be 0 after Z clipping,
  but it actually must be clipped the same way as x and y. 
  Now all works perfect!!! Nokonec to, blin :)

* Added missing combines for Taz express and Road Rush
* 0.260

Tuesday, 10/22/02 20.20
* Started to implement ucode for Perfect Dark. I took info about it from Icepir8's plugin.
 Changes: 
   ucode.h -  new ucode
   ucode07.h - vertex and tri4 implemented
   ucode00.h - matrix. mask removed to be compatible with PD
   rdp.h - tex_coord_addr added
   rdp.cpp - rdp_reset, tex_coord_addr initialization
           - rsp_reserved2, tex_coord_addr value
   config.cpp - new ucode
   
Wednesday, 10/23/02 13.30
* new combines and tex modes added.

Thursday, 10/31/02
* Fixed Rayman2. 
  Changes:
    ucode00.h - implemented gSPForceMatrix command in movemem. All 3FFFFF mask replaced by FFFFFF
    ucode01.h - 3FFFFF mask in vertex replaced by FFFFFF
    combine.cpp - implemented missed combines for Rayman2


Saturday, 11/9/02 15.30
* rdp_texrect(): float Z = 32704.0f replaced by float Z = 1.0f; That fixed onscreen 
  info in xg2.
* Fixed combine for Bug's life. Start menu background appears.
* Fixed uc2:modifyvtx. Main menu background in Bug's life appears
* Fixed constant depth processing in do_triangle_stuff(). Main menu in Bug's life works (somehow)
* Fixed combine for Bomberman2. Water is transparent now.
* Monsters poked through walls in DukeNukem64 was caused by depth bias level value.
  Replaced depth bias level from 0x20 to 0x18. 
  No need of "rdp.prim_depth + 8.0f" hack in rdp_texrect() anymore.

* heap of new combines implemented  

Saturday, 11/16/02 
* Since z in N64 is in range [0, 32704], I decided to multiply it by 2.
  It improves quality of depth buffer.
  Changes:
    Util.cpp - do_triangle_stuff()
    Rdp.cpp - rdp_texrect()

Sunday, 11/17/02 
* Added hacks in texrect and fillrect to avoid black screen in ZeldaMM
  "Link meets princess Zelda" cut scene and in between days.
  Changes:
    Rdp.h - new flag
    Rdp.cpp - hacks in rdp_texrect() and rdp_fillrect() 
    ucode06.h - hacks in uc6_bg_copy() and DrawImage()

Monday, 11/18/02
* Added hack into uc2:modifyvtx, (x,z). Tarzan is fixed
* new combines and tex modes added.
* Altered combine for flame in Zeldas. It looks good :) Redone similar combines.


Tuesday, 11/19/02
* Added new settings parameter - depth buffer mode.
  User can choose either new Z-buffer mode or old W-buffer one. 
  W-buffer is useful in games, where Z-buffer causes poke-through artefacts.


I've got Dave2001's last version. Many things are not finished, but I inserted some of his fixes into current version:
* Made it so games only report ucode error only once.
* Backwards viewport needs backwards culling ;) fixed DKR Adventure 2 mode (mirrored tracks).
  I'm not sure about other ucodes, so I haven't changed the culling for them yet.
* Oops, loadblock boundary check was in bytes instead of qwords.  Xena problem fixed.
* Fixed mod_tex_inter_col_using_col1; it was using a 32-bit color when it was really only 16-bit.
  This fixed the colors of the WWF No Mercy menus.

Saturday, 12/14/02 
* heap of new combines implemented  

Sunday, 12/15/02 
* Fixed Banjo-Tooie.
  Changes:
    Rdp.cpp - rdp_texrect() - new hack
              rdp_fillrect() - old hack, removed by Dave2001 for some reason after 0.250
* Fixed backgroung fire on level 23, Doom64
  I've modified alpha compare condition in Util.cpp
* Changed Zelda MM hack in texrect.  
* implemented heap of new combines


Wednesday, 12/18/02
* Changed Zelda MM hack in texrect so it should not affect other games anymore. Konami logo is fixed in many games.
* implemented new combines 

Friday, 12/27/02
* Removed perfect dark microcode from final version - need more work b4 release
* 0.3

Wednesday, 01/07/03
* Changed fillrect so it usses fillcolor allways, but it calculates it differently depending on cycle mode.
  I don't know why Dave2001 implemented so complex color transformation for this function,
  but I think it was a reason for that, so I left it as is for FILL mode, but for 1 and 2 cycle mode I use 
  normal fillcolor. Car selection screen in SF Rush is fixed.
* Changed texrect  - I force depth compare when primdepth is used. Car selection in SF Rush 2049 is fixed.

?
* Changed fillrect again. Privious modification causes many gfx erorrs. 
* Added depth value check in texrect. Primdepth value can be too high.

Sunday, 01/19/03 
* Added new buffer swapping method which prevents flicker in Paper Mario (not everywhere yet).
* Implemented many combiners for Paper Mario.

Friday, 01/31/03
* Fixed uc0_moveword LIGHTCOL. n was calculated wrong. 
  Background in "star soldier vanishing earth" fixed.

Saturday, 02/01/03 
* Implemented calls of GS2DEX ucode functions from F3DEX2 ucode.
  2D stuff in Bomberman 2 is fixed.
* Changed uc6_obj_sprite so it uses combiner instead of just texture.
  Required for some objects in Bomberman 2

* 0.31

Wednesday, 02/12/03
* Added new setting - ignore_short_dlist. It allows me to avoid weird bug in Tonic 
  Trouble, when game get caught in an endless loop, drawing title screen.
* Found an error in ini which was the reason why Dave's work for Yoshi Story caused an exception.
  F3DEX1 ucode which Yoshi uses in the begining, was mistakenly set to 6. Yoshi is
  working with last Dave's version now


Thursday, 02/13/03
* Moved Dave's code for Yoshi into current version. It works
* 0.312

Friday, 02/14/03
* Fixed uc6_obj_sprite so sprite can be translucent. It needed for Yoshi statistics screen.
* Trying to fix garbage appeared on top of the screen in Yoshi. no results :(

Saturday, 02/15/03 
* While trying to fix topscreen garbage, I begin to understand, how the things work :)
  Texrect function copies texture into framebuffer(DRAM) instead of drawing it.
  Dave chose very strange and complex way to do it - he loaded texture, copied it's data 
  into special texture  buffer, and then copied it from that buffer into framebuffer. 
  I have modified his code. I directly copy data from texture address into framebuffer adress.
  It's faster, more easy and less buggy :) But it does not fix topscreen garbage problem.
  This problem is solved somehow in PJ 1.5 plugin though.

Thursday, 02/27/03
* Fixed DrawImage routine, so it works correct with scaled images. Zoom in Yoshi works
* Implemeted uc6_obj_rectangle. Pokemon Puzzle League is almost playable now. But some textures are broken.

Saturday, 03/01/03 
* Worked on Pokemon puzzle league:
  Fixed DrawImage routine, so it can draw images with odd value of width and height. 
  Added possibility to use combiners with backgrounds.
  (almost) no problems with background remained in this game.
  I need to solve problem with 8bit CI textures, wich became broken after loading of 32bit RGB textures.

Saturday, 03/08/03 
* Fixed rdp_loadtlut(), so it will not get off pallete array bounds.
  It fixes Inferno area in Banjo 2 and may be some other games.

Tuesday, 03/11/03 
* Finnaly found why CI textures became broken after 32bit texture load in PPL.
  It was a bug in uc6_obj_loadtxtr (). Dave forgot to set tile size there, so
  after 32bit texture load it was equal to 3, and all non 32bit textures was
  swapped wrong. Now all textures in PPL look correct, the game is almost playable :)

Wednesday, 03/12/03
* Implemented loading of title screen in games which draw image before first ProcessDList
(Rayman2, Tonic Trouble, Wave Race...) I found solution in sources of Rice's great plugin.


Friday, 03/14/03
* Fixed texture problem in PPL when it uses F3DEX 1 ucode! 
  Tile's ul_s and lr_s coordinates were set to 0 by settilesize - 1 texel was clamped to all triangle.
  Solution: take ul_s and lr_s from next loadtile. It works!

Saturday, 03/15/03 
* Fixed bricks in 3D mode. Bricks use CI texture, and for some reason u and v coordinates 
  of loaded vertex are two time bigger then they must be, when vertex uses CI.
  Solution: check format in uc0_texture() and change s_scale and t_scale for CI format

Sunday, 03/16/03 
* Implemented uc0_moveword() move_point. Cruise in USA works perfectly now!

Monday, 03/17/03
* Fixed many bugs which causes an exception in PPL. 
* Added new special fix - wrap textures too big for tmem. 
  It's Dave's old hack for trees in Zelda MM intro. 
  It breaks texture in Zelda's N64 logo and may break other things,
  so I've made it optional

Tuesday, 03/18/03 
* Fixed candle's flame in Paper Mario - error in alpha combine
* My fix for car selection screen in SF Rush 2049 breaks particle in Rayman.
  I don't know, how to make both things working :(
  Another special fix for SF Rush 2049 only

Wednesday, 03/19/03
* Fixed pointer in Bust a Move 2! This game has the same problem with CI textures,
  as PPL, so fix for PPL fixes this game too :)

Saturday, 03/22/03 
* Implemented branch_z function for F3DEX 1 ucode. It's used in SF Rush. 
  All texture problems in this game are fixed!
* Added new special fix - "use depth compare for fillrect". Using depth compare
  in fillrect fixes car selection screen in SF Rush, and doing this much better,
  then my previous hack. This option changes N64 logo in Zeldas though, so it's
  off by default.

Sunday, 03/23/03 
* Fixed most of tecture errors in V-Rally 99. The same problem - too large u and v coordinates.
  This fix is a hack indeed. I'm tired of all that hacks, but I could not find,
  why vertex loaded incorrectly.
  And besides, all in-game statistics is missing :(

Monday, 03/17/03
* I forgot to implement call of uc6_ldtx_rect_r from zelda ucode. That's why
  in-game statistics in V-Rally 99 was missing.

Wednesday, 03/26/03
* Fixed combiners using in sprite commands. Combine() is not used if in "copy" mode
V-Rally looks exactly as on N64.

Tuesday, 03/27/03 
* Allowed negative viewport for zelda ucode. Destruction Derby Professional Championship is fixed.

Saturday, 03/29/03 
* Fixed crc calculation for 8-bit color textures. Burning cars in Destruction Derby are burned :)

Monday, 04/07/03
* Implemented TextureRectangleFlip - text in Wetrix fixed

Thursday, 04/10/03
* Fixed uc6_obj_rectangle_r - text in Yoshi has correct size.
* 0.4

Friday, 04/17/03
* Fixed trail problem in Zelda OOT. Rice sent me an idea how it can be done.
  Actually it was already implemented by Dave, but values for depth bias level
  were incorrect.  

Sunday, 04/19/03 
* Implemented Sprite2D microcode. Backgrounds in Silicon Valley are fixed
  Fixed primdepth loading. Billboard objects in Silicon Valley are fixed too.

Wednesday, 04/30/03
* Fixed palette loading (load_palette). This fixed nemu in StarCraft. Yet again the solution (idea) was found
  in sources of Rice's plugin. 
*0.41

?
* fixed compatibility of Zelda OOT MQ with 1964

Sunday, 05/18/03 
* Added hack for sun in zeldas.

Wednesday, 05/21/03
* Implemented palette loading in Sprite2D microcode and fixed many things in it. 
  2D stuff in wipeout works.

Tuesday, 06/03/03
*New hack in texrect to remove black screen in Sin and Punishment


Thursday, 06/05/03
* fixed uc1_line3d - map in Doom64
* changed blender mode for fillrect - sky in Doom64
* fixed combiners for walls and weapons in Doom64

Saturday, 06/07/03 
* changed texture mods for CI textures. I'm changing palette before texture loading
  instead of modifying already loaded texture. This is more faster and more precise.

Sunday, 06/08/03 
* added new hotkey - texture filtering mode can be changed during gameplay by
  pressing BACKSPACE. This is Raziel64's idea.

* Implemented frame buffer emulation. I use 2 pass approach. First pass - detect frame buffer usage - very fast. 
Second pass - normal display list processing, but with knowledge how frame buffers will be used.

* Added ExtendedPlay's Banshee hack. 

* Added "special game settings" section in the ini

* New hotkeys for motion blur and read always

* Many other fixes

* New configuration dialog, based on property sheets

V. 05

* Fixed ucode for Perfect Dark. It works without glitches now

* Added support for Jet Force Gemini and Mickey's Speedway into Diddy's ucode.

* Added partial yuv textures support. I failed to decode them with the method described in the manual - something wrong with the coefficients.
 Thus I found correct formula in Internet, it works. I have optimized decode procedure specially for Ogre Battle 64, it hardly will work with other game.

* Implemented new frame buffer related functions - FBRead and FBWrite. FBRead could help to emulate frame buffer effect which previously required
"read always" option. FBWrite makes Dr.Mario playable

* Implemented hardware texture emulation. Huge and hard work. 

* Failed to do correct fog emulation. I tried to use fogcoord extension, like in Orkin's plugin. It works, but fog is not smooth.

* Added large texture support for sprite microcode

* Fixed texrect_flip

* Changes in the configuration dialog

v. 07 SP8

- New version

* I have switched to RGBA color format. This format is used by N64 itself.
  I can't understand, why Dave decided to use ARGB. With RGBA I don't need
  to do color conversions, and everything is more simple. Besides, OpenGL also uses
  RGBA format only, so port to OpenGL will be more simple.

* I've made another attempt to implement fog via fog coord extension.
  This time I set fog coord after all clipping. It still not perfect for clipped surfaces
  but no major glitches this time. I decided to use it.

* I have found why kicked out fighter in Super Smash Bros has black rectangle bourder.
  This black rectangle have to be rendered into the depth buffer. Weird thing.
  I've made check that texrect will not be drawn if current color buffer is depth buffer.
  This problem is fixed.

* I have found that walls in Perfect Dark are incorrect again. That was caused by my 
  hack in the combiner for car setup in Top Gear Rally. I have corrected this hack.
  It does not use LOD if mipmap_level is the same as current_texture.

* I have implemented depth buffer render. Of course, it takes a lot of CPU time.
  But I found fast algorithm with fixed point arithmetics, so I can run some
  games fullspeed even on my 1ghz Celeron.

* Hacktarux suggested me to use N64 format for z value, so Glide will loose 
  precision on the same place as N64 itself. I finally understood what he ment,
  and implemented it. Well, all old poke-through problems with z-buffer are gone,
  but new one appeared. This method does not work. But I noticed, that conversion
  from my z to N64 z is not linear. It gives enough precision for large z 
  at the cost of loosing precision with small z. I decided to use floated point 
  z conversion which works similary - (z/65535)*z*2. Great! No problems with close
  objects and much less problems with far ones. After that I have removed w-buffer mode
  entirely. It's not compatible with fog-coord anyway. I also removed old fog algorithm.

* Implemented 32bit frame buffer support (convert 16bit glide frame buffer into 32bit N64 ones).

* Fixed frame buffer effects detection algorithm to support rear-view mirror in Roadsters.
  Later I found how to make it working without fb support - just remove corresponding texrects.
  Rear-view mirror now works full speed on any videocard.

Monday, 27 Dec 04
* Fixed grid in Mario Golf. The error appeared after rewriting of modifyvtx function. It was caused by
unset x,y and zsrc is on. 

Tuesday, 28 Dec 04
* Fixed combiner for road in Zelda OOT. 
* My ZtoN64Z causes problems for small z. As result text in Tigger Honey Hunt is disappeared.
  Tuned ZtoN64Z so it does not transform small z now. Not sure, it can cause other problems.
* Added new hack - increase texrect size. Rice uses similar hack to fix new tetris and mega man 64.
  The new tetris is fully playable now with texture coordinate fix.

Sunday, 02 Jan 2005
* Added prim_depth using in fillrect.

Tuesday, 04 Jan 05
* Rewrited fog again
* Implemented special fog mode, when object is not fogged, but became transparent instead.

Wednesday, 05 Jan 2005
* Fixed depth buffer clear in fillrect.
* Removed depth compare hack from fillrect
* Fixed out of range bug in depth render.

Sunday, 16 Jan 2005
* Fixed depth problem in Destruction Derby. Maximum depth value must be <= 65534
* Fixed depth problem in sprite microcode - z conversion must not be used in set_sprite_combine_mode.
* Fixed color combiner for fire electric pen.
* Fixed fog when fog multiplier is negative.
* Added combiners for Paper Mario
* Fixed texcoord hack for Polaris Snow Cross

Monday, 17 Jan 2005
* Added combiners for Paper Mario

Tuesday, 18 Jan 2005
* Fixed text in Doraemon - Mittsu no Seireiseki. This is the second game, which uses CPU frame buffer writes.
* Added dithred alpha support. I found 2 undocumented Glide functions: grStippleMode and grStipplePattern.
  They work almost the same as similar functions in OpenGl. Dithred alpha test is used in Mario64, and now
  it works very good.

Thursday, 20 Jan 2005
* Added per-pixel LOD calculation. It was quite hard to get decent result. Peach/Bowser portrait's transition
  in Mario64 works fine, Perfect Dark is acceptable too. Only Utils.cpp is changed.

Friday, 21 Jan 2005
* Added LOD option to the configuration panel
* Added missing tooltips
* Added stipple options to ini file.


22-30 Jan 2005
* RE2. fix in DrawImage.
* RE2. depth buffer render to video memory to fix depth problem. Slow
* RE2. Found how movies work. 2 mode implemented - stretched and in the native resoluton.
* RE2. Added depth buffer render via HWFBE. Fast and perfect.
* Fixed depth problem with prim depth. 
* Fixed depth problem with texrects which uses prim depth - depth write must be off while depth compare must be on.
* Fixed some combiners.

Tuesday, 1 Feb 2005
* !Changed rdp_loadblock. texture image address will not changed if lr_s is 0. This fixes Twisted Edge Extreme Snowboarding 
  background.

Thursday, 3 Feb 2005
* Added hack for backgrounds in WCW Nitro.
* Removed zelda hack from DrawImage. WCW Nitro backgrounds did not work because of this hack. 
* Added hack for texture generation in Chopper Attack. This hack was used for all games and this caused one glitch in
  Super Mario, so I made it optional.
* Fixed partially Horisont Scaner in Perfect Dark. Glitch was caused by one option on texrect, which prevents to draw
  texrects wich use previous frame as texture. For Horisont Scaner the same color buffer is used each frame (strange).
* Added missing combiner for Perfect Dark.

Friday, 4 Feb 2005
* Added GUI option "Show RE2 videos in native resolution"
* Fixed videos crash with PJ64. For some reason first frame has height > 256, so I had write above bounds here.
* Implemented several combiners for Paper Mario and Tony Hawk.

Tuesday, 8 Feb 2005
* Fixed "Tidal wave" in Paper Mario. It's quite complex frame buffer effect, many things were changed in FB emulation.
  It still has problem with HWFBE.

Wednesday, 9 Feb 2005
* Fixed (rather hacked) viewport problem in RE2.

12-13 Feb 2005
* Added suport for cloaking effect in Perfect Dark. It was hard - the game may use about 30 auxilary frame buffers here.
  New frame buffer type was added - aux_copy. HWFBE does not work correct here.

Monday, 14 Feb 2005
* Source cleaning.

Tuesday, 15 Feb 2005
* More source cleaning
* Fixed combiner for boost mode in Beetle Adventure Racing.



23-27 Feb 2005
* A lot of changes in fb emulation and in HWFBE. Tidal wave in Paper Mario, cloaking effect and motion blur in Perfect Dark,
  replay in 1080...

1 Apr 2005
* Paper Mario intro. There is a kind of fb effect. I have changed main ci height calculation in fb_setcolorimage and 
  in rdp_setcolorimage to make it working.
* Paper Mario intro. Added a hack into blender to remove weird texrect when bowser throw up flame.



These changes were originally not mentioned here:
Glide64 Wonder and Wonder Plus
* April 2005 to November 2005

glide64-wonder+-linux
* unknown

glide64-wonder+-linux v10
* March 2007

glide64-wonder+-linux v11
* April 2007

glide64-wonder+-linux v12
* May 2007



Glide64-amd64 v0.9
* forked from glide64-wonder+-linux v12
* Ported all GCC and nasm assembler to AMD64 and corrected various other 64 Bit portability problems
-- 2008-02-01 Günther <guenther.emu@freenet.de>
