2 2/09/02 Version 0.04 Released
\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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
185 * Upgraded computer to Win2k SP2. Mario's face screen goes a little faster now, but not much
\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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
355 (0.1 Beta #5 -> Gugaman, Ogy, Scorpiove, Quvack)
\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
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
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
390 * CMB_MULT and CMB_ADD/SUB are now completely unrelated in values, and it performs the
\r
391 add/sub operation first.
\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
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
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
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
430 * Oops, fixed a problem with building on normal 'debug' and 'release' modes, where it wasn't
\r
431 including the .obj file.
\r
434 * Finished 4-bit I textures.
\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
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
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
458 * Made it so that pressing 'G' will switch on and off a grid for the cache viewer (large view
\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
477 Friday, 5/31/02 8:09 PM
\r
478 * Wrote all Wrap/Mirror/Clamp functions, for both 16-bit and 8-bit.
\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
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
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
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
506 * Found out that you do NOT increment the settextureimage address with loadtile. (HAL logo,
\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
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
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
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
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
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
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
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
567 * Improved the debugger again, allowing you to push left/right to cycle throught the triangles
\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
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
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
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
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
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
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
615 * Made split texrects clamp so that if they need to wrap, they can do it without getting black
\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
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
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
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
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
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
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
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
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
680 * Fixed bug in clamp/wrap, it needs to do ALL of s clamp/wrap before it moves on to t.
\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
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
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
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
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
720 * Nothing seems to have broken, keeping for now...
\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
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
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
738 * Added self-jump checking to fix Gauntlet Legends & another check.
\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
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
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
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
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
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
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
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
798 * Used texture mod again to fix the SF rush 2049 wings.
\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
811 * Added new INI code, should be no more corrupting.
\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
820 * Added a framebuffer workaround for Zelda: MM LOT. Now it works without needing to use
\r
821 framebuffer copies.
\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
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
833 * Added the movemem matrix command, WWF No Mercy works now.
\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
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
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
851 * Made it possible to continue after a gfx exception.
\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
862 * Made it so that fillrects use the z-buffer as specified and not always update, no compare.
\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
871 * Took out if(!force_full_alpha) from alpha compare.
\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
884 * Added combiner for WWF No Mercy rules.
\r
885 * Allowed things to have negative viewport; MK mythologies fixed.
\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
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
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
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
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
946 Wednesday, 10/23/02 13.30
\r
947 * new combines and tex modes added.
\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
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
974 Util.cpp - do_triangle_stuff()
\r
975 Rdp.cpp - rdp_texrect()
\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
982 Rdp.cpp - hacks in rdp_texrect() and rdp_fillrect()
\r
983 ucode06.h - hacks in uc6_bg_copy() and DrawImage()
\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
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
1009 * Fixed Banjo-Tooie.
\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
1024 * Removed perfect dark microcode from final version - need more work b4 release
\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
1039 * Added new buffer swapping method which prevents flicker in Paper Mario (not everywhere yet).
\r
1040 * Implemented many combiners for Paper Mario.
\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
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
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
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
1116 * Implemented uc0_moveword() move_point. Cruise in USA works perfectly now!
\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
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
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
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
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
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
1185 * fixed compatibility of Zelda OOT MQ with 1964
\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
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
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
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
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
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
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
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
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
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
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
1403 glide64-wonder+-linux v10
\r
1406 glide64-wonder+-linux v11
\r
1409 glide64-wonder+-linux v12
\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