Replace Tmem_nasm.asm with C++ code. Patch by pyro.
[Glide64.git] / Changes.txt
blobab7a38ce44d77838c53c4cf08a57aa6c8aefb763
1 \r
2 2/09/02 Version 0.04 Released\r
3 \r
4 Sunday, 2/10/02, 4:35 PM\r
5 * Completely redid combine modes to allow for multiple equation types\r
6 * The new combining method seems to have made enemies in Star Fox flash when you hit them\r
7   like they are supposed to.\r
8 * Also in the new combine mode system, unimplemented combiners should now show as bright red.\r
9 \r
10 Monday, 2/11/02, -:-- PM\r
11 * Added many new combine modes\r
13 Tuesday, 2/12/02, 5:29 PM\r
14 * Fixed it so that it will now use the tile descriptor given in uc0:texture instead of\r
15   assuming 0.\r
17 Wednesday, 2/13/02, 6:53 PM\r
18 * Added 1964 support.  The problem was that 1964 reloads the plugin when it switches\r
19   to fullscreen.  Also, I wasn't logging DllMain, which was why I didn't notice the error.\r
20   Now it switches to fullscreen at the next dlist, meaning no reloading the dll since we\r
21   last called grGlideInit.\r
23 Monday, 2/18/02, 1:26 PM\r
24 * Added triangle caching, now things should run a lot faster since it only has to do matrix\r
25   transformations once per vertex instead of every time the vertex is used.\r
26 * Also, vertex transformations are now done during the vertex instruction, which fixed the\r
27   problem with Banjo's seperated body parts.  The vertices were using two different matrices\r
28   and doing the transformations at draw time was only using the last matrix that was set.\r
30 2:45 PM\r
31 * Now it should only calculate lighting once per vertex also, but I didn't see any speed\r
32   increase... maybe something went wrong?\r
34 Tuesday, 2/19/02, 8:59 PM\r
35 * Started on uCode 2 (5 in the compat. list), F3DEX 2.XX.  This is the uCode that Zelda64\r
36   uses.  So far I have written the instruction table, and implemented uc2:moveword for\r
37   segment offset.  I'm really amazed that it now runs without ANY undefined instructions.\r
39 11:13 PM\r
40 * Gugaman has fixed the lighting speed problem!  Now it goes a lot faster.  The vertex\r
41   normals were being normalized in a loop with all the lights, and also a lot of the\r
42   variables are now declared as 'register'.  We also took out an unused vector.\r
44 11:56 PM\r
45 * We optimized it again!  This time I moved the normalizing code totally out of the light\r
46   calculation.  I am also now calculating lighting before copying, which now allows it to\r
47   only calculate once per frame.\r
49 Thursday, 2/21/02, 8:51 PM\r
50 * Yesterday I got my Zelda wireframes working.  Today I added textures, and am currently\r
51   researching how T1 works.\r
52 * Sometimes triangles were empty (all three points were the same), which would mess up\r
53   the click detection code.  Now it's a lot easier to navigate the triangles, and\r
54   it should speed up a little more too (barely).\r
56 Saturday, 2/23/02, 5:14 PM\r
57 * Added texture swapping support, things look better now in Super Smash Brothers and\r
58   Pilotwings.\r
60 8:51 PM\r
61 * I found out what's going on with most of my texture problems.  I've severely underestimated\r
62   the use of mask.  Not only can it be used for mirroring, but it can be used to determine\r
63   size as well.  It's time to do the major change I've been avoiding all this time...\r
64   triangle and texture splitting.\r
65 * Also, by using mask, it fixes all those very odd settilesize problems, like the Quest64\r
66   fireball spell.\r
68 11:52 PM\r
69 * I've partially implemented texture splitting, it seems to load the two textures correctly.\r
71 Sunday, 2/24/02, 1:49 AM\r
72 * Fixed the missing triangles problem with Zelda and Super Smash Brothers, the uc2:tri1\r
73   command uses cmd0 for it's vertices instead of cmd1.\r
75 8:35 AM\r
76 * Ok, when I turned on my computer this morning, it deleted my Util.cpp and I lost my\r
77   texture splitting.  It was already messed up, so I would just have to redo it anyway.\r
78   I'm going to do triangle splitting first now, texture splitting isn't as important.\r
80 9:15 AM\r
81 * Gonetz (Gonetz@ngs.ru) submitted a speedup idea, to pre-multiply matrices so that they\r
82   do not have to be calculated with each vertex.  I had a little trouble implementing it\r
83   because I was trying to do model*proj instead of proj*model or vice versa for both.\r
85 Monday, 2/25/02, 6:46 PM\r
86 * I've totally redone the combiner\r
87 * Texture wraps and mirrors with clamp are now used in texture loading, super smash brothers\r
88   almost works correctly now\r
89 * Texture CRC checks now should be correct\r
91 Saturday, 3/02/02, 2:58 PM\r
92 * Wheeee!!! I've speeded up compiling time by A LOT by using a precompiled header.\r
93 * I've figured out how to fake the LOD into letting me do texture interpolation.\r
94 * I've implemented many zelda combine modes.\r
96 Tuesday, 3/05/02, 5:35 PM\r
97 * YAY!!! Icepir8 has shown me how to do lighting correctly.  I was using an unsigned byte when\r
98   the light direction requires it to be signed.\r
100 Someday in-between Tuesday and Friday, 3/??/02, whatever PM\r
101 * I've implemented the Zelda fire combine mode\r
103 Friday, 3/08/02, 12:04 AM\r
104 * Gonetz sent me the file to implement Waverace's ucode.  I tested it and it works.  He also\r
105   gave several suggestions for improving the combiner, which I will do in the next few days.\r
107 Saturday, 3/09/02 9:00 PM\r
108 * I've done yet another combiner, this time it doesn't have a gigantic switch statement.  This\r
109   combiner is based on ideas by Gonetz, and combined with some of my own.\r
110 * Icepir8 just told me that if I transformed my normals on vertex load instead of transforming\r
111   light vectors, I could save a lot of calculations.\r
113 10:58 PM\r
114 * Okay, I'm done with the new lighting system.  I don't see any speedup because something else\r
115   is seriously slowing my plugin down.\r
117 Sunday, 3/10/02 3:18 PM\r
118 * Gonetz has told me how to fix a matrix problem in Waverace.  Now there is no large dolphin.\r
119   The problem is that I need to clear the matrix stack count every frame.  I had this code\r
120   before, but took it out for some reason.\r
122 Monday, 3/11/02 8:33 PM\r
123 * Implemented a "GFX plugin has caused an exception" dialog, that makes it go back from\r
124   fullscreen and prevents it from crashing on exceptions. (try/catch in ProcessDList)\r
125 * Figured out how force blending and other such works, not implemented yet though.\r
127 10:12 PM\r
128 * Implemented some force blending, for things like mario kart player select.\r
130 Tuesday, 3/12/02 9:48 PM\r
131 * Fixed kokiri faces bug, I had read somewhere that palettes had to be aligned to 8-bytes,\r
132   but this was obviously not true.  The palette in zelda was using an ending value of 'C'.\r
134 Wednesday, 3/13/02 6:17 PM\r
135 * Defined the real values for combine modes rather than a shortened, one-for-all-slots\r
136   version.  Now I don't get odd things like "use prim_lodfrac for starfox menu item alpha",\r
137   instead it is "1".  All of the combine descriptions need to be converted though :(\r
139 8:21 PM\r
140 * I redid lighting again, this time a mixture of both methods.  I first translate the light\r
141   vector by the inverse model matrix, and then use that in ucx:vertex to calculate lighting.\r
142   This way I do not have to transform every single normal, rather, one light vector per group.\r
144 Thursday, 3/14/02 6:55 PM\r
145 * Got waverace texrects to show by setting the default alpha for shade in fillrects to 0.\r
147 Saturday, 3/16/02 2:54 PM\r
148 * Fixed clamping problem, was using tiles 0 and 1 always, when it should've been rdp.cur_tile\r
149   and rdp.cur_tile+1.  Now Banjo-Kazooie wraps everything correctly.\r
150 * Added many many more combine modes for the new combiner over the past few days.\r
152 5:29 PM\r
153 * Revised the debugger, now it can run in any resolution.  Also redid the texture viewer\r
154   so that it's simpler, and supports TMU1.\r
156 9:12 PM\r
157 * Added the two .3df files to the program as resources, they had to be as "RCDATA", even\r
158   though nothing specified that.  No more extra .3df files are required.  The font texture\r
159   is now loaded from a 1-bit alpha texture, using some assembly code, and the cursor texture\r
160   is the same.  I also added a colored text option, so that the combiners and headers of the\r
161   debugger are color-coded.\r
163 Sunday, 3/17/02 10:45 PM\r
164 * Fixed translucency problems finally.  Now Link shows up fully opaque and nothing else\r
165   messes up.  ALPHA_CVG_SEL does in fact mean full alpha, but I wasn't handling\r
166   rdp:setothermode so I was getting it where I shouldn't have been.\r
167 * Fixed flickering problems in games such as Snowboard Kids and Paper Mario.  The problem was\r
168   that some games use more than one DList per frame, and I was flipping on every DList.  Now\r
169   it flips on UpdateScreen instead of on the DList.\r
171 Tuesday, 3/19/02 4:50 PM\r
172 * Made it so that outputting text without scaling is possible, FPS counter doesn't scale in\r
173   case of resolution too low to see.\r
174 * Added check box for FPS counter\r
176 9:45 PM\r
177 * Added a bunch of new options to the dialog but all they do now is save to the INI, nothing\r
178   is implemented yet for when they are set.\r
180 Friday, 3/22/02 3:48 PM\r
181 * Bleh, I'm sick today, 102.8 temperature, however, the computer isn't causing a headache,\r
182   so I will continue working.\r
183 * Implemented a bunch of the options yesterday, such as logging, etc. (no more #defines\r
184   needed)\r
185 * Upgraded computer to Win2k SP2.  Mario's face screen goes a little faster now, but not much\r
186   else changed.\r
187 * Took out the now useless VERTEX_N structure since lighting is now calculated in UC:VERTEX.\r
188 * Gonetz sent the software culling I asked for.  I'm going to try and improve this by doing\r
189   everything I can in UC:VERTEX, and also a flag in vertex for clip_z, to determine whether\r
190   we can use a precalculated x/z and y/z value.\r
192 6:21 PM\r
193 * Pre-calculated x/z, y/z in UC:VERTEX, use if not z-clipping.  The real reason I did this is\r
194   for software culling, so they don't have to be re-calculated.\r
195 * Made it so that vertices will only calculate u/v coordinates once, or not again until the\r
196   texture attributes are updated.  z-clipping doesn't matter for this, u/v were calculated\r
197   before the clipping in the first place.\r
198 * Changed the type passed into DrawTri to VERTEX** to make it work with clip_tri. (modified\r
199   from Gonetz's original to allow for u/v calculate once (previous comment)).\r
201 8:12 PM\r
202 * Now screen coordinates, 1/z, u/z, and v/z are precalculated also. (unless z-clipping)\r
203 * Actually added software culling, I think it sped the plugin up by a lot.\r
205 Saturday, 3/23/02 8:54 PM\r
206 * Found that the reason for the Zelda magic bar and Aerogauge fire messing up is that yes,\r
207   textures can only be wrapped on powers of two, but they can be clamped anywhere, whatever\r
208   is specified by lr-ul.  I'm going to redo a lot of my texture code soon, and I will\r
209   incorporate this fix (manually clamp to the full power of two texture)\r
211 Monday, 3/25/02 12:53 PM\r
212 * STILL sick, 100.9 temperature today.\r
213 * Fixed a bug with resolution switches, it wasn't setting the resolution width and height,\r
214   only video mode.  Also, when you switch resolutions it will turn off the debugger.\r
216 Tuesday, 3/26/02 5:21 PM\r
217 * After trying to implement frustrum clipping, I have finally decided that my method of 2d\r
218   clipping is better.  I am however using the inequalities x<-z, x>z, y<-z, and y>z in several\r
219   places though.\r
220 * I've implemented culldl for Zelda, not sure of any speedup since I didn't really look at\r
221   the speed before I changed it.\r
223 Wednesday, 3/27/02 10:30 AM\r
224 * Fixed uc2:geom_mode so that now both clr and set are shifted before they are used, instead\r
225   of shifting the final result.  Now the culling in zelda works properly.\r
227 3:07 PM\r
228 * Fixed culldl in ucode2, was using ||s instead of &&s, &&s didn't work b/c it needs to check\r
229   the volume between the vertices instead of the vertices themselves.  Now it checks that\r
230   each condition is met at least once to decide whether to draw or not.\r
231 * Fixed a bug where it would log the alpha combiner also if the color combiner was\r
232   unimplemented.\r
234 Thursday, 3/28/02 7:16 PM\r
235 * Unimplemented combiner text descriptions now show up as red, the alpha as a brighter red\r
236   so you can easily tell them apart.\r
238 Friday, 3/29/02 4:29 PM\r
239 * Implemented many many many more combiners.\r
240 * Implemented branch_z for ucode 2 so that Death Mountain Trail and the well work.\r
241 * Implemented prim depth source and alpha compare for texrects, made lens of truth work\r
242   backwards.\r
244 Saturday, 3/30/02 4:27 PM\r
245 * Added more descriptive update() function, now outputs everything it's trying to do,\r
246   also TexCache outputs things to debug texture loading crashes.\r
247 * Converted some things such as texture loads to BMASK/WMASK/DMASK format (different masking\r
248   method, fixed one illegal operation in zelda subscreen).\r
249 * Manually clamped all textures, which fixed the zelda magic bar, and several other texture\r
250   border issues, like the subscreen.\r
252 Tuesday, 4/02/02 8:54 PM\r
253 * Gonetz sent many new combiners\r
254 * Implemented a lookup for the first byte of combiners\r
256 Wednesday, 4/03/02 5:06 PM\r
257 * Gonetz sent new combiners again\r
258 * Oops, realized that I didn't do as I had planned with the alpha combine lookup, I meant\r
259   to use 0x0FF00000 instead of 0xFF000000 since the first 4 bits are not used.  It is fixed\r
260   now.\r
261 * Now it always uses Glide64.ini no matter what the name of the plugin (dll file) is, so\r
262   you can have multiple versions of the plugin using the same ini.\r
264 Thursday, 4/04/02 11:25 PM\r
265 * Made shade values full for texrects (for dual heroes)\r
266 * !!! Added CMB_MULT and CMB_SET stuff to texrects!  A long time ago I thought texrects would\r
267   only have textures, and then later forgot to put these in.  Now combiners should work MUCH\r
268   more often on texrects.\r
269 * Changed from full alpha and full color for texrects to just full alpha, and black color\r
270   (for the zelda menu).\r
272 12:35 AM\r
273 * Changed my mind again about the texrect color thing, now all four values are full (dual\r
274   heroes needed this)\r
276 Friday, 4/05/02 6:15 PM\r
277 * Made the plugin faster by not drawing fillrects that had an alpha value lower than 5\r
278   (usually one fullscreen rect per frame)\r
279 * Made it faster again by not setting the uv_calculated for every possible vertex on texture\r
280   load, now it acts more like a CRC\r
281 * Lemmy has led me to the zelda fixed view problem.  There was an unimplemented instruction,\r
282   background as he calls it (0x0A), which draws a fullscreen 320x240x16 rectangle.  It is\r
283   not yet implemented yet though.\r
285 10:55 PM\r
286 * FINALLY, after a million hours of working on the temple of time problem, GokuSS4 tells me\r
287   that Lemmy can help fix my problem.  Lemmy said that there is a command that draws a\r
288   320x240x16 texture on the screen.  Knowing the command was not enough though, using the\r
289   address it gave, I got static.  Icepir8 and I eventually figured out that the address\r
290   actually pointed to a structure whose fourth element was a pointer to the actual texture.\r
291   The temple of time, and all other fixed view problems, now work.\r
293 Sunday, 4/07/02 10:21 PM\r
294 * Implemented a bazillion new combiners from Ogy's list.\r
295 * Fixed mario texrects, on cycle_mode=copy, it doesn't use combine, but rather texture.\r
297 12:22 AM\r
298 * Clipped texrects properly so that they do not stretch as they go off the screen.  They\r
299   are also clipped to scissor instead of screen now also.\r
301 Monday, 4/08/02 11:40 PM\r
302 * Fixed a problem with the scissor rect being too big for the screen.\r
304 Tuesday, 4/09/02 6:17 PM (.04944)\r
305 * Fixed the zelda orange texrect problem, Gonetz implemented a combiner for Kirby 64 that\r
306   was actually already implemented.  I commented his duplicate, and it worked again.\r
308 12:03 AM\r
309 * Switched the order of alpha compare/CVG_X_ALPHA\r
310 * Made it so that XLU surfaces do not update the z-buffer\r
312 Thursday, 4/11/02 6:34 PM\r
313 (0.1 Beta #1 -> Ogy, Jeremy, Quvack, Slougi)\r
314 (0.1 Beta #2 -> Ogy, Jeremy, Gugaman)\r
315 (0.1 Beta #2+ -> Jeremy, Gonetz)\r
316 (0.1 Beta #3 -> Gonetz, Ogy, Scorpiove)\r
317 * Gonetz sent new combiners.\r
318 * Gonetz has finally agreed that it is time to release.  I'll send to Ogy after just a few\r
319   more fixes.\r
320 * Disabled most recent thing added, xlu surfaces, just in case because of release.\r
321 * Changed unimplemented combiners to show T0 instead of the last combiner used, since most\r
322   objects use T0 at least somewhere.\r
323 * Found bug in texrect clipping, the fast on/off cut return was wrong.\r
325 10:24 PM\r
326 * Fixed texture swapping in certain games like Super Smash Bros by swapping the x value\r
327   instead of the address.\r
328 * Made it so that unimp.txt is not created unless unimp logging is enabled.\r
330 11:44 PM\r
331 * Spherical mapping fixed, works now in every instance I've seen.\r
332 * Option added for 'Buffer clear on every frame'\r
334 Friday, 4/12/02 4:44 PM\r
335 * Bug fixed when Glide64 was not as Glide64.dll, I had typed in "Glide64.dll" instead\r
336   of getting the full path.\r
338 (0.1 Beta #4 -> Ogy, Falcon4Ever, Jeremy, Gugaman, McLeod, Scorpiove)\r
340 Sunday, 4/14/02 2:03 PM\r
341 * Switched from ac_one on unimplemented to ac_t0, b/c it causes less problems with translucent\r
342   things.\r
344 4:00 PM\r
345 * Fixed a Ridge Racer crash that had to do with texrects being off the screen.  The reason my\r
346   previous offscreen clipping code didn't work for the y-axis was because I needed to flip\r
347   the coordinates, not the borders, to make ul_y < lr_y.\r
348 * Fixed a problem in fillrect.  If fillrect used fill color, it would check if it had less\r
349   than 5 alpha to determine whether to draw or not.  The problem is... fillrect only has\r
350   1 bit of alpha and I didn't think about that when I wrote the compare.  Now some black\r
351   rectangles that didn't show up before now will.  The only problem is that this may slow\r
352   the plugin b/c of a fullscreen clear that now must occur.\r
354 9:37 PM\r
355 (0.1 Beta #5 -> Gugaman, Ogy, Scorpiove, Quvack)\r
357 2:11 PM\r
358 (0.1 Beta #6 -> Gonetz, Ogy, Scorpiove, Quvack, IceLord)\r
359 * Added ToolTips for all configuration options.\r
361 Monday, 4/15/02 7:31 PM\r
362 * Finished up ToolTip text\r
363 * Disabled FPS counter because of bugs it has\r
365 8:11 PM\r
366 * Finished wireframes for texrects and fillrects.\r
367 * Added an option to select the colors to use for wireframes.\r
369 Wednesday, 4/17/02 7:49 PM\r
370 * Changed address mask in uc0:displaylist to 0xFFFFFF instead of 0x3FFFFF.\r
371 * & also in ProcessDList (Zelda: MM runs now, complete gfx errors).\r
372 * Put an &BMASK at the end of segoffset.\r
373 * Glanced through ucode02.h replacing incorrect masks.\r
374 * Changed a 0x3FFFFF in TexCache\r
376 Thursday, 4/18/02 9:49 PM\r
377 * Scissor added to update\r
378 * THE INFAMOUS RESOLUTION PROBLEM IS FIXED!!!  After a while of looking at things, the\r
379   resolution problem that was present in many games is now fixed.  I noticed two variables\r
380   of name VI_X_SCALE and VI_Y_SCALE.  These contained values typically 0x200 and 0x400\r
381   normally, but when something was stretched in the y-axis, VI_Y_SCALE = 0x800, double\r
382   the original.  By using division between the current and original, you get the correct\r
383   scaling.\r
385 Friday, 4/19/02 5:32 PM\r
386 * Made it so that tooltips can be easily disabled (for those without the platform sdk)\r
387   by commenting the line in Gfx #1.3.h that says "#define USE_TOOLTIPS"\r
389 11:20 PM\r
390 * CMB_MULT and CMB_ADD/SUB are now completely unrelated in values, and it performs the\r
391   add/sub operation first.\r
393 ** 0.1 released **\r
395 Tuesday, 4/23/02 10:43 PM\r
396 * Made it so that the uc2:BG command doesn't use the z-buffer.\r
397 * Added uc2:BG to the log.\r
398 * Made uc2:BG use alpha (for alpha compare)\r
399 * Going to start on a HUGE texture loading change... allowing modification of textures\r
400   while loading and also faster loads, possibly using some assembly.\r
402 Sunday, 5/05/02 6:01 PM\r
403 * Figuring out many things about texture sizes, assembly going well so far\r
404 * Improved the debugger, allowing a NULL triangle selection.  Also, as when you press space\r
405   bar to go to the texture of the selected triangle, you can now press the left control key\r
406   to go to the last on-screen triangle that used the selected texture.  This is useful to\r
407   find what a messed-up texture is supposed to be of, since you can see where it was on the\r
408   screen.  Also, if the texture was not used this frame, it selects NULL, which doesn't display\r
409   any triangle information.\r
411 6:27 PM\r
412 * Made it so that interpolation of 0.0 or 1.0 ONLY uses the needed texture, because the other\r
413   one may not have had its tile descriptor even set, loading a useless noise texture. (INTER\r
414   macros in Combine.cpp)\r
416 9:25 PM\r
417 * 16-bit RGBA seems to be as far as it can go... starting LoadTile emulation now.\r
419 Saturday, 5/18/02 1:22 PM\r
420 * Lots of school recently, no time to work\r
421 * Fully re-implemented both LoadBlock and LoadTile in order to account for non-aligned textures\r
422 * Implemented a new texture format: 4-bit CI.  This should be the hardest of all.\r
423 * Made it so that tri_n numbers should be correct even if not in fullscreen mode\r
425 4:22 PM\r
426 * Implemented 8-bit CI by slightly modifying the 4-bit CI code.\r
427 * Seperated the load functions into different files based on size since they are quite large.\r
429 6:18 PM\r
430 * Oops, fixed a problem with building on normal 'debug' and 'release' modes, where it wasn't\r
431   including the .obj file.\r
433 6:55 PM\r
434 * Finished 4-bit I textures.\r
436 11:27 PM\r
437 * *Gugaman* (accidentally typed Gonetz the first time) has helped me implement both 4-bit CI\r
438   and 16-bit IA textures.\r
440 Sunday, 5/19/02 8:46 AM\r
441 * Oops, from the simplified version of Gugaman's 16-bit IA, I forgot to take out a ror 16.\r
443 5:50 PM\r
444 * Remade the whole texture loading routine... The whole thing is completely different.\r
445   Combine and TexCache are now somewhat merged to allow for use of the maximum amount of\r
446   memory.  All vertex coordinates may need swapping to the right tmus since t0 no longer\r
447   represents tmu0.  Texture loading is now located in TexCache.cpp instead of Util.cpp.\r
448   I have tested with multitexturing also, and it works.\r
449 * Gugaman sent me 8-bit AI and I this morning.  I just changed I to use alpha instead of\r
450   intensity. (first time i've seen it)\r
452 6:08 PM\r
453 * Changed the debugger: space bar doesn't work the same.  You must now select either\r
454   page t0 (keyboard 2) or page t1 (keyboard 3) and then press space bar.  Then it will\r
455   select the CORRECT TMU AUTOMATICALLY and the corresponding texture in it.\r
457 6:29 PM\r
458 * Made it so that pressing 'G' will switch on and off a grid for the cache viewer (large view\r
459   on page 0).\r
461 7:19 PM\r
462 * Fixed Gugaman's routines again... he didn't understand what the << 1 on ext was for in my\r
463   routines; it was to multiply by the number of bytes per destination pixel.  I had to take\r
464   this out on the 8-bit ones.\r
466 Tuesday, 5/28/02 2:22 PM\r
467 * School is now out and I have more time to work on the plugin\r
468 * Spherical mapping finally fixed for good.  The size to use is the scale value >> 6.  I found\r
469   this information in a really strange place.\r
470 * 32-bit textures implemented\r
472 Wednesday, 5/29/02 12:33 PM\r
473 * Fixed the fillrect problem.  Recently i changed it so that TexCache() is REQUIRED to set the\r
474   combine mode from Combine(), even if no texture is used.  I had not yet updated fillrect to\r
475   reflect this.\r
477 Friday, 5/31/02 8:09 PM\r
478 * Wrote all Wrap/Mirror/Clamp functions, for both 16-bit and 8-bit.\r
480 12:27 AM\r
481 * Rewrote the tmu selection functions to remove support for 3 tmus and add support for 1 tmu.\r
482 * Improved single-tmu support by a lot by forcing it to select a texture.\r
484 Saturday, 6/01/02 9:46 PM\r
485 * Added a log flush option to make it so that the log will be completely written before a crash\r
486   or exception.\r
487 * Made it so that a maximum count of 256 entries can be loaded by loadtlut by masking by 0xFF\r
488   instead of 0x3FF.  No more goldeneye exception.\r
490 1:58 AM\r
491 * Finally cracked the goldeneye triangle instruction.  Now triangles in goldeneye show correctly,\r
492   but the textures are still messed up.  (something about palettes)\r
494 Sunday, 6/02/02 1:54 PM\r
495 * Found why goldeneye palettes weren't working correctly.  I noticed in the log that the\r
496   settextureimage address was not being changed from the texture and the palette.  So,\r
497   I made loadblock and loadtile increment the settextureimage address as they load.\r
499 3:30 PM\r
500 * Slightly optimized the 16-bit RGBA loading by using better RORs and SHLs instead of\r
501   masking and shifting to swap the alpha bit.\r
502 * Implemented IA-16 format for palettized textures.  Now goldeneye works almost perfectly,\r
503   but kinda slow.\r
505 4:44 PM\r
506 * Found out that you do NOT increment the settextureimage address with loadtile. (HAL logo,\r
507   SSB)\r
509 Monday, 6/03/02 3:22 PM\r
510 * Figured out why 32-bit texture's pixel swapping was not working correctly.  Since I am not\r
511   loading 32-bit textures exactly how the N64 would, they need to swap 64-bit words instead\r
512   of 32-bit ones.\r
514 4:46 PM\r
515 * Ack!!! If you switched to fullscreen before the ROM started running, it would set to single-tmu\r
516   mode.  I had to move the "rdp.num_tmu = 1" out of rdp_reset and into InitiateGfx so that it\r
517   would only occur when the plugin is first loaded.\r
518 * Fixed texrects in Mario Kart and probably some other things.  Texrects use a different texture\r
519   tile # than the one specified in uc0:texture, so it needed updating.\r
521 5:05 PM\r
522 * Made it so that both tmu texture caches refresh at once.  This may seem like a bad thing,\r
523   because then it has more textures to load at once, but it's not.  Before, after one tmu\r
524   would refresh, it would have the most open memory and therefore get all the textures.  If\r
525   the other TMU was really close to being filled, it would never be refreshed.\r
527 6:53 PM\r
528 * Added Voodoo 1 support.  It was 5 lines of code.  All I had to do was make it so that\r
529   if mirroring was not supported, and was used, it would multiply the size by two.\r
530   Then it would automatically mirror the smaller texture to the full size.\r
531 * Added a check for clamping/mirroring/wrapping/mask for the cache, so that if anything\r
532   changes, the texture can load differently.\r
534 Tuesday, 6/04/02 7:52 PM\r
535 * Fixed a bunch of things with alpha compare.  Also made it so that it looks more like UltraHLE.\r
536   I haven't found a single problem with it that wasn't there before, and the hands in Hexen show,\r
537   and SSB is fixed.\r
538 * 0.1762\r
540 3:17 AM\r
541 * Made palette CRCs multiply the content by the location so that even if the contents are the same\r
542   but in different locations, the CRC will be different.\r
543 * Going to make sure to write version numbers here so I know what has changed.\r
544 * 0.177\r
546 VC++ 6.0 SP 5 installed\r
547 VC++ 6.0 Processor Pack installed\r
549 Wednesday, 6/05/02 11:05 AM\r
550 * Finished adding the negative count checks for mirror/wrap.  For some reason, i had only\r
551   implemented 2 of the 4.\r
552 * Fixed a combiner that caused tony hawk to be bad.\r
553 * 0.1771\r
555 7:25 PM\r
556 * Changed alpha compare some more, making it so that force-blend overrides CVG_X_ALPHA.  No\r
557   problems observed so far, and it fixed Bomberman Hero.\r
558 * Made z-buffer clearing fillrects faster by checking if cimg=zimg.\r
559 * 0.178\r
561 10:25 PM\r
562 * Implemented basic modifyvtx for texture coordinates, something is still not right.\r
563 * Changed it so that coordinates are scaled in vertex instead of when they are drawn (this\r
564   is correct).\r
566 11:29 PM\r
567 * Improved the debugger again, allowing you to push left/right to cycle throught the triangles\r
568   (by ID numbers).\r
569 * Added vertex numbers to the debugger so you can tell which vertex is which (remember, 1\r
570   is the first vertex because of the way it clips.  2 is the 2nd vertex, and 0 is the third).\r
571 * Fixed uc2:modifyvtx.  I knew the solution the whole time, and I remember thinking about it,\r
572   but when I looked at the macro I didn't see what I wanted so I let it go.  Then later I come\r
573   back and there it is!  I needed to divide the vertex number by two.\r
574 * 0.179\r
576 12:52 AM\r
577 * Fixed the road in F-Zero by making it so that alpha_cvg_sel can occur with force_blend.\r
578   Luckily, i had made a mistake before and thought something was set that really wasn't.\r
579   As far as I can tell, nothing new broke.\r
580 * Paper Mario wasn't working well because of an odd palette copy, so me & Gonetz decided\r
581   just to change the combiner to T1 instead of T0*T1. (0xe2f10054)\r
582 * 0.1791\r
584 Saturday, 6/15/02 4:10 PM\r
585 * Large textures now load correctly, so now I need to do the math part.\r
587 9:21 PM\r
588 * Improved upon the CRC code, removing the need for address checks.  Now it multiplies the CRC\r
589   by the position so that the O and U in mario are not the same.\r
590 * 0.1792\r
592 Monday, 6/24/02 7:41 PM\r
593 * Gonetz sent combiners again\r
594 * Wrote the texture splitting code for texrects, still not working yet though.\r
595 * Triangles in both texrects and triangles are drawn with grDrawVertexArrayContiguous which\r
596   allows vertices to be in a linear array, rendering the pointer table i had made useless.  I\r
597   don't believe I hadn't discovered this function before.\r
598 * YAYYYY!!!!!!!! I've finally finished large texture support.  Actually half-finished.  It works\r
599   PERFECTLY for texrects, but not yet for triangles.  No seams, nothing.  EVERY SINGLE GAME I've\r
600   tried so far (using texrects) works.  About 80% of games with the problem used texrects.\r
601 * 0.18\r
603 10:17 PM\r
604 * Made it so that textures with masks that are greater than 8 just use the tile size.  I haven't\r
605   seen anything broken by this yet, and it speeds up some odd games.\r
606 * 0.181\r
608 12:23 AM\r
609 * Moved a -1 earlier in texrect, helped fix some coordinate problems.  As far as I can tell,\r
610   texrects are now good in terms of coordinates.  There are still some lines, but that cannot\r
611   be helped.  It's caused by the fact that there are so many of them.  The only way to solve is\r
612   to blend between them.\r
614 2:29 AM\r
615 * Made split texrects clamp so that if they need to wrap, they can do it without getting black\r
616   lines across them.\r
618 5:01 AM\r
619 * Added "Automatic" filtering mode.\r
620 * Finally found what was causing versions since 0.1792 to go slow.  I had called grFinish after\r
621   grBufferSwap to see if it helped the FPS counter.  It didn't and it made the plugin go REALLY\r
622   REALLY SLOW.\r
623 * Implemented the rest of rdp:setothermode for uc2.  Health meter in Zelda now correct & you\r
624   can't see him in the menu.\r
625 * 0.182\r
627 Tuesday, 6/25/02 2:21 PM\r
628 * Rewrote the texture cache searching algorithm so that it only has to search a few textures\r
629   instead of all the textures.  It takes the highest byte of the crc and only searches the\r
630   textures that had that same value.\r
631 * 0.183\r
633 4:26 PM\r
634 * Got into really big conversations and all of the sudden, the whole FPS thing hit me at once!\r
635   UpdateScreen() is actually a VERTICAL INTERRUPT!!!  This is why it is called twice per every\r
636   ProcessDList().  The TV is updating at 60hz but mario only at 30.  This also explains why\r
637   when I used UpdateScreen() instead of the buffer swap, I got the % of speed * 60.\r
639 5:41 PM\r
640 * Added 4 types of speed counters.  There is the FPS counter (frames per second), VI/s counter\r
641   (vertical interrupts per second), NTSC % (percent speed on a (U) game), and PAL % (percent\r
642   speed on a (E) game).\r
643 * Added an option to clear top/bottom of screen like a NTSC TV.\r
644 * 0.184\r
646 1:45 AM\r
647 * Re-implemented the uc2:background command.  Note to self: whenever textures don't show,\r
648   check what's ABOUT to be put into grTexCombine()\r
650 Wednesday, 6/26/02 2:10 AM\r
651 * The trees in Majora's Mask were screwed up since I changed the texture code to actually emulate\r
652   the tmem.  I believe this is because it would wrap to the other side of tmem.  I've implemented\r
653   a somewhat fix for this.  It will work with power of two wraps.\r
655 Thursday, 6/27/02 2:05 PM\r
656 * Rearranged clipping code to allow for large texture support.  Also it now only performs\r
657   z-clipping if NEEDED, and not always.  This also allows for vertices to be copied only once,\r
658   and not twice.\r
659 * OMG.  Sooo glad i found this...  uCode 1 games were not setting the scr_off flags when they\r
660   were off the screen.  This is why i noticed problems when rearranging the clipping code.\r
662 6:34 PM\r
663 * YAAAAAAY!!!! Large texture code for triangles is now complete!!! I can't find a single game\r
664   that has the problem anymore!!!\r
666 12:10 AM\r
667 * Added a tmem boundary check for LoadTile.  It should fix many exceptions.  So far I have seen\r
668   it fix the exception in Extreme-G 2 and 1080 Snowboarding.\r
670 Friday, 6/28/02 8:55 PM\r
671 * I've been researching this alternate way of getting texture sizes that makes 1080 and several\r
672   other games run much better.  The only way there appears to be to do this is to make a game\r
673   specific INI.  I have already done this.  It makes it so i can have a [DEFAULT] section and\r
674   then override it with other values from each game.\r
675 * Bad config error... for some reason, you cannot attach a tooltip hook and then set a lot of\r
676   checks or your config dialog goes blank.  If you create the hook afterwards though, it works.\r
677 * Changed the order of clamping/wrapping so that it can clamp before it wraps if it needs to.\r
679 10:35 PM\r
680 * Fixed bug in clamp/wrap, it needs to do ALL of s clamp/wrap before it moves on to t.\r
681 * 0.192\r
683 11:18 PM\r
684 * Made it so that fill mode (3) doesn't add 1 to the lower right coordinate like copy mode (2)\r
685   does.  Those things that were fill before are now copy because of when i implemented the rest\r
686   of rdp:setothermode.\r
688 12:33 AM\r
689 * Added text that says when in windowed mode: "Glide64" "Gfx cannot be drawn in windowed mode"\r
690   "Press Alt+Enter to switch to fullscreen".\r
691 *0.193\r
693 Sunday, 6/30/02 6:46 PM\r
694 * Now allows Alt+Tab and other key combinations to be pressed.\r
695 * Gugaman and I have been working with the IRP and I think we've finally found a solution.  All\r
696   of the games work so far, so we'll keep testing & find out.\r
698 10:46 PM\r
699 * No problems observed with the IRP.\r
700 * Added clock feature suggested on message board.\r
702 Monday, 7/01/02 3:44 PM\r
703 * Put in a "break;" after fog, so it doesn't move right on to lightcol.\r
704 * Implemented lots of new combiners for Pokemon Stadium 2 and Megaman.\r
705 * Changed alpha compare a little, adding a check for the combination of CVG_ALPHA_SEL and alpha\r
706   compare.\r
707 *0.197\r
709 8:15 PM\r
710 * Fixed alignment for triangles.  Now it is how it should be.  It has eliminated the line errors\r
711   in the Zelda select screens & many other things.\r
713 * 0.2 in final form\r
715 Tuesday, 7/02/02 11:38 PM\r
716 * Fixed prim_z for extreme-g 2 by ignoring the matrix it uses.\r
717 * TEMPORARILY CHANGED if ((rdp.render_mode & 0x00000C00) == 0x00000C00) to\r
718   if (rdp.render_mode & 0x00000800) IN DECAL CHECK - fixes castlevania text, but not sure of\r
719   other things.\r
720 * Nothing seems to have broken, keeping for now...\r
722 3:47 AM\r
723 * Changed enviornment mapping to 0x00080000 instead of 0x00040000 to fix F-Zero car textures.\r
724 * Changed combiner for F-Zero cars to look right.\r
725 * 0.202\r
727 Wednesday, 7/03/02 8:26 PM\r
728 * Realized that non z-clipped vertices did not use the precalculated values like they were\r
729   supposed to.  [added to beta also]\r
731 9:55 PM\r
732 * Changed alpha test value to 0x80, since that will be optimum b/c it is right in the middle\r
733   of the texel.  Also, it was required for Blues Brothers.\r
734 * Fixed 4-bit CI for 16-bit IA textures.\r
735 * Took out the C2, C3 init that Gonetz requested.\r
737 1:32 AM\r
738 * Added self-jump checking to fix Gauntlet Legends & another check.\r
739 * 0.21\r
741 Thursday, 7/04/02 9:02 PM\r
742 * Put in some framebuffer support.  The copy works ok, but when to use is VERY VERY BUGGY.\r
743 * Completely redesigned the othermode functions so that multiple things could be set at once.\r
744   Also, there is no such thing as "rdp.rendermode" now, it's a part of rdp.othermode_l,\r
745   as rdp.mode_h changed to rdp.othermode_h.\r
747 10:22 PM\r
748 * Enhanced the debugger, listing all of the othermode settings, with the current ones\r
749   highlighted in green on page 6 and 7 of the debugger.\r
751 10:42 PM\r
752 * Now that you can set any combination of othermodes at once, i modified my rdp:setothermode\r
753   command to set ALL at once instead of one at a time.\r
754 * Fixed alpha compare so that, like there is no compare when ALPHA_CVG_SEL (full alpha),\r
755   there is no compare when force-blending to full alpha either.\r
757 1:27 AM\r
758 * Worked past 2-3 hours decoding new ucode for Star Wars: Shadow of the Empire.  Works near\r
759   perfect as far as I can tell now.\r
761 * 0.220\r
763 Saturday, 7/06/02 7:14 PM\r
764 * Implemented basic ucode #5, Diddy Kong Racing.  Icepir8 and I still need to figure out how\r
765   it selects which matrix to use though.\r
766 * Fixed a bug where the rdp_setothermode was using an unknown command instead of the othermode\r
767   commands in ucodes other than 2.\r
769 Sunday, 7/07/02 1:37 AM\r
770 * Did LOTS with Diddy Kong Racing today, the only thing that seems left is the billboarding.\r
771 * Billboarding done, uses vtx 0 as offset, then adds the current to it.\r
773 Monday, 7/08/02 3:00 PM\r
774 * Gonetz sent some more combines for diddy\r
776 12:47 AM\r
777 * Fixed some more stuff in Diddy, like the transparent walls.\r
778 * Added texture-modification code.  Now it is possible to do things for combiners that would\r
779   be impossible otherwise.  Now you can see the selection in DKR, and also the LOT of Zelda OOT\r
780   works.  Don't have save of MM, so can't implement that one yet.\r
781 * 0.230\r
783 Tuesday, 7/09/02 6:08 PM\r
784 * Fixed cache bug where it wasn't always setting the mod flags, therefore refreshing faster\r
785   and faster each time.\r
786 * Added culling to DKR ucode, works much better now.\r
787 * partially fixed LOT in MM, but the outside is still solid.\r
788 * 0.231\r
790 Thursday, 7/12/02\r
791 * 0.2 released\r
793 Sunday, 7/14/02 5:51 PM\r
794 * Fixed the Great Fairy's hair color using texture modification.\r
795 * Fixed the RUSH games, for some reason they have size set to 0, so I used *gfx.VI_WIDTH_REG\r
796   instead to determine the size.\r
797 * 0.232\r
798 * Used texture mod again to fix the SF rush 2049 wings.\r
800 11:44 PM\r
801 * Added a whole bunch of impossible combines by using the texture modification.\r
802 * Fixed Snowboard Kids by implementing the modifyvtx for ucode 0. (same as 2)\r
804 Monday, 7/15/02 9:07 AM\r
805 * Fixed items in Super Smash Brothers by implementing the moveword matrix command.  It took\r
806   me a while to figure out that it was incrementing in the x direction and not the y, and also\r
807   that you actually add the positive decimal part, EVEN WHEN WHOLE NUMBER IS NEGATIVE.\r
808 * 0.235\r
810 1:02 PM\r
811 * Added new INI code, should be no more corrupting.\r
813 3:21 PM\r
814 * Added culling for Diddy Kong Racing & fixed a non-working combine for the background color.\r
815 * Added huuuuge semi-combiner for flashing characters in SSB.\r
816 * Added support for clearing z-buffer using a texrect (SSB black rectangle).\r
817 * 0.237\r
819 1:18 AM\r
820 * Added a framebuffer workaround for Zelda: MM LOT.  Now it works without needing to use\r
821   framebuffer copies.\r
822 * 0.240\r
824 Tuesday, 7/16/02 11:30 PM\r
825 * Found out that the LOT and telescope problems are with prim_depth.  It enables but doesn't set\r
826   a depth value.\r
827 * Rice gave me plenty more new things to do :)\r
828 * The dlist with count command now implemented in f3dex 2.xx ucode.  Cruisin' Exotica works.\r
829   (Rice's help)\r
830 * 0.241\r
832 12:27 AM\r
833 * Added the movemem matrix command, WWF No Mercy works now.\r
834 * 0.242\r
836 Wednesday, 7/17/02 5:53 PM\r
837 * Fixed SERIOUS bug in CI textures, it would not use the correct format.\r
838 * Fixed combine for link's sword swirl.\r
839 * Added new buffer swapping method that fixes flashing.\r
840 * 0.247\r
842 Friday, 7/19/02 4:20 PM\r
843 * Made LoadTile boundary checking MUCH better; now checks if >= and also for last write so\r
844   even if it's not aligned properly it will cut anything that goes above.  Paper Mario\r
845   level up fixed.\r
846 * Added several combines for xg2.\r
847 * V-Sync option added.  This only takes effect if it's set to "Software Controlled" in the 3dfx\r
848   Hub.\r
850 7:37 PM\r
851 * Made it possible to continue after a gfx exception.\r
853 8:29 PM\r
854 * Got fillrects to align perfectly now by forcing the coordinates to DWORD instead of float.\r
855 * Got rid of the floating point error in fillrects and scissor by adding 0.01f.\r
857 Saturday, 7/20/02 3:54 PM\r
858 * Made it so that texrects on copy mode will use full alpha but also have alpha compare.\r
859 * 0.250 released\r
861 11:51 PM\r
862 * Made it so that fillrects use the z-buffer as specified and not always update, no compare.\r
863   Banjo-Tooie fixed.\r
865 Sunday, 7/21/02 8:01 PM\r
866 * Fixed 12 PM clock bug, and added 24-hour clock option.\r
867 * Made a REAL error log.\r
868 * Fixed stats not showing up by redoing alpha compare for texrects.\r
869 * 0.253 released\r
871 * Took out if(!force_full_alpha) from alpha compare.\r
873 2:46 AM\r
874 * Added first part of S2DEX ucode; the obj_loadtxtr and bg_copy.\r
875 * Found out that uc2_bg and uc6_bgcopy were the exact same thing... I think F3DEX sorta\r
876   "borrowed" it.  Set the F3DEX one to the S2DEX one.\r
878 Tuesday, 7/23/02 11:10 PM\r
879 * Added lots more to the S2DEX ucode, yoshi's story is now about as good as it can get.  The\r
880   background uses framebuffer, so...\r
881 * Microcode switching should be ok now for the most part.\r
883 11:31\r
884 * Added combiner for WWF No Mercy rules.\r
885 * Allowed things to have negative viewport; MK mythologies fixed.\r
888 /*Gonetz*/\r
889 Friday, 10/18/02 12.40\r
890 I'm going to fix depth problem\r
891 * step 1. Added new coordinate to VERTEX - w. Replaced all .z and ->z by .w and ->w b/c old z is \r
892   actually w. Affected files:\r
893   rdp.h\r
894   Ucode00.h\r
895   ucode01.h\r
896   ucode02.h\r
897   ucode03.h\r
898   ucode04.h\r
899   ucode05.h\r
900   Debugger.cpp\r
901   Util.cpp\r
902   Tested. Nothing seems to be broken :)\r
903 * step 2. z coordinate is now calculated in all ucodes.\r
904 * step 3. using z for w buffer. z/w actually. Corrected all clipping functions.\r
905   Ops, does not work :(  I forgot, z/w is in range (-1,1). \r
906   (z/w + 1)/2 does not work well either. \r
908 * Idea: use "screenZ=(z/w)*0x3fe0 + 0x3fe0" formula for z and Z buffer instead of W buffer.\r
909   Wow, it's work! Taz and Gex appears at last :) But some problem remains.\r
910   Some triangles are missing. I think it's b/c of z clipping\r
912 Saturday, 10/19/02 13.00\r
913 * Found stupid bug in clipping functions which is result of cut'n'paste editing.\r
914   Now picture is close to perfect. But some triangles are still missing, \r
915   for example water near castle in Mario64.\r
916 * Replaced all _z slot names by _w. \r
917 * Fixed z for texrect and fillrect. Strange, but primdepth does not work well for z - \r
918   DukeNukem64 has errors with it.\r
919   I use primdepth + 8, all works quite well now. Need to test it more.\r
921   23:15\r
922 * According to manual, correct formula for z is:\r
923   screenZ = 32*((z/w)*view_scale[2] + view_trans[2])\r
924   I use it now, nothing is changed, but may be some games use other value for \r
925   view_scale[2] and view_trans[2] then default 0x1ff\r
927 Sunday, 10/20/02 17.20\r
928 * Z clipping is finally fixed. I thought that z should be 0 after Z clipping,\r
929   but it actually must be clipped the same way as x and y. \r
930   Now all works perfect!!! Nokonec to, blin :)\r
932 * Added missing combines for Taz express and Road Rush\r
933 * 0.260\r
935 Tuesday, 10/22/02 20.20\r
936 * Started to implement ucode for Perfect Dark. I took info about it from Icepir8's plugin.\r
937  Changes: \r
938    ucode.h -  new ucode\r
939    ucode07.h - vertex and tri4 implemented\r
940    ucode00.h - matrix. mask removed to be compatible with PD\r
941    rdp.h - tex_coord_addr added\r
942    rdp.cpp - rdp_reset, tex_coord_addr initialization\r
943            - rsp_reserved2, tex_coord_addr value\r
944    config.cpp - new ucode\r
945    \r
946 Wednesday, 10/23/02 13.30\r
947 * new combines and tex modes added.\r
949 Thursday, 10/31/02\r
950 * Fixed Rayman2. \r
951   Changes:\r
952     ucode00.h - implemented gSPForceMatrix command in movemem. All 3FFFFF mask replaced by FFFFFF\r
953     ucode01.h - 3FFFFF mask in vertex replaced by FFFFFF\r
954     combine.cpp - implemented missed combines for Rayman2\r
957 Saturday, 11/9/02 15.30\r
958 * rdp_texrect(): float Z = 32704.0f replaced by float Z = 1.0f; That fixed onscreen \r
959   info in xg2.\r
960 * Fixed combine for Bug's life. Start menu background appears.\r
961 * Fixed uc2:modifyvtx. Main menu background in Bug's life appears\r
962 * Fixed constant depth processing in do_triangle_stuff(). Main menu in Bug's life works (somehow)\r
963 * Fixed combine for Bomberman2. Water is transparent now.\r
964 * Monsters poked through walls in DukeNukem64 was caused by depth bias level value.\r
965   Replaced depth bias level from 0x20 to 0x18. \r
966   No need of "rdp.prim_depth + 8.0f" hack in rdp_texrect() anymore.\r
968 * heap of new combines implemented  \r
970 Saturday, 11/16/02 \r
971 * Since z in N64 is in range [0, 32704], I decided to multiply it by 2.\r
972   It improves quality of depth buffer.\r
973   Changes:\r
974     Util.cpp - do_triangle_stuff()\r
975     Rdp.cpp - rdp_texrect()\r
977 Sunday, 11/17/02 \r
978 * Added hacks in texrect and fillrect to avoid black screen in ZeldaMM\r
979   "Link meets princess Zelda" cut scene and in between days.\r
980   Changes:\r
981     Rdp.h - new flag\r
982     Rdp.cpp - hacks in rdp_texrect() and rdp_fillrect() \r
983     ucode06.h - hacks in uc6_bg_copy() and DrawImage()\r
985 Monday, 11/18/02\r
986 * Added hack into uc2:modifyvtx, (x,z). Tarzan is fixed\r
987 * new combines and tex modes added.\r
988 * Altered combine for flame in Zeldas. It looks good :) Redone similar combines.\r
991 Tuesday, 11/19/02\r
992 * Added new settings parameter - depth buffer mode.\r
993   User can choose either new Z-buffer mode or old W-buffer one. \r
994   W-buffer is useful in games, where Z-buffer causes poke-through artefacts.\r
997 I've got Dave2001's last version. Many things are not finished, but I inserted some of his fixes into current version:\r
998 * Made it so games only report ucode error only once.\r
999 * Backwards viewport needs backwards culling ;) fixed DKR Adventure 2 mode (mirrored tracks).\r
1000   I'm not sure about other ucodes, so I haven't changed the culling for them yet.\r
1001 * Oops, loadblock boundary check was in bytes instead of qwords.  Xena problem fixed.\r
1002 * Fixed mod_tex_inter_col_using_col1; it was using a 32-bit color when it was really only 16-bit.\r
1003   This fixed the colors of the WWF No Mercy menus.\r
1005 Saturday, 12/14/02 \r
1006 * heap of new combines implemented  \r
1008 Sunday, 12/15/02 \r
1009 * Fixed Banjo-Tooie.\r
1010   Changes:\r
1011     Rdp.cpp - rdp_texrect() - new hack\r
1012               rdp_fillrect() - old hack, removed by Dave2001 for some reason after 0.250\r
1013 * Fixed backgroung fire on level 23, Doom64\r
1014   I've modified alpha compare condition in Util.cpp\r
1015 * Changed Zelda MM hack in texrect.  \r
1016 * implemented heap of new combines\r
1019 Wednesday, 12/18/02\r
1020 * Changed Zelda MM hack in texrect so it should not affect other games anymore. Konami logo is fixed in many games.\r
1021 * implemented new combines \r
1023 Friday, 12/27/02\r
1024 * Removed perfect dark microcode from final version - need more work b4 release\r
1025 * 0.3\r
1027 Wednesday, 01/07/03\r
1028 * Changed fillrect so it usses fillcolor allways, but it calculates it differently depending on cycle mode.\r
1029   I don't know why Dave2001 implemented so complex color transformation for this function,\r
1030   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 \r
1031   normal fillcolor. Car selection screen in SF Rush is fixed.\r
1032 * Changed texrect  - I force depth compare when primdepth is used. Car selection in SF Rush 2049 is fixed.\r
1035 * Changed fillrect again. Privious modification causes many gfx erorrs. \r
1036 * Added depth value check in texrect. Primdepth value can be too high.\r
1038 Sunday, 01/19/03 \r
1039 * Added new buffer swapping method which prevents flicker in Paper Mario (not everywhere yet).\r
1040 * Implemented many combiners for Paper Mario.\r
1042 Friday, 01/31/03\r
1043 * Fixed uc0_moveword LIGHTCOL. n was calculated wrong. \r
1044   Background in "star soldier vanishing earth" fixed.\r
1046 Saturday, 02/01/03 \r
1047 * Implemented calls of GS2DEX ucode functions from F3DEX2 ucode.\r
1048   2D stuff in Bomberman 2 is fixed.\r
1049 * Changed uc6_obj_sprite so it uses combiner instead of just texture.\r
1050   Required for some objects in Bomberman 2\r
1052 * 0.31\r
1054 Wednesday, 02/12/03\r
1055 * Added new setting - ignore_short_dlist. It allows me to avoid weird bug in Tonic \r
1056   Trouble, when game get caught in an endless loop, drawing title screen.\r
1057 * Found an error in ini which was the reason why Dave's work for Yoshi Story caused an exception.\r
1058   F3DEX1 ucode which Yoshi uses in the begining, was mistakenly set to 6. Yoshi is\r
1059   working with last Dave's version now\r
1062 Thursday, 02/13/03\r
1063 * Moved Dave's code for Yoshi into current version. It works\r
1064 * 0.312\r
1066 Friday, 02/14/03\r
1067 * Fixed uc6_obj_sprite so sprite can be translucent. It needed for Yoshi statistics screen.\r
1068 * Trying to fix garbage appeared on top of the screen in Yoshi. no results :(\r
1070 Saturday, 02/15/03 \r
1071 * While trying to fix topscreen garbage, I begin to understand, how the things work :)\r
1072   Texrect function copies texture into framebuffer(DRAM) instead of drawing it.\r
1073   Dave chose very strange and complex way to do it - he loaded texture, copied it's data \r
1074   into special texture  buffer, and then copied it from that buffer into framebuffer. \r
1075   I have modified his code. I directly copy data from texture address into framebuffer adress.\r
1076   It's faster, more easy and less buggy :) But it does not fix topscreen garbage problem.\r
1077   This problem is solved somehow in PJ 1.5 plugin though.\r
1079 Thursday, 02/27/03\r
1080 * Fixed DrawImage routine, so it works correct with scaled images. Zoom in Yoshi works\r
1081 * Implemeted uc6_obj_rectangle. Pokemon Puzzle League is almost playable now. But some textures are broken.\r
1083 Saturday, 03/01/03 \r
1084 * Worked on Pokemon puzzle league:\r
1085   Fixed DrawImage routine, so it can draw images with odd value of width and height. \r
1086   Added possibility to use combiners with backgrounds.\r
1087   (almost) no problems with background remained in this game.\r
1088   I need to solve problem with 8bit CI textures, wich became broken after loading of 32bit RGB textures.\r
1090 Saturday, 03/08/03 \r
1091 * Fixed rdp_loadtlut(), so it will not get off pallete array bounds.\r
1092   It fixes Inferno area in Banjo 2 and may be some other games.\r
1094 Tuesday, 03/11/03 \r
1095 * Finnaly found why CI textures became broken after 32bit texture load in PPL.\r
1096   It was a bug in uc6_obj_loadtxtr (). Dave forgot to set tile size there, so\r
1097   after 32bit texture load it was equal to 3, and all non 32bit textures was\r
1098   swapped wrong. Now all textures in PPL look correct, the game is almost playable :)\r
1100 Wednesday, 03/12/03\r
1101 * Implemented loading of title screen in games which draw image before first ProcessDList\r
1102 (Rayman2, Tonic Trouble, Wave Race...) I found solution in sources of Rice's great plugin.\r
1105 Friday, 03/14/03\r
1106 * Fixed texture problem in PPL when it uses F3DEX 1 ucode! \r
1107   Tile's ul_s and lr_s coordinates were set to 0 by settilesize - 1 texel was clamped to all triangle.\r
1108   Solution: take ul_s and lr_s from next loadtile. It works!\r
1110 Saturday, 03/15/03 \r
1111 * Fixed bricks in 3D mode. Bricks use CI texture, and for some reason u and v coordinates \r
1112   of loaded vertex are two time bigger then they must be, when vertex uses CI.\r
1113   Solution: check format in uc0_texture() and change s_scale and t_scale for CI format\r
1115 Sunday, 03/16/03 \r
1116 * Implemented uc0_moveword() move_point. Cruise in USA works perfectly now!\r
1118 Monday, 03/17/03\r
1119 * Fixed many bugs which causes an exception in PPL. \r
1120 * Added new special fix - wrap textures too big for tmem. \r
1121   It's Dave's old hack for trees in Zelda MM intro. \r
1122   It breaks texture in Zelda's N64 logo and may break other things,\r
1123   so I've made it optional\r
1125 Tuesday, 03/18/03 \r
1126 * Fixed candle's flame in Paper Mario - error in alpha combine\r
1127 * My fix for car selection screen in SF Rush 2049 breaks particle in Rayman.\r
1128   I don't know, how to make both things working :(\r
1129   Another special fix for SF Rush 2049 only\r
1131 Wednesday, 03/19/03\r
1132 * Fixed pointer in Bust a Move 2! This game has the same problem with CI textures,\r
1133   as PPL, so fix for PPL fixes this game too :)\r
1135 Saturday, 03/22/03 \r
1136 * Implemented branch_z function for F3DEX 1 ucode. It's used in SF Rush. \r
1137   All texture problems in this game are fixed!\r
1138 * Added new special fix - "use depth compare for fillrect". Using depth compare\r
1139   in fillrect fixes car selection screen in SF Rush, and doing this much better,\r
1140   then my previous hack. This option changes N64 logo in Zeldas though, so it's\r
1141   off by default.\r
1143 Sunday, 03/23/03 \r
1144 * Fixed most of tecture errors in V-Rally 99. The same problem - too large u and v coordinates.\r
1145   This fix is a hack indeed. I'm tired of all that hacks, but I could not find,\r
1146   why vertex loaded incorrectly.\r
1147   And besides, all in-game statistics is missing :(\r
1149 Monday, 03/17/03\r
1150 * I forgot to implement call of uc6_ldtx_rect_r from zelda ucode. That's why\r
1151   in-game statistics in V-Rally 99 was missing.\r
1153 Wednesday, 03/26/03\r
1154 * Fixed combiners using in sprite commands. Combine() is not used if in "copy" mode\r
1155 V-Rally looks exactly as on N64.\r
1157 Tuesday, 03/27/03 \r
1158 * Allowed negative viewport for zelda ucode. Destruction Derby Professional Championship is fixed.\r
1160 Saturday, 03/29/03 \r
1161 * Fixed crc calculation for 8-bit color textures. Burning cars in Destruction Derby are burned :)\r
1163 Monday, 04/07/03\r
1164 * Implemented TextureRectangleFlip - text in Wetrix fixed\r
1166 Thursday, 04/10/03\r
1167 * Fixed uc6_obj_rectangle_r - text in Yoshi has correct size.\r
1168 * 0.4\r
1170 Friday, 04/17/03\r
1171 * Fixed trail problem in Zelda OOT. Rice sent me an idea how it can be done.\r
1172   Actually it was already implemented by Dave, but values for depth bias level\r
1173   were incorrect.  \r
1175 Sunday, 04/19/03 \r
1176 * Implemented Sprite2D microcode. Backgrounds in Silicon Valley are fixed\r
1177   Fixed primdepth loading. Billboard objects in Silicon Valley are fixed too.\r
1179 Wednesday, 04/30/03\r
1180 * Fixed palette loading (load_palette). This fixed nemu in StarCraft. Yet again the solution (idea) was found\r
1181   in sources of Rice's plugin. \r
1182 *0.41\r
1185 * fixed compatibility of Zelda OOT MQ with 1964\r
1187 Sunday, 05/18/03 \r
1188 * Added hack for sun in zeldas.\r
1190 Wednesday, 05/21/03\r
1191 * Implemented palette loading in Sprite2D microcode and fixed many things in it. \r
1192   2D stuff in wipeout works.\r
1194 Tuesday, 06/03/03\r
1195 *New hack in texrect to remove black screen in Sin and Punishment\r
1198 Thursday, 06/05/03\r
1199 * fixed uc1_line3d - map in Doom64\r
1200 * changed blender mode for fillrect - sky in Doom64\r
1201 * fixed combiners for walls and weapons in Doom64\r
1203 Saturday, 06/07/03 \r
1204 * changed texture mods for CI textures. I'm changing palette before texture loading\r
1205   instead of modifying already loaded texture. This is more faster and more precise.\r
1207 Sunday, 06/08/03 \r
1208 * added new hotkey - texture filtering mode can be changed during gameplay by\r
1209   pressing BACKSPACE. This is Raziel64's idea.\r
1211 * Implemented frame buffer emulation. I use 2 pass approach. First pass - detect frame buffer usage - very fast. \r
1212 Second pass - normal display list processing, but with knowledge how frame buffers will be used.\r
1214 * Added ExtendedPlay's Banshee hack. \r
1216 * Added "special game settings" section in the ini\r
1218 * New hotkeys for motion blur and read always\r
1220 * Many other fixes\r
1222 * New configuration dialog, based on property sheets\r
1224 V. 05\r
1226 * Fixed ucode for Perfect Dark. It works without glitches now\r
1228 * Added support for Jet Force Gemini and Mickey's Speedway into Diddy's ucode.\r
1230 * Added partial yuv textures support. I failed to decode them with the method described in the manual - something wrong with the coefficients.\r
1231  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.\r
1233 * Implemented new frame buffer related functions - FBRead and FBWrite. FBRead could help to emulate frame buffer effect which previously required\r
1234 "read always" option. FBWrite makes Dr.Mario playable\r
1236 * Implemented hardware texture emulation. Huge and hard work. \r
1238 * Failed to do correct fog emulation. I tried to use fogcoord extension, like in Orkin's plugin. It works, but fog is not smooth.\r
1240 * Added large texture support for sprite microcode\r
1242 * Fixed texrect_flip\r
1244 * Changes in the configuration dialog\r
1246 v. 07 SP8\r
1248 - New version\r
1250 * I have switched to RGBA color format. This format is used by N64 itself.\r
1251   I can't understand, why Dave decided to use ARGB. With RGBA I don't need\r
1252   to do color conversions, and everything is more simple. Besides, OpenGL also uses\r
1253   RGBA format only, so port to OpenGL will be more simple.\r
1255 * I've made another attempt to implement fog via fog coord extension.\r
1256   This time I set fog coord after all clipping. It still not perfect for clipped surfaces\r
1257   but no major glitches this time. I decided to use it.\r
1259 * I have found why kicked out fighter in Super Smash Bros has black rectangle bourder.\r
1260   This black rectangle have to be rendered into the depth buffer. Weird thing.\r
1261   I've made check that texrect will not be drawn if current color buffer is depth buffer.\r
1262   This problem is fixed.\r
1264 * I have found that walls in Perfect Dark are incorrect again. That was caused by my \r
1265   hack in the combiner for car setup in Top Gear Rally. I have corrected this hack.\r
1266   It does not use LOD if mipmap_level is the same as current_texture.\r
1268 * I have implemented depth buffer render. Of course, it takes a lot of CPU time.\r
1269   But I found fast algorithm with fixed point arithmetics, so I can run some\r
1270   games fullspeed even on my 1ghz Celeron.\r
1272 * Hacktarux suggested me to use N64 format for z value, so Glide will loose \r
1273   precision on the same place as N64 itself. I finally understood what he ment,\r
1274   and implemented it. Well, all old poke-through problems with z-buffer are gone,\r
1275   but new one appeared. This method does not work. But I noticed, that conversion\r
1276   from my z to N64 z is not linear. It gives enough precision for large z \r
1277   at the cost of loosing precision with small z. I decided to use floated point \r
1278   z conversion which works similary - (z/65535)*z*2. Great! No problems with close\r
1279   objects and much less problems with far ones. After that I have removed w-buffer mode\r
1280   entirely. It's not compatible with fog-coord anyway. I also removed old fog algorithm.\r
1282 * Implemented 32bit frame buffer support (convert 16bit glide frame buffer into 32bit N64 ones).\r
1284 * Fixed frame buffer effects detection algorithm to support rear-view mirror in Roadsters.\r
1285   Later I found how to make it working without fb support - just remove corresponding texrects.\r
1286   Rear-view mirror now works full speed on any videocard.\r
1288 Monday, 27 Dec 04\r
1289 * Fixed grid in Mario Golf. The error appeared after rewriting of modifyvtx function. It was caused by\r
1290 unset x,y and zsrc is on. \r
1292 Tuesday, 28 Dec 04\r
1293 * Fixed combiner for road in Zelda OOT. \r
1294 * My ZtoN64Z causes problems for small z. As result text in Tigger Honey Hunt is disappeared.\r
1295   Tuned ZtoN64Z so it does not transform small z now. Not sure, it can cause other problems.\r
1296 * Added new hack - increase texrect size. Rice uses similar hack to fix new tetris and mega man 64.\r
1297   The new tetris is fully playable now with texture coordinate fix.\r
1299 Sunday, 02 Jan 2005\r
1300 * Added prim_depth using in fillrect.\r
1302 Tuesday, 04 Jan 05\r
1303 * Rewrited fog again\r
1304 * Implemented special fog mode, when object is not fogged, but became transparent instead.\r
1306 Wednesday, 05 Jan 2005\r
1307 * Fixed depth buffer clear in fillrect.\r
1308 * Removed depth compare hack from fillrect\r
1309 * Fixed out of range bug in depth render.\r
1311 Sunday, 16 Jan 2005\r
1312 * Fixed depth problem in Destruction Derby. Maximum depth value must be <= 65534\r
1313 * Fixed depth problem in sprite microcode - z conversion must not be used in set_sprite_combine_mode.\r
1314 * Fixed color combiner for fire electric pen.\r
1315 * Fixed fog when fog multiplier is negative.\r
1316 * Added combiners for Paper Mario\r
1317 * Fixed texcoord hack for Polaris Snow Cross\r
1319 Monday, 17 Jan 2005\r
1320 * Added combiners for Paper Mario\r
1322 Tuesday, 18 Jan 2005\r
1323 * Fixed text in Doraemon - Mittsu no Seireiseki. This is the second game, which uses CPU frame buffer writes.\r
1324 * Added dithred alpha support. I found 2 undocumented Glide functions: grStippleMode and grStipplePattern.\r
1325   They work almost the same as similar functions in OpenGl. Dithred alpha test is used in Mario64, and now\r
1326   it works very good.\r
1328 Thursday, 20 Jan 2005\r
1329 * Added per-pixel LOD calculation. It was quite hard to get decent result. Peach/Bowser portrait's transition\r
1330   in Mario64 works fine, Perfect Dark is acceptable too. Only Utils.cpp is changed.\r
1332 Friday, 21 Jan 2005\r
1333 * Added LOD option to the configuration panel\r
1334 * Added missing tooltips\r
1335 * Added stipple options to ini file.\r
1338 22-30 Jan 2005\r
1339 * RE2. fix in DrawImage.\r
1340 * RE2. depth buffer render to video memory to fix depth problem. Slow\r
1341 * RE2. Found how movies work. 2 mode implemented - stretched and in the native resoluton.\r
1342 * RE2. Added depth buffer render via HWFBE. Fast and perfect.\r
1343 * Fixed depth problem with prim depth. \r
1344 * Fixed depth problem with texrects which uses prim depth - depth write must be off while depth compare must be on.\r
1345 * Fixed some combiners.\r
1347 Tuesday, 1 Feb 2005\r
1348 * !Changed rdp_loadblock. texture image address will not changed if lr_s is 0. This fixes Twisted Edge Extreme Snowboarding \r
1349   background.\r
1351 Thursday, 3 Feb 2005\r
1352 * Added hack for backgrounds in WCW Nitro.\r
1353 * Removed zelda hack from DrawImage. WCW Nitro backgrounds did not work because of this hack. \r
1354 * Added hack for texture generation in Chopper Attack. This hack was used for all games and this caused one glitch in\r
1355   Super Mario, so I made it optional.\r
1356 * Fixed partially Horisont Scaner in Perfect Dark. Glitch was caused by one option on texrect, which prevents to draw\r
1357   texrects wich use previous frame as texture. For Horisont Scaner the same color buffer is used each frame (strange).\r
1358 * Added missing combiner for Perfect Dark.\r
1360 Friday, 4 Feb 2005\r
1361 * Added GUI option "Show RE2 videos in native resolution"\r
1362 * Fixed videos crash with PJ64. For some reason first frame has height > 256, so I had write above bounds here.\r
1363 * Implemented several combiners for Paper Mario and Tony Hawk.\r
1365 Tuesday, 8 Feb 2005\r
1366 * Fixed "Tidal wave" in Paper Mario. It's quite complex frame buffer effect, many things were changed in FB emulation.\r
1367   It still has problem with HWFBE.\r
1369 Wednesday, 9 Feb 2005\r
1370 * Fixed (rather hacked) viewport problem in RE2.\r
1372 12-13 Feb 2005\r
1373 * Added suport for cloaking effect in Perfect Dark. It was hard - the game may use about 30 auxilary frame buffers here.\r
1374   New frame buffer type was added - aux_copy. HWFBE does not work correct here.\r
1376 Monday, 14 Feb 2005\r
1377 * Source cleaning.\r
1379 Tuesday, 15 Feb 2005\r
1380 * More source cleaning\r
1381 * Fixed combiner for boost mode in Beetle Adventure Racing.\r
1385 23-27 Feb 2005\r
1386 * A lot of changes in fb emulation and in HWFBE. Tidal wave in Paper Mario, cloaking effect and motion blur in Perfect Dark,\r
1387   replay in 1080...\r
1389 1 Apr 2005\r
1390 * Paper Mario intro. There is a kind of fb effect. I have changed main ci height calculation in fb_setcolorimage and \r
1391   in rdp_setcolorimage to make it working.\r
1392 * Paper Mario intro. Added a hack into blender to remove weird texrect when bowser throw up flame.\r
1396 These changes were originally not mentioned here:\r
1397 Glide64 Wonder and Wonder Plus\r
1398 * April 2005 to November 2005\r
1400 glide64-wonder+-linux\r
1401 * unknown\r
1403 glide64-wonder+-linux v10\r
1404 * March 2007\r
1406 glide64-wonder+-linux v11\r
1407 * April 2007\r
1409 glide64-wonder+-linux v12\r
1410 * May 2007\r
1414 Glide64-amd64 v0.9\r
1415 * forked from glide64-wonder+-linux v12\r
1416 * Ported all GCC and nasm assembler to AMD64 and corrected various other 64 Bit portability problems\r
1417 -- 2008-02-01 Günther <guenther.emu@freenet.de>\r